eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJpZCI6IjU3NHItaDVuYyIsIm5hbWUiOiJQZXJmb3JtYW5jZSBmcm9tIFByZXZpb3VzIFBsYW5zIiwibWV0YWRhdGEiOiJ7XCJpbWFnZVwiOlwiL2FwaS9hc3NldHMvQzlDNzk0OUMtMDJBRS00RTE0LTk5NjktNzhEMEFDN0M5RkZCXCJ9IiwiY2F0ZWdvcmllcyI6W3siaWQiOiJ1bmNhdGVnb3JpemVkIiwibmFtZSI6InVuY2F0ZWdvcml6ZWQiLCJnb2FscyI6W119LHsiaWQiOiJ2YnRuLXM4YnciLCJuYW1lIjoiRnV0dXJlIFdlc3QgU3Vzc2V4IFBsYW4gMjAxNSAtIDIwMTkiLCJnb2FscyI6W3siaWQiOiI5Mnp6LXhja3UiLCJuYW1lIjoiWW91bmcgUGVvcGxlJ3MgTWVudGFsIEhlYWx0aCIsImlzX3B1YmxpYyI6dHJ1ZSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJyZXRpcmVtZW50X25hcnJhdGl2ZVwiOltdLFwiaWNvblwiOlwidGV4dFwiLFwibmFycmF0aXZlXCI6W3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoZSBDQU1IUyAoQ2hpbGRyZW4gYW5kIEFkb2xlc2NlbnQgTWVudGFsIEhlYWx0aCBTZXJ2aWNlKSBhbmQgZW1vdGlvbmFsIHdlbGxiZWluZyBzZXJ2aWNlcyBhcmUgY29tbWlzc2lvbmVkIGJ5IGJvdGggV2VzdCBTdXNzZXggQ291bnR5IENvdW5jaWwgYW5kIGxvY2FsIENsaW5pY2FsIENvbW1pc3Npb25pbmcgR3JvdXBzIHRvIHByb3ZpZGUgc2VydmljZXMgZm9yIHlvdW5nIHBlb3BsZSBpbiBlbW90aW9uYWwgZGlzdHJlc3Mgd2hvIHJlcXVpcmUgc3VwcG9ydCBmb3IgdGhlaXIgZW1vdGlvbmFsIHdlbGxiZWluZy4gQ2hpbGRyZW4gYW5kIFlvdW5nIHBlb3BsZSBhcmUgcmVmZXJyZWQgYnkgYSByYW5nZSBvZiBjaGlsZHJlbidzIHByb2Zlc3Npb25hbCAoaW5jbHVkaW5nIEdQcykgZm9yIGEgbnVtYmVyIG9mIGRpZmZlcmVudCByZWFzb25zIGFuZCBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGV5IGFyZSBzZWVuIGJ5IGFwcHJvcHJpYXRlIHNlcnZpY2VzIGluIGEgdGltZWx5IGZhc2hpb24uXFxuXFxuV2UgY3VycmVudGx5IGhhdmUgYSBwZXJmb3JtYW5jZSB0YXJnZXQgb2YgZW5zdXJpbmcgdGhhdCA5NSUgb2YgeW91bmcgcGVvcGxlIHJlZmVycmVkIHRvIHRoZSBzcGVjaWFsaXN0IENBTUhTIHNlcnZpY2UgKHByb3ZpZGVkIGJ5IFNQRlQgKFN1c3NleCBQYXJ0bmVyc2hpcCBGb3VuZGF0aW9uIFRydXN0KSBhcmUgc2VlbiB3aXRoaW4gZm91ciB3ZWVrcy4gVGhpcyB0YXJnZXQgaXMgaW1wYWN0ZWQgb24gYnkgbnVtYmVycyBvZiByZWZlcnJhbHMgYW5kIHN0YWZmaW5nIGFuZCByZWNydWl0bWVudCBpc3N1ZXMgd2hpY2ggY2FuIGZsdWN0dWF0ZSBtb250aCBieSBtb250aC4gQ29tbWlzc2lvbmVycyB3b3JrIHdpdGggdGhlIHByb3ZpZGVyIHRvIHVuZGVyc3RhbmQgYW55IHZhcmlhdGlvbnMgaW4gbnVtYmVycyBzZWVuIHdpdGhpbiA0IHdlZWtzIGFuZCB0byBzdXBwb3J0IHRoZW0gaW4gbWFuYWdpbmcgdGhpcy5cXG5cXG5Gb3IgZnVydGhlciBkZXRhaWxzIG9mIDIwMTYvMTcgcHJvZ3Jlc3MsIHBsZWFzZSBzZWUgdGhlIGxpbmsgYmVsb3cuXFxuXFxuW2h0dHBzOi8vd3d3Lndlc3RzdXNzZXguZ292LnVrL21lZGlhLzEwMDg2L21ha2luZy1wcm9ncmVzcy1yZXBvcnQtMjAxNi0xNy5wZGZdWzBdXFxuXFxuWzBdOiBodHRwczovL3d3dy53ZXN0c3Vzc2V4Lmdvdi51ay9tZWRpYS8xMDA4Ni9tYWtpbmctcHJvZ3Jlc3MtcmVwb3J0LTIwMTYtMTcucGRmXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqSmFudWFyeSAyMDE4IFVwZGF0ZSoqXFxuXFxuLSAtIC1cXG5cXG5EdXJpbmcgSmFudWFyeSB0aGUgcGVyY2VudGFnZSBvZiByZWZlcnJhbHMgcmVjZWl2aW5nIGFuIGFzc2Vzc21lbnQgd2l0aGluIDQgd2Vla3Mgcm9zZSB0byA4NyUsIGRlc3BpdGUgdGhlIG51bWJlciBvZiByZWZlcnJhbHMgaW5jcmVhc2luZyB0aGlzIG1vbnRoLlxcblxcblNlcnZpY2VzIGFjcm9zcyBTdXNzZXggY29udGludWUgdG8gZXhwZXJpZW5jZSBjaGFsbGVuZ2VzIGluIG1lZXRpbmcgdGhlIDQgd2VlayB0YXJnZXQsIGFzIGEgcmVzdWx0IG9mIGluY3JlYXNlZCBjbGluaWNhbCBhbmQgc2VydmljZSByZS1kZXNpZ24gZGVtYW5kcyBhcyB3ZWxsIGFzIGNvbXBsZXhpdHkgb2YgcmVmZXJyYWxzLiBXb3JrZm9yY2UgcmVjcnVpdG1lbnQgYW5kIHZhY2FuY2llcyByZW1haW5zIGFuIG9uZ29pbmcgaXNzdWUuXFxuXFxuVGhlIHNlcnZpY2UgY29udGludWVzIHRvIHdvcmsgd2l0aCB0aGUgU3Vzc2V4IFBhcnRuZXJzaGlwIEZvdW5kYXRpb24gVHJ1c3QgdG8gZGlzY3VzcyBvbmdvaW5nIHBlcmZvcm1hbmNlIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzLCBsb29raW5nIGF0IHRoZWlyIHJlYXNvbnMgZm9yIGRlbGF5cywgYWN0aW9ucyBhbmQgbGVzc29ucyBsZWFybnQuIEluIHRlcm1zIG9mIG1pdGlnYXRpb24gdGhlIGZvbGxvd2luZyBpcyBpbiBwbGFjZTotXFxuXFxuKiB3b3JrZm9yY2Ugc3RyYXRlZ3kgaXMgYmVpbmcgZGV2ZWxvcGVkIHRvIHN1cHBvcnQgdGhlIGF2YWlsYWJpbGl0eSBvZiBjbGluaWNhbCBzdGFmZlxcblxcbiogTW9udGhseSBtZWV0aW5ncyB3aXRoIFNQRlQgdG8gc2VlayBhc3N1cmFuY2UgYW5kIHVuZGVyc3RhbmQgaXNzdWVzIGZhY2VzIGJ5IHRoZSBzZXJ2aWNlXFxuXFxuKiBKb2ludCB0cmlhZ2Ugd2l0aCBUaWVyIDIgc2VydmljZSB0byBlbnN1cmUgdGhlIHJpZ2h0IGNoaWxkcmVuIGFyZSByZWZlcnJlZCB0byBjbGluaWNhbCBDQU1IUyBzZXJ2aWNlLlxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoZXJlIHdlcmUgMjU5IG5ldyByZWZlcnJhbHMgZm9yIEF1Z3VzdCBhbmQgMTAwJSBtZXQgdGhlIDQgd2VlayB0YXJnZXQuIFRoZXJlIGhhcyBiZWVuIGEgZHJvcCBpbiByZWZlcnJhbHMgaW4gQXVndXN0LCB3aGljaCBpcyBjb25zaXN0ZW50IHdpdGggcHJldmlvdXMgeWVhcnMgYW5kIGNvbnNpc3RlbnQgd2l0aCBzY2hvb2wgaG9saWRheXMuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoaXMgcXVhcnRlciBzYXcgYSAyMCUgaW5jcmVhc2UgaW4gcmVmZXJyYWxzIGNvbXBhcmVkIHRvIGxhc3QgeWVhciwgYW4gYXZlcmFnZSBvZiAzNjAgcmVmZXJyYWxzIHBlciBtb250aCBhbmQgcGVha2luZyBhdCA0MDkgaW4gTWF5LlxcblxcblNQRlQgY2FyZXMgZm9yIG91ciBsb2NhbCBDaGlsZHJlbiBhbmQgeW91bmcgcGVvcGxlIHdpdGggdGhlIG1vc3QgY29tcGxleCBuZWVkcyBhbmQgd2Ugd29yayBjbG9zZWx5IHdpdGggdGhlbSBvbiB0aGUgZGV2ZWxvcG1lbnQgb2YgYSByYW5nZSBvZiBzcGVjaWFsaXN0IHNlcnZpY2VzIGFuZCBpbml0aWF0aXZlcy4gVGhlc2UgaW5jbHVkZSBvdXIgZmFtaWx5IGVhdGluZyBkaXNvcmRlciBzZXJ2aWNlLCBBJkUgbGlhaXNvbiBzZXJ2aWNlLCBhbmQgY2FyZSBmb3IgbG9va2VkIGFmdGVyIGFuZCBhZG9wdGVkIGNoaWxkcmVuLCB1bmFjY29tcGFuaWVkIGFzeWx1bSBzZWVrZXJzLCBjaGlsZHJlbiB3aXRoIGNvbXBsZXggYmVoYXZpb3VycyBhbmQgY2hpbGRyZW4gYW5kIHlvdW5nIHBlb3BsZSBpbiBjcmlzaXMuIFdlIGFyZSBhbHNvIGN1cnJlbnRseSB3b3JraW5nIHdpdGggU1BGVCB0byBkZXZlbG9wIGVuaGFuY2VkIHBhdGh3YXlzIGZvciBjaGlsZHJlbiB3aXRoIG5ldXJvZGV2ZWxvcG1lbnRhbCBkaXNvcmRlcnMuIFNQRlQgYWxzbyBwcm92aWRlIG91ciBjb21tdW5pdHkgbWVudGFsIGhlYWx0aCBsaWFpc29uIHNlcnZpY2UsIG9mZmVyaW5nIGFkdmljZSBhbmQgdHJhaW5pbmcgZm9yIHByb2Zlc3Npb25hbHMuXFxuXFxuT25lIG9mIHRoZSBzZXJ2aWNlcyBhdmFpbGFibGUgLSBZRVMgKFlvdXRoIEVtb3Rpb25hbCBTdXBwb3J0KSBvZmZlcnMgZW1vdGlvbmFsIHN1cHBvcnQgdG8gb3ZlciAyLDI1MCB5b3VuZyBwZW9wbGUgZXZlcnkgeWVhciwgcHJvdmlkaW5nIGEgd2lkZSByYW5nZSBvZiBlbW90aW9uYWwgd2VsbGJlaW5nIGlzc3Vlcy4gSXQgaGVscHMgeW91bmcgcGVvcGxlIHRvIG1ha2UgcG9zaXRpdmUgY2hvaWNlcyBhbmQgYnVpbGQgcmVzaWxpZW5jZS4gQ2xvc2Ugd29ya2luZyBhbmQgZm9ybWFsIGxpbmtzIHdpdGggQ0FITVMsIGNvdW5zZWxsaW5nIGFuZCBvdGhlciBzZXJ2aWNlcyBtZWFucyB0aGF0IFlFUyBjYW4gcHJvdmlkZSB0YWlsb3JlZCwgc2VhbWxlc3Mgc3VwcG9ydCwgb2Z0ZW4gYWRkcmVzc2luZyBpc3N1ZXMgc3VjaCBhcyBlZHVjYXRpb24gYW5kIGVtcGxveW1lbnQgYWxvbmdzaWRlIGVtb3Rpb25hbCB3ZWxsYmVpbmcuIE9wZXJhdGluZyBmcm9tIDggRmluZEl0T3V0IGNlbnRyZXMgYWNyb3NzIHRoZSBjb3VudHksIFlFUyBhY2NlcHRzIHNlbGYtcmVmZXJyYWxzIGFuZCByZWZlcnJhbHMgZnJvbSBHUHMgYW5kIHB1YmxpYyBoZWFsdGggbnVyc2VzLiBJdCBjdXJyZW50bHkgc2VlcyBhcm91bmQgMjAwIG5ldyB5b3VuZyBwZW9wbGUgZXZlcnkgbW9udGggYW5kIGl0cyBzdWNjZXNzIG1lYW5zIHRoYXQgb24gYXZlcmFnZSBsZXNzIHRoYW4gMyUgcmVxdWlyZSBhIHJlZmVycmFsIHRvIENBTUhTLlxcblxcbldlIGNvbnRpbnVlIHRvIG1lZXQgYW5kIHdvcmsgd2l0aCBTUEZUIHJlZ3VsYXJseSB0byBlbnN1cmUgb25nb2luZyBpbXByb3ZlZCBwZXJmb3JtYW5jZS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDQgLSBNYXJjaCAyMDE3KipcXG5cXG4tIC0gLVxcblxcbioqWWVhci1lbmQgQ29tbWVudGFyeSoqXFxuXFxuVGhlIG51bWJlcnMgb2YgcmVmZXJyYWxzIGhhcyByZW1haW5lZCBjb25zaXN0ZW50LCBhdmVyYWdpbmcgYXQgMzM0IHBlciBtb250aC4gU1BGVCBoYXZlIG1ldCB0aGVpciBvdmVyYWxsIHRhcmdldCBmb3Igc2VlaW5nIDk1JSBvZiBjaGlsZHJlbiBhbmQgeW91bmcgcGVvcGxlIHdpdGhpbiA0IHdlZWtzLlxcblxcbioqSGlnaGxpZ2h0cyBmb3IgdGhlIHllYXIgaW5jbHVkZToqKlxcblxcbiogQSBTdXNzZXgtd2lkZSBlYXRpbmcgZGlzb3JkZXIgc2VydmljZSBoYXMgYmVlbiBjb21taXNzaW9uZWQsIGZ1bmRlZCBieSBoZWFsdGggdGhyb3VnaCB0aGUgTFRQIChMb2NhbCBUcmFuc2Zvcm1hdGlvbiBQbGFuKS4gQSBoaWdoIG51bWJlciBvZiByZWZlcnJhbHMgKG92ZXIgMTUwIGluIDYgbW9udGhzKSBoYXZlIGJlZW4gcmVjZWl2ZWQgc2luY2UgdGhlIHNlcnZpY2Ugd2FzIGxhdW5jaGVkIGluIE9jdG9iZXIgMjAxNiwgaW4gcGFydGljdWxhciBmcm9tIFdlc3QgU3Vzc2V4LiBUaGlzIHNlcnZpY2UgaXMgbm90ZWQgYXMgZXhlbXBsYXJ5IGJ5IE5IUyBFbmdsYW5kLlxcblxcbiogQWRkaXRpb25hbCBoZWFsdGggZnVuZGluZyB0aHJvdWdoIHRoZSBMVFAgaGFzIGxlZCB0byBpbnZlc3RtZW50IGluIGEgd2lkZSByYW5nZSBvZiBhZGRpdGlvbmFsIGVtb3Rpb25hbCB3ZWxsYmVpbmcgYW5kIG1lbnRhbCBoZWFsdGggc2VydmljZXMgaW4gV2VzdCBTdXNzZXgsIGluY2x1ZGluZyB0aGVyYXB5IGZvciB1bmFjY29tcGFuaWVkIGFzeWx1bSBzZWVraW5nIGNoaWxkcmVuLCB3aG9sZSBzY2hvb2xzIGFuZCBjb2xsZWdlcyBhcHByb2FjaCB0byBlbW90aW9uYWwgd2VsbGJlaW5nIGFuZCBzY2hvb2xzLCBhZHZvY2FjeSBzZXJ2aWNlICgxMzAgY2hpbGRyZW4gYW5kIHlvdW5nIHBlb3BsZSBoYXZlIHJlY2VpdmVkIHN1cHBvcnQgb3ZlciB0aGUgcGFzdCB5ZWFyKSwgY291bnNlbGxpbmcgZm9yIGNoaWxkcmVuLCB5b3VuZyBwZW9wbGUgYW5kIHRoZWlyIGZhbWlsaWVzIHdobyBoYXZlIHdpdG5lc3NlZCBzZXh1YWwgYWJ1c2UgYW5kIGV4cGxvaXRhdGlvbi4gU2luY2UgSnVseSAyMDE2IExpZmVjZW50cmUgaGF2ZSBzdXBwb3J0ZWQgb3ZlciAxMDAgY2hpbGRyZW4gYW5kIHlvdW5nIHBlb3BsZS5cXG5cXG4qIFRoZSBZRVMgU2VydmljZSBkZWxpdmVyZWQgYnkgSVBFSCAoSW50ZWdyYXRlZCBQcmV2ZW50aW9uIGFuZCBFYXJsaWVzdCBIZWxwIFNlcnZpY2UpIGhhdmUgcmVjZWl2ZWQgb3ZlciAyLDIwMCByZWZlcnJhbHMgYmV0d2VlbiAyMDE2LTE3LiBEdWUgdG8gZGVtYW5kIHRoZSBzZXJ2aWNlIGhhcyBiZWVuIGV4dGVuZGVkIHRvIG9mZmVyIGEgc2VydmljZSBmcm9tIDEzLTE4IHllYXIgb2xkcyB0byAxMS0xOCB5ZWFyIG9sZHMuIFRoaXMgeWVhciB0aGUgc2VydmljZSBoYXMgcmVwb3J0ZWQgdGhhdCAxMSUgb2YgY2xpZW50cyBhcmUgYWdlZCAxMSB5ZWFycy4gT25seSAyLjglIG9mIGNhc2VzIHdlcmUgZXNjYWxhdGVkIHRvIENBTUhTLlxcblxcbiogSW52ZXN0bWVudCBpbiBjb3Vuc2VsbGluZyBzZXJ2aWNlcyBmb3IgdW5kZXIgMTgg4oCTIERpYWxvZ3VlIFlNQ0EgaGF2ZSByZWNlaXZlZCBvdmVyIDc1MCByZWZlcnJhbHMgZm9yIGZhY2UgdG8gZmFjZSBjb3Vuc2VsbGluZyBvdmVyIHRoZSB5ZWFyIGFuZCAyLDAwMCB5b3VuZyBwZW9wbGUgaGF2ZSByZWdpc3RlcmVkIHRvIHVzZSBLb290aCBbaHR0cDovL3d3dy5uaHMudWsvY29uZGl0aW9ucy9vbmxpbmUtbWVudGFsLWhlYWx0aC1zZXJ2aWNlcy9QYWdlcy9rb290aC5hc3B4XVswXSAuIFRoZSBzZXJ2aWNlIHJlY2VpdmVzIGFyb3VuZCAxLDI1MCBsb2dpbnMgZXZlcnkgbW9udGggYW5kIHRocmVlIHF1YXJ0ZXJzIG9mIHRoZXNlIGFyZSBvdXRzaWRlIG9mIHNjaG9vbCBob3Vycy5cXG5cXG4qIE92ZXIgNzUwIG1lbWJlcnMgb2YgdGhlIGNoaWxkcmVuIGFuZCB5b3VuZyBwZW9wbGUgd29ya2ZvcmNlIGhhdmUgdGFrZW4gcGFydCBpbiB0cmFpbmluZyBvbiBlbW90aW9uYWwgd2VsbGJlaW5nIGFuZCB0aGUgbWVudGFsIGhlYWx0aCBwcm9ncmFtbWUgb3ZlciB0aGUgcGFzdCB5ZWFyLlxcblxcbiogVGhlcmUgaGF2ZSBiZWVuIG9jY2FzaW9ucyB3aGVuIFNQRlQgaGF2ZSBub3QgbWV0IHRoZSB0YXJnZXQgb2YgOTUlIG9mIGNoaWxkcmVuIGFuZCB5b3VuZyBwZW9wbGUgcmVjZWl2aW5nIGFzIHNlcnZpY2Ugd2l0aGluIDQgd2Vla3MuIFRoZXNlIGhhdmUgYmVlbiBkaXNjdXNzZWQgYW5kIGFkZHJlc3NlZCB3aXRoIGNvbW1pc3Npb25lcnMgYW5kIGhhdmUgYmVlbiBvZnRlbiBhc3NvY2lhdGVkIHRvIGRlbWFuZCBhbmQgY2FwYWNpdHkgaXNzdWVzLlxcblxcblswXTogaHR0cDovL3d3dy5uaHMudWsvY29uZGl0aW9ucy9vbmxpbmUtbWVudGFsLWhlYWx0aC1zZXJ2aWNlcy9QYWdlcy9rb290aC5hc3B4XCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJJbmNyZWFzZSB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHdpdGggYSBtZW50YWwgaGVhbHRoIHJlZmVycmFsIHJlY2VpdmluZyBhbiBhc3Nlc3NtZW50IHdpdGhpbiBmb3VyIHdlZWtzIG9mIHJlZmVycmFsXCIsXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiVGhpcyBnb2FsIGlzIG1lYXN1cmVkIGJ5IHRyYWNraW5nIHRoZSBwZXJjZW50YWdlIG9mIGNoaWxkcmVuIHdpdGggYSBtZW50YWwgaGVhbHRoIHJlZmVycmFsIHJlY2VpdmluZyBhbiBhc3Nlc3NtZW50IHdpdGhpbiBmb3VyIHdlZWtzIG9mIHJlZmVycmFsIFwifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDEzLTAzLTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6IiUiLCJ0YXJnZXRfdHlwZSI6InJlbGF0aXZlIiwidGFyZ2V0X2RlbHRhIjowLCJ0YXJnZXRfZGVsdGFfaXNfcGVyY2VudCI6ZmFsc2UsImJhc2VsaW5lIjo5NSwibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiJjN3JpLTl1OGsifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxM30sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fSxcImFjdGlvbl90eXBlXCI6XCJtYWludGFpblwiLFwibWFpbnRhaW5fdHlwZVwiOlwiPlwifSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fX0sXCJzdGFydFwiOlwiMjAxNC0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNC0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9fSxcIm5hbWVcIjpcInRoZSBwZXJjZW50YWdlIG9mIHBlb3BsZSB3aXRoIGEgbWVudGFsIGhlYWx0aCByZWZlcnJhbCByZWNlaXZpbmcgYW4gYXNzZXNzbWVudCB3aXRoaW4gZm91ciB3ZWVrc1wiLFwiaXNfYnVybmRvd25fZGlzYWJsZWRcIjpmYWxzZSxcImlzX3RyZW5kbGluZV9kaXNhYmxlZFwiOnRydWV9In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjE4OjI5LjQ2MFoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QxMDoxODoyOS40NjBaIiwidGFyZ2V0X3RvbGVyYW5jZSI6MTAsImlkIjoia2ZnNi0zaHUyIn0sInJlbGF0ZWRfbWVhc3VyZXMiOltdLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjE4OjM1Ljg2MFoiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDoxODoyOS41OTRaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6MTg6MzUuODYwWiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoidXpiaC1mYmJtIiwibmFtZSI6IkNoaWxkcmVuJ3MgSGVhbHRoeSBXZWlnaHQiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaHJvdWdoIGl0cyBQdWJsaWMgSGVhbHRoIHJvbGUsIFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsIHByb3ZpZGVzIGxlYWRlcnNoaXAgdG8gYSBjb3VudHkgd2lkZSBoZWFsdGh5IHdlaWdodCBuZXR3b3JrIHdpdGggcmVwcmVzZW50YXRpdmVzIGZyb20gbWFueSBvcmdhbmlzYXRpb25zIHJlZ3VsYXJseSBhdHRlbmRpbmcuIFRoZSBuZXR3b3JrIGFjdHMgYXMgYSBzdXBwb3J0IGZvciBrZXkgbG9jYWwgcGFydG5lciBvcmdhbmlzYXRpb25zIGRlbGl2ZXJpbmcgdGhlIGFjdGlvbnMgaW4gdGhlIFdlc3QgU3Vzc2V4IEhlYWx0aHkgd2VpZ2h0IG9wZXJhdGlvbmFsIHBsYW4gMjAxNC0xNyAodGhlIHJlZnJlc2ggb2YgdGhlIGVhcmxpZXIgcmVwb3J0IOKAmENyaXRpY2FsIE1hc3PigJkpLiBCb3RoIHByZXZlbnRpb24gYW5kIG1hbmFnZW1lbnQgb2Ygb3ZlcndlaWdodCBhbmQgb2Jlc2UgZm9yIGFsbCBhZ2UgZ3JvdXBzIGZhbGwgd2l0aGluIHNjb3BlIGZvciB0aGUgbmV0d29yay4gVGhlIG5ldHdvcmsgb3ZlcnNlZXMgYW5kIG1haW50YWlucyBwYXRod2F5cyAoYWNyb3NzIGEgbnVtYmVyIG9mIHNlcGFyYXRlIGNvbW1pc3Npb25pbmcgYW5kIHByb3ZpZGVyIG9yZ2FuaXNhdGlvbnMpIHRvIGltcHJvdmUgaG93IGVmZmVjdGl2ZWx5IHRoZXkgbWVldCB0aGUgbmVlZHMgb2YgZmFtaWxpZXMsIGNoaWxkcmVuIGFuZCB5b3VuZyBwZW9wbGUuIFRoaXMgaW5jbHVkZXMgdHJhaW5pbmcgZnJvbnRsaW5lIHN0YWZmIHRvIGlkZW50aWZ5IGluZGl2aWR1YWxzIGluIG5lZWQgb2YgYWRkaXRpb25hbCBzdXBwb3J0IGFuZCByZWZlcnJhbC5cXG5cXG5OYXRpb25hbCBDaGlsZCBNZWFzdXJlbWVudCBQcm9ncmFtbWUgZGF0YSBwcm92aWRlIGEgcHJveHkgZm9yIHBvcHVsYXRpb24gcHJldmFsZW5jZSBvZiBoZWFsdGh5IHdlaWdodCwgb3ZlcndlaWdodCBhbmQgb2Jlc2UgaW4gdHdvIHNjaG9vbCB5ZWFyIGdyb3VwcyBhbmQgYXJlIHJlZnJlc2hlZCBhbm51YWxseS5cXG5cXG4gXFxuXFxuVGhlIG5hdGlvbmFsIENoaWxkIG9iZXNpdHkgYWN0aW9uIHBsYW4gd2FzIHB1Ymxpc2hlZCBpbiBBdWd1c3QgMjAxNi4gSXQgaWRlbnRpZmllcyAxNCBhY3Rpb25zIGZvciBuYXRpb25hbCBvciBsb2NhbCBwcm9ncmVzc2lvbi4gW2h0dHBzOi8vd3d3Lmdvdi51ay9nb3Zlcm5tZW50L3B1YmxpY2F0aW9ucy9jaGlsZGhvb2Qtb2Jlc2l0eS1hLXBsYW4tZm9yLWFjdGlvbl1bMF0uIEl0IHBsYWNlcyBhIGxvdCBvZiBlbXBoYXNpcyBvbiB0aGUgcm9sZSBvZiBzY2hvb2xzIHRvIHByb21vdGUgcGh5c2ljYWwgYWN0aXZpdHkgYW5kIGhlYWx0aHkgZWF0aW5nLlxcblxcblxcblxcblswXTogaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvcHVibGljYXRpb25zL2NoaWxkaG9vZC1vYmVzaXR5LWEtcGxhbi1mb3ItYWN0aW9uXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAzIOKAkyBEZWNlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcbioqTkNNUCBGaWd1cmVzIFB1Ymxpc2hlZCoqXFxuXFxuTkhTIERpZ2l0YWwgcHVibGlzaGVkIHRoZSBtb3N0IHJlY2VudCBOYXRpb25hbCBDaGlsZGhvb2QgTWVhc3VyZW1lbnQgUHJvZ3JhbW1lIChOQ01QKSBmaWd1cmVzIGluIE9jdG9iZXI7IHRoZXNlIGFyZSB0aGUgcmVzdWx0cyBmb3IgdGhlIDIwMTYvMTcgYWNhZGVtaWMgeWVhci4gSW4gV2VzdCBTdXNzZXgsIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gd2hvIGFyZSBjbGFzc2lmaWVkIGFzIG9iZXNlIGluIFllYXIgNiBoYXMgYmVlbiBjb25zaXN0ZW50bHkgbG93ZXIgdGhhbiB0aGUgZmlndXJlcyBmb3IgRW5nbGFuZCBzaW5jZSAyMDA2LzA3LCBhbmQgdGhpcyByZW1haW5zIHRoZSBjYXNlIGZvciAyMDE2LzE3LkluIFllYXIgNiwgMjguNiUgb2YgY2hpbGRyZW4gaW4gV2VzdCBTdXNzZXggd2VyZSBjbGFzc2lmaWVkIGFzIG92ZXJ3ZWlnaHQgb3Igb2Jlc2UsIGEgZGVjcmVhc2UgZnJvbSAyMDE1LzE2LiA3MC4zJSBvZiBZZWFyIDYgY2hpbGRyZW4gd2VyZSBjbGFzc2lmaWVkIGFzIGhlYWx0aHkgd2VpZ2h0LCBoaWdoZXIgdGhhbiB0aGUgcHJldmFsZW5jZSBmb3IgYm90aCB0aGUgU291dGggRWFzdCBhbmQgRW5nbGFuZC4gVGhpcyBwZXJjZW50YWdlIGlzIGhpZ2hlciB0aGFuIHRoZSBwcmV2aW91cyB0aHJlZSB5ZWFycywgYW5kIHRoZSBwZXJjZW50YWdlIG9mIGNoaWxkcmVuIGNsYXNzaWZpZWQgYXMgaGVhbHRoeSB3ZWlnaHQgZm9yIFllYXIgNiBoYXMgYmVlbiBjb25zaXN0ZW50bHkgaGlnaGVyIHRoYW4gRW5nbGFuZCBzaW5jZSAyMDA2LzA3LlxcblxcbiBcXG5cXG43MC4zJSBwbGFjZXMgV2VzdCBTdXNzZXggYXQgZ3JlZW4gY29tcGFyZWQgdG8gdGFyZ2V0LlxcblxcbiBcXG5cXG5UaGUgcHJldmFsZW5jZSBvZiBvYmVzaXR5IHdhcyBsb3dlc3QgaW4gSG9yc2hhbSAoMTAuMiUpIGFuZCBNaWQgU3Vzc2V4ICgxMi4yJSkgYnV0IGhpZ2hlc3QgaW4gQXJ1biAoMTkuOCUpLlxcblxcbiBcXG5cXG5UaGUgcHJldmFsZW5jZSBvZiBjaGlsZHJlbiBpbiBZZWFyIDYgKGRlcml2ZWQgZnJvbSB0aGUgcG9zdGNvZGUgb2YgdGhlIHNjaG9vbCkgY2xhc3NpZmllZCBhcyBvdmVyd2VpZ2h0IGFuZCBvYmVzZSBjb21iaW5lZCwgYXMgYSBwZXJjZW50YWdlLlxcblxcbioqVGhlIFdlc3QgU3Vzc2V4IEFwcHJvYWNoKipcXG5cXG4gXFxuXFxuV2l0aGluIFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsLCB0aGUgSW50ZWdyYXRlZCBQcmV2ZW50aW9uIGFuZCBFYXJsaWVzdCBIZWxwIChJUEVIKSBzZXJ2aWNlIChDb3VuY2lsIGFuZCBIZWFsdGh5IENoaWxkIFByb2dyYW1tZSBzZXJ2aWNlIC0gSENQKSBhaW1zIHRvIHByZXZlbnQgYW5kIHJlZHVjZSBleGNlc3Mgd2VpZ2h0IHRocm91Z2ggYm90aCB1bml2ZXJzYWwgYW5kIHRhcmdldGVkIGFwcHJvYWNoZXMgYXQgY29tbXVuaXR5IGFuZCBpbmRpdmlkdWFsIGxldmVsLlxcblxcblRoZSB3b3JrIGJ5IElQRUggdG8gcmVkdWNlIGNoaWxkaG9vZCBvYmVzaXR5IGlzIGJlaW5nIGRldmVsb3BlZCBhcyBwYXJ0IG9mIGEgd2lkZXIgMC0xOS8yNSBpbnRlZ3JhdGVkIHNlcnZpY2Ugb2ZmZXIuIEV2aWRlbmNlIHN1Z2dlc3RzIHRoYXQgd2UgbmVlZCB0byB0cnkgYW5kIGZvY3VzIGVmZm9ydHMgb24gcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBhbmQgeW91bmcgcGVvcGxlIGJlY29taW5nIG92ZXJ3ZWlnaHQgKFN0ZWZhdGVyIGV0IGFsLCAyMDEzKS4gQSBNYWtpbmcgRXZlcnkgQ29udGFjdCBDb3VudCAoTUVDQykgYXBwcm9hY2ggd2lsbCBiZSB1c2VkIHRvIHByb21vdGUgaGVhbHRoeSBlYXRpbmcgYW5kIGxpZmVzdHlsZXMgY29uc2lzdGVudGx5IGluIGJvdGggdW5pdmVyc2FsIGFuZCB0YXJnZXRlZCB3b3JrIHdpdGggY2hpbGRyZW4gYW5kIGZhbWlsaWVzLlRoZSBtb2RlbCBiZWxvdyBwcmVzZW50cyB0aGUgb2ZmZXIgZnJvbSBJUEVIIHRvIGNoaWxkcmVuLCB5b3VuZyBwZW9wbGUgYW5kIGZhbWlsaWVzIGF0IGVhY2ggbGV2ZWwgb2Ygc2VydmljZSBhY3Jvc3MgdGhlIFdlc3QgU3Vzc2V4IGNvbnRpbnV1bSBvZiBuZWVkLiBPdGhlciBzdXBwb3J0aXZlIGNvbW11bml0eSBzZXJ2aWNlcyAvIG9yZ2FuaXNhdGlvbnMgYXJlIGFsc28gcmVmbGVjdGVkLlxcblxcbkNoYW5nZTRMaWZlXFxuXFxuQSBuZXcgQ2hhbmdlNCBMaWZlIGNhbXBhaWduIGxhdW5jaGluZyBpbiBKYW51YXJ5IDIwMTggYWltcyB0byBoZWxwIGZhbWlsaWVzIGNob29zZSBoZWFsdGhpZXIgc25hY2tzLiBJdCB3aWxsIGludHJvZHVjZSB0aGUgbmV3IHNpbXBsZSB0aXAgb2Yg4oCcTG9vayBmb3IgMTAwIGNhbG9yaWUgc25hY2tzLCB0d28gYSBkYXkgbWF44oCdVGhlIGNhbXBhaWduIHdpbGwgYmUgc3VwcG9ydGVkIGJ5IHRoZSBDaGFuZ2U0TGlmZSDigJwgRm9vZCBzY2FubmVyIEFwcOKAnSB3aGljaCB3aWxsIHNob3cgaG93IG11Y2ggc3VnYXIsIHNhbHQgYW5kIHNhdHVyYXRlZCBmYXQgaXMgaW5zaWRlIHNuYWNrIGZvb2RzIGFuZCBkcmlua3MgVGhpcyBhcHAgd2lsbCByZXBsYWNlIHRoZSBwcmV2aW91cyBCZSBGb29kIFNtYXJ0IGFwcCBhbmQgd2lsbCBwcm92aWRlIGNhbG9yaWUgaW5mb3JtYXRpb24sIHdpbGwgaGF2ZSBhbiBpbXByb3ZlZCByZXN1bHRzIGxheW91dCBhbmQgY29uc3RhbnRseSBpbXByb3ZpbmcgcHJvZHVjdCBkYXRhLlxcblxcblB1YmxpYyBIZWFsdGggaXMgd29ya2luZyB3aXRoIGl0cyBjb2xsZWFndWVzIGluIFdlc3QgU3Vzc2V4IExpYnJhcmllcyBhbmQgbGVpc3VyZSBjZW50cmVzIGZyb20gdGhlIGVuZCBvZiBKYW51YXJ5IHRvIHByb21vdGUgdGhlIEZhbWlseSBTbmFjayBjaGFsbGVuZ2UuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAyIC0gU2VwdGVtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuRWF0IFJpZ2h0IFN0YXkgQnJpZ2h0ICggRVJTQikgaXMgZGVsaXZlcmVkIHRvIHNjaG9vbHMgaW4gV2VzdCBTdXNzZXggYXMgcGFydCBvZiB0aGUgc2Nob29sIG1lYWwgY29udHJhY3Qgd2l0aCBDaGFydHdlbGxzLiBJdCBhaW1zIHRvIGluY3JlYXNlIHVwdGFrZSBvZiB0aGUgc2Nob29sIG1lYWxzIGFuZCBpbXBhY3QgdXBvbiBvYmVzaXR5IHJhdGVzIGFuZCB0aGUgYXR0YWlubWVudCBnYXAgYmV0d2VlbiB0aGUgbW9zdCBhZHZhbnRhZ2VkIGFuZCBkaXNhZHZhbnRhZ2VkLiBJdCBpcyBhIEZ1biBpbiB0byBGb29kIHByb2dyYW1tZSB0YWNrbGluZyBudXRyaXRpb24gZWR1Y2F0aW9uIHdpdGggYSB3aG9sZSBzY2hvb2wgYXBwcm9hY2guXFxuXFxuVGhlIGZpcnN0IHllYXIgb2YgdGhlIHByb2dyYW1tZSBpbiBXZXN0IFN1c3NleCBoYXMgc2VlbiAzMiBzY2hvb2xzIGVuZ2FnZSB3aXRoIEVSU0Igd2l0aCA2OCBkaWZmZXJlbnQgd29ya3Nob3Agc2Vzc2lvbnMgcnVuLiBUd2VsdmUgc2Nob29scyBoYXZlIGhhZCByZXBlYXQgdmlzaXRzLiBBcHByb3ggMSw5MDQgY2hpbGRyZW4gaGF2ZSB0YWtlbiBwYXJ0IGluIHRoZSB3b3Jrc2hvcHMgYW5kIHBhcmVudCBldmVudHMgaGF2ZSBhbHNvIGJlZW4gaGVsZCA1NyB0aW1lcy5cXG5cXG5GZWVkYmFjayBmcm9tIHRoZSB3b3Jrc2hvcHMgaW4gb25lIHNjaG9vbCBpcyBiZWxvdy5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipSZWNlcHRpb24gVGVhY2hlcioqIOKAkyDigJhXZSBpbiBwYXJ0aWN1bGFyIGhhZCBhIHZlcnkgcG9zaXRpdmUgZXhwZXJpZW5jZSBmb3Igb25lIGJveSB3aG8gaGFzIGFuIGlzc3VlIHdpdGggZWF0aW5nIHRoYXQgY29tZXMgd2l0aCBhc3NvY2lhdGVkIGhlYWx0aCBpc3N1ZXMuIEhlIHdhcyBoYXBweSB0byB0cnkgc29tZSBvZiB0aGUgZnJ1aXQgYW5kIHNhbGFkIHRoYXQgaGUgcHJldmlvdXNseSBoYXMgbm90IHdhbnRlZCB0byB0cnkuIEFzIGEgd2hvbGUgY2xhc3Mgd2Ugd2VyZSB2ZXJ5IHByb3VkIG9mIHRoaXMgYWNoaWV2ZW1lbnQgYW5kIGhlIHJlY2VpdmVkIGEgJ3dvdycgbW9tZW50IGNlcnRpZmljYXRlIHRvIHRha2UgaG9tZSB0byBoaXMgbXVtIHdpdGggcGhvdG9zIG9mIHdoYXQgaGUgaGFkIGRvbmUgdGhhdCBkYXkuIFdlIGZlZWwgaGUgd2FzIGhhcHB5IHRvIHRyeSB0aGVzZSBmb29kcyBhcyBpdCB3YXMgZG9uZSBpbiBhIHJlbGF4ZWQgYW5kIGZ1biBtYW5uZXIuIEhlIGhhcyBub3cgYmVlbiBhIGxpdHRsZSBtb3JlIHdpbGxpbmcgdG8gdHJ5IG1vcmUgbmV3IGZvb2RzIGluIGNsYXNzIGF0IHNuYWNrIHRpbWUu4oCZXFxuXFxuIFxcblxcbioqUmVjZXB0aW9uIFRlYWNoZXIqKiDigJMg4oCYVGhlIGNoaWxkcmVuIGhhZCBhIGxvdmVseSB0aW1lIHdpdGggeW91cnNlbGYgYW5kIHlvdXIgY29sbGVhZ3VlIGxlYXJuaW5nIGFib3V0IGhlYWx0aHkgZWF0aW5nIGFuZCB0aGUgb3Bwb3J0dW5pdHkgZm9yIHNvbWUgZm9vZCB0YXN0aW5nLiBUaGlzIHdhcyBhIGxvdmVseSBleHBlcmllbmNlIGZvciB0aGUgY2hpbGRyZW4gdG8gdHJ5IGEgdmFyaWV0eSBvZiBmcnVpdCBvciBzYWxhZCB0aGF0IHRoZXkgbWF5IG5vdCBoYXZlIHRyaWVkIGJlZm9yZS7igJkgLVxcblxcbiBcXG5cXG4qKlllYXIgMiBUZWFjaGVyKiog4oCTIOKAmEl04oCZZCBiZSB3b25kZXJmdWwgdG8gaGF2ZSB5b3UgaW4gYWdhaW4gZm9yIGEgZGlmZmVyZW50IHRvcGljIHdpdGggdGhlIGNoaWxkcmVuLiBJIGtub3cgdGhhdCBtYW55IGluIG15IGNsYXNzIGRvIHN0cnVnZ2xlIHRvIGVhdCB0aGUgdmVnZXRhYmxlcyBidXQgdGhleSBhbHNvIG9ubHkga25vdyBhYm91dCB0aGUgdHlwaWNhbCB2ZWdldGFibGVzLiBUaGV5IHdvdWxkbuKAmXQga25vdyB3aGF0IGEgcmh1YmFyYiBpcyBmb3IgZXhhbXBsZSBhbmQgaXQgc2VlbXMgc3VjaCBhIHNoYW1lLuKAmVxcblxcbioqUGFyZW50Kiog4oCTIOKAmEnigJltIGFjdHVhbGx5IHJlYWxseSBzdXJwcmlzZWQgdGhhdCB0aGVzZSBjb250YWluIHRoYXQgbXVjaCBzdWdhci4gV2h5IGlzIGl0IGFsbG93ZWQ/IE15IGh1c2JhbmQgd2lsbCBiZSBob3JyaWZpZmVkLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzVDQUJDRkExLTg3RkUtNDIyMy1CMkFCLTY3MTc2OTc2RUREQlwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzM5OUREQ0JGLTQ2MDctNEJBQy05NzE3LUY5ODYyODRCMkM0QVwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgRWF0IFJpZ2h0IFN0YXkgUmlnaHQgd29ya3Nob3BzIGluIFdlc3QgU3Vzc2V4IHN1cHBvcnQgdGhlIGNvdW50eeKAmXMgc3VnYXIgcmVkdWN0aW9uIHByb2dyYW1tZS5cXG5cXG4qKlllYXIgNSBQdXBpbCoq4oCTIOKAmEkgdGhpbmsgSSBlYXQgdG9vIG11Y2ggY2hvY29sYXRlIGFmdGVyIEVhc3RlciBJIHdhbnQgdG8gdHJ5IHN0b3BwaW5nIGVhdGluZyBpdCBidXQgSSB3aWxsIGhhdmUgYWxsIG15IGVhc3RlciBlZ2dz4oCZLiBBZnRlciBkaXNjdXNzaW9uIHdpdGggdGhlIEVSU0IgY29vcmRpbmF0b3IgYW5kIGNsYXNzbWF0ZXMgdGhlIGNoaWxkIG9wdGVkIHRvIHRyeSBnaXZpbmcgdXAgY2hvY29sYXRlIGZvciBsZW50LlxcblxcbioqWWVhciA1IFRlYWNoZXIqKuKAk+KAmEl04oCZcyBncmVhdCB0byB0ZWFjaCB0aGVtIGFsbCBhYm91dCB3aGF0IGNhbiBoYXBwZW4gbGF0ZXIgb24gaW4gbGlmZSB3aXRoIGhlYXJ0IGRpc2Vhc2UgYW5kIGRpYWJldGVzLiBUaGV5IG9mdGVuIGp1c3QgdGhpbmsgYWJvdXQgdGhlIGVmZmVjdCBvbiB0aGVpciB0ZWV0aCBiZWNhdXNlIGl04oCZcyBzb21ldGhpbmcgdGhleSBjYW4gcGh5c2ljYWxseSBzZWUgYW5kIHByb2JhYmx5IGhhdmUgc2VlbiBvbiBjaGlsZHJlbiB0aGVpciBhZ2Uu4oCZXFxuXFxuKipZZWFyIDYgUHVwaWwqKuKAkyDigJhNeSBkYWQgZHJpbmtzIHRoaXMgcXVpdGUgYSBsb3QgKE1vbnN0ZXIgRW5lcmd5IERyaW5rKSBhbmQgaXTigJlzIHR3aWNlIHRoZSBhbW91bnQgb2Ygc3VnYXIgaGXigJlzIGFsbG93ZWQuIEnigJltIGdvaW5nIHRvIHRlbGwgaGlt4oCZLlxcblxcbioqWWVhciA1IFB1cGlsKirigJMg4oCYWW91IHNhaWQgdG9tYXRvIGtldGNodXAgd2FzIHJlYWxseSBzdWdhcnk7IGlzIGl0IHdvcnNlIHRoYW4gdGhlc2UgZHJpbmtzP+KAmSBFUlNCIGNvb3JkaW5hdG9yIGVuY291cmFnZWQgdGhlIHB1cGlsIHRvIGxvb2sgYXQgdGhlIGxhYmVscyBvZiBoaXMgYm90dGxlIGF0IGhvbWUuLiDvgrdcXG5cXG4qKlRlYWNoaW5nIEFzc2lzdGFudCoq4oCTIOKAmEkgaGF2ZSBvbmUgb2YgdGhvc2UgbWlsa3NoYWtlcyBpbiBteSBmcmlkZ2UuIEkgbWlnaHQgdGhyb3cgaXQgb3V0IG5vd+KAmS4gRnV0dXJlIGNvbnZlcnNhdGlvbnMgd2l0aCBUQSByZXZlYWxlZCB0aGUgY2hpbGRyZW4gcmVtaW5kZWQgdGhlIFRBIHRvIHRocm93IG91dCB0aGUgZHJpbmsuXFxuXFxuTGl2aW5nIFN0cmVldHMgZGVsaXZlciBXYWxrIE9uY2UgYSBXZWVrIHByb2dyYW1tZXMgaW4gc2Nob29scyBpbiBXZXN0IFN1c3NleC4gVGhleSBoYXZlIGEgbGlzdCBvZiBzY2hvb2xzIHRvIHRhcmdldCwgdGhhdCBmaXQgd2l0aCB0aGUgV2VzdCBTdXNzZXggU3RyYXRlZ2ljIGRldmVsb3BtZW50IHNpdGVzLCBwbHVzIHB1YmxpYyBoZWFsdGggcHJpb3JpdHkgYXJlYXMuIDUgb3V0IG9mIDEwIG5ldyBwcmltYXJ5IHNjaG9vbHMgYXJlIGVucm9sbGVkIHRvIFdPVywgdGhlIHllYXItcm91bmQgd2FsayB0byBzY2hvb2wgY2hhbGxlbmdlLlxcblxcblRoZXNlIGFyZTpcXG5cXG5DaGlkaGFtIFBhcm9jaGlhbCBQcmltYXJ5XFxuXFxuQXNodXJzdCBXb29kIFByaW1hcnksIEVhc3QgR3JpbnN0ZWFkXFxuXFxuRHVycmluZ3RvbiBKdW5pb3IgU2Nob29sXFxuXFxuU2hlZGRpbmdkZWFuIFByaW1hcnksIEJ1cmdlc3MgSGlsbFxcblxcbkhlZW5lIFByaW1hcnkgU2Nob29sLCBXb3J0aGluZ1xcblxcbuKApmFsbCBpZiB3aGljaCBhcmUgb24gdGhlIHRhcmdldGVkIGxpc3Qgb2YgZXhwYW5kaW5nIHNjaG9vbHMsIG9yIGhhdmUgd29ya3Mgc2NoZWR1bGVkLiBGb3VyIG9mIHRoZXNlIHNjaG9vbHMgaGF2ZSBsYXVuY2hlZCBhbmQgYXJlIHVzaW5nIFRyYXZlbCBUcmFja2VyIHRvIGxvZyB0aGVpciBkYWlseSBqb3VybmV5cyB0byBzY2hvb2wuXFxuXFxuMyBzdHJlZXQgYXVkaXRzIGFyZSBwbGFubmVkLCAyIG9mIHRoZW0gd2l0aCBQYXJrbGFuZHMgUmVzaWRlbnRzIEFzc29jaWF0aW9uIGluIENoaWNoZXN0ZXIsIGEgbGFyZ2UgaG91c2luZyBlc3RhdGUgd2l0aCBhcm91bmQgMSw1MDAgcmVzaWRlbmNlcywgb24gdGhlIGVkZ2Ugb2YgdGhlIGNpdHkgY2VudHJlIHdpdGggMiBwcmltYXJ5IHNjaG9vbHMsIGEgc2Vjb25kYXJ5IHNjaG9vbCwgYW4gTkhTIGRvY3RvcnMgc3VyZ2VyeSBhbmQgYSBwYXJhZGUgb2Ygc2hvcHMgd2l0aGluIGl0cyBib3VuZGFyeS4gV2Ugd2lsbCBydW4gMiBhdWRpdHMsIGF0IGRpZmZlcmVudCB0aW1lcyBvZiB5ZWFyLCBhbmQgYXJlIHRhbGtpbmcgdG8gQmlzaG9wIEx1ZmZhIFNjaG9vbCwgUGFya2xhbmRzIENvbW11bml0eSBQcmltYXJ5IGFuZCBDZW50cmFsIFNjaG9vbCBhYm91dCB0aGVpciBwb3RlbnRpYWwgaW52b2x2ZW1lbnQgaW4gdGhlIGF1ZGl0IHByb2Nlc3MuIFdlIGhvcGUgdG8gc2ltdWx0YW5lb3VzbHkgaW52b2x2ZSByZXNpZGVudHMgYXJvdW5kIHRoZSBlc3RhdGUgd2hvIHdpbGwgdW5kZXJ0YWtlIHRoZWlyIG93biDigJhzdHJlZXQgc2NhbGUgc3VydmV5c+KAmSB0byBlbnN1cmUgdGhhdCB0aGUgYXVkaXQgcHJvY2VzcyBpcyBhcyBpbmNsdXNpdmUgYW5kIGhvbGlzdGljIGFzIHBvc3NpYmxlLiBUaGUgUmVzaWRlbnRzIEFzc29jaWF0aW9uIHdpbGwgdGhlbiBiZSBhYmxlIHRvIG1hcCB0aGUgcmVzdWx0cyB0byBpbmZvcm0gcHJpb3JpdGllcyBmb3IgdGhlIGVzdGF0ZS4gVGhpcyB3aWxsIGJlIGEgdHJpYWwgYXBwcm9hY2ggZm9yIExpdmluZyBTdHJlZXRzIGFuZCB3aWxsIGJlIHZlcnkgaW50ZXJlc3RpbmcgdG8gc2VlIHRoZSBvdXRjb21lcyBhbmQgaG93IGl0IGNhbiBldm9sdmUuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcblN1Z2FyIHJlZHVjdGlvbiBwcm9ncmFtbWUgLSBGdXJ0aGVyIHN1Z2FyIHJlZHVjdGlvbiBoYXMgb2NjdXJyZWQgaW4gdGhlIHNjaG9vbCBtZWFscyBwcm92aWRlZCB0aHJvdWdoIHRoZSBDaGFydHdlbGwgY29udHJhY3QgYW5kIHRoZXkgbm93IGNvbnRhaW4gNjUlIGxlc3Mgc3VnYXIgdGhhbiB0aGV5IGRpZCB0d28gYW5kIGEgaGFsZiB5ZWFycyBhZ28uIEluIHRvdGFsIDMwLDAwMCBXZXN0IFN1c3NleCBjaGlsZHJlbiBwZXIgZGF5IGFyZSBiZW5lZml0aW5nLiBUaGUgZGFpbHkgc3VnYXIgY29uc3VtcHRpb24gaGFzIHJlZHVjZWQgZnJvbSB0aGUgMTguNWcgdG8gNi42ZyBwZXIgY2hpbGQuXFxuXFxuVGhlIEV4ZWN1dGl2ZSBDaGlsZCBPYmVzaXR5IFRhc2sgYW5kIEZpbmlzaCBHcm91cCAoVEZHKSB3aGljaCBjb21wbGV0ZWQgaW4gTWFyY2ggMjAxNyBtYWRlIGEgbnVtYmVyIG9mIHJlc29sdXRpb25zIGluY2x1ZGluZzotXFxuXFxuMS4gRGV2ZWxvcCBhIENvdW50eSBDb3VuY2lsIGNoYXJ0ZXIgc3VwcG9ydGluZyBzaWdudXAgdG8gdGhlIG5hdGlvbmFsIGhlYWx0aHkgcmF0aW5nIG9mIHNjaG9vbHMgc2NoZW1lLCBpbmNsdWRpbmcgYSBsb2NhbCBhd2FyZCBzY2hlbWUgdG8gZW5jb21wYXNzIGFsbCBXZXN0IFN1c3NleCBudXJzZXJpZXMsIHNjaG9vbHMgKCBpbmNsdWRpbmcgc3BlY2lhbCBzY2hvb2xzKSwgbG9va2VkIGFmdGVyIGNoaWxkcmVuLGNoaWxkcmVuIGFuZCBmYW1pbHkgY2VudHJlcyBhbmQgaW5jbHVkaW5nIGxlaXN1cmUgY2VudHJlcyB3aGVyZSBhcHByb3ByaWF0ZS5cXG5cXG4xLiBUaGF0IHdoZW4gdGhleSBiZWNvbWUgYXZhaWxhYmxlLCB0aGUgbmF0aW9uYWwgZ3VpZGVsaW5lcyBmb3IgaW1wbGVtZW50YXRpb24gb2YgaGVhbHRoaWVyIGZvb2QgaW4gbGVpc3VyZSBjZW50cmVzIGFyZSBwcm92aWRlZCB0byB0aGUgQ2FiaW5ldCBNZW1iZXIgYW5kIGd1aWRhbmNlIGFuZCBzdXBwb3J0IGlzIG9mZmVyZWQgdG8gdGhlIERpc3RyaWN0IGFuZCBCb3JvdWdocywgYXMgY29tbWlzc2lvbmVycyBvZiBsZWlzdXJlLCB0byBoZWxwIHRoaXMgc2VjdG9yIGFjaGlldmUgdGhlc2Ugc3RhbmRhcmRzLlxcblxcbjEuIFRvIG1haW50YWluIGEgbG9uZyB0ZXJtIGNvbW1pdG1lbnQgdG8gdGhlIENvdW50eSBDb3VuY2lsIENoYXJ0ZXIgaW5jbHVkaW5nIGEg4oCcaGVhbHRoIGltcGFjdCBhc3Nlc3NtZW504oCddG8gZW5zdXJlIHRoYXQgYW55IGNoYW5nZXMgdG8gcGxhbm5pbmcgYW5kIHBvbGljeSB3aXRoaW4gZWFjaCBlc3RhYmxpc2htZW50LCBjb25zaWRlcnMgdGhlIHdpZGVyIGltcGFjdCBvbiB0aGUgaGVhbHRoIGFuZCB3ZWxsYmVpbmcgb2YgeW91bmcgcGVvcGxlLlxcblxcbjEuIFRoZSBQdWJsaWMgSGVhbHRoIFRlYW0gYXJyYW5nZSBmb3IgYSBncm91cCBvZiB5b3VuZyBwZW9wbGUgdG8gdGVzdCBhbmQgY29tbWVudCBvbiB0aGUgUEhFL1NBUEhOQSBhcHAgb25jZSBpdCBpcyBsYXVuY2hlZCwgYWxvbmdzaWRlIG90aGVyIGFwcHMgd2hpY2ggYWRkcmVzcyBoZWFsdGh5IGVhdGluZyBoYWJpdHMgYW5kIHBoeXNpY2FsIGFjdGl2aXR5LCB0byBldmFsdWF0ZSB3aGV0aGVyIG9uZSBzaG91bGQgYmUgcmVjb21tZW5kZWQgYnkgdGhlIFRlYW0gdG8gV2VzdCBTdXNzZXggU2Nob29scy5cXG5cXG4xLiBUaGUgUHVibGljIEhlYWx0aCBUZWFtIGNvb3JkaW5hdGUgY29tbXVuaWNhdGlvbiBhbmQgY2xvc2VyIHdvcmtpbmcgd2l0aCBzY2hvb2xzIHRvIGhlbHAgaW5jcmVhc2UgZGVtYW5kIGZvciB0aGUgYXZhaWxhYmxlIEJpa2UgYWJpbGl0eSBDb3Vyc2VzIGFuZCBsaWFpc2Ugd2l0aCBvdGhlciBDb3VudHkgQ291bmNpbCBEZXBhcnRtZW50cyBvbiBhIG1ldGhvZCBmb3IgZXZhbHVhdGluZyB0aGUgaW50ZXJ2ZW50aW9uLCBzaG91bGQgdGhlIHJlc291cmNlcyBiZWNvbWUgYXZhaWxhYmxlLlxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgNCAtIE1hcmNoIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuTkhTIERpZ2l0YWwgcHVibGlzaGVkIHRoZSBtb3N0IHJlY2VudCByZWxlYXNlIG9mIHRoZSBOQ01QIGluIE5vdmVtYmVyIDIwMTYuIFRoZXNlIHJlc3VsdHMgYXJlIGZvciB0aGUgMjAxNS8xNiBhY2FkZW1pYyB5ZWFyLlxcblxcbkluIFdlc3QgU3Vzc2V4IDMwLjQlIG9mIHllYXIgNiBjaGlsZHJlbiBhcmUgbWVhc3VyZWQgYXMgb3ZlcndlaWdodCBvciBvYmVzZS4gMS4xJSBvZiB0aGlzIGFnZSBncm91cCBpcyB1bmRlcndlaWdodCwgcmVzdWx0aW5nIGluIDY4LjUlIG9mIGNoaWxkcmVuIGJlaW5nIGEgaGVhbHRoeSB3ZWlnaHQuIFRoZSBwZXJjZW50YWdlIG9mIGNoaWxkcmVuIHdpdGggYSBoZWFsdGh5IHdlaWdodCBpcyBoaWdoZXIgaW4gV2VzdCBTdXNzZXggdGhhbiBFbmdsYW5kLiBUaGVyZSBpcyBubyBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2UgZmlndXJlcyBhbmQgdGhvc2Ugb2YgMjAxNC8xNS5cXG5cXG5UaGlzIHBsYWNlcyB1cyBhdCBhbWJlciBjb21wYXJlZCB0byB0YXJnZXQsIGF0IHllYXIgZW5kLCBhcyBwcmVkaWN0ZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB5ZWFyLlxcblxcbioqRmluYWwgZmlndXJlcyBmcm9tIHRoZSBzcGVjaWFsaXN0IHNlcnZpY2UgKFdlaWdodCBNYW5hZ2VtZW50IENlbnRyZSkgZm9yIDIwMTYvMjAxNyBhcmUgYXMgZm9sbG93cyoqXFxuXFxuKiBUd28gaHVuZHJlZCBhbmQgZmlmdGVlbiBmYW1pbGllcyBlbnJvbGxlZCBvbiB0aGUgQWxpdmUgTiBLaWNraW5nIHByb2dyYW1tZSBmb3IgY2hpbGRyZW4uXFxuXFxuKiBKdXN0IG92ZXIgODAlIGNvbXBsZXRlZCB0aGUgcHJvZ3JhbW1lIGFuZCA0OCUgbWFpbnRhaW5lZCBvciByZWR1Y2VkIHRoZWlyIEJNSS5cXG5cIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkNoYW5nZTRMaWZlIEJlIEZvb2QgU21hcnQgQ2FtcGFpZ24qKlxcblxcbldlc3QgU3Vzc2V4IFB1YmxpYyBIZWFsdGggRGlyZWN0b3JhdGUgc3VwcG9ydHMgdGhlIG5hdGlvbmFsIENoYW5nZTRMaWZlIGNhbXBhaWduLCB3aGljaCBsYXVuY2hlZCBCZSBGb29kIFNtYXJ0IGluIEphbnVhcnkuIFRoaXMgY2FtcGFpZ24gaGlnaGxpZ2h0cyB0aGUgc3VycHJpc2luZyBhbW91bnQgb2Ygc3VnYXIsIHNhdHVyYXRlZCBmYXQgYW5kIHNhbHQgZm91bmQgaW4gZXZlcnlkYXkgZm9vZCBhbmQgZHJpbmsuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqQmUgRm9vZCBTbWFydCBUZWFtIHZpc2l0ZWQgQ3Jhd2xleSEqKlxcblxcblRoZSBQdWJsaWMgSGVhbHRoIEVuZ2xhbmQgKFBIRSkgQmUgRm9vZCBTbWFydCBUZWFtIHZpc2l0ZWQgVGVzY28gRXh0cmEgaW4gSGF6ZWx3aWNrLCBDcmF3bGV5IG9uIEZyaWRheSwgMTd0aCBNYXJjaCAyMDE3IHRvIHJhaXNlIGF3YXJlbmVzcyBvZiB0aGUgQmUgRm9vZCBTbWFydCBjYW1wYWlnbiBhbmQgdG8gZW5jb3VyYWdlIHNob3BwZXJzIHRvIGRvd25sb2FkIHRoZSBmcmVlIEJlIEZvb2QgU21hcnQgYXBwLCB3aGljaCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgaVR1bmVzIHN0b3JlIG9yIEdvb2dsZSBQbGF5LiBUaGUgdGVhbSBwcm92aWRlZCBhZHZpY2UgdG8gc2hvcHBlcnMgYWJvdXQgdGhlIGFtb3VudCBvZiBzdWdhciwgc2F0dXJhdGVkIGZhdCBhbmQgc2FsdCBmb3VuZCBpbiBwb3B1bGFyIGZhbWlseSBmb29kcywgYW5kIGluIHNvbWUgaW5zdGFuY2VzLCBzaG9wcGVycyBkZWNpZGVkIHRvIGV4Y2hhbmdlIHRoZWlyIHB1cmNoYXNlcyBmb3IgaGVhbHRoaWVyIG9wdGlvbnMuIFRoZSBzdGFuZCB3YXMgaW4gYW4gYXJlYSBvZiBoaWdoIGZvb3RmYWxsIGluIHRoZSBzdG9yZSBhbmQgdGhlIHRlYW0gaGFkIGdpdmVuIG91dCBvdmVyIDgwMCBwYWNrcyBieSBsdW5jaCB0aW1lLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkhvcnNoYW0gSnVuaW9yIENpdGl6ZW5zIEV2ZW50KipcXG5cXG5NZW1iZXJzIG9mIHRoZSBQdWJsaWMgSGVhbHRoIFRlYW0gYW5kIEhvcnNoYW0gV2VsbGJlaW5nIGxlZCDigJhCZSBGb29kIFNtYXJ04oCZIENoYWxsZW5nZSwgYXQgdGhpcyBldmVudCB3aGljaCB0b29rIHBsYWNlIGluIGVhcmx5IEFwcmlsLiBUaGUgYW5udWFsIGV2ZW50IGFpbXMgdG8gdGVhY2ggZXNzZW50aWFsIGxpZmUgc2tpbGxzIHRvIG92ZXIgMTIwMCBwcmltYXJ5IHNjaG9vbCBjaGlsZHJlbiBhZ2VkIG5pbmUgdG8gZWxldmVuIHllYXJzIG9sZCB3aG8gYXR0ZW5kIHNjaG9vbHMgd2l0aGluIHRoZSBIb3JzaGFtIGRpc3RyaWN0LCB0aHJvdWdoIGEgbnVtYmVyIG9mIGZ1biBhbmQgdGhvdWdodC1wcm92b2tpbmcgc2NlbmFyaW9zLlxcblxcblwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0JCNDAxNzVGLTM5NDItNEU1MC04NjJCLTA5MTg4MzVGQzk3Q1wifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8xQjVBOUNDMy0yNUM1LTQzM0YtQkMyRC03RUM4RDk3NzMzQTVcIn1dXX0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy84MjU4MEM3RS0xMjVCLTRDRDMtQjgzQS0yNjkyRDJEREUwN0RcIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9BNzJBMjcwQS0wRUI0LTQzMEItQUFCNi04N0FBRkFDNzk0NDdcIn1dXX0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMgLSBEZWNlbWJlciAyMDE2KipcXG5cXG4tIC0gLVxcblxcbk5IUyBEaWdpdGFsIHB1Ymxpc2hlZCB0aGUgbW9zdCByZWNlbnQgcmVsZWFzZSBvZiB0aGUgTkNNUCBpbiBOb3ZlbWJlciAyMDE2LiBUaGVzZSByZXN1bHRzIGFyZSBmb3IgdGhlIDIwMTUvMTYgYWNhZGVtaWMgeWVhci4gSW4gV2VzdCBTdXNzZXggMzAuNCUgb2YgeWVhciA2IGNoaWxkcmVuIGFyZSBtZWFzdXJlZCBhcyBvdmVyd2VpZ2h0IG9yIG9iZXNlLiAxLjElIG9mIHRoaXMgYWdlIGdyb3VwIGlzIHVuZGVyd2VpZ2h0LCByZXN1bHRpbmcgaW4gNjguNSUgb2YgY2hpbGRyZW4gYmVpbmcgYSBoZWFsdGh5IHdlaWdodC4gVGhlIHBlcmNlbnRhZ2Ugb2YgY2hpbGRyZW4gd2l0aCBhIGhlYWx0aHkgd2VpZ2h0IGlzIGhpZ2hlciBpbiBXZXN0IFN1c3NleCB0aGFuIEVuZ2xhbmQuIFRoZXJlIGlzIG5vIHNpZ25pZmljYW50IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVzZSBmaWd1cmVzIGFuZCB0aG9zZSBvZiAyMDE0LzE1LlRoaXMgcGxhY2VzIHVzIGF0IGFtYmVyIGNvbXBhcmVkIHRvIHRhcmdldCwgYXQgeWVhciBlbmQsIGFzIHByZWRpY3RlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHllYXIuIFRoZSBwcmV2YWxlbmNlIG9mIG9iZXNpdHkgd2FzIHNpZ25pZmljYW50bHkgbG93ZXIgaW4gSG9yc2hhbSAoMTEuNyUpIGFuZCBNaWQgU3Vzc2V4ICgxMS45JSkgdGhhbiBhbGwgb3RoZXIgbG9jYWwgYXV0aG9yaXRpZXMgaW4gV2VzdCBTdXNzZXguIENyYXdsZXkgaXMgdGhlIGFyZWEgd2l0aCBncmVhdGVzdCBvYmVzaXR5IHByZXZhbGVuY2UgaW4gV2VzdCBTdXNzZXggKDIxLjclKS5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQUZDRDhEMzEtNjk0OC00MUFCLTkyRjEtQzc3NjFGMzlDN0RCXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqRnVydGhlciBJbmZvcm1hdGlvbioqXFxuXFxuIyBBbGl2ZSBOIEtpY2tpbmdcXG5cXG5UaGUgV2VpZ2h0IE1hbmFnZW1lbnQgQ2VudHJlIGhhcyBjb250aW51ZWQgdG8gZGVsaXZlciBBbGl2ZSBOIEtpY2tpbmcgd2VpZ2h0IG1hbmFnZW1lbnQgcHJvZ3JhbW1lIHRvIGNoaWxkcmVuIGFuZCB5b3VuZyBwZW9wbGUgdGhyb3VnaG91dCB0aGUgeWVhci4gVG8gZGF0ZSAxNDAgZmFtaWxpZXMgaGF2ZSBlbmdhZ2VkIHdpdGggdGhlIHByb2dyYW1tZSwgd2l0aCBoYWxmIG9mIHRoZW0gcmVkdWNpbmcgb3IgbWFpbnRhaW5pbmcgdGhlaXIgd2VpZ2h0LiBUaGUgbWFqb3JpdHkgb2YgcmVmZXJyYWxzIGludG8gQWxpdmUgTiBLaWNraW5nIGNvbnRpbnVlIHRvIGNvbWUgZnJvbSB0aGUgc2Nob29sIHByb2dyYW1tZSBTVE9QLCBhbmQgc2Nob29sIG51cnNlcy5cXG5cXG5UZXN0aW1vbmlhbCBmcm9tIGEgbW90aGVyIG9mIGEgeW91bmcgcGVyc29uIHdobyBhdHRlbmRlZCBBbGl2ZSBOIEtpY2tpbmdcXG5cXG5fXFxcIlNpbmNlIGF0dGVuZGluZyB0aGUgQWxpdmUgbiBLaWNraW5nIHByb2dyYW1tZSBJIGhhdmUgZm91bmQgdGhhdCBhcyBhIHBhcmVudCBJIGhhdmUgbm90aWNlZCBhIGh1Z2UgZGlmZmVyZW5jZSBpbiBteSBkYXVnaHRlcnMgcGVyc29uYWxpdHkuIEJlZm9yZSB0aGUgY291cnNlIHNoZSBoYXRlZCBzY2hvb2wgYW5kIHdhcyBidWxsaWVkIGR1ZSB0byB3ZWlnaHQgcmVsYXRlZCBpc3N1ZXMuIFNoZSBzZWVtZWQgc28gdW5oYXBweSBJIHRvb2sgaGVyIHRvIHRoZSBEb2N0b3JzIGJlY2F1c2UgSSB0aG91Z2h0IHNoZSBtYXkgYmUgZGVwcmVzc2VkLiBTaW5jZSByZWd1bGFyIGV4ZXJjaXNlIGFuZCBsb3Npbmcgc29tZSBXZWlnaHQgdGhlcmUgaGFzIGJlZW4gYSBtYXNzaXZlIGRpZmZlcmVuY2UgaW4gaGVyIGJlaGF2aW91ciBhdCBzY2hvb2wgYW5kIGF0IGhvbWUuIEl0IHNlZW1zIGxpa2UgYSB3ZWlnaHQgaGFzIGJlZW4gbGlmdGVkLCBzaGUgaGFzIG1vcmUgZW50aHVzaWFzbSB0b3dhcmRzIGV4ZXJjaXNlLCBlYXRpbmcgYW5kIGV2ZW4gZ29pbmcgdG8gc2Nob29sLiBTaGUgdXNlZCB0byBsYXkgYXJvdW5kIGFuZCBkaWRuJ3Qgd2FudCB0byBsZWF2ZSB0aGUgaG91c2Ugbm93IGl0J3MgaGFyZCB0byBrZWVwIGhlciBpbmRvb3JzISBUaGlzIGhhcyBhbHNvIGhhZCBhIGtub2NrIGFmZmVjdCBpbnRvIG15IGxpZmUgYXMgYSBtdW0sIEkgYW0gbXVjaCBoYXBwaWVyLiBNeSBkYXVnaHRlciBpcyBoYXBweSBhZnRlciB3aGF0IHNlZW1zIGxpa2UgYSBsaWZldGltZSEgQWxvbmdzaWRlIHNpZGUgaGVscGluZyBoZXIgSSBoYXZlIGFsc28gZG9uZSBleHRyZW1lbHkgd2VsbCBhbmQgbG9zaW5nIDZrZ3MgaW4gOCB3ZWVrcyBhbmQgSSB3b3VsZCBoaWdobHkgcmVjb21tZW5kIHRoaXMgcHJvZ3JhbW1lIHRvIGFueSBraWRzIHN1ZmZlcmluZyBmcm9tIGJlaW5nIG92ZXJ3ZWlnaHQsIHNoZSBoYXMgbG9zdCAya2cuXFxcIl9cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyBCZSBGb29kIFNtYXJ0XFxuXFxuVGhlIFB1YmxpYyBIZWFsdGggRW5nbGFuZCAoUEhFKSBCRSBGb29kIFNtYXJ0IGNhbXBhaWduIGxhdW5jaGVkIG5hdGlvbmFsbHkgb24gM3JkIEphbnVhcnkgMjAxNywgd2l0aCB0aGUgbmV3cyBzdG9yaWVzIHRoYXQgY2hpbGRyZW4gYXJlIGVhdGluZyBtb3JlIHRoYW4gaGFsZiBvZiB0aGVpciBkYWlseSBzdWdhciBpbnRha2UgaW4gdGhlaXIgYnJlYWtmYXN0LlxcblxcbltodHRwOi8vd3d3LmJiYy5jby51ay9uZXdzL2hlYWx0aC0zODQ2Nzg2MV1bMF1cXG5cXG5UaGUgY2FtcGFpZ24gZmVlZGJhY2sgZnJvbSBQSEUgc2hvd2VkIHRoYXQgMTE1IG5ldyByZWdpc3RyYXRpb25zIGZyb20gV2VzdCBTdXNzZXggd2VyZSBsb2dnZWQgb250byB0aGUgQ2hhbmdlNExpZmUgd2Vic2l0ZSBkdXJpbmcgdGhlIGNhbXBhaWduIHBlcmlvZC4gMjQsMDUxIGVtYWlscyB3ZXJlIHNlbnQgZnJvbSBDaGFuZ2U0TGlmZSB0byBXZXN0IFN1c3NleCByZXNpZGVudHMgd2l0aCBhbiBhdmVyYWdlIDEyLjglIG9wZW4gcmF0ZS4gRnVydGhlciBjaGFuZ2VzIHRvIHByaW1hcnkgc2Nob29sIG1lYWxzIHByb3ZpZGVkIGJ5IENoYXJ0d2VsbHMgaGF2ZSByZXN1bHRlZCBpbiBtb3JlIHN1Z2FyIGJlaW5nIHJlbW92ZWQuXFxuXFxuWzBdOiBodHRwOi8vd3d3LmJiYy5jby51ay9uZXdzL2hlYWx0aC0zODQ2Nzg2MVwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9CRTZGQTQzNi1GQTAwLTQwQzQtQjVFRC0xMkE5Nzg4RTk0MTVcIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJQcm9tb3Rpb24gb2YgdGhlIFB1YmxpYyBIZWFsdGggRW5nbGFuZCBTdWdhciBTbWFydCBjYW1wYWlnbiBoYXMgaW5jcmVhc2VkIHRoZSBhd2FyZW5lc3Mgb2YgdGhlIG1lc3NhZ2VzIGFyb3VuZCBzdWdhciByZWR1Y3Rpb24sIGFuZCBhZHZpY2Ugb24gbG93ZXIgc3VnYXIgc3dhcHMuIEFkZGl0aW9uYWwgc2Nob29sIGJhc2VkIHN1Z2FyIHJlZHVjdGlvbiBkZWJhdGVzIGhhdmUgb2NjdXJyZWQgaW4gdGhlIENoaWNoZXN0ZXIgRGlzdHJpY3QuXFxuXFxuQSBwaWxvdCA2IHdlZWsgd2VpZ2h0IG1hbmFnZW1lbnQgcHJvZ3JhbW1lIGZvciBjaGlsZHJlbiB3aXRoIHNwZWNpYWwgZWR1Y2F0aW9uYWwgbmVlZHMgYW5kIGRpc2FiaWxpdGllcyBoYXMgcnVuIGluIE1pZCBTdXNzZXguIEF0IHRoZSBlbmQgb2YgdGhlIHByb2dyYW1tZSB0aGUgZml0bmVzcyBsZXZlbCBvZiB0aGUgeW91bmcgcGVvcGxlIGhhZCBpbmNyZWFzZWQuIHdlaWdodCBoYWQgYmVlbiBtYWludGFpbmVkLCBhbmQgdGhleSB3ZXJlIHJlcG9ydGluZyBjaGFuZ2VzIHRoYXQgdGhleSBoYWQgbWFkZSB0byB0aGVpciBmb29kIGludGFrZS5cXG5cXG5cIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy83NTFGM0FFMy1GOUEwLTRBOEMtODhFNy1DNjE3RENGMDZGQThcIn1dXX0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy85NDRDMkZEMS03QzU3LTRGMzktOEM2NS1BNTRFOEUyRUEwMUJcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiRWR1Y2F0aW9uYWwgc2Vzc2lvbnMgdG8gcHJpbWFyeSBjYXJlIHN0YWZmIGZyb20gQ29hc3RhbCBXZXN0IFN1c3NleCBDQ0cgaGF2ZSBiZWVuIGRlbGl2ZXJlZCBieSB0aGUgcHVibGljIGhlYWx0aCB0ZWFtIG9uIGlkZW50aWZpY2F0aW9uIG9mIG92ZXJ3ZWlnaHQgY2hpbGRyZW4gYW5kIHlvdW5nIHBlb3BsZS4gVGhlIHRlYW0gYWxzbyBkZWxpdmVyZWQgYSBzdWdhciByZWR1Y3Rpb24gZGlzcGxheSBpbiB0aGUgbWFya2V0IHBsYWNlIGF0IHRoZSBzYW1lIGV2ZW50IGF0dGVuZGVkIGJ5IG92ZXIgYSBodW5kcmVkIHByb2Zlc3Npb25hbHMuXFxuXFxuXCJ9XSxbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiQSBzY2hvb2wgYmFzZWQgY29tcGV0aXRpb24gdG8gZGVzaWduIGEgV2VzdCBTdXNzZXggc3VnYXIgcmVkdWN0aW9uIGxvZ28gd2FzIHdvbiBieSBhIHB1cGlsIGZyb20gU3RvcnJpbmd0b24gRmlyc3QgU2Nob29sLCBUaGUgd2lubmluZyBkZXNpZ24gaXMgc2hvd24gb24gdGhlIGxlZnQuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzEyQjBCQTdBLTE3OTAtNEJDNy1BMTQzLTMxOTNFODQ2ODQ0MFwifV1dfSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiMgQXdhcmRzXFxuXFxuV2VzdCBTdXNzZXggUHVibGljIEhlYWx0aCBhbmQgQ291bnR5IENhdGVyaW5nIHdvbiBhbiBhd2FyZCBmb3IgdGhlaXIgcG9zdGVyIHByZXNlbnRlZCB0aGUgbmF0aW9uYWwgUHVibGljIEhlYWx0aCBFbmdsYW5kIENvbmZlcmVuY2UgaW4gV2Fyd2ljayBlYXJseSBTZXB0ZW1iZXIgZm9yIHRoZWlyIHdvcmsgb24gcmVkdWNpbmcgc3VnYXIgaW4gc2Nob29sIG1lYWxzLiBUbyBkYXRlIHRoZSBlcXVpdmFsZW50IHdlaWdodCBvZiB0aHJlZSBMb25kb24gZG91YmxlIGRlY2tlciBidXNlcyBvZiBzdWdhciBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2VzdCBTdXNzZXggcHJpbWFyeSBzY2hvb2wgbWVhbHMgaW4gdGhlIGxhc3QgMjAgbW9udGhzLiBUaGlzIHdvcmsgaXMgY29udGludWluZyB3aXRoIENoYXJ0d2VsbHMtIHRoZSBzY2hvb2wgbWVhbCBwcm92aWRlci5cXG5cXG5cIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9EREE3MTFBQi1BQkFDLTQyREItOEI2Ni1EQzY3RTYyNjAzQkZcIn1dXX0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQkUwRDUzQzYtQTBGMi00MDI2LUE0QzMtNERBQjQwMUVENUNEXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiMgV2h5IFdlaWdodFxcblxcbkJlaW5nIG92ZXJ3ZWlnaHQgYXMgYSBjaGlsZCBpbmNyZWFzZXMgdGhlIHJpc2sgb2YgYmVpbmcgb3ZlcndlaWdodCBhcyBhbiBhZHVsdC4gSXQgYWxzbyBjYW4gYWZmZWN0IGEgY2hpbGTigJlzIGhlYWx0aCwgYWJpbGl0eSB0byB0YWtlIHBhcnQgaW4gYW4gbGl2ZWx5IGxpZmUgYW5kIHNjaG9vbCBwZXJmb3JtYW5jZS4gVG8gaGVscCBjaGlsZHJlbiBhbmQgZmFtaWxpZXMgdGhpbmsgYWJvdXQgdGhlaXIgZGlldCBhbmQgYmVpbmcgYWN0aXZlIHRoZXJlIGlzIGhlbHAgYW5kIHN1cHBvcnQgYXZhaWxhYmxlIGluIFdlc3QgU3Vzc2V4LiBUcmllZCBhbmQgdGVzdGVkIHByb2dyYW1tZXMgd2hpY2ggcHJvdmlkZSBhbiBlZmZlY3RpdmUgd2F5IHRvIG1hbmFnZSB3ZWlnaHQgYW5kIGVuY291cmFnZSBhZG9wdGluZyBoZWFsdGhpZXIgaGFiaXRzIGZvciBsaWZlIGFyZSBmdW5kZWQgYnkgV2VzdCBTdXNzZXggQ291bnR5IENvdW5jaWwuXFxuXFxuIFxcblxcbkZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIGNhbGwgdGhlIFdoeVdlaWdodCBoZWxwbGluZSBvbiAwMzAwIDEyMyAwODkyLlxcblxcblt3d3cud2h5d2VpZ2h0d2VzdHN1c3NleC5jby51a11bMF1cXG5cXG5bMF06IGh0dHA6Ly93d3cud2h5d2VpZ2h0d2VzdHN1c3NleC5jby51a1wifV0sXCJ1c2VfY3VzdG9tX3RpdGxlXCI6dHJ1ZSxcImN1c3RvbV90aXRsZVwiOlwiSW5jcmVhc2UgdGhlIG51bWJlciBvZiBjaGlsZHJlbiB3aXRoIGhlYWx0aHkgd2VpZ2h0IGluIHRoZWlyIGxhc3QgeWVhciBvZiBwcmltYXJ5IHNjaG9vbFwiLFwiaWNvblwiOlwiY3Jvc3NoYWlyXCIsXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiVGhpcyBnb2FsIGlzIG1lYXN1cmVkIGJ5IHRyYWNraW5nIENoaWxkcmVuJ3MgSGVhbHRoeSBXZWlnaHQgaW4gcGVyY2VudGFnZS5cIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxMy0wNC0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiIlIiwidGFyZ2V0Ijo3MC40LCJ0YXJnZXRfdHlwZSI6ImFic29sdXRlIiwidGFyZ2V0X2RlbHRhIjowLCJ0YXJnZXRfZGVsdGFfaXNfcGVyY2VudCI6ZmFsc2UsImJhc2VsaW5lIjo3MC40LCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6ImZnZ3ota3dlcSJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6MyxcInllYXJcIjoyMDEzfSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9LFwiYWN0aW9uX3R5cGVcIjpcImluY3JlYXNlXCIsXCJtYWludGFpbl90eXBlXCI6XCI+XCJ9LFwiYmFzZWxpbmVcIjp7XCJzcXVpc2h5XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjozLFwieWVhclwiOjIwMTV9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE2fX0sXCJzdGFydFwiOlwiMjAxNS0wNC0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNi0wMy0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XSxcXFwidmFsdWVUeXBlXFxcIjpcXFwib25lXFxcIn19XCIsXCJkYXRhc2V0XCI6XCJxcW56LWYyOWhcIixcImNvbXB1dGVcIjp7XCJhZ2dyZWdhdGlvbl9mdW5jdGlvblwiOlwiYXZlcmFnZVwifSxcImNvbHVtbjFcIjpcImFjdHVhbFwiLFwiZGF0ZV9jb2x1bW5cIjpcImRhdGVcIixcImRhdGFzZXRfZG9tYWluXCI6XCJwZXJmb3JtYW5jZS53ZXN0c3Vzc2V4Lmdvdi51a1wifSxcInR5cGVcIjpcInNjcmF0Y2hcIn0sXCJuYW1lXCI6XCJDaGlsZHJlbidzIEhlYWx0aHkgV2VpZ2h0XCIsXCJ1c2VfcHJvZ3Jlc3Nfb3ZlcnJpZGVcIjp0cnVlLFwicHJvZ3Jlc3Nfb3ZlcnJpZGVcIjpcImdvb2RcIixcInlTY2FsZVwiOntcInVzZV9kZWZhdWx0XCI6ZmFsc2UsXCJtaW5cIjo2NSxcIm1heFwiOjc1fX0ifSwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6MTk6MzguMzQyWiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDEwOjE5OjM4LjM0MloiLCJ0YXJnZXRfdG9sZXJhbmNlIjoxLCJpZCI6IjVnaTctNG1jdyJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbXSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDoxOTo1Ny41NzhaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6MTk6MzguMzk2WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDEwOjE5OjU3LjU3OFoiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6ImFuYWctYjN1ZyIsIm5hbWUiOiJGYW1pbGllcyB0dXJuZWQgYXJvdW5kIiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhpcyBtZWFzdXJlIHJlcG9ydHMgb24gV1NDQ+KAmXMgYWJpbGl0eSB0byBkZWxpdmVyIHRhcmdldHMgbGFpZCBkb3duIGJ5IHRoZSBEQ0xHIChEZXBhcnRtZW50IGZvciBDb21tdW5pdGllcyBhbmQgTG9jYWwgR292ZXJubWVudCkgYXMgcGFydCBvZiB0aGUgbmF0aW9uYWwgVHJvdWJsZWQgRmFtaWxpZXMgcHJvZ3JhbW1lIHRvIDIwMjAuIFRoZXNlIHJlbGF0ZSB0byDigJh0dXJuaW5nIGFyb3VuZOKAmSBmYW1pbGllcyBhZ2FpbnN0IG5hdGlvbmFsIHZ1bG5lcmFiaWxpdHkgY3JpdGVyaWEsIHdoZXJlIHRoZXkgaGF2ZSBhdCBsZWFzdCB0d28gb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJpc3RpY3M6XFxuXFxuKiBDaGlsZHJlbiB3aG8gaGF2ZSBub3QgYmVlbiBhdHRlbmRpbmcgc2Nob29sIHJlZ3VsYXJseTtcXG4qIFBhcmVudHMgYW5kIGNoaWxkcmVuIGludm9sdmVkIGluIGNyaW1lIGFuZCBhbnRpLXNvY2lhbCBiZWhhdmlvdXI7XFxuKiBEb21lc3RpYyB2aW9sZW5jZSBhbmQgYWJ1c2U7XFxuKiBDaGlsZHJlbiB3aG8gbmVlZCBoZWxwO1xcbiogUGFyZW50cyBhbmQgY2hpbGRyZW4gd2l0aCBhIHJhbmdlIG9mIGhlYWx0aCBwcm9ibGVtcztcXG4qIEFkdWx0cyBvdXQgb2Ygd29yayBvciBhdCByaXNrIG9mIGZpbmFuY2lhbCBleGNsdXNpb247XFxuKiBZb3VuZyBwZW9wbGUgYXQgcmlzayBvZiB3b3JrbGVzc25lc3NcXG5cXG5TdWNoIGZhbWlsaWVzIG9mdGVuIGhhdmUgdmVyeSBsb25nLXN0YW5kaW5nIGlzc3VlcywgYW5kIHJlcHJlc2VudCBhIGhpZ2ggY29zdCB0byBhIHJhbmdlIG9mIHB1YmxpYyBzZXJ2aWNlcy4gSW50ZXJ2ZW50aW9uIGlzIHRocm91Z2ggYW4gaW50ZW5zaXZlIGtleXdvcmtlciBzZXJ2aWNlLCBvciBhbHRlcm5hdGl2ZWx5IHRocm91Z2ggYSByYW5nZSBvZiBwYXJ0bmVycyBvZmZlcmluZyBlYXJseSBoZWxwIGludGVydmVudGlvbnMuIEl0IHdpbGwgb2Z0ZW4gdGFrZSBhcm91bmQgMTIgbW9udGhzIGJlZm9yZSDigJhzdWNjZXNz4oCZIGNhbiBiZSByZXBvcnRlZDogdGhlIGludGVudGlvbiBpcyB0byBwcm92aWRlIHNpZ25pZmljYW50IG91dGNvbWVzIHdoaWNoIGEgZmFtaWx5IGNhbiBzdXN0YWluIGludG8gdGhlIGZ1dHVyZS4gVGhlcmUgaXMgYW4gYWNjb21wYW55aW5nIG1ldGhvZG9sb2d5IHdoaWNoIG1lYXN1cmVzIGhvdyBmYXIgdGhlIGZhbWlseSBoYXMgdHJhdmVsbGVkIHRvd2FyZHMgc3VzdGFpbmFiaWxpdHksIHRvIGFsbG93IGF1ZGl0IGFuZCBldmFsdWF0aW9uIG9mIHRoZSByZXN1bHRzLiBXb3JrIHdpdGggZmFtaWxpZXMgaXMgcGFydC1mdW5kZWQgYnkgdGhlIERDTEcsIGFuZCBzdXBwb3J0ZWQgYnkgdGhlIERXUCAoRGVwYXJ0bWVudCBvZiBXb3JrIGFuZCBQZW5zaW9ucykuIEEgcmFuZ2Ugb2YgV1NDQyBhbmQgY29tbWlzc2lvbmVkIHByaXZhdGUgYW5kIHRoaXJkIHNlY3RvciBzZXJ2aWNlcyBqb2ludGx5IGNvbnRyaWJ1dGUgdG8gdGhlc2Ugb3V0Y29tZXMsIGZhY2lsaXRhdGVkIGJ5IHRoZSBDb3VudHkgQ291bmNpbC4gVGhlIFRoaW5rIEZhbWlseSBQYXJ0bmVyc2hpcCBpbmNsdWRlcyBEaXN0cmljdCBDb3VuY2lscywgU3Vzc2V4IFBvbGljZSwgSGVhbHRoLCBIb3VzaW5nLCBTY2hvb2xzLCBDaGlsZHJlbuKAmXMgU29jaWFsIENhcmUgYW5kIGEgd2lkZSByYW5nZSBvZiBjaGFyaXRpZXMuXFxuXFxuKipRdWFydGVyIDMgLSBEZWNlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcblVwIHRvIDMxc3QgRGVjZW1iZXIgMjAxNyB0aGUgYXV0aG9yaXR5IGhhcyBjbGFpbWVkIGEgdG90YWwgb2YgMSw3NDEgc3VjY2Vzc2VzLiBBIGZ1cnRoZXIgODggY2FzZXMgd2lsbCBiZSBjbGFpbWVkIGluIEphbnVhcnkgMjAxOCwgZ2l2aW5nIGEgdG90YWwgb2YgMSw4MjkuIEEgc3Ryb25nIHBsYW4gaXMgaW4gcGxhY2UgdG8gYWNoaWV2ZSBvdXIgb3ZlcmFsbCBNYXJjaCAyMDIwIHRhcmdldCBvZiAzLDk0MCBmYW1pbGllcyB0dXJuZWQgYXJvdW5kIGFnYWluc3QgbmF0aW9uYWwgY3JpdGVyaWEsIGFsdGhvdWdoIHNvbWUgdmFyaWFiaWxpdHkgaW4gaW5kaXZpZHVhbCBxdWFydGVycyBpcyB0byBiZSBleHBlY3RlZCBhY3Jvc3MgYSBmaXZlLXllYXIgcHJvZ3JhbW1lLiBJbiB0aGUgbWVhbnRpbWUsIHdlIGhhdmUgbWFkZSA2LDM5NCBhdHRhY2htZW50cyBvZiBxdWFsaWZ5aW5nIGZhbWlsaWVzIOKAkyBpLmUuIHRob3NlIHdlIGhhdmUgYWN0aXZlbHkgd29ya2VkIHdpdGggb3IgYXJlIGN1cnJlbnRseSB3b3JraW5nIHdpdGggc2luY2UgU2VwdGVtYmVyIDIwMTQuIFRoaXMgc3VnZ2VzdHMgdGhhdCB0aGUgbmVlZCBmb3IgcHJldmVudGF0aXZlLCBlYXJseSBpbnRlcnZlbnRpb24gc2VydmljZXMgcmVtYWlucyBoaWdoLiBXZXN0IFN1c3NleCBpcyByZWdhcmRlZCBhcyBhIGxlYWRpbmcgYXV0aG9yaXR5IGluIHRoZSBsb2NhbCBkZWxpdmVyeSBvZiB0aGUgZ292ZXJubWVudOKAmXMgYW1iaXRpb25zIGZvciBmYW1pbGllcyB0aHJvdWdoIHRoZSBuYXRpb25hbCBwcm9ncmFtbWUsIGFuZCB0aGVzZSBmaWd1cmVzIGFyZSBpbiBsaW5lIHdpdGggY3VycmVudCBhbmQgcHJvamVjdGVkIHN1Y2Nlc3MgdGFyZ2V0cy5cXG5cXG4qKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcblVwIHRvIDMwdGggU2VwdGVtYmVyIDIwMTcgdGhlIGF1dGhvcml0eSBoYXMgY2xhaW1lZCBhIHRvdGFsIG9mIDEsNTExIHN1Y2Nlc3Nlcy4gQSBmdXJ0aGVyIDIzMCBjYXNlcyBoYXZlIGJlZW4gcHJlc2VudGVkIHRvIHRoZSBEQ0xHIGF0IHRoZSBiZWdpbm5pbmcgb2YgT2N0b2JlciAyMDE3IGFuZCBhcmUgdW5kZXJnb2luZyB0aGUgYXVkaXQgcHJvY2VzcyB3aXRoaW4gRENMRy4gVGhlc2UgZmlndXJlcyBhcmUgaW4gbGluZSB3aXRoIGN1cnJlbnQgc3VjY2VzcyB0YXJnZXRzLlxcblxcbkluIHRoZSBtZWFudGltZSwgd2UgaGF2ZSBtYWRlIDUsODA5IGF0dGFjaG1lbnRzIG9mIHF1YWxpZnlpbmcgZmFtaWxpZXMg4oCTIGkuZS4gdGhvc2Ugd2UgaGF2ZSBhY3RpdmVseSB3b3JrZWQgd2l0aCBvciBhcmUgY3VycmVudGx5IHdvcmtpbmcgd2l0aCBpbiBQaGFzZSAyIHNpbmNlIFNlcHRlbWJlciAyMDE0LiBUaGUgbnVtYmVyIG9mIGFjdGl2ZSBhdHRhY2hlZCBjYXNlcyBjdXJyZW50bHkgYmVpbmcgd29ya2VkIG9uIGJ5IFdlc3QgU3Vzc2V4IGlzIDIsMjcwLlxcblxcbioqUXVhcnRlciAxIC0gSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcblVwIHRvIDMwdGggSnVuZSAyMDE3IHRoZSBhdXRob3JpdHkgaGFzIGNsYWltZWQgYSB0b3RhbCBvZiAxLDI4MSBzdWNjZXNzZXMuIEEgZnVydGhlciBjbGFpbSBpcyBjdXJyZW50bHkgYmVpbmcgcHJlcGFyZWQgZm9yIGFuIGFkZGl0aW9uYWwgMjMwIGNhc2VzIHdoaWNoIHdpbGwgYmUgcHJlc2VudGVkIHRvIHRoZSBEQ0xHIGF0IHRoZSBlbmQgb2YgSnVseSAyMDE3LiBUaGVzZSBmaWd1cmVzIGFyZSBpbiBsaW5lIHdpdGggY3VycmVudCBzdWNjZXNzIHRhcmdldHMuIEluIHRoZSBtZWFudGltZSwgd2UgaGF2ZSBtYWRlIDUsMzQwIGF0dGFjaG1lbnRzIG9mIHF1YWxpZnlpbmcgZmFtaWxpZXMg4oCTIGkuZS4gdGhvc2Ugd2UgaGF2ZSBhY3RpdmVseSB3b3JrZWQgd2l0aCBvciBhcmUgY3VycmVudGx5IHdvcmtpbmcgd2l0aCBpbiBQaGFzZSAyIHNpbmNlIFNlcHRlbWJlciAyMDE0LiBUaGUgbnVtYmVyIG9mIGFjdGl2ZSBjYXNlcyBjdXJyZW50bHkgYmVpbmcgd29ya2VkIG9uIGJ5IFdlc3QgU3Vzc2V4IGlzIDIsMTkzLlxcblxcbioqUXVhcnRlciA0IC0gTWFyY2ggMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgVGhpbmsgRmFtaWx5IHByb2dyYW1tZSBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZWNvbmQgZnVsbCB5ZWFyIG9mIFBoYXNlIDIsIHdoaWNoIGxhc3RzIHVudGlsIE1hcmNoIDIwMjAuIFVwIHRvIDMxc3QgTWFyY2ggMjAxNyB0aGUgYXV0aG9yaXR5IGhhcyBjbGFpbWVkIGEgdG90YWwgb2YgMSwyODEgd2hpY2ggaXMgaW4gbGluZSB3aXRoIHRoZSB0YXJnZXQuIEluIHRoZSBtZWFudGltZSwgd2UgaGF2ZSBtYWRlIDQsNzYwIGF0dGFjaG1lbnRzIG9mIHF1YWxpZnlpbmcgZmFtaWxpZXMg4oCTIGkuZS4gdGhvc2Ugd2UgaGF2ZSBhY3RpdmVseSB3b3JrZWQgd2l0aCBvciBhcmUgY3VycmVudGx5IHdvcmtpbmcgd2l0aCBpbiBQaGFzZSAyIHNpbmNlIFNlcHRlbWJlciAyMDE0IHdoaWNoIGlzIHdlbGwgYWJvdmUgdGFyZ2V0LiBUaGUgbnVtYmVyIG9mIGFjdGl2ZSBjYXNlcyBjdXJyZW50bHkgYmVpbmcgd29ya2VkIG9uIGJ5IFdlc3QgU3Vzc2V4IGlzIDIsMTEzLiBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCB0aGUgRENMRyBwaGFzZSAyIChTZXAgMjAxNCDigJNNYXIgMjAyMCkgdGFyZ2V0IGhhcyByZWR1Y2VkIGZyb20gNCwwNjAgdG8gMyw5NDAuXFxuXFxuXCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJJbmNyZWFzZSB0aGUgbnVtYmVyIG9mIGZhbWlsaWVzIHdlIGhhdmUgaGVscGVkIHRvIGNoYW5nZSwgaW1wcm92ZSBhbmQgdHVybiB0aGVpciBsaXZlcyBhcm91bmRcIixcImljb25cIjpcInRleHRcIixcInVzZV9jdXN0b21fc3VidGl0bGVcIjp0cnVlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJUaGlzIGdvYWwgaXMgbWVhc3VyZWQgYnkgdGhlIG51bWJlciBvZiB0cm91YmxlZCBmYW1pbGllcyB0dXJuZWQgYXJvdW5kLlwiLFwidGl0bGVfaW1hZ2VcIjpcIi9hcGkvYXNzZXRzL0Y2NjhGNDAwLTQyRDItNEYzMC1CRDVFLTJCNTA0OTRFMUI3RVwifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDE1LTAzLTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6ImZhbWlsaWVzIiwidGFyZ2V0IjozOTQwLCJ0YXJnZXRfdHlwZSI6ImFic29sdXRlIiwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6InlidGktaGI3dyJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE1fSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9fSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNX0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE1fX0sXCJzdGFydFwiOlwiMjAxNS0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNS0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9fSxcIm5hbWVcIjpcInRoZSBudW1iZXIgb2YgZmFtaWxpZXMgdHVybmVkIGFyb3VuZFwiLFwidXNlX3Byb2dyZXNzX292ZXJyaWRlXCI6dHJ1ZSxcInByb2dyZXNzX292ZXJyaWRlXCI6XCJnb29kXCIsXCJ5U2NhbGVcIjp7XCJ1c2VfZGVmYXVsdFwiOmZhbHNlfSxcImlzX3RyZW5kbGluZV9kaXNhYmxlZFwiOmZhbHNlfSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDoyNjoxOC4zMDhaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6MjY6MTguMzA4WiIsInRhcmdldF90b2xlcmFuY2UiOjIwMCwiaWQiOiJlNXB6LWVhOTIifSwicmVsYXRlZF9tZWFzdXJlcyI6W10sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6MjY6NDguOTgwWiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjI2OjE4LjM0OFoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QxMDoyNjo0OC45ODBaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiIzMnZoLXh3c2kiLCJuYW1lIjoiQ2hpbGRyZW4gTG9va2VkIEFmdGVyIFBvcHVsYXRpb24iLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcImljb25cIjpcInRleHRcIixcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJXZXN0IFN1c3NleCBBZG9wdGlvbiBpcyB3b3JraW5nIGluIHBhcnRuZXJzaGlwIHdpdGggQnJpZ2h0b24gYW5kIEhvdmUsIEVhc3QgU3Vzc2V4IGFuZCBTdXJyZXkgTG9jYWwgQXV0aG9yaXR5IEFkb3B0aW9uIEFnZW5jaWVzIHRvIGRldmVsb3AgQWRvcHRpb24gU291dGggRWFzdC4gVGhlIGFpbSBvZiB0aGlzIHJlZ2lvbmFsIHBhcnRuZXJzaGlwIGlzIHRvIHNoYXJlIHJlc291cmNlcyBhbmQgZXhwZXJ0aXNlIHNvIHRoYXQgODAlIG9mIEFkb3B0aW9uIFNvdXRoIEVhc3QgY2hpbGRyZW4gYXJlIHBsYWNlZCB3aXRoaW4gdGhlIHJlZ2lvbiwgd2l0aCBpbmNyZWFzZWQgY2hvaWNlIG9mIGFkb3B0ZXJzLCByZWR1Y2VkIHdhaXRpbmcgdGltZXMgYW5kIG1vcmUgc3VjY2Vzc2Z1bCBhZG9wdGlvbnMuXFxuXFxuIFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkZlYnJ1YXJ5IDIwMTgqKlxcblxcbi0gLSAtXFxuXFxuVGhpcyBpbmRpY2F0b3IgaGFzIGluY3JlYXNlZCBieSA2IGRheXMgb3ZlciB0aGUgcGFzdCBtb250aCBkdWUgdG8gYSBzbWFsbCBudW1iZXIgb2YgY2hpbGRyZW4gd2l0aCBzaWduaWZpY2FudCBuZWVkcyB3aG8gaGFkIHNwZW50IGEgY29uc2lkZXJhYmxlIHRpbWUgaW4gZm9zdGVyIGNhcmUgYW5kIHRoZW4gd2l0aCB0aGVpciBhZG9wdGVycyBwcmlvciB0byBhZG9wdGlvbiBvcmRlcnMgYmVpbmcgZ3JhbnRlZC4gRnVydGhlciBkZXRhaWwgd2lsbCBmb2xsb3cgaW4gdGhlIHF1YXJ0ZXJseSB1cGRhdGUuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAzIC0gRGVjZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgYXZlcmFnZSB0aW1lIGJldHdlZW4gYSBjaGlsZCBlbnRlcmluZyBjYXJlIGFuZCBtb3ZpbmcgaW4gd2l0aCB0aGVpciBhZG9wdGl2ZSBmYW1pbHkgaGFzIGluY3JlYXNlZCBpbiB0aGUgbGFzdCBxdWFydGVyIHRvIDQ4My4zIGRheXMuIFRoaXMgaW5jcmVhc2VkIHRpbWVzY2FsZSBjYW4gYmUgYXR0cmlidXRlZCB0byB0d28gY2hpbGRyZW4gd2l0aCBhZG9wdGlvbiBjYXJlIHBsYW5zIHdobyB3ZXJlIGFkb3B0ZWQgaW4gUXVhcnRlciAzOiBDaGlsZCAxIGlzIGEgY2hpbGQgd2l0aCBzcGVjaWFsIG5lZWRzIHdobyB3YXMgcGxhY2VkIGZvciBhZG9wdGlvbiBvdXQgb2YgY291bnR5IGFmdGVyIGEgbG9uZyBzZWFyY2g7IGhlciBwcm9zcGVjdGl2ZSBhZG9wdGVycyB0aGVuIHNlcGFyYXRlZCB3aGljaCBsZWQgdG8gZGVsaW5raW5nLCB0aGVuIGFyZSBhc3Nlc3NtZW50IG9mIGFkb3B0aXZlIG1vdGhlciBhcyBhIHNpbmdsZSBhZG9wdGVyIHRvb2sgcGxhY2UgcHJpb3IgdG8gYW4gQWRvcHRpb24gT3JkZXIgYmVpbmcgZ3JhbnRlZC4gQ2hpbGQgMiBleHBlcmllbmNlZCBkZWxheXMgaW4gYmVpbmcgcGxhY2VkIGZvciBhZG9wdGlvbiBkdWUgdG8gaGlzIGFkZGl0aW9uYWwgbmVlZHMuIEhlIGhhZCBiZWVuIGxvb2tlZCBhZnRlciBmb3IgMiB5ZWFycyBiZWZvcmUgYSBQbGFjZW1lbnQgT3JkZXIgd2FzIGdyYW50ZWQuIEhlIHdhcyBvbGRlciB3aGVuIGhlIHdhcyBwbGFjZWQgZm9yIGFkb3B0aW9uOyB0aGVyZSB3ZXJlIGNvbmNlcm5zIGFyb3VuZCBwcmVzZW50aW5nIGJlaGF2aW91cnMgaW5kaWNhdGluZyBlYXJseSB0cmF1bWEgYW5kIGEgNCB5ZWFyIGdhcCBiZXR3ZWVuIHBsYWNlbWVudCBhbmQgYWRvcHRpb24gYmVjYXVzZSBvZiB0aGVzZSBuZWVkcy5cXG5cXG4gXFxuXFxuVGhlcmUgYXJlIGN1cnJlbnRseSAzNSBjaGlsZHJlbiBpbiBhZG9wdGl2ZSBwbGFjZW1lbnRzIHByZSBBZG9wdGlvbiBPcmRlci4gQmFzZWQgb24gdGhlIGxpa2VsaWhvb2Qgb2YgQWRvcHRpb24gT3JkZXJzIGZvciAxNSBvZiB0aGVzZSBjaGlsZHJlbiBiZWluZyBncmFudGVkIHdpdGhpbiB0aGUgbmV4dCBxdWFydGVyLCB0aGUgcHJlZGljdGlvbiBpcyB0aGF0IHRoaXMgbWVhc3VyZSB3aWxsIGRlY3JlYXNlIHRvIGFyb3VuZCA0NjUgZGF5cyBieSB0aGUgZW5kIG9mIHRoZSB5ZWFyIHdoaWNoIHdpbGwgbWFrZSB0aGUgeWVhciBlbmQgcHJlZGljdGlvbiBBbWJlci5UaGlzIHdpbGwgaW1wcm92ZSBwcm9ncmVzcyB0b3dhcmRzIHRoZSB0YXJnZXQgb2YgNDI2IGRheXMgYnkgdGhlIGVuZCBvZiBNYXJjaCAyMDE5LlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoZXJlIGlzIGEgKio0NjEuNzMqKiBkYXlzIGF2ZXJhZ2UgZm9yIHRoZSBjaGlsZHJlbiBvbiBQbGFjZW1lbnQgT3JkZXJzIGZyb20gZW50ZXJpbmcgY2FyZSB0byBiZWluZyBwbGFjZWQgZm9yIGFkb3B0aW9uOyB0aGlzIGV2aWRlbmNlcyB0aGF0IFdlc3QgU3Vzc2V4IGlzIHBsYWNpbmcgY2hpbGRyZW4gaW4gYSB0aW1lbHkgbWFubmVyOyB0aGUgcGVyZm9ybWFuY2UgYWdhaW5zdCB0aGlzIGluZGljYXRvciBpbiB0aGUgcHJldmlvdXMgcXVhcnRlciB3YXMgNDY2LjcgZGF5cywgYW5kIHJlbWFpbnMgbG93ZXIgdGhhbiB0aGUgbmF0aW9uYWwgYXZlcmFnZSB3aGljaCBpcyA1MzIgZGF5cy4gVGhlIGFkb3B0aW9uIHRlYW0gY29udGludWVzIHRvIHByaW9yaXRpc2UgbGlua2luZyBjaGlsZHJlbiB3aXRoIGFkb3B0ZXJzIGluIGEgdGltZWx5IG1hbm5lciwgYW5kIGhhdmUgcmVzcG9uZGVkIGZsZXhpYmx5IHRvIHRoZSBpbmNyZWFzZWQgZGVtYW5kIGZvciBmYW1pbHkgZmluZGluZyBkdWUgdG8gdGhlIGNvbnRpbnVlZCBpbmNyZWFzZSBpbiBQbGFjZW1lbnQgb3JkZXJzIGZvciBXZXN0IFN1c3NleCBjaGlsZHJlbi4gVGhlIExvY2FsIEF1dGhvcml0eSBmYWNlcyBhIHNpZ25pZmljYW50IGFkb3B0ZXIgc3VmZmljaWVuY3kgY2hhbGxlbmdlLCBkdWUgdG8gdGhpcyBpbmNyZWFzZS4gVGhlIGRlbWFuZCBmb3IgYWRvcHRpdmUgcGxhY2VtZW50cyBmb3IgY2hpbGRyZW4gd2hvIGFyZSBpbiBzaWJsaW5nIGdyb3Vwcywgb3ZlciAyIHllYXJzIG9mIGFnZSwgZnJvbSBkaXZlcnNlIGV0aG5pYyBiYWNrZ3JvdW5kcyBhbmQgYSBudW1iZXIgd2l0aCBzcGVjaWFsIG5lZWRzLCBpcyB1bmFibGUgdG8gYmUgc2F0aXNmYWN0b3JpbHkgbWV0IGZyb20gdGhlIExvY2FsIEF1dGhvcml0eeKAmXMgZXhpc3RpbmcgcG9vbCBvZiBhZG9wdGVycy5cXG5cXG5UaGUgQWRvcHRpb24gVGVhbSBoYXMgZGV2ZWxvcGVkIGNsZWFyIHByb2Nlc3NlcyBhbmQgdGltZSBmcmFtZXMgdG8gZW5zdXJlIHRoYXQgcmVjcnVpdG1lbnQgYW5kIGFzc2Vzc21lbnQgaXMgcHJpb3JpdGlzZWQuIFRoZXJlIGlzIGEgbmV3IER1dHkgV29ya2VyIGFzIHRoZSBmaXJzdCBwb2ludCBvZiBjb250YWN0IGZvciBlbnF1aXJlcnMgaW4gb3JkZXIgdG8gcHJvdmlkZSBhIHRpbWVseSBhbmQgY29uc2lzdGVudCByZXNwb25zZS4gVGhlIGNvbGxhYm9yYXRpb24gb2YgdGhlIEFkb3B0aW9uIHRlYW0gYXMgcGFydCBvZiB0aGUgZGV2ZWxvcGluZyByZWdpb25hbCBBZG9wdGlvbiBBZ2VuY3ksIEFkb3B0aW9uIFNvdXRoIEVhc3QgKEFTRSksIGVuc3VyZXMgdGhhdCBhcHBsaWNhbnRzIGhhdmUgYWNjZXNzIHRvIGluZm9ybWF0aW9uIGV2ZW5pbmdzIGF0IGEgdGltZSBhbmQgbG9jYXRpb24gY29udmVuaWVudCB0byB0aGVtLiBBU0Ugd29ya3MgdG9nZXRoZXIgdG8gaWRlbnRpZnkgbG9jYWwgZmFtaWxpZXMgZm9yIHRoZWlyIGNoaWxkcmVuIHRvIHByZXZlbnQgcGxhY2VtZW50cyBiZWluZyB0b28gZmFyIGFmaWVsZC4gVGhlIG5leHQgQVNFIEFkb3B0aW9uIEV4Y2hhbmdlIGlzIGJlaW5nIGhlbGQgb24gMTZ0aCBPY3RvYmVyIDIwMTcgYXQgdGhlIHN0YXJ0IG9mIE5hdGlvbmFsIEFkb3B0aW9uIFdlZWsuIFRoZSBwcmVzZW5jZSBvZiB0aGUgTG9jYWwgQXV0aG9yaXR54oCZcyBBZG9wdGlvbiBTZXJ2aWNlIGFuZCB0aGUgbmVlZCBmb3IgYWRvcHRlcnMgaXMgYmVpbmcgcHJvbW90ZWQgdGhyb3VnaCBhIHZhcmlldHkgb2YgbWVkaWEgYW5kIGV2ZW50cy4gUGxhbm5pbmcgaXMgYWxzbyB1bmRlcndheSB0byBkZXZlbG9wIGFuIEFkb3B0aW9uIFNvdXRoIEVhc3Qgd2Vic2l0ZSwgYXMgcmVzZWFyY2ggcGFwZXIgZXZpZGVuY2VkIHRoYXQgdGhlIG1ham9yaXR5IG9mIHBlb3BsZSBpbnRlcmVzdGVkIGluIGFkb3B0aW9uIG1hZGUgdGhlaXIgZmlyc3Qgc3RlcHMgdGhyb3VnaCBvbmxpbmUgYWN0aXZpdHkuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoZXJlIGlzIGEgNDA5IGRheXMgYXZlcmFnZSBmb3IgdGhlIDcgY2hpbGRyZW4gYWRvcHRlZCBpbiB0aGUgZmlyc3QgcXVhcnRlciBvZiAyMDE3IGZyb20gZW50ZXJpbmcgY2FyZSB0byBiZWluZyBwbGFjZWQgZm9yIGFkb3B0aW9uLCBldmlkZW5jaW5nIHRoYXQgd2UgYXJlIHBsYWNpbmcgY2hpbGRyZW4gaW4gYSB0aW1lbHkgbWFubmVyLiBUaGVyZSBhcmUgaGlzdG9yaWMgY2hpbGRyZW4gZnJvbSB0aGUgcGFzdCB0aHJlZSB5ZWFycyB3aG9zZSB0aW1lc2NhbGVzIGZyb20gZW50ZXJpbmcgY2FyZSB0byBiZWluZyBwbGFjZWQgZm9yIGFkb3B0aW9uIGhhdmUgYmVlbiBzaWduaWZpY2FudGx5IGxvbmdlciB0aGFuIHdlIHdvdWxkIGxpa2UsIGJ1dCBnaXZlbiB0aGVpciBzcGVjaWZpYyBuZWVkcyx0aGVzZSBwbGFucyBoYXZlIGJlZW4gaW4gdGhlaXIgYmVzdCBpbnRlcmVzdHMuXFxuXFxuVGhlIG1haW4gcHJpb3JpdHkgZm9yIHRoZSBBZG9wdGlvbiBTZXJ2aWNlIGN1cnJlbnRseSBpcyBpbiByZWNydWl0aW5nIGEgbGFyZ2VyIHBvb2wgb2YgYWRvcHRlcnMgdG8gbWVldCB0aGUgbmVlZHMgb2YgdGhlIGluY3JlYXNlZCBudW1iZXIgb2YgY2hpbGRyZW4gd2l0aCBhZG9wdGlvbiBjYXJlIHBsYW5zLiBUaGVyZSBoYXMgYmVlbiBpbmNyZWFzZWQgbWFya2V0aW5nIGFjdGl2aXR5IGFuZCB0aGVyZSBpcyBtb3JlIGNhcGFjaXR5IGluIFN0YWdlIDEgQWRvcHRpb24gdG8gcmVzcG9uZCB0byBlbnF1aXJlcnMgaW4gYSB0aW1lbHkgbWFubmVyLiBBbG9uZ3NpZGUgdGhpcywgY2FwYWNpdHkgd2l0aGluIHRoZSBBZG9wdGlvbiB0ZWFtIGlzIGJlaW5nIHJldmlld2VkIHRvIGVuc3VyZSB0aGF0IHdlIGFyZSBhYmxlIHRvIHByb2dyZXNzIGFwcGxpY2F0aW9ucyBleHBlZGllbnRseS5cXG5cXG5UaGUgQWRvcHRpb24gUGFydG5lcnNoaXAgaXMgYWxyZWFkeSBzaGFyaW5nIGluZm9ybWF0aW9uIGV2ZW50cyBhbmQgcHJlcGFyYXRpb24gZ3JvdXBzLCBhbmQgdGhlIGZpcnN0IEFkb3B0aW9uIEV4Y2hhbmdlIGV2ZW50IGhhcyB0YWtlbiBwbGFjZSwgd2l0aCB0aGUgcGxhbiB0byBob2xkIHRoZXNlIGV2ZW50cyAzIHRpbWVzIGEgeWVhci5cXG5cXG4gIFxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgNCAtIE1hcmNoIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuSW4gdGhlIHllYXIgMjAxNi0yMDE3ICwgV2VzdCBTdXNzZXggaGFzIGFjaGlldmVkIGFkb3B0aW9uIGZvciA0OCBjaGlsZHJlbiBhZ2FpbnN0IGl0cyB0YXJnZXQgb2YgNDAgY2hpbGRyZW4sIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgaW5jcmVhc2Ugb24gdGhlIHByZXZpb3VzIHllYXLigJlzIHRvdGFsIG9mIDMzIGFkb3B0ZWQgY2hpbGRyZW4uIDEzIG9mIHRoZSBjaGlsZHJlbiBhZG9wdGVkIG92ZXIgdGhlIHBhc3QgeWVhciBoYWQgYmVlbiBwbGFjZWQgZm9yIGFkb3B0aW9uIGZvciB1cCB0byAxOCBtb250aHMgcHJpb3IgdG8gQWRvcHRpb24gT3JkZXJzIGJlaW5nIGdyYW50ZWQsIHJlYXNvbnMgZm9yIHdoaWNoIGluY2x1ZGVkIGNoaWxkcmVuIHdpdGggY29tcGxleCBuZWVkcywgb2xkZXIgY2hpbGRyZW4gYW5kIGNoaWxkcmVuIHdpdGggZGlzYWJpbGl0aWVzIGJlaW5nIGFkb3B0ZWQgYnkgdGhlaXIgZm9zdGVyIGNhcmVycyBhZnRlciBiZWluZyBpbiBwbGFjZW1lbnQgZm9yIHNvbWUgdGltZS4gU29jaWFsIHdvcmtlcnMgd2l0aGluIEFkb3B0aW9uIGhhdmUgc2hvd24gYSBoaWdoIGxldmVsIG9mIGNvbW1pdG1lbnQgdG8gd29ya2luZyBpbiBwYXJ0bmVyc2hpcCB3aXRoIHRoZWlyIENoaWxkcmVuIExvb2tlZCBBZnRlciBjb2xsZWFndWVzLCBpbiB0cmFja2luZyBjaGlsZHJlbiB3aXRoIHBsYW5zIGZvciBwZXJtYW5lbmN5IHRocm91Z2ggbW9udGhseSBtZWV0aW5ncyBhbmQgd2l0aCB0aGUgc3VwcG9ydCBvZiB0aGUgUGVybWFuZW5jeSBQbGFubmluZyBDby1vcmRpbmF0b3IuIFRoZXNlIHN5c3RlbXMgaGF2ZSBlbmFibGVkIHdvcmtlcnMgdG8gaWRlbnRpZnkgYWRvcHRlcnMgYXQgYW4gZWFybHkgc3RhZ2Ugd2hlcmV2ZXIgcG9zc2libGUgYW5kIHRvIGxvb2sgZnVydGhlciBhZmllbGQgYXMgc29vbiBhcyBwb3NzaWJsZSBmb3IgZmFtaWx5IGZpbmRpbmcgZm9yIGNoaWxkcmVuIHdob3NlIG5lZWRzIGNhbm5vdCBiZSBtZXQgd2l0aGluIFdlc3QgU3Vzc2V4IHJlc291cmNlcy5cXG5cXG5UaGVyZSBoYXMgYmVlbiBhIDYwJSBpbmNyZWFzZSBpbiBDYXJlIFByb2NlZWRpbmdzIHdpdGhpbiBXZXN0IFN1c3NleCBvdmVyIHRoZSBwYXN0IHR3byB5ZWFycywgd2hpY2ggaW4gdHVybiBoYXMgaW5jcmVhc2VkIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gd2l0aCBhZG9wdGlvbiBjYXJlIHBsYW5zLiBUaGVyZSBoYXMgYmVlbiBpbmNyZWFzZWQgcHVibGljaXR5IGFyb3VuZCBhZG9wdGlvbiB0byBhZHZpc2UgdGhlIHB1YmxpYyB0aGF0IFdlc3QgU3Vzc2V4IHdvdWxkIGxpa2UgdG8gaGVhciBmcm9tIGZhbWlsaWVzIGludGVyZXN0ZWQgaW4gYWRvcHRpb24sIGFuZCB0aGF0IHRoZXJlIGlzIGluIHRoZSByZWdpb24gb2YgNTAgY2hpbGRyZW4gZnJvbSBiYWJpZXMgdXB3YXJkcyB3aXRoIGEgcGxhbiBmb3IgYWRvcHRpb24uIFRoZSBSZWNydWl0bWVudCBTdHJhdGVneSBpcyB1bmRlciByZXZpZXcsIHdpdGggaW5jcmVhc2VkIHNvY2lhbCBtZWRpYSBwcmVzZW5jZSBpbiBwbGFjZSBhbmQgbW9udGhseSByZXZpZXcgbWVldGluZ3MgdG8gYXNjZXJ0YWluIHRoZSBpbXBhY3Qgb2YgbWFya2V0aW5nIHVwb24gcmVjcnVpdG1lbnQuXFxuXFxuXCJ9XSxcInVzZV9jdXN0b21fc3VidGl0bGVcIjp0cnVlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJUaGUgZ29hbCBpcyB0byBhY2hpZXZlIHN1Y2Nlc3NmdWwgb3V0Y29tZXMgZm9yIENoaWxkcmVuIExvb2tlZCBBZnRlci4gU3VjY2VzcyBpbiB0aGlzIGdvYWwgaXMgbWVhc3VyZWQgdXNpbmcgdGhlIGF2ZXJhZ2UgdGltZSBiZXR3ZWVuIGEgY2hpbGQgZW50ZXJpbmcgY2FyZSBhbmQgbW92aW5nIGluIHdpdGggdGhlaXIgYWRvcHRpdmUgZmFtaWx5IChpbiBkYXlzKVwiLFwidXNlX2N1c3RvbV90aXRsZVwiOnRydWUsXCJjdXN0b21fdGl0bGVcIjpcIlJlZHVjaW5nIHRoZSBhdmVyYWdlIG51bWJlciBvZiBkYXlzLCBiZXR3ZWVuIGEgY2hpbGQgZW50ZXJpbmcgY2FyZSBhbmQgbW92aW5nIGluIHdpdGggdGhlaXIgYWRvcHRpdmUgZmFtaWx5IFwifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDE1LTEwLTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6ImRheXMiLCJ0YXJnZXQiOjQyNiwidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YSI6NDI2LCJ0YXJnZXRfZGVsdGFfaXNfcGVyY2VudCI6ZmFsc2UsImJhc2VsaW5lIjo0ODYsIm1ldHJpYyI6eyJtZXRhZGF0YSI6IiIsImlkIjoiY3Z5cS00cWVpIn0sImNvbXBhcmlzb24iOnsiY29tcGFyaXNvbl9mdW5jdGlvbiI6IjwifSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJlZGl0XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjo5LFwieWVhclwiOjIwMTV9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOH0sXCJhY3Rpb25fdHlwZVwiOlwicmVkdWNlXCIsXCJ0YXJnZXRfdHlwZVwiOlwiYWJzb2x1dGVcIn0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTZ9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNn19LFwic3RhcnRcIjpcIjIwMTYtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTYtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJ0aGUgYXZlcmFnZSBudW1iZXIgb2YgZGF5cywgYmV0d2VlbiBhIGNoaWxkIGVudGVyaW5nIGNhcmUgYW5kIG1vdmluZyBpbiB3aXRoIHRoZWlyIGFkb3B0aXZlIGZhbWlseVwifSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDoyODoxMC4xODRaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6Mjg6MTAuMTg0WiIsInRhcmdldF90b2xlcmFuY2UiOjUwLCJpZCI6InZreG0tam5xMiJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbeyJtZXRhZGF0YSI6IiIsImlkIjoiYWI0eS1mcDVpIn1dLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjI4OjUyLjM3MloiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDoyODoxMC4yMzNaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6Mjg6NTIuMzcyWiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoiZG1hNS01c3g3IiwibmFtZSI6IlF1YWxpdHkgb2YgQ2hpbGRyZW4ncyBTZXJ2aWNlcyIsImlzX3B1YmxpYyI6dHJ1ZSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJyZXRpcmVtZW50X25hcnJhdGl2ZVwiOltdLFwiaWNvblwiOlwiY3Jvc3NoYWlyXCIsXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipSYXRpbmdzKipcXG5cXG4oMSkgT3V0c3RhbmRpbmcsICgyKSBHb29kLCAoMykgUmVxdWlyZXMgSW1wcm92ZW1lbnQgYW5kICg0KSBJbmFkZXF1YXRlXFxuXFxuVGhlIG91dGNvbWUgb2YgdGhlIG1vc3QgcmVjZW50IE9mc3RlZCBJbnNwZWN0aW9uIHRvIGJlIGNvbmR1Y3RlZCBmb3IgdGhlc2Ugc2VydmljZXMgd2l0aGluIFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsIHJhdGVkIHRoZSBhdXRob3JpdHkgYXMgJ1JlcXVpcmVzIEltcHJvdmVtZW50Jy4gVGhpcyBpcyBhcyBwZXIgdGhlIGluc3BlY3Rpb24gcmVwb3J0IGlzc3VlZCBpbiBKYW51YXJ5IDIwMTYuXFxuXFxuUHJpb3IgdG8gdGhhdCwgb3VyIGxhc3QgT2ZzdGVkIGluc3BlY3Rpb24gb2Ygb3VyIGNoaWxkIHByb3RlY3Rpb24gYXJyYW5nZW1lbnRzIGluIEZlYnJ1YXJ5IDIwMTMsIE9mc3RlZCBqdWRnZWQgdGhlIHNlcnZpY2UgdGhhdCB3ZSBwcm92aWRlIHRvIGtlZXAgY2hpbGRyZW4gYW5kIHlvdW5nIHBlb3BsZSBzYWZlIHRvIGJlIFxcXCJhZGVxdWF0ZVxcXCIuIFRoaXMgZm9sbG93ZWQgYSBwcmV2aW91cyBpbnNwZWN0aW9uIGluIE5vdmVtYmVyIDIwMTAgd2hpY2ggY29uc2lkZXJlZCBvdXIgc2VydmljZSB0byBiZSBcXFwiaW5hZGVxdWF0ZVxcXCIuIER1ZSB0byB0aGUgd2F5IGluIHdoaWNoIE9mc3RlZCBjb25kdWN0cyBpbnNwZWN0aW9ucyBpdCB3b3VsZCBoYXZlIGJlZW4gaW1wb3NzaWJsZSBmb3IgdGhlIENvdW50eSBDb3VuY2lsIHRvIGFjaGlldmUgYSByYXRpbmcgYmV0dGVyIHRoYW4gXFxcImFkZXF1YXRlXFxcIiBmb2xsb3dpbmcgYW4gXFxcImluYWRlcXVhdGVcXFwiIHJhdGluZyBpbiAyMDEwLlxcblxcbkltcHJvdmVtZW50cyBoYXZlIHRoZXJlZm9yZSBiZWVuIG1hZGUgdG8gdGhlIHNlcnZpY2Ugd2UgcHJvdmlkZSB0byBrZWVwIGNoaWxkcmVuIGFuZCB5b3VuZyBwZW9wbGUgc2FmZSBidXQgd2UgYXJlIG5vdCBjb21wbGFjZW50LiBJdCBpcyBvdXIgYW1iaXRpb24gdG8gcmVjZWl2ZSBhIFxcXCJnb29kXFxcIiBvciBiZXR0ZXIgcmF0aW5nIGF0IG91ciBuZXh0IE9mc3RlZCBpbnNwZWN0aW9uLiBQbGFucyBhcmUgaW4gcGxhY2UgdG8gaW1wcm92ZSBvdXIgc2VydmljZXMgZm9yIHZ1bG5lcmFibGUgY2hpbGRyZW4gYW5kIHlvdW5nIHBlb3BsZSBhbmQgd2UgYmVsaWV2ZSB0aGF0IHRoZSBlZmZvcnRzIHdlIGFyZSBtYWtpbmcgd2lsbCByZXN1bHQgaW4gZnVydGhlciBpbXByb3ZlbWVudHMgdG8gb3VyIE9mc3RlZCByYXRpbmcgYXQgb3VyIG5leHQgaW5zcGVjdGlvbi5cXG5cXG5XaGlsZSBvdXIgc2FmZWd1YXJkaW5nIHNlcnZpY2VzIGhhdmUgYmVlbiB0aGUgc3ViamVjdCBvZiBHb3Zlcm5tZW50IGludGVydmVudGlvbiBhbmQgYXJlIG5vdyBhZGVxdWF0ZSwgb3VyIEZvc3RlcmluZyBhbmQgQWRvcHRpb24gc2VydmljZXMgaGF2ZSBib3RoIGJlZW4gaW5zcGVjdGVkIGluIHRoZSBsYXN0IHR3byB5ZWFycyBhbmQgYm90aCBzZXJ2aWNlcyB3ZXJlIGp1ZGdlZCB0byBiZSBHb29kIHdpdGggT3V0c3RhbmRpbmcgZmVhdHVyZXMuXFxuXFxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IE9mc3RlZCByZWd1bGF0ZXMgYW5kIGluc3BlY3RzIGNoaWxkcmVu4oCZcyBzb2NpYWwgY2FyZSwgcGxlYXNlIGdvIHRvIHRoZSBPZnN0ZWQgd2Vic2l0ZTpcXG5cXG4gXFxuXFxuW2h0dHA6Ly93d3cub2ZzdGVkLmdvdi51ay9jaGlsZHJlbi1hbmQtZmFtaWxpZXMtc2VydmljZXNdWzBdXFxuXFxuWzBdOiBodHRwOi8vd3d3Lm9mc3RlZC5nb3YudWsvY2hpbGRyZW4tYW5kLWZhbWlsaWVzLXNlcnZpY2VzXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAzIC0gRGVjZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5SZXNwb25kaW5nIHRvIGNvbmNlcm5zIGhhcyBiZWVuIGEgcHJpb3JpdHkgYXJlYSBmb3IgdXMgYW5kIHdlIGNhbiBub3cgZGVtb25zdHJhdGUgdGhhdCA5OSUgb2YgcmVmZXJyYWxzIGFyZSBkZWFsdCB3aXRoIHdpdGhpbiAyNGhycy5cXG5cXG5Xb3JrIGhhcyBhbHNvIGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSB0aW1lbGluZXNzIG9mIGNoaWxkIHByb3RlY3Rpb24gY29uZmVyZW5jZXMgdG8gZW5zdXJlIHRoYXQgY2hpbGRyZW4gYXJlIHNhZmUgYW5kIHJlZ3VsYXJseSByZXZpZXdlZC4gQ3VycmVudCBkYXRhIHNob3dzIHRoYXQgOTIlIG9mIGNvbmZlcmVuY2VzIGFyZSBoZWxkIG9uIHRpbWUuIFRoaXMgY29tcGFyZXMgdG8gYSBuYXRpb25hbCBmaWd1cmUgb2YgNzclLlxcblxcbiogQWRkaXRpb25hbGx5IHdlIGFyZSB1bmRlcnRha2luZyByZWd1bGFyIGF1ZGl0cyBvZiBjaGlsZCBwcm90ZWN0aW9uIHBsYW5zIHRvIGVuc3VyZSB0aGF0IHdlIGhhdmUgc3RyZW5ndGhlbmVkIGRlY2lzaW9uIG1ha2luZyBhbmQgdGhhdCBwdXJwb3NlZnVsIHdvcmsgaXMgdGFraW5nIHBsYWNlIHdpdGggY2hpbGRyZW4gYXQgcmlzayBvZiBoYXJtLlxcblxcbk92ZXJhbGwgcGVyZm9ybWFuY2UgaGFzIGNvbnRpbnVlZCB0byBpbXByb3ZlIGluIFF1YXJ0ZXIgMyBhbmQgd2UgaGF2ZSByb2J1c3QgcGxhbnMgaW4gcGxhY2UgdG8gZW5zdXJlIHRoYXQgd2UgZm9jdXMgb24gcXVhbGl0eSBvZiBwcmFjdGljZSBzbyB0aGF0IG91ciBjaGlsZHJlbiBhbmQgdGhlaXIgZmFtaWxpZXMgZ2V0IHRoZSBiZXN0IHNlcnZpY2VzIGFuZCBzdXBwb3J0IHRvIG1lZXQgdGhlaXIgbmVlZHMuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC1KdW5lIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuSW4gdGhpcyBxdWFydGVyIHdlIGhhdmUgYmVlbiBhYmxlIHRvIGltcHJvdmUgaG93IHF1aWNrbHkgd2UgY2FuIG1ha2UgZGVjaXNpb25zIHdoZW4gd2UgYXJlIGFza2VkIGlmIHdlIGNhbiBwcm92aWRlIHN1cHBvcnQgdG8gYSBjaGlsZC4gTm93IDcwJSBvZiByZWZlcnJhbHMgaGF2ZSBhIGRlY2lzaW9uIHdpdGhpbiAyNCBob3Vycy4gT3VyIHRhcmdldCBmb3IgdGhpcyB5ZWFyIGlzIHRvIGJlIGFibGUgdG8gYWNoaWV2ZSB0aGlzIGluIDg1JSBvZiBjYXNlcy4gTGF0ZXIgdGhpcyB5ZWFyIGluIFNlcHRlbWJlciwgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgcmVjb3JkaW5nIHRvb2wgd2lsbCBzdXBwb3J0IGltcHJvdmVkIHRpbWVsaW5lc3MuXFxuXFxuV2Ugd2FudCB0byBlbnN1cmUgdGhlIGJlc3Qgb3V0Y29tZXMgZm9yIGNoaWxkcmVuIHdlIGxvb2sgYWZ0ZXIuIFdlIHdhbnQgdG8gZW5zdXJlIGNoaWxkcmVuIHdobyBuZWVkIHNwZWNpYWxpc3QgZW1vdGlvbmFsIG9yIHBzeWNob2xvZ2ljYWwgc3VwcG9ydCBhcyBhIHJlc3VsdCBvZiB0cmF1bWEgdGhleSBoYXZlIHN1ZmZlcmVkIGFyZSBpZGVudGlmaWVkIGFuZCBwcm92aWRlZCB3aXRoIHNlcnZpY2VzIHdpdGhvdXQgZGVsYXkuIEluIFF1YXJ0ZXIsIDEsIDk0JSBvZiBjaGlsZHJlbiBsb29rZWQgYWZ0ZXIgaGFkIGFuIGFzc2Vzc21lbnQgb2YgbmVlZCBjYWxsZWQgYSBzdHJlbmd0aHMgYW5kIGRpZmZpY3VsdGllcyBxdWVzdGlvbm5haXJlLiBXZSBoYXZlIGV4Y2VlZGVkIG91ciB0YXJnZXQgZm9yIHRoaXMgeWVhci4gV2UgaGF2ZSBhbHNvIGJlZW4gYWJsZSB0byBlbnN1cmUgY2hpbGRyZW4gZG8gbm90IHdhaXQgZm9yIHBzeWNob2xvZ2ljYWwgYXNzZXNzbWVudCBvciB0aGVyYXB5IHdpdGggOTUlIG9mIGNoaWxkcmVuIHJlY2VpdmluZyBoZWxwIHdpdGhpbiB0aW1lIHNjYWxlcy5cXG5cXG4gXFxuXFxuV2Ugd2FudCB0byBuYXJyb3cgdGhlIGFjaGlldmVtZW50IGdhcCBiZXR3ZWVuIGNoaWxkcmVuIGxvb2tlZCBhZnRlciBhbmQgb3RoZXIgY2hpbGRyZW4sIGFuZCBzdXBwb3J0IHRoZW0gdG8gYmUgcmVhZHkgZm9yIHdvcmsgYXMgdGhleSBnZXQgb2xkZXIuIEluIFF1YXJ0ZXIgMSwgNjYlIG9mIGNhcmUgbGVhdmVycyB3ZXJlIGludm9sdmVkIGluIGVkdWNhdGlvbiwgdHJhaW5pbmcgb3IgZW1wbG95bWVudC4gVGhpcyBpcyBhbiBpbXByb3ZlbWVudCBvbiBsYXN0IHllYXIgYW5kIGlzIGJldHRlciB0aGFuIHNpbWlsYXIgYXV0aG9yaXRpZXMgbWF0Y2hlZCBmb3IgbmVlZC4gT3VyIGFtYml0aW9uIGlzIHRvIGNvbnRpbnVlIHRvIGFjaGlldmUgaW1wcm92ZW1lbnQgaW4gdGhpcyByZXNwZWN0IHNvIHRoYXQgeW91bmcgcGVvcGxlIG1ha2UgYSBnb29kIHRyYW5zaXRpb24gdG8gYWR1bHQgbGlmZSBhbHRob3VnaCB3ZSBoYXZlIG1ldCB0aGUgdGFyZ2V0IFs2NSVdIHNldCBmb3IgdGhpcyB5ZWFyLlxcblxcbldlIHdhbnQgdG8gbWFrZSBzdXJlIHlvdW5nIGNoaWxkcmVuIHdobyBjYW5ub3QgbGl2ZSBzYWZlbHkgd2l0aCB0aGVpciBwYXJlbnRzIGRvIG5vdCB3YWl0IGJlZm9yZSB0aGV5IGNhbiBqb2luIGEgc2FmZSBwZXJtYW5lbnQgZmFtaWx5IHRocm91Z2ggYWRvcHRpb24uIEZyb20gQ291cnQgcGVybWlzc2lvbiB0byBtYXRjaCB3aXRoIGFkb3B0ZXJzIGhhcyBiZWVuIDE4NyBkYXlzIGluIFF1YXJ0ZXIgMS4gV2UgaGF2ZSBpbmNyZWFzZWQgcmVjcnVpdG1lbnQgYW5kIHdpbGwgY29udGludWUgdG8gd29yayBvbiBpbmNyZWFzaW5nIG91ciBwb29sIG9mIGFkb3B0ZXJzLiBPdXIgcGVyZm9ybWFuY2UgaW4gdGltZWxpbmVzcyBvZiBzZWN1cmluZyBhIHBlcm1hbmVudCBwbGFjZW1lbnQgZm9yIGEgY2hpbGQgcmVtYWlucyBnb29kIHdoZW4gY29tcGFyZWQgdG8gc2ltaWxhciBhdXRob3JpdGllcy5cXG5cXG5PdmVyYWxsIHBlcmZvcm1hbmNlIGhhcyBjb250aW51ZWQgdG8gaW1wcm92ZSBpbiBRdWFydGVyIDEgV2Ugd2lsbCBhbHNvIGNvbnRpbnVlIHRvIGZvY3VzIG9uIHF1YWxpdHkgb2YgcHJhY3RpY2UgdG8gZW5zdXJlIG91ciBjaGlsZHJlbiBhbmQgZmFtaWxpZXMgZ2V0IHRoZSBiZXN0IHNlcnZpY2VzLiBUaGlzIHdpbGwgcG9zaXRpb24gdGhlIHNlcnZpY2Ugd2VsbCB0byBhY2hpZXZlIGEg4oCcR29vZOKAnSBqdWRnZW1lbnQgYXQgZnV0dXJlIGluc3BlY3Rpb24gaWYgd2UgY29udGludWUgdG8gZHJpdmUgY29uc2lzdGVudCBnb29kIHByYWN0aWNlLiBUaGlzIGlzIGNoYWxsZW5nZWQgYnkgaW5jcmVhc2VkIGNhc2Utd29yayBkZW1hbmQgaW4gUXVhcnRlciAxIGNyZWF0aW5nIHNvbWUgd29ya2xvYWQgcHJlc3N1cmVzIGFjcm9zcyB0aGUgc2VydmljZS5cXG5cXG5cIn1dLFwidXNlX2N1c3RvbV90aXRsZVwiOnRydWUsXCJjdXN0b21fdGl0bGVcIjpcIkltcHJvdmUgb3VyIENoaWxkcmVuJ3MgU2VydmljZXMnIE9mc3RlZCByYXRpbmcgdG8gZ29vZFwiLFwidXNlX2N1c3RvbV9zdWJ0aXRsZVwiOnRydWUsXCJjdXN0b21fc3VidGl0bGVcIjpcIlRoaXMgZ29hbCBpcyBtZWFzdXJlZCB1c2luZyB0aGUgT2ZzdGVkIGZyYW1ld29yayBmb3IgdGhlIGluc3BlY3Rpb24gb2Ygc2VydmljZXMgZm9yIGNoaWxkcmVuIGluIG5lZWQgb2YgaGVscCBhbmQgcHJvdGVjdGlvbiwgY2hpbGRyZW4gbG9va2VkIGFmdGVyIGFuZCBjYXJlIGxlYXZlcnNcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxMi0wNi0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiJyYXRpbmciLCJ0YXJnZXQiOjIsInRhcmdldF90eXBlIjoiYWJzb2x1dGUiLCJ0YXJnZXRfZGVsdGEiOjAsInRhcmdldF9kZWx0YV9pc19wZXJjZW50IjpmYWxzZSwiYmFzZWxpbmUiOjIsIm1ldHJpYyI6eyJtZXRhZGF0YSI6IiIsImlkIjoibTh2cy0yaWkzIn0sImNvbXBhcmlzb24iOnsiY29tcGFyaXNvbl9mdW5jdGlvbiI6Ij4ifSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJlZGl0XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjo1LFwieWVhclwiOjIwMTJ9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOH0sXCJhY3Rpb25fdHlwZVwiOlwiaW5jcmVhc2VcIixcIm1haW50YWluX3R5cGVcIjpcIj5cIn0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTR9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH19LFwic3RhcnRcIjpcIjIwMTQtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTQtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJvdXIgQ2hpbGRyZW4ncycgU2VydmljZXMgT2ZzdGVkIHJhdGluZyBcIixcInVzZV9wcm9ncmVzc19vdmVycmlkZVwiOnRydWUsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwid2l0aGluX3RvbGVyYW5jZVwifSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDozNToxNS4zODJaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6MzU6MTUuMzgyWiIsImlkIjoiYzdmeC01NHhlIn0sInJlbGF0ZWRfbWVhc3VyZXMiOltdLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjM3OjMyLjI0NloiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDozNToxNS40MjVaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6Mzc6MzIuMjQ2WiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoiaGhnNS1leXZoIiwibmFtZSI6IlByb2dyZXNzIGNoZWNrIG9mIGNoaWxkIGRldmVsb3BtZW50IiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJpY29uXCI6XCJjcm9zc2hhaXJcIixcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlRoaXMgbWVhc3VyZSByZWxhdGVzIHRvIGNoaWxkcmVuIGluIE5hdGlvbmFsIEN1cnJpY3VsdW0geWVhciBncm91cCBSZWNlcHRpb24gKGNoaWxkcmVuIGFnZWQgNC01IHllYXJzKSoqXFxuXFxuVGhlIHN0YXR1dG9yeSBFYXJseSBZZWFycyBGb3VuZGF0aW9uIFN0YWdlIChFWUZTKSBmcmFtZXdvcmsgcmVxdWlyZXMgYSBwcm9maWxlIGFzc2Vzc21lbnQgdG8gYmUgY2FycmllZCBvdXQgaW4gdGhlIGZpbmFsIHRlcm0gb2YgdGhlIHllYXIgaW4gd2hpY2ggYSBjaGlsZCByZWFjaGVzIGFnZSA1LiBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoZSBwcm9maWxlIGlzIHRvIHByb3ZpZGUgYSByZWxpYWJsZSwgdmFsaWQgYW5kIGFjY3VyYXRlIGFzc2Vzc21lbnQgb2YgaW5kaXZpZHVhbCBjaGlsZHJlbi5cXG5cXG4gQ2hpbGRyZW4gYXJlIGRlZmluZWQgYXMgaGF2aW5nIHJlYWNoZWQgYSBnb29kIGxldmVsIG9mIGRldmVsb3BtZW50IGF0IHRoZSBlbmQgb2YgdGhlIEVZRlMgaWYgdGhleSBoYXZlIGFjaGlldmVkIGF0IGxlYXN0IHRoZSBleHBlY3RlZCBsZXZlbCBpbiAgMyBwcmltZSBhcmVhcyBvZiBsZWFybmluZzotXFxuXFxuKiBwZXJzb25hbCwgc29jaWFsIGFuZCBlbW90aW9uYWwgZGV2ZWxvcG1lbnRcXG5cXG4qIHBoeXNpY2FsIGRldmVsb3BtZW50XFxuXFxuKiBjb21tdW5pY2F0aW9uIGFuZCBsYW5ndWFnZVxcblxcbmFuZCBzcGVjaWZpYyBhcmVhcyBpbjotXFxuXFxuKiBtYXRoZW1hdGljc1xcblxcbiogbGl0ZXJhY3lcXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipOb3ZlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcbkdMRCBmb3IgYWxsIGNoaWxkcmVuIGluIDIwMTcgaXMgNzAuNiUgYW4gaW1wcm92ZW1lbnQgb2YgMi4zJSBjb21wYXJlZCB0byAyMDE2OyBjb250aW51aW5nIHRoZSB0cmVuZCBvZiB5ZWFyIG9uIHllYXIgaW1wcm92ZW1lbnQuXFxuXFxuV2VzdCBTdXNzZXggYWxzbyBjb250aW51ZXMgdG8gcmlzZSBpbiB0aGUgbmF0aW9uYWwgcmFua2luZ3MgZm9yIEdMRCxiZWluZyBwbGFjZWQgNzh0aCB0aGlzIHllYXIsIGFuIGltcHJvdmVtZW50IG9mIDE5IHBsYWNlcyBuYXRpb25hbGx5LkNvbXBhcmVkIHRvIHN0YXRpc3RpY2FsIG5laWdoYm91cnMsIFdlc3QgU3Vzc2V4IGlzIHJhbmtlZCA3dGggb2YgMTEgTG9jYWwgQXV0aG9yaXRpZXMsIGFuIGltcHJvdmVtZW50IG9mIDIgcGxhY2VzIHNpbmNlIDIwMTYuXFxuXFxuVGhlIGF0dGFpbm1lbnQgZ2FwIGJldHdlZW4gdGhlIGxvd2VzdCBhY2hpZXZpbmcgMjAlIG9mIGNoaWxkcmVuIGFuZCB0aGUgcmVzdCBoYXMgd2lkZW5lZCBpbiAyMDE3IGF0IHRoZSBzYW1lIHJhdGUgYXMgdGhlIG5hdGlvbmFsIGF0dGFpbm1lbnQgZ2FwLiBUaGUgYXR0YWlubWVudCBnYXAgZm9yIEVuZ2xhbmQgd2lkZW5lZCBmcm9tIDMxLjQlIHRvIDMxLjclOyB3aGlsc3QgdGhlIGdhcCBpbiBXZXN0IFN1c3NleCBoYXMgd2lkZW5lZCBmcm9tIDI3LjElIHRvIDI3LjQlXFxuXFxuR2lybHPigJkgYXR0YWlubWVudCBpbiBXZXN0IFN1c3NleCBjb250aW51ZXMgdG8gYmUgaGlnaGVyIHRoYW4gYm95c+KAmSwgd2l0aCB0aGUgZ3JlYXRlc3QgZGlmZmVyZW5jZXMgaW4gTGl0ZXJhY3kgYW5kIEV4cHJlc3NpdmUgQXJ0cyBhbmQgZGVzaWduLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5Xb3JrIHRvIHJhaXNlIEdvb2QgTGV2ZWwgb2YgRGV2ZWxvcG1lbnQgKCBHTEQpIGFjcm9zcyB0aGUgY291bnR5IGhhcyBjb250aW51ZWQgd2l0aCBzdXBwb3J0IGJlaW5nIHByb3ZpZGVkIGZvciBhbGwgc2Nob29scyB3aGVyZSBHTEQgd2FzIGJlbG93IG5hdGlvbmFsIGF2ZXJhZ2UuIFRoZSBsZXZlbCBvZiBHTEQgaXMgcmVjb3JkZWQgZWFjaCBzdW1tZXIgYnV0IHRoZSBmdWxsIHJlc3VsdHMgYXJlIG5vdCB5ZXQgYXZhaWxhYmxlIGZvciAyMDE3LiBFYXJseSBpbmRpY2F0aW9ucyBhcmUgdGhhdCBzdGFuZGFyZHMgaGF2ZSByaXNlbiBib3RoIGluIFdlc3QgU3Vzc2V4IGFuZCBuYXRpb25hbGx5IHdpdGggV2VzdCBTdXNzZXggYmVpbmcgYnJvYWRseSBpbiBsaW5lIHdpdGggbmF0aW9uYWwgYXZlcmFnZXMuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqTm92ZW1iZXIgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5Hb29kIGxldmVsIG9mIGRldmVsb3BtZW50IChHTEQpIGZvciBhbGwgY2hpbGRyZW4gaW4gMjAxNiB3YXMgNjguMyUsIGFuIGltcHJvdmVtZW50IG9mIDQuMyUgY29tcGFyZWQgdG8gMjAxNSBhbmQgY29udGludWluZyB0aGUgdHJlbmQgb2YgNCBvciA1JSBwb2ludCBpbmNyZWFzZXMgc2luY2UgMjAxMywgd2hlcmVhcyB0aGUgYXZlcmFnZSBpbmNyZWFzZSBpbiBHTEQgYWNyb3NzIHRoZSBTb3V0aCBFYXN0IHdhcyBvbmx5IDIuOSUuXFxuXFxuQXMgaW4gRW5nbGFuZCBhbmQgdGhlIFNvdXRoIEVhc3QsIHRoZXJlIGlzIGEgZGlzdGluY3QgZ2VuZGVyIGdhcCBpbiBHTEQgYXR0YWlubWVudCBpbiBXZXN0IFN1c3NleC4gQWx0aG91Z2ggdGhlIGdhcCBoYXMgcmVkdWNlZCB0byAxNS4yJSB0aGlzIHllYXIgZnJvbSAxOC40JSBpbiAyMDEzLCBpdCByZW1haW5zIGdyZWF0ZXIgdGhhbiB0aGUgU291dGggZWFzdCBhdCAxNC40JSBhbmQgRW5nbGFuZCBhdCAxNC43JS5cXG5cXG5DaGlsZHJlbuKAmXMgYmlydGggZGF0ZSwgYW5kIHRoZXJlZm9yZSB0aGUgYWdlIGF0IHdoaWNoIHRoZXkgYXJlIGFzc2Vzc2VkLCBjb250aW51ZXMgdG8gYmUgYSBzaWduaWZpY2FudCBmYWN0b3IuIFRoaXMgeWVhciA3OCUgb2YgYXV0dW1uIGJvcm4gY2hpbGRyZW4gYXR0YWluZWQgR0xELCB3aGlsc3Qgb25seSA1NiUgb2Ygc3VtbWVyIGJvcm4gY2hpbGRyZW4gYXR0YWluZWQgR0xELlxcblxcblRoZXJlIGlzIGFsc28gYSBzaWduaWZpY2FudCBhdHRhaW5tZW50IGdhcCBiZXR3ZWVuIGNoaWxkcmVuIHdpdGggYW4gRWR1Y2F0aW9uIEhlYWx0aCBhbmQgQ2FyZSBQbGFuLCBhIHN0YXRlbWVudCBvZiBTRU4gb3Igd2hvIHJlY2VpdmUgU0VOIHNjaG9vbCBzdXBwb3J0LiAyMSUgb2YgdGhlc2UgY2hpbGRyZW4gYWNoaWV2ZWQgR0xEIGNvbXBhcmVkIHRvIDY4LjMlIG9mIHRoZSBwb3B1bGF0aW9uLiBUaGVyZSB3ZXJlIDc0NCBjaGlsZHJlbiBpbiB0aGlzIGdyb3VwLlxcblxcblJlc3VsdHMgZm9yIGNoaWxkcmVuIHdobyB3ZXJlIGVsaWdpYmxlIGZvciAyIHllYXIgb2xkIGZ1bmRlZCBwbGFjZXMgc2hvdyB0aGF0IDUzJSBvZiB0aGUgY29ob3J0IHdlbnQgb24gdG8gYWNoaWV2ZSBHTEQgY29tcGFyZWQgdG8gNjguMyUgb2YgdGhlIHBvcHVsYXRpb24uXFxuXFxuKipJbXByb3ZlbWVudHMgcGxhbm5lZCoqXFxuXFxuU2Nob29sIEltcHJvdmVtZW50IEFkdmlzZXJzIGhhdmUgYmVlbiBtYWtpbmcgdGVybWx5IHZpc2l0cyB0byBhbGwgc2Nob29scyBzaW5jZSB0aGUgc3VtbWVyIHRlcm07IHRoZXNlIGluY2x1ZGUgc3BlY2lmaWMgcXVlc3Rpb25zIGZvciBhbGwgSGVhZHMgYW5kIEVZRlMgbGVhZGVycyBvbiBwdXBpbCBwcm9ncmVzcywgdGFyZ2V0IHNldHRpbmcgYW5kIG1vbml0b3JpbmcgYXR0YWlubWVudC4gVGhlIGVhcmx5IHllYXJzIGFkdmlzb3J5IHRlYW0gb2ZmZXIgdGFyZ2V0ZWQgc3VwcG9ydCB0byBzY2hvb2xzIGp1ZGdlZCBieSBPZnN0ZWQgdG8gYmUgSW5hZGVxdWF0ZSBvciBSZXF1aXJlcyBJbXByb3ZlbWVudCBhbmQgdG8gc2Nob29scyBhdHRhaW5pbmcgbG93IEdMRC4gVGhpcyBpbnZvbHZlcyBxdWFsaXR5IGFzc3VyaW5nIHByYWN0aWNlIGFuZCB0YXJnZXQgc2V0dGluZyBmb3IgZ3JvdXBzIG9mIGNoaWxkcmVuLiBUaGlzIGFwcHJvYWNoIHdpdGggc2Nob29scyBpcyBvbi1nb2luZy5cXG5cXG5Qb29yIHRyYW5zaXRpb24gaXMgYSBjb250cmlidXRvcnkgZmFjdG9yIHRvIGxvdyBHTEQgYXMgY2hpbGRyZW4gbWFrZSBvcHRpbWFsIHByb2dyZXNzIHdoZW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIgYXR0YWlubWVudCBhbmQgcHJvZ3Jlc3MgZnJvbSBzdGFydGluZyBwb2ludHMgaXMgc2hhcmVkIGVmZmVjdGl2ZWx5IGFuZCBpbiBnb29kIHRpbWUuIFRvIGFzc2lzdCBwcmUtc2Nob29sIHByYWN0aXRpb25lcnMgYW5kIHNjaG9vbCB0ZWFjaGVycyBpbiBtYW5hZ2luZyBlZmZlY3RpdmUgdHJhbnNpdGlvbnMgd2UgYXJlIHRha2luZyBhIG51bWJlciBvZiBhY3Rpb25zOlxcblxcbiogRW1iZWRkaW5nIENvdW50eS13aWRlIHNjaG9vbCBhbmQgc2V0dGluZyB0cmFuc2l0aW9uIGV2ZW50cyBhbHJlYWR5IGluIHBsYWNlXFxuKiBQcm9kdWNpbmcgdW5pdmVyc2FsIGFuZCBzdXBwb3J0ZWQgdHJhbnNpdGlvbiBndWlkYW5jZSBpbmNsdWRpbmcgY2FzZSBzdHVkaWVzIG9mIGJlc3QgcHJhY3RpY2VcXG4qIFJlLWRyYWZ0aW5nIHRyYW5zaXRpb24gZ3VpZGFuY2UgZm9yIHBhcmVudHMgYW5kIGNhcmVyc1xcbiogUHJvZHVjaW5nIGd1aWRhbmNlIG9uIGhvbWUgdmlzaXRpbmcgZm9yIHNldHRpbmdzIGFuZCBzY2hvb2xzIGFuZCBwcm9tb3RpbmcgaXQgYXMgZ29vZCBwcmFjdGljZVxcbiogUHJvZHVjaW5nIGEgMS1wYWdlIHByb2ZpbGUsIHRha2VuIGZyb20gdGhlIGV4aXN0aW5nIExlYXJuaW5nIEpvdXJuZXkgZG9jdW1lbnQsIHRvIGJlIHBhc3NlZCBmcm9tIHNldHRpbmcgdG8gc2Nob29sIGZvciBlYWNoIGNoaWxkXFxuKiBXb3JraW5nIHdpdGggSGVhZCBUZWFjaGVycyBhbmQgRWFybHkgWWVhcnMgbGVhZGVycyB0byBzZXQgb3V0IGFncmVlZCBwcmluY2lwbGVzIGFuZCBleHBlY3RhdGlvbnMgb2YgY2hpbGRyZW7igJlzIHJlYWRpbmVzcyBmb3Igc2Nob29sLCBhbmQgc2Nob29sc+KAmSByZWFkaW5lc3MgZm9yIGNoaWxkcmVuLCBhbmQgdXNpbmcgdGhlc2UgdG8gdW5kZXJwaW4gb24tZ29pbmcgZ3VpZGFuY2UgYW5kIHRyYWluaW5nLlxcblxcblRoZSB2dWxuZXJhYmxlIGxlYXJuZXJzIGF1ZGl0IHdpbGwgY29udGludWUgdG8gYmUgY2FycmllZCBvdXQgdGVybWx5IGJ5IGFkdmlzZXJzIGluIHRoZSBFYXJseSBDaGlsZGhvb2QgU2VydmljZS4gUHJlLXNjaG9vbCBzZXR0aW5ncyBpZGVudGlmaWVkIGluIHRoZSBzdW1tZXIgdGVybSBhcyBsZXNzIGFibGUgdG8gc3VwcG9ydCB2dWxuZXJhYmxlIGxlYXJuZXJzIHdpbGwgYmUgcHJpb3JpdGlzZWQgZm9yIHZpc2l0cyBieSBlYXJseSB5ZWFycyBhbmQgY2hpbGRjYXJlIGFkdmlzZXJzLiBTZXR0aW5ncyB3aGVyZSB2dWxuZXJhYmxlIGxlYXJuZXJzIGFyZSB3ZWxsIHN1cHBvcnRlZCB3aWxsIHJlY2VpdmUgdGVsZXBob25lIHN1cHBvcnQuIFByYWN0aWNlIGluIHNldHRpbmdzIG9mZmVyaW5nIGZyZWUgMiB5ZWFyIG9sZCBwbGFjZXMgd2lsbCBiZSBzY3J1dGluaXNlZCB0aHJvdWdoIHRoZSB2dWxuZXJhYmxlIGxlYXJuZXJzIGF1ZGl0IHByb2Nlc3MuIFdlIHdpbGwgcmV2aXNpdCBhIHByb2plY3QgZGV2ZWxvcGVkIHdpdGggQ2FudGVyYnVyeSBDaHJpc3RjaHVyY2ggVW5pdmVyc2l0eSBpbiAyMDE0IHRvIGltcHJvdmUgdGhlIHF1YWxpdHkgb2YgZWFybHkgeWVhcnMgcHJhY3RpY2UgaW4gd29ya2luZyB3aXRoIDIgeWVhciBvbGRzIHRocm91Z2ggb3VyIGVzdGFibGlzaGVkIGxvY2FsaXR5IGJhc2VkIG5ldHdvcmtzIGFuZCB0cmFpbmluZyBwcm9ncmFtbWUuXFxuXFxuQSBwcm9ncmFtbWUgb2YgbW9kZXJhdGlvbiBhY3Rpdml0eSB0aHJvdWdoIGxvY2FsaXR5IGJhc2VkIG5ldHdvcmtzIGhhcyBiZWVuIGVtYmVkZGVkIGFuZCB3ZSBiZWxpZXZlIHRoYXQgdGhpcyBoYXMgaGFkIGEgcG9zaXRpdmUgaW1wYWN0IG9uIEdMRCBpbiAyMDE1LTE2LiBUaGVyZSB3YXMgYSBzdXN0YWluZWQgZm9jdXMgb24gYm95cyB3cml0aW5nIHdoaWNoIHJlc3VsdGVkIGluIHRlYWNoZXJzIGJlaW5nIGFibGUgdG8gbWFrZSBqdWRnbWVudHMgYmFzZWQgb24gc291bmQgZXZpZGVuY2UuIFRoaXMgYXBwcm9hY2ggd2lsbCBjb250aW51ZSwgYW5kIHRyYWluaW5nIGV2ZW50cyBkdXJpbmcgMjAxNi0xNyB3aWxsIHN1cHBvcnQgZGlzc2VtaW5hdGlvbiBvZiBiZXN0IHByYWN0aWNlLCBwZWVyIGNvYWNoaW5nIGFuZCBlbnN1cmUgdGhlIFJlY2VwdGlvbiB0ZWFjaGVycyBhcmUgY29uZmlkZW50IGluIG1ha2luZyBhY2N1cmF0ZSBhbmQgY29uc2lzdGVudCBhc3Nlc3NtZW50cyBvZiBjaGlsZHJlbuKAmXMgbGVhcm5pbmcgYW5kIGRldmVsb3BtZW50LlxcblxcblRoZSBTY2hvb2wgSW1wcm92ZW1lbnQgU2VydmljZSBvZmZlciB0cmFpbmluZyBmb2N1c2luZyBvbiBhcmVhcyBvZiB0aGUgY3VycmljdWx1bSB3aGVyZSBmZXdlciBjaGlsZHJlbiBhY2hpZXZlIEdMRC4gVHJhaW5pbmcgaXMgY3VycmVudGx5IGJlaW5nIGRlbGl2ZXJlZCBhbmQgYSBzZXJpZXMgb2YgdHJhaW5pbmcgZXZlbnRzIGhhcyBiZWVuIHBsYW5uZWQgdG8gaW1wcm92ZSB0ZWFjaGVyc+KAmSBrbm93bGVkZ2UgYW5kIHNraWxscywgZm9yIGV4YW1wbGUsIGFkZHJlc3NpbmcgZ2VuZGVyIGlzc3VlcyBpbiBsZWFybmluZyBnZW5lcmFsbHkgYW5kIHBhcnRpY3VsYXJseSBpbiB3cml0aW5nLCBsZWFkZXJzaGlwIGluIHNjaG9vbHMsIGFuZCB1c2luZyBkYXRhIHRvIGluZm9ybSBwbGFubmluZy4gVHJhaW5pbmcgY29udGludWVzIHRvIGJlIGF2YWlsYWJsZSB0aHJvdWdoIGEgc3Vic2NyaXB0aW9uIHByb2dyYW1tZSBmb3IgcHJlLXNjaG9vbHMgdGhyb3VnaCB0aGUgRWFybHkgQ2hpbGRob29kIFNlcnZpY2UsIGFuZCB0aGlzIGNvbnRpbnVlcyB0byB0YXJnZXQgYXNwZWN0cyBvZiBsZWFybmluZyB3aGVyZSBHTEQgcmVzdWx0cyBhcmUgcG9vciwgYW5kIHRvIGFkZHJlc3MgdGhlbWVzIGVtZXJnaW5nIGZyb20gT2ZzdGVkIGluc3BlY3Rpb25zLiBXZSBoYXZlIGFuYWx5c2VkIEdMRCBieSBDaGlsZHJlbiBhbmQgRmFtaWx5IENlbnRyZSByZWFjaCBhcmVhcyBsb29raW5nIGF0IGF0dGFpbm1lbnQgaW4gc3BlY2lmaWMgYXNwZWN0cyBvZiBsZWFybmluZyBhbmQgdGhpcyB3aWxsIGRyaXZlIHRhcmdldGVkIGludGVydmVudGlvbnMgYW5kIHRyYWluaW5nIGxlZCBieSBDaGlsZHJlbiBhbmQgRmFtaWx5IENlbnRyZXMsIGFuZCB0aHJvdWdoIGxvY2FsaXR5IGJhc2VkIG5ldHdvcmtzIGR1cmluZyAyMDE2LTE3LlxcblxcblRoZSBFYXJseSBDaGlsZGhvb2QgU2VydmljZSB3aWxsIGNvbnRpbnVlIHRvIHN1cHBvcnQgYW5kIGNoYWxsZW5nZSBwcmUtc2Nob29sIHByb3ZpZGVycyB0byBpbmNsdWRlIGFsbCBjaGlsZHJlbiBhbmQgdG8gcmVmaW5lIG91ciByZWZlcnJhbCBwcm9jZXNzZXMgZm9yIGNoaWxkcmVuIHdpdGggU0VORC4gV2UgY29udGludWUgdG8gbW9uaXRvciB0aGUgb3V0Y29tZXMgb2YgY2hpbGRyZW4gd2hvIHJlY2VpdmUgZnVuZGluZyBmb3Igc3VwcG9ydCBpbiBwcmUtc2Nob29scywgaW5jbHVkaW5nIHRob3NlIGNoaWxkcmVuIHdobyBnbyBvbiB0byByZWNlaXZlIGFuIEVkdWNhdGlvbiBIZWFsdGggYW5kIENhcmUgbmVlZHMgYXNzZXNzbWVudC5cXG5cXG5cIn1dLFwidXNlX2N1c3RvbV90aXRsZVwiOnRydWUsXCJjdXN0b21fdGl0bGVcIjpcIkluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBhc3Nlc3NlZCBhdCBhIGdvb2QgbGV2ZWwgb2YgZGV2ZWxvcG1lbnRcIixcInVzZV9jdXN0b21fc3VidGl0bGVcIjp0cnVlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJUYXJnZXQ6IGluY3JlYXNlIHBlcmZvcm1hbmNlIHRvIGF0IGxlYXN0IHRoZSBsZXZlbCBvZiB1cHBlciBxdWFydGlsZSBwZXJmb3JtYW5jZSBmb3IgdGhlIFNvdXRoIEVhc3QgYnkgMjAxOVwifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDEzLTAxLTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6IiUiLCJ0YXJnZXQiOjc1LCJ0YXJnZXRfdHlwZSI6ImFic29sdXRlIiwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6IjI2dmctcDJieSJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxM30sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fSxcImFjdGlvbl90eXBlXCI6XCJpbmNyZWFzZVwifSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fX0sXCJzdGFydFwiOlwiMjAxNC0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNC0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9fSxcIm5hbWVcIjpcInByb2dyZXNzIGNoZWNrIG9mIGNoaWxkIGRldmVsb3BtZW50XCIsXCJ5U2NhbGVcIjp7XCJ1c2VfZGVmYXVsdFwiOmZhbHNlfSxcInVzZV9wcm9ncmVzc19vdmVycmlkZVwiOnRydWUsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwid2l0aGluX3RvbGVyYW5jZVwifSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMTowMzowMC43OThaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTE6MDM6MDAuNzk4WiIsInRhcmdldF90b2xlcmFuY2UiOjEwLCJpZCI6Im1pZDQtcWlldSJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbXSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMTowMzoxMi4zNjRaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTE6MDM6MDAuODUzWiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDExOjAzOjEyLjM2NFoiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6Imk2cmgtcXI3cyIsIm5hbWUiOiJQcmltYXJ5IFB1cGlsIEF0dGFpbm1lbnQiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKktleSBTdGFnZSAyKipcXG5cXG5QdXBpbHMgYWdlZCBmcm9tIDcgdG8gMTEgeWVhcnMgb2xkIHdvcmsgYXQgS2V5IFN0YWdlIDIuIFRoZSBuZXcgbW9yZSBjaGFsbGVuZ2luZyBuYXRpb25hbCBjdXJyaWN1bHVtLCB3aGljaCB3YXMgaW50cm9kdWNlZCBpbiAyMDE0LCB3YXMgYXNzZXNzZWQgYnkgbmV3IHRlc3RzIGFuZCBpbnRlcmltIGZyYW1ld29ya3MgZm9yIHRlYWNoZXIgYXNzZXNzbWVudC4gUmVzdWx0cyBmb3IgMjAxNiBhbmQgc3Vic2VxdWVudCB5ZWFycyBhcmUgbm8gbG9uZ2VyIHJlcG9ydGVkIGFzIGxldmVscywgZWFjaCBwdXBpbCByZWNlaXZlcyB0aGVpciB0ZXN0IHJlc3VsdHMgYXMgYSBzY2FsZWQgc2NvcmUgYW5kIHRlYWNoZXIgYXNzZXNzbWVudHMgYmFzZWQgb24gdGhlIHN0YW5kYXJkcyBpbiB0aGUgaW50ZXJpbSBmcmFtZXdvcmsuIFRoZSBpbnRlcmltIGFzc2Vzc21lbnQgY3JpdGVyaWEgcHJvdmlkZWQgYnkgdGhlIFN0YW5kYXJkcyBhbmQgVGVzdGluZyBBZ2VuY3kgaW5kaWNhdGVkIHRoYXQgYXNzZXNzbWVudCBzaG91bGQgYmUgYmFzZWQgb24gMTAwJSBhY2hpZXZlbWVudCBhbmQgbm90IGEg4oCYYmVzdCBmaXTigJkgbW9kZWwuIFdlc3QgU3Vzc2V4IGFwcGxpZWQgdGhpcyBhZHZpY2Ugcmlnb3JvdXNseS4gQmVjYXVzZSBvZiB0aGUgY2hhbmdlcyBkZXRhaWxlZCBhYm92ZSwgZmlndXJlcyBmb3IgMjAxNiBhbmQgMjAxNyBhcmUgbm90IGNvbXBhcmFibGUgdG8gdGhvc2UgZm9yIGVhcmxpZXIgeWVhcnMuIExldmVscyBhcmUgbm90IGNvbXBhcmFibGUgd2l0aCBzY2FsZWQgc2NvcmVzIG9yIHRlYWNoZXIgYXNzZXNzbWVudCBvdXRjb21lcy4gVGhlIGV4cGVjdGF0aW9ucyBmb3IgcHVwaWxzIGF0IHRoZSBlbmQgb2Yga2V5IHN0YWdlIDIgaGF2ZSBiZWVuIHJhaXNlZC5cXG5cXG4qKkRlY2VtYmVyIDIwMTcgVXBkYXRlOioqXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqRGVjZW1iZXIgMjAxNyBVcGRhdGU6KipcXG5cXG4tIC0gLVxcblxcbioqMjAxNi0yMDE3IFJlYWRpbmcsIFdyaXRpbmcgYW5kIE1hdGhzIChSV00pKipcXG5cXG5UaGUgbWFpbiBwdWJsaXNoZWQgaW5kaWNhdG9yIHJlbWFpbnMgUmVhZGluZywgV3JpdGluZyBhbmQgTWF0aHMgKFJXTSksIHRob3NlIHB1cGlscyB3aG8gcmVhY2ggb3IgZXhjZWVkIHRoZSBleHBlY3RlZCBzdGFuZGFyZCBpbiBhbGwgb2YgcmVhZGluZyB0ZXN0LCB3cml0aW5nIHRlYWNoZXIgYXNzZXNzbWVudCBhbmQgbWF0aHMgdGVzdC4gSW4gV2VzdCBTdXNzZXggNTUlIG9mIGFsbCBwdXBpbHMgcmVhY2hlZCB0aGF0IHN0YW5kYXJkIGNvbXBhcmVkIHRvIHRoZSBuYXRpb25hbCBhdmVyYWdlIG9mIDYyJS4gVGhlIFdlc3QgU3Vzc2V4IGF2ZXJhZ2UgaGFzIGluY3JlYXNlZCBtb3JlIHJhcGlkbHkgdGhhbiB0aGUgbmF0aW9uYWwgYW5kIHRoZSBnYXAgaGFzIG5vdyByZWR1Y2VkIGJ5IDIlIHRvIGp1c3QgNyUuIFRoZSBzYW1lIHBpY3R1cmUgaXMgcmVmbGVjdGVkIGFnYWluc3QgdGhlIFNvdXRoIEVhc3QsIHdoZXJlIHRoZSBpbmNyZWFzZSBpcyBvbmx5IDglLCB0aGUgZ2FwIGhhcyBub3cgcmVkdWNlZCBieSAyJSB0byBqdXN0IDglLlxcblxcbldoaWxzdCB0aGVyZSB3YXMgYSAxMCUgcG9pbnQgaW5jcmVhc2UgZnJvbSAyMDE2LCB0aGUgcmF0ZSBvZiBpbXByb3ZlbWVudCBuZWVkcyB0byBhY2NlbGVhcmF0ZSBzbyB0aGF0IHRoZSAyMDIyIHRhcmdldCBpcyByZWFjaGVkLiBXcml0aW5nIGFuZCBtYXRoZW1hdGljcyByZW1haW4gdGhlIGFyZWFzIG9mIGNvbmNlcm4uXFxuXFxuR3JlYXRlciBEZXB0aFxcblxcblVzaW5nIHRoZSBTdGFuZGFyZCBhbmQgVGVzdGluZyBBZ2VuY3nigJlzIGFzc2Vzc21lbnQgY3JpdGVyaWEsIHRoZSBleHBlY3RlZCBzdGFuZGFyZCBpbiB0aGUgdGVzdHMgaXMgYSBzY2FsZWQgc2NvcmUgb2YgMTAwIG9yIGFib3ZlLiBTb21lIHB1cGlscyB3aG8gYXR0YWluIHRoZSBleHBlY3RlZCBzdGFuZGFyZCBhcmUganVkZ2VkIHRvIGJlIOKAnHdvcmtpbmcgYXQgZ3JlYXRlciBkZXB0aCB3aXRoaW4gdGhlIGV4cGVjdGVkIHN0YW5kYXJk4oCdIChHRFMpLiBHRFMgaXMgdXNlZCBpbiB0aGUgY2hhcnRzIGJlbG93LCBidXQgaW4gc29tZSBwdWJsaWNhdGlvbnMgKGUuZy4gQVNQKSB0aGUgdGVybSDigJxIaWdoIFN0YW5kYXJk4oCdIGlzIHVzZWQgZm9yIHN1Y2ggcHVwaWxzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy83MjU2MjlCNy1BMTE4LTQ0MTYtQjRGNC05MUM4NEU2NTQ3NTFcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipJbmRpdmlkdWFsIFN1YmplY3RzKipcXG5cXG5BdHRhaW5tZW50IGF0IHRoZSBleHBlY3RlZCBzdGFuZGFyZCBpbiB0aGUgdGVzdHMgaXMgaGlnaGVzdCBpbiBHUFMgKGdyYW1tYXIsIHB1bmN0dWF0aW9uIGFuZCBzcGVsbGluZykgYXQgNzQlIGNvbXBhcmVkIHRvIHRoZSBuYXRpb25hbCBhdmVyYWdlIG9mIDc4JSAoU291dGggRWFzdCA3NyUpLlxcblxcbkF0dGFpbm1lbnQgaXMgbG93ZXN0IGluIG1hdGhzIGF0IDcxJSBjb21wYXJlZCB0byB0aGUgbmF0aW9uYWwgYXZlcmFnZSBvZiA3NSUgKFNvdXRoIEVhc3QgYWxzbyA3NSUpLlxcblxcbkF0dGFpbm1lbnQgaW4gcmVhZGluZyBpcyBhdCA3MSUgY29tcGFyZWQgdG8gdGhlIG5hdGlvbmFsIGF2ZXJhZ2Ugb2YgNzIlIChTb3V0aCBFYXN0IDc0JSkuXFxuXFxuSW4gd3JpdGluZyA2OSUgb2YgcHVwaWxzIHdlcmUgYXNzZXNzZWQgYnkgdGVhY2hlcnMgYXMgd29ya2luZyBhdCB0aGUgZXhwZWN0ZWQgc3RhbmRhcmQsIHRoaXMgd2FzIGxvd2VyIHRoYW4gaW4gYW55IG9mIHRoZSB0ZXN0IHN1YmplY3RzIGFuZCBjb21wYXJlcyB0byB0aGUgbmF0aW9uYWwgYXZlcmFnZSBvZiA3NyUgKFNvdXRoIEVhc3QgYWxzbyA3NyUpLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9CNkQ0QzQzNC1FRjQzLTRCQTEtODZEOS1GQjkzNTc3QjU0QTVcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvNTQ3MThCNDctODVBNy00MjFFLTkxOTItMkEwMjM4OTQwMEZCXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkFsdGhvdWdoIHNvbWUgZ2FpbnMgaGF2ZSBiZWVuIG1hZGUgYWdhaW5zdCBTdGF0aXN0aWNhbCBuZWlnaGJvdXJzLCBXZXN0IFN1c3NleCByZW1haW5zIGF0IHRoZSBsb3dlc3QgcmFuayBmb3IgNyBvZiB0aGUgMTEgaW5kaWNhdG9ycyBmb3IgQWxsIFB1cGlscy4gQm95cyBzaG93IHRoZSBtb3N0IGltcHJvdmVtZW50IGFnYWluc3QgU3RhdGlzdGljYWwgTmVpZ2hib3VycywgYWx0aG91Z2ggV2VzdCBTdXNzZXggcmVtYWlucyByYW5rZWQgMTAgb3IgMTEgb3V0IG9mIDExIGluIG1vcmUgdGhhbiBoYWxmIHRoZSAzMyBpbmRpY2F0b3JzIGFjcm9zcyBhbGwgZ2VuZGVycy5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipDb21wYXJpc29uIHdpdGggb3RoZXIgTG9jYWwgQXV0aG9yaXRpZXMgKHJhbmtpbmdzKToqKlxcblxcbk5hdGlvbmFsL3N0YXRpc3RpY2FsIG5laWdoYm91cnM6IFdlc3QgU3Vzc2V4J3MgQWxsIFB1cGlscyBuYXRpb25hbCByYW5raW5ncyBmb3IgRXhwZWN0ZWQgU3RhbmRhcmQgaW4gTWF0aHMsIFJXTSwgR1BTIGFuZCBTY2llbmNlIGFsbCBzaG93IGltcHJvdmVtZW50LiBUaGVyZSBpcyBpbXByb3ZlbWVudCBmb3IgQWxsIFB1cGlscyBpbiBSV00gYXQgR3JlYXRlciBUaGFuIEV4cGVjdGVkIFN0YW5kYXJkIHRvbywgdGhvdWdoIGFsbCBvdGhlciBzdWJqZWN0cyBhcmUgZG93bi5cXG5cXG5HaXJscyBzaG93IGltcHJvdmVtZW50IGluIE1hdGhzIGF0IHRoZSBFeHBlY3RlZCBTdGFuZGFyZCBhbmQgZ3JlYXRlciB0aGFuIEV4cGVjdGVkIGFuZCBhdCB0aGUgZXhwZWN0ZWQgU3RhbmRhcmQgZm9yIEdQUyBhbmQgU2NpZW5jZS4gVGhlIEJveXMgc2hvdyB0aGUgbW9zdCBpbXByb3ZlbWVudCBpbiByYW5raW5ncyB3aXRoIDcgb2YgdGhlIDExIGluZGljYXRvcnMgdXAgb24gbGFzdCB5ZWFyLCB3aXRoIFNjaWVuY2Ugc2hvd2luZyBhbiBpbmNyZWFzZSBvZiAzNyBwbGFjZXMuIFdpdGggdGhlIGV4Y2VwdGlvbiBvZiBHcmVhdGVyIFRoYW4gRXhwZWN0ZWQgUmVhZGluZywgV2VzdCBTdXNzZXggcmVtYWlucyBpbiB0aGUgbG93ZXIgaGFsZiBvZiByYW5raW5ncyBuYXRpb25hbGx5LlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8zNUZFNzE5My1EM0M3LTQyOUQtODQyMS0yNjdCRDNFNUJGNERcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiU291dGggRWFzdDogV2VzdCBTdXNzZXjigJlzIHJhbmtpbmdzLCBhZ2FpbnN0IHRoZSAxOSBTb3V0aCBFYXN0IGdyb3VwIG9mIExvY2FsIEF1dGhvcml0aWVzLCBhcmU6XFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiBSV00gRVhTKyAoPTE4dGggb2YgMTkpXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzFFNkE4NDE1LUQ0NTktNDY3QS1BQzI4LUJBMkRDMkY1NUQ2NFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIgUmVhZGluZyBFWFMrID0gMTN0aCBvZiAxOVxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgMjAxNiBrZXkgc3RhZ2UgMiBhc3Nlc3NtZW50cyB3ZXJlIHRoZSBmaXJzdCB3aGljaCBhc3Nlc3MgdGhlIG5ldywgbW9yZSBjaGFsbGVuZ2luZyBuYXRpb25hbCBjdXJyaWN1bHVtIHdoaWNoIHdhcyBpbnRyb2R1Y2VkIGluIDIwMTQuIE5ldyB0ZXN0cyBhbmQgaW50ZXJpbSBmcmFtZXdvcmtzIGZvciB0ZWFjaGVyIGFzc2Vzc21lbnQgaGF2ZSBiZWVuIGludHJvZHVjZWQgdG8gcmVmbGVjdCB0aGUgcmV2aXNlZCBjdXJyaWN1bHVtLiBSZXN1bHRzIGFyZSBubyBsb25nZXIgcmVwb3J0ZWQgYXMgbGV2ZWxzLCBhbmQgZWFjaCBwdXBpbCB3aWxsIG5vdyByZWNlaXZlIHRoZWlyIHRlc3QgcmVzdWx0cyBhcyBhIHNjYWxlZCBzY29yZSBhbmQgdGVhY2hlciBhc3Nlc3NtZW50cyBiYXNlZCBvbiB0aGUgc3RhbmRhcmRzIGluIHRoZSBpbnRlcmltIGZyYW1ld29yay4gVGhlIGV4cGVjdGVkIHN0YW5kYXJkIGhhcyBiZWVuIHJhaXNlZCBhbmQgdGhlIGFjY291bnRhYmlsaXR5IGZyYW1ld29yayBmb3Igc2Nob29scyBoYXMgYWxzbyBjaGFuZ2VkLiBUaGVzZSBjaGFuZ2VzIG1lYW4gdGhhdCB0aGUgZXhwZWN0ZWQgc3RhbmRhcmQgaXMgaGlnaGVyIGFuZCBub3QgY29tcGFyYWJsZSB3aXRoIHRoZSBleHBlY3RlZCBzdGFuZGFyZCB1c2VkIGluIHByZXZpb3VzIHllYXLigJlzIHN0YXRpc3RpY3MuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzM5RjE5M0UzLUY4RDAtNDM4OS1BQTE3LUQ2ODQzQkE2MDI2RlwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJXcml0aW5nIFRBIEVYUyA9ICgxOXRoIG9mIDE5KVwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy85QkM4QkQzNC0xMjY4LTQwOTItODY3QS1FQTM1RDE4NUE5NEZcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiTWF0aHMgRVhTKyAoPTE0dGggb2YgMTkpXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0NBNjYxOTRGLTE2QjEtNENDQS05MTc4LTcwMkY5MkNFNUM1MFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJhYSBcXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSB0byB0aGUgZW5kIG9mIFNlcHRlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcbioqS2V5IFN0YWdlIDEqKiBwcm92aXNpb25hbCBvdXRjb21lcyBhcmUgbm93IGF2YWlsYWJsZSBhbmQgdGhlIGRhdGEgYmVsb3cgaGFzIGJlZW4gdXBkYXRlZC4gV2VzdCBTdXNzZXggcmVzdWx0cyBhcmUgc3RpbGwgYmVsb3cgdGhlIG5hdGlvbmFsIGF2ZXJhZ2UgYnV0IGltcHJvdmVkIGF0IGEgZmFzdGVyIHJhdGUgdGhhbiB0aGUgbmF0aW9uYWwgYXZlcmFnZSBhbmQsIHRoZXJlZm9yZSwgY2xvc2luZyB0aGUgZ2FwIHRvIHRoZSBuYXRpb25hbCBmaWd1cmUuXFxuXFxuKipLZXkgU3RhZ2UgMioqIHByb3Zpc2lvbmFsIG91dGNvbWVzIGNvbmZpcm0gdGhvc2UgcmVwb3J0ZWQgaW4gSnVseSAyMDE3LiBXZXN0IFN1c3NleCByZXN1bHRzIGFyZSBzdGlsbCBiZWxvdyB0aGUgbmF0aW9uYWwgYXZlcmFnZSBidXQgYXBhcnQgZnJvbSBpbiByZWFkaW5nICh3aGljaCBpcyBjbG9zZSB0byBuYXRpb25hbCBhdmVyYWdlKSBpbXByb3ZlZCBhdCBhIGZhc3RlciByYXRlIHRoYW4gdGhlIG5hdGlvbmFsIGF2ZXJhZ2UgYW5kLCB0aGVyZWZvcmUsIGNsb3NpbmcgdGhlIGdhcC5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDEgLSB0byB0aGUgZW5kIG9mIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG4qKktleSBTdGFnZSAxKiogaXMgYW4gaW5kaWNhdG9yIG9mIHRoZSBjdXJyZW50IHBpY3R1cmUuIERhdGEgc2hvd24gaXMgcHJvdmlzaW9uYWwgaW50ZXJpbSBkYXRhLCBhcyBhIHZlcnkgc21hbGwgbnVtYmVyIG9mIHNjaG9vbHMgYXJlIHN0aWxsIHRvIHVwbG9hZCBkYXRhIHNldHMuIEl0IGlzIHVubGlrZWx5IGludGVyaW0gZGF0YSB3aWxsIHJhZGljYWxseSBjaGFuZ2Ugd2hlbiByZW1haW5pbmcgdXBsb2FkcyBoYXZlIGJlZW4gY29tcGxldGVkLlxcblxcbioqS2V5IFN0YWdlIDIqKiBkYXRhIHdhcyBhdmFpbGFibGUgZm9yIG5hdGlvbmFsIGRvd25sb2FkIGZyb20gdGhlIDR0aCBKdWx5IDIwMTcuIFRoZSBkYXRhIHNob3duIHJlcHJlc2VudHMgdGhlIHByb3BvcnRpb24gb2YgcHVwaWxzIGFjaGlldmluZyB0aGUg4oCYZXhwZWN0ZWQgc3RhbmRhcmTigJkgYW5kIOKAmGdyZWF0ZXIgZGVwdGjigJkuIFRoZSBwcm9wb3J0aW9uIG9mIHB1cGlscyBhY2hpZXZpbmcg4oCYZ3JlYXRlciBkZXB0aOKAmSBhcyBhIHNlcGFyYXRlIG1lYXN1cmUgaXMgbm90IHlldCBhdmFpbGFibGUuIEFsbCBzY2hvb2xzIGFyZSBjdXJyZW50bHkgcmV2aWV3aW5nIHRoZWlyIGRhdGEgaW4gdGVybXMgb2YgdGhlIG51bWJlciBvZiBwdXBpbHMgZm9yIHdob20gdGhleSB3aWxsIGFwcGVhbCBhbmQgc2VlayBhIHJlY291bnQgLyByZW1hcmsuIFB1cGlscyB0eXBpY2FsbHkgcHV0IGZvcndhcmQgZm9yIHJlY291bnQgLyByZW1hcmsgYXJlIG5vIG1vcmUgdGhhbiAzIHBvaW50cyBiZWxvdyB0aHJlc2hvbGQgZm9yIGFjaGlldmluZyB0aGUg4oCYZXhwZWN0ZWQgc3RhbmRhcmTigJkuIEluIDIwMTYsIHRoaXMgcHJvY2VzcyBoYWQgYSsyJSBkaWZmZXJlbmNlIHRvIHRoZSBlYXJseSB1bnZhbGlkYXRlZCBkYXRhLiBOYXRpb25hbCBkYXRhIGhhcyBiZWVuIHRha2VuIGZyb20gdGhlIFN0YXRpc3RpY2FsIEZpcnN0IFJlbGVhc2UgKFNGUikgYXZhaWxhYmxlIG9uIHRoZSBEZkUgd2Vic2l0ZS5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMEIxMDFDNjgtMTU5Mi00M0I1LTgyQzQtMTQ1RjZDQTI0NDhGXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzQ3Qzk4MTZGLUZERTktNDgxNC05NTc3LTU2MzA0RjJCNDIwM1wifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE2KipcXG5cXG4tIC0gLVxcblxcblRoZSByZXZpc2VkIEtleSBTdGFnZSAyIHJlc3VsdHMgaGF2ZSBiZWVuIHJlbGVhc2VkLCBhbmQgZm9yIFdlc3QgU3Vzc2V4IDQ1JSBvZiBwdXBpbHMgYWNoaWV2aW5nIHRoZSBleHBlY3RlZCBzdGFuZGFyZCBpbiByZWFkaW5nLCB3cml0aW5nIGFuZCBtYXRoZW1hdGljcyAoY29tYmluZWQpIHdoaWNoIGlzIHJhbmsgMzMgYWdhaW5zdCAzNCBTaGlyZSBQbHVzIGNvdW50aWVzLiBUaGVzZSByZXN1bHRzIGFyZSBmcm9tIG5ldyB0ZXN0cyBhbmQgdGVhY2hlciBhc3Nlc3NtZW50IG9mIHRoZSBuZXcgbmF0aW9uYWwgQ3VycmljdWx1bSBhbmQgYXJlIG5vdCBkaXJlY3RseSBjb21wYXJhYmxlIHdpdGggcHJldmlvdXMgbWVhc3VyZXMuIFRoZXNlIHJlc3VsdHMgYXJlIGRpc2FwcG9pbnRpbmcuXFxuXFxuU2Nob29sIGltcHJvdmVtZW50LCB3b3JraW5nIHdpdGggc2Nob29scywgaGF2ZSBwcm9kdWNlZCBhIHByb2dyYW1tZSBvZiBzdXBwb3J0IGFuZCB0cmFpbmluZyB0byBpbXByb3ZlIG91dGNvbWVzIGF0IEtleSBTdGFnZSAxIGFzIHdlbGwgYXMgS2V5IFN0YWdlIDIuIFdlc3QgU3Vzc2V4IG9mZmljZXJzIGFyZSB3b3JraW5nIHdpdGggc2Nob29scyBvbiB0aGlzIGFjdGlvbiBwbGFuIHRvIGltcHJvdmUgS2V5IFN0YWdlIDIgb3V0Y29tZXMgaW4gMjAxNy5cXG5cXG5cIn1dLFwidXNlX2N1c3RvbV90aXRsZVwiOnRydWUsXCJjdXN0b21fdGl0bGVcIjpcIlB1cGlscyBhY2hpZXZpbmcgdGhlIGV4cGVjdGVkIHN0YW5kYXJkIG9mIGRldmVsb3BtZW50IGF0IHRoZSBlbmQgb2YgS2V5IFN0YWdlIDJcIixcInVzZV9jdXN0b21fc3VidGl0bGVcIjp0cnVlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJUaGlzIGdvYWwgaXMgbWVhc3VyZWQgYnkgdHJhY2tpbmcgcHVwaWwgYWNoaWV2ZW1lbnQgYXQgS2V5IFN0YWdlIDIuICBJdCBpcyBvdXIgYW1iaXRpb24gdG8gYmUgYXMgZ29vZCBhcyB0aGUgdG9wIDI1JSBvZiBoaWdoZXN0IHBlcmZvcm1pbmcgY291bnRpZXMgaW4gdGhlIGNvdW50cnkgYnkgMjAxOS5cIixcImljb25cIjpcInRleHRcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxNi0wOS0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiIlIiwidGFyZ2V0Ijo2MywidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YSI6MCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6ODQsIm1ldHJpYyI6eyJtZXRhZGF0YSI6IiIsImlkIjoidm5mYS1ycnEzIn0sImNvbXBhcmlzb24iOnsiY29tcGFyaXNvbl9mdW5jdGlvbiI6Ij4ifSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJlZGl0XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjo4LFwieWVhclwiOjIwMTZ9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOH0sXCJhY3Rpb25fdHlwZVwiOlwiaW5jcmVhc2VcIixcIm1haW50YWluX3R5cGVcIjpcIj5cIixcInRhcmdldF90eXBlXCI6XCJhYnNvbHV0ZVwifSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fX0sXCJzdGFydFwiOlwiMjAxNC0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNC0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCIsXCJkYXRhc2V0XCI6XCJpZGs2LWRhaWVcIn0sXCJ0eXBlXCI6XCJzY3JhdGNoXCJ9LFwibmFtZVwiOlwiUGVyY2VudGFnZSBvZiBhdXRob3JpdHkgZm9yIHB1cGlsIGF0dGFpbm1lbnQgYXQgS2V5IFN0YWdlIDJcIixcInVzZV9wcm9ncmVzc19vdmVycmlkZVwiOnRydWUsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwiYmFkXCJ9In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjQ3OjU2LjczMloiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QxMDo0Nzo1Ni43MzJaIiwidGFyZ2V0X3RvbGVyYW5jZSI6NiwiaWQiOiJwY3I5LWhleGEifSwicmVsYXRlZF9tZWFzdXJlcyI6W3sibWV0YWRhdGEiOiIiLCJpZCI6ImozYnotcTh4cyJ9LHsibWV0YWRhdGEiOiIiLCJpZCI6ImRnNDUtNnRlOCJ9XSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDo0OTowOC4xODJaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6NDc6NTYuODAzWiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDEwOjQ5OjA4LjE4MloiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6IjlpMmstdTk3aiIsIm5hbWUiOiJLZXkgU3RhZ2UgNCBQcm9ncmVzcyA4IHNjb3JlIDAuMDMiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcImljb25cIjpcImNvbXBvc2VcIixcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyAtIHRvIHRoZSBlbmQgb2YgRGVjZW1iZXIgMjAxNyoqXFxuXFxuSW4gMjAxNiB0aGUgaGVhZGxpbmUgbWVhc3VyZSBmb3IgS2V5IFN0YWdlIDQgcmVzdWx0cyAoR0NTRSkgaGFzIGNoYW5nZWQgdG8gUHJvZ3Jlc3MgOCwgYSBtZWFzdXJlIG9mIHRoZSBwcm9ncmVzcyBwdXBpbHMgbWFrZSBmcm9tIEtleSBTdGFnZSAyIChwcmltYXJ5IHNjaG9vbCBZZWFyIDYpIHRvIEtleSBTdGFnZSA0IChzZWNvbmRhcnkgc2Nob29sIFllYXIgMTEpIGluIGEgcmFuZ2Ugb2Ygc3ViamVjdHMgaW5jbHVkaW5nIEVuZ2xpc2gsIE1hdGhlbWF0aWNzLCBhdCBsZWFzdCAzIEVuZ2xpc2ggQmFjY2FsYXVyZWF0ZSBzdWJqZWN0cyBhbmQgdXAgdG8gdGhyZWUgb3RoZXIgZ29vZCBHQ1NFIHN1YmplY3RzLiBGdXJ0aGVyIGluZm9ybWF0aW9uIGlzIGhlbGQgdW5kZXI6W2h0dHBzOi8vd3d3Lmdvdi51ay9nb3Zlcm5tZW50L3B1YmxpY2F0aW9ucy9wcm9ncmVzcy04LXNjaG9vbC1wZXJmb3JtYW5jZS1tZWFzdXJlXVswXVxcblxcbkZvciAyMDE2LzE3LCBXZXN0IFN1c3NleCdzIGF2ZXJhZ2UgUHJvZ3Jlc3MgOCBzY29yZSBpcyAwLjAzLCB3aGljaCBpcyBiZXR0ZXIgdGhhbiBib3RoIHRoZSB3aG9sZSBvZiBFbmdsYW5kICgtMC4wMykgYW5kIHRoZSBTb3V0aCBFYXN0ICgtMC4wMikuIFdlc3QgU3Vzc2V4IGlzIGN1cnJlbnRseSByYW5rZWQ9NTB0aCwgYW5kIGlzIGluIHRoZSBzZWNvbmQgcXVhcnRpbGUsIGluIHJlbGF0aW9uIHRvIGFsbCBsb2NhbCBhdXRob3JpdGllcy5cXG5cXG5CQVNJQ1M6IEFzIGFwZXJjZW50YWdlIG9mIGFsbCBwdXBpbHMgYXQgdGhlIGVuZCBvZiBrZXkgc3RhZ2UgNC4gSW4gMjAxNC8xNSBhbmQgZWFybGllciwgd2hlcmUgdGhlIEVuZ2xpc2ggbGFuZ3VhZ2UgYW5kIEVuZ2xpc2ggbGl0ZXJhdHVyZSBvcHRpb24gd2FzIGNob3NlbiBpbiBFbmdsaXNoLCBleGFtcyBpbiBib3RoIG11c3QgYmUgdGFrZW4gYW5kIGEgQyBncmFkZSBvciBhYm92ZSBhY2hpZXZlZCBpbiBFbmdsaXNoIGxhbmd1YWdlLiBGcm9tIDIwMTUvMTYsIHRvIG1lZXQgdGhlIEVuZ2xpc2ggcmVxdWlyZW1lbnQgb2YgdGhlIEEqLUMgaW4gRW5nbGlzaCBhbmQgbWF0aHMgYXR0YWlubWVudCBtZWFzdXJlLCBhIEMgaW4gZWl0aGVyIEVuZ2xpc2ggbGFuZ3VhZ2Ugb3IgRW5nbGlzaCBsaXRlcmF0dXJlIGNvdW50cyBhbmQgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgdG8gdGFrZSBib3RoLlxcblxcbkluIDIwMTYvMTcsIGZvbGxvd2luZyB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSByZWZvcm1lZCA5IHRvIDEgR0NTRXMgaW4gRW5nbGlzaCwgYSBncmFkZSA1b3IgYWJvdmUgaW4gZWl0aGVyIEVuZ2xpc2ggbGFuZ3VhZ2Ugb3IgRW5nbGlzaCBsaXRlcmF0dXJlIGNvdW50cyBhbmQgdGhlcmUgcmVtYWlucyBubyByZXF1aXJlbWVudCB0byB0YWtlIGJvdGggaW4gb3JkZXIgdG8gYWNoaWV2ZSBhIHBhc3MuIEZvciAyMDE2LzE3IFdlc3QgU3Vzc2V4J3MgcGVyY2VudGFnZSB3YXMgNDQuOCUsIGNvbXBhcmVkIHRvIDQyLjQlIGZvciBFbmdsYW5kIGFuZCA0NS40JSBmb3IgdGhlIFNvdXRoIEVhc3QuXFxuXFxuRU5HTElTSCBCQUNDQUxBVVJFQVRFOiBBcyBhIHBlcmNlbnRhZ2Ugb2YgcHVwaWxzIGF0IHRoZSBlbmQgb2Yga2V5IHN0YWdlIDQuIEluIDIwMTQvMTUgYW5kIGVhcmxpZXIsIHdoZXJlIHRoZSBFbmdsaXNoIGxhbmd1YWdlIGFuZCBFbmdsaXNoIGxpdGVyYXR1cmUgb3B0aW9uIHdhcyBjaG9zZW4gaW4gRUJhY2MgRW5nbGlzaCwgZXhhbXMgaW4gYm90aCBoYWQgdG8gYmUgdGFrZW4gYW5kIGEgQyBncmFkZSBvciBhYm92ZSBhY2hpZXZlZCBpbiBFbmdsaXNoIGxhbmd1YWdlLiBJbiAyMDE1LzE2LCB0byBtZWV0IHRoZSBFbmdsaXNoIHJlcXVpcmVtZW50IG9mIHRoZSBFQmFjYywgZXhhbXMgaW4gYm90aCBoYWQgdG8gYmUgdGFrZW4gYW5kIGEgQyBncmFkZSBvciBhYm92ZSBhY2hpZXZlZCBpbiBlaXRoZXIgRW5nbGlzaCBsYW5ndWFnZSBvciBFbmdsaXNoIGxpdGVyYXR1cmUuIEZyb20gMjAxNywgdGhlIGRlZmluaXRpb24gb2YgJ3BlcmNlbnRhZ2UgYWNoaWV2aW5nIHRoZSBFbmdsaXNoIEJhY2NhbGF1cmVhdGUnIGhhcyBjaGFuZ2VkIHRvICd0aGUgcHJvcG9ydGlvbiBvZiBwdXBpbHMgYWNoaWV2aW5nIHRoZSBFQmFjYyB3aGljaCBpbmNsdWRlcyBhIGdyYWRlIDUgb3IgYWJvdmUgaW4gRW5nbGlzaCBhbmRtYXRoZW1hdGljcywgYW5kIGdyYWRlIEMgb3IgYWJvdmUgaW4gdW5yZWZvcm1lZCBzdWJqZWN0cycgZm9sbG93aW5nIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIHJlZm9ybWVkIDkgdG8gMSBHQ1NFcyBpbiBFbmdsaXNoIGFuZCBtYXRoZW1hdGljcy5cXG5cXG5FeGFtcyBpbiBib3RoIEVuZ2xpc2ggbGl0ZXJhdHVyZSBhbmQgRW5nbGlzaCBsYW5ndWFnZSBzdGlsbCBoYXZlIHRvIGJlIHRha2VuIGFuZCBhIGdyYWRlIDUgb3IgYWJvdmUgYWNoaWV2ZWQgaW4gb25lIHRvIGFjaGlldmUgYSBwYXNzIGluIHRoZSBFbmdsaXNoIHJlcXVpcmVtZW50IG9mIHRoZSBFQmFjYy4gVGhlIDktNCBwYXNzIHNob3dzIHB1cGlscyB3aG8gYWNoaWV2ZWQgYSBncmFkZSA0IG9yIGFib3ZlIGluIEVuZ2xpc2ggYW5kbWF0aGVtYXRpY3MsIGFuZCBhIGdyYWRlIEMgaW4gdW5yZWZvcm1lZCBzdWJqZWN0cyBhbmQgaXMgc2hvd24gYWxvbmdzaWRlIHRoZSBoZWFkbGluZSBtZWFzdXJlIGZvciB0cmFuc3BhcmVuY3kgYW5kIGNvbXBhcmFiaWxpdHkuRm9yIDIwMTYvMTcgV2VzdCBTdXNzZXgncyBwZXJjZW50YWdlIHdhcyAyMS4wJSwgY29tcGFyZWQgdG8gMjEuMiUgZm9yIEVuZ2xhbmQgYW5kIDIzLjYlIGZvciB0aGVTb3V0aCBFYXN0LlxcblxcblJldmlzZWQgZGF0YSBpc3JlbGVhc2VkIGF0IHRoZSBlbmQgb2YgSmFudWFyeSAyMDE4LlxcblxcblswXTogaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvcHVibGljYXRpb25zL3Byb2dyZXNzLTgtc2Nob29sLXBlcmZvcm1hbmNlLW1lYXN1cmVcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDEg4oCTIHRvIHRoZSBlbmQgb2YgSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcbkFzIHRoZSBjdXJyZW50IHJlc3VsdHMgYXJlIGJhc2VkIG9uIGFubnVhbCBleGFtaW5hdGlvbnMgc2F0IGluIEp1bmUgMjAxNiB0aGUgb3V0Y29tZXMgb25seSBjaGFuZ2UgbWFyZ2luYWxseSB0aHJvdWdob3V0IHRoZSB5ZWFyLiBWYWxpZGF0ZWQgcmVzdWx0cyB3ZXJlIHB1Ymxpc2hlZCBpbiBKYW51YXJ5IDIwMTcuIFRoZSByZXN1bHRzIGZvciB0aGUgZXhhbWluYXRpb25zIHNhdCBpbiBKdW5lIDIwMTcgd2lsbCBiZSByZXBvcnRlZCB3aGVuIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiB0aGUgYXV0dW1uLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgNCDigJMgdG8gdGhlIGVuZCBvZiBNYXJjaCAyMDE3KipcXG5cXG4tIC0gLVxcblxcbk9uIHRoZSBuZXcgbWVhc3VyZSwgUHJvZ3Jlc3MgOCwgV2VzdCBTdXNzZXjigJlzIG91dGNvbWUgaXMgd2VsbCBhYm92ZSB0aGUgbmF0aW9uYWwgYXZlcmFnZSBhdCArMC4xIChuYXRpb25hbCBhdmVyYWdlIOKAkzAuMDMpIGlzIHJhbmtlZCAzcmQgb2YgdGhlIDM0IFNoaXJlIHBsdXMgY291bnRpZXMgYW5kIGluIHRoZSB0b3AgMjAlIG9mIGFsbCBsb2NhbCBhdXRob3JpdGllcy4gV2VzdCBTdXNzZXggaXMgYWxzbyBhYm92ZSB0aGUgbmF0aW9uYWwgYXZlcmFnZSBmb3Igb3RoZXIgcmVwb3J0ZWQgb3V0Y29tZXM6IEF0dGFpbm1lbnQgOCwgRW5nbGlzaCBCYWNjYWxhdXJlYXRlIGFuZCBCYXNpY3MgKEEqLUMgaW4gYm90aCBFbmdsaXNoIGFuZCBtYXRoZW1hdGljcykuXFxuXFxuXCJ9XSxcInRpdGxlX2ltYWdlXCI6XCIvYXBpL2Fzc2V0cy8wQjUxMkMwNC03RjQ2LTQxNzktQjhEQS1CRTE1MzdFOERBMDVcIixcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJJbmNyZWFzZSBLZXkgU3RhZ2UgNCBQcm9ncmVzcyA4IHNjb3JlIHRvIGJlIGluIHRoZSB0b3AgcXVhcnRpbGUgb2YgYWxsIExvY2FsIEF1dGhvcml0aWVzIGJ5IDIwMjJcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxNi0wOS0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiIgc2NvcmUgIiwidGFyZ2V0IjowLjA3LCJ0YXJnZXRfdHlwZSI6ImFic29sdXRlIiwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6IjJ1angtODQzaSJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6OCxcInllYXJcIjoyMDE2fSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9fSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxN30sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE3fX0sXCJzdGFydFwiOlwiMjAxNy0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNy0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9fSxcIm5hbWVcIjpcIktleSBTdGFnZSA0IFByb2dyZXNzIDggc2NvcmVcIixcInVzZV9wcm9ncmVzc19vdmVycmlkZVwiOnRydWUsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwid2l0aGluX3RvbGVyYW5jZVwifSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDo0OTo1My41NzhaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6NDk6NTMuNTc4WiIsInRhcmdldF90b2xlcmFuY2UiOjAuMDQsImlkIjoieWVycC02NnU0In0sInJlbGF0ZWRfbWVhc3VyZXMiOlt7Im1ldGFkYXRhIjoiIiwiaWQiOiI2d2FtLTN5Z2oifV0sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6NTA6MDYuNDY1WiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjQ5OjUzLjY0NVoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QxMDo1MDowNi40NjVaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiJtYTZoLWFubXMiLCJuYW1lIjoiUHVwaWxzIGF0IHNjaG9vbHMgR29vZCBvciBPdXRzdGFuZGluZyBpbiBXLiBTdXNzZXggYXMganVkZ2VkIGJ5IE9mc3RlZCIsImlzX3B1YmxpYyI6dHJ1ZSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJyZXRpcmVtZW50X25hcnJhdGl2ZVwiOltdLFwiaWNvblwiOlwidGV4dFwiLFwibmFycmF0aXZlXCI6W3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqT3ZlcnZpZXcqKlxcblxcblVuZGVyc3RhbmRpbmcgT2ZzdGVkIHJlcG9ydHNcXG5cXG5PZnN0ZWQgKE9mZmljZSBmb3IgU3RhbmRhcmRzIGluIEVkdWNhdGlvbiwgQ2hpbGRyZW7igJlzIFNlcnZpY2VzIGFuZCBTa2lsbHMpIGlzIGEgZ292ZXJubWVudCBkZXBhcnRtZW50IHRoYXQgaW5zcGVjdHMgYW5kIHJlZ3VsYXRlcyBlZHVjYXRpb25hbCBpbnN0aXR1dGlvbnMuIEFsbCBzY2hvb2xzIGFyZSBpbnNwZWN0ZWQgYXMgcGFydCBvZiBhIGN5Y2xlIG9mIGluc3BlY3Rpb24gd2l0aCBpbmFkZXF1YXRlIGFuZCBSSSAoUmVxdWlyZXMgSW1wcm92ZW1lbnQpIHNjaG9vbHMgYmVpbmcgaW5zcGVjdGVkIHdpdGhpbiB0d28geWVhcnMgYW5kIGdvb2Qgc2Nob29scyBldmVyeSB0aHJlZSB5ZWFycy4gT3V0c3RhbmRpbmcgc2Nob29scyBhcmUgbm90IHJvdXRpbmVseSBpbnNwZWN0ZWQuXFxuXFxuQWZ0ZXIgdGhlIGluc3BlY3Rpb24sIE9mc3RlZCBwdWJsaXNoZXMgYSBwdWJsaWMgcmVwb3J0IHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gb24gdGhlIHNjaG9vbOKAmXMgcGVyZm9ybWFuY2UuSW5zcGVjdG9ycyBtYWtlIGtleSBqdWRnZW1lbnRzIG9uIHRoZSBmb2xsb3dpbmcgYXJlYXM6XFxuXFxuKiBvdmVyYWxsIGVmZmVjdGl2ZW5lc3NcXG4qIGVmZmVjdGl2ZW5lc3Mgb2YgbGVhZGVyc2hpcCBhbmQgbWFuYWdlbWVudFxcbiogcXVhbGl0eSBvZiB0ZWFjaGluZywgbGVhcm5pbmcgYW5kIGFzc2Vzc21lbnRcXG4qIHBlcnNvbmFsIGRldmVsb3BtZW50LCBiZWhhdmlvdXIgYW5kIHdlbGZhcmVcXG4qIG91dGNvbWVzIGZvciBwdXBpbHNcXG5cXG5KdWRnZW1lbnRzIGFyZSBtYWRlIHVzaW5nIGEgZm91ci1wb2ludCBzY2FsZTpcXG5cXG4qIGdyYWRlIDEgLSBPdXRzdGFuZGluZ1xcbiogZ3JhZGUgMiAtIEdvb2RcXG4qIGdyYWRlIDMgLSBSZXF1aXJlcyBJbXByb3ZlbWVudFxcbiogZ3JhZGUgNCDigJMgSW5hZGVxdWF0ZVxcblxcbkluIGp1ZGdpbmcgb3ZlcmFsbCBlZmZlY3RpdmVuZXNzLCBpbnNwZWN0b3JzIHdpbGwgdGFrZSBhY2NvdW50IG9mIHRoZSBmb3VyIGtleSBqdWRnZW1lbnRzLiBJbnNwZWN0b3JzIHNob3VsZCBmaXJzdCBtYWtlIHRoZSBrZXkganVkZ2VtZW50cyBvbjpcXG5cXG4qIHRoZSBxdWFsaXR5IG9mIHRlYWNoaW5nLCBsZWFybmluZyBhbmQgYXNzZXNzbWVudFxcbiogcGVyc29uYWwgZGV2ZWxvcG1lbnQsIGJlaGF2aW91ciBhbmQgd2VsZmFyZVxcbiogb3V0Y29tZXMgZm9yIHB1cGlsc1xcblxcblRoZSBMb2NhbCBBdXRob3JpdHkgaXMgY29tbWl0dGVkIHRvIGVuc3VyaW5nIHRoYXQgYWxsIHB1cGlscyBpbiB0aGUgY291bnR5IGF0dGVuZCBhIHNjaG9vbCBqdWRnZWQgdG8gYmUgYXQgbGVhc3QgZ29vZCBvciBvdXRzdGFuZGluZy4gVGhlIERpcmVjdG9yYXRlIG9mIEVkdWNhdGlvbiBhbmQgU2tpbGxzIHdvcmtzIGluIHBhcnRuZXJzaGlwIHdpdGggYWxsIHNjaG9vbHMgYW5kIHN0YWtlaG9sZGVycyB0byBlbnN1cmUgdGhpcyBpcyBhY2hpZXZlZC4gSXQgY29udGludWVzIHRvIHRhcmdldCB1bmRlciBwZXJmb3JtaW5nIHNjaG9vbHMgYnkgcHJvdmlkaW5nIGNoYWxsZW5nZSBhbmQgc3VwcG9ydCB0byBzZWN1cmUgcmFwaWQgYW5kIHN1c3RhaW5hYmxlIGltcHJvdmVtZW50cyBhbmQgcmFpc2Ugc3RhbmRhcmRzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgTG9jYWwgQXV0aG9yaXR5IGlzIGNvbW1pdHRlZCB0byBlbnN1cmluZyB0aGF0IGFsbCBwdXBpbHMgaW4gdGhlIGNvdW50eSBhdHRlbmQgYSBnb29kIG9yIG91dHN0YW5kaW5nIHNjaG9vbCBhbmQgdGhlIEVkdWNhdGlvbiBhbmQgU2tpbGxzIHNlcnZpY2UgaXMgd29ya2luZyB3aXRoIHNjaG9vbHMgYW5kIHBhcnRuZXJzIHRvd2FyZHMgdGhpcyBvdXRjb21lLiBXaGVyZSBpdCBpcyBjb25zaWRlcmVkIHRoYXQgYSBzY2hvb2wgaXMgdW5kZXJwZXJmb3JtaW5nLCBvciBhdCByaXNrIG9mIHVuZGVycGVyZm9ybWluZywgaXQgY29udGludWVzIHRvIHRhcmdldCB0aGVzZSBzY2hvb2xzLCBhbmQgd2lsbCB3b3JrIGFsb25nc2lkZSB0aGUgc2Nob29sIHRvIGVpdGhlciBpbXByb3ZlIHRoZWlyIHJhdGluZyBhdCB0aGUgbmV4dCBpbnNwZWN0aW9uLCBvciB0byBoZWxwIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhleSByZW1haW4gZ29vZC4gVGhlIEVkdWNhdGlvbiBhbmQgU2tpbGxzIHNlcnZpY2UgaGFzIGEgcG9zaXRpdmUgdHJhY2sgcmVjb3JkIG9mIHN1cHBvcnRpbmcgdGhlc2Ugc2Nob29scy5cXG5cXG5TY2hvb2wgcGVyZm9ybWFuY2UgaXMgdHJhY2tlZCBieSBtZWFzdXJpbmcgdGhlIHByb3BvcnRpb24gb2YgcHVwaWxzIHdobyBhdHRlbmQgZ29vZCBvciBvdXRzdGFuZGluZyBzY2hvb2xzIGF0IHRoZSBzY2hvb2xz4oCZIGxhc3QgaW5zcGVjdGlvbi5cXG5cXG5BbGwgc2Nob29scyBhcmUgaW5zcGVjdGVkIGFzIHBhcnQgb2YgYSBjeWNsZSBvZiBpbnNwZWN0aW9uIHdpdGggaW5hZGVxdWF0ZSBhbmQgUkkgKFJlcXVpcmVzIEltcHJvdmVtZW50KSBzY2hvb2xzIGJlaW5nIGluc3BlY3RlZCB3aXRoaW4gdHdvIHllYXJzIGFuZCBnb29kIHNjaG9vbHMgZXZlcnkgdGhyZWUgeWVhcnMuIE91dHN0YW5kaW5nIHNjaG9vbHMgYXJlIG5vdCByb3V0aW5lbHkgaW5zcGVjdGVkLlxcblxcbiAgXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUGVyZm9ybWFuY2Ugb2YgV2VzdCBTdXNzZXggU2Nob29scyAtIERlY2VtYmVyIDIwMTcqKlxcblxcblRoZSB0b3RhbCBmb3IgcHVwaWxzIGF0dGVuZGluZyBXZXN0IFN1c3NleCBzY2hvb2xzIHRoYXQgYXJlIGp1ZGdlZCBnb29kIG9yIG91dHN0YW5kaW5nIGhhcyBpbmNyZWFzZWQgdG8gYSAxNi1tb250aCBoaWdoIG9mIDg0LjIlLiBUaGUgaW5jcmVhc2UgZnJvbSBTZXB0ZW1iZXIgMjAxNiB0byBEZWNlbWJlciAyMDE3IGlzIDMuMiUuXFxuXFxuRm9yIERlY2VtYmVyLCB0aGUgcGVyY2VudGFnZSBmb3IgZWFjaCBzY2hvb2wgcGhhc2UgaXMgYXMgZm9sbG93czpcXG5cXG4qIMK3IFByaW1hcnkgU2Nob29sIHB1cGlscyA9IDgzJVxcbiogwrcgU2Vjb25kYXJ5IFNjaG9vbCBwdXBpbHMgPSA4NSVcXG4qIMK3IFNwZWNpYWwgU2Nob29sIHB1cGlscyA9IDk2JVxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlBlcmZvcm1hbmNlIG9mIFdlc3QgU3Vzc2V4IFNjaG9vbHMgLSBOb3ZlbWJlciAyMDE3KipcXG5cXG5UaGUgdG90YWwgZm9yIHB1cGlscyBhdHRlbmRpbmcgV2VzdCBTdXNzZXggc2Nob29scyB0aGF0IGFyZSBqdWRnZWQgZ29vZCBvciBvdXRzdGFuZGluZyBoYXMgcmVtYWluZWQgc3RlYWR5IHRoaXMgbW9udGggYXQgYXJvdW5kIDg0JS4gRm9yIE5vdmVtYmVyLCB0aGUgcGVyY2VudGFnZSBmb3IgZWFjaCBzY2hvb2wgcGhhc2UgaXMgYXMgZm9sbG93czpcXG5cXG4qIMK3IFByaW1hcnkgU2Nob29sIHB1cGlscyA9IDgyJVxcbiogwrcgU2Vjb25kYXJ5IFNjaG9vbCBwdXBpbHMgPSA4NSVcXG4qIMK3IFNwZWNpYWwgU2Nob29sIHB1cGlscyA9IDEwMCVcXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipQZXJmb3JtYW5jZSBvZiBXZXN0IFN1c3NleCBTY2hvb2xzIC0gT2N0b2JlciAyMDE3KipcXG5cXG5QZXJmb3JtYW5jZSBpcyBtZWFzdXJlZCBtb250aGx5IGJhc2VkIG9uIHRoZSBwdWJsaXNoZWQgb3V0Y29tZXMgb2YgT2ZzdGVkIGluc3BlY3Rpb25zIG9mIFdlc3QgU3Vzc2V4IHNjaG9vbHMgaW5jbHVkaW5nIGFjYWRlbWllcyBhbmQgZnJlZSBzY2hvb2xzLlxcblxcbk91ciBhbWJpdGlvbiBpcyB0byBiZSBpbiB0aGUgdG9wIDI1JSBvZiBjb3VudGllcyBuYXRpb25hbGx5LlxcblxcblNpbmNlIEFwcmlsIDIwMTUgdGhlIHBlcmNlbnRhZ2Ugb2Ygc2Nob29scyBqdWRnZWQgdG8gYmUgZ29vZCBvciBvdXRzdGFuZGluZyBoYXMgZ2VuZXJhbGx5IGltcHJvdmVkIG1vbnRoLW9uLW1vbnRoIGZyb20gNzUlIHRvIDg0JSBpbiBPY3RvYmVyIDIwMTcuXFxuXFxuVGhlIFdlc3QgU3Vzc2V4IFN0cmF0ZWd5IGZvciBTY2hvb2wgSW1wcm92ZW1lbnQsIGludHJvZHVjZWQgaW4gQXByaWwgMjAxNiwgaGFzIGNvbnRyaWJ1dGVkIHRvIGluY3JlYXNpbmcgdGhlIHByb3BvcnRpb24gb2YgcHVwaWxzIHRhdWdodCBpbiBXZXN0IFN1c3NleCBzY2hvb2xzIHRoYXQgYXJlIGp1ZGdlZCBhcyBnb29kIG9yIG91dHN0YW5kaW5nLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9DN0MzMzVEOS0wREQ4LTQxMDMtOTlFQS1ENDMxQzgzMUMzMEVcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5CZXR3ZWVuIEp1bmUgYW5kIFNlcHRlbWJlciAyMDE3IHRoZSBwcm9wb3J0aW9uIG9mIHB1cGlscyBpbiBnb29kIGFuZCBvdXRzdGFuZGluZyBzY2hvb2xzIGltcHJvdmVkIGJ5IDElLiBUaGUgaW5jcmVhc2UgaXMgbGFyZ2VseSB0aGUgcmVzdWx0IG9mIGluc3BlY3Rpb24gdGhhdCB0b29rIHBsYWNlIGluIEp1bHkgYXMgbm8gaW5zcGVjdGlvbnMgdG9vayBwbGFjZSBkdXJpbmcgQXVndXN0IGFuZCB0aGUgcmVwb3J0cyBvbiB0aG9zZSB0aGF0IGhhdmUgdGFrZW4gcGxhY2UgaW4gU2VwdGVtYmVyIGhhdmUgeWV0IHRvIGJlIHB1Ymxpc2hlZC5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDEgLSBKdW5lIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuQ2hhbmdlcyBpbiB0aGUgcHJvcG9ydGlvbiBvZiBwdXBpbHMgYXR0ZW5kaW5nIGdvb2QgYW5kIG91dHN0YW5kaW5nIHNjaG9vbHMgYXJlIGRlcGVuZGVudCB0aGUgbnVtYmVyIG9mIHB1cGlscyBpbiBzY2hvb2xzIHRoYXQgYXJlIGluc3BlY3RlZCBhbmQgbW92ZSBpbnRvIGdvb2Qgb3Igb3V0c3RhbmRpbmcgY2F0ZWdvcmllcyBmcm9tIFJlcXVpcmVzIEltcHJvdmVtZW50IG9yIEluYWRlcXVhdGUuIEluIEp1bmUgMjAxNyB0aGUgaW5jcmVhc2UgaW4gdGhlIHByb3BvcnRpb24gb2YgcHVwaWxzIGF0dGVuZGluZyBnb29kIG9yIGJldHRlciBzY2hvb2xzIHdhcyAxJS4gSW4gV2VzdCBTdXNzZXggb3VyIHRvdGFsIHB1cGlsIHBvcHVsYXRpb24gaXMgY2lyY2EgMTEyLDAwMC4gVGhpcyBtZWFucyB0aGF0IHNjaG9vbHMgaW5zcGVjdGVkIGJ5IE9mc3RlZCwgd2l0aCBzbWFsbCBudW1iZXJzIG9mIHB1cGlscywgd2hvIG1vdmUgaW50byB0aGUgZ29vZCBvciBvdXRzdGFuZGluZyBjYXRlZ29yaWVzIG1ha2UgbGl0dGxlIGRpZmZlcmVuY2UgdG8gdGhlIG92ZXJhbGwgcHJvcG9ydGlvbiBvZiBwdXBpbHMgdGF1Z2h0IGluIGdvb2Qgb3IgYmV0dGVyIHNjaG9vbHMuIEFwcHJveC4gMSwxMjAgcHVwaWxzIGFyZSByZXF1aXJlZCB0byBiZSB0YXVnaHQgaW4gc2Nob29scyB0aGF0IFJlcXVpcmVzIEltcHJvdmVtZW50IG9yIEluYWRlcXVhdGUgdG8gYmUgaW5zcGVjdGVkIGFzIGdvb2Qgb3Igb3V0c3RhbmRpbmcgdG8gbWFrZSBhIDElIGRpZmZlcmVuY2UgdGhpcyByZXByZXNlbnRzIHRoZSBwdXBpbHMgcG9wdWxhdGlvbiBpbiBhcHByb3guIDEgbWVkaXVtIHNpemVkIHNlY29uZGFyeSBzY2hvb2wgYW5kIDIgcHJpbWFyeSBzY2hvb2xzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgNCAtIE1hcmNoIDIwMTcqKlxcblxcblBlcmZvcm1hbmNlIGlzIG1lYXN1cmVkIG1vbnRobHkgYmFzZWQgb24gdGhlIHB1Ymxpc2hlZCBvdXRjb21lcyBvZiBPZnN0ZWQgaW5zcGVjdGlvbnMgb2YgV2VzdCBTdXNzZXggc2Nob29scyBpbmNsdWRpbmcgYWNhZGVtaWVzIGFuZCBmcmVlIHNjaG9vbHMuIFRoZSBnb2FsIGlzIG1lYXN1cmVkIGJ5IHRyYWNraW5nIHRoZSBwZXJjZW50YWdlIG9mIHB1cGlscyBhdHRlbmRpbmcgZ29vZCBhbmQgb3V0c3RhbmRpbmcgc2Nob29scy4gT3VyIGFtYml0aW9uIGlzIHRvIGJlIG9uZSBvZiB0aGUgdG9wIDI1JSBvZiBoaWdoZXN0IHBlcmZvcm1pbmcgY291bnRpZXMuXFxuXFxuU2luY2UgTWFyY2ggMjAxNiB0aGUgcGVyY2VudGFnZSBoYXMgaW1wcm92ZWQgZnJvbSA3OSUgYW5kIGZvciBhIHBlcmlvZCBkdXJpbmcgdGhlIHllYXIgd2FzIGFzIGhpZ2ggYXMgODMlLiBUaGUgdmFyaWF0aW9uIGZyb20gbW9udGggdG8gbW9udGggaXMgdG8gYW4gZXh0ZW50IGRlcGVuZGVudCBvbiB3aGljaCBzY2hvb2xzIGFyZSBpbnNwZWN0ZWQgYXMgYSBsYXJnZSBzZWNvbmRhcnkgc2Nob29sIGhhcyBhIGJpZ2dlciBpbXBhY3Qgb24gdGhlIG92ZXJhbGwgZmlndXJlIHRoYW4gYSBzbWFsbCBwcmltYXJ5IHNjaG9vbC4gVGhlcmUgY2FuIGFsc28gYmUgY29uc2lkZXJhYmxlIHZhcmlhdGlvbnMgaW4gdGhlIGxlbmd0aCBvZiB0aW1lIHRha2VuIGZvciByZXBvcnRzIHRvIGJlIHB1Ymxpc2hlZCBhZnRlciBhbiBpbnNwZWN0aW9uLlxcblxcblRoZSBXZXN0IFN1c3NleCBTdHJhdGVneSBmb3IgU2Nob29sIEltcHJvdmVtZW50LCBpbnRyb2R1Y2VkIGR1cmluZyAyMDE2LCBhbmQgaW5jbHVkaW5nIG1vcmUgcmVndWxhciB2aXNpdHMgYnkgYWR2aXNlcnMgdG8gYWxsIHNjaG9vbHMsIGhhcyBjb250cmlidXRlZCB0byBpbmNyZWFzaW5nIHRoZSBudW1iZXIgYW5kIHByb3BvcnRpb24gb2YgV2VzdCBTdXNzZXggc2Nob29scyB0aGF0IGFyZSBnb29kIG9yIG91dHN0YW5kaW5nLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlJhbmtpbmdzIGFzIG9mIERlY2VtYmVyIDIwMTY6KipcXG5cXG5Gcm9tIHRoZSBsYXRlc3QgQW5udWFsIHJlcG9ydCAobGluayBiZWxvdyksIHB1Ymxpc2hlZCBEZWNlbWJlciAyMDE2OlxcblxcbiogTmF0aW9uYWxseSwgV2VzdCBTdXNzZXggaXMgcmFua2VkIDE0MXN0IG9mIDE1MCBmb3IgUHJpbWFyeSBTY2hvb2xzIGFuZCA2OXRoIG9mIDE1MCBmb3IgU2Vjb25kYXJ5IFNjaG9vbHNcXG4qIFdpdGhpbiB0aGUgU291dGggRWFzdCBSZWdpb24sIFdlc3QgU3Vzc2V4IGlzIHJhbmtlZCAxN3RoIG9mIDE5IGZvciBQcmltYXJ5IFNjaG9vbHMgYW5kIDl0aCBvZiAxOSBmb3IgU2Vjb25kYXJ5IFNjaG9vbHMuIChBbHNvLCAzNHRoIG9mIDM0IFNoaXJlIFBsdXMgQ291bnRpZXMgYW5kIFNlY29uZGFyeSBTY2hvb2xzIGFyZSByYW5rZWQgMTN0aCBvZiAzNClcXG5cXG5GdXJ0aGVyIHJlZ2lvbmFsIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBhdCB0aGUg4oCcQW5udWFsIFJlcG9ydCAyMDE1LzE2IHJlZ2lvbmFsIGluZm9ybWF0aW9uIHBhY2s6IFNvdXRoIEVhc3TigJ1zZWN0aW9uIG9mIHRoZSBmb2xsb3dpbmcgbGluazogW2h0dHBzOi8vd3d3Lmdvdi51ay9nb3Zlcm5tZW50L3B1YmxpY2F0aW9ucy9vZnN0ZWQtYW5udWFsLXJlcG9ydC0yMDE1MTYtZWR1Y2F0aW9uLWVhcmx5LXllYXJzLWFuZC1za2lsbHNdWzBdXFxuXFxuKipSYW5raW5ncyBhcyBvZiBEZWNlbWJlciAyMDE3OioqXFxuXFxuVGhlIGRhdGUgb2YgbmV4dCB1cGRhdGU6IEZlYnJ1YXJ5IDIwMTggKHJlbGVhc2VkIC0gRGVjZW1iZXIgMjAxNylcXG5cXG5bMF06IGh0dHBzOi8vd3d3Lmdvdi51ay9nb3Zlcm5tZW50L3B1YmxpY2F0aW9ucy9vZnN0ZWQtYW5udWFsLXJlcG9ydC0yMDE1MTYtZWR1Y2F0aW9uLWVhcmx5LXllYXJzLWFuZC1za2lsbHNcIn1dLFwidXNlX2N1c3RvbV90aXRsZVwiOnRydWUsXCJjdXN0b21fdGl0bGVcIjpcIlB1cGlscyBpbiBXZXN0IFN1c3NleCBzY2hvb2xzIGp1ZGdlZCBnb29kIG9yIG91dHN0YW5kaW5nIC0gdG8gYmUgaW4gdGhlIHRvcCBxdWFydGlsZSBvZiBhbGwgTG9jYWwgQXV0aG9yaXRpZXNcIixcInVzZV9jdXN0b21fc3VidGl0bGVcIjp0cnVlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJUaGlzIGdvYWwgaXMgbWVhc3VyZWQgYnkgdHJhY2tpbmcgdGhlIHBlcmNlbnRhZ2Ugb2YgcHVwaWxzIGluIFdlc3QgU3Vzc2V4IGF0dGVuZGluZyBnb29kIG9yIG91dHN0YW5kaW5nIHNjaG9vbHMuIFwiLFwidGl0bGVfaW1hZ2VcIjpcIi9hcGkvYXNzZXRzLzczRjZDNjI3LTk1QjgtNDlBQS05QjRCLUNGM0VDRDlCQ0NEMlwifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDE1LTA0LTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6IiUiLCJ0YXJnZXQiOjg2LCJ0YXJnZXRfdHlwZSI6ImFic29sdXRlIiwidGFyZ2V0X2RlbHRhIjowLCJ0YXJnZXRfZGVsdGFfaXNfcGVyY2VudCI6ZmFsc2UsImJhc2VsaW5lIjo5MSwibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiJ4eWp3LXF5NDkifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOjMsXCJ5ZWFyXCI6MjAxNX0sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fSxcImFjdGlvbl90eXBlXCI6XCJpbmNyZWFzZVwiLFwibWFpbnRhaW5fdHlwZVwiOlwiPlwifSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fX0sXCJzdGFydFwiOlwiMjAxNC0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNC0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9fSxcIm5hbWVcIjpcInRoZSBwcm9wb3J0aW9uIG9mIHB1cGlscyB3aG8gYXR0ZW5kIHNjaG9vbHMgaW4gV2VzdCBTdXNzZXggdGhhdCBhcmUganVkZ2VkIGdvb2Qgb3Igb3V0c3RhbmRpbmcgYnkgT2ZzdGVkIFwiLFwidXNlX3Byb2dyZXNzX292ZXJyaWRlXCI6dHJ1ZSxcInByb2dyZXNzX292ZXJyaWRlXCI6XCJ3aXRoaW5fdG9sZXJhbmNlXCJ9In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjUxOjQyLjMwNloiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QxMDo1MTo0Mi4zMDZaIiwidGFyZ2V0X3RvbGVyYW5jZSI6Ny43LCJpZCI6InU2ZXUtMnd3aCJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbeyJtZXRhZGF0YSI6IiIsImlkIjoidDkyZy1idHNnIn0seyJtZXRhZGF0YSI6IiIsImlkIjoieTQ0ai16Njg1In1dLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjUxOjUxLjI1OFoiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDo1MTo0Mi4zODBaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6NTE6NTEuMjU4WiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoiODZrai00bmF3IiwibmFtZSI6IkVjb25vbWljIGdyb3d0aCIsImlzX3B1YmxpYyI6dHJ1ZSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJyZXRpcmVtZW50X25hcnJhdGl2ZVwiOltdLFwiaWNvblwiOlwidXB3YXJkc2xpbmVjaGFydFwiLFwibmFycmF0aXZlXCI6W3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqRWNvbm9taWMgR3Jvd3RoOiAtIEdyb3NzIFZhbHVlIEFkZGVkIHBlciBIZWFkKipcXG5cXG4gXFxuXFxuR3Jvc3MgVmFsdWUgQWRkZWQgKEdWQSkgaW5kaWNhdGVzIHRoZSBsZXZlbCBvZiBlY29ub21pYyBhY3Rpdml0eSB3aXRoaW4gYW4gYXJlYSBieSBtZWFzdXJpbmcgaXRzIHByb2R1Y3Rpb24gb2YgZ29vZHMgYW5kIHNlcnZpY2VzLiBJdCBpcyBhIG1lYXN1cmUgdGhhdCBhbGxvd3MgY29tcGFyaXNvbiBvZiBhcmVhcywgYW5kIGhpZ2hsaWdodHMgdmFyaWF0aW9ucyBpbiBwZXJmb3JtYW5jZSB3aXRoIGEgcmVnaW9uLCBhbmQgdHJlbmRzIG92ZXIgdGltZS4gVGhlIEdWQSBmaWd1cmUgKHdvcmtwbGFjZSBiYXNlZCkgZGl2aWRlZCBieSB0aGUgdG90YWwgcmVzaWRlbnRpYWwgcG9wdWxhdGlvbiAocmVzaWRlbnQgYmFzZWQpIGdpdmVzIGFuIGVzdGltYXRlIGZvciBHVkEgcGVyIEhlYWQsIHdoaWxzdCBub3QgYSBtZWFzdXJlIG9mIHByb2R1Y3Rpdml0eSBpdCBpcywgbmV2ZXJ0aGVsZXNzIGEgd2lkZWx5IHVzZWQgbWVhc3VyZSB0byBpbmRpY2F0ZSB0aGUgZWNvbm9taWMgd2VsbC1iZWluZyBvZiBhbiBhcmVhIGFuZCBhZ2FpbiwgcHJvdmlkZXMgY29tcGFyaXNvbi9iZW5jaG1hcmtpbmcgd2l0aCBvdGhlciBhcmVhcy5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiT05TIHJlbGVhc2UgYW5udWFsIHN1Yi1yZWdpb25hbCBlc3RpbWF0ZXMgb2YgR1ZBIGFuZCBHVkEgcGVyIGhlYWQuIFRoZSBtb3N0IHJlY2VudCB1cGRhdGUgd2FzIHJlbGVhc2VkIGluIERlY2VtYmVyIDIwMTcgYW5kIGNvdmVycyB0aGUgcGVyaW9kIHVwIHRvIDIwMTYuIEFzIGluIHRoZSBwcmV2aW91cyB5ZWFyIHRoZSBkYXRhIGlzIHJlbGVhc2VkIGJ5IHRoZSAyMDE1IE5VVFMzIGFyZWFzIOKAkyB3aGljaCBzcGxpdCBXZXN0IFN1c3NleCBpbnRvIHR3byBhcmVhczogV2VzdCBTdXNzZXggU291dGggV2VzdCAoV1NTVykgaW5jbHVkaW5nIEFkdXIsIEFydW4sIENoaWNoZXN0ZXIgYW5kIFdvcnRoaW5nLCBhbmQgV2VzdCBTdXNzZXggTm9ydGggRWFzdCAoV1NORSkgaW5jbHVkaW5nIENyYXdsZXksIEhvcnNoYW0gYW5kIE1pZCBTdXNzZXguIE5PTUlTIGhhZCBwcmV2aW91c2x5IHJld29ya2VkIHRoZSBOVVRTMyBkYXRhIHRvIHByb3ZpZGUgZXN0aW1hdGVzIGZvciBjb3VudHkgbGV2ZWwgZ2VvZ3JhcGhpZXMsIHdoaWxzdCB0aGUgbmV3IGRhdGEgaGFzIGJlZW4gcmVsZWFzZWQgTk9NSVMgaGF2ZSBub3QgeWV0IHVuZGVydGFrZW4gdGhpcyBleGVyY2lzZSwgdGhvdWdoIHdlIGNhbiBtYWtlIHNvbWUgZXN0aW1hdGUgb2YgdGhlIFdlc3QgU3Vzc2V4IGZpZ3VyZSBpbiB0aGUgbWVhbnRpbWUuXFxuXFxuIFxcblxcbk5VVFMzIDogW2h0dHA6Ly9Ob21lbmNsYXR1cmVdWzBdIG9mIFRlcnJpdG9yaWFsIFVuaXRzIGZvciBTdGF0aXN0aWNzIC0gR2VvZ3JhcGhpZXMgdXNlZCBhY3Jvc3MgRVUgZm9yIHN0YXRpc3RpY2FsIHB1cnBvc2VzXFxuXFxuWzBdOiBodHRwOi8vTm9tZW5jbGF0dXJlXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0M3MzdERTM5LTI1NjktNDQ4NC05NjU2LUY2RkE2OUFDMTVCQlwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgbGV2ZWxzIG9mIEdWQSBwZXIgaGVhZCBpbiBXU1NXIGNvbnRpbnVlIHRvIGJlIHNpZ25pZmljYW50bHkgbG93ZXIgdGhhbiB0aGUgTm9ydGggRWFzdCBvZiB0aGUgY291bnR5IHdoZXJlIEdWQSBwZXIgaGVhZCBpcyBoaWdoZXIgdGhhbiB0aGUgcmVnaW9uYWwgYW5kIG5hdGlvbmFsIHJhdGUg4oCTZHVlIHRvIHRoZSBwcmVzZW5jZSBvZiBHYXR3aWNrIEFpcnBvcnQgYmVpbmcgdGhlIGtleSBlY29ub21pYyBkcml2ZXIgZm9yIHRoYXQgc3ViIHJlZ2lvbi4gVGhlIGVzdGltYXRlIGZvciBXZXN0IFN1c3NleCBzdWdnZXN0IHRoYXQgaXQgaXMganVzdCB1bmRlciA5JSBsb3dlciB0aGUgZmlndXJlIGZvciB0aGUgU291dGggRWFzdCByZWdpb24g4oCTIGFzIGxpZ2h0IHJlZHVjdGlvbiBpbiB0aGUgZ2FwIGJldHdlZW4gdGhlIHJlZ2lvbmFsIGFuZCBjb3VudHkgZmlndXJlIGNvbXBhcmVkIHdpdGggdGhlIHByZXZpb3VzIHllYXIuXFxuXFxuT3ZlciB0aGUgbGFzdCB5ZWFyICgyMDE1LTIwMTYpIEdWQSBwZXIgaGVhZCBncmV3IGluIFdTTkUgYnkgMS42NCUgbmVhcmx5IDcgdGltZXMgbW9yZSB0aGFuIHRoYXQgc2VlbiBpbiBXU1NXIHdoaWNoIGdyZXcgYnkgMC4yNCUuIFJlZ2lvbmFsIGdyb3d0aCB3YXMgMS42NiUgYW5kIHRoYXQgZm9yIEVuZ2xhbmQgYXQgMi43JS4gTG9va2luZyBhdCB0aGUgYXJlYXMgd2l0aGluIHRoZSBTb3V0aCBFYXN0IHJlZ2lvbiBNaWx0b24gS2V5bmVzIHNhdyB0aGUgaGlnaGVzdCBncm93dGggb3ZlciB0aGUgeWVhciBhdCA2Ljg5JSBhbmQgaW4gc29tZSBhcmVhIEdWQSBwZXIgaGVhZCBmZWxsIOKAkyB0aGUgZ3JlYXRlc3QgZmFsbCBiZWluZyBzZWVuIGluIE5vcnRoIEhhbnRzIGF0IC0xLjExJS4gT2YgYWxsIHRoZXNlIDIxIGFyZWFzIFdTTkUgd2FzIHJhbmtlZCA5dGggaGlnaGVzdCwgYW5kIFdTU1cgYXQgMTZ0aFxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9BNDFEQzE4RS02MTMzLTRDRjUtOTdDOS1GMTkwNkZEN0Y1QThcIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJFc3RpbWF0ZXMgZm9yIFdlc3QgU3Vzc2V4IHN1Z2dlc3QgdGhhdCBpbiAxOTk3ICh0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIGN1cnJlbnQgdGltZSBzZXJpZXMpLCBHVkEgcGVyIGhlYWQgd2FzIMKjMTQsMDA2IGZvciBXZXN0IFN1c3NleDsgc2xpZ2h0bHkgaGlnaGVyIHRoYW4gZm9yIEVuZ2xhbmQgYXQgwqMxMyw2NzYsIGFuZCA1IGxvd2VyIHRoYW4gdGhlIFNvdXRoIEVhc3QgYXQgwqMxNCw2OTYuIE92ZXIgdGltZSBob3dldmVyLCBHVkEgZmlndXJlcyBoYXZlIHJpc2VuIGluIEVuZ2xhbmQgYW5kIHRoZSBTb3V0aCBFYXN0IGF0IGEgaGlnaGVyIHJhdGUgdGhhbiBpbiBXZXN0IFN1c3NleCwgdGhlIGdhcCBpbiBHVkEgcGVyIGhlYWQgYmV0d2VlbiBXZXN0IFN1c3NleCBhbmQgdGhlIFNvdXRoIEVhc3QgaGFzIG5vdyByaXNlbiB0byA5LjElIGluIDIwMTQuXFxuXFxuTG9va2luZyBhdCB0aGUgY291bnR5IGVzdGltYXRlcyBmcm9tIE5vbWlzIGl0IGlzIGV2aWRlbnQgdGhhdCBXZXN0IFN1c3NleCBkb2VzIG5vdCBjb21wYXJlIGZhdm91cmFibHkgd2l0aCBvdGhlciBjb3VudHkgYXJlYXMgaW4gdGhlIFNvdXRoIEVhc3QgcmVnaW9uLCBpdCBsaWVzIGluIHRoZSBib3R0b20gNTAlIG9mIGF1dGhvcml0aWVzIHdoZXJlIHRoZSByYW5nZSBpbiBHRFAgcGVyIGhlYWQgaXMgZnJvbSDCozE3LDMzOSBpbiBNZWR3YXkgdG8gdGhlIGhpZ2hlc3QgaW4gV2VzdCBCZXJrc2hpcmUgb2YgwqM0NSw3Mzgg4oCTIHdoaWNoIGlzIG1vcmUgdGhhbiBkb3VibGUgdGhlIGxldmVsIG9mIHRoYXQgc2VlbiBpbiBXZXN0IFN1c3NleCBTb3V0aCBXZXN0IGFyZWEuXFxuXFxuV2VzdCBTdXNzZXggZG9lcyBjb21wYXJlIGJldHRlciB3aXRoIHRob3NlIEdWQSBwZXIgSGVhZCBsZXZlbHMgb2Ygb3VyIFN0YXRpc3RpY2FsIE5laWdoYm91cnMg4oCTYXMgc2hvd24gYmVsb3cgYW5kIGxpZXMgaW4gdGhlIGhpZ2hlc3QgcXVhcnRpbGUuIFRoZSBhbWJpdGlvbiBpcyB0byBicmluZyB0aGUgR1ZBIHBlciBoZWFkIGZpZ3VyZSBmb3IgV2VzdCBTdXNzZXggdG8gdGhlIHJlZ2lvbmFsIChTb3V0aCBFYXN0KSBhdmVyYWdlLlxcblxcblwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzY1MUMxOTc4LUEyQzAtNEM5NS1CRTVCLTczNzcwRkNFODZEQlwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoZSBsYXRlc3QgZGF0YSBmb3IgR3Jvc3MgVmFsdWUgQWRkZWQgKEdWQSkgd2FzIHJlbGVhc2VkIGluIERlY2VtYmVyIDIwMTYgYW5kIGNvdmVycyB0aGUgcGVyaW9kIHVwIHRvIDIwMTUuIFRoZSBuZXh0IHJlbGVhc2Ugb2YgdGhpcyBkYXRhIGZyb20gT05TIGlzIGV4cGVjdGVkIGluIGlzIGEgcmVjb2duaXNlZCBtZWFzdXJlIG9mIGVjb25vbWljIGFjdGl2aXR5IGJyb2FkbHkgZGVmaW5lZCBhcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB2YWx1ZSBvZiB0aGUgZ29vZHMgYW5kIHNlcnZpY2VzIHByb2R1Y2VkIGFuZCB0aGUgY29zdCBvZiByYXcgbWF0ZXJpYWxzIGFuZCBvdGhlciBpbnB1dHMgdXNlZCBpbiBwcm9kdWN0aW9uLiBUaGUgZGF0YSBpcyByZWxlYXNlZCBhbm51YWxseSBmcm9tIE9OUywgYW5kIGluY2x1ZGVzIHRoZSBzdWItcmVnaW9uYWwgZXN0aW1hdGVzIGZvciBHVkEgZm9yIHRoZSB0d28gV2VzdCBTdXNzZXggU3ViIEFyZWFzOlxcblxcbjEuIFdlc3QgU3Vzc2V44oCTU291dGggV2VzdCAoV1NTVykg4oCTIGNvbXByaXNlcyBDaGljaGVzdGVyLCBBcnVuLCBBZHVyIGFuZCBXb3J0aGluZ1xcbjEuIFdlc3QgU3Vzc2V44oCTTm9ydGggRWFzdCAoV1NORSkg4oCTIGNvbXByaXNlcyBDcmF3bGV5LCBIb3JzaGFtIGFuZCBNaWQgU3Vzc2V4XFxuXFxuVGhlIGxhdGVzdCBkYXRhLGFscmVhZHkgcmVwb3J0ZWQsIHdhcyByZWxlYXNlZCBpbiBEZWNlbWJlciAyMDE2LCBhbmQgY292ZXJzIHRoZSBwZXJpb2QgdXAgdG8yMDE1LCB0aGUgZmlndXJlcyBhbmQgdHJlbmRzIGZvciB0aGUgdHdvIFdlc3QgU3Vzc2V4IGFyZWFzIHdlcmUgcmVwb3J0ZWQgYXQgdGhlZW5kIG9mIHRoZSBwcmV2aW91cyBxdWFydGVyIGFuZCB0aGVyZSBpcyBubyB1cGRhdGUgaW4gdGVybXMgb2YgdGhlIGxvY2FscGljdHVyZS4gVGhlIG5leHQgcmVsZWFzZSBvZiBkYXRhIGlzIGV4cGVjdGVkIGluIERlY2VtYmVyIDIwMTcuIEhvd2V2ZXIsIGluIE1hcmNoIDIwMTcgdGFibGVzIHNob3dpbmcgR1ZBIGFsbG9jYXRlZCB0b2xvY2FsIGF1dGhvcml0aWVzIGluIHRoZSBVSyB3ZXJlIHJlbGVhc2VkLCB0aGUgZGF0YSB3YXMgcHJvZHVjZWQgaW4gcmVzcG9uc2UgdG91c2VyIG5lZWQgYnV0IHdoaWxlIG5vdCBOYXRpb25hbCBTdGF0aXN0aWNzLCBuZXZlcnRoZWxlc3MgZ2l2ZSBzb21lIGluZGljYXRpb25hcyB0byB0aGUgc2NhbGUgb2YgR1ZBIGF0IGxvY2FsIGF1dGhvcml0eSBsZXZlbCwgYW5kIHRoZSBjb250cmlidXRpb24gdGhhdCBlYWNob2YgdGhlIGJyb2FkIGxldmVsIHNlY3RvcnMgbWFrZSB0byB0aGUgbG9jYWwgZWNvbm9teS5cXG5cXG5baHR0cHM6Ly93d3cub25zLmdvdi51ay9lY29ub215L2dyb3NzdmFsdWVhZGRlZGd2YS9kYXRhc2V0cy9yZWdpb25hbGd2YWlieWxvY2FsYXV0aG9yaXR5aW50aGV1a11bMF1cXG5cXG5bMF06IGh0dHBzOi8vd3d3Lm9ucy5nb3YudWsvZWNvbm9teS9ncm9zc3ZhbHVlYWRkZWRndmEvZGF0YXNldHMvcmVnaW9uYWxndmFpYnlsb2NhbGF1dGhvcml0eWludGhldWtcIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8yRjI0OTgwMS00NUVDLTRGQzctQjgzRi03ODAzRkFBNEM0OUNcIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9DNEYxOTk0Ny1EMzYxLTRFMTItQUZGNC1DODI5Q0VFRUIyRDJcIn1dXX0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIG1haW4gcG9pbnRzIGZyb20gdGhlIChPTlMpIHN1bW1hcnkgb2YgdGhlIChHQikgU2hvcnQtdGVybSBlY29ub21pYyBpbmRpY2F0b3JzIHB1Ymxpc2hlZCBpbiBlYXJseSBTZXB0ZW1iZXIgMjAxNyBhcmU6XFxuXFxuKiBUb3RhbCBwcm9kdWN0aW9uIG91dHB1dCBzYXcgYSBzbGlnaHQgaW5jcmVhc2UgaW4gdGhlIDMgbW9udGhzIHRvIEp1bHkgMjAxNyBhbmQgaW5jcmVhc2VkIGJ5IDAuMyU7XFxuKiBNYW51ZmFjdHVyaW5nIHJlbWFpbnMgcmVsYXRpdmVseSBzdWJkdWVkIHNpbmNlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHllYXIsIHRob3VnaCBzb21lIGdyb3d0aCBzZWVuIGZyb20gSnVseSBhdHRyaWJ1dGVkIHRvIHN0cm9uZ2VyIGdyb3d0aCBpbiBjYXIgcHJvZHVjdGlvbjtcXG4qIENvbnN0cnVjdGlvbiBvdXRwdXQgZmVsbCBmb3IgdGhlIGZvdXJ0aCBtb250aCBpbiBhIHJvdywgd2l0aCBwcml2YXRlIGhvdXNpbmcgYnVpbGRpbmcgY29udHJhY3RpbmcgaW4gSnVseSAyMDE3IGFmdGVyIHNlZWluZyBncm93dGggYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgeWVhci5cXG5cXG5baHR0cHM6Ly93d3cub25zLmdvdi51ay9lY29ub215L2Vjb25vbWljb3V0cHV0YW5kcHJvZHVjdGl2aXR5L291dHB1dC9hcnRpY2xlcy9zaG9ydHRlcm1pbmRpY2F0b3JzZWNvbm9taWNjb21tZW50YXJ5L3NlcHQyMDE3XVswXVxcblxcblswXTogaHR0cHM6Ly93d3cub25zLmdvdi51ay9lY29ub215L2Vjb25vbWljb3V0cHV0YW5kcHJvZHVjdGl2aXR5L291dHB1dC9hcnRpY2xlcy9zaG9ydHRlcm1pbmRpY2F0b3JzZWNvbm9taWNjb21tZW50YXJ5L3NlcHQyMDE3XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciA0IC0gTWFyY2ggMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5Hcm9zcyBWYWx1ZSBBZGRlZCAoR1ZBKSBpcyBhIHJlY29nbmlzZWQgbWVhc3VyZSBvZiBlY29ub21pYyBhY3Rpdml0eSBicm9hZGx5IGRlZmluZWQgYXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdmFsdWUgb2YgdGhlIGdvb2RzIGFuZCBzZXJ2aWNlcyBwcm9kdWNlZCBhbmQgdGhlIGNvc3Qgb2YgcmF3IG1hdGVyaWFscyBhbmQgb3RoZXIgaW5wdXRzIHVzZWQgaW4gcHJvZHVjdGlvbi4gVGhlIGRhdGEgaXMgcmVsZWFzZWQgYW5udWFsbHkgZnJvbSBPTlMsIGFuZCBpbmNsdWRlcyB0aGUgc3ViLXJlZ2lvbmFsIGVzdGltYXRlcyBmb3IgR1ZBIGZvciB0aGUgdHdvIFdlc3QgU3Vzc2V4IFN1YiBBcmVhczpcXG5cXG4xLiBXZXN0IFN1c3NleCDigJNTb3V0aCBXZXN0IChXU1NXKSDigJMgY29tcHJpc2VzIENoaWNoZXN0ZXIsIEFydW4sIEFkdXIgYW5kIFdvcnRoaW5nXFxuMS4gV2VzdCBTdXNzZXgg4oCTTm9ydGggRWFzdCAoV1NORSkg4oCTIGNvbXByaXNlcyBDcmF3bGV5LCBIb3JzaGFtIGFuZCBNaWQgU3Vzc2V4XFxuXFxuVGhlIGxhdGVzdCBkYXRhIHdhcyByZWxlYXNlZCBpbiBEZWNlbWJlciAyMDE2LCBhbmQgY292ZXJzIHRoZSBwZXJpb2QgdXAgdG8gMjAxNSwgdGhlIGZpZ3VyZXMgYW5kIHRyZW5kcyBmb3IgdGhlIHR3byBXZXN0IFN1c3NleCBhcmVhcyB3ZXJlIHJlcG9ydGVkIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIHF1YXJ0ZXIgYW5kIHRoZXJlIGlzIG5vIHVwZGF0ZSBpbiB0ZXJtcyBvZiB0aGUgbG9jYWwgcGljdHVyZS4gVGhlIG5leHQgcmVsZWFzZSBvZiBkYXRhIGlzIGV4cGVjdGVkIGluIERlY2VtYmVyIDIwMTcuXFxuXFxuSG93ZXZlciwgaW4gdGVybXMgb2YgdGhlIG5hdGlvbmFsIHBpY3R1cmUsIHRoZXJlIGlzIHNvbWUgY29tbWVudGFyeSBmcm9tIHZhcmlvdXMgc291cmNlcyBpbmNsdWRpbmcgT05TIGl0c2VsZiBhbmQgdGhlIEJhbmsgb2YgRW5nbGFuZC5cXG5cXG5PTlMgTW9udGhseSBFY29ub21pYyBjb21tZW50YXJ5IChNYXJjaCAyMDE3KSBzdWdnZXN0cyB0aGF0IHRoZSBVSyBlY29ub215IGdyZXcgYnkgMC43JSBpbiBRdWFydGVyIDQgKE9jdCB0byBEZWMpIDIwMTYsIGFuZCBieSAxLjglIGZvciB0aGUgd2hvbGUgb2YgMjAxNi4gV2hvbGUgZWNvbm9teSBpbmRpY2F0b3JzIG9mIGVjb25vbWljIHdlbGwtYmVpbmcgYXJlIHJlcG9ydGVkIGFzIGJlaW5nIGdlbmVyYWxseSBwb3NpdGl2ZSx3aXRoIGdyb3d0aCBpbiBHRFAgcGVyIGhlYWQsIHNwZW5kaW5nIHBlciBoZWFkIGFuZCBuZXQgbmF0aW9uYWwgZGlzcG9zYWJsZSBpbmNvbWUsIHRob3VnaCBob3VzZWhvbGQgaW5jb21lIHNhdyBhIGRlY2xpbmUuIFRoZSBncm93dGggaW4gcHJvZHVjdGlvbiBhbmQgY29uc3RydWN0aW9uIG91dHB1dCBzZWVuIHRvd2FyZHMgdGhlIGVuZCBvZiAyMDE2IGhhZCBmbGF0dGVuZWQgb3V0IGluIEphbnVhcnkgMjAxNyBhbmQgd2hpbHN0IHNlcnZpY2Ugc2VjdG9ycyBkcm9wcGVkIHNsaWdodGx5IGluIEphbnVhcnkgdGhlIGxvbmcgdGVybSBwaWN0dXJlIGlzIHN0aWxsIG9uZSBvZiBleHBlY3RlZCBncm93dGguIE92ZXJhbGwsIG1vc3Qgb2YgdGhlIGJyb2FkZXIgbWVhc3VyZXMgb2YgdGhlIFVLIGVjb25vbXkgYXJlIGNvbnRpbnVpbmcgdGhlIHRyZW5kcyBzZWVuIGR1cmluZyAyMDE2LiBGb3IgZXhhbXBsZSxjb25zdW1lciBzcGVuZGluZyByZW1haW5zIHJlbGF0aXZlbHkgc3Ryb25nLCBzZXJ2aWNlcyBvdXRwdXQgaXMgaW5jcmVhc2luZyxtYW51ZmFjdHVyaW5nIG91dHB1dCBpcyByaXNpbmcsIHBhcnRpY3VsYXJseSBpbiB0aGUgcHJvZHVjdGlvbiBvZiBtb3RvciB2ZWhpY2xlcyBhbmQgdW5lbXBsb3ltZW50IGlzIGxvdy4gSG91c2Vob2xkcyBhcmUgaG93ZXZlciBzZWVpbmcgcmlzaW5nIHByaWNlcyBmb3IgZ29vZHMgYW5kIHNlcnZpY2VzIGluIHNvbWUga2V5IGFyZWFzIHN1Y2ggYXMgZm9vZCBhbmQgZnVlbCwgd2hpY2ggaXMgcHV0dGluZyBkb3dud2FyZCBwcmVzc3VyZSBvbiByZWFsIHdhZ2VzIGFuZCBpbmNvbWVzLlxcblxcbsKgIFtodHRwczovL3d3dy5vbnMuZ292LnVrL2Vjb25vbXkvbmF0aW9uYWxhY2NvdW50cy91a3NlY3RvcmFjY291bnRzL2FydGljbGVzL21vbnRobHllY29ub21pY2NvbW1lbnRhcnkvbWFyMjAxN11bMF1cXG5cXG5Nb3JlIG5hdGlvbmFsIGxldmVsIGRhdGEgd2lsbCBiZWNvbWUgYXZhaWxhYmxlIG92ZXIgdGhlIGNvbWluZyBtb250aHMsIHRob3VnaCBpdCB3aWxsIGJlIG11Y2ggbG9uZ2VyIGJlZm9yZSBkYXRhIGZvciBXZXN0IFN1c3NleCB3aWxsIGJlIHJlbGVhc2VkIGFuZCB3ZSBjYW4gc2VlIHdoYXQgdGhlIGVtZXJnaW5nIHBpY3R1cmUgaXMgZm9yIHRoZSBsb2NhbCBlY29ub215IHBhcnRpY3VsYXJseSBpbiBsaWdodCBvZiB0aGUgcG9zdCBFVSB2b3RlLCB0cmlnZ2VyaW5nIG9mIEFydGljbGUgNTAgYW5kIHN1YnNlcXVlbnQgbmVnb3RpYXRpb25zLlxcblxcblswXTogaHR0cHM6Ly93d3cub25zLmdvdi51ay9lY29ub215L25hdGlvbmFsYWNjb3VudHMvdWtzZWN0b3JhY2NvdW50cy9hcnRpY2xlcy9tb250aGx5ZWNvbm9taWNjb21tZW50YXJ5L21hcjIwMTdcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMgLSBEZWNlbWJlciAyMDE2KipcXG5cXG4tIC0gLVxcblxcbkdyb3NzIFZhbHVlIEFkZGVkIChHVkEpIGlzIGEgcmVjb2duaXNlZCBtZWFzdXJlIG9mIGVjb25vbWljIGFjdGl2aXR5IGJyb2FkbHkgZGVmaW5lZCBhcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB2YWx1ZSBvZiB0aGUgZ29vZHMgYW5kIHNlcnZpY2VzIHByb2R1Y2VkIGFuZCB0aGUgY29zdCBvZiByYXcgbWF0ZXJpYWxzIGFuZCBvdGhlciBpbnB1dHMgdXNlZCBpbiBwcm9kdWN0aW9uLiBUaGUgZGF0YSBpcyByZWxlYXNlZCBhbm51YWxseSBmcm9tIE9OUywgdGhlIGxhdGVzdCBzdWItcmVnaW9uYWwgZXN0aW1hdGVzIGZvciBHVkEgd2FzIHJlbGVhc2VkIGluIERlY2VtYmVyIDIwMTYsIGFuZCB0aGUgbmV4dCByZWxlYXNlIGlzIGV4cGVjdGVkIGluIERlY2VtYmVyIDIwMTcuXFxuXFxuVGhlIGRhdGEgaXMgYXZhaWxhYmxlIGF0OiBbaHR0cHM6Ly93d3cub25zLmdvdi51ay9lY29ub215L2dyb3NzdmFsdWVhZGRlZGd2YS9kYXRhc2V0cy9yZWdpb25hbGdyb3NzdmFsdWVhZGRlZGluY29tZWFwcHJvYWNoXVswXVxcblxcblByZXZpb3VzIHRvIDIwMTUgdGhlIEdWQSBkYXRhIHdhcyByZWxlYXNlZCBhdCBjb3VudHkgbGV2ZWwgYW5kIHRoZXJlZm9yZSBhdmFpbGFibGUgZm9yIFdlc3QgU3Vzc2V4LiBTaW5jZSB0aGVuLCB0aGUgZmlndXJlcyBoYXZlIGJlZW4gcmVsZWFzZWQgYXQgcmV2aXNlZCBnZW9ncmFwaGljYWwgbGV2ZWxzIHdoaWNoIHNwbGl0IHRoZSBjb3VudHkgaW50byB0d28gYXJlYXMgdG8gaW5jbHVkZTpcXG5cXG4xLiBXZXN0IFN1c3NleCDigJMgU291dGggV2VzdCAoV1NTVykg4oCTIGNvbXByaXNlcyBDaGljaGVzdGVyLCBBcnVuLCBBZHVyIGFuZCBXb3J0aGluZ1xcbjEuIFdlc3QgU3Vzc2V4IOKAkyBOb3J0aCBFYXN0IChXU05FKSDigJMgY29tcHJpc2VzIENyYXdsZXksIEhvcnNoYW0gYW5kIE1pZCBTdXNzZXhcXG5cXG5UaGlzIHNwbGl0IGlzIGhlbHBmdWwgYXMgV2VzdCBTdXNzZXjigJNTb3V0aCBXZXN0IChXU1NXKSBtYXRjaGVzIHdpdGggQ29hc3RhbCBXZXN0IFN1c3NleCBhbmQgV2VzdCBTdXNzZXgtTm9ydGggRWFzdCAoV1NORSkgd2l0aCB0aGF0IGFyZWEgb2YgV2VzdCBTdXNzZXggdGhhdCBsaWVzIHdpdGhpbiBHYXR3aWNrIERpYW1vbmQgc28gdGhlcmUgaXMgbW9yZSBkZXRhaWwgZm9yIHRoZXNlIHR3byB2ZXJ5IGRpZmZlcmVudCBlY29ub21pYyBhcmVhcyBvZiB0aGUgY291bnR5LiBXaGlsc3QgdGhlIGZpZ3VyZSBzYXJlIG5vdCByZWxlYXNlZCBieSBPTlMgZm9yIFdlc3QgU3Vzc2V4IENvdW50eSBhcmVhIHRoZXkgY2FuIGJlIGVzdGltYXRlZCBieSBjb21iaW5pbmcgdGhlIHR3byBuZXcgYXJlYXMuIFRoZSBsYXRlc3QgZmlndXJlcyBzdWdnZXN0IHRoYXQgYXQgMjAxNTpcXG5cXG4qIFdpdGhpbiB0aGUgU291dGggRWFzdCByZWdpb24gQmVya3NoaXJlIGhhZCB0aGUgaGlnaGVzdCBHVkEgYXQgwqMzNSw4NDVtIGFuZCBJc2xlIG9mIFdpZ2h0IHRoZSBsb3dlc3QgYXQgwqMyLDQ3M20uXFxuKiBXaXRoIHRoZSBleGNlcHRpb24gb2YgUG9ydHNtb3V0aCBhbGwgYXJlYXMgd2l0aGluIHRoZSBTb3V0aCBFYXN0IGV4cGVyaWVuY2VkIGdyb3d0aCBpbiBHVkEgb3ZlciB0aGUgeWVhciAyMDE0LTIwMTUuIFRoZSBoaWdoZXN0IHBlcmNlbnRhZ2UgZ3Jvd3RoIHdhcyBzZWVuIGluIEtlbnQgVGhhbWVzIEdhdGV3YXkgYXQgNi4xJSwgUG9ydHNtb3V0aCBzYXcgYSBmYWxsIGluIEdWQSBvZiAwLjQlIG92ZXIgdGhlIHllYXIuIE91dCBvZiB0aGUgMjEgc3ViIGFyZWFzIGluIHRoZSBTb3V0aCBFYXN0IHJlZ2lvbiDigJhXZXN0IFN1c3NleCAtIFNvdXRoIFdlc3QnIHNhdyB0aGUgc2Vjb25kIGxvd2VzdCBncm93dGggb2YgMC4xJSBjb21wYXJlZCB3aXRoIGdyb3d0aCBpbiBXZXN0IFN1c3NleCBOb3J0aCBFYXN0IG9mIDMlLiBUaGlzIGNvbXBhcmVzIHdpdGggdGhlIGdyb3d0aCBvdmVyIHRoZSB5ZWFyIGZvciBFbmdsYW5kIGF0IDMuMCUgYW5kIGZvciB0aGUgU291dGggRWFzdCByZWdpb24gYSBncm93dGggb2YgMy4yJS5cXG4qIFdlc3QgU3Vzc2V4IE5vcnRoIEVhc3QgaXMgcmFua2VkIDd0aCAob3V0IG9mIDIxIGFyZWFzIGluIHRoZSByZWdpb24pIGF0IMKjMTEsNzk5bSwgYW5kIFdlc3QgU3Vzc2V4IFNvdXRoIFdlc3QgaGFzIGZhbGxlbiBmcm9tIDExdGggdG8gMTN0aCBwb3NpdGlvbiBvdmVyIHRoZSBsYXN0IHllYXIgYXQgwqM5LDI5Mm0uIFRoZSBXZXN0IFN1c3NleCBlY29ub215IGFzIGEgd2hvbGUgaXMgdGhlcmVmb3JlIGVzdGltYXRlZCB0byBiZSDCozIxLDA5MW0uXFxuXFxuWzBdOiBodHRwczovL3d3dy5vbnMuZ292LnVrL2Vjb25vbXkvZ3Jvc3N2YWx1ZWFkZGVkZ3ZhL2RhdGFzZXRzL3JlZ2lvbmFsZ3Jvc3N2YWx1ZWFkZGVkaW5jb21lYXBwcm9hY2hcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvRDZFRDhEODAtRkFFNS00RTM2LThBMEItMDI1NDdENDIyRjdEXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkdyb3NzIFZhbHVlIEFkZGVkIHBlciBoZWFkXFxuXFxuR3Jvc3MgVmFsdWUgQWRkZWQgcGVyIGhlYWQgdXNlcyBhIHdvcmtwbGFjZS1iYXNlZCBudW1lcmF0b3IgaS5lLiB0aGF0IEdWQSBwcm9kdWNlZCBpbiB0aGF0IGFyZWEgZGl2aWRlZCBieSB0aGUgcmVzaWRlbmNlIGJhc2VkIGRlbm9taW5hdG9yICh0b3RhbCByZXNpZGVudGlhbCBwb3B1bGF0aW9uKS4gSXQgYWxsb3dzIGNvbXBhcmlzb24gb2YgdGhlIHdlYWx0aCBnZW5lcmF0aW9uIGNhcGFiaWxpdHkgYXQgdmFyaW91cyBnZW9ncmFwaGljYWwgYXJlYXMgYnV0IGNhbiBwcm92aWRlIHNsaWdodGx5IG1pc2xlYWRpbmcgcmVzdWx0cyBhcyB0aGUgbWVhc3VyZXMgYXJlIG1peGVkIGJldHdlZW4gd29ya3BsYWNlIGJhc2VkIEdWQSBnZW5lcmF0ZWQgaW4gdGhhdCBhcmVhIGFuZCB0aGUgcmVzaWRlbnQgYmFzZWQgcG9wdWxhdGlvbi4gVGhlIHdlYWx0aCBjcmVhdGlvbiBvZiB0aG9zZSB3aG8gY29tbXV0ZSBpcyBjb3VudGVkIGF0IHRoZSB3b3JrcGxhY2Ugc28gdGhhdCBhcmVhcyBvZiBzaWduaWZpY2FudCBvdXQtY29tbXV0aW5nIG1heSBoYXZlIHRoZSBlZmZlY3Qgb2YgdW5kZXJzdGF0aW5nIEdWQSBsZXZlbHMgYXMgd291bGQgdGhvc2UgYXJlYXMgd2l0aCBhIGhpZ2ggcmV0aXJlbWVudCBwb3B1bGF0aW9uLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8yRDg1RUJEOC0xQzdDLTQyNzUtQjc1OS1ENzU5OEU3NUNFN0FcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiRXN0aW1hdGVzIG9mIEdWQSBwZXIgaGVhZCBpbmRpY2F0ZSB0aGF0IFdlc3QgU3Vzc2V4IFNvdXRoIFdlc3QgbGV2ZWxzIGFyZSBsb3dlciB0aGFuIHRoZSByZWdpb25hbCBhbmQgbmF0aW9uYWwgbGV2ZWxzLCB3aGVyZWFzIFdlc3QgU3Vzc2V4IE5vcnRoIEVhc3QgbGV2ZWxzIGFyZSBoaWdoZXIuIEdWQSBwZXIgaGVhZCBmb3IgV2VzdCBTdXNzZXggYXQgMjAxNSBpcyBlc3RpbWF0ZWQgdG8gYmUgwqMyNSwyMjAsIGFnYWluIGxvd2VyIHRoYW4gdGhhdCBmb3IgRW5nbGFuZCAowqMyNiwxNTkpIGFuZCBmb3IgdGhlIFNvdXRoIEVhc3QgcmVnaW9uICjCozI3LDg0NykuIFNpbmNlIDE5OTcgdGhlIGdhcCBpbiBHVkEgcGVyIGhlYWQgYmV0d2VlbiBXZXN0IFN1c3NleCBhbmQgdGhlIFNvdXRoIEVhc3QgaGFzIG5vdyByaXNlbiBmcm9tIDQlIHRvIG92ZXIgMTAlIGluIDIwMTUuIFRoZSBsYXRlc3QgZmlndXJlcyBzaG93IHRoYXQ6XFxuXFxuKiBJbiAyMDE0IEdyb3NzIFZhbHVlIEFkZGVkIChHVkEpIHBlciBoZWFkIG9mIHBvcHVsYXRpb24gaW5jcmVhc2VkIGluIGFsbCByZWdpb25zIGluIHRoZSBVSy4gVGhlIGhpZ2hlc3QgYW5udWFsIGdyb3d0aCB3YXMgaW4gdGhlIE5vcnRoIFdlc3QgYXQgMy4wJSBhbmQgdGhlIGxvd2VzdCBpbiB0aGUgRWFzdCBNaWRsYW5kcyBhdCAxLjAlLiBUaGUgU291dGggRWFzdCBleHBlcmllbmNlZCBhIGdyb3d0aCBvZiAyLjMlIGhpZ2hlciB0aGFuIHRoYXQgZm9yIEVuZ2xhbmQgYXQgMi4xJS4gV2l0aCB0aGUgZXhjZXB0aW9uIG9mIFlvcmtzaGlyZSBhbmQgVGhlIEh1bWJlciBhbGwgcmVnaW9ucyBpbiBFbmdsYW5kIGV4cGVyaWVuY2VkIGEgbG93ZXIgbGV2ZWwgb2YgZ3Jvd3RoIGluIEdWQSBwZXIgaGVhZCBvdmVyIHRoZSB5ZWFyIDIwMTQtMjAxNSB0aGFuIHRoYXQgb3ZlciB0aGUgcHJldmlvdXMgeWVhci5cXG5cXG4qIFdpdGhpbiB0aGUgU291dGggRWFzdCByZWdpb24gTWlsdG9uIEtleW5lcyBoYXMgdGhlIGhpZ2hlc3QgR1ZBIHBlciBoZWFkIG9mIGFsbCBhcmVhcyBhdCDCozQxLDU4MSBhbmQgRWFzdCBLZW50IHRoZSBsb3dlc3QgYXQgwqMxNywyMzIuXFxuXFxuKiBXZXN0IFN1c3NleCBOb3J0aCBFYXN0IEdWQSBwZXIgaGVhZCBhdCDCozMwLDA2OSBpcyBoaWdoZXIgdGhhbiB0aGUgYXZlcmFnZSBmb3IgRW5nbGFuZCAowqMyNiwxNTApIGFuZCB0aGUgU291dGggRWFzdCByZWdpb24gKMKjMjcsODQ3KSBhbmQgaXMgcmFua2VkIDd0aCBoaWdoZXN0IG91dCBvZiB0aGUgMjEgZ2VvZ3JhcGhpZXMgaW4gdGhlIHJlZ2lvbi4gSXQgY29tcGFyZXMgd2l0aCB0aGUgR1ZBIHBlciBoZWFkIHNlZW4gaW4gV2VzdCBTdXNzZXggU291dGggRWFzdCBvZiDCozIwLDkzMyAocmFua2VkIDE2LzIxKS5cXG5cXG4qIE92ZXIgdGhlIGxhc3QgdGVuIHllYXJzIDIwMDUtMjAxNSBHVkEgcGVyIGhlYWQgaW5jcmVhc2VkIGluIHRoZSBTb3V0aCBFYXN0IHJlZ2lvbiBieSAyNS4zJS4gV2l0aGluIHRoZSBTb3V0aCBFYXN0IE1pbHRvbiBLZXluZXMgc2F3IHRoZSBoaWdoZXN0IGdyb3d0aCBvZiBvdmVyIDQwJSBjb21wYXJlZCB3aXRoIHRoZSBsb3dlc3QgZ3Jvd3RoIG9mIDUuOCUgaW4gU291dGhhbXB0b24uIEluIFdlc3QgU3Vzc2V4IHRoZSBncm93dGggaW4gdGhlIE5vcnRoIEVhc3Qgb2YgdGhlIGNvdW50eSBhdCAzNS44JSB3YXMgdGhlIHNlY29uZCBoaWdoZXN0IHJhdGUgb2YgZ3Jvd3RoIGluIHRoZSByZWdpb24sIGFuZCBvdmVyIHR3aWNlIHRoYXQgc2VlbiBpbiBXZXN0IFN1c3NleCBTb3V0aCBXZXN0IGF0IDE2JSBncm93dGguIEhvd2V2ZXIsIG92ZXIgdGhlIGxhc3QgeWVhciBpbiAxNC0xNSBncm93dGggaW4gR1ZBIHBlciBoZWFkIGhhcyBnZW5lcmFsbHkgZmFsbGVuIHNpbmNlIHRoZSBwcmV2aW91cyB5ZWFyLiBJbmRlZWQgV2VzdCBTdXNzZXggU291dGggV2VzdCBpcyBvbmUgb2YgdHdvIGFyZWFzIGluIHRoZSByZWdpb25hbCB0byBoYXZlIHNlZW4gYSBkcm9wIG9uIEdWQSBwZXIgaGVhZCBsZXZlbHMoLTAuNyUgKSBXZXN0IFN1c3NleCBOb3J0aCBFYXN0IHNhdyBhbiBpbmNyZWFzZSBvZiAxMDklIGluIDIwMTQtMTUgY29tcGFyZWQgd2l0aCA2LjclIGdyb3d0aCBpbiB0aGUgcHJldmlvdXMgeWVhci5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvREI1Q0U0MEUtRTU0MS00RTA5LTk3MEMtN0EwN0QxQ0U4N0NBXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAyIC0gU2VwdGVtYmVyIDIwMTYqKlxcblxcbi0gLSAtXFxuXFxuTm8gZnVydGhlciBlc3RpbWF0ZXMgb2YgR1ZBIGF0IGxvY2FsIGxldmVsIHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBPTlMgdW50aWwgbWlkLURlY2VtYmVyIDIwMTYgd2hpY2ggd2lsbCBnaXZlIEdWQSBhbmQgR1ZBIHBlciBoZWFkIGVzdGltYXRlcyB1cCB0byAyMDE1LlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5XaGF0IHdpbGwgaGFwcGVuIHRvIHRoZXNlIG1lYXN1cmVzLCBpbiByZXNwZWN0IG9mIHRoZSBuYXRpb25hbC9yZWdpb25hbC9sb2NhbCBlY29ub215LCBnaXZlbiB0aGUgRVUgcmVmZXJlbmR1bSByZXN1bHQsIGlzIHN0aWxsIHRvIGJlIGRldGVybWluZWQuXFxuXFxuVGhlIGF1dGhvcml0eSBpcyB0YWtpbmcgZm9yd2FyZCBhIHJhbmdlIG9mIGFjdGlvbnMgdG8gaW1wcm92ZSBtYXR0ZXJzIGhlcmUuIFRoZXNlIGluY2x1ZGU6LVxcblxcbiogUHJvbW90aW5nIGdyb3d0aCBvZiB0aGUgSGVhbHRoIGFuZCBMaWZlIFNjaWVuY2VzIHNlY3RvclxcbiogQ3JlYXRpbmcgbmV3IGVjb25vbWljIGFzc2V0cyB0byB0aGUgc291dGggb2YgdGhlIGFpcnBvcnQgYW5kIHRvIGVuY291cmFnZSBtb3JlIGhpZ2ggdmFsdWUgR1ZBIGJ1c2luZXNzZXMgdG8gYmFzZSB0aGVtc2VsdmVzIGluIHRoZSBhcmVhXFxuKiBEZXZlbG9wbWVudCBvZiBEaXN0cmljdCAvIEJvcm91Z2ggUGxhY2UgUGxhbnMgYW5kIHRoZSBlc3RhYmxpc2htZW50IG9mIEdyb3d0aCBCb2FyZHMgdG8gc3VwcG9ydCB0aGVzZSBwbGFucy5cXG5cXG5Ub2dldGhlciB0aGVzZSBmb3JtIHRoZSBXZXN0IFN1c3NleCBHcm93dGggUGxhbi4gVGhlIGFtYWxnYW1hdGVkIEdyb3d0aCBQbGFuIHdhcyBpbiBwbGFjZSBieSBEZWNlbWJlciAyMDE1LlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKjIwMTUgR1ZBIERhdGEgUmVsZWFzZSoqXFxuXFxuLSAtIC1cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIFJlZ2lvbmFsIEdyb3NzIFZhbHVlIEFkZGVkIChJbmNvbWUgQXBwcm9hY2gpIGRhdGEgd2hpY2ggaW5jbHVkZXMgZGF0YSBmb3IgV2VzdCBTdXNzZXggaXMgcHVibGlzaGVkIGFubnVhbGx5LCB0aGUgbGF0ZXN0IHJlbGVhc2Ugd2FzIGluIERlY2VtYmVyIDIwMTUgYW5kIHJlbGF0ZXMgdG8gdGhlIHllYXJzIHVwdG8gMjAxNDsgdGhlIG5leHQgcmVsZWFzZSBpcyBleHBlY3RlZCBpbiBEZWNlbWJlciAyMDE2LlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9CNkYzODQ4Ny00OUExLTRFNTUtODZBNS02Mjk3QTZDOTRBNDZcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiR3Jvc3MgVmFsdWUgQWRkZWQgKEdWQSkgaXMgYSByZWNvZ25pc2VkIG1lYXN1cmUgb2YgZWNvbm9taWMgYWN0aXZpdHkgYnJvYWRseSBkZWZpbmVkIGFzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHZhbHVlIG9mIHRoZSBnb29kcyBhbmQgc2VydmljZXMgcHJvZHVjZWQgYW5kIHRoZSBjb3N0IG9mcmF3IG1hdGVyaWFscyBhbmQgb3RoZXIgaW5wdXRzIHVzZWQgaW4gcHJvZHVjdGlvbi4gSW4gRGVjZW1iZXIgMjAxNSBPTlMgcmVsZWFzZWQgdGhlIGxhdGVzdCBzdWIgcmVnaW9uYWwgZXN0aW1hdGVzIGZvciBHVkEuIFRoZSBkYXRhIGlzIGF2YWlsYWJsZSBhdDpcXG5cXG5baHR0cDovL3d3dy5vbnMuZ292LnVrL29ucy9yZWwvcmVnaW9uYWwtYWNjb3VudHMvcmVnaW9uYWwtZ3Jvc3MtdmFsdWUtYWRkZWQtLWluY29tZS1hcHByb2FjaC0vZGVjZW1iZXItMjAxNS9zdGItcmVnaW9uYWwtZ3ZhLWRlYy0yMDE1Lmh0bWxdWzBdXFxuXFxuVXAgdW50aWwgdGhpcyByZWxlYXNlIEdWQSBkYXRhIGhhcyBiZWVuIGF2YWlsYWJsZSBmb3IgZm9ybWVyIE5VVFMzIGdlb2dyYXBoaWVzIHdoaWNoIGNvdmVyZWQgdGhlIFdlc3QgU3Vzc2V4IENvdW50eSBhcmVhLiBIb3dldmVyLHRoaXMgbGF0ZXN0IGRhdGEgaXMgcHVibGlzaGVkLCBmb3IgdGhlIGZpcnN0IHRpbWUsIHVzaW5nIHJldmlzZWQgTlVUUzMgZ2VvZ3JhcGhpZXMsIHdoaWNoIHNwbGl0cyB0aGUgY291bnR5IGludG8gdHdvIHRvIGluY2x1ZGU6XFxuXFxuIFxcblxcbjEuIFdlc3QgU3Vzc2V4IOKAkyBTb3V0aCBXZXN0IChXU1NXKSDigJMgbWFkZSB1cCBvZiBDaGljaGVzdGVyLCBBcnVuLCBBZHVyIGFuZCBXb3J0aGluZ1xcbjEuIFdlc3QgU3Vzc2V4IOKAkyBOb3J0aCBFYXN0IChXU05FKSDigJMgbWFkZSB1cCBvZiBDcmF3bGV5LCBIb3JzaGFtIGFuZCBNaWQgU3Vzc2V4XFxuIFxcblxcblRoaXMgc3BsaXQgaXMgaGVscGZ1bCBhcyBXZXN0IFN1c3NleCDigJNTb3V0aCBXZXN0IChXU1NXKSBtYXRjaGVzIHdpdGggQ29hc3RhbCBXZXN0IFN1c3NleCBhbmQgV2VzdCBTdXNzZXggTm9ydGggRWFzdCAoV1NORSkgd2l0aCB0aGF0IGFyZWEgb2YgV2VzdCBTdXNzZXggdGhhdCBsaWVzIHdpdGhpbiBHYXR3aWNrIERpYW1vbmQuIFNvIGZvciB0aGUgZmlyc3QgdGltZSB3ZSBoYXZlIOKAmG9mZmljaWFs4oCZIGZpZ3VyZXMgZm9yIHRoZXNlIHR3byB2ZXJ5IGRpZmZlcmVudCBlY29ub21pYyBhcmVhcyBpbiBXZXN0IFN1c3NleC4gVGFraW5nIGludG8gYWNjb3VudCB0aGUgc3BsaXQgdGhhdCBoYXMgb2NjdXJyZWQgaW4gU3VycmV5IHNvIHRoYXQgU3VycmV5IEVhc3QgKEVwc29tIGFuZCBFd2VsbCwgVGFuZHJpZGdlLCBNb2xlIFZhbGxleSwgUmVpZ2F0ZSBhbmQgQmFuc3RlZCksIHRvZ2V0aGVyIHdpdGggV2VzdCBTdXNzZXggTm9ydGggRWFzdCBtYXRjaGVzIHRoZSB3aG9sZSBHYXR3aWNrIERpYW1vbmQgYXJlYS4gVGhlIGxhdGVzdCBzZXQgb2YgZGF0YSBpbmNsdWRlcyB0cmVuZHMgZnJvbSAxOTk3LTIwMTQuIE5CIOKAkyB0aGUgMjAxNCBlc3RpbWF0ZXMgYXJlIHByb3Zpc2lvbmFsIGFuZCBzdWJqZWN0IHRvIHJldmlldyBieSBPTlMuXFxuXFxuIFxcblxcbldoaWxzdCB0aGUgZmlndXJlcyBhcmUgbm90IHJlbGVhc2VkIGJ5IE9OUyBmb3IgV2VzdCBTdXNzZXggQ291bnR5IGFyZWEgdGhleSBjYW4gYmUgZXN0aW1hdGVkIGJ5IGNvbWJpbmluZyB0aGUgdHdvIG5ldyBhcmVhcy5cXG5cXG5bMF06IGh0dHA6Ly93d3cub25zLmdvdi51ay9vbnMvcmVsL3JlZ2lvbmFsLWFjY291bnRzL3JlZ2lvbmFsLWdyb3NzLXZhbHVlLWFkZGVkLS1pbmNvbWUtYXBwcm9hY2gtL2RlY2VtYmVyLTIwMTUvc3RiLXJlZ2lvbmFsLWd2YS1kZWMtMjAxNS5odG1sXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzE1OUJFRjMwLTdCNzItNDYzRC04Nzk3LTYzMDY2RTkzMEIxMFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqIFdpdGhpbiB0aGUgU291dGggRWFzdCByZWdpb24gQmVya3NoaXJlIGhhcyB0aGUgaGlnaGVzdCBHVkEgb2YgYWxsIGFyZWFzIGF0IMKjMzQsNTA2bSBhbmQgdGhlIElzbGUgb2YgV2lnaHQgdGhlIGxvd2VzdCAtIMKjMzA3MW0uXFxuXFxuKiBXZXN0IFN1c3NleCBOb3J0aCBFYXN0IGlzIHJhbmtlZCA3dGggKG91dCBvZiAyMSBhcmVhcyBpbiB0aGUgcmVnaW9uKSBhdCDCozExLDE0Nm0sIGFuZCBXZXN0IFN1c3NleCBTb3V0aCBXZXN0IDExdGggYXQgwqM5LDM2MG0sIG1lYW5pbmcgdGhhdCB0aGUgV2VzdCBTdXNzZXggZWNvbm9teSBhcyBhIHdob2xlIGlzIGVzdGltYXRlZCB0byBiZSDCozIwLDUwNm1cXG5cXG4qIEFsbCBhcmVhcyB3aXRoaW4gdGhlIFNvdXRoIEVhc3QgZXhwZXJpZW5jZWQgZ3Jvd3RoIGluIEdWQSBvdmVyIHRoZSB5ZWFyIDIwMTMtMjAxNC4gV2VzdCBLZW50IGV4cGVyaWVuY2VkIHRoZSBoaWdoZXN0IGdyb3d0aCBhdCA0LjklIGFuZCBOb3J0aCBIYW1wc2hpcmUgdGhlIGxvd2VzdCBhdCAwLjglSW4gdGhlIHByZXZpb3VzIHllYXIsIDIwMTItMjAxMyBXZXN0IFN1c3NleCBOb3J0aCBFYXN0LCBhbmQgU3VycmV5IEVhc3Qgc2F3IHNpZ25pZmljYW50IHJhdGVzIG9mIGdyb3d0aCDigJMgV1NORSBoYWQgZXhwZXJpZW5jZWQgdGhlIDNyZCBoaWdoZXN0IHJhdGUgb2YgZ3Jvd3RoIGluIHRoZSBTb3V0aCBFYXN0IHJlZ2lvbiwgaG93ZXZlciBpbiBib3RoIGFyZWFzIHRoaXMgZ3Jvd3RoIGFzIGZhbGxlbiBjb25zaWRlcmFibHkgZHVyaW5nIDIwMTMtMTQgYWZmZWN0aW5nIGdyb3d0aCBpbiBHYXR3aWNrIERpYW1vbmQgd2hpY2ggaXMgbGVzcyB0aGFuIGhhbGYgd2hhdCBpdCB3YXMgaW4gMjAxMi3igJgxMy5cXG5cXG4qIFdTU1cgaGFzIGNvbnRpbnVhbGx5IHNlZW4gbG93ZXIgcmF0ZXMgZm9yIGdyb3d0aCBpbiBHVkEgdGhhbiBXU05FIGFuZCBpbmRlZWQgbG93ZXIgcmF0ZXMgdGhhbiB0aGUgcmVnaW9uYWwgYW5kIG5hdGlvbmFsIGF2ZXJhZ2U7IGdyb3d0aCBpbiBXZXN0IFN1c3NleCBDb3VudHkgaXMgdmVyeSBtdWNoIGJ1b3llZCB1cCBieSB0aGUgZ3Jvd3RoIHRha2luZyBwbGFjZSBpbiB0aGUgTm9ydGggRWFzdCBvZiB0aGUgY291bnR5LiBJbiB0aGUgbGFzdCB0ZW4geWVhcnMgZ3Jvd3RoIGluIHRoZSBub3J0aCBlYXN0IG9mIHRoZSBjb3VudHkgaGFzIGJlZW4gaGlnaGVyIHRoYW4gdGhlIG5hdGlvbmFsIGFuZCByZWdpb25hbCBhdmVyYWdlLlxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkdWQSBwZXIgaGVhZCoqXFxuXFxuKipHcm9zcyBWYWx1ZSBBZGRlZCBwZXIgaGVhZCoqXFxuXFxuR3Jvc3MgVmFsdWUgQWRkZWQgcGVyIGhlYWQgdXNlcyBhIHdvcmtwbGFjZS1iYXNlZCBudW1lcmF0b3IgaS5lLiB0aGF0IEdWQSBwcm9kdWNlZCBpbiB0aGF0IGFyZWEgZGl2aWRlZCBieSB0aGUgcmVzaWRlbmNlIGJhc2VkIGRlbm9taW5hdG9yICh0b3RhbCByZXNpZGVudGlhbCBwb3B1bGF0aW9uKS4gSXQgaXMgYSBrZXkgbWVhc3VyZSBvZiB0aGUgd2VhbHRoIGdlbmVyYXRpb24gY2FwYWJpbGl0eSBvZiBhbiBhcmVh4oCZcyBlY29ub215LiBIb3dldmVyIGl0IGNhbiBwcm92aWRlIHNsaWdodGx5IG1pc2xlYWRpbmcgcmVzdWx0cyBhcyB0aGUgbWVhc3VyZXMgYXJlIG1peGVkIGJldHdlZW4gd29ya3BsYWNlIGJhc2VkIEdWQSBnZW5lcmF0ZWQgaW4gdGhhdCBhcmVhIGFuZCB0aGUgcmVzaWRlbnQgYmFzZWQgcG9wdWxhdGlvbiwgdGhlIHdlYWx0aCBjcmVhdGlvbiBvZiB0aG9zZSB3aG8gY29tbXV0ZSBpcyBjb3VudGVkIGF0IHRoZSB3b3JrcGxhY2Ugc28gdGhhdCBhcmVhcyBvZiBzaWduaWZpY2FudCBvdXQtY29tbXV0aW5nIG1heSBoYXZlIHRoZSBlZmZlY3Qgb2YgdW5kZXJzdGF0aW5nIEdWQSBsZXZlbHMuIEluIFdlc3QgU3Vzc2V4IG1hbnkgcmVzaWRlbnQgd29ya2VycyBtYXkgY29tbXV0ZSB0byBlLmcuIExvbmRvbi9TdXJyZXkvIEJyaWdodG9uIGFuZCBIb3ZlIGV0Yy4sIHNvIHRoZSB3ZWFsdGggcmVhY3Rpb24gb2YgdGhvc2Ugd29ya2VycyB3aWxsIGJlIGNvdW50ZWQgdGhlcmUuIENvbnZlcnNlbHksIGZvciBleGFtcGxlLCBMb25kb27igJlzIEdWQSBwZXIgaGVhZCBmaWd1cmVzIHdpbGwgYmUgb3ZlcnN0YXRlZCBhcyBMb25kb24gaXMgc3VjaCBhIG1ham9yIGltcG9ydGVyIG9mIGxhYm91ci4gVGhvc2UgYXJlYXMgd2l0aCBhIGhpZ2ggcmV0aXJlbWVudCBhbHNvIHByb2R1Y2UgdW5kZXJzdGF0ZWQgZXN0aW1hdGVzIG9mIEdWQSBwZXIgaGVhZC4gQ29hc3QgdG8gQ2FwaXRhbCBMRVAgaGF2ZSBwcm92aWRlZCBzb21lIGVzdGltYXRlcyBvZiBHVkEgcGVyIGpvYiB3aGljaCBpcyBhIGJldHRlciBtZWFzdXJlIG9mIHByb2R1Y3Rpdml0eSBvZiBhbiBhcmVhLCB0aG91Z2ggR1ZBIHBlciBjYXBpdGEgaXMgYSB1c2VmdWwgaW5kaWNhdG9yIG9mIGVjb25vbWljIHBlcmZvcm1hbmNlIGluIGFuIGFyZWEsIGFuZCBPTlMgZG8gbWFrZSB0aGUgZmlndXJlcyBhdmFpbGFibGUuXFxuXFxuRXN0aW1hdGVzIG9mIEdWQSBwZXIgaGVhZCBmb3IgV2VzdCBTdXNzZXggc3VnZ2VzdHMgdGhhdCBpbiAxOTk3ICh0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIGN1cnJlbnQgdGltZSBzZXJpZXMpIEdWQSBwZXIgaGVhZCB3YXMgwqMxNCwwMDYgZm9yIFdlc3QgU3Vzc2V4OyBzbGlnaHRseSBsb3dlciB0aGFuIGZvciBFbmdsYW5kICjCozEzLDY3NiksIGFuZCA1JSBoaWdoZXIgdGhhbiB0aGF0IGZvciB0aGUgU291dGggRWFzdCBhdCDCozE0LDY5OC4gT3ZlciB0aW1lIGhvd2V2ZXIgR1ZBIGZpZ3VyZXMgaGF2ZSByaXNlbiBpbiBFbmdsYW5kIGFuZCB0aGUgU291dGggRWFzdCBhdCBhIGhpZ2hlciByYXRlIHRoYW4gc2VlbiBpbiBXZXN0IFN1c3NleC4gVGhlIGdhcCBpbiBHVkEgcGVyIGhlYWQgYmV0d2VlbiBXZXN0IFN1c3NleCBhbmQgdGhlIFNvdXRoIEVhc3QgaGFzIG5vdyByaXNlbiB0byA5LjElIGluIDIwMTQuXFxuXFxuWzFdIEdhdHdpY2sgRGlhbW9uZCA9IFdlc3QgU3Vzc2V4IE5FIHBsdXMgU3VycmV5IEVhc3RcXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvNTUwREZEOTQtNTlBMi00MUQ5LTk0MDMtMDJDMEM5MkIxNDMzXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiogSW4gMjAxNCBHcm9zcyBWYWx1ZSBBZGRlZCAoR1ZBKSBwZXIgaGVhZCBvZiBwb3B1bGF0aW9uIGluY3JlYXNlZCBpbiBhbGxyZWdpb25zIGluIHRoZSBVSy4gVGhlIGhpZ2hlc3QgYW5udWFsIGdyb3d0aCB3YXMgaW4gTG9uZG9uIGF0IDUuMyUgYW5kIHRoZSBsb3dlc3QgYW5udWFsIGdyb3d0aCB3YXMgaW4gTm9ydGhlcm4gSXJlbGFuZCBhdCAxLjklLiBUaGUgU291dGggRWFzdCBleHBlcmllbmNlZCBhIGdyb3d0aCBvZiAyLjglIGxvd2VyIHRoYW4gdGhhdCBmb3IgRW5nbGFuZCBhdCAzLjclLlxcblxcbiogQXQgdGhlIHJlZ2lvbmFsIGxldmVsLCBpbiAyMDE0IExvbmRvbiBoYWQgdGhlIGhpZ2hlc3QgR1ZBIHBlciBoZWFkIGF0IMKjNDIsNjY2LCB3aGlsZSBXYWxlcyBoYWQgdGhlIGxvd2VzdCBhdCDCozE3LDU3My4gVGhlIFNvdXRoIEVhc3QgcmVnaW9uIGhhZCB0aGUgc2Vjb25kIGhpZ2hlc3QgR1ZBIHBlciBoZWFkIGF0IMKjMjcsMDEyIGFuZCBjb21wYXJlcyB3aXRoIHRoYXQgZm9yIEVuZ2xhbmQgYXQgwqMyNSwzNjcuXFxuXFxuKiBXaXRoaW4gdGhlIFNvdXRoIEVhc3QgcmVnaW9uIE1pbHRvbiBLZXluZXMgaGFkIHRoZSBoaWdoZXN0IEdWQSBwZXIgaGVhZGF0IMKjMzksNzA5IGNvbXBhcmVkIHdpdGggTWVkd2F5IHdoaWNoIGhhZCB0aGUgbG93ZXN0IGxldmVsIGF0IMKjMTcsMDM4LiBCb3RoIE5vcnRoIEVhc3QgV2VzdCBTdXNzZXgsIGFuZCBTb3V0aCBXZXN0IFdlc3QgU3Vzc2V4IGhhZCBsZXZlbHMgb2YgR1ZBIHBlciBoZWFkIGxvd2VyIHRoYW4gdGhlIHJlZ2lvbmFsIGF2ZXJhZ2UgYXQgwqMyNiw2OTUgKDZ0aCBvdXQgb2YgMjEpIGFuZCDCozIxLDI3NCAocmFua2VkIDE3dGgpIHJlc3BlY3RpdmVseS5cXG5cXG4qIE5vIGFyZWFzIG9mIHRoZSBTb3V0aCBFYXN0IGhhZCBleHBlcmllbmNlZCBhIGZhbGwgaW4gR1ZBIHBlciBoZWFkIGluIHRoZSBsYXN0IHllYXIuIFdlc3QgS2VudCBzYXcgdGhlIGhpZ2hlc3QgaW5jcmVhc2Ugb3ZlciB0aGUgeWVhciAyMDEzIOKAkyAyMDE0IGF0IDQuOSUsIFdlc3QgU3Vzc2V4IOKAkyBTb3V0aCBXZXN0IGFuZCBXZXN0IFN1c3NleCDigJMgTm9ydGggRWFzdCBoYXZlIHNlZW4gc2ltaWxhciBsZXZlbHMgb2YgZ3Jvd3RoIGluIEdWQSBwZXIgaGVhZCBhdCAxLjglIGFuZCAxLjclLiBGb3IgV2VzdCBTdXNzZXggTm9ydGggRWFzdCB0aGlzIHdhcyBjb25zaWRlcmFibHkgbG93ZXIgdGhhbiB0aGF0IHNlZW4gc2luY2UgMjAxMSB3aGVuIGFubnVhbCBncm93dGggaGFkIGJlZW4gb3ZlciA2JS5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKioyMDE0IEdWQSBEYXRhIFJlbGVhc2UqKlxcblxcbi0gLSAtXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiBcXG5cXG5Hcm9zcyBWYWx1ZSBBZGRlZCAoR1ZBKSBpcyBhIHJlY29nbmlzZWQgbWVhc3VyZSBvZiBlY29ub21pYyBhY3Rpdml0eSBicm9hZGx5IGRlZmluZWQgYXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdmFsdWUgb2YgdGhlIGdvb2RzIGFuZCBzZXJ2aWNlcyBwcm9kdWNlZCBhbmQgdGhlIGNvc3Qgb2YgcmF3IG1hdGVyaWFscyBhbmQgb3RoZXIgaW5wdXRzIHVzZWQgaW4gcHJvZHVjdGlvbi4gSW4gRGVjZW1iZXIgMjAxNCBPTlMgcmVsZWFzZWQgdGhlIGxhdGVzdCBzdWIgcmVnaW9uYWwgZXN0aW1hdGVzIGZvciBHVkEuVGhlIG5leHQgdXBkYXRlIG9mIHRoaXMgZGF0YSBpcyBleHBlY3RlZCBpbiBEZWNlbWJlciAyMDE1LiBUaGUgZGF0YSBpcyBhdmFpbGFibGUgYXQ6XFxuXFxuW2h0dHA6Ly93d3cub25zLmdvdi51ay9vbnMvcHVibGljYXRpb25zL3JlLXJlZmVyZW5jZS10YWJsZXMuaHRtbD9lZGl0aW9uPXRjbSUzQTc3LTMzOTU5OF1bMF1cXG5cXG5UaGUgbGF0ZXN0IChwcm92aXNpb25hbCkgZmlndXJlIGZvciBHcm9zcyBWYWx1ZSBBZGRlZCAoR1ZBKSBzdWdnZXN0cyB0aGF0IGF0IDIwMTMgR1ZBIGZvciBXZXN0IFN1c3NleCB3YXMgwqMxOSw4NDhtbiwgbWFraW5nIHVwIGFyb3VuZCA4LjUlIG9mIHRoZSBTb3V0aCBFYXN0IEdWQS4gVGhpcyBjb250cmlidXRpb24gaGFzIGZhbGxlbiBmcm9tIG92ZXIgOSUgaW4gMTk5Ny5cXG5cXG5UaGUgU291dGggRWFzdCBlY29ub215IGV4cGFuZGVkIGJ5IDIuOCUgYWNjb3JkaW5nIHRvIHRoZXNlIHByZWxpbWluYXJ5IGVzdGltYXRlcyBmcm9tIE9OUywgdGhpcyB3YXMgbG93ZXIgdGhhbiBncm93dGggYWNyb3NzIHRoZSBVSywgTG9uZG9uLCBFYXN0IG9mIEVuZ2xhbmQgYW5kIHRoZSBTb3V0aCBXZXN0LiBUaGUgcHJvdmlzaW9uYWwgZXN0aW1hdGVzIG9mIEdWQSBmb3IgY291bnR5IGFuZCB1bml0YXJ5IGF1dGhvcml0aWVzIHNob3cgdGhhdCBXZXN0IFN1c3NleCwgYXQgNC40JSBncm93dGgsIGhhZCB0aGUgZm91cnRoIGhpZ2hlc3QgZ3Jvd3RoIGluIHRoZSBTb3V0aCBFYXN0IGJldHdlZW4gMjAxMiBhbmQgMjAxMywgbGFnZ2luZyBiZWhpbmQgU291dGhhbXB0b24gKDklKSwgTWlsdG9uIEtleW5lcyAoNC45JSkgYW5kIEJyaWdodG9uIGFuZCBIb3ZlICg0LjclKSwgc28gd2FzIHRoZSBmYXN0ZXN0IGdyb3dpbmcgY291bnR5IGluIHRoZSBTb3V0aCBFYXN0LlxcblxcbkluIDE5OTcgV2VzdCBTdXNzZXggaGFkIGEgaGlnaGVyIEdWQSBwZXIgaGVhZCB0aGFuIEVuZ2xhbmQgYW5kIHdhcyBhdCBhIHNpbWlsYXIgbGV2ZWwgYXQgwqMxNCwxMTQgdG8gdGhlIFNvdXRoIEVhc3QgYXZlcmFnZSAowqMxNCw3NDApLiBTaW5jZSBhcm91bmQgMjAwNCBob3dldmVyIGNvdW50eSBHVkEgcGVyIGhlYWQgaGFzIGJlZW4gZ2VuZXJhbGx5IGxvd2VyIHRoYW4gdGhhdCBzZWVuIG5hdGlvbmFsbHkgYW5kIGdyb3d0aCBpbiBXZXN0IFN1c3NleCBoYXMgYmVlbiBsb3dlciB0aGFuIHRoYXQgc2VlbiByZWdpb25hbGx5IHNvIHRoZSBnYXAgYmV0d2VlbiB0aGUgcmVnaW9uYWwgYW5kIGNvdW50eSBHVkEgcGVyIGhlYWQgZmlndXJlIGhhcyB3aWRlbmVkLiBJbiAyMDEzIHRoZSBHVkEgcGVyIGhlYWQgZm9yIFdlc3QgU3Vzc2V4IHdhcyBlc3RpbWF0ZWQgdG8gYmUgwqMyNCwxNjUgKHByb3Zpc2lvbmFsIGZpZ3VyZXMpIGNvbXBhcmVkIGZvciB0aGUgU291dGggRWFzdCBhdmVyYWdlIGF0IMKjMjUsODQzLiBUaGUgR1ZBIGZvciBXZXN0IFN1c3NleCBpbiAyMDEzIHdhcyBhYm91dCAzLjMlIGFib3ZlIHRoZSBVSyBhdmVyYWdlIGFuZCBpdCBoYWQgaW5jcmVhc2VkIGJ5IDMuNiUgc2lnbmlmaWNhbnRseSBzbG93ZXIgdGhhbiBpbiAyMDEyICg2LjQlKSBidXQgZmFzdGVyIHRoYW4gdGhlIFVLIGF2ZXJhZ2UgYW5kIGZhc3RlciB0aGFuIGluIGFueSBvdGhlciBjb3VudHkgaW4gdGhlIFNvdXRoIEVhc3QgaW4gMjAxMy4gQXQgMy44JSBCcmlnaHRvbiBhbmQgSG92ZSBoYWQgdGhlIGZhc3Rlc3QgZ3Jvd3RoIGluIEdWQSBwZXIgaGVhZCBpbiB0aGUgU291dGggRWFzdCByZWdpb24uIEN1bXVsYXRpdmUgZ3Jvd3RoIGluIEdWQSBwZXIgaGVhZCBpbiBXZXN0IFN1c3NleCBiZXR3ZWVuIDIwMDkgYW5kIDIwMTMgd2FzIDEzLjElIG1hcmdpbmFsbHkgc2xvd2VyIHRoYW4gaW4gU3VycmV5LCBidXQgZmFzdGVyIHRoYW4gaW4gdGhlIEhhbXBzaGlyZSBDb3VudHkgQ291bmNpbCBBcmVhLCBLZW50IGFuZCBFYXN0IFN1c3NleCBhbmQgdGhlIHJlZ2lvbmFsIGFuZCBuYXRpb25hbCBhdmVyYWdlLlxcblxcblswXTogaHR0cDovL3d3dy5vbnMuZ292LnVrL29ucy9wdWJsaWNhdGlvbnMvcmUtcmVmZXJlbmNlLXRhYmxlcy5odG1sP2VkaXRpb249dGNtJTI1MjUzQTc3LTMzOTU5OFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqIEdWQSBwZXIgaGVhZCBpcyBhIHJhdGlvIG9mIHRvdGFsICh3b3JrcGxhY2UgYmFzZWQgR1ZBKSBhbmQgdG90YWwgKHJlc2lkZW5jZSBiYXNlZCBwb3B1bGF0aW9uKS4gUmVsYXRpdmVseSBsYXJnZSBlY29ub21pY2FsbHkgaW5hY3RpdmUgcG9wdWxhdGlvbiB0ZW5kcyB0byBkZXByZXNzIEdWQSBwZXIgaGVhZCBhbmQgR1ZBIHBlciBoZWFkIGdyb3d0aCByYXRlcy4gR1ZBIHBlciBoZWFkIGlzIGEgdXNlZnVsIG1lYXN1cmUgZm9yIGNvbXBhcmluZyBhcmVhcyBvZiBkaWZmZXJlbmNlIHNpemVzXFxuXFxuKiBSZWdpb25hbCBHcm9zcyBWYWx1ZSBBZGRlZCBUYWJsZXMgKHJlbGVhc2VkIERlY2VtYmVyIDIwMTQg4oCTIE9OUylcXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvNUQ4NkJGOEMtMjhFMy00Q0ZFLTk3NDUtM0Q5Rjk3RjA4N0YxXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiogU291cmNlOiBUYWJsZSAzLjIgUmVnaW9uYWwgR3Jvc3MgVmFsdWUgQWRkZWQgVGFibGVzLCBPTlNcXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlcmUgaXMgYSB0d2VsdmUgbW9udGggZGF0YSBsYWcgYmV0d2VlbiB0aGUgaGVhZGxpbmUgcHJlbGltaW5hcnkgZXN0aW1hdGUgb2Ygc3ViIHJlZ2lvbmFsIEdWQSBhbmQgdGhlIGVzdGltYXRlcyBvZiBHVkEgYnkgYnJvYWQgc2VjdG9yIHNvIHRoZSBsYXRlc3QgR1ZBIHNwbGl0IGJ5IHNlY3RvciBpcyBmb3IgMjAxMi4gVGhlIGZpZ3VyZXMgZm9yIFdlc3QgU3Vzc2V4IHN1Z2dlc3Qgc3Ryb25nIGdyb3d0aCBpbiBmaW5hbmNpYWwgYW5kIGluc3VyYW5jZSwgcmVhbCBlc3RhdGUsIGRpc3RyaWJ1dGlvbiwgdHJhbnNwb3J0LCBhY2NvbW1vZGF0aW9uIGFuZCBmb29kLCBtYW51ZmFjdHVyaW5nIGFuZCBidXNpbmVzcyBzZXJ2aWNlIHNlY3RvcnMuIEZhc3RlciBncm93dGggb3ZlcmFsbCB3YXMgaGVsZCBiYWNrIGJ5IGNvbnN0cnVjdGlvbiBhbmQgaW5mb3JtYXRpb24gYW5kIGNvbW11bmljYXRpb24uXFxuXFxuRGlzdHJpYnV0aW9uLCB0cmFuc3BvcnQsIGFjY29tbW9kYXRpb24gYW5kIGZvb2QgaXMgdGhlIGxhcmdlc3QgYnJvYWQgc2VjdG9yIGluIFdlc3QgU3Vzc2V4IGFzIGl0IGFjY291bnRzIGZvciBhcm91bmQgMjQlIG9mIHRvdGFsIEdWQS4gVGhpcyBzZWN0b3IgZXhwYW5kZWQgYnkgYXJvdW5kIDkuNyUgZnJvbSAyMDExLTEyIGNvbXBhcmVkIHRvIDIuMyUgaW4gdGhlIFVLLiBUaGUgcmVhbCBlc3RhdGUgc2VjdG9yIGluIFdlc3QgU3Vzc2V4IGlzIHRoZSBzZWNvbmQgbGFyZ2VzdCBicm9hZCBzZWN0b3Igb2YgdGhlIGVjb25vbXkgYW5kIGFjY291bnRlZCBmb3IgMTMuMyUgb2YgR1ZBLiBGaW5hbmNpYWwgYW5kIGluc3VyYW5jZSBzZXJ2aWNlcyBhY2NvdW50IGZvciBhcm91bmQgNiUgb2YgdGhlIFdlc3QgU3Vzc2V4IGVjb25vbXkuIFRoaXMgc2VjdG9yIHRob3VnaCB3YXMgdGhlIGJlc3QgcGVyZm9ybWluZyBzZWN0b3IgaW4gV2VzdCBTdXNzZXggaW4gMjAxMywgYWZ0ZXIgY29udHJhY3RpbmcgaW4gMjAxMSB0b3RhbCBvdXRwdXQgaW4gdGhpcyBzZWN0b3IgaW5jcmVhc2VkIGJ5IGFyb3VuZCAyMCUgaW4gMjAxMi5cXG5cXG5PTlMgZG8gbm90IHJlbGVhc2UgZXN0aW1hdGVzIG9mIEdWQSBhdCBkaXN0cmljdCBhdXRob3JpdHkgbGV2ZWwuXFxuXFxuIFwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9CMTc2MjhBNi00NDU4LTREQUQtOEIxQi0xNTZFOUMwOTA5N0RcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKiBTb3VyY2U6IC0gQ29hc3QgdG8gQ2FwaXRhbCBMRVAgLWZpZ3VyZXMgaW4gaXRhbGljcyBhcmUgZXN0aW1hdGVzLCBmaWd1cmVzIGZyb20gQ29hc3QgdG8gQ2FwaXRhbCBhbmQgV2VzdCBTdXNzZXggZnJvbSBPTlNcXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiSG93ZXZlciwgZXN0aW1hdGVzIGZvciBXZXN0IFN1c3NleCBkaXN0cmljdHMgYW5kIGJvcm91Z2hzIGhhdmUgYmVlbiBlc3RpbWF0ZWQgYnkgQ29hc3QgdG8gQ2FwaXRhbCBMRVAgdXNpbmcgdGhlIGxhdGVzdCB3b3JrcGxhY2UgYmFzZWQgbWVhbiBncm9zcyB3ZWVrbHkgZWFybmluZ3MgLCB0b3RhbCBlbXBsb3llZXMgYW5kIHRoZSBiZW5jaG1hcmsgb2YgdGhlIENvdW50eSBsZXZlbCByZWdpb25hbCBHVkEgZXN0aW1hdGVzIGZyb20gT05TLiBFc3RpbWF0ZXMgc3VnZ2VzdCB0aGF0IEFydW4gaGFzIHRoZSBsb3dlc3QgR1ZBIHBlciBoZWFkLCBhbmQgdW5zdXJwcmlzaW5nbHkgQ3Jhd2xleSB0aGUgaGlnaGVzdCBhdCDCozU3LDI5MC4gR1ZBIGZpZ3VyZXMgYXJlIHdvcmtwbGFjZS1iYXNlZCBpLmUuIGJhc2VkIG9uIG91dHB1dCBwcm9kdWNlZCBhdCB0aGUgd29ya3BsYWNlOyBHVkEgcGVyIGhlYWQgaXMgd2hlcmUgR1ZBIGlzIGV4cHJlc3NlZCBhcyBhIHZhbHVlIHBlciByZXNpZGVudCBwb3B1bGF0aW9uLGFuZCB0aGVyZWZvcmUgaXMgbWl4aW5nIHdvcmtwbGFjZSBhbmQgcmVzaWRlbnQgYmFzZWQgbWVhc3VyZXMuIFdlIG5lZWQgdG8gYmUgbWluZGZ1bCB0aGF0IEdWQSBwZXIgaGVhZCBjYW4gcHJvZHVjZSBzbGlnaHRseSBtaXNsZWFkaW5nIHJlc3VsdHMgc28gdGhhdCB3aGVyZSB0aGVyZSBpcyBhIGhpZ2ggbGV2ZWwgb2YgY29tbXV0aW5nIG91dCBvZiBhbiBhcmVhIHRoZSBHVkEgcGVyIGhlYWQgZmlndXJlIGNvdWxkIGJlIHVuZGVyc3RhdGVkIGFzIHRoZSB3ZWFsdGggY3JlYXRpb24gb2YgdGhvc2Ugd2hvIGNvbW11dGUgaXMgY291bnRlZCBhdCB0aGVpciB3b3JrcGxhY2UuIEFyZWFzIHdoZXJlIHRoZXJlIGlzIGEgaGlnaCBsZXZlbCBvZiBpbi1jb21tdXRpbmcgY2FuIHByb2R1Y2Ugb3ZlciBzdGF0ZWQgbGV2ZWxzIG9mIEdWQSBwZXIgaGVhZC4gVGhhdCBzYWlkIEdWQSBwZXIgaGVhZCBtZWFzdXJlcyBhcmUgd2lkZWx5IHVzZWQgdG8gaW5kaWNhdGUgdGhlIGVjb25vbWljIHdlbGwtYmVpbmcgb2YgYW4gYXJlYSBhbmQgdG8gcHJvdmlkZSBjb21wYXJpc29uL2JlbmNobWFya2luZyB3aXRoIG90aGVyIGFyZWFzLlxcblxcbldTQ0MgaXMgY29tbWl0dGVkIHRvIGltcHJvdmluZyBHVkEgcGVyIGNhcGl0YSBpbiBXZXN0IFN1c3NleCB3aGljaCBpcyBjdXJyZW50bHkgYmVsb3cgdGhhdCBvZiBvdXIgbmVpZ2hib3VycyBhbmQgdGhlIFNvdXRoIEVhc3QgYXZlcmFnZSBhbmQgYXMgYSByZXNwb25zZSwgaXMgZGV2ZWxvcGluZyBhcHByb2FjaGVzIHRoYXQsIG92ZXIgdGhlIGxvbmdlciB0ZXJtICxpcyBpbnRlbmRlZCB0byBlbmNvdXJhZ2UgZWNvbm9taWMgZ3Jvd3RoLiBUaGUgaW5pdGlhdGl2ZXMgaW5jbHVkZSB0aGUgZGV2ZWxvcG1lbnQgb2YgYSBzZXJpZXMgb2YgQm9sZCBJZGVhcywgd2hpY2gsIGlmIHN1Y2Nlc3NmdWwgc2hvdWxkIGNyZWF0ZSBhIGVuY291cmFnZSBlY29ub21pYyBhY3Rpdml0eSB0aGF0IHdpbGwgcG9zaXRpdmVseSBhZmZlY3QgdGhlIFdlc3QgU3Vzc2V4IEVjb25vbXksIHRoZXNlIGlkZWFzIGJ1aWxkIG9uIHRoZSBjb3VudHnigJlzIGV4aXN0aW5nIGVjb25vbWljIGFzc2V0cyB0byBkcmF3IG1vcmUgaGlnaCB2YWx1ZSBqb2JzIGludG8gdGhlIGFyZWEsIHNlY29uZGx5IHRoZXkgaW50ZW5kIHRvIGxldmVyYWdlIHRoZSBDb3VudHnigJlzIGxvY2F0aW9uIHRvIExvbmRvbiwgdG8gYXR0cmFjdCBDYXBpdGFsL3MgY3VycmVudCBhbmQgZnV0dXJlIHlvdW5nIHdlYWx0aCBjcmVhdG9ycyBpbnRvIHRoZSBjb3VudHkuXFxuXFxuVGhlIEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlcyBzZWN0b3IgaGFzIGJlZW4gaWRlbnRpZmllZCBhcyBiZWluZyBhIHByaW9yaXR5IHNlY3RvciBmb3IgZ3Jvd3RoIGluIFdlc3QgU3Vzc2V4LCBhbmQgdGhlIENvdW5jaWwgaXMgY29uc2lkZXJpbmcgaG93IGJlc3QgdG8gaW52ZXN0IGludG8gdGhlIHNlY3Rvci4gQSBIZWFsdGggYW5kIExpZmUgU2NpZW5jZXMgY2x1c3RlciBlbmdhZ2VtZW50IGV2ZW50IGZvciBidXNpbmVzc2VzIGFuZCBrZXkgcGFydG5lcnMgd2FzIGhlbGQgaW4gSnVseSBicmluZ2luZyB0b2dldGhlciBsb2NhbCBjb21wYW5pZXMgYWxvbmcgd2l0aCBwYXJ0bmVycywgc3VjaCBhcyBob3NwaXRhbHMsIENDR3MgYW5kIHVuaXZlcnNpdGllcyBhbmQgY3JlYXRpbmcgYW4gb3Bwb3J0dW5pdHkgZm9yIG5ldHdvcmtpbmcgYXMgd2VsbCBpbmZvcm1pbmcgdGhlIGRlYmF0ZSBvbiBob3cgaW52ZXN0bWVudHMgc2hvdWxkIGJlIGJlc3QgbWFkZSB0byBoZWxwIGdyb3d0aCBhbmQgd2hhdCByb2xlIHBhcnRuZXJzIGNhbiBwbGF5IGluIGRldmVsb3BpbmcgdGhlIHNlY3Rvci5cXG5cXG5JdCBpcyB0aGUgY291bmNpbOKAmXMgYW1iaXRpb24gdG8gY3JlYXRlIG5ldyBlY29ub21pYyBhc3NldHMgdG8gdGhlIHNvdXRoIG9mIEdhdHdpY2sgQWlycG9ydCBhbmQgdG8gZW5jb3VyYWdlIG1vcmUgaGlnaCB2YWx1ZSBHVkEgYnVzaW5lc3NlcyB0byBiYXNlIHRoZW1zZWx2ZXMgaW4gdGhlIGFyZWEgYW5kIGlzIGV4cGxvcmluZyB0aGUgaWRlYSBvZiBlc3RhYmxpc2hpbmcgYSBtdWx0aS10ZW5hbnRlZCBjb2xkIGNoYWluIHN0b3JhZ2UgZmFjaWxpdHkgZm9yIHVzZSBieSBwaGFybWFjZXV0aWNhbCBhbmQgYmlvIGVuZ2luZWVyaW5nIGNvbXBhbmllcywgaW4gY2xvc2UgcHJveGltaXR5IHRvIEdhdHdpY2sgQWlycG9ydC4gVGhlIGZhY2lsaXR5IHdvdWxkIGJlIGludGVncmFsbHkgbGlua2VkIHRvIENvYXN0IHRvIENhcGl0YWzigJlzIFN0cmF0ZWdpYyBFY29ub21pYyBQbGFu4oCZcyBhbWJpdGlvbnMgdG8gZ3JvdyB0cmFkZSB3aXRoIHRoZSBBc3NvY2lhdGlvbiBvZiBTb3V0aGVhc3QgQXNpYSAoQVNFQU4pIE5hdGlvbnMuIEdhdHdpY2sgaXRzZWxmIGhhcyByb3V0ZSBzdHJhdGVnaWVzIGFyb3VuZCBBU0VBTiBOYXRpb25zLCBhbmQgdGhlIGRlbWFuZCBmb3IgaGVhbHRoY2FyZSBwcm9kdWN0cywgc2VydmljZXMgYW5kIGlubm92YXRpb24gaXMgZ3Jvd2luZyBodWdlbHkgaW4gdGhvc2Ugc2VjdG9ycy5cXG5cXG5UaGUgV2VzdCBTdXNzZXggV2Vla2VuZHMgY2FtcGFpZ24gd2FzIGxhdW5jaGVkIGluIHRoZSBlYXJseSBzdW1tZXIgYWltaW5nIHRvIGFwcGVhbCB0byB5b3VuZyB1cmJhbiBwcm9mZXNzaW9uYWxzIGxpdmluZyBpbiBMb25kb24sIGJ5IHBvc2l0aW9uaW5nIFdlc3QgU3Vzc2V4IGFzIGEgJ2dvIHRvJyBwbGFjZSBmb3IgaGVhbHRoeSwgYWN0aXZlLCBvdXRkb29yIHNob3J0IGJyZWFrcy4gVGhlIGNhbXBhaWduIGFuZCBjb3JyZXNwb25kaW5nIHdlYnNpdGUgW3d3dy53ZXN0LXN1c3NleC13ZWVrZW5kcy5jb21dWzBdIHdhcyBsYXVuY2hlZCBvbiAxNHRoIEp1bmUgYW5kIHNvIGZhciBoYXZlIHNlZW4gaW1wcmVzc2l2ZSBwcmVsaW1pbmFyeSBhbmFseXRpY3MgcmVzdWx0cy4gQ2FtcGFpZ24gdmlzdWFscyBhbmQgZnVsbC1wYWdlIGVkaXRvcmlhbHMgaGF2ZSBiZWVuIGZlYXR1cmVkIGluIGJvdGggdGhlIE1ldHJvIGFuZCBFdmVuaW5nIFN0YW5kYXJkLiBUaGVyZSBpcyBjdXJyZW50bHkgc29tZSBmb2xsb3ctdXAgd29yayB1bmRlcndheSB0aGF0IHdpbGwgYXNzZXNzIHRoZSBlZmZlY3RpdmVuZXNzIG9mdGhlIGNhbXBhaWduIHRvIGRhdGUuXFxuXFxuSW4gYWRkaXRpb24gRGlzdHJpY3QgLyBCb3JvdWdoIFBsYWNlIFBsYW5zIGFyZSBiZWluZyBkZXZlbG9wZWQgYW5kIEdyb3d0aCBCb2FyZHMgaGF2ZSBiZWVuIGVzdGFibGlzaGVkIHRvIHN1cHBvcnQgdGhlaXIgZGV2ZWxvcG1lbnQuIFRvZ2V0aGVyIHRoZXNlIHdpbGwgZm9ybSB0aGUgV2VzdCBTdXNzZXggR3Jvd3RoIFBsYW4sIGEgY2xlYXIgSW52ZXN0bWVudCBhbmQgRGVsaXZlcnkgUGxhbiB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IGNyb3NzIGNvdW50eSBpc3N1ZXMgYXJlIGFkZHJlc3NlZCDigJMgZS5nLiBzdHJhdGVnaWMgcm9hZCwgcmFpbCwgdHJhbnNwb3J0LCBza2lsbHMsIHV0aWxpdGllcywgTkhTLCBTRE5QOyB0aGF0IGNyb3NzIGF1dGhvcml0eSAvIHN0YWtlaG9sZGVyIGZ1bmRpbmcgb3Bwb3J0dW5pdGllcywgcHJpb3JpdGllcyBhbmQgcHJvcG9zYWxzIGFyZSBhZGRyZXNzZWQgYW5kIHdpbGwgcHJvdmlkZSBhIGNsZWFyIGxvYmJ5aW5nIHRvb2wgdGhhdCB3aWxsIHNlY3VyZSBmdW5kaW5nLiBUaGUgYW1hbGdhbWF0ZWQgR3Jvd3RoIFBsYW4gd2lsbCBiZSBkcmFmdGVkIGJ5IGVuZCBEZWNlbWJlciAyMDE1LlxcblxcblswXTogaHR0cDovL3d3dy53ZXN0LXN1c3NleC13ZWVrZW5kcy5jb21cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiQ29tcGFyaXNvbiBvZiBtZWRpYW4gZWFybmluZ3Mgd2l0aGluIFdlc3QgU3Vzc2V4IERpc3RyaWN0IGFuZCBCb3JvdWdoc1xcblxcblwifSx7XCJ0eXBlXCI6XCJ2aXpcIixcImRhdGFzZXRcIjpcIjJjYjgtajhzMlwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJDb21wYXJpc29uIG9mIEdWQSBhZ2FpbnN0IHJlZ2lvbmFsIGFuZCBuYXRpb25hbCBwZXJmb3JtYW5jZSBvdmVyIHRpbWVcIn0se1widHlwZVwiOlwidml6XCIsXCJkYXRhc2V0XCI6XCJwaTI0LThmdmJcIn1dLFwidXNlX2N1c3RvbV90aXRsZVwiOnRydWUsXCJjdXN0b21fdGl0bGVcIjpcIkluY3JlYXNpbmcgd29ya3BsYWNlIGJhc2VkIEdyb3NzIFZhbHVlIEFkZGVkIChHVkEpIHBlciBoZWFkIHRvIGJlIGFib3ZlIHRoZSBTb3V0aCBFYXN0IGF2ZXJhZ2UgYnkgMjAyMlwiLFwidXNlX2N1c3RvbV9zdWJ0aXRsZVwiOmZhbHNlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJcIixcInRpdGxlX2ltYWdlXCI6XCIvYXBpL2Fzc2V0cy8zRjUwOUI4Qy1CNzE3LTRFN0UtQjQxQi00MDdENzVDRkQ5RjhcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMTk5Ny0wMS0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiLCo3MgcGVyIGhlYWQiLCJ0YXJnZXQiOjIxMTgwLCJ0YXJnZXRfdHlwZSI6ImFic29sdXRlIiwidGFyZ2V0X2RlbHRhIjowLCJ0YXJnZXRfZGVsdGFfaXNfcGVyY2VudCI6ZmFsc2UsImJhc2VsaW5lIjoyNzg0NywibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiI2OWNkLWU1ZzYifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjoxLFwibW9udGhcIjowLFwieWVhclwiOjE5OTd9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOH0sXCJhY3Rpb25fdHlwZVwiOlwiaW5jcmVhc2VcIixcInRhcmdldF90eXBlXCI6XCJhYnNvbHV0ZVwiLFwibWFpbnRhaW5fdHlwZVwiOlwiPlwifSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fX0sXCJzdGFydFwiOlwiMjAxNC0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNC0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9LFwidHlwZVwiOlwic3RhdGljXCJ9LFwibmFtZVwiOlwiR3Jvc3MgVmFsdWUgQWRkZWQgKEdWQSkgcGVyIGhlYWQgb2YgcG9wdWxhdGlvblwiLFwieVNjYWxlXCI6e1widXNlX2RlZmF1bHRcIjp0cnVlLFwibWF4XCI6MjYwMDB9LFwidXNlX3Byb2dyZXNzX292ZXJyaWRlXCI6ZmFsc2UsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwiZ29vZFwiLFwiaXNfYnVybmRvd25fZGlzYWJsZWRcIjpmYWxzZSxcImlzX3RyZW5kbGluZV9kaXNhYmxlZFwiOnRydWV9In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjE0OjU5LjA3OFoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOToxNDo1OS4wNzhaIiwidGFyZ2V0X3RvbGVyYW5jZSI6MjYyNiwiaWQiOiJuNHFoLWNkNXoifSwicmVsYXRlZF9tZWFzdXJlcyI6W10sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MTU6MjQuMzA2WiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjE0OjU5LjEyMVoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOToxNToyNC4zMDZaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiJiODczLWV6bTgiLCJuYW1lIjoiQXZlcmFnZSBHcm9zcyBXZWVrbHkgRWFybmluZ3MgZm9yIHJlc2lkZW50cyBpbiBXZXN0IFN1c3NleCIsImlzX3B1YmxpYyI6dHJ1ZSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJyZXRpcmVtZW50X25hcnJhdGl2ZVwiOltdLFwibmFycmF0aXZlXCI6W3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqQXZlcmFnZSBncm9zcyB3ZWVrbHkgZWFybmluZ3MgZm9yIGZ1bGwgdGltZSB3b3JrZXJzIHdobyBsaXZlIGluIFdlc3QgU3Vzc2V4KipcXG5cXG5UaGUgQW5udWFsIFN1cnZleSBvZiBIb3VycyBhbmQgRWFybmluZ3MgKEFTSEUpIHByb3ZpZGVzIGRhdGEgb24gZWFybmluZ3MgbGV2ZWxzIGRvd24gdG8gbG9jYWwgYXV0aG9yaXR5IGdlb2dyYXBoaWVzIGZvciBib3RoIHRob3NlIGxpdmluZyBpbiB0aGUgYXJlYSBhbmQgdGhvc2Ugd29ya2luZyBpbiB0aGUgYXJlYS4gVGhpcyBtZWFzdXJlIGlzIGEgcmVzaWRlbnQgYmFzZWQgbWVhc3VyZSDigJMgaS5lLiBpdCBpcyBtZWFzdXJpbmcgdGhlIGVhcm5pbmdzIGxldmVscyBmb3IgcmVzaWRlbnRzIGluIFdlc3QgU3Vzc2V4IHdoZXJldmVyIHRoZXkgbWlnaHQgYmUgd29ya2luZy4gVGhlIEFTSEUgZGF0YSBpcyBwdWJsaXNoZWQgYW5udWFsbHkgYnkgT05TLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyAtIERlY2VtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuKipBdmVyYWdlIGdyb3NzIHdlZWtseSBlYXJuaW5ncyBmb3IgZnVsbCB0aW1lIHdvcmtlcnMgd2hvIGxpdmUgaW4gV2VzdCBTdXNzZXgqKlxcblxcblRoZSBBbm51YWwgU3VydmV5IG9mIEhvdXJzIGFuZCBFYXJuaW5ncyAoQVNIRSkgaXMgYSBVSyB3aWRlIHN1cnZleSB0aGF0IHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGhvdXJseSwgd2Vla2x5IGFuZCBhbm51YWwgZWFybmluZ3MgYnkgZ2VuZGVyIGFuZCB3b3JrIHBhdHRlcm5zLGFuZCBhdCBuYXRpb25hbCBhbmQgcmVnaW9uYWwgbGV2ZWwgZ2VvZ3JhcGhpZXMgb24gaW5kdXN0cnkgYW5kIG9jY3VwYXRpb24saW5jbHVkaW5nIHB1YmxpYyB2ZXJzdXMgcHJpdmF0ZSBzZWN0b3IgcGF5IGNvbXBhcmlzb25zLiBUaGUgYW5udWFsIHNlcmllcyBkYXRlcyBiYWNrIHRvIDE5OTcgYW5kIHRoZSBsYXRlc3QgZGF0YSBpcyBmb3IgMjAxNyB3aXRoIHRoZSAyMDE4IGRhdGEgZXhwZWN0ZWQgdG8gYmUgcmVsZWFzZWQgbGF0ZXIgaW4gTm92ZW1iZXIuIFRoZSBkYXRhIGlzIGdlbmVyYWxseSBhdmFpbGFibGUgYXQgbG9jYWwgYXV0aG9yaXR5IGxldmVsLCB0aG91Z2ggaW4gc29tZSBjYXNlcywgYmVjYXVzZSBvZiBzYW1wbGluZyBpc3N1ZXMgdGhlIGRhdGEgaXMgc29tZXRpbWVzIHN1cHByZXNzZWQgZm9yIHBhcnRpY3VsYXIgdmFyaWFibGVzIGFuZCBpcyBub3QgYXZhaWxhYmxlIGF0IGRpc3RyaWN0IGxldmVsIGJ5IGluZHVzdHJpYWwgc2VjdG9yIG9yIG9jY3VwYXRpb25hbCB0eXBlcy4gVGhpcyBtZWFzdXJlIGlzIGEgcmVzaWRlbnQgYmFzZWQgbWVhc3VyZSDigJMgaS5lLiBpdCBpcyBtZWFzdXJpbmcgdGhlIGVhcm5pbmdzIGxldmVscyBmb3IgcmVzaWRlbnRzIGluIFdlc3QgU3Vzc2V4IHdoZXJldmVyIHRoZXkgbWlnaHQgYmUgd29ya2luZy5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvREQ4QkIwNzYtRDgwNC00NDNCLTlERkQtQjREM0I4NTkwMzc5XCJ9LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQkEwREUyQTctODM3My00MUM4LTk0QjUtMTJFQTNBM0Y0NzIyXCJ9XSxbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiV2VzdCBTdXNzZXggZ3Jvc3Mgd2Vla2x5IGVhcm5pbmdzIGZvciBmdWxsIHRpbWUgd29ya2VycyBsZXZlbHMgZG8gbm90IG1lYXN1cmUgZmF2b3VyYWJseSBjb21wYXJlZCB3aXRoIHRoZSBuYXRpb25hbCBhbmQgcmVnaW9uYWwgbGV2ZWxzLCB0aGUgZWFybmluZ3MgbGV2ZWxzIGZvciBXZXN0IFN1c3NleCBhcmUgbG93ZXIgdGhhbiBib3RoIHRoZXNlIGFyZWFzLiBJbmRlZWQgb3ZlciB0aGUgeWVhciAyMDE2LTIwMTcgZWFybmluZ3MgbGV2ZWxzIGZlbGwgaW4gV2VzdCBTdXNzZXgsIGEgdHJlbmQgc2VlbiBpbiA1IG9mIHRoZSAxOSB1cHBlciB0aWVyIGF1dGhvcml0aWVzIGluIHRoZSBTb3V0aCBFYXN0LCBSZWFkaW5nIGhhZCBzZWVuIGFuIDcuOCUgaW5jcmVhc2UgaW4gZWFybmluZ3MsV2VzdCBTdXNzZXggYSBmYWxsIG9mIDAuNSUgYW5kIFdva2luZ2hhbSB0aGUgaGlnaGVzdCBkcm9wIG9mIDkuNSUuIFJlZ2lvbmFsbHkgZWFybmluZ3MgbGV2ZWxzIGluY3JlYXNlIGJ5IDIuNSUgb3ZlciB0aGUgeWVhciBhbmQgdGhlcmUgd2FzIGEgMiUgaW5jcmVhc2UgRW5nbGFuZCBhcyBhIHdob2xlLiBDb21wYXJlZCB3aXRoIHRoZSAxOSB1cHBlciB0aWVyIGF1dGhvcml0aWVzIGluIHRoZSBTb3V0aCBFYXN0IHJlZ2lvbiBXZXN0IFN1c3NleCBhdmVyYWdlIGdyb3NzIHdlZWtseSBlYXJuaW5ncyBsZXZlbHMgcmFua3MgYXMgdGhlIDV0aCBsb3dlc3QgbGV2ZWwuXFxuXFxuIFxcblxcbldlc3QgU3Vzc2V4IGxldmVsIG9mIGVhcm5pbmdzIGNvbXBhcmVzIG1vcmUgZmF2b3VyYWJseSB3aXRoIGl0cyBzdGF0aXN0aWNhbCBuZWlnaGJvdXJzLCBpdCByZW1haW5zIGluIHRoZSBoaWdoZXN0IHF1YXJ0aWxlLCB0aG91Z2ggaXMgwqM0OS42IHBlciB3ZWVrIGxvd2VyIHRoYW4gdGhlIGxldmVscyBzZWVuIGluIEhhbXBzaGlyZVxcblxcblwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGVyZSBpcyBzaWduaWZpY2FudCB2YXJpYXRpb24gaW4gcmVzaWRlbnQgZWFybmluZ3MgbGV2ZWxzIHdpdGhpbiBXZXN0IFN1c3NleCB3aXRoIEFkdXIgaGF2aW5nIHRoZSBsb3dlc3QgbGV2ZWxzIG9mIGVhcm5pbmdzIOKAkyBhdCBhcm91bmQgwqM0NzggcGVyIHdlZWsgY29tcGFyZWQgd2l0aCB0aGF0IGluIE1pZCBTdXNzZXggb2YgwqM2NTIuIEFydW4sIENoaWNoZXN0ZXIgYW5kIE1pZCBTdXNzZXggc2F3IHNvbWUgaW5jcmVhc2UgaW4gdGhlIHdlZWtseSBsZXZlbCBvZiBlYXJuaW5ncyBvdmVyIHRoZSBsYXN0IHllYXIgKDIwMTYtMjAxNykgdGhlIGhpZ2hlc3QgaW5jcmVhc2UgYmVpbmcgaW4gQXJ1biBvZiA3LjUlLCBhbmQgZmFsbHMgaW4gZWFybmluZ3Mgd2VyZSBzZWVuIGluIHRoZSByZW1haW5pbmcgbG9jYWwgYXV0aG9yaXR5IGFyZWFzIOKAkyB0aGUgbGFyZ2VzdCBkcm9wIGJlaW5nIHNlZW4gaW4gQ3Jhd2xleSB3aGVyZSBlYXJuaW5ncyBvZiByZXNpZGVudHMgZmVsbCBieSA2LjclLlxcblxcbkNvbXBhcmlzb24gYmV0d2VlbiB0aGUgZWFybmluZ3MgZm9yIHRob3NlIHdobyBsaXZlIGluIHRoZSBjb3VudHkgYW5kIHRob3NlIHdobyB3b3JrIGluIHRoZSBjb3VudHkgc2hvdyB0aGF0IHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBDcmF3bGV5IGFuZCBBZHVyIHJlc2lkZW50IGVhcm5pbmdzIGFyZSBoaWdoZXIuIFRoZSBiaWdnZXN0IGRpZmZlcmVuY2UgaXMgaW4gTWlkIFN1c3NleCB3aGVyZSBlYXJuaW5ncyBmb3IgdGhvc2UgbGl2aW5nIGluIE1pZCBTdXNzZXggYXJlLCBvbiBhdmVyYWdlLCDCozEwOCBoaWdoZXIgdGhhbiBmb3IgdGhvc2Ugd29ya2luZyBpbiB0aGUgZGlzdHJpY3QuIEluIEFkdXIgZWFybmluZ3MgZm9yIHRob3NlIHdvcmtpbmcgaW4gdGhlIGFyZWEgYXJlIMKjMTMuNSB0aGFuIHRoZSBlYXJuaW5ncyBmb3IgcmVzaWRlbnRzIGFuZCBpbiBDcmF3bGV5IGVhcm5pbmdzIGZvciB0aG9zZSB3b3JraW5nIGluIENyYXdsZXkgYXJlIMKjNjYgcGVyIHdlZWsgaGlnaGVyIHRoYW4gZWFybmluZ3Mgb2YgcmVzaWRlbnRzOyBpbmRlZWQgQ3Jhd2xleSBoYXMgdGhlIGhpZ2hlc3QgbGV2ZWwgb2Ygd29ya3BsYWNlIGJhc2VkIGVhcm5pbmdzIGluIFdlc3QgU3Vzc2V44oCTaW5kaWNhdGluZyB0aGF0IGxvY2FsIHJlc2lkZW50cyBhcmUgbm90IGFjY2Vzc2luZyBsb2NhbCwgbW9yZSBoaWdobHkgcGFpZCwgYW5kIGhpZ2hseSBza2lsbGVkIGpvYnMsIHRob3VnaCB0aGUgd29ya3BsYWNlIGVhcm5pbmdzIGhhdmUgZGVjcmVhc2VkIG92ZXIgdGhlIHllYXIuXFxuXFxuIFwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy82Mjc2Qzc2RS0wNTAzLTRBQzctODMwRi0yNzNDODAwQjc2NzFcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvNTQwMUU4MUMtRTgwNS00QjQzLThGOUMtQzQ1ODlEMTg0MUQyXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqQXZlcmFnZSBncm9zcyB3ZWVrbHkgZWFybmluZ3MgZm9yIGZ1bGwgdGltZSB3b3JrZXJzIHdobyBsaXZlIGluIFdlc3QgU3Vzc2V4KipcXG5cXG5UaGUgQW5udWFsIFN1cnZleSBvZiBIb3VycyBhbmQgRWFybmluZ3MgKEFTSEUpIHByb3ZpZGVzIGRhdGEgb24gZWFybmluZ3MgbGV2ZWxzIGRvd24gdG8gbG9jYWwgYXV0aG9yaXR5IGdlb2dyYXBoaWVzIGZvciBib3RoIHRob3NlIGxpdmluZyBpbiB0aGUgYXJlYSBhbmQgdGhvc2Ugd29ya2luZyBpbiB0aGUgYXJlYS4gVGhpcyBtZWFzdXJlIGlzIGEgcmVzaWRlbnQgYmFzZWQgbWVhc3VyZSDigJMgaS5lLiBpdCBpcyBtZWFzdXJpbmcgdGhlIGVhcm5pbmdzIGxldmVscyBmb3IgcmVzaWRlbnRzIGluIFdlc3QgU3Vzc2V4IHdoZXJldmVyIHRoZXkgbWlnaHQgYmUgd29ya2luZy4gVGhlIEFTSEUgZGF0YSBpcyBwdWJsaXNoZWQgYW5udWFsbHkgYnkgT05TLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIldlc3QgU3Vzc2V4IHJlc2lkZW50IGJhc2VkIHdlZWtseSBlYXJuaW5ncyBhcmUgbG93ZXIgdGhhbiB0aGUgcmVnaW9uYWwgbGV2ZWwsIGJ1dCBoaWdoZXIgdGhhbiBmb3IgRW5nbGFuZC5cXG5cXG5XZXN0IFN1c3NleCBkb2VzIG5vdCBjb21wYXJlIGZhdm91cmFibHkgY29tcGFyZWQgd2l0aCB0aGUgMTkgdXBwZXIgdGllci91bml0YXJ5IGF1dGhvcml0eSBhcmVhcyBpbiB0aGUgU291dGggRWFzdCByZWdpb24gYmVjYXVzZSBvZiBjb3Vyc2UgdGhlIGVhcm5pbmdzIGxldmVscyBhcmUgc29tZSBvZiB0aGUgaGlnaGVzdCwgb3V0c2lkZSBMb25kb24sIGluIHRoZSBjb3VudHkg4oCTIHBhcnRpY3VsYXJseSB0aG9zZSBvZiBTdXJyZXksIEJ1Y2tpbmdoYW1zaGlyZSwgV2VzdCBCZXJrc2hpcmUgcHJvYmFibHkgYmVjYXVzZSBvZiB0aGVpciBjbG9zZSBwcm94aW1pdHkgdG8gTG9uZG9uIGxlbmRpbmcgdGhlbXNlbHZlcyB0byBoaWdoIGxldmVscyBvZiBvdXQgY29tbXV0aW5nIHRvIExvbmRvbi4gVGhlIHBpY3R1cmUgaXMgZGlmZmVyZW50IHRob3VnaCB3aGVuIGNvbXBhcmluZyByZXNpZGVudCBlYXJuaW5ncyBsZXZlbHMgd2l0aCBTdGF0aXN0aWNhbCBOZWlnaGJvdXJzIOKAk2FzIHNob3duIHJpZ2h0LlxcblxcblwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0QyNDgxRTk4LUZFODAtNEJFMi1CRDY0LTE2NjE4N0VBMUYxRVwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJXZXN0IFN1c3NleCBsaWVzIGluIHRoZSB0b3AgcXVhcnRpbGUgd2hlbiBjb21wYXJlZCB3aXRoIFN0YXRpc3RpY2FsIE5laWdoYm91ciBhdXRob3JpdGllcyDigJMgaG93ZXZlciB0aGVyZSBpcyBhIHNpZ25pZmljYW50IGdhcCBiZXR3ZWVuIHRoZSBoaWdoZXN0IGxldmVsIGFzIHNlZW4gaW4gRXNzZXggYW5kIHRoYXQgZm9yIFdlc3QgU3Vzc2V4LCB0aGUgYW1iaXRpb24gaXMsIHRoZXJlZm9yZSB0byBtYXRjaCB0aGUgb3ZlcmFsbCBTb3V0aCBFYXN0IChyZWdpb25hbCkgZWFybmluZ3MgbGV2ZWxzLlxcblxcblRoZXJlIGlzIHNpZ25pZmljYW50IHZhcmlhdGlvbiBpbiByZXNpZGVudCBlYXJuaW5ncyBsZXZlbHMgd2l0aGluIFdlc3QgU3Vzc2V4IHdpdGggQWR1ciBhbmQgQXJ1biBoYXZpbmcgdGhlIGxvd2VzdCBsZXZlbHMgb2YgZWFybmluZ3Mg4oCTIGF0IGFyb3VuZCDCozQ3NyBwZXIgd2VlayBjb21wYXJlZCB3aXRoIHRoYXQgaW4gSG9yc2hhbSBhbmQgTWlkIFN1c3NleCBvZiDCozYyMi5cXG5cXG5Db21wYXJpc29uIGJldHdlZW4gdGhlIGVhcm5pbmdzIGZvciB0aG9zZSB3aG8gbGl2ZSBpbiB0aGUgY291bnR5IGFuZCB0aG9zZSB3aG8gd29yayBpbiB0aGUgY291bnR5IHNob3cgdGhhdCB3aXRoIHRoZSBleGNlcHRpb24gb2YgQ3Jhd2xleSByZXNpZGVudCBlYXJuaW5ncyBhcmUgaGlnaGVyLiBJbiBDcmF3bGV5IGhvd2V2ZXIsIGVhcm5pbmdzIGZvciB0aG9zZSB3b3JraW5nIGluIENyYXdsZXkgYXJlIGNvbnNpZGVyYWJseSBoaWdoZXIgdGhhbiBlYXJuaW5ncyBvZiByZXNpZGVudHMsIGFuZCBpbmRlZWQgQ3Jhd2xleSBoYXMgdGhlIGhpZ2hlc3QgbGV2ZWwgb2Ygd29ya3BsYWNlIGJhc2VkIGVhcm5pbmdzIGluIFdlc3QgU3Vzc2V4IOKAk2luZGljYXRpbmcgdGhhdCBsb2NhbCByZXNpZGVudHMgYXJlIG5vdCBhY2Nlc3NpbmcgbG9jYWwsIG1vcmUgaGlnaGx5IHBhaWQsIGFuZCBoaWdobHkgc2tpbGxlZCBqb2JzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9GODRDQ0I3MC1GRTc1LTRBMkItODRENC1FOURENzIyMjdFNEZcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgbGF0ZXN0IGRhdGEgZm9yIEdyb3NzIFZhbHVlIEFkZGVkIChHVkEpIHdhcyByZWxlYXNlZCBpbiBEZWNlbWJlciAyMDE2IGFuZCBjb3ZlcnMgdGhlIHBlcmlvZCB1cCB0byAyMDE1LiBUaGUgbmV4dCByZWxlYXNlIG9mIHRoaXMgZGF0YSBmcm9tIE9OUyBpcyBleHBlY3RlZCBpbiBpcyBhIHJlY29nbmlzZWQgbWVhc3VyZSBvZiBlY29ub21pYyBhY3Rpdml0eSBicm9hZGx5IGRlZmluZWQgYXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdmFsdWUgb2YgdGhlIGdvb2RzIGFuZCBzZXJ2aWNlcyBwcm9kdWNlZCBhbmQgdGhlIGNvc3Qgb2YgcmF3IG1hdGVyaWFscyBhbmQgb3RoZXIgaW5wdXRzIHVzZWQgaW4gcHJvZHVjdGlvbi4gVGhlIGRhdGEgaXMgcmVsZWFzZWQgYW5udWFsbHkgZnJvbSBPTlMsIGFuZCBpbmNsdWRlcyB0aGUgc3ViLXJlZ2lvbmFsIGVzdGltYXRlcyBmb3IgR1ZBIGZvciB0aGUgdHdvIFdlc3QgU3Vzc2V4IFN1YiBBcmVhczpcXG5cXG5cIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIxLiAqKldlc3QgU3Vzc2V44oCTU291dGggV2VzdCAoV1NTVykg4oCTIGNvbXByaXNlcyBDaGljaGVzdGVyLCBBcnVuLCBBZHVyIGFuZCBXb3J0aGluZyoqXFxuXFxuMS4gKipXZXN0IFN1c3NleOKAk05vcnRoIEVhc3QgKFdTTkUpIOKAkyBjb21wcmlzZXMgQ3Jhd2xleSwgSG9yc2hhbSBhbmQgTWlkIFN1c3NleCoqXFxuXFxuVGhlIGxhdGVzdCBkYXRhLCBhbHJlYWR5IHJlcG9ydGVkLCB3YXMgcmVsZWFzZWQgaW4gRGVjZW1iZXIgMjAxNiwgYW5kIGNvdmVycyB0aGUgcGVyaW9kIHVwIHRvIDIwMTUsIHRoZSBmaWd1cmVzIGFuZCB0cmVuZHMgZm9yIHRoZSB0d28gV2VzdCBTdXNzZXggYXJlYXMgd2VyZSByZXBvcnRlZCBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBxdWFydGVyIGFuZCB0aGVyZSBpcyBubyB1cGRhdGUgaW4gdGVybXMgb2YgdGhlIGxvY2FsIHBpY3R1cmUuIFRoZSBuZXh0IHJlbGVhc2Ugb2YgZGF0YSBpcyBleHBlY3RlZCBpbiBEZWNlbWJlciAyMDE3Llxcblxcbkhvd2V2ZXIsIGluIE1hcmNoIDIwMTcgdGFibGVzIHNob3dpbmcgR1ZBIGFsbG9jYXRlZCB0byBsb2NhbCBhdXRob3JpdGllcyBpbiB0aGUgVUsgd2VyZSByZWxlYXNlZCwgdGhlIGRhdGEgd2FzIHByb2R1Y2VkIGluIHJlc3BvbnNlIHRvIHVzZXIgbmVlZCBidXQgd2hpbGUgbm90IE5hdGlvbmFsIFN0YXRpc3RpY3MsIG5ldmVydGhlbGVzcyBnaXZlIHNvbWUgaW5kaWNhdGlvbiBhcyB0byB0aGUgc2NhbGUgb2YgR1ZBIGF0IGxvY2FsIGF1dGhvcml0eSBsZXZlbCwgYW5kIHRoZSBjb250cmlidXRpb24gdGhhdCBlYWNoIG9mIHRoZSBicm9hZCBsZXZlbCBzZWN0b3JzIG1ha2UgdG8gdGhlIGxvY2FsIGVjb25vbXkuIFtodHRwczovL3d3dy5vbnMuZ292LnVrL2Vjb25vbXkvZ3Jvc3N2YWx1ZWFkZGVkZ3ZhL2RhdGFzZXRzL3JlZ2lvbmFsZ3ZhaWJ5bG9jYWxhdXRob3JpdHlpbnRoZXVrXVswXVxcblxcblswXTogaHR0cHM6Ly93d3cub25zLmdvdi51ay9lY29ub215L2dyb3NzdmFsdWVhZGRlZGd2YS9kYXRhc2V0cy9yZWdpb25hbGd2YWlieWxvY2FsYXV0aG9yaXR5aW50aGV1a1wifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9GMUMzQzI0Qi1EN0E2LTQzNjEtOUVGQy1DNTcxRDQ2RTlDRThcIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8yN0ZDQjExOS0xODY2LTRGNUEtODEwRS01QjdGRkEwMEZBQkZcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIG1haW4gcG9pbnRzIGZyb20gdGhlIChPTlMpIHN1bW1hcnkgb2YgdGhlIChHQikgU2hvcnQtdGVybSBlY29ub21pYyBpbmRpY2F0b3JzIHB1Ymxpc2hlZCBpbiBlYXJseSBTZXB0ZW1iZXIgMjAxNyBhcmU6XFxuXFxuKiBUb3RhbCBwcm9kdWN0aW9uIG91dHB1dCBzYXcgYSBzbGlnaHQgaW5jcmVhc2UgaW4gdGhlIDMgbW9udGhzIHRvIEp1bHkgMjAxNyBhbmQgaW5jcmVhc2VkIGJ5IDAuMyU7XFxuXFxuKiBNYW51ZmFjdHVyaW5nIHJlbWFpbnMgcmVsYXRpdmVseSBzdWJkdWVkIHNpbmNlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHllYXIsIHRob3VnaCBzb21lIGdyb3d0aCBzZWVuIGZyb20gSnVseSBhdHRyaWJ1dGVkIHRvIHN0cm9uZ2VyIGdyb3d0aCBpbiBjYXIgcHJvZHVjdGlvbjtcXG5cXG4qIENvbnN0cnVjdGlvbiBvdXRwdXQgZmVsbCBmb3IgdGhlIGZvdXJ0aCBtb250aCBpbiBhIHJvdywgd2l0aCBwcml2YXRlIGhvdXNpbmcgYnVpbGRpbmcgY29udHJhY3RpbmcgaW4gSnVseSAyMDE3IGFmdGVyIHNlZWluZyBncm93dGggYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgeWVhci5cXG5cXG5baHR0cHM6Ly93d3cub25zLmdvdi51ay9lY29ub215L2Vjb25vbWljb3V0cHV0YW5kcHJvZHVjdGl2aXR5L291dHB1dC9hcnRpY2xlcy9zaG9ydHRlcm1pbmRpY2F0b3JzZWNvbm9taWNjb21tZW50YXJ5L3NlcHQyMDE3XVswXVxcblxcblswXTogaHR0cHM6Ly93d3cub25zLmdvdi51ay9lY29ub215L2Vjb25vbWljb3V0cHV0YW5kcHJvZHVjdGl2aXR5L291dHB1dC9hcnRpY2xlcy9zaG9ydHRlcm1pbmRpY2F0b3JzZWNvbm9taWNjb21tZW50YXJ5L3NlcHQyMDE3XCJ9XV19LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciA0IC0gTWFyY2ggMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgQW5udWFsIFN1cnZleSBvZiBIb3VycyBhbmQgRWFybmluZ3MgKEFTSEUpIGlzIGEgVUstd2lkZSBzdXJ2ZXkgdGhhdCBwcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBob3VybHksIHdlZWtseSBhbmQgYW5udWFsIGVhcm5pbmdzIGJ5IGdlbmRlciBhbmQgd29yayBwYXR0ZXJucyxhbmQgYXQgbmF0aW9uYWwgYW5kIHJlZ2lvbmFsIGxldmVsIGdlb2dyYXBoaWVzIG9uIGluZHVzdHJ5IGFuZCBvY2N1cGF0aW9uLCBpbmNsdWRpbmcgcHVibGljIHZlcnN1cyBwcml2YXRlIHNlY3RvciBwYXkgY29tcGFyaXNvbnMuIFRoZSBhbm51YWwgc2VyaWVzIGRhdGVzIGJhY2sgdG8gMjAwMiwgdGhvdWdoIHRoZXJlIGhhdmUgYmVlbiBzb21lIG1ldGhvZG9sb2dpY2FsIGNoYW5nZXMgb3ZlciB0aGlzIHRpbWUuIFRoZSBkYXRhIGlzIGdlbmVyYWxseSBhdmFpbGFibGUgYXQgbG9jYWwgYXV0aG9yaXR5IGxldmVsLCB0aG91Z2ggaW4gc29tZSBjYXNlcyBkdWUgdG8gc2FtcGxpbmcgaXNzdWVzIHRoZSBkYXRhIGNhbiBiZSBzdXBwcmVzc2VkIGZvciBwYXJ0aWN1bGFyIHZhcmlhYmxlcy5cXG5cXG5UaGUgbGF0ZXN0IGZpZ3VyZXMgYXJlIGZvciAyMDE2IChyZWxlYXNlZCBPY3RvYmVyIDIwMTYpIGFuZCB3ZXJlIHJlcG9ydGVkIGZvciBXZXN0IFN1c3NleCBhbmQgaXRzIGxvY2FsIGF1dGhvcml0aWVzIGFsb25nIHdpdGggY29tcGFyaXNvbnMgYXQgcmVnaW9uYWwgbGFuZCBuYXRpb25hbCBsZXZlbCwgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgcXVhcnRlciwgYW5kIHRoZXJlIGlzIG5vIGZ1cnRoZXIgdXBkYXRlIGF0IHRoaXMgZ2VvZ3JhcGh5LiBUaGUgbmV4dCByZWxlYXNlIG9mIGRhdGEgaXMgZXhwZWN0ZWQgaW4gTm92ZW1iZXIgMjAxNy5cXG5cXG5Ib3dldmVyLCBzaW5jZSB0aGUgcmVwb3J0aW5nIG9mIHRoZSBsYXN0IEFubnVhbCBTdXJ2ZXkgb2YgSG91cnMgYW5kIEVhcm5pbmdzIGRhdGEsIE9OUywgaW4gRGVjZW1iZXIgMjAxNiwgcmVsZWFzZWQgc21hbGwgYXJlYSBtb2RlbCBiYXNlZCBpbmNvbWUgZXN0aW1hdGVzLCBmb3IgdGhlIGZpbmFuY2lhbCB5ZWFyIGVuZGluZyAyMDE0LiBUaGV5IGFyZSBvZmZpY2lhbCBlc3RpbWF0ZXMgb2Ygd2Vla2x5IGhvdXNlaG9sZCBpbmNvbWUgYXQgbWlkZGxlIGxheWVyIHN1cGVyIG91dHB1dCBhcmVhcyAoTVNPQSkgY2FsY3VsYXRlZCB1c2luZyBhIG1vZGVsIGJhc2VkIG1ldGhvZCwgdXNpbmcgYSBjb21iaW5hdGlvbiBvZiBzdXJ2ZXkgZGF0YSwgcHJldmlvdXNseSBwdWJsaXNoZWQgZGF0YSBmcm9tIHRoZSAyMDExIENlbnN1cyBhbmQgYSBudW1iZXIgb2YgYWRtaW5pc3RyYXRpdmUgZGF0YSBzb3VyY2VzLlxcblxcbkEgbWlkZGxlIHN1cGVyIG91dHB1dCBhcmVhIGlzIGEgbG93IGxldmVsIGdlb2dyYXBoeSwgd2l0aCBhIG1pbmltdW0gc2l6ZSBvZiA1LDAwMCByZXNpZGVudHMgYW5kIDIsMDAwIGhvdXNlaG9sZHMuIFRoZXJlIGlzIGFuIGF2ZXJhZ2UgcG9wdWxhdGlvbiBvZiA3LDUwMCB3aGljaCBmaXQgaW50byBsb2NhbCBhdXRob3JpdHkgYm91bmRhcmllcy4gVGhlcmUgYXJlIDEwMCBtaWRkbGUgc3VwZXIgb3V0cHV0IGFyZWFzIGluIFdlc3QgU3Vzc2V4LlxcblxcblRoZSBlc3RpbWF0ZXMgc2hvdyB0aGF0IE1TT0EgQ3Jhd2xleSAwMDggKGluY2x1ZGVzIGFyZWFzIFBvdW5kIEhpbGwsIFdvcnRoIGFuZCBNYWlkZW5ib3dlciDigJMgbmVhcmJ5IHRvIENocmlzdHMgSG9zcGl0YWwgKGp1c3Qgb3ZlciBhbiBob3VyIHRvIExvbmRvbiBWaWN0b3JpYSkgaGFzIHRoZSBoaWdoZXN0IGF2ZXJhZ2Ugc2FsYXJ5IGluIFdlc3QgU3Vzc2V4IGF0IMKjNjIsOTIw4oCTSG9yc2hhbSAwMDkgaW5jbHVkZXMgU291dGh3YXRlciBoYXMgdGhlIDJuZCBoaWdoZXN0IGF2ZXJhZ2Ugc2FsYXJ5IGluIFdlc3QgU3Vzc2V4IGF0IMKjNjAsMzIwIGFuZCBIb3JzaGFtIDAwOCAocnVyYWwgYXJlYSBpbmNsdWRpbmcgTWFubmluZ3MgSGVhdGgsIE51dGh1cnN0IGFuZCBDb3BzYWxlKSBoYXMgdGhlIDNyZCBoaWdoZXN0IGF2ZXJhZ2UgaW5jb21lIGluIFdlc3QgU3Vzc2V4IGF0IMKjNTksODAwLlxcblxcblRoZSB0aHJlZSBsb3dlc3QgaW5jb21lIGxldmVscyBhcmUgc2VlbiBpbiB0aGUgTVNPQXM6XFxuXFxu4oCiIEFydW4gMDE3IMKjMzMsODAwIC0gKEJvZ25vciBzZWFmcm9udClcXG5cXG7igKIgQXJ1biAwMTkgLyAwMTEgwqMzMiw3NjAgLSAoUGFnaGFtIC8gTGl0dGxlaGFtcHRvblxcblxcbuKAoiBDaGljaGVzdGVyIDAxNCDCozMyLDI0MCDigJMoU2Vsc2V5KVxcblxcbsKgICBbaHR0cHM6Ly93d3cub25zLmdvdi51ay9wZW9wbGVwb3B1bGF0aW9uYW5kY29tbXVuaXR5L3BlcnNvbmFsYW5kaG91c2Vob2xkZmluYW5jZXMvaW5jb21lYW5kd2VhbHRoL2FydGljbGVzL3NtYWxsYXJlYW1vZGVsYmFzZWRpbmNvbWVlc3RpbWF0ZXNlbmdsYW5kYW5kd2FsZXMvZmluYW5jaWFseWVhcmVuZGluZzIwMTRdWzBdXFxuXFxuWzBdOiBodHRwczovL3d3dy5vbnMuZ292LnVrL3Blb3BsZXBvcHVsYXRpb25hbmRjb21tdW5pdHkvcGVyc29uYWxhbmRob3VzZWhvbGRmaW5hbmNlcy9pbmNvbWVhbmR3ZWFsdGgvYXJ0aWNsZXMvc21hbGxhcmVhbW9kZWxiYXNlZGluY29tZWVzdGltYXRlc2VuZ2xhbmRhbmR3YWxlcy9maW5hbmNpYWx5ZWFyZW5kaW5nMjAxNFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyDigJMgRGVjZW1iZXIgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5UaGUgQW5udWFsIFN1cnZleSBvZiBIb3VycyBhbmQgRWFybmluZ3MgKEFTSEUpIGlzIGEgVUstd2lkZSBzdXJ2ZXkgdGhhdCBwcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBob3VybHksIHdlZWtseSBhbmQgYW5udWFsIGVhcm5pbmdzIGJ5IGdlbmRlciBhbmQgd29yayBwYXR0ZXJucywgYW5kIGF0IG5hdGlvbmFsIGFuZCByZWdpb25hbCBsZXZlbCBnZW9ncmFwaGllcyBvbiBpbmR1c3RyeSBhbmQgb2NjdXBhdGlvbiwgaW5jbHVkaW5nIHB1YmxpYyB2ZXJzdXMgcHJpdmF0ZSBzZWN0b3IgcGF5IGNvbXBhcmlzb25zLiBUaGUgYW5udWFsIHNlcmllcyBkYXRlcyBiYWNrIHRvIDIwMDIsIHRob3VnaCB0aGVyZSBoYXZlIGJlZW4gc29tZSBtZXRob2RvbG9naWNhbCBjaGFuZ2VzIG92ZXIgdGhpcyB0aW1lLiBUaGUgbGF0ZXN0IGZpZ3VyZXMgYXJlIGZvciAyMDE2IChyZWxlYXNlZCBPY3RvYmVyIDIwMTYpLiBUaGUgZGF0YSBpcyBnZW5lcmFsbHkgYXZhaWxhYmxlIGF0IGxvY2FsIGF1dGhvcml0eSBsZXZlbCwgdGhvdWdoIGluIHNvbWUgY2FzZXMgZHVlIHRvIHNhbXBsaW5nIGlzc3VlcyB0aGUgZGF0YSBjYW4gYmUgc3VwcHJlc3NlZCBmb3IgcGFydGljdWxhciB2YXJpYWJsZXMuIEVhcm5pbmdzIGRhdGEgaXMgbm90IGF2YWlsYWJsZSBhdCBhbGwgYXQgbG9jYWwgYXV0aG9yaXR5IGxldmVsIGJ5IGluZHVzdHJpYWwgc2VjdG9yIG9yIG9jY3VwYXRpb25hbCB0eXBlcy5UaGUgbGF0ZXN0IHNldCBvZiBmaWd1cmVzIHN1Z2dlc3QgdGhhdCB0aGUgYW5udWFsIGF2ZXJhZ2Ugd2Vla2x5IGVhcm5pbmdzIGZvciBmdWxsIHRpbWUgd29ya2VycyBsaXZpbmcgaW4gV2VzdCBTdXNzZXggaXMgwqM1NTcuMiwgaGlnaGVyIHRoYW4gdGhlIG5hdGlvbmFsIGF2ZXJhZ2UsIGJ1dCBsb3dlciB0aGFuIHRoZSByZWdpb25hbCBhdmVyYWdlLiBUaGUgaGlnaGVzdCBlYXJuZXJzIGxpdmUgaW4gSG9yc2hhbSBhbmQgaGF2ZSBhdmVyYWdlIHdlZWtseSBmdWxsIHRpbWUgZWFybmluZ3Mgb2YgwqM2MjI7IHRoZSBsb3dlc3QgZWFybmVycyBsaXZlIGluIEFydW4gd2l0aCBjb25zaWRlcmFibHkgbG93ZXIgYXZlcmFnZSBsZXZlbHMgb2YgcGF5IGF0IMKjNDc2LjEuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiT3ZlciB0aGUgbGFzdCBmaXZlIHllYXJzIHBheSBsZXZlbHMgZm9yIFdlc3QgU3Vzc2V4IG92ZXJhbGwgaGF2ZSBpbmNyZWFzZWQgYnkgOS4zJSBjb21wYXJlZCB3aXRoIHRoZSBpbmNyZWFzZSBpbiBFbmdsYW5kIGF0IDcuOSUgYW5kIGZvciB0aGUgU291dGggRWFzdCByZWdpb24gYXQgNC45JS4gSG93ZXZlciB0aGUgdmFyaWF0aW9uIHdpdGhpbiB0aGUgY291bnR5IGlzIHNpZ25pZmljYW50IOKAkyBBZHVyIGhhcyBzZWVuIHRoZSBoaWdoZXN0IGluY3JlYXNlIGF0IG92ZXIgMTYlIGFuZCBNaWQgU3Vzc2V4IHRoZSBsb3dlc3QgaW5jcmVhc2UgYXQgNC42JS4gV2hpbHN0IG92ZXIgdGhlIGxhc3QgeWVhciAoMjAxNS0yMDE2KSBXZXN0IFN1c3NleCBzYXcgYSBncm93dGggaW4gd2Vla2x5IGVhcm5pbmdzIG9mIDElIChjb21wYXJlZCB3aXRoIEVuZ2xhbmQgb2YgMi40JSBhbmQgdGhlIFNvdXRoIEVhc3Qgb2YgMS4yJSkgQWR1ciwgQXJ1biwgSG9yc2hhbSBhbmQgV29ydGhpbmcgaGF2ZSBzZWVuIGEgZmFsbCBpbiByZXNpZGVudCBlYXJuaW5ncyBsZXZlbHMuXFxuXFxuXCJ9XSxbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMkFBQURCQjAtRDg5MS00RkE0LUFEQTMtMzY5NzJBQTVCMjM3XCJ9XV19LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvRjk4NURBMzgtOTBFOC00MTVBLTk5QTctRkE1N0Q5NjY4MDMxXCJ9XSxbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMzY4NzgwQkEtNzA0Mi00OTlELTlFQjItMzYzRjg4NDBGQjMxXCJ9XV19LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiQ2hhbmdlIGluIHdlZWtseSBlYXJuaW5ncyBmb3IgZnVsbCB0aW1lIHdvcmtlcnM6IEdyb3d0aCBpbiB0aGUgZWFybmluZ3Mgb2YgcGVvcGxlIHdvcmtpbmcgaW4gYW4gYXJlYSAod29ya2VycykgaGFzbuKAmXQgYmVlbiBzbyBoaWdoIGFzIGZvciB0aG9zZSBwZW9wbGUgbGl2aW5nIGluIHRob3NlIGFyZWFzIChyZXNpZGVudHMpLiBJbiBXZXN0IFN1c3NleCBwZW9wbGUgd29ya2luZyBpbiB0aGUgY291bnR5IG92ZXJhbGwgaGF2ZSBlbmpveWVkIGFuIGluY3JlYXNlIG9mIDQlIGluIGVhcm5pbmdzIGxldmVscyBvdmVyIHRoZSBsYXN0IDUgeWVhcnMsIGNvbXBhcmVkIHdpdGggYW4gaW5jcmVhc2UgaW4gb3ZlciA5JSBvZiB0aG9zZSB3b3JrZXJzIGxpdmluZyBpbiB0aGUgY291bnR5LiBPdmVyIHRoZSBsYXN0IHllYXIsIDIwMTUtMTYgV2VzdCBTdXNzZXgsIEFydW4sIEhvcnNoYW0gYW5kIE1pZCBTdXNzZXggZWFybmluZ3MgbGV2ZWxzIG9mIHdvcmtlcnMgaW4gdGhlc2UgYXJlYXMgaGF2ZSBmYWxsZW4g4oCTIG1vc3QgbWFya2VkIGluIFdvcnRoaW5nLlxcblxcblwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0RCMkU5MzdDLTlENUEtNDE1NS05OUM5LUI5QkQ0MDE2MURBOVwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgc291cmNlIG9mIHRoZSBjb21wbGV0ZSBkYXRhIHNldCDigJMgQW5udWFsIFN1cnZleSBvZiBIb3VycyBhbmQgRWFybmluZ3MgMjAxNiBpcyBhY2Nlc3NlZDogW2h0dHBzOi8vd3d3Lm9ucy5nb3YudWsvZW1wbG95bWVudGFuZGxhYm91cm1hcmtldC9wZW9wbGVpbndvcmsvZWFybmluZ3NhbmR3b3JraW5naG91cnMvYnVsbGV0aW5zL2FubnVhbHN1cnZleW9maG91cnNhbmRlYXJuaW5ncy9wcmV2aW91c1JlbGVhc2VzXVswXVxcblxcblswXTogaHR0cHM6Ly93d3cub25zLmdvdi51ay9lbXBsb3ltZW50YW5kbGFib3VybWFya2V0L3Blb3BsZWlud29yay9lYXJuaW5nc2FuZHdvcmtpbmdob3Vycy9idWxsZXRpbnMvYW5udWFsc3VydmV5b2Zob3Vyc2FuZGVhcm5pbmdzL3ByZXZpb3VzUmVsZWFzZXNcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSAoVXBkYXRlZCBPY3RvYmVyIDIwMTYpKipcXG5cXG4tIC0gLVxcblxcblRoZXNlIGZpZ3VyZXMgYXJlIHJlbGVhc2VkIGFubnVhbGx5IGZyb20gdGhlIEFubnVhbCBTdXJ2ZXkgb2YgSG91cnMgYW5kIEVhcm5pbmdzLiBUaGUgMjAxNiBwcm92aXNpb25hbCBlc3RpbWF0ZXMgZm9yIGF2ZXJhZ2UgZWFybmluZ3MgcmVsZWFzZWQgb24gdGhlIDI2dGggT2N0b2JlciBzaG93IHRoYXQgdGhlIGZpZ3VyZSBmb3IgV2VzdCBTdXNzZXggaXMgwqM1NTcuMjAsIGFuIGluY3JlYXNlIG9mIDEuMSUgb24gdGhlIDIwMTUgZmluYWwgZmlndXJlLlxcblxcbkZvciBBdmVyYWdlIGVhcm5pbmdzIGluIEVuZ2xhbmQsIG1lZGlhbiBncm9zcyB3ZWVrbHkgcGF5IG9mIGVtcGxveWVlcyBieSByZXNpZGVuY2UgKHJlc2lkZW50IGJhc2UpLCB0aGUgMjAxNiBmaWd1cmUgZm9yIEVuZ2xhbmQgd2FzIMKjNTQ0LjcwLCBhIHJpc2Ugb2YgMi40JS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5UaGVzZSBmaWd1cmVzIGFyZSByZWxlYXNlZCBhbm51YWxseSBmcm9tIHRoZSBBbm51YWwgU3VydmV5IG9mIEhvdXJzIGFuZCBFYXJuaW5ncy4gVGhlIDIwMTYgcHJvdmlzaW9uYWwgZXN0aW1hdGVzIGZvciBhdmVyYWdlIGVhcm5pbmdzIGFyZSBleHBlY3RlZCB0byBiZSByZWxlYXNlZCBvbiB0aGUgMjZ0aCBPY3RvYmVyLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5XaGF0IHdpbGwgaGFwcGVuIHRvIHRoZXNlIG1lYXN1cmVzLCBpbiByZXNwZWN0IG9mIHRoZSBuYXRpb25hbC9yZWdpb25hbC9sb2NhbCBlY29ub215LCBnaXZlbiB0aGUgRVUgcmVmZXJlbmR1bSByZXN1bHQsIGlzIHN0aWxsIHRvIGJlIGRldGVybWluZWQuIFRoaXMgaXMgaW5jcmVhc2luZyB5ZWFyLW9uLXllYXIuIFRoaXMgZmlndXJlIGlzIGFsc28gYWJvdmUgdGhlIEVuZ2xhbmQgdG90YWwgYnV0IGlzIGJlbG93IFNvdXRoLUVhc3QsIGFsdGhvdWdoIHRoZSBnYXAgaXMgZ3JhZHVhbGx5IGNsb3NpbmcuIFRoZSBuZXh0IHVwZGF0ZSB3aWxsIGJlIGluIE5vdmVtYmVyL0RlY2VtYmVyIDIwMTYuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciA0IC0gTWFyY2ggMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5UaGUgQW5udWFsIFN1cnZleSBvZiBIb3VycyBhbmQgRWFybmluZ3MgKEFTSEUpIGlzIGEgVUsgd2lkZSBzdXJ2ZXkgdGhhdCBwcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBob3VybHksIHdlZWtseSBhbmQgYW5udWFsIGVhcm5pbmdzIGJ5IGdlbmRlciBhbmQgd29yayBwYXR0ZXJucywgYW5kIGF0IG5hdGlvbmFsIGFuZCByZWdpb25hbCBsZXZlbCBnZW9ncmFwaGllcyBvbiBpbmR1c3RyeSBhbmQgb2NjdXBhdGlvbiwgaW5jbHVkaW5nIHB1YmxpYyB2ZXJzdXMgcHJpdmF0ZSBzZWN0b3IgcGF5IGNvbXBhcmlzb25zLiBUaGUgYW5udWFsIHNlcmllcyBkYXRlcyBiYWNrIHRvIDE5OTcgYW5kIHRoZSBsYXRlc3QgZmlndXJlcyBhcmUgZm9yIDIwMTUgKHJlbGVhc2VkIE5vdmVtYmVyIDIwMTUpLiBUaGUgMjAxNiBkYXRhIGlzIGV4cGVjdGVkIHRvIGJlIHB1Ymxpc2hlZCBpbiBOb3ZlbWJlciAyMDE2LiBUaGUgZGF0YSBpcyBnZW5lcmFsbHkgYXZhaWxhYmxlIGF0IGxvY2FsIGF1dGhvcml0eSBsZXZlbCwgdGhvdWdoIGluIHNvbWUgY2FzZXMsIGJlY2F1c2Ugb2Ygc2FtcGxpbmcgaXNzdWVzIHRoZSBkYXRhIGlzIHNvbWV0aW1lcyBzdXBwcmVzc2VkIGZvciBwYXJ0aWN1bGFyIHZhcmlhYmxlcyBhbmQgaXMgbm90IGF2YWlsYWJsZSBhdCBkaXN0cmljdCBsZXZlbCBieSBpbmR1c3RyaWFsIHNlY3RvciBvciBvY2N1cGF0aW9uYWwgdHlwZXMuXFxuXFxuVGhlIGxhdGVzdCBzZXQgb2YgZmlndXJlcyBzdWdnZXN0IHRoYXQgdGhlIGFubnVhbCBhdmVyYWdlIHdlZWtseSBlYXJuaW5ncyBmb3IgZnVsbCB0aW1lIHdvcmtlcnMgbGl2aW5nIGluIFdlc3QgU3Vzc2V4IGlzIMKjNTUyLjcsIGhpZ2hlciB0aGFuIHRoZSBuYXRpb25hbCBhdmVyYWdlLCBidXQgbG93ZXIgdGhhbiB0aGUgcmVnaW9uYWwgYXZlcmFnZS4gVGhlIGhpZ2hlc3QgZWFybmVycyBsaXZlIGluIEhvcnNoYW0gYW5kIGhhdmUgYXZlcmFnZSB3ZWVrbHkgZnVsbCB0aW1lIGVhcm5pbmdzIG9mIMKjNjI3LjksIHRoZSBsb3dlc3QgZWFybmVycyBsaXZlIGluIEFydW4gd2l0aCBjb25zaWRlcmFibHkgbG93ZXIgYXZlcmFnZSBsZXZlbHMgb2YgcGF5IGF0IMKjNDg2LjIuIFBheSBsZXZlbHMgaGF2ZSBpbmNyZWFzZWQgc3RlYWRpbHkgb3ZlciB0aW1lLCBvdmVyIHRoZSB5ZWFyIDIwMTQtMTUgV2VzdCBTdXNzZXggaGFzIHNlZW4gYSAyLjQlIGdyb3d0aCBpbiBhdmVyYWdlIHdlZWtseSBlYXJuaW5ncywgaGlnaGVyIHRoYW4gbmF0aW9uYWxseSBvciByZWdpb25hbGx5LCBBZHVyLCBBcnVuIGFuZCBDaGljaGVzdGVyIGhhdmUgc2VlbiBoaWdoZXIgaW5jcmVhc2UgaW4gZWFybmluZ3MgdGhhbiB0aGUgY291bnR5IGF2ZXJhZ2UuIE92ZXIgdGhlIGxvbmdlciB0ZXJtLCBzaW5jZSAyMDEwLCBXZXN0IFN1c3NleCBoYXMgc2VlbiBhbiBpbmNyZWFzZSBvZiDCozQ3LjggcGVyIHdlZWssIG9yIDkuNSUgZ3Jvd3RoIGluIGVhcm5pbmdzIGhpZ2hlciB0aGFuIHJlZ2lvbmFsbHkgKDQuOSUpIG9yIG5hdGlvbmFsbHkgKDUuMyUpLCB3aXRoIEFkdXIgc2VlaW5nIHRoZSBoaWdoZXN0IHBlcmNlbnRhZ2UgZ3Jvd3RoIGF0IDIyLjYlIGFuZCBDcmF3bGV5IHRoZSBsb3dlc3QgZ3Jvd3RoIGF0IDQuMSUuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzlCMEU1RjYzLTkwQ0EtNDBFOC05OUI4LUM4NUNBMjAxRDU1MVwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJTb3VyY2U6IEFubnVhbCBTdXJ2ZXkgb2YgSG91cnMgYW5kIEVhcm5pbmdzLCAyMDE1IChPTlMvbm9taXMpXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkluIDIwMTUgdGhlIGF2ZXJhZ2UgYW5udWFsIGdyb3NzIHBheSBmb3IgcmVzaWRlbnRzIGluIFdlc3QgU3Vzc2V4IHdhcyDCozMwLDg1Mywgc2xpZ2h0ZXIgaGlnaGVyIHRoYW4gdGhlIGF2ZXJhZ2UgZm9yIEVuZ2xhbmQgKMKjMzAsMTY1KSBidXQgbW9yZSB0aGFuIDEwJSBsb3dlciB0aGFuIHRoZSByZWdpb25hbCBhdmVyYWdlICjCozMzLDM4MikuIE92ZXIgdGhlIGxhc3QgZml2ZSB5ZWFycywgMjAxMC0yMDE1IHJlc2lkZW50IGJhc2VkIGVhcm5pbmdzIGluIFdlc3QgU3Vzc2V4IGluY3JlYXNlZCBieSA5LjIlLG1vcmUgdGhhbiBkb3VibGUgdGhhdCBzZWVuIGluIHRoZSBTb3V0aCBFYXN0IHJlZ2lvbiAoNC4zJSkgLiBBdmVyYWdlIGFubnVhbCB3b3JrcGxhY2UgYmFzZWQgZWFybmluZ3MgaW4gV2VzdCBTdXNzZXggYXJlIGxvd2VyIHRoYW4gZm9yIHJlc2lkZW50IGJhc2VkIGVhcm5pbmdzIGF0IMKjMjYsODMxIGxvd2VyIHRoYW4gdGhlIG5hdGlvbmFsIGFuZCByZWdpb25hbCBlYXJuaW5ncyBsZXZlbHMgcG9zc2libHkgYW4gaW5kaWNhdGlvbiBvZiB0aGUgZXh0ZW50IG9mIGxvd2VyIHBhaWQgam9icyBpbiBXZXN0IFN1c3NleC4gV29ya3BsYWNlIGJhc2VkIGVhcm5pbmdzIGhhdmUgaW5jcmVhc2VkIG92ZXIgdGhlIGxhc3QgNSB5ZWFycyDigJMgMjAxMCDigJMgMjAxNSBieSA0LjYlLlxcblxcblRoZXJlIGlzIHNpZ25pZmljYW50IHZhcmlhdGlvbiB0aHJvdWdob3V0IHRoZSBDb3VudHkgaW4gZWFybmluZyBsZXZlbHMuIEluIDIwMTUgSG9yc2hhbSByZXNpZGVudHMgaGF2ZSB0aGUgaGlnaGVzdCBhdmVyYWdlIHdlZWtseSBlYXJuaW5ncyBsZXZlbHMgb2YgwqM2MjcuOSBhbmQgQXJ1biB0aGUgbG93ZXN0IGF0IMKjNDg2LjIuIENlcnRhaW5seSBlYXJuaW5ncyBhcmUgbG93ZXIgaW4gdGhlIENvYXN0YWwgRGlzdHJpY3RzICwgYW5kIGhpZ2hlciBpbiBDcmF3bGV5LCBIb3JzaGFtIGFuZCBNaWQgU3Vzc2V4IOKAkyBwb3NzaWJseSBhIHJlZmxlY3Rpb24gb2YgYWNjZXNzIHRvIGhpZ2hlciBwYWlkIGVtcGxveW1lbnQgb3Bwb3J0dW5pdGllcyBpbiBTdXJyZXkgYW5kL29yIExvbmRvbiBmcm9tIHRoZSB0aHJlZSBHYXR3aWNrIERpYW1vbmQgZGlzdHJpY3RzLlxcblxcbkluIGFsbCBkaXN0cmljdHMgYW5kIGJvcm91Z2hzIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBDcmF3bGV5IHRoZSBhbm51YWwgYXZlcmFnZSB3ZWVrbHkgZWFybmluZ3Mgb2YgcmVzaWRlbnRzIGlzIGhpZ2hlciB0aGFuIGl0IGlzIGZvciBwZW9wbGUgd29ya2luZyBpbiB0aGUgYXJlYS4gR3Jvd3RoIGluIHRoZSBlYXJuaW5ncyBvZiB3b3JrZXJzIGhhc27igJl0IGJlZW4gc28gaGlnaCBhcyBmb3IgcmVzaWRlbnRzLCBvdmVyYWxsIHBlb3BsZSB3b3JraW5nIGluIFdlc3QgU3Vzc2V4IGhhdmUgZW5qb3llZCBhbiBpbmNyZWFzZSBvZiA2LjAlIG9mIHdlZWtseSBlYXJuaW5nIHJhdGVzIGZyb20gMjAxMC0yMDE0LCB0aG91Z2ggb3ZlciB0aGUgeWVhciAyMDEzLTIwMTQgV2VzdCBTdXNzZXgsIEFkdXIsIEFydW4gQ2hpY2hlc3RlciBhbmQgV29ydGhpbmcgZWFybmluZ3MgbGV2ZWxzIG9mIHdvcmtlcnMgaW4gdGhlc2UgYXJlYXMgaGF2ZSBmYWxsZW4uXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0ZFNTk5NUZDLTYyNUYtNDkwQy1CN0I2LTg5RTVGRTY3Qzk3NlwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJTb3VyY2U6IEFubnVhbCBTdXJ2ZXkgSG91cnMgYW5kIEVhcm5pbmdzLCAyMDE1IChPTlMvbm9taXMpXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkxpbmsgdG8gZWFybmluZ3MgZGF0YSBodHRwOi8vd3d3Lm9ucy5nb3YudWsvb25zL3JlbC9hc2hlL2FubnVhbC1zdXJ2ZXktb2YtaG91cnMtYW5kLWVhcm5pbmdzL2luZGV4Lmh0bWxcXG5cXG5cIn1dLFwidXNlX2N1c3RvbV90aXRsZVwiOnRydWUsXCJjdXN0b21fdGl0bGVcIjpcIkltcHJvdmluZyBncm9zcyB3ZWVrbHkgcGF5IGZvciBmdWxsIHRpbWUgd29ya2VycyByZXNpZGVudCBpbiBXZXN0IFN1c3NleCB0byBiZSBhdCBvciBhYm92ZSDCozUyMi43MFwiLFwiaWNvblwiOlwiY3Jvc3NoYWlyXCIsXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiIEdyb3NzIHdlZWtseSBwYXkgZm9yIGZ1bGwgdGltZSB3b3JrZXJzIHJlc2lkZW50IGluIFdlc3QgU3Vzc2V4XCIsXCJ0aXRsZV9pbWFnZVwiOlwiL2FwaS9hc3NldHMvMEJGQTAwNkEtODI3Ny00ODBBLTlBNzQtMEMwMjIyREQ4NzlBXCJ9In0sInByZXZhaWxpbmdfbWVhc3VyZSI6eyJzdGFydCI6IjIwMDItMDEtMDFUMDA6MDA6MDAuMDAwIiwiZW5kIjoiMjAxOC0wMy0zMVQyMzo1OTo1OS4wMDAiLCJ1bml0IjoiUG91bmRzIiwidGFyZ2V0Ijo1MjIuNywidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YSI6MCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6NTMzLjIsIm1ldHJpYyI6eyJtZXRhZGF0YSI6IiIsImlkIjoibWJtYy1jeGd1In0sImNvbXBhcmlzb24iOnsiY29tcGFyaXNvbl9mdW5jdGlvbiI6Ij4ifSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJlZGl0XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDAyfSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9LFwiYWN0aW9uX3R5cGVcIjpcImluY3JlYXNlXCIsXCJ0YXJnZXRfdHlwZVwiOlwiYWJzb2x1dGVcIixcIm1haW50YWluX3R5cGVcIjpcIj5cIn0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTV9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNX19LFwic3RhcnRcIjpcIjIwMTUtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTUtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJ0aGUgYXZlcmFnZSBlYXJuaW5ncyBpbiBXZXN0IFN1c3NleFwiLFwidXNlX3Byb2dyZXNzX292ZXJyaWRlXCI6ZmFsc2UsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwiYmFkXCJ9In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjEzOjQwLjc1N1oiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOToxMzo0MC43NTdaIiwidGFyZ2V0X3RvbGVyYW5jZSI6NCwiaWQiOiJkcnpzLWN3dXQifSwicmVsYXRlZF9tZWFzdXJlcyI6W10sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MTQ6MDAuODA2WiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjEzOjQwLjgwMloiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOToxNDowMC44MDZaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiI5eWc1LTRzeTIiLCJuYW1lIjoiUGF5bWVudCB0byBTbWFsbCAmIE1pY3JvIEJ1c2luZXNzZXMiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcImljb25cIjpcImNyb3NzaGFpclwiLFwibmFycmF0aXZlXCI6W3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAzIC0gRGVjZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5EdXJpbmcgUTMgKE9jdG9iZXIgdG8gRGVjZW1iZXIgMjAxNykgYSB0b3RhbCBvZiAzNiwxMTQgaW52b2ljZXMgd2l0aCAyMCBkYXkgcGF5bWVudCB0ZXJtcyB3ZXJlIHJlY2VpdmVkLCBhbmQgOTQlIHdlcmUgcGFpZCBvbiB0aW1lLiBBbHRob3VnaCBhbiBpbXByb3ZlbWVudCBjb21wYXJlZCB0byBwcmV2aW91cyBtb250aCwgaXQgaXMgdW5saWtlbHkgdGhhdCB3ZSB3aWxsIGFjaGlldmUgOTYlIGJ5IHllYXItZW5kLlxcblxcblwifV0sXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiUGF5bWVudCB0byBzbWFsbCBhbmQgbWljcm8gYnVzaW5lc3Nlcy4gV1NDQyB3aWxsIGFpbSB0byBwYXkgOTYlIG9mIGludm9pY2VzIHRvIHNtYWxsIGFuZCBtaWNybyBidXNpbmVzc2VzIHRoYXQgYXJlIGRvaW5nIGJ1c2luZXNzIHdpdGggdXMgd2l0aGluIDIwIHdvcmtpbmcgZGF5c1wifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDE3LTA0LTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6IiUiLCJ0YXJnZXQiOjEwMCwidGFyZ2V0X3R5cGUiOiJyZWxhdGl2ZSIsInRhcmdldF9kZWx0YSI6MCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6OTYsIm1ldHJpYyI6eyJtZXRhZGF0YSI6IiIsImlkIjoiM3FqZC02ZTVtIn0sImNvbXBhcmlzb24iOnsiY29tcGFyaXNvbl9mdW5jdGlvbiI6Ij4ifSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJlZGl0XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjozLFwieWVhclwiOjIwMTd9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOH0sXCJhY3Rpb25fdHlwZVwiOlwibWFpbnRhaW5cIixcIm1haW50YWluX3R5cGVcIjpcIj5cIn0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTZ9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNn19LFwic3RhcnRcIjpcIjIwMTYtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTYtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJJbnZvaWNlcyBwYWlkIHdpdGhpbiAyMCB3b3JraW5nIGRheXNcIn0ifSwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MTI6MzAuMzE0WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA5OjEyOjMwLjMxNFoiLCJ0YXJnZXRfdG9sZXJhbmNlIjo1LCJpZCI6IjM4ZDctcnF6ZCJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbXSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOToxMjozNi43MDFaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MTI6MzAuMzYyWiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA5OjEyOjM2LjcwMVoiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6Ijc2dHUtbXlrdSIsIm5hbWUiOiJCdXNpbmVzcyBTdXBwb3J0IGFuZCBHcmFudHMiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcImljb25cIjpcInRleHRcIixcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyAtIERlY2VtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuQnVzaW5lc3NlcyBzdXBwb3J0ZWQgYnkgV1NDQy1sZWQgYW5kIHN1cHBvcnRlZCBidXNpbmVzcyBzdXBwb3J0IGluaXRpYXRpdmVzIOKAkyB0aGlzIGdvYWwgaXMgbWVhc3VyZWQgYnkgdHJhY2tpbmcgdGhlIG51bWJlciBvZiBidXNpbmVzc2VzIHN1cHBvcnRlZCBieSBXU0NDIGxlZCBhbmQgc3VwcG9ydGVkIGJ1c2luZXNzIHN1cHBvcnQgaW5pdGlhdGl2ZXMuIFdlIGFpbSB0byBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIGJ1c2luZXNzZXMgc3VwcG9ydGVkIHRvIDMwMCBidXNpbmVzc2VzIGJ5IE1hcmNoIDIwMTcuXFxuXFxuVGhlIG51bWJlcnMgb2YgYnVzaW5lc3NlcyBzdXBwb3J0ZWQgdGhyb3VnaCBXU0NDIG9yIFdTQ0Mgc3VwcG9ydGVkIGluaXRpYXRpdmVzIGFyb3VuZCBidXNpbmVzcyBzdXBwb3J0XFxuXFxuKipIZWFsdGggYW5kIExpZmUqKiAqKlNjaWVuY2VzKipcXG5cXG5EdXJpbmcgUTMgV1NDQydzIGNvbW1pdG1lbnQgdG8gc2NpZW5jZSwgdGVjaG5vbG9neSwgZW5naW5lZXJpbmcgJiBtYXRoZW1hdGljIChTVEVNKSBoYXMgY29udGludWVkIHRocm91Z2ggc3BvbnNvcnNoaXAgYW5kIG9mZmljZXIgdGltZSwgcHJlcGFyYXRpb24gaXMgaW4gZnVsbCBzd2luZyBmb3IgMjAxOOKAmXMgU1RFTSBldmVudHMuIFVwY29taW5nIFNURU0gZXZlbnRzIGNhbiBiZSBmb3VuZCBvbiB0aGVbU1RFTSBTdXNzZXggd2Vic2l0ZV1bMF0uIEFjdGl2aXRpZXMgYXJlIHBsYW5uZWQgZm9yIGJvdGggcHJpbWFyeSBhZ2UgcHVwaWxzIGFuZCBzZWNvbmRhcnkgc2Nob29sIHN0dWRlbnRzLiBQYXJ0bmVyc2hpcHMgYWNyb3NzIFdlc3QgU3Vzc2V4IGFyZSB3b3JraW5nIGhhcmQgdG8gZW5zdXJlIHRoYXQgeW91bmcgcGVvcGxlIGRldmVsb3AgdGhlIHNraWxscyBuZWVkZWQgYnkgaW5kdXN0cnkuXFxuXFxuSW4gUTEgYW4gRVJERiBzZWN0b3Igc3VwcG9ydCBjYWxsIGNvbnNpc3Rpbmcgb2YgbGlmZSBzY2llbmNlLCBkaWdpdGFsLCBhbmQgYWR2YW5jZWQgbWFudWZhY3R1cmluZyDigJhsb3Rz4oCZIHdhcyByZWxlYXNlZC4gVGhlIHByb3hpbWl0eSBvZiB0aGUgY2FsbOKAmXMgcmVsZWFzZSB0byB0aGUgc3VtbWVyIGhvbGlkYXlzIG1lYW50IHRoYXQgbm8gYmlkcyB3ZXJlIHN1Ym1pdHRlZCBhbmQgdGhlIGNhbGwgaGFzIG5vdyBiZWVuIHJlIHJlbGVhc2VkIGluIFEzLiBXU0NDLCB0aHJvdWdoIHRoZSBFVSBQcm9qZWN0IFJlc291cmNlcyBQcm9qZWN0IGhhcyBiZWVuIGFjdGl2ZWx5IGVuZ2FnaW5nIHBvdGVudGlhbCBwYXJ0bmVycyB0byBnZW5lcmF0ZSBpbnRlcmVzdCBhbmQgaW5jcmVhc2UgdGhlIGxpa2VsaWhvb2Qgb2YgYSBzdHJvbmcgY29uc29ydGl1bSBmb3JtaW5nIHRvIGxldmVyYWdlIHRoZSBhdmFpbGFibGUgZnVuZHMgdG8gc3VwcG9ydCBidXNpbmVzc2VzIGluIHRoZSBhcmVhLiBBIG5hdGlvbmFsIG9yZ2FuaXNhdGlvbiBoYXMgYmVlbiBpZGVudGlmaWVkIGFzIGEgcG90ZW50aWFsIGxlYWQgcGFydG5lciBhbmQgcG9zaXRpdmUgY29udmVyc2F0aW9ucyBhcmUgdW5kZXJ3YXkgdG8gc2hhcGUgdGhlIHN1Ym1pc3Npb24uIElmIHN1Y2Nlc3NmdWwsIGEgdG90YWwgcHJvamVjdCB2YWx1ZSBvZiB1cCB0byDCozEwbSBjb3VsZCBiZSBkZWxpdmVyZWQgYWNyb3NzIHRoZSBDb2FzdCB0byBDYXBpdGFsIFJlZ2lvbi5cXG5cXG5EdXJpbmcgdGhlIGF1dHVtbiB0aGUgRGVwYXJ0bWVudCBmb3IgQnVzaW5lc3MsIEVuZXJneSBhbmQgSW5kdXN0cmlhbCBTdHJhdGVneSByZWxlYXNlZCB0aGUgc2Vjb25kIHdhdmUgb2Ygc2NpZW5jZSBhbmQgaW5ub3ZhdGlvbiByZXBvcnRzLlRoZSByZXBvcnRzIGFyZSBHb3Zlcm5tZW50IHNwb25zb3JlZCBhdWRpdHMgZGVzaWduZWQgdG8gbWFwIGFzc2V0cyBhbmQgc2hvd2Nhc2UgcmVnaW9uYWwgZXhjZWxsZW5jZS4gVGhlIGNvdW50eSBvZiBXZXN0IFN1c3NleCBpcyBpbmNvcnBvcmF0ZWQgaW50byBhbiBhdWRpdCBjYWxsZWQg4oCYSW5ub3ZhdGlvbiBTb3V0aOKAmSwgYSByZWdpb24gd2hpY2ggc3RyZXRjaGVzIGZyb20gRG9yc2V0IGluIHRoZSB3ZXN0LGFjcm9zcyB0byBLZW50IGluIHRoZSBlYXN0LCBhbmQgdXAgdG8gUmVhZGluZy4gV1NDQyBwcm92aWRlZCBzcG9uc29yc2hpcCBhbmQgaGFkIGFuIGFjdGl2ZSByb2xlIGFzIGEgY29uc29ydGl1bSBtZW1iZXIgaW4gdGhlIGF1ZGl0LiBUaGUgcmVwb3J0IGRlbW9uc3RyYXRlcyB0aGUgcmVnaW9u4oCZcyBleGNlbGxlbmNlIGluIDUg4oCYZGlnaXRhbCBlbmFibGluZyB0ZWNobm9sb2dpZXPigJlhY3Jvc3MgZm91ciBzZWN0b3JzOiBpbmNsdWRpbmcgQ29ubmVjdGVkIERpZ2l0YWwsIE1hcmluZSBhbmQgTWFyaXRpbWUsIEJpbyBzY2llbmNlIGFuZCBBZHZhbmNlZCBFbmdpbmVlcmluZy4gSXQgZm9jdXNzZXMgb24gdGhlIHJlZ2lvbuKAmXMgaGlnaCBncm93dGgsaGlnaCB2YWx1ZSBhbmQgYSBoaWdobHkgc3VjY2Vzc2Z1bCBrbm93bGVkZ2UtYmFzZWQgcmVnaW9uYWwgZWNvbm9teSBhbmQgaXRzIG91dHN0YW5kaW5nIHBvdGVudGlhbCBmb3IgZnVydGhlciBpbm5vdmF0aW9uIGFuZCBncm93dGguIFRoZSByZXBvcnQgY2FuIGJlIGFjY2Vzc2VkIGhlcmU6XFxuXFxucGFnZSBbaHR0cHM6Ly93d3cuZW50ZXJwcmlzZW0zLm9yZy51ay9pbm5vdmF0aW9uLXNvdXRoLXNpYV1bMV1cXG5cXG4qKkJvZ25vciBSZWdpcyBDcmVhdGl2ZSBEaWdpdGFsIEh1YioqXFxuXFxuVGhlcmUgd2FzIG5vIGV2ZW50IGhlbGQgb3ZlciB0aGUgbGFzdCBxdWFydGVyIGhvd2V2ZXIgY29udGFjdCB3aXRoIHRoZSBjcmVhdGl2ZSBkaWdpdGFsIHNlY3RvciB0aHJvdWdoIG91ciB3ZWJzaXRlIGFuZCBzb2NpYWwgbWVkaWEgcHJlc2VuY2UgaGFzIGJlZW4gbWFpbnRhaW5lZC4gSW4gUTMsIHdlIGhhZCAxODYgZW5nYWdlbWVudHMgb24gVHdpdHRlciBmcm9tIHRoZSBjb21tdW5pdHksIGFuZCB0d28gY29tcGFuaWVzIHBvc3RlZCB0aGVpciBjb250ZW50IG9uIG91ciBGYWNlYm9vayBjb21tdW5pdHkgcGFnZSB0byBzaGFyZSB3aXRoIHRoZSBvdGhlciBjb21tdW5pdHkgbWVtYmVycy4gVGhlcmUgaGFzIGJlZW4gZW5nYWdlbWVudCB3aXRoIHNpeCBidXNpbmVzc2VzIGluIHJlbGF0aW9uIHRvIHRoZSB1cGNvbWluZyBwcm9jdXJlbWVudCBmb3IgYSBIdWIgb3BlcmF0b3IuXFxuXFxuQXMgYmVmb3JlLCB3ZSBoYXZlIGEgY29udGFjdCBkYXRhYmFzZSBvZiBhcm91bmQgMjAwIGJ1c2luZXNzZXMgcmVjZWl2aW5nIHJlZ3VsYXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEh1YiBjb21tdW5pdHkgYW5kIGV2ZW50cyBldGMuXFxuXFxuKipFeHBlcmllbmNlIFdlc3QgU3Vzc2V4KipcXG5cXG5UaGUgRXhwZXJpZW5jZSBXZXN0IFN1c3NleCAyMDE3IG1hcmtldGluZyBjYW1wYWlnbiBoYXMgbm93IGNvbmNsdWRlZCwgYW5kIHRoZSB3ZWJzaXRlIG5vdyBmZWF0dXJlcyBhcm91bmQgMjM2IGJ1c2luZXNzZXMsIGFuIGluY3JlYXNlIG9mIDE1IGJ1c2luZXNzZXMgZnJvbSBPY3RvYmVyIDIwMTcuIEFuYWx5c2lzIG9mIHRoZSAyMDE3IGNhbXBhaWduIGlzIGN1cnJlbnRseSB1bmRlcndheSBhbmQgZmVlZGJhY2sgaXMgYmVpbmcgc291Z2h0IGZyb20gZmVhdHVyZWQgYnVzaW5lc3NlcyBvbmNlIGFnYWluLiBUaGUgY2FtcGFpZ24gaXMgY29udGludWluZyBpbiAyMDE4IGFuZCB3aWxsIGJlIGxlZCBieSBXZXN0IFN1c3NleCBDb3VudHkgQ291bmNpbCx3b3JraW5nIHdpdGggcGFydG5lcnMgZnJvbSB0aGUgRGlzdHJpY3QgYW5kIEJvcm91Z2hzIGFuZCB0aGUgU291dGggRG93bnMgTmF0aW9uYWwgUGFyay5cXG5cXG4qKkxFQURFUioqXFxuXFxuVGhlIExFQURFUiB0b3RhbHMgZm9yIGN1cnJlbnQgcHJvZ3JhbW1lIGFyZTpcXG5cXG5FeHByZXNzaW9ucyBvZiBJbnRlcmVzdCByZWNlaXZlZCBhbmQgcHJvY2Vzc2VkID0gMTE3XFxuXFxuR3JhbnQgYXBwbGljYXRpb25zIGFwcHJvdmVkID0gMzQgcHJvamVjdHMgVG90YWwgZ3JhbnQgYXBwcm92ZWQgPcKjIDEsMTIyLDA4N1xcblxcbkFzc29jaWF0ZWQgbWF0Y2ggZnVuZGluZyA9IMKjMi4ybVxcblxcbk5ldyBqb2JzIHRoYXQgd2lsbCBiZSBjcmVhdGVkIGJ5IGFwcHJvdmVkIHByb2plY3RzID0gMzggRlRFc1xcblxcbkFkZGl0aW9uYWwgb3Zlcm5pZ2h0IHN0YXlzIGZvcmVjYXN0IGZvciBuZXh0IDMgeWVhcnMgPSA2LDkwN1xcblxcbk5CIC0gdGhlIGZpZ3VyZXMgYXJlIGZvciB0aGUgcHJvZ3JhbW1lIGFzIGEgd2hvbGUgbm90IHRoZSBsYXN0IHF1YXJ0ZXJcXG5cXG4qKlRhc3RlIFdlc3QgU3Vzc2V4KipcXG5cXG5XZXN0IFN1c3NleCBDb3VudHkgQ291bmNpbCBpcyBwcm9ncmVzc2luZyBhIFRhc3RlIFdlc3QgU3Vzc2V4IC0gYnJpbmdpbmcgcHJvZHVjZXJzIGFuZCBidXllcnMgdG9nZXRoZXIgaW5pdGlhdGl2ZS4gVGhlIGxvY2FsIGZvb2QgYW5kIGRyaW5rIHNlY3RvciBpcyB2ZXJ5IGltcG9ydGFudCB0byB0aGUgZWNvbm9teSBvZiB0aGUgQ291bnR5LCBhbmQgcHJvZHVjZXJzIHdpbGwgYmUgc3VwcG9ydGVkIHRvIGFjY2VzcyBuZXcgbWFya2V0cyBhbmQgYnV5ZXJzIG9mIGxvY2FsIHByb2R1Y2UuIEEgc2FtcGxlIG9mIGxvY2FsIGZvb2QgYW5kIGRyaW5rIHByb2R1Y2VycyB3ZXJlIGNvbnN1bHRlZCBvbiBkZXZlbG9wbWVudCBzdXBwb3J0IHRvIGdyb3cgdGhlaXIgYnVzaW5lc3NlcyB0aHJvdWdoIG9mZmVyaW5nIHByb2R1Y3RzIHRvIG5ldyBidXllcnMsIGFuZCBieSBidWlsZGluZyBsb25nIHRlcm0gcmVsYXRpb25zaGlwcyB3aXRoIGJ1eWVycy4gVGhlIGNvbnN1bHRhdGlvbiBoYXMgc2hhcGVkIGEgdHJhaW5pbmcgcHJvZ3JhbW1lIGZvciBwcm9kdWNlcnMgdGFraW5nIHBsYWNlIGluIEphbnVhcnkgJiBGZWJydWFyeSwgYW5kIGEgJ01lZXQgdGhlIEJ1eWVyJyBFdmVudCB0aGF0IHdpbGwgYnJpbmcgcHJvZHVjZXJzIGFuZCBidXllcnMgdG9nZXRoZXIgaW4gRmVicnVhcnkuXFxuXFxuWzBdOiBodHRwOi8vd3d3LnN0ZW1zdXNzZXguY28udWsvXFxuWzFdOiBodHRwczovL3d3dy5lbnRlcnByaXNlbTMub3JnLnVrL2lubm92YXRpb24tc291dGgtc2lhXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqTGF0ZXN0IHVwZGF0ZSAtIE9jdG9iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG4qKldlc3QgU3Vzc2V4IEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlcyBDbHVzdGVyKipcXG5cXG5UaGUgbGF0ZXN0IGNsdXN0ZXIgZGlyZWN0b3J5IGFuZCBjb21wYW55IG1hcCBoYXZlIG5vdyBiZWVuIHJlbGVhc2VkIG9ubGluZSBhbmQgY2FuIGJlIGZvdW5kIG9uIHRoZSBXU0hMQyB3ZWJzaXRlLiBUaGUgZGlyZWN0b3J5IGNvbnNpc3RzIG9mIGEgc2VyaWVzIG9mIHByb2ZpbGVzIHdoaWNoIHByb3ZpZGUgYW4gaW50ZXJlc3RpbmcgaW5zaWdodCBpbnRvIHRoZSBhY3Rpdml0aWVzIG9mIG92ZXIgMTQwIGNvbXBhbmllcyBpbiB0aGUgY2x1c3Rlci5cXG5cXG5EdXJpbmcgUTIgdGhlIGNvdW50eSBjb3VuY2lsIHBhcnRuZXJlZCB3aXRoIENvZ2VudCBTa2lsbHMsIHRoZSBVSyBzdHJhdGVnaWMgc2tpbGxzIGJvZHkgZm9yIHRoZSBzY2llbmNlIGluZHVzdHJpZXMsIHRvIGhvbGQgYW4gaW5mb3JtYXRpdmUgYXBwcmVudGljZXNoaXAgbGV2eSB3ZWJpbmFyLiAyNSBwZW9wbGUgYWNjZXNzZWQgdGhlIGxpdmUgd2ViaW5hciB3aGljaCB3YXMgcmVjb3JkZWQgYW5kIHBsYWNlZCBvbmxpbmUgYXMgYSBzb3VyY2UgdG9vbCBmb3IgdGhvc2Ugd2hvIHdlcmUgdW5hYmxlIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBsaXZlIHN0cmVhbWluZy4gQnVzaW5lc3NlcyB3aXNoaW5nIHRvIGxlYXJuIGFib3V0IHRoZSByZWNlbnQgcmVmb3JtcyBhbmQgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGN1cnJlbnQgOTA6MTAgZ292ZXJubWVudCBhcHByZW50aWNlc2hpcCBmdW5kaW5nIG1vZGVsIGNhbiBhY2Nlc3MgdGhlIHdlYmluYXIgZm9yIGZyZWU6XFxuXFxuW2h0dHBzOi8vcmVnaXN0ZXIuZ290b3dlYmluYXIuY29tL3JlZ2lzdGVyLzk0NDk2ODEwNzI2NDQyNzU0XVswXS5cXG5cXG5EdXJpbmcgUTIgdGhlIHJlc3VsdHMgZnJvbSB0aGUgQ2x1c3RlciBTa2lsbHMgYW5kIEJ1c2luZXNzIFN1cHBvcnQgU3VydmV5IHdlcmUgcmVjZWl2ZWQgd2hpY2ggd2lsbCBhc3Npc3QgaW4gdW5kZXJzdGFuZGluZyB0aGUgbmVlZHMgb2YgdGhlIGNsdXN0ZXIuIFRoZSBFeGVjdXRpdmUgU3VtbWFyeSB3aWxsIHNob3J0bHkgYmUgcmVsZWFzZWQuIFdvcmsgd2l0aCB0aG9zZSBjb21wYW5pZXMgd2hvLCBpbiB0aGUgc3VydmV5LCByZXF1ZXN0ZWQgdGFpbG9yZWQgc3VwcG9ydCwgd2lsbCBiZWdpbiBpbiB0aGUgbmVhciBmdXR1cmUuIEluIGFkZGl0aW9uIHRvIHRoZXNlIGFjdGl2aXRpZXMsIGNsdXN0ZXIgZW5nYWdlbWVudCBoYXMgY29udGludWVkIHdoaWNoIGluY2x1ZGVzLCB0aHJvdWdoIG5ld3NsZXR0ZXJzIGV0Yy4gcmVndWxhcmx5IHVwZGF0aW5nIG92ZXIgMzYwIHN0YWtlaG9sZGVycyBvbiBsaWZlIHNjaWVuY2UgYW5kIFNURU0gYWN0aXZpdGllcyBpbiB0aGUgbG9jYWwgcmVnaW9uLCBuYXRpb25hbCBvcHBvcnR1bml0aWVzLCBldmVudHMsIGFuZCBmdW5kaW5nIG9wcG9ydHVuaXRpZXMuXFxuXFxuKipMRUFERVIqKlxcblxcblRoZSBMRUFERVIgcHJvZ3JhbW1lLCBsYXVuY2hlZCBpbiBOb3ZlbWJlciAyMDE1IGlzIGEgZ3JhbnQgZnVuZGluZyBwcm9ncmFtbWUgdGhhdCBzdXBwb3J0cyB0aGUgZ3Jvd3RoIGFuZCBkZXZlbG9wbWVudCBvZiBydXJhbCBidXNpbmVzc2VzIGFuZCBpcyBwYXJ0IG9mIHRoZSBSdXJhbCBEZXZlbG9wbWVudCBwcm9ncmFtbWUgZm9yIEVuZ2xhbmQgd2hpY2ggYWltcyB0byBpbXByb3ZlIHRoZSBjb21wZXRpdGl2ZW5lc3Mgb2YgZmFybWluZyBhbmQgZm9yZXN0cnksIHN1cHBvcnRpbmcgYSBkaXZlcnNlIGFuZCBzdWNjZXNzZnVsIHJ1cmFsIGVjb25vbXkgYW5kIGhlbHBpbmcgdG8gZGV2ZWxvcCB2aWJyYW50IGFuZCB0aHJpdmluZyBydXJhbCBjb21tdW5pdGllcy5cXG5cXG5UbyBkYXRlOlxcblxcbiogRXhwcmVzc2lvbnMgb2YgSW50ZXJlc3QgcmVjZWl2ZWQgYW5kIHByb2Nlc3NlZCA9IDk3XFxuKiBHcmFudCBhcHBsaWNhdGlvbnMgYXBwcm92ZWQgPSAyOSBwcm9qZWN0c1xcbiogVG90YWwgZ3JhbnQgYXBwcm92ZWQgPSDCozg0MSw3MDFcXG4qIEFzc29jaWF0ZWQgbWF0Y2ggZnVuZGluZyA9IMKjMS42OG1cXG4qIE5ldyBqb2JzIHRoYXQgd2lsbCBiZSBjcmVhdGVkIGJ5IHByb2plY3RzID0gMzUuNSBGVEVzXFxuKiBBZGRpdGlvbmFsIG92ZXJuaWdodCBzdGF5cyBmb3JlY2FzdCBmb3IgbmV4dCAzIHllYXJzID0gNiw5MDdcXG5cXG4qKlRhc3RlIFdlc3QgU3Vzc2V4IOKAkyBFbnRlcnByaXNlIFByb21vdGlvbioqXFxuXFxuV29yayBpcyB1bmRlcndheSBpbiBwcmVwYXJhdGlvbiBmb3IgQSBNZWV0IHRoZSBCdXllciBldmVudCB0byBiZSBoZWxkIGluIFNwcmluZyAyMDE4IHdpdGggdGhlIHB1cnBvc2Ugb2YgaW5jcmVhc2luZyB0aGUgb3Bwb3J0dW5pdGllcyBmb3IgV2VzdCBTdXNzZXggZm9vZCBhbmQgZHJpbmsgcHJvZHVjZXJzIHRvIGFjY2VzcyBwb3RlbnRpYWwgcHVyY2hhc2Vycy4gUHJpb3IgdG8gdGhlIGV2ZW50LCBwcm9kdWNlcnMgd2lsbCBnZXQgYWNjZXNzIHRvIHRyYWluaW5nIGFuZCBidXNpbmVzcyBzdXBwb3J0IHRvIGFsbG93IHRoZW0gdG8gbWFrZSB0aGUgbW9zdCBvZiB0aGUgZXZlbnQuIEluIHRlcm1zIG9mIHByb2dyZXNzIGNvbnN1bHRhdGlvbiB3aXRoIHByb2dyYW1tZSBwYXJ0aWNpcGFudHMgaGFzIGJlZW4gdW5kZXJ0YWtlbiwgd2hpY2ggd2lsbCBpbmZvcm0gdHJhaW5pbmcgcmVxdWlyZW1lbnRzLiBBbiBvdXRsaW5lIGRlc2lnbiBvZiB0cmFpbmluZywgYnJhbmRpbmcgYW5kIGV2ZW50IHNjb3BlIGlzIGJlaW5nIGRldmVsb3BlZC4gQSBDb21tdW5pY2F0aW9ucyBQcm9ncmFtbWUgaXMgdW5kZXJ3YXkgYW5kIHRoZXJlIGhhcyBiZWVuIGEgaGlnaCBsZXZlbCBvZiBpbnRlcmVzdCBpbiBwYXJ0aWNpcGF0aW5nIGluIHRoZSBldmVudCBmcm9tIGZvb2QgYW5kIGRyaW5rIHByb2R1Y2Vycy4gRGV0YWlscyBvbiB0aGUgdHJhaW5pbmcgYW5kIHRoZSBldmVudCBpdHNlbGYgd2lsbCBiZSBhdmFpbGFibGUgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBxdWFydGVyLlxcblxcbioqRXhwZXJpZW5jZSBXZXN0IFN1c3NleCoqXFxuXFxuVGhlICoqRXhwZXJpZW5jZSBXZXN0IFN1c3NleCoqIHRvdXJpc20gY2FtcGFpZ24gbGF1bmNoZWQgaW4gTWF5IDIwMTcsIGFuZCBub3cgZmVhdHVyZXMgYXJvdW5kIDIyMSBidXNpbmVzc2VzLCBhbiBpbmNyZWFzZSBvZiAxMDMgZnJvbSAyMDE2LiBQcmV2aW91c2x5IGJyYW5kZWQgYXMgV2VzdCBTdXNzZXggV2Vla2VuZHMsIEV4cGVyaWVuY2UgV2VzdCBTdXNzZXggc2hvdyBjYXNlcyB0aGUgbmV3IHRoZW1lcyBvZiBhY3RpdmUgZGF5cywgbmV3IGV4cGVyaWVuY2VzLCBiYWNrLXRvLW5hdHVyZSBmYW1pbHkgb3V0aW5ncyBhbmQgY3VsdHVyYWwgZW5jb3VudGVycyBhY3Jvc3MgdGhlIGNvdW50eS4gVGhlIHdlYnNpdGUgYW5kIHNvY2lhbCBtZWRpYSBwbGF0Zm9ybXMgaW5jbHVkZSBmaXJzdCBwZXJzb24gc3Rvcmllcywgd2Vla2VuZCBpdGluZXJhcmllcywgZXZlbnRzIGFzIHdlbGwgYXMgZ3JlYXQgcGxhY2VzIHRvIGVhdCwgZHJpbmsgYW5kIHN0b3Agb2ZmLiBUaGUgY2FtcGFpZ24gaXMgaW50ZW5kZWQgdG8gaW5zcGlyZSB2aXNpdG9ycyBhbmQgcmVzaWRlbnRzIGFuZCB0byBiZW5lZml0IGxvY2FsIGJ1c2luZXNzZXMgdGhyb3VnaCBmZWF0dXJpbmcgdGhlbSBpbiB0aGUgY2FtcGFpZ24uIEJ1c2luZXNzZXMgaGF2ZSBhbHNvIGJlZW4gc3VwcG9ydGVkIHRocm91Z2ggc2lnbnBvc3RpbmcgdG8gZ3JhbnQgZnVuZGluZyBhbmQgY29tbWVyY2lhbCBzcGFjZSBvcHBvcnR1bml0aWVzLCBhbmQgdGhyb3VnaCBleHBvc3VyZSBmcm9tIGZlYXR1cmVzIGluIFRhc3RlIFdlc3QgU3Vzc2V4IG1hZ2F6aW5lLiBUaGUgY2FtcGFpZ24gaXMgbGVkIGJ5IFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsLCB3b3JraW5nIHdpdGggcGFydG5lcnMgaW5jbHVkaW5nIHRoZSBDb2FzdGFsIFdlc3QgU3Vzc2V4IFRvdXJpc20gR3JvdXAgYW5kIHRoZSBTb3V0aCBEb3ducyBOYXRpb25hbCBQYXJrLlxcblxcbioqVGhlcmUgYXJlIG5vdyBhcm91bmQgMjIwIGJ1c2luZXNzZXMgZmVhdHVyZWQgb24gdGhlIEV4cGVyaWVuY2UgV2VzdCBTdXNzZXggd2Vic2l0ZSwgbmVhcmx5IGRvdWJsZSB0aGF0IHJlcG9ydGVkIGluIERlY2VtYmVyIDIwMTYuKipcXG5cXG4qKkJvZ25vciBSZWdpcyBDcmVhdGl2ZSBEaWdpdGFsIEh1YioqXFxuXFxuVGhlICoqQm9nbm9yIFJlZ2lzIENyZWF0aXZlIERpZ2l0YWwgSHViKiogcHJvamVjdCBhaW1zIHRvIGRldmVsb3AgdGhlIGNyZWF0aXZlIGFuZCBkaWdpdGFsIHNlY3RvcnMgaW4gQm9nbm9yIFJlZ2lzIGFuZCBjb2FzdGFsIFdlc3QgU3Vzc2V4LCB0byBjcmVhdGUgaGlnaCB2YWx1ZSBqb2JzIGluIGhpZ2ggZ3Jvd3RoIHNlY3RvcnMuIFRoZSBwcm9qZWN0IGludm9sdmVzIHRoZSBlc3RhYmxpc2htZW50IG9mIGEgc2hhcmVkIGFuZCBjb2xsYWJvcmF0aXZlIHdvcmtzcGFjZSB3aXRoaW4gQm9nbm9yIFJlZ2lzIHJhaWx3YXkgc3RhdGlvbiwgYW5kIGlzIGR1ZSB0byBiZSBkZWxpdmVyZWQgaW4gSnVuZSAyMDE4LiBBcyBwYXJ0IG9mIHRoZSBzZWN0b3IgZW5nYWdlbWVudCB3b3JrIGluIHN1cHBvcnQgb2YgdGhlIEJvZ25vciBSZWdpcyBDcmVhdGl2ZSBEaWdpdGFsIEh1YiBwcm9qZWN0LCB0d28gZXZlbnRzIHdlcmUgZGVsaXZlcmVkIGluIFEyIGJ5IFdpcmVkIFN1c3NleC5cXG5cXG5UaGUgZmlyc3Qgd2FzIGEgd29ya3Nob3Agb24gMjd0aCBKdWx5IGZvciBwcmltYXJ5IHNjaG9vbC1hZ2VkIGNoaWxkcmVuIGluIGRpZ2l0YWwgYW5pbWF0aW9uIGFuZCB3YXMgaGVsZCBhdCB0aGUgQmFzZSBTa2F0ZXBhcmsgaW4gQm9nbm9yIFJlZ2lzLiBUaGUgc2Vzc2lvbiB3YXMgYXR0ZW5kZWQgYnkgMjQgY2hpbGRyZW4gZnJvbSAxMSBsb2NhbCBwcmltYXJ5IHNjaG9vbHMsIGFuZCB3YXMgYSBwaWxvdCBmb3Igb3V0cmVhY2ggZGlnaXRhbCBza2lsbHMgYWN0aXZpdGllcyB0aGF0IG1heSBiZSBjYXJyaWVkIG91dCBieSB0aGUgSHViIGluIHRoZSBsb2NhbCBjb21tdW5pdHkuXFxuXFxuVGhlIHNlY29uZCBldmVudCB3YXMgaGVsZCBvbiAyN3RoIFNlcHRlbWJlciBhdCBUaGUgUGllciBpbiBCb2dub3IgUmVnaXMgYW5kIHdhcyBhIG5ldHdvcmtpbmcgZXZlbnQgZm9yIHRoZSBIdWIgYnVzaW5lc3MgY29tbXVuaXR5LiBUaGVyZSB3ZXJlIGZpdmUgaW52aXRlZCBzcGVha2VycyB3aG8gc2hhcmVkIHRoZWlyIGV4cGVyaWVuY2VzIHdpdGggdGhlIGF1ZGllbmNlIG9mIDI2IGJ1c2luZXNzIHBlb3BsZS5cXG5cXG5UaGVyZSBhcmUgY3VycmVudGx5IDIwMiBjb250YWN0cyBvbiB0aGUgQ3JlYXRpdmUgRGlnaXRhbCBIdWIgY29udGFjdCBkYXRhYmFzZSwgd2hvIHJlY2VpdmUgcmVndWxhciBlbWFpbCB1cGRhdGVzLlxcblxcblswXTogaHR0cHM6Ly9yZWdpc3Rlci5nb3Rvd2ViaW5hci5jb20vcmVnaXN0ZXIvOTQ0OTY4MTA3MjY0NDI3NTRcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDEgLSBKdW5lIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuKipCdXNpbmVzc2VzIHN1cHBvcnRlZCBieSBXU0NDLWxlZCBhbmQgc3VwcG9ydGVkIGJ1c2luZXNzIHN1cHBvcnQgaW5pdGlhdGl2ZXMqKiDigJMgdGhpcyBnb2FsIGlzIG1lYXN1cmVkIGJ5IHRyYWNraW5nIHRoZSBudW1iZXIgb2YgYnVzaW5lc3NlcyBzdXBwb3J0ZWQgYnkgV1NDQyBsZWQgYW5kIHN1cHBvcnRlZCBidXNpbmVzcyBzdXBwb3J0IGluaXRpYXRpdmVzLlxcblxcbk92ZXIgdGhlIGxhc3QgcXVhcnRlciBPdmVyIDE0MCBoZWFsdGggYW5kIGxpZmUgc2NpZW5jZSByZWxhdGVkIGNvbXBhbmllcyBoYXZlIG5vdyBiZWVuIGlkZW50aWZpZWQgaW4gdGhlIGNvdW50eS4gV2VzdCBTdXNzZXggQ291bnR5IENvdW5jaWwgaGFzIGNvbnRpbnVlZCB0byBmYWNpbGl0YXRlIGludGVyYWN0aW9ucyBiZXR3ZWVuIFdlc3QgU3Vzc2V4IEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlcyBDbHVzdGVyIGNvbXBhbmllcywgdXBkYXRpbmcgdGhlbSBvbiBzZWN0b3IgZnVuZGluZywgb3Bwb3J0dW5pdGllcyBhbmQgYWN0aXZpdGllcy5cXG5cXG5UaGlzIHF1YXJ0ZXIgaGFzIHNlZW4gdGhlIGRlbGl2ZXJ5IG9mIHNldmVyYWwgU1RFTSAoc2NpZW5jZSwgdGVjaG5vbG9neSwgZW5naW5lZXJpbmcgYW5kIG1hdGhlbWF0aWNzKSBhY3Rpdml0aWVzIGFpbWVkIGF0IGluc3BpcmluZyB0aGUgbmV4dCBnZW5lcmF0aW9uIHRvIHN0dWR5IGFuZCBidWlsZCBjYXJlZXJzLCBhbmQgdG8gZGV2ZWxvcCB0aGUgdG9vbHMgYW5kIHRlY2huaXF1ZXMgdGhhdCB3aWxsIGRyaXZlIHRoZSBlY29ub215IG9mIHRoZSBmdXR1cmUuTWlkIFN1c3NleCBTY2llbmNlIFdlZWssIGFuIGluaXRpYXRpdmUgYWltZWQgYXQgcHJpbWFyeSBhZ2VkIHN0dWRlbnRzIGluIHRoZSBNaWQgU3Vzc2V4IGFyZWEgdG9vayBwbGFjZSBpbiBNaWQtSnVuZS4gQ3Jhd2xleSBTVEVNIGZlc3QsIG5vdyBpbiBpdHMgc2l4dGggeWVhciByYW4gZnJvbSBNYXktSnVuZS4gQ3Jhd2xleSBTVEVNIGZlc3QgaW5jbHVkZWQgaW4tc2Nob29sIGFjdGl2aXRpZXMsIGNvbXBhbnkgc2l0ZSB2aXNpdHMsIGFuZCBhIGNvbW11bml0eSBkYXkgaW4gQ3Jhd2xleS4gSXQgY3VsbWluYXRlZCB3aXRoIG92ZXIgOSwwMDAgc3R1ZGVudHMsIDQwIGxvY2FsIFNURU0gZW1wbG95ZXJzIGFuZCBhIG51bWJlciBvZiBuYXRpb25hbCBvcmdhbmlzYXRpb25zIHBhcnRpY2lwYXRpbmcgaW4gdGhlIEJpZyBCYW5nIEZhaXIgU291dGggRWFzdCBpbiBBcmRpbmdseS5cXG5cXG5BbiBFUkRGIHNlY3RvciBzdXBwb3J0IGNhbGwgY29udGFpbmluZyBhIGxpZmUgc2NpZW5jZXMgZWxlbWVudCBoYXMgYmVlbiByZWxlYXNlZCBmb3IgdGhlIENvYXN0IHRvIENhcGl0YWwgcmVnaW9uLiBXU0NDLCB0aHJvdWdoIHRoZSBFVSBQcm9qZWN0IFJlc291cmNlcyBQcm9qZWN0IGhhcyBiZWVuIGFjdGl2ZWx5IGVuZ2FnaW5nIHBvdGVudGlhbCBwYXJ0bmVycyB0byBnZW5lcmF0ZSBpbnRlcmVzdCBhbmQgaW5jcmVhc2UgdGhlIGxpa2VsaWhvb2Qgb2YgYSBzdHJvbmcgY29uc29ydGl1bSBmb3JtaW5nIHRvIGxldmVyYWdlIHRoZSBhdmFpbGFibGUgZnVuZHMgdG8gc3VwcG9ydCBidXNpbmVzc2VzIGluIHRoZSBhcmVhLlxcblxcbkluIHJlbGF0aW9uIHRvIHRoZSBDcmVhdGl2ZSBEaWdpdGFsIEh1YiBzZWN0b3Igd29yayBhcm91bmQgQm9nbm9yIFJlZ2lzIGEgYnVzaW5lc3MgYnJlYWtmYXN0IHdhcyBoZWxkIGF0IFRoZSBQaWVyIEJvZ25vciBSZWdpcyBpbiBNYXkgYnkgV2lyZWQgU3Vzc2V4LiBQZWVyIHRvIHBlZXIgYWR2aWNlIGFuZCBpZGVhcyBzZXNzaW9ucyBoZWxkIGluIGZvdXIgZ3JvdXBzIGFkZHJlc3NlZCBpc3N1ZXMgaW5jbHVkaW5nIG1hcmtldGluZyBhbmQgZmluYW5jZXMuIDI1IGJ1c2luZXNzZXMgdG9vayBwYXJ0LiBBbmQgaW4gSnVuZSAyMDE3IGFuIOKAmElkZWFzIENsaW5pY+KAmSB3YXMgaGVsZCBhdCB0aGUgVW5pdmVyc2l0eSBvZiBDaGljaGVzdGVyIEJvZ25vciBSZWdpcyBjYW1wdXMgd2hpY2ggaW5jbHVkZWQgYW4gaW50ZW5zaXZlIHByb2JsZW0tc29sdmluZyBzZXNzaW9uIHdpdGggbG9jYWwgY29tbXVuaXR5IGJ1c2luZXNzIG9yZ2FuaXNlcnMsIGluY2x1ZGluZyBzb2NpYWwgZW50ZXJwcmlzZXMuIFNldmVuIGJ1c2luZXNzZXMgYXR0ZW5kZWQgYW5kIGFkdmljZSB3YXMgcHJvdmlkZWQgYnkgYSBCdXNpbmVzcyBOYXZpZ2F0b3IgYW5kIHRoZSBVbml2ZXJzaXR54oCZcyBpbmN1YmF0b3IgbWFuYWdlci5cXG5cXG5VbmRlciB0aGUgTEVBREVSIHByb2dyYW1tZSBhcyBhdCAzMCBKdW5lIG91ciB0d28gTEVBREVSIExvY2FsIEFjdGlvbiBHcm91cHMgaGF2ZSBhcHByb3ZlZCBncmFudHMgdG90YWxsaW5nIMKjNjE0LDYzOCBmb3IgMjEgcHJvamVjdHMuXFxuXFxuQXQgbGVhc3QgMTcgYnVzaW5lc3NlcyBoYXZlIGJlZW4gZGlyZWN0bHkgc3VwcG9ydGVkLlxcblxcblRvdGFsIHZhbHVlIG9mIHRoZSBwcm9qZWN0cyAoaW5jbHVkaW5nIExFQURFUiBncmFudCkgaXMgwqMxLjltLlxcblxcblRoZSBwcm9qZWN0cyB3aWxsIGNyZWF0ZSAzNCBGVEUgam9icyBhbmQgNCw4MTQgYWRkaXRpb25hbCBvdmVybmlnaHQgc3RheXMuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciA0IC0gTWFyY2ggMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG4qKkJ1c2luZXNzZXMgc3VwcG9ydGVkIGJ5IFdTQ0MtbGVkIGFuZCBzdXBwb3J0ZWQgYnVzaW5lc3Mgc3VwcG9ydCBpbml0aWF0aXZlcyoqIOKAkyB0aGlzIGdvYWwgaXMgbWVhc3VyZWQgYnkgdHJhY2tpbmcgdGhlIG51bWJlciBvZiBidXNpbmVzc2VzIHN1cHBvcnRlZCBieSBXU0NDIGxlZCBhbmQgc3VwcG9ydGVkIGJ1c2luZXNzIHN1cHBvcnQgaW5pdGlhdGl2ZXMuIFdlIGFpbSB0byBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mYnVzaW5lc3NlcyBzdXBwb3J0ZWQgdG8gMzAwIGJ1c2luZXNzZXMgYnkgTWFyY2ggMjAxNy5cXG5cXG4qKjM1MSsgYnVzaW5lc3NlcyBhcyBRdWFydGVyIDQg4oCTTWFyY2ggMjAxNyoqXFxuXFxuVGhlIG51bWJlcnMgb2YgYnVzaW5lc3NlcyBzdXBwb3J0ZWQgdGhyb3VnaCBXU0NDIG9yIFdTQ0Mgc3VwcG9ydGVkIGluaXRpYXRpdmVzIGFyb3VuZCBidXNpbmVzcyBzdXBwb3J0Olxcblxcbk92ZXIgdGhlIGxhc3QgcXVhcnRlciB0aGUgdXBkYXRpbmcgb2Ygb3VyIGV4aXN0aW5nICoqV2VzdCBTdXNzZXggSGVhbHRoIGFuZCBMaWZlIFNjaWVuY2VzIENsdXN0ZXIqKiBjb21wYW5pZXMgb24gZnVuZGluZyBvcHBvcnR1bml0aWVzLCBhbmQgaGVhbHRoIGFuZCBsaWZlIHNjaWVuY2UgYWN0aXZpdGllcyB0YWtpbmcgcGxhY2UgaW4gdGhlIHJlZ2lvbiBoYXMgY29udGludWVkLiBJbiBhZGRpdGlvbiB0aGVyZSBoYXMgYmVlbiBzb21lIGVuZ2FnZW1lbnQgd2l0aCBuZXcgY2x1c3RlciBjb21wYW5pZXMsIGFzIHdlbGwgYXMga25vd2xlZGdlIHRyYW5zZmVyIG5ldHdvcmtzIGFuZCBuYXRpb25hbCBzZWN0b3Igb3JnYW5pc2F0aW9ucy4gVGhlcmUgaGFzIGJlZW4gYWN0aXZlIGludm9sdmVtZW50IGluIHRoZSBJbm5vdmF0aW9uIFNvdXRoIFNjaWVuY2UgYW5kIElubm92YXRpb24gQXVkaXQsIGEgR292ZXJubWVudCBiYWNrZWQgaW5pdGlhdGl2ZSB0aGF0IGlzIGN1cnJlbnRseSB0YWtpbmcgcGxhY2UgYW5kIHdoaWNoIGFpbXMgdG8gYXNzZXNzIHRoZSBTb3V0aCBvZiBFbmdsYW5k4oCZcyBzdHJlbmd0aHMgaW4gZGlnaXRhbCBlbmFibGluZyB0ZWNobm9sb2dpZXMsIHdpdGggcGFydGljdWxhciBhcHBsaWNhdGlvbiB0byB0aGUgYmlvIHNjaWVuY2UsIGFkdmFuY2VkIGVuZ2luZWVyaW5nLCBtYXJpbmUgYW5kIG1hcml0aW1lIGFuZCBjb25uZWN0ZWQgZGlnaXRhbCBzZWN0b3JzLiBXU0NDIGhhcyBwYXJ0aWNpcGF0ZWQgaW4gdGhlIGF1ZGl0IGFuZCBlbmNvdXJhZ2VkIFdTSExTQyBtZW1iZXJzIHRvIGF0dGVuZCBhIGJpb3NjaWVuY2UgdGhlbWVkIHdvcmtzaG9wIHdoaWNoIHRvb2sgcGxhY2UgaW4gQ3Jhd2xleSBpbiBNYXJjaCwgYW5kIGZvciBtZW1iZXJzIHRvIGNvbnRyaWJ1dGUgZXZpZGVuY2UgdG8gc3VwcG9ydCB0aGUgc3R1ZHkuIEZpbmRpbmdzIGZyb20gdGhlIGJ1c2luZXNzIHN1cnZleSB1bmRlcnRha2VuIHRvIHVuZGVyc3RhbmQgdGhlIHNraWxscyBhbmQgYnVzaW5lc3Mgc3VwcG9ydCBuZWVkcyBvZiB0aGUgY2x1c3RlciBpcyBleHBlY3RlZCBsYXRlciBvbiBpbiB0aGUgU3ByaW5nLlxcblxcbkluIHRoZSBsYXN0IHF1YXJ0ZXIsIENvYXN0YWwgU1RFTWZlc3QgaGFzIGxhdW5jaGVkLCBHU0sgc2l0ZSB2aXNpdHMgaGF2ZSBjb21tZW5jZWQgYW5kIHRoZSBCaWcgQmFuZ0BCdXRsaW5zIHRvb2sgcGxhY2Ugb24gTWFyY2ggMTR0aCBkdXJpbmcgTmF0aW9uYWwgU2NpZW5jZSBXZWVrIHdoaWNoIGluY2x1ZGVkIGEgbnVtYmVyIG9mIGFjdGl2aXRpZXMgcHJvdmlkZWQgYnkgbG9jYWwgYW5kIHdpZGVyIGFmaWVsZCBjb21wYW5pZXMgYW5kIG9yZ2FuaXNhdGlvbnMgZGVzaWduZWQgdG8gaW5zcGlyZSBrZXkgc3RhZ2UgMyAmIDQgc3R1ZGVudHMgdG8gY29udGludWUgc3R1ZHlpbmcgU1RFTSBzdWJqZWN0cywgYW5kIGRpc2NvdmVyIGNhcmVlciBvcHBvcnR1bml0aWVzIGFuZCBpZGVudGlmeSBwYXRod2F5cyB0byByZWFjaCB0aGVpciBhc3BpcmF0aW9ucy4gT3ZlciA3NTAgcHVwaWxzLCBhbmQgdGVhY2hlcnMgYXR0ZW5kZWQgdGhlIGV2ZW50LiAuIE1pZC1TdXNzZXggU2NpZW5jZSBXZWVrIGFuZCBDcmF3bGV5IFNURU1mZXN0IGhhdmUgYm90aCBsYXVuY2hlZCB3aXRoIHRoZWlyIHJlc3BlY3RpdmUgYWN0aXZpdGllcyBhbmQgQmlnIEJhbmcgZXZlbnRzIHNjaGVkdWxlZCB0byB0YWtlIHBsYWNlIGxhdGVyIG9uIGluIHRoZSB5ZWFyLlxcblxcbkluIHRoZSBsYXN0IHF1YXJ0ZXIsIHRoZSBCb2dub3IgUmVnaXMgQ3JlYXRpdmUgRGlnaXRhbCBIdWIgcHJvamVjdCBoYXMgZW5nYWdlZCB3aXRoIGNyZWF0aXZlIGFuZCBkaWdpdGFsIGJ1c2luZXNzZXMgaW4gYW5kIGFyb3VuZCBCb2dub3IgUmVnaXMgdGhyb3VnaCBvdXIgV2lyZWQgU3Vzc2V4IHNlY3RvciBlbmdhZ2VtZW50IGNvbnRyYWN0LiBBbiBldmVudCB3YXMgaGVsZCBvbiAyNHRoIEphbnVhcnkgYXQgdGhlIFVuaXZlcnNpdHkgb2YgQ2hpY2hlc3RlcuKAmXMgQm9nbm9yIFJlZ2lzIGNhbXB1cywgYW5kIHdhcyBhdHRlbmRlZCBieSA0OCBidXNpbmVzc2VzLiBUaGUgZm9jdXMgb2YgdGhlIGV2ZW50IHdhcyBhc3BpcmF0aW9ucywgZ29hbHMgYW5kIHJlc29sdXRpb25zIGZvciAyMDE3LCBhbmQgaW5jbHVkZWQgYSBwYW5lbCBkaXNjdXNzaW9uIHdpdGggbG9jYWwgY3JlYXRpdmUgYW5kIGRpZ2l0YWwgYnVzaW5lc3MgbGVhZGVycy5cXG5cXG5UaGlzIHdhcyB0aGUgbGFzdCBvZiBmaXZlIGJ1c2luZXNzIGVuZ2FnZW1lbnQgZXZlbnRzIG9yZ2FuaXNlZCBvbiBvdXIgYmVoYWxmIGJ5IFdpcmVkIFN1c3NleCBpbiAxNi8xNy4gVGhlIGN1bXVsYXRpdmUgdG90YWwgb2YgYnVzaW5lc3NlcyBhdHRlbmRpbmcgdGhlc2UgZXZlbnRzIGluIHRoZSByZXBvcnRpbmcgeWVhciB3YXMgMTQwLCB3aXRoIGF2ZXJhZ2UgYXR0ZW5kYW5jZSBhdCB0aGUgZXZlbnRzIGluY3JlYXNpbmcgZnJvbSAyMCBhdHRlbmRlZXMgaW4gQXByaWwgMjAxNiB0byA0OCBpbiBKYW51YXJ5IDIwMTcuXFxuXFxuSW4gYWRkaXRpb24sIGFyb3VuZCAyNDAgYnVzaW5lc3NlcyBhcmUgdXBkYXRlZCBtb250aGx5IGFuZCBlbmdhZ2VkIHRocm91Z2ggdGhlIHByb2plY3QgY29udGFjdCBkYXRhYmFzZSwgYW5kIHNvY2lhbCBtZWRpYSBhY2NvdW50cy5cXG5cXG5VbmRlciB0aGUgY3VycmVudCBMRUFERVIgcHJvZ3JhbW1lIGEgdG90YWwgb2YgNTcgb3V0bGluZSBhcHBsaWNhdGlvbnMgaGF2ZSBiZWVuIHJlY2VpdmVkIHRvIGRhdGUsIHdpdGgsIHNvIGZhciwgYSB0b3RhbCBvZsKjNDIxLDI0NyBiZWluZyBjb21taXR0ZWQgdG8gMTQgYXBwcm92ZWQgcHJvamVjdHMuIFRoZXNlIHByb2plY3RzIHdpbGwgY3JlYXRlIGFwcHJveC4gMjYgRlRFIGpvYnMgYW5kIGFuIGV4dHJhIDQsODE0IG92ZXJuaWdodCBzdGF5cy4gVGhlIHRvdGFsIG1hdGNoIGZ1bmRpbmcgaXMgwqMxLDA1Miw5MzcsIHNvIHRvdGFsIHZhbHVlIG9mIHRoZSAxNCBwcm9qZWN0cyA9wqMxLDQ3NCwxODQuIEEgZnVydGhlciAyMSBwcm9qZWN0cyBoYXZlIGJlZW4gaW52aXRlZCB0byBmdWxsIGFwcGxpY2F0aW9uIOKAkyByZXF1ZXN0aW5nIGdyYW50IG9mIGFwcHJveC7Cozc1MCwwMDAuIEFsbCBMRUFERVIgZnVuZGluZyBtdXN0IGJlIGNvbW1pdHRlZCBiZWZvcmUgdGhlIFVLIGxlYXZlcyB0aGUgRVUuXFxuXFxuKipCdXNpbmVzcyBGaW5hbmNlIFByb2plY3QqKlxcblxcblRoZSBjYWxsIGZvciBhcHBsaWNhdGlvbnMgaGFzIG5vdyBjbG9zZWQuIE92ZXJhbGwgMjAxIGVucXVpcmllcyBhbmQgMTA3IGV4cHJlc3Npb25zIG9mIGludGVyZXN0IHdlcmUgcmVjZWl2ZWQgZnJvbSBjb21wYW5pZXMgaW50ZXJlc3RlZCBpbiBhcHBseWluZyBmb3IgYSBCdXNpbmVzcyBHcm93dGggR3JhbnQuIFRoaXMgY29udmVydGVkIHRvIDM2IGZ1bGwgYXBwbGljYXRpb25zIGFuZCByZXN1bHRlZCBpbiAyMyBjb21wYW5pZXMgcmVjZWl2aW5nIGFuIGFwcHJvdmFsIGZyb20gdGhlIEdyb3d0aCBHcmFudCBwYW5lbHMgaW4gMjAxNi8xNyB3aGljaCxpZiBmdWxseSBzcGVudCwgd2lsbCB0b3RhbCDCozk2MCwyMTAuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAzIC0gRGVjZW1iZXIgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5UaGUgbnVtYmVycyBvZiBidXNpbmVzc2VzIHN1cHBvcnRlZCB0aHJvdWdoIFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsIChXU0NDKSBvciBXU0NDIHN1cHBvcnRlZCBpbml0aWF0aXZlcyBhcm91bmQgYnVzaW5lc3Mgc3VwcG9ydDpcXG5cXG4qIE92ZXIgMTIwIGhlYWx0aCBhbmQgbGlmZSBzY2llbmNlcyByZWxhdGVkIGNvbXBhbmllcyBoYXZlIGJlZW4gc3VwcG9ydGVkIHRocm91Z2ggdGhlIEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlcyBjbHVzdGVyIG5ldHdvcmsuIENvbXBhbmllcyB3aXRoaW4gdGhlIGNsdXN0ZXIgYXJlIHJlZ3VsYXJseSB1cGRhdGVkIGFib3V0IHRoZSBzZWN0b3IgaW5pdGlhdGl2ZXMgV1NDQyBpcyBwcm9ncmVzc2luZywgcmVnaW9uYWwgZXZlbnRzLCBmdW5kaW5nIG9wcG9ydHVuaXRpZXMsIGxvY2FsIHJlc2VhcmNoLCBhbmQgU1RFTSBvcHBvcnR1bml0aWVzLiBXb3JrIGhhcyBjb21tZW5jZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2tpbGxzIGFuZCBidXNpbmVzcyBzdXBwb3J0IG5lZWRzIG9mIHRoZSBjbHVzdGVyIGFuZCBhIGJ1c2luZXNzIHN1cnZleSBoYXMgYmVlbiBjb21taXNzaW9uZWQgYW5kIHJlbGVhc2VkLiBBbGwgY2x1c3RlciBjb21wYW5pZXMgaGF2ZSBiZWVuIGdpdmVuIHRoZSBvcHBvcnR1bml0eSB0byBjb250cmlidXRlIHRvIHRoZSB3b3JrIGJ5IGhpZ2hsaWdodGluZyBhbnkgY2hhbGxlbmdlcyB0aGF0IHRoZXkgZmFjZS4gT24gTm92ZW1iZXIgNHRoIFdTSExTQyBwYXJ0bmVyZWQgd2l0aCBDb2dlbnQgU2tpbGxzLCB0aGUgc3RyYXRlZ2ljIHNraWxscyBib2R5IGZvciB0aGUgc2NpZW5jZSBpbmR1c3RyaWVzIHRvIGRlbGl2ZXIgYSBTa2lsbHMgUmVmb3JtIGFuZCBBcHByZW50aWNlc2hpcCBMZXZ5IFdvcmtzaG9wLiA2IGJ1c2luZXNzZXMgYXR0ZW5kZWQgdGhlIHdvcmtzaG9wIGFzIGRpZCBsb2NhbCBhdXRob3JpdHkgYW5kIHVuaXZlcnNpdHkgcGFydG5lcnMuIE9uIERlY2VtYmVyIDZ0aCBXU0hMU0MgcGFydG5lcmVkIHdpdGggT0JOLCBhIGhlYWx0aCBhbmQgbGlmZSBzY2llbmNlcyBtZW1iZXJzaGlwIG9yZ2FuaXNhdGlvbiB0byBkZWxpdmVyIGFuIGV2ZW50IGF0IHRoZSBIb2xpZGF5IElubiwgR2F0d2ljay0gV29ydGggb24g4oCYUHVibGljIE5vbi0gRGlsdXRhYmxlIEZ1bmRpbmcgYW5kIEV4cG9ydCBTdXBwb3J04oCZLiBSYWlsIHN0cmlrZXMgYW5kIGFkdmVyc2UgdHJhZmZpYyBjb25kaXRpb25zIGhhZCBhIG5lZ2F0aXZlIGVmZmVjdCBvbiBudW1iZXJzIHJlc3VsdGluZyBpbiAxNCBidXNpbmVzc2VzIGFuZCAxNyBidXNpbmVzcyBmb2N1c2VkIG9yZ2FuaXNhdGlvbnMgYXR0ZW5kaW5nICh1bml2ZXJzaXRpZXMsIHRoZSBMRVAsIENoYW1iZXJzIG9mIENvbW1lcmNlIGV0Yy4pLiBUaGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgdHdvIGV2ZW50cyBoYXMgYmVlbiBwbGFjZWQgb25saW5lIG9uIHRoZSBXU0hMU0Mgc2VjdGlvbiBvZiB0aGUgQnVzaW5lc3MgV2VzdCBTdXNzZXggd2Vic2l0ZSB0byBzZXJ2ZSBhcyBhbiBhZGRpdGlvbmFsIHJlc291cmNlIGZvciB0aG9zZSB3aG8gd2VyZSB1bmFibGUgdG8gYXR0ZW5kIHRoZSBldmVudHMuXFxuXFxuKiBUaGUgQmVhdXRpZnVsIE91dGRvb3JzL1dlc3QgU3Vzc2V4IFdlZWtlbmRzIGNhbXBhaWduIHJhbiBmb3IgaXRzIHNlY29uZCB5ZWFyIGZyb20gTWF5LU9jdG9iZXIgMjAxNiwgYW5kIHRoZSB3ZWJzaXRlIG5vdyBmZWF0dXJlcyBhcm91bmQgMTE4IGJ1c2luZXNzZXMgYXMgcGxhY2VzIHRvIHN0b3Agb2ZmIGFuZCBzdGF5IG9uIHJvdXRlIGluIFdlc3QgU3Vzc2V4LCBhbiBpbmNyZWFzZSBvZiA0OCBvbiB0aGF0IHByZXZpb3VzbHkgcmVwb3J0ZWQuIER1cmluZyB0aGUgY2FtcGFpZ24sIGJ1c2luZXNzZXMgcmVjZWl2ZWQgaW4gdG90YWwgb3ZlciAyLDgwMCBvdXRib3VuZCBjbGlja3MgZnJvbSB0aGUgY2FtcGFpZ24gd2Vic2l0ZSwgc29tZSBvZiB3aGljaCB3ZXJlIGRpcmVjdCBib29raW5ncy4gTG9jYWwgYnVzaW5lc3NlcyB3ZXJlIGFsc28gc3VwcG9ydGVkLCB0aHJvdWdoIHNpZ25wb3N0aW5nLCB0byBncmFudCBmdW5kaW5nIGFuZCBkaWdpdGFsIG1lZGlhIHRyYWluaW5nLCBhbmQgdGhyb3VnaCBleHBvc3VyZSBpbiBmZWF0dXJlcyBpbiBUYXN0ZSBXZXN0IFN1c3NleCBtYWdhemluZS4gQSBmb2xsb3ctdXAgc3VydmV5IHdhcyB1bmRlcnRha2VuIHdpdGggYSBmaWZ0aCBvZiB0aGUgZmVhdHVyZWQgYnVzaW5lc3NlcyB0byBnYWluIGZlZWRiYWNrIG9uIHRoZWlyIHZpZXdzIG9mIHRoZSAyMDE2IGNhbXBhaWduLiBUaGUgZmVlZGJhY2sgd2UgcmVjZWl2ZWQgd2FzIHBvc2l0aXZlLCBhbmQga2V5IG1lc3NhZ2VzIGluY2x1ZGVkIHN1cHBvcnQgZm9yIGNvbnRpbnVpbmcgYW5kIGV4cGFuZGluZyB0aGUgY2FtcGFpZ24sIGNyZWF0aW5nIGEgZ3JlYXRlciBudW1iZXIgb2YgcGxhY2UtYmFzZWQgaXRpbmVyYXJpZXMgdG8gaW5zcGlyZSB2aXNpdG9ycywgYW5kIGRldmVsb3BpbmcgZnVydGhlciBsaW5rYWdlcyB3aXRoIGxvY2FsIGF0dHJhY3Rpb25zLiBUaGUgY2FtcGFpZ24gaXMgY29udGludWluZyB0aHJvdWdob3V0IHRoZSBXaW50ZXIsIHRvIHByb21vdGUgV2VzdCBTdXNzZXggYXMgYW4gYXR0cmFjdGl2ZSB2aXNpdG9yIGRlc3RpbmF0aW9uLCB3aXRoIHRoZSBhaW0gdG8gcmVjcnVpdCBhbmQgc3VwcG9ydCBtb3JlIGxvY2FsIGJ1c2luZXNzZXMgaW4gMjAxNy5cXG5cXG4qIFVuZGVyIHRoZSBjdXJyZW50IExFQURFUiBwcm9ncmFtbWUsIENlbnRyYWwgU3Vzc2V4IGFuZCBTdXNzZXggRG93bnMgJiBDb2FzdGFsIFBsYWluIExFQURFUiBMb2NhbCBBY3Rpb24gR3JvdXBzIGhhdmUgYXBwcm92ZWQgYSB0b3RhbCBvZiAxMyBwcm9qZWN0cyB3aXRoIGdyYW50cyB0b3RhbGxpbmcgwqMzODAsNjc0LiBUaGVzZSBhcmUgZm9yZWNhc3QgdG8gY3JlYXRlIDI1IG5ldyBmdWxsIHRpbWUgZXF1aXZhbGVudCBqb2JzIGFuZCA0LDgxNCBhZGRpdGlvbmFsIG92ZXJuaWdodCBzdGF5cyBvdmVyIHRoZSBuZXh0IHRocmVlIHllYXJzLiBUaGUgdG90YWwgbWF0Y2ggZnVuZGluZyBhc3NvY2lhdGVkIHdpdGggTEVBREVSIGdyYW50cyBpcyDCozg1Miw2MTAgd2hpY2ggZXF1YXRlcyB0byBhIHRvdGFsIHByb2plY3QgdmFsdWUgb2YgwqMxLDIzMywyODQuXFxuXFxuKiBUaGUgQnVzaW5lc3MgRmluYW5jZSBQcm9qZWN0IHJlY2VpdmVkIDIwMSBlbnF1aXJpZXMgYW5kIDEwNyBleHByZXNzaW9ucyBvZiBpbnRlcmVzdCBmcm9tIGNvbXBhbmllcyBpbnRlcmVzdGVkIGluIGFwcGx5aW5nIGZvciBhIEJ1c2luZXNzIEdyb3d0aCBHcmFudCAoYWRkaXRpb25hbCAzNiB0byB0aGF0IHByZXZpb3VzbHkgcmVwb3J0ZWQpLiBUaGlzIGNvbnZlcnRlZCB0byAzNiBmdWxsIGFwcGxpY2F0aW9ucyBhbmQgcmVzdWx0ZWQgaW4gMjQgY29tcGFuaWVzIHJlY2VpdmluZyBhbiBhcHByb3ZhbCBmcm9tIHRoZSBHcm93dGggR3JhbnQgcGFuZWxzIGluIDIwMTYvMTcgd2hpY2gsIGlmIGZ1bGx5IHNwZW50LCB3aWxsIHRvdGFsIMKjMSwxMDgsNzcxLlxcblxcbkluIHRoZSBsYXN0IHF1YXJ0ZXIgd2l0aCByZWdhcmQgdG8gdGhlIENyZWF0aXZlL0RpZ2l0YWwgcHJvcG9zaXRpb24gV2lyZWQgU3Vzc2V4IGhhdmUgZGVsaXZlcmVkIHR3byBzZWN0b3IgZW5nYWdlbWVudCBldmVudHMgYXMgcGFydCBvZiB0aGVpciB3b3JrIG9uIHRoZSBCb2dub3IgUmVnaXMgQ3JlYXRpdmUgRGlnaXRhbCBIdWIgcHJvamVjdC4gVGhlIGZpcnN0IHdhcyBoZWxkIGF0IE94Zm9yZOKAmXMgQmFyIGluIEJvZ25vciBSZWdpcyBvbiAxNSBOb3YgYW5kIHdhcyBhdHRlbmRlZCBieSAzMSBjcmVhdGl2ZSBkaWdpdGFsIGJ1c2luZXNzZXMuIFRoZSBldmVudCBpbmNsdWRlZCBhIHByZXNlbnRhdGlvbiBieSBNYXR0IERlc21pZXIgZnJvbSB0aGUgQm91cm5lbW91dGggYW5kIFBvb2xlIGRpZ2l0YWwgY2x1c3RlciBhYm91dCB0aGVpciBleHBlcmllbmNlIG9mIGRldmVsb3BpbmcgdGhlIHNlY3RvciBpbiB0aGF0IGFyZWEsIGFuZCBhIHByZXNlbnRhdGlvbiBvZiB0aGUgcmVzdWx0cyBvZiB0aGUgV2lyZWQgU3Vzc2V4IGNyZWF0aXZlIGRpZ2l0YWwgc2VjdG9yIHN1cnZleS4gV2lyZWQgU3Vzc2V4IGNhcnJpZWQgb3V0IGEgc3VydmV5IG9mIGNyZWF0aXZlIGRpZ2l0YWwgYnVzaW5lc3NlcyBpbiBCb2dub3IgUmVnaXMgdG8gdW5kZXJzdGFuZCB0aGUgZ2VvZ3JhcGhpY2FsIGFuZCBzZWN0b3JhbCByYW5nZSBvZiBidXNpbmVzc2VzIGN1cnJlbnRseSBlbmdhZ2VkIHdpdGggdGhlIHByb2plY3QuIE92ZXIgMTAwIGJ1c2luZXNzZXMgd2VyZSBjb250YWN0ZWQgYW5kIDQ1IHJlc3BvbnNlcyByZWNlaXZlZC4gVGhlIHNlY29uZCBldmVudCB3YXMgaGVsZCBvbiAxMyBEZWMgYXQgVGhlIFBpZXIgaW4gQm9nbm9yIFJlZ2lzIGFuZCAyMSBidXNpbmVzc2VzIGF0dGVuZGVkLiBTcGVha2VycyBpbmNsdWRlZCBNaWtlIEhvbGxleSwgSGVhZCBvZiB0aGUgRGVwYXJ0bWVudCBvZiBDcmVhdGl2ZSBhbmQgRGlnaXRhbCBUZWNobm9sb2d5IGF0IHRoZSBVbml2ZXJzaXR5IG9mIENoaWNoZXN0ZXIsIHdobyBzcG9rZSBhYm91dCB0aGUgVW5pdmVyc2l0eeKAmXMgbmV3IEVuZ2luZWVyaW5nIGFuZCBEaWdpdGFsIFRlY2hub2xvZ3kgUGFyayBkdWUgdG8gb3BlbiBpbiAyMDE4LlxcblxcbkluIGFkZGl0aW9uLCBtb250aGx5IHVwZGF0ZSBlbWFpbHMgYXJlIHNlbnQgdG8gMjI4IGNvbnRhY3RzIG9uIFdpcmVkIFN1c3NleOKAmXMgQm9nbm9yIGh1YiBkYXRhYmFzZS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5UaGUgbnVtYmVycyBvZiBidXNpbmVzc2VzIHN1cHBvcnRlZCB0aHJvdWdoIFdTQ0Mgb3IgV1NDQyBzdXBwb3J0ZWQgaW5pdGlhdGl2ZXMgYXJvdW5kIGJ1c2luZXNzIHN1cHBvcnQ6XFxuXFxuT3ZlciAxMjAgaGVhbHRoIGFuZCBsaWZlIHNjaWVuY2VzIHJlbGF0ZWQgY29tcGFuaWVzIGhhdmUgYmVlbiBzdXBwb3J0ZWQgdGhyb3VnaCB0aGUgSGVhbHRoIGFuZCBMaWZlIFNjaWVuY2VzIGNsdXN0ZXIgbmV0d29yay4gLiBDb21wYW5pZXMgd2l0aGluIHRoZSBjbHVzdGVyIGFyZSByZWd1bGFybHkgdXBkYXRlZCBhYm91dCB0aGUgc2VjdG9yIGluaXRpYXRpdmVzIFdTQ0MgaXMgcHJvZ3Jlc3NpbmcsIHJlZ2lvbmFsIGV2ZW50cywgZnVuZGluZyBvcHBvcnR1bml0aWVzLCBsb2NhbCByZXNlYXJjaCwgYW5kIFNURU0gb3Bwb3J0dW5pdGllcy4gV1NDQyBpcyB3b3JraW5nIGhhcmQgdG8gZ3JvdyB0aGUgY2x1c3RlciBhbmQgZGV2ZWxvcCBhIHByb2dyYW1tZSBvZiBzdXBwb3J0IHdoaWNoIHdpbGwgYWRkIHJlYWwgdmFsdWUgdG8gY29tcGFuaWVzIHdpdGhpbiB0aGUgcmVnaW9uLiBUaGUgcHJvZ3JhbW1lIG9mIHN1cHBvcnQgd2lsbCBiZWdpbiBmdWxseSBpbiBOb3ZlbWJlciBhbmQgZGV0YWlsIGZyb20gdGhlbSByZXBvcnRlZCBhdCB0aGUgZW5kIG9mIHRoZSBuZXh0IHF1YXJ0ZXIuXFxuXFxuT24gdGhlQ3JlYXRpdmUvRGlnaXRhbCBwcm9wb3NpdGlvbiBXaXJlZCBTdXNzZXggaGVsZCBhbiBlbmdhZ2VtZW50IGV2ZW50IGZvciB0aGUgc2VjdG9yIGluIFNlcHRlbWJlciBhcyBwYXJ0IG9mIHRoZWlyIHNlY3RvciBkZXZlbG9wbWVudCBjb250cmFjdC4gMjAgYnVzaW5lc3NlcyBhdHRlbmRlZC4gQnJhbmRpbmcgaWRlYXMgZm9yIHRoZSBodWIgYXMgd2VsbCBhcyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGludGVybmFsIHBsYW5zd2VyZSBwcmVzZW50ZWQgYnkgSGVtbWluZ3dheSBEZXNpZ24gYWxvbmcgd2l0aCBhIHJlc3VtZSBvZiB3b3JrIHVuZGVydGFrZW4gdG8gZGF0ZSwgYW5kIGRpc2N1c3Npb25zIG92ZXIgdGhlIG5leHQgc3RlcHMuIFRoZXJlIHdhcyBuZXR3b3JraW5nIG9wcG9ydHVuaXRpZXMgZm9yIHRob3NlIGJ1c2luZXNzZXMgYXR0ZW5kaW5nIGFuZCBkaXNjdXNzaW9ucyBvdmVyIHRoZSBwbGFucyBmb3IgZW5jb3VyYWdpbmcgZ3Jvd3RoIGluIHRoaXMgc2VjdG9yLlxcblxcbk91ciB0d28gTEVBREVSIExvY2FsIEFjdG9uIEdyb3VwcyAoTEFHcykgaGF2ZSBzbyBmYXIgYXBwcm92ZWQgZ3JhbnRzIHRvdGFsbGluZyDCozMzNyw5MzEgZm9yIDExIHByb2plY3RzIHdoaWNoIGFyZSBmb3JlY2FzdCB0byBjcmVhdGUgMjMgbmV3IEZURSBqb2JzLiBBdCBsZWFzdCAxMSBidXNpbmVzc2VzIGluIHRvdGFsIHdpbGwgYmVuZWZpdC4gSG93ZXZlciB0aGUgTEFHcyBleHRlbmQgdG8gYXJlYXMgb3V0c2lkZSBvZiBXZXN0IFN1c3NleCwgV2l0aGluIFdlc3QgU3Vzc2V4IHRoZXJlIGFyZSA3IHByb2plY3RzIHdoaWNoIGhhdmUgYmVlbiBhcHByb3ZlZCwgZm9yZWNhc3QgdG8gY3JlYXRlIDE3LjcgRlRFIGpvYnMgYW5kIHRvdGFsbGluZyDCozI0NiwwNjMuIFRoZSBwcm9qZWN0cyBpbiBXZXN0IFN1c3NleCBhcmUgbGlzdGVkIGJlbG93LCBvbmx5IHRoZSBmaXJzdCBvbmUgbGlzdGVkIGhhcyBiZWVuIGNvbXBsZXRlZCBhbmQgdGhlIG90aGVycyBhcmUgaW4gcHJlcGFyYXRpb246XFxuXFxuKiBMdXh1cnkgbG9kZ2VzIG9uIGEgdmluZXlhcmQgdG8gcHJvbW90ZSB3aW5lIHRvdXJpc21cXG5cXG4qIEZhcm0gYnVua2hvdXNlIHN0eWxlIGFjY29tbW9kYXRpb24gbmVhciB0aGUgU291dGggRG93bnMgV2F5IGZvciBjeWNsaXN0cyBhbmQgd2Fsa2Vyc1xcblxcbiogTmV3IGVxdWlwbWVudCBmb3IgYSBmb29kIHByb2Nlc3NpbmcgY29tcGFueSBpbmNsdWRpbmcgY29tbWVyY2lhbGlzYXRpb24gb2YgYSBuZXcg4oCcY2xlYW7igJ0gdGVjaG5vbG9neSBmb3Igc21va2luZyBpbmdyZWRpZW50c1xcblxcbiogTW9kZXJuIGRpZ2l0YWwgZXF1aXBtZW50IGZvciBhIGxvY2FsIGxhYmVsIHByaW50aW5nIGJ1c2luZXNzXFxuXFxuKiBGb3Jlc3RyeSBoYXJ2ZXN0ZXIgaGVhZCBmb3IgYSBmYXJtIGJhc2VkIGJpb21hc3MgYnVzaW5lc3NcXG5cXG4qIFN0cmF3IHNocmVkZGluZyBhbmQgcGVsbGV0aW5nIGVxdWlwbWVudCBmb3IgYSBkaXZlcnNpZmllZCBmYXJtIGJ1c2luZXNzIHByb2R1Y2luZyBhbmltYWwgYmVkZGluZyBhbmQgYmlvbWFzcyBmb3Igd29vZC1idXJuaW5nIGJvaWxlcnNcXG5cXG4qIE5ldyBzaWduYWdlIGFuZCB3ZWJzaXRlIHByb21vdGluZyBhY2Nlc3NpYmxlIHdhbGtzIGFyb3VuZCBCcmFtYmVyXFxuXCJ9LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiV2l0aCByZWdhcmQgdG8gdGhlIEJ1c2luZXNzIEZpbmFuY2UgUHJvamVjdCAxNzUgYnVzaW5lc3NlcyBoYXZlIGJlZW4gaW4gZGlzY3Vzc2lvbiBvdmVyIHByb3Bvc2VkIHByb2plY3RzLCBhbmQgc28gZmFyIDYgaGF2ZSBkZWNsYXJlZCB0aGV5IGludGVudCB0byBzdWJtaXQgYW4gRXhwcmVzc2lvbiBvZiBJbnRlcmVzdCAoRU9JKS4gVGhlIHRhYmxlIG9uIHRoZSByaWdodCBzaG93cyB0aGUgbGF0ZXN0IHBvc2l0aW9uIGZvciB0aGUgcHJvamVjdCBpbiB0ZXJtcyBvZiBhcHBsaWNhdGlvbnMgc28gZmFyLlxcblxcblwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzk1NkE3QjZCLUIzOEMtNDhGRS04QjdBLUZDOTk5NUM2ODkwQVwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJGb2xsb3dpbmcgaGlzIGFubm91bmNlbWVudCBpbiBBdWd1c3QsIG9uIHRoZSBmdXR1cmUgb2YgRVUgZnVuZGluZyBpbiB0aGUgY29udGV4dCBvZiBCcmV4aXQgYW5kIHdoaWNoIGd1YXJhbnRlZWQgZnVuZHMgZm9yIHByb2plY3RzIHNpZ25lZCB1cCB1bnRpbCB0aGUgQXV0dW1uIFN0YXRlbWVudCAoTm92ZW1iZXIgMjAxNiksIHRoZSBDaGFuY2VsbG9yIGhhcyBub3cgZXh0ZW5kZWQgdGhpcyBndWFyYW50ZWUgdG8gdGhlIHBvaW50IGF0IHdoaWNoIHRoZSBVSyBkZXBhcnRzIHRoZSBFVS4gVGhlIENoYW5jZWxsb3IgY29uZmlybWVkIHRoYXQgdGhlIGdvdmVybm1lbnQgd2lsbCBndWFyYW50ZWUgRVUgZnVuZGluZyBmb3Igc3RydWN0dXJhbCBhbmQgaW52ZXN0bWVudCBmdW5kIHByb2plY3RzLCBpbmNsdWRpbmcgYWdyaS1lbnZpcm9ubWVudCBzY2hlbWVzLCBzaWduZWQgYWZ0ZXIgdGhlIEF1dHVtbiBTdGF0ZW1lbnQgYW5kIHdoaWNoY29udGludWUgYWZ0ZXIgd2UgaGF2ZSBsZWZ0IHRoZSBFVS5cXG5cXG5IZSB3YXMgY2xlYXIsIHdoaWxlIHRoZSBVSyBpcyBzdGlsbCBhIG1lbWJlciBvZiB0aGUgRVUsIEJyaXRpc2ggYnVzaW5lc3NlcywgZmFybWVycyBhbmQgb3RoZXIgb3JnYW5pc2F0aW9ucyBtdXN0IGJlIGVudGl0bGVkIHRvIGFwcGx5IGZvciBFVWZ1bmRzLiBGdW5kaW5nIGZvciBwcm9qZWN0cyB3aWxsIGJlIGhvbm91cmVkIGJ5IHRoZSBnb3Zlcm5tZW50LCBpZiB0aGV5IG1lZXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxcblxcbiogdGhleSBhcmUgZ29vZCB2YWx1ZSBmb3IgbW9uZXlcXG5cXG4qIHRoZXkgYXJlIGluIGxpbmUgd2l0aCBkb21lc3RpYyBzdHJhdGVnaWMgcHJpb3JpdGllc1xcblxcbkFzIGEgcmVzdWx0LCBCcml0aXNoIGJ1c2luZXNzZXMsIGZhcm1lcnMgYW5kIG90aGVyIG9yZ2FuaXNhdGlvbnMgd2lsbCBoYXZlIGFkZGl0aW9uYWwgY2VydGFpbnR5IG92ZXIgZnV0dXJlIGZ1bmRpbmcgYW5kIHNob3VsZCBjb250aW51ZSB0byBhcHBseSBmb3IgRVUgZnVuZGluZyB3aGlsZSB0aGUgVUsgcmVtYWlucyBhIG1lbWJlciBvZiB0aGUgRVUuXFxuXFxuVGhlIGFubm91bmNlbWVudCBtYWRlIG9uIDMgT2N0b2JlciAyMDE2IGJ1aWxkcyBvbiB0aGUgYXNzdXJhbmNlcyBnaXZlbmJ5IHRoZSBDaGFuY2VsbG9yIGluIEF1Z3VzdCB3aGljaCBhbHNvIGluY2x1ZGVkOlxcblxcbiogYWxsIHN0cnVjdHVyYWwgYW5kIGludmVzdG1lbnQgZnVuZCBwcm9qZWN0cywgaW5jbHVkaW5nIGFncmktZW52aXJvbm1lbnQgc2NoZW1lcywgc2lnbmVkIGJlZm9yZSB0aGUgQXV0dW1uIFN0YXRlbWVudCB3aWxsIGJlIGZ1bGx5IGZ1bmRlZCwgZXZlbiB3aGVuIHRoZXNlIHByb2plY3RzIGNvbnRpbnVlIGJleW9uZCB0aGUgVUvigJlzIGRlcGFydHVyZSBmcm9tIHRoZSBFVVxcblxcbiogYWxsIGRpcmVjdCBjb21wZXRpdGl2ZWx5IGJpZCBwcm9qZWN0cyBkaXJlY3RseSB3aXRoIHRoZSBFdXJvcGVhbiBDb21taXNzaW9uLCBmb3IgZXhhbXBsZSB1bml2ZXJzaXRpZXMgcGFydGljaXBhdGluZyBpbiBIb3Jpem9uIDIwMjBcXG5cXG4qIHRoZSBjdXJyZW50IGxldmVsIG9mIGFncmljdWx0dXJhbCBmdW5kaW5nIHVuZGVyIENBUCBwaWxsYXIgMSB3aWxsIGJlIHVwaGVsZCB1bnRpbCAyMDIwIGFzIHBhcnQgb2YgdGhlIHRyYW5zaXRpb24gdG8gbmV3IGRvbWVzdGljIGFycmFuZ2VtZW50c1xcblxcbltodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9uZXdzL2Z1cnRoZXItY2VydGFpbnR5LW9uLWV1LWZ1bmRpbmctZm9yLWh1bmRyZWRzLW9mLWJyaXRpc2gtcHJvamVjdHNdWzBdXFxuXFxuWzBdOiBodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9uZXdzL2Z1cnRoZXItY2VydGFpbnR5LW9uLWV1LWZ1bmRpbmctZm9yLWh1bmRyZWRzLW9mLWJyaXRpc2gtcHJvamVjdHNcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDEgLSBKdW5lIDIwMTYqKlxcblxcbl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19cXG5cXG5UaGUgbnVtYmVycyBvZiBidXNpbmVzc2VzIHN1cHBvcnRlZCB0aHJvdWdoIFdTQ0Mgb3IgV1NDQyBzdXBwb3J0ZWQgaW5pdGlhdGl2ZXMgYXJvdW5kIGJ1c2luZXNzIHN1cHBvcnQ6XFxuXFxuVGhlIHVwc2hvdCBpcyB0aGF0IHRoZXJlIGFyZSBhcm91bmQgOTAgYnVzaW5lc3NlcyBzdXBwb3J0ZWQgdGhyb3VnaCB0aGUgSGVhbHRoIGFuZCBMaWZlIHNjaWVuY2VzIGNsdXN0ZXIgbmV0d29yaywgMTEgY29tcGFuaWVzIGhhdmUgcGFydGljaXBhdGVkIG9yIGFyZSBjb21taXR0ZWQgdG8gcGFydGljaXBhdGluZyBpbiBTVEVNIGluaXRpYXRpdmVzIHRoYXQgV1NDQyBoYXZlIHBhcnQgZnVuZGVkLiBJdCBpcyB0aGUgaW50ZW50aW9uIHRvIGhvbGQgYSBzZWNvbmQgY2x1c3RlciBldmVudCBpbiBOb3ZlbWJlci5cXG5cXG5PbiB0aGUgQ3JlYXRpdmUvRGlnaXRhbCBwcm9wb3NpdGlvbiBhIG5ldHdvcmtpbmcgZXZlbnQgd2FzIGhlbGQgYXQgdGhlIFdhdmVybGV5IEhvdGVsIGluIEJvZ25vciBSZWdpcyBpbiBBcHJpbCwgMjAgYnVzaW5lc3NlcyBhdHRlbmRlZC4gVGhlIHBsYW5zIGZvciB0aGUgbmV3IGh1YiBhbmQgaXRzIGxpbmtzIHRvIHRoZSBVbml2ZXJzaXR54oCZcyBuZXcgRW5naW5lZXJpbmcgYW5kIERpZ2l0YWwgVGVjaG5vbG9neSBQYXJrIHdlcmUgZGlzY3Vzc2VkIGFuZCBidXNpbmVzc2VzIGFuZCBvdGhlciBzdGFrZWhvbGRlcnMgd2VyZSBhYmxlIHRvIGZlZWQgYmFjayB0aGVpciB0aG91Z2h0cyBvbiB0aGUgcGxhbnMgYW5kIGhvdyB0aGUgaHViIGNvdWxkIHN1cHBvcnQgdGhlbTsgYW5kIHRoZXkgd2VyZSBhYmxlIHRvIG5ldHdvcmsgdG9nZXRoZXIgYXMgcGFydCBvZiB0aGUgc2VjdG9yIGRldmVsb3BtZW50IHdvcmsgdGhhdCBjb21wbGVtZW50cyB0aGUgZXN0YWJsaXNobWVudCBvZiB0aGUgaHViLlxcblxcblNvIGZhciA4IGJ1c2luZXNzZXMgaGF2ZSBiZWVuIHN1cHBvcnRlZCB0byBzdWJtaXQgRU9JcyB0byB0aGUgQnVzaW5lc3NlcyBGaW5hbmNlIHByb2dyYW1tZS5cXG5cXG5UaGUgdHdvIExFQURFUiBMb2NhbCBBY3Rpb24gR3JvdXBzIGhhdmUgYXBwcm92ZWQgNiBwcm9qZWN0IHN1Ym1pc3Npb25zIGZyb20gYnVzaW5lc3Nlcy4gVGhlIHRvdGFsIGdyYW50IGNvbW1pdHRlZCB0byBkYXRlIGlzIMKjMTg4LDc1MC5cXG5cXG5UaGUgbmV4dCB1cGRhdGUgaXMgZHVlIGluIE9jdG9iZXIgZm9yIHRoZSBxdWFydGVyIHRvIFNwZXRlbWJlciAyMDE2LlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyAtIERlY2VtYmVyIDIwMTUqKlxcblxcbi0gLSAtXFxuXFxuVGhpcyBjb21tZW50YXJ5IHJlcG9ydHMgb24gRWNvbm9taWMgRGV2ZWxvcG1lbnQgaW5pdGlhdGl2ZXMgYW5kIGFjdGl2aXRpZXMgdGhhdCBzdXBwb3J0IGJ1c2luZXNzZXMuXFxuXFxuKipCZXR0ZXIgQm9nbm9yIFJlZ2lzIEJvbGQgSWRlYSAoRGlnaXRhbCBhbmQgY3JlYXRpdmUgY2x1c3RlcikqKlxcblxcblRoaXMgcHJvamVjdCBpcyBvbmUgb2YgdGhlIGZpdmUgJ0JvbGQgSWRlYXMnIGRldmVsb3BlZCB0byBoZWxwIHRhY2tsZSBXZXN0IFN1c3NleOKAmXMgZWNvbm9taWMgY2hhbGxlbmdlcyBhbmQgZW5jb3VyYWdlIGVjb25vbWljIGFjdGl2aXR5IG92ZXIgdGhlIHNob3J0IHRvIG1lZGl1bSB0ZXJtLiBEcmF3aW5nIG9uIGV4YW1wbGVzIGZyb20gb3RoZXIgcGxhY2VzIGluIHRoZSBVSyBhbmQgaW50ZXJuYXRpb25hbGx5LCB0aGUgY291bnR5IHdvdWxkIGxpa2UgdG8gZXN0YWJsaXNoIEJvZ25vciBSZWdpcyBhcyBhbiBhcnRpc3RpYy9jcmVhdGl2ZSBjZW50cmUsIGEgcGxhY2Ugd2hlcmUgeW91bmcgY3JlYXRpdmUgcGVvcGxlIGZyb20gdGhlIGxvY2FsIGFyZWEgdGhyaXZlLCBhbmQgYXR0cmFjdHMgb3RoZXJzIGZyb20gc3Vycm91bmRpbmcgYXJlYXMgaW5jbHVkaW5nIExvbmRvbiB0byByZWxvY2F0ZS4gVGhlIGZvY3VzIHdpbGwgYmUgdG8gY3JlYXRlIGEgc2hhcmVkIHdvcmtzcGFjZSBhdCBCb2dub3IgUmVnaXMgcmFpbHdheSBzdGF0aW9uIHdoZXJlIHNtYWxsIGJ1c2luZXNzZXMgY2FuIHdvcmsgaW4gYSBjcmVhdGl2ZSBhbmQgc3VwcG9ydGl2ZSBlbnZpcm9ubWVudCwgbmV0d29yaywgc29jaWFsaXNlLCBkaXNwbGF5IHdvcmssIHNoYXJlIGZhY2lsaXRpZXMgZXRjLiBJdCBpcyB0byBiZSB1bmRlcnRha2luZyBpbiBwYXJ0bmVyc2hpcCB3aXRoIG90aGVycyBpbmNsdWRpbmcgQ2hpY2hlc3RlciBVbml2ZXJzaXR5LCBhbmQgaXQgaW50ZW5kZWQgdGhhdCB0aGUgbmV3IGZhY2lsaXRpZXMgd291bGQgcHJvdmlkZSBhbiBlbnZpcm9ubWVudCBmb3IgZ3JhZHVhdGVzIGZyb20gdGhlIFVuaXZlcnNpdHkgdG8gZGV2ZWxvcCBuZXcgYnVzaW5lc3NlczsgYW5kIHRoZSBVbml2ZXJzaXR5IHdvdWxkIHByb3ZpZGUgYSBzb3VyY2Ugb2Ygc2tpbGxzIGZvciB0aGlzIGdyb3dpbmcgc2VjdG9yIGluIEJvZ25vciBSZWdpcyBhbmQgV2VzdCBTdXNzZXguXFxuXFxuVGhlIGZpcnN0IGJ1c2luZXNzIGV2ZW50IGFyb3VuZCB0aGlzIHByb3Bvc2l0aW9uIHdhcyBoZWxkIGluIE5vdmVtYmVyIDIwMTUgaW4gQm9nbm9yIFJlZ2lzLiBUaGUgYWltIG9mIHRoZSBldmVudCB3YXMgdG8gc2hhcmUgdGhlIGVtZXJnaW5nIHBsYW5zIGZvciBhIGRpZ2l0YWwgYW5kIGNyZWF0aXZlIGh1YiB3aXRoIHBhcnRuZXJzLCBwb3RlbnRpYWwgc3Rha2Vob2xkZXJzIGFuZCBhIHNtYWxsIG51bWJlciBvZiBsb2NhbCBjcmVhdGl2ZSBhbmQgZGlnaXRhbCBidXNpbmVzc2VzLCB0byBpbnZpdGUgZmVlZGJhY2ssIHRvIGV4YW1pbmUgdGhlIHBvdGVudGlhbCBzcGFjZSBmb3IgdGhlIGh1YiBhdCBCb2dub3IgUmVnaXMgUmFpbHdheSBTdGF0aW9uIGFuZCB0byBleGFtaW5lIGhvdyB0aGUgaWRlYSBzaG91bGQgYmUgcHJvZ3Jlc3NlZC5cXG5cXG44IGJ1c2luZXNzZXMgYXR0ZW5kZWQgdGhpcyBldmVudC4gVGhlIG5leHQgZXZlbnQgaXMgYmVpbmcgb3JnYW5pc2VkIGluIEphbnVhcnkgd2hpY2ggd2lsbCBpbmNsdWRlIGEgYmlnZ2VyIGF0dGVuZGFuY2UgZnJvbSBidXNpbmVzc2VzLCBhbmQgd2lsbCBiZSBmZWVkYmFjayBpbiB0aGUgbmV4dCBxdWFydGVyLlxcblxcbioqQmVhdXRpZnVsIE91dGRvb3JzL1dlc3QgU3Vzc2V4IFdlZWtlbmRzKipcXG5cXG5Gb2xsb3dpbmcgb24gZnJvbSB0aGUgQmVhdXRpZnVsIE91dGRvb3JzL1dlc3QgU3Vzc2V4IFdlZWtlbmRzIGNhbXBhaWduIHRoYXQgd2FzIGxhdW5jaGVkIGluIFN1bW1lciDigJkxNSB0aGVyZSB3YXMgYSBmb2xsb3cgdXAgc3VydmV5IG9mIGFyb3VuZCBhIHRoaXJkIG9mIHRoZSBidXNpbmVzc2VzIHRoYXQgd2VyZSBpbnZvbHZlZCB0byBhc2NlcnRhaW4gdGhlIGJlbmVmaXRzIHRoZXkgaGFkIHNlZW4gYW5kIHRvIGdldCB0aGVpciB2aWV3IG9uIHRoZSBwcm9tb3Rpb24gb2YgV2VzdCBTdXNzZXggYXMgYSB2aXNpdG9yIGRlc3RpbmF0aW9uLiBDZXJ0YWlubHkgdGhlIGZlZWRiYWNrIGZyb20gdGhlbSB3YXMgdmVyeSBwb3NpdGl2ZSwgYWxsIG9mIHRoZW0gcmVwb3J0ZWQgdGhhdCB0aGV5IHdhbnRlZCB0aGUgY2FtcGFpZ24gdG8gY29udGludWUsIG1hbnkgZXhwZWN0IHRoZSB3YWxraW5nL2N5Y2xpbmcgbWFya2V0IHRvIGluY3JlYXNlIGZvciB0aGVpciBidXNpbmVzcyBhbmQgc29tZSBoYWQgdW5kZXJ0YWtlbiBpbXByb3ZlbWVudHMgdG8gbWFrZSB0aGVtc2VsdmVzIG1vcmUgY3ljbGluZy93YWxraW5nIGZyaWVuZGx5IGkuZS4gaW50cm9kdWN0aW9uIG9mIHNlY3VyZSBjeWNsZSBzdG9yYWdlLlxcblxcbkdpdmVuIHRoZSB3aW50ZXIgbHVsbCBXZXN0IFN1c3NleCBXZWVrZW5kcyBpcyBjb25jZW50cmF0aW5nIG9uIHByb21vdGluZyBhIHNlcmllcyBvZiB3YWxrcyBpbiB0aGUgQ291bnR5LCB0aGlzIGlzIGluIHBhcnRuZXJzaGlwIHdpdGggaUZvb3RwYXRoLCBhIG5hdGlvbmFsIHdlYnNpdGUgYW5kIGFwcCB0byBlbmNvdXJhZ2UgcGVvcGxlIHRvIGdldCBvdXQgYW5kIGVuam95IHdhbGtzIGFjcm9zcyB0aGUgVUsuIFRoZXJlIGFyZSAxMCB3YWxrcyBpbmNsdWRlZCBpbiBXZXN0IFN1c3NleCwgZGV0YWlsZWQgbWFwcyBhbmQgYSBkZXNjcmlwdGlvbiBvZiB0aGUgd2FsayBpcyBpbmNsdWRlZCBhbmQgbG9jYWwgYnVzaW5lc3NlcyB0aGF0IGEgd2Fsa2VyIGNvdWxkIHN0b3Agb2ZmIGF0IGZvciByZWZyZXNobWVudCBhcmUgbWVudGlvbmVkLlxcblxcbltodHRwOi8vd3d3Lndlc3Qtc3Vzc2V4LXdlZWtlbmRzLmNvbS93aW50ZXItd2Fsa3NdWzBdXFxuXFxuVGhlcmUgYXJlIG5vdyBhcm91bmQgNzAgbG9jYWwgYnVzaW5lc3NlcyBvbiB0aGUgV2VzdCBTdXNzZXggV2Vla2VuZHMgd2Vic2l0ZSwgcHJvbW90aW5nIHRoZW0gYXMgcGxhY2VzIHRvIHN0b3Agb2ZmIGFuZC9vciBzdGF5IGZvciB2aXNpdG9ycyB0byBXZXN0IFN1c3NleCwgdGhpcyBpcyAxMCBtb3JlIHRoYW4gcHJldmlvdXNseSByZXBvcnRlZCBhbmQgdGhlbiBhcmUgcGxhbnMgdG8gcmVjcnVpdCBldmVuIG1vcmUgbG9jYWwgYnVzaW5lc3NlcyB0byBvdXIgY2FtcGFpZ24gYW5kIGhlbHAgdG8gc3VwcG9ydCB0aGVtIHRvIGJlY29tZSBldmVuIG1vcmUgYXR0cmFjdGl2ZSB0byB2aXNpdG9ycyB0byBXZXN0IFN1c3NleCB0aHJvdWdoIG91ciAyMDE2IGNhbXBhaWduLlxcblxcbioqSGVhbHRoICYgTGlmZSBTY2llbmNlcyoqXFxuXFxuVGhlIEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlcyBDbHVzdGVyIGhhcyBub3cgaWRlbnRpZmllZCBvdmVyIDkwIGNvbXBhbmllcyBhbmQgd29yayBoYXMgYmVlbiB1bmRlcnRha2VuIGFuZCBpcyBvbi1nb2luZyB0byBlbmdhZ2UgdGhlIG5ldyBjb21wYW5pZXMgdG8gdGhlIHdvcmsgdG8gZGF0ZS4gQW4gdXBkYXRlZCBjbHVzdGVyIGRpcmVjdG9yeSBpcyBzaG9ydGx5IHRvIGJlIHJlbGVhc2VkIHRvIGluY2x1ZGUgYWxsIDkwIGNvbXBhbmllcyAoaW5jcmVhc2Ugb2YgYXJvdW5kIDI2IGZyb20gdGhlIHByZXZpb3VzIHZlcnNpb24pLiBUaGUgY2x1c3RlciBoYXMgYW4gb24tbGluZSBwcmVzZW5jZSBpbiB0aGUgZm9ybSBvZiBhIHdlYnNpdGUsIHR3aXR0ZXIgYW5kIGxpbmtlZC1pbiBncm91cCwgaW4gYWRkaXRpb24gdG8gdGhlIDkwIGNvbXBhbmllcyB0aGVyZSBhcmUgb3ZlciAzMDAgaW5kaXZpZHVhbHMgZnJvbSBwcml2YXRlIGJ1c2luZXNzLCBleHRlcm5hbCBzZWN0b3Igb3JnYW5pc2F0aW9ucywgYWNhZGVtaWNzLCBsb2NhbCBnb3Zlcm5tZW50IGFuZCB0aGUgTkhTLiBXU0NDIGFyZSBkZXZlbG9waW5nIHNvbWUgaW5pdGlhdGl2ZXMgKGNvbGxlY3RpdmVseSBrbm93biBhcyB0aGUgR3Jvd3RoIEh1YikgdG8gc3VwcG9ydCBzdGFydC11cHMgYW5kIFNNRXMgaW4gdGhpcyBjbHVzdGVyIHRocm91Z2hvdXQgdGhlIGNvdW50eS4gU3BlY2lmaWMgaW5pdGlhdGl2ZXMgaW5jbHVkZSBwb3RlbnRpYWxseSBjcmVhdGluZyBhIE1lZCBUZWNoIEFjY2VsZXJhdG9yIGluIHRoZSBjb3VudHkgd2hpY2ggd291bGQgcHJvdmlkZSBhbiBpbnRlbnNpdmUgYnVzaW5lc3Mgc3VwcG9ydCBwcm9ncmFtbWUgZm9yIHNtYWxsIGdyb3VwcyBvZiBzdGFydC0gdXBzOyBhbmQgZGV2ZWxvcG1lbnQgb2YgcHJhY3RpY2FsIG1lYXN1cmVzIGUuZy4gcm91bmQtdGFibGUgZGlzY3Vzc2lvbnMgYW5kIGltcHJvdmVkIHNpZ24gcG9zdGluZyB0byBoZWxwIGFsbGV2aWF0ZSBzb21lIG9mIHRoZSByZWd1bGF0b3J5IGNoYWxsZW5nZXMgdGhhdCB0aGUgY29tcGFuaWVzIGZhY2UuXFxuXFxuW2h0dHA6Ly93d3cuYnVzaW5lc3N3ZXN0c3Vzc2V4LmNvLnVrLzI1Mi13c2hsc2MuaHRtbF1bMV1cXG5cXG5JbiBhZGRpdGlvbiB0aGVyZSBpcyB3b3JrIGJlaW5nIHVuZGVydGFrZW4gdG8gYWRkcmVzcyB0aGUgc2tpbGxzIGdhcHMgaW4gdGhpcyBhcmVhIGFuZCBidXNpbmVzc2VzIGluIHRoZSBjbHVzdGVyIGhhdmUgYmVlbiBpbnZpdGVkIHRvIHBhcnRpY2lwYXRlIGluIENvYXN0YWwgU1RFTSBmZXN0IDIwMTYsIGFuZCBhIG51bWJlciBvZiBidXNpbmVzc2VzIGF0dGVuZGVkIHRoZSBwcmVsaW1pbmFyeSBtZWV0aW5nIGluIE5vdmVtYmVyIHRvIHBsYW4gZm9yIHRoaXMuXFxuXFxuQ29tcGFuaWVzIGluIHRoaXMgc2VjdG9yIGhhdmUgcmVwb3J0ZWQgdGhhdCB0aGV5IGRvIG5vdCBoYXZlIGxpbmtzIHdpdGggbG9jYWwgdW5pdmVyc2l0aWVzLCBhbmQgaW5kZWVkIHRoYXQgdW5pdmVyc2l0aWVzIHdlcmUg4oCYaW52aXNpYmxl4oCZIHRvIHRoZW0uIEluIHJlc3BvbnNlIHRvIHRoaXMgdGhlcmUgd29yayBpcyB1bmRlcndheSB0byBpbXByb3ZlIHRoZSBsaW5rIGJldHdlZW4gY29tcGFuaWVzIGluIHRoZSBoZWFsdGggYW5kIGxpZmUgc2NpZW5jZXMgY2x1c3RlciBhbmQgbG9jYWwgdW5pdmVyc2l0aWVzOyBpbiBwYXJ0aWN1bGFyIGEg4oCYVW5pdmVyc2l0eSBvZiBTdXNzZXggT2ZmZXLigJkgaXMgYmVpbmcgZGV2ZWxvcGVkIHdoaWNoIHdpbGwgaGlnaGxpZ2h0IGFsbCBvZiB0aGUgb3Bwb3J0dW5pdGllcyBmb3IgYnVzaW5lc3NlcyBpbiB0aGUgaGVhbHRoIGFuZCBsaWZlIHNjaWVuY2VzIGNsdXN0ZXIgdG8gY29sbGFib3JhdGUgd2l0aCBTdXNzZXggVW5pdmVyc2l0eS4gRXZlbnRzIGFyZSBiZWluZyBwbGFubmVkIGZvciBNYXJjaCB3aGljaCB3aWxsIGdpdmUgYW4gb3Bwb3J0dW5pdHkgZm9yIGxvY2FsIGNvbXBhbmllcyB0byB2aXNpdCBTdXNzZXggVW5pdmVyc2l0eSwgdG8gbG9vayBhdCB0aGUgZmFjaWxpdGllcyBvbiBvZmZlciBhbmQgdG8gZW5nYWdlIHdpdGggYSByYW5nZSBvZiBhY2FkZW1pY3MgZnJvbSBhY3Jvc3MgdGhlIHVuaXZlcnNpdHkuIFRoZSBpbnRlbnRpb24gZm9sbG93aW5nIHRoaXMgaXMgdG8gY3JlYXRlIGEgc2ltaWxhciBvZmZlciB3aXRoIG90aGVyIGxvY2FsIHVuaXZlcnNpdGllcy5cXG5cXG4qKkxFQURFUioqXFxuXFxuVGhlIExFQURFUiBwcm9ncmFtbWUgd2FzIGxhdW5jaGVkIGluIE5vdmVtYmVyIDIwMTU7IGl0IGlzIGEgZ3JhbnQgZnVuZGluZyBwcm9ncmFtbWUgdGhhdCBzdXBwb3J0cyB0aGUgZ3Jvd3RoIGFuZCBkZXZlbG9wbWVudCBvZiBydXJhbCBidXNpbmVzcyBhbmQgaXMgcGFydCBvZiB0aGUgUnVyYWwgRGV2ZWxvcG1lbnQgcHJvZ3JhbW1lIGZvciBFbmdsYW5kIHdoaWNoIGFpbXMgdG8gaW1wcm92ZSB0aGUgY29tcGV0aXRpdmVuZXNzIG9mIGZhcm1pbmcgYW5kIGZvcmVzdHJ5LCBzdXBwb3J0IGEgZGl2ZXJzZSBhbmQgc3VjY2Vzc2Z1bCBydXJhbCBlY29ub215IGFuZCBoZWxwIHRvIGRldmVsb3AgdmlicmFudCBhbmQgdGhyaXZpbmcgcnVyYWwgY29tbXVuaXRpZXMuIFNvIGZhciB3ZSBoYXZlIHJlY2VpdmVkIDM3IGVucXVpcmllcyBmcm9tIGJ1c2luZXNzZXMgaW4gcmVsYXRpb24gdG8gTEVBREVSIGZ1bmRpbmcgc2luY2UgaXQgaGFzIGJlZW4gbGF1bmNoZWQuXFxuXFxuW2h0dHA6Ly93d3cuYnVzaW5lc3N3ZXN0c3Vzc2V4LmNvLnVrLzI2MC1sZWFkZXItZ3JhbnRzLTIwMTUtMjAuaHRtbF1bMl1cXG5cXG5bMF06IGh0dHA6Ly93d3cud2VzdC1zdXNzZXgtd2Vla2VuZHMuY29tL3dpbnRlci13YWxrc1xcblsxXTogaHR0cDovL3d3dy5idXNpbmVzc3dlc3RzdXNzZXguY28udWsvMjUyLXdzaGxzYy5odG1sXFxuWzJdOiBodHRwOi8vd3d3LmJ1c2luZXNzd2VzdHN1c3NleC5jby51ay8yNjAtbGVhZGVyLWdyYW50cy0yMDE1LTIwLmh0bWxcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNSoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgQmVhdXRpZnVsIE91dGRvb3JzL1dlc3QgU3Vzc2V4IFdlZWtlbmRzIGNhbXBhaWduIHdhcyBsYXVuY2hlZCBpbiBKdW5lIHRvIGFuIGF1ZGllbmNlIG9mIGFyb3VuZCAxMDAgYXR0ZW5kZWVzLCBtYW55IGZyb20gbG9jYWwgYnVzaW5lc3Nlcy4gQSB3ZWJzaXRlIGhhcyBiZWVuIGRldmVsb3BlZCB0byBzaG93Y2FzZSB0aG9zZSBidXNpbmVzc2VzIChhY2NvbW1vZGF0aW9uIHByb3ZpZGVycyBhbmQgZm9vZC9kcmluayBwcm92aWRlcnMpIGluIFdlc3QgU3Vzc2V4IHRoYXQgYXJlIHdlbGNvbWluZyB0byBjeWNsaXN0cyBhbmQgd2Fsa2VycywgYXMgd2VsbCBhcyB0aG9zZSBwcm92aWRpbmcgc2VydmljZXMgdG8gY3ljbGlzdHMgYW5kIHdhbGtlcnMuIFRvIHRoaXMgZWZmZWN0LCB3ZSBoYXZlIDYwIGJ1c2luZXNzZXMgZmVhdHVyZWQgb24gdGhlIHdlYnNpdGUgYW5kIGhhdmUgb24tZ29pbmcgZW5nYWdlbWVudCB3aXRoIHRoZXNlIGJ1c2luZXNzZXMgaW5jbHVkaW5nIG9mZmVyaW5nIGVsaWdpYmxlIGJ1c2luZXNzZXMgZnJlZSBjeWNsZSBzdGFuZHMgdG8gZW5zdXJlIHRoZWlyIGJ1c2luZXNzIGlzIHdlbGNvbWluZyB0byBjeWNsaXN0cyBhbmQgd2Fsa2Vycy5cXG5cXG5UaGUgV2VzdCBTdXNzZXggV2Vla2VuZHMgbG9jYWwgY2FtcGFpZ24gaGFzIHNlZW4gMTEgbG9jYWwgYnVzaW5lc3NlcyBkb25hdGUgcHJpemVzIHRvIG91ciBjb21wZXRpdGlvbiwgdGhlc2UgaGF2ZSB0aGVyZWZvcmUgYmVuZWZpdHRlZCBmcm9tIHByZXNzIGFuZCBwcm9tb3Rpb24gdGhyb3VnaCBjb3Jwb3JhdGUgY2hhbm5lbHMgYW5kIFdlc3QgU3Vzc2V4IHdlZWtlbmRzIHByb21vdGlvbi5cXG5cXG5BdCB0aGUgZW5kIG9mIHRoZSBjYW1wYWlnbiBpbiBPY3RvYmVyIHdlIHdpbGwgYmUgdW5kZXJ0YWtpbmcgYSBmb2xsb3cgdXAgc3VydmV5IHdpdGggdGhlIGJ1c2luZXNzZXMgZmVhdHVyZWQgaW4gdGhlIGNhbXBhaWduIHRvIGFzY2VydGFpbiB3aGF0IGJlbmVmaXQgdGhleSBoYXZlIHNlZW4gdGhyb3VnaCB0aGUgY2FtcGFpZ24gYW5kIHByb21vdGlvbiBvZiBXZXN0IFN1c3NleCBhcyBhIHZpc2l0b3IgZGVzdGluYXRpb24uIFRoZWlyIHJlc3BvbnNlcyB3aWxsIGhlbHAgdXMgc2hhcGUgb3VyIGZvY3VzIGZvciBzdWJzZXF1ZW50IGNhbXBhaWducy5cXG5cXG5XU0NDIGhvc3RlZCB0aGUgZmlyc3QgSGVhbHRoIGFuZCBMaWZlIFNjaWVuY2VzIENsdXN0ZXIgZXZlbnQgd2hpY2ggc2F3IG92ZXIgOTAgcGVvcGxlIGZyb20gbG9jYWwgYnVzaW5lc3NlcyBhdHRlbmQgYW5kIGhlYXIgYWJvdXQgdGhlIHN1cHBvcnQgdGhhdCBXU0NDIGNhbiBvZmZlciBhbmQgZnV0dXJlIGludmVzdG1lbnQgcGxhbnMgdGhlIGNvdW50eSBjb3VuY2lsIGlzIGFpbWluZyB0byBkZXZlbG9wIGZvciB0aGUgY2x1c3RlciBpdHNlbGYuIFRoaXMgd2FzIGZvbGxvd2VkIHVwIHdpdGggcHVsbGluZyB0b2dldGhlciBhIGRpcmVjdG9yeSBvZiBhbGwgdGhlIEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlcyBDbHVzdGVyIGJ1c2luZXNzZXMgaW4gV2VzdCBTdXNzZXggKGluY2x1ZGluZyBidXNpbmVzc2VzIGFuZCBpbmR1c3RyeSBzdXBwb3J0IHNlcnZpY2VzKS4gSXQgZmVhdHVyZXMgNjQgYnVzaW5lc3NlcyB0byBkYXRlLiBUaGUgQ291bnR5IENvdW5jaWwgaXMgY29tbWl0dGVkIHRvIGRldmVsb3BpbmcgYSBzdHJvbmcgY2x1c3RlciB3aXRoIHRoZXNlIGJ1c2luZXNzZXMgYW5kIGFyZSBkZXZlbG9waW5nIHBsYW5zIHRvIGVuZ2FnZSB3aXRoIHRoZW0gZnVydGhlciB0byBzdXBwb3J0IHRoZWlyIG5lZWRzIGFuZCBncm93dGggcHJpb3JpdGllcywgYXMgd2VsbCBhcyBvZmZlcmluZyBzcGVjaWZpYyBvcHBvcnR1bml0aWVzIGZvciBzdXBwb3J0IGFuZCBhZHZpY2UgdGFpbG9yZWQgdG8gdGhlIHNlY3Rvci4gQXMgcGFydCBvZiB0aGlzIGRldGFpbGVkIGNvbnZlcnNhdGlvbnMvbWVldGluZ3MgaGF2ZSB0YWtlbiBwbGFjZSBhY3Jvc3MgdGhlIGxhc3QgZmV3IG1vbnRocyB3aXRoIGEgbnVtYmVyIG9mIHRoZXNlIGxvY2FsIGJ1c2luZXNzZXMgd2hpY2ggaGFzIGhlbHBlZCB0byBzaGFwZSB0aGUgdGhpbmtpbmcgYWJvdXQgZGV2ZWxvcGluZyB0aGUgc2VjdG9yIGZ1cnRoZXIuXFxuXFxuNjkgb3JnYW5pc2F0aW9ucyBhcHBsaWVkIGZvciBidXNpbmVzcyBncmFudCBmdW5kaW5nLCB3aXRoIDIzIGJlaW5nIHNob3J0bGlzdGVkIGZvciB0aGUgcGFuZWwsIGFuZCAxMyBzdWNjZXNzZnVsbHkgc2VsZWN0ZWQuIEZlZWRiYWNrIGFuZCBhZHZpY2Ugd2FzIG9mZmVyZWQgdG8gdGhvc2UgdW5zdWNjZXNzZnVsIG9yZ2FuaXNhdGlvbnMgYW5kIDI3IHRvb2sgdGhpcyB1cC4gOCBmdXJ0aGVyIHByb2plY3RzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdGhlIGdyb3d0aCBncmFudHMgYXMgcGFydCBvZiB0aGUgQnVzaW5lc3MgRmluYW5jZSBQcm9ncmFtbWUsIGZ1bmRlZCBieSB0aGUgTG9jYWwgR3Jvd3RoIEZ1bmQuXFxuXFxuVGhlIEdhdHdpY2sgRGlhbW9uZCBNZWV0IHRoZSBCdXllciBldmVudCB3YXMgaGVsZCBpbiBKdWx5IGF0IHRoZSBBcm9yYSBIb3RlbCwgQ3Jhd2xleSwgZ2l2aW5nIHNtYWxsIGFuZCBtZWRpdW0gc2l6ZWQgZW50ZXJwcmlzZXMgdGhlIG9wcG9ydHVuaXR5IHRvIG1lZXQgYnV5ZXJzIGZyb20gbG9jYWwsIGxhcmdlIHB1YmxpYyBhbmQgcHJpdmF0ZSBvcmdhbmlzYXRpb25zLiBUaHJlZSBpbnRyb2R1Y3Rvcnkgd29ya3Nob3BzIHdlcmUgaGVsZCBhIHJvdW5kIHByb2N1cmVtZW50IGlzc3VlcyB3aGljaCB3ZXJlIGF0dGVuZGVkIGJ5IDU3IFdlc3QgU3Vzc2V4IGJhc2VkIGJ1c2luZXNzZXMuIFRoZSBldmVudCBvcmdhbmlzZXJzIHdpbGwgYmUgcmVwb3J0aW5nIG9uIHRoZSBsZXZlbCBvZiBidXNpbmVzcyB1bmRlcnRha2VuIGF0IHRoZSBldmVudCDigJMgdGhpcyB3aWxsIGJlIGF2YWlsYWJsZSBsYXRlciBpbiBTZXB0ZW1iZXIuXFxuXFxuUHJlcGFyYXRpb24gaXMgY29udGludWluZyBmb3IgdGhlIGxhdW5jaCBvZiB0aGUgTEVBREVSIHByb2dyYW1tZSB3aGljaCBoYXMgYmVlbiBhd2FyZGVkIGZ1bmRpbmcgdG8gc3VwcG9ydCB0aGUgcnVyYWwgZWNvbm9teSDigJMgaXQgaXMgYW50aWNpcGF0ZWQgdGhhdCBMRUFERVIgd2lsbCBvcGVuIGZvciBhcHBsaWNhdGlvbnMgaW4gT2N0b2Jlci5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiTEVBREVSIGdyYW50cyBjYW4gYmUgdXNlZCBmb3IgcHJvamVjdHMgdGhhdCB3aWxsIHN1cHBvcnQ6XFxuXFxuKiBpbmNyZWFzaW5nIGZhcm0gcHJvZHVjdGl2aXR5XFxuXFxuKiBzbWFsbCBidXNpbmVzcyBncm93dGggYW5kIGZhcm0gZGl2ZXJzaWZpY2F0aW9uXFxuXFxuKiBydXJhbCB0b3VyaXNtXFxuXFxuKiBydXJhbCBzZXJ2aWNlc1xcblxcbiogY3VsdHVyYWwgYW5kIGhlcml0YWdlIGFjdGl2aXR5XFxuXFxuKiBpbmNyZWFzaW5nIGZvcmVzdHJ5IHByb2R1Y3Rpdml0eVxcblxcbkZvciBtb3JlIGRldGFpbHMgc2VlOlxcblxcbltodHRwczovL3d3dy53ZXN0c3Vzc2V4Lmdvdi51ay9idXNpbmVzcy1hbmQtY29uc3VtZXJzL3N0YXJ0LW9yLWdyb3cteW91ci1idXNpbmVzcy9ydXJhbC1kZXZlbG9wbWVudC1wcm9ncmFtbWUtbGVhZGVyLWZ1bmRpbmcvXVswXVxcblxcblswXTogaHR0cHM6Ly93d3cud2VzdHN1c3NleC5nb3YudWsvYnVzaW5lc3MtYW5kLWNvbnN1bWVycy9zdGFydC1vci1ncm93LXlvdXItYnVzaW5lc3MvcnVyYWwtZGV2ZWxvcG1lbnQtcHJvZ3JhbW1lLWxlYWRlci1mdW5kaW5nL1wifV0sXCJ1c2VfY3VzdG9tX3RpdGxlXCI6dHJ1ZSxcImN1c3RvbV90aXRsZVwiOlwiU3VwcG9ydGluZyBidXNpbmVzc2VzIGFjcm9zcyBXZXN0IFN1c3NleCB3aXRoIFdTQ0MtbGVkIGFuZCBidXNpbmVzcyBzdXBwb3J0IGluaXRpYXRpdmVzLiAgXCIsXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiQWltIHRvIHN1cHBvcnQgYXQgbGVhc3QgMzAwIGJ1c2luZXNzZXMsIHRocm91Z2ggYSByYW5nZSBvZiBuZXR3b3JraW5nIGluaXRpYXRpdmVzXCJ9In0sInByZXZhaWxpbmdfbWVhc3VyZSI6eyJzdGFydCI6IjIwMTctMDQtMDFUMDA6MDA6MDAuMDAwIiwiZW5kIjoiMjAxOC0wMy0zMVQyMzo1OTo1OS4wMDAiLCJ1bml0IjoiYnVzaW5lc3NlcyBwZXIgeWVhciIsInRhcmdldCI6MzAwLCJ0YXJnZXRfdHlwZSI6ImFic29sdXRlIiwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6Ijk5bTMtZGtneiJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6MyxcInllYXJcIjoyMDE3fSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9LFwiYWN0aW9uX3R5cGVcIjpcImluY3JlYXNlXCJ9LFwiYmFzZWxpbmVcIjp7XCJzcXVpc2h5XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fSxcImVuZFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTR9fSxcInN0YXJ0XCI6XCIyMDE0LTAxLTAxVDAwOjAwOjAwLjAwMFwiLFwiZW5kXCI6XCIyMDE0LTAxLTAxVDIzOjU5OjU5LjAwMFwiLFwibWV0cmljXCI6e1wibWV0YWRhdGFcIjpcIntcXFwid2l6YXJkXFxcIjp7XFxcImZpbHRlcl9hc3RcXFwiOlt7XFxcInZhbHVlc1xcXCI6W3t9XX1dfX1cIn19LFwibmFtZVwiOlwiVGhlIG51bWJlciBvZiBidXNpbmVzc2VzIHN1cHBvcnRlZCBieSBXU0NDIGxlZCBhbmQgc3VwcG9ydGVkIGJ1c2luZXNzIHN1cHBvcnQgaW5pdGlhdGl2ZXNcIixcInlTY2FsZVwiOntcInVzZV9kZWZhdWx0XCI6dHJ1ZX19In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjExOjEyLjczNFoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOToxMToxMi43MzRaIiwidGFyZ2V0X3RvbGVyYW5jZSI6MzAsImlkIjoiZWE4Ny0zZzJiIn0sInJlbGF0ZWRfbWVhc3VyZXMiOltdLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjExOjIyLjY5MFoiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOToxMToxMi43ODFaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MTE6MjIuNjkwWiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoicGphdC13c3NzIiwibmFtZSI6IjE2LTE3eXJzIGluIEVkdWNhdGlvbiwgRW1wbG95bWVudCBvciBUcmFpbmluZyAiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcImljb25cIjpcInRleHRcIixcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKk1hcmNoIDIwMTgqKlxcblxcbi0gLSAtXFxuXFxuVGhlIGxhdGVzdCBmaWd1cmVzIHdlIGhhdmUgd2VyZSB0aG9zZSBmb3IgdGhlIHBvc2l0aW9uIGF0IHRoZSBlbmQgb2YgSmFudWFyeSAyMDE4LCB3aGljaCBzaG93ZWQgdGhlIGZvbGxvd2luZzotXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzhDRTQwMjhELTU4QkMtNEYzRi04RjcxLTJFRDZGMzc5QkYwRVwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkphbnVhcnkgMjAxOCoqXFxuXFxuLSAtIC1cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQzU2OERBMUQtQUJCQS00OTIxLTgxODYtMzM4NzgxMTlDOEE0XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAzIC0gRGVjZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgQXV0aG9yaXR5IGlzIGN1cnJlbnRseSBzdGlsbCBpbiB0aGUgbWlkZGxlIG9mIHRoZSB5ZWFybHkgQW5udWFsIEFjdGl2aXR5IFN1cnZleSB0byBjb25maXJtIHRoZSBhY3R1YWwgZGVzdGluYXRpb25zIG9mIGFsbCB5b3VuZyBwZW9wbGUgb2YgYWNhZGVtaWMgYWdlIDE2IGFuZCAxNy4gVGhpcyB3b3JrIHdpbGwgY29udGludWUgYmV0d2VlbiBTZXB0ZW1iZXIgMjAxNyBhbmQgRmVicnVhcnkgMjAxOCBhbmQgdGhlcmVmb3JlIHRoZSBkYXRhIHdpbGwgbm90IGJlIHJvYnVzdCB1bnRpbCB0aGUgZW5kIG9mIHRoaXMgdHJhY2tpbmcgcGVyaW9kLiBUaGUgbGF0ZXN0IHBlcmZvcm1hbmNlIGRhdGEgYXZhaWxhYmxlIGZyb20gdGhlIERlcGFydG1lbnQgZm9yIEVkdWNhdGlvbiAoRGZFKSBpcyBmb3IgdGhlIG1vbnRoIG9mIE5vdmVtYmVyIDIwMTcgYW5kIHRoaXMgaXMgc2hvd24gaW4gdGhlIHRhYmxlIGJlbG93LlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy85NkJFNkI0Qy1BNjZCLTQ5MzUtODJFRi1DRTdEQUQ4MzdERDFcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiV2VzdCBTdXNzZXggaXMgY3VycmVudGx5IGluIHRoZSBmb3VydGggcXVpbnRpbGUgb2YgQXV0aG9yaXRpZXMgd2l0aGluIHRoZSBTb3V0aCBFYXN0IGZvciBpdHMgcGVyZm9ybWFuY2Ugb24gdGhlIHBlcmNlbnRhZ2Ugb2YgeW91bmcgcGVvcGxlIHdpdGggYW4g4oCYdW5rbm93buKAmWRlc3RpbmF0aW9uLiBIb3dldmVyLCBvbmUgY2FuIHNlZSBmcm9tIHRoZSB0YWJsZSBiZWxvdyB0aGF0IHRoZSBjdXJyZW50IHVua25vd24gZmlndXJlIGlzIG92ZXIgMSUgbG93ZXIgdGhhbiB0aGUgc2FtZSBtb250aCBsYXN0IHllYXIuIFdlc3QgU3Vzc2V4IGlzIG9uIGEgcGFyIHdpdGggdGhlIFNvdXRoIEVhc3QgYW5kIE5hdGlvbmFsIEF2ZXJhZ2UgaW4gdGVybXMgb2YgdGhlIHBlcmNlbnRhZ2Ugb2YgeW91bmcgcGVvcGxlIG1lZXRpbmcgdGhlaXIgRHV0eSB0byBQYXJ0aWNpcGF0ZSAoSW4gTGVhcm5pbmcpIGFuZCBhZ2FpbiwgdGhlcmUgaGFzIGJlZW4gYSBzbGlnaHQgaW1wcm92ZW1lbnQgb24gbGFzdCB5ZWFyc+KAmSBmaWd1cmVzIHNvIGZhciB0aGlzIHllYXIuIFlvdW5nIHBlb3BsZSB3aG8gYXJlIE5FRVQgcmVtYWluIGxvdywgYnV0dCBoaXMgbWF5IGluY3JlYXNlIG9uY2UgbW9yZSB5b3VuZyBwZW9wbGUgYmVjb21lIOKAmGtub3du4oCZIGFzIGNvbnRhY3QgY29udGludWVzIHRvIGJlIGF0dGVtcHRlZC5cXG5cXG4gXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzZDQTJDRjk3LURBMjktNDQ0OS05QzExLTdGRTczNDNFNzBDN1wifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJBdHRlbXB0cyB0byBjb250YWN0IG91ciByZW1haW5pbmcg4oCYdW5rbm93buKAmSB5b3VuZyBwZW9wbGUgY29udGludWUgdG8gYmUgbWFkZSB1c2luZyBhIG1peHR1cmUgb2YgdGhlIFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsIENvbnRhY3QgQ2VudHJlIHN0YWZmLCBJUEVIIEh1YiBzdGFmZixvbmdvaW5nIGNvbW11bmljYXRpb24gd2l0aCBzY2hvb2xzIGFuZCBwb3N0LTE2IHByb3ZpZGVycyBhbmQgbGlhaXNvbiB3aXRoIG5laWdoYm91cmluZyBhdXRob3JpdGllcyBhbmQgdXNpbmcgYW4gb24tbGluZSBzdXJ2ZXkgZm9yIHlvdW5nIHBlb3BsZSBhbmQgcGFyZW50cyB0byBhY2Nlc3MgZGlyZWN0LiBUaGUgbWFqb3JpdHkgb2Ygb3VyIHJlbWFpbmluZyDigJh1bmtub3du4oCZIHlvdW5nIHBlb3BsZSBhcmUgb2YgYWNhZGVtaWMgYWdlIDE3ICh5ZWFyIDEzKSBzbyB3b3JrIGlzIGN1cnJlbnRseSB1bmRlcndheSB0byBzcGVjaWZpY2FsbHkgdGFyZ2V0IGNvbnRhY3RpbmcgdGhpcyBjb2hvcnQuXFxuXFxuIFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoZSBsYXRlc3QgZGF0YSBhdmFpbGFibGUgZnJvbSB0aGUgRGVwYXJ0bWVudCBmb3IgRWR1Y2F0aW9uIChERkUpIGlzIGZvciB0aGUgbW9udGggb2YgQXVndXN0IDIwMTcgYW5kIHRoaXMgaXMgc2hvd24gaW4gdGhlIHRhYmxlIGJlbG93LiBGcm9tIFNlcHRlbWJlciB0aGUgQXV0aG9yaXR5IHdpbGwgYmUgdW5kZXJ0YWtpbmcgdGhlIEFubnVhbCBBY3Rpdml0eSBTdXJ2ZXkgdG8gY29uZmlybSB0aGUgYWN0dWFsIGRlc3RpbmF0aW9ucyBvZiBhbGwgeW91bmcgcGVvcGxlIG9mIGFjYWRlbWljIGFnZSAxNiBhbmQgMTcuIFRoaXMgd29yayB3aWxsIGNvbnRpbnVlIGJldHdlZW4gU2VwdGVtYmVyIDIwMTcgYW5kIEZlYnJ1YXJ5IDIwMTggYW5kIHRoZXJlZm9yZSB0aGUgZGF0YSB3aWxsIG5vdCBiZSByb2J1c3QgdW50aWwgdGhlIGVuZCBvZiB0aGlzIHRyYWNraW5nIHBlcmlvZC5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQTZCNEQ5NDMtQzZFMS00RUY3LTkyQkYtMDc5MEI2ODBDRDIzXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoZSBEZkUgZG8gbm90IG1vbml0b3IgdGhlIHBlcmZvcm1hbmNlIG9mIEF1dGhvcml0aWVzIG92ZXIgdGhlIHN1bW1lciBtb250aHMgZHVlIHRvIHlvdW5nIHBlb3BsZSBmaW5pc2hpbmcgY291cnNlcyBlYXJseSAoaS5lLiBNYXkvSnVuZSkgYW5kIHRoZSBpbXBlbmRpbmcgQW5udWFsIEFjdGl2aXR5IFN1cnZleSB3aGljaCBzdGFydHMgaW4gU2VwdGVtYmVyLiBBcyBzdWNoLCBjb21wYXJpc29uIHdpdGggdGhlIHJlZ2lvbmFsIGFuZCBuYXRpb25hbCBkYXRhIG5lZWRzIHRvIGJlIHRyZWF0ZWQgd2l0aCBzb21lIGNhdXRpb24gZm9yIEF1Z3VzdC4gVGhlIHBlcmNlbnRhZ2Ugb2YgeW91bmcgcGVvcGxlIOKAmEluIExlYXJuaW5n4oCZIGluIFdlc3QgU3Vzc2V4IGlzIGhpZ2hlciBmb3IgQXVndXN0IHRoYW4gdGhlIHJlZ2lvbmFsIGFuZCBuYXRpb25hbCBmaWd1cmVzLiBUaG9zZSBpbiBFRVQgcmVtYWluIHNsaWdodGx5IGxvd2VyIGluIFdlc3QgU3Vzc2V4IGNvbXBhcmVkIHdpdGggdGhlIG5hdGlvbmFsIHBpY3R1cmUsIGFsdGhvdWdoIFdlc3QgU3Vzc2V4IGhhcyBhIGhpZ2hlciBwZXJjZW50YWdlIEVFVCB0aGFuIHRoZSByZWdpb24uIDE2IGFuZCAxNyB5ZWFyIG9sZHMgd2hvIGFyZSBORUVUIGFsc28gcmVtYWluIGxvd2VyIGluIFdlc3QgU3Vzc2V4LiBXaGlsZSB0aGUgcGVyY2VudGFnZSBvZiB5b3VuZyBwZW9wbGUgd2l0aCBhbiB1bmtub3duIEVFVCBzaXR1YXRpb24gcmVtYWlucyBoaWdoIGluIFdlc3QgU3Vzc2V4IGluIGNvbXBhcmlzb24gd2l0aCBvdGhlciBhcmVhcywgdGhlIGdhcCBoYXMgZmFsbGVuIGNvbnNpZGVyYWJseSBmb3IgQXVndXN0LiBIb3dldmVyLCB0aGlzIGlzIG1vc3QgbGlrZWx5IGR1ZSB0byBvdGhlciBhcmVhcyB3YWl0aW5nIHRvIHJlLWNvbmZpcm0gdGhlIGRlc3RpbmF0aW9ucyBvZiB0aGVpciBzY2hvb2wgbGVhdmVycyBhbmQgeWVhciAxMyB5b3VuZyBwZW9wbGUgZnJvbSBTZXB0ZW1iZXIgb253YXJkcy4gQWNvbXBhcmlzb24gb2YgdGhlIGN1cnJlbnQgQXVndXN0IGRhdGEgd2l0aCBBdWd1c3QgMjAxNiwgc2hvd3MgdGhhdCBpbXByb3ZlbWVudHMgaGF2ZSBiZWVuIG1hZGUgYWNyb3NzIHRoZSBib2FyZCB3aXRoIFVua25vd24gZmlndXJlcyAxLjIlIGxvd2VyIHRoaXMgeWVhcjsgSW4gTGVhcm5pbmcgZmlndXJlcyAxLjYlIGhpZ2hlcjsgTkVFVCBmaWd1cmVzIDAuMyUgbG93ZXIgYW5kIHRoZSBwZXJjZW50YWdlIG9mIHRob3NlIGluIGFueSBmb3JtIG9mIEVFVCBiZWluZyAxLjQlIGhpZ2hlci4gQWx0aG91Z2ggd2UgaGF2ZSBmb3VuZCBvdXQgdGhlIEVFVCBkZXRhaWxzIG9mIG1vcmUgeW91bmcgcGVvcGxlIHRoaXMgeWVhciwgb3VyIE5FRVQgZmlndXJlcyBoYXZlIHJlZHVjZWQsIHRoZXJlYnkgc3VnZ2VzdGluZyB0aGF0IG1hbnkgb2Ygb3VyIHVua25vd25zIG1heSB3ZWxsIGJlIHBhcnRpY2lwYXRpbmcgaW4gc29tZSBmb3JtIG9mIEVFVCBhcyBvcHBvc2VkIHRvIGJlaW5nIE5FRVQuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzVDQ0VFRDQyLTYzMjctNDE2OC1BRDIwLTE4QTFDQTNGOTI3QVwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJSZWR1Y2luZyBvdXIgVW5rbm93biBmaWd1cmUgYW5kIGluY3JlYXNpbmcgb3VyIGNvbmZpZGVuY2UgYXJvdW5kIG91ciBFRVQgZGF0YSBpcyBhIGtleSBPdXRjb21lIEluZGljYXRvciBmb3IgdGhlIG5ldyBJUEVIIHNlcnZpY2UuIFRoZSBuZXcgSVBFSCBzZXJ2aWNlIGludm9sdmVzIG11bHRpIGFnZW5jeSBkZWxpdmVyeSB0aHJvdWdoIGEgbG9jYWxpc2VkIEh1YiBzdHJ1Y3R1cmUuIFRoZXNlIEh1YnMgaGF2ZSBhIGNsZWFyIHJlbWl0IHRvIGRldmVsb3AgbGlua3Mgd2l0aGluIHRoZWlyIGNvbW11bml0aWVzIGFuZCB3aXRoIHBhcnRuZXJzIHRvIGltcHJvdmUgdGhlIG91dGNvbWVzIGZvciBjaGlsZHJlbiwgeW91bmcgcGVvcGxlIGFuZCBmYW1pbGllcywgaW5jbHVkaW5nIGRldmVsb3BpbmcgZnVydGhlciBsaW5rcyB3aXRoIGxvY2FsIHNjaG9vbHMgYW5kIGNvbGxlZ2VzIHRvIGVuYWJsZSBhIG1vcmUgbG9jYWxpc2VkIHRyYWNraW5nIG9mIHRob3NlIHlvdW5nIHBlb3BsZSBhdCByaXNrIG9mIE5FRVQgYW5kIHRob3NlIHdob3NlIEVFVCBzaXR1YXRpb24gaXMgdW5rbm93bi4gSW5jbHVkZWQgaW4gdGhpcyB3aWxsIGJlIHBhcnRuZXJzaGlwIHdpdGggQ2FyZWVycyBBZHZpc2VycyB3aXRoaW4gRWR1Y2F0aW9uIGFuZCBTa2lsbHMgd2hvIHdpbGwgYmUgc2hpZnRpbmcgZm9jdXMgdG8gd29yayBtb3JlIHdpdGggTkVFVCB5b3VuZyBwZW9wbGUgaW4gdGhlIGZ1dHVyZS5cXG5cXG4gXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoZSBsYXRlc3QgZGF0YSBhdmFpbGFibGUgZnJvbSB0aGUgRGVwYXJ0bWVudCBmb3IgRWR1Y2F0aW9uIChERkUpIGlzIGZvciB0aGUgbW9udGggb2YgTWF5IDIwMTcgYW5kIHRoaXMgaXMgc2hvd24gaW4gdGhlIHRhYmxlIGJlbG93LlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9CRkM5QjUzRi1BNTM0LTRDNkItOUZCQi0wQjdBNkMxNEQ4NDlcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIHBlcmNlbnRhZ2Ugb2YgeW91bmcgcGVvcGxlIOKAmEluIExlYXJuaW5n4oCZIGFuZCBpbiBFRVQgcmVtYWlucyBzbGlnaHRseSBsb3dlciBpbiBXZXN0IFN1c3NleCBjb21wYXJlZCB3aXRoIHRoZSByZWdpb25hbCBhbmQgbmF0aW9uYWwgcGljdHVyZS4gMTYgYW5kIDE3IHllYXIgb2xkcyB3aG8gYXJlIE5FRVQgYWxzbyByZW1haW4gbG93ZXIuIEhvd2V2ZXIsIHRoZSBwZXJjZW50YWdlIG9mIHlvdW5nIHBlb3BsZSB3aXRoIGFuIHVua25vd24gRUVUIHNpdHVhdGlvbiByZW1haW5zIGhpZ2ggaW4gV2VzdCBTdXNzZXggaW4gY29tcGFyaXNvbiB3aXRoIHRoZSBmaWd1cmUgZm9yIHRoZSByZWdpb24gYW5kIG5hdGlvbmFsbHksIHdoaWNoIGhhcyB0aGUgaW1wYWN0IG9mIGRlY3JlYXNpbmcgb3VyIGNvbmZpZGVuY2UgaW4gb3VyIEluIExlYXJuaW5nLCBFRVQgYW5kIE5FRVQgZGF0YS4gVGhlIHRhYmxlIGJlbG93IHNob3dzIHBlcmZvcm1hbmNlIGZvciB0aGUgbGFzdCAzIG1vbnRocyBvZiBhdmFpbGFibGUgZGF0YSwgaW5jbHVkaW5nIHRoZSAzIG1vbnRoIGF2ZXJhZ2UuIFRoaXMgc2hvd3MgYSBmYWlybHkgc3RhdGljIHBpY3R1cmUgYWNyb3NzIHRoZSBib2FyZCwgYWx0aG91Z2ggb3VyIFVua25vd24gZmlndXJlcyBoYXZlIHJpc2VuIHNsaWdodGx5IHNpbmNlIE1hcmNoLiBIb3dldmVyLCBhIHJpc2UgaW4gdW5rbm93bnMgaXMgdG8gYmUgZXhwZWN0ZWQgYXMgdGhlIHllYXIgcHJvZ3Jlc3NlcywgZXNwZWNhaWxseSB0aHJvdWdob3V0IHRoZSBzdW1tZXIgcGVyaW9kLCBhcyB5b3VuZyBwZW9wbGUgc3RhcnQgdG8gZmluaXNoIGVkdWNhdGlvbiBhbmQgdHJhaW5pbmcgcGxhY2VtZW50cy4gRm9yIHRoaXMgcmVhc29uLCB0aGUgRGZFIGRvIG5vdCBtb25pdG9yIHRoZSBwZXJmb3JtYW5jZSBvZiBsb2NhbCBhdXRob3JpdGllcyBpbiB0ZXJtcyBvZiB0aGVpciB1bmtub3duIGNvaG9ydCBvdmVyIHRoZSBzdW1tZXIgbW9udGhzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9GMkEwNzBCNS03NTc0LTQwQUItQkQ3NC05MTFCQTI0MUNCMTNcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiQSBjb21wYXJpc29uIHdpdGggdGhlIGN1cnJlbnQgTWF5IGRhdGEgd2l0aCBNYXkgMjAxNiwgc2hvd3MgdGhhdCBpbXByb3ZlbWVudHMgaGF2ZSBiZWVuIG1hZGUgYWNyb3NzIHRoZSBib2FyZCB3aXRoIFVua25vd24gZmlndXJlcyAyLjIlIGxvd2VyIHRoaXMgeWVhciwgSW4gTGVhcm5pbmcgZmlndXJlcyAyLjUlIGhpZ2hlciwgTkVFVCBmaWd1cmVzIDAuMyUgbG93ZXIgYW5kIHRoZSBwZXJjZW50YWdlIG9mIHRob3NlIGluIGFueSBmb3JtIG9mIEVFVCBiZWluZyAyLjUlIGhpZ2hlci4gQWx0aG91Z2ggd2UgaGF2ZSBmb3VuZCBvdXQgdGhlIEVFVCBkZXRhaWxzIG9mIG1vcmUgeW91bmcgcGVvcGxlIHRoaXMgeWVhciwgb3VyIE5FRVQgZmlndXJlcyBoYXZlIHJlZHVjZWQsIHRoZXJlYnkgc3VnZ2VzdGluZyB0aGF0IG1hbnkgb2Ygb3VyIHVua25vd25zIG1heSB3ZWxsIGJlIHBhcnRpY2lwYXRpbmcgaW4gc29tZSBmb3JtIG9mIEVFVCBhcyBvcHBvc2VkIHRvIGJlaW5nIE5FRVQuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0ZGRDE1ODZFLTFDQzctNDhCNy04N0NGLThGNUYxMTRCNzk2QVwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJSZWR1Y2luZyBvdXIgVW5rbm93biBmaWd1cmUgYW5kIGluY3JlYXNpbmcgb3VyIGNvbmZpZGVuY2UgYXJvdW5kIG91ciBFRVQgZGF0YSBpcyBhIGtleSBPdXRjb21lIEluZGljYXRvciBmb3IgdGhlIG5ldyBJUEVIIHNlcnZpY2UuIFRoZSBuZXcgSVBFSCBzZXJ2aWNlIGludm9sdmVzIG11bHRpIGFnZW5jeSBkZWxpdmVyeSB0aHJvdWdoIGEgbG9jYWxpc2VkIEh1YiBzdHJ1Y3R1cmUuIFRoZXNlIEh1YnMgaGF2ZSBhIGNsZWFyIHJlbWl0IHRvIGRldmVsb3AgbGlua3Mgd2l0aGluIHRoZWlyIGNvbW11bml0aWVzIGFuZCB3aXRoIHBhcnRuZXJzIHRvIGltcHJvdmUgdGhlIG91dGNvbWVzIGZvciBjaGlsZHJlbiwgeW91bmcgcGVvcGxlIGFuZCBmYW1pbGllcywgaW5jbHVkaW5nIGRldmVsb3BpbmcgZnVydGhlciBsaW5rcyB3aXRoIGxvY2FsIHNjaG9vbHMgYW5kIGNvbGxlZ2VzIHRvIGVuYWJsZSBhIG1vcmUgbG9jYWxpc2VkIHRyYWNraW5nIG9mIHRob3NlIHlvdW5nIHBlb3BsZSBhdCByaXNrIG9mIE5FRVQgYW5kIHRob3NlIHdob3NlIEVFVCBzaXR1YXRpb24gaXMgdW5rbm93bi4gSW5jbHVkZWQgaW4gdGhpcyB3aWxsIGJlIHBhcnRuZXJzaGlwIHdpdGggQ2FyZWVycyBBZHZpc2VycyB3aXRoaW4gRWR1Y2F0aW9uIGFuZCBTa2lsbHMgd2hvIHdpbGwgYmUgc2hpZnRpbmcgZm9jdXMgdG8gd29yayBtb3JlIHdpdGggTkVFVCB5b3VuZyBwZW9wbGUgaW4gdGhlIGZ1dHVyZS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDQgLSBNYXJjaCAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgZmlyc3QgZGF0YSB0YWJsZSBiZWxvdyBwcm92aWRlcyB0aGUgTm92ZW1iZXIgdG8gSmFudWFyeSBhdmVyYWdlIGZpZ3VyZXMuIEFsdGhvdWdoIGRhdGEgaXMgc3VibWl0dGVkIHRvIHRoZSBEZkUgb24gYSBtb250aGx5IGJhc2lzLCB0aGV5IHVzZSBhbmQgcHVibGlzaCB0aGUgTm92ZW1iZXIgdG8gSmFudWFyeSBhdmVyYWdlIGZpZ3VyZXMgdG8gbWVhc3VyZSB0aGUgcGVyZm9ybWFuY2Ugb2YgZWFjaCBBdXRob3JpdHkgZXZlcnkgeWVhci4gVGhlIEF1dHVtbiBwZXJpb2QgaXMgdGhlIHBlYWsgb2YgdHJhY2tpbmcgYWN0aXZpdHkgZHVlIHRvIHNlZWtpbmcgdG8gZGV0ZXJtaW5lIHRoZSBkZXN0aW5hdGlvbnMgb2YgYWxsIHRob3NlIHlvdW5nIHBlb3BsZSBzdGFydGluZyBhIG5ldyBhY2FkZW1pYyB5ZWFyLiBUaGUgTmF0aW9uYWwgYW5kIFNvdXRoIEVhc3QgcGVyZm9ybWFuY2UgaXMgcHJvdmlkZWQgZm9yIGNvbXBhcmlzb24gYW5kIHRoZSBjb21tZW50YXJ5IGJlbG93IGRlbW9uc3RyYXRlcyBob3cgdGhpcyB5ZWFy4oCZcyBwZXJmb3JtYW5jZSBjb21wYXJlcyB0byB0aGUgc2FtZSBhdmVyYWdlIGZvciAyMDE1LzE2LiBUaGUgc2Vjb25kIGRhdGEgdGFibGUgcHJvdmlkZXMgdGhlIG1vc3QgcmVjZW50IGRhdGEgcmVsZWFzZWQgdG8gdXMgZnJvbSB0aGUgRGZFLiBNYXJjaCBkYXRhIHdpbGwgYmUgbWFkZSBhdmFpbGFibGUgdG8gdXMgbWlkLUFwcmlsIDIwMTcuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzUxMTk3RDlCLTU4NjctNDdBRC1COEZGLUE0NzcxNjgyQTczQlwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJDb21tZW50YXJ5IGluY2x1ZGluZyB1c2VmdWwgY29udGV4dHVhbCBpbmZvcm1hdGlvbjpcXG5cXG5Gcm9tIFNlcHRlbWJlciAyMDE2IExvY2FsIEF1dGhvcml0aWVzIGFyZSBvbmx5IHJlcXVpcmVkIHRvIHRyYWNrIGFuZCBzdWJtaXQgaW5mb3JtYXRpb24gYWJvdXQgeW91bmcgcGVvcGxlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGFjYWRlbWljIHllYXIgaW4gd2hpY2ggdGhleSBoYXZlIHRoZWlyIDE4dGggYmlydGhkYXkgaS5lLiBhY2FkZW1pYyBhZ2UgMTYgYW5kIDE3LXllYXItb2xkcy4gTG9jYWwgQXV0aG9yaXRpZXMgbm8gbG9uZ2VyIGhhdmUgdG8gc3VibWl0IGRhdGEgZm9yIHRob3NlIGFib3ZlIHRoaXMgYWdlIHJhbmdlIHVubGVzcyB0aGUgeW91bmcgcGVyc29uIGhhcyBhIFNwZWNpYWwgRWR1Y2F0aW9uYWwgTmVlZCBvciBEaXNhYmlsaXR5IChTRU5EKSBhbmQgaGFzIGFuIEVkdWNhdGlvbiwgSGVhbHRoIGFuZCBDYXJlIFBsYW4gKEVIQ1ApLiBBcyBzdWNoLCBFZHVjYXRpb24sIFRyYWluaW5nIGFuZCBFbXBsb3ltZW50IGRhdGEgaXMgb25seSBjdXJyZW50bHkgYXZhaWxhYmxlIGFuZCBhY2N1cmF0ZSBvbiB0aG9zZSB5b3VuZyBwZW9wbGUgb2YgYWNhZGVtaWMgYWdlIDE2IGFuZCAxNy4gVGhpcyBjb2hvcnQgc2l6ZSBhdCB0aGUgZW5kIG9mIEphbnVhcnkgMjAxNyB3YXMgMTcsNTk4LCB0aGUgZm91cnRoIGxhcmdlc3QgaW4gdGhlIFNvdXRoIEVhc3QuXFxuXFxuSW4gU3VtbWFyeSwgYWx0aG91Z2ggdGhlIHBlcmNlbnRhZ2Ugb2YgeW91bmcgcGVvcGxlIHdpdGggYW4gdW5rbm93biBFRVQgc2l0dWF0aW9uIGluIFdlc3QgU3Vzc2V4IHJlbWFpbnMgaGlnaGVyIHRoYW4gdGhlIE5hdGlvbmFsIGFuZCBSZWdpb25hbCBmaWd1cmVzIGFuZCB0aGUgcGVyY2VudGFnZSBJbiBMZWFybmluZyByZW1haW5zIGxvd2VyLCBpbXByb3ZlbWVudHMgaGF2ZSBiZWVuIG1hZGUgdGhpcyB5ZWFyIHdpdGggb3ZlciBhIDIlcmVkdWN0aW9uIGluIHRoZSAzIG1vbnRoIGF2ZXJhZ2UgdW5rbm93biBwZXJjZW50YWdlIGFuZCBhIDMlIGluY3JlYXNlIGluIHRoZSAzIG1vbnRoIGF2ZXJhZ2Ugb2YgdGhvc2UgSW4gTGVhcm5pbmcuIExhdGVzdCBmaWd1cmVzIHNob3cgdGhhdCBvdmVyIDkwJSBvZiB5b3VuZyBwZW9wbGUgb2YgYWNhZGVtaWMgYWdlIDE2IGFuZCAxNyBhcmUgbWVldGluZyB0aGVpciBEdXR5IHRvIFBhcnRpY2lwYXRlLiBUaGUgcGVyY2VudGFnZSBvZiB5b3VuZyBwZW9wbGUgaW4gZWR1Y2F0aW9uLCB0cmFpbmluZyBvciBlbXBsb3ltZW50IGhhcyByaXNlbiBmcm9tIDg3LjclIGluIDIwMTUvMTYgdG8gOTAuMSUgdGhpcyB5ZWFyICgzLW1vbnRoIGF2ZXJhZ2UpLiBJbiBhZGRpdGlvbiB0byB0aGVzZSBpbXByb3ZlbWVudHMsIHRoZSBwZXJjZW50YWdlIG9mIE5FRVQgeW91bmcgcGVvcGxlIHJlbWFpbnMgbG93ZXIgdGhhbiB0aGUgbmF0aW9uYWwgYW5kIHJlZ2lvbmFsIGZpZ3VyZXMgYW5kIHdoZXJlYXMgdGhlIE5FRVQgMyBtb250aCBhdmVyYWdlIHBlcmNlbnRhZ2UgZm9yIHRoZSByZWdpb24gYW5kIG5hdGlvbmFsbHkgaGFzIHJlbWFpbmVkIHN0YXRpYywgV2VzdCBTdXNzZXggaGFzIHNlZW4gYSByZWR1Y3Rpb24gb2YgMC40JS5cXG5cXG5UaGlzIGltcHJvdmVtZW50IHRvIHBlcmZvcm1hbmNlIGhhcyBiZWVuIGFjaGlldmVkIHRocm91Z2ggYSBudW1iZXIgb2YgZGV2ZWxvcG1lbnRzIHRvIG91ciB0cmFja2luZyBhY3Rpdml0eSwgaW5jbHVkaW5nIGltcHJvdmluZyB0aGUgc3BlZWQgYXQgd2hpY2ggZGF0YSBpcyByZWNlaXZlZCBhbmQgdXBsb2FkZWQgZnJvbSBzY2hvb2xzIGFuZCBwb3N0LTE2IHByb3ZpZGVycywgbWFraW5nIHVzZSBvZiBTTVMgYW5kIG9uLWxpbmUgc3VydmV5cyBmb3IgcGFyZW50cyBhbmQgeW91bmcgcGVvcGxlIGFuZCBhZG9wdGluZyBhIG1vcmUgdGFyZ2V0ZWQgYXBwcm9hY2ggdG8gY29udGFjdGluZyBwYXJlbnRzIGFuZCB5b3VuZyBwZW9wbGUgdXNpbmcgdGhlIEZpbmQgaXQgT3V0IENlbnRyZXMgYW5kIENvbnRhY3QgQ2VudHJlLlxcblxcbkdvaW5nIGZvcndhcmQsZGV2ZWxvcG1lbnRzIHRvIHRoZSB3YXkgeW91bmcgcGVvcGxlIGFyZSB0cmFja2VkIGFyZSBzdGlsbCB1bmRlcndheSBpbmNsdWRpbmcgc3RyZW5ndGhlbmluZyBvdXIgU0VORCBkYXRhIGFuZCByZWZpbmluZyBvdXIgdHJhY2tpbmcgdGltZWxpbmUgdG8gbWFrZSByZWNlaXB0IGFuZCB1cGxvYWQgb2YgZGF0YSBldmVuIG1vcmUgZWZmaWNpZW50LiBGdXJ0aGVybW9yZSx0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBuZXcgSW50ZWdyYXRlZCBQcmV2ZW50aW9uIGFuZCBFYXJsaWVzdCBIZWxwIFNlcnZpY2UsaW52b2x2aW5nIG11bHRpIGFnZW5jeSBkZWxpdmVyeSB0aHJvdWdoIGxvY2FsaXNlZCBIdWIgc3RydWN0dXJlLCB3aWxsIGRldmVsb3AgZnVydGhlciB0aGUgbGlua3Mgd2l0aCBsb2NhbCBzY2hvb2xzIGFuZCBjb2xsZWdlcyBhbmQgZW5hYmxlIG1vcmUgbG9jYWxpc2VkIHRyYWNraW5nIG9mIHRob3NlIHlvdW5nIHBlb3BsZSBhdCByaXNrIG9mIE5FRVQgYW5kIHRob3NlIHdob3NlIEVFVCBzaXR1YXRpb24gaXMgdW5rbm93bi5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMgLSB0byBEZWNlbWJlciAyMDE2KipcXG5cXG4tIC0gLVxcblxcbkZyb20gU2VwdGVtYmVyIDIwMTYgTG9jYWwgQXV0aG9yaXRpZXMgYXJlIG9ubHkgcmVxdWlyZWQgdG8gdHJhY2sgYW5kIHN1Ym1pdCBpbmZvcm1hdGlvbiBhYm91dCB5b3VuZyBwZW9wbGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgYWNhZGVtaWMgeWVhciBpbiB3aGljaCB0aGV5IGhhdmUgdGhlaXIgMTh0aCBiaXJ0aGRheSBpLmUuIGFjYWRlbWljIGFnZSAxNiBhbmQgMTcteWVhci1vbGRzLiBMb2NhbCBBdXRob3JpdGllcyBubyBsb25nZXIgaGF2ZSB0byBzdWJtaXQgZGF0YSBmb3IgdGhvc2UgYWJvdmUgdGhpcyBhY2FkZW1pYyBhZ2UgcmFuZ2UgdW5sZXNzIHRoZSB5b3VuZyBwZXJzb24gaGFzIGEgU3BlY2lhbCBFZHVjYXRpb25hbCBOZWVkIG9yIERpc2FiaWxpdHkgKFNFTkQpIGFuZCBoYXMgYW4gRWR1Y2F0aW9uLCBIZWFsdGggYW5kIENhcmUgUGxhbiAoRUhDUCkuIEFzIHN1Y2gsIEVkdWNhdGlvbiwgVHJhaW5pbmcgYW5kIEVtcGxveW1lbnQgZGF0YSBpcyBvbmx5IGN1cnJlbnRseSBhdmFpbGFibGUgYW5kIGFjY3VyYXRlIG9uIHRob3NlIHlvdW5nIHBlb3BsZSBvZiBhY2FkZW1pYyBhZ2UgMTYgYW5kIDE3LlxcblxcbkxhdGVzdCBmaWd1cmVzIChOb3ZlbWJlciAyMDE2KSByZWxlYXNlZCBieSB0aGUgRGZFIGZvbGxvd2luZyBzdWJtaXNzaW9uIG9mIG91ciBkYXRhIHNob3cgdGhhdCA4OC40JSBvZiB5b3VuZyBwZW9wbGUgYWdlZCAxNiBhbmQgMTcgYXJlIGluIHNvbWUgZm9ybSBvZiBFZHVjYXRpb24sIFRyYWluaW5nIG9yIEVtcGxveW1lbnQuIDg4JSBvZiB0aGVzZSBhcmUg4oCYSW4gTGVhcm5pbmfigJksIHdoaWxlIDAuNCUgYXJlIGVtcGxveWVkIHdpdGggbm8gdHJhaW5pbmcgb3IgZWR1Y2F0aW9uIGF0dGFjaGVkIHRvIHRoaXMgZW1wbG95bWVudC4gVGhlIHBlcmNlbnRhZ2Ugb2YgdGhpcyBhZ2UgZ3JvdXAgY3VycmVudGx5IG5vdCBpbiBFZHVjYXRpb24sIFRyYWluaW5nIG9yIEVtcGxveW1lbnQgKE5FRVQpIHN0YW5kcyBhdCAxLjAlLiBBZnRlciBsb2FkaW5nIGFsbCBkYXRhIHJlY2VpdmVkIGZyb20gYWxsIHNjaG9vbHMgYW5kIHBvc3QtMTYgcHJvdmlkZXJzLCB0aGUgbnVtYmVyIG9mIHlvdW5nIHBlb3BsZSBhZ2VkIDE2IGFuZCAxNyB3aXRoIGFuIHVua25vd24gRWR1Y2F0aW9uLCBUcmFpbmluZyBvciBFbXBsb3ltZW50IHNpdHVhdGlvbiBzdGFuZHMgYXQgMTAuNyUgYXQgdGhlIGVuZCBvZiBOb3ZlbWJlciAyMDE2LiBUaGlzIGNvbXBhcmVzIHRvIDUuOCUgZm9yIHRoZSBTb3V0aCBFYXN0IFJlZ2lvbiBhbmQgNS4yJSBuYXRpb25hbGx5Llxcblxcbkhvd2V2ZXIsIHdvcmsgaGFzIHN0YXJ0ZWQgaW4gRGVjZW1iZXIgdG8gYXR0ZW1wdCB0byBjb250YWN0IHRoZXNlIHlvdW5nIHBlb3BsZSB0byBkZXRlcm1pbmUgdGhlaXIgZGVzdGluYXRpb24uIFRoaXMgd29yayBpbmNsdWRlcyBhIG1peHR1cmUgb2YgY29udGFjdGluZyB5b3VuZyBwZW9wbGUgdmlhIGVtYWlsIGFuZCBTTVMgKG1lc3NhZ2luZykgYXMgd2VsbCBhcyBjb250YWN0aW5nIHlvdW5nIHBlb3BsZSBhbmQgcGFyZW50cyBkaXJlY3QgYnkgcGhvbmUuIFRoaXMgd29yayBpcyBjb250aW51aW5nIHRocm91Z2hvdXQgRGVjZW1iZXIgMjAxNiBhbmQgSmFudWFyeSAyMDE3IHdpdGggYSB2aWV3IHRvIHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgdW5rbm93biB5b3VuZyBwZW9wbGUgYXMgbXVjaCBhcyBwb3NzaWJsZSBieSB0aGUgZW5kIG9mIEphbnVhcnkuIFRoZSBEZkUgd2lsbCBwcmVzZW50IHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgTG9jYWwgQXV0aG9yaXR5IHVzaW5nIHRoZSBhdmVyYWdlcyBmb3IgdGhlIG1vbnRocyBvZiBOb3ZlbWJlciBhbmQgRGVjZW1iZXIgMjAxNiBhbmQgSmFudWFyeSAyMDE3LiBUaGUgdHJhY2tpbmcgb2YgeW91bmcgcGVvcGxl4oCZcyBFZHVjYXRpb24sIFRyYWluaW5nIGFuZCBFbXBsb3ltZW50IHNpdHVhdGlvbiBpcyBhcmUgc291cmNlIGludGVuc2l2ZSB0YXNrLiBUaGUgc2l6ZSBvZiB0aGUgYWNhZGVtaWMgYWdlIDE2IGFuZCAxNyBjb2hvcnQgc2l6ZSBpbiBXZXN0IFN1c3NleCBpcyBjdXJyZW50bHkgMTcsMTY2LiBPbmx5IEhhbXBzaGlyZSwgS2VudCBhbmQgU3VycmV5IGhhdmUgbGFyZ2VyIGNvaG9ydCBzaXplcyBpbiB0aGUgU291dGggRWFzdCBSZWdpb24uIEFjY3VyYWN5IGFuZCB0aW1lbGluZXNzIG9mIGRhdGEgcmVjZWl2ZWQgZnJvbSBzY2hvb2xzLCBwb3N0LTE2IHByb3ZpZGVycyBhbmQgb3RoZXIgc2VydmljZXMgYW5kIG9yZ2FuaXNhdGlvbnMgaXMgY3J1Y2lhbCB0byBzdWNjZXNzIGFzIHdlbGwgYXMgaGF2aW5nIHRoZSByZXNvdXJjZXMgdG8gY29udGFjdCB0aG9zZSB5b3VuZyBwZW9wbGUgd2hvc2UgbmFtZSBkb2VzIG5vdCBhcHBlYXIgb24gYW55IGVucm9sbWVudCBsaXN0cyByZWNlaXZlZC5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIg4oCTIFNlcHRlbWJlciAyMDE2KipcXG5cXG4tIC0gLVxcblxcbiBUaGVyZSBpcyBubyBFVEUgZGF0YSBmb3IgU2VwdGVtYmVyIDIwMTYuIFRoZSBwZXJmb3JtYW5jZSBvZiBMb2NhbCBBdXRob3JpdGllcyBpcyBub3QgbWVhc3VyZWQgYnkgdGhlIERmRSBvdmVyIHRoZSBzdW1tZXIgbW9udGhzIGR1ZSB0byBtYW55IHlvdW5nIHBlb3BsZSBsZWF2aW5nIGNvdXJzZXMgb3ZlciB0aGlzIHBlcmlvZCwgcmVzdWx0aW5nIGluIGEgZ3JhZHVhbCByaXNlIGluIHRoZSBudW1iZXIgb2YgeW91bmcgcGVvcGxlIHdob3NlIEVURSBhY3Rpdml0eSBpcyB1bmtub3duLiBGdXJ0aGVybW9yZSwgYXQgdGhlIGVuZCBvZiBBdWd1c3QgZWFjaCB5ZWFyLCBhbGwgeW91bmcgcGVvcGxlIGFnZWQgMTYgdG8gMTggd2hvIHdlcmUgYXR0ZW5kaW5nIGVkdWNhdGlvbiBvciB0cmFpbmluZyBwcmlvciB0byB0aGUgZW5kIG9mIEF1Z3VzdCwgaGF2ZSB0aGVpciBFVEUgYWN0aXZpdHkgY2hhbmdlZCB0byDigJh1bmtub3du4oCZLiBUaGlzIGlzIGEgRGZFIHJlcXVpcmVtZW50IGFuZCBmb3JjZXMgYWxsIExvY2FsIEF1dGhvcml0aWVzIHRvIHJlZ3VsYXJseSByZXZpZXcgdGhlIEVURSBhY3Rpdml0eSBvZiB5b3VuZyBwZW9wbGUgbGl2aW5nIGluIHRoZWlyIGFyZWEuIEZyb20gU2VwdGVtYmVyIGVhY2ggeWVhciB0aGUgTG9jYWwgQXV0aG9yaXR5IHN0YXJ0cyB0byB0cmFjayB0aGUgRVRFIGRlc3RpbmF0aW9ucyBvZiB0aGVzZSB5b3VuZyBwZW9wbGUgdXNpbmcgYSBjb21iaW5hdGlvbiBvZiBlbnJvbG1lbnQgbGlzdHMgZnJvbSBzaXh0aCBmb3JtcywgY29sbGVnZXMgYW5kIG90aGVyIHBvc3QgMTYgRVRFIHByb3ZpZGVycywgdGhlIE5hdGlvbmFsIEFwcHJlbnRpY2VzaGlwIFNlcnZpY2UgYW5kIHRoZSBEZXBhcnRtZW50IGZvciBXb3JrIGFuZCBQZW5zaW9ucywgYXMgd2VsbCBhcyBhdHRlbXB0aW5nIHRvIGNvbnRhY3QgeW91bmcgcGVvcGxlIHRoZW1zZWx2ZXMsIHNob3VsZCB0aGV5IG5vdCBhcHBlYXIgb24gYW55IGVucm9sbWVudCBsaXN0LlxcblxcbkF0IHRoZSBlbmQgb2YgU2VwdGVtYmVyIDIwMTYgdGhlIExvY2FsIEF1dGhvcml0eSBoYWQgcmVjZWl2ZWQgZW5yb2xtZW50IGxpc3RzIGZyb20gYWxsIHNjaG9vbHMgYW5kIGNvbGxlZ2VzIGluIFdlc3QgU3Vzc2V4LCB3aXRoIHRoZSBleGNlcHRpb24gb2YgNiBzY2hvb2xzLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgcHJpdmF0ZSBzY2hvb2xzIGFzIHRoZXkgaGF2ZSBubyBzdGF0dXRvcnkgb2JsaWdhdGlvbiB0byBzZW5kIHRoZSBBdXRob3JpdHkgdGhlaXIgZGF0YS4gSXQgZG9lcyBpbmNsdWRlIEFjYWRlbWllcy4gVGhlIEF1dGhvcml0eSBoYXMgYWxzbyBzdGFydGVkIHRvIHJlY2VpdmUgZW5yb2xtZW50IGxpc3RzIGZyb20gcG9zdCAxNiBwcm92aXNpb24gbG9jYXRlZCBpbiBuZWlnaGJvcmluZyBhdXRob3JpdGllcy4gVUNBUyBsaXN0cyB3aWxsIGJlIGF2YWlsYWJsZSBmcm9tIHNjaG9vbHMgYW5kIGNvbGxlZ2VzIHRvd2FyZHMgdGhlIGVuZCBvZiBPY3RvYmVyL2Vhcmx5IE5vdmVtYmVyLiBUaGlzIHRyYWNraW5nIGFjdGl2aXR5IHdpbGwgY29udGludWUgb3ZlciB0aGUgcXVhcnRlciAzIHBlcmlvZC4gVGhyb3VnaCB0aGlzIHByb2Nlc3MgdGhlIEF1dGhvcml0eSBjYW4gc3RhcnQgdG8gaWRlbnRpZnkgeW91bmcgcGVvcGxlIHdobyBtYXkgbm90IGJlIG1lZXRpbmcgdGhlIOKAmER1dHkgdG8gUGFydGljaXBhdGXigJkgaW4gRWR1Y2F0aW9uIG9yIFRyYWluaW5nLCB0aG9zZSBub3QgaW4gYW55IGZvcm0gb2YgZWR1Y2F0aW9uLCB0cmFpbmluZyBvciBlbXBsb3ltZW50IChORUVUKSwgb3IgdGhvc2Ugd2hvIGFyZSBhdCByaXNrIG9mIGJlY29taW5nIE5FRVQgYW5kIHByb3ZpZGUgc3VwcG9ydCB0byB0aGVzZSB5b3VuZyBwZW9wbGUgYXMgYXBwcm9wcmlhdGUuXFxuXFxuSXQgaXMgZGlmZmljdWx0IHRvIHNheSB3aXRoIGFueSBjZXJ0YWludHkgYXQgdGhpcyBwb2ludCB3aGV0aGVyIHRoZSBBdXRob3JpdHkgd2lsbCByZWFjaCBpdHMgRVRFIHRhcmdldCBieSB0aGUgZW5kIG9mIHRoZSB5ZWFyLiBBIG1vcmUgY2VydGFpbiBpZGVhIHdpbGwgYmUgcG9zc2libGUgYXQgdGhlIGVuZCBvZiBxdWFydGVyIDMgKGVuZCBEZWNlbWJlciAyMDE2KSB3aGVuIHRoZSBtYWpvcml0eSBvZiB0aGUgZGF0YSB3aWxsIGhhdmUgYmVlbiByZWNlaXZlZC4gSXQgaXMgYWxzbyBjb21wbGljYXRlZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBEZkUgaGF2ZSBjaGFuZ2VkIHRoZSB0cmFja2luZyByZXF1aXJlbWVudHMgb24gTG9jYWwgQXV0aG9yaXRpZXMgZnJvbSBTZXB0ZW1iZXIgMjAxNi4gTG9jYWwgQXV0aG9yaXRpZXMgbm93IGhhdmUgdG8gc3VibWl0IGRhdGEgdG8gdGhlIERmRSBmb3IgeW91bmcgcGVvcGxlIGFnZWQgMTYgYW5kIDE3IG9ubHksIG9yIHVwIHRvIGFnZSAyNSBpZiB0aGUgeW91bmcgcGVyc29uIGhhcyBhIHNwZWNpYWwgZWR1Y2F0aW9uYWwgbmVlZCBvciBkaXNhYmlsaXR5IChTRU5EKS4gV2hpbGUgTG9jYWwgQXV0aG9yaXRpZXMgYXJlIGV4cGVjdGVkIHRvIGludHJvZHVjZSBsb2NhbGx5IGRlc2lnbmVkIHByb2NlZHVyZXMgdG8gaWRlbnRpZnkgdGhvc2UgYWNhZGVtaWMgYWdlIDE4LXllYXItb2xkcyB3aG8gbmVlZCBzdXBwb3J0IHRvIGVuZ2FnZSwgd2UgYXJlIGFsc28gdG8gaW50ZW5zaWZ5IG91ciBlZmZvcnRzIHRvIGVuc3VyZSBhbGwgYWNhZGVtaWMgYWdlIDE2IGFuZCAxNy15ZWFyLW9sZHMgYXJlIHRyYWNrZWQgZWZmaWNpZW50bHkgdG8gcmVkdWNlIHRoZSBwcm9wb3J0aW9uIHdob3NlIGFjdGl2aXR5IGlzIHJlY29yZGVkIGFzIG5vdCBrbm93biBhbmQgdG8gaW5jcmVhc2UgdGhlIHByb3BvcnRpb24gZW50ZXJpbmcgYW5kIHN1c3RhaW5pbmcgYW4gUlBBIChSYWlzaW5nIFBhcnRpY2lwYXRpb24gQWdlKSBjb21wbGlhbnQgZGVzdGluYXRpb24gYWZ0ZXIgbGVhdmluZyBzY2hvb2wuIFRoZSBEZkUgd2lsbCB0aGVyZWZvcmUgcHVibGlzaCBvdXIgcGVyZm9ybWFuY2UgZm9yIDE2IGFuZCAxNyB5ZWFyIG9sZHMgb25seSAob3IgdXAgdG8gMjUgd2l0aCBTRU5EKSBhcyBvcHBvc2VkIHRvIHlvdW5nIHBlb3BsZSBhZ2VkIDE2IHRvIDE4LlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5UaGlzIG1lYXN1cmUgaXMgdGhlIHByb3BvcnRpb24gb2YgV2VzdCBTdXNzZXggcmVzaWRlbnQgeW91bmcgcGVvcGxlIG9mIGFjYWRlbWljIGFnZSAxNiwgMTcgYW5kIDE4IChzY2hvb2wgeWVhcnMgMTIgdG8gMTQpIHdobyBhcmUgZW5nYWdlZCBpbiBzb21lIGZvcm0gb2YgZWR1Y2F0aW9uLCBlbXBsb3ltZW50IG9yIHRyYWluaW5nLiBUaGlzIGluY2x1ZGVzIHlvdW5nIHBlb3BsZSB3aG9zZSBwZXJtYW5lbnQgYWRkcmVzcyBpcyB3aXRoaW4gV2VzdCBTdXNzZXggYnV0IHRoZXkgYXJlIHN0dWR5aW5nIGF3YXkgZnJvbSBob21lLiBJdCBpcyBjb25zaXN0ZW50IHdpdGggdGhlIExvY2FsIEF1dGhvcml0aWVzIGR1dGllcyB0byBlbmNvdXJhZ2UsIGVuYWJsZSBhbmQgYXNzaXN0IHlvdW5nIHBlb3BsZSB0byBwYXJ0aWNpcGF0ZSBpbiBlZHVjYXRpb24gb3IgdHJhaW5pbmcgKEVkdWNhdGlvbiBhbmQgU2tpbGxzIEFjdCAyMDA4LCBTLjY4KS5cXG5cXG5JdCBpcyBub3QgdGhlIHNhbWUgYXMgdGhvc2UgeW91bmcgcGVvcGxlIGFnZWQgMTYgYW5kIDE3IHdobyBhcmUgbWVldGluZyB0aGUg4oCYZHV0eSB0byBwYXJ0aWNpcGF0ZeKAmSBvciB0aG9zZSBhZ2VkIDE2IHRvIDE4IGVuZ2FnZWQgaW4gZWR1Y2F0aW9uIG9yIHRyYWluaW5nIChpLmUuIOKAmGluIExlYXJuaW5n4oCZKSBhcyBtZWFzdXJlZCBieSB0aGUgRGZFLiBUaGVzZSBtZWFzdXJlcyBoYXZlIHJ1bGVzIGFyb3VuZCB3aGF0IGNvdW50cyBhcyDigJhwYXJ0aWNpcGF0aW9u4oCZIChpLmUuIHRvIG1lZXQgdGhpcyBkdXR5IG9yIHRvIGJlIGNsYXNzZWQgYXMg4oCYSW4gTGVhcm5pbmfigJkgZW1wbG95bWVudCBoYXMgdG8gYmUgY29tYmluZWQgd2l0aCBzb21lIGZvcm0gb2YgYWNjcmVkaXRlZCB0cmFpbmluZykuIEluIGNvbnRyYXN0LCB3aXRoaW4gdGhlIDE2IHRvIDE4IHllYXIgb2xkcyBpbiBFRVQgbWVhc3VyZSwgd2UgY291bnQgeW91bmcgcGVvcGxlIHdobyBhcmUgaW4gcGFydC10aW1lIGVtcGxveW1lbnQgb3IgZW1wbG95bWVudCB3aXRob3V0IHRyYWluaW5nIGV2ZW4gdGhvdWdoIHRoZXNlIHlvdW5nIHBlb3BsZSBhcmUgbm90IG1lZXRpbmcgdGhlIER1dHkgdG8gUGFydGljaXBhdGUuXFxuXFxuVGhlIGZpZ3VyZSBmb3IgSnVuZSAyMDE2ICg4NS4xJSkgaXMgcHJvdmlkZWQgZnJvbSBsb2NhbCBkYXRhLiBJZiB0aGlzIHBlcmZvcm1hbmNlIGlzIHNwbGl0IGJ5IGFjYWRlbWljIGFnZSBncm91cCwgd2UgY2FuIHNlZSB0aGF0IHRoZSBsYXJnZXN0IHByb2JsZW0gaXMgaW4gdGhlIGFjYWRlbWljIGFnZSAxOCBncm91cDogQWdlIDE2ICh5ZWFyIDEyKSDigJMgOTQuMSU7IEFnZSAxNyAoeWVhciAxMykg4oCTIDg3LjUlOyBBZ2UgMTggKHllYXIgMTQpIOKAkyA3My44JS4gT3VyIOKAmHVua25vd27igJkgY29ob3J0IGlzIGFsc28gYXQgaXRzIGxhcmdlc3QgaW4gdGhlIEFnZSAxOCBncm91cCBhcyBmb2xsb3dzOiBBZ2UgMTYg4oCTIDQuNSU7IEFnZSAxNyDigJMgOS45JTsgQWdlIDE4IOKAkyAxOS40JTsgT3ZlcmFsbCAxNiB0byAxOCDigJMgMTEuMyUuIEluIGJlbmNobWFya2luZyB0ZXJtcywgdGhlIHBlcmNlbnRhZ2Ugb2YgMTYgdG8gMTggeWVhciBvbGRzIHdobyBhcmUgbm90IGluIGVkdWNhdGlvbiwgZW1wbG95bWVudCBvciB0cmFpbmluZyAoTkVFVCkgd2FzIDMuOSUgaW4gMjAxNS5UaGUgc2VydmljZSBhcmUgb24gdHJhY2sgdG8gbWFrZSBhbiBpbXByb3ZlbWVudCBvbiBsYXN0IHllYXIuIFRoaXMgdGltZSBsYXN0IHllYXIgb3VyIHBlcmZvcm1hbmNlIHdhcyBhdCA4MC4yJSwgc2hvd2luZyBhbiBpbmNyZWFzZSBvZiA1JS5cXG5cXG5UaGUgbnVtYmVycyBpbiBFRVQgYW5kIHVua25vd24gdGVuZCB0byBkZWNsaW5lIGFuZCByaXNlIHJlc3BlY3RpdmVseSBmcm9tIEphbnVhcnkgdGhyb3VnaCB0byB0aGUgc3VtbWVyIGFzIHlvdW5nIHBlb3BsZSBsZWF2ZSBhbmQgY2hhbmdlIGNvdXJzZXMvcHJvdmlkZXJzLiBUZWFtcyB3b3JrIHdpdGggcG9zdCAxNiBwcm92aWRlcnMsIG91ciBZb3V0aCBJbnRlcnZlbnRpb25zIFRlYW0sIEZpbmQgaXQgT3V0IFNob3BzIGFuZCB0aGUgQ29udGFjdCBDZW50cmUgdG8gdHJ5IHRvIGRldGVybWluZSB0aGUgb24tZ29pbmcgZGVzdGluYXRpb24gb2YgdGhvc2UgeW91bmcgcGVvcGxlIHdobyBsZWF2ZSBjb3Vyc2VzIGFuZCBwcm92aWRlcnMgZWFybHkuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoZSBvbGRlciBhZ2UgZ3JvdXAgaXMgd2hlcmUgd2Ugc3RydWdnbGUgaW4gdGVybXMgb2Yg4oCYdHJhY2tpbmfigJkgeW91bmcgcGVvcGxl4oCZcyBFRVQgZGVzdGluYXRpb24uIFdlIG5vIGxvbmdlciByZWNlaXZlIFVDQVMgZGF0YSBkaXJlY3QgZnJvbSBVQ0FTLCBhbmQgcmVseSBvbiBzY2hvb2xzIGFuZCBjb2xsZWdlcyBzZW5kaW5nIHVzIHRoaXMgZGF0YSwgd2hpY2ggaXNu4oCZdCBhbHdheXMgY29tcGxldGUuIE1hbnkgb2YgdGhlc2UgeW91bmcgcGVvcGxlIG1heSBiZSB3b3JraW5nIG9yIHN0dWR5aW5nIGF3YXkgZnJvbSBob21lIGFuZCB0aGVyZWZvcmUgcmVtYWluIGRpZmZpY3VsdCB0byBjb250YWN0IHRvIHJlLXZlcmlmeSB0aGVpciBFRVQgc3RhdHVzLiBGcm9tIFNlcHRlbWJlciAyMDE2IHRoZSBEZkUgd2lsbCBubyBsb25nZXIgYmUgcmVwb3J0aW5nIG91ciBwZXJmb3JtYW5jZSBvbiB0aGUgMTYgdG8gMTggYWdlIGdyb3VwLiBJdCBpcyBtb3ZpbmcgaW5zdGVhZCB0byB0aG9zZSB5b3VuZyBwZW9wbGUgYWdlZCAxNiBhbmQgMTcgaW4gbGluZSB3aXRoIHRoZSDigJhEdXR5IHRvIFBhcnRpY2lwYXRl4oCZIGxlZ2lzbGF0aW9uLiBUaGlzIGNoYW5nZSB3aWxsIGVuc3VyZSB0aGF0IHRoZSBzZXJ2aWNlIGNhbiBmb2N1cyBpdHMgZWZmb3J0IG9uIHJlZHVjaW5nIHRoZSB1bmtub3ducyBhbmQgeW91bmcgcGVvcGxlIHdobyBhcmUgTkVFVCBpbiB0aGUgeWVhciAxMiBhbmQgeWVhciAxMyBjb2hvcnQgYW5kIGluIHR1cm4gd29yayB0byBpbXByb3ZlIHRoZSBudW1iZXJzIGluIEVFVCwgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSB5b3VuZyBwZW9wbGUgd2hvIGZhbGwgdW5kZXIgdGhlIOKAmER1dHkgdG8gUGFydGljaXBhdGXigJkgbGVnaXNsYXRpb24uXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoZSBkZXZlbG9wbWVudCBvZiB0aGUgUG9zdCAxNiBQYXJ0aWNpcGF0aW9uIGFuZCBFbmdhZ2VtZW50IGluIEVFVCBzdHJhdGVneSBhbG9uZ3NpZGUga2V5IHBhcnRuZXJzIHdpbGwgcHJvdmlkZSBzdHJhdGVnaWMgb3ZlcnNpZ2h0IGFuZCBkaXJlY3Rpb24gdG8gdGhlIHdvcmsgYXJvdW5kIGVuZ2FnaW5nIHlvdW5nIHBlb3BsZSBpbiBFRVQgYW5kIG1haW50YWluaW5nIHRoZWlyIGVuZ2FnZW1lbnQuIFRoZSBhbWFsZ2FtYXRpb24gb2YgdGhlIFRoaW5rIEZhbWlseSwgRWFybHkgQ2hpbGRob29kIFNlcnZpY2UgYW5kIFlvdW5nIFBlb3BsZeKAmXMgU2VydmljZSBkYXRhIHRlYW1zIGFsc28gcHJvdmlkZXMgYW4gZXhjZWxsZW50IG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IHlvdW5nIHBlb3BsZSBlYXJseSB3aG8gYXJlIGF0IHJpc2sgb2YgYmVjb21pbmcgTkVFVCBwb3N0IDE2IGFuZCB0byBwcm92aWRlIHRhcmdldGVkIGludGVydmVudGlvbiB0byBwcmV2ZW50IHRoaXMgaGFwcGVuaW5nLiBUaGlzIHN0cmF0ZWd5IGZvY3VzZXMgb24gaW1wcm92aW5nIOKAmHByZXZlbnRpb27igJkgKHByZXZlbnRpbmcgeW91bmcgcGVvcGxlIGJlY29taW5nIE5FRVQpLCDigJhJbnRlcnZlbnRpb27igJkgKGVuc3VyaW5nIHdlIGhhdmUgdGhlIHJlc291cmNlcyB0byBrbm93IHdoYXQgeW91bmcgcGVvcGxlIGFyZSBkb2luZyBhbmQgcHV0dGluZyBpbiBwbGFjZSB0YXJnZXRlZCBpbnRlcnZlbnRpb24gdG8gc3VwcG9ydCB5b3VuZyBwZW9wbGUgaW50byBFRVQpIGFuZCDigJhzdXN0YWluYWJpbGl0eeKAmSAoc3VwcG9ydGluZyB0aG9zZSB5b3VuZyBwZW9wbGUgd2l0aCBhIGhpc3Rvcnkgb2Yg4oCYZHJvcHBpbmcgb3V04oCZIG9mIEVFVCBhbmQgdGFja2xpbmcgb2JzdGFjbGVzIHRvIGVuZ2FnZW1lbnQpLlxcblxcbiBcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDQgLSBNYXJjaCAyMDE2KipcXG5cXG4tIC0gLVxcblxcbuKAmEFsdGhvdWdoIGluIE1hcmNoIDIwMTYgd2Ugd2VyZSBhbG1vc3QgMTAlIHVuZGVyIHRhcmdldCwgdGhpcyBpcyBsYXJnZWx5IGEgcmVzdWx0IG9mIG91ciDigJh1bmtub3du4oCZIGNvaG9ydCBiZWluZyAxMS4xJSBhdCB0aGlzIHRpbWUuIE91ciDigJh1bmtub3duc+KAmSBhcmUgdGhvc2UgeW91bmcgcGVvcGxlIHdob20sIGRlc3BpdGUgdmFyaW91cyBlZmZvcnRzLCB3ZSBoYXZlIGJlZW4gdW5hYmxlIHRvIGNvbnRhY3QgdG8gcmUtdmVyaWZ5IHRoZWlyIGN1cnJlbnQgRUVUIGFjdGl2aXR5LiBJdCBpcyB2ZXJ5IGxpa2VseSB0aGF0IGEgZ29vZCBwZXJjZW50YWdlIG9mIHRoZXNlIHlvdW5nIHBlb3BsZSBhcmUgcGFydGljaXBhdGluZyBpbiBzb21lIGZvcm0gb2YgRUVULCBtb3N0IGxpa2VseSBlbXBsb3ltZW50LCBvciB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgdGhleSBoYXZlIG1vdmVkIG91dCBvZiBXZXN0IFN1c3NleC4gVGhlIG1ham9yaXR5IG9mIHRoZSB1bmtub3duIGNvaG9ydCBpcyBpbiB0aGUgb2xkZXIgYWdlIGdyb3VwLiBXZSBoYXZlIGJlZW4gd29ya2luZyBoYXJkIG92ZXIgdGhlIHBhc3QgeWVhciB0byBpbXByb3ZlIG91ciB1bmtub3duIGZpZ3VyZXMgYW5kIHRoZXJlZm9yZSBpbXByb3ZlIG91ciBkYXRhIGludGVncml0eSBhbmQgcmVsaWFiaWxpdHkuIFdlIGhvcGUgdG8gbWFrZSBmdXJ0aGVyIGltcHJvdmVtZW50cyB0aGlzIHllYXIgYXMgd2UgYXJlIGJlY29taW5nIGluY3JlYXNpbmdseSBtb3JlIGNvbmZpZGVudCB3aXRoIG91ciBjb2hvcnQgZGF0YS7igJlcXG5cXG5cIn1dLFwidXNlX2N1c3RvbV9zdWJ0aXRsZVwiOnRydWUsXCJjdXN0b21fc3VidGl0bGVcIjpcIlRoaXMgZ29hbCBpcyBtZWFzdXJlZCBieSB0cmFja2luZyBhbiBpbmNyZWFzZSBpbiB0aGUgJSBvZiAxNiAtIDE3IHllYXIgb2xkcyBpbiBlZHVjYXRpb24sIGVtcGxveW1lbnQgb3IgdHJhaW5pbmcgaW4gV2VzdCBTdXNzZXhcIixcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJJbmNyZWFzZSAgdGhlIG51bWJlciBvZiAxNiAtIDE3IHllYXIgb2xkcyBpbiBlZHVjYXRpb24sIGVtcGxveW1lbnQgb3IgdHJhaW5pbmcgaW4gV2VzdCBTdXNzZXggXCIsXCJ0aXRsZV9pbWFnZVwiOlwiL2FwaS9hc3NldHMvMjE0NUE5MTUtMkU0OC00QUI2LUFGMzYtNkM4MEE0QzJGQ0ZDXCJ9In0sInByZXZhaWxpbmdfbWVhc3VyZSI6eyJzdGFydCI6IjIwMTQtMDMtMDFUMDA6MDA6MDAuMDAwIiwiZW5kIjoiMjAxOC0wMy0zMVQyMzo1OTo1OS4wMDAiLCJ1bml0IjoiJSIsInRhcmdldCI6OTUsInRhcmdldF90eXBlIjoiYWJzb2x1dGUiLCJ0YXJnZXRfZGVsdGEiOjAsInRhcmdldF9kZWx0YV9pc19wZXJjZW50IjpmYWxzZSwiYmFzZWxpbmUiOjk1LCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6Imd2dTctcTU0ciJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE0fSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9LFwiYWN0aW9uX3R5cGVcIjpcImluY3JlYXNlXCIsXCJtYWludGFpbl90eXBlXCI6XCI+XCJ9LFwiYmFzZWxpbmVcIjp7XCJzcXVpc2h5XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE2fSxcImVuZFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTZ9fSxcInN0YXJ0XCI6XCIyMDE2LTAxLTAxVDAwOjAwOjAwLjAwMFwiLFwiZW5kXCI6XCIyMDE2LTAxLTAxVDIzOjU5OjU5LjAwMFwiLFwibWV0cmljXCI6e1wibWV0YWRhdGFcIjpcIntcXFwid2l6YXJkXFxcIjp7XFxcImZpbHRlcl9hc3RcXFwiOlt7XFxcInZhbHVlc1xcXCI6W3t9XX1dfX1cIn19LFwibmFtZVwiOlwiIHRoZSAlIG9mIDE2IC0gMTcgeWVhciBvbGRzIGluIGVkdWNhdGlvbiwgZW1wbG95bWVudCBvciB0cmFpbmluZyBpbiBXZXN0IFN1c3NleFwiLFwidXNlX3Byb2dyZXNzX292ZXJyaWRlXCI6ZmFsc2UsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwiYmFkXCJ9In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjA5OjMzLjUyOFoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOTowOTozMy41MjhaIiwidGFyZ2V0X3RvbGVyYW5jZSI6OSwiaWQiOiJnYnl4LXlrY2QifSwicmVsYXRlZF9tZWFzdXJlcyI6W10sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MTA6MDEuMTY3WiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjA5OjMzLjY0NFoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOToxMDowMS4xNjdaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiI3cnhzLTZhNDMiLCJuYW1lIjoiQXBwcmVudGljZXNoaXBzIGluIFdlc3QgU3Vzc2V4IiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJpY29uXCI6XCJ0ZXh0XCIsXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9FODlEQkI3MS01ODA0LTQ0NzYtQjRDQi1EMUVDMzgwOTFFMDNcIn1dLFt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgW05hdGlvbmFsIEFwcHJlbnRpY2VzaGlwIFNlcnZpY2VdKGh0dHA6Ly93d3cuYXBwcmVudGljZXNoaXBzLm9yZy51aykgaXMgcGFydCBvZiB0aGUgU2tpbGxzIEZ1bmRpbmcgQWdlbmN5XCJ9XV19LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoZSBDb3VudHkgQ291bmNpbCBoYXMgZW1icmFjZWQgYXBwcmVudGljZXNoaXBzIGFuZCB3aXNoZXMgb3RoZXIgZW1wbG95ZXJzIGRvIGxpa2V3aXNlLiBBbnkgYnVzaW5lc3NlcyBuZXcgdG8gQXBwcmVudGljZXNoaXBzIGNhbiBhY2Nlc3MgaW5mb3JtYXRpb24gYW5kIGFkdmljZSBmcm9tIHRoZSBBcHByZW50aWNlbWFrZXJzIHdlYnNpdGUuIFdlc3QgU3Vzc2V4IGFsc28gb2ZmZXJzIGJ1c2luZXNzIHRvIGJ1c2luZXNzIGFkdmljZSB0byBhbnkgZW1wbG95ZXIgbmV3IHRvIEFwcHJlbnRpY2VzaGlwc1xcblxcbkFwcHJlbnRpY2VzaGlwcyBhcmUgYSBrZXkgd2F5IG9mIGJvb3N0aW5nIHRoZSBsb2NhbCBlY29ub215LCB0aHJvdWdoIHByb3ZpZGluZyB0cmFpbmluZyBhbG9uZyBzaWRlIHBhaWQgd29yayBvcHBvcnR1bml0aWVzLCBwcm92aWRpbmcgb3Bwb3J0dW5pdGllcyBmb3Igc2tpbGxzIGRldmVsb3BtZW50IGFsbCBvZiB3aGljaCBjYW4gZW5oYW5jZSBwcm9kdWN0aXZpdHkgYW5kIGluY3JlYXNlIGNvbXBldGl0aXZlbmVzcyBvZiBidXNpbmVzc2VzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIjICoqV1NDQyBBcHByZW50aWNlcyoqXFxuXFxuQXMgb25lIG9mIHRoZSBsYXJnZXN0IGVtcGxveWVycyBpbiB0aGUgY291bnR5LCB0aGUgQ291bnR5IENvdW5jaWwgaGFzIGFuIGltcG9ydGFudCByb2xlIHRvIHBsYXkgaW4gbGVhZGluZyBieSBleGFtcGxlIHRvIGRlbW9uc3RyYXRlIHRoZSBiZW5lZml0cyBvZiBhcHByZW50aWNlc2hpcHMgdG8gYSByYW5nZSBvZiBzdGFrZWhvbGRlcnMuXFxuXFxuU2luY2UgMjAxMCBvdmVyIDMwMCBwZW9wbGUgaGF2ZSBzdHVkaWVkIGFuIGFwcHJlbnRpY2VzaGlwIHByb2dyYW1tZSB3aGlsc3QgZW1wbG95ZWQgYnkgdGhlIENvdW50eSBDb3VuY2lsLCB3ZSBvZmZlciBhIGRpdmVyc2UgcmFuZ2Ugb2YgQXBwcmVudGljZXNoaXBzIHN1Y2ggYXMgQ2FyZSwgSFIsIExlZ2FsLCBFbmdpbmVlcmluZy4gQXBwcmVudGljZXNoaXBzIGFyZSByZWFsbHkgaGVscGluZyB1cyB0byBkZXZlbG9wIG91ciBidXNpbmVzcywgQXBwcmVudGljZXMgYnJpbmcgZnJlc2ggaWRlYXMgYW5kIGhlbHAgdXMgZXhwZXJpZW5jZSBuZXcgdGVjaG5vbG9neSB0byB0aGUgb3JnYW5pc2F0aW9uLiA4NSUgb2YgdGhvc2Ugd2hvIGNvbXBsZXRlZCB0aGVpciBhcHByZW50aWNlc2hpcCBoYXZlIG1vdmVkIGludG8gcGFpZCBlbXBsb3ltZW50IGhlbHBpbmcgdG8gZXZpZGVuY2UgYXBwcmVudGljZXNoaXBzIHdvcmsgYW5kIGdpdmUgcmVhbCBlY29ub21pYyBiZW5lZml0LiBBcyB0aGUgQ291bnR5IENvdW5jaWzigJlzIHdvcmtmb3JjZSBzaXplIHNocmlua3MgYW5kIG91ciBzZXJ2aWNlIHByb3Zpc2lvbiBpcyBvdXRzb3VyY2VkLCB0aGUgaW1wYWN0IG9mIHRoZSBDb3VudHkgQ291bmNpbOKAmXMgYXBwcmVudGljZXNoaXAgcHJvZ3JhbW1lIHJlZHVjZXMuIEl0IGlzIHRoZXJlZm9yZSBpbXBvcnRhbnQsIGFzIHdlIGNvbW1pc3Npb24gc2VydmljZXMsIHRvIHJlYWxpc3RpY2FsbHkgYnVpbGQgYXBwcmVudGljZXNoaXBzIGFuZCBlbXBsb3ltZW50IGFuZCBza2lsbHMgaW5pdGlhdGl2ZXMgaW50byBjb250cmFjdHVhbCByZXF1aXJlbWVudHMgaW4gb3JkZXIgd2UgY2FuIG1haW50YWluIHRoZSBiZW5lZml0IGFwcHJlbnRpY2VzaGlwcyBjYW4gYnJpbmcgdG8gdGhlIGxvY2FsIGVjb25vbXkuXFxuXFxuIFxcblxcblZpZXcgb3VyIFdTQ0MgQXBwcmVudGljZXNoaXAgcGFnZXMgd2hlcmUgeW91IGNhbiBmaW5kIG91dCBpbmZvcm1hdGlvbiBhbmQgdmlldyBhbGwgdGhlIGxhdGVzdCBXZXN0IFN1c3NleCBBcHByZW50aWNlc2hpcCB2YWNhbmNpZXMuIFdhdGNoIG91ciB2aWRlbyAnQ291bnR5IENvdW5jaWwgYXBwcmVudGljZXMgZmluZCBnYXRld2F5IHRvIHdvcmsnXFxuXFxuIFwifSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIldlIGN1cnJlbnRseSBoYXZlIDU4IGFwcHJlbnRpY2VzIHdvcmtpbmcgaW4gV1NDQyBvciBTY2hvb2xzLCB0aGUgYnJlYWtkb3duIG9mIHdoaWNoIGlzOlxcblxcbjE4IEFwcHJlbnRpY2VzaGlwIGNvbnRyYWN0c1xcblxcbjkgUGVybWFuZW50IGNvbnRyYWN0c1xcblxcbjMxIFNjaG9vbCBjb250cmFjdHNcXG5cXG5cIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9FRUI4MzJCRi05RDA2LTRGODItOEM2MC02RUNEODA3QzAyRkVcIn1dXX0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipBcHByZW50aWNlc2hpcCBSZXBvcnQgKEZlYiAxOCkqKlxcblxcbi0gLSAtXFxuXFxuV2UgY29udGludWUgdG8gaW5jcmVhc2UgdGhlIG51bWJlciBvZiBhcHByZW50aWNlc2hpcHMgdGFrZW4gdXAgYWNyb3NzIG91ciBDb3Jwb3JhdGUgU2VydmljZXMgYW5kIG91ciBTY2hvb2xzIChhbiBpbmNyZWFzZSBvZiAxNSBvdmVyIHRoZSBwcmV2aW91cyBtb250aCBhbmQgYW4gMjUlIGluY3JlYXNlIG9uIEphbnVhcnkgMjAxNykgV2UgYXJlIHVzaW5nIGEgbnVtYmVyIG9mIGNhbXBhaWduaW5nIHRvb2xzIHRvIGluY2l0ZSBpbnRlcmVzdCwgcmFpc2UgYXdhcmVuZXNzLCBidXN0IHNvbWUgbXl0aHMgYW5kIGluY3JlYXNlIHRha2UgdXAsIGZvciBleGFtcGxlIGhvc3RpbmcgYW4gaW5mb3JtYXRpb24gc2Vzc2lvbiB0byBwcm9tb3RlIHRoZSBuZXcgVGVhY2hpbmcgcG9zdCBncmFkdWF0ZSBkZWdyZWUgYXBwcmVudGljZXNoaXAsIGF0dGVuZGluZyBTZW5pb3IgTGVhZGVyc2hpcCBUZWFtIE1lZXRpbmdzLCBIZWFkIFRlYWNoZXIgYW5kIEJ1c2luZXNzIE1hbmFnZXIgQnJpZWZpbmdzIGFuZCBydW5uaW5nIGEgc2VyaWVzIG9mIHJvYWRzaG93cyBhcm91bmQgdGhlIENvdW50eSBmb3Igb3VyIGVtcGxveWVlcyBhbmQgbWFuYWdlcnMuXFxuXFxuV2UgaGF2ZSBhbHNvIGJlZW4gc291cmNpbmcgcHJvdmlkZXJzIHRvIGRlbGl2ZXIgb3VyIGFwcHJlbnRpY2VzaGlwIHJlcXVpcmVtZW50cyBhbmQgZW5zdXJpbmcgdGhleSBhcmUgc2lnbmVkIHVwIHRvIG91ciBEeW5hbWljIFB1cmNoYXNpbmcgU3lzdGVtIGFuZCBhYmxlIHRvIGRlbGl2ZXIgb3VyIHJlcXVpcmVtZW50cy5cXG5cXG5XZSBhcmUgc3RpbGwgd2FpdGluZyBmb3Iga2V5IGFwcHJlbnRpY2VzaGlwcyB0byBiZSBmaW5hbGlzZWQgdGhhdCBhcmUgb2YgcGFydGljdWxhciBpbnRlcmVzdCB0byB1cyBhcyBhIExvY2FsIEF1dGhvcml0eSBhbmQgdGhlc2UgYXJlOlxcblxcbiogU29jaWFsIFdvcmsgZGVncmVlXFxuXFxuKiBPY2N1cGF0aW9uYWwgVGhlcmFweSBkZWdyZWVcXG5cXG4qIENpdmlsIEVuZ2luZWVyaW5nIExldmVsIDRcXG5cXG5UaGUgU2VuaW9yIFN0cmF0ZWdpYyBMZWFkZXJzIChNQkEpIExldmVsIDcgTWFzdGVycyBsZXZlbCBkZWdyZWUgaGFzIHZlcnkgcmVjZW50bHkgYmVlbiBhcHByb3ZlZCBhbmQgd2UgYXJlIG5vdyB3YWl0aW5nIGZvciB1bml2ZXJzaXR5IHByb3ZpZGVycyB0byBnaXZlIHVzIGRhdGVzIG9mIHdoZW4gdGhleSB3aWxsIGJlIHJlYWR5IHRvIGRlbGl2ZXIuXFxuXFxuV2UgY29udGludWUgdG8gaGF2ZSBjaGFsbGVuZ2VzIGFzc29jaWF0ZWQgd2l0aCBicmluZ2luZyBpbiB0aGUgbmV3IGFwcHJlbnRpY2VzaGlwIGFycmFuZ2VtZW50cyDigJMgaW5jbHVkaW5nIHNvbWUgb2YgdGhlIGtleSBuZXcgYXBwcmVudGljZXNoaXAgc3RhbmRhcmRzIG5vdCB5ZXQgYmVpbmcgYXZhaWxhYmxlIChzZWUgYWJvdmUpLCB0aGUgZnVuZGluZyBjcmlzaXMgaW4gb3VyIHNjaG9vbHMsIHByb2N1cmVtZW50IHRpbWVsaW5lcyBhbmQgdGhlIG5lZWQgZm9yIG1hbmFnZXJzIHRvIHJlbGVhc2UgdGhlaXIgYXBwcmVudGljZXMgZm9yIDIwJSBvZmYgdGhlIGpvYiB0cmFpbmluZy5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMgRGVjZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG4qKkFwcHJlbnRpY2VzaGlwIFJlcG9ydCAoT2N0MTctSmFuMTgpKipcXG5cXG5JbiBBcHJpbCAyMDE3IHRoZSBHb3Zlcm5tZW50IGludHJvZHVjZWQgYSBudW1iZXIgb2YgYXBwcmVudGljZXNoaXAgcmVmb3JtcyBhcyBwYXJ0IG9mIGl0cyBhbWJpdGlvbiB0byBjcmVhdGUgYW4gYWRkaXRpb25hbCAzIG1pbGxpb24gYXBwcmVudGljZXNoaXAgc3RhcnRzIGluIEVuZ2xhbmQsIGJ5IDIwMjAsIGFuZCBpbiBkb2luZyBzbywgZGV2ZWxvcCB2b2NhdGlvbmFsIHNraWxscywgaW5jcmVhc2luZyB0aGUgcXVhbnRpdHkgYW5kIHF1YWxpdHkgb2YgdGhlIGFwcHJlbnRpY2VzaGlwIGV4cGVyaWVuY2UuV2VzdCBTdXNzZXggQ291bnR5IENvdW5jaWwgaGFzIGJlZW4gdHJhbnNpdGlvbmluZyBvdmVyIHRvIHRoZSBuZXcgYXBwcmVudGljZXNoaXAgYXJyYW5nZW1lbnRzIHdoaWNoIG1lYW4gdGhhdCBwdWJsaWMgc2VjdG9yIGJvZGllcyBjYW4gbm93IHBsYW4gYW5kIGZ1bmQgYXBwcmVudGljZXNoaXAgcXVhbGlmaWNhdGlvbnMgZm9yIHRoZWlyIHN0YWZmIHJhbmdpbmcgZnJvbSBsZXZlbCAyIChlcXVpdmFsZW50IHRvIEdDU0UgbGV2ZWwpIHF1YWxpZmljYXRpb25zIHJpZ2h0IHVwIHRvIGRlZ3JlZSBhbmQgbWFzdGVycyBsZXZlbCBhcHByZW50aWNlc2hpcHMuXFxuXFxuQSBudW1iZXIgb2YgbmV3IEFwcHJlbnRpY2VzaGlwIFN0YW5kYXJkcyBhcmUgYmVpbmcgZGV2ZWxvcGVkIHdoaWNoIHdpbGwgcHJvdmlkZSBncmVhdGVyIG9wcG9ydHVuaXRpZXMgZm9yIHB1YmxpYyBzZWN0b3IgYXBwcmVudGljZXMgd2hlbiB0aGV5IGNvbWUgb24tc3RyZWFtLiBTZXZlcmFsIG9mIHRoZXNlIHN0YW5kYXJkcyB3aWxsIGJlIHZlcnkgaW1wb3J0YW50IGluIGZpbGxpbmcgc2tpbGxzIHNob3J0YWdlcyB3aXRoaW4gdGhlIENvdW5jaWwgaW4gbWFueSBvY2N1cGF0aW9uYWwgc2tpbGxzIHNob3J0YWdlIGFyZWFzIHN1Y2ggYXMgVGVhY2hlcnMsIE9jY3VwYXRpb25hbCBUaGVyYXBpc3RzLCBDaXZpbCBFbmdpbmVlcnMgYW5kIFNvY2lhbCBXb3JrZXJzIHRvIG5hbWUgYnV0IGEgZmV3LiBUaGUgZGV2ZWxvcG1lbnQgb2YgdGhlc2Ugc3RhbmRhcmRzIGhhcyBoYWQgbXVjaCBncmVhdGVyIGludm9sdmVtZW50IGZyb20gZW1wbG95ZXJzIHdobyBoYXZlIGJlZW4gYWN0aXZlbHkgaW52b2x2ZWQgaW4gZGV2ZWxvcGluZyB0aGUgbmV3IGFwcHJlbnRpY2VzaGlwIHN0YW5kYXJkIHF1YWxpZmljYXRpb25zLlxcblxcbldlIGhhdmUgY29udGludWVkIG91ciBhcHByZW50aWNlcyBmcm9tIHRoZSAyMDE2LzIwMTcgZnJvbSB0aGUgb2xkIGZyYW1ld29yayBhbmQgaGF2ZSBhbHNvIHNpZ25lZCB1cCBhIG51bWJlciBvZiBhcHByZW50aWNlcyB1bmRlciB0aGUgbmV3IGFycmFuZ2VtZW50cyBpbiBhcmVhcyBzdWNoIGFzIGJ1c2luZXNzIGFkbWluaXN0cmF0aW9uLCBhc3Npc3RhbnQgYWNjb3VudGFuY3ksIHByb2plY3QgbWFuYWdlbWVudCwgZmlyZSB2ZWhpY2xlIG1haW50ZW5hbmNlIGFuZCB0b3duIHBsYW5uaW5nLiBBcyB0aGUgbmV3IEFwcHJlbnRpY2VzaGlwIFN0YW5kYXJkcyx3aGljaCBhcmUgc3RpbGwgaW4gZGV2ZWxvcG1lbnQsIGJlY29tZSBhcHByb3ZlZCwgd2UgYXJlIGNvbmZpZGVudCB0aGF0IG1hbnkgbW9yZSBzdGFmZiBhbmQgbmV3IGFwcHJlbnRpY2VzIHdpbGwgYmUgYWJsZSB0byB0YWtlIHVwIGZ1cnRoZXIgb3Bwb3J0dW5pdGllcyBvdmVyIHRoZSBjb21pbmcgeWVhci4gVGhlc2Ugd2lsbCBjb250cmlidXRlIHRvIHRoZSBwcm9mZXNzaW9uYWxpemF0aW9uIGFuZCB1cHNraWxsaW5nIG9mIG91ciB3b3JrZm9yY2UgZW5hYmxpbmcgYW5kIHN1cHBvcnRpbmcgdGhlbSB0byBjb250aW51b3VzbHkgZGV2ZWxvcCBhbmQgaW1wcm92ZSB0aGUgZGVsaXZlcnkgb2YgZWZmZWN0aXZlIHNlcnZpY2VzIHRvIG91ciBsb2NhbCBjb21tdW5pdHkuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzdGOTI5QTNBLTg1MTAtNDAzRC05MjE1LTIzN0UzNTRGNTVGNFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJVbmRlciB0aGUgbmV3IGFwcHJlbnRpY2VzaGlwIHJlZm9ybXMgdGhlIENvdW5jaWzigJlzIHRhcmdldCBmb3IgYXBwcmVudGljZXMgaGFzIGNoYW5nZWQuIEFzIGEgcHVibGljIHNlY3RvciBib2R5IHdlIGFyZSByZXF1aXJlZCB0byBkZWxpdmVyIGNpcmNhIDM2MCBhcHByZW50aWNlcyBwZXIgYW5udW0gYWNyb3NzIG91ciBvcmdhbmlzYXRpb24uXFxuXFxuQ2hhbGxlbmdlcyBhc3NvY2lhdGVkIHdpdGggYnJpbmdpbmcgaW4gdGhlIG5ldyBhcnJhbmdlbWVudHMg4oCTIGluY2x1ZGluZyBzb21lIG9mIHRoZSBrZXkgbmV3IGFwcHJlbnRpY2VzaGlwIHN0YW5kYXJkcyBub3QgeWV0IGJlaW5nIGF2YWlsYWJsZSwgdGhlIGZ1bmRpbmcgY3Jpc2lzIGluIG91ciBzY2hvb2xzLCBwcm9jdXJlbWVudCB0aW1lbGluZXMgYW5kIHRoZSBuZWVkIGZvciBtYW5hZ2VycyB0byByZWxlYXNlIHRoZWlyIGFwcHJlbnRpY2VzIGZvciAyMCUgb2ZmIHRoZSBqb2IgdHJhaW5pbmcgbWVhbiB0aGF0IHdlIGhhdmUgYSB3YXkgdG8gZ28gdG8gbWVldCBvdXIgdGFyZ2V0IGJ1dCB3ZSBhbnRpY2lwYXRlIGEgcmlzZSBpbiB0aGUgdXB0YWtlIG9mIHRyYWluaW5nIG92ZXIgdGhlIGNvdXJzZSBvZiAyMDE4LzIwMTkgYXMgbW9yZSBuZXcgU3RhbmRhcmRzIGFyZSBhcHByb3ZlZCB3aGljaCB3ZSBjYW4gYWN0aXZlbHkgdXNlLlxcblxcbkluIHByZXBhcmF0aW9uIGZvciB0aGVzZSBkZXZlbG9wbWVudHMgdGhlIExlYXJuaW5nICYgRGV2ZWxvcG1lbnQgQ29tbWlzc2lvbmluZyB0ZWFtOlxcblxcbiogSGF2ZSBtZXQgd2l0aCBhbGwgRGlyZWN0b3JzIHRvIGJyaWVmIHRoZW0gYW5kIHRoZWlyIG1hbmFnZXJzIG9mIHRoZSBvcHBvcnR1bml0aWVzIHRoYXQgYXJlIG9yIHdpbGwgYmVjb21lIGF2YWlsYWJsZSBmb3IgdGhlaXIgZGlyZWN0b3JhdGVzXFxuKiBIYXZlIGlkZW50aWZpZWQgYXBwcmVudGljZXNoaXAgdHJhaW5pbmcgb3Bwb3J0dW5pdGllcyBmb3IgZWFjaCBkaXJlY3RvcmF0ZVxcbiogSGF2ZSBtZXQgd2l0aCBhbGwgU2Nob29scyBhbmQgYSBudW1iZXIgb2YgQm9hcmRzIG9mIEdvdmVybm9yc1xcbiogSWRlbnRpZmllZCBhcHByb3ByaWF0ZSB0cmFpbmluZyBvcHBvcnR1bml0aWVzIGZvciBTY2hvb2xzXFxuKiBQcm92aWRlZCBpbmZvcm1hdGlvbiB0byBkaXJlY3RvcmF0ZSBIZSBDb25zdWx0YW50cyBpbiBvcmRlciBmb3Igd29ya2ZvcmNlIHBsYW5uaW5nIHRvIHRha2UgcGxhY2UgdGhhdCBlbmNvbXBhc3NlcyB0aGUgdGFrZSB1cCBvZiBhcHByZW50aWNlc2hpcCB0cmFpbmluZ1xcbiogQXJlIHdvcmtpbmcgd2l0aCBDb21tdW5pY2F0aW9ucyAmIEVuZ2FnZW1lbnQgdG8gZGV2ZWxvcCBhIHByb21vdGlvbmFsIGNhbXBhaWduIGZvciBhbGwgc3RhZmYgYW5kIG1hbmFnZXJzIHNvIHRoZSB0cmFpbmluZyBvZmZlciByZWFjaGVzIGV2ZXJ5b25lLlxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoaXMgcXVhcnRlcnMgZmlndXJlcyBwbHVtbWV0ZWQgaW4gSnVseSBhbmQgQXVndXN0IGFuZCBzdWJzZXF1ZW50bHkgZ3JldyBpbiBTZXB0ZW1iZXIgdG8gdGhlaXIgaGlnaGVzdCBsZXZlbCBmb3IgYWxtb3N0IGEgeWVhci4gVGhleSBhcmUgeWV0IHRvIHJpc2UgZnVydGhlciBhcyB0aGUgeWVhciBwcm9ncmVzc2VzIGFuZCBpdCBpcyBleHRyZW1lbHkgbGlrZWx5IHRoaXMgbWVhc3VyZSB3aWxsIGJlIG1ldCB0aHJvdWdob3V0IHRoZSB5ZWFyLiBUaGUgQ291bnR5IENvdW5jaWwgaGFzIGJlZW4gcHJvY3VyaW5nIEFwcHJlbnRpY2VzaGlwIFRyYWluaW5nIHByb3ZpZGVycyBpbiBvcmRlciB0byBzcGVuZCBpdHMgbmV3IEFwcHJlbnRpY2VzaGlwIExldnkgZnVuZCBmb3IgQXBwcmVudGljZXNoaXAgdHJhaW5pbmcgYW5kIHRoaXMgbmV3IHdheSBvZiBpbnZlc3RtZW50IGlzIGhhdmluZyBhIHBvc2l0aXZlIGltcGFjdCBvbiBvdXIgdGFrZSB1cCBvZiBhcHByZW50aWNlc2hpcHMuIFRoZSBmdW5kIGNhbiBiZSB1c2VkIHRvIHBheSBmb3IgYXBwcmVudGljZXNoaXAgdHJhaW5pbmcgZm9yIGV4aXN0aW5nIGVtcGxveWVlcyB3aGljaCBzaG91bGQgc2VlIGEgcmlzZSBpbiB0aGUgbnVtYmVyIG9mIGV4aXN0aW5nIGVtcGxveWVlcyBpbiBib3RoIGNvdW5jaWwgYW5kIHNjaG9vbCBzZXJ2aWNlcyB3aG8gc3R1ZHkgYSBwcm9mZXNzaW9uYWwgcXVhbGlmaWNhdGlvbiB1c2luZyB0aGlzIHJvdXRlLiBNb3JlIGFwcHJlbnRpY2VzaGlwIHRyYWluaW5nIHBhdGh3YXlzIGFyZSBiZWluZyBkZXZlbG9wZWQgYW5kIGJlY29taW5nIGF2YWlsYWJsZSB0byBlbXBsb3llcnMgd2hpY2ggd2lsbCBhbHNvIGhlbHAgdXMgdG8gZ3JvdyBvdXIgYXBwcmVudGljZXNoaXAgb2ZmZXIgaW4gYm90aCBzY2hvb2xzIGFuZCBjb3Jwb3JhdGUuIEFuIE9mZmljZXIgaGFzIGJlZW4gZGVzaWduYXRlZCB0byB3b3JrIHdpdGggc2Nob29scyBmb3IgYSB5ZWFyIHRvIGVuY291cmFnZSB0aGVpciBlbmdhZ2VtZW50IHdpdGggYXBwcmVudGljZXNoaXBzIHdoaWNoIGFpbXMgdG8gc2VlIGFuIGluY3JlYXNlIGluIHRoZSBudW1iZXIgb2YgQXBwcmVudGljZXMgd29ya2luZyBmb3IgdGhlbS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDEgLSBKdW5lIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuKFRoZSBjb3VudHkgZmlndXJlcywgbmF0aW9uYWwgZGF0YSBub3QgYXZhaWxhYmxlIGZvciB0aGUgY3VycmVudCBxdWFydGVyIGJ1dCB3aWxsIGJlIGF2YWlsYWJsZSBpbiBTZXB0ZW1iZXIgLSBxdWFydGVyIDIpXFxuXFxuVGhlIGNvdW50eSBjb3VuY2ls4oCZcyBBcHByZW50aWNlc2hpcCBudW1iZXJzIGhhdmUgcmVtYWluZWQgc3RlYWR5IGZvciB0aGlzIHF1YXJ0ZXIgYW5kIGFyZSBhcyB3ZSBleHBlY3RlZCB3aXRoIGxpdHRsZSBjaGFuZ2UvIGdyb3d0aC4gVGhlIENvdW50eSBDb3VuY2lsIGhhcyBiZWVuIGZvY3VzZWQgb24gaXRzIHByZXBhcmF0aW9uIGZvciB0aGUgYXBwcmVudGljZXNoaXAgbGV2eSBnbyBsaXZlLiBUaGVzZSBwcmVwYXJhdGlvbnMgaW5jbHVkZSB0aGUgc2V0LXVwIG9mIGEgbmV3IHByb2N1cmVtZW50IHN5c3RlbSBmb3IgYXBwcmVudGljZXNoaXAgdHJhaW5pbmcgYW5kIGEgbmV3IHN0YWZmIHN0cnVjdHVyZSB0byBzdXBwb3J0IGFwcHJlbnRpY2VzaGlwcyBpbnRvIHRoZSBmdXR1cmUuIFRoZSBzdHJ1Y3R1cmUgdGhpcyBpbmNsdWRlIGEgcm9sZSBkZWRpY2F0ZWQgdG8gc3VwcG9ydGluZyBzY2hvb2xzIGluIHRoZSBjb3VudHkgYXMgdGhlIGFyZWEgd2hvIGVtcGxveSB0aGUgbGFyZ2VzdCBwZXJjZW50YWdlIG9mIG91ciB3b3JrZm9yY2UuIFRoZSBuZXcgcHJvY3VyZW1lbnQgc3lzdGVtIHdlbnQgbGl2ZSBhdCB0aGUgZW5kIG9mIEp1bmUgYW5kIHdlIGhhdmUgc3RhcnRlZCB0byBzdWJtaXQgdGVuZGVycyBmb3IgYXBwcmVudGljZXNoaXAgdHJhaW5pbmcgcHJvdmlkZXJzIHRvIGRlbGl2ZXIgdGhlIHF1YWxpZmljYXRpb25zIHdlIHJlcXVpcmUuIFdlIHdpbGwgYnJpbmcgbmV3cyBvbiB0aGUgcmVzdWx0cyBvZiB0aGlzIGV4ZXJjaXNlIGluIHRoZSBuZXh0IHF1YXJ0ZXIgd2hlbiBpdCBpcyBob3BlZCBvdXIgQXBwcmVudGljZSBudW1iZXJzIGFyZSBzdGFydGluZyB0byBpbmNyZWFzZS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipOb3ZlbWJlciAyMDE2KipcXG5cXG5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1xcblxcbkFwcHJlbnRpY2VzaGlwIHN0YXJ0cyBpbiB0aGUgY291bnR5IGhhcyBpbmNyZWFzZWQgdGhpcyB5ZWFyIGFuZCBub3cgZXhjZWVkIHRoZSBwZWFrIG9mIDIwMTIvMTMgd2hlbiB3ZSBhY2hpZXZlZCA1LDYxMCBzdGFydHMuIFRoZSBmb2xsb3dpbmcgdHdvIHllYXJzIHdlcmUgd2VsbCBiZWxvdyB0aGlzIGxldmVsLiBDaGljaGVzdGVyIERpc3RyaWN0IENvdW5jaWwgaGFzIGhhZCB0aGUgbW9zdCBzaWduaWZpY2FudCBpbmNyZWFzZSBpbiBzdGFydHMgYW5kIHVwIHNvbWUgMTYuNSUgb24gbGFzdCB5ZWFyLiBXb3J0aGluZyBoYXMgc2VlbiBhIHNpZ25pZmljYW50IGRlY3JlYXNlIHdpdGggNTAgc3RhcnRzIGxlc3MgdGhhbiB0aGV5IGFjaGlldmVkIGluIDIwMTQvMTUuIFdlIGhhdmUgc3Bva2VuIHdpdGggdGhlIERpc3RyaWN0IENvdW5jaWwgc28gdGhleSBhcmUgYXdhcmUgb2YgdGhpcyBhbmQgY29uc2lkZXJpbmcgd2F5cyBvZiBpbmZsdWVuY2luZyB0aGlzIHBhdHRlcm4gaW4gdGhlIGZ1dHVyZS5cXG5cXG5UaGUgQXBwcmVudGljZXNoaXAgbGV2eSB3aWxsIGJlIGxpdmUgZnJvbSBNYXkgMjAxNyBwcm92aWRpbmcgYSBuZXcgc3lzdGVtIGFuZCB3YXlzIG9mIGVtcGxveWVycyBhbmQgbGVhcm5pbmcgcHJvdmlkZXJzIGFjY2Vzc2luZyBmdW5kaW5nIGZvciB0aGVpciBBcHByZW50aWNlc2hpcCB0cmFpbmluZy4gVGhpcyBtYXkgbWVhbiB1bmNlcnRhaW50eSBhcyBlbXBsb3llcnMgbGVhcm4gYW5kIGFkYXB0IHRvIHRoZSBuZXcgc3lzdGVtIHdoaWNoIG1heSBpbXBhY3Qgb24gdGhlIHN0YXJ0IG51bWJlcnMgbmV4dCB5ZWFyLiBIb3dldmVyIHRoZSBsb25nZXIgdGVybSBpbnRlbnRpb24gaXMgdG8gaW5jcmVhc2UgdGhlIG51bWJlciBvZiBBcHByZW50aWNlcyBpbiB0aGUgY291bnR5IGFuZCB0aGUgQ291bnR5IENvdW5jaWwgYW5kIG91ciBEaXN0cmljdCBhbmQgQm9yb3VnaCBwYXJ0bmVycyB3aWxsIGJlIG1pbmRmdWwgb2YgaG93IHdlIGNvdWxkIHN1cHBvcnQgYW5kIGNvbW11bmljYXRlIHdpdGggZW1wbG95ZXJzIHRvIGhlbHAgZW5jb3VyYWdlIHRoZWlyIGVuZ2FnZW1lbnQuXFxuXFxuXCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJJbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgYXBwcmVudGljZXNoaXBzIGluIFdlc3QgU3Vzc2V4XCIsXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiV2UgYWltIHRvIGltcHJvdmUgdGhlIG51bWJlciBvZiB0aGUgQXBwcmVudGljZXNoaXBzIGluIFdlc3QgU3Vzc2V4IGJ5IDUlIG9yIG1vcmUsIHllYXIgb24geWVhci5cIixcInRpdGxlX2ltYWdlXCI6XCIvYXBpL2Fzc2V0cy85RTZENkI3QS1CQzZCLTQ0NEYtQjJGRi1GMTg2OTA0NzE0RDJcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAwNi0wNC0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiJhcHByZW50aWNlcyIsInRhcmdldF90eXBlIjoicmVsYXRpdmUiLCJ0YXJnZXRfZGVsdGEiOjAsInRhcmdldF9kZWx0YV9pc19wZXJjZW50IjpmYWxzZSwiYmFzZWxpbmUiOjYwODAsIm1ldHJpYyI6eyJtZXRhZGF0YSI6IiIsImlkIjoiMnA4ay02cDg1In0sImNvbXBhcmlzb24iOnsiY29tcGFyaXNvbl9mdW5jdGlvbiI6Ij4ifSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJlZGl0XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjozLFwieWVhclwiOjIwMDZ9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOH0sXCJhY3Rpb25fdHlwZVwiOlwibWFpbnRhaW5cIixcIm1haW50YWluX3R5cGVcIjpcIj5cIn0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTR9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH19LFwic3RhcnRcIjpcIjIwMTQtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTQtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJ0aGUgbnVtYmVyIG9mIGFwcHJlbnRpY2VzIGluIFdlc3QgU3Vzc2V4XCIsXCJ1c2VfcHJvZ3Jlc3Nfb3ZlcnJpZGVcIjpmYWxzZSxcInByb2dyZXNzX292ZXJyaWRlXCI6XCJnb29kXCJ9In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjA0OjIyLjE4M1oiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOTowNDoyMi4xODNaIiwidGFyZ2V0X3RvbGVyYW5jZSI6MjkwLCJpZCI6InY3OW4tcTZreiJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbeyJtZXRhZGF0YSI6IiIsImlkIjoicnpoeS1ka2I0In1dLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjM5OjUzLjMwMVoiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOTowNDoyMi4yMzlaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6Mzk6NTMuMzAxWiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoic2lmai1ucG01IiwibmFtZSI6IlVuZW1wbG95bWVudCByYXRlIHBlb3BsZSBhZ2VkIDUwLTY0IiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcIm9wdGlvbnNcIjp7XCJwYXJlbnRcIjp7XCJvcHRpb25zXCI6e1wicGFyZW50XCI6e1wib3B0aW9uc1wiOntcInBhcmVudFwiOntcIl9ldmVudHNcIjp7XCJtYXhMaXN0ZW5lcnNcIjowfSxcIm5ld0xpc3RlbmVyXCI6ZmFsc2UsXCJfY29uZlwiOntcImRlbGltaXRlclwiOlwiOlwiLFwibWF4TGlzdGVuZXJzXCI6MH0sXCJkZWxpbWl0ZXJcIjpcIjpcIixcIl9vdXR3YXJkTGlzdGVuZXJzXCI6W10sXCJfaWRcIjoxMTY0LFwibGlzdFwiOltdfX0sXCJfZXZlbnRzXCI6e1wibWF4TGlzdGVuZXJzXCI6MH0sXCJuZXdMaXN0ZW5lclwiOmZhbHNlLFwiX2NvbmZcIjp7XCJkZWxpbWl0ZXJcIjpcIjpcIixcIm1heExpc3RlbmVyc1wiOjB9LFwiZGVsaW1pdGVyXCI6XCI6XCIsXCJfb3V0d2FyZExpc3RlbmVyc1wiOltdLFwiX2lkXCI6MzI5MjIsXCJfcGFyZW50XCI6e1wiX2V2ZW50c1wiOntcIm1heExpc3RlbmVyc1wiOjB9LFwibmV3TGlzdGVuZXJcIjpmYWxzZSxcIl9jb25mXCI6e1wiZGVsaW1pdGVyXCI6XCI6XCIsXCJtYXhMaXN0ZW5lcnNcIjowfSxcImRlbGltaXRlclwiOlwiOlwiLFwiX291dHdhcmRMaXN0ZW5lcnNcIjpbXSxcIl9pZFwiOjExNjQsXCJsaXN0XCI6W119LFwibGlzdFwiOltdfX0sXCJfZXZlbnRzXCI6e1wibWF4TGlzdGVuZXJzXCI6MH0sXCJuZXdMaXN0ZW5lclwiOmZhbHNlLFwiX2NvbmZcIjp7XCJkZWxpbWl0ZXJcIjpcIjpcIixcIm1heExpc3RlbmVyc1wiOjB9LFwiZGVsaW1pdGVyXCI6XCI6XCIsXCJfb3V0d2FyZExpc3RlbmVyc1wiOltdLFwiX2lkXCI6MzI5MzgsXCJfcGFyZW50XCI6e1wib3B0aW9uc1wiOntcInBhcmVudFwiOntcIl9ldmVudHNcIjp7XCJtYXhMaXN0ZW5lcnNcIjowfSxcIm5ld0xpc3RlbmVyXCI6ZmFsc2UsXCJfY29uZlwiOntcImRlbGltaXRlclwiOlwiOlwiLFwibWF4TGlzdGVuZXJzXCI6MH0sXCJkZWxpbWl0ZXJcIjpcIjpcIixcIl9vdXR3YXJkTGlzdGVuZXJzXCI6W10sXCJfaWRcIjoxMTY0LFwibGlzdFwiOltdfX0sXCJfZXZlbnRzXCI6e1wibWF4TGlzdGVuZXJzXCI6MH0sXCJuZXdMaXN0ZW5lclwiOmZhbHNlLFwiX2NvbmZcIjp7XCJkZWxpbWl0ZXJcIjpcIjpcIixcIm1heExpc3RlbmVyc1wiOjB9LFwiZGVsaW1pdGVyXCI6XCI6XCIsXCJfb3V0d2FyZExpc3RlbmVyc1wiOltdLFwiX2lkXCI6MzI5MjIsXCJfcGFyZW50XCI6e1wiX2V2ZW50c1wiOntcIm1heExpc3RlbmVyc1wiOjB9LFwibmV3TGlzdGVuZXJcIjpmYWxzZSxcIl9jb25mXCI6e1wiZGVsaW1pdGVyXCI6XCI6XCIsXCJtYXhMaXN0ZW5lcnNcIjowfSxcImRlbGltaXRlclwiOlwiOlwiLFwiX291dHdhcmRMaXN0ZW5lcnNcIjpbXSxcIl9pZFwiOjExNjQsXCJsaXN0XCI6W119LFwibGlzdFwiOltdfSxcImxpc3RcIjpbXX19LFwiX2V2ZW50c1wiOntcIm1heExpc3RlbmVyc1wiOjB9LFwibmV3TGlzdGVuZXJcIjpmYWxzZSxcIl9jb25mXCI6e1wiZGVsaW1pdGVyXCI6XCI6XCIsXCJtYXhMaXN0ZW5lcnNcIjowfSxcImRlbGltaXRlclwiOlwiOlwiLFwiX291dHdhcmRMaXN0ZW5lcnNcIjpbXSxcIl9pZFwiOjMyOTM5LFwiX3BhcmVudFwiOntcIm9wdGlvbnNcIjp7XCJwYXJlbnRcIjp7XCJvcHRpb25zXCI6e1wicGFyZW50XCI6e1wiX2V2ZW50c1wiOntcIm1heExpc3RlbmVyc1wiOjB9LFwibmV3TGlzdGVuZXJcIjpmYWxzZSxcIl9jb25mXCI6e1wiZGVsaW1pdGVyXCI6XCI6XCIsXCJtYXhMaXN0ZW5lcnNcIjowfSxcImRlbGltaXRlclwiOlwiOlwiLFwiX291dHdhcmRMaXN0ZW5lcnNcIjpbXSxcIl9pZFwiOjExNjQsXCJsaXN0XCI6W119fSxcIl9ldmVudHNcIjp7XCJtYXhMaXN0ZW5lcnNcIjowfSxcIm5ld0xpc3RlbmVyXCI6ZmFsc2UsXCJfY29uZlwiOntcImRlbGltaXRlclwiOlwiOlwiLFwibWF4TGlzdGVuZXJzXCI6MH0sXCJkZWxpbWl0ZXJcIjpcIjpcIixcIl9vdXR3YXJkTGlzdGVuZXJzXCI6W10sXCJfaWRcIjozMjkyMixcIl9wYXJlbnRcIjp7XCJfZXZlbnRzXCI6e1wibWF4TGlzdGVuZXJzXCI6MH0sXCJuZXdMaXN0ZW5lclwiOmZhbHNlLFwiX2NvbmZcIjp7XCJkZWxpbWl0ZXJcIjpcIjpcIixcIm1heExpc3RlbmVyc1wiOjB9LFwiZGVsaW1pdGVyXCI6XCI6XCIsXCJfb3V0d2FyZExpc3RlbmVyc1wiOltdLFwiX2lkXCI6MTE2NCxcImxpc3RcIjpbXX0sXCJsaXN0XCI6W119fSxcIl9ldmVudHNcIjp7XCJtYXhMaXN0ZW5lcnNcIjowfSxcIm5ld0xpc3RlbmVyXCI6ZmFsc2UsXCJfY29uZlwiOntcImRlbGltaXRlclwiOlwiOlwiLFwibWF4TGlzdGVuZXJzXCI6MH0sXCJkZWxpbWl0ZXJcIjpcIjpcIixcIl9vdXR3YXJkTGlzdGVuZXJzXCI6W10sXCJfaWRcIjozMjkzOCxcIl9wYXJlbnRcIjp7XCJvcHRpb25zXCI6e1wicGFyZW50XCI6e1wiX2V2ZW50c1wiOntcIm1heExpc3RlbmVyc1wiOjB9LFwibmV3TGlzdGVuZXJcIjpmYWxzZSxcIl9jb25mXCI6e1wiZGVsaW1pdGVyXCI6XCI6XCIsXCJtYXhMaXN0ZW5lcnNcIjowfSxcImRlbGltaXRlclwiOlwiOlwiLFwiX291dHdhcmRMaXN0ZW5lcnNcIjpbXSxcIl9pZFwiOjExNjQsXCJsaXN0XCI6W119fSxcIl9ldmVudHNcIjp7XCJtYXhMaXN0ZW5lcnNcIjowfSxcIm5ld0xpc3RlbmVyXCI6ZmFsc2UsXCJfY29uZlwiOntcImRlbGltaXRlclwiOlwiOlwiLFwibWF4TGlzdGVuZXJzXCI6MH0sXCJkZWxpbWl0ZXJcIjpcIjpcIixcIl9vdXR3YXJkTGlzdGVuZXJzXCI6W10sXCJfaWRcIjozMjkyMixcIl9wYXJlbnRcIjp7XCJfZXZlbnRzXCI6e1wibWF4TGlzdGVuZXJzXCI6MH0sXCJuZXdMaXN0ZW5lclwiOmZhbHNlLFwiX2NvbmZcIjp7XCJkZWxpbWl0ZXJcIjpcIjpcIixcIm1heExpc3RlbmVyc1wiOjB9LFwiZGVsaW1pdGVyXCI6XCI6XCIsXCJfb3V0d2FyZExpc3RlbmVyc1wiOltdLFwiX2lkXCI6MTE2NCxcImxpc3RcIjpbXX0sXCJsaXN0XCI6W119LFwibGlzdFwiOltdfSxcImxpc3RcIjpbXSxcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhpcyBnb2FsIGlzIHRyYWNrZWQgYnkgbWVhc3VyaW5nIHRoZSAlIG9mIHBlb3BsZSBhZ2VkIDUwLTY0IGNsYWltaW5nIEpvYnNlZWtlcnMgQWxsb3dhbmNlIGFzIGEgcHJvcG9ydGlvbiBvZiB0aGUgcmVzaWRlbnQgcG9wdWxhdGlvbiBvZiB0aGUgc2FtZSBhZ2UuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqRmVicnVhcnkgMjAxOCBVcGRhdGUqKlxcblxcbi0gLSAtXFxuXFxuTGF0ZXN0IGZpZ3VyZXMgZm9yIDUwLTY0IGNsYWltaW5nIEpvYnNlZWtlcidzIEFsbG93YW5jZVxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy80QUJDMTkzNi0wRDQ2LTQxQzctQTAzNi0yODRGMTczMTQ2MTVcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMg4oCTIEphbnVhcnkgMjAxOCoqXFxuXFxuVGhlIHVuZW1wbG95bWVudCByYXRlIGlzIGdlbmVyYWxseSBjYWxjdWxhdGVkIGJ5IHRha2luZyB0aGUgbnVtYmVyIG9mIHBlb3BsZSB3aG8gYXJlIHVuZW1wbG95ZWQgYW5kIGFyZSBsb29raW5nIGZvciBhIHBhaWQgam9iIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgZWNvbm9taWNhbGx5IGFjdGl2ZSBwb3B1bGF0aW9uIGkuZS4gdGhlIHBvcHVsYXRpb24gd2hvIGFyZSBlaXRoZXIgZW1wbG95ZWQgb3IgdW5lbXBsb3llZCBhbmQgbG9va2luZyBmb3Igd29yay5cXG5cXG5UaGVyZSBhcmUgdHdvIG1lYXN1cmVzIG9mIHVuZW1wbG95bWVudC5cXG5cXG5UaGUgZmlyc3QgaXMgdGhl4oCYb2ZmaWNpYWzigJkgZXN0aW1hdGUgdXNpbmcgdGhlIEludGVybmF0aW9uYWwgTGFib3VyIE9yZ2FuaXNhdGlvbiAoSUxPKSBkZWZpbml0aW9uIHdoaWNoIGNvbmZvcm1zIHRvIHRoZSBpbnRlcm5hdGlvbmFsIGRlZmluaXRpb24gb2YgdW5lbXBsb3ltZW50LCB0aGUgbWVhc3VyZSBpcyBiYXNlZCBvbiBhIHF1YXJ0ZXJseSBzYW1wbGUgc3VydmV5IG9mIGhvdXNlaG9sZHMgdW5kZXJ0YWtlbiBieSBPTlMgYXMgcGFydCBvZiB0aGUgQW5udWFsIFBvcHVsYXRpb24gU3VydmV5IChBUFMpLiBUaGUgdW5lbXBsb3ltZW50IHJhdGVzIGZyb20gdGhlIEFQUyBob3dldmVyIGFyZSBub3QgYnJva2VuIGRvd24gYnkgYWdlIGJhbmRzLlxcblxcblRoZSBzZWNvbmQgbWVhc3VyZSwgdGhlIGNsYWltYW50IGNvdW50LCB0ZW5kcyB0byBiZSBhIGxvd2VyIG1lYXN1cmUgb2YgdGhlIHR3byBiZWNhdXNlIHNvbWUgdW5lbXBsb3llZCBhcmUgbm90IGVudGl0bGVkIHRvIGNsYWltIGJlbmVmaXRzIG9mIGFueSBzb3J0IG9yIGNob29zZSBub3QgdG8gZG8gc28uIEl0IGlzIHNlZW4gYnkgc29tZSBhcyBtb3JlIG9mIGEgd2VsZmFyZSBjb3VudCBhbmQgbm90IHN0cmljdGx5IGFuIHVuZW1wbG95bWVudCBjb3VudC4gVGhlIGRhdGEgaXMgcHVibGlzaGVkIG1vbnRobHkgYW5kIGlzIGluZGljYXRpdmUgb2YgcmVsYXRpdmUgdW5lbXBsb3ltZW50IGxldmVscyBpbiB0aGUgbG9jYWwgYXJlYS5cXG5cXG5Ib3dldmVyLCB0aGUgY2xhaW1hbnQgY291bnQgaGFzIHVuZGVyZ29uZSBzdWJzdGFudGlhbCBjaGFuZ2Ugb3ZlciByZWNlbnQgeWVhcnMuIEluIDIwMTMgVW5pdmVyc2FsIENyZWRpdCB3YXMgaW50cm9kdWNlZCBhbmQgcm9sbGVkIG91dCBvdmVyIGEgcGVyaW9kIG9mIHllYXJzIGFuZCB3YXMgaW1wbGVtZW50ZWQgaW4gV2VzdCBTdXNzZXggZHVyaW5nIDIwMTUuIFVuaXZlcnNhbCBDcmVkaXQgaXMgYSBzaW5nbGUgbW9udGhseSBwYXltZW50IGZvciBwZW9wbGUgaW4gb3Igb3V0IG9mIHdvcmssIHdoaWNoIG1lcmdlcyB0b2dldGhlciBzb21lIG9mIHRoZSBleGlzdGluZyBtZWFucy10ZXN0ZWQgYmVuZWZpdHMgYW5kIHRheCBjcmVkaXRzIGluY2x1ZGluZyBJbmNvbWUtYmFzZWQgSm9ic2Vla2VyJ3MgQWxsb3dhbmNlIGFuZCBpbmNvbWUtcmVsYXRlZCBFbXBsb3ltZW50IGFuZCBTdXBwb3J0IEFsbG93YW5jZS5cXG5cXG5UaGVyZSBpcyBhbiBleHBlcmltZW50YWwgZGF0YSBzZXJpZXMgZ2l2aW5nIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiBwZW9wbGUgY2xhaW1pbmcgSm9ic2Vla2VyJ3MgQWxsb3dhbmNlIHBsdXMgdGhvc2Ugd2hvIGNsYWltIFVuaXZlcnNhbCBDcmVkaXQgYmVjYXVzZSB0aGV5IGFyZSBvdXQgb2Ygd29yaywgaXQgcmVwbGFjZXMgdGhlIG51bWJlciBvZiBwZW9wbGUgY2xhaW1pbmcgSm9ic2Vla2VyJ3MgQWxsb3dhbmNlIGFzIHRoZSBoZWFkbGluZSBpbmRpY2F0b3Igb2YgdGhlIG51bWJlciBvZiBwZW9wbGUgY2xhaW1pbmcgYmVuZWZpdHMgcHJpbmNpcGFsbHkgZm9yIHRoZSByZWFzb24gb2YgYmVpbmcgdW5lbXBsb3llZC4gSG93ZXZlciwgdGhlIHJhdGVzIGFyZSBub3QgYnJva2VuIGRvd24gaW50byBkaWZmZXJlbnQgYWdlIGdyb3Vwcy5cXG5cXG5UaGUgY291bnQgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcnMgQWxsb3dhbmNlIGlzIHN0aWxsIGF2YWlsYWJsZSBieSBhZ2Ugb2YgY2xhaW1hbnQgYW5kIGR1cmF0aW9uIG9mIGNsYWltaW5nLiBMb29raW5nIGF0IHRoZSBudW1iZXJzIGhvd2V2ZXIsIGl0IGRvZXMgYXBwZWFyIHRoYXQgdGhlIG51bWJlcnMgb2YgcGVyc29ucyBhZ2VkIDE2KyBhcyB3ZWxsIGFzIHRob3NlIHBlb3BsZSB3aXRoaW4gdGhlIDUwLTY0IGFnZSBicmFja2V0IGNsYWltaW5nIGVpdGhlciB1bml2ZXJzYWwgY3JlZGl0IG9yIEpvYiBTZWVrZXIgQWxsb3dhbmNlIGhhcyBpbmNyZWFzZWQgb3ZlciB0aGUgeWVhciBOb3ZlbWJlciAyMDE3LU5vdiAyMDE2LlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9EMURCQjU0NS0wRTcwLTQ4MDYtQUVGNC03MDc2QTBFNENCNjZcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIHRhYmxlIGJlbG93IHNob3dzIHRoZSBudW1iZXIgb2YgNTAtNjQgeWVhciBvbGRzIHdobyB3ZXJlIGNsYWltaW5nIG9ubHkgSlNBIHVwIHRvIE5vdmVtYmVyIDIwMTcsIGFuZCB0aGUgcmF0ZSBpLmUuIHRoZSBudW1iZXIgb2YgdGhvc2UgY2xhaW1pbmcgYXMgYSBwZXJjZW50YWdlIG9mIDUwLTY0IGFnZWQgcmVzaWRlbnRzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy83QTZGN0U4OC05Q0VGLTQ0RTctQkZGOC1BODQyRDhGMDg4NzBcIn0se1widHlwZVwiOlwidGV4dFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoZSB1bmVtcGxveW1lbnQgcmF0ZSBpcyBnZW5lcmFsbHkgY2FsY3VsYXRlZCBhcyBhIHByb3BvcnRpb24gb2YgdGhlIGVjb25vbWljYWxseSBhY3RpdmUgcG9wdWxhdGlvbiBpLmUuIHRoZSBwb3B1bGF0aW9uIHdobyBhcmUgZWl0aGVyIGVtcGxveWVkIG9yIHVuZW1wbG95ZWQgKGkuZSB0aG9zZSB3aG8gYXJlIG91dCBvZiB3b3JrIGJ1dCBhY3RpdmVseSBzZWVraW5nIGFuZCBhdmFpbGFibGUgdG8gd29yayDigJMgaXQgZG9lcyBub3QgaW5jbHVkZSByZXRpcmVkKS5cXG5cXG5UaGVyZSBhcmUgdHdvIG1lYXN1cmVzIG9mIHVuZW1wbG95bWVudC5cXG5cXG5UaGUgZmlyc3QgaXMgdGhl4oCYIG9mZmljaWFs4oCZIGVzdGltYXRlIHVzaW5nIHRoZSBJbnRlcm5hdGlvbmFsIExhYm91ciBPcmdhbmlzYXRpb24gKElMTykgZGVmaW5pdGlvbiB3aGljaCBjb25mb3JtcyB0byB0aGUgaW50ZXJuYXRpb25hbCBkZWZpbml0aW9uIG9mIHVuZW1wbG95bWVudCwgdGhlIG1lYXN1cmUgaXMgYmFzZWQgb24gYSBxdWFydGVybHkgc2FtcGxlIHN1cnZleSBvZiBob3VzZWhvbGRzIHVuZGVydGFrZW4gYnkgT05TIGFzIHBhcnQgb2YgdGhlIEFubnVhbCBQb3B1bGF0aW9uIFN1cnZleSAoQVBTKS4gVGhlIGxhdGVzdCBmaWd1cmVzIGhhdmUgYmVlbiByZXBvcnRlZCBpbiB0aGUgcHJldmlvdXMgcXVhcnRlciwgdGhvdWdoIGFyZSBub3QgYnJva2VuIGRvd24gYnkgYWdlIGJhbmRzLlxcblxcblRoZSBzZWNvbmQgbWVhc3VyZSwgdGhlIGNsYWltYW50IGNvdW50LCB0ZW5kcyB0byBiZSBhIGxvd2VyIG1lYXN1cmUgb2YgdGhlIHR3byBiZWNhdXNlIHNvbWUgdW5lbXBsb3llZCBhcmUgbm90IGVudGl0bGVkIHRvIGNsYWltIGJlbmVmaXRzIG9mIGFueSBzb3J0IG9yIGNob29zZSBub3QgdG8gZG8gc28uIEl0IGlzIHNlZW4gYnkgc29tZSBhcyBtb3JlIG9mIGEgd2VsZmFyZSBjb3VudCBhbmQgbm90IHN0cmljdGx5IGFuIHVuZW1wbG95bWVudCBjb3VudC5cXG5cXG5UaGUgZGF0YSBpcyBwdWJsaXNoZWQgbW9udGhseSBhbmQgaXMgaW5kaWNhdGl2ZSBvZiByZWxhdGl2ZSB1bmVtcGxveW1lbnQgbGV2ZWxzIGluIHRoZSBsb2NhbCBhcmVhLiBUaGUgY2xhaW1hbnQgY291bnQgaGFzIHVuZGVyZ29uZSBzdWJzdGFudGlhbCBjaGFuZ2Ugb3ZlciByZWNlbnQgeWVhcnMuIEluIDIwMTMgVW5pdmVyc2FsIENyZWRpdCB3YXMgaW50cm9kdWNlZCBhbmQgcm9sbGVkIG91dCBvdmVyIGEgcGVyaW9kIG9mIHllYXJzIGFuZCB3YXMgaW1wbGVtZW50ZWQgaW4gV2VzdCBTdXNzZXggZHVyaW5nIDIwMTUuIFVuaXZlcnNhbCBDcmVkaXQgaXMgYSBzaW5nbGUgbW9udGhseSBwYXltZW50IGZvciBwZW9wbGUgaW4gb3Igb3V0IG9mIHdvcmssIHdoaWNoIG1lcmdlcyB0b2dldGhlciBzb21lIG9mIHRoZSBleGlzdGluZyBtZWFucy10ZXN0ZWQgYmVuZWZpdHMgYW5kIHRheCBjcmVkaXRzIGluY2x1ZGluZyBJbmNvbWUtYmFzZWQgSm9ic2Vla2VyJ3MgQWxsb3dhbmNlIGFuZCBpbmNvbWUtcmVsYXRlZCBFbXBsb3ltZW50IGFuZCBTdXBwb3J0IEFsbG93YW5jZS5cXG5cXG5UaGVyZSBpcyBhbiBleHBlcmltZW50YWwgZGF0YSBzZXJpZXMgZ2l2aW5nIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiBwZW9wbGUgY2xhaW1pbmcgSm9ic2Vla2VyJ3MgQWxsb3dhbmNlIHBsdXMgdGhvc2Ugd2hvIGNsYWltIFVuaXZlcnNhbCBDcmVkaXQgYmVjYXVzZSB0aGV5IGFyZSBvdXQgb2Ygd29yaywgaXQgcmVwbGFjZXMgdGhlIG51bWJlciBvZiBwZW9wbGUgY2xhaW1pbmcgSm9ic2Vla2VyJ3MgQWxsb3dhbmNlIGFzIHRoZSBoZWFkbGluZSBpbmRpY2F0b3Igb2YgdGhlIG51bWJlciBvZiBwZW9wbGUgY2xhaW1pbmcgYmVuZWZpdHMgcHJpbmNpcGFsbHkgZm9yIHRoZSByZWFzb24gb2YgYmVpbmcgdW5lbXBsb3llZC4gVGhlIHRvdGFsIG51bWJlcnMgb2YgY2xhaW1hbnRzIGFuZCByYXRlcyBhcyBhIHByb3BvcnRpb24gb2YgcmVzaWRlbnRzIGFnZWQgMTYtNjQgYXJlIGluIHRoZSB0YWJsZSBiZWxvdzpcXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMjQyRUQyOTUtQUFGOS00QUQ2LUExMTUtOTIxMDQ4MEM0MTY2XCJ9LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhpcyBkYXRhIHNldCBob3dldmVyLCBkb2VzIG5vdCBnaXZlIGFuIHVuZW1wbG95bWVudCByYXRlIGJ5IGFnZSBicmVha2Rvd24uIFRoZSBjb3VudCBvZiBwZW9wbGUgY2xhaW1pbmcgSm9ic2Vla2VycyBBbGxvd2FuY2UgaXMgc3RpbGwgYXZhaWxhYmxlIGJ5IGFnZSBvZiBjbGFpbWFudCBhbmQgZHVyYXRpb24gb2YgY2xhaW1pbmcuXFxuXFxuIFxcblxcblRoZSB0YWJsZSBvbiB0aGUgcmlnaHQgc2hvd3MgdGhlIG51bWJlciBvZiA1MC02NCB5ZWFyIG9sZHMgd2hvIHdlcmUgY2xhaW1pbmcgSlNBIGluIEF1Z3VzdCAyMDE3LCBhbmQgdGhlIHJhdGUgaS5lLiB0aGUgbnVtYmVyIG9mIHRob3NlIGNsYWltaW5nIGFzIGEgcGVyY2VudGFnZSBvZiA1MC02NCByZXNpZGVudHMuXFxuXFxuXCJ9XSxbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMjdBMDFENjUtNTcwMy00NTI5LTg5M0QtRTA1NTdDNEQ1RDQzXCJ9XV19LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoZSB1bmVtcGxveW1lbnQgcmF0ZSBpcyBnZW5lcmFsbHkgY2FsY3VsYXRlZCBhcyBhIHByb3BvcnRpb24gb2YgdGhlIGVjb25vbWljYWxseSBhY3RpdmUgcG9wdWxhdGlvbiBpLmUuIHRoZSBwb3B1bGF0aW9uIHdobyBhcmUgZWl0aGVyIGVtcGxveWVkIG9yIHVuZW1wbG95ZWQgKGkuZSB0aG9zZSB3aG8gYXJlIG91dCBvZiB3b3JrIGJ1dCBhY3RpdmVseSBzZWVraW5nIGFuZCBhdmFpbGFibGUgdG8gd29yayDigJMgaXQgZG9lcyBub3QgaW5jbHVkZSByZXRpcmVkKS4gVGhlcmUgYXJlIHR3byBtZWFzdXJlcyBvZiB1bmVtcGxveW1lbnQuIFRoZSBmaXJzdCBpcyB0aGUg4oCYb2ZmaWNpYWzigJkgZXN0aW1hdGUgdXNpbmcgdGhlIEludGVybmF0aW9uYWwgTGFib3VyIE9yZ2FuaXNhdGlvbiAoSUxPKSBkZWZpbml0aW9uIHdoaWNoIGNvbmZvcm1zIHRvIHRoZSBpbnRlcm5hdGlvbmFsIGRlZmluaXRpb24gb2YgdW5lbXBsb3ltZW50LCB0aGUgbWVhc3VyZSBpcyBiYXNlZCBvbiBhIHF1YXJ0ZXJseSBzYW1wbGUgc3VydmV5IG9mIGhvdXNlaG9sZHMgdW5kZXJ0YWtlbiBieSBPTlMgYXMgcGFydCBvZiB0aGUgQW5udWFsIFBvcHVsYXRpb24gU3VydmV5IChBUFMpLiBBcyB0aGUgdW5lbXBsb3llZCBmb3JtIGEgc21hbGwgcGVyY2VudGFnZSBvZiB0aGUgZWNvbm9taWNhbGx5IGFjdGl2ZSBwb3B1bGF0aW9uLCBhbmQgYXMgdW5lbXBsb3ltZW50IGVzdGltYXRlcyBmb3IgbG9jYWwgYXV0aG9yaXR5IGdlb2dyYXBoaWVzIGFyZSBiYXNlZCBvbiB2ZXJ5IHNtYWxsIHN1cnZleSBzYW1wbGVzLCBtb2RlbC1iYXNlZCBlc3RpbWF0ZXMgaGF2ZSBiZWVuIGRldmVsb3BlZCB0aGF0IHByb3ZpZGUgYmV0dGVyIGVzdGltYXRlcyBvZiB0b3RhbCB1bmVtcGxveWVkIGZvciBsb2NhbCBhdXRob3JpdGllcy4gVGhlc2UgZXN0aW1hdGVzIGFyZSBub3QgYnJva2VuIGRvd24gYnkgYWdlIGJhbmRzLlxcblxcblVuZW1wbG95bWVudCBjb3VudCBhbmQgcmF0ZXMgdW5kZXIgdGhpcyBkZWZpbml0aW9uIGZvciBXZXN0IFN1c3NleCBhcmU6XFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzlGRjQwNjQwLTg4QUEtNDJBNS1CNjNELUY1RTgyRUFBODY4N1wifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgc2Vjb25kIG1lYXN1cmUgaXMgdGhlIGNsYWltYW50IGNvdW50LiBUaGlzIHRlbmRzIHRvIGJlIHRoZSBsb3dlciBtZWFzdXJlIG9mIHRoZSB0d28gYmVjYXVzZSBzb21lIHVuZW1wbG95ZWQgYXJlIG5vdCBlbnRpdGxlZCB0byBjbGFpbSBiZW5lZml0cyBvZiBhbnkgc29ydCBvciBjaG9vc2Ugbm90IHRvIGRvIHNvLiBJdCBpcyBzZWVuIGJ5IHNvbWUgYXMgbW9yZSBvZiBhIHdlbGZhcmUgY291bnQgYW5kIG5vdCBzdHJpY3RseSBhbiB1bmVtcGxveW1lbnQgY291bnQuIFRoZSBkYXRhIGlzIHB1Ymxpc2hlZCBtb250aGx5IGFuZCBpcyBpbmRpY2F0aXZlIG9mIHJlbGF0aXZlIHVuZW1wbG95bWVudCBsZXZlbHMgaW4gdGhlIGxvY2FsIGFyZWEuIFRoZSBjbGFpbWFudCBjb3VudCBoYXMgdW5kZXJnb25lIHN1YnN0YW50aWFsIGNoYW5nZSBvdmVyIHJlY2VudCB5ZWFycy4gSW4gMjAxMyBVbml2ZXJzYWwgQ3JlZGl0IHdhcyBpbnRyb2R1Y2VkIGFuZCByb2xsZWQgb3V0IG92ZXIgYSBwZXJpb2Qgb2YgeWVhcnMgYW5kIHdhcyBpbXBsZW1lbnRlZCBpbiBXZXN0IFN1c3NleCBkdXJpbmcgMjAxNS4gVW5pdmVyc2FsIENyZWRpdCBpcyBhIHNpbmdsZSBtb250aGx5IHBheW1lbnQgZm9yIHBlb3BsZSBpbiBvciBvdXQgb2Ygd29yaywgd2hpY2ggbWVyZ2VzIHRvZ2V0aGVyIHNvbWUgb2YgdGhlIGV4aXN0aW5nIG1lYW5zLXRlc3RlZCBiZW5lZml0cyBhbmQgdGF4IGNyZWRpdHMgaW5jbHVkaW5nIEluY29tZS1iYXNlZCBKb2JzZWVrZXIncyBBbGxvd2FuY2UgYW5kIGluY29tZS1yZWxhdGVkIEVtcGxveW1lbnQgYW5kIFN1cHBvcnQgQWxsb3dhbmNlLlxcblxcblRoZXJlIGlzIGFuIGV4cGVyaW1lbnRhbCBkYXRhIHNlcmllcyBnaXZpbmcgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIHBlb3BsZSBjbGFpbWluZyBKb2JzZWVrZXIncyBBbGxvd2FuY2UgcGx1cyB0aG9zZSB3aG8gY2xhaW0gVW5pdmVyc2FsIENyZWRpdCBiZWNhdXNlIHRoZXkgYXJlIG91dCBvZiB3b3JrLCBpdCByZXBsYWNlcyB0aGUgbnVtYmVyIG9mIHBlb3BsZSBjbGFpbWluZyBKb2JzZWVrZXIncyBBbGxvd2FuY2UgYXMgdGhlIGhlYWRsaW5lIGluZGljYXRvciBvZiB0aGUgbnVtYmVyIG9mIHBlb3BsZSBjbGFpbWluZyBiZW5lZml0cyBwcmluY2lwYWxseSBmb3IgdGhlIHJlYXNvbiBvZiBiZWluZyB1bmVtcGxveWVkLiBUaGUgdG90YWwgbnVtYmVycyBvZiBjbGFpbWFudHMsIGFuZCByYXRlcyBhcyBhIHByb3BvcnRpb24gb2YgcmVzaWRlbnRzIGFnZWQgMTYtNjQgYXJlIGluIHRoZSB0YWJsZSBiZWxvdzpcXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvM0REQjQ0NDAtQTcyRC00NkRFLTk5NDAtQjY1RTYxMkYwQTU4XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoaXMgZGF0YSBzZXQgaG93ZXZlciwgZG9lcyBub3QgZ2l2ZSBhbiB1bmVtcGxveW1lbnQgcmF0ZSBieSBhZ2UgYnJlYWtkb3duLiBUaGUgY291bnQgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcnMgQWxsb3dhbmNlIGlzIHN0aWxsIGF2YWlsYWJsZSBieSBhZ2Ugb2YgY2xhaW1hbnQgYW5kIGR1cmF0aW9uIG9mIGNsYWltaW5nLiBUaGUgdGFibGUgYmVsb3cgc2hvd3MgdGhlIG51bWJlciBvZiA1MC02NCB5ZWFyIG9sZHMgd2hvIGFyZSBjbGFpbWluZyBKU0EsIGFuZCB0aGUgcmF0ZSBpLmUuIHRoZSBudW1iZXIgb2YgdGhvc2UgY2xhaW1pbmcgYXMgYSBwZXJjZW50YWdlIG9mIDUwLTY0IHJlc2lkZW50cy5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvOEQ4RUQzMDktNDZBQy00MTE0LThBREItOENBMjhCRTYzNEY0XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciA0IC0gTWFyY2ggMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGlzIGdvYWwgaXMgdHJhY2tlZCBieSBtZWFzdXJpbmcgdGhlIHBlcmNlbnRhZ2Ugb2YgcGVvcGxlIGFnZWQgNTAtNjQgY2xhaW1pbmcgam9ic2Vla2VycyBhbGxvd2FuY2UgKEpTQSkgYXMgYSBwcm9wb3J0aW9uIG9mIHRoZSByZXNpZGVudCBwb3B1bGF0aW9uIG9mIHRoZSBzYW1lIGFnZS4gVGhlIEpTQSBjbGFpbWFudCBkYXRhIGlzIHB1Ymxpc2hlZCBtb250aGx5LCB3aXRoIHRoZSBsYXRlc3QgZGF0YSBhdmFpbGFibGUgZm9yIEZlYnJ1YXJ5IChhcyBhdCA1dGggQXByaWwpLlxcblxcblRoZSB0YWJsZSBiZWxvdyBzaG93cyB0aGUgdG90YWwgbnVtYmVycyBhbmQgcmF0ZSBvZiBKU0EgY2xhaW1hbnRzIGFnZWQgNTAtNjQgeWVhcnMsIHRoZSByYXRlIGlzIGNhbGN1bGF0ZWQgYXMgYSBwcm9wb3J0aW9uIG9mIHJlc2lkZW50IHBvcHVsYXRpb24gaW4gdGhhdCBhZ2UgZ3JvdXAuIFRoZSBwcm9wb3J0aW9uIGlzIGxvd2VzdCBpbiBNaWQgU3Vzc2V4IGFuZCBIb3JzaGFtLCBhbmQgaGlnaGVzdCBpbiBDcmF3bGV5IOKAkyBwb3NzaWJseSBhIHJlZmxlY3Rpb24gb2YgdGhlIHlvdW5nZXIgYWdlZCBwb3B1bGF0aW9uIGluIENyYXdsZXkgQm9yb3VnaCBjb21wYXJlZCB3aXRoIG90aGVyIGFyZWFzIG9mIHRoZSBjb3VudHkuIFRoZSByYXRlIGZvciBXZXN0IFN1c3NleCBjb250aW51ZXMgdG8gYmUgbG93ZXIgdGhhbiByZWdpb25hbGx5IG9yIG5hdGlvbmFsbHksIGFuZCB0aGUgbnVtYmVycyBvZiBKU0EgY2xhaW1hbnRzIG92ZXIgdGhlIHllYXIgRmVicnVhcnkgMjAxNi0yMDE3IGhhdmUgZmFsbGVuIGJ5IDIuNCUsIGEgZ3JlYXRlciBkZWNyZWFzZSB0aGFuIHJlZ2lvbmFsbHkuIEhvcnNoYW0sIGhvd2V2ZXIsIGhhcyBzZWVuIGFyaXNlIGluIHRoZSBudW1iZXIgb2YgY2xhaW1hbnRzIGluIHRoaXMgYWdlIGJyYWNrZXQuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0I2MUE5OTk5LUEyQjgtNDA0Mi1BMUE2LUQ0RjJERUE1Q0E5RVwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgY2hhcnQgYmVsb3cgc2hvd3MgdGhhdCBXZXN0IFN1c3NleCBoYXMgY29uc2lzdGVudGx5IGhhZCBhIGxvd2VyIHJhdGUgb2YgSlNBIGNsYWltYW50cyBpbiB0aGlzIGFnZSBicmFja2V0IGNvbXBhcmVkIHdpdGggdGhlIHJlZ2lvbiBvciBpbiBFbmdsYW5kIG92ZXIgdGhlIHRoaXJ0ZWVuIG1vbnRocy5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQkU3MzU4MUEtNTA0NC00QkZBLThGQzktRjI0QzI4MUE3RTMxXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlVuaXZlcnNhbCBDcmVkaXQgQ2xhaW1hbnRzIGhvd2V2ZXIsIHJvbGxlZCBvdXQgaW4gdGhlIENvdW50eSBkdXJpbmcgMjAxNSBpcyBhIG1vcmUgY29tcHJlaGVuc2l2ZSBtZWFzdXJlIG9mIHRoZSBjbGFpbWFudCBjb3VudC4gVW5pdmVyc2FsIENyZWRpdCBpcyBhIHNpbmdsZSBtb250aGx5IHBheW1lbnQgZm9yIHBlb3BsZSBpbiBvciBvdXQgb2Ygd29yaywgd2hpY2ggbWVyZ2VzIHRvZ2V0aGVyIHNvbWUgb2YgdGhlIGV4aXN0aW5nIG1lYW5zLXRlc3RlZCBiZW5lZml0cyBhbmQgdGF4IGNyZWRpdHMgaW5jbHVkaW5nIGluY29tZS1iYXNlZCBKb2JzZWVrZXIncyBBbGxvd2FuY2UgYW5kIGluY29tZS1yZWxhdGVkIEVtcGxveW1lbnQgYW5kIFN1cHBvcnQgQWxsb3dhbmNlLiBUaGVyZSBpcyBhbiBleHBlcmltZW50YWwgZGF0YSBzZXJpZXMgZ2l2aW5nIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiBwZW9wbGUgY2xhaW1pbmcgSm9ic2Vla2VyJ3MgQWxsb3dhbmNlIHBsdXMgdGhvc2Ugd2hvIGNsYWltIFVuaXZlcnNhbCBDcmVkaXQgd2hvIGFyZSBvdXQgb2Ygd29yaywgaXQgcmVwbGFjZXMgdGhlIG51bWJlciBvZiBwZW9wbGUgY2xhaW1pbmcgSm9ic2Vla2VyJ3MgQWxsb3dhbmNlIGFzIHRoZSBoZWFkbGluZSBpbmRpY2F0b3Igb2YgdGhlIG51bWJlciBvIHBlb3BsZSBjbGFpbWluZyBiZW5lZml0cyBwcmluY2lwYWxseSBmb3IgdGhlIHJlYXNvbiBvZiBiZWluZyB1bmVtcGxveWVkLiBUaGlzIGRhdGEgc2V0IGdpdmVzIGFuIG9wcG9ydHVuaXR5IHRvIGNvbXBhcmUgdGhlIG51bWJlcnMgb2YgdW5pdmVyc2FsIGNyZWRpdCBjbGFpbWFudHMgd2l0aCBKU0EgY2xhaW1hbnRzLCBhbmQgd2hpbHN0IHRoZSBkYXRhIHNldCBkb2VzIG5vdCBpbmNsdWRlIHJhdGVzLGJ5IHVzaW5nIHRoZSByZXNpZGVudCBwb3B1bGF0aW9uIGluIHRoaXMgYWdlIGdyb3VwIGZyb20gdGhlIEpTQSBjbGFpbWFudCByYXRlIHdlIGNhbiBtYWtlIGFuIGVzdGltYXRlIGFzIHRvIHRoZSByYXRlcyBjbGFpbWluZyB1bml2ZXJzYWwgY3JlZGl0IOKAkyBhcyBzaG93biBpbiB0aGUgdGFibGUgYmVsb3cuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzUzODZCRThBLUYxNDktNEJCOS04QTFDLUEwNEJCQzI3RENDNlwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyAtIERlY2VtYmVyIDIwMTYqKlxcblxcbioqKipcXG5cXG5UaGlzIGdvYWwgaXMgdHJhY2tlZCBieSBtZWFzdXJpbmcgdGhlICUgb2YgcGVvcGxlIGFnZWQgNTAtNjQgY2xhaW1pbmcgSm9ic2Vla2VycyBBbGxvd2FuY2UgYXMgYSBwcm9wb3J0aW9uIG9mIHRoZSByZXNpZGVudCBwb3B1bGF0aW9uIG9mIHRoZSBzYW1lIGFnZS4gRm9yIFdlc3QgU3Vzc2V4IHRoaXMgaXMgY3VycmVudGx5IDAuNyUuXFxuXFxuQ2xhaW1hbnQgY291bnQgcmF0ZXMgYXJlIGF2YWlsYWJsZSBieSBhZ2Ugb2YgY2xhaW1hbnQgYW5kIGR1cmF0aW9uIG9mIGNsYWltaW5nLiBUaGUgdGFibGUgYmVsb3cgc2hvd3MgdGhlIG51bWJlciBvZiA1MC02NCB5ZWFyIG9sZHMgd2hvIGFyZSBjbGFpbWluZyBKU0EsIGFuZCB0aGUgcmF0ZSBpLmUuIHRoZSBudW1iZXIgb2YgdGhvc2UgY2xhaW1pbmcgYXMgYSBwZXJjZW50YWdlIG9mIDUwLTY0IHJlc2lkZW50cy4gVGhlIHByb3BvcnRpb24gaXMgbG93ZXN0IGluIE1pZCBTdXNzZXggYW5kIGhpZ2hlc3QgaW4gQ3Jhd2xleS4gQWxsIGxvY2FsIGF1dGhvcml0aWVzIChXZXN0IFN1c3NleCBkaXN0cmljdHMvYm9yb3VnaHMpIGhhdmUgYSBsb3dlciBwcm9wb3J0aW9uIG9mIGNsYWltYW50cyBhZ2VkIDUwLTY0IHllYXJzIHRoYW4gdGhlIG5hdGlvbmFsIGZpZ3VyZSBvZiAxLjIlIGFuZCBvbmx5IEFkdXIgYW5kIENyYXdsZXkgaGFzIGEgaGlnaGVyIHJhdGUgdGhhbiB0aGUgU291dGggRWFzdCBmaWd1cmUgb2YgMC44JS5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMjFFNTU5M0EtNUZDMS00OUFCLUEwNDMtMTUyMkE2RTYwNzBBXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoZXJlIGlzIGEgc2ltaWxhciBwaWN0dXJlIGZvciB0aGUgMTYtNjQgYWdlIHJhbmdlIGFzIGRldGFpbGVkIGluIHRoZSB0YWJsZSBiZWxvdzpcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvNDJDODUyNkItRENFMi00ODQxLTgxMzktOTdDNTI3NjA5RDIzXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAyIC0gU2VwdGVtYmVyIDIwMTYqKlxcblxcbi0gLSAtXFxuXFxuKipUaGlzIGdvYWwgaXMgdHJhY2tlZCBieSBtZWFzdXJpbmcgdGhlICUgb2YgcGVvcGxlIGFnZWQgNTAtNjQgY2xhaW1pbmcgSm9ic2Vla2VycyBBbGxvd2FuY2UgYXMgYSBwcm9wb3J0aW9uIG9mIHRoZSByZXNpZGVudCBwb3B1bGF0aW9uIG9mIHRoZSBzYW1lIGFnZS4qKlxcblxcbkFnZWQgMTYtNjQgYmVuY2htYXJraW5nOiBUaGlzIGlzIHRoZSBwZXJjZW50YWdlIG9mIHBlb3BsZSBhZ2VkIDE2IHRvIDY0IGNsYWltaW5nIEpvYnNlZWtlcnMgQWxsb3dhbmNlIGFzIGEgcHJvcG9ydGlvbiBvZiB0aGUgcmVzaWRlbnQgcG9wdWxhdGlvbiBvZiB0aGUgc2FtZSBhZ2UuIFdlc3QgU3Vzc2V4IGN1cnJlbnRseSBzdGFuZHMgYXQgMC43JSwgdGhpcyBjb21wYXJlcyBmYXZvdXJhYmx5IHdpdGggdGhlIGF2ZXJhZ2UgZm9yIHRoZSBTb3V0aCBFYXN0IDAuOCUgYW5kIDEuMiUgZm9yIEVuZ2xhbmQuXFxuXFxuVGhlIHVuZW1wbG95bWVudCByYXRlIGlzIGNhbGN1bGF0ZWQgYXMgYSBwcm9wb3J0aW9uIG9mIHRoZSBlY29ub21pY2FsbHkgYWN0aXZlIHBvcHVsYXRpb247IGVjb25vbWljYWxseSBhY3RpdmUgcGVyc29ucyBiZWluZyB0aG9zZSB3aG8gYXJlIGVpdGhlciBlbXBsb3llZCBvciB1bmVtcGxveWVkIChpLmUuIGRvZXMgbm90IGluY2x1ZGUgcmV0aXJlZCkuIFRoZXJlIGFyZSB0d28gbWVhc3VyZXMgb2YgdW5lbXBsb3ltZW50OyB0aGUgZmlyc3QgaXMgdGhlIOKAmG9mZmljaWFs4oCZIGVzdGltYXRlIHVzaW5nIHRoZSBJbnRlcm5hdGlvbmFsIExhYm91ciBPcmdhbmlzYXRpb24gKElMTykgZGVmaW5pdGlvbiB3aGljaCBjb25mb3JtcyB0byB0aGUgaW50ZXJuYXRpb25hbCBkZWZpbml0aW9uIG9mIHVuZW1wbG95bWVudCwgdGhlIG1lYXN1cmUgaXMgYmFzZWQgb24gYSBxdWFydGVybHkgc2FtcGxlIHN1cnZleSBvZiBob3VzZWhvbGRzIHVuZGVydGFrZW4gYnkgT05TIGFzIHBhcnQgb2YgdGhlIEFubnVhbCBQb3B1bGF0aW9uIFN1cnZleSAoQVBTKS4gSG93ZXZlciwgYXMgdW5lbXBsb3llZCBmb3JtIGEgc21hbGwgcGVyY2VudGFnZSBvZiB0aGUgcG9wdWxhdGlvbiBhbmQgYXMgdW5lbXBsb3llZCBlc3RpbWF0ZXMgd2l0aGluIGxvY2FsIGF1dGhvcml0aWVzIGFyZSBiYXNlZCBvbiB2ZXJ5IHNtYWxsIHN1cnZleSBzYW1wbGVzIG1vZGVsLWJhc2VkIGVzdGltYXRlcyBoYXZlIGJlZW4gZGV2ZWxvcGVkIHRoYXQgcHJvdmlkZSBiZXR0ZXIgZXN0aW1hdGVzIG9mIHRvdGFsIHVuZW1wbG95ZWQgZm9yIGxvY2FsIGF1dGhvcml0aWVzLCBidXQgdGhlc2UgZXN0aW1hdGVzIGFyZSBub3QgYnJva2VuIGRvd24gYnkgYWdlIGJhbmRzLlxcblxcblRoZSBzZWNvbmQgbWVhc3VyZSBpcyB0aGUgY2xhaW1hbnQgY291bnQuIFRoaXMgdGVuZHMgdG8gYmUgdGhlIGxvd2VyIG1lYXN1cmUgb2YgdGhlIHR3byBiZWNhdXNlIHNvbWUgdW5lbXBsb3llZCBhcmUgbm90IGVudGl0bGVkIHRvIGNsYWltIGJlbmVmaXRzIG9mIGFueSBzb3J0IG9yIGNob29zZSBub3QgdG8gZG8gc28uIEl0IGlzIHNlZW4gYnkgc29tZSBhcyBtb3JlIG9mIGEgd2VsZmFyZSBjb3VudCBhbmQgbm90IHN0cmljdGx5IGFuIHVuZW1wbG95bWVudCBjb3VudC4gVGhlIGRhdGEgaXMgcHVibGlzaGVkIG1vbnRobHkgYW5kIGlzIGluZGljYXRpdmUgb2YgcmVsYXRpdmUgdW5lbXBsb3ltZW50IGxldmVscyBpbiB0aGUgbG9jYWwgYXJlYS4gVGhlIGNsYWltYW50IGNvdW50IGhhcyB1bmRlcmdvbmUgc3Vic3RhbnRpYWwgY2hhbmdlIG92ZXIgcmVjZW50IHllYXJzLiBJbiAyMDEzIFVuaXZlcnNhbCBDcmVkaXQgd2FzIGludHJvZHVjZWQgYW5kIHJvbGxlZCBvdXQgb3ZlciBhIHBlcmlvZCBvZiB5ZWFycyBhbmQgd2FzIGltcGxlbWVudGVkIGluIFdlc3QgU3Vzc2V4IGR1cmluZyAyMDE1LiBVbml2ZXJzYWwgQ3JlZGl0IGlzIGEgc2luZ2xlIG1vbnRobHkgcGF5bWVudCBmb3IgcGVvcGxlIGluIG9yIG91dCBvZiB3b3JrLCB3aGljaCBtZXJnZXMgdG9nZXRoZXIgc29tZSBvZiB0aGUgZXhpc3RpbmcgbWVhbnMtdGVzdGVkIGJlbmVmaXRzIGFuZCB0YXggY3JlZGl0cyBpbmNsdWRpbmcgSW5jb21lLWJhc2VkIEpvYnNlZWtlcidzIEFsbG93YW5jZSBhbmQgaW5jb21lLXJlbGF0ZWQgRW1wbG95bWVudCBhbmQgU3VwcG9ydCBBbGxvd2FuY2UuXFxuXFxuVGhlcmUgaXMgYW4gZXhwZXJpbWVudGFsIGRhdGEgc2VyaWVzIGdpdmluZyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcidzIEFsbG93YW5jZSBwbHVzIHRob3NlIHdobyBjbGFpbSBVbml2ZXJzYWwgQ3JlZGl0IHdobyBhcmUgb3V0IG9mIHdvcmssIGl0IHJlcGxhY2VzIHRoZSBudW1iZXIgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcidzIEFsbG93YW5jZSBhcyB0aGUgaGVhZGxpbmUgaW5kaWNhdG9yIG9mIHRoZSBudW1iZXIgb2YgcGVvcGxlIGNsYWltaW5nIGJlbmVmaXRzIHByaW5jaXBhbGx5IGZvciB0aGUgcmVhc29uIG9mIGJlaW5nIHVuZW1wbG95ZWQuIFRoaXMgZGF0YSBzZXQgaG93ZXZlciwgZG9lcyBub3QgZ2l2ZSBhbiB1bmVtcGxveW1lbnQgcmF0ZSBieSBhZ2UgYnJlYWtkb3duLiBUaGUgY291bnQgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcnMgQWxsb3dhbmNlIGlzIHN0aWxsIGF2YWlsYWJsZSBieSBhZ2Ugb2YgY2xhaW1hbnQgYW5kIGR1cmF0aW9uIG9mIGNsYWltaW5nLiBUaGUgdGFibGUgYmVsb3cgc2hvd3MgdGhlIG51bWJlciBvZiA1MC02NCB5ZWFyIG9sZHMgd2hvIGFyZSBjbGFpbWluZyBKU0EsIGFuZCB0aGUgcmF0ZSBpLmUuIHRoZSBudW1iZXIgb2YgdGhvc2UgY2xhaW1pbmcgYXMgYSBwZXJjZW50YWdlIG9mIDUwLTY0IHJlc2lkZW50cy5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMTY4MEYwRTYtMzY3NC00Qzg4LTg3QzEtQ0FCRjlDQkFFM0Y3XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gSnVuZSAyMDE2KipcXG5cXG4tIC0gLVxcblxcbkNsYWltYW50IGNvdW50IHJhdGVzIGFyZSBhdmFpbGFibGUgYnkgYWdlIG9mIGNsYWltYW50IGFuZCBkdXJhdGlvbiBvZiBjbGFpbWluZy4gVGhlIHRhYmxlIGJlbG93IHNob3dzIHRoZSBudW1iZXIgb2YgNTAtNjQgeWVhciBvbGRzIHdobyBhcmUgY2xhaW1pbmcgSlNBLCBhbmQgdGhlIHJhdGUgaS5lLiB0aGUgbnVtYmVyIG9mIHRob3NlIGNsYWltaW5nIGFzIGEgcGVyY2VudGFnZSBvZiA1MC02NCByZXNpZGVudHMuIFRoZSBwcm9wb3J0aW9uIGlzIGxvd2VzdCBpbiBNaWQgU3Vzc2V4IGFuZCBoaWdoZXN0IGluIENyYXdsZXkuIEFsbCBsb2NhbCBhdXRob3JpdGllcyAoV2VzdCBTdXNzZXggZGlzdHJpY3RzL2Jvcm91Z2hzKSBoYXZlIGEgbG93ZXIgcHJvcG9ydGlvbiBvZiBjbGFpbWFudHMgYWdlZCA1MC02NCB5ZWFycyB0aGFuIG5hdGlvbmFsbHkgYW5kIG9ubHkgQ3Jhd2xleSBoYXMgYSBoaWdoZXIgcmF0ZSB0aGFuIHRoZSBTb3V0aCBFYXN0IGZpZ3VyZSAoYWx0aG91Z2ggQ3Jhd2xleSdzIGZpZ3VyZSBoYXMgcmVkdWNlZCBieSAwLjIlKS5cXG5cXG5XaGF0IHdpbGwgaGFwcGVuIHRvIHRoaXMgbWVhc3VyZSwgaW4gcmVzcGVjdCBvZiB0aGUgbmF0aW9uYWwvcmVnaW9uYWwvbG9jYWwgZWNvbm9teSwgZ2l2ZW4gdGhlIEVVIHJlZmVyZW5kdW0gcmVzdWx0LCBpcyBzdGlsbCB0byBiZSBkZXRlcm1pbmVkLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8wNTA4N0Q0NC01QzBCLTRGRjAtQjYwNi05QzNCNjdDODAwQTVcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvRTBFMjdDMzMtNTlBNC00MEQxLUI4MEItMjlGMjgxRDE2NUI2XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciA0IC0gTWFyY2ggMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5TaW5jZSBPY3RvYmVyIDE5OTYgdGhlIGNsYWltYW50IGNvdW50IGhhcyBiZWVuIGRlcml2ZWQgZnJvbSB0aGUgbnVtYmVycyBvZiBKb2JzZWVrZXLigJlzIEFsbG93YW5jZSAoSlNBKSBDbGFpbWFudHMgcmVjb3JkZWQgYnkgSm9iIENlbnRyZSBQbHVzLCBpdCBpcyBjb250aW51ZWQgdG8gYmUgcHVibGlzaGVkIG1vbnRobHkuIEl0IGlzIGEgbmFycm93ZXIgbWVhc3VyZSB0aGFuIHRoZSBjb3VudCBvZiB1bmVtcGxveW1lbnQgZnJvbSB0aGUgTmF0aW9uYWwgU3RhdGlzdGljcyBMYWJvdXIgRm9yY2UgU3VydmV5IHdoaWNoIGlzIHRha2VuIGZyb20gYSBjb250aW51b3VzIHN1cnZleSB0aGF0IE9mZmljZSBmb3IgTmF0aW9uYWwgU3RhdGlzdGljcyAoT05TKSB1c2VzIHRvIG1lYXN1cmUgZWNvbm9taWMgYWN0aXZpdHkgbmF0aW9uYWxseS4gVG8gY291bnQgYXMgdW5lbXBsb3llZCBwZW9wbGUgaGF2ZSB0byBzYXkgdGhleSBhcmUgbm90IHdvcmtpbmcsIGFyZSBhdmFpbGFibGUgZm9yIHdvcmsgYW5kIGhhdmUgZWl0aGVyIGxvb2tlZCBmb3Igd29yayBpbiB0aGUgcGFzdCBmb3VyIHdlZWtzIG9yIGFyZSBhd2FpdGluZyB0byBzdGFydCBhIG5ldyBqb2IgdGhleSBoYXZlIGFscmVhZHkgb2J0YWluZWQuIFNvbWVvbmUgd2hvIGlzIG91dCBvZiB3b3JrIGJ1dCBkb2VzbuKAmXQgbWVldCB0aGVzZSBjcml0ZXJpYSBjb3VudHMgYXMgZWNvbm9taWNhbGx5IGluYWN0aXZlLiBUaGUgY2xhaW1hbnQgY291bnQgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGUgbGltaXRhdGlvbnMgb2Ygc2FtcGxlIHNpemUgYW5kIHNhbXBsaW5nIGZyYW1lLiBIb3dldmVyLCBtYW55IHBlb3BsZSB3aG8gYXJlIG91dCBvZiB3b3JrIGFyZSBub3QgbmVjZXNzYXJpbHkgZWxpZ2libGUgZm9yIEpTQSBhbmQgdGhlcmVmb3JlIGl0IGdpdmVzIGEgbXVjaCBsb3dlciBmaWd1cmUgb2YgdW5lbXBsb3llZCB0aGFuIHRoYXQgZnJvbSB0aGUgTGFib3VyIEZvcmNlIFN1cnZleS5cXG5cXG5UaGUgdGFibGUgYmVsb3cgc2hvd3MgdGhlIHRvdGFsIG51bWJlciBvZiBKU0EgY2xhaW1hbnRzIGFuZCB0aGUgdW5lbXBsb3ltZW50IHJhdGUgZm9yIEZlYnJ1YXJ5IDIwMTUg4oCTIDIwMTYgKEZlYnJ1YXJ5IDIwMTYgaXMgdGhlIGxhdGVzdCBhdmFpbGFibGUgZGF0YSAoY2xhaW1hbnRzIGFzIGEgcGVyY2VudGFnZSBvZiAxNi02NCB5ZWFyIG9sZCByZXNpZGVudHMpLiBXZXN0IFN1c3NleCBoYXMgYSBsb3dlciBjbGFpbWFudCBjb3VudCByYXRlIHRoYW4gbmF0aW9uYWxseSBhbmQgcmVnaW9uYWxseSwgTWlkIFN1c3NleCBoYXMgdGhlIGxvd2VzdCBjbGFpbWFudCBjb3VudCByYXRlIGFuZCBDcmF3bGV5IHRoZSBoaWdoZXN0LCBidXQgYWxsIGRpc3RyaWN0cyBhbmQgYm9yb3VnaHMgd2l0aGluIFdlc3QgU3Vzc2V4IGhhdmUgY2xhaW1hbnQgY291bnQgcmF0ZXMgbG93ZXIgdGhhbiB0aGUgbmF0aW9uYWwgYXZlcmFnZS5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvRUY0NTczQUMtMUM3RC00NUQxLTg0RTMtQzJCMTc3NEVDMkE4XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlVuaXZlcnNhbCBDcmVkaXQgd2FzIGludHJvZHVjZWQgaW4gMjAxMyB3aGljaCB3YXMgdG8gcmVwbGFjZSBhIG51bWJlciBvZiBtZWFucyB0ZXN0ZWQgYmVuZWZpdHMgaW5jbHVkaW5nIHRoZSBtZWFucy10ZXN0ZWQgZWxlbWVudCBvZiBKU0EuIFRoaXMgaGFzIGJlZW4gcm9sbGVkIG91dCBhY3Jvc3MgdGhlIGNvdW50cnkgYW5kIGZyb20gdGhlIEF1dHVtbiAyMDE1IGhhcyBiZWVuIHJvbGxlZCBvdXQgdGhyb3VnaG91dCBhbGwgV2VzdCBTdXNzZXggSm9iY2VudHJlcy4gVGhlcmUgaXMgYSBuZXcgZXhwZXJpbWVudGFsIGRhdGEgc2V0IHdoaWNoIGluY2x1ZGVzIHRoZSBudW1iZXIgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcnMgQWxsb3dhbmNlIHBsdXMgdGhvc2Ugd2hvIGNsYWltIFVuaXZlcnNhbCBDcmVkaXQgd2hvIGFyZSBvdXQgb2Ygd29yay4gVGhlcmUgYXJlIHNvbWUgY2F2ZWF0cyB3aXRoIHRoZSBkYXRhLCBhbmQgc28gZmFyLCBhcyBpdOKAmXMgc3RpbGwgZWFybHkgZGF5cyBvZiBVbml2ZXJzYWwgQ3JlZGl0IGJlaW5nIGludHJvZHVjZWQgdGhlcmUgaXMgbGl0dGxlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbmV3IGRhdGEgc2V0IGFuZCB0aGF0IGZvciBKU0EgY2xhaW1hbnRzIHNvIGZvciB0aGUgdGltZSB3ZSB3aWxsIGNvbnRpbnVlIHRvIG1vbml0b3IgSlNBIGNsYWltYW50cyBmb3IgNTAtNjQgeWVhciBvbGRzLiBIb3dldmVyIHRoZSBwZXJjZW50YWdlIG9mIGNsYWltYW50cyBieSBhZ2UgZ3JvdXAgZnJvbSB0aGUgVW5pdmVyc2FsIENyZWRpdCBleHBlcmltZW50YWwgZGF0YSBzZXQgaXMgbm90IGF2YWlsYWJsZS4gVGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3byBzZXRzIG9mIGRhdGEgYXJlIHNob3duIGluIHRoZSB0YWJsZSBiZWxvdy5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMERDQUUyMTEtODk1RC00MjY2LUJEQTgtRDQ4NEVGMjdBMUFGXCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJSZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHBlb3BsZSBhZ2VkIDUwLTY0IGNsYWltaW5nIEpvYnNlZWtlcnMgQWxsb3dhbmNlIGFzIGEgcHJvcG9ydGlvbiBvZiB0aGUgcmVzaWRlbnQgcG9wdWxhdGlvbiBvZiB0aGUgc2FtZSBhZ2VcIixcImljb25cIjpcInRleHRcIixcInVzZV9jdXN0b21fc3VidGl0bGVcIjpmYWxzZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiVGhpcyBnb2FsIGlzIHRyYWNrZWQgYnkgbWVhc3VyaW5nIHRoZSAlIG9mIHBlb3BsZSBhZ2VkIDUwIOKAkyA2NCBjbGFpbWluZyBKb2JzZWVrZXJzIEFsbG93YW5jZSBhcyBhIHByb3BvcnRpb24gb2YgdGhlIHJlc2lkZW50IHBvcHVsYXRpb24gb2YgdGhlIHNhbWUgYWdlLlwifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDE1LTA0LTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6IiUiLCJ0YXJnZXRfdHlwZSI6InJlbGF0aXZlIiwidGFyZ2V0X2RlbHRhIjowLCJ0YXJnZXRfZGVsdGFfaXNfcGVyY2VudCI6ZmFsc2UsImJhc2VsaW5lIjowLjksIm1ldHJpYyI6eyJtZXRhZGF0YSI6IiIsImlkIjoiOWhndy05cHMzIn0sImNvbXBhcmlzb24iOnsiY29tcGFyaXNvbl9mdW5jdGlvbiI6IjwifSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJlZGl0XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjozLFwieWVhclwiOjIwMTV9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOH0sXCJhY3Rpb25fdHlwZVwiOlwibWFpbnRhaW5cIixcIm1haW50YWluX3R5cGVcIjpcIjxcIn0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTV9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNX19LFwic3RhcnRcIjpcIjIwMTUtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTUtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJ0aGUgdW5lbXBsb3ltZW50IHJhdGUgZm9yIHBlb3BsZSBhZ2VkIDUwLTY0XCIsXCJpc19idXJuZG93bl9kaXNhYmxlZFwiOmZhbHNlLFwiaXNfdHJlbmRsaW5lX2Rpc2FibGVkXCI6dHJ1ZX0ifSwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MDI6NDYuNTA2WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA5OjAyOjQ2LjUwNloiLCJpZCI6ImJkZTYtaG5tciJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbXSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOTo0OTo0MC42MjFaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MDI6NDYuNTQ3WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA5OjQ5OjQwLjYyMVoiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6Imgzem4tN2t1YiIsIm5hbWUiOiJCcm9hZGJhbmQgUm9sbCBPdXQiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcImljb25cIjpcInRleHRcIixcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhZGRpdGlvbmFsIHByZW1pc2VzIGZpZ3VyZSBhcyBzdGF0ZWQgYWJvdmUgaXMgYmFzZWQgb24gdGhlIGxhdGVzdCBhdmFpbGFibGUgZGF0YSB3aGljaCBpcyBwcm92aWRlZCBieSBCVCBvbmUgcXVhcnRlciBhZnRlciBkZWxpdmVyeS5cXG5cXG4qKkZpYnJlIGJyb2FkYmFuZCBmb3Igb3VyIGNvdW50eeKAmXMgZnV0dXJlKipcXG5cXG5CZXR0ZXIgQ29ubmVjdGVkIGlzIGFuIGV4Y2l0aW5nIHByb2plY3QgdG8gYnJpbmcgYmV0dGVyLCBmYXN0ZXIgYnJvYWRiYW5kIHRvIG91ciBjb3VudHkuIEluIFNwcmluZyAyMDE2IHdlIGFjaGlldmVkIG91ciB0YXJnZXQgb2YgaW5jcmVhc2luZyBjb3ZlcmFnZSBieSDigJhzdXBlcmZhc3Qg4oCZYnJvYWRiYW5kIHRvIG1vcmUgdGhhbiA5MCUgb2YgdGhlIGNvdW50eS4gTW9yZSB0aGFuIDYwLDAwMCBob21lcyBhbmQgYnVzaW5lc3NlcyBoYXZlIGFjY2VzcyB0byBuZXcgZmlicmUgYnJvYWRiYW5kIHNlcnZpY2VzIHdoaWNoIHdvdWxkIG5vdCBoYXZlIGJlZW4gYXZhaWxhYmxlIHRvIHRoZW0gd2l0aG91dCB0aGUgcHJvamVjdOKAmXMgaW50ZXJ2ZW50aW9uLiBOb3cgd2UgYXJlIHVzaW5nIGFkZGl0aW9uYWwgZnVuZGluZywgdG9nZXRoZXIgd2l0aCBtb25leSB0aGF0IEJUIGlzIHBheWluZyBiYWNrIHRvIHRoZSBDb3VudHkgQ291bmNpbCwgdG8gcmVhY2ggYW4gZXh0cmEgNywwMDAgcHJlbWlzZXMgYnkgdGhlIGVuZCBvZiAyMDE4LiBUaGUgcHJvamVjdCBpcyBwcm9ncmVzc2luZyB3ZWxsIHdpdGggZGV0YWlsZWQgbmV0d29yayBkZXNpZ24sIHBsYW5uaW5nIGFuZCBlbmdpbmVlcmluZyBzdXJ2ZXlzIGNvbnRpbnVpbmcgYW5kIHNvIGZhciBoYXMgZGVsaXZlcmVkIGFjY2VzcyB0byAnc3VwZXJmYXN0JyBmaWJyZSBicm9hZGJhbmQgdG8gYW4gZXh0cmEgMywzMDcgcHJlbWlzZXMgaW4gV2VzdCBTdXNzZXggc2luY2UgdGhpcyBwaGFzZSBiZWdhbiBpbiBBcHJpbCAyMDE2LlxcblxcbiBcXG5cXG4qKlRhcmdldCoqXFxuXFxuIFxcblxcbkluIHRvdGFsIHdlIGFpbSB0byBiZW5lZml0IGFuIGV4dHJhIDcsMDAwIHByZW1pc2VzIGJ5IERlY2VtYmVyIDIwMTguXFxuXFxuTW9yZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgYXQ6IFt3d3cud2VzdHN1c3NleC1iZXR0ZXJjb25uZWN0ZWQub3JnLnVrRGlnaXRhbF1bMF0gY29tbXVuaWNhdGlvbnMgaW5mcmFzdHJ1Y3R1cmUgaXMgYmVjb21pbmcgYXMgdml0YWwgYXMgdHJhbnNwb3J0YXRpb24sIHdhdGVyIGFuZCBwb3dlciBzZXJ2aWNlcy4g4oCYU3VwZXJmYXN04oCZIGJyb2FkYmFuZCB0ZWNobm9sb2d5IGhhcyB0cmFuc2Zvcm1lZCBob3cgd2Ugd29yaywgbGl2ZSBhbmQgY29tbXVuaWNhdGUuIFRoaXMgZXhjaXRpbmcgdGVjaG5vbG9neSBjYW4gaW1wcm92ZSBvdXIgcXVhbGl0eSBvZiBsaWZlLCBhbmQgaGVscCB0byBncm93IG91ciBlY29ub215IGJ5IGVuYWJsaW5nIG5ldyBidXNpbmVzc2VzIHRvIHN0YXJ0IHVwLCBhbmQgZXhpc3Rpbmcgb25lcyB0byBwcm9zcGVyLlxcblxcbldlIGFyZSBsb29raW5nIHRvIHRoZSBmdXR1cmUgYW5kIGhhdmUgYW4gYW1iaXRpb24gdG8gc3VwcG9ydCBvdXIgcHVibGljIHNlcnZpY2VzIGJ5IGJ1aWxkaW5nIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgY29ubmVjdGl2aXR5LCBnaXZpbmcgc3BlZWRzIGZyb20gMUdiICgxMDAwbWJwcykgdXNpbmcgcHVyZSBvcHRpY2FsIGZpYnJlLlxcblxcbiBcXG5cXG5UaGUgZ292ZXJubWVudCB3YW50cyB0byBpbmNyZWFzZSB0aGUgYW1vdW50IG9mIHB1cmUgb3B0aWNhbCBvciDigJhmdWxsIGZpYnJl4oCZIGluZnJhc3RydWN0dXJlIGNvdmVyaW5nIHRoZSBVSy4gQ3VycmVudGx5IG9ubHkgYXJvdW5kIDIlIG9mIHByZW1pc2VzIGluIHRoZSBVSyBoYXZlIGFjY2VzcyB0byB0aGUgZmFzdGVzdCBicm9hZGJhbmQgc3BlZWRzIHdoaWNoIHRyYXZlbCBhbGwgdGhlIHdheWludG8gYnVpbGRpbmdzIG92ZXIgZnVsbCBmaWJyZSBpbmZyYXN0cnVjdHVyZS4gUHVibGljIHNlcnZpY2VzIGFyZSBldm9sdmluZyBhbmQgc29vbiB3aWxsIGJlIGRlbGl2ZXJlZCBpbiBuZXcgYW5kIGRpZ2l0YWwgd2F5cywgd2hpY2ggd2lsbCByZXF1aXJlIGZhc3RlciBkb3dubG9hZCBhbmQgdXBsb2FkIHNwZWVkcyBhbmQgZ3JlYXRlciBiYW5kd2lkdGguIFdlIHdhbnQgdG8gaW52ZXN0IGluIGZ1bGwgZmlicmUgaW5mcmFzdHJ1Y3R1cmUgbm93IHRvIGdldCBvdXIgcHVibGljIGJ1aWxkaW5ncyBhbmQgb3VyIHNlcnZpY2VzIHJlYWR5IGZvciB0aGUgZnV0dXJlLlxcblxcblswXTogaHR0cDovL3d3dy53ZXN0c3Vzc2V4LWJldHRlcmNvbm5lY3RlZC5vcmcudWtEaWdpdGFsXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqRGVjZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgcHJvamVjdCBpcyBwcm9ncmVzc2luZyB3ZWxsIHdpdGggZGV0YWlsZWQgbmV0d29yayBkZXNpZ24sIHBsYW5uaW5nIGFuZCBlbmdpbmVlcmluZyBzdXJ2ZXlzIGNvbnRpbnVpbmcgYW5kIHNvIGZhciBoYXMgZGVsaXZlcmVkIGFjY2VzcyB0byAnc3VwZXJmYXN0JyBmaWJyZSBicm9hZGJhbmQgdG8gYW4gZXh0cmEgMywzMDcgcHJlbWlzZXMgaW4gV2VzdCBTdXNzZXggc2luY2UgdGhpcyBwaGFzZSBiZWdhbiBpbiBBcHJpbCAyMDE2LlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlNlcHRlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoZSBwcm9qZWN0IGlzIHByb2dyZXNzaW5nIHdlbGwgd2l0aCBkZXRhaWxlZCBuZXR3b3JrIGRlc2lnbiwgcGxhbm5pbmcgYW5kIGVuZ2luZWVyaW5nIHN1cnZleXMgY29udGludWluZyBhbmQgc28gZmFyIGhhcyBkZWxpdmVyZWQgYWNjZXNzIHRvIFxcXCJzdXBlcmZhc3RcXFwiIGZpYnJlIGJyb2FkYmFuZCB0byAxLDg3MSBwcmVtaXNlcyBpbiBXZXN0IFN1c3NleCBzaW5jZSB0aGlzIHBoYXNlIGJlZ2FuIGluIEFwcmlsIDIwMTYuIFRoaXMgaXMgY3VycmVudGx5IDI2LjclIG9mIG91ciB0YXJnZXQgdG8gcmVhY2ggNywwMDAgcHJlbWlzZXMgYnkgdGhlIGVuZCBvZiBTZXB0ZW1iZXIgMjAxOC4gVGhlIHByb2plY3QgaXMgb24gdHJhY2sgaW4gdGVybXMgb2YgYWN0dWFsIGJ1aWxkIHByb2dyYW1tZS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipBcHJpbCAtIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgcHJvamVjdCBpcyBwcm9ncmVzc2luZyB3ZWxsIHdpdGggZGV0YWlsZWQgbmV0d29yayBkZXNpZ24sIHBsYW5uaW5nIGFuZCBlbmdpbmVlcmluZyBzdXJ2ZXlzIGNvbnRpbnVpbmcgYW5kIHNvIGZhciBoYXMgZGVsaXZlcmVkIGFjY2VzcyB0b1xcXCJzdXBlcmZhc3RcXFwiIGZpYnJlIGJyb2FkYmFuZCB0byAxLDIwMyBwcmVtaXNlcyBpbiBXZXN0IFN1c3NleCBzaW5jZSB0aGlzIHBoYXNlIGJlZ2FuIGluIEFwcmlsIDIwMTYuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipUYXJnZXQqKlxcblxcbkluIHRvdGFsIHdlIGFpbSB0byBiZW5lZml0IGFuIGV4dHJhIDcsMDAwIHByZW1pc2VzIGJ5IFNlcHRlbWJlciBvZiAyMDE4LlxcblxcblwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzgzMUY3QTdELTNGQTktNEYxMy04ODE0LTcyNTlCM0FGMjZFOVwifV1dfV0sXCJ1c2VfY3VzdG9tX3RpdGxlXCI6dHJ1ZSxcImN1c3RvbV90aXRsZVwiOlwiSW5jcmVhc2luZyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgcHJvcGVydGllcyB3aXRoIGFjY2VzcyB0byBcXFwic3VwZXJmYXN0XFxcIiBmaWJyZSBicm9hZGJhbmQgXCIsXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiV2UgYWltIHRvIGluY3JlYXNlIHRoZSBudW1iZXIgb2YgcHJlbWlzZXMgaW4gV2VzdCBTdXNzZXggd2l0aCBhY2Nlc3MgdG8gXFxcInN1cGVyZmFzdFxcXCIgZmlicmUgYnJvYWRiYW5kIGJ5IHRoZSBlbmQgb2YgRGVjZW1iZXIgMjAxOCBieSBhdCBsZWFzdCA3LDAwMFwiLFwidGl0bGVfaW1hZ2VcIjpcIi9hcGkvYXNzZXRzLzI1NjlDNjZBLTI3QTMtNDEzNi1BNTJGLUFDMkRBNEFFMzk1MFwifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDE2LTA0LTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6InByZW1pc2VzIiwidGFyZ2V0Ijo3MDAwLCJ0YXJnZXRfdHlwZSI6ImFic29sdXRlIiwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6ImdhZTgtYWZ3aSJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6MyxcInllYXJcIjoyMDE2fSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9fSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fX0sXCJzdGFydFwiOlwiMjAxNC0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNC0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9fSxcIm5hbWVcIjpcInRoZSBhZGRpdGlvbmFsIHRvdGFsIGhvbWVzIHBhc3NlZCAoVEhQKSBcIixcImlzX2J1cm5kb3duX2Rpc2FibGVkXCI6ZmFsc2UsXCJpc190cmVuZGxpbmVfZGlzYWJsZWRcIjpmYWxzZSxcInVzZV9wcm9ncmVzc19vdmVycmlkZVwiOnRydWUsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwiZ29vZFwifSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOTowMzoxNi4wMzlaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MDM6MTYuMDM5WiIsInRhcmdldF90b2xlcmFuY2UiOjcwMCwiaWQiOiJmY3VoLWo3ZWoifSwicmVsYXRlZF9tZWFzdXJlcyI6W10sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6NTA6MTkuNDAwWiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjAzOjE2LjA4MVoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOTo1MDoxOS40MDBaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiJhcTNkLWI5dHYiLCJuYW1lIjoiQ2hvaWNlIG92ZXIgT3duIENhcmUiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIjICoqQ2hvaWNlIG92ZXIgb3duIENhcmUqKlxcblxcbi0gLSAtXFxuXFxuVGhpcyBtZWFzdXJlIGlzIGEgcmVmbGVjdGlvbiBvZiBXZXN0IFN1c3NleCBDb3VudHkgQ291bmNpbCdzIGRyaXZlIHRvIG9mZmVyIHBlb3BsZSBjaG9pY2UgYW5kIGluZGVwZW5kZW5jZS4gUmVzZWFyY2ggaGFzIGluZGljYXRlZCB0aGF0IHJlY2VpcHQgb2Ygc2VsZi1kaXJlY3RlZCBzdXBwb3J0LCB2aWEgcGVyc29uYWwgYnVkZ2V0cywgaGFzIGEgcG9zaXRpdmUgZWZmZWN0IGluIHRlcm1zIG9mIGltcGFjdCBvbiB3ZWxsLWJlaW5nLCBpbmNyZWFzZWQgY2hvaWNlIGFuZCBjb250cm9sLCBjb3N0IGltcGxpY2F0aW9ucyBhbmQgaW1wcm92aW5nIG91dGNvbWVzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgYW5udWFsIEFkdWx0cyBTb2NpYWwgQ2FyZSBVc2VyIFN1cnZleSB3YXMgY29tcGxldGVkIGluIEFwcmlsIGFuZCBNYXkgMjAxNy4gU3VydmV5cyB3ZXJlIHNlbnQgb3V0IHRvIGN1c3RvbWVycyBhbmQgY2FyZXJzIHdobyBjdXJyZW50bHkgcmVjZWl2ZSBhIHNlcnZpY2UgZnJvbSBXZXN0IFN1c3NleCBDb3VudHkgQ291bmNpbCDigJMgdGhlcmUgd2FzIGEgc2lnbmlmaWNhbnQgaW1wcm92ZW1lbnQgaW4gdGhlIHJldHVybiBvZiB0aGUgc3VydmV5cyBmcm9tIDM3ICUgdG8gNTEgJSBhbmQgdGhlIG91dGNvbWVzIHdlcmUgcmVwb3J0ZWQgaW4gbGluZSB3aXRoIHRoZSByZXF1aXJlbWVudHMgZnJvbSB0aGUgRGVwYXJ0bWVudCBvZiBIZWFsdGguIFRoZSBzY29yZSB0byB0aGUgcXVlc3Rpb24gd2FzIDc3LjYgJSB3aGljaCBpcyBhbiBpbXByb3ZlbWVudCBvbiBsYXN0IHllYXIuIFRoZSBQdWJsaWMgSGVhbHRoIFJlc2VhcmNoIHVuaXQgYXJlIGN1cnJlbnRseSB1bmRlcnRha2luZyBhIG1vcmUgZGV0YWlsZWQgYW5hbHlzaXMgb2YgdGhlIGFuc3dlcnM7IHRoaXMgd2lsbCBiZSByZWFkeSBpbiBBdWd1c3QgYW5kIHdpbGwgYmUgY29uc2lkZXJlZCBieSB0aGUgUXVhbGl0eSBBc3N1cmFuY2UgTWFuYWdlbWVudCBCb2FyZC5cXG5cXG5cIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIjICoqQ2FyZSBGdW5kaW5nICYgQWR2aWNlKipcXG5cXG4qKkNhcmV3aXNlIENhcmUgRnVuZGluZyBTY2hlbWUqKlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJQZW9wbGUgYXJlIGxpdmluZyBsb25nZXIgYW5kIGZvciBzb21lIHRoaXMgbWF5IG1lYW4gbW92aW5nIGludG8gYSBjYXJlIGhvbWUuIFRoaXMgZGVjaXNpb24gaXMgbGlrZWx5IHRvIGJlIG9uZSBvZiB0aGUgbW9zdCBleHBlbnNpdmUgZGVjaXNpb25zIHBlb3BsZSBtYWtlIGluIHRoZWlyIGxpdmVzIGFuZCB0aGUgcHJvc3BlY3Qgb2YgcGF5aW5nIGZvciBsb25nLXRlcm0gY2FyZSBjYW4gZmVlbCBkYXVudGluZy4gWWV0IG1hbnkgZG8gbm90IHNlZWsgaW5mb3JtYXRpb24gYW5kIGFkdmljZSB0byBoZWxwIHRoZW0gY29uc2lkZXIgYWxsIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBhbmQgbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMuIFRoaXMgc29ydCBvZiBwbGFubmluZyBpcyB2aXRhbCBiZWNhdXNlIGJhc2VkIG9uIGN1cnJlbnQgZXN0aW1hdGVzLCBXZXN0IFN1c3NleCByZXNpZGVudHMgY2FuIGV4cGVjdCB0byBwYXkgYW4gYXZlcmFnZSBvZiDCozUwLDAwMCBvciBtb3JlIHBlciB5ZWFyIGZvciBhIHJlc2lkZW50aWFsIGNhcmUgaG9tZS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVG8gZW5zdXJlIHRoYXQgdGhlIHJlc2lkZW50cyBvZiBXZXN0IFN1c3NleCBoYXZlIGFjY2VzcyB0byBoaWdoIHF1YWxpdHkgaW5mb3JtYXRpb24gYW5kIGFkdmljZSBhYm91dCBjYXJlIGFuZCBzdXBwb3J0IG9wdGlvbnMgYW5kIHRoZSBtb3N0IGNvc3QgZWZmZWN0aXZlIHdheXMgb2YgcGF5aW5nIGZvciB0aGlzLCBvdXIgQ2FyZXdpc2UgQ2FyZSBGdW5kaW5nIHNjaGVtZSB3YXMgZXN0YWJsaXNoZWQgYnkgQWdlIFVLIFdlc3QgU3Vzc2V4LCB0aGUgU29jaWV0eSBvZiBMYXRlciBMaWZlIEFkdmlzZXJzIChTT0xMQSksIHRoZSBDb3VudHkgQ291bmNpbOKAmXMgQWR1bHRz4oCZIFNlcnZpY2VzIGFuZCBUcmFkaW5nIFN0YW5kYXJkcyBkZXBhcnRtZW50cyBhbmQgV2VzdCBTdXNzZXggUGFydG5lcnMgaW4gQ2FyZS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiQ2FyZXdpc2UgaGFzIGEgcGFuZWwgb2YgYXBwcm92ZWQgaW5kZXBlbmRlbnQgc3BlY2lhbGlzdCBmaW5hbmNpYWwgYWR2aXNlcnMgdG8gaGVscCBwZW9wbGUgYWZmb3JkIHRoZSBiZXN0IHF1YWxpdHkgY2FyZSBhdCBob21lIG9yIGluIHRoZWlyIHByZWZlcnJlZCBjYXJlIGhvbWUgZm9yIGFzIGxvbmcgYXMgdGhleSBuZWVkIGl0IGFuZCBzbyBwcmV2ZW50IHBlb3BsZSBydW5uaW5nIG91dCBvZiBtb25leSBhbmQgYmVjb21pbmcgdGhlIGZpbmFuY2lhbCByZXNwb25zaWJpbGl0eSBvZiB0aGUgQ291bnR5IENvdW5jaWwuXFxuXFxuXCJ9XSxbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQjI0MUI0QzYtMTMzMS00NzBCLUIzNjEtRjZGMUVBQzFERDI0XCJ9XV19LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkNhcmV3aXNlIGhhcyBiZWVuIG9wZXJhdGlvbmFsIHNpbmNlIDIwMTEgYW5kIHRoZSBDb3VudHkgQ291bmNpbCBoYXMsIHRoZXJlZm9yZSwgYmVlbiBpbiBhIGdvb2QgcG9zaXRpb24gdG8gZXZhbHVhdGUgcGVyZm9ybWFuY2Ugb3ZlciBhIGZhaXJseSBsb25nIHBlcmlvZCBhbmQgdGFrZSBhY3Rpb24gYXMgbmVjZXNzYXJ5IHRvIHJlZmluZSB0aGUgbW9kZWwuIENvbnNlcXVlbnRseSwgd2Ugd2VyZSB3ZWxsLXBvc2l0aW9uZWQgdG8gbWVldCBvdXIgZHV0eSB1bmRlciB0aGUgQ2FyZSBBY3QgdG8gZW5zdXJlIHRoYXQgcmVzaWRlbnRzIGhhdmUgYWNjZXNzIHRvIGltcGFydGlhbCBmaW5hbmNpYWwgYWR2aWNlIGFib3V0IHBheWluZyBmb3IgY2FyZSBhbmQgc3VwcG9ydC4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgQ2FyZXdpc2UgaGFzIGV2b2x2ZWQgaW50byBhIG1vZGVsIHRoYXQgaXMgYmVpbmcgdXNlZCBhcyBhbiBleGVtcGxhciBvZiBnb29kIHByYWN0aWNlIGF0IGEgbmF0aW9uYWwgbGV2ZWwsIG5vdCBsZWFzdCBiZWNhdXNlIG9mIHRoZSBoaWdoIGxldmVsIG9mIGN1c3RvbWVyIGNob2ljZSB0aGF0IGlzIGJ1aWx0IGludG8gdGhlIG1vZGVsLiBUaGUgc3VjY2Vzc2Z1bCBwYXJ0bmVyc2hpcCBzdHlsZSBhbmQgdGhlIHJpc2sgbWFuYWdlbWVudCBhcHByb2FjaCBhZG9wdGVkIGJ5IHRoZSBDb3VudHkgQ291bmNpbCBoYXZlIGFsc28gYmVlbiBoaWdobGlnaHRlZCB0byBvdGhlciBsb2NhbCBhdXRob3JpdGllcyBhcyBwb3NpdGl2ZSBlbGVtZW50cyBvZiBvdXIgYXBwcm9hY2guXFxuXFxuUHJlc2VudGF0aW9ucyBvbiB0aGUgQ2FyZXdpc2UgbW9kZWwgaGF2ZSBiZWVuIGluY2x1ZGVkIGluIFRMQVAgKFRoaW5rIExvY2FsLCBBY3QgUGVyc29uYWwpL0RlcGFydG1lbnQgb2YgSGVhbHRoIG5hdGlvbmFsIHdvcmtzaG9wcyBoZWxkIHRvIHN1cHBvcnQgbG9jYWwgYXV0aG9yaXRpZXMgaW4gcGxhbm5pbmcgdG8gZGlzY2hhcmdlIHRoZWlyIGR1dHkgdW5kZXIgdGhlIENhcmUgQWN0IDIwMTQuIENhcmV3aXNlIGhhcyBpbmZvcm1lZCB0aGUgRGVwYXJ0bWVudCBvZiBIZWFsdGggZmluYWwgZ3VpZGFuY2UgZm9yIGxvY2FsIGF1dGhvcml0aWVzIG9uIHRoZSBwcm92aXNpb24gb2YgZmluYW5jaWFsIGluZm9ybWF0aW9uIGFuZCBhZHZpY2UuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiMgKipIZXJl4oCZcyBob3cgZmluYW5jaWFsIGFkdmljZSBmcm9tIGEgQ2FyZXdpc2UgY2FyZSBmZWVzIHNwZWNpYWxpc3QgaGVscGVkIG9uZSBXZXN0IFN1c3NleCBmYW1pbHkuKipcXG5cXG5HcmFjZSogd2FzIDg0IHdoZW4gaGVyIGRhdWdodGVyIGFuZCBsYXd5ZXIgYXNrZWQgZm9yIGFkdmljZSBvbiBjb3ZlcmluZyBoZXIgY2FyZSBjb3N0cy4gR3JhY2Ugc3VmZmVyZWQgc29tZSBwaHlzaWNhbCBwcm9ibGVtcyBhbmQgbWlsZCBkZW1lbnRpYSB3aGljaCBtZWFudCB0aGF0IHNoZSBuZWVkZWQgZnVsbC10aW1lIHJlc2lkZW50aWFsIGNhcmUuIEdyYWNlIG93bmVkIGEgaG91c2UgYW5kIGFmdGVyIGl0IHdhcyBzb2xkIHRoYXQgZ2F2ZSBoZXIgYXNzZXRzIG9mIMKjMjEwLDAwMC4gV2UgZXN0aW1hdGVkIHRoYXQgaWYgR3JhY2UgZGlkIG5vdGhpbmcgaGVyIG1vbmV5IHdvdWxkIHJ1biBkb3duIGFuZCBzaGUgd291bGQgbmVlZCBoZXIgY2FyZSB0byBiZSBwYWlkIGZvciBieSB0aGUgbG9jYWwgYXV0aG9yaXR5IGFmdGVyIHNldmVuIHllYXJzLlxcblxcbiBcIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8wQUNCRUVENC1DMEEwLTQxRDEtQjM3MS1DNDc0NDg4OUI4MDZcIn1dLFt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJBZnRlciBsb29raW5nIGF0IEdyYWNl4oCZcyBzaXR1YXRpb24gd2UgY29uc2lkZXJlZCBhIG51bWJlciBvZiBvcHRpb25zLiBPbmUgb3B0aW9uIHdhcyB0byBhcnJhbmdlIGFuIGltbWVkaWF0ZSBjYXJlIHBsYW4gZm9yIGEgcHJlbWl1bSBvZiDCozEzOCwwMDAuIEl0IHdvdWxkIHBheSBoZXIgY2FyZSBwcm92aWRlciDCozIsMTAwIGEgbW9udGgsIHdoaWNoIHdvdWxkIGluY3JlYXNlIGVhY2ggQXByaWwgYnkgNSUgYW5kIGJlIHBheWFibGUgZm9yIGhlciBsaWZldGltZS4gSG93ZXZlciwgdGhpcyBvcHRpb24gd291bGQgb25seSBsZWF2ZSDCozcyLDAwMCBvZiBoZXIgZXN0YXRlIGFuZCBHcmFjZSBhbmQgaGVyIGZhbWlseSB3ZXJlIHVuY29tZm9ydGFibGUgd2l0aCB0aGUgaWRlYSB0aGF0IHN1Y2ggYSBsYXJnZSBzdW0gY291bGQgYmUgbG9zdCBpZiBHcmFjZSBkaWVkIHNvb24gYWZ0ZXIgYnV5aW5nIHRoZSBwbGFuLiBJbnN0ZWFkIHdlIGFncmVlZCB0aGF0IEdyYWNlIHNob3VsZCBidXkgYSBmaXZlLXllYXIgZGVmZXJyZWQgY2FyZSBwbGFuIGF0IGEgY29zdCBvZiDCozI2LDEwMC4gVGhpcyBwbGFuIGhhcyB0aGUgc2FtZSBsb25nLXRlcm0gYmVuZWZpdCBhcyB0aGUgaW1tZWRpYXRlIHBsYW4sIGJ1dCB3aWxsIG9ubHkgcGF5IG91dCBpZiBHcmFjZSBzdGlsbCBuZWVkcyBjYXJlIGluIGZpdmUgeWVhcnPigJkgdGltZS4gSW4gdGhlIG1lYW50aW1lIHNoZSBmdW5kcyB0aGUgY2FyZSBmcm9tIGhlciBhc3NldHMuIE92ZXJhbGwgdGhlIGxvbmctdGVybSBjb3N0IG9mIHRoaXMgb3B0aW9uIGlzIGdyZWF0ZXIgYnV0IEdyYWNlIGFuZCB0aGUgZmFtaWx5IHdlcmUgaGFwcGllciB3aXRoIHRoaXMgc29sdXRpb24gYXMgdGhleSB3b3VsZCBmZWVsIHRoYXQgdGhlIGV4dHJhIG1vbmV5IGhhZCBiZWVuIHNwZW50IG9uIEdyYWNl4oCZcyBjYXJlLiBPbmNlIHBhaWQsIHRoZSBwcmVtaXVtIGNhbiBuZXZlciBiZSByZXR1cm5lZCwgYnV0IEdyYWNlIGFuZCBoZXIgZmFtaWx5IGZvdW5kIHRoZSBwbGFuIGdhdmUgdGhlbSBncmVhdCBwZWFjZSBvZiBtaW5kLiBHcmFjZSBrbmV3IHRoYXQgdGhlIGluY29tZSBmcm9tIHRoZSBwbGFuIHdvdWxkIGJlIHRoZXJlIG5vIG1hdHRlciBob3cgbG9uZyBzaGUgbGl2ZWQuIFNoZSBkaWRu4oCZdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGhlciBtb25leSBydW5uaW5nIG91dCBhbmQgc2hlIHdvdWxkIHN0aWxsIGhhdmUgbW9uZXkgdG8gbGVhdmUgYW4gaW5oZXJpdGFuY2UgZm9yIGhlciBmYW1pbHkuIE9uIEdyYWNlcyBkZWF0aCBzaGUgd2lsbCBsZWF2ZSBhbiBlc3RhdGUgYmV0d2VlbiDCozE4NCwwMDAgYW5kIMKjNjcsMDAwLCBkZXBlbmRpbmcgdXBvbiBob3cgbG9uZyBzaGUgbGl2ZXMuXFxuXFxuVGhpcyBpcyBqdXN0IG9uZSBleGFtcGxlIG9mIGhvdyBDYXJld2lzZSBjYW4gaGVscCBwZW9wbGUgbWFrZSBtb3JlIGluZm9ybWVkIGNob2ljZXMgYXQgdGhpcyBzb21ldGltZXMgdmVyeSBzdHJlc3NmdWwgc3RhZ2UgaW4gdGhlaXIgbGl2ZXMuXFxuXFxuKiBOYW1lIGNoYW5nZWQgICBcXG5cIn1dXX0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyAqKlBlcmZvcm1hbmNlKipcXG5cXG5UaGUgcG90ZW50aWFsIGZpbmFuY2lhbCBiZW5lZml0cyB0byBib3RoIGluZGl2aWR1YWxzIGFuZCB0aGUgQ291bnR5IENvdW5jaWwsIGFuZCB0aGUgcHJlZGljdGVkIGRlbW9ncmFwaGljIGluY3JlYXNlIGluIG51bWJlcnMgb2Ygb2xkZXIgcGVvcGxlLCBwYXJ0aWN1bGFybHkgdGhvc2Ugd2l0aCBkZW1lbnRpYSwgb3ZlciB0aGUgY29taW5nIHllYXJzLCBtZWFucyB0aGF0IHByb21vdGlvbiBvZiB0aGUgQ2FyZXdpc2Ugc2NoZW1lIGlzIGltcGVyYXRpdmUuIENhcmVmdWxseSB0YXJnZXRlZCBtYXJrZXRpbmcgYW5kIHByb21vdGlvbnMgY2FtcGFpZ25zIHJhbiB0aHJvdWdob3V0IDIwMTQtMTUsIDIwMTUtMTYgYW5kIDIwMTYtMTcuIEEgbWFya2V0aW5nIGNhbXBhaWduIGZvciAyMDE3LTE4IGlzIG5vdyB1bmRlcndheSB1c2luZyB0aGUgb3V0Y29tZSBvZiBldmFsdWF0aW9uIGZyb20gdGhlIHByZXZpb3VzIHRocmVlIHllYXJzLiBUaGUgbWFya2V0aW5nIGFpbXMgdG8gZW5zdXJlIHRoYXQgdGhlIG1vbWVudHVtIG9mIHBhc3QgY2FtcGFpZ25zIGlzIG1haW50YWluZWQgYW5kIHB1YmxpYyBhd2FyZW5lc3MgaW5jcmVhc2VkLiBXb3JraW5nIGNsb3NlbHkgd2l0aCBQb2xpY3kgJiBDb21tdW5pY2F0aW9ucyB0aGUgMjAxNy0xOCBjYW1wYWlnbiB3aWxsIHJlZmxlY3QgdGhlIEFkdWx0cycgU2VydmljZXMgdmlzaW9uIGZvciB0aGUgZnV0dXJlIHdoaWNoIGZvY3VzZXMgb24gaW5jcmVhc2luZyBwZW9wbGXigJlzIGluZGVwZW5kZW5jZSBhbmQgd2VsbGJlaW5nIGFuZCBlbmNvdXJhZ2luZyBtb3JlIHBlb3BsZSB0byBwbGFuIGVhcmx5IGZvciB0aGVpciBsb25nLXRlcm0gY2FyZSBuZWVkcyBpbiBvbGRlciBhZ2UuXFxuXFxuV2Uga25vdyB0aGF0IG1hbnkgcGVvcGxlIGRvIG5vdCBpbW1lZGlhdGVseSB3YW50IGEgcmVmZXJyYWwgdG8gYSBjYXJlIGZlZXMgc3BlY2lhbGlzdCBidXQgd291bGQgcmF0aGVyIGhhdmUgaW5mb3JtYXRpb24gaW4gdGhlIGZpcnN0IGluc3RhbmNlIGFuZCB0aGVuIG1ha2UgYSBtZWFzdXJlZCBkZWNpc2lvbiBsYXRlciBhYm91dCB3aGV0aGVyIHRvIHByb2NlZWQuIEl0IGlzLCB0aGVyZWZvcmUsIHJlY29nbmlzZWQgdGhhdCB0aGUgbnVtYmVyIG9mIHJlZmVycmFscyBpcyBuZXZlciBsaWtlbHkgdG8gaW5jcmVhc2UgZHJhbWF0aWNhbGx5IGluIGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUgYW5kIHRoYXQgYW55IGNhbXBhaWduIHdpbGwgdGFrZSB0aW1lIHRvIHlpZWxkIHJlc3VsdHMuIFBhcnRuZXJzLCBpbmNsdWRpbmcgdGhlIGNhcmUgZmVlcyBzcGVjaWFsaXN0cywgaGF2ZSBhZHZpc2VkIHRoYXQgdGhlIHF1YWxpdHkgb2YgcmVmZXJyYWxzIHNob3VsZCBiZSBhIGtleSBmb2N1cyByYXRoZXIgdGhhbiBzaW1wbHkgYWltaW5nIHRvIGluY3JlYXNlIHRoZSBudW1iZXJzLlxcblxcbkFnZSBVSyBXZXN0IFN1c3NleCBwcm92aWRlcyBhIGZyZWUgTW9uZXkgQWR2aWNlIHNlcnZpY2Ugd2hpY2ggaXMgcGFydCBvZiB0aGUgQ2FyZXdpc2Ugc2NoZW1lOyB0aGlzIHNlcnZpY2UgaW5jbHVkZXMgYmVuZWZpdHMgYWR2aWNlLiBNYXhpbWlzaW5nIGJlbmVmaXQgZW50aXRsZW1lbnQgZW5hYmxlcyBwZW9wbGUgdG8gcHVyY2hhc2UgY2FyZSBhbmQgcmVtYWluIGxpdmluZyBpbmRlcGVuZGVudGx5IGluIHRoZWlyIG93biBob21lcyBmb3IgYXMgbG9uZyBhcyBwb3NzaWJsZSBhbmQgY2FuIHJlZHVjZSB0aGUgbmVlZCBmb3IgcmVsaWFuY2Ugb24gQ291bnR5IENvdW5jaWwgZnVuZGluZy4gSW5jcmVhc2VkIGZpbmFuY2lhbCBzZWN1cml0eSBjYW4gYWxzbyBlbmhhbmNlIHBlb3BsZeKAmXMgd2VsbGJlaW5nLCBhIGtleSBwcmluY2lwbGUgb2YgdGhlIENhcmUgQWN0LiBJbiBhZGRpdGlvbiwgdGhlIGxvY2FsIGVjb25vbXkgY2FuIGJlbmVmaXQgZnJvbSBwZW9wbGUgdXNpbmcgdGhlaXIgYmVuZWZpdHMgdG8gZW1wbG95IHBlb3BsZSB0byBwcm92aWRlIGRvbWljaWxpYXJ5IGNhcmUsIHBlcnNvbmFsIGFzc2lzdGFudHMsIGdhcmRlbmluZyBldGMuXFxuXFxuQXMgdGhlIDIwMTYtMTcgdGFyZ2V0cyBmb3IgcmVmZXJyYWxzIHRvIHRoZSBDYXJld2lzZSBjYXJlIGZlZXMgc3BlY2lhbGlzdHMgd2VyZSBub3QgbWV0LCB3ZSBhcmUgbWFpbnRhaW5pbmcgdGhlIDIwMTctMTggdGFyZ2V0cyBmb3IgdGhpcyBtZWFzdXJlLlxcblxcbiogNTUgcGVvcGxlIHJlZmVycmVkIHRvIHRoZSBDYXJld2lzZSBjYXJlIGZlZXMgc3BlY2lhbGlzdHMgcGVyIG1vbnRoIGJ5IHRoZSBlbmQgb2YgTWFyY2ggMjAxNyB3aXRoIGFuIGluY3JlbWVudGFsIGluY3JlYXNlIHRocm91Z2hvdXQgdGhlIHllYXIuXFxuKiAtQWdlIFVLIFdlc3QgU3Vzc2V4IE1vbmV5IEFkdmljZSBTZXJ2aWNlIC0gRm9yIDIwMTYuIFRhcmdldCBmb3IgMjAxNy0xOCBpcyB0byBtYWludGFpbiA1NTAgaW5kaXZpZHVhbCBzZXNzaW9ucyBwZXIgbW9udGggdGhyb3VnaG91dCB0aGUgeWVhci5cXG5cIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKk1hcmtldGluZyBhbmQgUHJvbW90aW9uKipcXG5cXG5UaGUgbWFya2V0aW5nIGNhbXBhaWduIGNvbXByaXNlcyBhIHdpZGUgcmFuZ2Ugb2YgcHJvbW90aW9uYWwgY2hhbm5lbHMgaW5jbHVkaW5nIHNvY2lhbCBtZWRpYSBhbmQgZGlnaXRhbCBtZXRob2RzLCBhbGwgb2Ygd2hpY2ggYXJlIHN1YmplY3QgdG8gcm9idXN0IG1vbml0b3JpbmcgYW5kIGV2YWx1YXRpb24uIEFzIHBhcnQgb2YgdGhlIDIwMTYtMTcgbWFya2V0aW5nIGNhbXBhaWduLCBDYXJld2lzZSB3YXMgYWdhaW4sIG9uZSBvZiB0aGUgbWFpbiBzcG9uc29ycyBmb3IgV2VzdCBTdXNzZXggQ2FyZSBNb250aCB3aGljaCB0b29rIHBsYWNlIGR1cmluZyBPY3RvYmVyIDIwMTYuIFRoaXMgd2FzIGRlc2lnbmVkIHRvIHByb21vdGUgdGhlIGRpZmZlcmVudCBjYXJlIGFuZCBzdXBwb3J0IG9wdGlvbnMgYXZhaWxhYmxlIHRvIHJlc2lkZW50cyBpbiBXZXN0IFN1c3NleCB1c2luZyBhIHZhcmlldHkgb2YgbWFya2V0aW5nIGNoYW5uZWxzIHN1Y2ggYXMgcmFkaW8gcHJvbW90aW9ucyBhbmQgc29jaWFsIG1lZGlhLiBEdXJpbmcgdGhlIGNhbXBhaWduIHRoZSBudW1iZXIgb2YgbmV3ICd1bmlxdWUnIHZpc2l0b3JzIHRvIHRoZSBDYXJld2lzZSB3ZWJzaXRlIGluY3JlYXNlZCBmcm9tIFNlcHRlbWJlciB0byBPY3RvYmVyIGJ5IG92ZXIgMjAzJSBhbmQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgd2ViIHBhZ2Ugd2FzIHZpZXdlZCBpbmNyZWFzZWQgYnkgMTc0JSAuIENhcmUgTW9udGggaXMgYmVpbmcgcmVwZWF0ZWQgZHVyaW5nIE9jdG9iZXIgMjAxNy5cXG5cXG5cIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy82QUY1RTJCOC0wRjU5LTQ4NDQtQThCQi04REM0QzE5RDgxNzNcIn1dXX0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlcmUgaXMgYSBmb2N1cyBvbiBwcm9tb3RpbmcgQ2FyZXdpc2UgYXQgdGhlIOKAmHBvaW50IG9mIG5lZWTigJk7IGZvciBleGFtcGxlLCBpbiByZXNpZGVudGlhbCBjYXJlIGhvbWVzIGFuZCB0byBkb21pY2lsaWFyeSBjYXJlIHByb3ZpZGVycywgdG8gaG9zcGl0YWwgZGlzY2hhcmdlIHRlYW1zLCBHUHMgYW5kIHNvbGljaXRvcnMsIChwYXJ0aWN1bGFybHkgU29saWNpdG9ycyBmb3IgdGhlIEVsZGVybHkpLiBXZSBoZWxkIHNvbWUgQ2FyZXdpc2Ug4oCYc3VyZ2VyaWVz4oCZIGluIHJlc2lkZW50aWFsIGNhcmUgaG9tZXMgYW5kIHdlIHdpbGwgYmUgY29udGludWUgdG8gcHJvbW90ZSB0aGUgb2ZmZXIgYXMgcGFydCBvZiB0aGUgcHJvbW90aW9uYWwgY2FtcGFpZ24uIENhcmV3aXNlIGFsc28gaG9zdGVkIGFuIGV2ZW50IGZvciBsYXd5ZXJzLCAnQmUgQ2FyZXdpc2Ugd2l0aCB5b3VyIGNsaWVudHMnIHdpdGggQ29udGludWluZyBQcm9mZXNzaW9uYWwgRGV2ZWxvcG1lbnQgYWNjcmVkaXRhdGlvbiBvbiA1dGggT2N0b2JlciAyMDE2LiBUaGUgZXZlbnQgZm9jdXNzZWQgb24gcHJvbW90aW5nIHRoZSBiZW5lZml0cyBmb3Igc29saWNpdG9ycyBvZiBlc3RhYmxpc2hpbmcgbGlua3Mgd2l0aCB0aGUgQ2FyZXdpc2UgY2FyZSBmZWVzIHNwZWNpYWxpc3RzIGFuZCBpbmNsdWRlZCBoaWdoIHByb2ZpbGUgc3BlYWtlcnMgVGlzaCBIYW5pZmlhbiwgQmFycmlzdGVyIGFuZCBmb3VuZGVyIG9mIHRoZSBTb2NpZXR5IG9mIGxhdGVyIExpZmUgQWR2aXNlcnMgKFNPTExBKSBhbmQgU29saWNpdG9ycyBmb3IgdGhlIEVsZGVybHkgYW5kIERhdmUgU2VhZ2VyLCBEZXZlbG9wbWVudCBEaXJlY3RvciBhdCBTb2xpY2l0b3JzIGZvciBJbmRlcGVuZGVudCBGaW5hbmNpYWwgQWR2aWNlIChTSUZBKS4gQm90aCBzcGVha2VycyBwcmFpc2VkIHRoZSBDYXJld2lzZSBtb2RlbCBhcyBvbmUgbmF0aW9uYWwgZ29vZCBwcmFjdGljZSBhbmQgaGlnaGxpZ2h0ZWQgdGhlIGltcG9ydGFuY2Ugb2YgbGF3eWVycyByZWZlcnJpbmcgY2xpZW50cyB0byBzcGVjaWFsaXNlZCwgaGlnaGx5IHF1YWxpZmllZCBTT0xMQSBhY2NyZWRpdGVkIGZpbmFuY2lhbCBhZHZpc2VycyAuIFRoZSBldmVudCB3YXMgd2VsbCBhdHRlbmRlZCBieSBsYXd5ZXJzIGZyb20gYWNyb3NzIHRoZSBjb3VudHkgYW5kIGRlbGVnYXRlIGZlZWRiYWNrIGluZGljYXRlZCB0aGF0IHRoZSBldmVudCB3YXMgd2VsbCByZWNlaXZlZC4gRGVsZWdhdGVzIHdlcmUgY29udGFjdGVkIHRvIG9mZmVyIHRoZW0gb3Bwb3J0dW5pdHkgdG8gZXN0YWJsaXNoIHByb2Zlc3Npb25hbCBsaW5rcyB3aXRoIENhcmV3aXNlIGNhcmUgZmVlcyBzcGVjaWFsaXN0cyBpbiB0aGVpciBsb2NhbCBhcmVhLiBJbiBhZGRpdGlvbiwgaW52aXRlZXMgd2hvIHdlcmUgdW5hYmxlIHRvIGF0dGVuZCB0aGUgZXZlbnQgd2VyZSBwcm92aWRlZCB3aXRoIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBlc3RhYmxpc2ggcHJvZmVzc2lvbmFsIGxpbmtzIHdpdGggQ2FyZXdpc2UgY2FyZSBmZWVzIHNwZWNpYWxpc3RzIG5lYXJlc3QgdG8gdGhlaXIgcHJhY3RpY2UuIFRoZSBjYXJlIGZlZXMgc3BlY2lhbGlzdHMgY29udGludWUgdG8gdmlzaXQgZmlybXMgb2Ygc29saWNpdG9ycyBvbiByZXF1ZXN0IGFuZCB0byBidWlsZCBwcm9mZXNzaW9uYWwgcmVsYXRpb25zaGlwcyB3aXRoIGxhd3llcnMvXFxuXFxuV2UgY29udGludWUgdG8gaXNzdWUgaW52aXRlcyB0byBjYXJlIGhvbWUgcHJvdmlkZXJzIHRvIGhvbGQgQ2FyZXdpc2UgJ3N1cmdlcmllcycgZm9yIHRoZWlyIHN0YWZmLCByZXNpZGVudHMgYW5kIHRoZWlyIGZhbWlsaWVzLiBUaGUgdGVtcGxhdGUgcmVjb21tZW5kaW5nIHRoYXQgbmV3IGNhcmUgaG9tZSByZXNpZGVudHMgYWNjZXNzIGdvb2QgZmluYW5jaWFsIGFkdmljZSB3aGljaCB3YXMgZGV2ZWxvcGVkIGZvciBpbmNsdXNpb24gaW4gYWRtaXNzaW9uIHBhY2tzLCBoYXMgYmVlbiB1cGRhdGVkIHRvIHJlc2VtYmxlIG1vcmUgb2YgYW4gaW5mb3JtYXRpb24gZmx5ZXIuIFRoZSBmbHllciB3YXMgY2lyY3VsYXRlZCB0byBwcm92aWRlcnMgYW5kIGl0IGlzIGJlaW5nIHN1Z2dlc3RlZCB0aGF0IGV4aXN0aW5nIHJlc2lkZW50cyBhcmUgYWxzbyBpbmNsdWRlZC4gV2VzdCBTdXNzZXggUGFydG5lcnMgaW4gQ2FyZSAocmVwcmVzZW50YXRpdmUgYm9keSBmb3IgY2FyZSBwcm92aWRlcnMgaW4gV2VzdCBTdXNzZXggYW5kIGEgQ2FyZXdpc2UgcGFydG5lcikgaXMgcGxheWluZyBhbiBpbmNyZWFzZWQgcm9sZSBpbiBwcm9tb3RpbmcgQ2FyZXdpc2UuXFxuXFxuV2UgYWxzbyB2aXNpdCBsb2NhbCBvcmdhbmlzYXRpb25zIGFuZCBncm91cHMgdG8gZ2l2ZSBwcmVzZW50YXRpb25zIG9uIHJlcXVlc3QgYW5kIHdlIHNlZWsgb3V0IHByb21vdGlvbmFsIGFjdGl2aXRpZXMgYXMgcGFydCBvZiB0aGUgb25nb2luZyBtYXJrZXRpbmcgY2FtcGFpZ24uXFxuXFxuKipGRUJSVUFSWSAyMDE4IEZJR1VSRVMqKlxcblxcbi0gLSAtXFxuXFxuKipfUmVmZXJyYWxzIHRvIGNhcmUgZmVlcyBzcGVjaWFsaXN0c18qKiAtIDI1LiBUaGUgdGFyZ2V0IGZvciB0aGUgbnVtYmVyIG9mIHJlZmVycmFscyB0byB0aGUgY2FyZSBmZWVzIHNwZWNpYWxpc3RzIGZvciBGZWJydWFyeSBpcyA1Mi4gVGhlIHRhcmdldCBmb3IgRmVicnVhcnkgMjAxOCBoYXMgbm90IGJlZW4gbWV0Llxcblxcbkhvd2V2ZXIsIDI1IHBlb3BsZSBoYXZlIHJlY2VpdmVkIHNvbWUgbGV2ZWwgb2YgZmluYW5jaWFsIGFkdmljZSBmcm9tIHRoZSBjYXJlIGZlZXMgc3BlY2lhbGlzdHMgcmFuZ2luZyBmcm9tIGJhc2ljIHRvIHNwZWNpYWxpc3QgYWR2aWNlLiAnQmFzaWMgYWR2aWNlJyBjYW4gaW52b2x2ZSBjYXJlIGZlZXMgc3BlY2lhbGlzdHMgZW5nYWdpbmcgaW4gY29udmVyc2F0aW9ucyB3aXRoIGNhbGxlcnMgZm9yIGhhbGYgYW5kIGhvdXIgb3IgbW9yZSBkdXJpbmcgd2hpY2ggdGhleSBhcmUgcHJvdmluZyBhZHZpY2UuXFxuXFxuXyoqQWdlIFVLIFdlc3QgU3Vzc2V4KipfIC0gVGhlIG51bWJlciBvZiBpbmRpdmlkdWFsIHNlc3Npb25zIGhlbGQgYnkgdGhlIE1vbmV5IEFkdmljZSBTZXJ2aWNlIChwZW9wbGUgcmVjZWl2aW5nIGFkdmljZSBvbiBhIHNwZWNpZmljIGJlbmVmaXQpIGZvciBGZWJydWFyeSAyMDE4ID0gNTc1LiBUaGUgdGFyZ2V0IGZvciBGZWJydWFyeSAyMDE4IGlzIDU1MCBhbmQgaXQgaGFzLCB0aGVyZWZvcmUgYmVlbiBleGNlZWRlZC5cXG5cXG5UaGUgdmFsdWUgb2YgYWRkaXRpb25hbCBiZW5lZml0cyBhY2Nlc3NlZCBmb3IgcGVvcGxlIGR1cmluZyBmcm9tIEFwcmlsIC0gRmVicnVhcnkgMjAxOCA9IMKjMiw5MTEsMzUzLlxcblxcbioqQWN0aW9ucyBiZWluZyB0YWtlbioqXFxuXFxuKiBNYXJrZXRpbmcgY2FtcGFpZ24gZm9yIDIwMTctMTguIFRvIHRha2UgaW50byBhY2NvdW50IGEgZm9jdXMgb24gdGhlIHRyaWFsIHNpdGVzIGZvciB0aGUgQWR1bHRzJyBTZXJ2aWNlcyBuZXcgYXBwcm9hY2ggdG8gZGVsaXZlcmluZyBhZHVsdCBzb2NpYWwgY2FyZS5cXG4qIFByZXNlbnRhdGlvbnMgdG8gZG9taWNpbGlhcnkgY2FyZSBwcm92aWRlciBmb3J1bVxcbiAgKiBQbGFubmluZyBmb3IgZnVydGhlciBjb3Vwb24gcHJvbW90aW9uc1xcbiogU3VyZ2VyaWVzL3NlbWluYXJzIGluIHJlc2lkZW50aWFsIGNhcmUgaG9tZXMgb24gcmVxdWVzdCBmcm9tIHByb3ZpZGVyc1xcbiogUmVuZXdlZCBmb2N1cyBvbiBwcm9tb3Rpb25zIHRvIHJlc2lkZW50aWFsIGFuZCBkb21pY2lsaWFyeSBjYXJlIGhvbWUgcHJvdmlkZXJzIC0gQ29udHJhY3RzIERlcGFydG1lbnQgcGxheWluZyBhIGtleSByb2xlLiBXZXN0IFN1c3NleCBQYXJ0bmVycyBpbiBDYXJlIGhhdmUgdXBkYXRlZCB0aGVpciB3ZWJzaXRlIHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgQ2FyZXdpc2Ugb24gdGhlaXIgd2Vic2l0ZS5cXG5cXG4qKkZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IENhcmV3aXNlIHZpc2l0OioqIFsqKnd3dy53ZXN0c3Vzc2V4Y29ubmVjdHRvc3VwcG9ydC5vcmcvY2FyZXdpc2UqKl1bMF0qKiwgY2FsbCAwMTI0MyA2NDIxMjEgb3IgZW1haWw6KiogWyoqc29jaWFsY2FyZUB3ZXN0c3Vzc2V4Lmdvdi51ayoqXVsxXVxcblxcblswXTogaHR0cDovL3d3dy53ZXN0c3Vzc2V4Y29ubmVjdHRvc3VwcG9ydC5vcmcvY2FyZXdpc2VcXG5bMV06IG1haWx0bzpzb2NpYWxjYXJlQHdlc3RzdXNzZXguZ292LnVrXCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJUaGUgcGVyY2VudGFnZSBvZiBBZHVsdHMgU29jaWFsIENhcmUgY3VzdG9tZXJzIHdobywgd2hlbiBzdXJ2ZXllZCwgZmVsdCB0aGV5IGhhZCBjb250cm9sIG92ZXIgdGhlaXIgZGFpbHkgbGl2ZXNcIixcInVzZV9jdXN0b21fc3VidGl0bGVcIjp0cnVlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJUbyBtYWludGFpbiBvciBpbXByb3ZlIHRoZSBwZXJjZW50YWdlIG9mIEFkdWx0cyBTb2NpYWwgQ2FyZSBjdXN0b21lcnMgd2hvLCB3aGVuIHN1cnZleWVkLCBmZWx0IHRoZXkgaGFkIGNvbnRyb2wgb3ZlciB0aGVpciBkYWlseSBsaXZlcyB0byA4MC4zJVwifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDE2LTAzLTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6IiUiLCJ0YXJnZXRfdHlwZSI6InJlbGF0aXZlIiwidGFyZ2V0X2RlbHRhIjowLCJ0YXJnZXRfZGVsdGFfaXNfcGVyY2VudCI6ZmFsc2UsImJhc2VsaW5lIjo4MC4zLCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6IjZrdW0tazRuaSJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE2fSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9LFwiYWN0aW9uX3R5cGVcIjpcIm1haW50YWluXCIsXCJtYWludGFpbl90eXBlXCI6XCI+XCJ9LFwiYmFzZWxpbmVcIjp7XCJzcXVpc2h5XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE1fSxcImVuZFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTV9fSxcInN0YXJ0XCI6XCIyMDE1LTAxLTAxVDAwOjAwOjAwLjAwMFwiLFwiZW5kXCI6XCIyMDE1LTAxLTAxVDIzOjU5OjU5LjAwMFwiLFwibWV0cmljXCI6e1wibWV0YWRhdGFcIjpcIntcXFwid2l6YXJkXFxcIjp7XFxcImZpbHRlcl9hc3RcXFwiOlt7XFxcInZhbHVlc1xcXCI6W3t9XX1dfX1cIn0sXCJ0eXBlXCI6XCJzdGF0aWNcIn0sXCJuYW1lXCI6XCJ0cmFja2luZyB0aGUgJSBvZiBBZHVsdHMgU29jaWFsIENhcmUgY3VzdG9tZXJzIHdobywgd2hlbiBzdXJ2ZXllZCwgZmVsdCB0aGV5IGhhZCBjb250cm9sIG92ZXIgdGhlaXIgZGFpbHkgbGl2ZXNcIixcInlTY2FsZVwiOntcInVzZV9kZWZhdWx0XCI6ZmFsc2V9fSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwODo1MzoxNC43MzNaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDg6NTM6MTQuNzMzWiIsInRhcmdldF90b2xlcmFuY2UiOjUsImlkIjoicmNqMy12cnRoIn0sInJlbGF0ZWRfbWVhc3VyZXMiOlt7Im1ldGFkYXRhIjoiIiwiaWQiOiI2cmJlLWYzcDcifSx7Im1ldGFkYXRhIjoiIiwiaWQiOiIzeThyLW1menEifSx7Im1ldGFkYXRhIjoiIiwiaWQiOiJ0NmQyLXhiazgifV0sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6NTY6MzkuMjgyWiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA4OjUzOjE0LjgwOVoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOTo1NjozOS4yODJaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiJwa2k0LTNmaG0iLCJuYW1lIjoiUXVhbGl0eSBvZiBjYXJlIGluIGhvbWVzIiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFsaXR5IG9mIENhcmUgSG9tZXMgYW5kIENhcmUgcmVjZWl2ZWQgYXQgSG9tZSoqXFxuXFxuVGhlIENhcmUgUXVhbGl0eSBDb21taXNzaW9uIChDUUMpIGlzIHRoZSBpbmRlcGVuZGVudCBpbnNwZWN0b3IgYW5kIHJlZ3VsYXRvciBvZiBoZWFsdGggYW5kIHNvY2lhbCBjYXJlIHNlcnZpY2VzIGluIEVuZ2xhbmQuXFxuXFxuVGhleSBtYWtlIHN1cmUgaGVhbHRoIGFuZCBzb2NpYWwgY2FyZSBzZXJ2aWNlcywgc3VjaCBhcyBDYXJlIEhvbWVzIGFuZCBDYXJlIGFuZCBTdXBwb3J0IGluIHBlb3BsZXPigJkgb3duIGhvbWVzIGFyZSBzYWZlLCBlZmZlY3RpdmUgYW5kIGhpZ2gtcXVhbGl0eS4gVGhlIENRQyBtb25pdG9yLCBpbnNwZWN0IGFuZCByZWd1bGF0ZSBzZXJ2aWNlcyB0byBtYWtlIHN1cmUgdGhhdCB0aGV5IG1lZXQgZnVuZGFtZW50YWwgc3RhbmRhcmRzIG9mIHF1YWxpdHkgYW5kIHNhZmV0eSBhbmQgdGhleSBwdWJsaXNoIHdoYXQgdGhleSBmaW5kIHRvIGhlbHAgcGVvcGxlIG1ha2UgaW5mb3JtZWQgZGVjaXNpb25zIGFib3V0IHRoZWlyIGNob2ljZSBvZiBjYXJlLlxcblxcblRoZSBDUUMgY2hhbmdlZCB0aGVpciBtb25pdG9yaW5nIHJlZ2ltZSBpbiBPY3RvYmVyIDIwMTQgdG8gZm9jdXMgb24gNSBrZXkgcXVlc3Rpb25zOlxcblxcbiogQXJlIHRoZXkgc2FmZT9cXG4qIEFyZSB0aGV5IGVmZmVjdGl2ZT9cXG4qIEFyZSB0aGV5IGNhcmluZz9cXG4qIEFyZSB0aGV5IHJlc3BvbnNpdmUgdG8gcGVvcGxl4oCZcyBuZWVkcz9cXG4qIEFyZSB0aGV5IHdlbGwtbGVkP1xcblxcbkluIG9yZGVyIHRvIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMgQ1FDIEluc3BlY3RvcnMgd2lsbCBnYXRoZXIgaW5mb3JtYXRpb24gYW5kIGludGVsbGlnZW5jZSBmcm9tIGEgcmFuZ2Ugb2Ygc291cmNlcyBpbmNsdWRpbmc6IExvY2FsIEF1dGhvcml0aWVzLCBOSFMgYW5kIHRoZSBDYXJlIFByb3ZpZGVyLCBhbmQgdGhlbiBjYXJyeSBvdXQgYW4gb24tc2l0ZSBpbnNwZWN0aW9uLlxcblxcbk9uY2UgdGhlIGluc3BlY3RvciBoYXMgY29uc2lkZXJlZCBhbGwgb2YgdGhlIGV2aWRlbmNlIHJlbGF0ZWQgdG8gZWFjaCBxdWVzdGlvbiBhIGp1ZGdlbWVudCBpcyBtYWRlIG9uIHRoZSBjb21wbGlhbmNlIHJhdGluZyBmb3IgZWFjaCBxdWVzdGlvbiBhbmQgYW4gb3ZlcmFsbCByYXRpbmcgZm9yIHRoZSBjYXJlIHByb3ZpZGVyLlxcblxcbioqVGhlcmUgYXJlIGZvdXIgcmF0aW5ncyB3aGljaCB0aGUgQ1FDIGdpdmUgdG8gaGVhbHRoIGFuZCBzb2NpYWwgY2FyZSBzZXJ2aWNlczogb3V0c3RhbmRpbmcsIGdvb2QsIHJlcXVpcmVzIGltcHJvdmVtZW50IGFuZCBpbmFkZXF1YXRlLioqXFxuXFxuKipPdXRzdGFuZGluZyoqIC0gVGhlIHNlcnZpY2UgaXMgcGVyZm9ybWluZyBleGNlcHRpb25hbGx5IHdlbGwuXFxuXFxuKipHb29kKiogLSBUaGUgc2VydmljZSBpcyBwZXJmb3JtaW5nIHdlbGwgYW5kIG1lZXRpbmcgb3VyIGV4cGVjdGF0aW9ucy5cXG5cXG4qKlJlcXVpcmVzIGltcHJvdmVtZW50KiogLSBUaGUgc2VydmljZSBpc24ndCBwZXJmb3JtaW5nIGFzIHdlbGwgYXMgaXQgc2hvdWxkIGFuZCB3ZSBoYXZlIHRvbGQgdGhlIHNlcnZpY2UgaG93IGl0IG11c3QgaW1wcm92ZS5cXG5cXG4qKkluYWRlcXVhdGUqKiAtIFRoZSBzZXJ2aWNlIGlzIHBlcmZvcm1pbmcgYmFkbHkgYW5kIHdlJ3ZlIHRha2VuIGFjdGlvbiBhZ2FpbnN0IHRoZSBwZXJzb24gb3Igb3JnYW5pc2F0aW9uIHRoYXQgcnVucyBpdC5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMgLSBEZWNlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoZSBQZXJjZW50YWdlIG9mIENhcmUgSG9tZXMgcmF0ZWQgYXMgR29vZCBvciBPdXRzdGFuZGluZyBieSB0aGUgQ2FyZSBRdWFsaXR5IENvbW1pc3Npb24gKENRQykgZHVyaW5nIDIwMTcgZm9sbG93ZWQgYW4gdXB3YXJkIHRyZW5kIGJleW9uZCB0aGUgdGFyZ2V0LiBUaGlzIGlzIHBhcnRseSBkdWUgdG8gdGhlIHByaW9yaXRpc2F0aW9uIG9mIGluc3BlY3Rpb25zIGZvY3VzaW5nIG9uIHRob3NlIFByb3ZpZGVycyB3aG9tIHdlcmUgcmF0ZWQgbm9uLWNvbXBsaWFudCB1bmRlciB0aGUgbmV3IGluc3BlY3Rpb24gcmVnaW1lIGFuZCBhbHNvLCBwYXJ0bHkgZHVlIHRvIFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsIGFuZCBvdGhlciBjb21taXNzaW9uZXJzIG9mIHNlcnZpY2VzIGluY3JlYXNpbmcgdGhlIHN1cHBvcnQgYW5kIGNvYWNoaW5nIG9mZmVyZWQgdG8gY2FyZSBtYXJrZXRzIHRvIHByb21vdGUgdGhlIHN1c3RhaW5pbmcgb2YgZW5oYW5jZWQgcXVhbGl0eSBvZiBjYXJlIGZvciByZXNpZGVudHMgb2YgdGhlIENvdW50eS5cXG5cXG5EdXJpbmcgMjAxNyBDUUMgY29tbWVuY2VkIGEgcHVibGljIGNvbnN1bHRhdGlvbiBwcm9jZXNzIHRvIHNlZWsgdmlld3Mgb24gdGhlaXIgcHJvcG9zYWxzIHRvO1xcblxcbuKAnHJlZ3VsYXRlIHByaW1hcnkgbWVkaWNhbCBzZXJ2aWNlcyBhbmQgYWR1bHQgc29jaWFsIGNhcmUgc2VydmljZXMsIGltcHJvdmUgdGhlIHN0cnVjdHVyZSBvZiByZWdpc3RyYXRpb24sYW5kIGNsYXJpZnkgdGhlaXIgZGVmaW5pdGlvbiBvZiByZWdpc3RlcmVkIHByb3ZpZGVycywgbW9uaXRvciwgaW5zcGVjdCBhbmQgcmF0ZSBuZXcgbW9kZWxzIG9mIGNhcmUgYW5kIGxhcmdlIG9yIGNvbXBsZXggcHJvdmlkZXJzLCB1c2UgdGhlaXIgdW5pcXVlIGtub3dsZWRnZSB0byBlbmNvdXJhZ2UgaW1wcm92ZW1lbnRzIGluIHRoZSBxdWFsaXR5IG9mIGNhcmUgaW4gbG9jYWwgYXJlYXMsIGNhcnJ5IG91dCB0aGVpciByb2xlIGluIHJlbGF0aW9uIHRvIHRoZSBmaXQgYW5kIHByb3BlciBwZXJzb25zIHJlcXVpcmVtZW504oCdXFxuXFxuVGhlIGNvbnN1bHRhdGlvbnMgcHJvcG9zZWQgYSBudW1iZXIgb2YgY2hhbmdlcyB0byB0aGUgd2F5IHRoYXQgY2FyZSBzZXJ2aWNlcyBhcmUgcmVnaXN0ZXJlZCBhbmQgaW5zcGVjdGVkIGJ5IHRoZSBDUUM6XFxuXFxuKiBLZXkgTGluZXMgb2YgRW5xdWlyeSAoS0xPRXMpLCBpbmNsdWRpbmcgdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSBzZXBhcmF0ZSBLTE9FcyBjdXJyZW50bHkgdXNlZCBmb3IgY29tbXVuaXR5IGFuZCByZXNpZGVudGlhbCBiYXNlZCBzZXJ2aWNlcyBpbnRvIG9uZSBuZXcgZnJhbWV3b3JrLiBUaGVyZSBhcmUgMyBhZGRpdGlvbmFsIGFkdWx0IHNvY2lhbCBjYXJlIEtleSBMaW5lcyBPZiBFbnF1aXJ5ICh0aGF0IHN1cHBvcnQgdGhlIGZpdmUga2V5IHF1ZXN0aW9ucykgd2l0aCBuZXcgcHJvbXB0cyBpbmNsdWRlZCBpbiB0aGUgc3ViLWNyaXRlcmlhIHVuZGVyIGVhY2ggS0xPRS5cXG4qIENoYW5nZXMgdG8gZnJlcXVlbmN5IG9mIGluc3BlY3Rpb25zLCBpbmNsdWRpbmcgaW5jcmVhc2luZyB0aGUgbWF4aW11bSBpbnRlcnZhbCBiZXR3ZWVuIHJhdGluZ3MgZm9yIHNlcnZpY2VzIHJhdGluZyBHb29kIG9yIE91dHN0YW5kaW5nIGZyb20gMjQtbW9udGhzIHRvIDMwLW1vbnRocy5cXG4qIENoYW5nZXMgdG8gcmVzcG9uc2Ugd2hlcmUgc2VydmljZXMgYXJlIHJlcGVhdGVkbHkgcmF0ZWQgYXMgUmVxdWlyZXMgSW1wcm92ZW1lbnRcXG4qIFB1YmxpY2F0aW9uIG9mIHJlZnJlc2hlZCBndWlkYW5jZSBmb3Ig4oCYZml0IGFuZCBwcm9wZXLigJkgcGVyc29ucyByZXF1aXJlbWVudHMgaW4gcmVsYXRpb24gdG8gcmVnaXN0cmF0aW9uIHRvIGZvciBQcm92aWRlcnMgYW5kIGltcHJvdmVkIGluZm9ybWF0aW9uIHNoYXJpbmcuXFxuKiBJbnRyb2R1Y3Rpb24gb2YgYW4gb25saW5lIFByb3ZpZGVyIEluZm9ybWF0aW9uIENvbGxlY3Rpb24gd2hpY2ggd2lsbCBhbGxvdyBjYXJlIHByb3ZpZGVycyB0byBzdWJtaXQgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcXVhbGl0eSBvZiB0aGUgc2VydmljZSB0aGV5IHByb3ZpZGUgZGlyZWN0bHkgdG8gdGhlIENRQy5cXG5cXG5BZHVsdCBTb2NpYWwgQ2FyZSBTZXJ2aWNlcyB3ZXJlIG5vdCBwbGFubmVkIHRvIGJlIGluc3BlY3RlZCB1bmRlciB0aGUgbmV3IHJldmlzZWQgZnJhbWV3b3JrIHVudGlsIE5vdmVtYmVyIDIwMTcgYW5kIHRoZSBtYXhpbXVtIGludGVydmFsIGJldHdlZW4gaW5zcGVjdGlvbnMgZm9yIHNlcnZpY2VzIHJhdGVkIEdvb2QgYW5kIE91dHN0YW5kaW5nIGlzIGR1ZSB0byBiZSBpbmNyZWFzZWQgZnJvbSAyNCBtb250aHMgdG8gMzAgbW9udGhzIGZyb20gQXByaWwgMjAxOCwgdGhlcmVmb3JlOyBpdCBtYXkgYmUgc29tZSB0aW1lIGJlZm9yZSB0aGUgaW1wYWN0IG9mIHRoaXMgaXMgcmVhbGlzZWQgYnV0IGFzIENRQyBpbXBsZW1lbnQgdGhlIG5ldyBpbnNwZWN0aW9uIGZyYW1ld29yayB0aGlzIHdpbGwgYmUgYSBjaGFuZ2UgZm9yIHByb3ZpZGVycywgY29uc2VxdWVudGx5IHdlIGFudGljaXBhdGUgdGhlcmUgYmVpbmcgYSBzbGlnaHQgZGVjcmVhc2UgaW4gdGhlIHF1YWxpdHkgcmF0aW5ncyBpbiB0aGUgbGFzdCAyIHF1YXJ0ZXJzIG9mIHRoZSB5ZWFyIChzZXJ2aWNlcyByYXRlZCBHb29kIGFuZCBPdXRzdGFuZGluZykgY29tcGFyZWQgdG8gdGhvc2UgZHVyaW5nIHRoZSBsYXN0IDEyLW1vbnRocyBzdGFiaWxpc2UuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAyIC0gU2VwdGVtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuVGhlIFBlcmNlbnRhZ2Ugb2YgQ2FyZSBIb21lcyByYXRlZCBhcyBHb29kIG9yIE91dHN0YW5kaW5nIGJ5IHRoZSBDYXJlIFF1YWxpdHkgQ29tbWlzc2lvbiAoQ1FDKSBkdXJpbmcgMjAxNi8xNyBmb2xsb3dlZCBhbiB1cHdhcmQgdHJlbmQgYmV5b25kIHRoZSB0YXJnZXQuIFRoaXMgaXMgcGFydGx5IGR1ZSB0byB0aGUgcHJpb3JpdGlzYXRpb24gb2YgaW5zcGVjdGlvbnMgZm9jdXNpbmcgb24gdGhvc2UgUHJvdmlkZXJzIHdob20gd2VyZSByYXRlZCBub24tY29tcGxpYW50IHVuZGVyIHRoZSBuZXcgaW5zcGVjdGlvbiByZWdpbWUgYW5kIGFsc28sIHBhcnRseSBkdWUgdG8gV2VzdCBTdXNzZXggQ291bnR5IENvdW5jaWwgYW5kIG90aGVyIGNvbW1pc3Npb25lcnMgb2Ygc2VydmljZXMgaW5jcmVhc2luZyB0aGUgc3VwcG9ydCBhbmQgY29hY2hpbmcgb2ZmZXJlZCB0byBjYXJlbWFya2V0cyB0byBwcm9tb3RlIHRoZSBzdXN0YWluaW5nIG9mIGVuaGFuY2VkIHF1YWxpdHkgb2YgY2FyZSBmb3IgcmVzaWRlbnRzIG9mIHRoZSBDb3VudHkuXFxuXFxuQXQgdGhlIHN0YXJ0IG9mIDIwMTcgQ1FDIGNvbW1lbmNlZCBhIHB1YmxpYyBjb25zdWx0YXRpb24gcHJvY2VzcyB0byBzZWVrIHZpZXdzIG9uIHRoZWlyIHByb3Bvc2FscyB0bztcXG5cXG5f4oCccmVndWxhdGUgcHJpbWFyeSBtZWRpY2FsIHNlcnZpY2VzIGFuZCBhZHVsdCBzb2NpYWwgY2FyZSBzZXJ2aWNlcywgaW1wcm92ZSB0aGUgc3RydWN0dXJlIG9mIHJlZ2lzdHJhdGlvbixhbmQgY2xhcmlmeSB0aGVpciBkZWZpbml0aW9uIG9mIHJlZ2lzdGVyZWQgcHJvdmlkZXJzLCBtb25pdG9yLCBpbnNwZWN0IGFuZCByYXRlIG5ldyBtb2RlbHMgb2YgY2FyZSBhbmQgbGFyZ2Ugb3IgY29tcGxleCBwcm92aWRlcnMsIHVzZSB0aGVpciB1bmlxdWUga25vd2xlZGdlIHRvIGVuY291cmFnZSBpbXByb3ZlbWVudHMgaW4gdGhlIHF1YWxpdHkgb2YgY2FyZSBpbiBsb2NhbCBhcmVhcywgY2Fycnkgb3V0IHRoZWlyIHJvbGUgaW4gcmVsYXRpb24gdG8gdGhlIGZpdCBhbmQgcHJvcGVyIHBlcnNvbnMgcmVxdWlyZW1lbnTigJ1fXFxuXFxuVGhlIGZpcnN0IHBoYXNlIG9mIHRoZSBjb25zdWx0YXRpb24gcHJvcG9zZWQgYSBudW1iZXIgb2YgY2hhbmdlIHN0byB0aGUgS2V5IExpbmVzIG9mIEVucXVpcnkgKEtMT0VzKSwgaW5jbHVkaW5nIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgc2VwYXJhdGUgS0xPRXMgY3VycmVudGx5IHVzZWQgZm9yIGNvbW11bml0eSBhbmQgcmVzaWRlbnRpYWwgYmFzZWQgc2VydmljZXMgaW50byBvbmUgbmV3IGZyYW1ld29yay4gVGhlcmUgYXJlIDMgYWRkaXRpb25hbCBhZHVsdCBzb2NpYWwgY2FyZSBLZXkgTGluZXMgT2YgRW5xdWlyeSAodGhhdCBzdXBwb3J0IHRoZSBmaXZlIGtleSBxdWVzdGlvbnMpIHdpdGggbmV3IHByb21wdHMgaW5jbHVkZWQgaW4gdGhlIHN1Yi1jcml0ZXJpYSB1bmRlciBlYWNoIEtMT0UuIEFkdWx0IFNvY2lhbCBDYXJlIFNlcnZpY2VzIHdpbGwgbm90IGJlIGluc3BlY3RlZCB1bmRlciB0aGUgbmV3IHJldmlzZWQgZnJhbWV3b3JrIHVudGlsIE5vdmVtYmVyIDIwMTcuIENRQyBhcmUgY3VycmVudGx5IGRldmVsb3BpbmcgdGhlaXIgbmV4dCBwaGFzZSBvZiByZWd1bGF0aW9uIHdpdGggY29uc3VsdGF0aW9uIDIgZHVlIHRvIGNsb3NlIGluIEF1Z3VzdCAyMDE3LiBDb25zdWx0YXRpb24gMyBpcyBkdWUgdG8gdGFrZSBwbGFjZSBsYXRlciBpbiB0aGUgeWVhciAoMjAxNy8xOCkuIEFzIENRQyBpbXBsZW1lbnQgdGhlIG5ldyBpbnNwZWN0aW9uIGZyYW1ld29yayB0aGlzIHdpbGwgYmUgYSBjaGFuZ2UgZm9yIHByb3ZpZGVycywgY29uc2VxdWVudGx5IHdlIGFudGljaXBhdGUgdGhlcmUgYmVpbmcgYSBzbGlnaHQgZGVjcmVhc2UgaW4gdGhlIHF1YWxpdHkgcmF0aW5ncyBpbiB0aGUgbGFzdCAyIHF1YXJ0ZXJzIG9mIHRoZSB5ZWFyIChzZXJ2aWNlcyByYXRlZCBHb29kIGFuZCBPdXRzdGFuZGluZykgY29tcGFyZWQgdG8gdGhvc2UgZHVyaW5nIHRoZSBsYXN0IDEyLW1vbnRocyBzdGFiaWxpc2UuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoZSBwZXJjZW50YWdlIG9mIENhcmUgSG9tZXMgcmF0ZWQgYXMgR29vZCBvciBPdXRzdGFuZGluZyBieSB0aGUgQ1FDIChDYXJlIFF1YWxpdHkgQ29tbWlzc2lvbikgZHVyaW5nIDIwMTYvMTcgZm9sbG93ZWQgYW4gdXB3YXJkIHRyZW5kIGJleW9uZCB0aGUgdGFyZ2V0LiBUaGlzIGlzIHBhcnRseSBkdWUgdG8gdGhlIHByaW9yaXRpc2F0aW9uIG9mIGluc3BlY3Rpb25zIGZvY3VzaW5nIG9uIHRob3NlIFByb3ZpZGVycyB3aG9tIHdlcmUgcmF0ZWQgbm9uLWNvbXBsaWFudCB1bmRlciB0aGUgbmV3IGluc3BlY3Rpb24gcmVnaW1lIGFuZCBhbHNvLCBwYXJ0bHkgZHVlIHRvIFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsIGFuZCBvdGhlciBjb21taXNzaW9uZXJzIG9mIHNlcnZpY2VzIGluY3JlYXNpbmcgdGhlIHN1cHBvcnQgYW5kIGNvYWNoaW5nIG9mZmVyZWQgdG8gY2FyZSBtYXJrZXRzIHRvIHByb21vdGUgdGhlIHN1c3RhaW5pbmcgb2YgZW5oYW5jZWQgcXVhbGl0eSBvZiBjYXJlIGZvciByZXNpZGVudHMgb2YgdGhlIENvdW50eS5cXG5cXG5BdCB0aGUgc3RhcnQgb2YgMjAxNyB0aGUgQ1FDIGNvbW1lbmNlZCBhIHB1YmxpYyBjb25zdWx0YXRpb24gcHJvY2VzcyB0byBzZWVrIHZpZXdzIG9uIHRoZWlyIHByb3Bvc2FscyB0bztcXG5cXG7igJxyZWd1bGF0ZSBwcmltYXJ5IG1lZGljYWwgc2VydmljZXMgYW5kIGFkdWx0IHNvY2lhbCBjYXJlIHNlcnZpY2VzLCBpbXByb3ZlIHRoZSBzdHJ1Y3R1cmUgb2YgcmVnaXN0cmF0aW9uLCBhbmQgY2xhcmlmeSB0aGVpciBkZWZpbml0aW9uIG9mIHJlZ2lzdGVyZWQgcHJvdmlkZXJzLCBtb25pdG9yLCBpbnNwZWN0IGFuZCByYXRlIG5ldyBtb2RlbHMgb2YgY2FyZSBhbmQgbGFyZ2Ugb3IgY29tcGxleCBwcm92aWRlcnMsIHVzZSB0aGVpciB1bmlxdWUga25vd2xlZGdlIHRvIGVuY291cmFnZSBpbXByb3ZlbWVudHMgaW4gdGhlIHF1YWxpdHkgb2YgY2FyZSBpbiBsb2NhbCBhcmVhcywgY2Fycnkgb3V0IHRoZWlyIHJvbGUgaW4gcmVsYXRpb24gdG8gdGhlIGZpdCBhbmQgcHJvcGVyIHBlcnNvbnMgcmVxdWlyZW1lbnTigJ1cXG5cXG5UaGUgZmlyc3QgcGhhc2Ugb2YgdGhlIGNvbnN1bHRhdGlvbiBwcm9wb3NlZCBhIG51bWJlciBvZiBjaGFuZ2VzIHRvIHRoZSBLZXkgTGluZXMgb2YgRW5xdWlyeSAoS0xPRXMpLCBpbmNsdWRpbmcgdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSBzZXBhcmF0ZSBLTE9FcyBjdXJyZW50bHkgdXNlZCBmb3IgY29tbXVuaXR5IGFuZCByZXNpZGVudGlhbCBiYXNlZCBzZXJ2aWNlcyBpbnRvIG9uZSBuZXcgZnJhbWV3b3JrLiBUaGVyZSBhcmUgMyBhZGRpdGlvbmFsIGFkdWx0IHNvY2lhbCBjYXJlIEtMT0VzICh0aGF0IHN1cHBvcnQgdGhlIGZpdmUga2V5IHF1ZXN0aW9ucykgd2l0aCBuZXcgcHJvbXB0cyBpbmNsdWRlZCBpbiB0aGUgc3ViLWNyaXRlcmlhLiBBZHVsdCBTb2NpYWwgQ2FyZSBTZXJ2aWNlcyB3aWxsIG5vdCBiZSBpbnNwZWN0ZWQgdW5kZXIgdGhlIG5ldyByZXZpc2VkIGZyYW1ld29yayB1bnRpbCBOb3ZlbWJlciAyMDE3LiBUaGUgQ1FDIGFyZSBjdXJyZW50bHkgZGV2ZWxvcGluZyB0aGVpciBuZXh0IHBoYXNlIG9mIHJlZ3VsYXRpb24gd2l0aCBjb25zdWx0YXRpb24gMiBkdWUgdG8gY2xvc2UgaW4gQXVndXN0IDIwMTcuIENvbnN1bHRhdGlvbiAzIGlzIGR1ZSB0byB0YWtlIHBsYWNlIGxhdGVyIGluIHRoZSB5ZWFyICgyMDE3LzE4KS4gQXMgQ1FDIGltcGxlbWVudCB0aGUgbmV3IGluc3BlY3Rpb24gZnJhbWV3b3JrIHRoaXMgd2lsbCBiZSBhIGNoYW5nZSBmb3IgcHJvdmlkZXJzLCBjb25zZXF1ZW50bHkgd2UgYW50aWNpcGF0ZSB0aGVyZSBiZWluZyBhIHNsaWdodCBkZWNyZWFzZSBpbiB0aGUgcXVhbGl0eSByYXRpbmdzIGluIHRoZSBsYXN0IHR3byBxdWFydGVycyBvZiB0aGUgeWVhciAoc2VydmljZXMgcmF0ZWQgR29vZCBhbmQgT3V0c3RhbmRpbmcpIGNvbXBhcmVkIHRvIHRob3NlIGR1cmluZyB0aGUgbGFzdCAxMi1tb250aHMuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciA0IC0gTWFyY2ggMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5MYXRlc3QgZmlndXJlIGNvbnRpbnVlcyBvbiBhbiB1cHdhcmQgdHJlbmQgc2hvd2luZyBxdWFsaXR5IGluIGNhcmUgaG9tZXMgaXMgaW5jcmVhc2luZy4gVGhpcyBpbmNyZWFzZSBtYXkgYmUgZHVlIHRvIHRoZSBwcmlvcml0aXNhdGlvbiBvZiBpbnNwZWN0aW9ucyBieSB0aGUgQ1FDLCBhcyB0aGV5IGltcGxlbWVudGVkIHRoZSBuZXcgaW5zcGVjdGlvbiByZWdpbWUsIGkuZS4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBpbnNwZWN0aW9uIHJlZ2ltZSBmb2N1c2VkIGluaXRpYWxseSBvbiB0aG9zZSBwcm92aWRlcnMgd2hvbSB3ZXJlIHJhdGVkIG5vbi1jb21wbGlhbnQgdW5kZXIgdGhlIHByZXZpb3VzIGluc3BlY3Rpb24gcmVnaW1lLiBBZGRpdGlvbmFsbHksIGR1cmluZyB0aGUgcGFzdCB5ZWFyIFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsIGFuZCBvdGhlciBjb21taXNzaW9uZXJzIG9mIHNlcnZpY2VzIGhhdmUgaW5jcmVhc2VkIHN1cHBvcnQgb2ZmZXJlZCB0byB0aGUgY2FyZSBtYXJrZXRzIGFuZCBvZmZlcmVkIGFkdmljZSBhbmQgZ3VpZGFuY2UgdG8gY2FyZSBwcm92aWRlcnMgdG8gcHJvbW90ZSB0aGUgc3VzdGFpbmluZyBvZiBoaWdoIHF1YWxpdHkgY2FyZSBmb3IgcmVzaWRlbnRzIG9mIHRoZSBDb3VudHkuXFxuXFxuQXMgd2UgbW92ZSBpbnRvIHRoZSBuZXh0IHllYXIsIGFuZCB0aGUgQ1FDIGNvbXBsZXRlIHRoZWlyIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnNwZWN0aW9uIHJlZ2ltZSBtb3ZpbmcgdG8gZm9jdXNlZCBpbnNwZWN0aW9ucywgd2UgZXhwZWN0IHRvIHNlZSB0aGUgaW5jcmVhc2VzIHNlZW4gZHVyaW5nIHRoZSBsYXN0IDEyLW1vbnRocyBzdGFiaWxpc2UuXFxuXFxuXCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJJbXByb3ZlIHRoZSBudW1iZXIgb2YgY2FyZSBob21lIHByb3ZpZGVycyByYXRlZCBnb29kIG9yIG91dHN0YW5kaW5nIGJ5IHRoZSBDUUMgdG8gNjAlIG9yIGhpZ2hlclwiLFwidXNlX2N1c3RvbV9zdWJ0aXRsZVwiOmZhbHNlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJUbyBtYWludGFpbiBvciBpbmNyZWFzZSB0aGUgcGVyY2VudGFnZSBvZiBjYXJlIGhvbWUgcHJvdmlkZXJzIHJhdGVkIGdvb2Qgb3Igb3V0c3RhbmRpbmcgdG8gNjAlIG9yIGFib3ZlLlwiLFwidGl0bGVfaW1hZ2VcIjpcIi9hcGkvYXNzZXRzLzZEMDcxQzQ0LTg5OUEtNDVEMC04NDkwLTIzQTE1RkFEMDgyM1wiLFwiaWNvblwiOlwiYnVpbGRpbmdcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxNS0wMy0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiIlIiwidGFyZ2V0Ijo2MCwidGFyZ2V0X3R5cGUiOiJyZWxhdGl2ZSIsInRhcmdldF9kZWx0YSI6MCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6NjAsIm1ldHJpYyI6eyJtZXRhZGF0YSI6IiIsImlkIjoiNHc1YS1jeGlhIn0sImNvbXBhcmlzb24iOnsiY29tcGFyaXNvbl9mdW5jdGlvbiI6Ij4ifSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJlZGl0XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTV9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOH0sXCJhY3Rpb25fdHlwZVwiOlwibWFpbnRhaW5cIixcInRhcmdldF90eXBlXCI6XCJyZWxhdGl2ZVwiLFwibWFpbnRhaW5fdHlwZVwiOlwiPlwifSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNX0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE1fX0sXCJzdGFydFwiOlwiMjAxNS0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNS0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9fSxcIm5hbWVcIjpcInRoZSByYXRpbyBvZiBjYXJlIGhvbWUgcHJvdmlkZXJzIHJhdGVkIGdvb2Qgb3Igb3V0c3RhbmRpbmdcIn0ifSwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDg6NTA6MzYuNjIzWiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA4OjUwOjM2LjYyM1oiLCJ0YXJnZXRfdG9sZXJhbmNlIjo4LCJpZCI6IjJraGMtd3h1ZSJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbXSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOTo1Njo1MS42NjJaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDg6NTA6MzYuNjYzWiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA5OjU2OjUxLjY2MloiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6ImFpbWMtdGZ2ayIsIm5hbWUiOiJRdWFsaXR5IG9mIGNhcmUgcmVjZWl2ZWQgYXQgaG9tZSIsImlzX3B1YmxpYyI6dHJ1ZSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJyZXRpcmVtZW50X25hcnJhdGl2ZVwiOltdLFwibmFycmF0aXZlXCI6W3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhbGl0eSBvZiBDYXJlIEhvbWVzIGFuZCBDYXJlIHJlY2VpdmVkIGF0IEhvbWUqKlxcblxcblRoZSBDYXJlIFF1YWxpdHkgQ29tbWlzc2lvbiAoQ1FDKSBpcyB0aGUgaW5kZXBlbmRlbnQgaW5zcGVjdG9yIGFuZCByZWd1bGF0b3Igb2YgaGVhbHRoIGFuZCBzb2NpYWwgY2FyZSBzZXJ2aWNlcyBpbiBFbmdsYW5kLlxcblxcblRoZXkgbWFrZSBzdXJlIGhlYWx0aCBhbmQgc29jaWFsIGNhcmUgc2VydmljZXMsIHN1Y2ggYXMgQ2FyZSBIb21lcyBhbmQgQ2FyZSBhbmQgU3VwcG9ydCBpbiBwZW9wbGVz4oCZIG93biBob21lcyBhcmUgc2FmZSwgZWZmZWN0aXZlIGFuZCBoaWdoLXF1YWxpdHkuIFRoZSBDUUMgbW9uaXRvciwgaW5zcGVjdCBhbmQgcmVndWxhdGUgc2VydmljZXMgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSBtZWV0IGZ1bmRhbWVudGFsIHN0YW5kYXJkcyBvZiBxdWFsaXR5IGFuZCBzYWZldHkgYW5kIHRoZXkgcHVibGlzaCB3aGF0IHRoZXkgZmluZCB0byBoZWxwIHBlb3BsZSBtYWtlIGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCB0aGVpciBjaG9pY2Ugb2YgY2FyZS5cXG5cXG5UaGUgQ1FDIGNoYW5nZWQgdGhlaXIgbW9uaXRvcmluZyByZWdpbWUgaW4gT2N0b2JlciAyMDE0IHRvIGZvY3VzIG9uIDUga2V5IHF1ZXN0aW9uczpcXG5cXG5BcmUgdGhleSBzYWZlP1xcblxcbkFyZSB0aGV5IGVmZmVjdGl2ZT9cXG5cXG5BcmUgdGhleSBjYXJpbmc/XFxuXFxuQXJlIHRoZXkgcmVzcG9uc2l2ZSB0byBwZW9wbGXigJlzIG5lZWRzP1xcblxcbkFyZSB0aGV5IHdlbGwtbGVkP1xcblxcbkluIG9yZGVyIHRvIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMgQ1FDIEluc3BlY3RvcnMgd2lsbCBnYXRoZXIgaW5mb3JtYXRpb24gYW5kIGludGVsbGlnZW5jZSBmcm9tIGEgcmFuZ2Ugb2Ygc291cmNlcyBpbmNsdWRpbmc6IExvY2FsIEF1dGhvcml0aWVzLCBOSFMgYW5kIHRoZSBDYXJlIFByb3ZpZGVyLCBhbmQgdGhlbiBjYXJyeSBvdXQgYW4gb24tc2l0ZSBpbnNwZWN0aW9uLiBPbmNlIHRoZSBpbnNwZWN0b3IgaGFzIGNvbnNpZGVyZWQgYWxsIG9mIHRoZSBldmlkZW5jZSByZWxhdGVkIHRvIGVhY2ggcXVlc3Rpb24gYSBqdWRnZW1lbnQgaXMgbWFkZSBvbiB0aGUgY29tcGxpYW5jZSByYXRpbmcgZm9yIGVhY2ggcXVlc3Rpb24gYW5kIGFuIG92ZXJhbGwgcmF0aW5nIGZvciB0aGUgY2FyZSBwcm92aWRlci5cXG5cXG4qKlRoZXJlIGFyZSBmb3VyIHJhdGluZ3Mgd2hpY2ggdGhlIENRQyBnaXZlIHRvIGhlYWx0aCBhbmQgc29jaWFsIGNhcmUgc2VydmljZXM6IG91dHN0YW5kaW5nLCBnb29kLCByZXF1aXJlcyBpbXByb3ZlbWVudCBhbmQgaW5hZGVxdWF0ZS4qKlRcXG5cXG4qKk91dHN0YW5kaW5nKiogLSBUaGUgc2VydmljZSBpcyBwZXJmb3JtaW5nIGV4Y2VwdGlvbmFsbHkgd2VsbC5cXG5cXG4qKkdvb2QqKiAtIFRoZSBzZXJ2aWNlIGlzIHBlcmZvcm1pbmcgd2VsbCBhbmQgbWVldGluZyBvdXIgZXhwZWN0YXRpb25zLlxcblxcbioqUmVxdWlyZXMgaW1wcm92ZW1lbnQqKiAtIFRoZSBzZXJ2aWNlIGlzbid0IHBlcmZvcm1pbmcgYXMgd2VsbCBhcyBpdCBzaG91bGQgYW5kIHdlIGhhdmUgdG9sZCB0aGUgc2VydmljZSBob3cgaXQgbXVzdCBpbXByb3ZlLlxcblxcbioqSW5hZGVxdWF0ZSoqIC0gVGhlIHNlcnZpY2UgaXMgcGVyZm9ybWluZyBiYWRseSBhbmQgd2UndmUgdGFrZW4gYWN0aW9uIGFnYWluc3QgdGhlIHBlcnNvbiBvciBvcmdhbmlzYXRpb24gdGhhdCBydW5zIGl0LlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyAtIERlY2VtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuVGhlIFBlcmNlbnRhZ2Ugb2YgQ2FyZSBhdCBIb21lIFByb3ZpZGVycyByYXRlZCBhcyBHb29kIG9yIE91dHN0YW5kaW5nIGJ5IHRoZSBDYXJlIFF1YWxpdHkgQ29tbWlzc2lvbihDUUMpIGR1cmluZyAyMDE3IGZvbGxvd2VkIGFuIHVwd2FyZCB0cmVuZCBiZXlvbmQgdGhlIHRhcmdldC4gVGhpcyBpcyBwYXJ0bHkgZHVlIHRvIHRoZSBwcmlvcml0aXNhdGlvbiBvZmkgbnNwZWN0aW9ucyBmb2N1c2luZyBvbiB0aG9zZSBQcm92aWRlcnMgd2hvbSB3ZXJlIHJhdGVkIG5vbi1jb21wbGlhbnQgdW5kZXIgdGhlIG5ldyBpbnNwZWN0aW9uIHJlZ2ltZSBhbmQgYWxzbywgcGFydGx5IGR1ZSB0byBXZXN0IFN1c3NleCBDb3VudHkgQ291bmNpbCBhbmQgb3RoZXIgY29tbWlzc2lvbmVycyBvZiBzZXJ2aWNlcyBpbmNyZWFzaW5nIHRoZSBzdXBwb3J0IGFuZCBjb2FjaGluZyBvZmZlcmVkIHRvIGNhcmUgbWFya2V0cyB0byBwcm9tb3RlIHRoZSBzdXN0YWluaW5nIG9mIGVuaGFuY2VkIHF1YWxpdHkgb2YgY2FyZSBmb3IgcmVzaWRlbnRzIG9mIHRoZSBDb3VudHkuXFxuXFxuRHVyaW5nIDIwMTcgQ1FDIGNvbW1lbmNlZCBhIHB1YmxpYyBjb25zdWx0YXRpb24gcHJvY2VzcyB0byBzZWVrIHZpZXdzIG9uIHRoZWlyIHByb3Bvc2FscyB0bztcXG5cXG7igJxyZWd1bGF0ZSBwcmltYXJ5IG1lZGljYWwgc2VydmljZXMgYW5kIGFkdWx0IHNvY2lhbCBjYXJlIHNlcnZpY2VzLCBpbXByb3ZlIHRoZSBzdHJ1Y3R1cmUgb2YgcmVnaXN0cmF0aW9uLGFuZCBjbGFyaWZ5IHRoZWlyIGRlZmluaXRpb24gb2YgcmVnaXN0ZXJlZCBwcm92aWRlcnMsIG1vbml0b3IsIGluc3BlY3QgYW5kIHJhdGUgbmV3IG1vZGVscyBvZiBjYXJlIGFuZCBsYXJnZSBvciBjb21wbGV4IHByb3ZpZGVycywgdXNlIHRoZWlyIHVuaXF1ZSBrbm93bGVkZ2UgdG8gZW5jb3VyYWdlIGltcHJvdmVtZW50cyBpbiB0aGUgcXVhbGl0eSBvZiBjYXJlIGluIGxvY2FsIGFyZWFzLCBjYXJyeSBvdXQgdGhlaXIgcm9sZSBpbiByZWxhdGlvbiB0byB0aGUgZml0IGFuZCBwcm9wZXIgcGVyc29ucyByZXF1aXJlbWVudOKAnVxcblxcblRoZSBjb25zdWx0YXRpb25zIHByb3Bvc2VkIGEgbnVtYmVyIG9mIGNoYW5nZXMgdG8gdGhlIHdheSB0aGF0IGNhcmUgc2VydmljZXMgYXJlIHJlZ2lzdGVyZWQgYW5kIGluc3BlY3RlZCBieSB0aGUgQ1FDOlxcblxcbiogS2V5IExpbmVzIG9mIEVucXVpcnkgKEtMT0VzKSwgaW5jbHVkaW5nIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgc2VwYXJhdGUgS0xPRXMgY3VycmVudGx5IHVzZWQgZm9yIGNvbW11bml0eSBhbmQgcmVzaWRlbnRpYWwgYmFzZWQgc2VydmljZXMgaW50byBvbmUgbmV3IGZyYW1ld29yay4gVGhlcmUgYXJlIDMgYWRkaXRpb25hbCBhZHVsdCBzb2NpYWwgY2FyZSBLZXkgTGluZXMgT2YgRW5xdWlyeSAodGhhdCBzdXBwb3J0IHRoZSBmaXZlIGtleSBxdWVzdGlvbnMpIHdpdGggbmV3IHByb21wdHMgaW5jbHVkZWQgaW4gdGhlIHN1Yi1jcml0ZXJpYSB1bmRlciBlYWNoIEtMT0UuXFxuXFxuKiBDaGFuZ2VzIHRvIGZyZXF1ZW5jeSBvZiBpbnNwZWN0aW9ucywgaW5jbHVkaW5nIGluY3JlYXNpbmcgdGhlIG1heGltdW0gaW50ZXJ2YWwgYmV0d2VlbiByYXRpbmdzIGZvciBzZXJ2aWNlcyByYXRpbmcgR29vZCBvciBPdXRzdGFuZGluZyBmcm9tIDI0LW1vbnRocyB0byAzMC1tb250aHMuXFxuXFxuKiBDaGFuZ2VzIHRvIHJlc3BvbnNlIHdoZXJlIHNlcnZpY2VzIGFyZSByZXBlYXRlZGx5IHJhdGVkIGFzIFJlcXVpcmVzIEltcHJvdmVtZW50XFxuXFxuKiBQdWJsaWNhdGlvbiBvZiByZWZyZXNoZWQgZ3VpZGFuY2UgZm9yIOKAmGZpdCBhbmQgcHJvcGVy4oCZIHBlcnNvbnMgcmVxdWlyZW1lbnRzIGluIHJlbGF0aW9uIHRvIHJlZ2lzdHJhdGlvbiB0byBmb3IgUHJvdmlkZXJzIGFuZCBpbXByb3ZlZCBpbmZvcm1hdGlvbiBzaGFyaW5nLlxcblxcbiogSW50cm9kdWN0aW9uIG9mIGFuIG9ubGluZSBQcm92aWRlciBJbmZvcm1hdGlvbiBDb2xsZWN0aW9uIHdoaWNoIHdpbGwgYWxsb3cgY2FyZSBwcm92aWRlcnMgdG8gc3VibWl0IHVwLXRvLWRhdGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHF1YWxpdHkgb2YgdGhlIHNlcnZpY2UgdGhleSBwcm92aWRlIGRpcmVjdGx5IHRvIHRoZSBDUUMuXFxuXFxuQWR1bHQgU29jaWFsIENhcmUgU2VydmljZXMgd2VyZSBub3QgcGxhbm5lZCB0byBiZSBpbnNwZWN0ZWQgdW5kZXIgdGhlIG5ldyByZXZpc2VkIGZyYW1ld29yayB1bnRpbCBOb3ZlbWJlciAyMDE3IGFuZCB0aGUgbWF4aW11bSBpbnRlcnZhbCBiZXR3ZWVuIGluc3BlY3Rpb25zIGZvciBzZXJ2aWNlcyByYXRlZCBHb29kIGFuZCBPdXRzdGFuZGluZyBpcyBkdWUgdG8gYmUgaW5jcmVhc2VkIGZyb20gMjQgbW9udGhzIHRvIDMwIG1vbnRocyBmcm9tIEFwcmlsIDIwMTgsIHRoZXJlZm9yZTsgaXQgbWF5IGJlIHNvbWUgdGltZSBiZWZvcmUgdGhlIGltcGFjdCBvZiB0aGlzIGlzIHJlYWxpc2VkIGJ1dCBhcyBDUUMgaW1wbGVtZW50IHRoZSBuZXcgaW5zcGVjdGlvbiBmcmFtZXdvcmsgdGhpcyB3aWxsIGJlIGEgY2hhbmdlIGZvciBwcm92aWRlcnMsIGNvbnNlcXVlbnRseSB3ZSBhbnRpY2lwYXRlIHRoZXJlIGJlaW5nIGEgc2xpZ2h0IGRlY3JlYXNlIGluIHRoZSBxdWFsaXR5IHJhdGluZ3MgaW4gdGhlIGxhc3QgMiBxdWFydGVycyBvZiB0aGUgeWVhciAoc2VydmljZXMgcmF0ZWQgR29vZCBhbmQgT3V0c3RhbmRpbmcpIGNvbXBhcmVkIHRvIHRob3NlIGR1cmluZyB0aGUgbGFzdCAxMi1tb250aHMgc3RhYmlsaXNlLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcblRoZSBQZXJjZW50YWdlIG9mIENhcmUgYXQgSG9tZSBQcm92aWRlcnMgcmF0ZWQgYXMgR29vZCBvciBPdXRzdGFuZGluZyBieSB0aGUgQ2FyZSBRdWFsaXR5IENvbW1pc3Npb24oQ1FDKSBkdXJpbmcgMjAxNi8xNyBmb2xsb3dlZCBhbiB1cHdhcmQgdHJlbmQgYmV5b25kIHRoZSB0YXJnZXQuIFRoaXMgaXMgcGFydGx5IGR1ZSB0byB0aGUgcHJpb3JpdGlzYXRpb24gb2YgaW5zcGVjdGlvbnMgZm9jdXNpbmcgb24gdGhvc2UgUHJvdmlkZXJzIHdob20gd2VyZSByYXRlZCBub24tY29tcGxpYW50IHVuZGVyIHRoZSBuZXcgaW5zcGVjdGlvbiByZWdpbWUgYW5kIGFsc28sIHBhcnRseSBkdWUgdG8gV2VzdCBTdXNzZXggQ291bnR5IENvdW5jaWwgYW5kIG90aGVyIGNvbW1pc3Npb25lcnMgb2Ygc2VydmljZXMgaW5jcmVhc2luZyB0aGUgc3VwcG9ydCBhbmQgY29hY2hpbmcgb2ZmZXJlZCB0byBjYXJlIG1hcmtldHMgdG8gcHJvbW90ZSB0aGUgc3VzdGFpbmluZyBvZiBlbmhhbmNlZCBxdWFsaXR5IG9mIGNhcmUgZm9yIHJlc2lkZW50cyBvZiB0aGUgQ291bnR5LlxcblxcbkF0IHRoZSBzdGFydCBvZiAyMDE3IENRQyBjb21tZW5jZWQgYSBwdWJsaWMgY29uc3VsdGF0aW9uIHByb2Nlc3MgdG8gc2VlayB2aWV3cyBvbiB0aGVpciBwcm9wb3NhbHMgdG87XFxuXFxuwqBf4oCccmVndWxhdGUgcHJpbWFyeSBtZWRpY2FsIHNlcnZpY2VzIGFuZCBhZHVsdCBzb2NpYWwgY2FyZSBzZXJ2aWNlcywgaW1wcm92ZSB0aGUgc3RydWN0dXJlIG9mIHJlZ2lzdHJhdGlvbixhbmQgY2xhcmlmeSB0aGVpciBkZWZpbml0aW9uIG9mIHJlZ2lzdGVyZWQgcHJvdmlkZXJzLCBtb25pdG9yLCBpbnNwZWN0IGFuZCByYXRlIG5ldyBtb2RlbHMgb2YgY2FyZSBhbmQgbGFyZ2Ugb3IgY29tcGxleCBwcm92aWRlcnMsIHVzZSB0aGVpciB1bmlxdWUga25vd2xlZGdlIHRvIGVuY291cmFnZSBpbXByb3ZlbWVudHMgaW4gdGhlIHF1YWxpdHkgb2YgY2FyZSBpbiBsb2NhbCBhcmVhcywgY2Fycnkgb3V0IHRoZWlyIHJvbGUgaW4gcmVsYXRpb24gdG8gdGhlIGZpdCBhbmQgcHJvcGVyIHBlcnNvbnMgcmVxdWlyZW1lbnTigJ1fXFxuXFxuVGhlIGZpcnN0IHBoYXNlIG9mIHRoZSBjb25zdWx0YXRpb24gcHJvcG9zZWQgYSBudW1iZXIgb2YgY2hhbmdlcyB0byB0aGUgS2V5IExpbmVzIG9mIEVucXVpcnkgKEtMT0VzKSwgaW5jbHVkaW5nIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgc2VwYXJhdGUgS0xPRXMgY3VycmVudGx5IHVzZWQgZm9yIGNvbW11bml0eSBhbmQgcmVzaWRlbnRpYWwgYmFzZWQgc2VydmljZXMgaW50byBvbmUgbmV3IGZyYW1ld29yay4gVGhlcmUgYXJlIDMgYWRkaXRpb25hbCBhZHVsdCBzb2NpYWwgY2FyZSBLZXkgTGluZXMgT2YgRW5xdWlyeSAodGhhdCBzdXBwb3J0IHRoZSBmaXZlIGtleSBxdWVzdGlvbnMpIHdpdGggbmV3IHByb21wdHMgaW5jbHVkZWQgaW4gdGhlc3ViLWNyaXRlcmlhIHVuZGVyIGVhY2ggS0xPRS4gQWR1bHQgU29jaWFsIENhcmUgU2VydmljZXMgd2lsbCBub3QgYmUgaW5zcGVjdGVkIHVuZGVyIHRoZSBuZXcgcmV2aXNlZCBmcmFtZXdvcmsgdW50aWwgTm92ZW1iZXIgMjAxNy4gQ1FDIGFyZSBjdXJyZW50bHkgZGV2ZWxvcGluZyB0aGVpciBuZXh0IHBoYXNlIG9mIHJlZ3VsYXRpb24gd2l0aCBjb25zdWx0YXRpb24gMiBkdWUgdG8gY2xvc2UgaW4gQXVndXN0IDIwMTcuIENvbnN1bHRhdGlvbiAzIGlzIGR1ZSB0byB0YWtlIHBsYWNlIGxhdGVyIGluIHRoZSB5ZWFyICgyMDE3LzE4KS4gQXMgQ1FDIGltcGxlbWVudCB0aGUgbmV3IGluc3BlY3Rpb24gZnJhbWV3b3JrIHRoaXMgd2lsbCBiZSBhIGNoYW5nZSBmb3IgcHJvdmlkZXJzLCBjb25zZXF1ZW50bHkgd2UgYW50aWNpcGF0ZSB0aGVyZSBiZWluZyBhIHNsaWdodCBkZWNyZWFzZSBpbiB0aGUgcXVhbGl0eSByYXRpbmdzIGluIHRoZSBsYXN0IDIgcXVhcnRlcnMgb2YgdGhlIHllYXIgKHNlcnZpY2VzIHJhdGVkIEdvb2QgYW5kIE91dHN0YW5kaW5nKSBjb21wYXJlZCB0byB0aG9zZSBkdXJpbmcgdGhlIGxhc3QgMTItbW9udGhzIHN0YWJpbGlzZS4gdGhlIGluY3JlYXNlcyBzZWVuIGR1cmluZyB0aGUgbGFzdCAxMi1tb250aHMgc3RhYmlsaXNlLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgUGVyY2VudGFnZSBvZiBDYXJlIGF0IEhvbWUgUHJvdmlkZXJzIHJhdGVkIGFzIEdvb2Qgb3IgT3V0c3RhbmRpbmcgYnkgdGhlIENRQyBkdXJpbmcgMjAxNi8xNyBmb2xsb3dlZCBhbiB1cHdhcmQgdHJlbmQgYmV5b25kIHRoZSB0YXJnZXQuIFRoaXMgaXMgcGFydGx5IGR1ZSB0byB0aGUgcHJpb3JpdGlzYXRpb24gb2YgaW5zcGVjdGlvbnMgZm9jdXNpbmcgb24gdGhvc2UgUHJvdmlkZXJzIHdob20gd2VyZSByYXRlZCBub24tY29tcGxpYW50IHVuZGVyIHRoZSBuZXcgaW5zcGVjdGlvbiByZWdpbWUgYW5kIGFsc28sIHBhcnRseSBkdWUgdG8gV2VzdCBTdXNzZXggQ291bnR5IENvdW5jaWwgYW5kIG90aGVyIGNvbW1pc3Npb25lcnMgb2Ygc2VydmljZXMgaW5jcmVhc2luZyB0aGUgc3VwcG9ydCBhbmQgY29hY2hpbmcgb2ZmZXJlZCB0byBjYXJlIG1hcmtldHMgdG8gcHJvbW90ZSB0aGUgc3VzdGFpbmluZyBvZiBlbmhhbmNlZCBxdWFsaXR5IG9mIGNhcmUgZm9yIHJlc2lkZW50cyBvZiB0aGUgQ291bnR5LlxcblxcbkF0IHRoZSBzdGFydCBvZiAyMDE3IHRoZSBDUUMgY29tbWVuY2VkIGEgcHVibGljIGNvbnN1bHRhdGlvbiBwcm9jZXNzIHRvIHNlZWsgdmlld3Mgb24gdGhlaXIgcHJvcG9zYWxzIHRvO1xcblxcbuKAnHJlZ3VsYXRlIHByaW1hcnkgbWVkaWNhbCBzZXJ2aWNlcyBhbmQgYWR1bHQgc29jaWFsIGNhcmUgc2VydmljZXMsIGltcHJvdmUgdGhlIHN0cnVjdHVyZSBvZiByZWdpc3RyYXRpb24sYW5kIGNsYXJpZnkgdGhlaXIgZGVmaW5pdGlvbiBvZiByZWdpc3RlcmVkIHByb3ZpZGVycywgbW9uaXRvciwgaW5zcGVjdCBhbmQgcmF0ZSBuZXcgbW9kZWxzIG9mIGNhcmUgYW5kIGxhcmdlIG9yIGNvbXBsZXggcHJvdmlkZXJzLCB1c2UgdGhlaXIgdW5pcXVlIGtub3dsZWRnZSB0byBlbmNvdXJhZ2UgaW1wcm92ZW1lbnRzIGluIHRoZSBxdWFsaXR5IG9mIGNhcmUgaW4gbG9jYWwgYXJlYXMsIGNhcnJ5IG91dCB0aGVpciByb2xlIGluIHJlbGF0aW9uIHRvIHRoZSBmaXQgYW5kIHByb3BlciBwZXJzb25zIHJlcXVpcmVtZW504oCdXFxuXFxuVGhlIGZpcnN0IHBoYXNlIG9mIHRoZSBjb25zdWx0YXRpb24gcHJvcG9zZWQgYSBudW1iZXIgb2YgY2hhbmdlcyB0byB0aGUgS2V5IExpbmVzIG9mIEVucXVpcnkgKEtMT0VzKSwgaW5jbHVkaW5nIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgc2VwYXJhdGUgS0xPRXMgY3VycmVudGx5IHVzZWQgZm9yIGNvbW11bml0eSBhbmQgcmVzaWRlbnRpYWwgYmFzZWQgc2VydmljZXMgaW50byBvbmUgbmV3IGZyYW1ld29yay4gVGhlcmUgYXJlIDMgYWRkaXRpb25hbCBhZHVsdCBzb2NpYWwgY2FyZSBLTE9FcyAodGhhdCBzdXBwb3J0IHRoZSBmaXZlIGtleSBxdWVzdGlvbnMpIHdpdGggbmV3IHByb21wdHMgaW5jbHVkZWQgaW4gdGhlIHN1Yi1jcml0ZXJpYSB1bmRlciBlYWNoIEtMT0UuIEFkdWx0IFNvY2lhbCBDYXJlIFNlcnZpY2VzIHdpbGwgbm90IGJlIGluc3BlY3RlZCB1bmRlciB0aGUgbmV3IHJldmlzZWQgZnJhbWV3b3JrIHVudGlsIE5vdmVtYmVyIDIwMTcuIFRoZSBDUUMgYXJlIGN1cnJlbnRseSBkZXZlbG9waW5nIHRoZWlyIG5leHQgcGhhc2Ugb2YgcmVndWxhdGlvbiB3aXRoIGNvbnN1bHRhdGlvbiAyIGR1ZSB0byBjbG9zZSBpbiBBdWd1c3QgMjAxNy4gQ29uc3VsdGF0aW9uIDMgaXMgZHVlIHRvIHRha2UgcGxhY2UgbGF0ZXIgaW4gdGhlIHllYXIgKDIwMTcvMTgpLiBBcyBDUUMgaW1wbGVtZW50IHRoZSBuZXcgaW5zcGVjdGlvbiBmcmFtZXdvcmsgdGhpcyB3aWxsIGJlIGEgY2hhbmdlIGZvciBwcm92aWRlcnMsIGNvbnNlcXVlbnRseSB3ZSBhbnRpY2lwYXRlIHRoZXJlIGJlaW5nIGEgc2xpZ2h0IGRlY3JlYXNlIGluIHRoZSBxdWFsaXR5IHJhdGluZ3MgaW4gdGhlIGxhc3QgMiBxdWFydGVycyBvZiB0aGUgeWVhciAoc2VydmljZXMgcmF0ZWQgR29vZCBhbmQgT3V0c3RhbmRpbmcpIGNvbXBhcmVkIHRvIHRob3NlIGR1cmluZyB0aGUgbGFzdCAxMi1tb250aHMuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciA0IC0gTWFyY2ggMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5MYXRlc3QgZmlndXJlIGNvbnRpbnVlcyBvbiBhbiB1cHdhcmQgdHJlbmQgc2hvd2luZyBxdWFsaXR5IGluIGNhcmUgaG9tZXMgaXMgaW5jcmVhc2luZy4gVGhpcyBpbmNyZWFzZSBtYXkgYmUgZHVlIHRvIHRoZSBwcmlvcml0aXNhdGlvbiBvZiBpbnNwZWN0aW9ucyBieSB0aGUgQ1FDLCBhcyB0aGV5IGltcGxlbWVudGVkIHRoZSBuZXcgaW5zcGVjdGlvbiByZWdpbWUsIGkuZS4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBpbnNwZWN0aW9uIHJlZ2ltZSBmb2N1c2VkIGluaXRpYWxseSBvbiB0aG9zZSBwcm92aWRlcnMgd2hvbSB3ZXJlIHJhdGVkIG5vbi1jb21wbGlhbnQgdW5kZXIgdGhlIHByZXZpb3VzIGluc3BlY3Rpb24gcmVnaW1lLiBBZGRpdGlvbmFsbHksIGR1cmluZyB0aGUgcGFzdCB5ZWFyIFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsIGFuZCBvdGhlciBjb21taXNzaW9uZXJzIG9mIHNlcnZpY2VzIGhhdmUgaW5jcmVhc2VkIHN1cHBvcnQgb2ZmZXJlZCB0byB0aGUgY2FyZSBtYXJrZXRzIGFuZCBvZmZlcmVkIGFkdmljZSBhbmQgZ3VpZGFuY2UgdG8gY2FyZSBwcm92aWRlcnMgdG8gcHJvbW90ZSB0aGUgc3VzdGFpbmluZyBvZiBoaWdoIHF1YWxpdHkgY2FyZSBmb3IgcmVzaWRlbnRzIG9mIHRoZSBDb3VudHkuIEFzIHdlIG1vdmUgaW50byB0aGUgbmV4dCB5ZWFyLCBhbmQgdGhlIENhcmUgUXVhbGl0eSBDb21taXNzaW9uIGNvbXBsZXRlIHRoZWlyIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnNwZWN0aW9uIHJlZ2ltZSBtb3ZpbmcgdG8gZm9jdXNlZCBpbnNwZWN0aW9ucywgd2UgZXhwZWN0IHRvIHNlZSB0aGUgaW5jcmVhc2VzIHNlZW4gZHVyaW5nIHRoZSBsYXN0IDEyLW1vbnRocyBzdGFiaWxpc2UuXFxuXFxuXCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJUbyBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIGhvbWUgY2FyZSBwcm92aWRlcnMgcmF0ZWQgZ29vZCBvciBvdXRzdGFuZGluZyBieSB0aGUgQ1FDIHRvIGJlIDYwJSBvciBoaWdoZXJcIixcInVzZV9jdXN0b21fc3VidGl0bGVcIjpmYWxzZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiVG8gbWFpbnRhaW4gb3IgaW1wcm92ZSB0aGUgcGVyY2VudGFnZSBvZiBob21lIGNhcmUgcHJvdmlkZXJzIHJhdGVkIGFzIGdvb2Qgb3Igb3V0c3RhbmRpbmcgYnkgdGhlIENhcmUgUXVhbGl0eSBDb21taXNzaW9uIHRvIDYwJSBvciBhYm92ZVwiLFwiaWNvblwiOlwiaG9tZVwiLFwidGl0bGVfaW1hZ2VcIjpcIi9hcGkvYXNzZXRzL0FENzBFRTQxLTczODgtNDVDQy1CMTA0LTg2OTc5RDIwODA3N1wifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDE1LTA0LTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6IiUiLCJ0YXJnZXRfdHlwZSI6InJlbGF0aXZlIiwidGFyZ2V0X2RlbHRhIjowLCJ0YXJnZXRfZGVsdGFfaXNfcGVyY2VudCI6ZmFsc2UsImJhc2VsaW5lIjo2MCwibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiJhZ2t2LWkzYWkifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOjMsXCJ5ZWFyXCI6MjAxNX0sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fSxcImFjdGlvbl90eXBlXCI6XCJtYWludGFpblwiLFwibWFpbnRhaW5fdHlwZVwiOlwiPlwifSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNX0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE1fX0sXCJzdGFydFwiOlwiMjAxNS0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNS0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9fSxcIm5hbWVcIjpcInRoZSByYXRpbyBvZiBob21lIGNhcmUgcHJvdmlkZXJzIHJhdGVkIGFzIGdvb2Qgb3Igb3V0c3RhbmRpbmcgYnkgdGhlIENhcmUgUXVhbGl0eSBDb21taXNzaW9uXCJ9In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA4OjQzOjIzLjM4MloiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwODo0MzoyMy4zODJaIiwidGFyZ2V0X3RvbGVyYW5jZSI6OSwiaWQiOiI2d2t3LWpiengifSwicmVsYXRlZF9tZWFzdXJlcyI6W10sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6NTc6MTIuNTczWiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA4OjQzOjIzLjQyOFoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOTo1NzoxMi41NzNaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiI0NGU5LTJneXkiLCJuYW1lIjoiRGVtZW50aWEgZGlhZ25vc2lzIHJhdGUiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcImljb25cIjpcInRleHRcIixcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaW1lbHkgZGlhZ25vc2lzIG9mIGRlbWVudGlhIGlzIGEga2V5IHByaW9yaXR5IGZvciBib3RoIGhlYWx0aCBhbmQgc29jaWFsIGNhcmUuXFxuXFxuVGhlc2UgcmF0ZXMgY292ZXIgdGhlIE1lbW9yeSBBc3Nlc3NtZW50IFNlcnZpY2UgKE1BUykgb25seS4gVGhyb3VnaCB0aGUgTUFTIHBlb3BsZSB3aXRoIGRlbWVudGlhIGFuZCB0aGVpciBjYXJlcnMgYXJlIGFibGUgdG8gYWNjZXNzIHN1cHBvcnQgZnJvbSBkZW1lbnRpYSBhZHZpc2VycyBhbmQgYXNzb2NpYXRlZCBwcm9mZXNzaW9uYWxzLCB3aG8gY2FuIGFsc28gbGluayB0aGVtIGludG8gc29jaWFsIGdyb3VwcywgY2FyZXJzIHN1cHBvcnQgZ3JvdXBzIGFuZCBvcHBvcnR1bml0aWVzIHRvIGxlYXJuIGFib3V0IGhvdyB0byBsaXZlIHdlbGwgd2l0aCBkZW1lbnRpYS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMgLSBEZWNlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcbiogQ3Jhd2xleSBoYXMgcmVjb3ZlcmVkIGFuZCBpcyBub3cgb24gdGFyZ2V0LlxcbiogSG9yc2hhbSBhbmQgTWlkIFN1c3NleCByZW1haW5zIGFib3ZlIHRhcmdldC5cXG5cIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9FRjEyNTZBNi1GNjM5LTQwMzUtODNBQS02QkI1QTkzMUI5RTlcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvRDgyMjk5RjAtRTVCMC00NjM1LTlENzQtRUMzNDkxRDczRjYyXCJ9XSxbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvOUYwMTNEMEEtNTZFMC00NzM0LThFREMtNDlFNzE2MkNCNTgwXCJ9LHtcInR5cGVcIjpcImltYWdlXCJ9XV19LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcblExIHJlc3VsdHMgc2hvdyB0aGF0IG92ZXJhbGwgZGlhZ25vc2lzIHJhdGUgaXMgc3RlYWRpbHkgaW1wcm92aW5nIGFuZCBvbiB0cmFjayB0byBtZWV0IGl0cyB5ZWFyLWVuZCB0YXJnZXQgb2YgNjguMSUuIEhvcnNoYW0gQ0NHIGhhcyBhbHJlYWR5IG1ldCB0aGUgeWVhci1lbmQgdGFyZ2V0ICg2OC40NSUpIGFuZCBjbGluaWNhbCBkaXJlY3RvcnMgYXJlIGRldmVsb3BpbmcgYW4gYWN0aW9uIHBsYW4gYmFzZWQgb24gdGhlaXIgbGVhcm5pbmcgZnJvbSBIb3JzaGFt4oCZcyBwcm9ncmVzcywgdG8gaW1wcm92ZSB0aGUgZGlhZ25vc2VzIHJhdGVzIG9mIENyYXdsZXkgYW5kIE1pZCBTdXNzZXggQ0NHcy4gVGhlIGFjdGlvbiBwbGFuIGFsc28gaW5jbHVkZXMgYWN0aW9ucyB0byBlbnN1cmUgaW1wcm92ZWQgcG9zdCBkaWFnbm9zdGljIHN1cHBvcnQgaW4gcHJpbWFyeSBjYXJlLCBzdXBwb3J0ZWQgYnkgb3RoZXIgcHJvdmlkZXJzLiAoM3JkIHNlY3RvciBhbmQgU1BGVCkuXFxuXFxuXCJ9XSxcInVzZV9jdXN0b21fc3VidGl0bGVcIjp0cnVlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJUaGlzIGdvYWwgbWVhc3VyZXMgdGhlIGRpYWdub3NpcyByYXRlIG9mIGRlbWVudGlhIGluIFdlc3QgU3Vzc2V4IFwifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDEzLTA0LTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6IiUiLCJ0YXJnZXQiOjY3LCJ0YXJnZXRfdHlwZSI6ImFic29sdXRlIiwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6ImUzODUtOHdnYiJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6MyxcInllYXJcIjoyMDEzfSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9fSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fX0sXCJzdGFydFwiOlwiMjAxNC0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNC0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9fSxcIm5hbWVcIjpcInRoZSBkaWFnbm9zaXMgcmF0ZSBmb3IgZGVtZW50aWFcIn0ifSwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDg6MTY6NDQuMTkwWiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA4OjE2OjQ0LjE5MFoiLCJ0YXJnZXRfdG9sZXJhbmNlIjoxMCwiaWQiOiIydGtzLWo0eDkifSwicmVsYXRlZF9tZWFzdXJlcyI6W10sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6MTM6MjYuNDU5WiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA4OjE2OjQ0LjI0MVoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QxMDoxMzoyNi40NTlaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiJ2anN0LWd4eXAiLCJuYW1lIjoiSGVhbHRoeSBMaWZlIEV4cGVjdGFuY3kiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcImljb25cIjpcImhlYXJ0XCIsXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipIZWFsdGh5IExpZmUgRXhwZWN0YW5jeSoqXFxuXFxuQXMgbGlmZSBleHBlY3RhbmN5IGhhcyByaXNlbiwgaXQgaXMgaW1wb3J0YW50IHRvIG1lYXN1cmUgd2hhdCBwcm9wb3J0aW9uIG9mIHRoZXNlIGFkZGl0aW9uYWwgeWVhcnMgb2YgbGlmZSBpcyBiZWluZyBzcGVudCBpbiBnb29kIGhlYWx0aC4gSGVhbHRoeSBMaWZlIEV4cGVjdGFuY3kgZXN0aW1hdGVzIHRoaXMgYW5kIHRoZSBtZWFzdXJlIHVuZGVybGluZXMgdGhlIGltcG9ydGFuY2Ugb2Ygd2VsbGJlaW5nIGFuZCBsaWZlc3R5bGUgc2VydmljZXMuIFRoZXNlIHNlcnZpY2VzLCBjb21taXNzaW9uZWQgZm9yIHRoZSBXZXN0IFN1c3NleCBwb3B1bGF0aW9uLCBpbmNsdWRlOiBoZWFsdGggY2hlY2tzIGZvciB0aGUgZ2VuZXJhbCBwb3B1bGF0aW9uIG9mIGFkdWx0cyBhZ2VkIDQwIHRvIDc0LCBhbmQgYWR1bHRzIHdpdGggbGVhcm5pbmcgZGlzYWJpbGl0eTsgc2VydmljZXMgdG8gbWFpbnRhaW4gdGhlIGhlYWx0aCBvZiBjYXJlcnM7IGFsY29ob2wgcHJldmVudGlvbiBhbmQgZWFybHkgaWRlbnRpZmljYXRpb24gb2Ygcmlzazsgc21va2luZyBjZXNzYXRpb24gc2VydmljZXMgZm9yIHByZWduYW50IHdvbWVuIGFuZCBvdGhlciBhZHVsdHM7IGhlYWx0aHkgd2VpZ2h0IHNlcnZpY2VzOyBoYXJtIHJlZHVjdGlvbiBhcHByb2FjaGVzIGZvciBzdWJzdGFuY2UgbWlzdXNlLCBhbmQgZW1vdGlvbmFsIHdlbGxiZWluZyBwcm9ncmFtbWVzLiBUaGVzZSBzZXJ2aWNlcyBoYXZlIHRoZWlyIG93biBLUElzIGFuZCBhY3Rpb24gcGxhbnMsIGFuZCBtYW55IGFyZSBrZXkgdG8gcmVkdWNpbmcgdGhlIHJpc2tzIG9mIGRldmVsb3BpbmcgY2FyZGlvdmFzY3VsYXIgZGlzZWFzZSBhbmQgZGlhYmV0ZXMuXFxuXFxuSGVhbHRoeSBsaWZlIGV4cGVjdGFuY3kgaXMgaW5mbHVlbmNlZCBieSBhIHZhc3QgcmFuZ2UsIGFuZCBjb21wbGV4IGludGVyYWN0aW9uLCBvZiBmYWN0b3JzIHJ1bm5pbmcgdGhyb3VnaCBlYWNoIGluZGl2aWR1YWwncyBsaWZlLiBUaGVzZSBpbmNsdWRlOiBtYXRlcm5hbCBoZWFsdGggYW5kIHdlbGxiZWluZywgcGFyZW50YWwgcmVsYXRpb25zaGlwcyBhbmQgaW5mbHVlbmNlcyBpbiB0aGUgZWFybHkgeWVhcnMgb2YgbGlmZSwgaW5jbHVkaW5nIGJyZWFzdGZlZWRpbmcsIGRpZXQgYW5kIHBoeXNpY2FsIGFjdGl2aXR5OyBhY2Nlc3MgdG8gaGVhbHRoIGFuZCBvdGhlciBzZXJ2aWNlcywgYW5kIHdpZGVyIGluZmx1ZW5jZXMgc3VjaCBhcyBpbmNvbWUsIGVkdWNhdGlvbiwgc2tpbGxzIGFuZCBlbXBsb3ltZW50LiBUaGVyZWZvcmUgdGhpcyBtZWFzdXJlIGlzIGxpbmtlZCB0byBvdGhlciBtZWFzdXJlcyBpbiB0aGUgRnV0dXJlIFdlc3QgU3Vzc2V4IFBsYW4uXFxuXFxuVGhlIGRhdGEgZm9yIHRoaXMgbWVhc3VyZSBpcyBzb3VyY2VkIGZyb20gdGhlIE9OUyBzdGF0aXN0aWNhbCByZWxlYXNlIG9uIEhlYWx0aHkgTGlmZSBFeHBlY3RhbmN5IGF0IEJpcnRoIGJ5IFVwcGVyIFRpZXIgQXV0aG9yaWl0ZXMuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciA0IC0gWWVhciBlbmQgMjAxNyoqICoqVXBkYXRlKipcXG5cXG5BcyBhbnRpY2lwYXRlZCBXZXN0IFN1c3NleCBmaWd1cmVzIGFyZSBiZXR0ZXIgdGhhbiB0aGUgRW5nbGFuZCBhdmVyYWdlIGFuZCB0aGlzIGlzIGV4cGVjdGVkIGR1ZSB0byB0aGUgY291bnR54oCZcyB0b3RhbCBhYm92ZSBhdmVyYWdlIGxldmVsIG9mIGFmZmx1ZW5jZS4gV2Ugc2V0IHRoZSB0YXJnZXQgdG8gaW1wcm92ZSBhbmQgYWNoaWV2ZSBhIGJlbmNoIG1hcmsgb2YgQW1iZXIgb3IgR3JlZW4gd2hlbiBXZXN0IFN1c3NleCBpcyBjb21wYXJlZCB0byB0aGUgYXZlcmFnZSBzY29yZSBmb3IgdGhlIFNvdXRoIEVhc3Qgb2YgRW5nbGFuZC4gVGhlIGFkZGl0aW9uIG9mIG5ldyBkYXRhIHBvaW50cyB0byB0aGUgUHVibGljIEhlYWx0aCBPdXRjb21lcyBGcmFtZXdvcmsgc2hvdyB0aGVyZSBpcyBubyBkaXNjZXJuaWJsZSB0cmVuZCBpbiBoZWFsdGh5IGxpZmUgZXhwZWN0YW5jeSBmb3IgdGhlIFNvdXRoIEVhc3Qgb2YgRW5nbGFuZCwgd2l0aCB0aGUgdmFsdWUgcmlzaW5nIGJldHdlZW4gMjAxMy8gMTQgYW5kIDIwMTQvMTUsIGFuZCB0aGVuIGZhbGxpbmcgYWdhaW4gaW4gMjAxNS8xNi4gVGhlIEhlYWx0aCBGb3VuZGF0aW9uLCBpbiBpdHMgMjAxNyBwdWJsaWNhdGlvbiBIZWFsdGh5IExpdmVzIGZvciBQZW9wbGUgaW4gdGhlIFVLIHVzZXMgYW4gYWRhcHRlZCB2ZXJzaW9uIG9mIERhaGxncmVuIGFuZCBXaGl0ZWhlYWTigJlzICgxOTkxKSBtb2RlbCB0byBpbGx1c3RyYXRlIHRoZSByYW5nZSBvZiBpbmZsdWVuY2VycyBvbiBvdXIgd2VsbGJlaW5nIGFuZCBoZWFsdGguIEZpZ3VyZSAxIChyaWdodCkgLlRoZSBmYWN0b3JzIHRoYXQgaW5mbHVlbmNlIGFuIGluZGl2aWR1YWzigJlzIGhlYWx0aCBhbmQgd2VsbGJlaW5nLiBBZGFwdGVkIGZyb20gRGFobGdyZW4gRyxXaGl0ZWhlYWQgTS4gUG9saWNpZXMgYW5kIFN0cmF0ZWdpZXMgdG8gUHJvbW90ZSBTb2NpYWwgRXF1aXR5IGluIEhlYWx0aC5Td2VkZW46IEluc3RpdHV0ZSBmb3IgRnV0dXJlcyBTdHVkaWVzOyAxOTkxLiBIZWFsdGh5IGxpZmUgZXhwZWN0YW5jeSBpcyBhIGNvbnNlcXVlbmNlIG9mIG11bHRpcGxlLCBjb21wbGV4IGludGVyYWN0aW5nIGZhY3RvcnMsIG9ubHkgc29tZSBvZiB3aGljaCBhcmUgd2l0aGluIHRoZSBkaXJlY3QgY29udHJvbCBvZiB0aGUgQ291bnR5IENvdW5jaWwuIE1hbnkgb2YgdGhlIGZhY3RvcnMgY29udHJpYnV0aW5nIHRvIHRoaXMgb3V0Y29tZSBoYXZlIGJlZW4gYWN0aW5nIG92ZXIgbG9uZyB0ZXJtIHRyZW5kcyAoZm9yIGRlY2FkZXMgb3IgZ2VuZXJhdGlvbnMpLiBUaGVyZSBhcmUgaW5jcmVhc2luZ2x5IHN1Z2dlc3Rpb25zIHRoYXQgYSBjb21wbGV4IHN5c3RlbSB3aWRlIG1ldGhvZCBjb25zaWRlcmluZyBzb2NpYWwgZGV0ZXJtaW5hbnRzIGFuZCBwb3RlbnRpYWxseSBhIOKAnGhlYWx0aCBpbiBhbGwgcG9saWNpZXMg4oCcIGFwcHJvYWNoLCBzaG91bGQgYmUgY29uc2lkZXJlZCBpbiB0aGUgZnV0dXJlIHRvIGRldGVybWluZSB3aGVyZSBsb2NhbCByZXNvdXJjZXMgYXJlIGZvY3VzZWQuXFxuXFxuVGhlIGdyZWF0ZXN0IGluZmx1ZW5jZXMgb24gb3VyIHdlbGxiZWluZyBhbmQgaGVhbHRoIGFyZSBmYWN0b3JzIHN1Y2ggYXMgZWR1Y2F0aW9uIGFuZCBlbXBsb3ltZW50LCBob3VzaW5nIGFuZCB0aGUgZXh0ZW50IHRvIHdoaWNoIHRoZSBjb21tdW5pdHkgZmFjaWxpdGF0ZXMgaGVhbHRoeSBoYWJpdHMgYW5kIHNvY2lhbCBjb25uZWN0aW9uLiBXaGlsZSBoZWFsdGggYmVoYXZpb3VycyBoYXZlIGEgYmlnIGRpcmVjdCBpbXBhY3Qgb24gaGVhbHRoOyBzb2Npby0gZWNvbm9taWMgYW5kIG90aGVyIGZhY3RvcnMgaGF2ZSBhIGJpZyBpbXBhY3Qgb24gaGVhbHRoIGJlaGF2aW91cnMuIChMR0EsIFNlcHRlbWJlciAyMDE2LSBIZWFsdGggaW4gQWxsIFBvbGljaWVzKS4gRm9yIGV4YW1wbGUgb2Jlc2l0eSBpcyBhc3NvY2lhdGVkIHdpdGggbG93ZXIgZWR1Y2F0aW9uYWwgYXR0YWlubWVudCwgd2hpY2ggaW4gdHVybiBpcyBsaW5rZWQgdG8gaW5lcXVhbGl0eSBhbmQgZGVwcml2YXRpb24uIE1vc3Qgb2YgdGhlIGRldGVybWluYW50cyBvZiBoZWFsdGggaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggaGVhbHRoIHNlcnZpY2VzIGFuZCBoYXZlIGV2ZXJ5dGhpbmcgdG8gZG8gd2l0aCBicm9hZGVyIHB1YmxpYyBzZXJ2aWNlcywgdGhlIGVudmlyb25tZW50cyBpbiB3aGljaCB3ZSBsaXZlLCBhbmQgcGVvcGxl4oCZcyBvcHBvcnR1bml0aWVzIHRvIGxlYWQgaGVhbHRoeSBsaXZlcy4gKEVpc2Vuc3RhZHQgTiwgc3BlYWtpbmcgaW46IFRoZSBIZWFsdGggRm91bmRhdGlvbi4gSGVhbHRoaWVyIGxpdmVzOiBhIGxpc3RlbmluZyBleGVyY2lzZS4gW1ZpZGVvXSAyMDE2LiBBdmFpbGFibGUgZnJvbTogW2h0dHA6Ly93d3cuaGVhbHRoLm9yZy51ay9oZWFsdGhpZXItbGl2ZXMtbGlzdGVuaW5nLWV4ZXJjaXNlXVswXSBBY2Nlc3MgdG8gaGVhbHRoIGNhcmUgYWNjb3VudHMgZm9yIGFzIGxpdHRsZSBhcyAxMCUgb2YgYSBwb3B1bGF0aW9u4oCZcyBoZWFsdGggYW5kIHdlbGxiZWluZy4gV2hpbHN0IHRoZSBxdWFsaXR5IG9mIHRoZSBoZWFsdGhjYXJlIHN5c3RlbSByZW1haW5zIGltcG9ydGFudCwgYnkgaXRzZWxmLCBhIHNhZmUgYW5kIGVmZmVjdGl2ZSBoZWFsdGggc2VydmljZSwgd2lsbCBub3QgaW1wcm92ZSB0aGUgaGVhbHRoIG9mIHBlb3BsZSBpbiB0aGUgVUsuIElmIHRoZSBjYXVzZXMgb2YgaWxsIGhlYWx0aCBhcmUgc29jaWFsLCBlY29ub21pYyBhbmQgZW52aXJvbm1lbnRhbCB0aGVuIHRoZSBzb2x1dGlvbnMgbmVlZCB0byBiZSB0b28uIFRoZXJlIGlzIG5vdCBhIHNpbmdsZSBzZWN0b3IgdGhhdCB3aWxsIGhhdmUgdGhlcmUgc291cmNlIHRvIGFkZHJlc3MgdGhlIGNvbXBsZXhpdHkuXFxuXFxuVGhlIEhlYWx0aCBpbiBhbGwgUG9saWNpZXMgYXBwcm9hY2ggcmVjb2duaXNlcyB0aGF0IG91ciBncmVhdGVzdCBoZWFsdGggY2hhbGxlbmdlcywgdGhvc2UgdGhhdCBpbXBhY3Qgb24gbGlmZSBleHBlY3RhbmN5LCBhcmUgaGlnaGx5IGNvbXBsZXggYW5kIHRoYXQgYSBjb2xsYWJvcmF0aXZlIGFwcHJvYWNoIHRvIGRlY2lzaW9uLW1ha2luZyBhY3Jvc3MgYWxsIHNlY3RvcnMgYW5kIHBvbGljeSBhcmVhcyBhcmUgbmVlZGVkLiDigJxUaGUgY2F1c2VzIG9mIHRoZSBjYXVzZXPigJ0gaXMgaG93IHRoZSBzb2NpYWwgZGV0ZXJtaW5hbnRzIG9mIGhlYWx0aCBhcmUgcmVmZXJyZWQgdG8sYW5kIHRoZXNlIHNob3VsZCBiZSB0aGUgbWFpbiBmb2N1cyBvZiBhbnkgc3RyYXRlZ3kgdG8gaW1wcm92ZSBsaWZlIGV4cGVjdGFuY3ksaGVhbHRoIGFuZCBoZWFsdGggaW5lcXVhbGl0aWVzLiAoTWFybW90LCBjaXRlZCBpbiBMR0EgMjAxNikgV2VzdCBTdXNzZXggaGFzIGluY3JlYXNpbmcgcmVjb2duaXNlZCB0aGUgaW1wb3J0YW5jZSBvZiBhZGRyZXNzaW5n4oCcdGhlIGNhdXNlcyBvZiB0aGUgY2F1c2Vz4oCdIHdpdGggc29tZSBvZiBpdHMgc2VydmljZXMgYW5kIHRoZSBjYXNlIHN0dWR5IGJlbG93IGZyb20gdGhlIFByZXNjcmlwdGlvbiBQbHVzIHByb2plY3QgaW4gQ3Jhd2xleSBpcyBhbiBleGFtcGxlIG9mIHRoaXMuIE1ycyBYIGlzIDc2LiBIZXIgaHVzYmFuZCBwYXNzZWQgYXdheSA5IHllYXJzIGFnbyBhbmQgc2hlIGhhcyBhbHNvIOKAmGxvc3TigJkgZm91ciBvZiBoZXIgZnJpZW5kcyBvdmVyIHRoZSBsYXN0IDEyIG1vbnRocy4gU2hlIHNlZXMgaGVyIGRhdWdodGVyIG9uY2UgYSB3ZWVrLiBNcnMgWCBzdGlsbCBkcml2ZXMgYW5kIHRyaWVzIHRvIGdldCBvdXQgdHdpY2UgYSB3ZWVrIGFzIHNoZSBlbmpveXMgZ29vZCBjb21wYW55IGFuZCBjaGF0dGluZy4gU2hlIGlzIGhvd2V2ZXIgdmVyeSBsb25lbHkuIE1ycyBYIGFuZCBoZXIgaHVzYmFuZCB2aXNpdGVkIFNvdXRoIEFmcmljYSBmb3Igb3ZlciAyMCB5ZWFycyBhbmQgaGFzIHZlcnkgZm9uZCBtZW1vcmllcyBvZiB0cmF2ZWxsaW5nIGFuZCBzcGVuZGluZyB0aW1lIHdpdGggaGVyIGh1c2JhbmQgYW5kIGZyaWVuZHMuIFNpbmNlIGhlciBmcmllbmRzIGhhdmUgcGFzc2VkIGF3YXksIE1ycyBYIGhhcyBiZWNvbWUgbW9yZSBhbnhpb3VzIGFib3V0IGdvaW5nIG91dCBhbmQgbWVldGluZyBuZXcgcGVvcGxlLiBTaGUgYWdyZWVkIHRvIHRyeSBvdXQgQWdlIFVLIG9uIGEgVHVlc2RheS4gTXJzIFogaXMgODMgYW5kIGhhcyBhIGZldyBtZWRpY2FsIGNvbmRpdGlvbnMuIFNoZSB1c2VkIHRvIHZvbHVudGVlciB3aXRoIE1lYWxzIE9uIFdoZWVscyBhbmQgYXMgYW4gZXNjb3J0IG9uIGEgc2Nob29sIGJ1cyBhc3Npc3RpbmcgZGlzYWJsZWQgY2hpbGRyZW4uIE1ycyBaIGhhcyBiZWNvbWUgZXZlcnkgYW54aW91cyBhYm91dCBsZWF2aW5nIGhlciBob3VzZSBhbmQgaGFzIGNvbW1lbnRlZCB0aGF0IOKAmGl0IGhhcHBlbmVkIGp1c3QgbGlrZSB0aGF04oCZIOKApiB0aGVyZSB3YXMgbm8gdHJpZ2dlci4gU2hlIG5ldmVyIGpvaW5lZCBhbnkgY2x1YnMgaW4gdGhlIHBhc3QgYW5kIGhlciBhbnhpZXR5IGhhcyBnb3R0ZW4gc28gYmFkLCB0aGF0IHNoZSBldmVuIGZlZWxzIHVuY29tZm9ydGFibGUgZ29pbmcgdXAgdG8gdGhlIGxvY2FsIHNob3AgYW5kIHRvIGhlciBzb27igJlzIGhvdXNlIGZvciBkaW5uZXIuIE1ycyBa4oCZcyBkYXVnaHRlci1pbi1sYXcgY29uZmlybWVkIHRoaXMgd2l0aCB0aGUgQ29vcmRpbmF0b3IgYW5kIGFjdHVhbGx5IHdpc2hlZCBoZXIgbHVjayBpbiBnZXR0aW5nIE1ycyBaIHRvIHBhcnRpY2lwYXRlLiBUaGUgQ29vcmRpbmF0b3IgYXJyYW5nZWQgdG8gY29sbGVjdCBNcnMgWCBhbmQgTXJzIFogdG8gYXR0ZW5kIHRoZSBUdWVzZGF5IHNlc3Npb24gYXQgQWdlIFVLLiBCb3RoIHdlcmUgbmVydm91cyBhbmQgaGFkIHRvIGxpbmsgYXJtcyB0byBlbnRlciB0aGUgbWFpbiBoYWxsLiBUaGV5IHdlcmUgbWFkZSB0byBmZWVsIHZlcnkgd2VsY29tZSBhbmQgaGF2ZSBkZWNpZGVkIHRvIGdvIGJhY2suIFRoZSBDb29yZGluYXRvciB3YXMgZ2l2ZW4gcGVybWlzc2lvbiB0byBzaGFyZSB0aGUgY29udGFjdCBkZXRhaWxzIG9mIGJvdGggYW5kIG5vdyBNcnMgWCB3aWxsIGJlIGNvbGxlY3RpbmcgTXJzIFogdG8gZ28gYWxvbmcgdG8gdGhlIFR1ZXNkYXkgc2Vzc2lvbi5cXG5cXG5bMF06IGh0dHA6Ly93d3cuaGVhbHRoLm9yZy51ay9oZWFsdGhpZXItbGl2ZXMtbGlzdGVuaW5nLWV4ZXJjaXNlXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiAgKipRdWFydGVyIDMgLSBEZWNlbWJlciAyMDE2KipcXG5cXG4gXFxuXFxuSGVhbHRoLXJlbGF0ZWQgcXVhbGl0eSBvZiBsaWZlIOKAk0hlYWx0aHkgTGlmZSBFeHBlY3RhbmN5IC8gUXVhbGl0eSBvZiBMaWZlIG9mIE9sZGVyIFBlb3BsZSBUaGlzIGdvYWwgaXMgbWVhc3VyZWQgYnkgbW9uaXRvcmluZyBhbm51YWwgdXBkYXRlcyB0byB0aGUgR1AgcGF0aWVudCBzdXJ2ZXkgaXRlbSBhYm91dCB0aGUgaGVhbHRoIG9mIHBlb3BsZSBhZ2VkIDY1IGFuZCBvdmVyLiAoUGxlYXNlIG5vdGUgdGhhdCB0aGUgZmlndXJlcyBmb3IgV2VzdCBTdXNzZXggYXQgYW55IG9uZSB0aW1lIG1heSBpbmNsdWRlIGEgc21hbGwgcGVyY2VudGFnZSBvZiBwZW9wbGUgbGl2aW5nIGluIG90aGVyIGNvdW50aWVzIHRoYXQgYm9yZGVyIFdlc3QgU3Vzc2V4KS4gVGhlIEhlYWx0aCBSZWxhdGVkIFF1YWxpdHkgb2YgTGlmZSAoSFJRTCkgR1AgUGF0aWVudOKAmXMgU3VydmV5IHF1ZXN0aW9uIGFza3MgcGVvcGxlIHRvIGRlc2NyaWJlIHRoZWlyIGhlYWx0aCBzdGF0dXMgYWdhaW5zdCBmaXZlIGFyZWFzOiBNb2JpbGl0eSwgU2VsZi1jYXJlLCBBYmlsaXR5IHRvIGRvIHVzdWFsIGFjdGl2aXRpZXMsIFBhaW4gL2Rpc2NvbWZvcnQsIEFueGlldHkgLyBkZXByZXNzaW9uLiBUaGlzIGluZGljYXRvciBoYXMgYmVlbiB1cGRhdGVkIG9uIHRoZSBQdWJsaWMgSGVhbHRoIE91dGNvbWVzIEZyYW1ld29yayAoaW5kaWNhdG9yIDQuMTMpLCB0aGUgbGF0ZXN0IGRhdGEgYXJlOiBUaGUgdmFsdWUgZm9yIFdlc3QgU3Vzc2V4IGhhcyByZWR1Y2VkIGZyb20gMC43NiBpbiAyMDEyLzEzIHRvIDAuNzUxIGluIDIwMTMvMTQuIFRoZSB2YWx1ZSBmb3IgdGhlIFNvdXRoIEVhc3QgcmVtYWluZWQgY29uc3RhbnQgYXQgMC43NTUuIFRoZSBXZXN0IFN1c3NleCB2YWx1ZSBpcyBub3Qgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgZnJvbSB0aGUgU291dGggRWFzdCB2YWx1ZSwgYW5kIHNvIHJlbWFpbnMgYW1iZXIuIEhvd2V2ZXIsIHRoZSBmaWd1cmUgaXMgYmV0dGVyIHRoYW4gdGhlIHNjb3JlIGZvciBFbmdsYW5kLCAwLjcyNi5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiICAqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNioqXFxuXFxuIFxcblxcbkhlYWx0aC1yZWxhdGVkIHF1YWxpdHkgb2YgbGlmZSDigJMgSGVhbHRoeSBMaWZlIEV4cGVjdGFuY3kgLyBRdWFsaXR5IG9mIExpZmUgb2YgT2xkZXIgUGVvcGxlIFRoaXMgZ29hbCBpcyBtZWFzdXJlZCBieSBtb25pdG9yaW5nIGFubnVhbCB1cGRhdGVzIHRvIHRoZSBHUCBwYXRpZW50IHN1cnZleSBpdGVtIGFib3V0IHRoZSBoZWFsdGggb2YgcGVvcGxlIGFnZWQgNjUgYW5kIG92ZXIuIChQbGVhc2Ugbm90ZSB0aGF0IHRoZSBmaWd1cmVzIGZvciBXZXN0IFN1c3NleCBhdCBhbnkgb25lIHRpbWUgbWF5IGluY2x1ZGUgYSBzbWFsbCBwZXJjZW50YWdlIG9mIHBlb3BsZSBsaXZpbmcgaW4gb3RoZXIgY291bnRpZXMgdGhhdCBib3JkZXIgV2VzdCBTdXNzZXgpLiBUaGlzIGdvYWwgaXMgZXhwZWN0ZWQgdG8gYmUgdXBkYXRlZCBpbiBEZWNlbWJlciAyMDE2LiBPTlMgaGF2ZSB5ZXQgdG8gcHJvdmlkZSBhIGRhdGUgZm9yIHRoZSByZWxlYXNlIG9mIGFueSBuZXcgZGF0YS4gVGhlIGxhdGVzdCBkYXRhIHJlbGF0ZXMgdG8gMjAxMi8xMy4gUGVyZm9ybWFuY2UgYWdhaW5zdCB0aGUgdGFyZ2V0IGlzIGN1cnJlbnRseSBBbWJlciAoc2ltaWxhciB0byB0aGUgU291dGggRWFzdCBhdmVyYWdlKS5cXG5cXG5cIn1dLFwidGl0bGVfaW1hZ2VcIjpcIi9hcGkvYXNzZXRzLzZBREJERjk3LUM5RjAtNEVEOS04MTJFLUY3OTJEOUNGRUUxMFwifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDEyLTAxLTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6InNjb3JlIiwidGFyZ2V0IjowLjc2LCJ0YXJnZXRfdHlwZSI6ImFic29sdXRlIiwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6InBraWotMm52NSJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxMn0sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fX0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTh9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxOH19LFwic3RhcnRcIjpcIjIwMTgtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTgtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJoZWFsdGh5IGxpZmUgZXhwZWN0YW5jeSBcIn0ifSwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDc6NTg6MDcuOTQwWiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA3OjU4OjA3Ljk0MFoiLCJ0YXJnZXRfdG9sZXJhbmNlIjowLjcsImlkIjoiaTJ2cC1pem51In0sInJlbGF0ZWRfbWVhc3VyZXMiOltdLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjE1OjQ3Ljc5NloiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwNzo1ODowNy45OTFaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6MTU6NDcuNzk2WiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoiOG4zMy11cXA0IiwibmFtZSI6Ik5IUyBIZWFsdGggQ2hlY2tzIE91dGNvbWVzIiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJpY29uXCI6XCJ0ZXh0XCIsXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyAqKlRhcmdldCoqXFxuXFxuV2UgYmVsaWV2ZSBwYXNzaW9uYXRlbHkgdGhhdCB0aGUgaGVhbHRoIGNoZWNrIGlzIGEgZ3JlYXQgc3RhcnRpbmcgcG9pbnQgdG8gcGVvcGxlIGhlbHBpbmcgdGhlbXNlbHZlcyB0byBsaXZlIGluIGdvb2QgaGVhbHRoIGZvciBsb25nZXIuIFdlIHdhbnQgdG8gZW5jb3VyYWdlIG1vcmUgcGVvcGxlIHRvIHRha2UgdXAgdGhlaXIgZnJlZSBoZWFsdGggY2hlY2ssIHNvIGFyZSB5b3UgdXAgZm9yIHRoZSBjaGFsbGVuZ2UgaW4gMjAxNy8xOD8gSXTigJlzIG5ldmVyIHRvbyBsYXRlIOKAkyBpZiB5b3Ugd2VyZSBvZmZlcmVkIGEgaGVhbHRoIGNoZWNrIGxhc3QgeWVhciBhbmQgZGlkbuKAmXQgdGFrZSBpdCB1cCDigJMgeW91IGNhbiBzdGlsbCBoYXZlIHlvdXIgY2hlY2sgLWdvIHRvIFt3d3cud2VzdHN1c3NleHdlbGxiZWluZy5vcmcudWsvaGVhbHRoY2hlY2tzXVswXSBhbmQgZmluZCBvdXQgd2hlcmUgeW91IGNhbiBnZXQgb25lIG5lYXIgdG8geW91LlxcblxcblswXTogaHR0cDovL3d3dy53ZXN0c3Vzc2V4d2VsbGJlaW5nLm9yZy51ay9oZWFsdGhjaGVja3NcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiRXZlcnlvbmUgaXMgYXQgcmlzayBvZiBkZXZlbG9waW5nIGhlYXJ0IGRpc2Vhc2UsIHN0cm9rZSwgZGlhYmV0ZXMsIGtpZG5leSBkaXNlYXNlIGFuZCBzb21lIGZvcm1zIG9mIGRlbWVudGlhLlxcblxcblRoZSBnb29kIG5ld3MgaXMgdGhhdCB0aGVzZSBjb25kaXRpb25zIGNhbiBvZnRlbiBiZSBwcmV2ZW50ZWQgLSBldmVuIGlmIHlvdSBoYXZlIGEgaGlzdG9yeSBvZiB0aGVtIGluIHlvdXIgZmFtaWx5LlxcblxcbkhhdmUgeW91ciBmcmVlIE5IUyBIZWFsdGggQ2hlY2sgYW5kIHlvdSB3aWxsIGJlIGJldHRlciBwcmVwYXJlZCBmb3IgdGhlIGZ1dHVyZSBhbmQgYmUgYWJsZSB0byB0YWtlIHN0ZXBzIHRvIG1haW50YWluIG9yIGltcHJvdmUgeW91ciBoZWFsdGguXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIllvdXIgcmlzayBvZiBkZXZlbG9waW5nIGhlYXJ0IGRpc2Vhc2UsIHN0cm9rZSwgdHlwZSAyIGRpYWJldGVzLCBraWRuZXkgZGlzZWFzZSBhbmQgZGVtZW50aWEgaW5jcmVhc2VzIHdpdGggYWdlLiBUaGVyZSBhcmUgYWxzbyBjZXJ0YWluIHRoaW5ncyB0aGF0IHdpbGwgcHV0IHlvdSBhdCBldmVuIGdyZWF0ZXIgcmlzay4gVGhlc2UgYXJlOlxcblxcbiogYmVpbmcgb3ZlcndlaWdodFxcbiogYmVpbmcgcGh5c2ljYWxseSBpbmFjdGl2ZVxcbiogbm90IGVhdGluZyBoZWFsdGhpbHlcXG4qIHNtb2tpbmdcXG4qIGRyaW5raW5nIHRvbyBtdWNoIGFsY29ob2xcXG4qIGhpZ2ggYmxvb2QgcHJlc3N1cmVcXG4qIGhpZ2ggY2hvbGVzdGVyb2xcXG5cXG5cXG5TbyBldmVuIGlmIHlvdSdyZSBmZWVsaW5nIHdlbGwsIGl0J3Mgc3RpbGwgd29ydGggaGF2aW5nIHlvdXIgMjAtMzAgbWludXRlIGhlYWx0aCBjaGVjayBub3cgdG8ga2VlcCB5b3UgaGVhbHRoeSBmb3IgdGhlIGZ1dHVyZS4gXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAzIC0gRGVjZW1iZXIvSmFudWFyeSAyMDE4KipcXG5cXG4tIC0gLVxcblxcbldTQ0MgZXhwZWN0cyAzMCwwMDAgcGVvcGxlIHRvIGJlIG9mZmVyZWQgdGhlIG9wcG9ydHVuaXR5IHRvIGhhdmUgdGhlaXIgTkhTIGhlYWx0aCBjaGVjayBpbiAyMDE3LzE4IHdoaWNoIGVxdWF0ZXMgdG8gMiw1MDAgcGVyIG1vbnRoLiBXU0NDIGludGVuZHMgdG8gZGVsaXZlciBhIG1pbmltdW0gb2YgMTEsMDAwIGhlYWx0aCBjaGVja3MgYWNyb3NzIHRoZSB5ZWFyLCBvZiB3aGljaCA4LDU0OCB3ZXJlIGRlbGl2ZXJlZCBieSBRdWFydGVyIDMuXFxuXFxuVGhlIG51bWJlcnMgb2YgYWN0dWFsIGhlYWx0aCBjaGVja3Mgb2ZmZXJlZCBhbmQgZGVsaXZlcmVkIGZyb20gQXByaWwgdG8gRGVjZW1iZXIgYXJlIGlubGluZSB3aXRoIHRoZSBsb2NhbGx5IGFncmVlZCBwbGFuLiBUaGUgcHJvZ3JhbW1lIGlzIG9uIHRyYWNrIHRvIGFjaGlldmUgYXMgcGxhbm5lZCBieSB5ZWFyIGVuZC5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIvT2N0b2JlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcbldTQ0MgZXhwZWN0cyAzMCwwMDAgcGVvcGxlIHRvIGJlIG9mZmVyZWQgdGhlIG9wcG9ydHVuaXR5IHRvIGhhdmUgdGhlaXIgTkhTIGhlYWx0aCBjaGVjayBpbiAyMDE3LzE4IHdoaWNoIGVxdWF0ZXMgdG8gMiw1MDAgcGVyIG1vbnRoLiBXU0NDIGludGVuZHMgdG8gZGVsaXZlciBhIG1pbmltdW0gb2YgMTEsMDAwIGhlYWx0aCBjaGVja3MgYWNyb3NzIHRoZSB5ZWFyLCBvZiB3aGljaCA1LDc4NSB3ZXJlIGRlbGl2ZXJlZCBieSBRdWFydGVyIDIuXFxuXFxuVGhlIG51bWJlcnMgb2YgYWN0dWFsIGhlYWx0aCBjaGVja3Mgb2ZmZXJlZCBhbmQgZGVsaXZlcmVkIGZyb20gQXByaWwgdG8gU2VwdGVtYmVyIGFyZSBpbiBsaW5lIHdpdGggdGhlIGxvY2FsbHkgYWdyZWVkIHBsYW4uIFRoZSBwcm9ncmFtbWUgaXMgb24gdHJhY2sgdG8gYWNoaWV2ZSBhcyBwbGFubmVkIGJ5IHllYXIgZW5kLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5XU0NDIGV4cGVjdHMgMzAsMDAwIHBlb3BsZSB0byBiZSBvZmZlcmVkIHRoZSBvcHBvcnR1bml0eSB0byBoYXZlIHRoZWlyIE5IUyBoZWFsdGggY2hlY2sgaW4gMjAxNy8xOCB3aGljaCBlcXVhdGVzIHRvIDcsNTAwIHBlciBxdWFydGVyLiBXU0NDIGludGVuZHMgdG8gZGVsaXZlciBhIG1pbmltdW0gb2YgMTEsMDAwIGhlYWx0aCBjaGVja3MgYWNyb3NzIHRoZSB5ZWFyLCBvZiB3aGljaCAyLDc1OCB3aWxsIGJlIGRlbGl2ZXJlZCBpbiBRdWFydGVyIDEuXFxuXFxuQXQgdGhlIGVuZCBvZiBRdWFydGVyIDEsIHRoZSBudW1iZXIgb2YgaGVhbHRoIGNoZWNrcyBvZmZlcmVkIHdhcyA5LDM5NiAtIDI1JSBhYm92ZSBwbGFubmVkLlxcblxcbiBcXG5cXG5BbHRob3VnaCB0aGlzIGlzIHNpZ25pZmljYW50bHkgaGlnaGVyIHRoYW4gcGxhbm5lZCwgb3ZlciB0aGUgY291cnNlIG9mIHRoZSB5ZWFyIHRoZSBudW1iZXIgaW52aXRlZCB3aWxsIGNvbWUgYmFjayBpbiBsaW5lLiBUaGUgbnVtYmVyIG9mIGhlYWx0aCBjaGVja3MgZGVsaXZlcmVkIHdhcyAyLDg1OCwgd2hpY2ggaXMgMy42JSBhYm92ZSBwbGFubmVkLiBUaGUgcHJvZ3JhbW1lIGlzIG9uIHRyYWNrIHRvIGFjaGlldmUgYXMgcGxhbm5lZCBieSB5ZWFyLWVuZC5cXG5cXG5XU0NDIHdhbnRzIHRvIGVuY291cmFnZSBtb3JlIHBlb3BsZSB0byB0YWtlIHVwIHRoZSBvZmZlciBvZiB0aGVpciBmcmVlIGhlYWx0aCBjaGVjay4gSGVhbHRoIGNoZWNrcyBhcmUgd2lkZWx5IGF2YWlsYWJsZSBhY3Jvc3MgdGhlIGNvdW50eS4gTW9zdCBHUCBwcmFjdGljZXMgb2ZmZXIgdGhlIHNlcnZpY2UgdG8gdGhlaXIgcmVnaXN0ZXJlZCBwYXRpZW50cyBieSBpbnZpdGF0aW9uLiBNYW55IHBoYXJtYWNpZXMgb2ZmZXIgdGhlIHNlcnZpY2Ugb24gdGhlIGhpZ2ggc3RyZWV0IGFuZCBjb21tdW5pdHkgY2xpbmljcyBhcmUgaGVsZCBpbiBhIHZhcmlldHkgb2YgY29tbXVuaXR5IHZlbnVlcy5cXG5cXG4gXFxuXFxuRGV0YWlscyBvZiBlbGlnaWJpbGl0eSBhbmQgYSBmdWxsIGxpc3Qgb2Ygd2hlcmUgdGhlIE5IUyBIZWFsdGggQ2hlY2sgU2VydmljZSBpcyBhdmFpbGFibGUgY2FuIGJlIGZvdW5kIG9uIFt3d3cud2VzdHN1c3NleHdlbGxiZWluZy5vcmcudWsvaGVhbHRoY2hlY2tzXVswXVxcblxcblswXTogaHR0cDovL3d3dy53ZXN0c3Vzc2V4d2VsbGJlaW5nLm9yZy51ay9oZWFsdGhjaGVja3NcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvM0RFNjBDODUtRjUwRi00MkZCLUFDNUUtRjFBQzhEOTIyODE5XCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJUaGlzIGdvYWwgaXMgbWVhc3VyZWQgYnkgdHJhY2tpbmcgdGhlIG51bWJlciBvZiBwZW9wbGUgdGFraW5nIHVwIHRoZSBvZmZlciBvZiBhIE5IUyBoZWFsdGggY2hlY2tcIixcInVzZV9jdXN0b21fc3VidGl0bGVcIjp0cnVlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJUaGUgdGFyZ2V0IGZvciAyMDE3LzE4IGlzIDE0LDUwMCBwZW9wbGUgYWdlZCA0MCB0byA3NCB0YWtpbmcgdXAgdGhlIG9mZmVyIG9mIGEgaGVhbHRoIGNoZWNrXCJ9In0sInByZXZhaWxpbmdfbWVhc3VyZSI6eyJzdGFydCI6IjIwMTctMDQtMDFUMDA6MDA6MDAuMDAwIiwiZW5kIjoiMjAxOC0wMy0zMVQyMzo1OTo1OS4wMDAiLCJ1bml0IjoicGVvcGxlIiwidGFyZ2V0IjoxNDUwMCwidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YSI6MCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6MTcwMCwibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiJ3enNlLW5zeGUifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOjMsXCJ5ZWFyXCI6MjAxN30sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fSxcImFjdGlvbl90eXBlXCI6XCJpbmNyZWFzZVwiLFwibWFpbnRhaW5fdHlwZVwiOlwiPlwifSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fX0sXCJzdGFydFwiOlwiMjAxNC0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNC0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9fSxcIm5hbWVcIjpcInRoZSBudW1iZXIgb2YgcGVvcGxlIGFjY2Vzc2luZyBOSFMgaGVhbHRoIGNoZWNrc1wiLFwidXNlX3Byb2dyZXNzX292ZXJyaWRlXCI6ZmFsc2UsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwid2l0aGluX3RvbGVyYW5jZVwifSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwNzo1MjoyOS4zMjNaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDc6NTI6MjkuMzIzWiIsInRhcmdldF90b2xlcmFuY2UiOjQ1MDAsImlkIjoicnJuNC1lcWc0In0sInJlbGF0ZWRfbWVhc3VyZXMiOlt7Im1ldGFkYXRhIjoiIiwiaWQiOiJiN3ZyLTdiNDYifV0sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDgtMTRUMTM6MjI6MzcuNjMwWiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA3OjUyOjI5LjQ0NloiLCJ2ZXJzaW9uIjoiMjAxOC0wOC0xNFQxMzoyMjozNy42MzBaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9XSwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTE6MTc6NTEuMTg3WiJ9XSwiaXNfcHVibGljIjp0cnVlLCJ2ZXJzaW9uIjoiMjAxOS0wOC0yMFQxOTowNDo1Mi4xNTFaIn19
eyJzdGF0dXMiOjQwNCwiZGF0YSI6eyJjb2RlIjoibm90X2ZvdW5kIiwiZXJyb3IiOnRydWUsIm1lc3NhZ2UiOiJVc2VyIG5vdCBmb3VuZCJ9fQ==
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6MTg6MjkuMjU1WiIsImlkIjoiYzdyaS05dThrIiwiY29sdW1uMSI6InBlcmNlbnRhZ2VfY29tcGxldGVfaW5fZm91cl93ZWVrcyIsImRhdGFzZXQiOiJ5M2F5LWF5MjkiLCJtZXRhZGF0YSI6IntcIndpemFyZFwiOntcImZpbHRlcl9hc3RcIjpbe1widmFsdWVzXCI6W3t9XX1dLFwidmFsdWVUeXBlXCI6XCJvbmVcIn19IiwiZGF0YXNldF9kb21haW4iOiJwZXJmb3JtYW5jZS53ZXN0c3Vzc2V4Lmdvdi51ayIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjE4OjI5LjI1NVoifX0=
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6MTk6MzguMjkzWiIsImlkIjoiZmdnei1rd2VxIiwiY29sdW1uMSI6ImFjdHVhbCIsImRhdGFzZXQiOiJxcW56LWYyOWgiLCJtZXRhZGF0YSI6IntcIndpemFyZFwiOntcImZpbHRlcl9hc3RcIjpbe1widmFsdWVzXCI6W3t9XX1dLFwidmFsdWVUeXBlXCI6XCJvbmVcIn19IiwiZGF0YXNldF9kb21haW4iOiJwZXJmb3JtYW5jZS53ZXN0c3Vzc2V4Lmdvdi51ayIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjE5OjM4LjI5M1oifX0=
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6MjY6MTguMjM5WiIsImlkIjoieWJ0aS1oYjd3IiwiY29sdW1uMSI6InRvdGFsIiwiZGF0YXNldCI6IjdzZmItZnpzNiIsIm1ldGFkYXRhIjoie1wid2l6YXJkXCI6e1wiZmlsdGVyX2FzdFwiOlt7XCJ2YWx1ZXNcIjpbe31dfV0sXCJ2YWx1ZVR5cGVcIjpcIm9uZVwifX0iLCJkYXRhc2V0X2RvbWFpbiI6InBlcmZvcm1hbmNlLndlc3RzdXNzZXguZ292LnVrIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6MjY6MTguMjM5WiJ9fQ==
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6Mjg6MDkuOTc0WiIsImlkIjoiY3Z5cS00cWVpIiwiY29sdW1uMSI6ImF2ZXJhZ2VfdGltZV9pbl9jYXJlX2JlZm9yZV9tb3ZpbmdfaW5fd2l0aF9hZG9wdGl2ZV9mYW1pbHkiLCJkYXRhc2V0IjoieG5heC0yc3JxIiwibWV0YWRhdGEiOiJ7XCJ3aXphcmRcIjp7XCJmaWx0ZXJfYXN0XCI6W3tcInZhbHVlc1wiOlt7fV19XSxcInZhbHVlVHlwZVwiOlwib25lXCJ9fSIsImRhdGFzZXRfZG9tYWluIjoicGVyZm9ybWFuY2Uud2VzdHN1c3NleC5nb3YudWsiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDoyODowOS45NzRaIn19
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJwdWJsaWNhdGlvbl9kYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6MzU6MTUuMzE2WiIsImlkIjoibTh2cy0yaWkzIiwiY29sdW1uMSI6Im92ZXJhbGxfZWZmZWNpdmVuZXNzIiwiZGF0YXNldCI6ImtoN2UtdnN1dSIsIm1ldGFkYXRhIjoie1wid2l6YXJkXCI6e1wiZmlsdGVyX2FzdFwiOlt7XCJ2YWx1ZXNcIjpbe31dfV0sXCJ2YWx1ZVR5cGVcIjpcIm9uZVwifX0iLCJkYXRhc2V0X2RvbWFpbiI6InBlcmZvcm1hbmNlLndlc3RzdXNzZXguZ292LnVrIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6MzU6MTUuMzE2WiJ9fQ==
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJ5ZWFyIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTE6MDM6MDAuNzAyWiIsImlkIjoiMjZ2Zy1wMmJ5IiwiY29sdW1uMSI6ImFsbCIsImRhdGFzZXQiOiJnbnR6LTR1aXciLCJtZXRhZGF0YSI6IntcIndpemFyZFwiOntcImZpbHRlcl9hc3RcIjpbe1widmFsdWVzXCI6W3t9XX1dLFwidmFsdWVUeXBlXCI6XCJvbmVcIn19IiwiZGF0YXNldF9kb21haW4iOiJwZXJmb3JtYW5jZS53ZXN0c3Vzc2V4Lmdvdi51ayIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDExOjAzOjAwLjcwMloifX0=
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6NDc6NTYuNjI3WiIsImlkIjoidm5mYS1ycnEzIiwiY29sdW1uMSI6Indlc3Rfc3Vzc2V4X2tleV9zdGFnZV8yX3Jlc3VsdCIsImRhdGFzZXQiOiIzMzZzLXN5NDkiLCJtZXRhZGF0YSI6IntcIndpemFyZFwiOntcImZpbHRlcl9hc3RcIjpbe1widmFsdWVzXCI6W3t9XX1dLFwidmFsdWVUeXBlXCI6XCJvbmVcIn19IiwiZGF0YXNldF9kb21haW4iOiJwZXJmb3JtYW5jZS53ZXN0c3Vzc2V4Lmdvdi51ayIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjQ3OjU2LjYyN1oifX0=
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6NDk6NTMuNDY4WiIsImlkIjoiMnVqeC04NDNpIiwiY29sdW1uMSI6InNjb3JlIiwiZGF0YXNldCI6IjJldmctYTZoZSIsIm1ldGFkYXRhIjoie1wid2l6YXJkXCI6e1wiZmlsdGVyX2FzdFwiOlt7XCJ2YWx1ZXNcIjpbe31dfV0sXCJ2YWx1ZVR5cGVcIjpcIm9uZVwifX0iLCJkYXRhc2V0X2RvbWFpbiI6InBlcmZvcm1hbmNlLndlc3RzdXNzZXguZ292LnVrIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6NDk6NTMuNDY4WiJ9fQ==
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6NTE6NDIuMTk2WiIsImlkIjoieHlqdy1xeTQ5IiwiY29sdW1uMSI6InNjaG9vbHMiLCJkYXRhc2V0IjoiOHlpMy1menJ3IiwibWV0YWRhdGEiOiJ7XCJ3aXphcmRcIjp7XCJmaWx0ZXJfYXN0XCI6W3tcInZhbHVlc1wiOlt7fV19XSxcInZhbHVlVHlwZVwiOlwib25lXCJ9fSIsImRhdGFzZXRfZG9tYWluIjoicGVyZm9ybWFuY2Uud2VzdHN1c3NleC5nb3YudWsiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDo1MTo0Mi4xOTZaIn19
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJ5ZWFyIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MTQ6NTkuMDI3WiIsImlkIjoiNjljZC1lNWc2IiwiY29sdW1uMSI6Indlc3Rfc3Vzc2V4IiwiZGF0YXNldCI6IndoOGktaTRnNCIsIm1ldGFkYXRhIjoie1wid2l6YXJkXCI6e1wiZmlsdGVyX2FzdFwiOlt7XCJ2YWx1ZXNcIjpbe31dfV0sXCJ2YWx1ZVR5cGVcIjpcIm9uZVwiLFwicHJlZmlsdGVyVHlwZVwiOlwidW5maWx0ZXJlZFwifX0iLCJkYXRhc2V0X2RvbWFpbiI6InBlcmZvcm1hbmNlLndlc3RzdXNzZXguZ292LnVrIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MTQ6NTkuMDI3WiJ9fQ==
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlX25hbWUiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOToxMzo0MC42NjBaIiwiaWQiOiJtYm1jLWN4Z3UiLCJjb2x1bW4xIjoid2VzdF9zdXNzZXgiLCJkYXRhc2V0IjoiNWpjYi1naDN4IiwibWV0YWRhdGEiOiJ7XCJ3aXphcmRcIjp7XCJmaWx0ZXJfYXN0XCI6W3tcInZhbHVlc1wiOlt7fV19XSxcInZhbHVlVHlwZVwiOlwib25lXCJ9fSIsImRhdGFzZXRfZG9tYWluIjoicGVyZm9ybWFuY2Uud2VzdHN1c3NleC5nb3YudWsiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOToxMzo0MC42NjBaIn19
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MTI6MzAuMjU3WiIsImlkIjoiM3FqZC02ZTVtIiwiY29sdW1uMSI6Im9mX2ludm9pY2VzX3BhaWQiLCJkYXRhc2V0IjoicnM0Zy01Y3ZuIiwibWV0YWRhdGEiOiJ7XCJ3aXphcmRcIjp7XCJmaWx0ZXJfYXN0XCI6W3tcInZhbHVlc1wiOlt7fV19XSxcInZhbHVlVHlwZVwiOlwib25lXCJ9fSIsImRhdGFzZXRfZG9tYWluIjoicGVyZm9ybWFuY2Uud2VzdHN1c3NleC5nb3YudWsiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOToxMjozMC4yNTdaIn19
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoic3VtIn0sImRhdGVfY29sdW1uIjoiZGF0ZSIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA5OjExOjEyLjY3NVoiLCJpZCI6Ijk5bTMtZGtneiIsImNvbHVtbjEiOiJidXNpbmVzc2VzX3N1cHBvcnRlZCIsImRhdGFzZXQiOiJ3ZHphLWdudmQiLCJtZXRhZGF0YSI6IntcIndpemFyZFwiOntcImZpbHRlcl9hc3RcIjpbe1widmFsdWVzXCI6W3t9XX1dLFwidmFsdWVUeXBlXCI6XCJvbmVcIn19IiwiZGF0YXNldF9kb21haW4iOiJwZXJmb3JtYW5jZS53ZXN0c3Vzc2V4Lmdvdi51ayIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjExOjEyLjY3NVoifX0=
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MDk6MzMuMzQ2WiIsImlkIjoiZ3Z1Ny1xNTRyIiwiY29sdW1uMSI6ImFjaGlldmVkX3BlcmNlbnRhZ2UiLCJkYXRhc2V0IjoiNW5nZS1hODQ2IiwibWV0YWRhdGEiOiJ7XCJ3aXphcmRcIjp7XCJmaWx0ZXJfYXN0XCI6W3tcInZhbHVlc1wiOlt7fV19XSxcInZhbHVlVHlwZVwiOlwib25lXCJ9fSIsImRhdGFzZXRfZG9tYWluIjoicGVyZm9ybWFuY2Uud2VzdHN1c3NleC5nb3YudWsiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOTowOTozMy4zNDZaIn19
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MDQ6MjIuMTQxWiIsImlkIjoiMnA4ay02cDg1IiwiY29sdW1uMSI6ImFwcHJlbnRpY2VzIiwiZGF0YXNldCI6InY0dmotZHBlNCIsIm1ldGFkYXRhIjoie1wid2l6YXJkXCI6e1wiZmlsdGVyX2FzdFwiOlt7XCJ2YWx1ZXNcIjpbe31dfV0sXCJ2YWx1ZVR5cGVcIjpcIm9uZVwifX0iLCJkYXRhc2V0X2RvbWFpbiI6InBlcmZvcm1hbmNlLndlc3RzdXNzZXguZ292LnVrIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MDQ6MjIuMTQxWiJ9fQ==
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MDI6NDYuNDU0WiIsImlkIjoiOWhndy05cHMzIiwiY29sdW1uMSI6Indlc3Rfc3Vzc2V4IiwiZGF0YXNldCI6IjQ3dWktbTh3eiIsIm1ldGFkYXRhIjoie1wid2l6YXJkXCI6e1wiZmlsdGVyX2FzdFwiOlt7XCJ2YWx1ZXNcIjpbe31dfV0sXCJwcmVmaWx0ZXJUeXBlXCI6XCJ1bmZpbHRlcmVkXCIsXCJ2YWx1ZVR5cGVcIjpcIm9uZVwifX0iLCJkYXRhc2V0X2RvbWFpbiI6InBlcmZvcm1hbmNlLndlc3RzdXNzZXguZ292LnVrIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MDI6NDYuNDU0WiJ9fQ==
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MDM6MTUuOTg2WiIsImlkIjoiZ2FlOC1hZndpIiwiY29sdW1uMSI6InRvdGFsX3ByZW1pc2VzX3Bhc3Nlc190aHAiLCJkYXRhc2V0IjoiM211ai1xaXRwIiwibWV0YWRhdGEiOiJ7XCJ3aXphcmRcIjp7XCJmaWx0ZXJfYXN0XCI6W3tcInZhbHVlc1wiOlt7fV19XSxcInZhbHVlVHlwZVwiOlwib25lXCJ9fSIsImRhdGFzZXRfZG9tYWluIjoicGVyZm9ybWFuY2Uud2VzdHN1c3NleC5nb3YudWsiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOTowMzoxNS45ODZaIn19
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDg6NTM6MTQuNTk3WiIsImlkIjoiNmt1bS1rNG5pIiwiY29sdW1uMSI6ImFjdHVhbCIsImRhdGFzZXQiOiJtY2djLW45cmciLCJtZXRhZGF0YSI6IntcIndpemFyZFwiOntcImZpbHRlcl9hc3RcIjpbe1widmFsdWVzXCI6W3t9XX1dLFwidmFsdWVUeXBlXCI6XCJvbmVcIn19IiwiZGF0YXNldF9kb21haW4iOiJwZXJmb3JtYW5jZS53ZXN0c3Vzc2V4Lmdvdi51ayIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA4OjUzOjE0LjU5N1oifX0=
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDg6NTA6MzYuNTQ3WiIsImlkIjoiNHc1YS1jeGlhIiwiY29sdW1uMSI6ImFjdHVhbCIsImRhdGFzZXQiOiJzc241LXQyaW0iLCJtZXRhZGF0YSI6IntcIndpemFyZFwiOntcImZpbHRlcl9hc3RcIjpbe1widmFsdWVzXCI6W3t9XX1dLFwidmFsdWVUeXBlXCI6XCJvbmVcIn19IiwiZGF0YXNldF9kb21haW4iOiJwZXJmb3JtYW5jZS53ZXN0c3Vzc2V4Lmdvdi51ayIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA4OjUwOjM2LjU0N1oifX0=
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDg6NDM6MjMuMzM0WiIsImlkIjoiYWdrdi1pM2FpIiwiY29sdW1uMSI6ImFjdHVhbCIsImRhdGFzZXQiOiI5dG13LWNiczkiLCJtZXRhZGF0YSI6IntcIndpemFyZFwiOntcImZpbHRlcl9hc3RcIjpbe1widmFsdWVzXCI6W3t9XX1dLFwidmFsdWVUeXBlXCI6XCJvbmVcIn19IiwiZGF0YXNldF9kb21haW4iOiJwZXJmb3JtYW5jZS53ZXN0c3Vzc2V4Lmdvdi51ayIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA4OjQzOjIzLjMzNFoifX0=
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDg6MTY6NDQuMTE3WiIsImlkIjoiZTM4NS04d2diIiwiY29sdW1uMSI6InJhdGUiLCJkYXRhc2V0IjoiZGdwcC1yY3FwIiwibWV0YWRhdGEiOiJ7XCJ3aXphcmRcIjp7XCJmaWx0ZXJfYXN0XCI6W3tcInZhbHVlc1wiOlt7fV19XSxcInZhbHVlVHlwZVwiOlwib25lXCJ9fSIsImRhdGFzZXRfZG9tYWluIjoicGVyZm9ybWFuY2Uud2VzdHN1c3NleC5nb3YudWsiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwODoxNjo0NC4xMTdaIn19
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoibW9zdF9yZWNlbnQifSwiZGF0ZV9jb2x1bW4iOiJkYXRlIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDc6NTg6MDcuODY2WiIsImlkIjoicGtpai0ybnY1IiwiY29sdW1uMSI6ImhlYWx0aHlfbGlmZV9leHBlY3RhbmN5IiwiZGF0YXNldCI6InZuZmstc3VjayIsIm1ldGFkYXRhIjoie1wid2l6YXJkXCI6e1wiZmlsdGVyX2FzdFwiOlt7XCJ2YWx1ZXNcIjpbe31dfV0sXCJ2YWx1ZVR5cGVcIjpcIm9uZVwifX0iLCJkYXRhc2V0X2RvbWFpbiI6InBlcmZvcm1hbmNlLndlc3RzdXNzZXguZ292LnVrIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDc6NTg6MDcuODY2WiJ9fQ==
eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJjb21wdXRlIjp7ImFnZ3JlZ2F0aW9uX2Z1bmN0aW9uIjoic3VtIn0sImRhdGVfY29sdW1uIjoiZGF0ZSIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA3OjUyOjI4Ljk4MFoiLCJpZCI6Ind6c2UtbnN4ZSIsImNvbHVtbjEiOiJ0YWtlX3VwX29mX2hlYWx0aF9jaGVja3MiLCJkYXRhc2V0IjoiZmJwOS1pYmRhIiwibWV0YWRhdGEiOiJ7XCJ3aXphcmRcIjp7XCJmaWx0ZXJfYXN0XCI6W3tcInZhbHVlc1wiOlt7fV19XSxcInZhbHVlVHlwZVwiOlwib25lXCJ9fSIsImRhdGFzZXRfZG9tYWluIjoicGVyZm9ybWFuY2Uud2VzdHN1c3NleC5nb3YudWsiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwNzo1MjoyOC45ODBaIn19