PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnCgoJIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkjCgkjIHNhbXBsZV9saXN0LnBocAoJIwoJIyBBdXRob3I6IAkJRGVuaXMgUm95CgkjIERhdGU6CQkJMjAwNS0xMS0wNwoJIwoJIyBEZXNjcmlwdGlvbjogVHlwZSB5b3VyIHBhZ2UgY29tbWVudHMgaGVyZSAtIHRoZXNlIGFyZSBub3Qgc2VudCB0byB0aGUgYnJvd3NlcgoJIwoJIwoJIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCQoJIwoJIyBCZWdpbjogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncy4gIENoYW5nZSB0aGVzZS4gCgkkcGFnZVRpdGxlIAkJPSAiRWNsaXBzZSBGb3VuZGF0aW9uIDIwMDYgUHJlc3MgUmVsZWFzZXMgQXJjaGl2ZSI7CgkkcGFnZUtleXdvcmRzCT0gIjIwMDYsIHByZXNzLCByZWxlYXNlcywgZWNsaXBzZSwgZm91bmRhdGlvbiI7CgkkcGFnZUF1dGhvcgkJPSAiTmF0aGFuIEdlcnZhaXMiOwoJCgkjIEFkZCBwYWdlLXNwZWNpZmljIE5hdiBiYXJzIGhlcmUKCSMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuayksIGxldmVsICgxLCAyIG9yIDMpCgkjICROYXYtPmFkZE5hdlNlcGFyYXRvcigiTXkgUGFnZSBMaW5rcyIsIAkiZG93bmxvYWRzLnBocCIpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIsIDMpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIsIDMpOwoKCSMgRW5kOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzCgkjCgkJCgkjIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIG1hcmtlcnMhCQpvYl9zdGFydCgpOwo/PgkJCgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDE+PD89ICRwYWdlVGl0bGUgPz48L2gxPgoJCTxoMj4yMDA2IFByZXNzIFJlbGVhc2VzPC9oMj4KCQk8aHIgc2l6ZT0iMSIgLz4KCQk8dWw+CgkJPGxpPjxhIGhyZWY9IjIwMDYxMjEyX215bGFyLnBocCI+RWNsaXBzZSBNeWxhciBJbnRyb2R1Y2VzIE1ham9yIE5ldyBJbm5vdmF0aW9uIGZvciBEZXZlbG9wZXIgUHJvZHVjdGl2aXR5PC9hPiAtIERlY2VtYmVyIDEydGgsIDIwMDY8L2xpPjxiciAvPgoJCTxsaT48YSBocmVmPSIyMDA2MTEyN2NiX2libXRyYW5zbGF0aW9ucy5waHAiPklCTSBEb25hdGVzIFRyYW5zbGF0aW9ucyBmb3IgRWNsaXBzZSAzLjIuMTwvYT4gLSBOb3ZlbWJlciAyN3RoLCAyMDA2PC9saT48YnIgLz4KCQk8bGk+PGEgaHJlZj0iMjAwNjExMTJkc2RwX21pbGVzdG9uZS5waHAiPlNlcmllcyBvZiBEU0RQIFJlbGVhc2VzIERlbW9uc3RyYXRlIHRoZSBHcm93aW5nIFNpZ25pZmljYW5jZSBvZiBFY2xpcHNlIGZvciBEZXZpY2UgU29mdHdhcmUgRGV2ZWxvcGVyczwvYT4gLSBOb3ZlbWJlciAxM3RoLCAyMDA2PC9saT48YnIgLz4KCQk8bGk+PGEgaHJlZj0iMjAwNjExMDdlY2xpcHNlYmlydGhkYXk1LnBocCI+RWNsaXBzZSBDZWxlYnJhdGVzIEZpdmUgWWVhcnMgYXMgYW4gT3BlbiBTb3VyY2UgQ29tbXVuaXR5IGFuZCBFY29zeXN0ZW08L2E+IC0gTm92ZW1iZXIgN3RoLCAyMDA2PC9saT48YnIgLz4KCQk8bGk+PGEgaHJlZj0iMjAwNjEwMjVjYl9lY2xpcHNlYmlydGhkYXk1LnBocCI+Q2VsZWJyYXRlIEVjbGlwc2UncyA1dGggQmlydGhkYXk8L2E+IC0gT2N0b2JlciAzMHRoLCAyMDA2PC9saT48YnIgLz4KCQk8bGk+PGEgaHJlZj0iMjAwNjEwMTdjYl9lY2xpc3BlY29uMjAwNy5waHAiPkVjbGlwc2VDb24gMjAwNyBDYWxsIGZvciBQYXJ0aWNpcGF0aW9uIE5vdyBPcGVuPC9hPiAtIE9jdG9iZXIgMTd0aCwgMjAwNjwvbGk+PGJyIC8+CQkKCQk8bGk+PGEgaHJlZj0iMjAwNjEwMDNjYl9iZXRhaG9tZXBhZ2UucGhwIj5OZXcgUmUtZGVzaWduIG9mIEVjbGlwc2Uub3JnIEhvbWUgUGFnZTwvYT4gLSBPY3RvYmVyIDNyZCwgMjAwNjwvbGk+PGJyIC8+CgkJPGxpPjxhIGhyZWY9IjIwMDYwOTEzY2JfZXNlLnBocCI+UGFydGljaXBhdGUgYXQgdGhlIEVjbGlwc2UgU3VtbWl0IGluIEVzc2xpbmdlbiwgT2N0b2JlciAxMS0xMnRoLCAyMDA2ITwvYT4gLSBTZXB0IDEzdGgsIDIwMDY8L2xpPjxiciAvPgoJCTxsaT48YSBocmVmPSIyMDA2MDkwOGFwZXJpLnBocCI+RWNsaXBzZSBGb3VuZGF0aW9uIEFwcHJvdmVzIEFQRVJJIFN0b3JhZ2UgTWFuYWdlbWVudCBQcm9qZWN0PC9hPiAtIFNlcHQgN3RoLCAyMDA2PC9saT48YnIgLz4KCQk8bGk+PGEgaHJlZj0iMjAwNjA5MDVyY3AucGhwIj5TZWNvbmQgQW5udWFsIEVjbGlwc2UgR2xvYmFsIEVudGVycHJpc2UgU3VydmV5IFBvaW50cyB0byBSYXBpZCBBZG9wdGlvbiBvZiBFY2xpcHNlIFJpY2ggQ2xpZW50IFBsYXRmb3JtPC9hPiAtIFNlcHQgNXRoLCAyMDA2PC9saT48YnIgLz4JCQoJCTxsaT48YSBocmVmPSIyMDA2MDgwM3RhaWxnYXRlX3BhcnR5LnBocCI+RWNsaXBzZSBUYWlsZ2F0ZSBQYXJ0eSBhdCBFY2xpcHNlIFdvcmxkPC9hPiAtIEF1ZyAzcmQsIDIwMDY8L2xpPjxiciAvPgoJCTxsaT48YSBocmVmPSIyMDA2MDYyNmNhbGxpc3RvLnBocCI+RWNsaXBzZSBDb21tdW5pdHkgRGVsaXZlcnMgb24gU2NoZWR1bGUgd2l0aCB0aGUgUmVsZWFzZSBvZiBUZW4gT3BlbiBTb3VyY2UgUHJvamVjdHM8L2E+IC0gSnVuZSAyNnRoLCAyMDA2PC9saT48YnIgLz4KCQk8bGk+PGEgaHJlZj0iMjAwNjA1MTVtb2RlbGluZy5waHAiPk5ldyBUb3AtTGV2ZWwgRWNsaXBzZSBQcm9qZWN0IEVuY291cmFnZXMgQWRvcHRpb24gb2YgT3BlbiBTdGFuZGFyZHMgZm9yIE1vZGVsLUJhc2VkIERldmVsb3BtZW50PC9hPiAtIE1heSAxNXRoLCAyMDA2PC9saT48YnIgLz4KCQk8bGk+PGEgaHJlZj0iMjAwNjA1MTVlcGljLnBocCI+RWNsaXBzZSBGb3VuZGF0aW9uIExhdW5jaGVzIENvbW11bml0eSBQb3J0YWwgdG8gUHJvbW90ZSB0aGUgRWNsaXBzZSBFY29zeXN0ZW08L2E+IC0gTWF5IDE1dGgsIDIwMDY8L2xpPjxiciAvPgoJCTxsaT48YSBocmVmPSIyMDA2MDUwOGNiX3RoaXJzdHliZWFyLnBocCI+RWNsaXBzZSBQYXJ0eSBhdCBKYXZhT25lPC9hPiAtIE1heSA4dGgsIDIwMDY8L2xpPjxiciAvPgoJCTxsaT48YSBocmVmPSIyMDA2MDQwNGVtYmVkZGVkLnBocCI+RWNsaXBzZSBDb250aW51ZXMgTW9tZW50dW0gaW4gRGV2aWNlIGFuZCBFbWJlZGRlZCBTb2Z0d2FyZSBEZXZlbG9wbWVudDwvYT4gIC0gQXByaWwgNHRoLCAyMDA2PC9saT48YnIgLz4JCQoJCTxsaT48YSBocmVmPSIyMDA2MDMzMGNiX3JvYWRtYXB2Mi5waHAiPkVjbGlwc2UgRGV2ZWxvcG1lbnQgUm9hZCBNYXAgdmVyc2lvbiAyIEFwcHJvdmVkPC9hPiAtIE1hcmNoIDMwdGgsIDIwMDY8L2xpPjxiciAvPgoJCTxsaT48YSBocmVmPSIyMDA2MDMyMWVjbGlwc2VhbGYucGhwIj5FY2xpcHNlIEZvdW5kYXRpb24gYW5ub3VuY2VzIGV4cGFuZGVkIHN1cHBvcnQgZm9yIEVjbGlwc2UgSW50ZWdyYXRpb24gUGxhdGZvcm08L2E+ICAtIE1hcmNoIDIxc3QsIDIwMDY8L2xpPjxiciAvPgoJCTxsaT48YSBocmVmPSIyMDA2MDMyMXplbmRwaHBpZGUucGhwIj5FY2xpcHNlIEZvdW5kYXRpb24sIFplbmQgVGVjaG5vbG9naWVzLCBhbmQgSUJNIEFubm91bmNlIHRoZSBBcHByb3ZhbCBvZiB0aGUgUEhQIElERSBQcm9qZWN0PC9hPiAgLSBNYXJjaCAyMXN0LCAyMDA2PC9saT48YnIgLz4KCQk8bGk+PGEgaHJlZj0iMjAwNjAzMjFlY2xpcHNlcmNwLnBocCI+RWNsaXBzZSBSaWNoIENsaWVudCBQbGF0Zm9ybSBDb250aW51ZXMgTW9tZW50dW0gd2l0aCBOZXcgUmVsZWFzZXMgYW5kIFByb2plY3RzPC9hPiAtIE1hcmNoIDIxc3QsIDIwMDY8L2xpPjxiciAvPgoJCTxsaT48YSBocmVmPSIyMDA2MDMyMWNvcm9uYV9jb21wdXdhcmUucGhwIj5Db21wdXdhcmUgYW5kIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gQW5ub3VuY2UgdGhlIFRvb2xzIFNlcnZpY2VzIEZyYW1ld29yayAoQ29yb25hKSBQcm9qZWN0PC9hPiAgLSBNYXJjaCAyMXN0LCAyMDA2PC9saT48YnIgLz4KCQk8bGk+PGEgaHJlZj0iMjAwNjAzMjFlY2xpcHNlY29tbXVuaXR5LnBocCI+RWNsaXBzZUNvbiAyMDA2IE9wZW5zIHdpdGggU3Ryb25nIFBhcnRpY2lwYXRpb24gZnJvbSB0aGUgRWNsaXBzZSBDb21tdW5pdHk8L2E+IC0gTWFyY2ggMjFzdCwgMjAwNjwvbGk+PGJyIC8+CgkJPGxpPjxhIGhyZWY9IjIwMDYwMzIxZWNsaXBzZWNvbW11bml0eWF3YXJkcy5waHAiPkVjbGlwc2UgQ29tbXVuaXR5IEF3YXJkcyBXaW5uZXJzIEFubm91bmNlZDwvYT4gLSBNYXJjaCAyMXRoLCAyMDA2PC9saT48YnI+CgkJPGxpPjxhIGhyZWY9IjIwMDYwMzA5Y2JfZWxlY3Rpb25zLnBocCI+RWNsaXBzZSBGb3VuZGF0aW9uIEFubm91bmNlcyAyMDA2IEJvYXJkIE1lbWJlciBFbGVjdGlvbiBSZXN1bHRzPC9hPiAtIE1hcmNoIDl0aCwgMjAwNjwvbGk+PGJyPgkJCgkJPGxpPjxhIGhyZWY9IjIwMDYwMTIzYmlydDIwLnBocCI+QWN0dWF0ZSwgSUJNLCBQZW50YWhvLCBTY2FwYSBUZWNobm9sb2dpZXMgYW5kIFplbmQgQ29tbWl0IHRvIEVjbGlwc2UgQklSVCAyLjA8L2E+IC0gSmFudWFyeSAyMywgMjAwNiA8L2xpPiA8YnI+CgkJPGxpPjxhIGhyZWY9IjIwMDYwMTIwY2JfcGF2aWxpb24ucGhwIj5Ob21pbmF0aW9ucyBmb3IgdGhlIDxpPk9wZW4gU291cmNlIFBhdmlsaW9uPC9pPiBhdCBFY2xpcHNlQ29uIDIwMDY8L2E+IC0gSmFudWFyeSAyMCwgMjAwNiA8L2xpPiA8YnI+CgkJPGxpPjxhIGhyZWY9IjIwMDYwMTE3Z29sZHNwb25zb3JzLnBocCI+R29sZCBTcG9uc29ycyBBbm5vdW5jZWQgZm9yIEVjbGlwc2VDb24gMjAwNiA8L2E+IC0gSmFudWFyeSAxNywgMjAwNiA8L2xpPiA8YnI+CgkJPGxpPjxhIGhyZWY9IjIwMDYwMTA0c2VtaW5hcnMucGhwIj5FY2xpcHNlIEZvdW5kYXRpb24gS2lja3MgT2ZmIFNlbWluYXIgU2VyaWVzOiCTRWNsaXBzZSBJbiBNb3Rpb26UPC9hPiAtIEphbnVhcnkgNCwgMjAwNiA8L2xpPjxicj4KCQk8bGk+PGEgaHJlZj0iMjAwNTEyMTl3dHAxMHJlbGVhc2UucGhwIj5FY2xpcHNlIEZvdW5kYXRpb24gQW5ub3VuY2VzIFdlYiBUb29scyBQbGF0Zm9ybSAxLjA8L2E+IC0gRGVjZW1iZXIgMTksIDIwMDUgPC9saT4KCgkJPC91bD4KCTwvZGl2PgoKCTwhLS0gcmVtb3ZlIHRoZSBlbnRpcmUgPGRpdj4gdGFnIHRvIG9taXQgdGhlIHJpZ2h0IGNvbHVtbiEgIC0tPgoJPGRpdiBpZD0icmlnaHRjb2x1bW4iPgoJCTxkaXYgY2xhc3M9InNpZGVpdGVtIj4KCQkJPGg2PlJlbGF0ZWQgTGlua3M8L2g2PgoJCQk8dWw+CgkJCQk8bGk+PGEgaHJlZj0ibWFpbi5odG1sIj4yMDAxLTIwMDUgQXJjaGl2ZXM8L2E+PC9saT4KCQkJCTxsaT48YSBocmVmPSJwcmVzc3JlbGVhc2VfZ3VpZGVsaW5lcy5waHAiPlByZXNzIFJlbGVhc2UgR3VpZGVsaW5lczwvYT48L2xpPgoKCQkJPC91bD4KCQk8L2Rpdj4KCTwvZGl2PgoKPD9waHAKCSRodG1sID0gb2JfZ2V0X2NvbnRlbnRzKCk7CglvYl9lbmRfY2xlYW4oKTsKCgkjIEdlbmVyYXRlIHRoZSB3ZWIgcGFnZQoJJEFwcC0+Z2VuZXJhdGVQYWdlKCR0aGVtZSwgJE1lbnUsICROYXYsICRwYWdlQXV0aG9yLCAkcGFnZUtleXdvcmRzLCAkcGFnZVRpdGxlLCAkaHRtbCk7Cj8+