From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web12.13538.1588953514328337706 for ; Fri, 08 May 2020 08:58:34 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=tg2FHUbx; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: liming.gao@intel.com) IronPort-SDR: IuipfLQTFd9PSRHYv5Tu6nLNroj/N52cfB2EWF5+EwxnPHJBw8sGMhvdfxWeDFeECEVxPc0g57 7YT1UVjnDkaw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 May 2020 08:58:33 -0700 IronPort-SDR: Y1G563xBgUyJIJsTtw54CCgXxGysfJdVhHreewNikVRgJSwoQ1RT3xPea6EZoR54yZgMmVdoW4 ZVYT+UGMzmTQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,368,1583222400"; d="scan'208";a="462336212" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga005.fm.intel.com with ESMTP; 08 May 2020 08:58:32 -0700 Received: from fmsmsx604.amr.corp.intel.com (10.18.126.84) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 8 May 2020 08:58:32 -0700 Received: from fmsmsx604.amr.corp.intel.com (10.18.126.84) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 8 May 2020 08:58:31 -0700 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Fri, 8 May 2020 08:58:31 -0700 Received: from NAM02-BL2-obe.outbound.protection.outlook.com (104.47.38.55) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 8 May 2020 08:58:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a6WxLa5QHSicDqvmCQNSIVSa+MZIu26NHu/pY1Qe/MO7fA8dnwBCKHDgl9/xZQnSkli2bEKppWxzU2UblXjs4s3z0BlO/ji+bGpGKBYNVQ+YAJmK6V8STM8G669B0Sj7K95abhpTFNXf/PtUvNgEJfAV+uW9ufLlnHcehB7r04JI02zGnZRYuOj7E2UHe6h7xfncePfjawzusM2a8t7V0GEHdF+jnpSAmPOgDlWcRrw9kxcTtemTYe+pzNRdc6cYQNzq7+0PMPHtoCeolJR2/vH93eNXqc8+OG5u1HGwRCjJXHybrywHzi42uI72wm6YtGojZWUwvvk4oNUDjVfVwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bPbebCJURi+r0BuIcH24ui81GjKXKkvN3ffUlrLs6F8=; b=QaXkawO0aqTNCP1YXWayLvG2IbOp9gUEBctBLN/EauOqRE7Fq0FhLkl1GLZT3tEnLbW1qoCmNd+10PV8L22BbUTteUPYGNPUICRVObMZf9+KiJrLArzETWlxQv/l1MWnaxVob9C57jZZ5SDKHuGo9i7fm5grF427gTiAaKW+1KGmRlV+RngP19UKuvv3c5wAft5OGDqHrbGrymCSTN32H2izTjvsc5h94KKVC2oyO5I+Qu3WompZx6H4uQLQgP0SsOJL8o5SWt9NzCrcjuKbrFBmPZczleFTgNMmLvcbapW2snOtV5iaZNVrSNjKBZjb2MvmdNQdlGb7U8Yg+aGvNQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bPbebCJURi+r0BuIcH24ui81GjKXKkvN3ffUlrLs6F8=; b=tg2FHUbxZHz/fKUdaUkF9VymjRY0u83WZCWuiyeup1B9pb4amRGpGMsiaTh/5n0niL4Up8MRlIUJqp96u7KQE5mhAimegFrGB8zR42RsvMnZjG0xBs58Twor8WQbVsvRDRUdKcymiEmyLT/IvN1QalFyYYDmsV3tk0sBKZ38TdA= Received: from BN6PR11MB3972.namprd11.prod.outlook.com (2603:10b6:405:7f::11) by BN6PR11MB4003.namprd11.prod.outlook.com (2603:10b6:405:7b::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2958.27; Fri, 8 May 2020 15:58:26 +0000 Received: from BN6PR11MB3972.namprd11.prod.outlook.com ([fe80::75bf:f1b7:1d9d:475d]) by BN6PR11MB3972.namprd11.prod.outlook.com ([fe80::75bf:f1b7:1d9d:475d%3]) with mapi id 15.20.2958.035; Fri, 8 May 2020 15:58:26 +0000 From: "Liming Gao" To: "devel@edk2.groups.io" , "Gao, Zhichao" , "samer.el-haj-mahmoud@arm.com" , Vladimir Olovyannikov , "Ni, Ray" , "Fu, Siyuan" , "Wu, Jiaxin" , "Maciej Rabeda" CC: nd , "Gao, Liming" Subject: Re: [edk2-devel] [PATCH 1/1] ShellPkg/DynamicCommand: add HttpDynamicCommand Thread-Topic: [edk2-devel] [PATCH 1/1] ShellPkg/DynamicCommand: add HttpDynamicCommand Thread-Index: AQHWFkZddv8JC/P5PEeq81QL2uFgLqiCQI0AgAGMawCAAA10gIAaNiEAgABlTwCAAABe8A== Date: Fri, 8 May 2020 15:58:25 +0000 Message-ID: References: <20200125005718.8931-1-vladimir.olovyannikov@broadcom.com> <9a006acebab2c210464a84a99df2e40f@mail.gmail.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.52.202] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e910d6cc-395f-45d2-a39b-08d7f368a4b1 x-ms-traffictypediagnostic: BN6PR11MB4003: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1850; x-forefront-prvs: 039735BC4E x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0kWK8OWZ6J8S5sRRSLwiKiu2bnRw3j99rfCMNGSvp3/VANe9AMJVBjg4Hv4CzAnIWjnRypSj9F2jgIhQe/ydr96sJGBTdU3brRCyx6X7kee8SeWYGOc6e5OHA3fVT3zzhIBUxQMuhSuBGry2DiShVkJtFl7JZnhKEaTge4Vup8bRy6gQ404XUy8j+jF6ODzGzlb5c6uIhk1gAiIBkBdFFS2ARVXIrrhA5ho7WNN2N+GVbKnvlMdeML8bWn+DyOH364Xgq+mwsPeFmUkPrZYpMVOt6A3lZtWNw7fHFZR56CIuB37g3N33lD6fbN5kudv+XKUL36IsSyfxMiU1z7tw65MMHcEjAfJ7mD+n/VRWyRLfMQsxm/FpcQeFQefX2Ptic6a5LfY4gxJHYB45sRFzyo/cWeRvTokVIHwMy9zg0bcW69zzd2xMA+DeQ7dab/p3UFP2u7HuxYWHNSR2NMvLIMeiyp7exO655nA4c6memwObe+G43FFn148UEaTp9O28VkMXcKFYYB/YbLDSV5gw/zaKt1a0rYWJTqwb8H/BYwL951liOJo+6/yPne5y9j9cCsNvcSl4RbmU1B+b7UrkLP8vRCV4yaBo8u+ptztLVl/wOt1Xc4k4PsX186X+Q0uDbAfNaZ7nJVb9s+l/3oxgLg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN6PR11MB3972.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(6019001)(396003)(39860400002)(366004)(346002)(376002)(136003)(33430700001)(478600001)(66476007)(83080400001)(110136005)(2906002)(66556008)(7696005)(6506007)(86362001)(54906003)(33656002)(52536014)(30864003)(8936002)(186003)(4326008)(5660300002)(8676002)(26005)(19627235002)(76116006)(64756008)(9686003)(66946007)(33440700001)(55016002)(316002)(83320400001)(83280400001)(83310400001)(83290400001)(966005)(71200400001)(53546011)(83300400001)(66446008)(921003)(559001)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: h+rmpcpa0Sq0O+dJpfUIDUoqwte4XWsVKHsyoEo763V02/XLD5liCgg392LntHPL4rUbrtH/1QUhezHFMnjgy8ypMLR5HCRzZ2VxuMnLIY60NtfF/s5OFaz0up4bKFxwuIoERtnYOvu4j7m4hwbGnTFwTB0AHSMRFr6QpW0CKSj+PmauBmRfhWzwVALA6198O2Y+FDLu3qH3F7I8a6hlAEAi3B0rKRT4ZpIE/0Q17xC5mms0TMZlbBCGIfTPLvzI++XOBG51xi4lZjRQ1/zzSjNL3szS5/2bmpGQJ6P9RKNaR0h7Yg4fiZ7MEBOm/F6v611FS6DTmE+xhK/MU7Zl+Lodq8M7nCPb9Pb8YDWCQYEe2Wzg0kpkVWm2r4ZezqjOANFIXlfYaVa2LkR+I6UmomR0274mBUS9cYdzDONo2sExoOrKYovlMaIEO0uwdFffSv035QW73f5z3254E1krEMX+aRGgZJ3I0s0Whbxk21UXeBzoCGv3Pj+HyL/T1N75 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: e910d6cc-395f-45d2-a39b-08d7f368a4b1 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 May 2020 15:58:25.9039 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HttLgGSd+JxJkVYK9TR+6c1RLV2FuGGaKO4+qQMXP96C1BBl3NP4HDBlc6MySbztYAwGWM2+tF1Wmxhp6PgoVQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB4003 Return-Path: liming.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SW5jbHVkZSBNYWNpZWogZm9yIG5ldHdvcmsgcGFydC4gDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBz LmlvPiBPbiBCZWhhbGYgT2YgR2FvLCBaaGljaGFvDQo+IFNlbnQ6IEZyaWRheSwgTWF5IDgsIDIw MjAgMTE6NTYgUE0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBzYW1lci5lbC1oYWotbWFo bW91ZEBhcm0uY29tOyBWbGFkaW1pciBPbG92eWFubmlrb3YgPHZsYWRpbWlyLm9sb3Z5YW5uaWtv dkBicm9hZGNvbS5jb20+OyBOaSwNCj4gUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgRnUsIFNpeXVh biA8c2l5dWFuLmZ1QGludGVsLmNvbT47IFd1LCBKaWF4aW4gPGppYXhpbi53dUBpbnRlbC5jb20+ DQo+IENjOiBuZCA8bmRAYXJtLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFU Q0ggMS8xXSBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZDogYWRkIEh0dHBEeW5hbWljQ29tbWFuZA0K PiANCj4gSSB0aGluayB0aGUgTmV0d29ya1BrZyBtYWludGFpbmVyIGNhbiBnaXZlIGEgYmV0dGVy IGNvbW1lbnQgYW5kIHRoZSByZW1haW4gcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gbmVlZCB0 aGVpciBoZWxwIHRvIHJldmlldy4NCj4gDQo+IEhpIEppYXhpbi9TaXl1YW4sDQo+IA0KPiBEbyB5 b3UgaGF2ZSBhbnkgY29tbWVudHMgb24gdGhpcz8gQW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBw YXJ0IG9mIE5ldHdvcmtQa2cgcHJvdG9jb2wgdXNhZ2UuIEkgYW0gbm90IGZhbWlsaWFyIHdpdGgg dGhpcy4gUGxlYXNlDQo+IGhlbHAgdG8gcmV2aWV3Lg0KPiANCj4gVGhhbmtzLA0KPiBaaGljaGFv DQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogZGV2ZWxAZWRr Mi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgU2FtZXIgRWwt DQo+ID4gSGFqLU1haG1vdWQNCj4gPiBTZW50OiBGcmlkYXksIE1heSA4LCAyMDIwIDU6NTQgUE0N Cj4gPiBUbzogVmxhZGltaXIgT2xvdnlhbm5pa292IDx2bGFkaW1pci5vbG92eWFubmlrb3ZAYnJv YWRjb20uY29tPjsNCj4gPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgTmksIFJheSA8cmF5Lm5pQGlu dGVsLmNvbT47IEdhbywgWmhpY2hhbw0KPiA+IDx6aGljaGFvLmdhb0BpbnRlbC5jb20+DQo+ID4g Q2M6IG5kIDxuZEBhcm0uY29tPg0KPiA+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENI IDEvMV0gU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQ6IGFkZA0KPiA+IEh0dHBEeW5hbWljQ29tbWFu ZA0KPiA+DQo+ID4gQW55IHVwZGF0ZSBvbiB0aGlzIHBhdGNoPyBUaGlzIGlzIGEgdXNlZnVsIGNv bW1hbmQgdG8gYWRkIHRvIHRoZSBTaGVsbCAoZm9yIGJvdGgNCj4gPiB0ZXN0aW5nIGFuZCBkZXBs b3ltZW50L3NjcmlwdGluZykuDQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gPiBGcm9tOiBWbGFkaW1pciBPbG92eWFubmlrb3YgPHZsYWRpbWlyLm9sb3Z5YW5uaWtv dkBicm9hZGNvbS5jb20+DQo+ID4gPiBTZW50OiBUdWVzZGF5LCBBcHJpbCAyMSwgMjAyMCAxOjM3 IFBNDQo+ID4gPiBUbzogU2FtZXIgRWwtSGFqLU1haG1vdWQgPFNhbWVyLkVsLUhhai1NYWhtb3Vk QGFybS5jb20+Ow0KPiA+ID4gZGV2ZWxAZWRrMi5ncm91cHMuaW87IFJheSBOaSA8cmF5Lm5pQGlu dGVsLmNvbT47IFpoaWNoYW8gR2FvDQo+ID4gPiA8emhpY2hhby5nYW9AaW50ZWwuY29tPg0KPiA+ ID4gQ2M6IG5kIDxuZEBhcm0uY29tPg0KPiA+ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBb UEFUQ0ggMS8xXSBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZDogYWRkDQo+ID4gPiBIdHRwRHluYW1p Y0NvbW1hbmQNCj4gPiA+DQo+ID4gPiAuLiBTa2lwcGVkLi4NCj4gPiA+ID4gVGhhbmtzIFZsYWRp bWlyIGZvciB0aGUgZXhwbGFuYXRpb24uDQo+ID4gPiA+DQo+ID4gPiA+IFdvbmRlcmluZyB3aGF0 IGlzIG1vcmUgdXNlZnVsIHRvIHVzZXJzOg0KPiA+ID4gPg0KPiA+ID4gPiAgIDEtIEhhdmluZyB0 aGUgJ2h0dHAnIGFuZCAndGZ0cCcgY29tbWFuZHMgc2hhcmUgYSBjb21tb24gaW50ZXJmYWNlIHRv DQo+ID4gPiA+IG1ha2UNCj4gPiA+ID4gaXQgZWFzaWVyIHRvIHNjcmlwdCB1c2luZyBlaXRoZXIg dG9vbC9wcm90b2NvbCAoYXMgZXhwbGFpbmVkIGJlbG93KQ0KPiA+ID4gPiBPcg0KPiA+ID4gPiAg IDItIEhhdmluZyBhIG1vcmUgbmF0dXJhbCBzdXBwb3J0IGZvciBVUklzIGluICdodHRwJyBjb21t YW5kLCBzaW1pbGFyIHRvDQo+ID4gPiA+IHdoYXQNCj4gPiA+ID4gaXMgY29tbW9uIGluIG90aGVy IGh0dHAgQ0xJIGNsaWVudHMgbGlrZSBjdXJsDQo+ID4gPiA+DQo+ID4gPiA+IElmICgxKSBpcyBp bXBvcnRhbnQgZW5vdWdoIGZvciB1c2VycywgdGhlbiBjb3VsZCB3ZSBlbnRlcnRhaW4gYWRkaW5n ICgyKQ0KPiA+ID4gPiBpbg0KPiA+ID4gPiBhZGRpdGlvbiB0byAoMSkuDQo+ID4gPiBUaGFuayB5 b3UgZm9yIHRoZSBmZWVkYmFjayBTYW1lciwNCj4gPiA+IFdlbGwsICgxKSBpcyBpbXBvcnRhbnQg Zm9yIHVzIGFzIHdlIHVzZSB1bml2ZXJzYWwgVUVGSSBTaGVsbCBzY3JpcHRzIGZvcg0KPiA+ID4g bXVsdGlwbGUgaW1hZ2VzIHVwZGF0ZXMgZnJvbSBhbnkgbWVkaWEgKHVzYiwgbmV0d29yayhodHRw L3RmdHApLCBldGMuKQ0KPiA+ID4gSSBhZ3JlZSB0aGF0IGFkZGluZyAoMikgdG8gKDEpIG1ha2Vz IHNlbnNlLiBXb3VsZCBiZSBuaWNlIHRvIGdldCBtb3JlDQo+ID4gPiBmZWVkYmFjayBmcm9tIGVk azIgY29tbXVuaXR5IG9uIHRoYXQuDQo+ID4gPg0KPiA+ID4gVGhhbmsgeW91LA0KPiA+ID4gVmxh ZGltaXINCj4gPiA+ID4NCj4gPiA+ID4gVGhhbmtzLA0KPiA+ID4gPiAtLVNhbWVyDQo+ID4gPiA+ DQo+ID4gPiA+DQo+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4g PiBGcm9tOiBWbGFkaW1pciBPbG92eWFubmlrb3YgPHZsYWRpbWlyLm9sb3Z5YW5uaWtvdkBicm9h ZGNvbS5jb20+DQo+ID4gPiA+ID4gU2VudDogTW9uZGF5LCBBcHJpbCAyMCwgMjAyMCAxOjEwIFBN DQo+ID4gPiA+ID4gVG86IFNhbWVyIEVsLUhhai1NYWhtb3VkIDxTYW1lci5FbC1IYWotTWFobW91 ZEBhcm0uY29tPjsNCj4gPiA+ID4gPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgUmF5IE5pIDxyYXku bmlAaW50ZWwuY29tPjsgWmhpY2hhbyBHYW8NCj4gPiA+ID4gPiA8emhpY2hhby5nYW9AaW50ZWwu Y29tPg0KPiA+ID4gPiA+IENjOiBuZCA8bmRAYXJtLmNvbT4NCj4gPiA+ID4gPiBTdWJqZWN0OiBS RTogW2VkazItZGV2ZWxdIFtQQVRDSCAxLzFdIFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kOiBhZGQN Cj4gPiA+ID4gPiBIdHRwRHluYW1pY0NvbW1hbmQNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEhpIFNh bWVyLA0KPiA+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ IEZyb206IFNhbWVyIEVsLUhhai1NYWhtb3VkIDxTYW1lci5FbC1IYWotTWFobW91ZEBhcm0uY29t Pg0KPiA+ID4gPiA+ID4gU2VudDogU3VuZGF5LCBBcHJpbCAxOSwgMjAyMCA1OjMxIEFNDQo+ID4g PiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IHZsYWRpbWlyLm9sb3Z5YW5uaWtvdkBi cm9hZGNvbS5jb207DQo+ID4gPiBSYXkNCj4gPiA+ID4gTmkNCj4gPiA+ID4gPiA+IDxyYXkubmlA aW50ZWwuY29tPjsgWmhpY2hhbyBHYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT4NCj4gPiA+ID4g PiA+IENjOiBuZCA8bmRAYXJtLmNvbT4NCj4gPiA+ID4gPiA+IFN1YmplY3Q6IFJFOiBbZWRrMi1k ZXZlbF0gW1BBVENIIDEvMV0gU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQ6IGFkZA0KPiA+ID4gPiA+ ID4gSHR0cER5bmFtaWNDb21tYW5kDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gVGVzdGVkLUJ5 OiBTYW1lciBFbC1IYWotTWFobW91ZCA8U2FtZXIuRWwtSGFqLQ0KPiA+ID4gTWFobW91ZEBhcm0u Y29tPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEkgdGVzdGVkIG9uIEFhcmNoNjQgKFJQaTQp IGFuZCB0aGUgY29tbWFuZCBzZWVtcyB0byB3b3JrIHdlbGwuDQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gT25lIHF1ZXN0aW9uOiB3aHkgaXMgdGhlIGlucHV0IGFyZ3VtZW50cyAiaG9zdFs6cG9y dF0iIGFuZCB0aGUgcmVtb3RlDQo+ID4gPiA+ID4gZmlsZQ0KPiA+ID4gPiA+ID4gImh0dHBfdXJp IiBub3QgdHJlYXRlZCBhcyBhIHNpbmdsZSAiaHR0cF91cmkiIGFyZ3VtZW50Pw0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+IEZvciBleGFtcGxlLCBpbnN0ZWFkIG9mOg0KPiA+ID4gPiA+ID4gICAg ZnMwOlw+IGh0dHAgaHR0cDovLzE5Mi4xNjguMS4xOjgwODAgZGlyMS9maWxlMS5kYXQgZmlsZTIu ZGF0DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gV2h5IG5vdDoNCj4gPiA+ID4gPiA+ICAgZnMw Olw+IGh0dHAgaHR0cDovLzE5Mi4xNjguMS4xOjgwODAvZGlyMS9maWxlMS5kYXQgZmlsZTIuZGF0 DQo+ID4gPiA+ID4gVGhlIGlkZWEgd2FzIHRvIG1ha2UgaXQgMTAwJSBjb21wYXRpYmxlIHdpdGgg dGZ0cCBjb21tYW5kLg0KPiA+ID4gPiA+IFRoaXMgd2F5LCBvbmUgY291bGQgZWFzaWx5IHN1cHBv cnQgYm90aCBpbiBvbmUgc2NyaXB0IGxpa2UgdGhpczoNCj4gPiA+ID4gPiBzZXQgLXYgZXRoX2lu dCAiIC1pIGV0aDAiDQo+ID4gPiA+ID4gLi4uDQo+ID4gPiA+ID4gIyBTZXQgdXBkYXRlIHByb3Rv Y29sIG9uIHNvbWUgbG93LWxldmVsIGluaXQNCj4gPiA+ID4gPiBzZXQgdXBkX3Byb3RvIGh0dHAg KG9yIHRmdHAsIG9yIHNvbWV0aGluZyBlbHNlIGlmIG5lZWRlZCBhbmQgc3VwcG9ydGVkKQ0KPiA+ ID4gPiA+IC4uLg0KPiA+ID4gPiA+ICMgU2V0IHByb3RvY29sLXNwZWNpZmljIHBhcmFtZXRlcnMN Cj4gPiA+ID4gPiBpZiAiJXVfcHJvdG8lIiA9PSAidGZ0cCIgdGhlbg0KPiA+ID4gPiA+ICAgc2V0 IC12ICB0ZnRwX2Jsa19wYXJhbSAiIC1zICV0ZnRwX2Jsb2Nrc2l6ZSUiDQo+ID4gPiA+ID4gICBz ZXQgLXYgdGZ0cF93aW5fcGFyYW0gIiAtdyAldGZ0cF93aW5kb3dzaXplJSINCj4gPiA+ID4gPiBl bmRpZg0KPiA+ID4gPiA+IC4uLg0KPiA+ID4gPiA+ICMgIlVuaXZlcnNhbGl6ZSIgdHJhbnNmZXIg Y29tbWFuZA0KPiA+ID4gPiA+IHNldCAtdiB0cmFuc2Zlcl9jbWQgIiV1X3Byb3RvJSAlZXRoX2lu dCUgJXRmdHBfYmxrX3BhcmFtJQ0KPiA+ID4gPiA+ICV0ZnRwX3dpbl9wYXJhbSUNCj4gPiA+ID4g PiAlc2VydmVyaXAlICV0ZnRwX2RpciUiDQo+ID4gPiA+ID4gLi4uDQo+ID4gPiA+ID4gIyBVc2Ug dW5pdmVyc2FsIHRyYW5zZmVyIGNvbW1hbmQgd2l0aCBubyBjaGFuZ2VzIGZvciBhbnkgdXBkYXRl DQo+ID4gPiBwcm90b2NvbA0KPiA+ID4gPiA+IChiZSBpdCB0ZnRwLCBodHRwLCBldGMuKS4NCj4g PiA+ID4gPiAldHJhbnNmZXJfY21kJS9tZDVzdW0udHh0ICVlc3Bfcm9vdCVcbWQ1c3VtLnR4dA0K PiA+ID4gPiA+IC4uLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhhbmtzLA0KPiA+ID4gPiA+IFZs YWRpbWlyDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiA+IEZyb206IGRldmVs QGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mDQo+ID4g PiA+ID4gPiBWbGFkaW1pcg0KPiA+ID4gPiA+ID4gPiBPbG92eWFubmlrb3YgdmlhIEdyb3Vwcy5J bw0KPiA+ID4gPiA+ID4gPiBTZW50OiBGcmlkYXksIEphbnVhcnkgMjQsIDIwMjAgNzo1NyBQTQ0K PiA+ID4gPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IFJheSBOaSA8cmF5Lm5pQGlu dGVsLmNvbT47IFpoaWNoYW8gR2FvDQo+ID4gPiA+ID4gPiA+IDx6aGljaGFvLmdhb0BpbnRlbC5j b20+DQo+ID4gPiA+ID4gPiA+IENjOiBWbGFkaW1pciBPbG92eWFubmlrb3YgPHZsYWRpbWlyLm9s b3Z5YW5uaWtvdkBicm9hZGNvbS5jb20+DQo+ID4gPiA+ID4gPiA+IFN1YmplY3Q6IFtlZGsyLWRl dmVsXSBbUEFUQ0ggMS8xXSBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZDogYWRkDQo+ID4gPiA+ID4g PiA+IEh0dHBEeW5hbWljQ29tbWFuZA0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBJbnRy b2R1Y2UgYW4gaHR0cCBjbGllbnQgdXRpbGl6aW5nIEVESzIgSFRUUCBwcm90b2NvbCwgdG8NCj4g PiA+ID4gPiA+ID4gYWxsb3cgZmFzdCBpbWFnZSBkb3dubG9hZGluZyBmcm9tIGh0dHAvaHR0cHMg c2VydmVycy4NCj4gPiA+ID4gPiA+ID4gSFRUUCBkb3dubG9hZCBzcGVlZCBpcyB1c3VhbGx5IHgz MCB0aW1lcyBmYXN0ZXIgdGhhbiB0ZnRwLg0KPiA+ID4gPiA+ID4gPiBUaGUgY2xpZW50IGlzIGJh c2VkIG9uIHRoZSBzYW1lIGFwcHJvYWNoIGFzIHRmdHAgZHluYW1pYyBjb21tYW5kLA0KPiA+ID4g PiBhbmQNCj4gPiA+ID4gPiA+ID4gdXNlcyB0aGUgc2FtZSBVRUZJIFNoZWxsIGNvbW1hbmQgbGlu ZSBwYXJhbWV0ZXJzLiBUaGlzIG1ha2VzIGl0DQo+ID4gPiBlYXN5DQo+ID4gPiA+ID4gPiA+IGlu dGVncmF0aW5nIGh0dHAgaW50byBleGlzdGluZyBVRUZJIFNoZWxsIHNjcmlwdHMuDQo+ID4gPiA+ ID4gPiA+IE5vdGUgdGhhdCB0byBlbmFibGUgSFRUUCBkb3dubG9hZCwgZmVhdHVyZSBQY2QNCj4g PiA+ID4gPiA+ID4gZ0VmaU5ldHdvcmtQa2dUb2tlblNwYWNlR3VpZC5QY2RBbGxvd0h0dHBDb25u ZWN0aW9ucyBtdXN0DQo+ID4gPiA+ID4gPiA+IGJlIHNldCB0byBUUlVFLg0KPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBWbGFkaW1pciBPbG92eWFubmlrb3YNCj4g PiA+ID4gPiA+IDx2bGFkaW1pci5vbG92eWFubmlrb3ZAYnJvYWRjb20uY29tPg0KPiA+ID4gPiA+ ID4gPiAtLS0NCj4gPiA+ID4gPiA+ID4gIC4uLi9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0Nv bW1hbmQvSHR0cC5jICB8IDE2MzkNCj4gPiA+ID4gPiA+ID4gKysrKysrKysrKysrKysrKysNCj4g PiA+ID4gPiA+ID4gIC4uLi9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cC5o ICB8ICAgODggKw0KPiA+ID4gPiA+ID4gPiAgLi4uL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwLnVu aSAgICAgICAgICAgICAgIHwgICA5NSArDQo+ID4gPiA+ID4gPiA+ICAuLi4vSHR0cER5bmFtaWND b21tYW5kL0h0dHBBcHAuYyAgICAgICAgICAgICAgfCAgIDUzICsNCj4gPiA+ID4gPiA+ID4gIC4u Li9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5pbmYgICAgICAgICAgICB8ICAgNTggKw0KPiA+ ID4gPiA+ID4gPiAgLi4uL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQuYyAg IHwgIDEzNCArKw0KPiA+ID4gPiA+ID4gPiAgLi4uL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwRHlu YW1pY0NvbW1hbmQuaW5mIHwgICA2MyArDQo+ID4gPiA+ID4gPiA+ICBTaGVsbFBrZy9JbmNsdWRl L0d1aWQvU2hlbGxMaWJIaWlHdWlkLmggICAgICAgfCAgICA3ICstDQo+ID4gPiA+ID4gPiA+ICBT aGVsbFBrZy9TaGVsbFBrZy5kZWMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsNCj4g PiA+ID4gPiA+ID4gIFNoZWxsUGtnL1NoZWxsUGtnLmRzYyAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDUgKw0KPiA+ID4gPiA+ID4gPiAgMTAgZmlsZXMgY2hhbmdlZCwgMjE0MiBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ID4gPiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQN Cj4gPiA+ID4gPiA+ID4gU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5k L0h0dHAuYw0KPiA+ID4gPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+ IFNoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwLmgNCj4gPiA+ ID4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiBTaGVsbFBrZy9EeW5h bWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cC51bmkNCj4gPiA+ID4gPiA+ID4gIGNy ZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiBTaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9I dHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5jDQo+ID4gPiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAx MDA2NDQNCj4gPiA+ID4gPiA+ID4gU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWND b21tYW5kL0h0dHBBcHAuaW5mDQo+ID4gPiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiBTaGVsbFBrZy9EeW5hbWlj Q29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kDQo+ID4gPiA+ID4g PiAuYw0KPiA+ID4gPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5 bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZA0KPiA+ID4gPiA+ID4gLmluDQo+ID4gPiA+ ID4gPiA+IGYNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4g YS9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cC5jDQo+ID4g PiA+ID4gPiA+IGIvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0 dHAuYw0KPiA+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiBp bmRleCAwMDAwMDAwMDAwMDAuLjRlMGFmMzQxNzM0OA0KPiA+ID4gPiA+ID4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gPiA+ID4gPiA+ICsrKyBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5h bWljQ29tbWFuZC9IdHRwLmMNCj4gPiA+ID4gPiA+ID4gQEAgLTAsMCArMSwxNjM5IEBADQo+ID4g PiA+ID4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ID4gPiA+ID4gKyAgVGhlIGltcGxlbWVudGF0aW9u IGZvciB0aGUgJ2h0dHAnIFNoZWxsIGNvbW1hbmQuDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE1LCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCj4gPiA+ID4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAxOCwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gPiA+ID4gcmVzZXJ2ZWQuDQo+ID4gPiA+ ID4gPEJSPg0KPiA+ID4gPiA+ID4gPiArICAoQykgQ29weXJpZ2h0IDIwMTUgSGV3bGV0dCBQYWNr YXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQNCj4gPiA+IExQPEJSPg0KPiA+ID4gPiA+ID4gPiAr ICBDb3B5cmlnaHQgKGMpIDIwMjAsIEJyb2FkY29tLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+ DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSAiSHR0cC5oIg0KPiA+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiA+ICsjZGVmaW5lIElQNF9DT05GSUcyX0lOVEVSRkFDRV9JTkZPX05BTUVfTEVO R1RIIDMyDQo+ID4gPiA+ID4gPiA+ICtFRklfSElJX0hBTkRMRSAgIG1IdHRwSGlpSGFuZGxlOw0K PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsvKg0KPiA+ID4gPiA+ID4gPiArICAgQ29u c3RhbnQgc3RyaW5ncyBhbmQgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byB0aGUgbWVzc2FnZQ0KPiA+ ID4gPiA+ID4gPiArICAgaW5kaWNhdGluZyB0aGUgYW1vdW50IG9mIHByb2dyZXNzIGluIHRoZSBk b3dsb2FkaW5nIG9mIGEgSFRUUA0KPiA+ID4gPiA+IGZpbGUuDQo+ID4gPiA+ID4gPiA+ICsqLw0K PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsvLyBOdW1iZXIgb2Ygc3RlcHMgaW4gdGhl IHByb2dyZXNzaW9uIHNsaWRlcg0KPiA+ID4gPiA+ID4gPiArI2RlZmluZSBIVFRQX1BST0dSRVNT X1NMSURFUl9TVEVQUyAgXA0KPiA+ID4gPiA+ID4gPiArICAoKHNpemVvZiAoSFRUUF9QUk9HUl9G UkFNRSkgLyBzaXplb2YgKENIQVIxNikpIC0gMykNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiArLy8gU2l6ZSBpbiBudW1iZXIgb2YgY2hhcmFjdGVycyBwbHVzIG9uZSAoZmluYWwgemVy bykgb2YgdGhlDQo+ID4gPiA+ID4gPiA+IG1lc3NhZ2UNCj4gPiA+ID4gPiB0bw0KPiA+ID4gPiA+ ID4gPiArLy8gaW5kaWNhdGUgdGhlIHByb2dyZXNzIG9mIGFuIEhUVFAgZG93bmxvYWQuIFRoZSBm b3JtYXQgaXMNCj4gPiA+ID4gPiAiWyhwcm9ncmVzcw0KPiA+ID4gPiA+ID4gc2xpZGVyOg0KPiA+ ID4gPiA+ID4gPiArLy8gNDAgY2hhcmFjdGVycyldIChuYiBvZiBLQnl0ZXMgZG93bmxvYWRlZCBz byBmYXI6IDcgY2hhcmFjdGVycykNCj4gPiA+ID4gPiBLYiIuDQo+ID4gPiA+ID4gPiBUaGVyZQ0K PiA+ID4gPiA+ID4gPiArLy8gYXJlIHRodXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIEhU VFBfUFJPR1JfRlJBTUVbXSBwbHVzDQo+ID4gPiA+IDExDQo+ID4gPiA+ID4gPiA+IGNoYXJhY3Rl cnMNCj4gPiA+ID4gPiA+ID4gKy8vICgyIC8vIHNwYWNlcywgIktiIiBhbmQgc2V2ZW4gY2hhcmFj dGVycyBmb3IgdGhlIG51bWJlciBvZg0KPiA+ID4gPiA+ID4gPiBLQnl0ZXMpLg0KPiA+ID4gPiA+ ID4gPiArI2RlZmluZSBIVFRQX1BST0dSRVNTX01FU1NBR0VfU0laRSAgXA0KPiA+ID4gPiA+ID4g PiArICAoKHNpemVvZiAoSFRUUF9QUk9HUl9GUkFNRSkgLyBzaXplb2YgKENIQVIxNikpICsgMTIp DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKy8vDQo+ID4gPiA+ID4gPiA+ICsvLyBC dWZmZXIgc2l6ZS4gTm90ZSB0aGF0IGxhcmdlciBidWZmZXIgZG9lcyBub3QgbWVhbiBiZXR0ZXIg c3BlZWQhDQo+ID4gPiA+ID4gPiA+ICsvLw0KPiA+ID4gPiA+ID4gPiArI2RlZmluZSBERUZBVUxU X0JVRl9TSVpFICAgICAgU0laRV8zMktCDQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIE1BWF9CVUZf U0laRSAgICAgICAgICBTSVpFXzRNQg0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsj ZGVmaW5lIFRJTUVSX01BWF9USU1FT1VUX1MgICAxMA0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiA+ICsvLyBGaWxlIG5hbWUgdG8gdXNlIHdoZW4gVVJJIGVuZHMgd2l0aCAiLyINCj4gPiA+ ID4gPiA+ID4gKyNkZWZpbmUgREVGQVVMVF9IVE1MX0ZJTEUgICAgIEwiaW5kZXguaHRtbCINCj4g PiA+ID4gPiA+ID4gKyNkZWZpbmUgREVGQVVMVF9IVFRQX1BST1RPICAgIEwiaHR0cCINCj4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArLy8gU3RyaW5nIHRvIGRlbGV0ZSB0aGUgSFRUUCBw cm9ncmVzcyBtZXNzYWdlIHRvIGJlIGFibGUgdG8gdXBkYXRlDQo+ID4gPiA+ID4gPiA+IGl0DQo+ ID4gPiA+ID4gOg0KPiA+ID4gPiA+ID4gPiArLy8gKEhUVFBfUFJPR1JFU1NfTUVTU0FHRV9TSVpF LTEpICdcYicNCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgSFRUUF9QUk9HUkVTU19ERUwgXA0KPiA+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiBMIlxiXGJc YlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxiXGJcYlxi XGJcDQo+ID4gPiA+ID4gPiBiXGJcYlwNCj4gPiA+ID4gPiA+ID4gK1xiXGJcYlxiXGJcYlxiXGJc YlxiXGJcYlxiXGJcYlxiXGJcYiINCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArI2Rl ZmluZSBIVFRQX0tCICAgICAgICAgICAgICBMIlxiXGJcYlxiXGJcYlxiXGJcYlxiIg0KPiA+ID4g PiA+ID4gPiArLy8gRnJhbWUgZm9yIHRoZSBwcm9ncmVzc2lvbiBzbGlkZXINCj4gPiA+ID4gPiA+ ID4gKyNkZWZpbmUgSFRUUF9QUk9HUl9GUkFNRSAgICAgTCJbDQo+ID4gPiA+ID4gXSINCj4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArLy8gU3RyaW5nIGRlc2NyaXB0aW9ucyBmb3Igc2Vy dmVyIGVycm9ycw0KPiA+ID4gPiA+ID4gPiArU1RBVElDIENPTlNUIENIQVIxNiAqRXJyU3RhdHVz RGVzY1tdID0NCj4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ID4gKyAgTCI0MDAgQmFkIFJl cXVlc3QiLA0KPiA+ID4gPiA+ID4gPiArICBMIjQwMSBVbmF1dGhvcml6ZWQiLA0KPiA+ID4gPiA+ ID4gPiArICBMIjQwMiBQYXltZW50IHJlcXVpcmVkIiwNCj4gPiA+ID4gPiA+ID4gKyAgTCI0MDMg Rm9yYmlkZGVuIiwNCj4gPiA+ID4gPiA+ID4gKyAgTCI0MDQgTm90IEZvdW5kIiwNCj4gPiA+ID4g PiA+ID4gKyAgTCI0MDUgTWV0aG9kIG5vdCBhbGxvd2VkIiwNCj4gPiA+ID4gPiA+ID4gKyAgTCI0 MDYgTm90IGFjY2VwdGFibGUiLA0KPiA+ID4gPiA+ID4gPiArICBMIjQwNyBQcm94eSBhdXRoZW50 aWNhdGlvbiByZXF1aXJlZCIsDQo+ID4gPiA+ID4gPiA+ICsgIEwiNDA4IFJlcXVlc3QgdGltZSBv dXQiLA0KPiA+ID4gPiA+ID4gPiArICBMIjQwOSBDb25mbGljdCIsDQo+ID4gPiA+ID4gPiA+ICsg IEwiNDEwIEdvbmUiLA0KPiA+ID4gPiA+ID4gPiArICBMIjQxMSBMZW5ndGggcmVxdWlyZWQiLA0K PiA+ID4gPiA+ID4gPiArICBMIjQxMiBQcmVjb25kaXRpb24gZmFpbGVkIiwNCj4gPiA+ID4gPiA+ ID4gKyAgTCI0MTMgUmVxdWVzdCBlbnRpdHkgdG9vIGxhcmdlIiwNCj4gPiA+ID4gPiA+ID4gKyAg TCI0MTQgUmVxdWVzdCBVUkkgdG8gbGFyZ2UiLA0KPiA+ID4gPiA+ID4gPiArICBMIjQxNSBVbnN1 cHBvcnRlZCBtZWRpYSB0eXBlIiwNCj4gPiA+ID4gPiA+ID4gKyAgTCI0MTYgUmVxdWVzdGVkIHJh bmdlIG5vdCBzYXRpc2ZpZWQiLA0KPiA+ID4gPiA+ID4gPiArICBMIjQxNyBFeHBlY3RhdGlvbiBm YWlsZWQiLA0KPiA+ID4gPiA+ID4gPiArICBMIjUwMCBJbnRlcm5hbCBzZXJ2ZXIgZXJyb3IiLA0K PiA+ID4gPiA+ID4gPiArICBMIjUwMSBOb3QgaW1wbGVtZW50ZWQiLA0KPiA+ID4gPiA+ID4gPiAr ICBMIjUwMiBCYWQgZ2F0ZXdheSIsDQo+ID4gPiA+ID4gPiA+ICsgIEwiNTAzIFNlcnZpY2UgdW5h dmFpbGFibGUiLA0KPiA+ID4gPiA+ID4gPiArICBMIjUwNCBHYXRld2F5IHRpbWVvdXQiLA0KPiA+ ID4gPiA+ID4gPiArICBMIjUwNSBIVFRQIHZlcnNpb24gbm90IHN1cHBvcnRlZCINCj4gPiA+ID4g PiA+ID4gK307DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKy8vIExvY2FsIEZpbGUg SGFuZGxlDQo+ID4gPiA+ID4gPiA+ICtTVEFUSUMgU0hFTExfRklMRV9IQU5ETEUgICAgIG1GaWxl SGFuZGxlID0gTlVMTDsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArLy8gUGF0aCBv ZiB0aGUgbG9jYWwgZmlsZSwgVW5pY29kZSBlbmNvZGVkDQo+ID4gPiA+ID4gPiA+ICtTVEFUSUMg Q09OU1QgQ0hBUjE2ICAgICAgICAgKm1Mb2NhbEZpbGVQYXRoOw0KPiA+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiA+ICtTVEFUSUMgQk9PTEVBTiBnUmVxdWVzdENhbGxiYWNrQ29tcGxldGUgPSBG QUxTRTsNCj4gPiA+ID4gPiA+ID4gK1NUQVRJQyBCT09MRUFOIGdSZXNwb25zZUNhbGxiYWNrQ29t cGxldGUgPSBGQUxTRTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArLyoqDQo+ID4g PiA+ID4gPiA+ICsgIENsZWFucyBvZmYgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzIGFuZCB0 YWJzLg0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gU3RyaW5n IHBvaW50ZXIgdG8gdGhlIHN0cmluZyB0byB0cmltIHRoZW0gb2ZmLg0KPiA+ID4gPiA+ID4gPiAr KiovDQo+ID4gPiA+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ID4gPiA+ID4gK0VGSV9TVEFUVVMNCj4g PiA+ID4gPiA+ID4gK1RyaW1TcGFjZXMoDQo+ID4gPiA+ID4gPiA+ICsgIElOIENIQVIxNiAqKlN0 cmluZw0KPiA+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiA+ ICsgIEFTU0VSVChTdHJpbmcgIT0gTlVMTCk7DQo+ID4gPiA+ID4gPiA+ICsgIEFTU0VSVCgqU3Ry aW5nIT0gTlVMTCk7DQo+ID4gPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiA+ICsgIC8vIFJl bW92ZSBhbnkgc3BhY2VzIGFuZCB0YWJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlICgqU3RyaW5n KS4NCj4gPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgd2hpbGUgKCgoKlN0cmlu ZylbMF0gPT0gTCcgJykgfHwgKCgqU3RyaW5nKVswXSA9PSBMJ1x0JykpIHsNCj4gPiA+ID4gPiA+ ID4gKyAgICBDb3B5TWVtKCgqU3RyaW5nKSwgKCpTdHJpbmcpKzEsIFN0clNpemUoKCpTdHJpbmcp KSAtDQo+ID4gPiA+ID4gPiBzaXplb2YoKCpTdHJpbmcpWzBdKSk7DQo+ID4gPiA+ID4gPiA+ICsg IH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gPiAr ICAvLyBSZW1vdmUgYW55IHNwYWNlcyBhbmQgdGFicyBhdCB0aGUgZW5kIG9mIHRoZSAoKlN0cmlu ZykuDQo+ID4gPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiA+ICsgIHdoaWxlICgoU3RyTGVu ICgqU3RyaW5nKSA+IDApICYmICgoKCpTdHJpbmcpW1N0ckxlbigoKlN0cmluZykpLTFdDQo+ID4g PiA+ID4gPT0gTCcgJykgfHwNCj4gPiA+ID4gPiA+ID4gKCgqU3RyaW5nKVtTdHJMZW4oKCpTdHJp bmcpKS0xXSA9PSBMJ1x0JykpKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgKCpTdHJpbmcpW1N0ckxl bigoKlN0cmluZykpLTFdID0gQ0hBUl9OVUxMOw0KPiA+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgcmV0dXJuIChFRklfU1VDQ0VTUyk7DQo+ID4gPiA+ ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g PiArLyoNCj4gPiA+ID4gPiA+ID4gKyAqIENhbGxiYWNrcyBmb3IgcmVxdWVzdCBhbmQgcmVzcG9u c2UuDQo+ID4gPiA+ID4gPiA+ICsgKiBXZSBqdXN0IGFja25vd2xlZGdlIHRoYXQgb3BlcmF0aW9u IGhhcyBjb21wbGV0ZWQgaGVyZS4NCj4gPiA+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ID4gPiAr U1RBVElDDQo+ID4gPiA+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ ID4gPiA+ID4gK1JlcXVlc3RDYWxsYmFjayAoDQo+ID4gPiA+ID4gPiA+ICsgIElOIEVGSV9FVkVO VCBFdmVudCwNCj4gPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAqQ29udGV4dA0KPiA+ID4gPiA+ID4g PiArKQ0KPiA+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gPiArICBnUmVxdWVzdENhbGxiYWNr Q29tcGxldGUgPSBUUlVFOw0KPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ID4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gPiA+ID4gK0VG SUFQSQ0KPiA+ID4gPiA+ID4gPiArUmVzcG9uc2VDYWxsYmFjayAoDQo+ID4gPiA+ID4gPiA+ICsg IElOIEVGSV9FVkVOVCBFdmVudCwNCj4gPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAqQ29udGV4dA0K PiA+ID4gPiA+ID4gPiArKQ0KPiA+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gPiArICBnUmVz cG9uc2VDYWxsYmFja0NvbXBsZXRlID0gVFJVRTsNCj4gPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ ID4gKyAgQ2hlY2sgYW5kIGNvbnZlcnQgdGhlIFVJTlQxNiBvcHRpb24gdmFsdWVzIG9mIHRoZSAn aHR0cCcgY29tbWFuZA0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gIFZhbHVlU3RyICBWYWx1ZSBhcyBhbiBVbmljb2RlIGVuY29kZWQgc3RyaW5nDQo+ID4gPiA+ ID4gPiA+ICsgIEBwYXJhbVtvdXRdIFZhbHVlICAgICBVSU5UMTYgdmFsdWUNCj4gPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gPiArICBAcmV0dXJuICAgICBUUlVFICAgICAgVGhlIHZhbHVlIHdh cyByZXR1cm5lZC4NCj4gPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgICAgRkFMU0UgICAgIEEgcGFy c2luZyBlcnJvciBvY2N1cmVkLg0KPiA+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiA+ICtT VEFUSUMNCj4gPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ID4gK1N0cmluZ1RvVWlu dDE2ICgNCj4gPiA+ID4gPiA+ID4gKyAgSU4gICBDT05TVCBDSEFSMTYgICpWYWx1ZVN0ciwNCj4g PiA+ID4gPiA+ID4gKyAgT1VUICBVSU5UMTYgICAgICAgICpWYWx1ZQ0KPiA+ID4gPiA+ID4gPiAr ICApOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ID4g KyAgR2V0IHRoZSBuYW1lIG9mIHRoZSBOSUMuDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgIENvbnRyb2xsZXJIYW5kbGUgIFRoZSBuZXR3b3JrIHBoeXNpY2Fs IGRldmljZQ0KPiA+ID4gPiA+ID4gPiBoYW5kbGUuDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gICBOaWNOdW1iZXIgICAgICAgICBUaGUgbmV0d29yayBwaHlzaWNhbCBkZXZpY2UNCj4gPiA+ ID4gPiA+ID4gbnVtYmVyLg0KPiA+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgTmljTmFtZSAg ICAgICAgICAgQWRkcmVzcyB3aGVyZSB0byBzdG9yZSB0aGUgTklDDQo+ID4gPiA+ID4gPiA+IG5h bWUuDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUg bWVtb3J5IGFyZWEgaGFzIHRvIGJlIGF0IGxlYXN0DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiBJUDRfQ09ORklHMl9JTlRFUkZBQ0VfSU5GT19OQU1FX0xFTkdUSA0KPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGJ5dGUgd2lkZS4NCj4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBAcmV0dXJuICBFRklfU1VDQ0VTUyAgVGhlIG5h bWUgb2YgdGhlIE5JQyB3YXMgcmV0dXJuZWQuDQo+ID4gPiA+ID4gPiA+ICsgIEByZXR1cm4gIE90 aGVycyAgICAgICBUaGUgY3JlYXRpb24gb2YgdGhlIGNoaWxkIGZvciB0aGUgTWFuYWdlZA0KPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgTmV0d29yayBTZXJ2aWNlIGZhaWxl ZCBvciB0aGUgb3BlbmluZyBvZg0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgdGhlIE1hbmFnZWQgTmV0d29yayBQcm90b2NvbCBmYWlsZWQgb3INCj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvcGVyYXRpb25hbCBwYXJhbWV0ZXJzIGZvciB0 aGUNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZWQgTmV0d29y ayBQcm90b2NvbCBjb3VsZCBub3QgYmUNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHJlYWQuDQo+ID4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ID4gK1NUQVRJQw0K PiA+ID4gPiA+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ID4gPiArR2V0TmljTmFtZSAoDQo+ ID4gPiA+ID4gPiA+ICsgIElOICAgRUZJX0hBTkRMRSAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ ID4gPiA+ID4gKyAgSU4gICBVSU5UTiAgICAgICBOaWNOdW1iZXIsDQo+ID4gPiA+ID4gPiA+ICsg IE9VVCAgQ0hBUjE2ICAgICAgKk5pY05hbWUNCj4gPiA+ID4gPiA+ID4gKyAgKTsNCj4gPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiA+ICsgIENyZWF0ZSBhIGNo aWxkIGZvciB0aGUgc2VydmljZSBpZGVudGlmaWVkIGJ5IGl0cyBzZXJ2aWNlIGJpbmRpbmcNCj4g PiA+ID4gPiBwcm90b2NvbA0KPiA+ID4gPiA+ID4gR1VJRA0KPiA+ID4gPiA+ID4gPiArICBhbmQg Z2V0IGZyb20gdGhlIGNoaWxkIHRoZSBpbnRlcmZhY2Ugb2YgdGhlIHByb3RvY29sIGlkZW50aWZp ZWQNCj4gPiA+ID4gPiA+ID4gYnkNCj4gPiA+ID4gPiBpdHMNCj4gPiA+ID4gPiA+IEdVSUQuDQo+ ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIENvbnRyb2xsZXJI YW5kbGUgICAgICAgICAgICBDb250cm9sbGVyIGhhbmRsZS4NCj4gPiA+ID4gPiA+ID4gKyAgQHBh cmFtW2luXSAgIFNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkICBTZXJ2aWNlIGJpbmRpbmcgcHJv dG9jb2wNCj4gPiA+ID4gPiBHVUlEDQo+ID4gPiA+ID4gPiBvZg0KPiA+ID4gPiA+ID4gPiB0aGUN Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZXJ2aWNlIHRvIGJlIGNyZWF0ZWQuDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBQ cm90b2NvbEd1aWQgICAgICAgICAgICAgICAgR1VJRCBvZiB0aGUgcHJvdG9jb2wgdG8NCj4gPiA+ ID4gPiA+ID4gYmUNCj4gPiA+ID4gPiBvcGVuLg0KPiA+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0 XSAgQ2hpbGRIYW5kbGUgICAgICAgICAgICAgICAgIEFkZHJlc3Mgd2hlcmUgdGhlDQo+ID4gPiA+ ID4gPiA+IGhhbmRsZXINCj4gPiA+ID4gPiBvZiB0aGUNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGNoaWxkIGlzDQo+ID4g PiA+ID4gPiA+IHJldHVybmVkLg0KPiA+ID4gPiA+IE5VTEwgaXMNCj4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCBpbiBjYXNl IG9mDQo+ID4gPiA+ID4gPiA+IGVycm9yLg0KPiA+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSAg SW50ZXJmYWNlICAgICAgICAgICAgICAgICAgIEFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyDQo+ID4g PiA+ID4gPiA+IHRvDQo+ID4gPiA+ID4gdGhlDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wgaW50ZXJmYWNlIGlzDQo+ID4g PiA+ID4gcmV0dXJuZWQgaW4NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYXNlIG9mIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ID4gKyAgQHJldHVybiAgRUZJX1NVQ0NFU1MgIFRoZSBjaGlsZCB3YXMgY3JlYXRl ZCBhbmQgdGhlIHByb3RvY29sDQo+ID4gPiA+ID4gb3BlbmVkLg0KPiA+ID4gPiA+ID4gPiArICBA cmV0dXJuICBPdGhlcnMgICAgICAgRWl0aGVyIHRoZSBjcmVhdGlvbiBvZiB0aGUgY2hpbGQgb3Ig dGhlDQo+ID4gPiA+ID4gb3BlbmluZw0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgb2YgdGhlIHByb3RvY29sIGZhaWxlZC4NCj4gPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4g PiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gPiA+ ICtDcmVhdGVTZXJ2aWNlQ2hpbGRBbmRPcGVuUHJvdG9jb2wgKA0KPiA+ID4gPiA+ID4gPiArICBJ TiAgIEVGSV9IQU5ETEUgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgIElOICAg RUZJX0dVSUQgICAgKlNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ID4gPiAr ICBJTiAgIEVGSV9HVUlEICAgICpQcm90b2NvbEd1aWQsDQo+ID4gPiA+ID4gPiA+ICsgIE9VVCAg RUZJX0hBTkRMRSAgKkNoaWxkSGFuZGxlLA0KPiA+ID4gPiA+ID4gPiArICBPVVQgIFZPSUQgICAg ICAgICoqSW50ZXJmYWNlDQo+ID4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gPiArICBDbG9zZSB0aGUgcHJvdG9jb2wgaWRl bnRpZmllZCBieSBpdHMgR1VJRCBvbiB0aGUgY2hpbGQgaGFuZGxlIG9mDQo+ID4gPiA+ID4gdGhl DQo+ID4gPiA+ID4gPiBzZXJ2aWNlDQo+ID4gPiA+ID4gPiA+ICsgIGlkZW50aWZpZWQgYnkgaXRz IHNlcnZpY2UgYmluZGluZyBwcm90b2NvbCBHVUlELCB0aGVuIGRlc3Ryb3kgdGhlDQo+ID4gPiA+ ID4gY2hpbGQNCj4gPiA+ID4gPiA+ID4gKyAgaGFuZGxlLg0KPiA+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENvbnRyb2xsZXJIYW5kbGUgICAgICAgICAgICBDb250 cm9sbGVyIGhhbmRsZS4NCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgU2VydmljZUJpbmRp bmdQcm90b2NvbEd1aWQgIFNlcnZpY2UgYmluZGluZyBwcm90b2NvbA0KPiA+ID4gPiA+IEdVSUQN Cj4gPiA+ID4gPiA+IG9mDQo+ID4gPiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSB0byBiZSBkZXN0cm95 ZWQuDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIFByb3RvY29sR3VpZCAgICAgICAgICAg ICAgICBHVUlEIG9mIHRoZSBwcm90b2NvbCB0bw0KPiA+ID4gPiA+ID4gPiBiZQ0KPiA+ID4gPiA+ IGNsb3NlZC4NCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQ2hpbGRIYW5kbGUgICAgICAg ICAgICAgICAgIEhhbmRsZSBvZiB0aGUgY2hpbGQgdG8gYmUNCj4gPiA+ID4gPiBkZXN0cm95ZWQu DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gPiArU1RB VElDDQo+ID4gPiA+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ID4gPiA+ICtDbG9zZVByb3RvY29sQW5k RGVzdHJveVNlcnZpY2VDaGlsZCAoDQo+ID4gPiA+ID4gPiA+ICsgIElOICBFRklfSEFORExFICBD b250cm9sbGVySGFuZGxlLA0KPiA+ID4gPiA+ID4gPiArICBJTiAgRUZJX0dVSUQgICAgKlNlcnZp Y2VCaW5kaW5nUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ID4gPiArICBJTiAgRUZJX0dVSUQgICAg KlByb3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ID4gKyAgSU4gIEVGSV9IQU5ETEUgIENoaWxkSGFu ZGxlDQo+ID4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiA+ICsgIFdvcmtlciBmdW5jdGlvbiB0 aGF0IGRvd25sb2FkIHRoZSBkYXRhIG9mIGEgZmlsZSBmcm9tIGEgSFRUUA0KPiA+ID4gPiA+ID4g PiBzZXJ2ZXINCj4gPiA+ID4gPiA+IGdpdmVuDQo+ID4gPiA+ID4gPiA+ICsgIHRoZSBwYXRoIG9m IHRoZSBmaWxlIGFuZCBpdHMgc2l6ZS4NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiAr ICBAcGFyYW1baW5dICAgQ29udGV4dCAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBkb3dubG9h ZCBjb250ZXh0Lg0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIEByZXR2YWwgIEVG SV9TVUNDRVNTICAgICAgICAgICBUaGUgZmlsZSB3YXMgZG93bmxvYWRlZC4NCj4gPiA+ID4gPiA+ ID4gKyAgQHJldHZhbCAgRUZJX09VVF9PRl9SRVNPVVJDRVMgIEEgbWVtb3J5IGFsbG9jYXRpb24g ZmFpbGVkLg0KPiA+ID4gPiA+ID4gPiArICBAcmV0dmFsICBPdGhlcnMgICAgICAgICAgICAgICAg VGhlIGRvd25sb2FkaW5nIG9mIHRoZSBmaWxlDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzZXJ2ZXIgZmFpbGVkLg0KPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ID4gPiArRG93bmxvYWRGaWxlICgNCj4gPiA+ID4g PiA+ID4gKyAgSU4gICBET1dOTE9BRF9DT05URVhUICAgKkNvbnRleHQNCj4gPiA+ID4gPiA+ID4g KyAgKTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArU1RBVElDIENPTlNUIFNIRUxM X1BBUkFNX0lURU0gUGFyYW1MaXN0W10gPSB7DQo+ID4gPiA+ID4gPiA+ICsgIHtMIi1pIiwgVHlw ZVZhbHVlfSwNCj4gPiA+ID4gPiA+ID4gKyAge0wiLWwiLCBUeXBlVmFsdWV9LA0KPiA+ID4gPiA+ ID4gPiArICB7TCItcCIsIFR5cGVWYWx1ZX0sDQo+ID4gPiA+ID4gPiA+ICsgIHtMIi1zIiwgVHlw ZVZhbHVlfSwNCj4gPiA+ID4gPiA+ID4gKyAge0wiLXQiLCBUeXBlVmFsdWV9LA0KPiA+ID4gPiA+ ID4gPiArICB7TlVMTCAsIFR5cGVNYXh9DQo+ID4gPiA+ID4gPiA+ICsgIH07DQo+ID4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gPiArICBGdW5jdGlvbiBmb3Ig J2h0dHAnIGNvbW1hbmQuDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFt W2luXSBJbWFnZUhhbmRsZSAgSGFuZGxlIHRvIHRoZSBJbWFnZSAoTlVMTCBpZiBJbnRlcm5hbCku DQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhl IFN5c3RlbSBUYWJsZSAoTlVMTCBpZg0KPiA+ID4gPiA+IEludGVybmFsKS4NCj4gPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gPiArICBAcmV0dXJuICBTSEVMTF9TVUNDRVNTICAgICAgICAgICAg VGhlICdodHRwJyBjb21tYW5kIGNvbXBsZXRlZA0KPiA+ID4gPiA+ID4gc3VjY2Vzc2Z1bGx5Lg0K PiA+ID4gPiA+ID4gPiArICBAcmV0dXJuICBTSEVMTF9BQk9SVEVEICAgICAgICAgICAgVGhlIFNo ZWxsIExpYnJhcnkNCj4gPiA+ID4gPiA+ID4gaW5pdGlhbGl6YXRpb24NCj4gPiA+ID4gPiBmYWls ZWQuDQo+ID4gPiA+ID4gPiA+ICsgIEByZXR1cm4gIFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSICBB dCBsZWFzdCBvbmUgb2YgdGhlDQo+ID4gPiA+IGNvbW1hbmQncw0KPiA+ID4gPiA+ID4gPiBhcmd1 bWVudHMgaXMNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5vdCB2YWxpZC4NCj4gPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgU0hFTExfT1VUX09GX1JF U09VUkNFUyAgIEEgbWVtb3J5IGFsbG9jYXRpb24NCj4gPiA+IGZhaWxlZC4NCj4gPiA+ID4gPiA+ ID4gKyAgQHJldHVybiAgU0hFTExfTk9UX0ZPVU5EICAgICAgICAgIE5ldHdvcmsgSW50ZXJmYWNl IENhcmQgbm90DQo+ID4gPiA+IGZvdW5kLg0KPiA+ID4gPiA+ID4gPiArICBAcmV0dXJuICBTSEVM TF9VTlNVUFBPUlRFRCAgICAgICAgQ29tbWFuZCB3YXMgdmFsaWQsIGJ1dCB0aGUNCj4gPiA+ID4g c2VydmVyDQo+ID4gPiA+ID4gPiA+IHJldHVybmVkDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhIHN0YXR1cyBjb2RlIGluZGljYXRpbmcgc29tZQ0K PiA+ID4gPiA+IGVycm9yLg0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRXhhbWluZSB0aGUgZmlsZSByZXF1ZXN0ZWQgZm9yDQo+ID4gPiA+ID4gZXJy b3IgYm9keS4NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4g PiA+ICtTSEVMTF9TVEFUVVMNCj4gPiA+ID4gPiA+ID4gK1J1bkh0dHAgKA0KPiA+ID4gPiA+ID4g PiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+ID4gPiA+ID4gKyAg SU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ID4gPiA+ID4gPiA+ICsgICkNCj4g PiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg U3RhdHVzOw0KPiA+ID4gPiA+ID4gPiArICBMSVNUX0VOVFJZICAgICAgICAgICAgICAqQ2hlY2tQ YWNrYWdlOw0KPiA+ID4gPiA+ID4gPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAqUHJvYmxl bVBhcmFtOw0KPiA+ID4gPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICBQYXJhbUNv dW50Ow0KPiA+ID4gPiA+ID4gPiArICBDT05TVCBDSEFSMTYgICAgICAgICAgICAqVXNlck5pY05h bWU7DQo+ID4gPiA+ID4gPiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgIE5pY0ZvdW5kOw0K PiA+ID4gPiA+ID4gPiArICBDT05TVCBDSEFSMTYgICAgICAgICAgICAqVmFsdWVTdHI7DQo+ID4g PiA+ID4gPiA+ICsgIENPTlNUIENIQVIxNiAgICAgICAgICAgICpSZW1vdGVGaWxlUGF0aDsNCj4g PiA+ID4gPiA+ID4gKyAgQ09OU1QgQ0hBUjE2ICAgICAgICAgICAgKldhbGtlcjsNCj4gPiA+ID4g PiA+ID4gKyAgQ09OU1QgQ0hBUjE2ICAgICAgICAgICAgKlByb3h5U2VydmVyQWRkcjsNCj4gPiA+ ID4gPiA+ID4gKyAgRUZJX0hUVFBfQ09ORklHX0RBVEEgICAgSHR0cENvbmZpZ0RhdGE7DQo+ID4g PiA+ID4gPiA+ICsgIEVGSV9IVFRQdjRfQUNDRVNTX1BPSU5UIElQdjROb2RlOw0KPiA+ID4gPiA+ ID4gPiArICBFRklfSEFORExFICAgICAgICAgICAgICAqSGFuZGxlczsNCj4gPiA+ID4gPiA+ID4g KyAgVUlOVE4gICAgICAgICAgICAgICAgICAgSGFuZGxlQ291bnQ7DQo+ID4gPiA+ID4gPiA+ICsg IFVJTlROICAgICAgICAgICAgICAgICAgIE5pY051bWJlcjsNCj4gPiA+ID4gPiA+ID4gKyAgVUlO VE4gICAgICAgICAgICAgICAgICAgSW5pdGlhbFNpemU7DQo+ID4gPiA+ID4gPiA+ICsgIENIQVIx Ng0KPiA+ID4gPiA+ID4gPiBOaWNOYW1lW0lQNF9DT05GSUcyX0lOVEVSRkFDRV9JTkZPX05BTUVf TEVOR1RIXTsNCj4gPiA+ID4gPiA+ID4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgQ29udHJv bGxlckhhbmRsZTsNCj4gPiA+ID4gPiA+ID4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgSHR0 cENoaWxkSGFuZGxlOw0KPiA+ID4gPiA+ID4gPiArICBET1dOTE9BRF9DT05URVhUICAgICAgICBD b250ZXh0Ow0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIFByb2JsZW1QYXJhbSAg ICAgICAgPSBOVUxMOw0KPiA+ID4gPiA+ID4gPiArICBOaWNGb3VuZCAgICAgICAgICAgID0gRkFM U0U7DQo+ID4gPiA+ID4gPiA+ICsgIEhhbmRsZXMgICAgICAgICAgICAgPSBOVUxMOw0KPiA+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiA+ICsgIC8vIEluaXRp YWxpemUgdGhlIFNoZWxsIGxpYnJhcnkgKHdlIG11c3QgYmUgaW4gbm9uLWF1dG8taW5pdC4uLikN Cj4gPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgU3RhdHVzID0gU2hlbGxJbml0 aWFsaXplICgpOw0KPiA+ID4gPiA+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ID4gPiA+ID4gPiA+ICsgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiA+ID4gPiA+ ID4gKyAgICByZXR1cm4gU0hFTExfQUJPUlRFRDsNCj4gPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIFplcm9NZW0gKCZDb250ZXh0LCBzaXplb2YgKENv bnRleHQpKTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ ID4gPiArICAvLyBQYXJzZSB0aGUgY29tbWFuZCBsaW5lLg0KPiA+ID4gPiA+ID4gPiArICAvLw0K PiA+ID4gPiA+ID4gPiArICBTdGF0dXMgPSBTaGVsbENvbW1hbmRMaW5lUGFyc2UgKFBhcmFtTGlz dCwgJkNoZWNrUGFja2FnZSwNCj4gPiA+ID4gPiA+ID4gJlByb2JsZW1QYXJhbSwgVFJVRSk7DQo+ ID4gPiA+ID4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gPiA+ID4g KyAgICBpZiAoKFN0YXR1cyA9PSBFRklfVk9MVU1FX0NPUlJVUFRFRCkgJiYNCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgKFByb2JsZW1QYXJhbSAhPSBOVUxMKSApIHsNCj4gPiA+ID4gPiA+ID4gKyAg ICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIC0xLCAtMSwgTlVM TCwgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1BST0JMRU0pLA0KPiA+ID4gPiBtSHR0cEhpaUhhbmRs ZSwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgSFRUUF9BUFBfTkFNRSwgUHJvYmxlbVBhcmFtDQo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICsgICAgICBTSEVMTF9GUkVF X05PTl9OVUxMIChQcm9ibGVtUGFyYW0pOw0KPiA+ID4gPiA+ID4gPiArICAgIH0gZWxzZSB7DQo+ ID4gPiA+ID4gPiA+ICsgICAgICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gPiA+ID4gKyAgICB9 DQo+ID4gPiA+ID4gPiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiA+ICsgIC8vIENo ZWNrIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycw0KPiA+ID4gPiA+ID4gPiArICAvLw0KPiA+ID4g PiA+ID4gPiArICBTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ID4gKyAgUGFyYW1Db3VudCA9IFNoZWxsQ29tbWFuZExpbmVHZXRDb3Vu dCAoQ2hlY2tQYWNrYWdlKTsNCj4gPiA+ID4gPiA+ID4gKyAgaWYgKFBhcmFtQ291bnQgPiA0KSB7 DQo+ID4gPiA+ID4gPiA+ICsgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiA+ID4gPiA+ID4gKyAg ICAgIC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1RPT19NQU5ZKSwNCj4gPiA+ ID4gPiA+ID4gKyAgICAgIG1IdHRwSGlpSGFuZGxlLCBIVFRQX0FQUF9OQU1FDQo+ID4gPiA+ID4g PiA+ICsgICAgICApOw0KPiA+ID4gPiA+ID4gPiArICAgIGdvdG8gRXJyb3I7DQo+ID4gPiA+ID4g PiA+ICsgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBpZiAoUGFyYW1Db3Vu dCA8IDMpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+ID4gPiA+ ID4gPiArICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fVE9PX0ZFVyks DQo+ID4gPiA+ID4gPiA+ICsgICAgICBtSHR0cEhpaUhhbmRsZSwgSFRUUF9BUFBfTkFNRQ0KPiA+ ID4gPiA+ID4gPiArICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgWmVyb01l bSAoJkh0dHBDb25maWdEYXRhLCBzaXplb2YgKEh0dHBDb25maWdEYXRhKSk7DQo+ID4gPiA+ID4g PiA+ICsgIFplcm9NZW0gKCZJUHY0Tm9kZSwgc2l6ZW9mIChJUHY0Tm9kZSkpOw0KPiA+ID4gPiA+ ID4gPiArICBJUHY0Tm9kZS5Vc2VEZWZhdWx0QWRkcmVzcyA9IFRSVUU7DQo+ID4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ID4gKyAgSHR0cENvbmZpZ0RhdGEuSHR0cFZlcnNpb24gPSBIdHRwVmVy c2lvbjExOw0KPiA+ID4gPiA+ID4gPiArICBIdHRwQ29uZmlnRGF0YS5BY2Nlc3NQb2ludC5JUHY0 Tm9kZSA9ICZJUHY0Tm9kZTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAvLw0K PiA+ID4gPiA+ID4gPiArICAvLyBHZXQgdGhlIGhvc3QgYWRkcmVzcyAobm90IG5lY2Vzc2FyaWx5 IElQdjQgZm9ybWF0KQ0KPiA+ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gPiArICBWYWx1 ZVN0ciA9IFNoZWxsQ29tbWFuZExpbmVHZXRSYXdWYWx1ZSAoQ2hlY2tQYWNrYWdlLCAxKTsNCj4g PiA+ID4gPiA+ID4gKyAgaWYgKCFWYWx1ZVN0cikgew0KPiA+ID4gPiA+ID4gPiArICAgIFNoZWxs UHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiA+ICsgICAgICAtMSwgLTEsIE5VTEwsIFNUUklOR19U T0tFTiAoU1RSX0dFTl9QQVJBTV9JTlYpLA0KPiA+ID4gPiA+ID4gbUh0dHBIaWlIYW5kbGUsDQo+ ID4gPiA+ID4gPiA+ICsgICAgICBIVFRQX0FQUF9OQU1FLCBWYWx1ZVN0cg0KPiA+ID4gPiA+ID4g PiArICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ID4g PiArICB9IGVsc2Ugew0KPiA+ID4gPiA+ID4gPiArICAgIFVJTlROIFN0YXJ0U2l6ZTsNCj4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAgIFN0YXJ0U2l6ZSA9IDA7DQo+ID4gPiA+ID4g PiA+ICsgICAgaWYgKCFTdHJTdHIgKFZhbHVlU3RyLCBMIjovLyIpKSB7DQo+ID4gPiA+ID4gPiA+ ICsgICAgICBDb250ZXh0LlNlcnZlckFkZHJBbmRQcm90byA9IFN0cm5DYXRHcm93ICgNCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29udGV4dC5T ZXJ2ZXJBZGRyQW5kUHJvdG8sDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJlN0YXJ0U2l6ZSwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUX0hUVFBfUFJPVE8sDQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyTGVuIChERUZBVUxUX0hU VFBfUFJPVE8pDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIENvbnRleHQuU2VydmVyQWRkckFuZFByb3Rv ID0gU3RybkNhdEdyb3cgKA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZDb250ZXh0LlNlcnZlckFkZHJBbmRQcm90bywNCj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU3RhcnRTaXplLA0KPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiOi8vIiwNCj4g PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJMZW4g KEwiOi8vIikNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApOw0KPiA+ID4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiArICAgIENvbnRleHQuU2VydmVyQWRkckFuZFByb3RvID0gU3RybkNhdEdyb3cgKA0KPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29udGV4dC5T ZXJ2ZXJBZGRyQW5kUHJvdG8sDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZTdGFydFNpemUsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFZhbHVlU3RyLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTdHJMZW4gKFZhbHVlU3RyKQ0KPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ID4gPiArICAg IGlmICghQ29udGV4dC5TZXJ2ZXJBZGRyQW5kUHJvdG8pIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAg IFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gPiA+ID4gPiArICAgICAgZ290 byBFcnJvcjsNCj4gPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBSZW1vdGVGaWxlUGF0aCA9IFNoZWxsQ29tbWFu ZExpbmVHZXRSYXdWYWx1ZSAoQ2hlY2tQYWNrYWdlLA0KPiA+ID4gPiAyKTsNCj4gPiA+ID4gPiA+ ID4gKyAgQVNTRVJUIChSZW1vdGVGaWxlUGF0aCAhPSBOVUxMKTsNCj4gPiA+ID4gPiA+ID4gKyAg aWYgKFJlbW90ZUZpbGVQYXRoKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgVHJpbVNwYWNlcyAoKENI QVIxNiAqKikmUmVtb3RlRmlsZVBhdGgpOw0KPiA+ID4gPiA+ID4gPiArICB9IGVsc2Ugew0KPiA+ ID4gPiA+ID4gPiArICAgIFN0YXR1cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ID4g PiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ID4gKyAgaWYgKFBhcmFtQ291bnQgPT0gNCkgew0KPiA+ID4gPiA+ID4g PiArICAgIG1Mb2NhbEZpbGVQYXRoID0gU2hlbGxDb21tYW5kTGluZUdldFJhd1ZhbHVlIChDaGVj a1BhY2thZ2UsDQo+ID4gPiA+IDMpOw0KPiA+ID4gPiA+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4g PiA+ID4gPiArICAgIFdhbGtlciA9IFJlbW90ZUZpbGVQYXRoICsgU3RyTGVuIChSZW1vdGVGaWxl UGF0aCk7DQo+ID4gPiA+ID4gPiA+ICsgICAgd2hpbGUgKCgtLVdhbGtlcikgPj0gUmVtb3RlRmls ZVBhdGgpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIGlmICgoKldhbGtlciA9PSBMJ1xcJykgfHwN Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAoKldhbGtlciA9PSBMJy8nICkgICAgKSB7DQo+ID4g PiA+ID4gPiA+ICsgICAgICAgIGJyZWFrOw0KPiA+ID4gPiA+ID4gPiArICAgICAgfQ0KPiA+ID4g PiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAgIG1Mb2Nh bEZpbGVQYXRoID0gV2Fsa2VyICsgMTsNCj4gPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ICsgIGlmICghU3RyTGVuIChtTG9jYWxGaWxlUGF0aCkpIHsNCj4g PiA+ID4gPiA+ID4gKyAgICBtTG9jYWxGaWxlUGF0aCA9IERFRkFVTFRfSFRNTF9GSUxFOw0KPiA+ ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgSW5pdGlh bFNpemUgPSAwOw0KPiA+ID4gPiA+ID4gPiArICBDb250ZXh0LlVSSSA9IFN0cm5DYXRHcm93ICgN Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICZDb250ZXh0LlVSSSwNCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICZJbml0aWFsU2l6ZSwNCj4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgIFJlbW90ZUZpbGVQYXRoLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgU3RyTGVuIChSZW1vdGVGaWxlUGF0aCkNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICsgIGlmICghQ29udGV4dC5VUkkpIHsNCj4gPiA+ ID4gPiA+ID4gKyAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ID4gPiA+ ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgLy8gR2V0IHRoZSBuYW1lIG9m IHRoZSBOZXR3b3JrIEludGVyZmFjZSBDYXJkIHRvIGJlIHVzZWQgaWYgYW55Lg0KPiA+ID4gPiA+ ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gPiArICBVc2VyTmljTmFtZSA9IFNoZWxsQ29tbWFuZExp bmVHZXRWYWx1ZSAoQ2hlY2tQYWNrYWdlLCBMIi1pIik7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ID4gKyAgVmFsdWVTdHIgPSBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKENoZWNrUGFj a2FnZSwgTCItbCIpOw0KPiA+ID4gPiA+ID4gPiArICBpZiAoVmFsdWVTdHIgIT0gTlVMTCkgew0K PiA+ID4gPiA+ID4gPiArICAgIGlmICghU3RyaW5nVG9VaW50MTYgKA0KPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgVmFsdWVTdHIsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAmSHR0cENvbmZpZ0Rh dGEuQWNjZXNzUG9pbnQuSVB2NE5vZGUtPkxvY2FsUG9ydA0KPiA+ID4gPiA+ID4gPiArICAgICAg ICkNCj4gPiA+ID4gPiA+ID4gKyAgICAgKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgICBnb3RvIEVy cm9yOw0KPiA+ID4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIC8vIElzIHByb3h5IHNlcnZlciB1c2VkPw0KPiA+ID4g PiA+ID4gPiArICBQcm94eVNlcnZlckFkZHIgPSBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKENo ZWNrUGFja2FnZSwgTCItDQo+ID4gPiA+IHAiKTsNCj4gPiA+ID4gPiA+ID4gKyAgaWYgKFByb3h5 U2VydmVyQWRkcikgew0KPiA+ID4gPiA+ID4gPiArICAgIFVJTlROIFN0cmluZ1NpemU7DQo+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICBTdHJpbmdTaXplID0gU3RyTGVuIChQcm94 eVNlcnZlckFkZHIpICsgMTsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIENvbnRleHQuUHJveHlTZXJ2 ZXJBZGRyID0gQWxsb2NhdGVQb29sIChTdHJpbmdTaXplKTsNCj4gPiA+ID4gPiA+ID4gKyAgICAg IGlmICghQ29udGV4dC5Qcm94eVNlcnZlckFkZHIpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg U3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIGdv dG8gRXJyb3I7DQo+ID4gPiA+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ID4gPiA+ICsgICAgICBV bmljb2RlU3RyVG9Bc2NpaVN0clMgKA0KPiA+ID4gPiA+ID4gPiArICAgICAgICBQcm94eVNlcnZl ckFkZHIsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIENvbnRleHQuUHJveHlTZXJ2ZXJBZGRyLA0K PiA+ID4gPiA+ID4gPiArICAgICAgICBTdHJpbmdTaXplDQo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICk7DQo+ID4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiAr ICBDb250ZXh0LkJ1ZmZlclNpemUgPSBERUZBVUxUX0JVRl9TSVpFOw0KPiA+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiA+ICsgIC8vIEJ5IGRlZmF1bHQsIHRoZSBidWZmZXIgc2l6ZSBpcyAxTS4g VGhpcyBjYW4gYmUgY2hhbmdlZCB3aXRoIC1zDQo+ID4gPiA+ID4gPiBwYXJhbWV0ZXIuDQo+ID4g PiA+ID4gPiA+ICsgIFZhbHVlU3RyID0gU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChDaGVja1Bh Y2thZ2UsIEwiLXMiKTsNCj4gPiA+ID4gPiA+ID4gKyAgICBpZiAoVmFsdWVTdHIgIT0gTlVMTCkg ew0KPiA+ID4gPiA+ID4gPiArICAgICAgQ29udGV4dC5CdWZmZXJTaXplID0gU2hlbGxTdHJUb1Vp bnRuIChWYWx1ZVN0cik7DQo+ID4gPiA+ID4gPiA+ICsgICAgICBpZiAoIUNvbnRleHQuQnVmZmVy U2l6ZSB8fCBDb250ZXh0LkJ1ZmZlclNpemUgPiBNQVhfQlVGX1NJWkUpDQo+ID4gPiA+ID4gPiA+ IHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTiAoU1RSX0dFTl9QQVJBTV9J TlYpLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgIG1IdHRwSGlpSGFuZGxlLCBIVFRQX0FQUF9O QU1FLCBWYWx1ZVN0cg0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgIGdvdG8gRXJyb3I7DQo+ID4gPiA+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ID4g PiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIFZhbHVlU3RyID0g U2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChDaGVja1BhY2thZ2UsIEwiLXQiKTsNCj4gPiA+ID4g PiA+ID4gKyAgaWYgKFZhbHVlU3RyICE9IE5VTEwpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICBIdHRw Q29uZmlnRGF0YS5UaW1lT3V0TWlsbGlzZWMgPSBTaGVsbFN0clRvVWludG4gKFZhbHVlU3RyKTsN Cj4gPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIC8v DQo+ID4gPiA+ID4gPiA+ICsgIC8vIExvY2F0ZSBhbGwgSFRUUCBTZXJ2aWNlIEJpbmRpbmcgcHJv dG9jb2xzDQo+ID4gPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiA+ICsgIFN0YXR1cyA9IGdC Uy0+TG9jYXRlSGFuZGxlQnVmZmVyICgNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBCeVBy b3RvY29sLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICZnRWZpTWFuYWdlZE5ldHdvcmtT ZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBO VUxMLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICZIYW5kbGVDb3VudCwNCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAmSGFuZGxlcw0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICk7DQo+ID4gPiA+ID4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykgfHwgKEhhbmRsZUNv dW50ID09IDApKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiA+ ID4gPiA+ID4gKyAgICAgIC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJfSFRUUF9FUlJf Tk9fTklDKSwNCj4gPiA+ID4gPiA+IG1IdHRwSGlpSGFuZGxlDQo+ID4gPiA+ID4gPiA+ICsgICAg ICApOw0KPiA+ID4gPiA+ID4gPiArICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4g PiA+ID4gPiA+ICsgICAgICBTdGF0dXMgPSBFRklfTk9UX0ZPVU5EOw0KPiA+ID4gPiA+ID4gPiAr ICAgIH0NCj4gPiA+ID4gPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ID4gPiArICB9 DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgU3RhdHVzID0gRUZJX05PVF9GT1VO RDsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBmb3IgKE5pY051bWJlciA9IDA7 DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgKE5pY051bWJlciA8IEhhbmRsZUNvdW50KSAmJiAoU3Rh dHVzICE9IEVGSV9TVUNDRVNTKTsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICBOaWNOdW1iZXIrKykg ew0KPiA+ID4gPiA+ID4gPiArICAgIENvbnRyb2xsZXJIYW5kbGUgPSBIYW5kbGVzW05pY051bWJl cl07DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICBTdGF0dXMgPSBHZXROaWNO YW1lIChDb250cm9sbGVySGFuZGxlLCBOaWNOdW1iZXIsIE5pY05hbWUpOw0KPiA+ID4gPiA+ID4g PiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIFNo ZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIC0xLCAtMSwgTlVMTCwgU1RS SU5HX1RPS0VOIChTVFJfSFRUUF9FUlJfTklDX05BTUUpLA0KPiA+ID4gPiA+ID4gPiArICAgICAg ICBtSHR0cEhpaUhhbmRsZSwgTmljTnVtYmVyLCBTdGF0dXMNCj4gPiA+ID4gPiA+ID4gKyAgICAg ICk7DQo+ID4gPiA+ID4gPiA+ICsgICAgICBjb250aW51ZTsNCj4gPiA+ID4gPiA+ID4gKyAgICB9 DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICBpZiAoVXNlck5pY05hbWUgIT0g TlVMTCkgew0KPiA+ID4gPiA+ID4gPiArICAgICAgaWYgKFN0ckNtcCAoTmljTmFtZSwgVXNlck5p Y05hbWUpICE9IDApIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgY29udGludWU7DQo+ID4gPiA+ ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ID4gPiA+ICsgICAgICBOaWNGb3VuZCA9IFRSVUU7DQo+ ID4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAg U3RhdHVzID0gQ3JlYXRlU2VydmljZUNoaWxkQW5kT3BlblByb3RvY29sICgNCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAmZ0VmaUh0dHBTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCwNCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICZnRWZpSHR0cFByb3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICZIdHRwQ2hpbGRIYW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAoVk9JRCoqKSZDb250ZXh0Lkh0dHANCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICApOw0KPiA+ID4gPiA+ID4gPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g PiA+ID4gPiA+ID4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgIC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VODQo+ID4gPiAoU1RSX0hUVFBfRVJSX09QRU5f UFJPVE9DT0wpLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICBtSHR0cEhpaUhhbmRsZSwgTmljTmFt ZSwgU3RhdHVzDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICsgICAg ICBjb250aW51ZTsNCj4gPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ID4gKyAgICBTdGF0dXMgPSBDb250ZXh0Lkh0dHAtPkNvbmZpZ3VyZSAoQ29udGV4dC5I dHRwLA0KPiA+ID4gPiA+ID4gPiAmSHR0cENvbmZpZ0RhdGEpOw0KPiA+ID4gPiA+ID4gPiArICAg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIFNoZWxsUHJp bnRIaWlFeCAoDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RP S0VOIChTVFJfSFRUUF9FUlJfQ09ORklHVVJFKSwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgbUh0 dHBIaWlIYW5kbGUsIE5pY05hbWUsIFN0YXR1cw0KPiA+ID4gPiA+ID4gPiArICAgICAgICApOw0K PiA+ID4gPiA+ID4gPiArICAgICAgZ290byBOZXh0SGFuZGxlOw0KPiA+ID4gPiA+ID4gPiArICAg IH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAgIFN0YXR1cyA9IERvd25sb2Fk RmlsZSAoJkNvbnRleHQpOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAgU2hl bGxQcmludEhpaUV4ICgNCj4gPiA+ID4gPiA+ID4gKyAgICAgIC0xLCAtMSwgTlVMTCwgU1RSSU5H X1RPS0VOIChTVFJfR0VOX0NSTEYpLCBtSHR0cEhpaUhhbmRsZQ0KPiA+ID4gPiA+ID4gPiArICAg ICAgKTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAgIENsb3NlUHJvdG9jb2xB bmREZXN0cm95U2VydmljZUNoaWxkICgNCj4gPiA+ID4gPiA+ID4gKyAgICAgIENvbnRyb2xsZXJI YW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAmZ0VmaUh0dHBTZXJ2aWNlQmluZGluZ1Byb3Rv Y29sR3VpZCwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICZnRWZpSHR0cFByb3RvY29sR3VpZCwNCj4g PiA+ID4gPiA+ID4gKyAgICAgIEh0dHBDaGlsZEhhbmRsZQ0KPiA+ID4gPiA+ID4gPiArICAgICAg KTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ ID4gPiA+ICsgICAgICAgIC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJfSFRUUF9FUlJf RE9XTkxPQUQpLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICBtSHR0cEhpaUhhbmRsZSwgUmVtb3Rl RmlsZVBhdGgsIE5pY05hbWUsIFN0YXR1cw0KPiA+ID4gPiA+ID4gPiArICAgICAgICApOw0KPiA+ ID4gPiA+ID4gPiArICAgICAgLy8gSWYgYSB1c2VyIGFib3J0ZWQgdGhlIG9wZXJhdGlvbiwgZG8g bm90IHRyeSBhbm90aGVyDQo+ID4gPiA+ID4gY29udHJvbGxlci4NCj4gPiA+ID4gPiA+ID4gKyAg ICAgIGlmIChTdGF0dXMgPT0gRUZJX0FCT1JURUQpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg Z290byBFcnJvcjsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gPiArICAgICAgZ290byBOZXh0SGFuZGxlOw0KPiA+ID4gPiA+ID4gPiArICAgIH0N Cj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAgIFN0YXR1cyA9IEVGSV9TVUNDRVNT Ow0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICtOZXh0SGFuZGxlOg0KPiA+ID4gPiA+ ID4gPiArICAgIGlmIChTdGF0dXMgPT0gRUZJX0hUVFBfRVJST1IpIHsNCj4gPiA+ID4gPiA+ID4g KyAgICAgIGdvdG8gRXJyb3I7DQo+ID4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gPiAr ICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgaWYgKChVc2VyTmljTmFtZSAh PSBOVUxMKSAmJiAoIU5pY0ZvdW5kKSkgew0KPiA+ID4gPiA+ID4gPiArICAgIFNoZWxsUHJpbnRI aWlFeCAoDQo+ID4gPiA+ID4gPiA+ICsgICAgICAtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTg0K PiA+ID4gKFNUUl9IVFRQX0VSUl9OSUNfTk9UX0ZPVU5EKSwNCj4gPiA+ID4gPiA+ID4gKyAgICAg IG1IdHRwSGlpSGFuZGxlLCBVc2VyTmljTmFtZQ0KPiA+ID4gPiA+ID4gPiArICAgICAgKTsNCj4g PiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICtFcnJvcjoN Cj4gPiA+ID4gPiA+ID4gKyAgU2hlbGxDb21tYW5kTGluZUZyZWVWYXJMaXN0IChDaGVja1BhY2th Z2UpOw0KPiA+ID4gPiA+ID4gPiArICBTSEVMTF9GUkVFX05PTl9OVUxMIChIYW5kbGVzKTsNCj4g PiA+ID4gPiA+ID4gKyAgU0hFTExfRlJFRV9OT05fTlVMTCAoQ29udGV4dC5Qcm94eVNlcnZlckFk ZHIpOw0KPiA+ID4gPiA+ID4gPiArICBTSEVMTF9GUkVFX05PTl9OVUxMIChDb250ZXh0LlNlcnZl ckFkZHJBbmRQcm90byk7DQo+ID4gPiA+ID4gPiA+ICsgIFNIRUxMX0ZSRUVfTk9OX05VTEwgKENv bnRleHQuVVJJKTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICByZXR1cm4gU3Rh dHVzICYgfk1BWF9CSVQ7DQo+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gPiArICBDaGVjayBhbmQgY29udmVydCB0aGUgVUlO VDE2IG9wdGlvbiB2YWx1ZXMgb2YgdGhlICdodHRwJyBjb21tYW5kDQo+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgVmFsdWVTdHIgIFZhbHVlIGFzIGFuIFVuaWNv ZGUgZW5jb2RlZCBzdHJpbmcNCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gVmFsdWUgICAg IFVJTlQxNiB2YWx1ZQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIEByZXR1cm4g ICAgIFRSVUUgICAgICBUaGUgdmFsdWUgd2FzIHJldHVybmVkLg0KPiA+ID4gPiA+ID4gPiArICBA cmV0dXJuICAgICBGQUxTRSAgICAgQSBwYXJzaW5nIGVycm9yIG9jY3VyZWQuDQo+ID4gPiA+ID4g PiA+ICsqKi8NCj4gPiA+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ID4gPiArQk9PTEVBTg0K PiA+ID4gPiA+ID4gPiArU3RyaW5nVG9VaW50MTYgKA0KPiA+ID4gPiA+ID4gPiArICBJTiAgIENP TlNUIENIQVIxNiAgKlZhbHVlU3RyLA0KPiA+ID4gPiA+ID4gPiArICBPVVQgIFVJTlQxNiAgICAg ICAgKlZhbHVlDQo+ID4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4g PiA+ID4gKyAgVUlOVE4gIFZhbDsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBW YWwgPSBTaGVsbFN0clRvVWludG4gKFZhbHVlU3RyKTsNCj4gPiA+ID4gPiA+ID4gKyAgaWYgKFZh bCA+IE1BWF9VSU5UMTYpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICBTaGVsbFByaW50SGlpRXggKA0K PiA+ID4gPiA+ID4gPiArICAgICAgLTEsIC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9HRU5f UEFSQU1fSU5WKSwNCj4gPiA+ID4gPiA+ID4gKyAgICAgIG1IdHRwSGlpSGFuZGxlLCBIVFRQX0FQ UF9OQU1FLCBWYWx1ZVN0cg0KPiA+ID4gPiA+ID4gPiArICAgICAgKTsNCj4gPiA+ID4gPiA+ID4g KyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiArICAqVmFsdWUgPSAoVUlOVDE2KVZhbDsNCj4gPiA+ID4gPiA+ID4gKyAg cmV0dXJuIFRSVUU7DQo+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gPiArICBHZXQgdGhlIG5hbWUgb2YgdGhlIE5JQy4NCj4g PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgQ29udHJvbGxlckhh bmRsZSAgVGhlIG5ldHdvcmsgcGh5c2ljYWwgZGV2aWNlDQo+ID4gPiA+ID4gPiA+IGhhbmRsZS4N Cj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIE5pY051bWJlciAgICAgICAgIFRoZSBuZXR3 b3JrIHBoeXNpY2FsIGRldmljZQ0KPiA+ID4gPiA+ID4gPiBudW1iZXIuDQo+ID4gPiA+ID4gPiA+ ICsgIEBwYXJhbVtvdXRdICBOaWNOYW1lICAgICAgICAgICBBZGRyZXNzIHdoZXJlIHRvIHN0b3Jl IHRoZSBOSUMNCj4gPiA+ID4gPiA+ID4gbmFtZS4NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRoZSBtZW1vcnkgYXJlYSBoYXMgdG8gYmUgYXQgbGVhc3QN Cj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+IElQNF9DT05GSUcyX0lOVEVSRkFDRV9JTkZPX05B TUVfTEVOR1RIDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb3VibGUgYnl0ZSB3aWRlLg0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIEBy ZXR1cm4gIEVGSV9TVUNDRVNTICBUaGUgbmFtZSBvZiB0aGUgTklDIHdhcyByZXR1cm5lZC4NCj4g PiA+ID4gPiA+ID4gKyAgQHJldHVybiAgT3RoZXJzICAgICAgIFRoZSBjcmVhdGlvbiBvZiB0aGUg Y2hpbGQgZm9yIHRoZSBNYW5hZ2VkDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBOZXR3b3JrIFNlcnZpY2UgZmFpbGVkIG9yIHRoZSBvcGVuaW5nIG9mDQo+ID4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB0aGUgTWFuYWdlZCBOZXR3b3JrIFByb3RvY29s IGZhaWxlZCBvcg0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9w ZXJhdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZQ0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgTWFuYWdlZCBOZXR3b3JrIFByb3RvY29sIGNvdWxkIG5vdCBiZQ0KPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcmVhZC4NCj4gPiA+ID4gPiA+ID4gKyoq Lw0KPiA+ID4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gPiA+ICtFRklfU1RBVFVTDQo+ID4g PiA+ID4gPiA+ICtHZXROaWNOYW1lICgNCj4gPiA+ID4gPiA+ID4gKyAgSU4gICBFRklfSEFORExF ICBDb250cm9sbGVySGFuZGxlLA0KPiA+ID4gPiA+ID4gPiArICBJTiAgIFVJTlROICAgICAgIE5p Y051bWJlciwNCj4gPiA+ID4gPiA+ID4gKyAgT1VUICBDSEFSMTYgICAgICAqTmljTmFtZQ0KPiA+ ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiA+ICsgIEVGSV9T VEFUVVMgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ID4gPiA+ID4gKyAgRUZJX0hB TkRMRSAgICAgICAgICAgICAgICAgICAgTW5wSGFuZGxlOw0KPiA+ID4gPiA+ID4gPiArICBFRklf TUFOQUdFRF9ORVRXT1JLX1BST1RPQ09MICAqTW5wOw0KPiA+ID4gPiA+ID4gPiArICBFRklfU0lN UExFX05FVFdPUktfTU9ERSAgICAgICBTbnBNb2RlOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiA+ICsgIFN0YXR1cyA9IENyZWF0ZVNlcnZpY2VDaGlsZEFuZE9wZW5Qcm90b2NvbCAoDQo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAmZ0VmaU1hbmFnZWROZXR3b3JrU2VydmljZUJpbmRpbmdQcm90b2Nv bEd1aWQsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgJmdFZmlNYW5hZ2VkTmV0d29ya1By b3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAmTW5wSGFuZGxlLA0KPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgIChWT0lEKiopJk1ucA0KPiA+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPiA+ID4gPiA+ID4gKyAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ID4gPiArICB9DQo+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgU3RhdHVzID0gTW5wLT5HZXRNb2RlRGF0YSAo TW5wLCBOVUxMLCAmU25wTW9kZSk7DQo+ID4gPiA+ID4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0 YXR1cykgJiYgKFN0YXR1cyAhPSBFRklfTk9UX1NUQVJURUQpKSB7DQo+ID4gPiA+ID4gPiA+ICsg ICAgZ290byBFcnJvcjsNCj4gPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiA+ICsgIFVuaWNvZGVTUHJpbnQgKA0KPiA+ID4gPiA+ID4gPiArICAgIE5pY05hbWUs DQo+ID4gPiA+ID4gPiA+ICsgICAgSVA0X0NPTkZJRzJfSU5URVJGQUNFX0lORk9fTkFNRV9MRU5H VEgsDQo+ID4gPiA+ID4gPiA+ICsgICAgU25wTW9kZS5JZlR5cGUgPT0gTkVUX0lGVFlQRV9FVEhF Uk5FVCA/DQo+ID4gPiA+ID4gPiA+ICsgICAgTCJldGglZCIgOg0KPiA+ID4gPiA+ID4gPiArICAg IEwidW5rJWQiLA0KPiA+ID4gPiA+ID4gPiArICAgIE5pY051bWJlcg0KPiA+ID4gPiA+ID4gPiAr ICAgICk7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgU3RhdHVzID0gRUZJX1NV Q0NFU1M7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gK0Vycm9yOg0KPiA+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIGlmIChNbnBIYW5kbGUgIT0gTlVMTCkgew0KPiA+ID4g PiA+ID4gPiArICAgIENsb3NlUHJvdG9jb2xBbmREZXN0cm95U2VydmljZUNoaWxkICgNCj4gPiA+ ID4gPiA+ID4gKyAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAm Z0VmaU1hbmFnZWROZXR3b3JrU2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQsDQo+ID4gPiA+ID4g PiA+ICsgICAgICAmZ0VmaU1hbmFnZWROZXR3b3JrUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ID4g PiArICAgICAgTW5wSGFuZGxlDQo+ID4gPiA+ID4gPiA+ICsgICAgICApOw0KPiA+ID4gPiA+ID4g PiArICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgcmV0dXJuIFN0YXR1czsN Cj4gPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArLyoqDQo+ ID4gPiA+ID4gPiA+ICsgIENyZWF0ZSBhIGNoaWxkIGZvciB0aGUgc2VydmljZSBpZGVudGlmaWVk IGJ5IGl0cyBzZXJ2aWNlIGJpbmRpbmcNCj4gPiA+ID4gPiBwcm90b2NvbA0KPiA+ID4gPiA+ID4g R1VJRA0KPiA+ID4gPiA+ID4gPiArICBhbmQgZ2V0IGZyb20gdGhlIGNoaWxkIHRoZSBpbnRlcmZh Y2Ugb2YgdGhlIHByb3RvY29sIGlkZW50aWZpZWQNCj4gPiA+ID4gPiA+ID4gYnkNCj4gPiA+ID4g PiBpdHMNCj4gPiA+ID4gPiA+IEdVSUQuDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4g KyAgQHBhcmFtW2luXSAgIENvbnRyb2xsZXJIYW5kbGUgICAgICAgICAgICBDb250cm9sbGVyIGhh bmRsZS4NCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIFNlcnZpY2VCaW5kaW5nUHJvdG9j b2xHdWlkICBTZXJ2aWNlIGJpbmRpbmcgcHJvdG9jb2wNCj4gPiA+ID4gPiBHVUlEDQo+ID4gPiA+ ID4gPiBvZg0KPiA+ID4gPiA+ID4gPiB0aGUNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlIHRvIGJlIGNyZWF0ZWQuDQo+ID4g PiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgR1VJ RCBvZiB0aGUgcHJvdG9jb2wgdG8NCj4gPiA+ID4gPiA+ID4gYmUNCj4gPiA+ID4gPiBvcGVuLg0K PiA+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgQ2hpbGRIYW5kbGUgICAgICAgICAgICAgICAg IEFkZHJlc3Mgd2hlcmUgdGhlDQo+ID4gPiA+ID4gPiA+IGhhbmRsZXINCj4gPiA+ID4gPiBvZiB0 aGUNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjcmVhdGVkIGNoaWxkIGlzDQo+ID4gPiA+ID4gPiA+IHJldHVybmVkLg0KPiA+ID4gPiA+ IE5VTEwgaXMNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm5lZCBpbiBjYXNlIG9mDQo+ID4gPiA+ID4gPiA+IGVycm9yLg0KPiA+ ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgIEFk ZHJlc3Mgd2hlcmUgYSBwb2ludGVyDQo+ID4gPiA+ID4gPiA+IHRvDQo+ID4gPiA+ID4gdGhlDQo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJvdG9jb2wgaW50ZXJmYWNlIGlzDQo+ID4gPiA+ID4gcmV0dXJuZWQgaW4NCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG9mIHN1 Y2Nlc3MuDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgRUZJX1NV Q0NFU1MgIFRoZSBjaGlsZCB3YXMgY3JlYXRlZCBhbmQgdGhlIHByb3RvY29sDQo+ID4gPiA+ID4g b3BlbmVkLg0KPiA+ID4gPiA+ID4gPiArICBAcmV0dXJuICBPdGhlcnMgICAgICAgRWl0aGVyIHRo ZSBjcmVhdGlvbiBvZiB0aGUgY2hpbGQgb3IgdGhlDQo+ID4gPiA+ID4gb3BlbmluZw0KPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHByb3RvY29sIGZhaWxlZC4N Cj4gPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gPiA+ ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gPiA+ICtDcmVhdGVTZXJ2aWNlQ2hpbGRBbmRPcGVuUHJv dG9jb2wgKA0KPiA+ID4gPiA+ID4gPiArICBJTiAgIEVGSV9IQU5ETEUgIENvbnRyb2xsZXJIYW5k bGUsDQo+ID4gPiA+ID4gPiA+ICsgIElOICAgRUZJX0dVSUQgICAgKlNlcnZpY2VCaW5kaW5nUHJv dG9jb2xHdWlkLA0KPiA+ID4gPiA+ID4gPiArICBJTiAgIEVGSV9HVUlEICAgICpQcm90b2NvbEd1 aWQsDQo+ID4gPiA+ID4gPiA+ICsgIE9VVCAgRUZJX0hBTkRMRSAgKkNoaWxkSGFuZGxlLA0KPiA+ ID4gPiA+ID4gPiArICBPVVQgIFZPSUQgICAgICAgICoqSW50ZXJmYWNlDQo+ID4gPiA+ID4gPiA+ ICsgICkNCj4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ID4gKyAgRUZJX1NUQVRVUyAgU3Rh dHVzOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICpDaGlsZEhhbmRsZSA9IE5V TEw7DQo+ID4gPiA+ID4gPiA+ICsgIFN0YXR1cyA9IE5ldExpYkNyZWF0ZVNlcnZpY2VDaGlsZCAo DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICBnSW1hZ2VIYW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgU2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgQ2hpbGRIYW5kbGUNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICApOw0KPiA+ID4g PiA+ID4gPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ID4gPiArICAg IFN0YXR1cyA9IGdCUy0+T3BlblByb3RvY29sICgNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICpDaGlsZEhhbmRsZSwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIFByb3RvY29s R3VpZCwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIEludGVyZmFjZSwNCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgIGdJbWFnZUhhbmRsZSwNCj4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ID4gPiA+ID4gPiArICAgICAgTmV0TGliRGVzdHJveVNlcnZpY2VDaGlsZCAoDQo+ID4gPiA+ ID4gPiA+ICsgICAgICAgIENvbnRyb2xsZXJIYW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAg IGdJbWFnZUhhbmRsZSwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgU2VydmljZUJpbmRpbmdQcm90 b2NvbEd1aWQsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICpDaGlsZEhhbmRsZQ0KPiA+ID4gPiA+ ID4gPiArICAgICAgICApOw0KPiA+ID4gPiA+ID4gPiArICAgICAgKkNoaWxkSGFuZGxlID0gTlVM TDsNCj4gPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiA+ID4gPiArfQ0K PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ID4gKyAgQ2xv c2UgdGhlIHByb3RvY29sIGlkZW50aWZpZWQgYnkgaXRzIEdVSUQgb24gdGhlIGNoaWxkIGhhbmRs ZSBvZg0KPiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+ID4gc2VydmljZQ0KPiA+ID4gPiA+ID4gPiAr ICBpZGVudGlmaWVkIGJ5IGl0cyBzZXJ2aWNlIGJpbmRpbmcgcHJvdG9jb2wgR1VJRCwgdGhlbiBk ZXN0cm95IHRoZQ0KPiA+ID4gPiA+IGNoaWxkDQo+ID4gPiA+ID4gPiA+ICsgIGhhbmRsZS4NCj4g PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBDb250cm9sbGVySGFu ZGxlICAgICAgICAgICAgQ29udHJvbGxlciBoYW5kbGUuDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIFNlcnZpY2VCaW5kaW5nUHJvdG9jb2xHdWlkICBTZXJ2aWNlIGJpbmRpbmcgcHJvdG9j b2wNCj4gPiA+ID4gPiBHVUlEDQo+ID4gPiA+ID4gPiBvZg0KPiA+ID4gPiA+ID4gPiB0aGUNCj4g PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl cnZpY2UgdG8gYmUgZGVzdHJveWVkLg0KPiA+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBQcm90 b2NvbEd1aWQgICAgICAgICAgICAgICAgR1VJRCBvZiB0aGUgcHJvdG9jb2wgdG8NCj4gPiA+ID4g PiA+ID4gYmUNCj4gPiA+ID4gPiBjbG9zZWQuDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IENoaWxkSGFuZGxlICAgICAgICAgICAgICAgICBIYW5kbGUgb2YgdGhlIGNoaWxkIHRvIGJlDQo+ ID4gPiA+ID4gZGVzdHJveWVkLg0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsqKi8N Cj4gPiA+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ID4gPiArVk9JRA0KPiA+ID4gPiA+ID4g PiArQ2xvc2VQcm90b2NvbEFuZERlc3Ryb3lTZXJ2aWNlQ2hpbGQgKA0KPiA+ID4gPiA+ID4gPiAr ICBJTiAgRUZJX0hBTkRMRSAgQ29udHJvbGxlckhhbmRsZSwNCj4gPiA+ID4gPiA+ID4gKyAgSU4g IEVGSV9HVUlEICAgICpTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ID4g KyAgSU4gIEVGSV9HVUlEICAgICpQcm90b2NvbEd1aWQsDQo+ID4gPiA+ID4gPiA+ICsgIElOICBF RklfSEFORExFICBDaGlsZEhhbmRsZQ0KPiA+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiA+ ICt7DQo+ID4gPiA+ID4gPiA+ICsgIGdCUy0+Q2xvc2VQcm90b2NvbCAoDQo+ID4gPiA+ID4gPiA+ ICsgICAgQ2hpbGRIYW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgICAgUHJvdG9jb2xHdWlkLA0KPiA+ ID4gPiA+ID4gPiArICAgIGdJbWFnZUhhbmRsZSwNCj4gPiA+ID4gPiA+ID4gKyAgICBDb250cm9s bGVySGFuZGxlDQo+ID4gPiA+ID4gPiA+ICsgICAgKTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gPiArICBOZXRMaWJEZXN0cm95U2VydmljZUNoaWxkICgNCj4gPiA+ID4gPiA+ID4gKyAg ICBDb250cm9sbGVySGFuZGxlLA0KPiA+ID4gPiA+ID4gPiArICAgIGdJbWFnZUhhbmRsZSwNCj4g PiA+ID4gPiA+ID4gKyAgICBTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ ID4gKyAgICBDaGlsZEhhbmRsZQ0KPiA+ID4gPiA+ID4gPiArICAgICk7DQo+ID4gPiA+ID4gPiA+ ICt9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gPiAr ICBXYWl0IHVudGlsIG9wZXJhdGlvbiBjb21wbGV0ZXMuIENvbXBsZXRpb24gaXMgaW5kaWNhdGVk IGJ5DQo+ID4gPiA+ID4gPiA+ICsgIHNldHRpbmcgb2YgYW4gYXBwcm9wcmlhdGUgdmFyaWFibGUu DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIENvbnRleHQg ICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBIVFRQIGRvd25sb2FkDQo+ID4gPiA+ID4gY29u dGV4dC4NCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIENhbGxCYWNrQ29tcGxldGUgICAg QSBwb2ludGVyIHRvIHRoZSBjYWxsYmFjaw0KPiA+ID4gPiA+IGNvbXBsZXRpb24NCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgc2V0IGJ5 IHRoZSBjYWxsYmFjay4NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBAcmV0dXJu ICBFRklfU1VDQ0VTUyAgICAgICAgICAgICBDYWxsYmFjayBzaWduYWxsZWQgY29tcGxldGlvbi4N Cj4gPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgRUZJX1RJTUVPVVQgICAgICAgICAgICAgVGltZWQg b3V0IHdhaXRpbmcgZm9yDQo+ID4gPiA+ID4gPiA+IGNvbXBsZXRpb24uDQo+ID4gPiA+ID4gPiA+ ICsgIEByZXR1cm4gIE90aGVycyAgICAgICAgICAgICAgICAgIEVycm9yIHdhaXRpbmcgZm9yIGNv bXBsZXRpb24uDQo+ID4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ ID4gPiA+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ID4gPiArV2FpdEZvckNvbXBsZXRpb24g KA0KPiA+ID4gPiA+ID4gPiArICBJTiBET1dOTE9BRF9DT05URVhUICAqQ29udGV4dCwNCj4gPiA+ ID4gPiA+ID4gKyAgSU4gT1VUIEJPT0xFQU4gICAgICAgKkNhbGxCYWNrQ29tcGxldGUNCj4gPiA+ ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gPiArICBFRklfU1RB VFVTICAgU3RhdHVzOw0KPiA+ID4gPiA+ID4gPiArICBFRklfRVZFTlQgICAgV2FpdEV2dDsNCj4g PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4g PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAvLyBVc2UgYSB0aW1lciB0byBtZWFzdXJl IHRpbWVvdXQuIENhbm5vdCB1c2UgU3RhbGwgaGVyZSENCj4gPiA+ID4gPiA+ID4gKyAgU3RhdHVz ID0gZ0JTLT5DcmVhdGVFdmVudCAoDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgIEVW VF9USU1FUiwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgVFBMX0NBTExCQUNLLA0K PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICBOVUxMLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAmV2Fp dEV2dA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ID4gPiAr ICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiArICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAg U3RhdHVzID0gZ0JTLT5TZXRUaW1lcigNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgIFdhaXRFdnQsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBUaW1lclJl bGF0aXZlLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgRUZJX1RJTUVSX1BF UklPRF9TRUNPTkRTDQo+ID4gPiAoVElNRVJfTUFYX1RJTUVPVVRfUykNCj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4g KyAgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiA+ID4gPiA+ID4gKyAgIH0NCj4g PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICB3aGlsZSAoISAqQ2FsbEJhY2tDb21wbGV0 ZSAmJg0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgKCFFRklfRVJST1IgKFN0YXR1cykpICYmDQo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICBFRklfRVJST1IgKGdCUy0+Q2hlY2tFdmVudCAoV2FpdEV2 dCkpDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICkgew0KPiA+ID4gPiA+ID4gPiArICAgIFN0YXR1 cyA9IENvbnRleHQtPkh0dHAtPlBvbGwgKENvbnRleHQtPkh0dHApOw0KPiA+ID4gPiA+ID4gPiAr ICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgZ0JTLT5TZXRUaW1lciAoV2Fp dEV2dCwgVGltZXJDYW5jZWwsIDApOw0KPiA+ID4gPiA+ID4gPiArICBnQlMtPkNsb3NlRXZlbnQg KFdhaXRFdnQpOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIGlmICgqQ2FsbEJh Y2tDb21wbGV0ZSkgew0KPiA+ID4gPiA+ID4gPiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4g PiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIGlmICgh RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gRUZJX1RJ TUVPVVQ7DQo+ID4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g PiArICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ID4gKyAgR2VuZXJhdGUgYW5kIHNlbmQgYSBy ZXF1ZXN0IHRvIHRoZSBodHRwIHNlcnZlci4NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g PiArICBAcGFyYW1baW5dICAgQ29udGV4dCAgICAgICAgICAgSFRUUCBkb3dubG9hZCBjb250ZXh0 Lg0KPiA+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgRG93bmxvYWRVcmwgICAgICAgRnVsbHkg cXVhbGlmaWVkIFVSTCB0byBiZQ0KPiA+ID4gPiA+IGRvd25sb2FkZWQuDQo+ID4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ID4gKyAgQHJldHVybiBFRklfU1VDQ0VTUyAgICAgICAgICAgIFJlcXVl c3QgaGFzIGJlZW4gc2VudA0KPiA+ID4gPiA+ID4gPiBzdWNjZXNzZnVsbHkuDQo+ID4gPiA+ID4g PiA+ICsgIEByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSICBJbnZhbGlkIFVSTC4NCj4gPiA+ ID4gPiA+ID4gKyAgQHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUyAgIE91dCBvZiBtZW1vcnku DQo+ID4gPiA+ID4gPiA+ICsgIEByZXR1cm4gRUZJX0RFVklDRV9FUlJPUiAgICAgICBJZiBIVFRQ UyBpcyB1c2VkLCB0aGlzIHByb2JhYmx5DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtZWFucyB0aGF0IFRMUyBzdXBwb3J0IGVpdGhlciB3YXMNCj4gPiA+ ID4gPiBub3QNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluc3RhbGxlZCBvciBub3QgY29uZmlndXJlZC4NCj4gPiA+ID4gPiA+ID4gKyAgQHJldHVybiBP dGhlcnMgICAgICAgICAgICAgICAgIEVycm9yIHNlbmRpbmcgdGhlIHJlcXVlc3QuDQo+ID4gPiA+ ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArU1RBVElDDQo+ID4g PiA+ID4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gPiA+ICtTZW5kUmVxdWVzdCAoDQo+ID4g PiA+ID4gPiA+ICsgIElOIERPV05MT0FEX0NPTlRFWFQgICpDb250ZXh0LA0KPiA+ID4gPiA+ID4g PiArICBJTiBDSEFSMTYgICAgICAgICAgICAqRG93bmxvYWRVcmwNCj4gPiA+ID4gPiA+ID4gKyAg KQ0KPiA+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gPiArICAgIEVGSV9IVFRQX1JFUVVFU1Rf REFUQSAgICAgICBSZXF1ZXN0RGF0YTsNCj4gPiA+ID4gPiA+ID4gKyAgICBFRklfSFRUUF9IRUFE RVIgICAgICAgICAgICAgUmVxdWVzdEhlYWRlcjsNCj4gPiA+ID4gPiA+ID4gKyAgICBFRklfSFRU UF9NRVNTQUdFICAgICAgICAgICAgUmVxdWVzdE1lc3NhZ2U7DQo+ID4gPiA+ID4gPiA+ICsgICAg RUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gPiArICAgIFplcm9NZW0gKCZSZXF1ZXN0RGF0YSwgc2l6ZW9mIChSZXF1ZXN0RGF0 YSkpOw0KPiA+ID4gPiA+ID4gPiArICAgIFplcm9NZW0gKCZSZXF1ZXN0SGVhZGVyLCBzaXplb2Yg KFJlcXVlc3RIZWFkZXIpKTsNCj4gPiA+ID4gPiA+ID4gKyAgICBaZXJvTWVtICgmUmVxdWVzdE1l c3NhZ2UsIHNpemVvZiAoUmVxdWVzdE1lc3NhZ2UpKTsNCj4gPiA+ID4gPiA+ID4gKyAgICBaZXJv TWVtICgmQ29udGV4dC0+UmVxdWVzdFRva2VuLCBzaXplb2YgKENvbnRleHQtDQo+ID4gPiA+ID4g PiA+UmVxdWVzdFRva2VuKSk7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICBS ZXF1ZXN0SGVhZGVyLkZpZWxkTmFtZSA9ICJIb3N0IjsNCj4gPiA+ID4gPiA+ID4gKyAgICBpZiAo Q29udGV4dC0+UHJveHlTZXJ2ZXJBZGRyKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgICBSZXF1ZXN0 SGVhZGVyLkZpZWxkVmFsdWUgPSBDb250ZXh0LT5Qcm94eVNlcnZlckFkZHI7DQo+ID4gPiA+ID4g PiA+ICsgICAgfSBlbHNlIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgQ0hBUjE2ICAqSG9zdDsN Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgVUlOVE4gICBTdHJpbmdTaXplOw0KPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIEhvc3QgPSAoQ0hBUjE2ICopQ29udGV4dC0+U2Vy dmVyQWRkckFuZFByb3RvOw0KPiA+ID4gPiA+ID4gPiArICAgICAgICB3aGlsZSAoKkhvc3QgIT0g Q0hBUl9OVUxMICYmICpIb3N0ICE9IEwnLycpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICBI b3N0Kys7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gPiArICAgICAgICBpZiAoKkhvc3QgPT0gQ0hBUl9OVUxMKSB7DQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ID4gPiA+ID4g KyAgICAgICAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIC8vDQo+ ID4gPiA+ID4gPiA+ICsgICAgICAgIC8vIEdldCB0aGUgbmV4dCBzbGFzaA0KPiA+ID4gPiA+ID4g PiArICAgICAgICAvLw0KPiA+ID4gPiA+ID4gPiArICAgICAgICBIb3N0Kys7DQo+ID4gPiA+ID4g PiA+ICsgICAgICAgIC8vDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIC8vIEFuZCBub3cgdGhlIGhv c3QgbmFtZQ0KPiA+ID4gPiA+ID4gPiArICAgICAgICAvLw0KPiA+ID4gPiA+ID4gPiArICAgICAg ICBIb3N0Kys7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgU3RyaW5n U2l6ZSA9IFN0ckxlbiAoSG9zdCkgKyAxOw0KPiA+ID4gPiA+ID4gPiArICAgICAgICBSZXF1ZXN0 SGVhZGVyLkZpZWxkVmFsdWUgPSBBbGxvY2F0ZVBvb2wgKFN0cmluZ1NpemUpOw0KPiA+ID4gPiA+ ID4gPiArICAgICAgICBpZiAoIVJlcXVlc3RIZWFkZXIuRmllbGRWYWx1ZSkgew0KPiA+ID4gPiA+ ID4gPiArICAgICAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIFVu aWNvZGVTdHJUb0FzY2lpU3RyUyAoSG9zdCwgUmVxdWVzdEhlYWRlci5GaWVsZFZhbHVlLA0KPiA+ ID4gPiA+IFN0cmluZ1NpemUpOw0KPiA+ID4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gPiArICAgIFJlcXVlc3RNZXNzYWdlLkhlYWRlckNvdW50Kys7DQo+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICBSZXF1ZXN0RGF0YS5NZXRob2QgPSBIdHRw TWV0aG9kR2V0Ow0KPiA+ID4gPiA+ID4gPiArICAgIFJlcXVlc3REYXRhLlVybCA9IERvd25sb2Fk VXJsOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAgUmVxdWVzdE1lc3NhZ2Uu RGF0YS5SZXF1ZXN0ID0gJlJlcXVlc3REYXRhOw0KPiA+ID4gPiA+ID4gPiArICAgIFJlcXVlc3RN ZXNzYWdlLkhlYWRlcnMgPSAmUmVxdWVzdEhlYWRlcjsNCj4gPiA+ID4gPiA+ID4gKyAgICBSZXF1 ZXN0TWVzc2FnZS5Cb2R5TGVuZ3RoID0gMDsNCj4gPiA+ID4gPiA+ID4gKyAgICBSZXF1ZXN0TWVz c2FnZS5Cb2R5ID0gTlVMTDsNCj4gPiA+ID4gPiA+ID4gKyAgICBDb250ZXh0LT5SZXF1ZXN0VG9r ZW4uRXZlbnQgPSBOVUxMOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAgLy8N Cj4gPiA+ID4gPiA+ID4gKyAgICAvLyBDb21wbGV0aW9uIGNhbGxiYWNrIGV2ZW50IHRvIGJlIHNl dCB3aGVuIFJlcXVlc3QgY29tcGxldGVzLg0KPiA+ID4gPiA+ID4gPiArICAgIC8vDQo+ID4gPiA+ ID4gPiA+ICsgICAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudCAoDQo+ID4gPiA+ID4gPiA+ICsg ICAgICBFVlRfTk9USUZZX1NJR05BTCwNCj4gPiA+ID4gPiA+ID4gKyAgICAgIFRQTF9DQUxMQkFD SywNCj4gPiA+ID4gPiA+ID4gKyAgICAgIFJlcXVlc3RDYWxsYmFjaywNCj4gPiA+ID4gPiA+ID4g KyAgICAgIENvbnRleHQsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAmQ29udGV4dC0+UmVxdWVzdFRv a2VuLkV2ZW50DQo+ID4gPiA+ID4gPiA+ICsgICAgICApOw0KPiA+ID4gPiA+ID4gPiArICAgIEFT U0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4g KyAgICBDb250ZXh0LT5SZXF1ZXN0VG9rZW4uU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+ ID4gPiA+ICsgICAgQ29udGV4dC0+UmVxdWVzdFRva2VuLk1lc3NhZ2UgPSAmUmVxdWVzdE1lc3Nh Z2U7DQo+ID4gPiA+ID4gPiA+ICsgICAgZ1JlcXVlc3RDYWxsYmFja0NvbXBsZXRlID0gRkFMU0U7 DQo+ID4gPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gQ29udGV4dC0+SHR0cC0+UmVxdWVzdCAoQ29u dGV4dC0+SHR0cCwgJkNvbnRleHQtDQo+ID4gPiA+ID4gPiA+UmVxdWVzdFRva2VuKTsNCj4gPiA+ ID4gPiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gPiA+ICsg ICAgICBnb3RvIEVycm9yOw0KPiA+ID4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiArICAgIFN0YXR1cyA9IFdhaXRGb3JDb21wbGV0aW9uIChDb250ZXh0LA0K PiA+ID4gPiAmZ1JlcXVlc3RDYWxsYmFja0NvbXBsZXRlKTsNCj4gPiA+ID4gPiA+ID4gKyAgICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgICBDb250ZXh0LT5I dHRwLT5DYW5jZWwgKENvbnRleHQtPkh0dHAsICZDb250ZXh0LQ0KPiA+ID4gPiA+UmVxdWVzdFRv a2VuKTsNCj4gPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiA+ICtFcnJvcjoNCj4gPiA+ ID4gPiA+ID4gKyAgICBTSEVMTF9GUkVFX05PTl9OVUxMIChSZXF1ZXN0SGVhZGVyLkZpZWxkVmFs dWUpOw0KPiA+ID4gPiA+ID4gPiArICAgIGlmIChDb250ZXh0LT5SZXF1ZXN0VG9rZW4uRXZlbnQp IHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIGdCUy0+Q2xvc2VFdmVudCAoQ29udGV4dC0+UmVxdWVz dFRva2VuLkV2ZW50KTsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIFplcm9NZW0gKCZDb250ZXh0LT5S ZXF1ZXN0VG9rZW4sIHNpemVvZiAoQ29udGV4dC0NCj4gPiA+ID4gPiA+ID5SZXF1ZXN0VG9rZW4p KTsNCj4gPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4g KyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ID4gKyAgVXBkYXRlIHRoZSBwcm9ncmVzcyBv ZiBhIGZpbGUgZG93bmxvYWQNCj4gPiA+ID4gPiA+ID4gKyAgVGhpcyBwcm9jZWR1cmUgaXMgY2Fs bGVkIGVhY2ggdGltZSBhIG5ldyBIVFRQIGJvZHkgcG9ydGlvbiBpcw0KPiA+ID4gPiA+IHJlY2Vp dmVkLg0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENvbnRl eHQgICAgICBIVFRQIGRvd25sb2FkIGNvbnRleHQuDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gIERvd25sb2FkTGVuICBQb3J0aW9uIHNpemUsIGluIGJ5dGVzLg0KPiA+ID4gPiA+ID4gPiAr ICBAcGFyYW1baW5dICBCdWZmZXIgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIHBhcnNlZCBidWZm ZXIuDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgQHJldHZhbCAgRUZJX1NVQ0NF U1MgICAgIFBvcnRpb24gc2F2ZWQuDQo+ID4gPiA+ID4gPiA+ICsgIEByZXR2YWwgIE90aGVyICAg ICAgICAgICBFcnJvciBzYXZpbmcgdGhlIHBvcnRpb24uDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gPiA+ICtFRklf U1RBVFVTDQo+ID4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ID4gK1NhdmVQb3J0aW9u ICgNCj4gPiA+ID4gPiA+ID4gKyAgSU4gRE9XTkxPQURfQ09OVEVYVCAgICAgKkNvbnRleHQsDQo+ ID4gPiA+ID4gPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgIERvd25sb2FkTGVuLA0KPiA+ ID4gPiA+ID4gPiArICBJTiBDSEFSOCAgICAgICAgICAgICAgICAqQnVmZmVyDQo+ID4gPiA+ID4g PiA+ICsgICkNCj4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ID4gKyAgQ0hBUjE2ICAgICAg ICAgICAgUHJvZ3Jlc3NbSFRUUF9QUk9HUkVTU19NRVNTQUdFX1NJWkVdOw0KPiA+ID4gPiA+ID4g PiArICBVSU5UTiAgICAgICAgICAgICBOYk9mS2I7DQo+ID4gPiA+ID4gPiA+ICsgIFVJTlROICAg ICAgICAgICAgIEluZGV4Ow0KPiA+ID4gPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgICBMYXN0 U3RlcDsNCj4gPiA+ID4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgU3RlcDsNCj4gPiA+ID4g PiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgU3RhdHVzOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiA+ICsgIExhc3RTdGVwID0gMDsNCj4gPiA+ID4gPiA+ID4gKyAgU3RlcCA9IDA7DQo+ ID4gPiA+ID4gPiA+ICsgIFNoZWxsU2V0RmlsZVBvc2l0aW9uIChtRmlsZUhhbmRsZSwgQ29udGV4 dC0NCj4gPiA+ID4gPkxhc3RSZXBvcnRlZE5iT2ZCeXRlcyk7DQo+ID4gPiA+ID4gPiA+ICsgIFN0 YXR1cyA9IFNoZWxsV3JpdGVGaWxlIChtRmlsZUhhbmRsZSwgJkRvd25sb2FkTGVuLCBCdWZmZXIp Ow0KPiA+ID4gPiA+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4g PiA+ICsgICAgaWYgKENvbnRleHQtPkNvbnRlbnREb3dubG9hZGVkID4gMCkgew0KPiA+ID4gPiA+ ID4gPiArICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgLTEs IC0xLCBOVUxMLCBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fQ1JMRiksIG1IdHRwSGlpSGFuZGxlDQo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiA+ID4gPiA+ ID4gKyAgICAgIC0xLCAtMSwgTlVMTCwgU1RSSU5HX1RPS0VOIChTVFJfSFRUUF9FUlJfV1JJVEUp LA0KPiA+ID4gPiA+ID4gPiArICAgICAgbUh0dHBIaWlIYW5kbGUsIG1Mb2NhbEZpbGVQYXRoLCBT dGF0dXMNCj4gPiA+ID4gPiA+ID4gKyAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgaWYgKENvbnRleHQtPkNvbnRlbnREb3dubG9hZGVkID09 IDApIHsNCj4gPiA+ID4gPiA+ID4gKyAgICBTaGVsbFByaW50RXggKC0xLCAtMSwgTCIlcyAgICAg ICAwIEtiIiwgSFRUUF9QUk9HUl9GUkFNRSk7DQo+ID4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBDb250ZXh0LT5Db250ZW50RG93bmxvYWRlZCArPSBE b3dubG9hZExlbjsNCj4gPiA+ID4gPiA+ID4gKyAgTmJPZktiID0gQ29udGV4dC0+Q29udGVudERv d25sb2FkZWQgPj4gMTA7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgUHJvZ3Jl c3NbMF0gPSBMJ1wwJzsNCj4gPiA+ID4gPiA+ID4gKyAgaWYgKENvbnRleHQtPkNvbnRlbnRMZW5n dGgpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICBMYXN0U3RlcCAgPSAoQ29udGV4dC0+TGFzdFJlcG9y dGVkTmJPZkJ5dGVzICoNCj4gPiA+ID4gPiA+ID4gSFRUUF9QUk9HUkVTU19TTElERVJfU1RFUFMp IC8NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgQ29udGV4dC0+Q29udGVudExlbmd0 aDsNCj4gPiA+ID4gPiA+ID4gKyAgICBTdGVwICAgICAgPSAoQ29udGV4dC0+Q29udGVudERvd25s b2FkZWQgKg0KPiA+ID4gPiA+ID4gSFRUUF9QUk9HUkVTU19TTElERVJfU1RFUFMpDQo+ID4gPiA+ ID4gPiA+IC8NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgQ29udGV4dC0+Q29udGVu dExlbmd0aDsNCj4gPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiA+ICsgIENvbnRleHQtPkxhc3RSZXBvcnRlZE5iT2ZCeXRlcyA9IENvbnRleHQtDQo+ID4gPiA+ Q29udGVudERvd25sb2FkZWQ7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgaWYg KFN0ZXAgPD0gTGFzdFN0ZXApIHsNCj4gPiA+ID4gPiA+ID4gKyAgICBpZiAoIUNvbnRleHQtPkNv bnRlbnRMZW5ndGgpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIC8vDQo+ID4gPiA+ID4gPiA+ICsg ICAgICAvLyBVcGRhdGUgZG93bmxvYWRlZCBzaXplLCB0aGVyZSBpcyBubyBsZW5ndGggaW5mbyBh dmFpbGFibGUuDQo+ID4gPiA+ID4gPiA+ICsgICAgICAvLw0KPiA+ID4gPiA+ID4gPiArICAgICAg U2hlbGxQcmludEV4ICgtMSwgLTEsIEwiJXMiLCBIVFRQX0tCKTsNCj4gPiA+ID4gPiA+ID4gKyAg ICAgIFNoZWxsUHJpbnRFeCAoLTEsIC0xLCBMIiU3ZCBLYiIsIE5iT2ZLYik7DQo+ID4gPiA+ID4g PiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIEVG SV9TVUNDRVNTOw0KPiA+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ID4gKyAgU2hlbGxQcmludEV4ICgtMSwgLTEsIEwiJXMiLCBIVFRQX1BST0dSRVNTX0RFTCk7 DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgU3RhdHVzID0gU3RyQ3B5UyAoUHJv Z3Jlc3MsIEhUVFBfUFJPR1JFU1NfTUVTU0FHRV9TSVpFLA0KPiA+ID4gPiA+ID4gPiBIVFRQX1BS T0dSX0ZSQU1FKTsNCj4gPiA+ID4gPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ID4gPiA+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiA+ID4gPiA+ICsgIH0NCj4g PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBmb3IgKEluZGV4ID0gMTsgSW5kZXggPCBT dGVwOyBJbmRleCsrKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgUHJvZ3Jlc3NbSW5kZXhdID0gTCc9 JzsNCj4gPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsg IGlmIChTdGVwKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgUHJvZ3Jlc3NbU3RlcF0gPSBMJz4nOw0K PiA+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgVW5p Y29kZVNQcmludCAoDQo+ID4gPiA+ID4gPiA+ICsgICAgUHJvZ3Jlc3MgKyAoc2l6ZW9mIChIVFRQ X1BST0dSX0ZSQU1FKSAvIHNpemVvZiAoQ0hBUjE2KSkgLSAxLA0KPiA+ID4gPiA+ID4gPiArICAg IHNpemVvZiAoUHJvZ3Jlc3MpIC0gc2l6ZW9mIChIVFRQX1BST0dSX0ZSQU1FKSwNCj4gPiA+ID4g PiA+ID4gKyAgICBMIiAlN2QgS2IiLA0KPiA+ID4gPiA+ID4gPiArICAgIE5iT2ZLYg0KPiA+ID4g PiA+ID4gPiArICAgICk7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gPiArICBTaGVsbFByaW50RXggKC0xLCAtMSwgTCIlcyIsIFByb2dyZXNzKTsNCj4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+ ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ID4gPiArICBSZXBsYWNlIHRoZSBvcmlnaW5hbCBIb3N0IGFuZCBVUkkgd2l0aCBIb3N0IGFuZCBV UkkgcmV0dXJuZWQgYnkNCj4gPiA+ID4gPiA+ID4gdGhlDQo+ID4gPiA+ID4gPiA+ICsgIEhUVFAg c2VydmVyIGluICdMb2NhdGlvbicgaGVhZGVyIChyZWRpcmVjdGlvbikuDQo+ID4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIExvY2F0aW9uICAgICAgICAgICBBIHBv aW50ZXIgdG8gdGhlICdMb2NhdGlvbicNCj4gPiA+ID4gPiA+ID4gc3RyaW5nDQo+ID4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkgSFRUUCBz ZXJ2ZXIuDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBDb250ZXh0ICAgICAgICAgICAg QSBwb2ludGVyIHRvIEhUVFAgZG93bmxvYWQNCj4gPiA+ID4gPiA+ID4gY29udGV4dC4NCj4gPiA+ ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIERvd25sb2FkVXJsICAgICAgICBGdWxseSBxdWFsaWZp ZWQgSFRUUCBVUkwuDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgQHJldHVybiAg RUZJX1NVQ0NFU1MgICAgICAgICAgICBIb3N0IGFuZCBVUkkgd2VyZSBzdWNjZXNzZnVsbHkNCj4g PiA+ID4gPiA+ID4gc2V0Lg0KPiA+ID4gPiA+ID4gPiArICBAcmV0dXJuICBFRklfT1VUX09GX1JF U09VUkNFUyAgIEVycm9yIHNldHRpbmcgSG9zdCBvciBVUkkuDQo+ID4gPiA+ID4gPiA+ICsqKi8N Cj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gPiA+ICtF RklfU1RBVFVTDQo+ID4gPiA+ID4gPiA+ICtTZXRIb3N0VVJJICgNCj4gPiA+ID4gPiA+ID4gKyAg SU4gQ0hBUjggICAgICAgICAgICAqTG9jYXRpb24sDQo+ID4gPiA+ID4gPiA+ICsgIElOIERPV05M T0FEX0NPTlRFWFQgKkNvbnRleHQsDQo+ID4gPiA+ID4gPiA+ICsgIElOIENIQVIxNiAgICAgICAg ICAgKkRvd25sb2FkVXJsDQo+ID4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ID4gK3sNCj4g PiA+ID4gPiA+ID4gKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQo+ID4gPiA+ID4gPiA+ICsgIFVJTlRO ICAgICAgU3RyaW5nU2l6ZTsNCj4gPiA+ID4gPiA+ID4gKyAgQ0hBUjggICAgICAqVG1wOw0KPiA+ ID4gPiA+ID4gPiArICBDSEFSMTYgICAgICpVcmw7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ID4gKyAgVG1wID0gTlVMTDsNCj4gPiA+ID4gPiA+ID4gKyAgVXJsID0gTlVMTDsNCj4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBTdHJpbmdTaXplID0gKEFzY2lpU3RyU2l6ZSAo TG9jYXRpb24pICogc2l6ZW9mIChDSEFSMTYpKTsNCj4gPiA+ID4gPiA+ID4gKyAgVXJsID0gQWxs b2NhdGVaZXJvUG9vbCAoU3RyaW5nU2l6ZSk7DQo+ID4gPiA+ID4gPiA+ICsgIGlmICghVXJsKSB7 DQo+ID4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4g PiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgU3RhdHVzID0g QXNjaWlTdHJUb1VuaWNvZGVTdHJTICgNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg KENPTlNUIENIQVI4ICopTG9jYXRpb24sDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg IFVybCwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgU3RyaW5nU2l6ZQ0KPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg Z290byBFcnJvcjsNCj4gPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiA+ICsgIC8vIElmIGFuIEhUVFAgc2VydmVyIHJlZGly ZWN0IHRvIHRoZSBzYW1lIGxvY2F0aW9uIG1vcmUgdGhhbg0KPiA+ID4gPiA+ID4gPiBvbmNlLA0K PiA+ID4gPiA+ID4gPiArICAvLyB0aGVuIHN0b3AgYXR0ZW1wdHMgYW5kIHRlbGwgaXQgaXMgbm90 IHJlYWNoYWJsZS4NCj4gPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgaWYgKCFT dHJDbXAgKFVybCwgRG93bmxvYWRVcmwpKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgU3RhdHVzID0g RUZJX05PX01BUFBJTkc7DQo+ID4gPiA+ID4gPiA+ICsgICAgZ290byBFcnJvcjsNCj4gPiA+ID4g PiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIGlmIChBc2NpaVN0 clN0ciAoTG9jYXRpb24sICI6Ly8iKSkgew0KPiA+ID4gPiA+ID4gPiArICAgIENIQVI4ICAgICAg KldhbGtlcjsNCj4gPiA+ID4gPiA+ID4gKyAgICBVSU5UTiAgICAgIElkeDsNCj4gPiA+ID4gPiA+ ID4gKyAgICBVSU5UTiAgICAgIFN0ZXA7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4g KyAgICBJZHggPSAwOw0KPiA+ID4gPiA+ID4gPiArICAgIFdhbGtlciA9IExvY2F0aW9uOw0KPiA+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAgZm9yIChTdGVwID0gMDsgU3RlcCA8IDI7 IFN0ZXArKykgew0KPiA+ID4gPiA+ID4gPiArICAgICAgZm9yICg7ICpXYWxrZXIgIT0gJy8nICYm ICpXYWxrZXIgIT0gJ1wwJzsgV2Fsa2VyKyspIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgSWR4 Kys7DQo+ID4gPiA+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ID4gPiA+ICsgICAgICBpZiAoIVN0 ZXApIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg Ly8gU2tpcCAiLy8iDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIC8vDQo+ID4gPiA+ID4gPiA+ICsg ICAgICAgIElkeCArPSAyOw0KPiA+ID4gPiA+ID4gPiArICAgICAgICBXYWxrZXIgKz0gMjsNCj4g PiA+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ID4gKyAgICBUbXAgPSBBbGxvY2F0ZVplcm9Qb29sIChJZHggKyAxKTsN Cj4gPiA+ID4gPiA+ID4gKyAgICBpZiAoIVRtcCkgew0KPiA+ID4gPiA+ID4gPiArICAgICAgU3Rh dHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gPiA+ID4gPiA+ICsgICAgICBnb3RvIEVy cm9yOw0KPiA+ID4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g PiArICAgIENvcHlNZW0gKFRtcCwgTG9jYXRpb24sIElkeCk7DQo+ID4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ID4gKyAgICAvLw0KPiA+ID4gPiA+ID4gPiArICAgIC8vIExvY2F0aW9uIG5vdyBw b2ludHMgdG8gVVJJDQo+ID4gPiA+ID4gPiA+ICsgICAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgICBM b2NhdGlvbiArPSBJZHg7DQo+ID4gPiA+ID4gPiA+ICsgICAgU3RyaW5nU2l6ZSA9IChJZHggKyAx KSAqIHNpemVvZiAoQ0hBUjE2KTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAg IFNIRUxMX0ZSRUVfTk9OX05VTEwgKENvbnRleHQtPlNlcnZlckFkZHJBbmRQcm90byk7DQo+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICBDb250ZXh0LT5TZXJ2ZXJBZGRyQW5kUHJv dG8gPSBBbGxvY2F0ZVplcm9Qb29sIChTdHJpbmdTaXplKTsNCj4gPiA+ID4gPiA+ID4gKyAgICBp ZiAoIUNvbnRleHQtPlNlcnZlckFkZHJBbmRQcm90bykgew0KPiA+ID4gPiA+ID4gPiArICAgICAg U3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gPiA+ID4gPiA+ICsgICAgICBnb3Rv IEVycm9yOw0KPiA+ID4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiArICAgIFN0YXR1cyA9IEFzY2lpU3RyVG9Vbmljb2RlU3RyUyAoDQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAoQ09OU1QgQ0hBUjggKilUbXAsDQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICBDb250ZXh0LT5TZXJ2ZXJBZGRyQW5kUHJvdG8sDQo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICBTdHJpbmdTaXplDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAp Ow0KPiA+ID4gPiA+ID4gPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ID4g PiA+ID4gKyAgICAgIGdvdG8gRXJyb3I7DQo+ID4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ ID4gPiArICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgU0hFTExfRlJFRV9O T05fTlVMTCAoQ29udGV4dC0+VVJJKTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiAr ICBTdHJpbmdTaXplID0gQXNjaWlTdHJTaXplIChMb2NhdGlvbikgKiBzaXplb2YgKENIQVIxNik7 DQo+ID4gPiA+ID4gPiA+ICsgIENvbnRleHQtPlVSSSA9IEFsbG9jYXRlWmVyb1Bvb2wgKFN0cmlu Z1NpemUpOw0KPiA+ID4gPiA+ID4gPiArICBpZiAoIUNvbnRleHQtPlVSSSkgew0KPiA+ID4gPiA+ ID4gPiArICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gPiA+ID4gPiAr ICAgIGdvdG8gRXJyb3I7DQo+ID4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gPiArICAvLyBOb3cgbWFrZSBjaGFuZ2VzIHRv IHRoZSBVUkkgcGFydC4NCj4gPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgU3Rh dHVzID0gQXNjaWlTdHJUb1VuaWNvZGVTdHJTICgNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAoQ09OU1QgQ0hBUjggKilMb2NhdGlvbiwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBD b250ZXh0LT5VUkksDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgU3RyaW5nU2l6ZQ0KPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICtFcnJvcjoNCj4gPiA+ ID4gPiA+ID4gKyAgU0hFTExfRlJFRV9OT05fTlVMTCAoVG1wKTsNCj4gPiA+ID4gPiA+ID4gKyAg U0hFTExfRlJFRV9OT05fTlVMTCAoVXJsKTsNCj4gPiA+ID4gPiA+ID4gKyAgcmV0dXJuIFN0YXR1 czsNCj4gPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArLyoq DQo+ID4gPiA+ID4gPiA+ICsgIE1lc3NhZ2UgcGFyc2VyIGNhbGxiYWNrLg0KPiA+ID4gPiA+ID4g PiArICBTYXZlIGEgcG9ydGlvbiBvZiBIVFRQIGJvZHkuDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIEV2ZW50VHlwZSAgICAgICBUeXBlIG9mIGV2ZW50LiBD YW4gYmUgZWl0aGVyDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT25Db21wbGV0ZSBvciBPbkRhdGEuDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICBE YXRhICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgd2l0aCBkYXRhLg0KPiA+ID4g PiA+ID4gPiArICBAcGFyYW1baW5dICAgTGVuZ3RoICAgICAgICAgIERhdGEgbGVuZ3RoIG9mIHRo aXMgcG9ydGlvbi4NCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIENvbnRleHQgICAgICAg ICBBIHBvaW50ZXIgdG8gdGhlIEhUVFAgZG93bmxvYWQNCj4gPiA+ID4gPiBjb250ZXh0Lg0KPiA+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIEByZXR1cm4gICAgICBFRklfU1VDQ0VTUyAg ICBUaGUgcG9ydGlvbiB3YXMgcHJvY2Vzc2VkDQo+ID4gPiA+ID4gPiA+IHN1Y2Nlc3NmdWxseS4N Cj4gPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgICAgIE90aGVyICAgICAgICAgIEVycm9yIHJldHVy bmVkIGJ5IFNhdmVQb3J0aW9uLg0KPiA+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4gPiA+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4g PiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiA+ICtQYXJzZU1zZyAoDQo+ID4gPiA+ID4gPiA+ ICsgIElOIEhUVFBfQk9EWV9QQVJTRV9FVkVOVCAgICAgIEV2ZW50VHlwZSwNCj4gPiA+ID4gPiA+ ID4gKyAgSU4gQ0hBUjggICAgICAgICAgICAgICAgICAgICAgKkRhdGEsDQo+ID4gPiA+ID4gPiA+ ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgIExlbmd0aCwNCj4gPiA+ID4gPiA+ID4g KyAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAgICAgKkNvbnRleHQNCj4gPiA+ID4gPiA+ID4g KyAgKQ0KPiA+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gPiArICBpZiAoIURhdGEgfHwNCj4g PiA+ID4gPiA+ID4gKyAgICAgIChFdmVudFR5cGUgPT0gQm9keVBhcnNlRXZlbnRPbkNvbXBsZXRl KSB8fA0KPiA+ID4gPiA+ID4gPiArICAgICAgKCFDb250ZXh0KQ0KPiA+ID4gPiA+ID4gPiArICAg ICApIHsNCj4gPiA+ID4gPiA+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+ID4g PiA+ICsgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICByZXR1cm4gU2F2ZVBv cnRpb24gKENvbnRleHQsIExlbmd0aCwgRGF0YSk7DQo+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4g PiA+ICsgIEdldCBIVFRQIHNlcnZlciByZXNwb25zZSBhbmQgY29sbGVjdCB0aGUgd2hvbGUgYm9k eSBhcyBhIGZpbGUuDQo+ID4gPiA+ID4gPiA+ICsgIFNldCBhcHByb3ByaWF0ZSBzdGF0dXMgaW4g Q29udGV4dCAoUkVRX09LLCBSRVFfUkVQRUFULA0KPiA+ID4gPiBSRVFfRVJST1IpLg0KPiA+ID4g PiA+ID4gPiArICBOb3RlIHRoYXQgZXZlbiBpZiBIVFRQIHNlcnZlciByZXR1cm5zIGFuIGVycm9y IGNvZGUsIGl0IG1pZ2h0DQo+ID4gPiA+ID4gPiA+IHNlbmQNCj4gPiA+ID4gPiA+ID4gKyAgdGhl IGJvZHkgYXMgd2VsbC4gVGhpcyBib2R5IHdpbGwgYmUgY29sbGVjdGVkIGluIHRoZSByZXN1bHRh bnQNCj4gPiA+ID4gPiBmaWxlLg0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gICBDb250ZXh0ICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBIVFRQIGRvd25sb2Fk DQo+ID4gPiA+ID4gY29udGV4dC4NCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgIERvd25s b2FkZWRVcmwgICBBIHBvaW50ZXIgdG8gdGhlIGZ1bGx5IHF1YWxpZmllZCBVUkwNCj4gPiA+ID4g PiB0bw0KPiA+ID4gPiA+ID4gPiBkb3dubG9hZC4NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiArICBAcmV0dXJuICBFRklfU1VDQ0VTUyAgICAgICAgIFZhbGlkIGZpbGUuIEJvZHkgc3Vj Y2Vzc2Z1bGx5DQo+ID4gPiA+ID4gY29sbGVjdGVkLg0KPiA+ID4gPiA+ID4gPiArICBAcmV0dXJu ICBFRklfSFRUUF9FUlJPUiAgICAgIFJlc3BvbnNlIGlzIGEgdmFsaWQgSFRUUCByZXNwb25zZSwN Cj4gPiA+ID4gPiA+ID4gYnV0DQo+ID4gPiA+ID4gdGhlDQo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSFRUUCBzZXJ2ZXINCj4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0ZWQgYW4gZXJyb3IgKEhUVFAgY29kZSA+ PQ0KPiA+ID4gPiA+ID4gPiA0MDApLg0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJlc3BvbnNlIGJvZHkgbWF5IGNvbnRhaW4gZnVsbA0KPiA+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAgc2VydmVyIHJlc3BvbnNlLg0K PiA+ID4gPiA+ID4gPiArICBAcmV0dXJuIE90aGVycyAgICAgICAgICAgICAgIEVycm9yIGdldHRp bmcgdGhlIHJlcG9uc2UgZnJvbSB0aGUNCj4gPiA+ID4gPiBIVFRQIHNlcnZlci4NCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwb25zZSBib2R5IGlzIG5v dCBjb2xsZWN0ZWQuDQo+ID4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ID4gK1NUQVRJQw0K PiA+ID4gPiA+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ID4gPiArR2V0UmVzcG9uc2UgKA0K PiA+ID4gPiA+ID4gPiArICBJTiBET1dOTE9BRF9DT05URVhUICpDb250ZXh0LA0KPiA+ID4gPiA+ ID4gPiArICBJTiBDSEFSMTYgICAgICAgICAgICpEb3dubG9hZFVybA0KPiA+ID4gPiA+ID4gPiAr ICApDQo+ID4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiA+ICsgICAgRUZJX0hUVFBfUkVTUE9O U0VfREFUQSAgICAgIFJlc3BvbnNlRGF0YTsNCj4gPiA+ID4gPiA+ID4gKyAgICBFRklfSFRUUF9N RVNTQUdFICAgICAgICAgICAgUmVzcG9uc2VNZXNzYWdlOw0KPiA+ID4gPiA+ID4gPiArICAgIEVG SV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gPiA+ID4gPiA+ICsgICAgVk9J RCAgICAgICAgICAgICAgICAgICAgICAgICpNc2dQYXJzZXI7DQo+ID4gPiA+ID4gPiA+ICsgICAg Qk9PTEVBTiAgICAgICAgICAgICAgICAgICAgIElzVHJ1bmtlZDsNCj4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiArICAgIFplcm9NZW0gKCZSZXNwb25zZURhdGEsIHNpemVvZiAoUmVzcG9u c2VEYXRhKSk7DQo+ID4gPiA+ID4gPiA+ICsgICAgWmVyb01lbSAoJlJlc3BvbnNlTWVzc2FnZSwg c2l6ZW9mIChSZXNwb25zZU1lc3NhZ2UpKTsNCj4gPiA+ID4gPiA+ID4gKyAgICBaZXJvTWVtICgm Q29udGV4dC0+UmVzcG9uc2VUb2tlbiwgc2l6ZW9mIChDb250ZXh0LQ0KPiA+ID4gPiA+ID4gPlJl c3BvbnNlVG9rZW4pKTsNCj4gPiA+ID4gPiA+ID4gKyAgICBJc1RydW5rZWQgPSBGQUxTRTsNCj4g PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAgIFJlc3BvbnNlTWVzc2FnZS5Cb2R5ID0g Q29udGV4dC0+QnVmZmVyOw0KPiA+ID4gPiA+ID4gPiArICAgIENvbnRleHQtPlJlc3BvbnNlVG9r ZW4uU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+ID4gPiA+ICsgICAgQ29udGV4dC0+UmVz cG9uc2VUb2tlbi5NZXNzYWdlID0gJlJlc3BvbnNlTWVzc2FnZTsNCj4gPiA+ID4gPiA+ID4gKyAg ICBDb250ZXh0LT5Db250ZW50TGVuZ3RoID0gMDsNCj4gPiA+ID4gPiA+ID4gKyAgICBDb250ZXh0 LT5TdGF0dXMgPSBSRVFfT0s7DQo+ID4gPiA+ID4gPiA+ICsgICAgTXNnUGFyc2VyID0gTlVMTDsN Cj4gPiA+ID4gPiA+ID4gKyAgICBSZXNwb25zZURhdGEuU3RhdHVzQ29kZSA9DQo+ID4gPiA+IEhU VFBfU1RBVFVTX1VOU1VQUE9SVEVEX1NUQVRVUzsNCj4gPiA+ID4gPiA+ID4gKyAgICBSZXNwb25z ZU1lc3NhZ2UuRGF0YS5SZXNwb25zZSA9ICZSZXNwb25zZURhdGE7DQo+ID4gPiA+ID4gPiA+ICsg ICAgQ29udGV4dC0+UmVzcG9uc2VUb2tlbi5FdmVudCA9IE5VTEw7DQo+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gKyAgICBkbyB7DQo+ID4gPiA+ID4gPiA+ICsgICAgICBTSEVMTF9GUkVF X05PTl9OVUxMIChSZXNwb25zZU1lc3NhZ2UuSGVhZGVycyk7DQo+ID4gPiA+ID4gPiA+ICsgICAg ICBSZXNwb25zZU1lc3NhZ2UuSGVhZGVyQ291bnQgPSAwOw0KPiA+ID4gPiA+ID4gPiArICAgICAg Z1Jlc3BvbnNlQ2FsbGJhY2tDb21wbGV0ZSA9IEZBTFNFOw0KPiA+ID4gPiA+ID4gPiArICAgICAg UmVzcG9uc2VNZXNzYWdlLkJvZHlMZW5ndGggPSBDb250ZXh0LT5CdWZmZXJTaXplOw0KPiA+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAgICBpZiAoU2hlbGxHZXRFeGVjdXRpb25CcmVh a0ZsYWcgKCkpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgU3RhdHVzID0gRUZJX0FCT1JURUQ7 DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIGJyZWFrOw0KPiA+ID4gPiA+ID4gPiArICAgICAgfQ0K PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAgICBpZiAoIUNvbnRleHQtPkNvbnRl bnREb3dubG9hZGVkICYmICFDb250ZXh0LQ0KPiA+ID4gPiA+ID4gPlJlc3BvbnNlVG9rZW4uRXZl bnQpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudCAo DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgRVZUX05PVElGWV9TSUdOQUwsDQo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgVFBMX0NBTExCQUNLLA0KPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlQ2FsbGJhY2ssDQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgQ29udGV4dCwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAmQ29udGV4dC0+UmVzcG9uc2VUb2tlbi5FdmVudA0KPiA+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIEFTU0VSVF9FRklfRVJS T1IgKFN0YXR1cyk7DQo+ID4gPiA+ID4gPiA+ICsgICAgICB9IGVsc2Ugew0KPiA+ID4gPiA+ID4g PiArICAgICAgICBSZXNwb25zZU1lc3NhZ2UuRGF0YS5SZXNwb25zZSA9IE5VTEw7DQo+ID4gPiA+ ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIFN0 YXR1cyA9IENvbnRleHQtPkh0dHAtPlJlc3BvbnNlIChDb250ZXh0LT5IdHRwLCAmQ29udGV4dC0N Cj4gPiA+ID4gPiA+ID4gPlJlc3BvbnNlVG9rZW4pOw0KPiA+ID4gPiA+ID4gPiArICAgICAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ID4gPiArICAgICAgICBicmVhazsNCj4g PiA+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAg ICAgU3RhdHVzID0gV2FpdEZvckNvbXBsZXRpb24gKENvbnRleHQsDQo+ID4gPiA+ID4gJmdSZXNw b25zZUNhbGxiYWNrQ29tcGxldGUpOw0KPiA+ID4gPiA+ID4gPiArICAgICAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSAmJiBSZXNwb25zZU1lc3NhZ2UuSGVhZGVyQ291bnQpIHsNCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+ID4gPiA+ICsgICAgICB9 DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgQ29udGV4dC0+SHR0cC0+Q2FuY2VsIChD b250ZXh0LT5IdHRwLA0KPiA+ID4gPiA+ICZDb250ZXh0LT5SZXNwb25zZVRva2VuKTsNCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gPiA+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIGlmICghQ29udGV4dC0+Q29udGVudERvd25s b2FkZWQpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgRUZJX0hUVFBfSEVBREVSICpIZWFkZXI7 DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIEJPT0xFQU4gICAgICAgICBSZWRpcmVjdGlvbjsNCj4g PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAgICAgICBSZWRpcmVjdGlvbiA9DQo+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgKChSZXNwb25zZURhdGEuU3RhdHVzQ29kZSA+PQ0KPiA+ID4g PiA+ID4gSFRUUF9TVEFUVVNfMzAwX01VTFRJUExFX0NIT0lDRVMpDQo+ID4gPiA+ID4gPiA+ICYm DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIChSZXNwb25zZURhdGEuU3RhdHVzQ29kZSA8PQ0K PiA+ID4gPiA+ID4gPiBIVFRQX1NUQVRVU18zMDdfVEVNUE9SQVJZX1JFRElSRUNUKQ0KPiA+ID4g PiA+ID4gPiArICAgICAgICAgICkgfHwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAoUmVzcG9u c2VEYXRhLlN0YXR1c0NvZGUgPT0NCj4gPiA+ID4gPiA+ID4gSFRUUF9TVEFUVVNfMzA4X1BFUk1B TkVOVF9SRURJUkVDVCk7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg aWYgKFJlZGlyZWN0aW9uKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgLy8NCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAvLyBOZWVkIHRvIHJlcGVhdCB0aGUgcmVxdWVzdCB3aXRoIG5ldyBM b2NhdGlvbiAoc2VydmVyDQo+ID4gPiA+ID4gcmVkaXJlY3RlZCkuDQo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICBDb250ZXh0LT5TdGF0dXMgPSBS RVFfTkVFRF9SRVBFQVQ7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICBIZWFkZXIgPSBIdHRwRmluZEhlYWRlciAoDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICBSZXNwb25zZU1lc3NhZ2UuSGVhZGVyQ291bnQsDQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICBSZXNwb25zZU1lc3NhZ2UuSGVhZGVycywNCj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICJMb2NhdGlvbiINCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgaWYgKEhlYWRlcikgew0K PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgU3RhdHVzID0gU2V0SG9zdFVSSSAoSGVhZGVyLT5G aWVsZFZhbHVlLCBDb250ZXh0LA0KPiA+ID4gPiA+IERvd25sb2FkVXJsKTsNCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgIGlmIChTdGF0dXMgPT0gRUZJX05PX01BUFBJTkcpIHsNCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTg0KPiA+ID4gPiA+ID4gPiAo U1RSX0hUVFBfRVJSX1NUQVRVU0NPREUpLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg IG1IdHRwSGlpSGFuZGxlLCBDb250ZXh0LT5TZXJ2ZXJBZGRyQW5kUHJvdG8sDQo+ID4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgTCJSZWN1cnNpdmUgSFRUUCBzZXJ2ZXIgcmVsb2NhdGlvbiIs DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgQ29udGV4dC0+VVJJDQo+ID4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgIH0NCj4g PiA+ID4gPiA+ID4gKyAgICAgICAgICB9IGVsc2Ugew0KPiA+ID4gPiA+ID4gPiArICAgICAgICAg ICAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgIC8vIEJhZCByZXBseSBmcm9tIHRoZSBz ZXJ2ZXIuIFNlcnZlciBtdXN0IHNwZWNpZnkgdGhlDQo+ID4gPiA+ID4gbG9jYXRpb24uDQo+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgICAvLyBJbmRpY2F0ZSB0aGF0IHJlc291cmNlIHdhcyBub3Qg Zm91bmQsIGFuZCBubyBib2R5DQo+ID4gPiA+ID4gY29sbGVjdGVkLg0KPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgIFN0YXR1cyA9IEVGSV9O T1RfRk9VTkQ7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgQ29udGV4dC0+SHR0cC0+Q2FuY2VsIChDb250ZXh0LT5I dHRwLCAmQ29udGV4dC0NCj4gPiA+ID4gPiA+ID5SZXNwb25zZVRva2VuKTsNCj4gPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPiA+ID4gPiArICAg ICAgICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgLy8gSW5pdCBtZXNzYWdlLWJvZHkgcGFyc2VyIGJ5IGhlYWRlciBp bmZvcm1hdGlvbi4NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ID4gPiA+ID4gKyAg ICAgICAgaWYgKCFNc2dQYXJzZXIpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICBTdGF0dXMg PSBIdHRwSW5pdE1zZ1BhcnNlciAoDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICBSZXNwb25zZU1lc3NhZ2UuRGF0YS5SZXF1ZXN0LT5NZXRob2QsDQo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICBSZXNwb25zZURhdGEuU3RhdHVzQ29kZSwNCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlTWVzc2FnZS5IZWFkZXJDb3VudCwNCj4g PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlTWVzc2FnZS5IZWFkZXJz LA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgUGFyc2VNc2csDQo+ID4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBDb250ZXh0LA0KPiA+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgJk1zZ1BhcnNlcg0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICBicmVhazsNCj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICB9DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiArICAgICAgICAvLw0KPiA+ID4gPiA+ID4gPiArICAgICAgICAvLyBJZiBp dCBpcyBhIHRydW5rZWQgbWVzc2FnZSwgcmVseSBvbiB0aGUgcGFyc2VyLg0KPiA+ID4gPiA+ID4g PiArICAgICAgICAvLw0KPiA+ID4gPiA+ID4gPiArICAgICAgICBIZWFkZXIgPSBIdHRwRmluZEhl YWRlciAoDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3Bv bnNlTWVzc2FnZS5IZWFkZXJDb3VudCwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmVzcG9uc2VNZXNzYWdlLkhlYWRlcnMsDQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJUcmFuc2Zlci1FbmNvZGluZyINCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gKyAgICAg ICAgSXNUcnVua2VkID0gKEhlYWRlciAmJg0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgIUFzY2lpU3RyQ21wIChIZWFkZXItPkZpZWxkVmFsdWUsICJjaHVua2VkIikNCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gPiArICAgICAgICBIdHRwR2V0RW50aXR5TGVuZ3RoIChNc2dQYXJzZXIsICZDb250ZXh0 LT5Db250ZW50TGVuZ3RoKTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAgICAg ICBpZiAoUmVzcG9uc2VEYXRhLlN0YXR1c0NvZGUgPj0NCj4gPiA+ID4gSFRUUF9TVEFUVVNfNDAw X0JBRF9SRVFVRVNUDQo+ID4gPiA+ID4gPiAmJg0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg KFJlc3BvbnNlRGF0YS5TdGF0dXNDb2RlICE9DQo+ID4gPiA+ID4gPiA+IEhUVFBfU1RBVFVTXzMw OF9QRVJNQU5FTlRfUkVESVJFQ1QpDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICkgew0KPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgIC8vIFNlcnZlciByZXBvcnRlZCBhbiBlcnJvciB2aWEgUmVzcG9uc2UgY29kZS4NCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgIC8vIENvbGxlY3QgdGhlIGJvZHkgaWYgYW55Lg0KPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgIGlmIChDb250ZXh0LT5TdGF0dXMgIT0gUkVRX0VSUk9SKSB7DQo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgIENvbnRleHQtPlN0YXR1cyA9IFJFUV9FUlJPUjsNCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTg0KPiA+ID4gPiA+IChT VFJfSFRUUF9FUlJfU1RBVFVTQ09ERSksDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgbUh0dHBIaWlIYW5kbGUsIENvbnRleHQtPlNlcnZlckFkZHJBbmRQcm90bywNCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICBFcnJTdGF0dXNEZXNjW1Jlc3BvbnNlRGF0YS5TdGF0 dXNDb2RlIC0NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEhUVFBfU1RBVFVTXzQwMF9CQURfUkVRVUVTVF0sDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgQ29udGV4dC0+VVJJDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg KTsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICB9DQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgIH0NCj4gPiA+ID4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiArICAgICAgLy8gRG8gTk9UIHRyeSB0byBwYXJzZSBhbiBlbXB0eSBib2R5Lg0KPiA+ID4g PiA+ID4gPiArICAgICAgaWYgKFJlc3BvbnNlTWVzc2FnZS5Cb2R5TGVuZ3RoIHx8IElzVHJ1bmtl ZCkgew0KPiA+ID4gPiA+ID4gPiArICAgICAgICBTdGF0dXMgPSBIdHRwUGFyc2VNZXNzYWdlQm9k eSAoDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgTXNnUGFyc2VyLA0KPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlTWVzc2FnZS5Cb2R5TGVuZ3RoLA0K PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlTWVzc2FnZS5Cb2R5DQo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gKyAgICAg IH0NCj4gPiA+ID4gPiA+ID4gKyAgICB9IHdoaWxlICghSHR0cElzTWVzc2FnZUNvbXBsZXRlIChN c2dQYXJzZXIpICYmDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgIUVGSV9FUlJPUiAoU3Rh dHVzKSAmJg0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIFJlc3BvbnNlTWVzc2FnZS5Cb2R5 TGVuZ3RoDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiArICAgIFNIRUxMX0ZSRUVfTk9OX05VTEwgKE1zZ1BhcnNlcik7DQo+ID4g PiA+ID4gPiA+ICsgICAgaWYgKENvbnRleHQtPlJlc3BvbnNlVG9rZW4uRXZlbnQpIHsNCj4gPiA+ ID4gPiA+ID4gKyAgICAgIGdCUy0+Q2xvc2VFdmVudCAoQ29udGV4dC0+UmVzcG9uc2VUb2tlbi5F dmVudCk7DQo+ID4gPiA+ID4gPiA+ICsgICAgICBaZXJvTWVtICgmQ29udGV4dC0+UmVzcG9uc2VU b2tlbiwgc2l6ZW9mIChDb250ZXh0LQ0KPiA+ID4gPiA+ID4gPlJlc3BvbnNlVG9rZW4pKTsNCj4g PiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgICBy ZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ID4gKyAgV29ya2VyIGZ1bmN0aW9uIHRoYXQgZG93bmxv YWQgdGhlIGRhdGEgb2YgYSBmaWxlIGZyb20gYSBIVFRQDQo+ID4gPiA+ID4gPiA+IHNlcnZlcg0K PiA+ID4gPiA+ID4gZ2l2ZW4NCj4gPiA+ID4gPiA+ID4gKyAgdGhlIHBhdGggb2YgdGhlIGZpbGUg YW5kIGl0cyBzaXplLg0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gICBDb250ZXh0ICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEhUVFAgZG93bmxvYWQNCj4g PiA+ID4gPiBjb250ZXh0Lg0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIEByZXR2 YWwgIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgZmlsZSB3YXMgZG93bmxvYWRlZC4NCj4gPiA+ ID4gPiA+ID4gKyAgQHJldHZhbCAgRUZJX09VVF9PRl9SRVNPVVJDRVMgIEEgbWVtb3J5IGFsbG9j YXRpb24gZmFpbGVkLg0KPiA+ID4gPiA+ID4gPiArICAjcmV0dmFsICBFRklfSFRUUF9FUlJPUiAg ICAgICAgVGhlIHNlcnZlciByZXR1cm5lZCBhIHZhbGlkIEhUVFANCj4gPiA+ID4gPiBlcnJvci4N Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4YW1pbmUg dGhlIG1Mb2NhbEZpbGVQYXRoIGZpbGUNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRvIGdldCBlcnJvciBib2R5Lg0KPiA+ID4gPiA+ID4gPiArICBAcmV0 dmFsICBPdGhlcnMgICAgICAgICAgICAgICAgVGhlIGRvd25sb2FkaW5nIG9mIHRoZSBmaWxlIGZy b20NCj4gPiA+ID4gPiA+ID4gdGhlDQo+ID4gPiA+ID4gc2VydmVyDQo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWQuDQo+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gPiA+ ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gPiA+ICtEb3dubG9hZEZpbGUgKA0KPiA+ID4gPiA+ID4g PiArICBJTiAgIERPV05MT0FEX0NPTlRFWFQgICAqQ29udGV4dA0KPiA+ID4gPiA+ID4gPiArICAp DQo+ID4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAg ICBTdGF0dXM7DQo+ID4gPiA+ID4gPiA+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAqRG93bmxv YWRVcmw7DQo+ID4gPiA+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICBVcmxTaXplOw0K PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIEFTU0VSVCAoQ29udGV4dCk7DQo+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgRG93bmxvYWRVcmwgPSBOVUxMOw0KPiA+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIENvbnRleHQtPkJ1ZmZlciA9IEFsbG9jYXRlUG9v bCAoQ29udGV4dC0+QnVmZmVyU2l6ZSk7DQo+ID4gPiA+ID4gPiA+ICsgIGlmICghQ29udGV4dC0+ QnVmZmVyKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJD RVM7DQo+ID4gPiA+ID4gPiA+ICsgICAgZ290byBPTl9FWElUOw0KPiA+ID4gPiA+ID4gPiArICB9 DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ID4gKyAg Ly8gT1BFTiBGSUxFDQo+ID4gPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiA+ICsgIGlmICgh RUZJX0VSUk9SIChTaGVsbEZpbGVFeGlzdHMgKG1Mb2NhbEZpbGVQYXRoKSkpIHsNCj4gPiA+ID4g PiA+ID4gKyAgICBTaGVsbERlbGV0ZUZpbGVCeU5hbWUgKG1Mb2NhbEZpbGVQYXRoKTsNCj4gPiA+ ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIFN0YXR1cyA9 IFNoZWxsT3BlbkZpbGVCeU5hbWUgKA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIG1Mb2Nh bEZpbGVQYXRoLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICZtRmlsZUhhbmRsZSwNCj4g PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBFRklfRklMRV9NT0RFX0NSRUFURSB8DQo+ID4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9XUklURSAgfA0KPiA+ID4gPiA+ID4g PiArICAgICAgICAgICAgIEVGSV9GSUxFX01PREVfUkVBRCwNCj4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAwKTsNCj4gPiA+ID4gPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ID4gPiA+ID4gPiArICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiA+ICsgICAg ICAtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTiAoU1RSX0dFTl9GSUxFX09QRU5fRkFJTCksDQo+ ID4gPiA+ID4gPiA+ICsgICAgICBtSHR0cEhpaUhhbmRsZSwgSFRUUF9BUFBfTkFNRSwgbUxvY2Fs RmlsZVBhdGgNCj4gPiA+ID4gPiA+ID4gKyAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICsgICAgZ290 byBPTl9FWElUOw0KPiA+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ID4gKyAgZG8gew0KPiA+ID4gPiA+ID4gPiArICAgIFNIRUxMX0ZSRUVfTk9OX05VTEwgKERv d25sb2FkVXJsKTsNCj4gPiA+ID4gPiA+ID4gKyAgICBVcmxTaXplID0gMDsNCj4gPiA+ID4gPiA+ ID4gKyAgICBEb3dubG9hZFVybCA9IFN0cm5DYXRHcm93ICgNCj4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgJkRvd25sb2FkVXJsLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAmVXJsU2l6ZSwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgQ29u dGV4dC0+U2VydmVyQWRkckFuZFByb3RvLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICBTdHJMZW4gKENvbnRleHQtPlNlcnZlckFkZHJBbmRQcm90bykNCj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gKyAgICBpZiAoQ29udGV4dC0+ VVJJWzBdICE9IEwnLycpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICAgIERvd25sb2FkVXJsID0gU3Ry bkNhdEdyb3cgKA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICZEb3dubG9hZFVybCwNCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAmVXJsU2l6ZSwNCj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICBMIi8iLA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgIFN0ckxlbiAoQ29udGV4dC0+U2VydmVyQWRkckFuZFByb3RvKQ0KPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAgRG93bmxvYWRVcmwgPSBTdHJuQ2F0R3Jv dyAoDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICZEb3dubG9hZFVybCwNCj4g PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgJlVybFNpemUsDQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgIENvbnRleHQtPlVSSSwNCj4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgU3RyTGVuIChDb250ZXh0LT5VUkkpKTsNCj4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiArICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPiA+ID4gPiA+ICsgICAg ICAtMSwgLTEsIE5VTEwsIFNUUklOR19UT0tFTiAoU1RSX0hUVFBfRE9XTkxPQURJTkcpLA0KPiA+ ID4gPiA+ID4gPiArICAgICAgbUh0dHBIaWlIYW5kbGUsIERvd25sb2FkVXJsKTsNCj4gPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAgIFN0YXR1cyA9IFNlbmRSZXF1ZXN0IChDb250ZXh0 LCBEb3dubG9hZFVybCk7DQo+ID4gPiA+ID4gPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiA+ID4gPiA+ID4gPiArICAgICAgZ290byBPTl9FWElUOw0KPiA+ID4gPiA+ID4gPiAr ICAgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAgIFN0YXR1cyA9IEdldFJl c3BvbnNlIChDb250ZXh0LCBEb3dubG9hZFVybCk7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAg ICBnb3RvIE9OX0VYSVQ7DQo+ID4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gPiArICB9 IHdoaWxlIChDb250ZXh0LT5TdGF0dXMgPT0gUkVRX05FRURfUkVQRUFUKTsNCj4gPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gPiArICBpZiAoQ29udGV4dC0+U3RhdHVzID09IFJFUV9FUlJPUikg ew0KPiA+ID4gPiA+ID4gPiArICAgIFN0YXR1cyA9IEVGSV9IVFRQX0VSUk9SOw0KPiA+ID4gPiA+ ID4gPiArICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gK09OX0VYSVQ6DQo+ID4g PiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiA+ICsgIC8vIENMT1NFIEZJTEUNCj4gPiA+ID4g PiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ID4gKyAgaWYgKG1GaWxlSGFuZGxlKSB7DQo+ID4gPiA+ ID4gPiA+ICsgICAgU2hlbGxDbG9zZUZpbGUgKCZtRmlsZUhhbmRsZSk7DQo+ID4gPiA+ID4gPiA+ ICsgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBTSEVMTF9GUkVFX05PTl9O VUxMIChEb3dubG9hZFVybCk7DQo+ID4gPiA+ID4gPiA+ICsgIFNIRUxMX0ZSRUVfTk9OX05VTEwg KENvbnRleHQtPkJ1ZmZlcik7DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgcmV0 dXJuIFN0YXR1czsNCj4gPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiArLyoqDQo+ID4gPiA+ID4gPiA+ICsgIFJldHJpdmUgSElJIHBhY2thZ2UgbGlzdCBmcm9t IEltYWdlSGFuZGxlIGFuZCBwdWJsaXNoIHRvIEhJSQ0KPiA+ID4gPiA+IGRhdGFiYXNlLg0KPiA+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgICAg ICAgIFRoZSBpbWFnZSBoYW5kbGUgb2YgdGhlIHByb2Nlc3MuDQo+ID4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ID4gKyAgQHJldHVybiBISUkgaGFuZGxlLg0KPiA+ID4gPiA+ID4gPiArKiovDQo+ ID4gPiA+ID4gPiA+ICtFRklfSElJX0hBTkRMRQ0KPiA+ID4gPiA+ID4gPiArSW5pdGlhbGl6ZUhp aVBhY2thZ2UgKA0KPiA+ID4gPiA+ID4gPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAg SW1hZ2VIYW5kbGUNCj4gPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gPiArew0KPiA+ID4g PiA+ID4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gPiA+ ID4gPiArICBFRklfSElJX1BBQ0tBR0VfTElTVF9IRUFERVIgKlBhY2thZ2VMaXN0Ow0KPiA+ID4g PiA+ID4gPiArICBFRklfSElJX0hBTkRMRSAgICAgICAgICAgICAgSGlpSGFuZGxlOw0KPiA+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiA+ICsgIC8vIFJldHJp ZXZlIEhJSSBwYWNrYWdlIGxpc3QgZnJvbSBJbWFnZUhhbmRsZQ0KPiA+ID4gPiA+ID4gPiArICAv Lw0KPiA+ID4gPiA+ID4gPiArICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQo+ID4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgJmdFZmlIaWlQYWNrYWdlTGlzdFByb3RvY29sR3VpZCwNCj4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAoVk9JRCAqKikmUGFja2FnZUxpc3QsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgTlVMTCwNCj4g PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wN Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ID4gPiArICBBU1NFUlRf RUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ID4gPiA+ID4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ID4gPiA+ICsg IH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gPiAr ICAvLyBQdWJsaXNoIEhJSSBwYWNrYWdlIGxpc3QgdG8gSElJIERhdGFiYXNlLg0KPiA+ID4gPiA+ ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gPiArICBTdGF0dXMgPSBnSGlpRGF0YWJhc2UtPk5ld1Bh Y2thZ2VMaXN0ICgNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBnSGlpRGF0YWJhc2UsDQo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgUGFja2FnZUxpc3QsDQo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgTlVMTCwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAmSGlpSGFuZGxl DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gKyAgQVNTRVJU X0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiA+ID4gPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiA+ID4gPiA+ID4gPiArICAgIHJldHVybiBOVUxMOw0KPiA+ID4gPiA+ID4gPiAr ICB9DQo+ID4gPiA+ID4gPiA+ICsgIHJldHVybiBIaWlIYW5kbGU7DQo+ID4gPiA+ID4gPiA+ICt9 DQo+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+IGEvU2hlbGxQa2cvRHluYW1pY0NvbW1h bmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHAuaA0KPiA+ID4gPiA+ID4gPiBiL1NoZWxsUGtnL0R5 bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwLmgNCj4gPiA+ID4gPiA+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5kYWVi ZTljZjE3MzENCj4gPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gPiArKysg Yi9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cC5oDQo+ID4g PiA+ID4gPiA+IEBAIC0wLDAgKzEsODggQEANCj4gPiA+ID4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ ID4gPiA+ID4gPiArICBIZWFkZXIgZmlsZSBmb3IgJ2h0dHAnIGNvbW1hbmQgZnVuY3Rpb25zLg0K PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAxMCAtIDIw MTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ID4gPiA+IHJlc2VydmVk Lg0KPiA+ID4gPiA+IDxCUj4NCj4gPiA+ID4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE1LCBB Uk0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ID4gPiA+ID4gKyAgQ29weXJp Z2h0IChjKSAyMDIwLCBCcm9hZGNvbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArKiovDQo+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyNpZm5kZWYgX0hUVFBfSF8NCj4gPiA+ID4gPiA+ ID4gKyNkZWZpbmUgX0hUVFBfSF8NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArI2lu Y2x1ZGUgPFVlZmkuaD4NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUg PExpYnJhcnkvQmFzZUxpYi5oPg0KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFz ZU1lbW9yeUxpYi5oPg0KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIu aD4NCj4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0hpaUxpYi5oPg0KPiA+ID4gPiA+ ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvSHR0cExpYi5oPg0KPiA+ID4gPiA+ID4gPiArI2luY2x1 ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiA+ID4gPiA+ID4gPiArI2luY2x1 ZGUgPExpYnJhcnkvTmV0TGliLmg+DQo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9Q cmludExpYi5oPg0KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvU2hlbGxMaWIuaD4N Cj4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxp Yi5oPg0KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUhpaVNlcnZpY2VzTGli Lmg+DQo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gPiA+ ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWIuaD4N Cj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPFByb3RvY29sL0hpaVBh Y2thZ2VMaXN0Lmg+DQo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wvSHR0cFV0aWxp dGllcy5oPg0KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPFByb3RvY29sL1NlcnZpY2VCaW5kaW5n Lmg+DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgSFRUUF9BUFBfTkFN RSBMImh0dHAiDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gK2V4dGVybiBFRklfSElJ X0hBTkRMRSBtSHR0cEhpaUhhbmRsZTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiAr dHlwZWRlZiBlbnVtIHsNCj4gPiA+ID4gPiA+ID4gKyAgUkVRX09LID0gMCwNCj4gPiA+ID4gPiA+ ID4gKyAgUkVRX05FRURfUkVQRUFUID0gMSwNCj4gPiA+ID4gPiA+ID4gKyAgUkVRX0VSUk9SID0g Mg0KPiA+ID4gPiA+ID4gPiArfSBSRVFfU1RBVFVTOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiA+ID4gPiA+ICsgIFVJTlROICAgICAgICAg ICAgICAgICBDb250ZW50RG93bmxvYWRlZDsNCj4gPiA+ID4gPiA+ID4gKyAgVUlOVE4gICAgICAg ICAgICAgICAgIENvbnRlbnRMZW5ndGg7DQo+ID4gPiA+ID4gPiA+ICsgIFVJTlROICAgICAgICAg ICAgICAgICBMYXN0UmVwb3J0ZWROYk9mQnl0ZXM7DQo+ID4gPiA+ID4gPiA+ICsgIFVJTlROICAg ICAgICAgICAgICAgICBCdWZmZXJTaXplOw0KPiA+ID4gPiA+ID4gPiArICBSRVFfU1RBVFVTICAg ICAgICAgICAgU3RhdHVzOw0KPiA+ID4gPiA+ID4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAg KkJ1ZmZlcjsNCj4gPiA+ID4gPiA+ID4gKyAgQ0hBUjggICAgICAgICAgICAgICAgICpQcm94eVNl cnZlckFkZHI7DQo+ID4gPiA+ID4gPiA+ICsgIENIQVIxNiAgICAgICAgICAgICAgICAqU2VydmVy QWRkckFuZFByb3RvOw0KPiA+ID4gPiA+ID4gPiArICBDSEFSMTYgICAgICAgICAgICAgICAgKlVS STsNCj4gPiA+ID4gPiA+ID4gKyAgRUZJX0hUVFBfVE9LRU4gICAgICAgIFJlc3BvbnNlVG9rZW47 DQo+ID4gPiA+ID4gPiA+ICsgIEVGSV9IVFRQX1RPS0VOICAgICAgICBSZXF1ZXN0VG9rZW47DQo+ ID4gPiA+ID4gPiA+ICsgIEVGSV9IVFRQX1BST1RPQ09MICAgICAqSHR0cDsNCj4gPiA+ID4gPiA+ ID4gK30gRE9XTkxPQURfQ09OVEVYVDsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiAr LyoqDQo+ID4gPiA+ID4gPiA+ICsgIEZ1bmN0aW9uIGZvciAnaHR0cCcgY29tbWFuZC4NCj4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBJbWFnZUhhbmRsZSAgICAg VGhlIGltYWdlIGhhbmRsZS4NCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgU3lzdGVtVGFi bGUgICAgIFRoZSBzeXN0ZW0gdGFibGUuDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4g KyAgQHJldHZhbCBTSEVMTF9TVUNDRVNTICAgICAgICAgICAgQ29tbWFuZCBjb21wbGV0ZWQgc3Vj Y2Vzc2Z1bGx5Lg0KPiA+ID4gPiA+ID4gPiArICBAcmV0dmFsIFNIRUxMX0lOVkFMSURfUEFSQU1F VEVSICBDb21tYW5kIHVzYWdlIGVycm9yLg0KPiA+ID4gPiA+ID4gPiArICBAcmV0dmFsIFNIRUxM X0FCT1JURUQgICAgICAgICAgICBUaGUgdXNlciBhYm9ydHMgdGhlIG9wZXJhdGlvbi4NCj4gPiA+ ID4gPiA+ID4gKyAgQHJldHZhbCB2YWx1ZSAgICAgICAgICAgICAgICAgICAgVW5rbm93biBlcnJv ci4NCj4gPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gPiArU0hFTExfU1RBVFVTDQo+ID4g PiA+ID4gPiA+ICtSdW5IdHRwICgNCj4gPiA+ID4gPiA+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAg ICAgSW1hZ2VIYW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUgICpT eXN0ZW1UYWJsZQ0KPiA+ID4gPiA+ID4gPiArICApOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ID4gKyAgUmV0cml2ZSBISUkgcGFja2FnZSBsaXN0IGZy b20gSW1hZ2VIYW5kbGUgYW5kIHB1Ymxpc2ggdG8gSElJDQo+ID4gPiA+ID4gZGF0YWJhc2UuDQo+ ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtIEltYWdlSGFuZGxlICAgICAg ICAgICAgVGhlIGltYWdlIGhhbmRsZSBvZiB0aGUgcHJvY2Vzcy4NCj4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiArICBAcmV0dXJuIEhJSSBoYW5kbGUuDQo+ID4gPiA+ID4gPiA+ICsqKi8N Cj4gPiA+ID4gPiA+ID4gK0VGSV9ISUlfSEFORExFDQo+ID4gPiA+ID4gPiA+ICtJbml0aWFsaXpl SGlpUGFja2FnZSAoDQo+ID4gPiA+ID4gPiA+ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg ICBJbWFnZUhhbmRsZQ0KPiA+ID4gPiA+ID4gPiArICApOw0KPiA+ID4gPiA+ID4gPiArI2VuZGlm IC8vIF9IVFRQX0hfDQo+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4gYS9TaGVsbFBr Zy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cC51bmkNCj4gPiA+ID4gPiA+ ID4gYi9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cC51bmkN Cj4gPiA+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gaW5kZXgg MDAwMDAwMDAwMDAwLi5hYjYyZmZhY2I4MTINCj4gPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ID4gPiA+ID4gPiArKysgYi9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0Nv bW1hbmQvSHR0cC51bmkNCj4gPiA+ID4gPiA+ID4gQEAgLTAsMCArMSw5NSBAQA0KPiA+ID4gPiA+ ID4gPiArLy8gLyoqDQo+ID4gPiA+ID4gPiA+ICsvLw0KPiA+ID4gPiA+ID4gPiArLy8gKEMpIENv cHlyaWdodCAyMDE1LTIwMTYgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQN Cj4gPiA+ID4gPiA+IExQPEJSPg0KPiA+ID4gPiA+ID4gPiArLy8gQ29weXJpZ2h0IChjKSAyMDEw IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gPiA+ID4gcmVz ZXJ2ZWQuDQo+ID4gPiA+ID4gPEJSPg0KPiA+ID4gPiA+ID4gPiArLy8gQ29weXJpZ2h0IChjKSAy MDIwLCBCcm9hZGNvbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ID4gPiA+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gPiA+ ID4gPiArLy8NCj4gPiA+ID4gPiA+ID4gKy8vIE1vZHVsZSBOYW1lOg0KPiA+ID4gPiA+ID4gPiAr Ly8NCj4gPiA+ID4gPiA+ID4gKy8vIEh0dHAudW5pDQo+ID4gPiA+ID4gPiA+ICsvLw0KPiA+ID4g PiA+ID4gPiArLy8gQWJzdHJhY3Q6DQo+ID4gPiA+ID4gPiA+ICsvLw0KPiA+ID4gPiA+ID4gPiAr Ly8gU3RyaW5nIGRlZmluaXRpb25zIGZvciBVRUZJIFNoZWxsIEhUVFAgY29tbWFuZA0KPiA+ID4g PiA+ID4gPiArLy8NCj4gPiA+ID4gPiA+ID4gKy8vDQo+ID4gPiA+ID4gPiA+ICsvLyAqKi8NCj4g PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArLz0jDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ID4gKyNsYW5nZGVmICAgZW4tVVMgImVuZ2xpc2giDQo+ID4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ID4gKyNzdHJpbmcgU1RSX0dFTl9UT09fTUFOWSAgICAgICAgICAgI2xhbmd1YWdl IGVuLVVTICIlSCVzJU46DQo+ID4gPiBUb28NCj4gPiA+ID4gPiA+IG1hbnkNCj4gPiA+ID4gPiA+ ID4gYXJndW1lbnRzLiBUcnkgaGVscCBodHRwLlxyXG4iDQo+ID4gPiA+ID4gPiA+ICsjc3RyaW5n IFNUUl9HRU5fVE9PX0ZFVyAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBUb28N Cj4gPiA+ID4gZmV3DQo+ID4gPiA+ID4gPiA+IGFyZ3VtZW50cy4gVHJ5IGhlbHAgaHR0cC5cclxu Ig0KPiA+ID4gPiA+ID4gPiArI3N0cmluZyBTVFJfR0VOX1BBUkFNX0lOViAgICAgICAgICAjbGFu Z3VhZ2UgZW4tVVMgIiVIJXMlTjoNCj4gPiA+ID4gSW52YWxpZA0KPiA+ID4gPiA+ID4gPiBhcmd1 bWVudCAtICclSCVzJU4nLiBUcnkgaGVscCBodHRwLlxyXG4iDQo+ID4gPiA+ID4gPiA+ICsjc3Ry aW5nIFNUUl9HRU5fUFJPQkxFTSAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOg0K PiA+ID4gPiBVbmtub3duDQo+ID4gPiA+ID4gPiBmbGFnDQo+ID4gPiA+ID4gPiA+IC0gJyVIJXMl TicuIFRyeSBoZWxwIGh0dHAuXHJcbiINCj4gPiA+ID4gPiA+ID4gKyNzdHJpbmcgU1RSX0dFTl9G SUxFX09QRU5fRkFJTCAgICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46DQo+ID4gPiA+IENhbm5v dA0KPiA+ID4gPiA+ID4gPiBvcGVuIGZpbGUgLSAnJUglcyVOJ1xyXG4iDQo+ID4gPiA+ID4gPiA+ ICsjc3RyaW5nIFNUUl9HRU5fQ1JMRiAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiXHJc biINCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArI3N0cmluZyBTVFJfSFRUUF9FUlJf Tk9fTklDICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIk5vIG5ldHdvcmsNCj4gPiA+ID4gPiA+IGlu dGVyZmFjZQ0KPiA+ID4gPiA+ID4gPiBjYXJkIGZvdW5kLlxyXG4iDQo+ID4gPiA+ID4gPiA+ICsj c3RyaW5nIFNUUl9IVFRQX0VSUl9OSUNfTkFNRSAgICAgICNsYW5ndWFnZSBlbi1VUyAiRmFpbGVk IHRvDQo+ID4gPiBnZXQNCj4gPiA+ID4gdGhlDQo+ID4gPiA+ID4gPiA+IG5hbWUgb2YgdGhlIG5l dHdvcmsgaW50ZXJmYWNlIGNhcmQgbnVtYmVyICVkIC0gJXJcclxuIg0KPiA+ID4gPiA+ID4gPiAr I3N0cmluZyBTVFJfSFRUUF9FUlJfT1BFTl9QUk9UT0NPTCAjbGFuZ3VhZ2UgZW4tVVMgIlVuYWJs ZQ0KPiA+ID4gPiB0bw0KPiA+ID4gPiA+ID4gb3Blbg0KPiA+ID4gPiA+ID4gPiBIVFRQIHByb3Rv Y29sIG9uICclSCVzJU4nIC0gJXJcclxuIg0KPiA+ID4gPiA+ID4gPiArI3N0cmluZyBTVFJfSFRU UF9FUlJfQ09ORklHVVJFICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlVuYWJsZSB0bw0KPiA+ID4gPiA+ ID4gY29uZmlndXJlDQo+ID4gPiA+ID4gPiA+IEhUVFAgcHJvdG9jb2wgb24gJyVIJXMlTicgLSAl clxyXG4iDQo+ID4gPiA+ID4gPiA+ICsjc3RyaW5nIFNUUl9IVFRQX0VSUl9ET1dOTE9BRCAgICAg ICNsYW5ndWFnZSBlbi1VUyAiVW5hYmxlIHRvDQo+ID4gPiA+ID4gPiA+IGRvd25sb2FkIHRoZSBm aWxlICclSCVzJU4nIG9uICclSCVzJU4nIC0gJXJcclxuIg0KPiA+ID4gPiA+ID4gPiArI3N0cmlu ZyBTVFJfSFRUUF9FUlJfV1JJVEUgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlVuYWJsZSB0bw0K PiA+ID4gd3JpdGUNCj4gPiA+ID4gPiBpbnRvDQo+ID4gPiA+ID4gPiBmaWxlDQo+ID4gPiA+ID4g PiA+ICclSCVzJU4nIC0gJXJcclxuIg0KPiA+ID4gPiA+ID4gPiArI3N0cmluZyBTVFJfSFRUUF9F UlJfTklDX05PVF9GT1VORCAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiA+ICJOZXR3b3JrDQo+ID4gPiA+ ID4gPiA+IEludGVyZmFjZSBDYXJkICclSCVzJU4nIG5vdCBmb3VuZC5cclxuIg0KPiA+ID4gPiA+ ID4gPiArI3N0cmluZyBTVFJfSFRUUF9FUlJfU1RBVFVTQ09ERSAgICAjbGFuZ3VhZ2UgZW4tVVMN Cj4gPiA+ICJcciclSCVzJU4nDQo+ID4gPiA+ID4gPiByZXBvcnRzDQo+ID4gPiA+ID4gPiA+ICcl cycgZm9yICclSCVzJU4nIFxyXG4iDQo+ID4gPiA+ID4gPiA+ICsjc3RyaW5nIFNUUl9IVFRQX0RP V05MT0FESU5HICAgICAgICNsYW5ndWFnZSBlbi1VUw0KPiA+ID4gIkRvd25sb2FkaW5nDQo+ID4g PiA+ID4gPiA+ICclSCVzJU4nXHJcbiINCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiAr I3N0cmluZyBTVFJfR0VUX0hFTFBfSFRUUCAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIiINCj4g PiA+ID4gPiA+ID4gKyIuVEggaHR0cCAwICJEb3dubG9hZCBhIGZpbGUgZnJvbSBIVFRQIHNlcnZl ci4iXHJcbiINCj4gPiA+ID4gPiA+ID4gKyIuU0ggTkFNRVxyXG4iDQo+ID4gPiA+ID4gPiA+ICsi RG93bmxvYWQgYSBmaWxlIGZyb20gSFRUUCBzZXJ2ZXIuXHJcbiINCj4gPiA+ID4gPiA+ID4gKyIu U0ggU1lOT1BTSVNcclxuIg0KPiA+ID4gPiA+ID4gPiArIiBcclxuIg0KPiA+ID4gPiA+ID4gPiAr IkhUVFAgWy1pIGludGVyZmFjZV0gWy1sIDxwb3J0Pl0gWy10IDx0aW1lb3V0Pl1cclxuIg0KPiA+ ID4gPiA+ID4gPiArIiAgICAgIGhvc3RbOnBvcnRdIGh0dHBfdXJpIFtsb2NhbGZpbGVwYXRoXVxy XG4iDQo+ID4gPiA+ID4gPiA+ICsiLlNIIE9QVElPTlNcclxuIg0KPiA+ID4gPiA+ID4gPiArIiBc clxuIg0KPiA+ID4gPiA+ID4gPiArIiAgLWkgaW50ZXJmYWNlICAgICAtIFNwZWNpZmllcyBhbiBh ZGFwdGVyIG5hbWUsIGkuZS4sIGV0aDAuXHJcbiINCj4gPiA+ID4gPiA+ID4gKyIgIC1sIHBvcnQg ICAgICAgICAgLSBTcGVjaWZpZXMgdGhlIGxvY2FsIHBvcnQgbnVtYmVyLiBEZWZhdWx0DQo+ID4g PiA+ID4gPiA+IHZhbHVlDQo+ID4gPiA+ID4gaXMgMFxyXG4iDQo+ID4gPiA+ID4gPiA+ICsiICAg ICAgICAgICAgICAgICAgICAgYW5kIHRoZSBwb3J0IG51bWJlciBpcyBhdXRvbWF0aWNhbGx5DQo+ ID4gPiA+ID4gYXNzaWduZWQuXHJcbiINCj4gPiA+ID4gPiA+ID4gKyIgIC10IDx0aW1lb3V0PiAg ICAgLSBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgYSByZXNwb25zZQ0KPiA+ID4g PiA+ID4gYWZ0ZXJcclxuIg0KPiA+ID4gPiA+ID4gPiArIiAgICAgICAgICAgICAgICAgICAgIHNl bmRpbmcgYSByZXF1ZXN0IHBhY2tldC4gRGVmYXVsdCB2YWx1ZSBpcyAwDQo+ID4gPiA+ID4gd2hp Y2ggaXMNCj4gPiA+ID4gPiA+ID4gJ2F1dG9tYXRpYycuXHJcbiINCj4gPiA+ID4gPiA+ID4gKyIg IGhvc3QgICAgICAgICAgICAgLSBTcGVjaWZ5IEhUVFAgU2VydmVyIElQdjQgYWRkcmVzcy5cclxu DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIGVpdGhlciBhZGRy ZXNzIG9yICdodHRwIChvcg0KPiA+ID4gPiA+IGh0dHBzKTovL2FkZHInXHJcbg0KPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgIENhbiB1c2UgYWRkcmVzc2VzIHJlc29sdmFibGUg YnkgRE5TIGFzIHdlbGwuDQo+ID4gPiA+ID4gXHJcbg0KPiA+ID4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgIFBvcnQgY2FuIGJlIHNwZWNpZmllZCBhZnRlciAnOicgaWYgbmVlZGVkLg0K PiA+ID4gPiA+ID4gPiBcclxuDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg QnkgZGVmYXVsdCBwb3J0IDgwIGlzIHVzZWQuXHJcbiINCj4gPiA+ID4gPiA+ID4gKyIgIGh0dHBf dXJpICAgICAgICAgLSBIVFRQIHNlcnZlciBVUkkgdG8gZG93bmxvYWQgdGhlIGZpbGUuXHJcbiIN Cj4gPiA+ID4gPiA+ID4gKyIgIGxvY2FsZmlsZXBhdGggICAgLSBMb2NhbCBkZXN0aW5hdGlvbiBm aWxlIHBhdGguXHJcbiINCj4gPiA+ID4gPiA+ID4gKyIuU0ggREVTQ1JJUFRJT05cclxuIg0KPiA+ ID4gPiA+ID4gPiArIiBcclxuIg0KPiA+ID4gPiA+ID4gPiArIk5PVEVTOlxyXG4iDQo+ID4gPiA+ ID4gPiA+ICsiICAxLiBUaGUgSFRUUCBjb21tYW5kIGFsbG93cyBnZXRpbmcgb2YgdGhlIGZpbGUg c3BlY2lmaWVkIGJ5IGl0cw0KPiA+ID4gPiA+ID4gPiAnaHR0cF91cmknXHJcbiINCj4gPiA+ID4g PiA+ID4gKyIgICAgIHBhdGggZnJvbSB0aGUgSFRUUCBzZXJ2ZXIgc3BlY2lmaWVkIGJ5IGl0cyAn aG9zdCcgSVB2NA0KPiA+ID4gPiA+ID4gPiBhZGRyZXNzLg0KPiA+ID4gPiA+IElmDQo+ID4gPiA+ ID4gPiB0aGVcclxuIg0KPiA+ID4gPiA+ID4gPiArIiAgICAgb3B0aW9uYWwgJ2xvY2FsZmlsZXBh dGgnIHBhcmFtZXRlciBpcyBwcm92aWRlZCwgdGhlDQo+ID4gPiA+ID4gPiA+IGRvd25sb2FkZWQN Cj4gPiA+ID4gPiBmaWxlDQo+ID4gPiA+ID4gPiBpc1xyXG4iDQo+ID4gPiA+ID4gPiA+ICsiICAg ICBzdG9yZWQgbG9jYWxseSB1c2luZyB0aGUgcHJvdmlkZWQgZmlsZSBwYXRoLiBJZiB0aGUgbG9j YWwNCj4gPiA+ID4gPiA+ID4gZmlsZQ0KPiA+ID4gPiA+IHBhdGggaXNcclxuIg0KPiA+ID4gPiA+ ID4gPiArIiAgICAgbm90IHNwZWNpZmllZCwgdGhlIGZpbGUgaXMgc3RvcmVkIGluIHRoZSBjdXJy ZW50IGRpcmVjdG9yeQ0KPiA+ID4gPiA+IHVzaW5nIHRoZQ0KPiA+ID4gPiA+ID4gZmlsZVxyXG4i DQo+ID4gPiA+ID4gPiA+ICsiICAgICBzZXJ2ZXIncyBuYW1lLlxyXG4iDQo+ID4gPiA+ID4gPiA+ ICsiICAyLiBCZWZvcmUgdXNpbmcgdGhlIEhUVFAgY29tbWFuZCwgdGhlIG5ldHdvcmsgaW50ZXJm YWNlDQo+ID4gPiBpbnRlbmRlZA0KPiA+ID4gPiA+IHRvDQo+ID4gPiA+ID4gPiA+IGJlXHJcbiIN Cj4gPiA+ID4gPiA+ID4gKyIgICAgIHVzZWQgdG8gcmV0cmlldmUgdGhlIGZpbGUgbXVzdCBiZSBj b25maWd1cmVkLiBUaGlzDQo+ID4gPiA+ID4gY29uZmlndXJhdGlvbiBtYXkNCj4gPiA+ID4gPiA+ ID4gYmVcclxuIg0KPiA+ID4gPiA+ID4gPiArIiAgICAgZG9uZSBieSBtZWFucyBvZiB0aGUgJ2lm Y29uZmlnJyBjb21tYW5kLlxyXG4iDQo+ID4gPiA+ID4gPiA+ICsiICAzLiBJZiBhIG5ldHdvcmsg aW50ZXJmYWNlIGlzIGRlZmluZWQgd2l0aCB0aGUgJy1pJyBvcHRpb24gdGhlbg0KPiA+ID4gPiA+ IG9ubHkNCj4gPiA+ID4gPiA+IHRoaXNcclxuIg0KPiA+ID4gPiA+ID4gPiArIiAgICAgaW50ZXJm YWNlIHdpbGwgYmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgcmVtb3RlIGZpbGUuDQo+ID4gPiA+ID4g PiA+IE90aGVyd2lzZSwNCj4gPiA+ID4gPiBhbGwNCj4gPiA+ID4gPiA+ID4gbmV0d29ya1xyXG4i DQo+ID4gPiA+ID4gPiA+ICsiICAgICBpbnRlcmZhY2VzIGFyZSB0cmllZCBpbiB0aGUgb3JkZXIg dGhleSBoYXZlIGJlZW4gZGlzY292ZXJlZA0KPiA+ID4gPiA+IGR1cmluZw0KPiA+ID4gPiA+ID4g PiB0aGVcclxuIg0KPiA+ID4gPiA+ID4gPiArIiAgICAgRFhFIHBoYXNlLlxyXG4iDQo+ID4gPiA+ ID4gPiA+ICsiLlNIIEVYQU1QTEVTXHJcbiINCj4gPiA+ID4gPiA+ID4gKyIgXHJcbiINCj4gPiA+ ID4gPiA+ID4gKyJFWEFNUExFUzpcclxuIg0KPiA+ID4gPiA+ID4gPiArIiAgKiBUbyBnZXQgdGhl IGZpbGUgImRpcjEvZmlsZTEuZGF0IiBmcm9tIHRoZSBIVFRQIHNlcnZlcg0KPiA+ID4gPiA+IDE5 Mi4xNjguMS4xLCBwb3J0DQo+ID4gPiA+ID4gPiA+IDgwODAsIGFuZFxyXG4iDQo+ID4gPiA+ID4g PiA+ICsiICAgIHN0b3JlIGl0IGFzIGZpbGUyLmRhdCBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkg OlxyXG4iDQo+ID4gPiA+ID4gPiA+ICsiICAgIGZzMDpcPiBodHRwIDE5Mi4xNjguMS4xOjgwODAg ZGlyMS9maWxlMS5kYXQgZmlsZTIuZGF0XHJcbiINCj4gPiA+ID4gPiA+ID4gKyIgICogVG8gZ2V0 IHRoZSBmaWxlIC9pbWFnZS5iaW4gdmlhIEhUVFBTIGZyb20gc2VydmVyIDE5Mi4xNjguMS4xDQo+ ID4gPiA+ID4gPiA+IGF0DQo+ID4gPiA+ID4gcG9ydCA0NDMNCj4gPiA+ID4gPiA+ID4gXHJcbiIN Cj4gPiA+ID4gPiA+ID4gKyIgICAgKGRlZmF1bHQgSFRUUFMgcG9ydCksIGFuZCBzdG9yZSBpdCBp biB0aGUgY3VycmVudCBkaXJlY3Rvcnk6DQo+ID4gPiA+ID4gXHJcbiINCj4gPiA+ID4gPiA+ID4g KyIgICAgZnMwOlw+IGh0dHAgaHR0cHM6Ly8xOTIuMTY4LjEuMSBpbWFnZS5iaW5cclxuIg0KPiA+ ID4gPiA+ID4gPiArIi5TSCBSRVRVUk5WQUxVRVNcclxuIg0KPiA+ID4gPiA+ID4gPiArIiBcclxu Ig0KPiA+ID4gPiA+ID4gPiArIlJFVFVSTiBWQUxVRVM6XHJcbiINCj4gPiA+ID4gPiA+ID4gKyIg IFNIRUxMX1NVQ0NFU1MgICAgICAgICAgICAgVGhlIGFjdGlvbiB3YXMgY29tcGxldGVkIGFzDQo+ ID4gPiA+ID4gcmVxdWVzdGVkLlxyXG4iDQo+ID4gPiA+ID4gPiA+ICsiICBTSEVMTF9JTlZBTElE X1BBUkFNRVRFUiAgIE9uZSBvZiB0aGUgcGFzc2VkLWluIHBhcmFtZXRlcnMNCj4gPiA+IHdhcw0K PiA+ID4gPiA+ID4gPiBpbmNvcnJlY3RseVxyXG4iDQo+ID4gPiA+ID4gPiA+ICsiICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZCBvciBpdHMgdmFsdWUgd2FzIG91dCBvZg0KPiA+ ID4gPiA+IGJvdW5kcy5cclxuIg0KPiA+ID4gPiA+ID4gPiArIiAgU0hFTExfSFRUUF9FUlJPUiAg ICAgICAgICBObyBFRkkgZXJyb3JzLCBidXQgdGhlIHNlcnZlciByZXBvcnRlZA0KPiA+ID4gPiA+ ID4gPiBhDQo+ID4gPiA+ID4gc3RhdHVzDQo+ID4gPiA+ID4gPiA+IGNvZGVcclxuDQo+ID4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHNob3VsZCBiZSB0cmVh dGVkIGFzIGFuIGVycm9yLg0KPiA+ID4gPiA+ID4gPiBJZg0KPiA+ID4gPiA+IGFuIGVycm9yIGJv ZHkNCj4gPiA+ID4gPiA+ID4gc2VudFxyXG4NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnkgdGhlIHNlcnZlciwgaXQgd291bGQgYmUgc2F2ZWQgYXMNCj4gPiA+ ID4gPiBsb2NhbGZpbGVwYXRoDQo+ID4gPiA+ID4gPiBwYXJhbWV0ZXIuIg0KPiA+ID4gPiA+ID4g PiBkaWZmIC0tZ2l0DQo+ID4gPiA+IGEvU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFt aWNDb21tYW5kL0h0dHBBcHAuYw0KPiA+ID4gPiA+ID4gPiBiL1NoZWxsUGtnL0R5bmFtaWNDb21t YW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwQXBwLmMNCj4gPiA+ID4gPiA+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi43YmQ1YjQ2ZDM5 OTcNCj4gPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gPiArKysgYi9TaGVs bFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5jDQo+ID4gPiA+ ID4gPiA+IEBAIC0wLDAgKzEsNTMgQEANCj4gPiA+ID4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4g PiA+ID4gPiArICBFbnRyeXBvaW50IG9mICJodHRwIiBzaGVsbCBzdGFuZGFsb25lIGFwcGxpY2F0 aW9uLg0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAx MCAtIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ID4gPiA+IHJl c2VydmVkLg0KPiA+ID4gPiA+IDxCUj4NCj4gPiA+ID4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAy MDE1LCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ID4gPiA+ID4gKyAg Q29weXJpZ2h0IChjKSAyMDIwLCBCcm9hZGNvbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArKiov DQo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSAiSHR0cC5oIg0KPiA+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiA+ICsvKg0KPiA+ID4gPiA+ID4gPiArICogU3RyaW5nIHRva2VuIElEIG9mIGhlbHAg bWVzc2FnZSB0ZXh0Lg0KPiA+ID4gPiA+ID4gPiArICogU2hlbGwgc3VwcG9ydHMgdG8gZmluZCBo ZWxwIG1lc3NhZ2UgaW4gdGhlIHJlc291cmNlIHNlY3Rpb24gb2YNCj4gPiA+ID4gPiA+ID4gYW4N Cj4gPiA+ID4gPiA+ID4gKyAqIGFwcGxpY2F0aW9uIGltYWdlIGlmICogLk1BTiBmaWxlIGlzIG5v dCBmb3VuZC4NCj4gPiA+ID4gPiA+ID4gKyAqIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIGFkZGVk IHRvIG1ha2UgYnVpbGQgdG9vbCByZWNvZ25pemVzDQo+ID4gPiA+ID4gPiA+ICsgKiB0aGF0IHRo ZSBoZWxwIHN0cmluZyBpcyBjb25zdW1lZCBieSB1c2VyIGFuZCB0aGVuIGJ1aWxkIHRvb2wNCj4g PiA+ID4gPiA+ID4gd2lsbA0KPiA+ID4gPiA+ID4gPiArICogYWRkIHRoZSBzdHJpbmcgaW50byB0 aGUgcmVzb3VyY2Ugc2VjdGlvbi4NCj4gPiA+ID4gPiA+ID4gKyAqIFRodXMgdGhlIGFwcGxpY2F0 aW9uIGNhbiB1c2UgJy0/JyBvcHRpb24gdG8gc2hvdyBoZWxwIG1lc3NhZ2UgaW4NCj4gPiA+ID4g PiBTaGVsbC4NCj4gPiA+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ID4gPiArR0xPQkFMX1JFTU9W RV9JRl9VTlJFRkVSRU5DRUQNCj4gPiA+ID4gPiA+ID4gK0VGSV9TVFJJTkdfSUQgbVN0cmluZ0hl bHBUb2tlbklkID0gU1RSSU5HX1RPS0VODQo+ID4gPiA+ID4gPiAoU1RSX0dFVF9IRUxQX0hUVFAp Ow0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ID4gKyAg RW50cnkgcG9pbnQgb2YgSHR0cCBzdGFuZGFsb25lIGFwcGxpY2F0aW9uLg0KPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgICAgICAgIFRoZSBp bWFnZSBoYW5kbGUgb2YgdGhlIHByb2Nlc3MuDQo+ID4gPiA+ID4gPiA+ICsgIEBwYXJhbSBTeXN0 ZW1UYWJsZSAgICAgICAgICAgIFRoZSBFRkkgU3lzdGVtIFRhYmxlIHBvaW50ZXIuDQo+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAg SHR0cCBjb21tYW5kIGlzIGV4ZWN1dGVkDQo+ID4gPiA+ID4gPiA+IHN1Y2Vzc2Z1bGx5Lg0KPiA+ ID4gPiA+ID4gPiArICBAcmV0dmFsIEVGSV9BQk9SVEVEICAgICAgICAgICBISUkgcGFja2FnZSB3 YXMgZmFpbGVkIHRvDQo+ID4gPiA+ID4gPiA+IGluaXRpYWxpemUuDQo+ID4gPiA+ID4gPiA+ICsg IEByZXR2YWwgb3RoZXJzICAgICAgICAgICAgICAgIE90aGVyIGVycm9ycyB3aGVuIGV4ZWN1dGlu ZyBodHRwDQo+ID4gPiA+ID4gY29tbWFuZC4NCj4gPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiA+ICtI dHRwQXBwSW5pdGlhbGl6ZSAoDQo+ID4gPiA+ID4gPiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAg ICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+ID4gPiA+ID4gKyAgSU4gRUZJX1NZU1RFTV9UQUJM RSAgICAgICAgICpTeXN0ZW1UYWJsZQ0KPiA+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiA+ ICt7DQo+ID4gPiA+ID4gPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7 DQo+ID4gPiA+ID4gPiA+ICsgIG1IdHRwSGlpSGFuZGxlID0gSW5pdGlhbGl6ZUhpaVBhY2thZ2Ug KEltYWdlSGFuZGxlKTsNCj4gPiA+ID4gPiA+ID4gKyAgaWYgKG1IdHRwSGlpSGFuZGxlID09IE5V TEwpIHsNCj4gPiA+ID4gPiA+ID4gKyAgICByZXR1cm4gRUZJX0FCT1JURUQ7DQo+ID4gPiA+ID4g PiA+ICsgIH0NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBTdGF0dXMgPSAoRUZJ X1NUQVRVUylSdW5IdHRwIChJbWFnZUhhbmRsZSwgU3lzdGVtVGFibGUpOw0KPiA+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiA+ICsgIEhpaVJlbW92ZVBhY2thZ2VzIChtSHR0cEhpaUhhbmRsZSk7 DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiA+ID4gYS9TaGVs bFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5pbmYNCj4gPiA+ ID4gPiA+ID4gYi9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0 cEFwcC5pbmYNCj4gPiA+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+ ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5kMDhkNDdmYjM3ZDUNCj4gPiA+ID4gPiA+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ID4gPiA+ID4gPiArKysNCj4gPiA+ID4gYi9TaGVsbFBrZy9EeW5hbWljQ29t bWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cEFwcC5pbmYNCj4gPiA+ID4gPiA+ID4gQEAgLTAs MCArMSw1OCBAQA0KPiA+ID4gPiA+ID4gPiArIyMgIEBmaWxlDQo+ID4gPiA+ID4gPiA+ICsjIFBy b3ZpZGVzIFNoZWxsICdodHRwJyBzdGFuZGFsb25lIGFwcGxpY2F0aW9uLg0KPiA+ID4gPiA+ID4g PiArIw0KPiA+ID4gPiA+ID4gPiArIyBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE5LCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ID4gPiA+ID4gPiByZXNlcnZlZC4NCj4gPiA+ID4g PiA8QlI+DQo+ID4gPiA+ID4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAxNSwgQVJNIEx0ZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ID4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAy MCwgQnJvYWRjb20uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiA+ID4gPiArIw0K PiA+ID4gPiA+ID4gPiArIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gPiA+ID4gPiA+ID4gKyMNCj4gPiA+ID4gPiA+ID4gKyMNCj4gPiA+ID4gPiA+ID4g KyMjDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gK1tEZWZpbmVzXQ0KPiA+ID4gPiA+ ID4gPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA2DQo+ID4g PiA+ID4gPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IGh0dHANCj4gPiA+ ID4gPiA+ID4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0NCj4gPiA+ID4gPiA1 NkIwMEZCNy05MUQyLTg2OUItQ0U1Qy0yNkNEMUE4OUM3M0MNCj4gPiA+ID4gPiA+ID4gKyAgTU9E VUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gVUVGSV9BUFBMSUNBVElPTg0KPiA+ID4gPiA+ ID4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gPiA+ID4gPiA+ ID4gKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0gSHR0cEFwcEluaXRpYWxpemUN Cj4gPiA+ID4gPiA+ID4gKyMNCj4gPiA+ID4gPiA+ID4gKyMgIFRoaXMgZmxhZyBzcGVjaWZpZXMg d2hldGhlciBISUkgcmVzb3VyY2Ugc2VjdGlvbiBpcyBnZW5lcmF0ZWQNCj4gPiA+ID4gPiA+ID4g aW50bw0KPiA+ID4gPiA+IFBFDQo+ID4gPiA+ID4gPiBpbWFnZS4NCj4gPiA+ID4gPiA+ID4gKyMN Cj4gPiA+ID4gPiA+ID4gKyAgVUVGSV9ISUlfUkVTT1VSQ0VfU0VDVElPTiAgICAgID0gVFJVRQ0K PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICtbU291cmNlcy5jb21tb25dDQo+ID4gPiA+ ID4gPiA+ICsgIEh0dHAuYw0KPiA+ID4gPiA+ID4gPiArICBIdHRwQXBwLmMNCj4gPiA+ID4gPiA+ ID4gKyAgSHR0cC5oDQo+ID4gPiA+ID4gPiA+ICsgIEh0dHAudW5pDQo+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gK1tQYWNrYWdlc10NCj4gPiA+ID4gPiA+ID4gKyAgRW1iZWRkZWRQa2cv RW1iZWRkZWRQa2cuZGVjDQo+ID4gPiA+ID4gPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQ a2cuZGVjDQo+ID4gPiA+ID4gPiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gPiA+ID4gPiA+ ICsgIE5ldHdvcmtQa2cvTmV0d29ya1BrZy5kZWMNCj4gPiA+ID4gPiA+ID4gKyAgU2hlbGxQa2cv U2hlbGxQa2cuZGVjDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gK1tMaWJyYXJ5Q2xh c3Nlc10NCj4gPiA+ID4gPiA+ID4gKyAgQmFzZUxpYg0KPiA+ID4gPiA+ID4gPiArICBCYXNlTWVt b3J5TGliDQo+ID4gPiA+ID4gPiA+ICsgIERlYnVnTGliDQo+ID4gPiA+ID4gPiA+ICsgIEZpbGVI YW5kbGVMaWINCj4gPiA+ID4gPiA+ID4gKyAgSGlpTGliDQo+ID4gPiA+ID4gPiA+ICsgIEh0dHBM aWINCj4gPiA+ID4gPiA+ID4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiA+ID4gPiA+ID4gPiAr ICBOZXRMaWINCj4gPiA+ID4gPiA+ID4gKyAgU2hlbGxMaWINCj4gPiA+ID4gPiA+ID4gKyAgVWVm aUFwcGxpY2F0aW9uRW50cnlQb2ludA0KPiA+ID4gPiA+ID4gPiArICBVZWZpQm9vdFNlcnZpY2Vz VGFibGVMaWINCj4gPiA+ID4gPiA+ID4gKyAgVWVmaUhpaVNlcnZpY2VzTGliDQo+ID4gPiA+ID4g PiA+ICsgIFVlZmlMaWINCj4gPiA+ID4gPiA+ID4gKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxl TGliDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gK1tQcm90b2NvbHNdDQo+ID4gPiA+ ID4gPiA+ICsgIGdFZmlIaWlQYWNrYWdlTGlzdFByb3RvY29sR3VpZCAgICAgICAgICAgICAgICAg IyMgQ09OU1VNRVMNCj4gPiA+ID4gPiA+ID4gKyAgZ0VmaUh0dHBQcm90b2NvbEd1aWQgICAgICAg ICAgICAgICAgICAgICAgICAgIyMgQ09OU1VNRVMNCj4gPiA+ID4gPiA+ID4gKyAgZ0VmaUh0dHBT ZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCAgICAgICAgICAgIyMgQ09OU1VNRVMNCj4gPiA+ID4g PiA+ID4gKyAgZ0VmaU1hbmFnZWROZXR3b3JrU2VydmljZUJpbmRpbmdQcm90b2NvbEd1aWQgICAj IyBDT05TVU1FUw0KPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gYS9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHlu YW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYQ0KPiA+ID4gPiA+ID4gbmQuDQo+ID4gPiA+ID4g PiA+IGMNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiBiL1NoZWxs UGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hDQo+ ID4gPiA+ID4gPiBuZC4NCj4gPiA+ID4gPiA+ID4gYw0KPiA+ID4gPiA+ID4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmJhNjU0NzQ5YTA3 NQ0KPiA+ID4gPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gPiA+ICsrKw0KPiA+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+IGIvU2hlbGxQa2cvRHluYW1pY0Nv bW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWENCj4gPiA+ID4gPiA+IG5k Lg0KPiA+ID4gPiA+ID4gPiBjDQo+ID4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsMTM0IEBADQo+ID4g PiA+ID4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ID4gPiA+ID4gKyAgUHJvZHVjZSAiaHR0cCIgc2hl bGwgZHluYW1pYyBjb21tYW5kLg0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIENv cHlyaWdodCAoYykgMjAxMCAtIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ ID4gPiA+ID4gPiA+IHJlc2VydmVkLg0KPiA+ID4gPiA+IDxCUj4NCj4gPiA+ID4gPiA+ID4gKyAg Q29weXJpZ2h0IChjKSAyMDE1LCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4g PiA+ID4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIwLCBCcm9hZGNvbS4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wvU2hlbGxE eW5hbWljQ29tbWFuZC5oPg0KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgIkh0dHAuaCINCj4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiA+ICsgIFRoaXMgaXMg dGhlIHNoZWxsIGNvbW1hbmQgaGFuZGxlciBmdW5jdGlvbiBwb2ludGVyIGNhbGxiYWNrIHR5cGUu DQo+ID4gPiA+ID4gVGhpcw0KPiA+ID4gPiA+ID4gPiArICBmdW5jdGlvbiBoYW5kbGVzIHRoZSBj b21tYW5kIHdoZW4gaXQgaXMgaW52b2tlZCBpbiB0aGUgc2hlbGwuDQo+ID4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSBUaGlzICAgICAgICAgICAgICAgVGhlIGluc3Rh bmNlIG9mIHRoZQ0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFRklfU0hFTExfRFlOQU1JQ19DT01NQU5EX1BST1RPQ09MLg0KPiA+ID4gPiA+ID4gPiArICBA cGFyYW1baW5dIFN5c3RlbVRhYmxlICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgc3lzdGVtIHRh YmxlLg0KPiA+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dIFNoZWxsUGFyYW1ldGVycyAgICBUaGUg cGFyYW1ldGVycyBhc3NvY2lhdGVkIHdpdGggdGhlDQo+ID4gPiA+ID4gPiA+IGNvbW1hbmQuDQo+ ID4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gU2hlbGwgICAgICAgICAgICAgIFRoZSBpbnN0YW5j ZSBvZiB0aGUgc2hlbGwgcHJvdG9jb2wNCj4gPiA+ID4gPiB1c2VkIGluDQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb250ZXh0IG9mIHByb2Nlc3Np bmcgdGhpcw0KPiA+ID4gPiA+IGNvbW1hbmQuDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ID4gKyAgQHJldHVybiBFRklfU1VDQ0VTUyAgICAgICAgICAgdGhlIG9wZXJhdGlvbiB3YXMgc3Vj ZXNzZnVsDQo+ID4gPiA+ID4gPiA+ICsgIEByZXR1cm4gb3RoZXIgICAgICAgICAgICAgICAgIHRo ZSBvcGVyYXRpb24gZmFpbGVkLg0KPiA+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiA+ICtT SEVMTF9TVEFUVVMNCj4gPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gPiArSHR0cENv bW1hbmRIYW5kbGVyICgNCj4gPiA+ID4gPiA+ID4gKyAgSU4gRUZJX1NIRUxMX0RZTkFNSUNfQ09N TUFORF9QUk9UT0NPTCAgICAqVGhpcywNCj4gPiA+ID4gPiA+ID4gKyAgSU4gRUZJX1NZU1RFTV9U QUJMRSAgICAgICAgICAgICAgICAgICAgICAqU3lzdGVtVGFibGUsDQo+ID4gPiA+ID4gPiA+ICsg IElOIEVGSV9TSEVMTF9QQVJBTUVURVJTX1BST1RPQ09MICAgICAgICAgKlNoZWxsUGFyYW1ldGVy cywNCj4gPiA+ID4gPiA+ID4gKyAgSU4gRUZJX1NIRUxMX1BST1RPQ09MICAgICAgICAgICAgICAg ICAgICAqU2hlbGwNCj4gPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gPiArew0KPiA+ID4g PiA+ID4gPiArICBnRWZpU2hlbGxQYXJhbWV0ZXJzUHJvdG9jb2wgPSBTaGVsbFBhcmFtZXRlcnM7 DQo+ID4gPiA+ID4gPiA+ICsgIGdFZmlTaGVsbFByb3RvY29sICAgICAgICAgICA9IFNoZWxsOw0K PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIHJldHVybiBSdW5IdHRwIChnSW1hZ2VI YW5kbGUsIFN5c3RlbVRhYmxlKTsNCj4gPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiA+ICsgIFRoaXMgaXMgdGhlIGNvbW1hbmQg aGVscCBoYW5kbGVyIGZ1bmN0aW9uIHBvaW50ZXIgY2FsbGJhY2sgdHlwZS4NCj4gPiA+ID4gPiBU aGlzDQo+ID4gPiA+ID4gPiA+ICsgIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBkaXNwbGF5 aW5nIGhlbHAgaW5mb3JtYXRpb24gZm9yIHRoZQ0KPiA+ID4gPiA+IGFzc29jaWF0ZWQNCj4gPiA+ ID4gPiA+ID4gKyAgY29tbWFuZC4NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBA cGFyYW1baW5dIFRoaXMgICAgICAgIFRoZSBpbnN0YW5jZSBvZiB0aGUNCj4gPiA+ID4gPiA+ID4g RUZJX1NIRUxMX0RZTkFNSUNfQ09NTUFORF9QUk9UT0NPTC4NCj4gPiA+ID4gPiA+ID4gKyAgQHBh cmFtW2luXSBMYW5ndWFnZSAgICBUaGUgcG9pbnRlciB0byB0aGUgbGFuZ3VhZ2Ugc3RyaW5nIHRv IHVzZS4NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBAcmV0dXJuIHN0cmluZyAg ICAgICAgIFBvb2wgYWxsb2NhdGVkIGhlbHAgc3RyaW5nLCBtdXN0IGJlIGZyZWVkDQo+ID4gPiA+ ID4gPiA+IGJ5DQo+ID4gPiA+ID4gY2FsbGVyDQo+ID4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4g PiA+ID4gK0NIQVIxNiAqDQo+ID4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ID4gK0h0 dHBDb21tYW5kR2V0SGVscCAoDQo+ID4gPiA+ID4gPiA+ICsgIElOIEVGSV9TSEVMTF9EWU5BTUlD X0NPTU1BTkRfUFJPVE9DT0wgICAgKlRoaXMsDQo+ID4gPiA+ID4gPiA+ICsgIElOIENPTlNUIENI QVI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxhbmd1YWdlDQo+ID4gPiA+ID4gPiA+ICsg ICkNCj4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ID4gKyAgcmV0dXJuIEhpaUdldFN0cmlu ZyhtSHR0cEhpaUhhbmRsZSwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBT VFJJTkdfVE9LRU4gKFNUUl9HRVRfSEVMUF9IVFRQKSwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICBMYW5ndWFnZSk7DQo+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ID4gK0VGSV9TSEVMTF9EWU5BTUlDX0NPTU1BTkRfUFJPVE9DT0wNCj4g PiA+ID4gbUh0dHBEeW5hbWljQ29tbWFuZA0KPiA+ID4gPiA+ID4gPSB7DQo+ID4gPiA+ID4gPiA+ ICsgIEhUVFBfQVBQX05BTUUsDQo+ID4gPiA+ID4gPiA+ICsgIEh0dHBDb21tYW5kSGFuZGxlciwN Cj4gPiA+ID4gPiA+ID4gKyAgSHR0cENvbW1hbmRHZXRIZWxwDQo+ID4gPiA+ID4gPiA+ICt9Ow0K PiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ID4gKyAgRW50 cnkgcG9pbnQgb2YgSHR0cCBEeW5hbWljIENvbW1hbmQuDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ID4gKyAgUHJvZHVjZSB0aGUgRHluYW1pY0NvbW1hbmQgcHJvdG9jb2wgdG8gaGFuZGxl ICJodHRwIg0KPiA+ID4gY29tbWFuZC4NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiAr ICBAcGFyYW0gSW1hZ2VIYW5kbGUgICAgICAgICAgICBUaGUgaW1hZ2UgaGFuZGxlIG9mIHRoZSBw cm9jZXNzLg0KPiA+ID4gPiA+ID4gPiArICBAcGFyYW0gU3lzdGVtVGFibGUgICAgICAgICAgICBU aGUgRUZJIFN5c3RlbSBUYWJsZSBwb2ludGVyLg0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIEh0dHAgY29tbWFuZCBpcyBleGVj dXRlZA0KPiA+ID4gPiA+ID4gPiBzdWNlc3NmdWxseS4NCj4gPiA+ID4gPiA+ID4gKyAgQHJldHZh bCBFRklfQUJPUlRFRCAgICAgICAgICAgSElJIHBhY2thZ2Ugd2FzIGZhaWxlZCB0bw0KPiA+ID4g PiA+ID4gPiBpbml0aWFsaXplLg0KPiA+ID4gPiA+ID4gPiArICBAcmV0dmFsIG90aGVycyAgICAg ICAgICAgICAgICBPdGhlciBlcnJvcnMgd2hlbiBleGVjdXRpbmcgaHR0cA0KPiA+ID4gPiA+IGNv bW1hbmQuDQo+ID4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ID4gK0VGSV9TVEFUVVMNCj4g PiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gPiArSHR0cENvbW1hbmRJbml0aWFsaXpl ICgNCj4gPiA+ID4gPiA+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgIEltYWdlSGFu ZGxlLA0KPiA+ID4gPiA+ID4gPiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAgICAgICAgKlN5c3Rl bVRhYmxlDQo+ID4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gPiArICBtSHR0cEhpaUhhbmRsZSA9IEluaXRpYWxpemVIaWlQYWNrYWdl IChJbWFnZUhhbmRsZSk7DQo+ID4gPiA+ID4gPiA+ICsgIGlmIChtSHR0cEhpaUhhbmRsZSA9PSBO VUxMKSB7DQo+ID4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIEVGSV9BQk9SVEVEOw0KPiA+ID4gPiA+ ID4gPiArICB9DQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgU3RhdHVzID0gZ0JT LT5JbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UgKA0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICZJbWFnZUhhbmRsZSwNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAmZ0VmaVNoZWxsRHlu YW1pY0NvbW1hbmRQcm90b2NvbEd1aWQsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgRUZJ X05BVElWRV9JTlRFUkZBQ0UsDQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgJm1IdHRwRHlu YW1pY0NvbW1hbmQNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICApOw0KPiA+ID4gPiA+ID4g PiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ID4gPiA+ID4gPiArICByZXR1cm4g U3RhdHVzOw0KPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ ICsvKioNCj4gPiA+ID4gPiA+ID4gKyAgSHR0cCBkcml2ZXIgdW5sb2FkIGhhbmRsZXIuDQo+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gKyAgQHBhcmFtIEltYWdlSGFuZGxlICAgICAgICAg ICAgVGhlIGltYWdlIGhhbmRsZSBvZiB0aGUgcHJvY2Vzcy4NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgaW1hZ2UgaXMg dW5sb2FkZWQuDQo+ID4gPiA+ID4gPiA+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAg IEZhaWxlZCB0byB1bmxvYWQgdGhlIGltYWdlLg0KPiA+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ ID4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ID4g K0h0dHBVbmxvYWQgKA0KPiA+ID4gPiA+ID4gPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAg ICAgSW1hZ2VIYW5kbGUNCj4gPiA+ID4gPiA+ID4gKykNCj4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ ID4gPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ID4g PiA+ID4gKyAgU3RhdHVzID0gZ0JTLT5Vbmluc3RhbGxQcm90b2NvbEludGVyZmFjZSAoDQo+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgJmdFZmlTaGVsbER5bmFtaWNDb21tYW5kUHJvdG9jb2xHdWlkLA0KPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICZtSHR0cER5bmFtaWNDb21tYW5kDQo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+ID4gPiA+ID4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPiA+ID4gPiA+ICsgIH0N Cj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICBIaWlSZW1vdmVQYWNrYWdlcyAobUh0 dHBIaWlIYW5kbGUpOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgIHJldHVybiBF RklfU1VDQ0VTUzsNCj4gPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdA0K PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+IGEvU2hlbGxQa2cvRHlu YW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWENCj4gPiA+ID4g PiA+IG5kLg0KPiA+ID4gPiA+ID4gPiBpbmYNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ ID4gPiA+DQo+ID4gPiBiL1NoZWxsUGtnL0R5bmFtaWNDb21tYW5kL0h0dHBEeW5hbWljQ29tbWFu ZC9IdHRwRHluYW1pY0NvbW1hDQo+ID4gPiA+ID4gPiBuZC4NCj4gPiA+ID4gPiA+ID4gaW5mDQo+ ID4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+IGluZGV4IDAw MDAwMDAwMDAwMC4uNWQ0NmVlMjM4NGQ1DQo+ID4gPiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4g PiA+ID4gPiA+ID4gKysrDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ ID4gYi9TaGVsbFBrZy9EeW5hbWljQ29tbWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cER5bmFt aWNDb21tYQ0KPiA+ID4gPiA+ID4gbmQuDQo+ID4gPiA+ID4gPiA+IGluZg0KPiA+ID4gPiA+ID4g PiBAQCAtMCwwICsxLDYzIEBADQo+ID4gPiA+ID4gPiA+ICsjIyAgQGZpbGUNCj4gPiA+ID4gPiA+ ID4gKyMgUHJvdmlkZXMgU2hlbGwgJ2h0dHAnIGR5bmFtaWMgY29tbWFuZC4NCj4gPiA+ID4gPiA+ ID4gKyMNCj4gPiA+ID4gPiA+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAxOSwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiA+ID4gPiA+ID4gcmVzZXJ2ZWQuDQo+ID4gPiA+ ID4gPEJSPg0KPiA+ID4gPiA+ID4gPiArIyBDb3B5cmlnaHQgKGMpIDIwMTUsIEFSTSBMdGQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiA+ID4gPiArIyBDb3B5cmlnaHQgKGMpIDIw MjAsIEJyb2FkY29tLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ID4gPiA+ID4gKyMN Cj4gPiA+ID4gPiA+ID4gKyMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+ID4gPiA+ID4gPiA+ICsjDQo+ID4gPiA+ID4gPiA+ICsjDQo+ID4gPiA+ID4gPiA+ ICsjIw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICtbRGVmaW5lc10NCj4gPiA+ID4g PiA+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNg0KPiA+ ID4gPiA+ID4gPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBodHRwRHluYW1p Y0NvbW1hbmQNCj4gPiA+ID4gPiA+ID4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAg ID0NCj4gPiA+ID4gPiAxOTYxOEJDRS01NUFFLTA5QzYtMzdFOS00Q0UwNDA4NEM3QTENCj4gPiA+ ID4gPiA+ID4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gRFhFX0RSSVZFUg0K PiA+ID4gPiA+ID4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4g PiA+ID4gPiA+ID4gKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0gSHR0cENvbW1h bmRJbml0aWFsaXplDQo+ID4gPiA+ID4gPiA+ICsgIFVOTE9BRF9JTUFHRSAgICAgICAgICAgICAg ICAgICA9IEh0dHBVbmxvYWQNCj4gPiA+ID4gPiA+ID4gKyMNCj4gPiA+ID4gPiA+ID4gKyMgIFRo aXMgZmxhZyBzcGVjaWZpZXMgd2hldGhlciBISUkgcmVzb3VyY2Ugc2VjdGlvbiBpcyBnZW5lcmF0 ZWQNCj4gPiA+ID4gPiA+ID4gaW50bw0KPiA+ID4gPiA+IFBFDQo+ID4gPiA+ID4gPiBpbWFnZS4N Cj4gPiA+ID4gPiA+ID4gKyMNCj4gPiA+ID4gPiA+ID4gKyAgVUVGSV9ISUlfUkVTT1VSQ0VfU0VD VElPTiAgICAgID0gVFJVRQ0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICtbU291cmNl cy5jb21tb25dDQo+ID4gPiA+ID4gPiA+ICsgIEh0dHAuYw0KPiA+ID4gPiA+ID4gPiArICBIdHRw RHluYW1pY0NvbW1hbmQuYw0KPiA+ID4gPiA+ID4gPiArICBIdHRwLmgNCj4gPiA+ID4gPiA+ID4g KyAgSHR0cC51bmkNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArW1BhY2thZ2VzXQ0K PiA+ID4gPiA+ID4gPiArICBFbWJlZGRlZFBrZy9FbWJlZGRlZFBrZy5kZWMNCj4gPiA+ID4gPiA+ ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiA+ID4gPiA+ID4gKyAgTWRlTW9kdWxlUGtnL01k ZU1vZHVsZVBrZy5kZWMNCj4gPiA+ID4gPiA+ID4gKyAgTmV0d29ya1BrZy9OZXR3b3JrUGtnLmRl Yw0KPiA+ID4gPiA+ID4gPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ID4gPiA+ID4gPiArICBCYXNl TGliDQo+ID4gPiA+ID4gPiA+ICsgIEJhc2VNZW1vcnlMaWINCj4gPiA+ID4gPiA+ID4gKyAgRGVi dWdMaWINCj4gPiA+ID4gPiA+ID4gKyAgRmlsZUhhbmRsZUxpYg0KPiA+ID4gPiA+ID4gPiArICBI aWlMaWINCj4gPiA+ID4gPiA+ID4gKyAgSHR0cExpYg0KPiA+ID4gPiA+ID4gPiArICBNZW1vcnlB bGxvY2F0aW9uTGliDQo+ID4gPiA+ID4gPiA+ICsgIE5ldExpYg0KPiA+ID4gPiA+ID4gPiArICBT aGVsbExpYg0KPiA+ID4gPiA+ID4gPiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gPiA+ ID4gPiA+ID4gKyAgVWVmaURyaXZlckVudHJ5UG9pbnQNCj4gPiA+ID4gPiA+ID4gKyAgVWVmaUhp aVNlcnZpY2VzTGliDQo+ID4gPiA+ID4gPiA+ICsgIFVlZmlMaWINCj4gPiA+ID4gPiA+ID4gKyAg VWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ID4gK1tQcm90b2NvbHNdDQo+ID4gPiA+ID4gPiA+ICsgIGdFZmlIaWlQYWNrYWdlTGlzdFByb3Rv Y29sR3VpZCAgICAgICAgICAgICAgICAgIyMgQ09OU1VNRVMNCj4gPiA+ID4gPiA+ID4gKyAgZ0Vm aUh0dHBQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgICAgIyMgQ09OU1VNRVMNCj4g PiA+ID4gPiA+ID4gKyAgZ0VmaUh0dHBTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCAgICAgICAg ICAgIyMgQ09OU1VNRVMNCj4gPiA+ID4gPiA+ID4gKyAgZ0VmaU1hbmFnZWROZXR3b3JrU2Vydmlj ZUJpbmRpbmdQcm90b2NvbEd1aWQgICAjIyBDT05TVU1FUw0KPiA+ID4gPiA+ID4gPiArICBnRWZp U2hlbGxEeW5hbWljQ29tbWFuZFByb3RvY29sR3VpZCAgICAgICAgICAgICMjIFBST0RVQ0VTDQo+ ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gK1tERVBFWF0NCj4gPiA+ID4gPiA+ID4gKyAg VFJVRQ0KPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvSW5jbHVkZS9HdWlkL1No ZWxsTGliSGlpR3VpZC5oDQo+ID4gPiA+ID4gPiA+IGIvU2hlbGxQa2cvSW5jbHVkZS9HdWlkL1No ZWxsTGliSGlpR3VpZC5oDQo+ID4gPiA+ID4gPiA+IGluZGV4IDVkYTkxMjgzMzNhNC4uZDVmMmNl YWMwN2E5IDEwMDY0NA0KPiA+ID4gPiA+ID4gPiAtLS0gYS9TaGVsbFBrZy9JbmNsdWRlL0d1aWQv U2hlbGxMaWJIaWlHdWlkLmgNCj4gPiA+ID4gPiA+ID4gKysrIGIvU2hlbGxQa2cvSW5jbHVkZS9H dWlkL1NoZWxsTGliSGlpR3VpZC5oDQo+ID4gPiA+ID4gPiA+IEBAIC01OCw3ICs1OCwxMSBAQA0K PiA+ID4gPiA+ID4gPiAgICB7IFwNCj4gPiA+ID4gPiA+ID4gICAgICAweDczOGE5MzE0LCAweDgy YzEsIDB4NDU5MiwgeyAweDhmLCAweGY3LCAweGMxLCAweGJkLCAweGYxLA0KPiA+ID4gPiA+ID4g PiAweGIyLA0KPiA+ID4gPiA+IDB4MGUsDQo+ID4gPiA+ID4gPiAweGQ0DQo+ID4gPiA+ID4gPiA+ IH0gXA0KPiA+ID4gPiA+ID4gPiAgICB9DQo+ID4gPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gPiArI2RlZmluZSBTSEVMTF9IVFRQX0hJSV9HVUlEIFwNCj4gPiA+ID4g PiA+ID4gKyAgeyBcDQo+ID4gPiA+ID4gPiA+ICsgICAgMHgzOTBmODRiMywgMHgyMjFjLCAweDRk OWUsIHsgMHhiNSwgMHgwNiwgMHg2ZCwgMHhiOSwgMHg0MiwNCj4gPiA+ID4gPiA+ID4gMHgzZSwN Cj4gPiA+ID4gPiAweDBhLA0KPiA+ID4gPiA+ID4gPiAweDdlIH0gXA0KPiA+ID4gPiA+ID4gPiAr ICB9DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ICAjZGVmaW5lIFNIRUxMX0JDRkdfSElJ X0dVSUQgXA0KPiA+ID4gPiA+ID4gPiAgICB7IFwNCj4gPiA+ID4gPiA+ID4gQEAgLTc1LDYgKzc5 LDcgQEAgZXh0ZXJuIEVGSV9HVUlEIGdTaGVsbExldmVsM0hpaUd1aWQ7DQo+ID4gPiA+ID4gPiA+ ICBleHRlcm4gRUZJX0dVSUQgZ1NoZWxsTmV0d29yazFIaWlHdWlkOw0KPiA+ID4gPiA+ID4gPiAg ZXh0ZXJuIEVGSV9HVUlEIGdTaGVsbE5ldHdvcmsySGlpR3VpZDsNCj4gPiA+ID4gPiA+ID4gIGV4 dGVybiBFRklfR1VJRCBnU2hlbGxUZnRwSGlpR3VpZDsNCj4gPiA+ID4gPiA+ID4gK2V4dGVybiBF RklfR1VJRCBnU2hlbGxIdHRwSGlpR3VpZDsNCj4gPiA+ID4gPiA+ID4gIGV4dGVybiBFRklfR1VJ RCBnU2hlbGxCY2ZnSGlpR3VpZDsNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gICNlbmRp Zg0KPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvU2hlbGxQa2cuZGVjIGIvU2hl bGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gPiA+ID4gPiA+IGluZGV4IGMxN2UzNThkMTVlZC4uZjgw YTI5NjJkZmQxIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiAtLS0gYS9TaGVsbFBrZy9TaGVsbFBrZy5k ZWMNCj4gPiA+ID4gPiA+ID4gKysrIGIvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gPiA+ID4g PiA+IEBAIC01MCw2ICs1MCw3IEBAIFtHdWlkc10NCj4gPiA+ID4gPiA+ID4gICAgZ1NoZWxsTmV0 d29yazFIaWlHdWlkICAgICAgICAgICA9IHsweGYzZDMwMWJiLCAweGY0YTUsIDB4NDVhOCwNCj4g PiA+ID4gPiB7MHhiMCwgMHhiNywNCj4gPiA+ID4gPiA+ID4gMHhmYSwgMHg5OSwgMHg5YywgMHg2 MiwgMHgzNywgMHhhZX19DQo+ID4gPiA+ID4gPiA+ICAgIGdTaGVsbE5ldHdvcmsySGlpR3VpZCAg ICAgICAgICAgPSB7MHgxNzRiMmI1LCAweGY1MDUsIDB4NGIxMiwNCj4gPiA+ID4gPiB7MHhhYSwg MHg2MCwNCj4gPiA+ID4gPiA+ID4gMHg1OSwgMHhkZiwgMHhmOCwgMHhkNiwgMHhlYSwgMHgzN319 DQo+ID4gPiA+ID4gPiA+ICAgIGdTaGVsbFRmdHBIaWlHdWlkICAgICAgICAgICAgICAgPSB7MHg3 MzhhOTMxNCwgMHg4MmMxLCAweDQ1OTIsDQo+ID4gPiA+ID4gezB4OGYsIDB4ZjcsIDB4YzEsDQo+ ID4gPiA+ID4gPiA+IDB4YmQsIDB4ZjEsIDB4YjIsIDB4MGUsIDB4ZDR9fQ0KPiA+ID4gPiA+ID4g PiArICBnU2hlbGxIdHRwSGlpR3VpZCAgICAgICAgICAgICAgID0gezB4MzkwZjg0YjMsIDB4MjIx YywgMHg0ZDllLA0KPiA+ID4gPiA+IHsweGI1LCAweDA2LA0KPiA+ID4gPiA+ID4gMHg2ZCwNCj4g PiA+ID4gPiA+ID4gMHhiOSwgMHg0MiwgMHgzZSwgMHgwYSwgMHg3ZX19DQo+ID4gPiA+ID4gPiA+ ICAgIGdTaGVsbEJjZmdIaWlHdWlkICAgICAgICAgICAgICAgPSB7MHg1ZjVmNjA1ZCwgMHgxNTgz LCAweDRhMmQsDQo+ID4gPiA+ID4gezB4YTYsIDB4YjIsIDB4ZWIsDQo+ID4gPiA+ID4gPiA+IDB4 MTIsIDB4ZGEsIDB4YjQsIDB4YTIsIDB4YjZ9fQ0KPiA+ID4gPiA+ID4gPiAgICBnU2hlbGxBY3Bp Vmlld0hpaUd1aWQgICAgICAgICAgID0gezB4ZGE4Y2NkZjQsIDB4ZWQ4ZiwgMHg0ZmZjLA0KPiA+ ID4gPiA+IHsweGI1LCAweGVmLA0KPiA+ID4gPiA+ID4gMHgyZSwNCj4gPiA+ID4gPiA+ID4gMHhm NSwgMHg1ZSwgMHgyNCwgMHg5MywgMHgyYX19DQo+ID4gPiA+ID4gPiA+ICAgICMgRklMRV9HVUlE IGFzIGRlZmluZWQgaW4gU2hlbGxQa2cvQXBwbGljYXRpb24vU2hlbGwvU2hlbGwuaW5mDQo+ID4g PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9TaGVsbFBrZy5kc2MgYi9TaGVsbFBrZy9T aGVsbFBrZy5kc2MNCj4gPiA+ID4gPiA+ID4gaW5kZXggOTE0OTM0MDBjYWI3Li5hZWUwMDI0NTE4 NWQgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+IC0tLSBhL1NoZWxsUGtnL1NoZWxsUGtnLmRzYw0KPiA+ ID4gPiA+ID4gPiArKysgYi9TaGVsbFBrZy9TaGVsbFBrZy5kc2MNCj4gPiA+ID4gPiA+ID4gQEAg LTEzNyw2ICsxMzcsMTEgQEAgW0NvbXBvbmVudHNdDQo+ID4gPiA+ID4gPiA+ICAgICAgICBnRWZp U2hlbGxQa2dUb2tlblNwYWNlR3VpZC5QY2RTaGVsbExpYkF1dG9Jbml0aWFsaXplfEZBTFNFDQo+ ID4gPiA+ID4gPiA+ICAgIH0NCj4gPiA+ID4gPiA+ID4gICAgU2hlbGxQa2cvRHluYW1pY0NvbW1h bmQvVGZ0cER5bmFtaWNDb21tYW5kL1RmdHBBcHAuaW5mDQo+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiBTaGVsbFBrZy9EeW5hbWljQ29t bWFuZC9IdHRwRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kDQo+ID4gPiA+ID4gPiAu aW4NCj4gPiA+ID4gPiA+ID4gZiB7DQo+ID4gPiA+ID4gPiA+ICsgICAgPFBjZHNGaXhlZEF0QnVp bGQ+DQo+ID4gPiA+ID4gPiA+ICsgICAgICBnRWZpU2hlbGxQa2dUb2tlblNwYWNlR3VpZC5QY2RT aGVsbExpYkF1dG9Jbml0aWFsaXplfEZBTFNFDQo+ID4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4g PiA+ID4gKyAgU2hlbGxQa2cvRHluYW1pY0NvbW1hbmQvSHR0cER5bmFtaWNDb21tYW5kL0h0dHBB cHAuaW5mDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gU2hlbGxQ a2cvRHluYW1pY0NvbW1hbmQvRHBEeW5hbWljQ29tbWFuZC9EcER5bmFtaWNDb21tYW5kLmluZg0K PiA+ID4gPiA+ID4gPiB7DQo+ID4gPiA+ID4gPiA+ICAgICAgPFBjZHNGaXhlZEF0QnVpbGQ+DQo+ ID4gPiA+ID4gPiA+ICAgICAgICBnRWZpU2hlbGxQa2dUb2tlblNwYWNlR3VpZC5QY2RTaGVsbExp YkF1dG9Jbml0aWFsaXplfEZBTFNFDQo+ID4gPiA+ID4gPiA+IC0tDQo+ID4gPiA+ID4gPiA+IDIu MTcuMQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+DQo+ ID4NCj4gDQo+IA0KPiANCg0K