From users-return-49269-archive-asf-public=cust-asf.ponee.io@activemq.apache.org Thu Feb 1 15:23:48 2018 Return-Path: X-Original-To: archive-asf-public@eu.ponee.io Delivered-To: archive-asf-public@eu.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by mx-eu-01.ponee.io (Postfix) with ESMTP id BC1A4180652 for ; Thu, 1 Feb 2018 15:23:48 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id AC6EB160C44; Thu, 1 Feb 2018 14:23:48 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 529AD160C26 for ; Thu, 1 Feb 2018 15:23:46 +0100 (CET) Received: (qmail 67250 invoked by uid 500); 1 Feb 2018 14:23:45 -0000 Mailing-List: contact users-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@activemq.apache.org Delivered-To: mailing list users@activemq.apache.org Received: (qmail 67206 invoked by uid 99); 1 Feb 2018 14:23:44 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Feb 2018 14:23:44 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id ED61519A911; Thu, 1 Feb 2018 14:23:43 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.752 X-Spam-Level: X-Spam-Status: No, score=-0.752 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_INFOUSMEBIZ=0.75, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id qv0KBXKT4izy; Thu, 1 Feb 2018 14:23:37 +0000 (UTC) Received: from mail1.bemta6.messagelabs.com (mail1.bemta6.messagelabs.com [193.109.254.107]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 6B8C35FB89; Thu, 1 Feb 2018 14:23:36 +0000 (UTC) Received: from [193.109.255.147] (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256 bits)) by server-3.bemta-6.messagelabs.com id A6/EF-21906-2E2237A5; Thu, 01 Feb 2018 14:23:30 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGKsWRWlGSWpSXmKPExsXSXXVeTPehUnG UwbV3KhYrH35mtDh5bwaTA5NHx72DbAGMUayZeUn5FQmsGYtOKhUs28Rc8W+FTAPjlTXMXYxc HEICOxgl5nU/g3IOM0rc2z2DDcK5wCjx5vVLli5GTg42AR2JN/dnMYLYIgLWEt3H9gF1cHAwC 7hLNLZXgISFBZQlrn+4C1WiInF9zw2wOSICmxgl1jydCTaHBSjxquc4E4jNK+AvseXPKahln7 kl7s6fyQ6S4BQIlNi55AOYzSggJvH91BqwBmYBcYlbT+aD2RICAhJL9pxnhrBFJV4+/scKYRt IbF26jwXCVpS4fPoV1KGaEut36UOMUZSY0v2QHeIGQYmTM5+AlQsB3dZ36TnrBEbxWUi2zULo noWkexaS7gWMLKsYNYpTi8pSi3SNTPSSijLTM0pyEzNzdA0NzPRyU4uLE9NTcxKTivWS83M3M QJjjQEIdjDu+xh5iFGSg0lJlDeEoThKiC8pP6UyI7E4I76oNCe1+BCjDAeHkgRvjyJQTrAoNT 21Ii0zBxj1MGkJDh4lEd5EkDRvcUFibnFmOkTqFKM3x7e9D9qYOY4dfwUkb/wAky9eA8lpy94 AyS0gUoglLz8vVUqcdyrICAGQERmleXALYMnrEqOslDAvI9DJQjwFqUW5mSWo8q8YxTkYlYR5 94NM4cnMK4G74xXQiUxAJ/7MLgQ5sSQRISXVwMhlzdrUW92mcilFYX2F9t+63eK8DerOE2cFa xm5FCQvNPZaKqLH2OU7IfrzhZ8dL+QOzpzJH7fDZNIC2TnfLIpLKj8bnZgyUS/p8fWMP3ekzx /Z9WDuFAbFC3qMmovCg4yjrwU3n/WQkz+tdEl1Rjwj8+vAaX5Pq1xvaPCGsu8JT8uJSDzQpcR SnJFoqMVcVJwIALiBOUVZAwAA X-Env-Sender: bharat.gupta@scania.com X-Msg-Ref: server-12.tower-72.messagelabs.com!1517495000!18469193!12 X-Originating-IP: [139.122.207.22] X-StarScan-Received: X-StarScan-Version: 9.4.45; banners=-,-,- X-VirusChecked: Checked Received: (qmail 14787 invoked from network); 1 Feb 2018 14:23:29 -0000 Received: from unknown (HELO SESOEXGW05.xds.scania.com) (139.122.207.22) by server-12.tower-72.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 1 Feb 2018 14:23:29 -0000 Received: from SESOEX0020.global.scd.scania.com (138.106.6.16) by mailgw01.scania.com (139.122.207.22) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Thu, 1 Feb 2018 15:23:26 +0100 Received: from SESOEX0017.global.scd.scania.com (138.106.6.95) by SESOEX0020.global.scd.scania.com (138.106.6.16) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Thu, 1 Feb 2018 15:23:26 +0100 Received: from SESOEX0017.global.scd.scania.com ([fe80::1973:eef4:6a1c:1d26]) by SESOEX0017.global.scd.scania.com ([fe80::1973:eef4:6a1c:1d26%19]) with mapi id 15.00.1347.000; Thu, 1 Feb 2018 15:23:26 +0100 From: Gupta Bharat To: "users@activemq.apache.org" CC: "users-owner@activemq.apache.org" Subject: RE: ActiveMQ custom plugin Thread-Topic: ActiveMQ custom plugin Thread-Index: AdNlEPTPaaLc7mreQqKrPfCW+mq2mQAGZkkPAAPaHUAAA5QxgAAOuDswADbZ74AAI+IHgAAWJuEAAEVdvbAAFxoZgAE/aD5AAASqRYABVl+qkAAJtBmAAARqOK4ALfE5AAPb0aUABfRcnZAAAkjvgAAAGEoAAAKFWaA= Date: Thu, 1 Feb 2018 14:23:26 +0000 Message-ID: <45169e7fdcf6456c8e1c77dfa7749a87@SESOEX0017.global.scd.scania.com> References: <819d4a6972cd4bd2a00f29b1e82d9ed7@SESOEX0017.global.scd.scania.com> <5492f549b15d4dc8b64e2ad35fd68d06@SESOEX0017.global.scd.scania.com> <77828fad6c84444b873e8b8a1446dcbd@SESOEX0017.global.scd.scania.com> <5601c03499464ce4bae675d26edb885c@SESOEX0017.global.scd.scania.com> <33335E59-9DE2-4ECF-A9F2-D7EA2A5FDECE@scania.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [138.106.6.140] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 SSBkb24ndCB3aXNoIHRvIGFkZCBoZWFkZXJzIGluIHRoZSBtZXNzYWdlIEkgcGFzdGVkLiBUaGlz IG1lc3NhZ2UgSSBhbSBnZXR0aW5nIGZyb20gdXNlciBhbmQgaXQgaXMgY29udGVudC4gRXZlbiB0 aGUgdGFnIGhlYWRlciBpcyBwYXJ0IG9mIGNvbnRlbnQuIEJ1dCB3aGVuIEkgcm91dGUgdGhlIG1l c3NhZ2UgZnJvbSBBY3RpdmUgTVEgdG8gSUJNIE1RIGNlcnRhaW4gYXR0cmlidXRlcyBsaWtlIGRl c3RpbmF0aW9uIHRvcGljIG5hbWUgYW5kIG1lc3NhZ2UgaWQgbmVlZCB0byBiZSBhZGRlZC4gDQoN CkFsc28gSSBhbSB1c2luZyBNUVRUIGNsaWVudCB0byBwdWJsaXNoIGEgbWVzc2FnZSBvbiBBY3Rp dmVNUSBzcGVjaWZ5aW5nIHRoZSB0b3BpYyBuYW1lIGFuZCBtZXNzYWdlLiBJIG5lZWQgdG8gYWRk IHRoYXQgdG9waWMgbmFtZSBhcyBkZXN0aW5hdGlvbiBhbmQgYWxzbyB3YW50IHRvIHJlbW92ZSBK V1R0b2tlbiBmcm9tIG1lc3NhZ2UuDQoNClB1YmxpY2F0aW9uOg0KVG9waWM6IERlbW8NCk1lc3Nh Z2U6IHsiaGVhZGVyIjp7Im1lc3NhZ2VJZCI6ImZjYmVmNTY1LTE4ZWEtNDI5YS04MzZmLTdlMjRk OWI1Mzc0MyIsImp3dFRva2VuIjoiZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKU1V6STFOaUo5 LmV5SjFibWx4ZFdWZmJtRnRaU0k2SW5kcGFXNXBhM0IyZENJc0luTjFZaUk2SW5kcGFXNXBhM0Iy ZENJc0ltdHBaQ0k2SW1NeE16RmhNV0kwTFdVMFlXVXROR1V3TkMxaE1HWXdMV1ZpTnpWaVlUaGpZ VEZqTXlJc0lrVjRkR1Z5Ym1Gc1UzUmhabVpTWldabGNtVnVZMlVpT2lKbVpXTmlNRFExTnkwNU1t TmhMVFJtTURBdE9USXdOQzFsWmpBd05UWXpaRGd4WkdJaUxDSkZlSFJsY201aGJFTjFjM1J2YldW eVVtVm1aWEpsYm1ObElqb2lZVGt4WldZek1UWXROVEpoTWkwMFpXRTBMVGszWkRNdE5ESTVNRGho TUdOallqUTNJaXdpUVdSQlkyTnZkVzUwSWpvaWJuZHBOMkUwSWl3aVJuVnVZM1JwYjI1aGJGQmxj bTFwYzNOcGIyNXpJam9pTkRreE1EQTNJaXdpVlhObGNsQmxjbTFwYzNOcGIyNXpJanBiSWpJME5E VXhNVFEzTlRBaUxDSTVPVElpWFN3aWFYTnpJam9pYUhSMGNITTZMeTltYlhOa1pYWmhkWFJvTG5O allXNXBZUzVqYjIwdklpd2lZWFZrSWpvaU1tTXhOemsyTnprdE4yVmpNUzAwTUdReExUa3hOakF0 TmprM05qRXlPVGcwWkRnMUlpd2laWGh3SWpveE5URTFOamM1TmprNExDSnVZbVlpT2pFMU1UVTJO ell3T1RoOS5PbHQxelhlREExc25kTzFkNE0xeTA3dVNCemo3QnhBNlBsdm1mOFRDTGZlUWhoMy1G eXgtd01JeUhoWFdTTkZnSTZ0UkRWTDBoZUpmdHhBVGNHYmVfMHUxblZwMHZ3bnJUTzdQdUd1S3pF aFdZWEZsR3M4M0lhc043aElpZE9wMXFQOWhYemkzaV9WS1ZOYTB3SUxVc3VCTXphN25rUGQ3eHVU Z0NxYWN1RkRwQlpvd3l0LVYxUFV2cXlqMkdkNTBBRGhfb3V1YXpPM2FrTl94SENGRU5KR0RYTHg5 MUFCdUpiR0dpVXNQSTE2dURjeEF6RG1mZUtnbndiRjVaczhkdzNURV9MaWlCQ2NJQ01LeDgxcnA2 TF9SVGtQdW9lNVVtdi1ZMmloZmNuRHQxdHJwMzZUdnBVc1NhLVRxdGN2Wm50d2tEQmNDTktob3lF QjVGb2tNeGF0SzV4Z25wanFwajFrd1ptSHFmemZzSndGREJIWTlDZDczVVFwaWdtYXJMYzdSZ3lX TDNPX1FaWHhEZVZQMXZ4TzRWMk5LMWltM0pjMEJqTDR2c3JjSXFyV1VuX3Y0cEpDTVFNRnRTWjJo a2c4WXdfVlJucnZKVG9GNHo5T0phX3lETl9fYklDNV9Femw0SHZ2SjZqVHJrcjFzcVFUSktxNGlw eXgtNHBHOU5zNUtQWmV6amdFcmFCTUVOY0FIekNjSXBJdkk1M0JtdTZhUG5lRmdFak9BUWFKNURn enUtQ3I0ZmVzakVnSXlCVnQyYkhQR2EtenRBQTdwZm9wLTNCWHNWandYUHNiY183LXRRYW5Dcl9n QU5IdFpYUVlYdmp4TTE0UEZ1WkFqYy1HRVJnOUlrQ29rZ1JkM3g4eFlsTldoUnRpQ1o0N2tmbE5O d3QxX1FWbyIsImNvcnJlbElkIjoiIiwiaW5pdGlhbE1lc3NhZ2VpZCI6ImZjYmVmNTY1LTE4ZWEt NDI5YS04MzZmLTdlMjRkOWI1Mzc0MyIsImVudmlyb25tZW50Ijoic3Q1IiwicHJvZHVjZXJVVENU aW1lc3RhbXAiOjE1MTU2NzcwOTkzMzcsImNvbnRyYWN0SWQiOiJTQ0NPMzgyMiIsInByb2R1Y2Vy VmVyIjoiMS4wIiwibWVzc2FnZVR5cGUiOiJTZW5kQ2hhdE1lc3NhZ2VJbkNvbnZlcnNhdGlvbk1l c3NhZ2UiLCJhcHBJZCI6ImZtYSIsIm1lc3NhZ2VUeXBlVmVyIjoiMS4wIiwicmVjZWl2ZXJzIjpb XX0sImJvZHkiOnsiY29udmVyc2F0aW9uSWQiOiIyYjU3NTQ2Mi05N2JkLTRlOWEtOGFjNC02ZmVj NzkzYzgzNmEiLCJjaGF0TWVzc2FnZUlkIjoiMDk4ZWU0ZTctODk3Ni00YzIxLThmMGEtNTIxODcz ZmQ2YWM1IiwiY29udGVudCI6ImdydGUiLCJhdHRhY2htZW50cyI6W119fQ0KDQoNCkkgbmVlZCAq RGVtbyogdG8gYmUgYWRkZWQgaW4gaGVhZGVycyBhbmQgcmVtb3ZlIGp3dFRva2VuIGZyb20gbWVz c2FnZS4gSSByZW1vdmVkIGl0LiBCdXQgd2hhdCBtZXRob2QgSSBjYW4gdXNlIGluIEFjdGl2ZU1R IHRvIHB1Ymxpc2ggaXQgb24gVG9waWMgRGVtbyBpbnN0ZWFkIG9mIG1lc3NhZ2Ugd2l0aCBqd3RU b2tlbiB2YWx1ZS4NCg0KSSBIb3BlIEkgYW0gYWJsZSB0byBleHBsYWluIHlvdSBiZXR0ZXIgOikN Cg0KUmVnYXJkcywNCkJoYXJhdCBHdXB0YQ0KDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQpGcm9tOiB0YmFpbjk4QGdtYWlsLmNvbSBbbWFpbHRvOnRiYWluOThAZ21haWwuY29tXSBPbiBC ZWhhbGYgT2YgVGltIEJhaW4NClNlbnQ6IGRlbiAxIGZlYnJ1YXJpIDIwMTggMTU6MDINClRvOiBB Y3RpdmVNUSBVc2VycyA8dXNlcnNAYWN0aXZlbXEuYXBhY2hlLm9yZz4NCkNjOiB1c2Vycy1vd25l ckBhY3RpdmVtcS5hcGFjaGUub3JnDQpTdWJqZWN0OiBSRTogQWN0aXZlTVEgY3VzdG9tIHBsdWdp bg0KDQpPaCwgYW5kIEkgbWlzc2VkIHlvdXIgc2Vjb25kIHF1ZXN0aW9uLiBJIHdvdWxkIGV4cGVj dCB0aGF0IHlvdSBjb3VsZCBhZGQNCmhlYWRlcnMgc2ltaWxhciB0byBob3cgdGhlIGNvZGUgeW91 IHBvc3RlZCByZW1vdmVkIHNvbWUuIERvZXMgeW91ciBxdWVzdGlvbg0KbWVhbiB0aGF0IHlvdSB0 cmllZCB0aGF0IGFuZCBpdCBkaWRuJ3Qgd29yaz8gSWYgc28sIGhvdyBkaWQgaXQgZmFpbD8NCg0K VGltDQoNCk9uIEZlYiAxLCAyMDE4IDY6NTkgQU0sICJUaW0gQmFpbiIgPHRiYWluQGFsdW1uaS5k dWtlLmVkdT4gd3JvdGU6DQoNCj4gQmhhcmF0LA0KPg0KPiBJcyB0aGlzIGluIDUueCwgb3IgZGlk IHlvdSBzd2l0Y2ggdG8gQXJ0ZW1pcz8NCj4NCj4gWW91ciBjb2RlIGlzIG9wZXJhdGluZyBvbiBh IG1lc3NhZ2UsIGJ1dCB3aGF0IGNhbGxlZCB5b3VyIGNvZGU/IFdlJ2QgbmVlZA0KPiBzb21lIGNv bnRleHQgb24gaG93IHlvdSBnb3QgdGhhdCBtZXNzYWdlIHRvIGtub3cgd2hhdCB5b3Ugc2hvdWxk IGRvIHdpdGggaXQNCj4gbmV4dC4NCj4NCj4gVGltDQo+DQo+IE9uIEZlYiAxLCAyMDE4IDU6MDEg QU0sICJHdXB0YSBCaGFyYXQiIDxiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbT4gd3JvdGU6DQo+DQo+ PiBIZWxsbyBUaW0sDQo+Pg0KPj4gSSBhbSBnZXR0aW5nIGZvbGxvd2luZyBtZXNzYWdlIGZyb20g Y2xpZW50IHVzaW5nIE1RVFQNCj4+DQo+PiB7DQo+PiAgICAgICAgICJoZWFkZXIiOiB7DQo+PiAg ICAgICAgICAgICAgICAgIm1lc3NhZ2VJZCI6ICJmY2JlZjU2NS0xOGVhLTQyOWEtODM2Zi03ZTI0 ZDliNTM3NDMiLA0KPj4gICAgICAgICAgICAgICAgICJqd3RUb2tlbiI6ICJleUowZVhBaU9pSktW MVFpTENKaGJHY2lPaUpTVQ0KPj4gekkxTmlKOS5leUoxYm1seGRXVmZibUZ0WlNJNkluZHBhVzVw YTNCMmRDSXNJbk4xWWlJNkluZHBhVzVwDQo+PiBhM0IyZENJc0ltdHBaQ0k2SW1NeE16RmhNV0kw TFdVMFlXVXROR1V3TkMxaE1HWXdMV1ZpTnpWaVlUaGoNCj4+IFlURmpNeUlzSWtWNGRHVnlibUZz VTNSaFptWlNaV1psY21WdVkyVWlPaUptWldOaU1EUTFOeTA1TW1OaA0KPj4gTFRSbU1EQXRPVEl3 TkMxbFpqQXdOVFl6WkRneFpHSWlMQ0pGZUhSbGNtNWhiRU4xYzNSdmJXVnlVbVZtDQo+PiBaWEps Ym1ObElqb2lZVGt4WldZek1UWXROVEpoTWkwMFpXRTBMVGszWkRNdE5ESTVNRGhoTUdOallqUTMN Cj4+IElpd2lRV1JCWTJOdmRXNTBJam9pYm5kcE4yRTBJaXdpUm5WdVkzUnBiMjVoYkZCbGNtMXBj M05wYjI1eg0KPj4gSWpvaU5Ea3hNREEzSWl3aVZYTmxjbEJsY20xcGMzTnBiMjV6SWpwYklqSTBO RFV4TVRRM05UQWlMQ0k1DQo+PiBPVElpWFN3aWFYTnpJam9pYUhSMGNITTZMeTltYlhOa1pYWmhk WFJvTG5OallXNXBZUzVqYjIwdklpd2kNCj4+IFlYVmtJam9pTW1NeE56azJOemt0TjJWak1TMDBN R1F4TFRreE5qQXROamszTmpFeU9UZzBaRGcxSWl3aQ0KPj4gWlhod0lqb3hOVEUxTmpjNU5qazRM Q0p1WW1ZaU9qRTFNVFUyTnpZd09UaDkuT2x0MXpYZURBMXNuZE8xDQo+PiBkNE0xeTA3dVNCemo3 QnhBNlBsdm1mOFRDTGZlUWhoMy1GeXgtd01JeUhoWFdTTkZnSTZ0UkRWTDBoZUoNCj4+IGZ0eEFU Y0diZV8wdTFuVnAwdnduclRPN1B1R3VLekVoV1lYRmxHczgzSWFzTjdoSWlkT3AxcVA5aFh6aQ0K Pj4gM2lfVktWTmEwd0lMVXN1Qk16YTdua1BkN3h1VGdDcWFjdUZEcEJab3d5dC0NCj4+IFYxUFV2 cXlqMkdkNTBBRGhfb3V1YXpPM2FrTl94SENGRU5KR0RYTHg5MUFCdUpiR0dpVXNQSTE2dURjeA0K Pj4gQXpEbWZlS2dud2JGNVpzOGR3M1RFX0xpaUJDY0lDTUt4ODFycDZMX1JUa1B1b2U1VW12LVky aWhmY25EDQo+PiB0MXRycDM2VHZwVXNTYS1UcXRjdlpudHdrREJjQ05LaG95RUI1Rm9rTXhhdEs1 eGducGpxcGoxa3dabUgNCj4+IHFmemZzSndGREJIWTlDZDczVVFwaWdtYXJMYzdSZ3lXTDNPX1Fa WHhEZVZQMXZ4TzRWMk5LMWltM0pjMA0KPj4gQmpMNHZzcmNJcXJXVW5fdjRwSkNNUU1GdFNaMmhr ZzhZd19WUm5ydkpUb0Y0DQo+PiB6OU9KYV95RE5fX2JJQzVfRXpsNEh2dko2alRya3Ixc3FRVEpL cTRpcHl4LTRwRzlOczVLUFplempnRXINCj4+IGFCTUVOY0FIekNjSXBJdkk1M0JtdTZhUG5lRmdF ak9BUWFKNURnenUtQ3I0ZmVzakVnSXlCVnQyYkhQRw0KPj4gYS16dEFBN3Bmb3AtM0JYc1Zqd1hQ c2JjXzctdFFhbkNyX2dBTkh0WlhRWVh2anhNMTRQRnVaQWpjLUdFDQo+PiBSZzlJa0Nva2dSZDN4 OHhZbE5XaFJ0aUNaNDdrZmxOTnd0MV9RVm8iLA0KPj4gICAgICAgICAgICAgICAgICJjb3JyZWxJ ZCI6ICIiLA0KPj4gICAgICAgICAgICAgICAgICJpbml0aWFsTWVzc2FnZWlkIjogImZjYmVmNTY1 LTE4ZWEtNDI5YS04MzZmLTdlMjRkDQo+PiA5YjUzNzQzIiwNCj4+ICAgICAgICAgICAgICAgICAi ZW52aXJvbm1lbnQiOiAic3Q1IiwNCj4+ICAgICAgICAgICAgICAgICAicHJvZHVjZXJVVENUaW1l c3RhbXAiOiAxNTE1Njc3MDk5MzM3LA0KPj4gICAgICAgICAgICAgICAgICJjb250cmFjdElkIjog IlNDQ08zODIyIiwNCj4+ICAgICAgICAgICAgICAgICAicHJvZHVjZXJWZXIiOiAiMS4wIiwNCj4+ ICAgICAgICAgICAgICAgICAibWVzc2FnZVR5cGUiOiAiU2VuZENoYXRNZXNzYWdlSW5Db252ZXJz YXRpb25NZXNzYWdlIiwNCj4+ICAgICAgICAgICAgICAgICAiYXBwSWQiOiAiZm1hIiwNCj4+ICAg ICAgICAgICAgICAgICAibWVzc2FnZVR5cGVWZXIiOiAiMS4wIiwNCj4+ICAgICAgICAgICAgICAg ICAicmVjZWl2ZXJzIjogW10NCj4+ICAgICAgICAgfSwNCj4+ICAgICAgICAgImJvZHkiOiB7DQo+ PiAgICAgICAgICAgICAgICAgImNvbnZlcnNhdGlvbklkIjogIjJiNTc1NDYyLTk3YmQtNGU5YS04 YWM0LTZmZWM3OTNjODM2YSIsDQo+PiAgICAgICAgICAgICAgICAgImNoYXRNZXNzYWdlSWQiOiAi MDk4ZWU0ZTctODk3Ni00YzIxLThmMGEtNTIxODczZmQ2YWM1IiwNCj4+ICAgICAgICAgICAgICAg ICAiY29udGVudCI6ICJncnRlIiwNCj4+ICAgICAgICAgICAgICAgICAiYXR0YWNobWVudHMiOiBb XQ0KPj4gICAgICAgICB9DQo+PiB9DQo+Pg0KPj4gSSBhbSB2YWxpZGF0aW5nIHRoZSBtZXNzYWdl IGJ5IHZhbGlkYXRpbmcgdGhlIGp3dCB0b2tlbi4gSSBkb27igJl0IHdhbnQNCj4+IGp3dFRva2Vu IGZpZWxkIGluIG1lc3NhZ2Ugb25jZSBJIGhhdmUgdmFsaWRhdGUgaXQgYW5kIHVzZWQgZm9sbG93 aW5nIHRvDQo+PiByZW1vdmUgaXQ6DQo+Pg0KPj4gZm9yIChKc29uTm9kZSBqc29uTm9kZSA6IGpz b25Ob2RlUm9vdCkgew0KPj4gICAgICAgICAgICBpZiAoanNvbk5vZGUgaW5zdGFuY2VvZiBPYmpl Y3ROb2RlKSB7DQo+PiAgICAgICAgICAgICAgICBPYmplY3ROb2RlIG8gPSAoT2JqZWN0Tm9kZSkg anNvbk5vZGU7DQo+PiAgICAgICAgICAgICAgICBvLnJlbW92ZSgiand0VG9rZW4iKTsNCj4+DQo+ PiAgICAgICAgICAgIH0NCj4+ICAgICAgICB9DQo+Pg0KPj4gQnV0IGhvdyB0byBwdWJsaXNoIGEg bWVzc2FnZSBvbiB0b3BpYyBvbmNlIEkgaGF2ZSBkb25lIHRoZSBmb2xsb3dpbmcNCj4+IGNoZWNr cyBvbiBpdD8gV2hhdCBtZXRob2QgSSBjYW4gdXNlIGhlcmU/DQo+Pg0KPj4gQWxzbyBJIHdpc2gg dG8gYWRkIGNlcnRhaW4gYXR0cmlidXRlcyBpbiB0aGUgbWVzc2FnZSBoZWFkZXIgYW5kIHRoZW4N Cj4+IHB1Ymxpc2ggb24gdGhlIHRvcGljIGhvdyBJIGNhbiBkbyB0aGF0IGFsc28/DQo+Pg0KPj4g VGhhbmsgWW91IGluIEFkdmFuY2UNCj4+DQo+PiBSZWdhcmRzLA0KPj4gQmhhcmF0IEd1cHRhDQo+ Pg0KPj4NCj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+PiBGcm9tOiB0YmFpbjk4QGdt YWlsLmNvbSBbbWFpbHRvOnRiYWluOThAZ21haWwuY29tXSBPbiBCZWhhbGYgT2YgVGltIEJhaW4N Cj4+IFNlbnQ6IGRlbiAyIGphbnVhcmkgMjAxOCAwNjoyNw0KPj4gVG86IEFjdGl2ZU1RIFVzZXJz IDx1c2Vyc0BhY3RpdmVtcS5hcGFjaGUub3JnPg0KPj4gQ2M6IHVzZXJzLW93bmVyQGFjdGl2ZW1x LmFwYWNoZS5vcmcNCj4+IFN1YmplY3Q6IFJlOiBBY3RpdmVNUSBjdXN0b20gcGx1Z2luDQo+Pg0K Pj4gSSBzcGVudCBhIGxpdHRsZSB0aW1lIHRoaXMgZXZlbmluZyBsb29raW5nIHRocm91Z2ggdGhl IEFjdGl2ZU1RIDUueCBjb2RlDQo+PiBhbmQgZGlkbid0IGZpbmQgYW4gb2J2aW91cyB3YXkgdG8g aG9vayBpbnRvIHRoZSBNUVRULXNwZWNpZmljIHBpZWNlcywgc28NCj4+IHN3aXRjaGluZyB0byBB cnRlbWlzIG1heSBiZSB5b3VyIGJlc3QgYmV0Lg0KPj4NCj4+IFRpbQ0KPj4NCj4+IE9uIFdlZCwg RGVjIDEzLCAyMDE3IGF0IDc6MDIgQU0sIFRpbSBCYWluIDx0YmFpbkBhbHVtbmkuZHVrZS5lZHU+ IHdyb3RlOg0KPj4NCj4+ID4gQmhhcmF0LA0KPj4gPg0KPj4gPiBJIGhhZG4ndCBjYXVnaHQgdGhh dCB0aGlzIHF1ZXN0aW9uIHdhcyBhYm91dCBtYWtpbmcgdGhlIGNvbm5lY3Rpb24NCj4+IHJhdGhl cg0KPj4gPiB2cy4gdGhlIGZpcnN0IHF1ZXN0aW9uIGFib3V0IHNlbmRpbmcgbWVzc2FnZXMgYWNy b3NzIGl0OyB0aGFua3MgZm9yDQo+PiBoZWxwaW5nDQo+PiA+IG1lIHVuZGVyc3RhbmQgeW91ciBx dWVzdGlvbi4NCj4+ID4NCj4+ID4gQXMgZmFyIGFzIEkga25vdywgdGhlIGludGVyY2VwdGlvbiBj YXBhYmlsaXRpZXMgb2YgNS54IGFwcGx5IG9ubHkgdG8gdGhlDQo+PiA+IGNvcmUgYnJva2VyIHVz aW5nIHRoZSBpbnRlcmZhY2UgeW91IHVzZWQgaW4gdGhlIGVhcmxpZXIgbWVzc2FnZXMgaW4gdGhp cw0KPj4gPiB0aHJlYWQsIGJ1dCBub3QgdG8gdGhlIGNvZGUgdGhhdCB0cmFuc2xhdGVzIG5vbi1P cGVuV2lyZSBwcm90b2NvbHMgc3VjaA0KPj4gYXMNCj4+ID4gTVFUVCBpbnRvIE9wZW5XaXJlLiBJ J2xsIG5lZWQgdG8gc3BlbmQgc29tZSB0aW1lIGRpZ2dpbmcgdGhyb3VnaCB0aGUNCj4+IGNvZGUN Cj4+ID4gdG8gbWFrZSBzdXJlIHRoZXJlIGlzbid0IGFuIE1RVFQgcGx1Z2luIGNhcGFiaWxpdHkg SSBkb24ndCBrbm93IGFib3V0LA0KPj4gYW5kDQo+PiA+IEkgcHJvYmFibHkgd29uJ3QgZ2V0IGEg Y2hhbmNlIHRvIGRvIHRoYXQgdW50aWwgdGhlIHdlZWtlbmQuIEJ1dCB1bmxlc3MgSQ0KPj4gPiBm aW5kIHNvbWV0aGluZyB1bmV4cGVjdGVkIHdoZW4gSSBkbyB0aGF0IGRpZ2dpbmcsIHdoYXQgeW91 IHdhbnQgbWF5IG5vdA0KPj4gYmUNCj4+ID4gcG9zc2libGUgd2l0aCBBY3RpdmVNUSA1LnguIElm IGFzIHlvdSBzYXkgQXJ0ZW1pcyBhbGxvd3MgeW91IHRvIGRvDQo+PiA+IGV2ZXJ5dGhpbmcgeW91 J3JlIHRyeWluZyB0byBkbywgdGhlbiBzd2l0Y2hpbmcgdG8gaXQgbWF5IGJlIGEgZ29vZA0KPj4g b3B0aW9uLg0KPj4gPg0KPj4gPiBUaW0NCj4+ID4NCj4+ID4gT24gRGVjIDEyLCAyMDE3IDg6MDcg QU0sICJHdXB0YSBCaGFyYXQiIDxiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbT4NCj4+IHdyb3RlOg0K Pj4gPg0KPj4gPj4gWWVzIHRoZSBxdWVzdGlvbiBJIGFza2VkIGhlcmUgaXMgbm90IGFuc3dlcmVk IGVhcmxpZXIuIEluIHByZXZpb3VzDQo+PiA+PiB0aHJlYWRzL21haWwgZm9jdXMgd2FzIG9uIHdo ZW4gY2xpZW50IHdhcyBwdWJsaXNoaW5nIGEgbWVzc2FnZSBvbg0KPj4gdG9waWMgdGhlDQo+PiA+ PiBhY3RpdmVtcS5zZW5kIG1ldGhvZCB3YXMgY2FsbGVkIHRvIGludGVyY2VwdCB0aGUgbWVzc2Fn ZSBiZWZvcmUgaXQNCj4+IGFjdHVhbGx5DQo+PiA+PiBwdWJsaXNoZWQgb24gdG9waWMuDQo+PiA+ Pg0KPj4gPj4gSGVyZSBJIGFtIG1ham9ybHkgZm9jdXNpbmcgb24gaW50ZXJjZXB0aW5nIG1xdHQg Y29ubmVjdGlvbnMsIHdoaWNoDQo+PiBtZWFucw0KPj4gPj4gaW50ZXJjZXB0aW5nIHRoZSBjbGll bnQgcmVxdWVzdCB0byBhY3RpdmVtcSBhbmQgQ2FsbCBteSBwbHVnaW4gdGhlcmUuDQo+PiBTbw0K Pj4gPj4gd2hpY2ggbWV0aG9kIG9mIGFjdGl2ZW1xIGNhbiBiZSB1c2VkIGhlcmU/DQo+PiA+Pg0K Pj4gPj4gQXMgSSB3ZW50IHRocnUgbWFueSBzb2x1dGlvbnMgb3ZlciBpbnRlcm5ldCBhbmQgc2Vl IEFydGVtaXMgYXMgYW4NCj4+IG9wdGlvbi4NCj4+ID4+DQo+PiA+PiBJIGhvcGUgSSBhbSBhYmxl IHRvIHB1dCBteSBwb2ludCBjbGVhciBub3cuIDopIHBsZWFzZSBsZXQgbWUga25vdyBpZg0KPj4g bW9yZQ0KPj4gPj4gaW5mbyBpcyBuZWVkZWQgZnJvbSBteSBlbmQuDQo+PiA+Pg0KPj4gPj4NCj4+ ID4+DQo+PiA+PiBTZW50IGZyb20gbXkgaVBob25lDQo+PiA+Pg0KPj4gPj4gT24gMTIgRGVjIDIw MTcsIGF0IDE1OjAwLCBUaW0gQmFpbiA8dGJhaW5AYWx1bW5pLmR1a2UuZWR1PG1haWx0bzoNCj4+ ID4+IHRiYWluQGFsdW1uaS5kdWtlLmVkdT4+IHdyb3RlOg0KPj4gPj4NCj4+ID4+IElzIHRoZXJl IHNvbWUgYXNwZWN0IG9mIHlvdXIgcXVlc3Rpb24gdGhhdCdzIG5vdCBhbnN3ZXJlZCBieSB0aGUg Zmlyc3QNCj4+ID4+IDEyKCEpIGVtYWlscyBpbiB0aGUgdGhyZWFkPyBJJ20gbm90IGNsZWFyIHdo eSB5b3UncmUgYXNraW5nIHdoYXQNCj4+IGFwcGVhcnMNCj4+ID4+IHRvDQo+PiA+PiBiZSB0aGUg c2FtZSBxdWVzdGlvbiBhZ2Fpbi4gSWYgdGhlcmUncyBzb21lIG5ldyBhc3BlY3Qgb2YgdGhlIHF1 ZXN0aW9uDQo+PiBvcg0KPj4gPj4gc29tZXRoaW5nIHRoYXQgd2Fzbid0IHByZXZpb3VzbHkgYW5z d2VyZWQsIHBsZWFzZSBoaWdobGlnaHQgd2hhdCBpdCBpcy4NCj4+ID4+DQo+PiA+PiBBbmQgbm8s IEkgZG9uJ3QgYmVsaWV2ZSB0aGF0IEFydGVtaXMgaXMgcmVxdWlyZWQgdG8gZG8gd2hhdCB5b3Un cmUNCj4+IHRyeWluZw0KPj4gPj4gdG8gZG8uIEl0IG1pZ2h0IGJlIGVxdWFsbHkgcG9zc2libGUg dG8gZG8gaW4gQXJ0ZW1pcyBjb21wYXJlZCB0byBkb2luZw0KPj4gaW4NCj4+ID4+IDUueCAoSSBk b24ndCBrbm93IEFydGVtaXMgd2VsbCBlbm91Z2ggdG8gY29tbWVudCBvbiB3aGV0aGVyIHRoaXMg Y2FuIGJlDQo+PiA+PiBkb25lIGluIEFydGVtaXMpLCBidXQgeW91IGRlZmluaXRlbHkgZG9uJ3Qg ImhhdmUgdG8gdXNlIEFydGVtaXMgaGVyZSB0bw0KPj4gPj4gYWNoaWV2ZSB0aGlzLiINCj4+ID4+ DQo+PiA+PiBUaW0NCj4+ID4+DQo+PiA+PiBPbiBEZWMgMTIsIDIwMTcgMTozMSBBTSwgIkd1cHRh IEJoYXJhdCIgPGJoYXJhdC5ndXB0YUBzY2FuaWEuY29tPG1haWx0DQo+PiBvOg0KPj4gPj4gYmhh cmF0Lmd1cHRhQHNjYW5pYS5jb20+PiB3cm90ZToNCj4+ID4+DQo+PiA+PiBoZWxsbyBhZ2FpbiwN Cj4+ID4+DQo+PiA+PiBJIGFtIGFza2luZyBteSBxdWVzdGlvbiBoZXJlIGFnYWluIGlmIHlvdSBj YW4gcG9zc2libHkgaGVscCBtZSB3aXRoIGENCj4+ID4+IG1ldGhvZC4NCj4+ID4+DQo+PiA+PiAx LiBOZWVkIHRvIGludGVyY2VwdCB0aGUgSW5jb21pbmcgY29ubmVjdGlvbnMgZnJvbSBNUVRUIGNs aWVudHMuDQo+PiA+PiBVc2VyIGlzIGNvbm5lY3RpbmcgdG8gYWN0aXZlbXEgYnJva2VyIGJ5IGhp dHRpbmcgb24gdXJsIGFuZCBzZW5kaW5nIGENCj4+ID4+IFRPS0VOIFsoaG9zdG5hbWU6cG9ydCkg KyB0b2tlbl0NCj4+ID4+DQo+PiA+PiBIb3cgY2FuIHdlIGludGVyY2VwdCB0aGUgY29ubmVjdGlv bnMgYW5kIHZhbGlkYXRlIHRoZSB0b2tlbiBzZW50IGJ5DQo+PiBtcXR0DQo+PiA+PiBjbGllbnQ/ DQo+PiA+Pg0KPj4gPj4gSSBoYXZlIG15IG93biBjdXN0b20gcGx1Z2luIHRoYXQgd2lsbCB2YWxp ZGF0ZSB0aGUgdG9rZW4uIEp1c3QgTmVlZCB0bw0KPj4gPj4ga25vdyBtZXRob2Qgb24gd2hpY2gg d2UgY2FuIGNhbGwgdGhhdCBQbHVnaW4uDQo+PiA+Pg0KPj4gPj4gQWxzbyBkbyB3ZSBoYXZlIHRv IHVzZSBBcnRlbWlzIGhlcmUgdG8gYWNoaWV2ZSB0aGlzPw0KPj4gPj4NCj4+ID4+IFRoYW5rcyBJ biBBZHZhbmNlDQo+PiA+Pg0KPj4gPj4gUmVnYXJkcywNCj4+ID4+IEJoYXJhdCBHdXB0YQ0KPj4g Pj4gRGV2ZWxvcG1lbnQgJiBTdXBwb3J0IHwgUGxhdGZvcm0gVGVjaG5pY2lhbiwgSVhDQiB8IFNj YW5pYSBJVA0KPj4gPj4gTW9iaWxlOiArNDY3MDA4NjkwMDcsICs5MS05NzE4NDgzODAyDQo+PiA+ PiBiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbTxtYWlsdG86YmhhcmF0Lmd1cHRhQHNjYW5pYS5jb20+ DQo+PiA+Pg0KPj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+ID4+IEZyb206IHRi YWluOThAZ21haWwuY29tPG1haWx0bzp0YmFpbjk4QGdtYWlsLmNvbT4gW21haWx0bzoNCj4+ID4+ IHRiYWluOThAZ21haWwuY29tXSBPbiBCZWhhbGYgT2YgVGltIEJhaW4NCj4+ID4+IFNlbnQ6IFR1 ZXNkYXksIERlY2VtYmVyIDUsIDIwMTcgNzoyOSBQTQ0KPj4gPj4gVG86IEFjdGl2ZU1RIFVzZXJz IDx1c2Vyc0BhY3RpdmVtcS5hcGFjaGUub3JnPG1haWx0bzoNCj4+ID4+IHVzZXJzQGFjdGl2ZW1x LmFwYWNoZS5vcmc+Pg0KPj4gPj4gQ2M6IHVzZXJzLW93bmVyQGFjdGl2ZW1xLmFwYWNoZS5vcmc8 bWFpbHRvOnVzZXJzLW93bmVyQGFjdGl2ZW1xLg0KPj4gPj4gYXBhY2hlLm9yZz4NCj4+ID4+IFN1 YmplY3Q6IFJFOiBBY3RpdmVNUSBjdXN0b20gcGx1Z2luDQo+PiA+Pg0KPj4gPj4gSSdkIHN1Z2dl c3QgdGhhdCB5b3Ugc3RvcmUgeW91ciBjYWNoZSBvZiBrbm93biBjcmVkZW50aWFscyBpbiB5b3Vy DQo+PiBwbHVnaW4uDQo+PiA+PiBJJ20gbm90IHN1cmUgdGhhdCB5b3UnZCBoYXZlIGFjY2VzcyB0 byB0aGUgd2ViIHNlc3Npb24gZnJvbSBhIHBsdWdpbiwNCj4+ID4+IGJlY2F1c2UgdGhhdCdzIE1R VFQtc3BlY2lmaWMsIHNvIEkgdGhpbmsgeW91ciBiZXN0IGJldCB3b3VsZCBiZSB0bw0KPj4gc3Rv cmUNCj4+ID4+IGl0DQo+PiA+PiBpbiBhIE1hcCAoYmV0dGVyOiBhIEd1YXZhIGNhY2hlLCBzbyB5 b3UgZ2V0IGZyZWUgYWdlLW9mZiBiZWhhdmlvcikNCj4+IHdpdGhpbg0KPj4gPj4geW91ciBwbHVn aW4uDQo+PiA+Pg0KPj4gPj4gVGltDQo+PiA+Pg0KPj4gPj4gT24gRGVjIDUsIDIwMTcgMzo1MCBB TSwgIkd1cHRhIEJoYXJhdCIgPGJoYXJhdC5ndXB0YUBzY2FuaWEuY29tPG1haWx0DQo+PiBvOg0K Pj4gPj4gYmhhcmF0Lmd1cHRhQHNjYW5pYS5jb20+PiB3cm90ZToNCj4+ID4+DQo+PiA+PiBIaSBU aW0sDQo+PiA+Pg0KPj4gPj4gSSBhbSBoYXZpbmcgYSBzY2VuYXJpbyBoZXJlLiBVc2luZyBjdXN0 b20gcGx1Z2luIEkgYW0gdmFsaWRhdGluZyBteSBKV1QNCj4+ID4+IHRva2VucyBhbmQgZmV0Y2hp bmcgdGhlIGNsYWltcyBmcm9tIGl0Lg0KPj4gPj4NCj4+ID4+IENsYWltczoNCj4+ID4+DQo+PiA+ PiB7DQo+PiA+PiAgInVuaXF1ZV9uYW1lIjogImd1YmhwaSIsDQo+PiA+PiAgInN1YiI6ICJndWJo cGkiLA0KPj4gPj4gICJraWQiOiAiMWQ4ODRiN2EtODhjZS00MGU3LTliYjgtZjVlOGY2YjU4Mzdk IiwNCj4+ID4+ICAiRXh0ZXJuYWxTdGFmZlJlZmVyZW5jZSI6ICIwYTgzOTVkNy01MGI1LTRjZDgt YWM2OC02MjEzZGE5NTVmMWMiLA0KPj4gPj4gICJFeHRlcm5hbEN1c3RvbWVyUmVmZXJlbmNlIjog ImFjYWI1M2U4LWExMzQtNGJiOC1hNjZkLTNlODA0MzBlYzRkMSIsDQo+PiA+PiAgIkFkQWNjb3Vu dCI6ICJiZ3V2dnciLA0KPj4gPj4gICJGdW5jdGlvbmFsUGVybWlzc2lvbnMiOiAiNDkwODc5IiwN Cj4+ID4+ICAiVXNlclBlcm1pc3Npb25zIjogWw0KPj4gPj4gICAgIjI0ODI1MDM2NzggPCgyNDgp JTIwMjUwLTM2Nzg+IDwoMjQ4KSUyMDI1MC0zNjc4PiIsDQo+PiA+PiAgICAiMTAwNiINCj4+ID4+ ICBdLA0KPj4gPj4gICJpc3MiOiAiaHR0cHM6Ly94eXovIiwNCj4+ID4+ICAiYXVkIjogIjU4Yjk5 YjM3LWRiMWM3OGQ3ZmVmNSIsDQo+PiA+PiAgImV4cCI6IDE1MTAyNDAwNDcsDQo+PiA+PiAgIm5i ZiI6IDE1MTAyMzY0NDcNCj4+ID4+IH0NCj4+ID4+DQo+PiA+PiBGcm9tIHRoaXMgSSBuZWVkIHRv IGZldGNoICJBZEFjY291bnQiOiAiYmd1dnZ3IiwgYW5kIHN0b3JlIGl0DQo+PiA+PiBzb21ld2hl cmUocGxlYXNlIHN1Z2dlc3QgbWUtLSBjb250ZXh0IG9yIHNlc3Npb24pIGFuZCB3aGVuIG5leHQg dGltZQ0KPj4gdXNlcg0KPj4gPj4gc2VuZHMgbWUgbWVzc2FnZSBvbiBhY3RpdmVtcSB1c2luZyBt cXR0IG9yIHdlYiBzb2NrZXQgSSBuZWVkIHRvIGNoZWNrDQo+PiB0aGUNCj4+ID4+IG1lc3NhZ2Ug aGVhZGVyIHdpdGggdGhlIHVzZXJzIHN0b3JlZCBpbiBjb250ZXh0c2Vzc2lvbiBvciBmcm9tIHNv bWUNCj4+ID4+IG9iamVjdC4NCj4+ID4+IElmIHVzZXIgaXMgcHJlc2VudCB0aGVuIHdlIHZhbGlk YXRlIGVsc2Ugd2UgZG9u4oCZdC4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4gUmVnYXJkcywNCj4+ID4+ IEJoYXJhdCBHdXB0YQ0KPj4gPj4gRGV2ZWxvcG1lbnQgJiBTdXBwb3J0IHwgUGxhdGZvcm0gVGVj aG5pY2lhbiwgSVhDQiB8IFNjYW5pYSBJVA0KPj4gPj4gTW9iaWxlOiArNDY3MDA4NjkwMDcsICs5 MS05NzE4NDgzODAyDQo+PiA+PiBiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbTxtYWlsdG86YmhhcmF0 Lmd1cHRhQHNjYW5pYS5jb20+DQo+PiA+Pg0KPj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4+ID4+IEZyb206IHRiYWluOThAZ21haWwuY29tPG1haWx0bzp0YmFpbjk4QGdtYWlsLmNv bT4gW21haWx0bzoNCj4+ID4+IHRiYWluOThAZ21haWwuY29tXSBPbiBCZWhhbGYgT2YgVGltIEJh aW4NCj4+ID4+IFNlbnQ6IGRlbiAyOSBub3ZlbWJlciAyMDE3IDA0OjIwDQo+PiA+PiBUbzogQWN0 aXZlTVEgVXNlcnMgPHVzZXJzQGFjdGl2ZW1xLmFwYWNoZS5vcmc8bWFpbHRvOg0KPj4gPj4gdXNl cnNAYWN0aXZlbXEuYXBhY2hlLm9yZz4+DQo+PiA+PiBDYzogdXNlcnMtb3duZXJAYWN0aXZlbXEu YXBhY2hlLm9yZzxtYWlsdG86dXNlcnMtb3duZXJAYWN0aXZlbXEuDQo+PiA+PiBhcGFjaGUub3Jn Pg0KPj4gPj4gU3ViamVjdDogUkU6IEFjdGl2ZU1RIGN1c3RvbSBwbHVnaW4NCj4+ID4+DQo+PiA+ PiBPbiBOb3YgMjgsIDIwMTcgODozNyBBTSwgIkd1cHRhIEJoYXJhdCIgPGJoYXJhdC5ndXB0YUBz Y2FuaWEuY29tPG1haWx0DQo+PiBvOg0KPj4gPj4gYmhhcmF0Lmd1cHRhQHNjYW5pYS5jb20+PiB3 cm90ZToNCj4+ID4+DQo+PiA+PiBIZWxsbyBUaW0sDQo+PiA+Pg0KPj4gPj4gVGhhbmsgeW91IGZv ciB5b3VyIGhlbHAuIDopDQo+PiA+Pg0KPj4gPj4gSSBoYXZlIHVzZWQgYmVsb3cgbWV0aG9kIHRv IGZldGNoIHRoYXQgdGV4dCBmcm9tIG1lc3NhZ2Ugd2hlbiBjbGllbnQNCj4+ID4+IHB1Ymxpc2gg b24gdG9waWMgYW5kIGl0IHdvcmtzLg0KPj4gPj4NCj4+ID4+IHB1YmxpYyB2b2lkIHNlbmQoUHJv ZHVjZXJCcm9rZXJFeGNoYW5nZSBwcm9kdWNlckV4Y2hhbmdlLCBNZXNzYWdlDQo+PiA+PiBtZXNz YWdlU2VuZCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQo+PiA+PiBieXRlW10gbXNnID0gKChBY3RpdmVN UU1lc3NhZ2UpIG1lc3NhZ2VTZW5kKS5nZXRDb250ZW50KCkuZGF0YTsNCj4+ID4+DQo+PiA+Pg0K Pj4gPj4gKChBY3RpdmVNUVRleHRNZXNzYWdlKW1lc3NhZ2VTZW5kKS5nZXRUZXh0KCkNCj4+ID4+ IEl0IHJldHVybnMgdGhlIHRleHQgZnJvbSB3ZWIgY29uc29sZSBvbmx5Lg0KPj4gPj4NCj4+ID4+ DQo+PiA+PiBSZWFsbHkgYXBwcmVjaWF0ZSB5b3VyIGhlbHAgaGVyZS4gOikNCj4+ID4+DQo+PiA+ Pg0KPj4gPj4NCj4+ID4+IEdyZWF0LCBJJ20gZ2xhZCBJJ3ZlIGJlZW4gYWJsZSB0byBoZWxwLg0K Pj4gPj4NCj4+ID4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPj4gPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiA+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+ID4+IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQo+PiA+Pg0KPj4gPj4gQXBhcnQgZnJvbSB0aGlzIEkgaGF2ZSBhIHNpdHVh dGlvbiBoZXJlIHRoYXQgd2hlbiBJIHRyeSB0byBleGVjdXRlDQo+PiBiZWxvdw0KPj4gPj4gY29k ZToNCj4+ID4+IDEuIERlc3RpbmF0aW9uIGRlc3QgPSBzZXNzaW9uLmNyZWF0ZVF1ZXVlKCJKV1Rf UEFZTE9BRCIpOyAtLS0tIGl0IGlzDQo+PiA+PiBjcmVhdGluZyBhIHF1ZXVlDQo+PiA+PiAyLiBU ZXh0TWVzc2FnZSBjbGFpbXMgPSBzZXNzaW9uLmNyZWF0ZVRleHRNZXNzYWdlKHBheWxvYWQpOyAt LS0NCj4+ID4+IGNvbnZlcnRpbmcNCj4+ID4+IHRoZSBzdHJpbmcgdG8gbWVzc2FnZSB0byBzZW5k IGl0IG9uIGFib3ZlIG1hZGUgcXVldWUNCj4+ID4+IDMuIHByb2R1Y2VyLnNlbmQoZGVzdCwgY2xh aW1zKTsgLS0tIHNlbmQgdGhlIG1lc3NhZ2Ugb24NCj4+ID4+IEFjdGl2ZU1RLkFkdmlzb3J5LlBy b2R1Y2VyLlF1ZXVlLkpXVF9QQVlMT0FEIGluc3RlYWQgb2YgcXVldWUNCj4+ID4+IEpXVF9QQVlM T0FEDQo+PiA+PiB3aHk/DQo+PiA+Pg0KPj4gPj4NCj4+ID4+IFdoYXQgbWFrZXMgeW91IHRoaW5r IHRoYXQgdGhpcyBtZXNzYWdlIG9uIGFuIGFkdmlzb3J5IHRvcGljIHdhcyB5b3VyDQo+PiA+PiBt ZXNzYWdlIGluc3RlYWQgb2YgYSBzdGFuZGFyZCBhZHZpc29yeSBtZXNzYWdlIHRoYXQncyBzZW50 IGFueXRpbWUgYQ0KPj4gPj4gbm9uLWFub255bW91cyBwcm9kdWNlciBzZW5kcyBhIG1lc3NhZ2U/ IFdoYXQgbWFrZXMgeW91IHRoaW5rIHRoYXQgdGhvcw0KPj4gPj4gbWVzc2FnZSB3YXMgc2VudCBp bnN0ZWFkIG9mIHRoZSBtZXNzYWdlIHlvdSBzZW50IHRvIHlvdXIgcXVldWUsIHJhdGhlcg0KPj4g Pj4gdGhhbg0KPj4gPj4gc2VudCAqaW4gYWRkaXRpb24gdG8qIHRoZSBtZXNzYWdlIG9uIHlvdXIg cXVldWU/IENhbiB5b3Ugc2hhcmUNCj4+ID4+IGJlZm9yZS1hbmQtYWZ0ZXIgc2NyZWVuc2hvdHMg b2YgeW91ciBxdWV1ZSdzIHJvdyBvbiB0aGUgUXVldWVzIHBhZ2Ugb2YNCj4+ID4+IHRoZQ0KPj4g Pj4gd2ViIGNvbnNvbGU/IEFuZCB3ZXJlIHRoZXJlIGFueSB3YXJuaW5ncyBvciBlcnJvcnMgbG9n Z2VkIGluIHRoZQ0KPj4gYnJva2VyJ3MNCj4+ID4+IGxvZ3Mgd2hlbiB0aGlzIGhhcHBlbmVkPw0K Pj4gPj4NCj4+ID4+IDQuIEJlZm9yZSBleGVjdXRpbmcgcHJvZHVjZXIuc2VuZChkZXN0LCBjbGFp bXMpOyAtLS0tLSBpdCBpcyBnb2luZyBvbg0KPj4gPj4gYnl0ZVtdIG1zZyA9ICgoQWN0aXZlTVFN ZXNzYWdlKSBtZXNzYWdlU2VuZCkuZ2V0Q29udGVudCgpLmRhdGEgYW5kDQo+PiA+PiByZXR1cm5p bmcgbnVsbCBhcyBpdCBpcyBhZ2FpbiBjaGVja2luZyBmb3IgQ29udGVudCBhbmQgZGF0YS4gU28g bXkgcXVlcw0KPj4gPj4gaXMNCj4+ID4+IHdoeSBpdCBpcyBnb2luZyBiYWNrIGFnYWluIG9uIGZp cnN0IGxpbmU/IFdoeSBpdCBpcyBub3Qgc2ltcGx5IHB1dHRpbmcNCj4+ID4+IHRoZQ0KPj4gPj4g ZGF0YSBvbiBxdWV1ZT8NCj4+ID4+DQo+PiA+Pg0KPj4gPj4gSSBkaWRuJ3QgdW5kZXJzdGFuZCB3 aGF0IHlvdSBtZWFudCBieSAiaXQgaXMgZ29pbmcgYmFjayBhZ2FpbiBvbiBmaXJzdA0KPj4gPj4g bGluZS4iIEFyZSB5b3Ugc2F5aW5nIHRoYXQgdGhlIGJyb2tlciBpcyBwdXR0aW5nIHRoZSBvcmln aW5hbCBtZXNzYWdlDQo+PiA+PiBvbnRvDQo+PiA+PiB5b3VyIHRvcGljPyBJZiBzbywgdGhhdCdz IGJlY2F1c2UgYnkgY2FsbGluZyBzdXBlci5zZW5kKCksIHlvdSdyZQ0KPj4gPj4gYWxsb3dpbmcN Cj4+ID4+IHRoZSBwdWJsaXNoaW5nIG9mIHRoZSBvcmlnaW5hbCBtZXNzYWdlIHRvIHRoZSBvcmln aW5hbCB0b3BpYyB0bw0KPj4gPj4gY29udGludWUuIEkNCj4+ID4+IGFkdmlzZWQgeW91IHRvIGRv IHRoYXQgYmVjYXVzZSBJIGRpZG4ndCByZWFsaXplIHRoYXQgeW91IHdhbnRlZCB0bw0KPj4gPj4g dHJhbnNmb3JtIHRoZSBtZXNzYWdlIGFuZCBwdWJsaXNoIGl0IHRvIGEgZGlmZmVyZW50IGRlc3Rp bmF0aW9uLCBidXQNCj4+ID4+IHNpbmNlDQo+PiA+PiBpdCBzZWVtcyBsaWtlIHlvdSBkbywgSSB0 aGluayB5b3UgZG9uJ3Qgd2FudCB0byBjYWxsIHN1cGVyLnNlbmQoKSBhZnRlcg0KPj4gPj4gYWxs Lg0KPj4gPj4NCj4+ID4+IElmIHRoYXQncyBub3Qgd2hhdCB5b3UgbWVhbnQsIHRoZW4gcGxlYXNl IGhlbHAgbWUgdG8gYmV0dGVyIHVuZGVyc3RhbmQNCj4+ID4+IHlvdXINCj4+ID4+IHF1ZXN0aW9u Lg0KPj4gPj4NCj4+ID4+IEBPdmVycmlkZQ0KPj4gPj4gICAgICAgIHB1YmxpYyB2b2lkIHNlbmQo UHJvZHVjZXJCcm9rZXJFeGNoYW5nZSBwcm9kdWNlckV4Y2hhbmdlLA0KPj4gTWVzc2FnZQ0KPj4g Pj4gbWVzc2FnZVNlbmQpIHRocm93cyBFeGNlcHRpb24gew0KPj4gPj4gaWYobWVzc2FnZVNlbmQg IT0gbnVsbCkNCj4+ID4+IHsNCj4+ID4+ICAgICAgICBpZihtZXNzYWdlU2VuZC5nZXRDb250ZW50 KCkgIT0gbnVsbCkNCj4+ID4+IHsNCj4+ID4+ICAgICAgICA9ICAgICAgICAgICAgICAgYnl0ZVtd IG1zZyA9ICgoQWN0aXZlTVFNZXNzYWdlKQ0KPj4gPj4gbWVzc2FnZVNlbmQpLmdldENvbnRlbnQo KS5kYXRhOw0KPj4gPj4NCj4+ID4+ICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbmV3 IFN0cmluZyhtc2cpOw0KPj4gPj4gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIm1lc3NhZ2VC b2R5Ojo6Ojo6Ojo6Ojo6Ojo6OiAgICAgICAgICAgICAgIg0KPj4gPj4gKw0KPj4gPj4gbWVzc2Fn ZSk7DQo+PiA+Pg0KPj4gPj4gICAgICAgICAgICAgICAgRGVjb2RlZEpXVCBqd3QgPSBKV1QuZGVj b2RlKG1lc3NhZ2UpOw0KPj4gPj4gICAgICAgICAgICAgICAgYnl0ZVtdIGNvbnRlbnRCeXRlcyA9 IFN0cmluZy5mb3JtYXQoIiVzLiVzIiwNCj4+ID4+IGp3dC5nZXRIZWFkZXIoKSwgand0LmdldFBh eWxvYWQoKSkNCj4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0Qnl0ZXMo U3RhbmRhcmRDaGFyc2V0cy5VVEZfOCk7DQo+PiA+PiAgICAgICAgICAgICAgICBieXRlW10gc2ln bmF0dXJlQnl0ZXMgPSBCYXNlNjQuZGVjb2RlQmFzZTY0KGp3dC4NCj4+ID4+IGdldFNpZ25hdHVy ZSgpKTsNCj4+ID4+ICAgICAgICAgICAgICAgIFN0cmluZyBwdWJsaWNLZXlQRU0gPSAiLS0tLS1C RUdJTiBQVUJMSUMgS0VZLS0tLS1cbiINCj4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArICJwbGVhc2UgZW50ZXIgeW91ciBrZXkiDQo+PiA+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKyAiLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tIjsNCj4+ID4+DQo+PiA+PiAg ICAgICAgICAgICAgICBSc2FLZXlVdGlsIHJzYUtleVV0aWwgPSBuZXcgUnNhS2V5VXRpbCgpOw0K Pj4gPj4gICAgICAgICAgICAgICAgUHVibGljS2V5IHBrID0gcnNhS2V5VXRpbC5mcm9tUGVtRW5j b2RlZChwdWJsaWNLZXlQRU0pOw0KPj4gPj4NCj4+ID4+ICAgICAgICAgICAgICAgIFNlY3VyaXR5 LmFkZFByb3ZpZGVyKG5ldyBCb3VuY3lDYXN0bGVQcm92aWRlcigpKTsNCj4+ID4+ICAgICAgICAg ICAgICAgIFNpZ25hdHVyZSBzaWduYXR1cmVJbnN0YW5jZSA9DQo+PiA+PiBTaWduYXR1cmUuZ2V0 SW5zdGFuY2UoIlNIQTI1NndpdGhSU0EiLA0KPj4gPj4gIkJDIik7DQo+PiA+PiAgICAgICAgICAg ICAgICBzaWduYXR1cmVJbnN0YW5jZS5pbml0VmVyaWZ5KHBrKTsNCj4+ID4+ICAgICAgICAgICAg ICAgIHNpZ25hdHVyZUluc3RhbmNlLnVwZGF0ZShjb250ZW50Qnl0ZXMpOw0KPj4gPj4gICAgICAg ICAgICAgICAgYm9vbGVhbiByZXN1bHQgPSBzaWduYXR1cmVJbnN0YW5jZS52ZXJpZnkoDQo+PiA+ PiBzaWduYXR1cmVCeXRlcyk7DQo+PiA+Pg0KPj4gPj4gICAgICAgICAgICAgICAgYnl0ZVtdIHBs b2FkID0gQmFzZTY0LmRlY29kZUJhc2U2NChqd3QuZ2V0UGF5bG9hZCgpKTsNCj4+ID4+DQo+PiA+ PiAgICAgICAgICAgICAgICBTdHJpbmcgcGF5bG9hZCA9IG5ldyBTdHJpbmcocGxvYWQpOw0KPj4g Pj4gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIm1lc3NhZ2VCb2R5Ojo6Ojo6Ojo6Ojo6Ojo6 OiAgICAgICAgICAgICAgIg0KPj4gPj4gKw0KPj4gPj4gcGF5bG9hZCk7DQo+PiA+PiAgICAgICAg ICAgICAgICBsb2dnZXIud2FybigicmVzdWx0Ojo6Ojo6Ojo6Ojo6Ojo6OiAgICAgICAgICAgICAg IiArDQo+PiA+PiByZXN1bHQpOw0KPj4gPj4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9IHRy dWUpIHsNCj4+ID4+DQo+PiA+PiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIENv bm5lY3Rpb25GYWN0b3J5DQo+PiA+PiAgICAgICAgICAgIEFjdGl2ZU1RQ29ubmVjdGlvbkZhY3Rv cnkgY29ubmVjdGlvbkZhY3RvcnkgPSBuZXcNCj4+ID4+IEFjdGl2ZU1RQ29ubmVjdGlvbkZhY3Rv cnkoInZtOi8vbG9jYWxob3N0Iik7DQo+PiA+Pg0KPj4gPj4gICAgICAgICAgICAvLyBDcmVhdGUg YSBDb25uZWN0aW9uDQo+PiA+PiAgICAgICAgICAgIGphdmF4Lmptcy5Db25uZWN0aW9uIGptc0Nv bm5lY3Rpb24gPSBjb25uZWN0aW9uRmFjdG9yeS4NCj4+ID4+IGNyZWF0ZUNvbm5lY3Rpb24oKTsN Cj4+ID4+ICAgICAgICAgICAgam1zQ29ubmVjdGlvbi5zdGFydCgpOw0KPj4gPj4NCj4+ID4+ICAg ICAgICAgICAgLy8gQ3JlYXRlIGEgU2Vzc2lvbg0KPj4gPj4gICAgICAgICAgICBTZXNzaW9uIHNl c3Npb24gPSBqbXNDb25uZWN0aW9uLmNyZWF0ZVNlc3Npb24oZmFsc2UsDQo+PiA+PiBTZXNzaW9u LkFVVE9fQUNLTk9XTEVER0UpOw0KPj4gPj4NCj4+ID4+ICAgICAgICAgICAgICAgIERlc3RpbmF0 aW9uIGRlc3QgPSBzZXNzaW9uLmNyZWF0ZVF1ZXVlKCJKV1RfUEFZTE9BRCIpOw0KPj4gPj4gICAg ICAgICAgICAgICAgICAgICAgICBNZXNzYWdlUHJvZHVjZXIgcHJvZHVjZXIgPQ0KPj4gPj4gc2Vz c2lvbi5jcmVhdGVQcm9kdWNlcihkZXN0KTsNCj4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAg cHJvZHVjZXIuc2V0RGVsaXZlcnlNb2RlKA0KPj4gPj4gRGVsaXZlcnlNb2RlLlBFUlNJU1RFTlQp Ow0KPj4gPj4NCj4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE1lc3NhZ2UgY2xhaW1z ID0gc2Vzc2lvbi5jcmVhdGVUZXh0TWVzc2FnZSgNCj4+ID4+IHBheWxvYWQpOw0KPj4gPj4gICAg ICAgICAgICAgICAgICAgICAgICBjbGFpbXMuc2V0Sk1TVHlwZSgiVEVYVCIpOw0KPj4gPj4gICAg ICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybigiQ0xBSU1TPj4+Pj4+Pj4+Pj4+Pj4+PiAg IiArDQo+PiA+PiBjbGFpbXMpOw0KPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNl ci5zZW5kKGRlc3QsIGNsYWltcyk7DQo+PiA+PiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dl ci5mYXRhbCgiQ0xBSU1TPj4+Pj4+Pj4+Pj4+Pj4+PiAgIiArDQo+PiA+PiBjbGFpbXMpOw0KPj4g Pj4NCj4+ID4+DQo+PiA+PiAvLw0KPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdl Q29uc3VtZXIgY29uc3VtZXIgPQ0KPj4gPj4gc2Vzc2lvbi5jcmVhdGVDb25zdW1lcihkZXN0KTsN Cj4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZXIuc2V0TWVzc2FnZUxpc3RlbmVy KHRoaXMpOw0KPj4gPj4NCj4+ID4+ICAgICAgICAgICAgICAgIH0NCj4+ID4+DQo+PiA+PiAgICAg ICAgICAgICAgICBlbHNlIHsNCj4+ID4+DQo+PiA+PiAgICAgICAgICAgICAgICAgICAgICAgIGxv Z2dlci53YXJuKCJFbHNlIEF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gUGxlYXNlDQo+PiA+PiBzZW5k IFZhbGlkIFRva2VuIik7DQo+PiA+PiAgICAgICAgICAgICAgICB9DQo+PiA+Pg0KPj4gPj4gICAg ICAgICAgICAgICAgc3VwZXIuc2VuZChwcm9kdWNlckV4Y2hhbmdlLCBtZXNzYWdlU2VuZCk7DQo+ PiA+PiAgICAgICAgICAgICAgICAvLyBnZXROZXh0KCkuc2VuZChwcm9kdWNlckV4Y2hhbmdlLCBt ZXNzYWdlU2VuZCk7DQo+PiA+Pg0KPj4gPj4gICAgICAgIH0NCj4+ID4+DQo+PiA+PiAgICAgICAg ZWxzZQ0KPj4gPj4gICAgICAgIHsNCj4+ID4+ICAgICAgICAgICAgICAgIGxvZ2dlci5mYXRhbCgi TUVTU0FHRSBTRU5EIENPTlRFTlQgSVMgTlVMTCIpOw0KPj4gPj4gICAgICAgIH0NCj4+ID4+ICAg ICAgICB9DQo+PiA+PiBlbHNlDQo+PiA+PiB7DQo+PiA+PiAgICAgICAgbG9nZ2VyLmZhdGFsKCJN RVNTQUdFIFNFTkQgSVMgTlVMTCIpOw0KPj4gPj4gfQ0KPj4gPj4gICAgICAgIH0NCj4+ID4+DQo+ PiA+PiAgICAgICAgQE92ZXJyaWRlDQo+PiA+PiAgICAgICAgcHVibGljIHZvaWQgb25NZXNzYWdl KGphdmF4Lmptcy5NZXNzYWdlIG1lc3NhZ2UpIHsNCj4+ID4+ICAgICAgICAgICAgICAgICAgU3Ry aW5nIG1lc3NhZ2VUZXh0ID0gbnVsbDsNCj4+ID4+ICAgICAgICAgICAgICAgIHRyeSB7DQo+PiA+ PiAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UgaW5zdGFuY2VvZiBUZXh0TWVzc2FnZSkg ew0KPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICBUZXh0TWVzc2FnZSB0ZXh0TWVzc2FnZSA9 IChUZXh0TWVzc2FnZSkgbWVzc2FnZTsNCj4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgbWVz c2FnZVRleHQgPSB0ZXh0TWVzc2FnZS5nZXRUZXh0KCk7DQo+PiA+PiAgICAgICAgICAgICAgICAg ICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibWVzc2FnZVRleHQgPSAiICsNCj4+ID4+IG1lc3Nh Z2VUZXh0KTsNCj4+ID4+ICAgICAgICAgICAgICAgICAgICB9DQo+PiA+PiAgICAgICAgICAgICAg ICB9IGNhdGNoIChKTVNFeGNlcHRpb24gZSkgew0KPj4gPj4gICAgICAgICAgICAgICAgICAgIC8v SGFuZGxlIHRoZSBleGNlcHRpb24gYXBwcm9wcmlhdGVseQ0KPj4gPj4gICAgICAgICAgICAgICAg fQ0KPj4gPj4gICAgICAgIH0NCj4+ID4+DQo+PiA+PiBSZWdhcmRzLA0KPj4gPj4gQmhhcmF0IEd1 cHRhDQo+PiA+PiBEZXZlbG9wbWVudCAmIFN1cHBvcnQgfCBQbGF0Zm9ybSBUZWNobmljaWFuLCBJ WENCIHwgU2NhbmlhIElUDQo+PiA+PiBNb2JpbGU6ICs0NjcwMDg2OTAwNyA8KzQ2JTIwNzAlMjAw ODYlMjA5MCUyMDA3Pg0KPj4gPCs0NiUyMDcwJTIwMDg2JTIwOTAlMjAwNz4sICs5MS05NzE4NDgz ODAyIDwrOTElMjA5NzE4NCUyMDgzODAyPg0KPj4gPj4gPCs5MSUyMDk3MTg0JTIwODM4MDI+DQo+ PiA+PiBiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbTxtYWlsdG86YmhhcmF0Lmd1cHRhQHNjYW5pYS5j b20+DQo+PiA+Pg0KPj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+ID4+IEZyb206 IHRiYWluOThAZ21haWwuY29tPG1haWx0bzp0YmFpbjk4QGdtYWlsLmNvbT4gW21haWx0bzoNCj4+ ID4+IHRiYWluOThAZ21haWwuY29tXSBPbiBCZWhhbGYgT2YgVGltIEJhaW4NCj4+ID4+IFNlbnQ6 IGRlbiAyNyBub3ZlbWJlciAyMDE3IDA4OjEyDQo+PiA+PiBUbzogQWN0aXZlTVEgVXNlcnMgPHVz ZXJzQGFjdGl2ZW1xLmFwYWNoZS5vcmc8bWFpbHRvOg0KPj4gPj4gdXNlcnNAYWN0aXZlbXEuYXBh Y2hlLm9yZz4+DQo+PiA+PiBDYzogdXNlcnMtb3duZXJAYWN0aXZlbXEuYXBhY2hlLm9yZzxtYWls dG86dXNlcnMtb3duZXJAYWN0aXZlbXEuDQo+PiA+PiBhcGFjaGUub3JnPg0KPj4gPj4gU3ViamVj dDogUmU6IEFjdGl2ZU1RIGN1c3RvbSBwbHVnaW4NCj4+ID4+DQo+PiA+PiBUaGFuayB5b3UgZm9y IHByb3ZpZGluZyB0aGF0IGNvZGUuIEkgc3BlbnQgc29tZSB0aW1lIHJ1bm5pbmcgeW91ciBjb2Rl LA0KPj4gPj4gYW5kDQo+PiA+PiBmb3VuZCB0aGUgZm9sbG93aW5nIHByb2JsZW1zIHdpdGggaXQs IHdoaWNoIGFyZSBjYXVzaW5nIHRoaXMgdG8gbm90DQo+PiB3b3JrDQo+PiA+PiBhcw0KPj4gPj4g eW91IGludGVuZGVkOg0KPj4gPj4NCj4+ID4+ICAgMS4gVGhlIHNpZ25hdHVyZSBmb3IgdGhlIHNl bmQoKSBtZXRob2QgaXMgInB1YmxpYyB2b2lkDQo+PiA+PiAgIHNlbmQoUHJvZHVjZXJCcm9rZXJF eGNoYW5nZSBwcm9kdWNlckV4Y2hhbmdlLCBNZXNzYWdlIG1lc3NhZ2VTZW5kKQ0KPj4gPj4gdGhy b3dzDQo+PiA+PiAgIEV4Y2VwdGlvbiwiIG5vdCB0aGUgc2lnbmF0dXJlIHlvdSBoYWQgZGVmaW5l ZC4gQmVjYXVzZSB5b3VyIHNpZ25hdHVyZQ0KPj4gPj4gICBkaWRuJ3QgbWF0Y2ggdGhlIG1ldGhv ZCB5b3Ugd2VyZSB0cnlpbmcgdG8gb3ZlcnJpZGUsIHlvdSB3ZXJlbid0DQo+PiA+PiBhY3R1YWxs eQ0KPj4gPj4gICBvdmVycmlkaW5nIGEgbWV0aG9kIHRoYXQgd291bGQgYmUgY2FsbGVkIHdoZW4g YSBtZXNzYWdlIHdhcyBzZW50LCBidXQNCj4+ID4+ICAgaW5zdGVhZCB5b3Ugd2VyZSBzaW1wbHkg ZGVmaW5pbmcgYSBwdWJsaWMgbWV0aG9kIHRoYXQgbm90aGluZyBldmVyDQo+PiA+PiBjYWxsZWQu DQo+PiA+PiAgIFRoZSBjb21waWxlciB3b3VsZCBoYXZlIGNhdWdodCB0aGlzIGZvciB5b3UgaWYg eW91J2QgYW5ub3RhdGVkIHRoZQ0KPj4gPj4gbWV0aG9kDQo+PiA+PiAgIGFzIEBPdmVycmlkZTsg eW91IHNob3VsZCBiZSB1c2luZyB0aGF0IGFubm90YXRpb24gZm9yIGFsbCBvdmVycmlkZW4NCj4+ ID4+ICAgbWV0aG9kcywgZm9yIGV4YWN0bHkgdGhpcyByZWFzb24uDQo+PiA+PiAgIDIuIG1lc3Nh Z2VTZW5kLmdldENvbnRlbnQoKSByZXR1cm5zIG51bGwgZm9yIHRoZSB0ZXN0IG1lc3NhZ2UgSSBz ZW50DQo+PiA+PiB2aWENCj4+ID4+ICAgdGhlIHdlYiBjb25zb2xlLCBidXQgKChBY3RpdmVNUVRl eHRNZXNzYWdlKW1lc3NhZ2VTZW5kKS5nZXRUZXh0KCkNCj4+ID4+IHJldHVybnMNCj4+ID4+ICAg dGhlIGJvZHkuIEkgdGhpbmsgdGhpcyBzYW1lIGNvZGUgd291bGQgd29yayBmb3IgYW4gTVFUVCBt ZXNzYWdlLCBidXQNCj4+ID4+IHNpbmNlDQo+PiA+PiAgIEkndmUgbmV2ZXIgdXNlZCBNUVRUIHlv dSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4NCj4+ID4+ICAgMy4gSSBtZW50aW9uZWQgdGhpcyBl YXJsaWVyLCBidXQgeW91ciBzZW5kKCkgbWV0aG9kIG5lZWRzIHRvIGNhbGwNCj4+ID4+ICAgc3Vw ZXIuc2VuZCgpIGF0IHRoZSBlbmQsIG90aGVyd2lzZSB0aGUgYnJva2VyJ3Mgbm90IGdvaW5nIHRv IHByb2Nlc3MNCj4+ID4+IGFueQ0KPj4gPj4gICBtZXNzYWdlcyBhbmQgeW91J3JlIGdvaW5nIHRv IGJlIHdvbmRlcmluZyB3aHkgdGhlIGJyb2tlciAiZG9lc24ndA0KPj4gPj4gd29yay4iDQo+PiA+ PiAgIFRoaXMgZG9lc24ndCBleHBsYWluIHdoeSB5b3UncmUgbm90IHNlZWluZyB5b3VyIGxvZ2dp bmcgb2NjdXIsIGJ1dA0KPj4gPj4gb25jZQ0KPj4gPj4gd2UNCj4+ID4+ICAgZ2V0IHBhc3QgdGhh dCBwcm9ibGVtLCB0aGlzIGlzIHRoZSBuZXh0IGlzc3VlIHlvdSdyZSBnb2luZyB0byBoaXQuDQo+ PiA+Pg0KPj4gPj4gVGltDQo+PiA+Pg0KPj4gPj4gT24gU3VuLCBOb3YgMjYsIDIwMTcgYXQgMTI6 NDEgUE0sIEd1cHRhIEJoYXJhdCA8DQo+PiBiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbQ0KPj4gPj4g PG1haWx0bzpiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbT4+DQo+PiA+PiB3cm90ZToNCj4+ID4+DQo+ PiA+PiBIZWxsbywNCj4+ID4+DQo+PiA+PiBNeUJyb2tlci5qYXZhDQo+PiA+Pg0KPj4gPj4gcGFj a2FnZSBqd3QudmFsaWRhdGlvbjsNCj4+ID4+DQo+PiA+PiBpbXBvcnQgamF2YS51dGlsLkhhc2hN YXA7DQo+PiA+PiBpbXBvcnQgamF2YS51dGlsLk1hcDsNCj4+ID4+DQo+PiA+PiBpbXBvcnQgamF2 YXguam1zLkRlc3RpbmF0aW9uOw0KPj4gPj4gaW1wb3J0IGphdmF4Lmptcy5FeGNlcHRpb25MaXN0 ZW5lcjsNCj4+ID4+IGltcG9ydCBqYXZheC5qbXMuSk1TRXhjZXB0aW9uOw0KPj4gPj4gaW1wb3J0 IGphdmF4Lmptcy5NZXNzYWdlQ29uc3VtZXI7DQo+PiA+PiBpbXBvcnQgamF2YXguam1zLlNlc3Np b247DQo+PiA+PiBpbXBvcnQgamF2YXguam1zLlRleHRNZXNzYWdlOw0KPj4gPj4NCj4+ID4+IGlt cG9ydCBvcmcuYXBhY2hlLmFjdGl2ZW1xLkFjdGl2ZU1RQ29ubmVjdGlvbjsNCj4+ID4+IGltcG9y dCBvcmcuYXBhY2hlLmFjdGl2ZW1xLkFjdGl2ZU1RQ29ubmVjdGlvbkZhY3Rvcnk7DQo+PiA+PiBp bXBvcnQgb3JnLmFwYWNoZS5hY3RpdmVtcS5BY3RpdmVNUU1lc3NhZ2VDb25zdW1lcjsNCj4+ID4+ IGltcG9ydCBvcmcuYXBhY2hlLmFjdGl2ZW1xLmJyb2tlci5Ccm9rZXJGaWx0ZXI7DQo+PiA+PiBp bXBvcnQgb3JnLmFwYWNoZS5hY3RpdmVtcS5icm9rZXIuQ29ubmVjdGlvbjsNCj4+ID4+IGltcG9y dCBvcmcuYXBhY2hlLmFjdGl2ZW1xLmJyb2tlci5Db25uZWN0aW9uQ29udGV4dDsNCj4+ID4+IGlt cG9ydCBvcmcuYXBhY2hlLmFjdGl2ZW1xLmJyb2tlci5Qcm9kdWNlckJyb2tlckV4Y2hhbmdlOw0K Pj4gPj4gaW1wb3J0IG9yZy5hcGFjaGUuYWN0aXZlbXEuYnJva2VyLnJlZ2lvbi5TdWJzY3JpcHRp b247DQo+PiA+PiBpbXBvcnQgb3JnLmFwYWNoZS5hY3RpdmVtcS5jb21tYW5kLkFjdGl2ZU1RRGVz dGluYXRpb247DQo+PiA+PiBpbXBvcnQgb3JnLmFwYWNoZS5hY3RpdmVtcS5jb21tYW5kLkFjdGl2 ZU1RTWVzc2FnZTsNCj4+ID4+IGltcG9ydCBvcmcuYXBhY2hlLmFjdGl2ZW1xLmNvbW1hbmQuQ29u bmVjdGlvbkluZm87DQo+PiA+PiBpbXBvcnQgb3JnLmFwYWNoZS5hY3RpdmVtcS5jb21tYW5kLkNv bnN1bWVySW5mbzsNCj4+ID4+IGltcG9ydCBvcmcuYXBhY2hlLmFjdGl2ZW1xLmNvbW1hbmQuTWVz c2FnZTsNCj4+ID4+IGltcG9ydCBvcmcuYXBhY2hlLmFjdGl2ZW1xLmNvbW1hbmQuU2Vzc2lvbklu Zm87DQo+PiA+PiBpbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7DQo+PiA+Pg0KPj4gPj4N Cj4+ID4+IHB1YmxpYyBjbGFzcyBNeUJyb2tlciBleHRlbmRzIEJyb2tlckZpbHRlciB7DQo+PiA+ Pg0KPj4gPj4gICAgICAgICAgICAgICAgZmluYWwgc3RhdGljIExvZ2dlciBsb2dnZXIgPSBMb2dn ZXIuZ2V0TG9nZ2VyKE15QnJva2VyLg0KPj4gPj4gY2xhc3MpOw0KPj4gPj4gICAgICAgICAgICAg ICAgcHJpdmF0ZSBNYXA8U3RyaW5nLCBTdHJpbmc+IHVzZXJNYXAgPSBuZXcNCj4+ID4+IEhhc2hN YXA8U3RyaW5nLA0KPj4gPj4gU3RyaW5nPigpOw0KPj4gPj4NCj4+ID4+ICAgICAgICAgICAgICAg IHB1YmxpYyBNeUJyb2tlcihvcmcuYXBhY2hlLmFjdGl2ZW1xLmJyb2tlci5Ccm9rZXINCj4+ID4+ IG5leHQpDQo+PiA+PiB7DQo+PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw ZXIobmV4dCk7DQo+PiA+Pg0KPj4gPj4gICAgICAgICAgICAgICAgfQ0KPj4gPj4NCj4+ID4+DQo+ PiA+Pg0KPj4gPj4gICAgICAgICAgICAgICAgcHVibGljIHZvaWQgc2VuZChQcm9kdWNlckJyb2tl ckV4Y2hhbmdlDQo+PiA+PiBwcm9kdWNlckV4Y2hhbmdlLA0KPj4gPj4gQWN0aXZlTVFNZXNzYWdl IG1lc3NhZ2VTZW5kKSB0aHJvd3MgSk1TRXhjZXB0aW9uDQo+PiA+PiAgICAgICAgICAgICAgICB7 DQo+PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlW10gbWVzc2FnZUJ5 dGVzID0NCj4+ID4+IG1lc3NhZ2VTZW5kLmdldENvbnRlbnQoKS5kYXRhOw0KPj4gPj4NCj4+ID4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgZGF0YSA9DQo+PiA+PiBt ZXNzYWdlU2VuZC5nZXRNZXNzYWdlKCk7DQo+PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsb2dnZXIud2FybigiDQo+PiA+PiBNRVNTQUdFRUVFRUVFRUVFRUVFRUVFRUVFRUUi DQo+PiA+PiArIGRhdGEpOw0KPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U3RyaW5nIG1lc3NhZ2UgPSBuZXcNCj4+ID4+IFN0cmluZyhtZXNzYWdlQnl0ZXMpOw0KPj4gPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIm1lc3NhZ2VCb2R5 IiArIG1lc3NhZ2UpOw0KPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9n Z2VyLmluZm88aHR0cDovL2xvZ2dlci5pbmZvDQo+PiA+KCJtZXNzYWdlQm9keSINCj4+ID4+ICsN Cj4+ID4+IG1lc3NhZ2UpOw0KPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bG9nZ2VyLmZhdGFsKCJtZXNzYWdlQm9keSIgKw0KPj4gPj4gbWVzc2FnZSk7DQo+PiA+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIm1lc3NhZ2VCb2R5IiAr DQo+PiA+PiBtZXNzYWdlKTsNCj4+ID4+DQo+PiA+Pg0KPj4gPj4gICAgICAgICAgICAgICAgIH0N Cj4+ID4+DQo+PiA+PiAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBhZGRDb25uZWN0aW9uKENv bm5lY3Rpb25Db250ZXh0IGNvbnRleHQsDQo+PiA+PiBDb25uZWN0aW9uSW5mbyBpbmZvKQ0KPj4g Pj4gICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsNCj4+ID4+DQo+PiA+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5mby5nZXRVc2VyTmFtZSgpOw0KPj4gPj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluZm8udG9TdHJpbmcoKTsNCj4+ID4+DQo+PiA+Pg0KPj4g Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCJpbmZvMSIgKw0K Pj4gPj4gaW5mby5nZXRVc2VyTmFtZSgpKTsNCj4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsb2dnZXIuZmF0YWwoImluZm8yIiArDQo+PiA+PiBpbmZvLnRvU3RyaW5nKCkpOw0K Pj4gPj4NCj4+ID4+ICAgICAgIFN0cmluZyB0b2tlbiA9IGNvbnRleHQuZ2V0VXNlck5hbWUoKTsN Cj4+ID4+ICAgICAgIGxvZ2dlci5kZWJ1ZygidG9rZW4xIiArIHRva2VuKTsNCj4+ID4+ICAgICAg IGxvZ2dlci53YXJuKCJ0b2tlbjIiICsgdG9rZW4pOw0KPj4gPj4gICAgICAgbG9nZ2VyLmZhdGFs KCJ0b2tlbjMiICsgdG9rZW4pOw0KPj4gPj4NCj4+ID4+DQo+PiA+PiAgICAgICAgLy8gVGhlbiBj YWxsIHlvdXIgcGFyZW50DQo+PiA+PiAgICAgICAgc3VwZXIuYWRkQ29ubmVjdGlvbihjb250ZXh0 LCBpbmZvKTsNCj4+ID4+ICAgIH0NCj4+ID4+DQo+PiA+PiAgICBwdWJsaWMgU3Vic2NyaXB0aW9u IGFkZENvbnN1bWVyKENvbm5lY3Rpb25Db250ZXh0IGNvbnRleHQsDQo+PiA+PiBDb25zdW1lcklu Zm8gaW5mbykgdGhyb3dzIEV4Y2VwdGlvbiB7DQo+PiA+Pg0KPj4gPj4NCj4+ID4+DQo+PiA+PiAg ICAgICAgQWN0aXZlTVFEZXN0aW5hdGlvbiBkZXN0ID0gaW5mby5nZXREZXN0aW5hdGlvbigpOw0K Pj4gPj4gICAgICAgIENvbm5lY3Rpb24gY29ubiA9IGNvbnRleHQuZ2V0Q29ubmVjdGlvbigpOw0K Pj4gPj4gICAgICAgIGlmIChkZXN0ICE9IG51bGwpIHsNCj4+ID4+ICAgICAgICAgICAgU3RyaW5n IGRlc3ROYW1lID0gaW5mby5nZXREZXN0aW5hdGlvbigpLmdldFBoeXNpY2FsTmFtZSgpOw0KPj4g Pj4gICAgICAgICAgICBTdHJpbmcgY2xpZW50SWQgPSBjb250ZXh0LmdldENsaWVudElkKCk7DQo+ PiA+PiAgICAgICAgICAgIFN0cmluZyBhbGxvd2VkRGVzdCA9IHVzZXJNYXAuZ2V0KGNsaWVudElk KTsNCj4+ID4+DQo+PiA+PiAgICAgICAgICAgIGxvZ2dlci5pbmZvPGh0dHA6Ly9sb2dnZXIuaW5m bz4oIj4+PiBHb3QgQ29uc3VtZXIgQWRkDQo+PiByZXF1ZXN0DQo+PiA+PiB7IERlc3RpbmF0aW9u Og0KPj4gPj4gIiArDQo+PiA+PiBkZXN0TmFtZQ0KPj4gPj4gICAgICAgICAgICAgICAgICAgICsg IiwgUmVtb3RlIEFkZHJlc3M6ICIgKyBjb25uLmdldFJlbW90ZUFkZHJlc3MoKQ0KPj4gPj4gICAg ICAgICAgICAgICAgICAgICsgIiwgQ2xpZW50SUQ6ICIgKyBjbGllbnRJZA0KPj4gPj4gICAgICAg ICAgICAgICAgICAgICsgIiB9Iik7DQo+PiA+PiAgICAgICAgICAgIGlmIChhbGxvd2VkRGVzdCAh PSBudWxsICYmIChhbGxvd2VkRGVzdC5lcXVhbHMoIioiKSB8fA0KPj4gPj4gYWxsb3dlZERlc3Qu ZXF1YWxzKGRlc3ROYW1lKSB8fCBkZXN0TmFtZS5zdGFydHNXaXRoKCJBY3RpdmVNUSIpKSkgew0K Pj4gPj4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm88aHR0cDovL2xvZ2dlci5pbmZvPigiPj4+ IFN1YnNjcmlwdGlvbg0KPj4gPj4gYWxsb3dlZCIpOw0KPj4gPj4gICAgICAgICAgICB9IGVsc2Ug ew0KPj4gPj4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCI+Pj4gRGVzdGluYXRpb24gbm90 IGFsbG93ZWQuIFN1YnNjcmlwdGlvbg0KPj4gPj4gZGVuaWVkISIpOw0KPj4gPj4gICAgICAgICAg ICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiPj4+IFN1YnNjcmlwdGlvbiBkZW5pZWQhIik7DQo+ PiA+PiAgICAgICAgICAgIH0NCj4+ID4+ICAgICAgICB9IGVsc2Ugew0KPj4gPj4gICAgICAgICAg ICBsb2dnZXIuZXJyb3IoIjw8PCBHb3QgQ29uc3VtZXIgQWRkIHJlcXVlc3QgZnJvbSBSZW1vdGUN Cj4+ID4+IEFkZHJlc3M6IiArIGNvbm4uZ2V0UmVtb3RlQWRkcmVzcygpICsgIi4gQnV0IGRlc3Rp bmF0aW9uIGlzIE5VTEwuIik7DQo+PiA+PiAgICAgICAgfQ0KPj4gPj4gICAgICAgIHJldHVybiBz dXBlci5hZGRDb25zdW1lcihjb250ZXh0LCBpbmZvKTsNCj4+ID4+ICAgIH0NCj4+ID4+IH0NCj4+ ID4+DQo+PiA+PiBTYW1wbGUuamF2YQ0KPj4gPj4NCj4+ID4+IHBhY2thZ2Ugand0LnZhbGlkYXRp b247DQo+PiA+Pg0KPj4gPj4gaW1wb3J0IG9yZy5hcGFjaGUuYWN0aXZlbXEuQWN0aXZlTVFNZXNz YWdlUHJvZHVjZXI7DQo+PiA+PiBpbXBvcnQgb3JnLmFwYWNoZS5hY3RpdmVtcS5icm9rZXIuQnJv a2VyOw0KPj4gPj4gaW1wb3J0IG9yZy5hcGFjaGUuYWN0aXZlbXEuYnJva2VyLkJyb2tlclBsdWdp bjsNCj4+ID4+IGltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsNCj4+ID4+DQo+PiA+PiBw dWJsaWMgY2xhc3MgU2FtcGxlICBpbXBsZW1lbnRzIEJyb2tlclBsdWdpbiB7DQo+PiA+Pg0KPj4g Pj4gICAgICAgICAgICAgICAgZmluYWwgc3RhdGljIExvZ2dlciBsb2dnZXIgPQ0KPj4gPj4gTG9n Z2VyLmdldExvZ2dlcihTYW1wbGUuY2xhc3MpDQo+PiA+PiA7DQo+PiA+Pg0KPj4gPj4gICAgICAg ICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgew0KPj4gPj4N Cj4+ID4+DQo+PiA+PiAgICAgICAgICAgICAgICB9DQo+PiA+Pg0KPj4gPj4gICAgICAgICAgICAg ICAgcHJpdmF0ZSB2b2lkIHJ1bk1lKFN0cmluZyBwYXJhbWV0ZXIpew0KPj4gPj4NCj4+ID4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihsb2dnZXIuaXNEZWJ1Z0VuYWJsZWQoKSl7 DQo+PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv Z2dlci5kZWJ1ZygiVGhpcyBpcw0KPj4gPj4gZGVidWcgOiAiICsgcGFyYW1ldGVyKTsNCj4+ID4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQo+PiA+Pg0KPj4gPj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmKGxvZ2dlci5pc0luZm9FbmFibGVkKCkpew0KPj4gPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5m bzwNCj4+IGh0dHA6Ly9sb2dnZXIuDQo+PiA+PiBpbmZvPigiVGhpcyBpcw0KPj4gPj4gaW5mbw0K Pj4gPj4gOiAiICsgcGFyYW1ldGVyKTsNCj4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9DQo+PiA+Pg0KPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dl ci53YXJuKCJUaGlzIGlzIHdhcm4gOiAiICsNCj4+ID4+IHBhcmFtZXRlcik7DQo+PiA+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJUaGlzIGlzIGVycm9yIDog IiArDQo+PiA+PiBwYXJhbWV0ZXIpOw0KPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxvZ2dlci5mYXRhbCgiVGhpcyBpcyBmYXRhbCA6ICIgKw0KPj4gPj4gcGFyYW1ldGVyKTsN Cj4+ID4+DQo+PiA+PiAgICAgICAgICAgICAgICB9DQo+PiA+Pg0KPj4gPj4gICAgICAgICAgICAg ICAgcHVibGljIEJyb2tlciBpbnN0YWxsUGx1Z2luKEJyb2tlciBicm9rZXIpIHRocm93cw0KPj4g Pj4gRXhjZXB0aW9uIHsNCj4+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1w bGUgc2FtcGxlID0gbmV3IFNhbXBsZSgpOw0KPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNhbXBsZS5ydW5NZSgiQWN0aXZlTVEgSGVsbG8iKTsNCj4+ID4+DQo+PiA+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNeUJyb2tlcihicm9rZXIpOw0K Pj4gPj4gICAgICAgICAgICAgICAgfQ0KPj4gPj4NCj4+ID4+DQo+PiA+PiB9DQo+PiA+Pg0KPj4g Pj4gVGhlIGFib3ZlIGFyZSB0d28gY2xhc3NlcyBJIGhhdmUgaW1wbGVtZW50ZWQgZm9yIG15IGN1 c3RvbSBwbHVnaW4uDQo+PiA+Pg0KPj4gPj4gUmVnYXJkcywNCj4+ID4+IEJoYXJhdCBHdXB0YQ0K Pj4gPj4gRGV2ZWxvcG1lbnQgJiBTdXBwb3J0IHwgUGxhdGZvcm0gVGVjaG5pY2lhbiwgSVhDQiB8 IFNjYW5pYSBJVA0KPj4gPj4gTW9iaWxlOiArNDY3MDA4NjkwMDcsICs5MS05NzE4NDgzODAyDQo+ PiA+PiBiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbTxtYWlsdG86YmhhcmF0Lmd1cHRhQHNjYW5pYS5j b20+PG1haWx0bzoNCj4+ID4+IGJoYXJhdC5ndXB0YUBzY2FuaWEuY29tPg0KPj4gPj4NCj4+ID4+ IEZyb206IHRiYWluOThAZ21haWwuY29tPG1haWx0bzp0YmFpbjk4QGdtYWlsLmNvbT4gW21haWx0 bzoNCj4+ID4+IHRiYWluOThAZ21haWwuY29tXSBPbiBCZWhhbGYgT2YgVGltDQo+PiA+PiBCYWlu DQo+PiA+PiBTZW50OiBTdW5kYXksIE5vdmVtYmVyIDI2LCAyMDE3IDQ6MzEgQU0NCj4+ID4+IFRv OiBBY3RpdmVNUSBVc2VycyA8dXNlcnNAYWN0aXZlbXEuYXBhY2hlLm9yZzxtYWlsdG86DQo+PiA+ PiB1c2Vyc0BhY3RpdmVtcS5hcGFjaGUub3JnPj4NCj4+ID4+IENjOiB1c2Vycy1vd25lckBhY3Rp dmVtcS5hcGFjaGUub3JnPG1haWx0bzp1c2Vycy1vd25lckBhY3RpdmVtcS4NCj4+ID4+IGFwYWNo ZS5vcmc+DQo+PiA+PiBTdWJqZWN0OiBSRTogQWN0aXZlTVEgY3VzdG9tIHBsdWdpbg0KPj4gPj4N Cj4+ID4+DQo+PiA+Pg0KPj4gPj4gT24gTm92IDI0LCAyMDE3IDU6NDQgUE0sICJHdXB0YSBCaGFy YXQiIDxiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbTxtYWlsdA0KPj4gbzoNCj4+ID4+IGJoYXJhdC5n dXB0YUBzY2FuaWEuY29tPjwNCj4+ID4+IG1haWx0bzoNCj4+ID4+IGJoYXJhdC5ndXB0YUBzY2Fu aWEuY29tPG1haWx0bzpiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbT4+PiB3cm90ZToNCj4+ID4+DQo+ PiA+PiBoZWxsbyBUaW0sDQo+PiA+Pg0KPj4gPj4NCj4+ID4+DQo+PiA+PiBNeSBDdXN0b20gUGx1 Z2luIGlzIGdldHRpbmcgaW5zdGFsbGVkIGFzIEkgYW0gdXNpbmcgbG9nNGogdG8gcHJpbnQNCj4+ ID4+IHJhbmRvbQ0KPj4gPj4gc3R1ZmYgYW5kIGl0cyBnZXR0aW5nIHByaW50ZWQgaW4gbG9ncy4N Cj4+ID4+IENhbiB5b3UgcGxlYXNlIGRlc2NyaWJlIGluIG1vcmUgZGV0YWlsIGV4YWN0bHkgd2hh dCBtZXRob2RzIHRoYXQNCj4+ID4+IGxvZ2dpbmcNCj4+ID4+IGlzIGRvbmUgaW4gYW5kIGhvdyBp dCBwcm92ZXMgdGhhdCB0aGUgcGx1Z2luIHdhcyBhY3R1YWxseSBpbnN0YWxsZWQ/IElmDQo+PiA+ PiAoZm9yIGV4YW1wbGUpIHlvdXIgbG9nZ2luZyBpcyBvbmx5IGluIHlvdXIgY29uc3RydWN0b3Ig b3IgeW91cg0KPj4gPj4gaW5pdGlhbGl6YXRpb24gbWV0aG9kLCB0aGF0IGp1c3QgcHJvdmVzIHRo YXQgU3ByaW5nIG1hZGUgeW91ciBiZWFuLCBub3QNCj4+ID4+IHRoYXQgaXQgd2FzIGluc3RhbGxl ZCBpbiB0aGUgYnJva2VyIGFzIGEgcGx1Z2luLg0KPj4gPj4NCj4+ID4+IEkgYW0gaGVyZWJ5IGF0 dGFjaGluZyBteSBjb2RlcyB0aGF0IHlvdSBjYW4gc2VlLg0KPj4gPj4gV2hlcmU/IEFsbCBJIHNl ZSBpcyB5b3VyIGFjdGl2ZW1xLnhtbCBzbmlwcGV0IGJlbG93LCBidXQgbm8gYWN0dWFsIGNvZGUN Cj4+ID4+IGZvciB5b3VyIHBsdWdpbi4NCj4+ID4+DQo+PiA+PiBhY3RpdmVtcS54bWwgY29uZmln dXJhdGlvbnM6DQo+PiA+Pg0KPj4gPj4gPHBsdWdpbnM+DQo+PiA+Pg0KPj4gPj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGJlYW4gaWQ9InNhbXBsZSINCj4+ID4+DQo+PiA+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Imp3dC52YWxpZGF0aW9uLlNhbXBsZSIN Cj4+ID4+DQo+PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9Imh0dHA6 Ly93d3cuDQo+PiA+PiBzcHJpbmdmcmFtZXdvcmsub3JnL3NjaGVtYS9iZWFuczxodHRwOi8vc3By aW5nZnJhbWV3b3JrLm9yZy8NCj4+IHNjaGVtYS9iZWFucw0KPj4gPj4gPiIvPg0KPj4gPj4NCj4+ ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGx1Z2lucz4NCj4+ID4+DQo+PiA+ Pg0KPj4gPj4NCj4+ID4+IEFsc28gSSB3b3VsZCBsaWtlIHRvIGV4cGxhaW4geW91IG15IGV4YWN0 IHJlcXVpcmVtZW50Lg0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4gVGhlIGRpYWdyYW0gYmVs b3cgc2hvd3Mgd2hhdCBJIGFtIHRyeWluZyB0byBkbyBpdCBub3cuDQo+PiA+Pg0KPj4gPj4NCj4+ ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ID4+IFtjaWQ6aW1hZ2UwMDEucG5nQDAxRDM2NThFLjRBNkIz RTIwXQ0KPj4gPj4gVGhhdCBzb3VuZHMgbGlrZSBpdCBzaG91bGQgYmUgZG9hYmxlIHZpYSBhbiBp bnRlcmNlcHRvciBiYXNlZCBvbiB3aGF0IEkNCj4+ID4+IGtub3cgYWJvdXQgdGhlbSAoaS5lLiB0 aGUgd2lraSwgYnV0IG5vIGhhbmRzLW9uIGV4cGVyaWVuY2UpLg0KPj4gPj4NCj4+ID4+IFFVRVNU SU9OUzoNCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ID4+IDEuICAgICAgIGhvdyBjYW4gd2UgcHJv dmlkZSBKV1QgdG8gY3VzdG9tIHBsdWdpbiBmcm9tIGNsaWVudD8NCj4+ID4+IElmIHlvdSBoYXZl IHRvIHVzZSBNUVRULCB5b3UnbGwgbmVlZCB0byBlbmNvZGUgaXQgZGlyZWN0bHkgaW50byB0aGUN Cj4+ID4+IG1lc3NhZ2UgYm9keSwgYmVjYXVzZSB0aGF0J3MgYWxsIE1RVFQgc3VwcG9ydHMuIFlv dSBjb3VsZCBmb3IgZXhhbXBsZQ0KPj4gPj4gbWFrZQ0KPj4gPj4gYSBKU09OIHBheWxvYWQgd2l0 aCB0d28gZmllbGRzOiB0aGUgSldUIGFuZCB0aGUgbWVzc2FnZSBib2R5LiBPciB5b3UNCj4+ID4+ IGNvdWxkDQo+PiA+PiBzd2l0Y2ggdG8gT3BlbldpcmUgYW5kIHB1dCB0aGUgSldUIGludG8gYSBj dXN0b20gaGVhZGVyIG9uIHRoZSBtZXNzYWdlDQo+PiA+PiB0aGUNCj4+ID4+IGNsaWVudCBpcyBz ZW5kaW5nLg0KPj4gPj4NCj4+ID4+IDIuICAgICAgIGRvIHdlIG5lZWQgdG8gc3RvcmUgand0IGlu IHRvcGljIGZpcnN0IGFuZCB0aGVuIGNvbnN1bWUgaXQNCj4+ID4+IGZyb20NCj4+ID4+IHRvcGlj IHRvIHZhbGlkYXRlIGl0PyAobm90IGlkbGUgY2FzZSkNCj4+ID4+IFlvdSBuZWVkIHRvIHB1dCB0 aGUgSldUIGludG8gdGhlIG1lc3NhZ2UgaXRzZWxmIHNvIHRoYXQgeW91ciBwbHVnaW4gY2FuDQo+ PiA+PiBldmFsdWF0ZSB0aGUgdG9rZW4gYW5kIHRoZW4gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0 aGUgbWVzc2FnZSBiYXNlZCBvbg0KPj4gPj4gdGhhdCBldmFsdWF0aW9uLg0KPj4gPj4NCj4+ID4+ IDMuICAgICAgIGNhbiB3ZSBjYWxsIHJlc3RmdWwgc2VydmljZSBmcm9tIGFjdGl2ZU1RIGJyb2tl ciB0aGF0IGNhbg0KPj4gPj4gdmFsaWRhdGUgdG9rZW4gYW5kIGdpdmVzIHRoZSByZXN1bHQgYmFj ayB0byBicm9rZXI/DQo+PiA+PiBZZXMsIGFzIGZhciBhcyBJIGtub3csIHlvdSdkIGJlIGFibGUg dG8gZG8gdGhhdCBmcm9tIHdpdGhpbiB0aGUgYnJva2VyLg0KPj4gPj4gKEkndmUgbmV2ZXIgZG9u ZSB0aGF0LCBidXQgSSdtIG5vdCBhd2FyZSBvZiBhbnl0aGluZyB0aGF0IHdvdWxkIHByZXZlbnQN Cj4+ID4+IHlvdQ0KPj4gPj4gZnJvbSBkb2luZyBpdC4pDQo+PiA+Pg0KPj4gPj4gVGltIHBsZWFz ZSBsZXQgbWUga25vdyBpZiBJIGFtIGNsZWFyIHdpdGggbXkgcmVxdWlyZW1lbnRzLiBFbHNlIHdl IGNhbg0KPj4gPj4gdGFsayBtb3JlIG9uIGNhbGwvcGhvbmUuDQo+PiA+Pg0KPj4gPj4NCj4+ID4+ DQo+PiA+PiBUaGFua3MgaW4gYWR2YW5jZQ0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ ID4+DQo+PiA+PiBSZWdhcmRzLA0KPj4gPj4NCj4+ID4+IEJoYXJhdCBHdXB0YQ0KPj4gPj4NCj4+ ID4+IERldmVsb3BtZW50ICYgU3VwcG9ydCB8IFBsYXRmb3JtIFRlY2huaWNpYW4sIElYQ0IgfCBT Y2FuaWEgSVQNCj4+ID4+DQo+PiA+PiBNb2JpbGU6ICs0NjcwMDg2OTAwNzx0ZWw6KzQ2JTIwNzAl MjAwODYlMjA5MCUyMDA3PiwgKzkxLTk3MTg0ODM4MDINCj4+ID4+IDx0ZWw6KzkxJTIwOTcxODQl MjA4MzgwMj4NCj4+ID4+DQo+PiA+PiBiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbTxtYWlsdG86Ymhh cmF0Lmd1cHRhQHNjYW5pYS5jb20+PG1haWx0bzoNCj4+ID4+IGJoYXJhdC5ndXB0YUBzY2FuaWEu Y29tPg0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ID4+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+PiA+PiBGcm9tOiB0YmFpbjk4QGdtYWlsLmNvbTxtYWlsdG86dGJhaW45OEBn bWFpbC5jb20+PG1haWx0bzp0YmFpbjk4QGcNCj4+ID4+IG1haWwuY29tPiBbbWFpbHRvOg0KPj4g Pj4gdGJhaW45OEBnbWFpbC5jb208bWFpbHRvOnRiYWluOThAZ21haWwuY29tPjxtYWlsdG86dGJh aW45OEBnbWFpbC5jb20+XQ0KPj4gPj4gT24gQmVoYWxmIE9mIFRpbSBCYWluDQo+PiA+PiBTZW50 OiBGcmlkYXksIE5vdmVtYmVyIDI0LCAyMDE3IDc6MTkgUE0NCj4+ID4+IFRvOiBBY3RpdmVNUSBV c2VycyA8dXNlcnNAYWN0aXZlbXEuYXBhY2hlLm9yZzxtYWlsdG86DQo+PiA+PiB1c2Vyc0BhY3Rp dmVtcS5hcGFjaGUub3JnPjxtYWlsdG86DQo+PiA+PiB1c2Vyc0BhY3RpdmVtcS5hcGFjaGUub3Jn PG1haWx0bzp1c2Vyc0BhY3RpdmVtcS5hcGFjaGUub3JnPj4+DQo+PiA+PiBDYzogdXNlcnMtb3du ZXJAYWN0aXZlbXEuYXBhY2hlLm9yZzxtYWlsdG86dXNlcnMtb3duZXJAYWN0aXZlbXEuDQo+PiA+ PiBhcGFjaGUub3JnPjxtYWlsdG86dXNlcnMtb3duZXJADQo+PiA+PiBhY3RpdmVtcS5hcGFjaGUu b3JnPGh0dHA6Ly9hY3RpdmVtcS5hcGFjaGUub3JnPg0KPj4gPj4NCj4+ID4+IFN1YmplY3Q6IFJF OiBBY3RpdmVNUSBjdXN0b20gcGx1Z2luDQo+PiA+Pg0KPj4gPj4NCj4+ID4+DQo+PiA+PiAxLiBZ b3VyIHNlbmQoKSBtZXRob2QgbmVlZHMgdG8gY2FsbCBzdXBlci5zZW5kKCkgYWZ0ZXIgZG9pbmcg eW91cg0KPj4gPj4gY3VzdG9tDQo+PiA+Pg0KPj4gPj4gd29yaywgb3RoZXJ3aXNlIHRoZSBtZXNz YWdlIHdpbGwgbmV2ZXIgYmUgc2VudCB0byB0aGUgcmVhbCBCcm9rZXINCj4+ID4+IG9iamVjdC4N Cj4+ID4+DQo+PiA+PiBQbGVhc2UgcmV2aWV3IHRoZSB3aWtpIHBhZ2UgSSByZWZlcnJlZCB0byBl YXJsaWVyLCB3aGljaCBjb3ZlcnMgaG93IHRvDQo+PiA+Pg0KPj4gPj4gaW1wbGVtZW50IGFuIGlu dGVyY2VwdG9yLg0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4gMi4gVG8gbWUgaXQgc291bmRz IGxpa2UgeW91ciBwbHVnaW4gaXNuJ3QgZ2V0dGluZyBpbnN0YWxsZWQuIERvIHlvdQ0KPj4gPj4g aGF2ZQ0KPj4gPj4NCj4+ID4+IGFueSBpbmRpY2F0aW9uIHRoYXQgaXQgaXMsIGZyb20gbG9ncyBv ciBzb21lIG90aGVyIG1lY2hhbmlzbT8gQW5kIGNhbg0KPj4gPj4geW91DQo+PiA+Pg0KPj4gPj4g cGxlYXNlIHNoYXJlIHRoZSBjb2RlIG9mIHRoZSBjbGFzcyB0aGF0IGltcGxlbWVudHMgQnJva2Vy UGx1Z2luLCB0bw0KPj4gPj4gY29uZmlybQ0KPj4gPj4NCj4+ID4+IHRoYXQgeW91ciBpbnN0YWxs UGx1Z2luKCkgbWV0aG9kIGxvb2tzIHJpZ2h0LCBhbmQgdGhlIFhNTCBibG9jayB3aGVyZQ0KPj4g Pj4geW91DQo+PiA+Pg0KPj4gPj4gY3JlYXRlIHRoZSBwbHVnaW4gYmVhbj8NCj4+ID4+DQo+PiA+ Pg0KPj4gPj4NCj4+ID4+IFRpbQ0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4gT24gTm92IDI0 LCAyMDE3IDg6MzkgQU0sICJHdXB0YSBCaGFyYXQiIDxiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbTxt YWlsdA0KPj4gbzoNCj4+ID4+IGJoYXJhdC5ndXB0YUBzY2FuaWEuY29tPjwNCj4+ID4+IG1haWx0 bzoNCj4+ID4+IGJoYXJhdC5ndXB0YUBzY2FuaWEuY29tPG1haWx0bzpiaGFyYXQuZ3VwdGFAc2Nh bmlhLmNvbT4+PiB3cm90ZToNCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ID4+IEhlbGxvLA0KPj4g Pj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4gSSB0cmllZCBpbXBsZW1lbnRpbmcgdGhlIG1ldGhvZCBh cyBiZWxvdzoNCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ID4+ICAgICAgICBwdWJsaWMgdm9pZCBz ZW5kKFByb2R1Y2VyQnJva2VyRXhjaGFuZ2UgcHJvZHVjZXJFeGNoYW5nZSwNCj4+ID4+DQo+PiA+ PiBBY3RpdmVNUU1lc3NhZ2UgbWVzc2FnZVNlbmQpIHRocm93cyBKTVNFeGNlcHRpb24NCj4+ID4+ DQo+PiA+PiAgICAgICAgIHsNCj4+ID4+DQo+PiA+PiAgICAgICAgICAgICAgICAgIGJ5dGVbXSBt ZXNzYWdlQnl0ZXMgPQ0KPj4gPj4gbWVzc2FnZVNlbmQuZ2V0Q29udGVudCgpLmRhdGE7DQo+PiA+ Pg0KPj4gPj4gICAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG5ldyBTdHJpbmcobWVz c2FnZUJ5dGVzKTsNCj4+ID4+DQo+PiA+PiAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvPGh0 dHA6Ly9sb2dnZXIuaW5mbz48aHR0cDovL2xvZ2dlci5pbmZvDQo+PiA+KCJtZXNzYWdlQm9keSIN Cj4+ID4+ICsNCj4+ID4+IG1lc3NhZ2UpOw0KPj4gPj4NCj4+ID4+ICAgICAgICB9DQo+PiA+Pg0K Pj4gPj4NCj4+ID4+DQo+PiA+PiBBbHNvIEkgYW0gcHVibGlzaGluZyBhIG1lc3NhZ2Ugb24gYSB0 b3BpYyBldmVuIHRob3VnaCB0aGlzIHNlbmQoKQ0KPj4gPj4gbWV0aG9kDQo+PiA+Pg0KPj4gPj4g aXMgbm90IGJlZW4gY2FsbGVkIGFzIGxvZ2dlci5pbmZvPGh0dHA6Ly9sb2dnZXIuaW5mbz48DQo+ PiBodHRwOi8vbG9nZ2VyLmluZm8+DQo+PiA+PiBpcyBub3QgZ2V0dGluZw0KPj4gPj4gcHJpbnRl ZCBpbiBteSBDdXN0b20NCj4+ID4+DQo+PiA+PiBQbHVnaW4uDQo+PiA+Pg0KPj4gPj4NCj4+ID4+ DQo+PiA+PiBDb3VsZCB5b3UgcGxlYXNlIGhlbHAgbWUgb24gdGhpcz8NCj4+ID4+DQo+PiA+Pg0K Pj4gPj4NCj4+ID4+IFJlZ2FyZHMsDQo+PiA+Pg0KPj4gPj4gQmhhcmF0IEd1cHRhDQo+PiA+Pg0K Pj4gPj4gRGV2ZWxvcG1lbnQgJiBTdXBwb3J0IHwgUGxhdGZvcm0gVGVjaG5pY2lhbiwgSVhDQiB8 IFNjYW5pYSBJVA0KPj4gPj4NCj4+ID4+IE1vYmlsZTogKzQ2NzAwODY5MDA3PHRlbDorNDYlMjA3 MCUyMDA4NiUyMDkwJTIwMDc+LCArOTEtOTcxODQ4MzgwMg0KPj4gPj4gPHRlbDorOTElMjA5NzE4 NCUyMDgzODAyPg0KPj4gPj4NCj4+ID4+IGJoYXJhdC5ndXB0YUBzY2FuaWEuY29tPG1haWx0bzpi aGFyYXQuZ3VwdGFAc2NhbmlhLmNvbT48bWFpbHRvOg0KPj4gPj4gYmhhcmF0Lmd1cHRhQHNjYW5p YS5jb20+DQo+PiA+Pg0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ID4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+PiA+Pg0KPj4gPj4gRnJvbTogdGJhaW45OEBnbWFpbC5jb208 bWFpbHRvOnRiYWluOThAZ21haWwuY29tPjxtYWlsdG86dGJhaW45OEBnDQo+PiA+PiBtYWlsLmNv bT4gW21haWx0bzoNCj4+ID4+IHRiYWluOThAZ21haWwuY29tPG1haWx0bzp0YmFpbjk4QGdtYWls LmNvbT5dIE9uIEJlaGFsZiBPZiBUaW0gQmFpbg0KPj4gPj4NCj4+ID4+IFNlbnQ6IEZyaWRheSwg Tm92ZW1iZXIgMjQsIDIwMTcgNzoxNSBQTQ0KPj4gPj4NCj4+ID4+IFRvOiBBY3RpdmVNUSBVc2Vy cyA8dXNlcnNAYWN0aXZlbXEuYXBhY2hlLm9yZzxtYWlsdG86DQo+PiA+PiB1c2Vyc0BhY3RpdmVt cS5hcGFjaGUub3JnPjxtYWlsdG86DQo+PiA+PiB1c2Vyc0BhY3RpdmVtcS5hcGFjaGUub3JnPG1h aWx0bzp1c2Vyc0BhY3RpdmVtcS5hcGFjaGUub3JnPj4+DQo+PiA+Pg0KPj4gPj4gQ2M6IHVzZXJz LW93bmVyQGFjdGl2ZW1xLmFwYWNoZS5vcmc8bWFpbHRvOnVzZXJzLW93bmVyQGFjdGl2ZW1xLg0K Pj4gPj4gYXBhY2hlLm9yZz48bWFpbHRvOnVzZXJzLW93bmVyQA0KPj4gPj4gYWN0aXZlbXEuYXBh Y2hlLm9yZzxodHRwOi8vYWN0aXZlbXEuYXBhY2hlLm9yZz4+DQo+PiA+Pg0KPj4gPj4gU3ViamVj dDogUmU6IEFjdGl2ZU1RIGN1c3RvbSBwbHVnaW4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ID4+ IEFzIEkgc2FpZCBpbiB5b3VyIG90aGVyIHRocmVhZCwgeW91IHdvdWxkIGRvIHRoYXQgYnkgaW1w bGVtZW50aW5nDQo+PiA+PiBjb2RlDQo+PiA+PiBpbg0KPj4gPj4NCj4+ID4+IHRoZSBzZW5kKCkg bWV0aG9kIG9mIHlvdXIgc3ViY2xhc3Mgb2YgQnJva2VyRmlsdGVyLCB3aGljaCB5b3Ugd291bGQN Cj4+ID4+IGNyZWF0ZQ0KPj4gPj4NCj4+ID4+IGFuZCByZXR1cm4gaW4geW91ciBpbnN0YWxsUGx1 Z2luKCkgbWV0aG9kLg0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4gVGltDQo+PiA+Pg0KPj4g Pj4NCj4+ID4+DQo+PiA+PiBPbiBOb3YgMjQsIDIwMTcgMzo1MSBBTSwgIkd1cHRhIEJoYXJhdCIg PGJoYXJhdC5ndXB0YUBzY2FuaWEuY29tPG1haWx0DQo+PiBvOg0KPj4gPj4gYmhhcmF0Lmd1cHRh QHNjYW5pYS5jb20+PA0KPj4gPj4gbWFpbHRvOg0KPj4gPj4gYmhhcmF0Lmd1cHRhQHNjYW5pYS5j b208bWFpbHRvOmJoYXJhdC5ndXB0YUBzY2FuaWEuY29tPj4+IHdyb3RlOg0KPj4gPj4NCj4+ID4+ DQo+PiA+Pg0KPj4gPj4gSGVsbG8sDQo+PiA+Pg0KPj4gPj4NCj4+ID4+DQo+PiA+PiBJIGhhdmUg YSBzY2VuYXJpbyBhcyBmb2xsb3dzOg0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ID4+ DQo+PiA+PiAxLiAgICAgICBJIGhhdmUgQ3VzdG9tIFBsdWdpbnMgdGhhdCBkZWNyeXB0cyB0aGUg ZGF0YSBhbmQgdmFsaWRhdGVzDQo+PiA+PiBpdC4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ID4+ IDIuICAgICAgIEkgYW0gZ2V0dGluZyBFbmNyeXB0ZWQgZGF0YSAodG9rZW4pIGZyb20gdXNlciB0 aGF0IG5lZWQgdG8NCj4+ID4+IGJlDQo+PiA+Pg0KPj4gPj4gZGVjcnlwdGVkIG9uIGN1c3RvbSBw bHVnaW4uDQo+PiA+Pg0KPj4gPj4NCj4+ID4+DQo+PiA+PiAzLiAgICAgICBDbGllbnQgaXMgYWNj ZXNzaW5nIHRoZSBicm9rZXIgdXNpbmcgbXF0dCBwcm90b2NvbA0KPj4gPj4NCj4+ID4+DQo+PiA+ Pg0KPj4gPj4gTmVlZCBTb2x1dGlvbiBmb3IgdGhlIGZvbGxvd2luZzoNCj4+ID4+DQo+PiA+Pg0K Pj4gPj4NCj4+ID4+IDEuICAgICAgIEJlZm9yZSBnZXR0aW5nIGRhdGEgb250byB0b3BpYyBvbiBB Q3RpdmVNUSBicm9rZXIgSSBuZWVkIHRvDQo+PiA+Pg0KPj4gPj4gdmFsaWRhdGUgdGhlICBkYXRh KHRva2VuKSBpbiBteSBjdXN0b20gcGx1Z2luDQo+PiA+Pg0KPj4gPj4NCj4+ID4+DQo+PiA+PiAy LiAgICAgICBIb3cgdG8gZXh0cmFjdCBhIGRhdGEgd2hhdCBjdXN0b21lciBpcyBzZW5kaW5nPyBT byB0aGF0IEkNCj4+ID4+IGNhbg0KPj4gPj4NCj4+ID4+IGV4dHJhY3QgdGhlIGRhdGEsIGRlY3J5 cHQgdGhlIG1lc3NhZ2UgYW5kIHZhbGlkYXRlLg0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4N Cj4+ID4+DQo+PiA+PiBJbXBsZW1lbnRhdGlvbiBzbyBmYXI6DQo+PiA+Pg0KPj4gPj4NCj4+ID4+ DQo+PiA+PiAxLiAgICAgICBDdXN0b20gUGx1Z2luIGlzIHJlYWR5IGFuZCBKQVIgaGFzIGJlZW4g YWRkZWQgaW4NCj4+ID4+IDxBY3RpdmVNUT4vbGlicw0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4g Pj4gMi4gICAgICAgQWRkZWQgdGhlIHBsdWdpbiBjb25maWd1cmF0aW9uIGluIGFjdGl2ZW1xLnht bA0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ID4+DQo+PiA+PiBDb3VsZCBhbnlvbmUg aGVscCBtZSB3aXRoIGEgc29sdXRpb24gZm9yIHRoZSBzYW1lIGFzIGl0J3MgY3JpdGljYWwNCj4+ ID4+IGNhc2UuDQo+PiA+Pg0KPj4gPj4NCj4+ID4+DQo+PiA+PiBUaGFuayB5b3UgSW4gQWR2YW5j ZQ0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4gUmVnYXJkcywNCj4+ID4+DQo+PiA+PiBCaGFy YXQgR3VwdGENCj4+ID4+DQo+PiA+PiBEZXZlbG9wbWVudCAmIFN1cHBvcnQgfCBQbGF0Zm9ybSBU ZWNobmljaWFuLCBJWENCIHwgU2NhbmlhIElUDQo+PiA+Pg0KPj4gPj4gTW9iaWxlOiArNDY3MDA4 NjkwMDc8dGVsOis0NiUyMDcwJTIwMDg2JTIwOTAlMjAwNz4sICs5MS05NzE4NDgzODAyDQo+PiA8 KzkxJTIwOTcxODQlMjA4MzgwMj4NCj4+ID4+IDwrOTElMjA5NzE4NCUyMDgzODAyPg0KPj4gPj4g PHRlbDorOTElMjA5NzE4NCUyMDgzODAyPg0KPj4gPj4NCj4+ID4+IGJoYXJhdC5ndXB0YUBzY2Fu aWEuY29tPG1haWx0bzpiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbT48bWFpbHRvOg0KPj4gPj4gYmhh cmF0Lmd1cHRhQHNjYW5pYS5jb208bWFpbHRvOg0KPj4gPj4gYmhhcmF0Lmd1cHRhQHNjYW5pYS5j b208bWFpbHRvOmJoYXJhdC5ndXB0YUBzY2FuaWEuY29tPiUzY21hDQo+PiA+PiBpbHRvOmJoYXJh dC5ndXB0YUBzY2FuaWEuY29tPG1haWx0bzpiaGFyYXQuZ3VwdGFAc2NhbmlhLmNvbT4+Pg0KPj4g Pj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+DQo+DQo=