PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnCgoJIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkjCgkjIHRlbXBsYXRlLnBocAoJIwoJIyBBdXRob3I6IAkJRGVuaXMgUm95CgkjIERhdGU6CQkJMjAwNS0wNi0xNgoJIwoJIyBEZXNjcmlwdGlvbjogVHlwZSB5b3VyIHBhZ2UgY29tbWVudHMgaGVyZSAtIHRoZXNlIGFyZSBub3Qgc2VudCB0byB0aGUgYnJvd3NlcgoJIwoJIwoJIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCQoJIwoJIyBCZWdpbjogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncy4gIENoYW5nZSB0aGVzZS4gCgkkcGFnZVRpdGxlIAkJPSAiRExUSyAwLjcgUHJvamVjdCBQbGFuIjsKCSRwYWdlS2V5d29yZHMJPSAiZGx0aywgdGNsLCBsYW5ndWFnZXMsIGVjbGlwc2UsIGlkZSI7CgkkcGFnZUF1dGhvcgkJPSAiQW5kcmV5IFBsYXRvdiI7CgkKCSMgQWRkIHBhZ2Utc3BlY2lmaWMgTmF2IGJhcnMgaGVyZQoJIyBGb3JtYXQgaXMgTGluayB0ZXh0LCBsaW5rIFVSTCAoY2FuIGJlIGh0dHA6Ly93d3cuc29tZW90aGVyc2l0ZS5jb20vKSwgdGFyZ2V0IChfc2VsZiwgX2JsYW5rKSwgbGV2ZWwgKDEsIDIgb3IgMykKCSMgJE5hdi0+YWRkTmF2U2VwYXJhdG9yKCJNeSBQYWdlIExpbmtzIiwgCSJkb3dubG9hZHMucGhwIik7CgkjICROYXYtPmFkZEN1c3RvbU5hdigiTXkgTGluayIsICJteXBhZ2UucGhwIiwgIl9zZWxmIiwgMyk7CgkjICROYXYtPmFkZEN1c3RvbU5hdigiR29vZ2xlIiwgImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCAiX2JsYW5rIiwgMyk7CgoJIyBFbmQ6IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MKCSMgCgkJCglpbmNsdWRlKCJfc2lkZUluY3ViYXRvci5waHAiKTsJCQoJIyBQYXN0ZSB5b3VyIEhUTUwgY29udGVudCBiZXR3ZWVuIHRoZSBFT0hUTUwgbWFya2VycyEJCgkkaHRtbCA9IDw8PEVPSFRNTAoKPGRpdiBpZD0ibWFpbmNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDE+JHBhZ2VUaXRsZTwvaDE+CgogICAgPHA+VGhpcyBkb2N1bWVudCBsYXlzIG91dCBmZWF0dXJlIGFuZCBBUEkgc2V0IGZvciBETFRLIHJlbGVhc2UgMC43LjwvcD4KPHA+VGhlIGZpcnN0IHBhcnQgb2YgdGhlIHBsYW4gZGVhbHMgd2l0aCB0aGUgaW1wb3J0YW50IG1hdHRlcnMgb2YgcmVsZWFzZSBkZWxpdmVyYWJsZXMsIHJlbGVhc2UgbWlsZXN0b25lcywgdGFyZ2V0IG9wZXJhdGluZyBlbnZpcm9ubWVudHMuIFRoZXNlIGFyZSBhbGwgdGhpbmdzIHRoYXQgbmVlZCB0byBiZSBjbGVhciBmb3IgYW55IHJlbGVhc2UsIGV2ZW4gaWYgbm8gZmVhdHVyZXMgd2VyZSB0byBjaGFuZ2UuPC9wPgo8cD5XaXRoIHRoZSBETFRLIHNvdXJjZSBjb2RlIGFzIHRoZSBzdGFydGluZyBwb2ludCwgdGhpcyBpcyB0aGUgcGxhbiBmb3IgaG93IHdlIHdpbGwgZW5oYW5jZSBhbmQgaW1wcm92ZSBpdC4gRml4aW5nIGJ1Z3MsIGltcHJvdmluZyB0ZXN0IGNvdmVyYWdlLCBkb2N1bWVudGF0aW9uLCBleGFtcGxlcywgcGVyZm9ybWFuY2UgdHVuaW5nLCB1c2FiaWxpdHksIGV0Yy4gYXJlIGNvbnNpZGVyZWQgcm91dGluZSBvbmdvaW5nIG1haW50ZW5hbmNlIGFjdGl2aXRpZXMgYW5kIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhpcyBwbGFuIHVubGVzcyB0aGV5IHdvdWxkIGFsc28gaW52b2x2ZSBhIHNpZ25pZmljYW50IGNoYW5nZSB0byB0aGUgQVBJIG9yIGZlYXR1cmUgc2V0LCBvciBpbnZvbHZlIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHdvcmsuIFRoZSBpbnRlbnQgb2YgdGhlIHBsYW4gaXMgdG8gYWNjb3VudCBmb3IgYWxsIGludGVyZXN0aW5nIGZlYXR1cmUgd29yay4gPC9wPgo8cD5UaGUgY3VycmVudCBzdGF0dXMgb2YgZWFjaCBwbGFuIGl0ZW0gaXMgbm90ZWQ6IDwvcD4KPHVsPgo8bGk+Q29tbWl0dGVkIHBsYW4gaXRlbSAtIEEgY29tbWl0dGVkIHBsYW4gaXRlbSBpcyBvbmUgdGhhdCB3ZSBoYXZlIGRlY2lkZWQgdG8gYWRkcmVzcyBmb3IgdGhlIHJlbGVhc2UuIDwvbGk+CjxsaT5Qcm9wb3NlZCBwbGFuIGl0ZW0gLSBBIHByb3Bvc2VkIHBsYW4gaXRlbSBpcyBvbmUgdGhhdCB3ZSBhcmUgY29uc2lkZXJpbmcgYWRkcmVzc2luZyBmb3IgdGhlIHJlbGVhc2UuIEFsdGhvdWdoIHdlIGFyZSBhY3RpdmVseSBpbnZlc3RpZ2F0aW5nIGl0LCB3ZSBhcmUgbm90IHlldCBpbiBhIHBvc2l0aW9uIHRvIGNvbW1pdCB0byBpdCwgb3IgdG8gc2F5IHRoYXQgd2Ugd29uJ3QgYmUgYWJsZSB0byBhZGRyZXNzIGl0LiBBZnRlciBkdWUgY29uc2lkZXJhdGlvbiwgYSBwcm9wb3NhbCB3aWxsIGVpdGhlciBiZSBjb21taXR0ZWQgb3IgZGVmZXJyZWQuIDwvbGk+CjxsaT5EZWZlcnJlZCBwbGFuIGl0ZW0gLSBBIHJlYXNvbmFibGUgcHJvcG9zYWwgdGhhdCB3aWxsIG5vdCBtYWtlIGl0IGluIHRvIHRoaXMgcmVsZWFzZSBmb3Igc29tZSByZWFzb24gaXMgbWFya2VkIGFzIGRlZmVycmVkIHdpdGggYSBicmllZiBub3RlIGFzIHRvIHdoeSBpdCB3YXMgZGVmZXJyZWQuIERlZmVycmVkIHBsYW4gaXRlbXMgbWF5IHJlc3VyZmFjZSBhcyBjb21taXR0ZWQgcGxhbiBpdGVtcyBhdCBhIGxhdGVyIHBvaW50LjwvbGk+Cgo8L3VsPgo8aDI+UmVsZWFzZSBkZWxpdmVyYWJsZXM8L2gyPgo8cD5UaGUgcmVsZWFzZSBkZWxpdmVyYWJsZXM6PC9wPgo8dWw+CjxsaT5Tb3VyY2UgY29kZSByZWxlYXNlIGZvciBhbGwgRExUSyBwcm9qZWN0IGRlbGl2ZXJhYmxlcywgYXZhaWxhYmxlIGFzIHZlcnNpb25zIHRhZ2dlZCA8c3Ryb25nPlIwXzc8L3N0cm9uZz4gaW4gdGhlIERMVEsgUHJvamVjdCBDVlMgcmVwb3NpdG9yeS48L2xpPgo8bGk+RExUSyBDb3JlIChydW50aW1lIGJpbmFyeSBhbmQgc291cmNlcykgKGRvd25sb2FkYWJsZSk8L2xpPgo8bGk+RExUSyBUQ0wgKHJ1bnRpbWUgYmluYXJ5IGFuZCBzb3VyY2UpIChkb3dubG9hZGFibGUpPC9saT4KPC91bD4KPGgyPlJlbGVhc2UgbWlsZXN0b25lczwvaDI+Cgo8dWw+CjxsaT5ETFRLIDAuN00xIC0gQXVndXN0IDI5LCAyMDA2LjwvbGk+CjxsaT5ETFRLIDAuN00yIC0gU2VwdGVtYmVyIDI2LCAyMDA2LjwvbGk+CjxsaT5ETFRLIDAuN00zIC0gT2N0b2JlciAyNCwgMjAwNi48L2xpPgo8bGk+RExUSyAwLjdNNCAtIE5vdmVtYmVyIDI4LCAyMDA2LjwvbGk+CjxsaT5ETFRLIDAuN001IC0gRGVjZW1iZXIgMjUsIDIwMDYuPC9saT4KPGxpPkRMVEsgMC43UkMxIC0gSmFudWFyeSAxOSwgMjAwNy48L2xpPgo8bGk+RExUSyAwLjcgLSBGZWJydWFyeSAyLCAyMDA3LjwvbGk+CjwvdWw+Cgo8aDM+VGFyZ2V0IE9wZXJhdGluZyBFbnZpcm9ubWVudHM8L2gzPgo8cD5JbiBvcmRlciB0byByZW1haW4gY3VycmVudCwgZWFjaCBETFRLIHJlbGVhc2UgdGFyZ2V0cyByZWFzb25hYmx5IGN1cnJlbnQgb3BlcmF0aW5nIGVudmlyb25tZW50cy4gPC9wPgo8cD5Nb3N0IG9mIHRoZSBETFRLICBpcyAicHVyZSIgSmF2YSBjb2RlIGFuZCBoYXMgbm8gZGlyZWN0IGRlcGVuZGVuY2Ugb24gdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbS4gIFRoZSBjaGllZiBkZXBlbmRlbmNlIGlzIHRoZXJlZm9yZSBvbiB0aGUgSmF2YSBQbGF0Zm9ybSBpdHNlbGYuIFBvcnRpb25zIG9mIHRoZSBETFRLIFRDTCggaW5jbHVkaW5nIFRDTCBEZWJ1Z2dlciwgQ29uc29sZSwgTGF1bmNoaW5nLCBldGMgKSBhcmUgdGFyZ2V0ZWQgdG8gc3BlY2lmaWMgY2xhc3NlcyBvZiBvcGVyYXRpbmcgZW52aXJvbm1lbnQsIHJlcXVpcmluZyB0aGVpciBzb3VyY2UgY29kZSB0byBvbmx5IHJlZmVyZW5jZSBmYWNpbGl0aWVzIGF2YWlsYWJsZSBpbiBwYXJ0aWN1bGFyIGNsYXNzIGxpYnJhcmllcyggZS5nIFRDTCBJbnRlcnByZXRlciwgZXRjICkuPC9wPgo8cD5UaGVyZSBhcmUgbWFueSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBKYXZhIFBsYXRmb3JtIHJ1bm5pbmcgYXRvcCBhIHZhcmlldHkgb2Ygb3BlcmF0aW5nIHN5c3RlbXMuIFdlIGZvY3VzIERMVEsgdGVzdGluZyBvbiBhIGhhbmRmdWwgb2YgcG9wdWxhciBjb21iaW5hdGlvbnMgb2Ygb3BlcmF0aW5nIHN5c3RlbSwgSmF2YSBQbGF0Zm9ybSBhbmQgRWNsaXBzZSBQbGF0Zm9ybTsgdGhlc2UgYXJlIG91ciByZWZlcmVuY2UgcGxhdGZvcm1zLiBETFRLIHVuZG91YnRlZGx5IHJ1bnMgZmluZSBpbiBtYW55IG9wZXJhdGluZyBlbnZpcm9ubWVudHMgYmV5b25kIHRoZSByZWZlcmVuY2UgcGxhdGZvcm1zIHdlIHRlc3QuIEhvd2V2ZXIsIHNpbmNlIHdlIGRvIG5vdCBzeXN0ZW1hdGljYWxseSB0ZXN0IHRoZW0gd2UgY2Fubm90IHZvdWNoIGZvciB0aGVtLiBQcm9ibGVtcyBlbmNvdW50ZXJlZCB3aGVuIHJ1bm5pbmcgRExUSyB3aXRoIEVjbGlwc2Ugb24gYSBub24tcmVmZXJlbmNlIHBsYXRmb3JtIHRoYXQgY2Fubm90IGJlIHJlY3JlYXRlZCBvbiBhbnkgcmVmZXJlbmNlIHBsYXRmb3JtIHdpbGwgYmUgZ2l2ZW4gbG93ZXIgcHJpb3JpdHkgdGhhbiBwcm9ibGVtcyB3aXRoIHJ1bm5pbmcgRExUSyB3aXRoIEVjbGlwc2Ugb24gYSByZWZlcmVuY2UgcGxhdGZvcm0uPC9wPgo8cD48c3Ryb25nPlRPRE86QWRkIGNvcnJlY3QgdGFyZ2V0IG9wZXJhdGlvbiBzeXN0ZW1zIHRhYmxlPC9zdHJvbmc+PC9wPgo8cD5XZSBleHBlY3QgdGhhdCBETFRLIEVjbGlwc2Ugd2lsbCB3b3JrIGZpbmUgb24gb3RoZXIgSmF2YSAxLjQvNS4wLzYuMCBWTXMgcnVubmluZyBvbiB3aW5kb3cgc3lzdGVtcyBzdXBwb3J0ZWQgYnkgU1dULjwvcD4KPGgyPkRMVEsgQ29yZTwvaDI+CjxwPlRoZSBETFRLIHByb3ZpZGVzIHRoZSBtb3N0IGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBmb3IgZWFjaCBzY3JpcHRpbmcgbGFuZ3VhZ2UgZGV2ZWxvcG1lbnQuPC9wPgoKPGgzPkNvbW1pdHRlZCBJdGVtczwvaDM+Cjx1bD4KPGxpPihjb21taXR0ZWQpIDxzdHJvbmc+SW5kZXhpbmcgZmVhdHVyZS48L3N0cm9uZz4gRExUSyBzaG91bGQgaGF2ZSBpbXBsZW1lbnRhdGlvbiBvZiBsYW5ndWFnZSBpbmRlcGVuZGVudCBzZWFyY2ggaW5kZXguIFRoaXMgd291bGQgZW5hYmxlLCBmb3IgZXhhbXBsZSwgIGZhc3Qgc2VhcmNoIG9mIHJlcXVpcmVkIG1vZGVsIGVsZW1lbnRzLCBzdWNoIGFzIGZ1bmN0aW9ucywgdmFyaWFibGVzLiBBbHNvIGluZGV4IHdvdWxkIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQgZnVuY3Rpb24gY2FsbHMsIGZvciB1c2UgaW4gY2FsbCBoaWVyYXJjaGllcyB2aWV3LjwvbGk+CjxsaT4oY29tbWl0dGVkKSA8c3Ryb25nPkJ1aWxkcGF0aCBzdXBwb3J0Ljwvc3Ryb25nPiBCYXNpYyBidWlsZHBhdGggZnVuY3Rpb25hbGl0eSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgdG8gcHJvdmlkZSBzdXBwb3J0IG9mIGFjY2Vzc2luZyBtb2R1bGVzIGZyb20gSW50ZXJwcmV0ZXIgYnVpZHBhdGhzLiBFbGVtZW50IHN1Y2ggYXMgYnVpbGRwYXRoIGVkaXRpbmcgZGlhbG9ncyB3b3VsZCBiZSBpbXBsZW1lbnRlZC48L2xpPgo8bGk+KGNvbW1pdHRlZCkgPHN0cm9uZz5QcmVmZXJlbmNlIHBhZ2VzLjwvc3Ryb25nPiBDdXJyZW50IHJlbGVhc2UgcmVxdWlyZSBmb2xsb3dpbmcgRWNsaXBzZSBwcmVmZXJlbmNlIHBhZ2VzIHRvIGJlIGltcGxlbWVudGVkOiBlZGl0b3IgY29uZmlndXJhdGlvbiBwYWdlcywgbGFuZ3VhZ2UgaW5kZXBlbmRlbnQgc3ludGF4IGhpZ2hsaWdodGluZyBjb25maWd1cmF0aW9uIHBhZ2VzLCBpbnRlcnByZXRlcnMgY29uZmlndXJhdGlvbiBwYWdlcy48L2xpPgoKPGxpPihjb21taXR0ZWQpIDxzdHJvbmc+UGFja2FnZSBleHBsb3Jlci48L3N0cm9uZz4gTGFuZ3VhZ2UgaW5kZXBlbmRlbnQgcGFja2FnZSBleHBsb3JlciB2aWV3IGltcGxlbWVudGF0aW9uIGFyZSByZXF1aXJlZC4gVmlldyBhcmUgc2ltaWxhciB0byBqYXZhIHBhY2thZ2UgZXhwbG9yZXIsIGV4Y2VwdCBmb3Igc3VwcG9ydGluZyBhbnkgRExUSyBiYXNlZCBsYW5ndWFnZS48L2xpPgo8bGk+KGNvbW1pdHRlZCkgPHN0cm9uZz5FZGl0aW5nIGFuZCBOYXZpZ2F0aW9uLjwvc3Ryb25nPiBBYnN0cmFjdCBsYW5ndWFnZSBlZGl0b3Igc2hvdWxkIGhhdmUgYmUgZXh0ZW5kZWQgdG8gc3VwcG9ydCBvZiBsYW5ndWFnZSBpbmRlcGVuZGVudCBjb250ZW50IGFzc2lzdGFuY2UsIGNvZGUgZm9sZGluZywgc2VhcmNoLCByZWZlcmVuY2UgYW5kIGRlY2xhcmF0aW9uIHNlYXJjaCwgYmFzZWQgb24gbW9kZWwgYW5kIGF1dG9pbmRlbnRpbmcgYmFzZWQgb24gbGFuZ3VhZ2UgcHJvdmlkZXJzLjwvbGk+CjxsaT4oY29tbWl0dGVkKSA8c3Ryb25nPk91dGxpbmUgdmlldy48L3N0cm9uZz4gRExUSyBtb2RlbCBvdXRsaW5lIHNob3VsZCBiZSBleHRlbmRlZCB0byBpbXBsZW1lbnQgdXNhZ2Ugb2YgZmlsdGVyaW5nIHByb3ZpZGVycy4gU3VjaCBwcm92aWRlcnMgY2FuIGZpbHRlciBjb250ZW50IG9mIG91dGxpbmUgYmFzZWQgb24gZWRpdGVkIGxhbmd1YWdlLjwvbGk+CjxsaT4oY29tbWl0dGVkKSBJbnRlcmFjdGl2ZSBjb25zb2xlcy48L3N0cm9uZz4gU2ltcGxlIGludGVyYWN0aXZlIGNvbnNvbGUsIHdpdGggYXNzaXN0YW5jZSBzdXBwb3J0IGV4dGVuc2liaWxpdHkgaW50ZXJmYWNlIHdvdWxkIGJlIGltcGxlbWVudGVkLiBMYW5ndWFnZSBkZXBlbmRlbnQgYXNzaXN0YW5jZSBwcm92aWRlcnMgc2hvdWxkIGJlIHVzZWQgdG8gcHJvdmlkZSBhc3Npc3RhbmNlLiBUaGlzIHdvdWxkIGVuYWJsZSwgZm9yIGV4YW1wbGUgZXhlY3V0aW9uIG9mIGFueSBwb3NzaWJsZSBjb25zb2xlIGFwcGxpY2F0aW9uIGluIEVjbGlwc2UuPC9saT4KCjxsaT4oY29tbWl0dGVkKSA8c3Ryb25nPlJ1bm5pbmcgYW5kIERlYnVnZ2luZy48L3N0cm9uZz4gTGFuZ3VhZ2UgaW5kZXBlbmRlbnQgcnVuL2RlYnVnIGNvbmZpZ3VyYXRpb24gZWRpdG9yIHdvdWxkIGJlIGltcGxlbWVudGVkLCB3aGljaCB3b3VsZCBzdXBwb3J0IHByb3ZpZGluZyBhZGRpdGlvbmFsIHBhZ2VzIHJlcXVpcmVkIGJ5IGxhbmd1YWdlIGRlcGVuZGVudCBjb2RlLiBBbHNvIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBETFRLIERlYnVnZ2luZyBTREssIHdoaWNoIHdpbGwgc3VwcG9ydCBFY2xpcHNlIGRlYnVnZ2luZyBpbnRlZ3JhdGlvbiB3aXRoIGxhbmd1YWdlIGRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMuPC9saT4KPGxpPihjb21taXR0ZWQpIDxzdHJvbmc+RG9jdW1lbnRhdGlvbiBhY2Nlc3MuPC9zdHJvbmc+IERMVEsgTW9kZWwgd291bGQgYmUgZXh0ZW5kZWQgd2l0aCBkb2N1bWVudGF0aW9uIGNvbnRlbnQuIE1vZGVsIHN1cHBvcnQgb2YgZG9jdW1lbnRhdGlvbiBwcm92aWRlcnMgd291bGQgYmUgaW1wbGVtZW50ZWQuIFRoaXMgd2lsbCBnaXZlIGEgd2F5IG9mIGltcGxlbWVudGF0aW9uIGFueSBwb3NzaWJsZSBkb2N1bWVudGF0aW9uIGNvbnRlbnQgcHJvdmlkZXJzLiBEb2N1bWVudGF0aW9uIGhpbnRpbmcgIHdvdWxkIGJlIGltcGxlbWVudGVkIGluIERMVEsgZWRpdG9yLjwvbGk+CjxsaT4oY29tbWl0dGVkKSA8c3Ryb25nPkVycm9yIHJlcG9ydGluZy48L3N0cm9uZz4gRExUSyBNb2RlbCBzaG91bGQgYmUgZXh0ZW5kZWQgd2l0aCBhiD9lcnJvcmGIPywgYYg/d2FybmluZ2GIPyBhbm5vdGF0aW9ucy4gQW5kIEVkaXRvcnMgd291bGQgZGlzcGxheSBhbm5vdGF0aW9ucy48L2xpPgo8L3VsPgo8aDI+RExUSyBUQ0w8L2gyPgoKPHA+VGhlIERMVEsgVENMICBwcm92aWRlcyBzdXBwb3J0IG9mIFRDTCAgbGFuZ3VhZ2UgSURFIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIERMVEsuPC9wPgo8aDM+Q29tbWl0dGVkIEl0ZW1zPC9oMz4KPHVsPgo8bGk+KGNvbW1pdHRlZCkgPHN0cm9uZz5UQ0wgRW52aXJvbm1lbnQuPC9zdHJvbmc+IFdlIHdvdWxkIHByb3ZpZGUgZm9sbG93aW5nIFRDTCBlbnZpcm9ubWVudCBmZWF0dXJlczogVENMIFBlcnNwZWN0aXZlLCBUQ0wgd2l6YXJkcyggTmV3IFRDTCBQYWNrYWdlLCBOZXcgVENMIE1vZHVsZSwgZXRjICkuPC9saT4KPGxpPihjb21taXR0ZWQpIDxzdHJvbmc+VENMIEJ1aWxkcGF0aCBzdXBwb3J0Ljwvc3Ryb25nPiBETFRLIEJ1aWxkcGF0aCBwcm92aWRlciBzaG91bGQgYmUgaW1wbGVtZW50ZWQgdG8gc3VwcG9ydCBUQ0xfTElCIGJ1aWxkcGF0aHMuPC9saT4KPGxpPihjb21taXR0ZWQpIDxzdHJvbmc+Q29udGVudCBhc3Npc3RhbmNlLjwvc3Ryb25nPiBUQ0wgRWRpdG9yIHNob3VsZCBoYXZlIGltcGxlbWVudGF0aW9uIG9mIGVkaXRpbmcgY29udGVudCBhc3Npc3RhbmNlIHN1Y2ggYXMgY29tbWFuZCBjb21wbGV0aW9uLCBhcmd1bWVudCBoaW50aW5nLCBhcmd1bWVudCBjb21wbGV0aW9uLjwvbGk+Cgo8bGk+KGNvbW1pdHRlZCkgPHN0cm9uZz5TeW1ib2wgbmF2aWdhdGlvbiB2aWV3Ljwvc3Ryb25nPiAgVENMIG5hdmlnYXRpb24gcmVxdWlyZXMgYWR2YW5jZWQgbmF2aWdhdGlvbiB2aWV3LCBtdWNoIG1vcmUgY29tcGxpY2F0ZWQgdGhlbiBvdXRsaW5lIG9uZS4gVmlldyB3b3VsZCBzdXBwb3J0IGRpc3BsYXlpbmcgb2YgYWxsIHByb2plY3QgY29tbWFuZHMsICBuYW1lc3BhY2VzLCBwYWNrYWdlcywgd2l0aCBmaWx0ZXJpbmcgYnkgcmVndWxhciBleHByZXNzaW9ucywgIHNvdXJjZSBtb2R1bGVzLCBwYWNrYWdlcywgbmFtZXNwYWNlLjwvbGk+CjxsaT4oY29tbWl0dGVkKSA8c3Ryb25nPkNhbGwgaGllcmFyY2hpZXMgdmlldy48L3N0cm9uZz4gQ2FsbCBoaWVyYXJjaGllcyB2aWV3IHdpdGggVENMIGRlcGVuZGVudCBsb2dpYyBzaG91bGQgYmUgaW1wbGVtZW50ZWQuPC9saT4KPGxpPihjb21taXR0ZWQpIDxzdHJvbmc+VENMIE91dGxpbmUgZmlsdGVyaW5nLjwvc3Ryb25nPiBUQ0wgT3V0bGluZSBzaG91bGQgaW1wbGVtZW50IGZpbHRlcmluZyBmZWF0dXJlcyBmb3IgdmFyaWFibGVzLCBwcm9jZWR1cmVzIGFuZCBuYW1lc3BhY2VzLjwvbGk+CjxsaT4oY29tbWl0dGVkKSA8c3Ryb25nPlRleHQgYmFzZWQgVENMIENvbnNvbGUuPC9zdHJvbmc+IFRleHQgYmFzZWQgRExUSyBjb25zb2xlIHdpdGggYmFzaWMgYXNzaXN0YW5jZSBmdW5jdGlvbmFsaXR5LjwvbGk+Cgo8bGk+KGNvbW1pdHRlZCkgPHN0cm9uZz5SdW5uaW5nIGFuZCBEZWJ1Z2dpbmcuPC9zdHJvbmc+IERMVEsgUnVubmluZy9EZWJ1Z2dpbmcgaW50ZXJmYWNlcyB3b3VsZCBiZSBleHRlbmRlZC4gVGhpcyB3aWxsIGdpdmUgc3VwcG9ydCBvZiBzZWxlY3Rpb24gb2YgIFRDTCBJbnRlcnByZXRlcnMuIERMVEsgRGVidWcgaW50ZXJmYWNlcyB3b3VsZCBiZSBpbXBsZW1lbnRlZCB0byBwcm92aWRlIGludGVncmF0aW9uIHdpdGggVENMUHJvIGRlYnVnZ2VyLiBJbnRlcmFjdGl2ZSBjb25zb2xlIHdvdWxkIGJlIGludGVncmF0ZWQgdG8gc3VwcG9ydCBleGVjdXRpb24gb2YgY29tbWFuZCBhdCBicmVha3BvaW50cy48L2xpPgo8bGk+KGNvbW1pdHRlZCkgPHN0cm9uZz5Eb2N1bWVudGF0aW9uIGFjY2Vzcy48L3N0cm9uZz4gRExUSyBEb2N1bWVudCBwcm92aWRlcnMgZm9yIE1hbiBwYWdlcywgYW5kIGlubGluZSBUQ0wgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZSBpbXBsZW1lbnRlZC4gVGhpcyB3aWxsIGdpdmUgZG9jdW1lbnRhdGlvbiBoaW50aW5nIGZlYXR1cmUgdG8gVENMIGVkaXRvci48L2xpPgo8bGk+KGNvbW1pdHRlZCkgPHN0cm9uZz5TdGF0aWMgQW5hbHlzaXMuPC9zdHJvbmc+ICBXZSB3b3VsZCBwcm92aWRlIFRDTENoZWNrZXIgaW50ZWdyYXRpb24gd2l0aCBtb2RlbCBlcnJvciBpbnRlcmZhY2VzLiBUaGlzIHdpbGwgYWxsb3cgdG8gZGlzcGxheSBhZHZhbmNlZCBlcnJvciByZXBvcnRpbmcuPC9saT4KPC91bD4KPGgyPk1pbGVzdG9uZXM8L2gyPgoKPGgzPk0wICggRExUSyBUQ0wgRGVtbyBGaW5hbGl6YXRpb24gKTwvaDM+Cjx1bD4KPGxpPlByb2plY3QgaW5mcmFjdHJ1Y3R1cmUKPHVsPgo8bGk+Q1ZTPC9saT4KPGxpPkJ1aWxkIHN5c3RlbS9OaWdodGx5IGJ1aWxkczwvbGk+CjxsaT5CdWcgdHJhY2tpbm5nIHN5c3RlbTwvbGk+CjxsaT5XaWtpPC9saT4KPGxpPlRlc3QgYXV0b21hdGlvbi48L2xpPgo8L3VsPgo8L2xpPgoKPGxpPlByZWZlcmVuY2VzCjx1bD4KPGxpPkVkaXRvciBwcmVmZXJlbmNlczwvbGk+CjxsaT5TeW50YXggaGlnaGxpZ2h0aW5nIHByZWZlcmVuY2VzLjwvbGk+CjwvdWw+CjwvbGk+CjxsaT5UQ0wgTW9kZWwKPHVsPgo8bGk+VmFyaWFibGUgcmVwb3J0aW5nPC9saT4KPC91bD4KPC9saT4KPGxpPkVkaXRvcgo8dWw+CjxsaT5PdXRsaW5lIFNlbGVjdGlvbjwvbGk+Cgo8L3VsPgo8L2xpPgo8L3VsPgo8aDM+TTE8L2gzPgo8dWw+CjxsaT5JbmRleCBmZWF0dXJlCjx1bD4KPGxpPkluZGV4IG1hbmFnZXIuIDwvbGk+CjxsaT5JbmRleGVyIGludGVyZmFjZXMuIDwvbGk+CjxsaT5OYW1lIHRvIG1vZGVsIGVsZW1lbnQgY2FjaGUgKGNhY2hpbmcgb2YgYWxsIERMVEsgcHJvamVjdHMgaW4gd29ya3NwYWNlLCBzdXBwb3J0IG9mIGR5bmFtaWMgdXBkYXRpbmcsIGZpbHRlcmluZykuIDwvbGk+CjxsaT5GdW5jdGlvbiB0byBjb250ZXh0IGNhbGwgY2FjaGUgKGNhY2hpbmcgb2YgYWxsIGZ1bmN0aW9uIGNhbGxzIGZyb20gYWxsIG1vZHVsZXMsIGZyb20gYWxsIHByb2plY3QgaW4gd29ya3NwYWNlLCBzdXBwb3J0IG9mIGR5bmFtaWMgdXBkYXRpbmcsIGZpbHRlcmluZykuIDwvbGk+CjxsaT5DYWNoZXMgdXBkYXRpbmcgb24gZWRpdGVkIGZpbGVzLiBDb3JyZWN0IHJvbGxiYWNrIG9mIGNoYW5nZXMuIDwvbGk+Cgo8bGk+VENMIHNvdXJjZSBtb2R1bGUgaW5kZXhlci4gPC9saT4KPGxpPlRDTCBwYWNrYWdlIGluZGV4ZXIuICA8L2xpPgo8L3VsPgo8L2xpPgo8L3VsPgo8dWw+CjxsaT5CdWlsZHBhdGggc3VwcG9ydAo8dWw+CjxsaT5CYXNpYyBidWlsZHBhdGggbW9kZWwgc3VwcG9ydC4gPC9saT4KPGxpPkJ1aWxkcGF0aCBwcm9wZXJ0aWVzIHBhZ2VzLgo8dWw+CjxsaT5Tb3VyY2UgZm9sZGVycyBwYWdlLiA8L2xpPgo8bGk+UmVxdWlyZWQgcHJvamVjdHMgcGFnZS4gPC9saT4KCjxsaT5MaWJyYXJpZXMgcGFnZS4gPC9saT4KPGxpPk9yZGVyIGFuZCBleHBvcnQgcGFnZS4gPC9saT4KPC91bD4KPC9saT4KPGxpPlRDTF9QQVRIIGltcGxlbWVudGF0aW9uIG9mIGJ1aWxkcGF0aHMuIDwvbGk+CjwvdWw+CjwvbGk+CjwvdWw+Cjx1bD4KPGxpPkF1dG9pbmRlbnRpbmcKPHVsPgo8bGk+VENMIEluZGVudGluZyBzdHJhdGVneS4KPHVsPgo8bGk+QXV0b21hdGljYWxseSBjbG9zZSBzdHJpbmdzLCBwYXJlbnRoZXNlcywgYnJhY2tldHMuIDwvbGk+Cgo8bGk+U21hcnQgY2FyZXQgcG9zaXRpb24gYXQgbGluZSBzdGFydCBhbmQgZW5kLiA8L2xpPgo8bGk+U21hcnQgY2FyZXQgcG9zaXRpb24gaW4gbmFtZXMuIDwvbGk+CjwvdWw+CjwvbGk+CjwvdWw+CjwvbGk+CjwvdWw+Cjx1bD4KPGxpPk91dGxpbmUgdmlldwo8dWw+CjxsaT5GaWx0ZXJpbmcgc3VwcG9ydCBpbiBvdXRsaW5lIHZpZXcuCjx1bD4KPGxpPlZhcmlhYmxlcyBmaWx0ZXJpbmcuIDwvbGk+CjxsaT5Qcm9jZWR1cmVzIGZpbHRlcmluZy4gPC9saT4KCjxsaT5OYW1lc3BhY2VzIGZpbHRlcmluZy4gPC9saT4KPC91bD4KPC9saT4KPC91bD4KPC9saT4KPGxpPlRDTCBQZXJzcGVjdGl2ZSA8L2xpPgo8L3VsPgo8aDM+TTI8L2gzPgo8dWw+CjxsaT5UQ0wgcHJvZ3JhbSBsYXVuY2hlcgo8dWw+CjxsaT5UQ0wgcHJvZ3JhbSBsYXVuY2hlci4gPC9saT4KPGxpPlRDTCBpbnRlcnByZXRlciBvdXRwdXQgcGFyc2VyLiA8L2xpPgoKPGxpPkVycm9yIGFubm90YXRpb25zIHJlcG9ydGVyLiA8L2xpPgo8L3VsPgo8L2xpPgo8L3VsPgo8dWw+CjxsaT5OZXcgVENMIFBhY2thZ2UgV2l6YXJkCjx1bD4KPGxpPlBhY2thZ2UgY3JlYXRpbmcgb3BlcmF0aW9uLiA8L2xpPgo8bGk+TmV3IFBhY2thZ2Ugd2l6YXJkLiA8L2xpPgo8L3VsPgo8L2xpPgo8L3VsPgo8dWw+CjxsaT5Db2RlIGZvbGRpbmcKCjx1bD4KPGxpPkNvZGUgZm9sZGluZyBlZGl0b3IgcHJvdmlkZXIuIDwvbGk+CjxsaT5Db2RlIGZvbGRpbmcgZWRpdG9yIHByb3BlcnRpZXMgcGFnZS4gPC9saT4KPC91bD4KPC9saT4KPC91bD4KPHVsPgo8bGk+RExUSyBQYWNrYWdlIGV4cGxvcmVyCjx1bD4KPGxpPkV4cGxvcmluZyBvZiBmaWxlcy4gPC9saT4KPGxpPkV4cGxvcmluZyBvZiBzb3VyY2UgbW9kdWxlIGNvbnRlbnRzIChPdXRsaW5lIGxpa2UgdmlldywgaW50ZWdyYXRlZCB3aXRoIHBhY2thZ2UgZXhwbG9yZXIpLiA8L2xpPgo8bGk+V29ya2luZyBzZXQgc2VsZWN0aW9uLiA8L2xpPgoKPGxpPkZpbHRlcnMgc3VwcG9ydC4gPC9saT4KPC91bD4KPC9saT4KPC91bD4KPGgzPk0zPC9oMz4KPHVsPgo8bGk+Q29udGVudCBBc3Npc3RhbmNlCjx1bD4KPGxpPkNvbW1hbmQgY29tcGxldGlvbi4KPHVsPgo8bGk+QnVpbGRpbiBjb21tYW5kcy4gPC9saT4KPGxpPkxvY2FsIGNvbW1hbmRzLiA8L2xpPgo8bGk+UHJvamVjdCBjb21tYW5kcywgdXNpbmcgaW5kZXgoIHdpdGggaW1wb3J0IGNvcnJlY3Rpb24gKS4gPC9saT4KCjwvdWw+CjwvbGk+CjwvdWw+CjwvbGk+CjwvdWw+Cjx1bD4KPGxpPgo8dWw+CjxsaT5Db21tYW5kIGFyZ3VtZW50IGhpbnRpbmcuCjx1bD4KPGxpPkJ1aWxkaW4gY29tbWFuZCBhcmd1bWVudCBoaW50aW5nLiA8L2xpPgo8bGk+TG9jYWwgY29tbWFuZCBhcmd1bWVudCBoaW50aW5nLiA8L2xpPgo8bGk+UHJvamVjdCBjb21tYW5kcyBhcmd1bWVudHMgaGludGluZy4gPC9saT4KPC91bD4KCjwvbGk+CjxsaT5WYXJpYWJsZSBjb21wbGV0aW9uLgo8dWw+CjxsaT5Mb2NhbCB2YXJpYWJsZSBjb21wbGV0aW9uLiA8L2xpPgo8bGk+TmFtZXNwYWNlIHZhcmlhYmxlcyBjb21wbGV0aW9uLiA8L2xpPgo8L3VsPgo8L2xpPgo8bGk+Q29udGVudCBhc3Npc3RhbmNlIHByb3BlcnRpZXMgcGFnZXMuIDwvbGk+CjwvdWw+CjwvbGk+CjwvdWw+Cjx1bD4KPGxpPlN5bWJvbCBuYXZpZ2F0aW9uIHZpZXcKPHVsPgoKPGxpPkFsbCBjb21tYW5kcyB2aWV3LiA8L2xpPgo8bGk+TmFtZXNwYWNlcyB2aWV3LiA8L2xpPgo8bGk+UGFja2FnZXMgdmlldy4gPC9saT4KPGxpPkZpbHRlcmluZyBzdXBwb3J0Lgo8dWw+CjxsaT5GaWx0ZXJpbmcgYnkgcmVndWxhciBleHByZXNzaW9ucy4gPC9saT4KPGxpPkZpbHRlcmluZyBieSBtb2RlbC4gPC9saT4KPGxpPkZpbHRlcmluZyBieSBwYWNrYWdlLiA8L2xpPgo8L3VsPgo8L2xpPgo8L3VsPgoKPC9saT4KPC91bD4KPHVsPgo8bGk+U3RhdGljIGFuYWx5c2lzCjx1bD4KPGxpPkV4dGVuZCBtb2RlbCB3aXRoIHdhcm5pbmcgYW5kIGVycm9yIGFubm90YXRpb25zIHN1cHBvcnQuIDwvbGk+CjxsaT5FeHRlbmQgZWRpdG9ycyB0byBzaG93IHdhcm5pbmcgYW5kIGVycm9yIGFubm90YXRpb25zLiA8L2xpPgo8bGk+RXh0ZW5kIFRDTCBQYXJzZXJzIHRvIHJlcG9ydCBzeW50YXggZXJyb3JzLiA8L2xpPgo8bGk+SW50ZWdyYXRpb24gd2l0aCBUQ0xDaGVja2VyLiA8L2xpPgo8bGk+VENMQ2hlY2tlciBwcm9wZXJ0aWVzIHBhZ2UuIDwvbGk+CjxsaT5SZUNoZWNrIG9uIHNhdmUgZmVhdHVyZS4gPC9saT4KCjwvdWw+CjwvbGk+CjxsaT5Eb2N1bWVudGF0aW9uIGFjY2Vzcwo8dWw+CjxsaT5FeHRlbmRpbmcgbW9kZWwgd2l0aCBkb2N1bWVudGF0aW9uIHByb3ZpZGVycy4gPC9saT4KPGxpPkRvY3VtZW50YXRpb24gaG92ZXJzCjx1bD4KPGxpPlNob3dpbmcgb2YgZG9jdW1lbnRhdGlvbiBob3ZlcnMuIDwvbGk+CjxsaT5Eb2N1bWVudGF0aW9uIGhvdmVycyBwcm9wZXJ0aWVzIHBhZ2UuIDwvbGk+CjwvdWw+CjwvbGk+CjxsaT5NYW4gcGFnZXMgZG9jdW1lbnRhdGlvbiBwcm92aWRlci4gPC9saT4KPGxpPlRDTCBQcm9jIGRvY3VtZW50YXRpb24gcGFyc2VyIGFuZCBwcm92aWRlci4gPC9saT4KCjwvdWw+CjwvbGk+CjwvdWw+CjxoMz5NNDwvaDM+Cjx1bD4KPGxpPkFkdmFuY2VkIE5hdmlnYXRpb24gYW5kIHNlYXJjaAo8dWw+CjxsaT5PcGVuIGRlY2xhcmF0aW9uLiA8L2xpPgo8bGk+UmVmZXJlbmNlcyBzZWFyY2goIHdvcmtzcGFjZSwgcHJvamVjdCwgdXNpbmcgaW5kZXggZmVhdHVyZSApLiA8L2xpPgo8bGk+RGVjbGFyYXRpb25zIHNlYXJjaCggd29ya3NwYWNlLCBwcm9qZWN0LCB1c2luZyBpbmRleCBmZWF0dXJlICkuIDwvbGk+CjxsaT5DYWxsIGhpZXJhcmNoaWVzIHZpZXcuCjx1bD4KPGxpPkNhbGxlciBoaWVyYXJjaHkuIDwvbGk+Cgo8bGk+Q2FsbGVlIGhpZXJhcmNoeS4gPC9saT4KPGxpPkZpbHRlcmluZyBzdXBwb3J0LiA8L2xpPgo8bGk+U2VhcmNoIHNjb3BlIHNlbGVjdGlvbi4gPC9saT4KPC91bD4KPC9saT4KPC91bD4KPC9saT4KPGxpPlRleHQgYmFzZWQgY29uc29sZSB3aXRoIGFzc2lzdGFuY2Ugc3VwcG9ydAo8dWw+CjxsaT5UQ0wgY29uc29sZSBiYXNpYyBhc3Npc3RhbmNlIHN1cHBvcnQuCjx1bD4KPGxpPkNvbW1hbmQgY29tcGxldGlvbi4gPC9saT4KPGxpPkFyZ3VtZW50IGhpbnRpbmcuIDwvbGk+Cgo8bGk+VmFyaWFibGUgY29tcGxldGlvbi4gPC9saT4KPC91bD4KPC9saT4KPGxpPlB1c2ggcHJvYy9maWxlL3NlbGVjdGVkIHJlZ2lvbiB0byBJbnRlcmFjdGl2ZSBJbnRlcnByZXRlciA8L2xpPgo8bGk+VHJhZGl0aW9uYWwgdXAvZG93biBhcnJvdyBoaXN0b3J5IGJlaGF2aW9yIDwvbGk+CjxsaT5TYXZlIHNlc3Npb24gdG8gZmlsZS4gPC9saT4KPGxpPlNhdmVpbmcgb2Ygc2Vzc2lvbiBpbnB1dHMuIEludGVyYWN0aXZlIHNjcmlwdCB3cml0aW5nIGZlYXR1cmUuIDwvbGk+CjwvdWw+CjwvbGk+CjwvdWw+CjxoMz5NNTwvaDM+Cgo8dWw+CjxsaT5EZWJ1Z2dlciA8L2xpPgo8bGk+Cjx1bD4KPGxpPkJyZWFrcG9pbnRzICA8L2xpPgo8bGk+V2F0Y2hwb2ludHMgPC9saT4KPGxpPkludGVncmF0aW9uIHdpdGggVGNsUHJvIGRlYnVnZ2VyIGZyb20gQWN0aXZlU3RhdGUuCjx1bD4KPGxpPkVjbGlwc2UgZGVidWdnZXIgaW1wbGVtZW50YXRpb24uIDwvbGk+CjxsaT5EQkdwIHByb3RvY29sIGltcGxlbWVudGF0aW9uIDwvbGk+CjxsaT5FeHByZXNzaW9uIGV2YWx1YXRpb24uIDwvbGk+Cgo8bGk+TXVsdGktdGhyZWFkZWQgZGVidWdnaW5nLiA8L2xpPgo8L3VsPgo8L2xpPgo8L3VsPgo8L2xpPgo8L3VsPgo8dWw+CjxsaT5NYWtlIGludGVyYWN0aXZlIFRjbCBjb25zb2xlIGF2YWlsYWJsZSBhdCBicmVha3BvaW50cyA8L2xpPgo8L3VsPgo8aDM+UkMxPC9oMz4KPHVsPgo8bGk+VGVzdGluZyA8L2xpPgo8bGk+QnVnZml4aW5nIDwvbGk+Cgo8bGk+RG9jdW1lbnRhdGlvbiB3cml0aW5nLiA8L2xpPgo8bGk+UmVsZWFzZSBidWlsZGluZyA8L2xpPgo8L3VsPgoKCgkJPGhyIGNsYXNzPSJjbGVhcmVyIiAvPgoJPC9kaXY+Cgk8ZGl2IGlkPSJyaWdodGNvbHVtbiI+CgkgICAgJGluY3ViYXRvclNpZGUKCTwvZGl2Pgo8L2Rpdj4KPCEtLSAkSWQgLS0+CgpFT0hUTUw7CgoKCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKPz4K