PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0xJU1RfQ09OUzwvdGl0bGU+Cgk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9zdHlsZXMuY3NzIj4KPC9oZWFkPgo8Ym9keT4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAgMHB4OyI+CgkJVGhlIDxiPkJPT1NUX1BQX0xJU1RfQ09OUzwvYj4gbWFjcm8gaXMgYSA8aT5saXN0PC9pPiBjb25zdHJ1Y3Rvci4KCTwvZGl2PgoJPGg0PlVzYWdlPC9oND4KCQk8ZGl2IGNsYXNzPSJjb2RlIj4KCQkJPGI+Qk9PU1RfUFBfTElTVF9DT05TPC9iPig8aT5oZWFkPC9pPiwgPGk+dGFpbDwvaT4pCgkJPC9kaXY+Cgk8aDQ+QXJndW1lbnRzPC9oND4KCQk8ZGw+CgkJCTxkdD5oZWFkPC9kdD4KCQkJPGRkPgoJCQkJQW4gZWxlbWVudCBpbiBhIDxpPmxpc3Q8L2k+LgoJCQk8L2RkPgoJCQk8ZHQ+dGFpbDwvZHQ+CgkJCTxkZD4KCQkJCUVpdGhlciBhIDxpPmxpc3Q8L2k+LCA8Yj5CT09TVF9QUF9MSVNUX05JTDwvYj4sIG9yIDxiPkJPT1NUX1BQX05JTDwvYj4uCgkJCTwvZGQ+CgkJPC9kbD4KCTxoND5SZW1hcmtzPC9oND4KCQk8ZGl2PgoJCQlUaGlzIG1hY3JvIGFwcGVuZHMgYSBuZXcgaGVhZCB0byBhbiBleGlzdGluZyA8aT5saXN0PC9pPiBvciBjcmVhdGVzIGEgPGk+bGlzdDwvaT4gZnJvbSA8Yj5CT09TVF9QUF9MSVNUX05JTDwvYj4uCgkJPC9kaXY+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LiZuYnNwOwoJCQlGb3IgZXhhbXBsZS4uLgoJCQk8ZGl2PgoJCQkJPGI+Qk9PU1RfUFBfTElTVF9DT05TPC9iPihhLCA8Yj5CT09TVF9QUF9MSVNUX0NPTlM8L2I+KGIsIDxiPkJPT1NUX1BQX0xJU1RfTklMPC9iPikpKQoJCQk8L2Rpdj4KCQkJLi4uaXMganVzdCBhbiBleHBsaWNpdCB3YXkgb2Ygd3JpdGluZyB0aGUgZm9sbG93aW5nOgoJCQk8ZGl2PgoJCQkJKGEsIChiLCA8Yj5CT09TVF9QUF9OSUw8L2I+KSkKCQkJPC9kaXY+CgkJCUJlY2F1c2Ugb2YgdGhpcywgdGhpcyBtYWNybyBpcyBkZXByZWNhdGVkLgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJsaXN0X25pbC5odG1sIj5CT09TVF9QUF9MSVNUX05JTDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0ibmlsLmh0bWwiPkJPT1NUX1BQX05JTDwvYT48L2xpPgoJCTwvdWw+Cgk8aDQ+UmVxdWlyZW1lbnRzPC9oND4KCQk8ZGl2PgoJCQk8Yj5IZWFkZXI6PC9iPiAmbmJzcDs8YSBocmVmPSIuLi9oZWFkZXJzL2xpc3QvYWR0Lmh0bWwiPiZsdDtib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hZHQuaHBwJmd0OzwvYT4KCQk8L2Rpdj4KCTxoND5TYW1wbGUgQ29kZTwvaDQ+CjxkaXY+PHByZT4KI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvbGlzdC9hZHQuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcDwvYT4mZ3Q7CgojZGVmaW5lIE9MRCBcCiAgIDxhIGhyZWY9Imxpc3RfY29ucy5odG1sIj5CT09TVF9QUF9MSVNUX0NPTlM8L2E+KCBcCiAgICAgIGEsIFwKICAgICAgPGEgaHJlZj0ibGlzdF9jb25zLmh0bWwiPkJPT1NUX1BQX0xJU1RfQ09OUzwvYT4oIFwKICAgICAgICAgYiwgXAogICAgICAgICA8YSBocmVmPSJsaXN0X2NvbnMuaHRtbCI+Qk9PU1RfUFBfTElTVF9DT05TPC9hPiggXAogICAgICAgICAgICBjLCBcCiAgICAgICAgICAgIDxhIGhyZWY9Imxpc3RfbmlsLmh0bWwiPkJPT1NUX1BQX0xJU1RfTklMPC9hPiBcCiAgICAgICAgICkgXAogICAgICApIFwKICAgKSBcCiAgIC8qKi8KCiNkZWZpbmUgTkVXIChhLCAoYiwgKGMsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+KSkpCgo8YSBocmVmPSJsaXN0X2ZpcnN0Lmh0bWwiPkJPT1NUX1BQX0xJU1RfRklSU1Q8L2E+KE9MRCkgPT0gPGEgaHJlZj0ibGlzdF9maXJzdC5odG1sIj5CT09TVF9QUF9MSVNUX0ZJUlNUPC9hPihORVcpCiAgIC8vIGV4cGFuZHMgdG8gYSA9PSBhCgo8YSBocmVmPSJsaXN0X3Jlc3QuaHRtbCI+Qk9PU1RfUFBfTElTVF9SRVNUPC9hPihPTEQpID09IDxhIGhyZWY9Imxpc3RfcmVzdC5odG1sIj5CT09TVF9QUF9MSVNUX1JFU1Q8L2E+KE5FVykKICAgLy8gZXhwYW5kcyB0byAoYiwgKGMsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+KSkgPT0gKGIsIChjLCA8YSBocmVmPSJuaWwuaHRtbCI+Qk9PU1RfUFBfTklMPC9hPikpCjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K