PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0xJU1RfTklMPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfTElTVF9OSUw8L2I+IG1hY3JvIGlzIGEgbmlsIDxpPmxpc3Q8L2k+IGNvbnN0cnVjdG9yLgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9MSVNUX05JTDwvYj4KCQk8L2Rpdj4KCTxoND5SZW1hcmtzPC9oND4KCQk8ZGl2PgoJCQlUaGlzIG1hY3JvIHJlcHJlc2VudHMgdGhlIGVuZCBvZiBhIDxpPmxpc3Q8L2k+LgoJCTwvZGl2PgoJCTxkaXY+CgkJCVRoaXMgbWFjcm8gaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4mbmJzcDsKCQkJSXQgc2ltcGx5IGV4cGFuZHMgdG8gPGI+Qk9PU1RfUFBfTklMPC9iPi4mbmJzcDsKCQkJQmVjYXVzZSBvZiB0aGlzLCB0aGlzIG1hY3JvIGlzIGRlcHJlY2F0ZWQuCgkJPC9kaXY+Cgk8aDQ+U2VlIEFsc288L2g0PgoJCTx1bD4KCQkJPGxpPjxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+PC9saT4KCQk8L3VsPgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9saXN0L2FkdC5odG1sIj4mbHQ7Ym9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2xpc3QvYWR0Lmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FkdC5ocHA8L2E+Jmd0OwoKI2RlZmluZSBPTEQgXAogICA8YSBocmVmPSJsaXN0X2NvbnMuaHRtbCI+Qk9PU1RfUFBfTElTVF9DT05TPC9hPiggXAogICAgICBhLCBcCiAgICAgIDxhIGhyZWY9Imxpc3RfY29ucy5odG1sIj5CT09TVF9QUF9MSVNUX0NPTlM8L2E+KCBcCiAgICAgICAgIGIsIFwKICAgICAgICAgPGEgaHJlZj0ibGlzdF9jb25zLmh0bWwiPkJPT1NUX1BQX0xJU1RfQ09OUzwvYT4oIFwKICAgICAgICAgICAgYywgXAogICAgICAgICAgICA8YSBocmVmPSJsaXN0X25pbC5odG1sIj5CT09TVF9QUF9MSVNUX05JTDwvYT4gXAogICAgICAgICApIFwKICAgICAgKSBcCiAgICkgXAogICAvKiovCgojZGVmaW5lIE5FVyAoYSwgKGIsIChjLCA8YSBocmVmPSJuaWwuaHRtbCI+Qk9PU1RfUFBfTklMPC9hPikpKQoKPGEgaHJlZj0ibGlzdF9maXJzdC5odG1sIj5CT09TVF9QUF9MSVNUX0ZJUlNUPC9hPihPTEQpID09IDxhIGhyZWY9Imxpc3RfZmlyc3QuaHRtbCI+Qk9PU1RfUFBfTElTVF9GSVJTVDwvYT4oTkVXKQogICAvLyBleHBhbmRzIHRvIGEgPT0gYQoKPGEgaHJlZj0ibGlzdF9yZXN0Lmh0bWwiPkJPT1NUX1BQX0xJU1RfUkVTVDwvYT4oT0xEKSA9PSA8YSBocmVmPSJsaXN0X3Jlc3QuaHRtbCI+Qk9PU1RfUFBfTElTVF9SRVNUSzwvYT4oTkVXKQogICAvLyBleHBhbmRzIHRvIChiLCAoYywgPGEgaHJlZj0ibmlsLmh0bWwiPkJPT1NUX1BQX05JTDwvYT4pKSA9PSAoYiwgKGMsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+KSkKPC9wcmU+PC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=