PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX1dISUxFX2Q8L3RpdGxlPgoJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGVzLmNzcyI+CjwvaGVhZD4KPGJvZHk+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogIDBweDsiPgoJCVRoZSA8Yj5CT09TVF9QUF9XSElMRV88aT5kPC9pPjwvYj4gbWFjcm8gcmVwcmVzZW50cyBhIHJlZW50cnkgaW50byB0aGUgPGI+Qk9PU1RfUFBfV0hJTEU8L2I+IGxvb3BpbmcgY29uc3RydWN0LgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9XSElMRV88L2I+ICMjIDxpPmQ8L2k+KDxpPnByZWQ8L2k+LCA8aT5vcDwvaT4sIDxpPnN0YXRlPC9pPikKCQk8L2Rpdj4KCTxoND5Bcmd1bWVudHM8L2g0PgoJCTxkbD4KCQkJPGR0PmQ8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbmV4dCBhdmFpbGFibGUgPGI+Qk9PU1RfUFBfV0hJTEU8L2I+IGl0ZXJhdGlvbi4KCQkJPC9kZD4KCQkJPGR0PnByZWQ8L2R0PgoJCQk8ZGQ+CgkJCQlBIGJpbmFyeSBwcmVkaWNhdGUgb2YgdGhlIGZvcm0gPGk+cHJlZDwvaT4oPGk+ZDwvaT4sIDxpPnN0YXRlPC9pPikuJm5ic3A7CgkJCQlUaGlzIHByZWRpY2F0ZSBpcyBleHBhbmRlZCBieSA8Yj5CT09TVF9QUF9XSElMRTwvYj4gd2l0aCB0aGUgbmV4dCBhdmFpbGFibGUKCQkJCWl0ZXJhdGlvbiA8aT5kPC9pPiBhbmQgdGhlIGN1cnJlbnQgPGk+c3RhdGU8L2k+LiZuYnNwOwoJCQkJVGhpcyBwcmVkaWNhdGUgbXVzdCBleHBhbmQgdG8gdmFsdWUgaW4gdGhlIHJhbmdlIG9mIDxpPjA8L2k+IHRvIDxiPkJPT1NUX1BQX0xJTUlUX01BRzwvYj4uCgkJCQlUaGUgY29uc3RydWN0IGNvbnRpbnVlcyB0byBsb29wIHVudGlsIHRoaXMgcHJlZGljYXRlIHJldHVybnMgPGk+MDwvaT4uJm5ic3A7CgkJCQlXaGVuIHRoaXMgcHJlZGljYXRlIHJldHVybnMgPGk+MDwvaT4sIDxiPkJPT1NUX1BQX1dISUxFPC9iPiByZXR1cm5zIHRoZSBjdXJyZW50IDxpPnN0YXRlPC9pPi4KCQkJPC9kZD4KCQkJPGR0Pm9wPC9kdD4KCQkJPGRkPgoJCQkJQSBiaW5hcnkgb3BlcmF0aW9uIG9mIHRoZSBmb3JtIDxpPm9wPC9pPig8aT5kPC9pPiwgPGk+c3RhdGU8L2k+KS4mbmJzcDsKCQkJCVRoaXMgb3BlcmF0aW9uIGlzIGV4cGFuZGVkIGJ5IDxiPkJPT1NUX1BQX1dISUxFPC9iPiB3aXRoIHRoZSBuZXh0IGF2YWlsYWJsZQoJCQkJaXRlcmF0aW9uIDxpPmQ8L2k+IGFuZCB0aGUgY3VycmVudCA8aT5zdGF0ZTwvaT4uJm5ic3A7CgkJCQlUaGlzIG1hY3JvIGlzIHJlcGVhdGVkbHkgYXBwbGllZCB0byB0aGUgPGk+c3RhdGU8L2k+LCBlYWNoIHRpbWUgcHJvZHVjaW5nIGEgbmV3IDxpPnN0YXRlPC9pPiwgdW50aWwgPGk+cHJlZDwvaT4gcmV0dXJucyA8aT4wPC9pPi4KCQkJPC9kZD4KCQkJPGR0PnN0YXRlPC9kdD4KCQkJPGRkPgoJCQkJVGhlIGluaXRpYWwgc3RhdGUuJm5ic3A7CgkJCQlPZnRlbiB0aGlzIGFyZ3VtZW50IGlzIGEgPGk+dHVwbGU8L2k+LgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBpdGVyYXRlcyA8aT5vcDwvaT4oPGk+ZDwvaT4sIDxpPnN0YXRlPC9pPikgd2hpbGUgPGk+cHJlZDwvaT4oPGk+ZDwvaT4sIDxpPnN0YXRlPC9pPikgaXMgbm9uLXplcm8uJm5ic3A7CgkJCUluIG90aGVyIHdvcmRzIGV4cGFuZHMgdG86CgkJCTxkaXY+CgkJCQk8aT5vcDwvaT4oPGk+ZDwvaT4sIC4uLiA8aT5vcDwvaT4oPGk+ZDwvaT4sIDxpPm9wPC9pPig8aT5kPC9pPiwgPGk+c3RhdGU8L2k+KSkgLi4uICkuCgkJCTwvZGl2PgoJCTwvZGl2PgoJCTxkaXY+CgkJCUF0IGNlcnRhaW4gdGltZXMsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gcGVyZm9ybSB0aGUgY29uY2F0ZW5hdGlvbiB3aXRoIDxiPkJPT1NUX1BQX0NBVDwvYj4gcmF0aGVyIHRoYW4gdGhlIHByZXByb2Nlc3NvciB0b2tlbi1wYXN0aW5nIG9wZXJhdG9yLiZuYnNwOwoJCQlUaGlzIGhhcHBlbnMgd2hlbiB0aGUgPGk+ZDwvaT4gdmFsdWUgaXMgYSBtYWNybyBpbnZvY2F0aW9uIGl0c2VsZi4mbmJzcDsKCQkJSXQgbmVlZHMgYSBkZWxheSB0byBhbGxvdyBpdCB0byBleHBhbmQuJm5ic3A7CgkJCVRoZSBzeW50YXggaW4gc3VjaCBhIHNjZW5hcmlvIGJlY29tZXM6CgkJCTxkaXY+CgkJCQk8Yj5CT09TVF9QUF9DQVQ8L2I+KDxiPkJPT1NUX1BQX1dISUxFXzwvYj4sIDxpPmQ8L2k+KSg8aT5wcmVkPC9pPiwgPGk+b3A8L2k+LCA8aT5zdGF0ZTwvaT4pLgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQlQcmV2aW91c2x5LCBpdCB3YXMgcG9zc2libGUgdG8gY29uY2F0ZW5hdGUgPGk+ZDwvaT4gZGlyZWN0bHkgdG8gPGI+Qk9PU1RfUFBfV0hJTEU8L2I+ICh3aXRob3V0IHRoZSB0cmFpbGluZyB1bmRlcnNjb3JlKS4mbmJzcDsKCQkJVGhpcyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJjYXQuaHRtbCI+Qk9PU1RfUFBfQ0FUPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9tYWcuaHRtbCI+Qk9PU1RfUFBfTElNSVRfTUFHPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJ3aGlsZS5odG1sIj5CT09TVF9QUF9XSElMRTwvYT48L2xpPgoJCTwvdWw+Cgk8aDQ+UmVxdWlyZW1lbnRzPC9oND4KCQk8ZGl2PgoJCQk8Yj5IZWFkZXI6PC9iPiAmbmJzcDs8YSBocmVmPSIuLi9oZWFkZXJzL2NvbnRyb2wvd2hpbGUuaHRtbCI+Jmx0O2Jvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2FyaXRobWV0aWMvYWRkLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9hcml0aG1ldGljL2RlYy5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvYXJyYXkvZWxlbS5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZWxlbS5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9hcnJheS9zaXplLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9zaXplLmhwcDwvYT4mZ3Q7CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2NvbnRyb2wvd2hpbGUuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvdHVwbGUvZWxlbS5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA8L2E+Jmd0OwoKI2RlZmluZSBQUkVEKGQsIGRhdGEpIDxhIGhyZWY9InR1cGxlX2VsZW0uaHRtbCI+Qk9PU1RfUFBfVFVQTEVfRUxFTTwvYT4oMywgMSwgZGF0YSkKCiNkZWZpbmUgT1AoZCwgZGF0YSkgXAogICBPUF9EKCBcCiAgICAgIGQsIFwKICAgICAgPGEgaHJlZj0idHVwbGVfZWxlbS5odG1sIj5CT09TVF9QUF9UVVBMRV9FTEVNPC9hPigzLCAwLCBkYXRhKSwgXAogICAgICA8YSBocmVmPSJ0dXBsZV9lbGVtLmh0bWwiPkJPT1NUX1BQX1RVUExFX0VMRU08L2E+KDMsIDEsIGRhdGEpLCBcCiAgICAgIDxhIGhyZWY9InR1cGxlX2VsZW0uaHRtbCI+Qk9PU1RfUFBfVFVQTEVfRUxFTTwvYT4oMywgMiwgZGF0YSkgXAogICApIFwKICAgLyoqLwoKI2RlZmluZSBPUF9EKGQsIHJlcywgaSwgYXJyYXkpIFwKICAgKCBcCiAgICAgIDxhIGhyZWY9ImFkZF9kLmh0bWwiPkJPT1NUX1BQX0FERF9EPC9hPiggXAogICAgICAgICBkLCByZXMsIFwKICAgICAgICAgPGEgaHJlZj0iYXJyYXlfZWxlbS5odG1sIj5CT09TVF9QUF9BUlJBWV9FTEVNPC9hPig8YSBocmVmPSJkZWMuaHRtbCI+Qk9PU1RfUFBfREVDPC9hPihpKSwgYXJyYXkpKSwgXAogICAgICA8YSBocmVmPSJkZWMuaHRtbCI+Qk9PU1RfUFBfREVDPC9hPihpKSwgXAogICAgICBhcnJheSBcCiAgICkgXAogICAvKiovCgojZGVmaW5lIEFDQ1VNVUxBVEVfRChkLCBhcnJheSkgXAogICA8YSBocmVmPSJ0dXBsZV9lbGVtLmh0bWwiPkJPT1NUX1BQX1RVUExFX0VMRU08L2E+KCBcCiAgICAgIDMsIDAsIFwKICAgICAgPGEgaHJlZj0id2hpbGVfZC5odG1sIj5CT09TVF9QUF9XSElMRV88L2E+ICMjIGQoIFwKICAgICAgICAgUFJFRCwgT1AsIFwKICAgICAgICAgKDAsIDxhIGhyZWY9ImFycmF5X3NpemUuaHRtbCI+Qk9PU1RfUFBfQVJSQVlfU0laRTwvYT4oYXJyYXkpLCBhcnJheSkgXAogICAgICApIFwKICAgKSBcCiAgIC8qKi8KCiNkZWZpbmUgQVJSQVkgKDQsICgxLCAyLCAzLCA0KSkKCkFDQ1VNVUxBVEVfRCgxLCBBUlJBWSkvLyBleHBhbmRzIHRvIDEwCjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K