PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0xJU1RfRklMVEVSX0Q8L3RpdGxlPgoJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGVzLmNzcyI+CjwvaGVhZD4KPGJvZHk+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogIDBweDsiPgoJCVRoZSA8Yj5CT09TVF9QUF9MSVNUX0ZJTFRFUl9EPC9iPiBtYWNybyBmaWx0ZXJzIGEgPGk+bGlzdDwvaT4gYWNjb3JkaW5nIHRvIGEgc3VwcGxpZWQgY3JpdGVyaW9uLiZuYnNwOwoJCUl0IHJlZW50ZXJzIDxiPkJPT1NUX1BQX1dISUxFPC9iPiB3aXRoIG1heGltdW0gZWZmaWNpZW5jeS4KCTwvZGl2PgoJPGg0PlVzYWdlPC9oND4KCQk8ZGl2IGNsYXNzPSJjb2RlIj4KCQkJPGI+Qk9PU1RfUFBfTElTVF9GSUxURVJfRDwvYj4oPGk+ZDwvaT4sIDxpPnByZWQ8L2k+LCA8aT5kYXRhPC9pPiwgPGk+bGlzdDwvaT4pCgkJPC9kaXY+Cgk8aDQ+QXJndW1lbnRzPC9oND4KCQk8ZGw+CgkJCTxkdD5kPC9kdD4KCQkJPGRkPgoJCQkJVGhlIG5leHQgYXZhaWxhYmxlIDxiPkJPT1NUX1BQX1dISUxFPC9iPiBpdGVyYXRpb24uCgkJCTwvZGQ+CgkJCTxkdD5wcmVkPC9kdD4KCQkJPGRkPgoJCQkJQSB0ZXJuYXJ5IHByZWRpY2F0ZSBvZiB0aGUgZm9ybSA8aT5wcmVkPC9pPig8aT5kPC9pPiwgPGk+ZGF0YTwvaT4sIDxpPmVsZW08L2k+KS4mbmJzcDsKCQkJCVRoaXMgcHJlZGljYXRlIGlzIGV4cGFuZGVkIGJ5IDxiPkJPT1NUX1BQX0xJU1RfRklMVEVSPC9iPiBmb3IgZWFjaCBlbGVtZW50IGluIDxpPmxpc3Q8L2k+IHdpdGggdGhlIG5leHQgYXZhaWxhYmxlIDxiPkJPT1NUX1BQX1dISUxFPC9iPiBpdGVyYXRpb24sCgkJCQl0aGUgYXV4aWxpYXJ5IDxpPmRhdGE8L2k+LCBhbmQgdGhlIGN1cnJlbnQgZWxlbWVudCBpbiA8aT5saXN0PC9pPi4mbmJzcDsKCQkJCVRoaXMgbWFjcm8gbXVzdCByZXR1cm4gYSBpbnRlZ3JhbCB2YWx1ZSBpbiB0aGUgcmFuZ2Ugb2YgPGk+MDwvaT4gdG8gPGI+Qk9PU1RfUFBfTElNSVRfTUFHPC9iPi4mbmJzcDsKCQkJCUlmIHRoaXMgcHJlZGljYXRlIGV4cGFuZHMgdG8gbm9uLXplcm8gZm9yIGEgY2VydGFpbiBlbGVtZW50LCB0aGF0IGVsZW1lbnQgaXMgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyA8aT5saXN0PC9pPi4KCQkJPC9kZD4KCQkJPGR0PmRhdGE8L2R0PgoJCQk8ZGQ+CgkJCQlBdXhpbGlhcnkgZGF0YSBwYXNzZWQgdG8gPGk+cHJlZDwvaT4uCgkJCTwvZGQ+CgkJCTxkdD5saXN0PC9kdD4KCQkJPGRkPgoJCQkJVGhlIDxpPmxpc3Q8L2k+IHRvIGJlIGZpbHRlcmVkLgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBleHBhbmRzIDxpPnByZWQ8L2k+IGZvciBlYWNoIGVsZW1lbnQgaW4gPGk+bGlzdDwvaT4uJm5ic3A7CgkJCUl0IGJ1aWxkcyBhIG5ldyA8aT5saXN0PC9pPiBvdXQgb2YgZWFjaCBlbGVtZW50IGZvciB3aGljaCA8aT5wcmVkPC9pPiByZXR1cm5zIG5vbi16ZXJvLgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9tYWcuaHRtbCI+Qk9PU1RfUFBfTElNSVRfTUFHPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJsaXN0X2ZpbHRlci5odG1sIj5CT09TVF9QUF9MSVNUX0ZJTFRFUjwvYT48L2xpPgoJCTwvdWw+Cgk8aDQ+UmVxdWlyZW1lbnRzPC9oND4KCQk8ZGl2PgoJCQk8Yj5IZWFkZXI6PC9iPiAmbmJzcDs8YSBocmVmPSIuLi9oZWFkZXJzL2xpc3QvZmlsdGVyLmh0bWwiPiZsdDtib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9maWx0ZXIuaHBwJmd0OzwvYT4KCQk8L2Rpdj4KCTxoND5TYW1wbGUgQ29kZTwvaDQ+CjxkaXY+PHByZT4KI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvY29tcGFyaXNvbi9sZXNzX2VxdWFsLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9jb21wYXJpc29uL2xlc3NfZXF1YWwuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvbGlzdC9maWx0ZXIuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZmlsdGVyLmhwcDwvYT4mZ3Q7CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2xpc3QvZm9sZF9yaWdodC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX3JpZ2h0LmhwcDwvYT4mZ3Q7CgojZGVmaW5lIEEgKDEsICgyLCAoMywgKDQsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+KSkpKQojZGVmaW5lIEIgKEEsIChBLCAoQSwgKEEsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+KSkpKQoKI2RlZmluZSBQUkVEKGQsIGRhdGEsIHgpIDxhIGhyZWY9Imxlc3NfZXF1YWwuaHRtbCI+Qk9PU1RfUFBfTEVTU19FUVVBTDwvYT4oeCwgZGF0YSkKI2RlZmluZSBPUChkLCBzdGF0ZSwgeCkgKDxhIGhyZWY9Imxpc3RfZmlsdGVyX2QuaHRtbCI+Qk9PU1RfUFBfTElTVF9GSUxURVJfRDwvYT4oZCwgUFJFRCwgMiwgeCksIHN0YXRlKQoKPGEgaHJlZj0ibGlzdF9mb2xkX3JpZ2h0Lmh0bWwiPkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVDwvYT4oT1AsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+LCBCKQovKgogICBleHBhbmRzIHRvOgogICAoKDEsICgyLCA8YSBocmVmPSJuaWwuaHRtbCI+Qk9PU1RfUFBfTklMPC9hPikpLCAKICAgKCgxLCAoMiwgPGEgaHJlZj0ibmlsLmh0bWwiPkJPT1NUX1BQX05JTDwvYT4pKSwgCiAgICgoMSwgKDIsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+KSksIAogICAoKDEsICgyLCA8YSBocmVmPSJuaWwuaHRtbCI+Qk9PU1RfUFBfTklMPC9hPikpLCAKICAgICAgPGEgaHJlZj0ibmlsLmh0bWwiPkJPT1NUX1BQX05JTDwvYT4pKSkpCiovCjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K