PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkVjbGlwc2UgRm91bmRhdGlvbiBDb21tdW5pdHkgQXdhcmRzIEFubm91bmNlbWVudCI7CgkkcGFnZUtleXdvcmRzCT0gIkVjbGlwc2UgRm91bmRhdGlvbiwgY29tbXVuaXR5LCBhd2FyZHMsIHdpbm5lcnMsIDIwMDYsIHByZXNzLCByZWxlYXNlIjsKCSRwYWdlQXV0aG9yCQk9ICJOYXRoYW4gR2VydmFpcyI7CgkKCSMgQWRkIHBhZ2Utc3BlY2lmaWMgTmF2IGJhcnMgaGVyZQoJIyBGb3JtYXQgaXMgTGluayB0ZXh0LCBsaW5rIFVSTCAoY2FuIGJlIGh0dHA6Ly93d3cuc29tZW90aGVyc2l0ZS5jb20vKSwgdGFyZ2V0IChfc2VsZiwgX2JsYW5rKQoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIpOwoKCSMgRW5kOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzCgkjCgkKCSMgUGFzdGUgeW91ciBIVE1MIGNvbnRlbnQgYmV0d2VlbiB0aGUgRU9IVE1MIG1hcmtlcnMhCQoJJGh0bWwgPSA8PDxFT0hUTUwKPGRpdiBpZD0ibWFpbmNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDE+JHBhZ2VUaXRsZTwvaDE+CgkJPGgyPlByZXNzIFJlbGVhc2U8L2gyPgoJCTxoMiBBTElHTj0iQ0VOVEVSIj48c3Ryb25nPkNvbXB1d2FyZSBhbmQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBBbm5vdW5jZSB0aGUgVG9vbHMgU2VydmljZXMgRnJhbWV3b3JrIChDb3JvbmEpIFByb2plY3Q8L3N0cm9uZz48L2gyPgoJCTx1bD4KCQkJPGxpPkNvcm9uYSB0byBFbmFibGUgSW50ZWdyYXRpb24gYW5kIEludGVyb3BlcmFiaWxpdHkgZm9yIGFsbCBFY2xpcHNlLWJhc2VkIElUIERldmVsb3BtZW50IFRlYW1zIDwvbGk+CgkJPC91bD4KCQk8cD48c3Ryb25nPkVDTElQU0VDT04gMjAwNiwgU0FOVEEgQ0xBUkEsIENhbGlmLiwgTWFyY2ggMjEsIDIwMDY8L3N0cm9uZz4gLSBDb21wdXdhcmUgQ29ycG9yYXRpb24gKE5BU0RBUTogQ1BXUikgYW5kIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gdG9kYXkgYW5ub3VuY2VkIHRoZSBjcmVhdGlvbiBvZiB0aGUgVG9vbHMgU2VydmljZXMgRnJhbWV3b3JrIChDb3JvbmEpIFByb2plY3QsIHRvIGJlIGxlZCBieSBDb21wdXdhcmUuIFRoZSBjcmVhdGlvbiBvZiBQcm9qZWN0IENvcm9uYSBjb21lcyBsZXNzIHRoYW4gc2l4IG1vbnRocyBhZnRlciBDb21wdXdhcmUgb2ZmaWNpYWxseSBqb2luZWQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBhcyBhIFN0cmF0ZWdpYyBNZW1iZXIuPC9wPgoJCTxwPlN0YXRlZCBDYXJsIFpldGllLCBWaWNlIFByZXNpZGVudCBmb3IgRm9ycmVzdGVyIFJlc2VhcmNoLCBpbiB0aGUgT2N0b2JlciAyMDA1IEZvcnJlc3RlciByZXBvcnQgdGl0bGVkIFRoZSBFY2xpcHNlIFRvb2xzIE1hcmtldCBFbnRlcnMgVGhlIE5leHQgUGhhc2U6IJNFY2xpcHNlIGNoYWxsZW5nZXMgdHJhZGl0aW9uYWwgbW9kZWxzIG9mIG1lZ2FsaXRoaWMgZW50ZXJwcmlzZSBkZXZlbG9wbWVudCB0b29scywgYWxsb3dpbmcgdXNlcnMgdG8gYWRvcHQgbW9yZSBncmFudWxhciB0b29scyBiZXR0ZXIgYWxpZ25lZCB0byB0aGVpciBuZWVkcy0tYW5kIHRoaXMgYWdpbGl0eSBpcyBzZWVuIGJ5IGFkb3B0ZXJzIGFzIG9uZSBvZiB0aGUga2V5IGFkdmFudGFnZXMgb2YgRWNsaXBzZS6UIDwvcD4KCQk8cD5Db3JvbmEgaXMgYSBzZXJ2ZXItc2lkZSBmcmFtZXdvcmsgdGhhdCBlbmFibGVzIEVjbGlwc2UtYmFzZWQgdG9vbHMgdG8gY29sbGFib3JhdGUsIHNoYXJpbmcgaW5mb3JtYXRpb24gYWJvdXQgcHJvamVjdHMsIGFwcGxpY2F0aW9ucyBhbmQgZXZlbnRzLiBQcm9qZWN0IENvcm9uYS0tb3IgdGhlIFRvb2xzIFNlcnZpY2VzIEZyYW1ld29yayBQcm9qZWN0LCBhcyBpdCBpcyBvZmZpY2lhbGx5IGNhbGxlZC0taGFzIGJlZW4gcmV2aWV3ZWQgYnkgdGhlIEVjbGlwc2UgVGVjaG5vbG9neSBQcm9qZWN0IE1hbmFnZW1lbnQgQ29tbWl0dGVlIChQTUMpIGFuZCBvZmZpY2lhbGx5IGFjY2VwdGVkIGZvciBwcm9qZWN0IGNyZWF0aW9uLiA8L3A+CgkJPHA+k0FwcGxpY2F0aW9uIExpZmVjeWNsZSBNYW5hZ2VtZW50IGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiBFY2xpcHNlknMgZXZvbHV0aW9uLJQgc2FpZCBNaWtlIE1pbGlua292aWNoLCBFeGVjdXRpdmUgRGlyZWN0b3Igb2YgdGhlIEVjbGlwc2UgRm91bmRhdGlvbi4gk0Nvcm9uYSBzdXBwb3J0cyBFY2xpcHNlIG9uIHRoZSBkZWxpdmVyeSBvZiB0aGF0IHZpc2lvbiwgYW5kIHdlIGFyZSBleHRyZW1lbHkgcGxlYXNlZCB0byBoYXZlIENvbXB1d2FyZSwgYSBsZWFkZXIgaW4gdGhlIEFMTSBzcGFjZSwgcHJvcG9zZSBhbmQgbm93IGxlYWQgdGhpcyBwcm9qZWN0LpQ8L3A+CgkJPHA+TmFtZWQgYWZ0ZXIgYSBzb2xhciBlY2xpcHNlknMgb3V0ZXIgcmluZyB0aGF0IHNoaW5lcyBicmlnaHRseSBhbmQgZW5hYmxlcyBtb2xlY3VsZXMgdG8gam9pbiB0b2dldGhlciB0byBmb3JtIG5ldyBzdWJzdGFuY2VzLCBQcm9qZWN0IENvcm9uYSBwcm92aWRlcyBFY2xpcHNlIGRldmVsb3BlcnMgd2l0aCBhIHdpZGVyIHNlbGVjdGlvbiBvZiBwbHVnLWlucyB0byBtb3JlIHF1aWNrbHkgZGlhZ25vc2UgYW5kIHJlc29sdmUgYXBwbGljYXRpb24gcHJvYmxlbXMuIENvbXB1d2FyZSB3aWxsIGRlbW9uc3RyYXRlIENvcm9uYZJzIGNhcGFiaWxpdGllcyBhdCBFY2xpcHNlQ29uIDIwMDYgYXQgdGhlIFNhbnRhIENsYXJhIENvbnZlbnRpb24gQ2VudGVyLCBNYXJjaCAyMC0yMywgMjAwNi48L3A+CgkJPHA+k0NvbXB1d2FyZSBpcyBhbiBlbnRlcnByaXNlIHZlbmRvciBwcm92aWRpbmcgZGVlcCB2YWx1ZSBhbnl3aGVyZSBhbiBhcHBsaWNhdGlvbiByZXNpZGVzLJQgc2FpZCBQYXVsIEN6YXJuaWssIFZpY2UgUHJlc2lkZW50IGZvciBDb21wdXdhcmUuIJNXZSBhcmUgZnVsbHkgY29tbWl0dGVkIHRvIEVjbGlwc2UgYW5kIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgYW5kIGFyZSBkZW1vbnN0cmF0aW5nIHRoYXQgY29tbWl0bWVudCBpbiB3YXlzIHRoYXQgcHJvdmlkZSByZWFsIElUIHZhbHVlIHRvIGJ1c2luZXNzLpQ8L3A+CiAJCTxwPjxzdHJvbmc+Q29tcHV3YXJlIENvcnBvcmF0aW9uPC9zdHJvbmc+PGJyIC8+CgkJQ29tcHV3YXJlIENvcnBvcmF0aW9uIChOQVNEQVE6IENQV1IpIG1heGltaXplcyB0aGUgdmFsdWUgSVQgYnJpbmdzIHRvIHRoZSBidXNpbmVzcyBieSBoZWxwaW5nIENJT3MgbW9yZSBlZmZlY3RpdmVseSBtYW5hZ2UgdGhlIGJ1c2luZXNzIG9mIElULiBDb21wdXdhcmUgc29sdXRpb25zIGFjY2VsZXJhdGUgdGhlIGRldmVsb3BtZW50LCBpbXByb3ZlIHRoZSBxdWFsaXR5IGFuZCBlbmhhbmNlIHRoZSBwZXJmb3JtYW5jZSBvZiBjcml0aWNhbCBidXNpbmVzcyBzeXN0ZW1zIHdoaWxlIGVuYWJsaW5nIENJT3MgdG8gYWxpZ24gYW5kIGdvdmVybiB0aGUgZW50aXJlIElUIHBvcnRmb2xpbywgaW5jcmVhc2luZyBlZmZpY2llbmN5LCBjb3N0IGNvbnRyb2wgYW5kIGVtcGxveWVlIHByb2R1Y3Rpdml0eSB0aHJvdWdob3V0IHRoZSBJVCBvcmdhbml6YXRpb24uIEZvdW5kZWQgaW4gMTk3MywgQ29tcHV3YXJlIHNlcnZlcyB0aGUgd29ybGQncyBsZWFkaW5nIElUIG9yZ2FuaXphdGlvbnMsIGluY2x1ZGluZyBtb3JlIHRoYW4gOTAgcGVyY2VudCBvZiB0aGUgRm9ydHVuZSAxMDAgY29tcGFuaWVzLiBMZWFybiBtb3JlIGFib3V0IENvbXB1d2FyZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmNvbXB1d2FyZS5jb20vIj5odHRwOi8vd3d3LmNvbXB1d2FyZS5jb20vPC9hPi48L3A+CgkJCQkJCgkJPHA+PHN0cm9uZz5BYm91dCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uPC9zdHJvbmc+PGJyIC8+CgkJCUVjbGlwc2UgaXMgYW4gb3BlbiBzb3VyY2UgY29tbXVuaXR5IHdob3NlIHByb2plY3RzIGFyZSBmb2N1c2VkIG9uIHByb3ZpZGluZyBhbiBleHRlbnNpYmxlIGRldmVsb3BtZW50IHBsYXRmb3JtIGFuZCBhcHBsaWNhdGlvbiBmcmFtZXdvcmtzIGZvciBidWlsZGluZyBzb2Z0d2FyZS4gRWNsaXBzZSBwcm92aWRlcyBleHRlbnNpYmxlIHRvb2xzIGFuZCBmcmFtZXdvcmtzIHRoYXQgc3BhbiB0aGUgc29mdHdhcmUgZGV2ZWxvcG1lbnQgbGlmZWN5Y2xlLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgbW9kZWxpbmcsIGxhbmd1YWdlIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBmb3IgSmF2YSwgQy9DKysgYW5kIG90aGVycywgdGVzdGluZyBhbmQgcGVyZm9ybWFuY2UsIGJ1c2luZXNzIGludGVsbGlnZW5jZSwgcmljaCBjbGllbnQgYXBwbGljYXRpb25zIGFuZCBlbWJlZGRlZCBkZXZlbG9wbWVudC4gQSBsYXJnZSwgdmlicmFudCBlY29zeXN0ZW0gb2YgbWFqb3IgdGVjaG5vbG9neSB2ZW5kb3JzLCBpbm5vdmF0aXZlIHN0YXJ0LXVwcywgdW5pdmVyc2l0aWVzIGFuZCByZXNlYXJjaCBpbnN0aXR1dGlvbnMgYW5kIGluZGl2aWR1YWxzIGV4dGVuZCwgY29tcGxlbWVudCBhbmQgc3VwcG9ydCB0aGUgRWNsaXBzZSBQbGF0Zm9ybS4KCQkJPGJyIC8+PGJyIC8+CgkJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgYSBub3QtZm9yLXByb2ZpdCwgbWVtYmVyIHN1cHBvcnRlZCBjb3Jwb3JhdGlvbiB0aGF0IGhvc3RzIHRoZSBFY2xpcHNlIHByb2plY3RzLiBGdWxsIGRldGFpbHMgb2YgRWNsaXBzZSBhbmQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBhcmUgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcuIj53d3cuZWNsaXBzZS5vcmc8L2E+CgkJCgkJCgkJPGNlbnRlcj4jICMgIzwvY2VudGVyPiAKCQk8cD48c3Ryb25nPkZvciBTYWxlcyBvciBNYXJrZXRpbmcgSW5mb3JtYXRpb248L3N0cm9uZz48YnIgLz4KCQlDb21wdXdhcmUgQ29ycG9yYXRpb24sIE9uZSBDYW1wdXMgTWFydGl1cywgRGV0cm9pdCwgTUksIDQ4MjI2LCA4MDAtNTIxLTkzNTMsIDxhIGhyZWY9Imh0dHA6Ly93d3cuY29tcHV3YXJlLmNvbSI+aHR0cDovL3d3dy5jb21wdXdhcmUuY29tPC9hPjxiciAvPjxiciAvPgoJCTxzdHJvbmc+UHJlc3MgQ29udGFjdDwvc3Ryb25nPjxiciAvPgoJCURvdWcgQW50ZXIsIENvbXB1d2FyZSBDb3Jwb3JhdGlvbiwgMzEzLTIyNy0wMTI3LCA8YSBocmVmPSJtYWlsdG86ZG91Zy5hbnRlckBjb21wdXdhcmUuY29tIj5kb3VnLmFudGVyQGNvbXB1d2FyZS5jb208L2E+PGJyIC8+CgkJQ29tcHV3YXJlIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgQ29tcHV3YXJlIENvcnBvcmF0aW9uLiBBbGwgb3RoZXIgcHJvZHVjdCBhbmQgY29tcGFueSBuYW1lcyBhcmUgdHJhZGVtYXJrcyBvciByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb2YgdGhlaXIgcmVzcGVjdGl2ZSBvd25lcnMuPGJyIC8+CiAJCTxiciAvPgoJCTwvcD4KCQkJCQkJCQoJPC9kaXY+CgoKCQkKPC9kaXY+CgoKRU9IVE1MOwoKCgkjIEdlbmVyYXRlIHRoZSB3ZWIgcGFnZQoJJEFwcC0+Z2VuZXJhdGVQYWdlKCR0aGVtZSwgJE1lbnUsICROYXYsICRwYWdlQXV0aG9yLCAkcGFnZUtleXdvcmRzLCAkcGFnZVRpdGxlLCAkaHRtbCk7Cj8+Cgo=