From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.126; helo=mga18.intel.com; envelope-from=jaben.carsey@intel.com; receiver=edk2-devel@lists.01.org Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 89FAE222630A7 for ; Thu, 22 Feb 2018 10:36:56 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Feb 2018 10:42:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,378,1515484800"; d="scan'208";a="29927873" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga003.jf.intel.com with ESMTP; 22 Feb 2018 10:42:55 -0800 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 22 Feb 2018 10:42:55 -0800 Received: from fmsmsx103.amr.corp.intel.com ([169.254.2.47]) by fmsmsx156.amr.corp.intel.com ([169.254.13.113]) with mapi id 14.03.0319.002; Thu, 22 Feb 2018 10:42:54 -0800 From: "Carsey, Jaben" To: Sami Mujawar , "edk2-devel@lists.01.org" CC: "evan.lloyd@arm.com" , "leif.lindholm@linaro.org" , "Matteo.Carlini@arm.com" , "Stephanie.Hughes-Fitt@arm.com" , "nd@arm.com" , "Ni, Ruiyu" , "Yao, Jiewen" Thread-Topic: [PATCH v3 1/1] ShellPkg: Add acpiview tool to dump ACPI tables Thread-Index: AQHTrAp4VzyCS45t6U+PEfOwHJONY6OwwatA Date: Thu, 22 Feb 2018 18:42:54 +0000 Message-ID: References: <20180222182430.26164-1-sami.mujawar@arm.com> <20180222182430.26164-2-sami.mujawar@arm.com> In-Reply-To: <20180222182430.26164-2-sami.mujawar@arm.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNzhmNTRkZTItMzg1OC00NDk3LWE5MWItOWE5MzAxMWVlNDEzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IjBcLzB6SFBzcWtLWTgxRERORGdSd251cXFzOUxQSzN0eXhnaWNYeU5jR2VnPSJ9 x-ctpclassification: CTP_NT x-originating-ip: [10.1.200.107] MIME-Version: 1.0 Subject: Re: [PATCH v3 1/1] ShellPkg: Add acpiview tool to dump ACPI tables X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Feb 2018 18:36:57 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIGZvciB5b3VyIGFuc3dlcnMuICBJIGxpa2UgdGhlIGNoYW5nZXMvZXhwbGFuYXRpb25z Lg0KDQpSZXZpZXdlZC1ieTogSmFiZW4gQ2Fyc2V5IDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPg0K DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFNhbWkgTXVqYXdhciBbbWFp bHRvOnNhbWkubXVqYXdhckBhcm0uY29tXQ0KPiBTZW50OiBUaHVyc2RheSwgRmVicnVhcnkgMjIs IDIwMTggMTA6MjUgQU0NCj4gVG86IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+IENjOiBldmFu Lmxsb3lkQGFybS5jb207IGxlaWYubGluZGhvbG1AbGluYXJvLm9yZzsgTWF0dGVvLkNhcmxpbmlA YXJtLmNvbTsNCj4gU3RlcGhhbmllLkh1Z2hlcy1GaXR0QGFybS5jb207IG5kQGFybS5jb207IENh cnNleSwgSmFiZW4NCj4gPGphYmVuLmNhcnNleUBpbnRlbC5jb20+OyBOaSwgUnVpeXUgPHJ1aXl1 Lm5pQGludGVsLmNvbT47IFlhbywgSmlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4g U3ViamVjdDogW1BBVENIIHYzIDEvMV0gU2hlbGxQa2c6IEFkZCBhY3BpdmlldyB0b29sIHRvIGR1 bXAgQUNQSSB0YWJsZXMNCj4gSW1wb3J0YW5jZTogSGlnaA0KPiANCj4gVGhpcyBwcm9ncmFtIGlz IHByb3ZpZGVkIHRvIGFsbG93IGV4YW1pbmF0aW9uIG9mIEFDUEkgdGFibGUgY29udGVudHMNCj4g ZnJvbSB0aGUgVUVGSSBTaGVsbC4gIFRoaXMgY2FuIGhlbHAgd2l0aCBpbnZlc3RpZ2F0aW9ucywg ZXNwZWNpYWxseSBhdA0KPiB0aGF0IHN0YWdlIHdoZXJlIHRoZSB0YWJsZXMgYXJlIG5vdCBlbmFi bGluZyBhbiBPUyB0byBib290Lg0KPiBUaGUgcHJvZ3JhbSBpcyBub3QgZXhoYXVzdGl2ZSwgYW5k IG9ubHkgZW5jYXBzdWxhdGVzIGRldGFpbGVkIGtub3dsZWRnZQ0KPiBvZiBhIGxpbWl0ZWQgbnVt YmVyIG9mIHRhYmxlIHR5cGVzLg0KPiANCj4gRGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gZGlzcGxh eSB0aGUgY29udGVudCBvZiBhbGwgdGFibGVzIGluc3RhbGxlZC4NCj4gJ0tub3duJyB0YWJsZSB0 eXBlcyB3aWxsIGJlIHBhcnNlZCBhbmQgZGlzcGxheWVkIHdpdGggZGVzY3JpcHRpb25zIGFuZA0K PiBmaWVsZCB2YWx1ZXMuICBXaGVyZSBhcHByb3ByaWF0ZSBhIGRlZ3JlZSBvZiBjb25zaXN0ZW5j eSBjaGVja2luZyBpcw0KPiBkb25lIGFuZCBlcnJvcnMgbWF5IGJlIHJlcG9ydGVkIGluIHRoZSBv dXRwdXQuDQo+IE90aGVyIHRhYmxlIHR5cGVzIHdpbGwgYmUgZGlzcGxheWVkIGFzIGFuIGFycmF5 IG9mIEhleGFkZWNpbWFsIGJ5dGVzLg0KPiANCj4gVG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcsIHRo ZSAtcyBhbmQgLWQgb3B0aW9ucyBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBhDQo+IGJpbmFyeSBm aWxlIGltYWdlIG9mIGEgdGFibGUgdGhhdCBjYW4gYmUgY29waWVkIGVsc2V3aGVyZSBmb3INCj4g aW52ZXN0aWdhdGlvbiB1c2luZyB0b29scyBzdWNoIGFzIHRob3NlIHByb3ZpZGVkIGJ5IGFjcGlj YS5vcmcuICBUaGlzIGlzDQo+IGVzcGVjaWFsbHkgcmVsZXZhbnQgZm9yIEFNTCB0eXBlIHRhYmxl cyBsaWtlIERTRFQgYW5kIFNTRFQuDQo+IA0KPiBUaGUgaW5zcGlyYXRpb24gZm9yIHRoaXMgaXMg dGhlIGV4aXN0aW5nIHNtYmlvc3ZpZXcgRGVidWcxIFNoZWxsDQo+IGNvbW1hbmQuDQo+IA0KPiBN YW55IHRhYmxlcyBhcmUgbm90IGV4cGxpY2l0bHkgaGFuZGxlZCwgaW4gcGFydCBiZWNhdXNlIG5v IGV4YW1wbGVzIGFyZQ0KPiBhdmFpbGFibGUgZm9yIG91ciB0ZXN0aW5nLg0KPiANCj4gVGhlIHBy b2dyYW0gaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5kZWQgdG8gbmV3IHRhYmxlcyB3aXRoIG1pbmlt YWwNCj4gZWZmb3J0LCBhbmQgY29udHJpYnV0aW9ucyBhcmUgaW52aXRlZC4NCj4gDQo+IENvbnRy aWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gU2ln bmVkLW9mZi1ieTogU2FtaSBNdWphd2FyIDxzYW1pLm11amF3YXJAYXJtLmNvbT4NCj4gU2lnbmVk LW9mZi1ieTogRXZhbiBMbG95ZCA8ZXZhbi5sbG95ZEBhcm0uY29tPg0KPiAtLS0NCj4gDQo+IE5v dGVzOg0KPiAgICAgdjM6DQo+ICAgICAtIENhbiB0aGUgaW5kaXZpZHVhbCAiY2hpbGQiIGxpYnJh cmllcyBiZSBwbGFjZWQgaW50bw0KPiAgICAgICBzdWJkaXJlY3RvcmllcyB1bmRlciBVZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIgZGlyZWN0b3J5DQo+ICAgICAgIGZvciBjbGVhciBzZXBhcmF0 aW9uPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtKQUJFTl0NCj4g ICAgIC0gUGF0Y2ggdXBkYXRlZCB0byBtb3ZlIGluZGl2aWR1YWwgImNoaWxkIiBsaWJyYXJpZXMg aW50bw0KPiAgICAgICBzdWJkaXJlY3Rvcmllcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgW1NBTUldDQo+IA0KPiAgICAgLSBJbiBVZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIsYyB3aGF0J3MgdGhlIG1vdGl2YXRpb24gZm9yIGFsbA0KPiAgICAgICB0 aGUgd3JhcHBlcnMgYXJvdW5kIHByaW50PyBJIHNlZSB0aGF0IHNvbWUgYXJlIGZvciBtZW1vcnkg YWNjZXNzDQo+ICAgICAgIHJlc3RyaWN0aW9ucywgYnV0IHRoZSByZXN0PyAgUHJpbnRHdWlkLCBs b29rcyB0aGUgc2FtZSBhcyB1c2luZw0KPiAgICAgICAlZyB3aXRoIFByaW50KCkuLi4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSkFCRU5dDQo+ICAgICAtIFRo ZSBwcmludCB3cmFwcGVycyBlbmFibGUgYSBjb21tb24gc3R5bGVkIGZvcm1hdHRlZCBwcmludGlu ZyBmb3INCj4gICAgICAgdGhlIEFDUEkgZmllbGRzLiBUaGUgQUNQSXZpZXcgdGFibGUgcGFyc2lu ZyBmcmFtZXdvcmsgdXRpbGl6ZXMgYQ0KPiAgICAgICB0YWJsZS1kcml2ZW4gYXBwcm9hY2ggZm9y IHBhcnNpbmcgdGhlIHRhYmxlcyBhbmQgdGhlc2UgZnVuY3Rpb25zDQo+ICAgICAgIGFyZSBpbnZv a2VkIGJ5IHRoZSBmcmFtZXdvcmsgYmFzZWQgb24gdGhlIGZpZWxkIHNpemUgYW5kIHR5cGUuDQo+ ICAgICAgIEhvd2V2ZXIgeW91IGFyZSByaWdodCwgaXQgaXMgc3VwZXJmbHVvdXMgaW4gdGhlIGNh c2Ugb2YgUHJpbnRHdWlkDQo+ICAgICAgIChXaGljaCBoYXMgbm93IGJlZW4gcmVtb3ZlZCBpbiB0 aGUgdXBkYXRlZCBwYXRjaCkuICAgICAgICAgICAgICBbU0FNSV0NCj4gDQo+ICAgICAtIERvIHdl IHdhbnQgdG8gY2hhbmdlIHRoZSBtYWluIGVudHJ5cG9pbnQgdG8gYSBEeW5hbWljQ29tbWFuZA0K PiAgICAgICBzaW5jZSB0aGlzIGNvbW1hbmQgaXMgbm90IGluIHRoZSBzaGVsbCBzcGVjPyBJZiB5 ZXMsIGRvIHdlIHdhbnQNCj4gICAgICAgdG8gZG8gdGhhdCBmaXJzdCBvciBhZnRlcj8gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0pBQkVOXQ0KPiAgICAgLSBUaGUgRUNSIDE3 ODQgZm9yIEFDUEl2aWV3IGFwcGVhcnMgdG8gYmUgJ0FwcHJvdmVkIGFzIG5ldyBjb250ZW50DQo+ ICAgICAgIGZvciB0aGUgU2hlbGwgU3BlYy4nIGluIE1hbnRpcywNCj4gICAgICAgc2VlIGh0dHBz Oi8vbWFudGlzLnVlZmkub3JnL21hbnRpcy92aWV3LnBocD9pZD0xNzg0Lg0KPiAgICAgICBBcyBJ IHVuZGVyc3RhbmQgaXQsIHRoZSBFQ1IgY2hhbmdlIG5lZWRzIHRvIGJlIHByb3BhZ2F0ZWQgdG8g dGhlDQo+ICAgICAgIFNoZWxsIHNwZWNpZmljYXRpb24gYW5kIGlzIHBlbmRpbmcuIEluIGxpZ2h0 IG9mIHRoZSBhYm92ZSwgSSB0aGluaw0KPiAgICAgICB0aGF0IGFkZGluZyBEeW5hbWljQ29tbWFu ZCBzdXBwb3J0IGlzIG5vdCBuZWNlc3NhcnkuIFBsZWFzZSBsZXQgbWUNCj4gICAgICAga25vdyBp ZiB5b3UgZmVlbCBvdGhlcndpc2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFtTQU1JXQ0KPiANCj4gIFNoZWxsUGtnL0luY2x1ZGUvTGlicmFyeS9BY3BpVmlldy9BY3BpUGFy c2VyLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ IDQ2MyArKysrKysrKysrKysNCj4gIFNoZWxsUGtnL0luY2x1ZGUvTGlicmFyeS9BY3BpVmlldy9B Y3BpVGFibGVQYXJzZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8DQo+IDEyNiArKysrDQo+ICBTaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcvQWNw aVZpZXcuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgNzENCj4gKysNCj4gIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL0FjcGlWaWV3LmMNCj4gfCA2MDEgKysrKysrKysrKysrKysrKw0KPiANCj4gU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9BY3BpUGFyc2VySGVs cGVyLw0KPiBBY3BpUGFyc2VyLmMgICAgICAgICAgICB8IDY0NCArKysrKysrKysrKysrKysrKw0K PiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9BY3BpUGFyc2VySGVscGVyLw0KPiBBY3BpUGFyc2VySGVscGVyTGliLmluZiB8ICAzMiArDQo+ IA0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L0FjcGlQYXJzZXJIZWxwZXIvDQo+IEFjcGlUYWJsZVBhcnNlci5jICAgICAgIHwgMjE0ICsrKysr Kw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9CZ3J0L0JncnRQYXJzZXIuYw0KPiB8IDExNyArKysrDQo+IA0KPiBTaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBhcnNlckxpYi4N Cj4gaW5mICAgICAgICAgICAgICAgICAgIHwgIDMzICsNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRGJnMi9EYmcyUGFyc2VyLmMNCj4g fCAyODMgKysrKysrKysNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1BhcnNlcnMvRGJnMi9EYmcyUGFyc2VyTGkNCj4gYi5pbmYgICAgICAgICAgICAg ICAgICAgfCAgMzMgKw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJzZXIuYw0KPiB8ICA5MiArKysNCj4gDQo+IFNoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0 UGFyc2VyTGkNCj4gYi5pbmYgICAgICAgICAgICAgICAgICAgfCAgMzMgKw0KPiAgU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJz ZXIuYw0KPiB8IDMwMiArKysrKysrKw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJzZXJMaWINCj4gLmluZiAgICAg ICAgICAgICAgICAgICB8ICAzMyArDQo+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBhcnNlci5jDQo+IHwgMzM2ICsrKysrKysr Kw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9HdGR0L0d0ZHRQYXJzZXJMaQ0KPiBiLmluZiAgICAgICAgICAgICAgICAgICB8ICAzMyAr DQo+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L0lvcnQvSW9ydFBhcnNlci5jDQo+IHwgNzQxICsrKysrKysrKysrKysrKysrKysrDQo+IA0KPiBT aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0lvcnQv SW9ydFBhcnNlckxpYi5pDQo+IG5mICAgICAgICAgICAgICAgICAgIHwgIDMzICsNCj4gDQo+IFNo ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9N YWR0UGFyc2VyLg0KPiBjICAgICAgICAgICAgICAgICAgICAgICAgfCAzNTYgKysrKysrKysrKw0K PiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9NYWR0L01hZHRQYXJzZXJMDQo+IGliLmluZiAgICAgICAgICAgICAgICAgICB8ICAzMyArDQo+ IA0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L01jZmcvTWNmZ1BhcnNlci5jDQo+IHwgMTM5ICsrKysNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyTGkNCj4g Yi5pbmYgICAgICAgICAgICAgICAgICAgfCAgMzMgKw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZXIuYw0KPiB8 IDIxMCArKysrKysNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFyc2VyTGkNCj4gYi5pbmYgICAgICAgICAgICAgICAg ICAgfCAgMzMgKw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9TbGl0L1NsaXRQYXJzZXIuYw0KPiB8IDE4NyArKysrKw0KPiANCj4gU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1NsaXRQ YXJzZXJMaWIuaW4NCj4gZiAgICAgICAgICAgICAgICAgICB8ICAzMyArDQo+ICBTaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3BjclBhcnNl ci5jDQo+IHwgMjA5ICsrKysrKw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJzZXJMaWINCj4gLmluZiAgICAgICAg ICAgICAgICAgICB8ICAzMyArDQo+ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlci5jDQo+IHwgMzczICsrKysrKysrKysN Cj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvU3JhdC9TcmF0UGFyc2VyTGliLmkNCj4gbmYgICAgICAgICAgICAgICAgICAgfCAgMzMgKw0K PiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9T c2R0L1NzZHRQYXJzZXIuYw0KPiB8ICA5MiArKysNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyTGliDQo+IC5p bmYgICAgICAgICAgICAgICAgICAgfCAgMzMgKw0KPiAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXIuYw0KPiB8IDE5NyAr KysrKysNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyTGliDQo+IC5pbmYgICAgICAgICAgICAgICAgICAgfCAg MzMgKw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW4NCj4gZExpYi5jICAgICAgICAgICAgICAgICAgICB8IDEw NiArKysNCj4gDQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuDQo+IGRMaWIuaCAgICAgICAgICAgICAgICAgICAgfCAg MzIgKw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW4NCj4gZExpYi5pbmYgICAgICAgICAgICAgICAgICB8ICA1 OCArKw0KPiANCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW4NCj4gZExpYi51bmkgICAgICAgICAgICAgICAgICB8IDEy NyArKysrDQo+ICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0N Cj4gIDQwIGZpbGVzIGNoYW5nZWQsIDY1NzIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0K PiANCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0luY2x1ZGUvTGlicmFyeS9BY3BpVmlldy9BY3Bp UGFyc2VyLmgNCj4gYi9TaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNl ci5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwZWQ5OTIzOWExMWM4YThmMjljNGYyZTQ4DQo+IDJi ZTBkOGNhMjMxMDcyDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvSW5jbHVkZS9M aWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaA0KPiBAQCAtMCwwICsxLDQ2MyBAQA0KPiArLyoq DQo+ICsgIEhlYWRlciBmaWxlIGZvciBBQ1BJIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAo YykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBCU0QNCj4gTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1 dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0K PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04g QU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyoq Lw0KPiArDQo+ICsjaWZuZGVmIEFDUElQQVJTRVJfSF8NCj4gKyNkZWZpbmUgQUNQSVBBUlNFUl9I Xw0KPiArDQo+ICsjZGVmaW5lIE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEggIDM2DQo+ICsNCj4g Ky8vLyBUaGUgUlNEUCB0YWJsZSBzaWduYXR1cmUgaXMgIlJTRCBQVFIgIiAoOCBieXRlcykNCj4g Ky8vLyBIb3dldmVyIFRoZSBzaWduYXR1cmUgZm9yIEFDUEkgdGFibGVzIGlzIDQgYnl0ZXMuDQo+ ICsvLy8gVG8gd29yayBhcm91bmQgdGhpcyBvZGRpdHkgZGVmaW5lIGEgc2lnbmF0dXJlIHR5cGUN Cj4gKy8vLyB0aGF0IGFsbG93cyB1cyB0byBwcm9jZXNzIHRoZSBsb2cgb3B0aW9ucy4NCj4gKyNk ZWZpbmUgUlNEUF9UQUJMRV9JTkZPICBTSUdOQVRVUkVfMzIoJ1InLCAnUycsICdEJywgJ1AnKQ0K PiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXNldHMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291 bnRlciB0byBaZXJvLg0KPiArKi8NCj4gK1ZPSUQNCj4gK1Jlc2V0RXJyb3JDb3VudCAoDQo+ICsg IFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gaW5jcmVtZW50cyB0aGUg QUNQSSB0YWJsZSBlcnJvciBjb3VudGVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0luY3JlbWVudEVy cm9yQ291bnQgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHJldHVybnMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291bnQuDQo+ICsNCj4gKyAgQHJldHZhbCBS ZXR1cm5zIHRoZSBjb3VudCBvZiBlcnJvcnMgZGV0ZWN0ZWQgaW4gdGhlIEFDUEkgdGFibGVzLg0K PiArKi8NCj4gK1VJTlQzMg0KPiArR2V0RXJyb3JDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKTsN Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmVzZXRzIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcg Y291bnRlciB0byBaZXJvLg0KPiArKi8NCj4gK1ZPSUQNCj4gK1Jlc2V0V2FybmluZ0NvdW50ICgN Cj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmNyZW1lbnRz IHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291bnRlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtJbmNy ZW1lbnRXYXJuaW5nQ291bnQgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3VudC4NCj4gKw0KPiAr ICBAcmV0dmFsIFJldHVybnMgdGhlIGNvdW50IG9mIHdhcm5pbmcgZGV0ZWN0ZWQgaW4gdGhlIEFD UEkgdGFibGVzLg0KPiArKi8NCj4gK1VJTlQzMg0KPiArR2V0V2FybmluZ0NvdW50ICgNCj4gKyAg Vk9JRA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgQUNQ SSB0YWJsZSBjaGVja3N1bS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBj aGVja3N1bSBmb3IgdGhlIEFDUEkgdGFibGUgYW5kIG9wdGlvbmFsbHkNCj4gKyAgcHJpbnRzIHRo ZSBzdGF0dXMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gTG9nICAgICBJZiBUUlVFIGxvZyB0aGUg c3RhdHVzIG9mIHRoZSBjaGVja3N1bS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgdGFibGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5n dGggIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUgICAg ICAgICBUaGUgY2hlY2tzdW0gaXMgT0suDQo+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgIFRoZSBj aGVja3N1bSBmYWlsZWQuDQo+ICsqLw0KPiArQk9PTEVBTg0KPiArVmVyaWZ5Q2hlY2tzdW0gKA0K PiArICBJTiBCT09MRUFOIExvZywNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQz MiAgTGVuZ3RoDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEg cmF3IGRhdGEgZHVtcCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQ dHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0YWJsZSBidWZmZXIuDQo+ICsgIEBw YXJhbSBbaW5dIExlbmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZP SUQNCj4gK0R1bXBSYXcgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBVSU5UMzIgTGVu Z3RoDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyAxIGJ5dGUgb2Yg ZGF0dW0gYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUg ZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0R1bXBVaW50OCAoDQo+ICsgIElOIENPTlNU IENIQVIxNiogRm9ybWF0LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMiBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmll ZCBpbiB0aGUNCj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZv cm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJh bSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyov DQo+ICtWT0lEDQo+ICtEdW1wVWludDE2ICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQs DQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1 bmN0aW9uIHRyYWNlcyA0IGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiArICAg IGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0 IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0R1 bXBVaW50MzIgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gKyAgSU4gVUlOVDgq ICAgICAgICBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDgg Ynl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgYnkgdGhlDQo+ICsgICAgZm9ybWF0IHN0cmluZy4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFj aW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcFVpbnQ2NCAoDQo+ICsg IElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiAr ICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMyBjaGFyYWN0ZXJzIHdoaWNo IGNhbiBiZSBvcHRpb25hbGx5DQo+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmlu ZyBpZiBzcGVjaWZpZWQuDQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZp ZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0 ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsq Lw0KPiArVk9JRA0KPiArRHVtcDNDaGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0 IE9QVElPTkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsv KiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25h bGx5DQo+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQu DQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBt dXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3Jt YXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAg IFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiAr RHVtcDRDaGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiAr ICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlv biB0cmFjZXMgNiBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ICsgICBmb3Jt YXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsNCj4gKyAgSWYg bm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0 cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcDZDaGFycyAoDQo+ ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiArICBJTiBVSU5UOCogICAg ICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgOCBjaGFy YWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUg Zm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0IHN0cmlu ZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFt IFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRh Lg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBi dWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcDhDaGFycyAoDQo+ICsgIElOIENPTlNUIENI QVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICAp Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmRlbnRzIGFuZCBwcmludHMgdGhlIEFDUEkg dGFibGUgRmllbGQgTmFtZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICBOdW1i ZXIgb2Ygc3BhY2VzIHRvIGFkZCB0byB0aGUgZ2xvYmFsIHRhYmxlDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgIGluZGVudC4gVGhlIGdsb2JhbCB0YWJsZSBpbmRlbnQgaXMgMCBieSBkZWZh dWx0Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBob3dldmVyIHRoaXMgdmFsdWUgaXMg dXBkYXRlZCBvbiBlbnRyeSB0byB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgUGFy c2VBY3BpKCkgYnkgYWRkaW5nIHRoZSBpbmRlbnQgdmFsdWUgcHJvdmlkZWQgdG8NCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgUGFyc2VBY3BpKCkgYW5kIHJlc3RvcmVkIGJhY2sgb24gZXhp dC4gVGhlcmVmb3JlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0b3RhbCBpbmRl bnQgaW4gdGhlIG91dHB1dCBpcyBkZXBlbmRlbnQgb24gZnJvbQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4NCj4gKyAgQHBhcmFtIFtp bl0gRmllbGROYW1lICAgUG9pbnRlciB0byB0aGUgRmllbGQgTmFtZS4NCj4gKyovDQo+ICtWT0lE DQo+ICtQcmludEZpZWxkTmFtZSAoDQo+ICsgIElOIFVJTlQzMiAgICAgICAgIEluZGVudCwNCj4g KyAgSU4gQ09OU1QgQ0hBUjE2KiAgRmllbGROYW1lDQo+ICspOw0KPiArDQo+ICsvKiogVGhpcyBm dW5jdGlvbiBwb2ludGVyIGlzIHRoZSB0ZW1wbGF0ZSBmb3IgY3VzdG9taXppbmcgdGhlIHRyYWNl IG91dHB1dA0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgRm9ybWF0IHN0cmluZyBmb3Ig dHJhY2luZyB0aGUgZGF0YSBhcyBzcGVjaWZpZWQgYnkNCj4gKyAgICAgICAgICAgICAgICAgICAg ICB0aGUgJ0Zvcm1hdCcgbWVtYmVyIG9mIEFDUElfUEFSU0VSLg0KPiArICBAcGFyYW0gW2luXSBQ dHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArdHlw ZWRlZiBWT0lEICgqRk5QVFJfUFJJTlRfRk9STUFUVEVSKShDT05TVCBDSEFSMTYqIEZvcm1hdCwN Cj4gVUlOVDgqIFB0cik7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBvaW50ZXIgaXMgdGhl IHRlbXBsYXRlIGZvciB2YWxpZGF0aW5nIGFuIEFDUEkgdGFibGUgZmllbGQuDQo+ICsNCj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0 YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMg aW5mb3JtYXRpb24gYXMgc3BlY2lmaWVkDQo+IGJ5DQo+ICsgICAgICAgICAgICAgICAgICAgICAg dGhlICdDb250ZXh0JyBtZW1iZXIgb2YgdGhlIEFDUElfUEFSU0VSLg0KPiArICAgICAgICAgICAg ICAgICAgICAgIGUuZy4gdGhpcyBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUg aGVhZGVyLg0KPiArKi8NCj4gK3R5cGVkZWYgVk9JRCAoKkZOUFRSX0ZJRUxEX1ZBTElEQVRPUiko VUlOVDgqIFB0ciwgVk9JRCogQ29udGV4dCk7DQo+ICsNCj4gKy8qKiBUaGUgQUNQSV9QQVJTRVIg c3RydWN0dXJlIGRlc2NyaWJlcyB0aGUgZmllbGRzIG9mIGFuIEFDUEkgdGFibGUgYW5kDQo+ICsg ICAgcHJvdmlkZXMgbWVhbnMgZm9yIHRoZSBwYXJzZXIgdG8gaW50ZXJwcmV0IGFuZCB0cmFjZSBh cHByb3ByaWF0ZWx5Lg0KPiArDQo+ICsgIFRoZSBmaXJzdCB0aHJlZSBtZW1iZXJzIGFyZSBwb3B1 bGF0ZWQgYmFzZWQgb24gaW5mb3JtYXRpb24gcHJlc2VudCBpbg0KPiArICBpbiB0aGUgQUNQSSB0 YWJsZSBzcGVjaWZpY2F0aW9ucy4gVGhlIHJlbWFpbmluZyBtZW1iZXJzIGRlc2NyaWJlIGhvdw0K PiArICB0aGUgcGFyc2VyIHNob3VsZCByZXBvcnQgdGhlIGZpZWxkIGluZm9ybWF0aW9uLCB2YWxp ZGF0ZSB0aGUgZmllbGQgZGF0YQ0KPiArICBhbmQvb3IgdXBkYXRlIGFuIGV4dGVybmFsIHBvaW50 ZXIgdG8gdGhlIGZpZWxkIChJdGVtUHRyKS4NCj4gKw0KPiArICBQYXJzZUFjcGkoKSB1c2VzIHRo ZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmllZCBieSAnRm9ybWF0JyBmb3IgdHJhY2luZw0KPiArICB0 aGUgZmllbGQgZGF0YS4gSWYgdGhlIGZpZWxkIGlzIG1vcmUgY29tcGxleCBhbmQgcmVxdWlyZXMg YWRkaXRpb25hbA0KPiArICBwcm9jZXNzaW5nIGZvciBmb3JtYXR0aW5nIGFuZCByZXByZXNlbnRh dGlvbiBhIHByaW50IGZvcm1hdHRlciBmdW5jdGlvbg0KPiArICBjYW4gYmUgc3BlY2lmaWVkIGlu ICdQcmludEZvcm1hdHRlcicuDQo+ICsgIFRoZSBQcmludEZvcm1hdHRlciBmdW5jdGlvbiBtYXkg Y2hvb3NlIHRvIHVzZSB0aGUgZm9ybWF0IHN0cmluZw0KPiArICBzcGVjaWZpZWQgYnkgJ0Zvcm1h dCcgb3IgdXNlIGl0cyBvd24gaW50ZXJuYWwgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiArICBUaGUg J0Zvcm1hdCcgYW5kICdQcmludEZvcm1hdHRlcicgbWVtYmVycyBhbGxvdyBmbGV4aWJpbGl0eSBm b3INCj4gKyAgcmVwcmVzZW50aW5nIHRoZSBmaWVsZCBkYXRhLg0KPiArKi8NCj4gK3R5cGVkZWYg c3RydWN0IEFjcGlQYXJzZXIgew0KPiArDQo+ICsgIC8vLyBTdHJpbmcgZGVzY3JpYmluZyB0aGUg QUNQSSB0YWJsZSBmaWVsZA0KPiArICAvLy8gKEZpZWxkIGNvbHVtbiBmcm9tIEFDUEkgdGFibGUg c3BlYykNCj4gKyAgQ09OU1QgQ0hBUjE2KiAgICAgICAgIE5hbWVTdHI7DQo+ICsNCj4gKyAgLy8v IFRoZSBsZW5ndGggb2YgdGhlIGZpZWxkLg0KPiArICAvLy8gKEJ5dGUgTGVuZ3RoIGNvbHVtbiBm cm9tIEFDUEkgdGFibGUgc3BlYykNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgIExlbmd0aDsN Cj4gKw0KPiArICAvLy8gVGhlIG9mZnNldCBvZiB0aGUgZmllbGQgZnJvbSB0aGUgc3RhcnQgb2Yg dGhlIHRhYmxlLg0KPiArICAvLy8gKEJ5dGUgT2Zmc2V0IGNvbHVtbiBmcm9tIEFDUEkgdGFibGUg c3BlYykNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgIE9mZnNldDsNCj4gKw0KPiArICAvLy8g T3B0aW9uYWwgUHJpbnQoKSBzdHlsZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRh LiBJZiBub3QNCj4gKyAgLy8vIHVzZWQgdGhpcyBtdXN0IGJlIHNldCB0byBOVUxMLg0KPiArICBD T05TVCBDSEFSMTYqICAgICAgICAgRm9ybWF0Ow0KPiArDQo+ICsgIC8vLyBPcHRpb25hbCBwb2lu dGVyIHRvIGEgcHJpbnQgZm9ybWF0dGVyIGZ1bmN0aW9uIHdoaWNoDQo+ICsgIC8vLyBpcyB0eXBp Y2FsbHkgdXNlZCB0byB0cmFjZSBjb21wbGV4IGZpZWxkIGluZm9ybWF0aW9uLg0KPiArICAvLy8g SWYgbm90IHVzZWQgdGhpcyBtdXN0IGJlIHNldCB0byBOVUxMLg0KPiArICAvLy8gVGhlIEZvcm1h dCBzdHJpbmcgaXMgcGFzc2VkIHRvIHRoZSBQcmludEZvcm1hdHRlciBmdW5jdGlvbg0KPiArICAv Ly8gYnV0IG1heSBiZSBpZ25vcmVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBjb2RlLg0KPiArICBG TlBUUl9QUklOVF9GT1JNQVRURVIgUHJpbnRGb3JtYXR0ZXI7DQo+ICsNCj4gKyAgLy8vIE9wdGlv bmFsIHBvaW50ZXIgd2hpY2ggbWF5IGJlIHNldCB0byByZXF1ZXN0IHRoZSBwYXJzZXIgdG8gdXBk YXRlDQo+ICsgIC8vLyBhIHBvaW50ZXIgdG8gdGhlIGZpZWxkIGRhdGEuIElmIHVudXNlZCB0aGlz IG11c3QgYmUgc2V0IHRvIE5VTEwuDQo+ICsgIFZPSUQqKiAgICAgICAgICAgICAgICBJdGVtUHRy Ow0KPiArDQo+ICsgIC8vLyBPcHRpb25hbCBwb2ludGVyIHRvIGEgZmllbGQgdmFsaWRhdG9yIGZ1 bmN0aW9uLg0KPiArICAvLy8gVGhlIGZ1bmN0aW9uIHNob3VsZCBkaXJlY3RseSByZXBvcnQgYW55 IGFwcHJvcHJpYXRlIGVycm9yIG9yIHdhcm5pbmcNCj4gKyAgLy8vIGFuZCBpbnZva2UgdGhlIGFw cHJvcHJpYXRlIGNvdW50ZXIgdXBkYXRlIGZ1bmN0aW9uLg0KPiArICAvLy8gSWYgbm90IHVzZWQg dGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBzZXQgdG8gTlVMTC4NCj4gKyAgRk5QVFJfRklFTERfVkFM SURBVE9SIEZpZWxkVmFsaWRhdG9yOw0KPiArDQo+ICsgIC8vLyBPcHRpb25hbCBwb2ludGVyIHRv IGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24sDQo+ICsgIC8vLyB3aGljaCB0aGUgRmllbGQg VmFsaWRhdG9yIGZ1bmN0aW9uIGNhbiB1c2UgdG8gZGV0ZXJtaW5lDQo+ICsgIC8vLyBhZGRpdGlv bmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBBQ1BJIHRhYmxlIGFuZCBtYWtlDQo+ICsgIC8vLyBk ZWNpc2lvbnMgYWJvdXQgdGhlIGZpZWxkIGJlaW5nIHZhbGlkYXRlZC4NCj4gKyAgLy8vIGUuZy4g dGhpcyBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyDQo+ICsgIFZP SUQqICAgICAgICAgICAgICAgICBDb250ZXh0Ow0KPiArfSBBQ1BJX1BBUlNFUjsNCj4gKw0KPiAr LyoqIEEgc3RydWN0dXJlIHVzZWQgdG8gc3RvcmUgdGhlIHBvaW50ZXJzIHRvIHRoZSBtZW1iZXJz IG9mIHRoZQ0KPiArICAgIEFDUEkgZGVzY3JpcHRpb24gaGVhZGVyIHN0cnVjdHVyZSB0aGF0IHdh cyBwYXJzZWQuDQo+ICsqLw0KPiArdHlwZWRlZiBzdHJ1Y3QgQWNwaURlc2NyaXB0aW9uSGVhZGVy SW5mbyB7DQo+ICsgIC8vLyBBQ1BJIHRhYmxlIHNpZ25hdHVyZQ0KPiArICBVSU5UMzIqIFNpZ25h dHVyZTsNCj4gKyAgLy8vIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZQ0KPiArICBVSU5UMzIqIExl bmd0aDsNCj4gKyAgLy8vIFJldmlzaW9uDQo+ICsgIFVJTlQ4KiAgUmV2aXNpb247DQo+ICsgIC8v LyBDaGVja3N1bQ0KPiArICBVSU5UOCogIENoZWNrc3VtOw0KPiArICAvLy8gT0VNIElkIC0gbGVu Z3RoIGlzIDYgYnl0ZXMNCj4gKyAgVUlOVDgqICBPZW1JZDsNCj4gKyAgLy8vIE9FTSB0YWJsZSBJ ZA0KPiArICBVSU5UNjQqIE9lbVRhYmxlSWQ7DQo+ICsgIC8vLyBPRU0gcmV2aXNpb24gSWQNCj4g KyAgVUlOVDMyKiBPZW1SZXZpc2lvbjsNCj4gKyAgLy8vIENyZWF0b3IgSWQNCj4gKyAgVUlOVDMy KiBDcmVhdG9ySWQ7DQo+ICsgIC8vLyBDcmVhdG9yIHJldmlzaW9uDQo+ICsgIFVJTlQzMiogQ3Jl YXRvclJldmlzaW9uOw0KPiArfSBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPOw0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNlIGFuIEFDUEkgdGFibGUgYnVmZmVy Lg0KPiArDQo+ICsgIFRoZSBBQ1BJIHRhYmxlIGJ1ZmZlciBpcyBwYXJzZWQgdXNpbmcgdGhlIEFD UEkgdGFibGUgcGFyc2VyIGluZm9ybWF0aW9uDQo+ICsgIHNwZWNpZmllZCBieSBhIHBvaW50ZXIg dG8gYW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgZWxlbWVudHMuIFRoaXMgcGFyc2VyDQo+ICsgIGZ1 bmN0aW9uIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCBpdGVtIG9uIHRoZSBBQ1BJX1BBUlNFUiBhcnJh eSBhbmQgbG9ncw0KPiB0aGUNCj4gKyAgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhp cyBmdW5jdGlvbiBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIHRvIHBhcnNlIEFDUEkgdGFibGVzIGFu ZCBmZXRjaCBzcGVjaWZpYw0KPiArICBmaWVsZCB2YWx1ZXMuIFRoZSBJdGVtUHRyIG1lbWJlciBv ZiB0aGUgQUNQSV9QQVJTRVIgc3RydWN0dXJlICh3aGVyZQ0KPiB1c2VkKQ0KPiArICBpcyB1cGRh dGVkIGJ5IHRoaXMgcGFyc2VyIGZ1bmN0aW9uIHRvIHBvaW50IHRvIHRoZSBzZWxlY3RlZCBmaWVs ZCBkYXRhDQo+ICsgIChlLmcuIHVzZWZ1bCBmb3IgdmFyaWFibGUgbGVuZ3RoIG5lc3RlZCBmaWVs ZHMpLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICBUcmFjZSB0aGUgQUNQSSBm aWVsZHMgVFJVRSBlbHNlIG9ubHkgcGFyc2UgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICAgICAgIE51bWJlciBvZiBzcGFj ZXMgdG8gaW5kZW50IHRoZSBvdXRwdXQuDQo+ICsgIEBwYXJhbSBbaW5dIEFzY2lpTmFtZSAgICBP cHRpb25hbCBwb2ludGVyIHRvIGFuIEFTQ0lJIHN0cmluZyB0aGF0IGRlc2NyaWJlcw0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhYmxlIGJlaW5nIHBhcnNlZC4NCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIu DQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlciBwb2lu dGVkIGJ5IFB0ci4NCj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyICAgICAgIFBvaW50ZXIgdG8gYW4g YXJyYXkgb2YgQUNQSV9QQVJTRVIgc3RydWN0dXJlIHRoYXQNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRlc2NyaWJlcyB0aGUgdGFibGUgYmVpbmcgcGFyc2VkLg0KPiArICBAcGFyYW0g W2luXSBQYXJzZXJJdGVtcyAgTnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBBQ1BJX1BBUlNFUiBhcnJh eS4NCj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJzZWQuDQo+ICsqLw0KPiAr VUlOVDMyDQo+ICtQYXJzZUFjcGkgKA0KPiArICBJTiBCT09MRUFOICAgICAgICAgICAgVHJhY2Us DQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBJbmRlbnQsDQo+ICsgIElOIENPTlNUIENIQVI4 KiAgICAgICBBc2NpaU5hbWUgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgICAgICBQ dHIsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBMZW5ndGgsDQo+ICsgIElOIENPTlNUIEFD UElfUEFSU0VSKiBQYXJzZXIsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBQYXJzZXJJdGVt cw0KPiArKTsNCj4gKw0KPiArLyoqIFRoaXMgaXMgYSBoZWxwZXIgbWFjcm8gdG8gcGFzcyBwYXJh bWV0ZXJzIHRvIHRoZSBQYXJzZXIgZnVuY3Rpb25zLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFBh cnNlciBUaGUgbmFtZSBvZiB0aGUgQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUNCj4g KyAgICAgICAgICAgICAgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsqLw0KPiArI2RlZmluZSBQQVJT RVJfUEFSQU1TKFBhcnNlcikgUGFyc2VyLCBzaXplb2YgKFBhcnNlcikgLyBzaXplb2YNCj4gKFBh cnNlclswXSkNCj4gKw0KPiArLyoqIFRoaXMgaXMgYSBoZWxwZXIgbWFjcm8gZm9yIGRlc2NyaWJp bmcgdGhlIEFDUEkgaGVhZGVyIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW291dF0gSW5mbyAg UG9pbnRlciB0byByZXRyaWV2ZSB0aGUgQUNQSSB0YWJsZSBoZWFkZXIgaW5mb3JtYXRpb24uDQo+ ICsqLw0KPiArI2RlZmluZSBQQVJTRV9BQ1BJX0hFQURFUihJbmZvKSAgICAgICAgICAgICAgICAg ICBcDQo+ICsgIHsgTCJTaWduYXR1cmUiLCA0LCAwLCBOVUxMLCBEdW1wNENoYXJzLCAgICAgICAg IFwNCj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPlNpZ25hdHVyZSAsIE5VTEwsIE5VTEwgfSwgICAg XA0KPiArICB7IEwiTGVuZ3RoIiwgNCwgNCwgTCIlZCIsIE5VTEwsICAgICAgICAgICAgICAgICBc DQo+ICsgICAgKFZPSUQqKikmKEluZm8pLT5MZW5ndGgsIE5VTEwsIE5VTEwgfSwgICAgICAgIFwN Cj4gKyAgeyBMIlJldmlzaW9uIiwgMSwgOCwgTCIlZCIsIE5VTEwsICAgICAgICAgICAgICAgXA0K PiArICAgIChWT0lEKiopJihJbmZvKS0+UmV2aXNpb24sIE5VTEwsIE5VTEwgfSwgICAgICBcDQo+ ICsgIHsgTCJDaGVja3N1bSIsIDEsIDksIEwiMHglWCIsIE5VTEwsICAgICAgICAgICAgIFwNCj4g KyAgICAoVk9JRCoqKSYoSW5mbyktPkNoZWNrc3VtLCBOVUxMLCBOVUxMIH0sICAgICAgXA0KPiAr ICB7IEwiT2VtIElEIiwgNiwgMTAsIE5VTEwsIER1bXA2Q2hhcnMsICAgICAgICAgICBcDQo+ICsg ICAgKFZPSUQqKikmKEluZm8pLT5PZW1JZCwgTlVMTCwgTlVMTCB9LCAgICAgICAgIFwNCj4gKyAg eyBMIk9lbSBUYWJsZSBJRCIsIDgsIDE2LCBOVUxMLCBEdW1wOENoYXJzLCAgICAgXA0KPiArICAg IChWT0lEKiopJihJbmZvKS0+T2VtVGFibGVJZCwgTlVMTCwgTlVMTCB9LCAgICBcDQo+ICsgIHsg TCJPZW0gUmV2aXNpb24iLCA0LCAyNCwgTCIweCVYIiwgTlVMTCwgICAgICAgIFwNCj4gKyAgICAo Vk9JRCoqKSYoSW5mbyktPk9lbVJldmlzaW9uLCBOVUxMLCBOVUxMIH0sICAgXA0KPiArICB7IEwi Q3JlYXRvciBJRCIsIDQsIDI4LCBOVUxMLCBEdW1wNENoYXJzLCAgICAgICBcDQo+ICsgICAgKFZP SUQqKikmKEluZm8pLT5DcmVhdG9ySWQsIE5VTEwsIE5VTEwgfSwgICAgIFwNCj4gKyAgeyBMIkNy ZWF0b3IgUmV2aXNpb24iLCA0LCAzMiwgTCIweCVYIiwgTlVMTCwgICAgXA0KPiArICAgIChWT0lE KiopJihJbmZvKS0+Q3JlYXRvclJldmlzaW9uLCBOVUxMLCBOVUxMIH0NCj4gKw0KPiArLyoqIExl bmd0aCBvZiB0aGUgQUNQSSBHQVMgc3RydWN0dXJlLg0KPiArDQo+ICsgIE5PVEU6IFRoaXMgbWln aHQgbm9ybWFsbHkgYmUgZGVmaW5lZCBhcw0KPiArICAgICAgICBzaXplb2YgKEVGSV9BQ1BJXzZf Ml9HRU5FUklDX0FERFJFU1NfU1RSVUNUVVJFKS4NCj4gKyAgICAgICAgSG93ZXZlciwgd2UgZGVs aWJlcmF0ZWx5IG1pbmltaXNlIGFueSByZWZlcmVuY2UgdG8gdGhlIEVESzIgQUNQSQ0KPiArICAg ICAgICBoZWFkZXJzIGluIGFuIGF0dGVtcHQgdG8gcHJvdmlkZSBjcm9zcyBjaGVja2luZy4NCj4g KyovDQo+ICsjZGVmaW5lIEdBU19MRU5HVEggICAgICAgICAgICAgICAgICAgICAxMg0KPiArDQo+ ICsvKiogTGVuZ3RoIG9mIHRoZSBBQ1BJIEhlYWRlciBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgTk9U RTogVGhpcyBtaWdodCBub3JtYWxseSBiZSBkZWZpbmVkIGFzDQo+ICsgICAgICAgIHNpemVvZiAo RUZJX0FDUElfREVTQ1JJUFRJT05fSEVBREVSKS4NCj4gKyAgICAgICAgSG93ZXZlciwgd2UgZGVs aWJlcmF0ZWx5IG1pbmltaXNlIGFueSByZWZlcmVuY2UgdG8gdGhlIEVESzIgQUNQSQ0KPiArICAg ICAgICBoZWFkZXJzIGluIGFuIGF0dGVtcHQgdG8gcHJvdmlkZSBjcm9zcyBjaGVja2luZy4NCj4g KyovDQo+ICsjZGVmaW5lIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0xFTkdUSCAgMzYNCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gaW5kZW50cyBhbmQgdHJhY2VzIHRoZSBHQVMgc3RydWN0dXJl IGFzIGRlc2NyaWJlZA0KPiArICAgIGJ5IHRoZSBHYXNQYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFt IFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBA cGFyYW0gW2luXSBJbmRlbnQgIE51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IHRoZSBvdXRwdXQu DQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcEdhc1N0cnVjdCAoDQo+ICsgIElOIFVJTlQ4KiAgICAg ICAgUHRyLA0KPiArICBJTiBVSU5UMzIgICAgICAgIEluZGVudA0KPiArICApOw0KPiArDQo+ICsv KiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEdBUyBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkIGJ5 IHRoZSBHYXNQYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBm b3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0K PiArRHVtcEdhcyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiAr ICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlv biB0cmFjZXMgdGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0aGUNCj4gQWNwaUhlYWRl clBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBvZiBieXRl cyBwYXJzZWQuDQo+ICsqLw0KPiArVUlOVDMyDQo+ICtEdW1wQWNwaUhlYWRlciAoDQo+ICsgIElO IFVJTlQ4KiBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRo ZSBBQ1BJIGhlYWRlciBhcyBkZXNjcmliZWQgYnkgdGhlDQo+IEFjcGlIZWFkZXJQYXJzZXIuDQo+ ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHJldHVybnMgdGhlIFNpZ25hdHVyZSwg TGVuZ3RoIGFuZCByZXZpc2lvbiBvZiB0aGUNCj4gKyAgQUNQSSB0YWJsZS4NCj4gKw0KPiArICBA cGFyYW0gW2luXSAgUHRyICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVy Lg0KPiArICBAcGFyYW0gW291dF0gU2lnbmF0dXJlICBHZXRzIGxvY2F0aW9uIG9mIHRoZSBBQ1BJ IHRhYmxlIHNpZ25hdHVyZS4NCj4gKyAgQHBhcmFtIFtvdXRdIExlbmd0aCAgICAgR2V0cyBsb2Nh dGlvbiBvZiB0aGUgbGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW291dF0g UmV2aXNpb24gICBHZXRzIGxvY2F0aW9uIG9mIHRoZSByZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJs ZS4NCj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJzZWQuDQo+ICsqLw0KPiAr VUlOVDMyDQo+ICtQYXJzZUFjcGlIZWFkZXIgKA0KPiArICBJTiAgVUlOVDgqICAgICAgICAgUHRy LA0KPiArICBPVVQgQ09OU1QgVUlOVDMyKiogU2lnbmF0dXJlLA0KPiArICBPVVQgQ09OU1QgVUlO VDMyKiogTGVuZ3RoLA0KPiArICBPVVQgQ09OU1QgVUlOVDgqKiAgUmV2aXNpb24NCj4gKyAgKTsN Cj4gKw0KPiArI2VuZGlmIC8vIEFDUElQQVJTRVJfSF8NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtn L0luY2x1ZGUvTGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaA0KPiBiL1NoZWxsUGtn L0luY2x1ZGUvTGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaA0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi41MjNlY2Y0MDc1NTY5NGJkOTQ2M2YxNWI4Yg0KPiA2ZDlmMjNmZmFhNTc1NA0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0luY2x1ZGUvTGlicmFyeS9BY3BpVmlldy9B Y3BpVGFibGVQYXJzZXIuaA0KPiBAQCAtMCwwICsxLDEyNiBAQA0KPiArLyoqDQo+ICsgIEhlYWRl ciBmaWxlIGZvciBBQ1BJIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAx NiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QNCj4gTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g IFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0 dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBU SEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFT IElTIg0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9O UyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyoqLw0KPiAr DQo+ICsjaWZuZGVmIEFDUElUQUJMRVBBUlNFUl9IXw0KPiArI2RlZmluZSBBQ1BJVEFCTEVQQVJT RVJfSF8NCj4gKw0KPiArLyoqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBBQ1BJIHRhYmxlIHBhcnNl cnMuDQo+ICsqLw0KPiArI2RlZmluZSBNQVhfQUNQSV9UQUJMRV9QQVJTRVJTICAgICAgICAgIDE2 DQo+ICsNCj4gKy8qKiBBbiBpbnZhbGlkL05VTEwgc2lnbmF0dXJlIHZhbHVlLg0KPiArKi8NCj4g KyNkZWZpbmUgQUNQSV9QQVJTRVJfU0lHTkFUVVJFX05VTEwgICAgICAwDQo+ICsNCj4gKy8qKiBB IGZ1bmN0aW9uIHRoYXQgcGFyc2VzIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEBwYXJhbSBb aW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBv ZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3Ro IG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAg UmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArdHlwZWRlZg0KPiArVk9JRA0K PiArRUZJQVBJDQo+ICsoRUZJQVBJICogUEFSU0VfQUNQSV9UQUJMRV9QUk9DKSAoDQo+ICsgIElO IEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFj cGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICAp Ow0KPiArDQo+ICsvKiogVGhlIEFDUEkgdGFibGUgcGFyc2VyIGluZm9ybWF0aW9uDQo+ICsqLw0K PiArdHlwZWRlZiBzdHJ1Y3QgQWNwaVRhYmxlUGFyc2VyIHsNCj4gKyAgLy8vIEFDUEkgdGFibGUg c2lnbmF0dXJlDQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZTsNCj4gKw0K PiArICAvLy8gVGhlIEFDUEkgdGFibGUgcGFyc2VyIGZ1bmN0aW9uLg0KPiArICBQQVJTRV9BQ1BJ X1RBQkxFX1BST0MgICBQYXJzZXI7DQo+ICt9IEFDUElfVEFCTEVfUEFSU0VSOw0KPiArDQo+ICsv KiogUmVnaXN0ZXIgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlv biByZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5d IFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKyAgQHBhcmFtIFtpbl0g UGFyc2VyUHJvYyAgVGhlIEFDUEkgdGFibGUgcGFyc2VyLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZh bCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4gKyAgQHJl dHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIFRhYmxlDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRo ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiAr RUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtSZWdpc3RlclBhcnNlciAoDQo+ICsgIElOICBVSU5U MzIgICAgICAgICAgICAgICAgICBTaWduYXR1cmUsDQo+ICsgIElOICBQQVJTRV9BQ1BJX1RBQkxF X1BST0MgICBQYXJzZXJQcm9jDQo+ICspOw0KPiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUgQUNQ SSB0YWJsZSBQYXJzZXINCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGRlcmVnaXN0ZXJzIHRoZSBB Q1BJIHRhYmxlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBTaWduYXR1cmUgICBUaGUg QUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgVGhlIHBhcnNlciB3YXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9O T1RfRk9VTkQgICAgICAgICBBIHJlZ2lzdGVyZWQgcGFyc2VyIHdhcyBub3QgZm91bmQuDQo+ICsq Lw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAg SU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZQ0KPiArKTsNCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBBQ1BJIHRhYmxlcy4NCj4gKyAgVGhpcyBmdW5j dGlvbiBjYWxscyBQcm9jZXNzVGFibGVSZXBvcnRPcHRpb25zKCkgdG8gbGlzdCB0aGUgQUNQSQ0K PiArICB0YWJsZXMsIHBlcmZvcm0gYmluYXJ5IGR1bXAgb2YgdGhlIHRhYmxlcyBhbmQgZGV0ZXJt aW5lIGlmIHRoZQ0KPiArICBBQ1BJIGZpZWxkcyBzaG91bGQgYmUgdHJhY2VkLg0KPiArDQo+ICsg IFRoaXMgZnVuY3Rpb24gYWxzbyBpbnZva2VzIHRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIHRhYmxl cy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgYSBSQVcgZHVtcCBvZiB0 aGUgQUNQSSB0YWJsZSBpbmNsdWRpbmcNCj4gKyAgdGhlIHVua25vd24vdW5wYXJzZWQgQUNQSSB0 YWJsZXMgYW5kIHZhbGlkYXRlcyB0aGUgY2hlY2tzdW0uDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBBQ1BJDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZSBkYXRhIGJ1ZmZlci4NCj4gKyov DQo+ICtWT0lEDQo+ICtQcm9jZXNzQWNwaVRhYmxlICgNCj4gKyAgSU4gVUlOVDgqIFB0cg0KPiAr ICApOw0KPiArDQo+ICsvKiogR2V0IHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiArDQo+ICsgIFRo aXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIgcHJvYyBmcm9tIHRoZSBs aXN0IG9mDQo+ICsgIHJlZ2lzdGVyZWQgcGFyc2Vycy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAg U2lnbmF0dXJlICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiArICBAcGFyYW0gW291dF0g UGFyc2VyUHJvYyAgUG9pbnRlciB0byBhIEFDUEkgdGFibGUgcGFyc2VyIHByb2MuDQo+ICsNCj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciB3YXMgcmV0dXJuZWQg c3VjY2Vzc2Z1bGx5Lg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFt ZXRlciBpcyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBBIHJl Z2lzdGVyZWQgcGFyc2VyIHdhcyBub3QgZm91bmQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiAr RUZJQVBJDQo+ICtHZXRQYXJzZXIgKA0KPiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAg IFNpZ25hdHVyZSwNCj4gKyAgT1VUIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAqICBQYXJzZXJQcm9j DQo+ICsgICk7DQo+ICsNCj4gKyNlbmRpZiAvLyBBQ1BJVEFCTEVQQVJTRVJfSF8NCj4gZGlmZiAt LWdpdCBhL1NoZWxsUGtnL0luY2x1ZGUvTGlicmFyeS9BY3BpVmlldy9BY3BpVmlldy5oDQo+IGIv U2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlWaWV3LmgNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uZWExYTM2MTljZDE4ZjZiOWY4MTdhODcxNGYNCj4gZjhmMjYwZTAzZDA4MmUNCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcv QWNwaVZpZXcuaA0KPiBAQCAtMCwwICsxLDcxIEBADQo+ICsvKioNCj4gKyAgSGVhZGVyIGZpbGUg Zm9yIEFjcGlWaWV3DQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExp bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBv ZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uu b3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJ U1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0K PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgQUNQ SVZJRVdfSF8NCj4gKyNkZWZpbmUgQUNQSVZJRVdfSF8NCj4gKw0KPiArLyoqIEEgbWFjcm8gdG8g ZGVmaW5lIHRoZSBtYXggZmlsZSBuYW1lIGxlbmd0aA0KPiArKi8NCj4gKyNkZWZpbmUgTUFYX0ZJ TEVfTkFNRV9MRU4gICAgMTI4DQo+ICsNCj4gKy8qKiBPZmZzZXQgdG8gdGhlIFJTRFAgcmV2aXNp b24gZnJvbSB0aGUgc3RhcnQgb2YgdGhlIFJTRFANCj4gKyovDQo+ICsjZGVmaW5lIFJTRFBfUkVW SVNJT05fT0ZGU0VUIDE1DQo+ICsNCj4gKy8qKiBPZmZzZXQgdG8gdGhlIFJTRFAgbGVuZ3RoIGZy b20gdGhlIHN0YXJ0IG9mIHRoZSBSU0RQDQo+ICsqLw0KPiArI2RlZmluZSBSU0RQX0xFTkdUSF9P RkZTRVQgICAyMA0KPiArDQo+ICsvKiogVGhlIEVSRVBPUlRfT1BUSU9OIGVudW0gZGVzY3JpYmVz IEFDUEkgdGFibGUgUmVwb3J0aW5nIG9wdGlvbnMuDQo+ICsqLw0KPiArdHlwZWRlZiBlbnVtIFJl cG9ydE9wdGlvbiB7DQo+ICsgIEVSRVBPUlRfQUxMLCAgICAgICAgICAgIC8vLzwgUmVwb3J0IEFs bCB0YWJsZXMuDQo+ICsgIEVSRVBPUlRfU0VMRUNURUQsICAgICAgIC8vLzwgUmVwb3J0IFNlbGVj dGVkIHRhYmxlLg0KPiArICBFUkVQT1JUX1RBQkxFX0xJU1QsICAgICAvLy88IFJlcG9ydCBMaXN0 IG9mIHRhYmxlcy4NCj4gKyAgRVJFUE9SVF9EVU1QX0JJTl9GSUxFLCAgLy8vPCBEdW1wIHNlbGVj dGVkIHRhYmxlIHRvIGEgZmlsZS4NCj4gKyAgRVJFUE9SVF9NQVgNCj4gK30gRVJFUE9SVF9PUFRJ T047DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbG91ciBoaWdobGln aHRpbmcgc3RhdHVzLg0KPiArDQo+ICsgIEByZXR2YWwgVFJVRSBpZiBjb2xvdXIgaGlnaGxpZ2h0 aW5nIGlzIGVuYWJsZWQuDQo+ICsqLw0KPiArQk9PTEVBTg0KPiArR2V0Q29sb3VySGlnaGxpZ2h0 aW5nICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBzZXRz IHRoZSBjb2xvdXIgaGlnaGxpZ2h0aW5nIHN0YXR1cy4NCj4gKw0KPiArKi8NCj4gK1ZPSUQNCj4g K1NldENvbG91ckhpZ2hsaWdodGluZyAoDQo+ICsgIEJPT0xFQU4gSGlnaGxpZ2h0DQo+ICsgICk7 DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgdGFibGUgcmVwb3J0aW5n IG9wdGlvbnMgZm9yIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFNpZ25h dHVyZSBUaGUgQUNQSSB0YWJsZSBTaWduYXR1cmUuDQo+ICsgIEBwYXJhbSBbaW5dIFRhYmxlUHRy ICBQb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0 aCAgICBUaGUgbGVuZ3RoIGZvIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgUmV0 dXJucyBUUlVFIGlmIHRoZSBBQ1BJIHRhYmxlIHNob3VsZCBiZSB0cmFjZWQuDQo+ICsqLw0KPiAr Qk9PTEVBTg0KPiArUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucyAoDQo+ICsgIElOIENPTlNUIFVJ TlQzMiAgU2lnbmF0dXJlLA0KPiArICBJTiBDT05TVCBVSU5UOCogIFRhYmxlUHRyLA0KPiArICBJ TiBDT05TVCBVSU5UMzIgIExlbmd0aA0KPiArICApOw0KPiArDQo+ICsjZW5kaWYgLy8gQUNQSVZJ RVdfSF8NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL0FjcGlWaWV3LmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9BY3BpVmlldy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4OGI1YzRlNTc3 NTJjMDA5Mjk4NGUxNGY0DQo+IDU2MmZkMjI3ZmYxYzJlDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcu Yw0KPiBAQCAtMCwwICsxLDYwMSBAQA0KPiArLyoqDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAy MDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2Vk IGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl IEJTRA0KPiBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9u LiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAg aHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsg IFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAi QVMgSVMiDQo+IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJ T05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArKiovDQo+ ICsNCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9TaGVsbExpYi5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0K PiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNw aVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9B Y3BpVmlldy5oPg0KPiArI2luY2x1ZGUgIlVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oIg0K PiArDQo+ICtFRklfSElJX0hBTkRMRSBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IE5VTEw7DQo+ ICsNCj4gKy8vIFJlcG9ydCB2YXJpYWJsZXMNCj4gK1NUQVRJQyBVSU5UMzIgICAgICAgICAgICAg bVNlbGVjdGVkQWNwaVRhYmxlOw0KPiArU1RBVElDIENPTlNUIENIQVIxNiogICAgICBtU2VsZWN0 ZWRBY3BpVGFibGVOYW1lOw0KPiArU1RBVElDIEJPT0xFQU4gICAgICAgICAgICBtU2VsZWN0ZWRB Y3BpVGFibGVGb3VuZDsNCj4gK1NUQVRJQyBFUkVQT1JUX09QVElPTiAgICAgbVJlcG9ydFR5cGU7 DQo+ICtTVEFUSUMgVUlOVDMyICAgICAgICAgICAgIG1UYWJsZUNvdW50Ow0KPiArU1RBVElDIFVJ TlQzMiAgICAgICAgICAgICBtQmluVGFibGVDb3VudDsNCj4gK1NUQVRJQyBCT09MRUFOICAgICAg ICAgICAgbVZlcmJvc2U7DQo+ICtTVEFUSUMgQk9PTEVBTiAgICAgICAgICAgIG1Db25zaXN0ZW5j eUNoZWNrOw0KPiArU1RBVElDIEJPT0xFQU4gICAgICAgICAgICBtQ29sb3VySGlnaGxpZ2h0aW5n Ow0KPiArDQo+ICsvKiogQW4gYXJyYXkgb2YgYWNwaXZpZXcgY29tbWFuZCBsaW5lIHBhcmFtZXRl cnMuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIFNIRUxMX1BBUkFNX0lURU0gUGFyYW1MaXN0W10g PSB7DQo+ICsgIHtMIi8/IiwgVHlwZUZsYWd9LA0KPiArICB7TCItYyIsIFR5cGVGbGFnfSwNCj4g KyAge0wiLWQiLCBUeXBlRmxhZ30sDQo+ICsgIHtMIi1oIiwgVHlwZVZhbHVlfSwNCj4gKyAge0wi LWwiLCBUeXBlRmxhZ30sDQo+ICsgIHtMIi1zIiwgVHlwZVZhbHVlfSwNCj4gKyAge0wiLXYiLCBU eXBlRmxhZ30sDQo+ICsgIHtOVUxMLCBUeXBlTWF4fQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gcmV0dXJucyB0aGUgY29sb3VyIGhpZ2hsaWdodGluZyBzdGF0dXMuDQo+ICsNCj4g KyAgQHJldHZhbCBUUlVFIGlmIGNvbG91ciBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZC4NCj4gKyov DQo+ICtCT09MRUFODQo+ICtHZXRDb2xvdXJIaWdobGlnaHRpbmcgKA0KPiArICBWT0lEDQo+ICsg ICkNCj4gK3sNCj4gKyAgcmV0dXJuIG1Db2xvdXJIaWdobGlnaHRpbmc7DQo+ICt9DQo+ICsNCj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGNvbG91ciBoaWdobGlnaHRpbmcgc3RhdHVzLg0K PiArDQo+ICsqLw0KPiArVk9JRA0KPiArU2V0Q29sb3VySGlnaGxpZ2h0aW5nICgNCj4gKyAgQk9P TEVBTiBIaWdobGlnaHQNCj4gKyAgKQ0KPiArew0KPiArICBtQ29sb3VySGlnaGxpZ2h0aW5nID0g SGlnaGxpZ2h0Ow0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBy ZXBvcnQgb3B0aW9ucy4NCj4gKw0KPiArICBAcmV0dmFsIFJldHVybnMgdGhlIHJlcG9ydCBvcHRp b24uDQo+ICsqLw0KPiArU1RBVElDDQo+ICtFUkVQT1JUX09QVElPTg0KPiArR2V0UmVwb3J0T3B0 aW9uICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBtUmVwb3J0VHlwZTsN Cj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2VsZWN0ZWQgQUNQ SSB0YWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIFJldHVybnMgc2lnbmF0dXJlIG9mIHRoZSBzZWxl Y3RlZCBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVUlOVDMyDQo+ICtHZXRTZWxl Y3RlZEFjcGlUYWJsZSAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gbVNl bGVjdGVkQWNwaVRhYmxlOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBkdW1wcyB0 aGUgQUNQSSB0YWJsZSB0byBhIGZpbGUuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICBQb2lu dGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICBU aGUgbGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgVFJVRSAgICAg ICAgICBTdWNjZXNzLg0KPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgRmFpbHVyZS4NCj4gKyov DQo+ICtTVEFUSUMNCj4gK0JPT0xFQU4NCj4gK0R1bXBBY3BpVGFibGVUb0ZpbGUgKA0KPiArICBJ TiBDT05TVCBVSU5UOCogIFB0ciwNCj4gKyAgSU4gQ09OU1QgVUlOVE4gICBMZW5ndGgNCj4gKyAg KQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgU3RhdHVzOw0KPiArICBDSEFSMTYgICAg ICAgICAgICAgRmlsZU5hbWVCdWZmZXJbTUFYX0ZJTEVfTkFNRV9MRU5dOw0KPiArICBTSEVMTF9G SUxFX0hBTkRMRSAgRHVtcEZpbGVIYW5kbGUgPSBOVUxMOw0KPiArICBVSU5UTiAgICAgICAgICAg ICAgVHJhbnNmZXJCeXRlcyA9IExlbmd0aDsNCj4gKw0KPiArICBVbmljb2RlU1ByaW50ICgNCj4g KyAgICBGaWxlTmFtZUJ1ZmZlciwNCj4gKyAgICBzaXplb2YgKEZpbGVOYW1lQnVmZmVyKSwNCj4g KyAgICBMIi5cXCVzJTA0ZC5iaW4iLA0KPiArICAgIG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUsDQo+ ICsgICAgbUJpblRhYmxlQ291bnQrKw0KPiArICAgICk7DQo+ICsNCj4gKyAgU3RhdHVzID0gU2hl bGxPcGVuRmlsZUJ5TmFtZSAoDQo+ICsgICAgICAgICAgICAgRmlsZU5hbWVCdWZmZXIsDQo+ICsg ICAgICAgICAgICAgJkR1bXBGaWxlSGFuZGxlLA0KPiArICAgICAgICAgICAgIEVGSV9GSUxFX01P REVfUkVBRCB8IEVGSV9GSUxFX01PREVfV1JJVEUgfA0KPiBFRklfRklMRV9NT0RFX0NSRUFURSwN Cj4gKyAgICAgICAgICAgICAwDQo+ICsgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiArICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ICsgICAgICAtMSwNCj4g KyAgICAgIC0xLA0KPiArICAgICAgTlVMTCwNCj4gKyAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dF Tl9SRUFET05MWV9NRURJQSksDQo+ICsgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4g KyAgICAgIEwiYWNwaXZpZXciDQo+ICsgICAgICApOw0KPiArICAgIHJldHVybiBGQUxTRTsNCj4g KyAgfQ0KPiArDQo+ICsgIFByaW50IChMIkR1bXBpbmcgQUNQSSB0YWJsZSB0byA6ICVzIC4uLiAi LCBGaWxlTmFtZUJ1ZmZlcik7DQo+ICsNCj4gKyAgU3RhdHVzID0gU2hlbGxXcml0ZUZpbGUgKA0K PiArICAgICAgICAgICAgIER1bXBGaWxlSGFuZGxlLA0KPiArICAgICAgICAgICAgICZUcmFuc2Zl ckJ5dGVzLA0KPiArICAgICAgICAgICAgIChWT0lEKilQdHINCj4gKyAgICAgICAgICAgICApOw0K PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgUHJpbnQgKEwiRVJST1I6IEZh aWxlZCB0byBkdW1wIHRhYmxlIHRvIGJpbmFyeSBmaWxlLlxuIik7DQo+ICsgICAgVHJhbnNmZXJC eXRlcyA9IDA7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgUHJpbnQgKEwiRE9ORS5cbiIpOw0KPiAr ICB9DQo+ICsNCj4gKyAgU2hlbGxDbG9zZUZpbGUgKCZEdW1wRmlsZUhhbmRsZSk7DQo+ICsgIHJl dHVybiAoTGVuZ3RoID09IFRyYW5zZmVyQnl0ZXMpOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBm dW5jdGlvbiBwcm9jZXNzZXMgdGhlIHRhYmxlIHJlcG9ydGluZyBvcHRpb25zIGZvciB0aGUgQUNQ SSB0YWJsZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBTaWduYXR1cmUgVGhlIEFDUEkgdGFibGUg U2lnbmF0dXJlLg0KPiArICBAcGFyYW0gW2luXSBUYWJsZVB0ciAgUG9pbnRlciB0byB0aGUgQUNQ SSB0YWJsZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgVGhlIGxlbmd0aCBmbyB0 aGUgQUNQSSB0YWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIFJldHVybnMgVFJVRSBpZiB0aGUgQUNQ SSB0YWJsZSBzaG91bGQgYmUgdHJhY2VkLg0KPiArKi8NCj4gK0JPT0xFQU4NCj4gK1Byb2Nlc3NU YWJsZVJlcG9ydE9wdGlvbnMgKA0KPiArICBJTiBDT05TVCBVSU5UMzIgIFNpZ25hdHVyZSwNCj4g KyAgSU4gQ09OU1QgVUlOVDgqICBUYWJsZVB0ciwNCj4gKyAgSU4gQ09OU1QgVUlOVDMyICBMZW5n dGgNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UTiAgIE9yaWdpbmFsQXR0cmlidXRlOw0KPiArICBV SU5UOCogIFNpZ25hdHVyZVB0ciA9IChVSU5UOCopKFVJTlROKSZTaWduYXR1cmU7DQo+ICsgIEJP T0xFQU4gTG9nID0gRkFMU0U7DQo+ICsgIEJPT0xFQU4gSGlnaExpZ2h0ID0gR2V0Q29sb3VySGln aGxpZ2h0aW5nICgpOw0KPiArICBzd2l0Y2ggKEdldFJlcG9ydE9wdGlvbiAoKSkgew0KPiArICAg IGNhc2UgRVJFUE9SVF9BTEw6DQo+ICsgICAgICBMb2cgPSBUUlVFOw0KPiArICAgICAgYnJlYWs7 DQo+ICsgICAgY2FzZSBFUkVQT1JUX1NFTEVDVEVEOg0KPiArICAgICAgaWYgKFNpZ25hdHVyZSA9 PSBHZXRTZWxlY3RlZEFjcGlUYWJsZSAoKSkgew0KPiArICAgICAgICBMb2cgPSBUUlVFOw0KPiAr ICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVGb3VuZCA9IFRSVUU7DQo+ICsgICAgICB9DQo+ICsg ICAgICBicmVhazsNCj4gKyAgICBjYXNlIEVSRVBPUlRfVEFCTEVfTElTVDoNCj4gKyAgICAgIGlm IChtVGFibGVDb3VudCA9PSAwKSB7DQo+ICsgICAgICAgIGlmIChIaWdoTGlnaHQpIHsNCj4gKyAg ICAgICAgICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7 DQo+ICsgICAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgZ1NULT5Db25PdXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg RUZJX1RFWFRfQVRUUihFRklfQ1lBTiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgo T3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICk7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgICAgUHJpbnQgKEwiXG5JbnN0 YWxsZWQgVGFibGUocyk6XG4iKTsNCj4gKyAgICAgICAgaWYgKEhpZ2hMaWdodCkgew0KPiArICAg ICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0 dHJpYnV0ZSk7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgIH0NCj4gKyAgICAgIFByaW50ICgNCj4g KyAgICAgICAgTCJcdCU0ZC4gJWMlYyVjJWNcbiIsDQo+ICsgICAgICAgICsrbVRhYmxlQ291bnQs DQo+ICsgICAgICAgIFNpZ25hdHVyZVB0clswXSwNCj4gKyAgICAgICAgU2lnbmF0dXJlUHRyWzFd LA0KPiArICAgICAgICBTaWduYXR1cmVQdHJbMl0sDQo+ICsgICAgICAgIFNpZ25hdHVyZVB0clsz XQ0KPiArICAgICAgICApOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgY2FzZSBFUkVQT1JUX0RV TVBfQklOX0ZJTEU6DQo+ICsgICAgICBpZiAoU2lnbmF0dXJlID09IEdldFNlbGVjdGVkQWNwaVRh YmxlICgpKSB7DQo+ICsgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kID0gVFJVRTsNCj4g KyAgICAgICAgRHVtcEFjcGlUYWJsZVRvRmlsZSAoVGFibGVQdHIsIExlbmd0aCk7DQo+ICsgICAg ICB9DQo+ICsgICAgICBicmVhazsNCj4gKyAgICBjYXNlIEVSRVBPUlRfTUFYOg0KPiArICAgICAg Ly8gV2Ugc2hvdWxkIG5ldmVyIGJlIGhlcmUuDQo+ICsgICAgICAvLyBUaGlzIGNhc2UgaXMgb25s eSBwcmVzZW50IHRvIHByZXZlbnQgY29tcGlsZXIgd2FybmluZy4NCj4gKyAgICAgIGJyZWFrOw0K PiArICB9IC8vIHN3aXRjaA0KPiArDQo+ICsgIGlmIChMb2cpIHsNCj4gKyAgICBpZiAoSGlnaExp Z2h0KSB7DQo+ICsgICAgICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5B dHRyaWJ1dGU7DQo+ICsgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlICgNCj4gKyAgICAg ICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiArICAgICAgICAgICAgICAgICAgICAgRUZJ X1RFWFRfQVRUUihFRklfTElHSFRCTFVFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAoKE9y aWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikpPj40KSkNCj4gKyAgICAgICAgICAgICAg ICAgICAgICk7DQo+ICsgICAgfQ0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5cbiAtLS0t LS0tLS0tLS0tLS0gJWMlYyVjJWMgVGFibGUgLS0tLS0tLS0tLS0tLS0tIFxuXG4iLA0KPiArICAg ICAgU2lnbmF0dXJlUHRyWzBdLA0KPiArICAgICAgU2lnbmF0dXJlUHRyWzFdLA0KPiArICAgICAg U2lnbmF0dXJlUHRyWzJdLA0KPiArICAgICAgU2lnbmF0dXJlUHRyWzNdDQo+ICsgICAgICApOw0K PiArICAgIGlmIChIaWdoTGlnaHQpIHsNCj4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1 dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ICsgICAgfQ0KPiArICB9DQo+ ICsNCj4gKyAgcmV0dXJuIExvZzsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gY29u dmVydHMgYSBzdHJpbmcgdG8gQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ICsNCj4gKyAgQHBhcmFt IFtpbl0gU3RyICAgUG9pbnRlciB0byB0aGUgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZCB0byB0aGUN Cj4gKyAgICAgICAgICAgICAgICAgICAgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ICsNCj4gKyAg QHJldHZhbCBUaGUgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtV SU5UMzINCj4gK0NvbnZlcnRTdHJUb0FjcGlTaWduYXR1cmUgKA0KPiArICBJTiAgQ09OU1QgQ0hB UjE2KiBTdHINCj4gKyAgKQ0KPiArew0KPiArICBVSU5UOCBJbmRleCA9IDA7DQo+ICsgIENIQVI4 IFB0cls0XTsNCj4gKw0KPiArICAvLyBDb252ZXJ0IHRvIFVwcGVyIGNhc2UgYW5kIGNvbnZlcnQg dG8gQVNDSUkNCj4gKyAgd2hpbGUgKChJbmRleCA8IDQpICYmIChTdHJbSW5kZXhdICE9IDApKSB7 DQo+ICsgICAgaWYgKFN0cltJbmRleF0gPj0gTCdhJyAmJiBTdHJbSW5kZXhdIDw9IEwneicpIHsN Cj4gKyAgICAgIFB0cltJbmRleF0gPSAoQ0hBUjgpKFN0cltJbmRleF0gLSAoTCdhJyAtIEwnQScp KTsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgUHRyW0luZGV4XSA9IChDSEFSOClTdHJbSW5k ZXhdOw0KPiArICAgIH0NCj4gKyAgICBJbmRleCsrOw0KPiArICB9DQo+ICsgIHJldHVybiAqKFVJ TlQzMiopUHRyOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBpdGVyYXRlcyB0aGUg Y29uZmlndXJhdGlvbiB0YWJsZSBlbnRyaWVzIGluIHRoZQ0KPiArICAgIHN5c3RlbSB0YWJsZSwg cmV0cmlldmVzIHRoZSBSU0RQIHBvaW50ZXIgYW5kIHN0YXJ0cyBwYXJzaW5nDQo+ICsgICAgdGhl IEFDUEkgdGFibGVzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFN5c3RlbVRhYmxlIFBvaW50ZXIg dG8gdGhlIEVGSSBzeXN0ZW0gdGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5zIEVGSV9O T1RfRk9VTkQgICBpZiB0aGUgUlNEUCBwb2ludGVyIGlzIG5vdCBmb3VuZC4NCj4gKyAgICAgICAg ICBSZXR1cm5zIEVGSV9VTlNVUFBPUlRFRCBpZiB0aGUgUlNEUCB2ZXJzaW9uIGlzIGxlc3MgdGhh biAyLg0KPiArICAgICAgICAgIFJldHVybnMgRUZJX1NVQ0NFU1MgICAgIGlmIHN1Y2Nlc3NmdWwu DQo+ICsqLw0KPiArU1RBVElDDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0FjcGlWaWV3 ICgNCj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSogU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0K PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgU3RhdHVzOw0KPiArICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgSW5kZXg7DQo+ICsgIEVGSV9DT05GSUdVUkFUSU9OX1RBQkxFKiBFZmlDb25m aWd1cmF0aW9uVGFibGU7DQo+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICBGb3VuZEFjcGlU YWJsZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgIE9yaWdpbmFsQXR0cmlidXRlOw0K PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgUHJpbnRBdHRyaWJ1dGU7DQo+ICsgIEVSRVBP UlRfT1BUSU9OICAgICAgICAgICBSZXBvcnRPcHRpb247DQo+ICsgIFVJTlQ4KiAgICAgICAgICAg ICAgICAgICBSc2RwUHRyOw0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgUnNkcExlbmd0 aDsNCj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgIFJzZHBSZXZpc2lvbjsNCj4gKyAgUEFS U0VfQUNQSV9UQUJMRV9QUk9DICAgIFJzZHBQYXJzZXJQcm9jOw0KPiArICBCT09MRUFOICAgICAg ICAgICAgICAgICAgVHJhY2U7DQo+ICsNCj4gKyAgLy8gU2VhcmNoIHRoZSB0YWJsZSBmb3IgYW4g ZW50cnkgdGhhdCBtYXRjaGVzIHRoZSBBQ1BJIFRhYmxlIEd1aWQNCj4gKyAgRm91bmRBY3BpVGFi bGUgPSBGQUxTRTsNCj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgU3lzdGVtVGFibGUtPk51 bWJlck9mVGFibGVFbnRyaWVzOyBJbmRleCsrKSB7DQo+ICsgICAgaWYgKENvbXBhcmVHdWlkICgm Z0VmaUFjcGlUYWJsZUd1aWQsDQo+ICsgICAgICAgICAgJihTeXN0ZW1UYWJsZS0+Q29uZmlndXJh dGlvblRhYmxlW0luZGV4XS5WZW5kb3JHdWlkKSkpIHsNCj4gKyAgICAgIEVmaUNvbmZpZ3VyYXRp b25UYWJsZSA9ICZTeXN0ZW1UYWJsZS0+Q29uZmlndXJhdGlvblRhYmxlW0luZGV4XTsNCj4gKyAg ICAgIEZvdW5kQWNwaVRhYmxlID0gVFJVRTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4g KyAgfQ0KPiArDQo+ICsgIGlmIChGb3VuZEFjcGlUYWJsZSkgew0KPiArICAgIFJzZHBQdHIgPSAo VUlOVDgqKUVmaUNvbmZpZ3VyYXRpb25UYWJsZS0+VmVuZG9yVGFibGU7DQo+ICsNCj4gKyAgICAv LyBUaGUgUlNEUCByZXZpc2lvbiBpcyAxIGJ5dGUgc3RhcnRpbmcgYXQgb2Zmc2V0IDE1DQo+ICsg ICAgUnNkcFJldmlzaW9uID0gKihSc2RwUHRyICsgUlNEUF9SRVZJU0lPTl9PRkZTRVQpOw0KPiAr DQo+ICsgICAgaWYgKFJzZHBSZXZpc2lvbiA8IDIpIHsNCj4gKyAgICAgIFByaW50ICgNCj4gKyAg ICAgICAgTCJFUlJPUjogUlNEUCB2ZXJzaW9uIGxlc3MgdGhhbiAyIGlzIG5vdCBzdXBwb3J0ZWQu XG4iDQo+ICsgICAgICAgICk7DQo+ICsgICAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiAr ICAgIH0NCj4gKw0KPiArICAgIC8vIFRoZSBSU0RQIGxlbmd0aCBpcyA0IGJ5dGVzIHN0YXJ0aW5n IGF0IG9mZnNldCAyMA0KPiArICAgIFJzZHBMZW5ndGggPSAqKFVJTlQzMiopKFJzZHBQdHIgKyBS U0RQX0xFTkdUSF9PRkZTRVQpOw0KPiArDQo+ICsgICAgVHJhY2UgPSBQcm9jZXNzVGFibGVSZXBv cnRPcHRpb25zIChSU0RQX1RBQkxFX0lORk8sIFJzZHBQdHIsDQo+IFJzZHBMZW5ndGgpOw0KPiAr DQo+ICsgICAgU3RhdHVzID0gR2V0UGFyc2VyIChSU0RQX1RBQkxFX0lORk8sICZSc2RwUGFyc2Vy UHJvYyk7DQo+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgUHJpbnQg KA0KPiArICAgICAgICBMIkVSUk9SOiBObyByZWdpc3RlcmVkIHBhcnNlciBmb3VuZCBmb3IgUlNE UC5cbiINCj4gKyAgICAgICAgKTsNCj4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ICsgICAgfQ0K PiArDQo+ICsgICAgUnNkcFBhcnNlclByb2MgKA0KPiArICAgICAgVHJhY2UsDQo+ICsgICAgICBS c2RwUHRyLA0KPiArICAgICAgUnNkcExlbmd0aCwNCj4gKyAgICAgIFJzZHBSZXZpc2lvbg0KPiAr ICAgICAgKTsNCj4gKw0KPiArICB9IGVsc2Ugew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQg KCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJFUlJPUjogRmFpbGVkIHRvIGZpbmQgQUNQ SSBUYWJsZSBHdWlkIGluIFN5c3RlbSBDb25maWd1cmF0aW9uDQo+IFRhYmxlLlxuIg0KPiArICAg ICAgKTsNCj4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gKyAgfQ0KPiArDQo+ICsgIFJl cG9ydE9wdGlvbiA9IEdldFJlcG9ydE9wdGlvbiAoKTsNCj4gKyAgaWYgKEVSRVBPUlRfVEFCTEVf TElTVCAhPSBSZXBvcnRPcHRpb24pIHsNCj4gKyAgICBpZiAoKChFUkVQT1JUX1NFTEVDVEVEID09 IFJlcG9ydE9wdGlvbikgIHx8DQo+ICsgICAgICAgICAoRVJFUE9SVF9EVU1QX0JJTl9GSUxFID09 IFJlcG9ydE9wdGlvbikpICYmDQo+ICsgICAgICAgICghbVNlbGVjdGVkQWNwaVRhYmxlRm91bmQp KSB7DQo+ICsgICAgICBQcmludCAoTCJcblJlcXVlc3RlZCBBQ1BJIFRhYmxlIG5vdCBmb3VuZC5c biIpOw0KPiArICAgIH0gZWxzZSBpZiAoRVJFUE9SVF9EVU1QX0JJTl9GSUxFICE9IFJlcG9ydE9w dGlvbikgew0KPiArICAgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91dC0+TW9kZS0+ QXR0cmlidXRlOw0KPiArDQo+ICsgICAgICBQcmludCAoTCJcblRhYmxlIFN0YXRpc3RpY3M6XG4i KTsNCj4gKw0KPiArICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkgew0KPiArICAg ICAgICBQcmludEF0dHJpYnV0ZSA9IChHZXRFcnJvckNvdW50ICgpID4gMCkgPw0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIgKA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRUZJX1JFRCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApIDoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBP cmlnaW5hbEF0dHJpYnV0ZTsNCj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAo Z1NULT5Db25PdXQsIFByaW50QXR0cmlidXRlKTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIFByaW50 IChMIlx0JWQgRXJyb3IocylcbiIsIEdldEVycm9yQ291bnQgKCkpOw0KPiArDQo+ICsgICAgICBp ZiAoR2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpKSB7DQo+ICsgICAgICAgIFByaW50QXR0cmlidXRl ID0gKEdldFdhcm5pbmdDb3VudCAoKSA+IDApID8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFRklfVEVYVF9BVFRSICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVG SV9SRUQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdpbmFsQXR0cmli dXRlJihCSVQ0fEJJVDV8QklUNikpPj40KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKSA6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JpZ2luYWxBdHRyaWJ1dGU7 DQo+ICsNCj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25PdXQs IFByaW50QXR0cmlidXRlKTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIFByaW50IChMIlx0JWQgV2Fy bmluZyhzKVxuIiwgR2V0V2FybmluZ0NvdW50ICgpKTsNCj4gKw0KPiArICAgICAgaWYgKEdldENv bG91ckhpZ2hsaWdodGluZyAoKSkgew0KPiArICAgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmli dXRlIChnU1QtPkNvbk91dCwgT3JpZ2luYWxBdHRyaWJ1dGUpOw0KPiArICAgICAgfQ0KPiArICAg IH0NCj4gKyAgfQ0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ICsNCj4gKy8qKg0K PiArICBGdW5jdGlvbiBmb3IgJ2FjcGl2aWV3JyBjb21tYW5kLg0KPiArDQo+ICsgIEBwYXJhbVtp bl0gSW1hZ2VIYW5kbGUgIEhhbmRsZSB0byB0aGUgSW1hZ2UgKE5VTEwgaWYgSW50ZXJuYWwpLg0K PiArICBAcGFyYW1baW5dIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUg KE5VTEwgaWYgSW50ZXJuYWwpLg0KPiArKi8NCj4gK1NIRUxMX1NUQVRVUw0KPiArRUZJQVBJDQo+ ICtTaGVsbENvbW1hbmRSdW5BY3BpVmlldyAoDQo+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgIElt YWdlSGFuZGxlLA0KPiArICBJTiBFRklfU1lTVEVNX1RBQkxFKiBTeXN0ZW1UYWJsZQ0KPiArICAp DQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICBTdGF0dXM7DQo+ICsgIFNIRUxMX1NUQVRV UyAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX1NVQ0NFU1M7DQo+ICsgIExJU1RfRU5UUlkqICAg ICAgICBQYWNrYWdlID0gTlVMTDsNCj4gKyAgQ0hBUjE2KiAgICAgICAgICAgIFByb2JsZW1QYXJh bTsNCj4gKyAgQ09OU1QgQ0hBUjE2KiAgICAgIFRlbXA7DQo+ICsgIENIQVI4ICAgICAgICAgICAg ICBDb2xvdXJPcHRpb25bOF07DQo+ICsgIFNIRUxMX0ZJTEVfSEFORExFICBUbXBEdW1wRmlsZUhh bmRsZSA9IE5VTEw7DQo+ICsNCj4gKyAgLy8gU2V0IERlZmF1bHRzDQo+ICsgIG1SZXBvcnRUeXBl ID0gRVJFUE9SVF9BTEw7DQo+ICsgIG1UYWJsZUNvdW50ID0gMDsNCj4gKyAgbUJpblRhYmxlQ291 bnQgPSAwOw0KPiArICBtU2VsZWN0ZWRBY3BpVGFibGUgPSAwOw0KPiArICBtU2VsZWN0ZWRBY3Bp VGFibGVOYW1lID0gTlVMTDsNCj4gKyAgbVNlbGVjdGVkQWNwaVRhYmxlRm91bmQgPSBGQUxTRTsN Cj4gKyAgbVZlcmJvc2UgPSBUUlVFOw0KPiArICBtQ29uc2lzdGVuY3lDaGVjayA9IFRSVUU7DQo+ ICsNCj4gKyAgLy8gUmVzZXQgVGhlIGVycm9yL3dhcm5pbmcgY291bnRlcnMNCj4gKyAgUmVzZXRF cnJvckNvdW50ICgpOw0KPiArICBSZXNldFdhcm5pbmdDb3VudCAoKTsNCj4gKw0KPiArICBTdGF0 dXMgPSBTaGVsbENvbW1hbmRMaW5lUGFyc2UgKFBhcmFtTGlzdCwgJlBhY2thZ2UsICZQcm9ibGVt UGFyYW0sDQo+IFRSVUUpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAg aWYgKFN0YXR1cyA9PSBFRklfVk9MVU1FX0NPUlJVUFRFRCAmJiBQcm9ibGVtUGFyYW0gIT0gTlVM TCkgew0KPiArICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgLTEsDQo+ICsgICAg ICAgIC0xLA0KPiArICAgICAgICBOVUxMLA0KPiArICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9H RU5fUFJPQkxFTSksDQo+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAg ICAgICBMImFjcGl2aWV3IiwNCj4gKyAgICAgICAgUHJvYmxlbVBhcmFtDQo+ICsgICAgICAgICk7 DQo+ICsgICAgICBGcmVlUG9vbCAoUHJvYmxlbVBhcmFtKTsNCj4gKyAgICB9IGVsc2Ugew0KPiAr ICAgICAgUHJpbnQgKEwiYWNwaXZpZXc6IEVycm9yIHByb2Nlc3NpbmcgaW5wdXQgcGFyYW1ldGVy KHMpXG4iKTsNCj4gKyAgICB9DQo+ICsgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BB UkFNRVRFUjsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBpZiAoU2hlbGxDb21tYW5kTGluZUdldENv dW50IChQYWNrYWdlKSA+IDEpIHsNCj4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ICsgICAg ICAgIC0xLA0KPiArICAgICAgICAtMSwNCj4gKyAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgU1RS SU5HX1RPS0VOIChTVFJfR0VOX1RPT19NQU5ZKSwNCj4gKyAgICAgICAgZ1NoZWxsQWNwaVZpZXdI aWlIYW5kbGUsDQo+ICsgICAgICAgIEwiYWNwaXZpZXciDQo+ICsgICAgICAgICk7DQo+ICsgICAg ICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgIH0gZWxzZSBp ZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLT8iKSkgew0KPiArICAgICAg U2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAgIC0xLA0KPiArICAg ICAgICBOVUxMLA0KPiArICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRVRfSEVMUF9BQ1BJVklF VyksDQo+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAgICAgICBMImFj cGl2aWV3Ig0KPiArICAgICAgICApOw0KPiArICAgIH0gZWxzZSBpZiAoU2hlbGxDb21tYW5kTGlu ZUdldEZsYWcgKFBhY2thZ2UsIEwiLXMiKSAmJg0KPiArICAgICAgICAgICAgICAgU2hlbGxDb21t YW5kTGluZUdldFZhbHVlIChQYWNrYWdlLCBMIi1zIikgPT0gTlVMTCkgew0KPiArICAgICAgU2hl bGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAgIC0xLA0KPiArICAgICAg ICBOVUxMLA0KPiArICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fTk9fVkFMVUUpLA0KPiAr ICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAgICAgICAgTCJhY3BpdmlldyIs DQo+ICsgICAgICAgIEwiLXMiDQo+ICsgICAgICAgICk7DQo+ICsgICAgICBTaGVsbFN0YXR1cyA9 IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgIH0gZWxzZSBpZiAoKFNoZWxsQ29tbWFu ZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1zIikgJiYNCj4gKyAgICAgICAgICAgICAgICBTaGVs bENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItbCIpKSkgew0KPiArICAgICAgU2hlbGxQ cmludEhpaUV4ICgNCj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAgIC0xLA0KPiArICAgICAgICBO VUxMLA0KPiArICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fVE9PX01BTlkpLA0KPiArICAg ICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAgICAgICAgTCJhY3BpdmlldyINCj4g KyAgICAgICAgKTsNCj4gKyAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ICsgICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwg TCItaCIpICYmDQo+ICsgICAgICAgICAgICAgICBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKFBh Y2thZ2UsIEwiLWgiKSA9PSBOVUxMKSB7DQo+ICsgICAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ ICsgICAgICAgICAgLTEsDQo+ICsgICAgICAgICAgLTEsDQo+ICsgICAgICAgICAgTlVMTCwNCj4g KyAgICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fTk9fVkFMVUUpLA0KPiArICAgICAgICAg IGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAgICAgICAgIEwiYWNwaXZpZXciLA0KPiAr ICAgICAgICAgIEwiLWgiDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgU2hlbGxTdGF0dXMg PSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICB9IGVsc2UgaWYgKFNoZWxsQ29tbWFu ZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1kIikgJiYNCj4gKyAgICAgICAgICAgICAgICFTaGVs bENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItcyIpKSB7DQo+ICsgICAgICAgIFNoZWxs UHJpbnRIaWlFeCAoDQo+ICsgICAgICAgICAgLTEsDQo+ICsgICAgICAgICAgLTEsDQo+ICsgICAg ICAgICAgTlVMTCwNCj4gKyAgICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fTUlTU0lOR19P UFRJT04pLA0KPiArICAgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAgICAg ICAgIEwiYWNwaXZpZXciLA0KPiArICAgICAgICAgIEwiLXMiLA0KPiArICAgICAgICAgIEwiLWQi DQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElE X1BBUkFNRVRFUjsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgLy8gQ2hlY2sgaWYgdGhlIGNv bG91ciBvcHRpb24gaXMgc2V0DQo+ICsgICAgICBUZW1wID0gU2hlbGxDb21tYW5kTGluZUdldFZh bHVlIChQYWNrYWdlLCBMIi1oIik7DQo+ICsgICAgICBpZiAoVGVtcCAhPSBOVUxMKSB7DQo+ICsg ICAgICAgIFVuaWNvZGVTdHJUb0FzY2lpU3RyUyAoVGVtcCwgQ29sb3VyT3B0aW9uLCBzaXplb2Yg KENvbG91ck9wdGlvbikpOw0KPiArICAgICAgICBpZiAoKEFzY2lpU3RyaUNtcCAoQ29sb3VyT3B0 aW9uLCAiT04iKSA9PSAwKSB8fA0KPiArICAgICAgICAgICAgKEFzY2lpU3RyaUNtcCAoQ29sb3Vy T3B0aW9uLCAiVFJVRSIpID09IDApKSB7DQo+ICsgICAgICAgICAgU2V0Q29sb3VySGlnaGxpZ2h0 aW5nIChUUlVFKTsNCj4gKyAgICAgICAgfSBlbHNlIGlmICgoQXNjaWlTdHJpQ21wIChDb2xvdXJP cHRpb24sICJPRkYiKSA9PSAwKSB8fA0KPiArICAgICAgICAgICAgICAgICAgIChBc2NpaVN0cmlD bXAgKENvbG91ck9wdGlvbiwgIkZBTFNFIikgPT0gMCkpIHsNCj4gKyAgICAgICAgICBTZXRDb2xv dXJIaWdobGlnaHRpbmcgKEZBTFNFKTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgfQ0KPiArDQo+ ICsgICAgICBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLWwiKSkgew0K PiArICAgICAgICBtUmVwb3J0VHlwZSA9IEVSRVBPUlRfVEFCTEVfTElTVDsNCj4gKyAgICAgIH0g ZWxzZSB7DQo+ICsgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUgPSBTaGVsbENvbW1hbmRM aW5lR2V0VmFsdWUgKFBhY2thZ2UsIEwiLQ0KPiBzIik7DQo+ICsgICAgICAgIGlmIChtU2VsZWN0 ZWRBY3BpVGFibGVOYW1lICE9IE5VTEwpIHsNCj4gKyAgICAgICAgICBtU2VsZWN0ZWRBY3BpVGFi bGUgPSAoVUlOVDMyKUNvbnZlcnRTdHJUb0FjcGlTaWduYXR1cmUgKA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVOYW1lDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgICAgICAg bVJlcG9ydFR5cGUgPSBFUkVQT1JUX1NFTEVDVEVEOw0KPiArDQo+ICsgICAgICAgICAgaWYgKFNo ZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1kIikpICB7DQo+ICsgICAgICAgICAg ICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZSB0byBjaGVjayBpZiB0aGUgbWVkaWEgaXMgd3Jp dGFibGUuDQo+ICsgICAgICAgICAgICBDSEFSMTYgRmlsZU5hbWVCdWZmZXJbTUFYX0ZJTEVfTkFN RV9MRU5dOw0KPiArICAgICAgICAgICAgbVJlcG9ydFR5cGUgPSBFUkVQT1JUX0RVTVBfQklOX0ZJ TEU7DQo+ICsNCj4gKyAgICAgICAgICAgIFVuaWNvZGVTUHJpbnQgKA0KPiArICAgICAgICAgICAg ICBGaWxlTmFtZUJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAgc2l6ZW9mIChGaWxlTmFtZUJ1ZmZl ciksDQo+ICsgICAgICAgICAgICAgIEwiLlxcJXMlMDRkLnRtcCIsDQo+ICsgICAgICAgICAgICAg IG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUsDQo+ICsgICAgICAgICAgICAgIG1CaW5UYWJsZUNvdW50 DQo+ICsgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgICAgICAgICAgIFN0YXR1cyA9IFNoZWxs T3BlbkZpbGVCeU5hbWUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICBGaWxlTmFtZUJ1ZmZl ciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgJlRtcER1bXBGaWxlSGFuZGxlLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICBFRklfRklMRV9NT0RFX1JFQUQgfCBFRklfRklMRV9NT0RFX1dS SVRFIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9DUkVBVEUsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIDANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgKTsN Cj4gKw0KPiArICAgICAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAg ICAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgICAg ICAgICAgICBUbXBEdW1wRmlsZUhhbmRsZSA9IE5VTEw7DQo+ICsgICAgICAgICAgICAgIFNoZWxs UHJpbnRIaWlFeCAoDQo+ICsgICAgICAgICAgICAgICAgLTEsDQo+ICsgICAgICAgICAgICAgICAg LTEsDQo+ICsgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICBTVFJJTkdf VE9LRU4gKFNUUl9HRU5fUkVBRE9OTFlfTUVESUEpLA0KPiArICAgICAgICAgICAgICAgIGdTaGVs bEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAgICAgICAgICAgICAgIEwiYWNwaXZpZXciDQo+ICsg ICAgICAgICAgICAgICAgKTsNCj4gKyAgICAgICAgICAgICAgZ290byBEb25lOw0KPiArICAgICAg ICAgICAgfQ0KPiArICAgICAgICAgICAgLy8gRGVsZXRlIFRlbXBvcmFyeSBmaWxlLg0KPiArICAg ICAgICAgICAgU2hlbGxEZWxldGVGaWxlICgmVG1wRHVtcEZpbGVIYW5kbGUpOw0KPiArICAgICAg ICAgIH0gLy8gLWQNCj4gKyAgICAgICAgfSAvLyAtcw0KPiArICAgICAgfQ0KPiArDQo+ICsgICAg ICAvLyBQYXJzZSBBQ1BJIFRhYmxlIGluZm9ybWF0aW9uDQo+ICsgICAgICBTdGF0dXMgPSBBY3Bp VmlldyAoU3lzdGVtVGFibGUpOw0KPiArICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiArICAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX05PVF9GT1VORDsNCj4gKyAgICAgIH0NCj4g KyAgICB9DQo+ICsgIH0NCj4gKw0KPiArRG9uZToNCj4gKyAgaWYgKFBhY2thZ2UgIT0gTlVMTCkg ew0KPiArICAgIFNoZWxsQ29tbWFuZExpbmVGcmVlVmFyTGlzdCAoUGFja2FnZSk7DQo+ICsgIH0N Cj4gKyAgcmV0dXJuIFNoZWxsU3RhdHVzOw0KPiArfQ0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9BY3BpUGFyc2Vy SGVscGUNCj4gci9BY3BpUGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0FjcGlQYXJzZXJIZWxwZQ0KPiByL0FjcGlQYXJzZXIu Yw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGExMjYwYzAxODQ3MGMwOWRlN2QzZGU2DQo+IDlhMTg2 YWMzODViNTFmOQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQWNwaVBhcnNlckhlbHBlDQo+IHIv QWNwaVBhcnNlci5jDQo+IEBAIC0wLDAgKzEsNjQ0IEBADQo+ICsvKioNCj4gKyAgQUNQSSBwYXJz ZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n IG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2gg YWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNl bnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQg VU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBF WFBSRVNTIE9SIElNUExJRUQuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPFVlZmkuaD4NCj4g KyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlC b290U2VydmljZXNUYWJsZUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNw aVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVZpZXcuaD4NCj4g Kw0KPiArU1RBVElDIFVJTlQzMiAgIGdJbmRlbnQ7DQo+ICtTVEFUSUMgVUlOVDMyICAgbVRhYmxl RXJyb3JDb3VudDsNCj4gK1NUQVRJQyBVSU5UMzIgICBtVGFibGVXYXJuaW5nQ291bnQ7DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgQUNQSSB0YWJsZSBlcnJvciBjb3VudGVy IHRvIFplcm8uDQo+ICsqLw0KPiArVk9JRA0KPiArUmVzZXRFcnJvckNvdW50ICgNCj4gKyAgVk9J RA0KPiArICApDQo+ICt7DQo+ICsgIG1UYWJsZUVycm9yQ291bnQgPSAwOw0KPiArfQ0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiBpbmNyZW1lbnRzIHRoZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50 ZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArSW5jcmVtZW50RXJyb3JDb3VudCAoDQo+ICsgIFZPSUQN Cj4gKyAgKQ0KPiArew0KPiArICBtVGFibGVFcnJvckNvdW50Kys7DQo+ICt9DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291bnQuDQo+ICsN Cj4gKyAgQHJldHZhbCBSZXR1cm5zIHRoZSBjb3VudCBvZiBlcnJvcnMgZGV0ZWN0ZWQgaW4gdGhl IEFDUEkgdGFibGVzLg0KPiArKi8NCj4gK1VJTlQzMg0KPiArR2V0RXJyb3JDb3VudCAoDQo+ICsg IFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gbVRhYmxlRXJyb3JDb3VudDsNCj4gK30N Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmVzZXRzIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcg Y291bnRlciB0byBaZXJvLg0KPiArKi8NCj4gK1ZPSUQNCj4gK1Jlc2V0V2FybmluZ0NvdW50ICgN Cj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIG1UYWJsZVdhcm5pbmdDb3VudCA9IDA7DQo+ ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIEFDUEkgdGFibGUg d2FybmluZyBjb3VudGVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0luY3JlbWVudFdhcm5pbmdDb3Vu dCAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICBtVGFibGVXYXJuaW5nQ291bnQrKzsN Cj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSB3 YXJuaW5nIGNvdW50Lg0KPiArDQo+ICsgIEByZXR2YWwgUmV0dXJucyB0aGUgY291bnQgb2Ygd2Fy bmluZyBkZXRlY3RlZCBpbiB0aGUgQUNQSSB0YWJsZXMuDQo+ICsqLw0KPiArVUlOVDMyDQo+ICtH ZXRXYXJuaW5nQ291bnQgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIG1U YWJsZVdhcm5pbmdDb3VudDsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmVyaWZp ZXMgdGhlIEFDUEkgdGFibGUgY2hlY2tzdW0uDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiB2ZXJp ZmllcyB0aGUgY2hlY2tzdW0gZm9yIHRoZSBBQ1BJIHRhYmxlIGFuZCBvcHRpb25hbGx5DQo+ICsg IHByaW50cyB0aGUgc3RhdHVzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIExvZyAgICAgSWYgVFJV RSBsb2cgdGhlIHN0YXR1cyBvZiB0aGUgY2hlY2tzdW0uDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIHRhYmxlIGJ1ZmZlci4NCj4gKyAgQHBhcmFt IFtpbl0gTGVuZ3RoICBUaGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIuDQo+ICsNCj4gKyAgQHJldHZh bCBUUlVFICAgICAgICBUaGUgY2hlY2tzdW0gaXMgT0suDQo+ICsgIEByZXR2YWwgRkFMU0UgICAg ICAgVGhlIGNoZWNrc3VtIGZhaWxlZC4NCj4gKyovDQo+ICtCT09MRUFODQo+ICtWZXJpZnlDaGVj a3N1bSAoDQo+ICsgIElOIEJPT0xFQU4gTG9nLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAg SU4gVUlOVDMyICBMZW5ndGgNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UTiBCeXRlQ291bnQgPSAw Ow0KPiArICBVSU5UOCBDaGVja3N1bSA9IDA7DQo+ICsgIFVJTlROIE9yaWdpbmFsQXR0cmlidXRl Ow0KPiArDQo+ICsgIHdoaWxlIChCeXRlQ291bnQgPCBMZW5ndGgpIHsNCj4gKyAgICBDaGVja3N1 bSArPSAqKFB0cisrKTsNCj4gKyAgICBCeXRlQ291bnQrKzsNCj4gKyAgfQ0KPiArDQo+ICsgIGlm IChMb2cpIHsNCj4gKyAgICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5B dHRyaWJ1dGU7DQo+ICsgICAgaWYgKENoZWNrc3VtID09IDApIHsNCj4gKyAgICAgIGlmIChHZXRD b2xvdXJIaWdobGlnaHRpbmcgKCkpIHsNCj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJp YnV0ZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiArICAgICAg ICAgICAgICAgICAgICAgICBFRklfVEVYVF9BVFRSIChFRklfR1JFRU4sDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkp DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgICB9DQo+ICsgICAgICBQcmlu dCAoTCJcblxuVGFibGUgQ2hlY2tzdW0gOiBPS1xuXG4iKTsNCj4gKyAgICB9IGVsc2Ugew0KPiAr ICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgIGlmIChHZXRDb2xvdXJIaWdo bGlnaHRpbmcgKCkpIHsNCj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiArICAgICAgICAgICAgICAg ICAgICAgICBFRklfVEVYVF9BVFRSIChFRklfUkVELA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICApOw0KPiArICAgICAgfQ0KPiArICAgICAgUHJpbnQgKEwiXG5cblRh YmxlIENoZWNrc3VtIDogRkFJTEVEICgweCVYKVxuXG4iLCBDaGVja3N1bSk7DQo+ICsgICAgfQ0K PiArICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCkpIHsNCj4gKyAgICAgIGdTVC0+Q29u T3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ICsg ICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIChDaGVja3N1bSA9PSAwKTsNCj4gK30NCj4g Kw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSByYXcgZGF0YSBkdW1wIG9mIHRoZSBB Q1BJIHRhYmxlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUg c3RhcnQgb2YgdGhlIHRhYmxlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBUaGUg bGVuZ3RoIG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcFJhdyAoDQo+ICsg IElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJTlQzMiBMZW5ndGgNCj4gKyAgKQ0KPiArew0KPiAr ICBVSU5UTiBCeXRlQ291bnQgPSAwOw0KPiArICBVSU5UTiBQYXJ0TGluZUNoYXJzOw0KPiArICBV SU5UTiBBc2NpaUJ1ZmZlckluZGV4ID0gMDsNCj4gKyAgQ0hBUjggQXNjaWlCdWZmZXJbMTddOw0K PiArDQo+ICsgIFByaW50IChMIkFkZHJlc3MgIDogMHglcFxuIiwgUHRyKTsNCj4gKyAgUHJpbnQg KEwiTGVuZ3RoICAgOiAlZFxuIiwgTGVuZ3RoKTsNCj4gKw0KPiArICB3aGlsZSAoQnl0ZUNvdW50 IDwgTGVuZ3RoKSB7DQo+ICsgICAgaWYgKChCeXRlQ291bnQgJiAweDBGKSA9PSAwKSB7DQo+ICsg ICAgICBBc2NpaUJ1ZmZlcltBc2NpaUJ1ZmZlckluZGV4XSA9ICdcMCc7DQo+ICsgICAgICBQcmlu dCAoTCIgICVhXG4lMDhYIDogIiwgQXNjaWlCdWZmZXIsIEJ5dGVDb3VudCk7DQo+ICsgICAgICBB c2NpaUJ1ZmZlckluZGV4ID0gMDsNCj4gKyAgICB9IGVsc2UgaWYgKChCeXRlQ291bnQgJiAweDA3 KSA9PSAwKSB7DQo+ICsgICAgICBQcmludCAoTCItICIpOw0KPiArICAgIH0NCj4gKw0KPiArICAg IGlmICgoKlB0ciA+PSAnICcpICYmICgqUHRyIDwgMHg3RikpIHsNCj4gKyAgICAgIEFzY2lpQnVm ZmVyW0FzY2lpQnVmZmVySW5kZXgrK10gPSAqUHRyOw0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAg ICBBc2NpaUJ1ZmZlcltBc2NpaUJ1ZmZlckluZGV4KytdID0gJy4nOw0KPiArICAgIH0NCj4gKw0K PiArICAgIFByaW50IChMIiUwMlggIiwgKlB0cisrKTsNCj4gKw0KPiArICAgIEJ5dGVDb3VudCsr Ow0KPiArICB9DQo+ICsNCj4gKyAgLy8gSnVzdGlmeSB0aGUgZmluYWwgbGluZSB1c2luZyBzcGFj ZXMgYmVmb3JlIHByaW50aW5nDQo+ICsgIC8vIHRoZSBBU0NJSSBkYXRhLg0KPiArICBQYXJ0TGlu ZUNoYXJzID0gKExlbmd0aCAmIDB4MEYpOw0KPiArICBpZiAoUGFydExpbmVDaGFycyAhPSAwKSB7 DQo+ICsgICAgUGFydExpbmVDaGFycyA9IDQ4IC0gKFBhcnRMaW5lQ2hhcnMgKiAzKTsNCj4gKyAg ICBpZiAoKExlbmd0aCAmIDB4MEYpIDw9IDgpIHsNCj4gKyAgICAgIFBhcnRMaW5lQ2hhcnMgKz0g MjsNCj4gKyAgICB9DQo+ICsgICAgd2hpbGUgKFBhcnRMaW5lQ2hhcnMgPiAwKSB7DQo+ICsgICAg ICBQcmludCAoTCIgIik7DQo+ICsgICAgICBQYXJ0TGluZUNoYXJzLS07DQo+ICsgICAgfQ0KPiAr ICB9DQo+ICsNCj4gKyAgLy8gUHJpbnQgQVNDSUkgZGF0YSBmb3IgdGhlIGZpbmFsIGxpbmUuDQo+ ICsgIEFzY2lpQnVmZmVyW0FzY2lpQnVmZmVySW5kZXhdID0gJ1wwJzsNCj4gKyAgUHJpbnQgKEwi ICAlYSIsIEFzY2lpQnVmZmVyKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJh Y2VzIDEgYnl0ZSBvZiBkYXRhIGFzIHNwZWNpZmllZCBpbiB0aGUNCj4gKyAgICBmb3JtYXQgc3Ry aW5nLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9y IHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1wVWludDggKA0K PiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHIN Cj4gKyAgKQ0KPiArew0KPiArICBQcmludCAoRm9ybWF0LCAqUHRyKTsNCj4gK30NCj4gKw0KPiAr LyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDIgYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgaW4g dGhlDQo+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQg IFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiAr Vk9JRA0KPiArRHVtcFVpbnQxNiAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiAr ICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIFByaW50IChGb3JtYXQs ICooVUlOVDE2KilQdHIpOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMg NCBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBpbiB0aGUNCj4gKyAgICBmb3JtYXQgc3RyaW5n Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRy YWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUg c3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1wVWludDMyICgNCj4g KyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ ICsgICkNCj4gK3sNCj4gKyAgUHJpbnQgKEZvcm1hdCwgKihVSU5UMzIqKVB0cik7DQo+ICt9DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA4IGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lm aWVkIGJ5IHRoZQ0KPiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g Rm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiAr Ki8NCj4gK1ZPSUQNCj4gK0R1bXBVaW50NjQgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1h dCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKQ0KPiArew0KPiArICAvLyBTb21l IGZpZWxkcyBhcmUgbm90IGFsaWduZWQgYW5kIHRoaXMgY2F1c2VzIGFsaWdubWVudCBmYXVsdHMN Cj4gKyAgLy8gb24gQVJNIHBsYXRmb3JtcyBpZiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIExEUkQg aW5zdHJ1Y3Rpb25zLg0KPiArICAvLyBQZXJmb3JtIHdvcmQgYWNjZXNzIHNvIHRoYXQgTERSRCBp bnN0cnVjdGlvbnMgYXJlIG5vdCBnZW5lcmF0ZWQuDQo+ICsgIFVJTlQ2NCBWYWwgPSAqKFVJTlQz MiopKFB0ciArIHNpemVvZiAoVUlOVDMyKSk7DQo+ICsgIFZhbCA8PD0gMzI7DQo+ICsgIFZhbCB8 PSAqKFVJTlQzMiopUHRyOw0KPiArDQo+ICsgIFByaW50IChGb3JtYXQsIFZhbCk7DQo+ICt9DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyAzIGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJl IG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNw ZWNpZmllZC4NCj4gKw0KPiArICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCB0aGUg Rm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlv bmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5d IFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtW T0lEDQo+ICtEdW1wM0NoYXJzICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9O QUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICkNCj4gK3sNCj4gKyAgUHJpbnQg KA0KPiArICAgIChGb3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQgOiBMIiVjJWMlYyIsDQo+ICsgICAg UHRyWzBdLA0KPiArICAgIFB0clsxXSwNCj4gKyAgICBQdHJbMl0NCj4gKyAgICApOw0KPiArfQ0K PiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBi ZSBvcHRpb25hbGx5DQo+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBz cGVjaWZpZWQuDQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhl IEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRp b25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiAr Vk9JRA0KPiArRHVtcDRDaGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElP TkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIFByaW50 ICgNCj4gKyAgICAoRm9ybWF0ICE9IE5VTEwpID8gRm9ybWF0IDogTCIlYyVjJWMlYyIsDQo+ICsg ICAgUHRyWzBdLA0KPiArICAgIFB0clsxXSwNCj4gKyAgICBQdHJbMl0sDQo+ICsgICAgUHRyWzNd DQo+ICsgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDYgY2hh cmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KPiArICAgZm9ybWF0ZWQgdXNpbmcgdGhl IGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KPiArDQo+ICsgIElmIG5vIGZvcm1hdCBzdHJp bmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxMLg0KPiArDQo+ICsgIEBwYXJh bSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0 YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0R1bXA2Q2hhcnMgKA0KPiArICBJTiBDT05TVCBD SEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAg KQ0KPiArew0KPiArICBQcmludCAoDQo+ICsgICAgKEZvcm1hdCAhPSBOVUxMKSA/IEZvcm1hdCA6 IEwiJWMlYyVjJWMlYyVjIiwNCj4gKyAgICBQdHJbMF0sDQo+ICsgICAgUHRyWzFdLA0KPiArICAg IFB0clsyXSwNCj4gKyAgICBQdHJbM10sDQo+ICsgICAgUHRyWzRdLA0KPiArICAgIFB0cls1XQ0K PiArICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA4IGNoYXJh Y3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBm b3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gKw0KPiArICBJZiBubyBmb3JtYXQgc3RyaW5n IGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEu DQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1 ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtEdW1wOENoYXJzICgNCj4gKyAgSU4gQ09OU1QgQ0hB UjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICkN Cj4gK3sNCj4gKyAgUHJpbnQgKA0KPiArICAgIChGb3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQgOiBM IiVjJWMlYyVjJWMlYyVjJWMiLA0KPiArICAgIFB0clswXSwNCj4gKyAgICBQdHJbMV0sDQo+ICsg ICAgUHRyWzJdLA0KPiArICAgIFB0clszXSwNCj4gKyAgICBQdHJbNF0sDQo+ICsgICAgUHRyWzVd LA0KPiArICAgIFB0cls2XSwNCj4gKyAgICBQdHJbN10NCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiBpbmRlbnRzIGFuZCBwcmludHMgdGhlIEFDUEkgdGFibGUgRmll bGQgTmFtZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICBOdW1iZXIgb2Ygc3Bh Y2VzIHRvIGFkZCB0byB0aGUgZ2xvYmFsIHRhYmxlIGluZGVudC4NCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgVGhlIGdsb2JhbCB0YWJsZSBpbmRlbnQgaXMgMCBieSBkZWZhdWx0OyBob3dl dmVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgdmFsdWUgaXMgdXBkYXRlZCBv biBlbnRyeSB0byB0aGUgUGFyc2VBY3BpKCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg YnkgYWRkaW5nIHRoZSBpbmRlbnQgdmFsdWUgcHJvdmlkZWQgdG8gUGFyc2VBY3BpKCkNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJlc3RvcmVkIGJhY2sgb24gZXhpdC4NCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgVGhlcmVmb3JlIHRoZSB0b3RhbCBpbmRlbnQgaW4gdGhl IG91dHB1dCBpcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbnQgb24gZnJv bSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4NCj4gKyAgQHBhcmFtIFtpbl0gRmllbGRO YW1lICAgUG9pbnRlciB0byB0aGUgRmllbGQgTmFtZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtQcmlu dEZpZWxkTmFtZSAoDQo+ICsgIElOIFVJTlQzMiAgICAgICAgIEluZGVudCwNCj4gKyAgSU4gQ09O U1QgQ0hBUjE2KiAgRmllbGROYW1lDQo+ICspDQo+ICt7DQo+ICsgIFByaW50ICgNCj4gKyAgICBM IiUqYSUtKnMgOiAiLA0KPiArICAgIGdJbmRlbnQgKyBJbmRlbnQsDQo+ICsgICAgIiIsDQo+ICsg ICAgKE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEggLSBnSW5kZW50IC0gSW5kZW50KSwNCj4gKyAg ICBGaWVsZE5hbWUNCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIHBhcnNlIGFuIEFDUEkgdGFibGUgYnVmZmVyLg0KPiArDQo+ICsgIFRoZSBBQ1BJ IHRhYmxlIGJ1ZmZlciBpcyBwYXJzZWQgdXNpbmcgdGhlIEFDUEkgdGFibGUgcGFyc2VyIGluZm9y bWF0aW9uDQo+ICsgIHNwZWNpZmllZCBieSBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgQUNQSV9Q QVJTRVIgZWxlbWVudHMuIFRoaXMgcGFyc2VyDQo+ICsgIGZ1bmN0aW9uIGl0ZXJhdGVzIHRocm91 Z2ggZWFjaCBpdGVtIG9uIHRoZSBBQ1BJX1BBUlNFUiBhcnJheSBhbmQgbG9ncw0KPiB0aGUNCj4g KyAgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBjYW4gb3B0aW9u YWxseSBiZSB1c2VkIHRvIHBhcnNlIEFDUEkgdGFibGVzIGFuZCBmZXRjaCBzcGVjaWZpYw0KPiAr ICBmaWVsZCB2YWx1ZXMuIFRoZSBJdGVtUHRyIG1lbWJlciBvZiB0aGUgQUNQSV9QQVJTRVIgc3Ry dWN0dXJlICh3aGVyZQ0KPiB1c2VkKQ0KPiArICBpcyB1cGRhdGVkIGJ5IHRoaXMgcGFyc2VyIGZ1 bmN0aW9uIHRvIHBvaW50IHRvIHRoZSBzZWxlY3RlZCBmaWVsZCBkYXRhDQo+ICsgIChlLmcuIHVz ZWZ1bCBmb3IgdmFyaWFibGUgbGVuZ3RoIG5lc3RlZCBmaWVsZHMpLg0KPiArDQo+ICsgIEBwYXJh bSBbaW5dIFRyYWNlICAgICAgICBUcmFjZSB0aGUgQUNQSSBmaWVsZHMgVFJVRSBlbHNlIG9ubHkg cGFyc2UgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS4NCj4gKyAgQHBh cmFtIFtpbl0gSW5kZW50ICAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IHRoZSBvdXRw dXQuDQo+ICsgIEBwYXJhbSBbaW5dIEFzY2lpTmFtZSAgICBPcHRpb25hbCBwb2ludGVyIHRvIGFu IEFTQ0lJIHN0cmluZyB0aGF0IGRlc2NyaWJlcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGhlIHRhYmxlIGJlaW5nIHBhcnNlZC4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAg IFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExl bmd0aCAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlciBwb2ludGVkIGJ5IFB0ci4NCj4gKyAgQHBh cmFtIFtpbl0gUGFyc2VyICAgICAgIFBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIg c3RydWN0dXJlIHRoYXQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyB0 aGUgdGFibGUgYmVpbmcgcGFyc2VkLg0KPiArICBAcGFyYW0gW2luXSBQYXJzZXJJdGVtcyAgTnVt YmVyIG9mIGl0ZW1zIGluIHRoZSBBQ1BJX1BBUlNFUiBhcnJheS4NCj4gKw0KPiArICBAcmV0dmFs IE51bWJlciBvZiBieXRlcyBwYXJzZWQuDQo+ICsqLw0KPiArVUlOVDMyDQo+ICtQYXJzZUFjcGkg KA0KPiArICBJTiBCT09MRUFOICAgICAgICAgICAgVHJhY2UsDQo+ICsgIElOIFVJTlQzMiAgICAg ICAgICAgICBJbmRlbnQsDQo+ICsgIElOIENPTlNUIENIQVI4KiAgICAgICBBc2NpaU5hbWUgT1BU SU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgICAgICBQdHIsDQo+ICsgIElOIFVJTlQzMiAg ICAgICAgICAgICBMZW5ndGgsDQo+ICsgIElOIENPTlNUIEFDUElfUEFSU0VSKiBQYXJzZXIsDQo+ ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBQYXJzZXJJdGVtcw0KPiArKQ0KPiArew0KPiArICBV SU5UMzIgIEluZGV4Ow0KPiArICBVSU5UMzIgIE9mZnNldCA9IDA7DQo+ICsNCj4gKyAgLy8gSW5j cmVtZW50IHRoZSBJbmRlbnQNCj4gKyAgZ0luZGVudCArPSBJbmRlbnQ7DQo+ICsNCj4gKyAgaWYg KFRyYWNlICYmIChBc2NpaU5hbWUgIT0gTlVMTCkpew0KPiArICAgIEJPT0xFQU4gSGlnaExpZ2h0 ID0gR2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpOw0KPiArICAgIFVJTlROICAgT3JpZ2luYWxBdHRy aWJ1dGU7DQo+ICsNCj4gKyAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ICsgICAgICBPcmlnaW5hbEF0 dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ICsgICAgICBnU1QtPkNv bk91dC0+U2V0QXR0cmlidXRlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0 LA0KPiArICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUihFRklfWUVMTE9XLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklU NikpPj40KSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgfQ0KPiArICAgIFBy aW50ICgNCj4gKyAgICAgIEwiJSphJS0qYSA6XG4iLA0KPiArICAgICAgZ0luZGVudCwNCj4gKyAg ICAgICIiLA0KPiArICAgICAgKE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEggLSBnSW5kZW50KSwN Cj4gKyAgICAgIEFzY2lpTmFtZQ0KPiArICAgICAgKTsNCj4gKyAgICBpZiAoSGlnaExpZ2h0KSB7 DQo+ICsgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgT3JpZ2lu YWxBdHRyaWJ1dGUpOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIGZvciAoSW5kZXggPSAw OyBJbmRleCA8IFBhcnNlckl0ZW1zOyBJbmRleCsrKSB7DQo+ICsgICAgaWYgKChPZmZzZXQgKyBQ YXJzZXJbSW5kZXhdLkxlbmd0aCkgPiBMZW5ndGgpIHsNCj4gKyAgICAgIC8vIFdlIGRvbid0IHBh cnNlIHBhc3QgdGhlIGVuZCBvZiB0aGUgbWF4IGxlbmd0aCBzcGVjaWZpZWQNCj4gKyAgICAgIGJy ZWFrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmIChPZmZzZXQgIT0gUGFyc2VyW0luZGV4XS5P ZmZzZXQpIHsNCj4gKyAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBQcmlu dCAoDQo+ICsgICAgICAgIEwiXG5FUlJPUjogJWE6IE9mZnNldCBNaXNtYXRjaCBmb3IgJXNcbiIN Cj4gKyAgICAgICAgICAiQ3VycmVudE9mZnNldCA9ICVkIEZpZWxkT2Zmc2V0ID0gJWRcbiIsDQo+ ICsgICAgICAgIEFzY2lpTmFtZSwNCj4gKyAgICAgICAgUGFyc2VyW0luZGV4XS5OYW1lU3RyLA0K PiArICAgICAgICBPZmZzZXQsDQo+ICsgICAgICAgIFBhcnNlcltJbmRleF0uT2Zmc2V0DQo+ICsg ICAgICAgICk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKFRyYWNlKSB7DQo+ICsgICAgICAv LyBpZiB0aGVyZSBpcyBhIEZvcm1hdHRlciBmdW5jdGlvbiBsZXQgdGhlIGZ1bmN0aW9uIGhhbmRs ZQ0KPiArICAgICAgLy8gdGhlIHByaW50aW5nIGVsc2UgaWYgYSBGb3JtYXQgaXMgc3BlY2lmaWVk IGluIHRoZSB0YWJsZSB1c2UNCj4gKyAgICAgIC8vIHRoZSBGb3JtYXQgZm9yIHByaW50aW5nDQo+ ICsgICAgICBQcmludEZpZWxkTmFtZSAoMiwgUGFyc2VyW0luZGV4XS5OYW1lU3RyKTsNCj4gKyAg ICAgIGlmIChQYXJzZXJbSW5kZXhdLlByaW50Rm9ybWF0dGVyICE9IE5VTEwpIHsNCj4gKyAgICAg ICAgUGFyc2VyW0luZGV4XS5QcmludEZvcm1hdHRlciAoUGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0 cik7DQo+ICsgICAgICB9IGVsc2UgaWYgKFBhcnNlcltJbmRleF0uRm9ybWF0ICE9IE5VTEwpIHsN Cj4gKyAgICAgICAgc3dpdGNoIChQYXJzZXJbSW5kZXhdLkxlbmd0aCkgew0KPiArICAgICAgICAg IGNhc2UgMToNCj4gKyAgICAgICAgICAgIER1bXBVaW50OCAoUGFyc2VyW0luZGV4XS5Gb3JtYXQs IFB0cik7DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICBjYXNlIDI6DQo+ICsg ICAgICAgICAgICBEdW1wVWludDE2IChQYXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCj4gKyAg ICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgIGNhc2UgNDoNCj4gKyAgICAgICAgICAgIER1 bXBVaW50MzIgKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0KPiArICAgICAgICAgICAgYnJl YWs7DQo+ICsgICAgICAgICAgY2FzZSA4Og0KPiArICAgICAgICAgICAgRHVtcFVpbnQ2NCAoUGFy c2VyW0luZGV4XS5Gb3JtYXQsIFB0cik7DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICAg ICAgICBkZWZhdWx0Og0KPiArICAgICAgICAgICAgUHJpbnQgKA0KPiArICAgICAgICAgICAgICBM IlxuRVJST1I6ICVhOiBDQU5OT1QgUEFSU0UgVEhJUyBGSUVMRCwgRmllbGQgTGVuZ3RoID0gJWRc biIsDQo+ICsgICAgICAgICAgICAgIEFzY2lpTmFtZSwNCj4gKyAgICAgICAgICAgICAgUGFyc2Vy W0luZGV4XS5MZW5ndGgNCj4gKyAgICAgICAgICAgICAgKTsNCj4gKyAgICAgICAgfSAvLyBzd2l0 Y2gNCj4gKw0KPiArICAgICAgICAvLyBWYWxpZGF0aW5nIG9ubHkgbWFrZXMgc2Vuc2UgaWYgd2Ug YXJlIHRyYWNpbmcNCj4gKyAgICAgICAgLy8gdGhlIHBhcnNlZCB0YWJsZSBlbnRyaWVzLCB0byBy ZXBvcnQgYnkgdGFibGUgbmFtZS4NCj4gKyAgICAgICAgaWYgKFBhcnNlcltJbmRleF0uRmllbGRW YWxpZGF0b3IgIT0gTlVMTCkgew0KPiArICAgICAgICAgIFBhcnNlcltJbmRleF0uRmllbGRWYWxp ZGF0b3IgKFB0ciwgUGFyc2VyW0luZGV4XS5Db250ZXh0KTsNCj4gKyAgICAgICAgfQ0KPiArICAg ICAgfQ0KPiArICAgICAgUHJpbnQgKEwiXG4iKTsNCj4gKyAgICB9IC8vIGlmIChUcmFjZSkNCj4g Kw0KPiArICAgIGlmIChQYXJzZXJbSW5kZXhdLkl0ZW1QdHIgIT0gTlVMTCkgew0KPiArICAgICAg KlBhcnNlcltJbmRleF0uSXRlbVB0ciA9IChWT0lEKilQdHI7DQo+ICsgICAgfQ0KPiArDQo+ICsg ICAgUHRyICs9IFBhcnNlcltJbmRleF0uTGVuZ3RoOw0KPiArICAgIE9mZnNldCArPSBQYXJzZXJb SW5kZXhdLkxlbmd0aDsNCj4gKyAgfSAvLyBmb3INCj4gKw0KPiArICAvLyBEZWNyZW1lbnQgdGhl IEluZGVudA0KPiArICBnSW5kZW50IC09IEluZGVudDsNCj4gKyAgcmV0dXJuIE9mZnNldDsNCj4g K30NCj4gKw0KPiArLyoqIEFuIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgR2VuZXJpYyBBZGRy ZXNzIFN0cnVjdHVyZS4NCj4gKyAgVGhlIEdhc1BhcnNlciBhcnJheSBpcyB1c2VkIGJ5IHRoZSBQ YXJzZUFjcGkgZnVuY3Rpb24gdG8gcGFyc2UgYW5kL29yDQo+IHRyYWNlDQo+ICsgIHRoZSBHQVMg c3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHYXNQYXJzZXJb XSA9IHsNCj4gKyAge0wiQWRkcmVzcyBTcGFjZSBJRCIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZWdpc3RlciBCaXQgV2lkdGgiLCAxLCAxLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVnaXN0ZXIgQml0IE9mZnNl dCIsIDEsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBZGRy ZXNzIFNpemUiLCAxLCAzLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiQWRkcmVzcyIsIDgsIDQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiAr fTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gaW5kZW50cyBhbmQgdHJhY2VzIHRoZSBHQVMg c3RydWN0dXJlIGFzIGRlc2NyaWJlZA0KPiArICAgIGJ5IHRoZSBHYXNQYXJzZXIuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVy Lg0KPiArICBAcGFyYW0gW2luXSBJbmRlbnQgIE51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IHRo ZSBvdXRwdXQuDQo+ICsqLw0KPiArVk9JRA0KPiArRHVtcEdhc1N0cnVjdCAoDQo+ICsgIElOIFVJ TlQ4KiAgICAgICAgUHRyLA0KPiArICBJTiBVSU5UMzIgICAgICAgIEluZGVudA0KPiArICApDQo+ ICt7DQo+ICsgIFByaW50IChMIlxuIik7DQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwN Cj4gKyAgICBJbmRlbnQsDQo+ICsgICAgTlVMTCwNCj4gKyAgICBQdHIsDQo+ICsgICAgR0FTX0xF TkdUSCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChHYXNQYXJzZXIpDQo+ICsgICAgKTsNCj4gK30N Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIHRoZSBHQVMgc3RydWN0dXJlIGFzIGRl c2NyaWJlZCBieSB0aGUgR2FzUGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAg T3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFt IFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8N Cj4gK1ZPSUQNCj4gK0R1bXBHYXMgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJ T05BTCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKQ0KPiArew0KPiArICBEdW1w R2FzU3RydWN0IChQdHIsIDIpOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFj ZXMgdGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0aGUNCj4gQWNwaUhlYWRlclBhcnNl ci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGJ1ZmZlci4NCj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJz ZWQuDQo+ICsqLw0KPiArVUlOVDMyDQo+ICtEdW1wQWNwaUhlYWRlciAoDQo+ICsgIElOIFVJTlQ4 KiBQdHINCj4gKyAgKQ0KPiArew0KPiArICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFj cGlIZHJJbmZvOw0KPiArICBBQ1BJX1BBUlNFUiBBY3BpSGVhZGVyUGFyc2VyW10gPSB7DQo+ICsg ICAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbykNCj4gKyAgfTsNCj4gKw0KPiArICBy ZXR1cm4gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgMCwN Cj4gKyAgICAgICAgICAgIkFDUEkgVGFibGUgSGVhZGVyIiwNCj4gKyAgICAgICAgICAgUHRyLA0K PiArICAgICAgICAgICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9MRU5HVEgsDQo+ICsgICAgICAg ICAgIFBBUlNFUl9QQVJBTVMgKEFjcGlIZWFkZXJQYXJzZXIpDQo+ICsgICAgICAgICAgICk7DQo+ ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBoZWFkZXIgYXMg ZGVzY3JpYmVkIGJ5IHRoZQ0KPiBBY3BpSGVhZGVyUGFyc2VyLg0KPiArDQo+ICsgIFRoaXMgZnVu Y3Rpb24gb3B0aW9uYWxseSByZXR1cm5zIHRoZSBzaWduYXR1cmUsIGxlbmd0aCBhbmQgcmV2aXNp b24gb2YgdGhlDQo+ICsgIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIFB0ciAg ICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtv dXRdIFNpZ25hdHVyZSAgR2V0cyBsb2NhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBzaWduYXR1cmUu DQo+ICsgIEBwYXJhbSBbb3V0XSBMZW5ndGggICAgIEdldHMgbG9jYXRpb24gb2YgdGhlIGxlbmd0 aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtvdXRdIFJldmlzaW9uICAgR2V0cyBs b2NhdGlvbiBvZiB0aGUgcmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHJl dHZhbCBOdW1iZXIgb2YgYnl0ZXMgcGFyc2VkLg0KPiArKi8NCj4gK1VJTlQzMg0KPiArUGFyc2VB Y3BpSGVhZGVyICgNCj4gKyAgSU4gIFVJTlQ4KiAgICAgICAgIFB0ciwNCj4gKyAgT1VUIENPTlNU IFVJTlQzMioqIFNpZ25hdHVyZSwNCj4gKyAgT1VUIENPTlNUIFVJTlQzMioqIExlbmd0aCwNCj4g KyAgT1VUIENPTlNUIFVJTlQ4KiogIFJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZXNQYXJzZWQ7DQo+ICsgIEFDUElfREVTQ1JJUFRJ T05fSEVBREVSX0lORk8gIEFjcGlIZHJJbmZvOw0KPiArICBBQ1BJX1BBUlNFUiBBY3BpSGVhZGVy UGFyc2VyW10gPSB7DQo+ICsgICAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbykNCj4g KyAgfTsNCj4gKw0KPiArICBCeXRlc1BhcnNlZCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAg ICAgICAgICBGQUxTRSwNCj4gKyAgICAgICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAg ICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgICAg ICAgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RILA0KPiArICAgICAgICAgICAgICAgICAg UEFSU0VSX1BBUkFNUyAoQWNwaUhlYWRlclBhcnNlcikNCj4gKyAgICAgICAgICAgICAgICAgICk7 DQo+ICsNCj4gKyAgKlNpZ25hdHVyZSA9IEFjcGlIZHJJbmZvLlNpZ25hdHVyZTsNCj4gKyAgKkxl bmd0aCA9IEFjcGlIZHJJbmZvLkxlbmd0aDsNCj4gKyAgKlJldmlzaW9uID0gQWNwaUhkckluZm8u UmV2aXNpb247DQo+ICsNCj4gKyAgcmV0dXJuIEJ5dGVzUGFyc2VkOw0KPiArfQ0KPiBkaWZmIC0t Z2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9BY3BpUGFyc2VySGVscGUNCj4gci9BY3BpUGFyc2VySGVscGVyTGliLmluZg0KPiBiL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQWNwaVBh cnNlckhlbHBlDQo+IHIvQWNwaVBhcnNlckhlbHBlckxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uODE1YjU5NWJjMjJiMGViYjQxYzZmODUwYQ0KPiA3MzJhOTI3MDM5ZDg1YWUNCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL0FjcGlQYXJzZXJIZWxwZQ0KPiByL0FjcGlQYXJzZXJIZWxwZXJMaWIu aW5mDQo+IEBAIC0wLDAgKzEsMzIgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmln aHQgKGMpIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiAr IyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAgYXJl IGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlv bnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRp c3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5k IGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhw DQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAw MDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gQWNwaVBhcnNlckhlbHBlckxpYg0KPiArICBG SUxFX0dVSUQgICAgICA9IEExRDAwRkUyLUU4NTItNDJCRS04MzlELTFBNjMwQkUwRkVCQw0KPiAr ICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IEJBU0UNCj4gKyAg TElCUkFSWV9DTEFTUyAgPSBBY3BpUGFyc2VyTGliDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBB Y3BpUGFyc2VyLmMNCj4gKyAgQWNwaVRhYmxlUGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0K PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAg TWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0K PiArICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQWNwaVBhcnNl ckhlbHBlDQo+IHIvQWNwaVRhYmxlUGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0FjcGlQYXJzZXJIZWxwZQ0KPiByL0FjcGlU YWJsZVBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlODQ2NzZiMjQzYzY2YWNjZjczYzdk ZjMzDQo+IGJmM2ZkZGI0OThjODk1DQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9BY3BpUGFyc2Vy SGVscGUNCj4gci9BY3BpVGFibGVQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDIxNCBAQA0KPiArLyoq DQo+ICsgIEFDUEkgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0g MjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3Jh bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0K PiBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhl IGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi DQo+IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArKiovDQo+ICsNCj4g KyNpbmNsdWRlIDxVZWZpLmg+DQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9B Y3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3Bp VGFibGVQYXJzZXIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlWaWV3Lmg+ DQo+ICsNCj4gKy8qKiBBIGxpc3Qgb2YgcmVnaXN0ZXJlZCBBQ1BJIHRhYmxlIHBhcnNlcnMuDQo+ ICsqLw0KPiArU1RBVElDIEFDUElfVEFCTEVfUEFSU0VSDQo+IG1UYWJsZVBhcnNlckxpc3RbTUFY X0FDUElfVEFCTEVfUEFSU0VSU107DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgQUNQSSB0YWJs ZSBQYXJzZXINCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyB0aGUgQUNQSSB0YWJs ZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlICAgVGhlIEFDUEkgdGFi bGUgc2lnbmF0dXJlLg0KPiArICBAcGFyYW0gW2luXSBQYXJzZXJQcm9jICBUaGUgQUNQSSB0YWJs ZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBh cnNlciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBB IHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQg ICBUaGUgcGFyc2VyIGZvciB0aGUgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JF U09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhcnNlci4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4g K1JlZ2lzdGVyUGFyc2VyICgNCj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25h dHVyZSwNCj4gKyAgSU4gIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgIFBhcnNlclByb2MNCj4gKyAg KQ0KPiArew0KPiArICBVSU5UMzIgaW5kZXg7DQo+ICsNCj4gKyAgaWYgKChQYXJzZXJQcm9jID09 IE5VTEwpIHx8IChTaWduYXR1cmUgPT0NCj4gQUNQSV9QQVJTRVJfU0lHTkFUVVJFX05VTEwpKSB7 DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgfQ0KPiArDQo+ICsg IC8vIFNlYXJjaCBpZiBhIHBhcnNlciBpcyBhbHJlYWR5IGluc3RhbGxlZA0KPiArICBmb3IgKGlu ZGV4ID0gMDsNCj4gKyAgICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJsZVBhcnNlckxpc3QpIC8g c2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQo+ICsgICAgICAgaW5kZXgrKykNCj4gKyAg ew0KPiArICAgIGlmIChTaWduYXR1cmUgPT0gbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0 dXJlKSB7DQo+ICsgICAgICBpZiAobVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uUGFyc2VyICE9IE5V TEwpIHsNCj4gKyAgICAgICAgcmV0dXJuIEVGSV9BTFJFQURZX1NUQVJURUQ7DQo+ICsgICAgICB9 DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgLy8gRmluZCB0aGUgZmlyc3QgZnJlZSBzbG90 IGFuZCByZWdpc3RlciB0aGUgcGFyc2VyDQo+ICsgIGZvciAoaW5kZXggPSAwOw0KPiArICAgICAg aW5kZXggPCAoc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0KSAvIHNpemVvZiAobVRhYmxlUGFyc2Vy TGlzdFswXSkpOw0KPiArICAgICAgaW5kZXgrKykNCj4gKyAgew0KPiArICAgIGlmIChtVGFibGVQ YXJzZXJMaXN0W2luZGV4XS5TaWduYXR1cmUgPT0NCj4gQUNQSV9QQVJTRVJfU0lHTkFUVVJFX05V TEwpIHsNCj4gKyAgICAgIG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSA9IFNpZ25h dHVyZTsNCj4gKyAgICAgIG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlciA9IFBhcnNlclBy b2M7DQo+ICsgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsN Cj4gKyAgLy8gTm8gZnJlZSBzbG90IGZvdW5kDQo+ICsgIHJldHVybiBFRklfT1VUX09GX1JFU09V UkNFUzsNCj4gK30NCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIEFDUEkgdGFibGUgUGFyc2Vy DQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBkZXJlZ2lzdGVycyB0aGUgQUNQSSB0YWJsZSBwYXJz ZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlICAgVGhlIEFDUEkgdGFibGUgc2ln bmF0dXJlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJz ZXIgd2FzIGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg QSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAg ICAgQSByZWdpc3RlcmVkIHBhcnNlciB3YXMgbm90IGZvdW5kLg0KPiArKi8NCj4gK0VGSV9TVEFU VVMNCj4gK0VGSUFQSQ0KPiArRGVyZWdpc3RlclBhcnNlciAoDQo+ICsgIElOICBVSU5UMzIgICAg ICAgICAgICAgICAgICBTaWduYXR1cmUNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgaW5kZXg7 DQo+ICsNCj4gKyAgaWYgKFNpZ25hdHVyZSA9PSBBQ1BJX1BBUlNFUl9TSUdOQVRVUkVfTlVMTCkg ew0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiAr ICBmb3IgKGluZGV4ID0gMDsNCj4gKyAgICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJsZVBhcnNl ckxpc3QpIC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQo+ICsgICAgICAgaW5kZXgr KykNCj4gKyAgew0KPiArICAgIGlmIChTaWduYXR1cmUgPT0gbVRhYmxlUGFyc2VyTGlzdFtpbmRl eF0uU2lnbmF0dXJlKSB7DQo+ICsgICAgICBtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5TaWduYXR1 cmUgPSBBQ1BJX1BBUlNFUl9TSUdOQVRVUkVfTlVMTDsNCj4gKyAgICAgIG1UYWJsZVBhcnNlckxp c3RbaW5kZXhdLlBhcnNlciA9IE5VTEw7DQo+ICsgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgLy8gTm8gbWF0Y2hpbmcgcmVnaXN0ZXJlZCBwYXJz ZXIgZm91bmQuDQo+ICsgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiArfQ0KPiArDQo+ICsvKiog R2V0IHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gcmV0dXJu cyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIgcHJvYyBmcm9tIHRoZSBsaXN0IG9mDQo+ICsgIHJlZ2lz dGVyZWQgcGFyc2Vycy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgU2lnbmF0dXJlICAgVGhlIEFD UEkgdGFibGUgc2lnbmF0dXJlLg0KPiArICBAcGFyYW0gW291dF0gUGFyc2VyUHJvYyAgUG9pbnRl ciB0byBhIEFDUEkgdGFibGUgcGFyc2VyIHByb2MuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgVGhlIHBhcnNlciB3YXMgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5Lg0KPiAr ICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0K PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBBIHJlZ2lzdGVyZWQgcGFyc2VyIHdh cyBub3QgZm91bmQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtHZXRQYXJz ZXIgKA0KPiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZSwNCj4gKyAg T1VUIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAqICBQYXJzZXJQcm9jDQo+ICsgICkNCj4gK3sNCj4g KyAgVUlOVDMyIGluZGV4Ow0KPiArDQo+ICsgIGlmICgoUGFyc2VyUHJvYyA9PSBOVUxMKSB8fCAo U2lnbmF0dXJlID09DQo+IEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxMKSkgew0KPiArICAgIHJl dHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICBmb3IgKGluZGV4 ID0gMDsNCj4gKyAgICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJsZVBhcnNlckxpc3QpIC8gc2l6 ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQo+ICsgICAgICAgaW5kZXgrKykNCj4gKyAgew0K PiArICAgIGlmIChTaWduYXR1cmUgPT0gbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJl KSB7DQo+ICsgICAgICAqUGFyc2VyUHJvYyA9IG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNl cjsNCj4gKyAgICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0K PiArICAvLyBObyBtYXRjaGluZyByZWdpc3RlcmVkIHBhcnNlciBmb3VuZC4NCj4gKyAgcmV0dXJu IEVGSV9OT1RfRk9VTkQ7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3Nl cyB0aGUgQUNQSSB0YWJsZXMuDQo+ICsgIFRoaXMgZnVuY3Rpb24gY2FsbHMgUHJvY2Vzc1RhYmxl UmVwb3J0T3B0aW9ucygpIHRvIGxpc3QgdGhlIEFDUEkNCj4gKyAgdGFibGVzLCBwZXJmb3JtIGJp bmFyeSBkdW1wIG9mIHRoZSB0YWJsZXMgYW5kIGRldGVybWluZSBpZiB0aGUNCj4gKyAgQUNQSSBm aWVsZHMgc2hvdWxkIGJlIHRyYWNlZC4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gaW52 b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgQUNQSSB0YWJsZXMuDQo+ICsNCj4gKyAgVGhpcyBmdW5j dGlvbiBhbHNvIHBlcmZvcm1zIGEgUkFXIGR1bXAgb2YgdGhlIEFDUEkgdGFibGUgaW5jbHVkaW5n DQo+ICsgIHRoZSB1bmtub3duL3VucGFyc2VkIEFDUEkgdGFibGVzIGFuZCB2YWxpZGF0ZXMgdGhl IGNoZWNrc3VtLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgQUNQSQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGFibGUgZGF0YSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArUHJvY2Vzc0Fj cGlUYWJsZSAoDQo+ICsgIElOIFVJTlQ4KiBQdHINCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RB VFVTICAgIFN0YXR1czsNCj4gKyAgQk9PTEVBTiAgICAgICBUcmFjZTsNCj4gKyAgQ09OU1QgVUlO VDMyKiBBY3BpVGFibGVTaWduYXR1cmU7DQo+ICsgIENPTlNUIFVJTlQzMiogQWNwaVRhYmxlTGVu Z3RoOw0KPiArICBDT05TVCBVSU5UOCogIEFjcGlUYWJsZVJldmlzaW9uOw0KPiArICBQQVJTRV9B Q1BJX1RBQkxFX1BST0MgUGFyc2VyUHJvYzsNCj4gKw0KPiArICBQYXJzZUFjcGlIZWFkZXIgKA0K PiArICAgIFB0ciwNCj4gKyAgICAmQWNwaVRhYmxlU2lnbmF0dXJlLA0KPiArICAgICZBY3BpVGFi bGVMZW5ndGgsDQo+ICsgICAgJkFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICAgKTsNCj4gKw0KPiAr ICBUcmFjZSA9IFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMgKA0KPiArICAgICAgICAgICAgKkFj cGlUYWJsZVNpZ25hdHVyZSwNCj4gKyAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICpB Y3BpVGFibGVMZW5ndGgNCj4gKyAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgaWYgKFRyYWNlKSB7 DQo+ICsgICAgRHVtcFJhdyAoUHRyLCAqQWNwaVRhYmxlTGVuZ3RoKTsNCj4gKyAgICBWZXJpZnlD aGVja3N1bSAoVFJVRSwgUHRyLCAqQWNwaVRhYmxlTGVuZ3RoKTsNCj4gKyAgfQ0KPiArDQo+ICsg IFN0YXR1cyA9IEdldFBhcnNlciAoKkFjcGlUYWJsZVNpZ25hdHVyZSwgJlBhcnNlclByb2MpOw0K PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgLy8gTm8gcmVnaXN0ZXJlZCBw YXJzZXIgZm91bmQsIGRvIGRlZmF1bHQgaGFuZGxpbmcuDQo+ICsgICAgaWYgKFRyYWNlKSB7DQo+ ICsgICAgICBEdW1wQWNwaUhlYWRlciAoUHRyKTsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuOw0K PiArICB9DQo+ICsNCj4gKyAgUGFyc2VyUHJvYyAoDQo+ICsgICAgVHJhY2UsDQo+ICsgICAgUHRy LA0KPiArICAgICpBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgKkFjcGlUYWJsZVJldmlzaW9uDQo+ ICsgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyLg0KPiBjDQo+IGIv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0 L0JncnRQYXJzZXIuDQo+IGMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzY2ZTgyMGJhNzg4YTBmYjc4 MTA2MWRiYQ0KPiBkMWY1N2Y5MGFjZWY3OGMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQv QmdydFBhcnNlci4NCj4gYw0KPiBAQCAtMCwwICsxLDExNyBAQA0KPiArLyoqDQo+ICsgIEJHUlQg dGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExp bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBv ZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uu b3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJ U1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0K PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMp Og0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIg MjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4N Cj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Fj cGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlU YWJsZVBhcnNlci5oPg0KPiArDQo+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4gK1NUQVRJQyBBQ1BJ X0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiogQW4gQUNQ SV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBCRFJUIFRhYmxlLg0KPiArKi8NCj4g K1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBCZ3J0UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0FD UElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiArICB7TCJWZXJzaW9uIiwgMiwgMzYsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTdGF0dXMiLCAxLCAzOCwgTCIw eCV4IiwgTlVMTCwgIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJJbWFnZSBUeXBlIiwgMSwg MzksIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJJbWFnZSBBZGRy ZXNzIiwgOCwgNDAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi SW1hZ2UgT2Zmc2V0IFgiLCA0LCA0OCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJJbWFnZSBPZmZzZXQgWSIsIDQsIDUyLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBC R1JUIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJz ZXMgdGhlIEJHUlQgdGFibGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMu DQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBhcnNlcyB0aGUgQUNQSSBoZWFkZXIgZm9y IHRoZSBEU0RUIHRhYmxlIGFuZA0KPiArICBpbnZva2VzIHRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJ IERTRFQgdGFibGUuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlk YXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRy YWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRo ZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNp b24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJz ZUFjcGlCZ3J0ICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIs DQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlU YWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJl dHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVHJhY2UsDQo+ICsg ICAgMCwNCj4gKyAgICAiQkdSVCIsDQo+ICsgICAgUHRyLA0KPiArICAgIEFjcGlUYWJsZUxlbmd0 aCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChCZ3J0UGFyc2VyKQ0KPiArICAgICk7DQo+ICt9DQo+ ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJ bWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBT eXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAg QHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFi bGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0 ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMg aW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byBy ZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0K PiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArQmdydFBhcnNlckxpYkNvbnN0cnVj dG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRs ZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0K PiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAg IEVGSV9BQ1BJXzZfMl9CT09UX0dSQVBISUNTX1JFU09VUkNFX1RBQkxFX1NJR05BVFVSRSwNCj4g KyAgICAgICAgICAgUGFyc2VBY3BpQmdydA0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFn ZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0 ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBA cmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJl ZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0JncnRQYXJzZXJMaWJEZXN0 cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhh bmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJs ZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAg ICAgICAgRUZJX0FDUElfNl8yX0JPT1RfR1JBUEhJQ1NfUkVTT1VSQ0VfVEFCTEVfU0lHTkFUVVJF DQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBhcnNlckxp DQo+IGIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXJMDQo+IGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li5hNDY1OWRhMWFhOGM5MmM4YTM1OTU3YmNjOA0KPiA4M2ZiZTJjNDM5NDU2ZQ0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyTA0KPiBpYi5pbmYNCj4gQEAgLTAsMCArMSwz MyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgs IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBwcm9n cmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFu ZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+ IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g IFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsjICBo dHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsj ICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4g IkFTIElTIg0KPiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsjIw0K PiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ICsg IEJBU0VfTkFNRSAgICAgID0gQmdydFBhcnNlckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9IEM0 Q0NEOUI2LUY2MkYtNEIwNi1BMjVELUY4MTU1MDdCNDlFMA0KPiArICBWRVJTSU9OX1NUUklORyA9 IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9DTEFT UyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAgPSBCZ3J0UGFyc2VyTGli Q29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBCZ3J0UGFyc2VyTGliRGVzdHJ1Y3Rv cg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgQmdydFBhcnNlci5jDQo+ICsNCj4gK1tQYWNrYWdl c10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nl c10NCj4gKyAgQWNwaVBhcnNlckxpYg0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZQ0KPiBy LmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL0RiZzIvRGJnMlBhcnNlDQo+IHIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGNmMTk4YWZi MzI1NDc1ZjE3MTkwNTdlMg0KPiA2ZjE0YjM1MWFjNGFkOA0KPiAtLS0gL2Rldi9udWxsDQo+ICsr Kw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvRGJnMi9EYmcyUGFyc2UNCj4gci5jDQo+IEBAIC0wLDAgKzEsMjgzIEBADQo+ICsvKioNCj4g KyAgREJHMiB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4 LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExp Y2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3Bl bnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dS QU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4g QkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5Z IEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZl cmVuY2Uocyk6DQo+ICsgICAgLSBNaWNyb3NvZnQgRGVidWcgUG9ydCBUYWJsZSAyIChEQkcyKSBT cGVjaWZpY2F0aW9uIC0gRGVjZW1iZXIgMTAsIDIwMTUuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1 ZGUgPEluZHVzdHJ5U3RhbmRhcmQvRGVidWdQb3J0MlRhYmxlLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2Vy Lmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4g Kw0KPiArLy8gTG9jYWwgdmFyaWFibGVzIHBvaW50aW5nIHRvIHRoZSB0YWJsZSBmaWVsZHMNCj4g K1NUQVRJQyBDT05TVCBVSU5UMzIqIE9mZnNldERiZ0RldmljZUluZm87DQo+ICtTVEFUSUMgQ09O U1QgVUlOVDMyKiBOdW1iZXJEYmdEZXZpY2VJbmZvOw0KPiArU1RBVElDIENPTlNUIFVJTlQxNiog RGJnRGV2SW5mb0xlbjsNCj4gK1NUQVRJQyBDT05TVCBVSU5UOCogIEdhc0NvdW50Ow0KPiArU1RB VElDIENPTlNUIFVJTlQxNiogTmFtZVNwYWNlU3RyaW5nTGVuZ3RoOw0KPiArU1RBVElDIENPTlNU IFVJTlQxNiogTmFtZVNwYWNlU3RyaW5nT2Zmc2V0Ow0KPiArU1RBVElDIENPTlNUIFVJTlQxNiog T0VNRGF0YUxlbmd0aDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMTYqIE9FTURhdGFPZmZzZXQ7DQo+ ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBCYXNlQWRkclJlZ09mZnNldDsNCj4gK1NUQVRJQyBDT05T VCBVSU5UMTYqIEFkZHJTaXplT2Zmc2V0Ow0KPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVB REVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIFZhbGlkYXRl cyB0aGUgTmFtZVNwYWNlIHN0cmluZyBsZW5ndGguDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2lu XSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRo aXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFD UEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVO YW1lU3BhY2VTdHJMZW4gKA0KPiArICBJTiAgVUlOVDgqIFB0ciwNCj4gKyAgSU4gIFZPSUQqICBD b250ZXh0DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgZGVi dWcgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAg UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0g W291dF0gTGVuZ3RoICBQb2ludGVyIGluIHdoaWNoIHRoZSBsZW5ndGggb2YgdGhlIGRlYnVnDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZC4N Cj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBEYmdEZXZpY2VJbmZvICgNCj4gKyAg SU4gIFVJTlQ4KiAgUHRyLA0KPiArICBPVVQgVUlOVDMyKiBMZW5ndGgNCj4gKyAgKTsNCj4gKw0K PiArLy8vIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgREJHMiB0YWJs ZS4NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBEYmcyUGFyc2VyW10gPSB7DQo+ICsgIFBB UlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiArICB7TCJPZmZzZXREYmdEZXZpY2VJ bmZvIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZPZmZzZXREYmdEZXZp Y2VJbmZvLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTnVtYmVyRGJnRGV2aWNlSW5mbyIsIDQsIDQw LCBMIiVkIiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJk51bWJlckRiZ0RldmljZUluZm8sIE5VTEws IE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvLy8gQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmlu ZyB0aGUgZGVidWcgZGV2aWNlIGluZm9ybWF0aW9uLg0KPiArU1RBVElDIENPTlNUIEFDUElfUEFS U0VSIERiZ0RldkluZm9QYXJzZXJbXSA9IHsNCj4gKyAge0wiUmV2aXNpb24iLCAxLCAwLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMiwgMSwgTCIl ZCIsIE5VTEwsIChWT0lEKiopJkRiZ0RldkluZm9MZW4sIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsg IHtMIkdlbmVyaWMgQWRkcmVzcyBSZWdpc3RlcnMgQ291bnQiLCAxLCAzLCBMIjB4JXgiLCBOVUxM LA0KPiArICAgKFZPSUQqKikmR2FzQ291bnQsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJOYW1lU3Bh Y2UgU3RyaW5nIExlbmd0aCIsIDIsIDQsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmTmFt ZVNwYWNlU3RyaW5nTGVuZ3RoLCBWYWxpZGF0ZU5hbWVTcGFjZVN0ckxlbiwgTlVMTH0sDQo+ICsg IHtMIk5hbWVTcGFjZSBTdHJpbmcgT2Zmc2V0IiwgMiwgNiwgTCIweCV4IiwgTlVMTCwNCj4gKyAg IChWT0lEKiopJk5hbWVTcGFjZVN0cmluZ09mZnNldCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk9F TSBEYXRhIExlbmd0aCIsIDIsIDgsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZPRU1EYXRhTGVuZ3Ro LA0KPiArICAgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk9FTSBEYXRhIE9mZnNldCIsIDIsIDEwLCBM IjB4JXgiLCBOVUxMLCAoVk9JRCoqKSZPRU1EYXRhT2Zmc2V0LA0KPiArICAgTlVMTCwgTlVMTH0s DQo+ICsNCj4gKyAge0wiUG9ydCBUeXBlIiwgMiwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJQb3J0IFN1YlR5cGUiLCAyLCAxNCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwgMTYsIEwiJXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJCYXNlIEFkZHJlc3MgUmVnaXN0ZXIg T2Zmc2V0IiwgMiwgMTgsIEwiMHgleCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZCYXNlQWRkclJl Z09mZnNldCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFkZHJlc3MgU2l6ZSBPZmZzZXQiLCAyLCAy MCwgTCIweCV4IiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJkFkZHJTaXplT2Zmc2V0LCBOVUxMLCBO VUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBOYW1l U3BhY2Ugc3RyaW5nIGxlbmd0aC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQg UG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAg ICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBo ZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZU5hbWVTcGFjZVN0 ckxlbiAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsg ICkNCj4gK3sNCj4gKyAgVUlOVDE2IE5hbWVTcGFjZVN0ckxlbiA9ICooVUlOVDE2KilQdHI7DQo+ ICsgIGlmIChOYW1lU3BhY2VTdHJMZW4gPCAyKSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3Vu dCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxuRVJST1I6IE5hbWVzcGFjZVN0cmlu ZyBMZW5ndGggPSAlZC4gSWYgbm8gTmFtZXNwYWNlIGRldmljZQ0KPiBleGlzdHMsXG4iDQo+ICsg ICAgICAgIiAgICB0aGVuIE5hbWVzcGFjZVN0cmluZ1tdIG11c3QgY29udGFpbiBhIHBlcmlvZCAn LiciLA0KPiArICAgICAgTmFtZVNwYWNlU3RyTGVuDQo+ICsgICAgICApOw0KPiArICB9DQo+ICt9 DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgZGVidWcgZGV2aWNlIGluZm9y bWF0aW9uIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW291dF0gUHRyICAgICBQ b2ludGVyIGluIHdoaWNoIHRoZSBsZW5ndGggb2YgdGhlIGRlYnVnDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGRldmljZSBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZC4NCj4gKyovDQo+ICtTVEFU SUMNCj4gK1ZPSUQNCj4gK0R1bXBEYmdEZXZpY2VJbmZvICgNCj4gKyAgSU4gIFVJTlQ4KiAgUHRy LA0KPiArICBPVVQgVUlOVDMyKiBMZW5ndGgNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMTYgIElu ZGV4Ow0KPiArICBVSU5UOCogIERhdGFQdHI7DQo+ICsgIFVJTlQzMiogQWRkclNpemU7DQo+ICsN Cj4gKyAgLy8gUGFyc2UgdGhlIGRlYnVnIGRldmljZSBpbmZvIHRvIGdldCB0aGUgTGVuZ3RoDQo+ ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgRkFMU0UsDQo+ICsgICAgMCwNCj4gKyAgICAiRGVidWcg RGV2aWNlIEluZm8iLA0KPiArICAgIFB0ciwNCj4gKyAgICAzLCAgLy8gTGVuZ3RoIGlzIDIgYnl0 ZXMgc3RhcnRpbmcgYXQgb2Zmc2V0IDENCj4gKyAgICBQQVJTRVJfUEFSQU1TIChEYmdEZXZJbmZv UGFyc2VyKQ0KPiArICAgICk7DQo+ICsNCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0K PiArICAgIDIsDQo+ICsgICAgIkRlYnVnIERldmljZSBJbmZvIiwNCj4gKyAgICBQdHIsDQo+ICsg ICAgKkRiZ0RldkluZm9MZW4sDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoRGJnRGV2SW5mb1BhcnNl cikNCj4gKyAgICApOw0KPiArDQo+ICsgIC8vIEdBUyBhbmQgQWRkcmVzcyBTaXplDQo+ICsgIElu ZGV4ID0gMDsNCj4gKyAgRGF0YVB0ciA9IFB0ciArICgqQmFzZUFkZHJSZWdPZmZzZXQpOw0KPiAr ICBBZGRyU2l6ZSA9IChVSU5UMzIqKShQdHIgKyAoKkFkZHJTaXplT2Zmc2V0KSk7DQo+ICsgIHdo aWxlIChJbmRleCA8ICgqR2FzQ291bnQpKSB7DQo+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDQsIEwi QmFzZUFkZHJlc3NSZWdpc3RlciIpOw0KPiArICAgIER1bXBHYXNTdHJ1Y3QgKERhdGFQdHIsIDQp Ow0KPiArICAgIFByaW50RmllbGROYW1lICg0LCBMIkFkZHJlc3MgU2l6ZSIpOw0KPiArICAgIFBy aW50IChMIjB4JXhcbiIsIEFkZHJTaXplW0luZGV4XSk7DQo+ICsgICAgRGF0YVB0ciArPSBHQVNf TEVOR1RIOw0KPiArICAgIEluZGV4Kys7DQo+ICsgIH0NCj4gKw0KPiArICAvLyBOYW1lU3BhY2Ug U3RyaW5nDQo+ICsgIEluZGV4ID0gMDsNCj4gKyAgRGF0YVB0ciA9IFB0ciArICgqTmFtZVNwYWNl U3RyaW5nT2Zmc2V0KTsNCj4gKyAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiTmFtZVNwYWNlIFN0cmlu ZyIpOw0KPiArICB3aGlsZSAoSW5kZXggPCAoKk5hbWVTcGFjZVN0cmluZ0xlbmd0aCkpIHsNCj4g KyAgICBQcmludCAoTCIlYyIsIERhdGFQdHJbSW5kZXgrK10pOw0KPiArICB9DQo+ICsgIFByaW50 IChMIlxuIik7DQo+ICsNCj4gKyAgLy8gT0VNIERhdGENCj4gKyAgSW5kZXggPSAwOw0KPiArICBE YXRhUHRyID0gUHRyICsgKCpPRU1EYXRhT2Zmc2V0KTsNCj4gKyAgUHJpbnRGaWVsZE5hbWUgKDQs IEwiT0VNIERhdGEiKTsNCj4gKyAgd2hpbGUgKEluZGV4IDwgKCpPRU1EYXRhTGVuZ3RoKSkgew0K PiArICAgIFByaW50IChMIiV4ICIsIERhdGFQdHJbSW5kZXgrK10pOw0KPiArICAgIGlmICgoSW5k ZXggJiA3KSA9PSAwKSB7DQo+ICsgICAgICBQcmludCAoTCJcbiUtKnMgICAiLCBPVVRQVVRfRklF TERfQ09MVU1OX1dJRFRILCBMIiIpOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgICpMZW5n dGggPSAqRGJnRGV2SW5mb0xlbjsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFy c2VzIHRoZSBBQ1BJIERCRzIgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlz IGZ1bmN0aW9uIHBhcnNlcyB0aGUgREJHMiB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJ IHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFs aWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g VHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2Yg dGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZp c2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1Bh cnNlQWNwaURiZzIgKA0KPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0 ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNw aVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBV SU5UMzIgRGJnRGV2aWNlSW5mb0xlbmd0aDsNCj4gKyAgVUlOVDgqIERldkluZm9QdHI7DQo+ICsN Cj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIE9m ZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAg ICAwLA0KPiArICAgICAgICAgICAgICJEQkcyIiwNCj4gKyAgICAgICAgICAgICBQdHIsDQo+ICsg ICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJB TVMgKERiZzJQYXJzZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKyAgRGV2SW5mb1B0ciA9IFB0 ciArIE9mZnNldDsNCj4gKw0KPiArICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7 DQo+ICsgICAgRHVtcERiZ0RldmljZUluZm8gKA0KPiArICAgICAgRGV2SW5mb1B0ciwNCj4gKyAg ICAgICZEYmdEZXZpY2VJbmZvTGVuZ3RoDQo+ICsgICAgICApOw0KPiArICAgIE9mZnNldCArPSBE YmdEZXZpY2VJbmZvTGVuZ3RoOw0KPiArICAgIERldkluZm9QdHIgKz0gRGJnRGV2aWNlSW5mb0xl bmd0aDsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdl Lg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBU YWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2Vy IGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBw YXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JF U09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhcnNlci4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4g K0RiZzJQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAg ICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUg ICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQ YXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJfREVCVUdfUE9SVF8yX1RBQkxFX1NJ R05BVFVSRSwNCj4gKyAgICAgICAgICAgUGFyc2VBY3BpRGJnMg0KPiArICAgICAgICAgICApOw0K PiArfQ0KPiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJh bSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJh bSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3Rl cmVkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBu b3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0RiZzJQ YXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAg ICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05T VCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2Vy ICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX0RFQlVHX1BPUlRfMl9UQUJMRV9TSUdOQVRV UkUNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRGJnMi9EYmcyUGFyc2UN Cj4gckxpYi5pbmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlDQo+IHJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjIzOGNiZDcxYWUyZDVlZGM3MWNkOGYxZDgNCj4gMTJkYmExZjRmNmFkYTRhDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZQ0KPiByTGliLmluZg0KPiBAQCAtMCwwICsx LDMzIEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAx OCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQg YW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUN Cj4gQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9u LiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMg IGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4g KyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBB TiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMj DQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4g KyAgQkFTRV9OQU1FICAgICAgPSBEYmcyUGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0g RkIxRjExQUEtRjJGMC00RDU4LThEMDYtMzY1RENCNjNBNjE0DQo+ICsgIFZFUlNJT05fU1RSSU5H ID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NM QVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IERiZzJQYXJzZXJM aWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IERiZzJQYXJzZXJMaWJEZXN0cnVj dG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBEYmcyUGFyc2VyLmMNCj4gKw0KPiArW1BhY2th Z2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMN Cj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFz c2VzXQ0KPiArICBBY3BpUGFyc2VyTGliDQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlcg0K PiAuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvRHNkdC9Ec2R0UGFyc2VyDQo+IC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3NmNjN2U4 Nzc3ZTc1ZjM5ODNjYTMxMGNiDQo+IDNjMGQ0M2ZlZDAzYmY1DQo+IC0tLSAvZGV2L251bGwNCj4g KysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9Ec2R0L0RzZHRQYXJzZXINCj4gLmMNCj4gQEAgLTAsMCArMSw5MiBAQA0KPiArLyoqDQo+ ICsgIERTRFQgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAx OCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBh bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRl IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBM aWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29w ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9H UkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+ IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFO WSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVm ZXJlbmNlKHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBT ZXB0ZW1iZXIgMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJk L0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxM aWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlW aWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIEFDUEkgRFNEVCB0YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVu Y3Rpb24gcGFyc2VzIHRoZSBEU0RUIHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFi bGUgZmllbGRzLg0KPiArICBGb3IgdGhlIERTRFQgdGFibGUgb25seSB0aGUgQUNQSSBoZWFkZXIg ZmllbGRzIGFyZSBwYXJzZWQgYW5kDQo+ICsgIHRyYWNlZC4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiAr ICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBv ZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJl dmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiAr UGFyc2VBY3BpRHNkdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAg UHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBB Y3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIGlmICghVHJhY2UpIHsNCj4gKyAg ICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBEdW1wQWNwaUhlYWRlciAoUHRyKTsNCj4gK30N Cj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g IEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0g IFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiAr ICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBU YWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdp c3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBp cyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRv IHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIu DQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtEc2R0UGFyc2VyTGliQ29uc3Ry dWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFu ZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxl DQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gKw0KPiBFRklf QUNQSV82XzJfRElGRkVSRU5USUFURURfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVS RSwNCj4gKyAgICAgICAgICAgUGFyc2VBY3BpRHNkdA0KPiArICAgICAgICAgICApOw0KPiArfQ0K PiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5d ICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5d ICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0K PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVn aXN0ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0RzZHRQYXJzZXJM aWJEZXN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJ bWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0 ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4g Kw0KPiBFRklfQUNQSV82XzJfRElGRkVSRU5USUFURURfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxF X1NJR05BVFVSRQ0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0Rz ZHRQYXJzZXINCj4gTGliLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2VyDQo+IExpYi5pbmYNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uY2I4MTY3OTVmZWIzZWM4MzJkY2UwMmY3NDINCj4gYzE4ODg4MmY0NjIzOTEN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlcg0KPiBMaWIuaW5mDQo+IEBA IC0wLDAgKzEsMzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIw MTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBw cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2Vk IGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl DQo+IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlv bi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsj ICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04g QU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNF TlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsj Iw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ ICsgIEJBU0VfTkFNRSAgICAgID0gRHNkdFBhcnNlckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9 IDMwNDc4NDJCLTlGQTYtNENBMi05NTEzLUQ3RkQ2QUQwOTU3NA0KPiArICBWRVJTSU9OX1NUUklO RyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9D TEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAgPSBEc2R0UGFyc2Vy TGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBEc2R0UGFyc2VyTGliRGVzdHJ1 Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgRHNkdFBhcnNlci5jDQo+ICsNCj4gK1tQYWNr YWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVj DQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xh c3Nlc10NCj4gKyAgQWNwaVBhcnNlckxpYg0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJzZXIu DQo+IGMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL0ZhZHQvRmFkdFBhcnNlci4NCj4gYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGJlNDFl NWZmZTg5Mzg0ZTNiM2ZmNTU0ZA0KPiBjNGM1OWM0YWM5YjNlMw0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvRmFkdC9GYWR0UGFyc2VyLg0KPiBjDQo+IEBAIC0wLDAgKzEsMzAyIEBADQo+ICsvKioN Cj4gKyAgRkFEVCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAy MDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+ IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUg ZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8v b3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBS T0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIN Cj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0Yg QU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBS ZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEs IFNlcHRlbWJlciAyMDE3DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRh cmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNw aVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiAr U1RBVElDIENPTlNUIFVJTlQzMiogRHNkdEFkZHJlc3M7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDY0 KiBYX0RzZHRBZGRyZXNzOw0KPiArU1RBVElDIENPTlNUIFVJTlQ4KiAgRmFkdE1pbm9yUmV2aXNp b247DQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsN Cj4gKw0KPiArLyoqIEEgbWFjcm8gZGVmaW5pbmcgdGhlIEhhcmR3YXJlIHJlZHVjZWQgQUNQSSBm bGFnDQo+ICsqLw0KPiArI2RlZmluZSBIV19SRURVQ0VEX0FDUEkgICBCSVQyMA0KPiArDQo+ICsv LyBGb3J3YXJkIGRlY2xhcmF0aW9ucw0KPiArQ09OU1QgQUNQSV9ERVNDUklQVElPTl9IRUFERVJf SU5GTyogQ09OU1QNCj4gK0dldEFjcGlYc2R0SGVhZGVySW5mbyAoDQo+ICsgIFZPSUQNCj4gKyk7 DQo+ICsNCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVGaXJtd2FyZUN0cmwgKA0KPiAr ICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKTsNCj4gKw0KPiAr U1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZVhGaXJtd2FyZUN0cmwgKA0KPiArICBJTiBVSU5U OCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKTsNCj4gKw0KPiArU1RBVElDDQo+ ICtWT0lEDQo+ICtWYWxpZGF0ZUZsYWdzICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4g Vk9JRCogIENvbnRleHQNCj4gKyk7DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBk ZXNjcmliaW5nIHRoZSBBQ1BJIEZBRFQgVGFibGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFD UElfUEFSU0VSIEZhZHRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3Bp SGRySW5mbyksDQo+ICsgIHtMIkZJUk1XQVJFX0NUUkwiLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwg TlVMTCwgVmFsaWRhdGVGaXJtd2FyZUN0cmwsDQo+IE5VTEx9LA0KPiArICB7TCJEU0RUIiwgNCwg NDAsIEwiMHgleCIsIE5VTEwsIChWT0lEKiopJkRzZHRBZGRyZXNzLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiUmVzZXJ2ZWQiLCAxLCA0NCwgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJQcmVmZXJyZWRfUE1fUHJvZmlsZSIsIDEsIDQ1LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU0NJX0lOVCIsIDIsIDQ2LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU01JX0NNRCIsIDQsIDQ4LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQUNQSV9FTkFCTEUiLCAxLCA1MiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFDUElfRElTQUJMRSIsIDEsIDUz LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUzRCSU9TX1JFUSIs IDEsIDU0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUFNUQVRF X0NOVCIsIDEsIDU1LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi UE0xYV9FVlRfQkxLIiwgNCwgNTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJQTTFiX0VWVF9CTEsiLCA0LCA2MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIlBNMWFfQ05UX0JMSyIsIDQsIDY0LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE0xYl9DTlRfQkxLIiwgNCwgNjgsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQTTJfQ05UX0JMSyIsIDQsIDcyLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE1fVE1SX0JMSyIsIDQsIDc2 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR1BFMF9CTEsiLCA0 LCA4MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdQRTFfQkxL IiwgNCwgODQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQTTFf RVZUX0xFTiIsIDEsIDg4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiUE0xX0NOVF9MRU4iLCAxLCA4OSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlBNMl9DTlRfTEVOIiwgMSwgOTAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJQTV9UTVJfTEVOIiwgMSwgOTEsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJHUEUwX0JMS19MRU4iLCAxLCA5MiwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdQRTFfQkxLX0xFTiIsIDEsIDkzLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR1BFMV9CQVNFIiwgMSwgOTQs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJDU1RfQ05UIiwgMSwg OTUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQX0xWTDJfTEFU IiwgMiwgOTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQX0xW TDNfTEFUIiwgMiwgOTgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJGTFVTSF9TSVpFIiwgMiwgMTAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiRkxVU0hfU1RSSURFIiwgMiwgMTAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiRFVUWV9PRkZTRVQiLCAxLCAxMDQsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJEVVRZX1dJRFRIIiwgMSwgMTA1LCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiREFZX0FMUk0iLCAxLCAxMDYsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJNT05fQUxSTSIsIDEsIDEwNywg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkNFTlRVUlkiLCAxLCAx MDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJJQVBDX0JPT1Rf QVJDSCIsIDIsIDEwOSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtM IlJlc2VydmVkIiwgMSwgMTExLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiRmxhZ3MiLCA0LCAxMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlRmxhZ3Ms IE5VTEx9LA0KPiArICB7TCJSRVNFVF9SRUciLCAxMiwgMTE2LCBOVUxMLCBEdW1wR2FzLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUkVTRVRfVkFMVUUiLCAxLCAxMjgsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBUk1fQk9PVF9BUkNIIiwgMiwgMTI5LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRkFEVCBNaW5vciBWZXJz aW9uIiwgMSwgMTMxLCBMIjB4JXgiLCBOVUxMLA0KPiAoVk9JRCoqKSZGYWR0TWlub3JSZXZpc2lv biwNCj4gKyAgICBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWF9GSVJNV0FSRV9DVFJMIiwgOCwgMTMy LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwNCj4gKyAgICBWYWxpZGF0ZVhGaXJtd2FyZUN0cmwsIE5V TEx9LA0KPiArICB7TCJYX0RTRFQiLCA4LCAxNDAsIEwiMHglbHgiLCBOVUxMLCAoVk9JRCoqKSZY X0RzZHRBZGRyZXNzLCBOVUxMLA0KPiBOVUxMfSwNCj4gKyAge0wiWF9QTTFhX0VWVF9CTEsiLCAx MiwgMTQ4LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWF9QTTFi X0VWVF9CTEsiLCAxMiwgMTYwLCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiWF9QTTFhX0NOVF9CTEsiLCAxMiwgMTcyLCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiWF9QTTFiX0NOVF9CTEsiLCAxMiwgMTg0LCBOVUxMLCBEdW1wR2Fz LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWF9QTTJfQ05UX0JMSyIsIDEyLCAxOTYsIE5V TEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYX1BNX1RNUl9CTEsiLCAx MiwgMjA4LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWF9HUEUw X0JMSyIsIDEyLCAyMjAsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJYX0dQRTFfQkxLIiwgMTIsIDIzMiwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlNMRUVQX0NPTlRST0xfUkVHIiwgMTIsIDI0NCwgTlVMTCwgRHVtcEdhcywgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNMRUVQX1NUQVRVU19SRUciLCAxMiwgMjU2LCBOVUxM LCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiSHlwZXJ2aXNvciBWZW5kb3JJ ZGVudGl0eSIsIDgsIDI2OCwgTCIlbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsN Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBGaXJtd2FyZSBDb250cm9s IEZpZWxkLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0 byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAg ICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZUZpcm13YXJlQ3RybCAoDQo+ICsg IElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICspDQo+ICt7DQo+ICsj aWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4g KyAgaWYgKCooVUlOVDMyKilQdHIgIT0gMCkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQg KCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVSUk9SOiBGaXJtd2FyZSBDb250cm9s IG11c3QgYmUgemVybyBmb3IgQVJNIHBsYXRmb3Jtcy4iDQo+ICsgICAgKTsNCj4gKyAgfQ0KPiAr I2VuZGlmDQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgWF9G aXJtd2FyZSBDb250cm9sIEZpZWxkLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENv bnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0K PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0 YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZVhGaXJt d2FyZUN0cmwgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0K PiArKQ0KPiArew0KPiArI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVf Q1BVX0FBUkNINjQpDQo+ICsgIGlmICgqKFVJTlQ2NCopUHRyICE9IDApIHsNCj4gKyAgICBJbmNy ZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjog WCBGaXJtd2FyZSBDb250cm9sIG11c3QgYmUgemVybyBmb3IgQVJNIHBsYXRmb3Jtcy4iDQo+ICsg ICAgKTsNCj4gKyAgfQ0KPiArI2VuZGlmDQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHZhbGlkYXRlcyB0aGUgZmxhZ3MuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29u dGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRh YmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1ZhbGlkYXRlRmxhZ3Mg KA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKQ0KPiAr ew0KPiArI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNI NjQpDQo+ICsgIGlmICgoKCooVUlOVDMyKilQdHIpICYgSFdfUkVEVUNFRF9BQ1BJKSA9PSAwKSB7 DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAg ICBMIlxuRVJST1I6IEhXX1JFRFVDRURfQUNQSSBmbGFnIG11c3QgYmUgc2V0IGZvciBBUk0gcGxh dGZvcm1zLiINCj4gKyAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIEZBRFQgdGFibGUuDQo+ICsgIFRoaXMgZnVu Y3Rpb24gcGFyc2VzIHRoZSBGQURUIHRhYmxlIGFuZCBvcHRpb25hbGx5IHRyYWNlcyB0aGUgQUNQ SQ0KPiArICB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBhcnNl cyB0aGUgQUNQSSBoZWFkZXIgZm9yIHRoZSBEU0RUIHRhYmxlIGFuZA0KPiArICBpbnZva2VzIHRo ZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIERTRFQgdGFibGUuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlv biBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUg QUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVM ZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3Bp VGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9J RA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlGYWR0ICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwN Cj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0K PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlO VDgqICBEc2R0UHRyOw0KPiArDQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVHJhY2UsDQo+ICsg ICAgMCwNCj4gKyAgICAiRkFEVCIsDQo+ICsgICAgUHRyLA0KPiArICAgIEFjcGlUYWJsZUxlbmd0 aCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChGYWR0UGFyc2VyKQ0KPiArICAgICk7DQo+ICsNCj4g KyAgaWYgKFRyYWNlKSB7DQo+ICsgICAgUHJpbnQgKEwiXG5TdW1tYXJ5OlxuIik7DQo+ICsgICAg UHJpbnRGaWVsZE5hbWUgKDIsIEwiRkFEVCBWZXJzaW9uIik7DQo+ICsgICAgUHJpbnQgKEwiJWQu JWRcbiIsICAqQWNwaUhkckluZm8uUmV2aXNpb24sICpGYWR0TWlub3JSZXZpc2lvbik7DQo+ICsN Cj4gKyAgICBpZiAoKkdldEFjcGlYc2R0SGVhZGVySW5mbyAoKS0+T2VtVGFibGVJZCAhPQ0KPiAq QWNwaUhkckluZm8uT2VtVGFibGVJZCkgew0KPiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAo KTsNCj4gKyAgICAgIFByaW50IChMIkVSUk9SOiBPRU0gVGFibGUgSWQgZG9lcyBub3QgbWF0Y2gg d2l0aCBSU0RUL1hTRFQuXG4iKTsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICAvLyBJZiBY X0RTRFQgaXMgbm90IHplcm8gdGhlbiB1c2UgWF9EU0RUIGFuZCBpZ25vcmUgRFNEVCwNCj4gKyAg Ly8gZWxzZSB1c2UgRFNEVC4NCj4gKyAgaWYgKCpYX0RzZHRBZGRyZXNzICE9IDApIHsNCj4gKyAg ICBEc2R0UHRyID0gKFVJTlQ4KikoVUlOVE4pKCpYX0RzZHRBZGRyZXNzKTsNCj4gKyAgfSBlbHNl IGlmICgqRHNkdEFkZHJlc3MgIT0gMCkgew0KPiArICAgIERzZHRQdHIgPSAoVUlOVDgqKShVSU5U TikoKkRzZHRBZGRyZXNzKTsNCj4gKyAgfSBlbHNlIHsNCj4gKyAgICAvLyBCb3RoIERTRFQgYW5k IFhfRFNEVCBjYW5ub3QgYmUgemVyby4NCj4gKyNpZiBkZWZpbmVkIChNREVfQ1BVX0FSTSkgfHwg ZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiArICAgIGlmIChUcmFjZSkgew0KPiArICAgICAg Ly8gVGhlIERTRFQgVGFibGUgaXMgbWFuZGF0b3J5IGZvciBBUk0gc3lzdGVtcw0KPiArICAgICAg Ly8gYXMgdGhlIENQVSBpbmZvcm1hdGlvbiBNVVNUIGJlIHByZXNlbnRlZCBpbg0KPiArICAgICAg Ly8gdGhlIERTRFQuDQo+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAg UHJpbnQgKEwiRVJST1I6IEJvdGggWF9EU0RUIGFuZCBEU0RUIGFyZSBOVUxMLlxuIik7DQo+ICsg ICAgfQ0KPiArI2VuZGlmDQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgUHJvY2Vz c0FjcGlUYWJsZSAoRHNkdFB0cik7DQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFy c2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0 aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUg U3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVE ICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VG SUFQSQ0KPiArRmFkdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hB TkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RF TV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBS ZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9GSVhFRF9BQ1BJX0RF U0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgICAgICAgUGFyc2VBY3BpRmFkdA0K PiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2Vy Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUg aW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lz dGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBw YXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAg ICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ ICtFRklBUEkNCj4gK0ZhZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJ X0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZ U1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVy biBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX0ZJWEVEX0FD UElfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0ZhZHQvRmFkdFBhcnNlcg0KPiBMaWIuaW5mDQo+IGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJzZXIN Cj4gTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzVlZWQ1MzhiOWUwMGJlNWJjMzM2ZTgN Cj4gMDY4NjAyZmZmYjk3MDM3ZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFy c2VyDQo+IExpYi5pbmYNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4g KyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl c2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBh Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vu c2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRF RCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyMgIFdJ VEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0K PiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5G X1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gRmFkdFBhcnNl ckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9IDE1MDdFQzhBLTJCRDQtNDYwQi05ODMwLUQ3OEQw QkQ3RTBFNg0KPiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9 IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAg Q09OU1RSVUNUT1IgICAgPSBGYWR0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RP UiAgICAgPSBGYWR0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAg RmFkdFBhcnNlci5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMN Cj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQ a2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgQWNwaVBhcnNlckxpYg0KPiBk aWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXINCj4gLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBhcnNlcg0KPiAuYw0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi44YzM4ZjlkNWZlNzVmNTJiYTcyMjg2N2FjOQ0KPiBjMWJiMGY2 M2Y0MTYzNA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyDQo+IC5jDQo+ IEBAIC0wLDAgKzEsMzM2IEBADQo+ICsvKioNCj4gKyAgR1REVCB0YWJsZSBwYXJzZXINCj4gKw0K PiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFs cw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5p ZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBi ZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhF IEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFO VElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9S IElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBBQ1BJIDYu MiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ICsgICoqLw0KPiAr DQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2Vy Lmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4g Kw0KPiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBHdGR0UGxh dGZvcm1UaW1lckNvdW50Ow0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogR3RkdFBsYXRmb3JtVGlt ZXJPZmZzZXQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDgqICBQbGF0Zm9ybVRpbWVyVHlwZTsNCj4g K1NUQVRJQyBDT05TVCBVSU5UMTYqIFBsYXRmb3JtVGltZXJMZW5ndGg7DQo+ICtTVEFUSUMgQ09O U1QgVUlOVDMyKiBHdEJsb2NrVGltZXJDb3VudDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEd0 QmxvY2tUaW1lck9mZnNldDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMTYqIEd0QmxvY2tMZW5ndGg7 DQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4g Kw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBHVCBCbG9jayB0aW1lciBjb3Vu dC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29u dGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAg ICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8N Cj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVHdEJsb2NrVGltZXJDb3VudCAoDQo+ICsg IElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ICsNCj4g Ky8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEdURFQgVGFibGUu DQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEd0ZHRQYXJzZXJbXSA9IHsNCj4g KyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIkNudENvbnRyb2xC YXNlIFBoeXNpY2FsIEFkZHJlc3MiLCA4LCAzNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsDQo+ICsg ICBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCA0NCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNlY3VyZSBFTDEgdGltZXIgR1NJViIsIDQsIDQ4 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU2VjdXJlIEVMMSB0 aW1lciBGTEFHUyIsIDQsIDUyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Kw0KPiArICB7TCJOb24tU2VjdXJlIEVMMSB0aW1lciBHU0lWIiwgNCwgNTYsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJOb24tU2VjdXJlIEVMMSB0aW1lciBGTEFH UyIsIDQsIDYwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7 TCJWaXJ0dWFsIHRpbWVyIEdTSVYiLCA0LCA2NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIlZpcnR1YWwgdGltZXIgRkxBR1MiLCA0LCA2OCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiTm9uLVNlY3VyZSBFTDIgdGltZXIg R1NJViIsIDQsIDcyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi Tm9uLVNlY3VyZSBFTDIgdGltZXIgRkxBR1MiLCA0LCA3NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiQ250UmVhZEJhc2UgUGh5c2ljYWwgYWRkcmVzcyIs IDgsIDgwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gTlVMTH0sDQo+ICsgIHtMIlBs YXRmb3JtIFRpbWVyIENvdW50IiwgNCwgODgsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikm R3RkdFBsYXRmb3JtVGltZXJDb3VudCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBsYXRmb3JtIFRp bWVyIE9mZnNldCIsIDQsIDkyLCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmR3RkdFBs YXRmb3JtVGltZXJPZmZzZXQsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQ SV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUGxhdGZvcm0gdGltZXIgaGVhZGVyLg0KPiAr Ki8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHdFBsYXRmb3JtVGltZXJIZWFkZXJQYXJz ZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIE5VTEwsIE5VTEwsIChWT0lEKiopJlBsYXRm b3JtVGltZXJUeXBlLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMiwgMSwgTlVMTCwg TlVMTCwgKFZPSUQqKikmUGxhdGZvcm1UaW1lckxlbmd0aCwgTlVMTCwNCj4gTlVMTH0sDQo+ICsg IHtMIlJlc2VydmVkIiwgMSwgMywgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307 DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBQbGF0Zm9y bSBHVCBCbG9jay4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR3RCbG9ja1Bh cnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmR3RC bG9ja0xlbmd0aCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMSwgMywgTCIleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQaHlzaWNhbCBhZGRyZXNzIChDbnRD dGxCYXNlKSIsIDgsIDQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiVGltZXIgQ291bnQiLCA0LCAxMiwgTCIlZCIsIE5VTEwsIChWT0lEKiopJkd0QmxvY2tUaW1l ckNvdW50LA0KPiArICAgVmFsaWRhdGVHdEJsb2NrVGltZXJDb3VudCwgTlVMTH0sDQo+ICsgIHtM IlRpbWVyIE9mZnNldCIsIDQsIDE2LCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmR3RCbG9ja1RpbWVy T2Zmc2V0LA0KPiBOVUxMLA0KPiArICAgIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQ SV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR1QgQmxvY2sgdGltZXIuDQo+ICsqLw0KPiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEd0QmxvY2tUaW1lclBhcnNlcltdID0gew0KPiArICB7 TCJGcmFtZSBOdW1iZXIiLCAxLCAwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIlJlc2VydmVkIiwgMywgMSwgTCIleCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJQaHlzaWNhbCBhZGRyZXNzIChDbnRCYXNlWCkiLCA4LCA0LCBM IjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBoeXNpY2FsIGFkZHJl c3MgKENudEVMMEJhc2VYKSIsIDgsIDEyLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4g KyAgICBOVUxMfSwNCj4gKyAge0wiUGh5c2ljYWwgVGltZXIgR1NJViIsIDQsIDIwLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGh5c2ljYWwgVGltZXIgRmxhZ3Mi LCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlZpcnR1 YWwgVGltZXIgR1NJViIsIDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiVmlydHVhbCBUaW1lciBGbGFncyIsIDQsIDMyLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQ29tbW9uIEZsYWdzIiwgNCwgMzYsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIg YXJyYXkgZGVzY3JpYmluZyB0aGUgUGxhdGZvcm0gV2F0Y2hkb2cuDQo+ICsqLw0KPiArU1RBVElD IENPTlNUIEFDUElfUEFSU0VSIFNCU0FHZW5lcmljV2F0Y2hkb2dQYXJzZXJbXSA9IHsNCj4gKyAg e0wiVHlwZSIsIDEsIDAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi TGVuZ3RoIiwgMiwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJS ZXNlcnZlZCIsIDEsIDMsIEwiJXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi UmVmcmVzaEZyYW1lIFBoeXNpY2FsIGFkZHJlc3MiLCA4LCA0LCBMIjB4JWx4IiwgTlVMTCwgTlVM TCwgTlVMTCwNCj4gTlVMTH0sDQo+ICsgIHtMIkNvbnRyb2xGcmFtZSBQaHlzaWNhbCBhZGRyZXNz IiwgOCwgMTIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxMfSwNCj4gKyAge0wi V2F0Y2hkb2cgVGltZXIgR1NJViIsIDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gKyAge0wiV2F0Y2hkb2cgVGltZXIgRmxhZ3MiLCA0LCAyNCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZh bGlkYXRlcyB0aGUgR1QgQmxvY2sgdGltZXIgY291bnQuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBh cmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24g ZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRv IHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1Zh bGlkYXRlR3RCbG9ja1RpbWVyQ291bnQgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBW T0lEKiAgQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBCbG9ja1RpbWVyQ291bnQg PSAqKFVJTlQzMiopUHRyOw0KPiArICBpZiAoQmxvY2tUaW1lckNvdW50ID4gOCkgew0KPiArICAg IEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVS Uk9SOiBUaW1lciBDb3VudCA9ICVkLiBNYXggVGltZXIgQ291bnQgaXMgOC4iLA0KPiArICAgICAg QmxvY2tUaW1lckNvdW50DQo+ICsgICAgICApOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgUGxhdGZvcm0gR1QgQmxvY2suDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgR1QgQmxvY2sgZGF0 YS4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBMZW5ndGggb2YgdGhlIEdUIEJsb2NrIHN0cnVj dHVyZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBHVEJsb2NrICgNCj4gKyAg SU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aA0KPiArICApDQo+ICt7DQo+ICsg IFVJTlQzMiBJbmRleDsNCj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gKyAgVUlOVDE2IEdUQmxvY2tU aW1lckxlbmd0aDsNCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAgICAg ICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgMiwNCj4gKyAgICAgICAgICAgICAiR1QgQmxvY2si LA0KPiArICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICBMZW5ndGgsDQo+ICsgICAg ICAgICAgICAgUEFSU0VSX1BBUkFNUyAoR3RCbG9ja1BhcnNlcikNCj4gKyAgICAgICAgICAgICAp Ow0KPiArICBHVEJsb2NrVGltZXJMZW5ndGggPSAoKkd0QmxvY2tMZW5ndGggLSBPZmZzZXQpIC8g KCpHdEJsb2NrVGltZXJDb3VudCk7DQo+ICsgIExlbmd0aCAtPSBPZmZzZXQ7DQo+ICsNCj4gKyAg aWYgKCpHdEJsb2NrVGltZXJDb3VudCAhPSAwKSB7DQo+ICsgICAgUHRyICs9ICgqR3RCbG9ja1Rp bWVyT2Zmc2V0KTsNCj4gKyAgICBJbmRleCA9IDA7DQo+ICsgICAgd2hpbGUgKChJbmRleCA8ICgq R3RCbG9ja1RpbWVyQ291bnQpKSAmJiAoTGVuZ3RoID49DQo+IEdUQmxvY2tUaW1lckxlbmd0aCkp IHsNCj4gKyAgICAgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgICAgIFRS VUUsDQo+ICsgICAgICAgICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgICAgICAgICJHVCBCbG9j ayBUaW1lciIsDQo+ICsgICAgICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICAgICAg R1RCbG9ja1RpbWVyTGVuZ3RoLA0KPiArICAgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChH dEJsb2NrVGltZXJQYXJzZXIpDQo+ICsgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgICAvLyBJ bmNyZW1lbnQgYnkgR1QgQmxvY2sgVGltZXIgc3RydWN0dXJlIHNpemUNCj4gKyAgICAgIFB0ciAr PSBPZmZzZXQ7DQo+ICsgICAgICBMZW5ndGggLT0gT2Zmc2V0Ow0KPiArICAgICAgSW5kZXgrKzsN Cj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAoTGVuZ3RoICE9IDApIHsNCj4gKyAgICAgIEluY3Jl bWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBQcmludCAoDQo+ICsgICAgICAgIEwiRVJST1I6 R1QgQmxvY2sgVGltZXIgbGVuZ3RoIG1pc21hdGNoLiBVbnBhcnNlZCAlZCBieXRlcy5cbiIsDQo+ ICsgICAgICAgIExlbmd0aA0KPiArICAgICAgICApOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArfQ0K PiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFBsYXRmb3JtIFdhdGNoZG9nIHRp bWVyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIHdhdGNoZG9nIHRpbWVyIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgTGVu Z3RoIG9mIHRoZSB3YXRjaGRvZyB0aW1lciBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDDQo+ ICtWT0lEDQo+ICtEdW1wV2F0Y2hkb2dUaW1lciAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsg IElOIFVJTlQxNiBMZW5ndGgNCj4gKyAgKQ0KPiArew0KPiArICBQYXJzZUFjcGkgKA0KPiArICAg IFRSVUUsDQo+ICsgICAgMiwNCj4gKyAgICAiU0JTQSBHZW5lcmljIFdhdGNoZG9nIiwNCj4gKyAg ICBQdHIsDQo+ICsgICAgTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKFNCU0FHZW5lcmlj V2F0Y2hkb2dQYXJzZXIpDQo+ICsgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rp b24gcGFyc2VzIHRoZSBBQ1BJIEdURFQgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxl ZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgR1REVCB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRo ZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGFyc2Vz IHRoZSBmb2xsb3dpbmcgcGxhdGZvcm0gdGltZXIgc3RydWN0dXJlczoNCj4gKyAgICAtIEdUIEJs b2NrIHRpbWVyDQo+ICsgICAgLSBXYXRjaGRvZyB0aW1lcg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rp b24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhl IEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxl TGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNw aVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZP SUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpR3RkdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2Us DQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwN Cj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIFVJ TlQzMiBJbmRleDsNCj4gKyAgVUlOVDgqIFRpbWVyUHRyOw0KPiArDQo+ICsgIGlmICghVHJhY2Up IHsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBQYXJzZUFjcGkgKA0KPiArICAg IFRSVUUsDQo+ICsgICAgMCwNCj4gKyAgICAiR1REVCIsDQo+ICsgICAgUHRyLA0KPiArICAgIEFj cGlUYWJsZUxlbmd0aCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChHdGR0UGFyc2VyKQ0KPiArICAg ICk7DQo+ICsNCj4gKyAgaWYgKCpHdGR0UGxhdGZvcm1UaW1lckNvdW50ICE9IDApIHsNCj4gKyAg ICBUaW1lclB0ciA9IFB0ciArICgqR3RkdFBsYXRmb3JtVGltZXJPZmZzZXQpOw0KPiArICAgIElu ZGV4ID0gMDsNCj4gKyAgICBkbyB7DQo+ICsgICAgICAvLyBQYXJzZSB0aGUgUGxhdGZvcm0gVGlt ZXIgSGVhZGVyDQo+ICsgICAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgICBGQUxTRSwNCj4gKyAg ICAgICAgMCwNCj4gKyAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgVGltZXJQdHIsDQo+ICsgICAg ICAgIDQsICAvLyBHVCBQbGF0Zm9ybSBUaW1lciBzdHJ1Y3R1cmUgaGVhZGVyIGxlbmd0aC4NCj4g KyAgICAgICAgUEFSU0VSX1BBUkFNUyAoR3RQbGF0Zm9ybVRpbWVySGVhZGVyUGFyc2VyKQ0KPiAr ICAgICAgICApOw0KPiArICAgICAgc3dpdGNoICgqUGxhdGZvcm1UaW1lclR5cGUpIHsNCj4gKyAg ICAgICAgY2FzZSBFRklfQUNQSV82XzJfR1REVF9HVF9CTE9DSzoNCj4gKyAgICAgICAgICBEdW1w R1RCbG9jayAoVGltZXJQdHIsICpQbGF0Zm9ybVRpbWVyTGVuZ3RoKTsNCj4gKyAgICAgICAgICBi cmVhazsNCj4gKyAgICAgICAgY2FzZSBFRklfQUNQSV82XzJfR1REVF9TQlNBX0dFTkVSSUNfV0FU Q0hET0c6DQo+ICsgICAgICAgICAgRHVtcFdhdGNoZG9nVGltZXIgKFRpbWVyUHRyLCAqUGxhdGZv cm1UaW1lckxlbmd0aCk7DQo+ICsgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgIGRlZmF1bHQ6 DQo+ICsgICAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgICAgICBQcmlu dCAoDQo+ICsgICAgICAgICAgICBMIkVSUk9SOiBJTlZBTElEIFBsYXRmb3JtIFRpbWVyIFR5cGUg PSAlZFxuIiwNCj4gKyAgICAgICAgICAgICpQbGF0Zm9ybVRpbWVyVHlwZQ0KPiArICAgICAgICAg ICAgKTsNCj4gKyAgICAgICAgICBicmVhazsNCj4gKyAgICAgIH0gLy8gc3dpdGNoDQo+ICsgICAg ICBUaW1lclB0ciArPSAoKlBsYXRmb3JtVGltZXJMZW5ndGgpOw0KPiArICAgICAgSW5kZXgrKzsN Cj4gKyAgICB9IHdoaWxlIChJbmRleCA8ICpHdGR0UGxhdGZvcm1UaW1lckNvdW50KTsNCj4gKyAg fQ0KPiArfQ0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFy YW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFy YW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0K PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVy ZWQuDQo+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRo ZSBBQ1BJIFRhYmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJl YWR5IHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFy YW1ldGVyIGlzIGludmFsaWQNCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8g c3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBhcnNlci4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0d0ZHRQYXJzZXJM aWJDb25zdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg SW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lz dGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiAr ICAgICAgICAgICBFRklfQUNQSV82XzJfR0VORVJJQ19USU1FUl9ERVNDUklQVElPTl9UQUJMRV9T SUdOQVRVUkUsDQo+ICsgICAgICAgICAgIFBhcnNlQWNwaUd0ZHQNCj4gKyAgICAgICAgICAgKTsN Cj4gK30NCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFy YW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFy YW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0K PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0 ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMg bm90IHJlZ2lzdGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtHdGR0 UGFyc2VyTGliRGVzdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAg ICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09O U1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNl ciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9HRU5FUklDX1RJTUVSX0RFU0NSSVBUSU9O X1RBQkxFX1NJR05BVFVSRQ0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0DQo+ IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9H dGR0L0d0ZHRQYXJzZXINCj4gTGliLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyDQo+IExpYi5pbmYNCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uZWJmOWJjOTM0ZWY3MTE5ZTYzOTc5N2ZmYTUNCj4gYWQyNDJjNWUx OWIwZjUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBhcnNlcg0KPiBMaWIuaW5m DQo+IEBAIC0wLDAgKzEsMzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQg KGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMN Cj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMg IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhp cyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBm b3VuZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNl LnBocA0KPiArIw0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJT RCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJ RVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJ TVBMSUVELg0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0g MHgwMDAxMDAxOQ0KPiArICBCQVNFX05BTUUgICAgICA9IEd0ZHRQYXJzZXJMaWINCj4gKyAgRklM RV9HVUlEICAgICAgPSA0NjM4QTU3Mi01OUMwLTRBQUYtQjk5MC1COTVGQTY3RDk2NTYNCj4gKyAg VkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAg ID0gR3RkdFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gR3RkdFBh cnNlckxpYkRlc3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIEd0ZHRQYXJzZXIuYw0K PiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtn L1NoZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIEFjcGlQYXJzZXJMaWINCj4gZGlmZiAtLWdpdA0KPiBh L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9y dC9Jb3J0UGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL0lvcnQvSW9ydFBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1 YzJlZTUzYzQ0OThlMWJjZDNkZmFiZTENCj4gNDM3Mzk2ZDFjODA3MjU2DQo+IC0tLSAvZGV2L251 bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDc0MSBAQA0KPiArLyoq DQo+ICsgIElPUlQgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0g MjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3Jh bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0K PiBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhl IGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi DQo+IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIg UmVmZXJlbmNlKHMpOg0KPiArICAgIC0gSU8gUmVtYXBwaW5nIFRhYmxlLCBQbGF0Zm9ybSBEZXNp Z24gRG9jdW1lbnQsIFJldmlzaW9uIEMsIDE1IE1heQ0KPiAyMDE3DQo+ICsqKi8NCj4gKw0KPiAr I2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvSW9SZW1hcHBpbmdUYWJsZS5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4N Cj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRl IDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiArDQo+ICsvLyBMb2NhbCB2 YXJpYWJsZXMNCj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJ bmZvOw0KPiArDQo+ICsvKiogVGhlIEVJT1JUX05PREUgZW51bSBkZXNjcmliZXMgdGhlIElPUlQg Tm9kZSB0eXBlcy4NCj4gKyovDQo+ICt0eXBlZGVmIGVudW0gSW9ydE5vZGUgew0KPiArICBFSU9S VF9OT0RFX0lUU19HUk9VUCwgICAgICAgIC8vLzwgSVRTIEdyb3VwIG5vZGUNCj4gKyAgRUlPUlRf Tk9ERV9OQU1FRF9DT01QT05FTlQsICAvLy88IE5hbWVkIENvbXBvbmVudCBub2RlDQo+ICsgIEVJ T1JUX05PREVfUk9PVF9DT01QTEVYLCAgICAgLy8vPCBSb290IENvbXBsZXggbm9kZQ0KPiArICBF SU9SVF9OT0RFX1NNTVVWMV9WMiwgICAgICAgIC8vLzwgU01NVSB2MS92MiBub2RlDQo+ICsgIEVJ T1JUX05PREVfU01NVVYzLCAgICAgICAgICAgLy8vPCBTTU1VIHYzIG5vZGUNCj4gKyAgRUlPUlRf Tk9ERV9QTUNHLCAgICAgICAgICAgICAvLy88IFBNQyBncm91cCBub2RlDQo+ICsgIEVJT1JUX05P REVfTUFYDQo+ICt9IEVJT1JUX05PREU7DQo+ICsNCj4gKy8vIExvY2FsIFZhcmlhYmxlcw0KPiAr U1RBVElDIENPTlNUIFVJTlQzMiogSW9ydE5vZGVDb3VudDsNCj4gK1NUQVRJQyBDT05TVCBVSU5U MzIqIElvcnROb2RlT2Zmc2V0Ow0KPiArDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDgqIElvcnROb2Rl VHlwZTsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMTYqIElvcnROb2RlTGVuZ3RoOw0KPiArU1RBVElD IENPTlNUIFVJTlQzMiogSW9ydElkTWFwcGluZ0NvdW50Ow0KPiArU1RBVElDIENPTlNUIFVJTlQz MiogSW9ydElkTWFwcGluZ09mZnNldDsNCj4gKw0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogSW50 ZXJydXB0Q29udGV4dENvdW50Ow0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogSW50ZXJydXB0Q29u dGV4dE9mZnNldDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIFBtdUludGVycnVwdENvdW50Ow0K PiArU1RBVElDIENPTlNUIFVJTlQzMiogUG11SW50ZXJydXB0T2Zmc2V0Ow0KPiArDQo+ICtTVEFU SUMgQ09OU1QgVUlOVDMyKiBJdHNDb3VudDsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFs aWRhdGVzIHRoZSBJRCBNYXBwaW5nIGFycmF5IGNvdW50IGZvciB0aGUgSVRTIG5vZGUuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmll bGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3Bl Y2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291 bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFU SUMNCj4gK1ZPSUQNCj4gK1ZhbGlkYXRlSXRzSWRNYXBwaW5nQ291bnQgKA0KPiArICBJTiBVSU5U OCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKiogVGhp cyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElEIE1hcHBpbmcgYXJyYXkgb2Zmc2V0IGZvciB0aGUg SVRTIG5vZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVy IHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4N Cj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1ZhbGlkYXRlSXRzSWRBcnJheVJlZmVyZW5j ZSAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICk7 DQo+ICsNCj4gKy8qKiBIZWxwZXIgTWFjcm8gZm9yIHBvcHVsYXRpbmcgdGhlIElPUlQgTm9kZSBo ZWFkZXIgaW4gdGhlIEFDUElfUEFSU0VSDQo+ICsgICAgYXJyYXkuDQo+ICsNCj4gKyAgQHBhcmFt IFtvdXRdIFZhbGlkYXRlSWRNYXBwaW5nQ291bnQgICAgT3B0aW9uYWwgcG9pbnRlciB0byBhIGZ1 bmN0aW9uIGZvcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZGF0aW5nIHRoZSBJRCBNYXBwaW5nIGNvdW50Lg0KPiArICBAcGFyYW0gW291dF0gVmFsaWRh dGVJZEFycmF5UmVmZXJlbmNlICBPcHRpb25hbCBwb2ludGVyIHRvIGEgZnVuY3Rpb24gZm9yDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpbmcgdGhl IElEIEFycmF5IHJlZmVyZW5jZS4NCj4gKyovDQo+ICsjZGVmaW5lIFBBUlNFX0lPUlRfTk9ERV9I RUFERVIoVmFsaWRhdGVJZE1hcHBpbmdDb3VudCwgICAgICAgICAgICAgICAgICAgXA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlSWRBcnJheVJlZmVyZW5jZSkgICAg ICAgICAgICAgICAgIFwNCj4gKyAgeyBMIlR5cGUiLCAxLCAwLCBMIiVkIiwgTlVMTCwgKFZPSUQq KikmSW9ydE5vZGVUeXBlLCBOVUxMLCBOVUxMIH0sICAgICBcDQo+ICsgIHsgTCJMZW5ndGgiLCAy LCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmSW9ydE5vZGVMZW5ndGgsIE5VTEwsIE5VTEwgfSwg XA0KPiArICB7IEwiUmV2aXNpb24iLCAxLCAzLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCB9LCAgICAgICAgICAgICAgICAgIFwNCj4gKyAgeyBMIlJlc2VydmVkIiwgNCwgNCwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCB9LCAgICAgICAgICAgICAgICBcDQo+ICsgIHsgTCJO dW1iZXIgb2YgSUQgbWFwcGluZ3MiLCA0LCA4LCBMIiVkIiwgTlVMTCwgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArICAgIChWT0lEKiopJklvcnRJZE1hcHBpbmdDb3VudCwgVmFsaWRhdGVJ ZE1hcHBpbmdDb3VudCwgTlVMTCB9LCAgICAgICAgIFwNCj4gKyAgeyBMIlJlZmVyZW5jZSB0byBJ RCBBcnJheSIsIDQsIDEyLCBMIjB4JXgiLCBOVUxMLCAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgKFZPSUQqKikmSW9ydElkTWFwcGluZ09mZnNldCwgVmFsaWRhdGVJZEFycmF5UmVmZXJl bmNlLCBOVUxMIH0NCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcg dGhlIEFDUEkgSU9SVCBUYWJsZQ0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJ b3J0UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0K PiArICB7TCJOdW1iZXIgb2YgSU9SVCBOb2RlcyIsIDQsIDM2LCBMIiVkIiwgTlVMTCwNCj4gKyAg IChWT0lEKiopJklvcnROb2RlQ291bnQsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJPZmZzZXQgdG8g QXJyYXkgb2YgSU9SVCBOb2RlcyIsIDQsIDQwLCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQq KikmSW9ydE5vZGVPZmZzZXQsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDQsIDQ0 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFu IEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgbm9kZSBoZWFkZXIgc3RydWN0 dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZUhlYWRlclBh cnNlcltdID0gew0KPiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxMKQ0KPiAr fTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQg U01NVXYxLzIgbm9kZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5v ZGVTbW11VjFWMlBhcnNlcltdID0gew0KPiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxM LCBOVUxMKSwNCj4gKyAge0wiQmFzZSBBZGRyZXNzIiwgOCwgMTYsIEwiMHglbHgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU3BhbiIsIDgsIDI0LCBMIjB4JWx4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk1vZGVsIiwgNCwgMzIsIEwiJWQiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRmxhZ3MiLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlZmVyZW5jZSB0byBHbG9iYWwgSW50ZXJydXB0 IEFycmF5IiwgNCwgNDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ICsgICBOVUxMfSwN Cj4gKyAge0wiTnVtYmVyIG9mIGNvbnRleHQgaW50ZXJydXB0cyIsIDQsIDQ0LCBMIiVkIiwgTlVM TCwNCj4gKyAgIChWT0lEKiopJkludGVycnVwdENvbnRleHRDb3VudCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIlJlZmVyZW5jZSB0byBDb250ZXh0IEludGVycnVwdCBBcnJheSIsIDQsIDQ4LCBMIjB4 JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmSW50ZXJydXB0Q29udGV4dE9mZnNldCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIk51bWJlciBvZiBQTVUgSW50ZXJydXB0cyIsIDQsIDUyLCBMIiVkIiwg TlVMTCwNCj4gKyAgIChWT0lEKiopJlBtdUludGVycnVwdENvdW50LCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiUmVmZXJlbmNlIHRvIFBNVSBJbnRlcnJ1cHQgQXJyYXkiLCA0LCA1NiwgTCIweCV4Iiwg TlVMTCwNCj4gKyAgIChWT0lEKiopJlBtdUludGVycnVwdE9mZnNldCwgTlVMTCwgTlVMTH0sDQo+ ICsNCj4gKyAgLy8gSW50ZXJydXB0IEFycmF5DQo+ICsgIHtMIlNNTVVfTlNnSXJwdCIsIDQsIDYw LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU01NVV9OU2dJcnB0 IGludGVycnVwdCBmbGFncyIsIDQsIDY0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBO VUxMfSwNCj4gKyAge0wiU01NVV9OU2dDZmdJcnB0IiwgNCwgNjgsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTTU1VX05TZ0NmZ0lycHQgaW50ZXJydXB0IGZsYWdz IiwgNCwgNzIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+IE5VTEx9DQo+ICt9Ow0KPiAr DQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgU01NVXYxLzIgTm9k ZSBJbnRlcnJ1cHQgQXJyYXkuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElu dGVycnVwdEFycmF5UGFyc2VyW10gPSB7DQo+ICsgIHtMIiAgSW50ZXJydXB0IEdTSVYiLCA0LCAw LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiICBGbGFncyIsIDQs IDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiog QW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBJRCBNYXBwaW5nLg0KPiAr Ki8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZUlkTWFwcGluZ1BhcnNlcltd ID0gew0KPiArICB7TCIgIElucHV0IGJhc2UiLCA0LCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiICBOdW1iZXIgb2YgSURzIiwgNCwgNCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIiAgT3V0cHV0IGJhc2UiLCA0LCA4LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiICBPdXRwdXQgcmVmZXJlbmNl IiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCIgIEZs YWdzIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiAr DQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBTTU1VdjMg bm9kZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVTbW11VjNQ YXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfSU9SVF9OT0RFX0hFQURFUiAoTlVMTCwgTlVMTCksDQo+ ICsgIHtMIkJhc2UgQWRkcmVzcyIsIDgsIDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgMjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiVkFUT1MgQWRkcmVzcyIsIDgsIDMyLCBMIjB4JWx4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk1vZGVsIiwgNCwgNDAsIEwiJWQiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRXZlbnQiLCA0LCA0NCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBSSSIsIDQsIDQ4LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR0VSUiIsIDQsIDUyLCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU3luYyIsIDQsIDU2LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFy cmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgSVRTIG5vZGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNU IEFDUElfUEFSU0VSIElvcnROb2RlSXRzUGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0lPUlRfTk9E RV9IRUFERVIgKA0KPiArICAgIFZhbGlkYXRlSXRzSWRNYXBwaW5nQ291bnQsDQo+ICsgICAgVmFs aWRhdGVJdHNJZEFycmF5UmVmZXJlbmNlDQo+ICsgICAgKSwNCj4gKyAge0wiICBOdW1iZXIgb2Yg SVRTcyIsIDQsIDE2LCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmSXRzQ291bnQsIE5VTEx9DQo+ICt9 Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSVRTIElE Lg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJdHNJZFBhcnNlcltdID0gew0K PiArICB7IEwiICBHSUMgSVRTIElkZW50aWZpZXIiLCA0LCAwLCBMIiVkIiwgTlVMTCwgTlVMTCwg TlVMTCB9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmlu ZyB0aGUgSU9SVCBOYW1lcyBDb21wb25lbnQgbm9kZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1Qg QUNQSV9QQVJTRVIgSW9ydE5vZGVOYW1lZENvbXBvbmVudFBhcnNlcltdID0gew0KPiArICBQQVJT RV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxMKSwNCj4gKyAge0wiTm9kZSBGbGFncyIsIDQs IDE2LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk1lbW9yeSBhY2Nl c3MgcHJvcGVydGllcyIsIDgsIDIwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIkRldmljZSBtZW1vcnkgYWRkcmVzcyBzaXplIGxpbWl0IiwgMSwgMjgsIEwiJWQi LCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElf UEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgUm9vdCBDb21wbGV4IG5vZGUuDQo+ICsq Lw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnROb2RlUm9vdENvbXBsZXhQYXJzZXJb XSA9IHsNCj4gKyAgUEFSU0VfSU9SVF9OT0RFX0hFQURFUiAoTlVMTCwgTlVMTCksDQo+ICsgIHtM Ik1lbW9yeSBhY2Nlc3MgcHJvcGVydGllcyIsIDgsIDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFUUyBBdHRyaWJ1dGUiLCA0LCAyNCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBDSSBTZWdtZW50IG51bWJlciIsIDQsIDI4 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFu IEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgUE1DRyBub2RlLg0KPiArKi8N Cj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZVBtY2dQYXJzZXJbXSA9IHsNCj4g KyAgUEFSU0VfSU9SVF9OT0RFX0hFQURFUiAoTlVMTCwgTlVMTCksDQo+ICsgIHtMIkJhc2UgQWRk cmVzcyIsIDgsIDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtM Ik92ZXJmbG93IGludGVycnVwdCBHU0lWIiwgNCwgMjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJOb2RlIHJlZmVyZW5jZSIsIDQsIDI4LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gK307DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZh bGlkYXRlcyB0aGUgSUQgTWFwcGluZyBhcnJheSBjb3VudCBmb3IgdGhlIElUUyBub2RlLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZp ZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNw ZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNv dWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RB VElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZUl0c0lkTWFwcGluZ0NvdW50ICgNCj4gKyAgSU4gVUlO VDgqIFB0ciwNCj4gKyAgVk9JRCogICAgIENvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArICBpZiAo KihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4g KyAgICBQcmludCAoTCJcbkVSUk9SOiBJT1JUIElEIE1hcHBpbmcgY291bnQgbXVzdCBiZSB6ZXJv LiIpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0 aGUgSUQgTWFwcGluZyBhcnJheSBvZmZzZXQgZm9yIHRoZSBJVFMgbm9kZS4NCj4gKw0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRh Lg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBp bmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBh IHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiAr Vk9JRA0KPiArVmFsaWRhdGVJdHNJZEFycmF5UmVmZXJlbmNlICgNCj4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArICBpZiAoKihVSU5U MzIqKVB0ciAhPSAwKSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQ cmludCAoTCJcbkVSUk9SOiBJT1JUIElEIE1hcHBpbmcgb2Zmc2V0IG11c3QgYmUgemVyby4iKTsN Cj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQg Tm9kZSBJZCBNYXBwaW5nIGFycmF5Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBJT1JUIFRhYmxlLg0KPiArICBAcGFyYW0g W2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCj4gKyAgQHBhcmFtIFtp bl0gTWFwcGluZ09mZnNldCAgVGhlIG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0 YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBJb3J0Tm9kZUlkTWFwcGlu Z3MgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50LA0K PiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQ4KiBJ ZE1hcHBpbmdQdHI7DQo+ICsgIFVJTlQzMiBJbmRleDsNCj4gKyAgVUlOVDMyIE9mZnNldDsNCj4g KyAgQ0hBUjggIEJ1ZmZlcls0MF07ICAvLyBVc2VkIGZvciBBc2NpaU5hbWUgcGFyYW0gb2YgUGFy c2VBY3BpDQo+ICsNCj4gKyAgSWRNYXBwaW5nUHRyID0gUHRyICsgTWFwcGluZ09mZnNldDsNCj4g KyAgSW5kZXggPSAwOw0KPiArICB3aGlsZSAoSW5kZXggPCBNYXBwaW5nQ291bnQpIHsNCj4gKyAg ICBBc2NpaVNQcmludCAoDQo+ICsgICAgICBCdWZmZXIsDQo+ICsgICAgICBzaXplb2YgKEJ1ZmZl ciksDQo+ICsgICAgICAiSUQgTWFwcGluZyBbJWRdIiwNCj4gKyAgICAgIEluZGV4DQo+ICsgICAg ICApOw0KPiArICAgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgICBUUlVF LA0KPiArICAgICAgICAgICAgICAgNCwNCj4gKyAgICAgICAgICAgICAgIEJ1ZmZlciwNCj4gKyAg ICAgICAgICAgICAgIElkTWFwcGluZ1B0ciwNCj4gKyAgICAgICAgICAgICAgIDIwLA0KPiArICAg ICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVJZE1hcHBpbmdQYXJzZXIpDQo+ICsg ICAgICAgICAgICAgICApOw0KPiArICAgIElkTWFwcGluZ1B0ciArPSBPZmZzZXQ7DQo+ICsgICAg SW5kZXgrKzsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIElPUlQgU01NVXYxLzIgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAg ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2lu XSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0g TWFwcGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJhbSBbaW5dIE1h cHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUu DQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVTbW11VjFWMiAoDQo+ ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJTlQxNiBMZW5ndGgsDQo+ICsgIElOIFVJTlQz MiBNYXBwaW5nQ291bnQsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ICsgICkNCj4g K3sNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBDSEFSOCAg QnVmZmVyWzUwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4g Kw0KPiArICBVSU5UOCogQXJyYXlQdHI7DQo+ICsNCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBU UlVFLA0KPiArICAgIDIsDQo+ICsgICAgIlNNTVV2MSBvciBTTU1VdjIgTm9kZSIsDQo+ICsgICAg UHRyLA0KPiArICAgIExlbmd0aCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZVNtbXVW MVYyUGFyc2VyKQ0KPiArICAgICk7DQo+ICsNCj4gKyAgQXJyYXlQdHIgPSBQdHIgKyAqSW50ZXJy dXB0Q29udGV4dE9mZnNldDsNCj4gKyAgSW5kZXggPSAwOw0KPiArICB3aGlsZSAoSW5kZXggPCAq SW50ZXJydXB0Q29udGV4dENvdW50KSB7DQo+ICsgICAgQXNjaWlTUHJpbnQgKA0KPiArICAgICAg QnVmZmVyLA0KPiArICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAgICAgIkNvbnRleHQgSW50 ZXJydXB0cyBBcnJheSBbJWRdIiwNCj4gKyAgICAgIEluZGV4DQo+ICsgICAgICApOw0KPiArICAg IE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAg ICAgICAgICAgNCwNCj4gKyAgICAgICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAg IEFycmF5UHRyLA0KPiArICAgICAgICAgICAgICAgOCwNCj4gKyAgICAgICAgICAgICAgIFBBUlNF Ul9QQVJBTVMgKEludGVycnVwdEFycmF5UGFyc2VyKQ0KPiArICAgICAgICAgICAgICAgKTsNCj4g KyAgICBBcnJheVB0ciArPSBPZmZzZXQ7DQo+ICsgICAgSW5kZXgrKzsNCj4gKyAgfQ0KPiArDQo+ ICsgIEFycmF5UHRyID0gUHRyICsgKlBtdUludGVycnVwdE9mZnNldDsNCj4gKyAgSW5kZXggPSAw Ow0KPiArICB3aGlsZSAoSW5kZXggPCAqUG11SW50ZXJydXB0Q291bnQpIHsNCj4gKyAgICBBc2Np aVNQcmludCAoDQo+ICsgICAgICBCdWZmZXIsDQo+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ ICsgICAgICAiUE1VIEludGVycnVwdHMgQXJyYXkgWyVkXSIsDQo+ICsgICAgICBJbmRleA0KPiAr ICAgICAgKTsNCj4gKyAgICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgICAgICAg VFJVRSwNCj4gKyAgICAgICAgICAgICAgIDQsDQo+ICsgICAgICAgICAgICAgICBCdWZmZXIsDQo+ ICsgICAgICAgICAgICAgICBBcnJheVB0ciwNCj4gKyAgICAgICAgICAgICAgIDgsDQo+ICsgICAg ICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJbnRlcnJ1cHRBcnJheVBhcnNlcikNCj4gKyAgICAg ICAgICAgICAgICk7DQo+ICsgICAgQXJyYXlQdHIgKz0gT2Zmc2V0Ow0KPiArICAgIEluZGV4Kys7 DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoKklvcnRJZE1hcHBpbmdDb3VudCAhPSAwKSB7DQo+ICsg ICAgRHVtcElvcnROb2RlSWRNYXBwaW5ncyAoUHRyLCBNYXBwaW5nQ291bnQsIE1hcHBpbmdPZmZz ZXQpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUg SU9SVCBTTU1VdjMgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5n dGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGlu Z0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdP ZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ICsq Lw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVTbW11VjMgKA0KPiArICBJTiBV SU5UOCogUHRyLA0KPiArICBJTiBVSU5UMTYgTGVuZ3RoLA0KPiArICBJTiBVSU5UMzIgTWFwcGlu Z0NvdW50LA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiArICApDQo+ICt7DQo+ICsg IFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAyLA0KPiArICAgICJTTU1VVjMgTm9k ZSIsDQo+ICsgICAgUHRyLA0KPiArICAgIExlbmd0aCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChJ b3J0Tm9kZVNtbXVWM1BhcnNlcikNCj4gKyAgICApOw0KPiArDQo+ICsgIGlmICgqSW9ydElkTWFw cGluZ0NvdW50ICE9IDApIHsNCj4gKyAgICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1h cHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIElUUyBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBb aW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiAr Ki8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcElvcnROb2RlSXRzICgNCj4gKyAgSU4gVUlO VDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQz MiBPZmZzZXQ7DQo+ICsgIFVJTlQzMiBJbmRleDsNCj4gKyAgVUlOVDgqIEl0c0lkUHRyOw0KPiAr ICBDSEFSOCAgQnVmZmVyWzgwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJz ZUFjcGkNCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgICAgIFRS VUUsDQo+ICsgICAgICAgICAgICAgMiwNCj4gKyAgICAgICAgICAgICAiSVRTIE5vZGUiLA0KPiAr ICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICBMZW5ndGgsDQo+ICsgICAgICAgICAg ICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVJdHNQYXJzZXIpDQo+ICsgICAgICAgICAgICAgKTsN Cj4gKw0KPiArICBJdHNJZFB0ciA9IFB0ciArIE9mZnNldDsNCj4gKyAgSW5kZXggPSAwOw0KPiAr ICB3aGlsZSAoSW5kZXggPCAqSXRzQ291bnQpIHsNCj4gKyAgICBBc2NpaVNQcmludCAoDQo+ICsg ICAgICBCdWZmZXIsDQo+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ICsgICAgICAiR0lDIElU UyBJZGVudGlmaWVyIEFycmF5IFslZF0iLA0KPiArICAgICAgSW5kZXgNCj4gKyAgICAgICk7DQo+ ICsgICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICAgIFRSVUUsDQo+ICsg ICAgICAgICAgICAgICA0LA0KPiArICAgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAg ICAgICAgSXRzSWRQdHIsDQo+ICsgICAgICAgICAgICAgICA0LA0KPiArICAgICAgICAgICAgICAg UEFSU0VSX1BBUkFNUyAoSXRzSWRQYXJzZXIpDQo+ICsgICAgICAgICAgICAgICApOw0KPiArICAg IEl0c0lkUHRyICs9IE9mZnNldDsNCj4gKyAgICBJbmRleCsrOw0KPiArICB9DQo+ICsNCj4gKyAg Ly8gTm90ZTogSVRTIGRvZXMgbm90IGhhdmUgdGhlIElEIE1hcHBpbmdzIEFycmF5DQo+ICt9DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBOYW1lZCBDb21wb25lbnQg bm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAgICBM ZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0NvdW50ICAgVGhl IElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBv ZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ICsqLw0KPiArU1RBVElD DQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVOYW1lZENvbXBvbmVudCAoDQo+ICsgIElOIFVJTlQ4 KiBQdHIsDQo+ICsgIElOIFVJTlQxNiBMZW5ndGgsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nQ291 bnQsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlO VDMyIE9mZnNldDsNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5UOCogRGV2aWNlTmFtZVB0 cjsNCj4gKyAgVUlOVDMyIERldmljZU5hbWVMZW5ndGg7DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFy c2VBY3BpICgNCj4gKyAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgIDIsDQo+ICsg ICAgICAgICAgICAgIk5hbWVkIENvbXBvbmVudCBOb2RlIiwNCj4gKyAgICAgICAgICAgICBQdHIs DQo+ICsgICAgICAgICAgICAgTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMg KElvcnROb2RlTmFtZWRDb21wb25lbnRQYXJzZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKw0K PiArICBEZXZpY2VOYW1lUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArICAvLyBFc3RpbWF0ZSB0aGUg RGV2aWNlIE5hbWUgbGVuZ3RoDQo+ICsgIERldmljZU5hbWVMZW5ndGggPSBMZW5ndGggLSBPZmZz ZXQgLSAoTWFwcGluZ0NvdW50ICogMjApOw0KPiArICBQcmludEZpZWxkTmFtZSAoMiwgTCJEZXZp Y2UgT2JqZWN0IE5hbWUiKTsNCj4gKyAgSW5kZXggPSAwOw0KPiArICB3aGlsZSAoKEluZGV4IDwg RGV2aWNlTmFtZUxlbmd0aCkgJiYgKERldmljZU5hbWVQdHJbSW5kZXhdICE9IDApKSB7DQo+ICsg ICAgUHJpbnQgKEwiJWMiLCBEZXZpY2VOYW1lUHRyW0luZGV4KytdKTsNCj4gKyAgfQ0KPiArICBQ cmludCAoTCJcbiIpOw0KPiArDQo+ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50ICE9IDApIHsN Cj4gKyAgICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFwcGlu Z09mZnNldCk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBJT1JUIFJvb3QgQ29tcGxleCBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJh bSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0g W2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCj4gKyAgQHBhcmFtIFtp bl0gTWFwcGluZ09mZnNldCAgVGhlIG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0 YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBJb3J0Tm9kZVJvb3RDb21w bGV4ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gKyAg SU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCj4g KyAgKQ0KPiArew0KPiArICBQYXJzZUFjcGkgKA0KPiArICAgIFRSVUUsDQo+ICsgICAgMiwNCj4g KyAgICAiUm9vdCBDb21wbGV4IE5vZGUiLA0KPiArICAgIFB0ciwNCj4gKyAgICBMZW5ndGgsDQo+ ICsgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVSb290Q29tcGxleFBhcnNlcikNCj4gKyAgICAp Ow0KPiArDQo+ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50ICE9IDApIHsNCj4gKyAgICBEdW1w SW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIFBN Q0cgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAg ICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0NvdW50ICAg VGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQgIFRo ZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ICsqLw0KPiArU1RB VElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVQbWNnICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwN Cj4gKyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4g KyAgSU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCj4gKykNCj4gK3sNCj4gKyAgUGFyc2VBY3BpICgN Cj4gKyAgICBUUlVFLA0KPiArICAgIDIsDQo+ICsgICAgIlBNQ0cgTm9kZSIsDQo+ICsgICAgUHRy LA0KPiArICAgIExlbmd0aCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZVBtY2dQYXJz ZXIpDQo+ICsgICk7DQo+ICsNCj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgIT0gMCkgew0K PiArICAgIER1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKFB0ciwgTWFwcGluZ0NvdW50LCBNYXBwaW5n T2Zmc2V0KTsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50ID4gMSkg ew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAg ICAgTCJFUlJPUjogSUQgbWFwcGluZyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMS4gSWQgTWFw cGluZyBDb3VudA0KPiA9JWRcbiIsDQo+ICsgICAgICAqSW9ydElkTWFwcGluZ0NvdW50DQo+ICsg ICAgICApOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgQUNQSSBJT1JUIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5j dGlvbiBwYXJzZXMgdGhlIElPUlQgdGFibGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSBmaWVs ZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBhcnNlcyB0aGUgZm9sbG93aW5nIG5v ZGVzOg0KPiArICAgIC0gSVRTIEdyb3VwDQo+ICsgICAgLSBOYW1lZCBDb21wb25lbnQNCj4gKyAg ICAtIFJvb3QgQ29tcGxleA0KPiArICAgIC0gU01NVXYxLzINCj4gKyAgICAtIFNNTVV2Mw0KPiAr ICAgIC0gUE1DRw0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0 aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFj ZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFy YW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1 ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUg QUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9u IG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VB Y3BpSW9ydCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0K PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFi bGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ICsgIFVJTlQz MiBJbmRleDsNCj4gKyAgVUlOVDgqIE5vZGVQdHI7DQo+ICsNCj4gKyAgaWYgKCFUcmFjZSkgew0K PiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJV RSwNCj4gKyAgICAwLA0KPiArICAgICJJT1JUIiwNCj4gKyAgICBQdHIsDQo+ICsgICAgQWNwaVRh YmxlTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKElvcnRQYXJzZXIpDQo+ICsgICAgKTsN Cj4gKyAgT2Zmc2V0ID0gKklvcnROb2RlT2Zmc2V0Ow0KPiArICBOb2RlUHRyID0gUHRyICsgT2Zm c2V0Ow0KPiArICBJbmRleCA9IDA7DQo+ICsNCj4gKyAgd2hpbGUgKChJbmRleCA8ICpJb3J0Tm9k ZUNvdW50KSAmJiAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSkgew0KPiArICAgIC8vIFBhcnNl IHRoZSBJT1JUIE5vZGUgSGVhZGVyDQo+ICsgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgIEZBTFNF LA0KPiArICAgICAgMCwNCj4gKyAgICAgICJJT1JUIE5vZGUgSGVhZGVyIiwNCj4gKyAgICAgIE5v ZGVQdHIsDQo+ICsgICAgICAxNiwNCj4gKyAgICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2RlSGVh ZGVyUGFyc2VyKQ0KPiArICAgICAgKTsNCj4gKyAgICBpZiAoKklvcnROb2RlTGVuZ3RoID09IDAp IHsNCj4gKyAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBQcmludCAoTCJF UlJPUjogUGFyc2VyIGVycm9yLiBJbnZhbGlkIHRhYmxlIGRhdGEuXG4iKTsNCj4gKyAgICAgIHJl dHVybjsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBQcmludEZpZWxkTmFtZSAoMiwgTCIqIE5vZGUg T2Zmc2V0ICoiKTsNCj4gKyAgICBQcmludCAoTCIweCV4XG4iLCBPZmZzZXQpOw0KPiArDQo+ICsg ICAgc3dpdGNoICgqSW9ydE5vZGVUeXBlKSB7DQo+ICsgICAgICBjYXNlIEVJT1JUX05PREVfSVRT X0dST1VQOg0KPiArICAgICAgICBEdW1wSW9ydE5vZGVJdHMgKA0KPiArICAgICAgICAgIE5vZGVQ dHIsDQo+ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoDQo+ICsgICAgICAgICAgKTsNCj4gKyAg ICAgICAgYnJlYWs7DQo+ICsgICAgICBjYXNlIEVJT1JUX05PREVfTkFNRURfQ09NUE9ORU5UOg0K PiArICAgICAgICBEdW1wSW9ydE5vZGVOYW1lZENvbXBvbmVudCAoDQo+ICsgICAgICAgICAgTm9k ZVB0ciwNCj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ICsgICAgICAgICAgKklvcnRJ ZE1hcHBpbmdDb3VudCwNCj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ09mZnNldA0KPiArICAg ICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgICAgY2FzZSBFSU9SVF9OT0RFX1JP T1RfQ09NUExFWDoNCj4gKyAgICAgICAgRHVtcElvcnROb2RlUm9vdENvbXBsZXggKA0KPiArICAg ICAgICAgIE5vZGVQdHIsDQo+ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoLA0KPiArICAgICAg ICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZz ZXQNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIGNhc2UgRUlP UlRfTk9ERV9TTU1VVjFfVjI6DQo+ICsgICAgICAgIER1bXBJb3J0Tm9kZVNtbXVWMVYyICgNCj4g KyAgICAgICAgICBOb2RlUHRyLA0KPiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwNCj4gKyAg ICAgICAgICAqSW9ydElkTWFwcGluZ0NvdW50LA0KPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5n T2Zmc2V0DQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICBjYXNl IEVJT1JUX05PREVfU01NVVYzOg0KPiArICAgICAgICBEdW1wSW9ydE5vZGVTbW11VjMgKA0KPiAr ICAgICAgICAgIE5vZGVQdHIsDQo+ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoLA0KPiArICAg ICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdP ZmZzZXQNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIGNhc2Ug RUlPUlRfTk9ERV9QTUNHOg0KPiArICAgICAgICBEdW1wSW9ydE5vZGVQbWNnICgNCj4gKyAgICAg ICAgICBOb2RlUHRyLA0KPiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwNCj4gKyAgICAgICAg ICAqSW9ydElkTWFwcGluZ0NvdW50LA0KPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nT2Zmc2V0 DQo+ICsgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICBkZWZhdWx0 Og0KPiArICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgICBQcmludCAo TCJFUlJPUjogVW5zdXBwb3J0ZWQgSU9SVCBOb2RlIHR5cGUgPSAlZFxuIiwNCj4gKklvcnROb2Rl VHlwZSk7DQo+ICsgICAgfSAvLyBzd2l0Y2gNCj4gKw0KPiArICAgIE5vZGVQdHIgKz0gKCpJb3J0 Tm9kZUxlbmd0aCk7DQo+ICsgICAgT2Zmc2V0ICs9ICgqSW9ydE5vZGVMZW5ndGgpOw0KPiArICB9 IC8vIHdoaWxlDQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxl Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMg cmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNl ciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg d2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VS Q0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArSW9y dFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAg ICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBD T05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNl ciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9JT19SRU1BUFBJTkdfVEFCTEVfU0lHTkFU VVJFLA0KPiArICAgICAgICAgICBQYXJzZUFjcGlJb3J0DQo+ICsgICAgICAgICAgICk7DQo+ICt9 DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtp bl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtp bl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQu DQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCBy ZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArSW9ydFBhcnNl ckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAg IEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5 c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0K PiArICAgICAgICAgICBFRklfQUNQSV82XzJfSU9fUkVNQVBQSU5HX1RBQkxFX1NJR05BVFVSRQ0K PiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXJMaQ0K PiBiLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyTGkNCj4gYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u M2VjY2MzYmVmMzQwNDAyNzE3ZjI5ZTgyNjgNCj4gNGZkZTUwNmJiNWYyMmQNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0lvcnQvSW9ydFBhcnNlckxpDQo+IGIuaW5mDQo+IEBAIC0wLDAgKzEsMzMg QEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBB Uk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRoaXMgcHJvZ3Jh bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQg bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBC U0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArIyAgaHR0 cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0KPiArIyAg VEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJB UyBJUyINCj4gQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJ T05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIyMNCj4g Kw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiArICBC QVNFX05BTUUgICAgICA9IElvcnRQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAgICAgPSAzMUNG OUE1MC0wQjJBLTRGMzMtQkQyQy0zNjA2RTM1QUE5RUYNCj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAx LjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJBUllfQ0xBU1Mg ID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gSW9ydFBhcnNlckxpYkNv bnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gSW9ydFBhcnNlckxpYkRlc3RydWN0b3IN Cj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIElvcnRQYXJzZXIuYw0KPiArDQo+ICtbUGFja2FnZXNd DQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiAr ICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNd DQo+ICsgIEFjcGlQYXJzZXJMaWINCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0UGFycw0KPiBlci5j DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9NYWR0L01hZHRQYXJzDQo+IGVyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgN Cj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjAwMzY4ODRlMjM2 MDhlNWY0N2ZlYzY1YmMNCj4gOGEwNmQ2MzliYTg3MzkNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysN Cj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L01hZHQvTWFkdFBhcnMNCj4gZXIuYw0KPiBAQCAtMCwwICsxLDM1NiBAQA0KPiArLyoqDQo+ICsg IE1BRFQgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwg QVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQg dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2 YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNl bnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwg dGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJB U0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBL SU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJl bmNlKHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0 ZW1iZXIgMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0Fj cGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJy YXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3 L0FjcGlUYWJsZVBhcnNlci5oPg0KPiArDQo+ICsvLyBMb2NhbCBWYXJpYWJsZXMNCj4gK1NUQVRJ QyBDT05TVCBVSU5UOCogTWFkdEludGVycnVwdENvbnRyb2xsZXJUeXBlOw0KPiArU1RBVElDIENP TlNUIFVJTlQ4KiBNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aDsNCj4gK1NUQVRJQyBBQ1BJ X0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvLyBGb3J3YXJk IGRlY2xhcmF0aW9ucw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZUdJQ0RTeXN0ZW1W ZWN0b3JCYXNlICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQN Cj4gKyk7DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBH SUNDIEludGVycnVwdA0KPiArICAgIENvbnRyb2xsZXIgU3RydWN0dXJlLg0KPiArKi8NCj4gK1NU QVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHaWNDUGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAx LCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwg MSwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIs IDIsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIkNQ VSBJbnRlcmZhY2UgTnVtYmVyIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIkFDUEkgUHJvY2Vzc29yIFVJRCIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbGFncyIsIDQsIDEyLCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGFya2luZyBQcm90b2NvbCBWZXJzaW9uIiwgNCwg MTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlBlcmZv cm1hbmNlIEludGVycnVwdCBHU0lWIiwgNCwgMjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJQYXJrZWQgQWRkcmVzcyIsIDgsIDI0LCBMIjB4JWx4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBoeXNpY2FsIEJhc2UgQWRkcmVzcyIsIDgsIDMy LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdJQ1YiLCA4LCA0 MCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJHSUNIIiwgOCwg NDgsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVkdJQyBNYWlu dGVuYW5jZSBpbnRlcnJ1cHQiLCA0LCA1NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIkdJQ1IgQmFzZSBBZGRyZXNzIiwgOCwgNjAsIEwiMHglbHgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTVBJRFIiLCA4LCA2OCwgTCIweCVseCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQcm9jZXNzb3IgUG93ZXIgRWZmaWNpZW5jeSBD bGFzcyIsIDEsIDc2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiArICAgTlVMTH0sDQo+ ICsgIHtMIlJlc2VydmVkIiwgMywgNzcsIEwiJXggJXggJXgiLCBEdW1wM0NoYXJzLCBOVUxMLCBO VUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2Ny aWJpbmcgdGhlIEdJQ0QgSW50ZXJydXB0DQo+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY0RQYXJzZXJbXSA9IHsNCj4gKyAg e0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJMZW5ndGgiLCAxLCAxLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtM IlJlc2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsN Cj4gKyAge0wiR0lDIElEIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlBoeXNpY2FsIEJhc2UgQWRkcmVzcyIsIDgsIDgsIEwiMHglbHgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU3lzdGVtIFZlY3RvciBCYXNlIiwgNCwgMTYsIEwi MHgleCIsIE5VTEwsIE5VTEwsDQo+ICsgICAgVmFsaWRhdGVHSUNEU3lzdGVtVmVjdG9yQmFzZSwg TlVMTH0sDQo+ICsgIHtMIkdJQyBWZXJzaW9uIiwgMSwgMjAsIEwiJWQiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAzLCAyMSwgTCIleCAleCAleCIsIER1bXAz Q2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJT RVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgTVNJIEZyYW1lIEludGVycnVwdA0KPiArICAgIENvbnRy b2xsZXIgU3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHaWNN U0lGcmFtZVBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJNU0kgRnJhbWUgSUQiLCA0LCA0LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGh5c2ljYWwgQmFzZSBB ZGRyZXNzIiwgOCwgOCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJGbGFncyIsIDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0K PiArICB7TCJTUEkgQ291bnQiLCAyLCAyMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJTUEkgQmFzZSIsIDIsIDIyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcg dGhlIEdJQ1IgSW50ZXJydXB0DQo+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ICsqLw0K PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY1JQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlw ZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5n dGgiLCAxLCAxLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2Vy dmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAg e0wiRGlzY292ZXJ5IFJhbmdlIEJhc2UgQWRkcmVzcyIsIDgsIDQsIEwiMHglbHgiLCBOVUxMLCBO VUxMLCBOVUxMLA0KPiArICAgTlVMTH0sDQo+ICsgIHtMIkRpc2NvdmVyeSBSYW5nZSBMZW5ndGgi LCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4g Ky8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBHSUMgSVRTIEludGVycnVw dA0KPiArICAgIENvbnRyb2xsZXIgU3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBB Q1BJX1BBUlNFUiBHaWNJVFNQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVk IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiR0lDIElUUyBJRCIs IDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQaHlzaWNh bCBCYXNlIEFkZHJlc3MiLCA4LCA4LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlJlc2VydmVkIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0 aGUgQUNQSSBNQURUIFRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBN YWR0UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0K PiArICB7TCJMb2NhbCBJbnRlcnJ1cHQgQ29udHJvbGxlciBBZGRyZXNzIiwgNCwgMzYsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ICsgICBOVUxMfSwNCj4gKyAge0wiRmxhZ3MiLCA0LCA0 MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBB biBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBNQURUIEludGVycnVwdA0KPiArICAg IENvbnRyb2xsZXIgU3RydWN0dXJlIEhlYWRlciBTdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElD IENPTlNUIEFDUElfUEFSU0VSIE1hZHRJbnRlcnJ1cHRDb250cm9sbGVySGVhZGVyUGFyc2VyW10g PSB7DQo+ICsgIHtOVUxMLCAxLCAwLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZNYWR0SW50ZXJydXB0 Q29udHJvbGxlclR5cGUsIE5VTEwsDQo+IE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAxLCBO VUxMLCBOVUxMLCAoVk9JRCoqKSZNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCj4gTlVM TCwNCj4gKyAgIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDIsIDIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0 ZXMgdGhlIFN5c3RlbSBWZWN0b3IgQmFzZSBpbiB0aGUgR0lDRC4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiAr ICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1h dGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50 ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0K PiArVmFsaWRhdGVHSUNEU3lzdGVtVmVjdG9yQmFzZSAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICspDQo+ICt7DQo+ICsgIGlmICgqKFVJTlQzMiopUHRy ICE9IDApIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgN Cj4gKyAgICAgIEwiXG5FUlJPUjogU3lzdGVtIFZlY3RvciBCYXNlIG11c3QgYmUgemVyby4iDQo+ ICsgICAgKTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIEFDUEkgTUFEVCB0YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVu Y3Rpb24gcGFyc2VzIHRoZSBNQURUIHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFi bGUgZmllbGRzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gY3VycmVudGx5IHBhcnNlcyB0aGUg Zm9sbG93aW5nIEludGVycnVwdCBDb250cm9sbGVyDQo+ICsgIFN0cnVjdHVyZXM6DQo+ICsgICAg LSBHSUNDDQo+ICsgICAgLSBHSUNEDQo+ICsgICAgLSBHSUMgTVNJIEZyYW1lDQo+ICsgICAgLSBH SUNSDQo+ICsgICAgLSBHSUMgSVRTDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZv cm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIEBwYXJh bSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMu DQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVu Z3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lv biAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJ DQo+ICtQYXJzZUFjcGlNYWR0ICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlO VDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5U OCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIE9mZnNldDsN Cj4gKyAgVUlOVDgqIEludGVycnVwdENvbnRvbGxlclB0cjsNCj4gKyAgVUlOVDMyIEdJQ0RDb3Vu dCA9IDA7DQo+ICsNCj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0K PiArDQo+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4g KyAgICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAgICJNQURUIiwNCj4gKyAgICAgICAgICAg ICBQdHIsDQo+ICsgICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgICAgICAgICAg IFBBUlNFUl9QQVJBTVMgKE1hZHRQYXJzZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKyAgSW50 ZXJydXB0Q29udG9sbGVyUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArDQo+ICsgIHdoaWxlIChPZmZz ZXQgPCBBY3BpVGFibGVMZW5ndGgpIHsNCj4gKyAgICAvLyBQYXJzZSBJbnRlcnJ1cHQgQ29udHJv bGxlciBTdHJ1Y3R1cmUgdG8gb2J0YWluIExlbmd0aC4NCj4gKyAgICBQYXJzZUFjcGkgKA0KPiAr ICAgICAgRkFMU0UsDQo+ICsgICAgICAwLA0KPiArICAgICAgTlVMTCwNCj4gKyAgICAgIEludGVy cnVwdENvbnRvbGxlclB0ciwNCj4gKyAgICAgIDIsICAvLyAgTGVuZ3RoIGlzIDEgYnl0ZSBhdCBv ZmZzZXQgMQ0KPiArICAgICAgUEFSU0VSX1BBUkFNUyAoTWFkdEludGVycnVwdENvbnRyb2xsZXJI ZWFkZXJQYXJzZXIpDQo+ICsgICAgICApOw0KPiArDQo+ICsgICAgaWYgKCgoT2Zmc2V0ICsgKCpN YWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCkpID4gQWNwaVRhYmxlTGVuZ3RoKSB8fA0KPiAr ICAgICAgICAoKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoIDwgNCkpIHsNCj4gKyAgICAg IEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBQcmludCAoDQo+ICsgICAgICAgICBM IkVSUk9SOiBJbnZhbGlkIEludGVycnVwdCBDb250cm9sbGVyIExlbmd0aCwiDQo+ICsgICAgICAg ICAgIiBUeXBlID0gJWQsIExlbmd0aCA9ICVkXG4iLA0KPiArICAgICAgICAgKk1hZHRJbnRlcnJ1 cHRDb250cm9sbGVyVHlwZSwNCj4gKyAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxl bmd0aA0KPiArICAgICAgICAgKTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiAr ICAgIHN3aXRjaCAoKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyVHlwZSkgew0KPiArICAgICAgY2Fz ZSBFRklfQUNQSV82XzJfR0lDOiB7DQo+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICAg ICAgVFJVRSwNCj4gKyAgICAgICAgICAyLA0KPiArICAgICAgICAgICJHSUNDIiwNCj4gKyAgICAg ICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQo+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRD b250cm9sbGVyTGVuZ3RoLA0KPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY0NQYXJzZXIp DQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICB9DQo+ICsNCj4g KyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ0Q6IHsNCj4gKyAgICAgICAgaWYgKCsrR0lDRENv dW50ID4gMSkgew0KPiArICAgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAg ICAgICAgUHJpbnQgKA0KPiArICAgICAgICAgICAgTCJFUlJPUjogT25seSBvbmUgR0lDRCBtdXN0 IGJlIHByZXNlbnQsIg0KPiArICAgICAgICAgICAgICAiIEdJQ0RDb3VudCA9ICVkXG4iLA0KPiAr ICAgICAgICAgICAgR0lDRENvdW50DQo+ICsgICAgICAgICAgICApOw0KPiArICAgICAgICB9DQo+ ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAy LA0KPiArICAgICAgICAgICJHSUNEIiwNCj4gKyAgICAgICAgICBJbnRlcnJ1cHRDb250b2xsZXJQ dHIsDQo+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoLA0KPiArICAg ICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY0RQYXJzZXIpDQo+ICsgICAgICAgICAgKTsNCj4gKyAg ICAgICAgYnJlYWs7DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8y X0dJQ19NU0lfRlJBTUU6IHsNCj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBU UlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgIkdJQyBNU0kgRnJhbWUiLA0KPiAr ICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gKyAgICAgICAgICAqTWFkdEludGVy cnVwdENvbnRyb2xsZXJMZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoR2ljTVNJ RnJhbWVQYXJzZXIpDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAg ICB9DQo+ICsNCj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ1I6IHsNCj4gKyAgICAgICAg UGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsgICAg ICAgICAgIkdJQ1IiLA0KPiArICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gKyAg ICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsDQo+ICsgICAgICAgICAgUEFS U0VSX1BBUkFNUyAoR2ljUlBhcnNlcikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVh azsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgY2FzZSBFRklfQUNQSV82XzJfR0lDX0lUUzog ew0KPiArICAgICAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAg ICAgMiwNCj4gKyAgICAgICAgICAiR0lDIElUUyIsDQo+ICsgICAgICAgICAgSW50ZXJydXB0Q29u dG9sbGVyUHRyLA0KPiArICAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwN Cj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHaWNJVFNQYXJzZXIpDQo+ICsgICAgICAgICAg KTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIGRlZmF1bHQ6 IHsNCj4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgICAgUHJpbnQg KA0KPiArICAgICAgICAgIEwiRVJST1I6IFVua25vd24gSW50ZXJydXB0IENvbnRyb2xsZXIgU3Ry dWN0dXJlLCINCj4gKyAgICAgICAgICAgICIgVHlwZSA9ICVkLCBMZW5ndGggPSAlZFxuIiwNCj4g KyAgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJUeXBlLA0KPiArICAgICAgICAgICpN YWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aA0KPiArICAgICAgICAgICk7DQo+ICsgICAgICB9 DQo+ICsgICAgfSAvLyBzd2l0Y2gNCj4gKw0KPiArICAgIEludGVycnVwdENvbnRvbGxlclB0ciAr PSAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGg7DQo+ICsgICAgT2Zmc2V0ICs9ICpNYWR0 SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aDsNCj4gKyAgfSAvLyB3aGlsZQ0KPiArfQ0KPiArDQo+ ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VI YW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVt VGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2 YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQu DQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFs aWQNCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0 ZXIgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gKyov DQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK01hZHRQYXJzZXJMaWJDb25zdHJ1Y3RvciAo DQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAg KQ0KPiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklf QUNQSV82XzJfTVVMVElQTEVfQVBJQ19ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ICsg ICAgICAgICAgIFBhcnNlQWNwaU1hZHQNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiAr LyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VI YW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVt VGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJl dHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQu DQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtNYWR0UGFyc2VyTGliRGVzdHJ1 Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5k bGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUN Cj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAg ICAgIEVGSV9BQ1BJXzZfMl9NVUxUSVBMRV9BUElDX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVS RQ0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQYXJzDQo+ IGVyTGliLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvTWFkdC9NYWR0UGFycw0KPiBlckxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uYWYyN2RiNTY1ZmE0NzdhM2I3ZmUzZGZiOTANCj4gZDgyOGNjZmUzZGRiMzkNCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL01hZHQvTWFkdFBhcnMNCj4gZXJMaWIuaW5mDQo+IEBAIC0wLDAgKzEs MzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4 LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRoaXMgcHJv Z3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0K PiBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24u ICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArIyAg aHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0KPiAr IyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUyBJUyINCj4gQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5U QVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIyMN Cj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiAr ICBCQVNFX05BTUUgICAgICA9IE1hZHRQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAgICAgPSBD QTBBNkFFMS0xMUExLTQ4QzgtQTU2MS1EMkNGQTkxNzk2MkENCj4gKyAgVkVSU0lPTl9TVFJJTkcg PSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJBUllfQ0xB U1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gTWFkdFBhcnNlckxp YkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gTWFkdFBhcnNlckxpYkRlc3RydWN0 b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIE1hZHRQYXJzZXIuYw0KPiArDQo+ICtbUGFja2Fn ZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0K PiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNz ZXNdDQo+ICsgIEFjcGlQYXJzZXJMaWINCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2UNCj4g ci5jDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9NY2ZnL01jZmdQYXJzZQ0KPiByLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBiZmVjOTAx YTdjNTA0ZTcwMjJjMjFhYWYNCj4gYmFjNGM4NzVkODg4NmMNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL01jZmcvTWNmZ1BhcnNlDQo+IHIuYw0KPiBAQCAtMCwwICsxLDEzOSBAQA0KPiArLyoqDQo+ ICsgIE1DRkcgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAx OCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBh bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRl IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBM aWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29w ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9H UkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+ IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFO WSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVm ZXJlbmNlKHMpOg0KPiArICAgIC0gUENJIEZpcm13YXJlIFNwZWNpZmljYXRpb24gLSBSZXZpc2lv biAzLjIsIEphbnVhcnkgMjYsIDIwMTUuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVz dHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiAr I2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExp YnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExvY2FsIHZhcmlh Ymxlcw0KPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87 DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIE1D RkcgVGFibGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIE1jZmdQYXJzZXJb XSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIlJl c2VydmVkIiwgOCwgMzYsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gK307 DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBQQ0kgY29u ZmlndXJhdGlvbiBTcGFjZQ0KPiArICAgIEJhc2UgQWRkcmVzcyBzdHJ1Y3R1cmUuDQo+ICsqLw0K PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFBjaUNmZ1NwYWNlQmFzZUFkZHJQYXJzZXJbXSA9 IHsNCj4gKyAge0wiQmFzZSBBZGRyZXNzIiwgOCwgMCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJQQ0kgU2VnbWVudCBHcm91cCBOby4iLCAyLCA4LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU3RhcnQgQnVzIE5vLiIsIDEsIDEw LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRW5kIEJ1cyBOby4i LCAxLCAxMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2Vy dmVkIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgTUNGRyB0YWJsZS4NCj4gKyAg V2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBNQ0ZHIHRhYmxl IGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIFRoaXMg ZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxk cy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJh Y2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNw aVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtp bl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8N Cj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpTWNmZyAoDQo+ICsgIElOIEJPT0xFQU4g VHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxl bmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ICsgIFVJTlQzMiBQY2lDZmdPZmZzZXQ7DQo+ICsgIFVJTlQ4 KiBQY2lDZmdTcGFjZVB0cjsNCj4gKw0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJu Ow0KPiArICB9DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAg ICBUUlVFLA0KPiArICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgIk1DRkciLA0KPiAr ICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsg ICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoTWNmZ1BhcnNlcikNCj4gKyAgICAgICAgICAgICAp Ow0KPiArDQo+ICsgIFBjaUNmZ1NwYWNlUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArDQo+ICsgIHdo aWxlIChPZmZzZXQgPCBBY3BpVGFibGVMZW5ndGgpIHsNCj4gKyAgICBQY2lDZmdPZmZzZXQgPSBQ YXJzZUFjcGkgKA0KPiArICAgICAgICAgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAg ICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAiUENJIENvbmZpZ3VyYXRpb24g U3BhY2UiLA0KPiArICAgICAgICAgICAgICAgICAgICAgUGNpQ2ZnU3BhY2VQdHIsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAoQWNwaVRhYmxlTGVuZ3RoIC0gT2Zmc2V0KSwNCj4gKyAgICAgICAg ICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFBjaUNmZ1NwYWNlQmFzZUFkZHJQYXJzZXIpDQo+ ICsgICAgICAgICAgICAgICAgICAgICApOw0KPiArICAgIFBjaUNmZ1NwYWNlUHRyICs9IFBjaUNm Z09mZnNldDsNCj4gKyAgICBPZmZzZXQgKz0gUGNpQ2ZnT2Zmc2V0Ow0KPiArICB9DQo+ICt9DQo+ ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJ bWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBT eXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAg QHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFi bGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0 ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMg aW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byBy ZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0K PiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArTWNmZ1BhcnNlckxpYkNvbnN0cnVj dG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRs ZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0K PiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsNCj4gRUZJX0FD UElfNl8yX1BDSV9FWFBSRVNTX01FTU9SWV9NQVBQRURfQ09ORklHVVJBVElPTl9TUEFDRQ0KPiBf QkFTRV9BRERSRVNTX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgICAgICAg UGFyc2VBY3BpTWNmZw0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdp c3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhl IGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9p bnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9O T1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK01jZmdQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4g KyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAg SU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKw0KPiBFRklfQUNQSV82XzJf UENJX0VYUFJFU1NfTUVNT1JZX01BUFBFRF9DT05GSUdVUkFUSU9OX1NQQUNFDQo+IF9CQVNFX0FE RFJFU1NfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9 DQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL01jZmcvTWNmZ1BhcnNlDQo+IHJMaWIuaW5mDQo+IGIvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01jZmdQYXJz ZQ0KPiByTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZGRhNWEzZTU0YjQ2MTUxYThlZDE5 Y2ZmDQo+IGU2ZjFhMzM2Yzk1NTY2NQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2Zn UGFyc2UNCj4gckxpYi5pbmYNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMN Cj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n IG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ICsjICB3aGlj aCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxp Y2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGlj ZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklC VVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyMg IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhF Ug0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAg SU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gTWNmZ1Bh cnNlckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9IDQ3RThDMTBELTZDRTAtNDU1Qy1BN0JDLTgz QTdCMDg5NUM5Rg0KPiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAg ICA9IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4g KyAgQ09OU1RSVUNUT1IgICAgPSBNY2ZnUGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJV Q1RPUiAgICAgPSBNY2ZnUGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4g KyAgTWNmZ1BhcnNlci5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5k ZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1 bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgQWNwaVBhcnNlckxpYg0K PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZQ0KPiByLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlDQo+IHIu Yw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTE5N2VlMTUwMWRlYzUyMmZjZGFkY2JlDQo+IGQzNTU4 OWNkYTBiODdjZg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFyc2UNCj4gci5j DQo+IEBAIC0wLDAgKzEsMjEwIEBADQo+ICsvKioNCj4gKyAgUlNEUCB0YWJsZSBwYXJzZXINCj4g Kw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVy aWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21w YW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1h eSBiZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNk LWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIg VEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBBQ1BJ IDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ICsqKi8NCj4g Kw0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkv QWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNw aVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExvY2FsIFZhcmlhYmxlcw0KPiArU1RBVElDIENP TlNUIFVJTlQ2NCogWHNkdEFkZHJlc3M7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlk YXRlcyB0aGUgUlNEVCBBZGRyZXNzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENv bnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0K PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0 YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZVJzZHRB ZGRyZXNzICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4g KyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBYU0RUIEFkZHJl c3MuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBv ZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNv bnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyov DQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1ZhbGlkYXRlWHNkdEFkZHJlc3MgKA0KPiArICBJTiBV SU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKiog QW4gYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBSU0RQIFRhYmxlLg0KPiArKi8NCj4gK1NUQVRJ QyBDT05TVCBBQ1BJX1BBUlNFUiBSc2RwUGFyc2VyW10gPSB7DQo+ICsgIHtMIlNpZ25hdHVyZSIs IDgsIDAsIE5VTEwsIER1bXA4Q2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJDaGVj a3N1bSIsIDEsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJP ZW0gSUQiLCA2LCA5LCBOVUxMLCBEdW1wNkNoYXJzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiUmV2aXNpb24iLCAxLCAxNSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJSU0RUIEFkZHJlc3MiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVS c2R0QWRkcmVzcywNCj4gTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDQsIDIwLCBMIiVkIiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlhTRFQgQWRkcmVzcyIsIDgsIDI0LCBMIjB4 JWx4IiwgTlVMTCwgKFZPSUQqKikmWHNkdEFkZHJlc3MsDQo+ICsgICBWYWxpZGF0ZVhzZHRBZGRy ZXNzLCBOVUxMfSwNCj4gKyAge0wiRXh0ZW5kZWQgQ2hlY2tzdW0iLCAxLCAzMiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMywgMzMsIEwiJXgg JXggJXgiLCBEdW1wM0NoYXJzLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBSU0RUIEFkZHJlc3MuDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4N Cj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5m b3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBw b2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZP SUQNCj4gK1ZhbGlkYXRlUnNkdEFkZHJlc3MgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJ TiBWT0lEKiAgQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsjaWYgZGVmaW5lZChNREVfQ1BVX0FS TSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiArICAvLyBSZWZlcmVuY2U6IFNlcnZl ciBCYXNlIEJvb3QgUmVxdWlyZW1lbnRzIFN5c3RlbSBTb2Z0d2FyZSBvbiBBUk0NCj4gUGxhdGZv cm1zDQo+ICsgIC8vIFNlY3Rpb246IDQuMi4xLjEgUlNEUA0KPiArICAvLyBSb290IFN5c3RlbSBE ZXNjcmlwdGlvbiBQb2ludGVyIChSU0RQKSwgQUNQSSDvv70gNS4yLjUuDQo+ICsgIC8vICAgLSBX aXRoaW4gdGhlIFJTRFAsIHRoZSBSc2R0QWRkcmVzcyBmaWVsZCBtdXN0IGJlIG51bGwgKHplcm8p IGFuZCB0aGUNCj4gKyAgLy8gICAgIFhzZHRBZGRyZXNzcyBNVVNUIGJlIGEgdmFsaWQsIG5vbi1u dWxsLCA2NC1iaXQgdmFsdWUuDQo+ICsgIFVJTlQzMiBSc2R0QWRkciA9ICooVUlOVDMyKilQdHI7 DQo+ICsgIGlmIChSc2R0QWRkciAhPSAwKSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAo KTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxuRVJST1I6IFJzZHQgQWRkcmVzcyA9IDB4 JXAuIFRoaXMgbXVzdCBiZSBOVUxMIG9uIEFSTQ0KPiBQbGF0Zm9ybXMuIiwNCj4gKyAgICAgIFJz ZHRBZGRyDQo+ICsgICAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBYU0RUIEFkZHJlc3MuDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4N Cj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5m b3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBw b2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZP SUQNCj4gK1ZhbGlkYXRlWHNkdEFkZHJlc3MgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJ TiBWT0lEKiAgQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsjaWYgZGVmaW5lZChNREVfQ1BVX0FS TSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiArICAvLyBSZWZlcmVuY2U6IFNlcnZl ciBCYXNlIEJvb3QgUmVxdWlyZW1lbnRzIFN5c3RlbSBTb2Z0d2FyZSBvbiBBUk0NCj4gUGxhdGZv cm1zDQo+ICsgIC8vIFNlY3Rpb246IDQuMi4xLjEgUlNEUA0KPiArICAvLyBSb290IFN5c3RlbSBE ZXNjcmlwdGlvbiBQb2ludGVyIChSU0RQKSwgQUNQSSDvv70gNS4yLjUuDQo+ICsgIC8vICAgLSBX aXRoaW4gdGhlIFJTRFAsIHRoZSBSc2R0QWRkcmVzcyBmaWVsZCBtdXN0IGJlIG51bGwgKHplcm8p IGFuZCB0aGUNCj4gKyAgLy8gICAgIFhzZHRBZGRyZXNzcyBNVVNUIGJlIGEgdmFsaWQsIG5vbi1u dWxsLCA2NC1iaXQgdmFsdWUuDQo+ICsgIFVJTlQ2NCBYc2R0QWRkciA9ICooVUlOVDY0KilQdHI7 DQo+ICsgIGlmIChYc2R0QWRkciA9PSAwKSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAo KTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxuRVJST1I6IFhzZHQgQWRkcmVzcyA9IDB4 JXAuIFRoaXMgbXVzdCBub3QgYmUgTlVMTCBvbiBBUk0NCj4gUGxhdGZvcm1zLiIsDQo+ICsgICAg ICBYc2R0QWRkcg0KPiArICAgICAgKTsNCj4gKyAgfQ0KPiArI2VuZGlmDQo+ICt9DQo+ICsNCj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBSU0RQIHRhYmxlLg0KPiArDQo+ICsg IFRoaXMgZnVuY3Rpb24gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgWFNEVCB0YWJsZS4NCj4g KyAgKiBOb3RlIC0gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHBhcnNpbmcgb2YgUlNE VCB0YWJsZS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgYSBSQVcgZHVt cCBvZiB0aGUgQUNQSSB0YWJsZSBhbmQNCj4gKyAgdmFsaWRhdGVzIHRoZSBjaGVja3N1bS4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhl IEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxl TGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNw aVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZP SUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpUnNkcCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2Us DQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwN Cj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIGlm IChUcmFjZSkgew0KPiArICAgIER1bXBSYXcgKFB0ciwgQWNwaVRhYmxlTGVuZ3RoKTsNCj4gKyAg ICBWZXJpZnlDaGVja3N1bSAoVFJVRSwgUHRyLCBBY3BpVGFibGVMZW5ndGgpOw0KPiArICB9DQo+ ICsNCj4gKyAgUGFyc2VBY3BpIChUcmFjZSwgMCwgIlJTRFAiLCBQdHIsIEFjcGlUYWJsZUxlbmd0 aCwgUEFSU0VSX1BBUkFNUw0KPiAoUnNkcFBhcnNlcikpOw0KPiArDQo+ICsgIC8vIFRoaXMgY29k ZSBjdXJyZW50bHkgc3VwcG9ydHMgcGFyc2luZyBvZiBYU0RUIHRhYmxlIG9ubHkNCj4gKyAgLy8g YW5kIGRvZXMgbm90IHBhcnNlIHRoZSBSU0RUIHRhYmxlLiBQbGF0Zm9ybXMgcHJvdmlkZSB0aGUN Cj4gKyAgLy8gUlNEVCB0byBlbmFibGUgY29tcGF0aWJpbGl0eSB3aXRoIEFDUEkgMS4wIG9wZXJh dGluZyBzeXN0ZW1zLg0KPiArICAvLyBUaGVyZWZvcmUgdGhlIFJTRFQgc2hvdWxkIG5vdCBiZSB1 c2VkIG9uIEFSTSBwbGF0Zm9ybXMuDQo+ICsgIGlmICgoKlhzZHRBZGRyZXNzKSA9PSAwKSB7DQo+ ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoTCJFUlJPUjogWFNE VCBQb2ludGVyIGlzIG5vdCBzZXQuXG4iKTsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0K PiArICBQcm9jZXNzQWNwaVRhYmxlICgoVUlOVDgqKShVSU5UTikoKlhzZHRBZGRyZXNzKSk7DQo+ ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBb aW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBb aW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4N Cj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFD UEkgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkg cmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0 ZXIgaXMgaW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFj ZSB0byByZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy c2VyLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArUnNkcFBhcnNlckxpYkNv bnN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFn ZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1U YWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsgICAg ICAgICAgIFJTRFBfVEFCTEVfSU5GTywNCj4gKyAgICAgICAgICAgUGFyc2VBY3BpUnNkcA0KPiAr ICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0K PiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1h Z2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVt IFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJz ZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBU aGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtF RklBUEkNCj4gK1JzZHBQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hB TkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RF TV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBE ZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgUlNEUF9UQUJMRV9JTkZPDQo+ICsgICAg ICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlDQo+IHJMaWIuaW5m DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9Sc2RwL1JzZHBQYXJzZQ0KPiByTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDZlNDk4 NDFmMmRlMWU1OTk1NDAwMTJkDQo+IDUwYTA5NGU2ZjIwNmNmMw0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvUnNkcC9Sc2RwUGFyc2UNCj4gckxpYi5pbmYNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiAr IyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAxOCwgQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2Nv bXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4g KyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBv ZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNl Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElT IERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lT LA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVz XQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1FICAgICAg PSBSc2RwUGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gOTM2NUNFQjMtNTJEQy00ODhE LTlFMkUtQzRFMUUzMDYyRkE5DQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsgIE1PRFVM RV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RS SVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IFJzZHBQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiAr ICBERVNUUlVDVE9SICAgICA9IFJzZHBQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3Vy Y2VzXQ0KPiArICBSc2RwUGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cv TWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtn L01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBBY3BpUGFy c2VyTGliDQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlci5jDQo+IGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1NsaXRQYXJzZXIu Yw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmE0YzQxNmFhMjU5YWYxNmFhMGI3NzZkYw0KPiBjMDU4 NjA0YjVjMTdjMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2VyLmMNCj4g QEAgLTAsMCArMSwxODcgQEANCj4gKy8qKg0KPiArICBTTElUIHRhYmxlIHBhcnNlcg0KPiArDQo+ ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl c2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz DQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJl DQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUg QlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5U SUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1Ig SU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkgNi4y IFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9QcmludExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkv QWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExvY2FsIFZhcmlhYmxlcw0K PiArU1RBVElDIENPTlNUIFVJTlQ2NCogU2xpdFN5c3RlbUxvY2FsaXR5Q291bnQ7DQo+ICtTVEFU SUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoq IEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgU0xJVCB0YWJsZS4NCj4g KyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU2xpdFBhcnNlcltdID0gew0KPiArICBQ QVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gKyAge0wiTnVtYmVyIG9mIFN5c3Rl bSBMb2NhbGl0aWVzIiwgOCwgMzYsIEwiMHglbHgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmU2xp dFN5c3RlbUxvY2FsaXR5Q291bnQsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogTWFj cm8gdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhIFN5c3RlbSBMb2NhbGl0eQ0KPiArKi8NCj4gKyNkZWZp bmUgU0xJVF9FTEVNRU5UKFB0ciwgaSwgaikgKihQdHIgKyAoaSAqIExvY2FsaXR5Q291bnQpICsg aikNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNMSVQgdGFibGUu DQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU0xJ VCB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiAr ICBUaGlzIGZ1bmN0aW9uIGFsc28gdmFsaWRhdGVzIFN5c3RlbSBMb2NhbGl0aWVzIGZvciB0aGUg Zm9sbG93aW5nOg0KPiArICAgIC0gRGlhZ29uYWwgZWxlbWVudHMgaGF2ZSBhIG5vcm1hbGl6ZWQg dmFsdWUgb2YgMTANCj4gKyAgICAtIFJlbGF0aXZlIGRpc3RhbmNlIGZyb20gU3lzdGVtIExvY2Fs aXR5IGF0IGkqTitqIGlzIHNhbWUgYXMNCj4gKyAgICAgIGoqTitpDQo+ICsNCj4gKyAgQHBhcmFt IFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4N Cj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5n dGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9u ICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkN Cj4gK1BhcnNlQWNwaVNsaXQgKA0KPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5U OCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4 ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgT2Zmc2V0Ow0K PiArICBVSU5UNjQgaTsNCj4gKyAgVUlOVDY0IGo7DQo+ICsgIFVJTlQ2NCBMb2NhbGl0eUNvdW50 Ow0KPiArICBVSU5UOCogTG9jYWxpdHlQdHI7DQo+ICsgIENIQVIxNiBCdWZmZXJbODBdOyAgLy8g VXNlZCBmb3IgQXNjaWlOYW1lIHBhcmFtIG9mIFBhcnNlQWNwaQ0KPiArDQo+ICsgIGlmICghVHJh Y2UpIHsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFj cGkgKA0KPiArICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgMCwNCj4gKyAgICAg ICAgICAgICAiU0xJVCIsDQo+ICsgICAgICAgICAgICAgUHRyLA0KPiArICAgICAgICAgICAgIEFj cGlUYWJsZUxlbmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTbGl0UGFyc2Vy KQ0KPiArICAgICAgICAgICAgICk7DQo+ICsgIExvY2FsaXR5UHRyID0gUHRyICsgT2Zmc2V0Ow0K PiArDQo+ICsgIExvY2FsaXR5Q291bnQgPSAqU2xpdFN5c3RlbUxvY2FsaXR5Q291bnQ7DQo+ICsg IC8vIFdlIG9ubHkgcHJpbnQgdGhlIExvY2FsaXRpZXMgaWYgdGhlIGNvdW50IGlzIGxlc3MgdGhh biAxNg0KPiArICAvLyBJZiB0aGUgbG9jYWxpdHkgY291bnQgaXMgbW9yZSB0aGFuIDE2IHRoZW4g cmVmZXIgdG8gdGhlDQo+ICsgIC8vIHJhdyBkYXRhIGR1bXAuDQo+ICsgIGlmIChMb2NhbGl0eUNv dW50IDwgMTYpIHsNCj4gKyAgICBVbmljb2RlU1ByaW50ICgNCj4gKyAgICAgIEJ1ZmZlciwNCj4g KyAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgIEwiRW50cnlbMHglbHhdWzB4JWx4XSIs DQo+ICsgICAgICBMb2NhbGl0eUNvdW50LA0KPiArICAgICAgTG9jYWxpdHlDb3VudA0KPiArICAg ICAgKTsNCj4gKyAgICBQcmludEZpZWxkTmFtZSAoMCwgQnVmZmVyKTsNCj4gKyAgICBQcmludCAo TCJcbiIpOw0KPiArICAgIFByaW50IChMIiAgICAgICAiKTsNCj4gKyAgICBmb3IgKGogPSAwOyBq IDwgTG9jYWxpdHlDb3VudDsgaisrKSB7DQo+ICsgICAgICBQcmludCAoTCIgKCUzZCkgIiwgaik7 DQo+ICsgICAgfQ0KPiArICAgIFByaW50IChMIlxuIik7DQo+ICsgICAgZm9yIChpID0gMDsgaSA8 IExvY2FsaXR5Q291bnQ7IGkrKykgew0KPiArICAgICAgUHJpbnQgKEwiICglM2QpICIsIGkpOw0K PiArICAgICAgZm9yIChqID0gMDsgaiA8IExvY2FsaXR5Q291bnQ7IGorKykgew0KPiArICAgICAg ICBQcmludCAoTCIgICUzZCAgIiwgU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaSwgaikpOw0K PiArICAgICAgfQ0KPiArICAgICAgUHJpbnQgKEwiXG4iKTsNCj4gKyAgICB9DQo+ICsgIH0NCj4g Kw0KPiArICAvLyBWYWxpZGF0ZQ0KPiArICBmb3IgKGkgPSAwOyBpIDwgTG9jYWxpdHlDb3VudDsg aSsrKSB7DQo+ICsgICAgZm9yIChqID0gMDsgaiA8IExvY2FsaXR5Q291bnQ7IGorKykgew0KPiAr ICAgICAgLy8gRWxlbWVudFt4XVt4XSBtdXN0IGJlIGVxdWFsIHRvIDEwDQo+ICsgICAgICBpZiAo KGkgPT0gaikgJiYgKFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIsIGksIGopICE9IDEwKSkgew0K PiArICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgICBQcmludCAoDQo+ ICsgICAgICAgICAgTCJFUlJPUjogRGlhZ29uYWwgRWxlbWVudFsweCVseF1bMHglbHhdICglM2Qp LiINCj4gKyAgICAgICAgICAgICIgTm9ybWFsaXplZCBWYWx1ZSBpcyBub3QgMTBcbiIsDQo+ICsg ICAgICAgICAgaSwNCj4gKyAgICAgICAgICBqLA0KPiArICAgICAgICAgIFNMSVRfRUxFTUVOVCAo TG9jYWxpdHlQdHIsIGksIGopDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgIH0NCj4gKyAgICAg IC8vIEVsZW1lbnRbaV1bal0gbXVzdCBiZSBlcXVhbCB0byBFbGVtZW50W2pdW2ldDQo+ICsgICAg ICBpZiAoU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaSwgaikgIT0NCj4gKyAgICAgICAgICBT TElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBqLCBpKSkgew0KPiArICAgICAgICBJbmNyZW1lbnRF cnJvckNvdW50ICgpOw0KPiArICAgICAgICBQcmludCAoDQo+ICsgICAgICAgICAgTCJFUlJPUjog UmVsYXRpdmUgZGlzdGFuY2VzIGZvciBFbGVtZW50WzB4JWx4XVsweCVseF0gKCUzZCkgYW5kIFxu Ig0KPiArICAgICAgICAgICAiRWxlbWVudFsweCVseF1bMHglbHhdICglM2QpIGRvIG5vdCBtYXRj aC5cbiIsDQo+ICsgICAgICAgICAgaSwNCj4gKyAgICAgICAgICBqLA0KPiArICAgICAgICAgIFNM SVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIsIGksIGopLA0KPiArICAgICAgICAgIGosDQo+ICsgICAg ICAgICAgaSwNCj4gKyAgICAgICAgICBTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBqLCBpKQ0K PiArICAgICAgICAgICk7DQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICB9DQo+ICt9DQo+ICsN Cj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFn ZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0 ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJl dHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJl ZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52 YWxpZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdp c3RlciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiAr Ki8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2xpdFBhcnNlckxpYkNvbnN0cnVjdG9y ICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiAr ICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsNCj4gRUZJX0FDUElf Nl8yX1NZU1RFTV9MT0NBTElUWV9JTkZPUk1BVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ICsgICAg ICAgICAgIFBhcnNlQWNwaVNsaXQNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoq IERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5k bGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFi bGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZh bCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTbGl0UGFyc2VyTGliRGVzdHJ1Y3Rv ciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUs DQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4g KyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ICsNCj4gRUZJX0FD UElfNl8yX1NZU1RFTV9MT0NBTElUWV9JTkZPUk1BVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gKyAg ICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2VyTGliLg0KPiBp bmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1NsaXQvU2xpdFBhcnNlckxpYi4NCj4gaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4OTAx NjgxYTY5NjExN2MyZWU3NWMwOWINCj4gZWVhMThiZTFlMDIzNGE2DQo+IC0tLSAvZGV2L251bGwN Cj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9TbGl0L1NsaXRQYXJzZXJMaWIuDQo+IGluZg0KPiBAQCAtMCwwICsxLDMzIEBADQo+ ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExp bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5k IHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExp Y2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi DQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4g K1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9O QU1FICAgICAgPSBTbGl0UGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gM0RDRjczMzMt MzY3Qi00RDQwLTg1NkEtRkYwRjczRkI2QjQ5DQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5V TEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IFNsaXRQYXJzZXJMaWJDb25zdHJ1 Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IFNsaXRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsN Cj4gK1tTb3VyY2VzXQ0KPiArICBTbGl0UGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiAr ICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRl TW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiAr ICBBY3BpUGFyc2VyTGliDQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3BjclBhcnNlci4NCj4gYw0KPiBi L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bj ci9TcGNyUGFyc2VyLg0KPiBjDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzMTliOTY0MTk4MmUwNjAx YjJiYzFjM2MNCj4gOTg5NmEzMDc3YjdmYzAxDQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+IGIv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNy L1NwY3JQYXJzZXIuDQo+IGMNCj4gQEAgLTAsMCArMSwyMDkgQEANCj4gKy8qKg0KPiArICBTUENS IHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBM aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFi bGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0K PiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNl Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBE SVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywN Cj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwg RUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShz KToNCj4gKyAgICAtIE1pY3Jvc29mdCBTZXJpYWwgUG9ydCBDb25zb2xlIFJlZGlyZWN0aW9uIFRh YmxlDQo+ICsgICAgICBTcGVjaWZpY2F0aW9uIC0gVmVyc2lvbiAxLjAzIC0gQXVndXN0IDEwLCAy MDE1Lg0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4N Cj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1NlcmlhbFBvcnRDb25zb2xlUmVkaXJlY3Rp b25UYWJsZS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNw aVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiAr U1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSW50ZXJydXB0IFR5cGUuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQg ZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lm aWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQg YmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMN Cj4gK1ZPSUQNCj4gK1ZhbGlkYXRlSW50ZXJydXB0VHlwZSAoDQo+ICsgIElOIFVJTlQ4KiBQdHIs DQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHZhbGlkYXRlcyB0aGUgSXJxLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENv bnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0K PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0 YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZUlycSAo DQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIFNQQ1Ig VGFibGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNwY3JQYXJzZXJbXSA9 IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIkludGVy ZmFjZSBUeXBlIiwgMSwgMzYsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiUmVzZXJ2ZWQiLCAzLCAzNywgTCIleCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJCYXNlIEFkZHJlc3MiLCAxMiwgNDAsIE5VTEwsIER1bXBHYXMsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJJbnRlcnJ1cHQgVHlwZSIsIDEsIDUyLCBMIiVkIiwg TlVMTCwgTlVMTCwgVmFsaWRhdGVJbnRlcnJ1cHRUeXBlLA0KPiBOVUxMfSwNCj4gKyAge0wiSVJR IiwgMSwgNTMsIEwiJWQiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZUlycSwgTlVMTH0sDQo+ICsgIHtM Ikdsb2JhbCBTeXN0ZW0gSW50ZXJydXB0IiwgNCwgNTQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJCYXVkIFJhdGUiLCAxLCA1OCwgTCIlZCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJQYXJpdHkiLCAxLCA1OSwgTCIlZCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJTdG9wIEJpdHMiLCAxLCA2MCwgTCIlZCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbG93IENvbnRyb2wiLCAxLCA2MSwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlRlcm1pbmFsIFR5cGUiLCAxLCA2Miwg TCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDEsIDYz LCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiUENJIERldmlj ZSBJRCIsIDIsIDY0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi UENJIFZlbmRvciBJRCIsIDIsIDY2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiUENJIEJ1cyBOdW1iZXIiLCAxLCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIlBDSSBEZXZpY2UgTnVtYmVyIiwgMSwgNjksIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQQ0kgRnVuY3Rpb24gTnVtYmVyIiwgMSwg NzAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQQ0kgRmxhZ3Mi LCA0LCA3MSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBDSSBT ZWdtZW50IiwgMSwgNzUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJSZXNlcnZlZCIsIDQsIDc2LCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307 DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSW50ZXJydXB0IFR5cGUu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRl eHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK1ZhbGlkYXRlSW50ZXJydXB0VHlwZSAoDQo+ICsgIElOIFVJ TlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyNpZiBk ZWZpbmVkIChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiArICBV SU5UOCBJbnRlcnJ1cHRUeXBlID0gKlB0cjsNCj4gKyAgaWYgKEludGVycnVwdFR5cGUgIT0NCj4g Kw0KPiBFRklfQUNQSV9TRVJJQUxfUE9SVF9DT05TT0xFX1JFRElSRUNUSU9OX1RBQkxFX0lOVEVS UlVQVF9UWVBFXw0KPiBHSUMpIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiAr ICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjogSW50ZXJydXB0VHlwZSA9ICVkLiBUaGlz IG11c3QgYmUgOCBvbiBBUk0gUGxhdGZvcm1zIiwNCj4gKyAgICAgIEludGVycnVwdFR5cGUNCj4g KyAgICAgICk7DQo+ICsgIH0NCj4gKyNlbmRpZg0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiB2YWxpZGF0ZXMgdGhlIElycS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBD b250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMN Cj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkg dGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArVmFsaWRhdGVJcnEg KA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApDQo+ ICt7DQo+ICsjaWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFS Q0g2NCkNCj4gKyAgVUlOVDggSXJxID0gKlB0cjsNCj4gKyAgaWYgKElycSAhPSAwKSB7DQo+ICsg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxu RVJST1I6IElycSA9ICVkLiBUaGlzIG11c3QgYmUgemVybyBvbiBBUk0gUGxhdGZvcm1zXG4iLA0K PiArICAgICAgSXJxDQo+ICsgICAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNQQ1IgdGFibGUuDQo+ICsgIFdo ZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1BDUiB0YWJsZSBh bmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1 bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbnMgb2YgdGhlIEFDUEkgdGFibGUgZmllbGRz Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFj ZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3Bp VGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2lu XSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0K PiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlTcGNyICgNCj4gKyAgSU4gQk9PTEVBTiBU cmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVu Z3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4g KyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vIER1 bXAgdGhlIFNQQ1INCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDAsDQo+ ICsgICAgIlNQQ1IiLA0KPiArICAgIFB0ciwNCj4gKyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsg ICAgUEFSU0VSX1BBUkFNUyAoU3BjclBhcnNlcikNCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsv KiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5k bGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFi bGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwg RUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQN Cj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIg dGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gKyovDQo+ ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NwY3JQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsg IElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0K PiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiArDQo+IEVGSV9BQ1BJXzZfMl9T RVJJQUxfUE9SVF9DT05TT0xFX1JFRElSRUNUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAg ICAgICAgUGFyc2VBY3BpU3Bjcg0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiog RGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRs ZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJs ZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFs IEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4g KyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NwY3JQYXJzZXJMaWJEZXN0cnVjdG9y ICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiAr ICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKw0KPiBFRklfQUNQ SV82XzJfU0VSSUFMX1BPUlRfQ09OU09MRV9SRURJUkVDVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4g KyAgICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyTA0KPiBp Yi5pbmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL1NwY3IvU3BjclBhcnNlckwNCj4gaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcy MzU3NDhmYWUyMTIyOTE2ZDg3Njc1MDc4DQo+IDE1MDc3NGM2MjdhZjM1DQo+IC0tLSAvZGV2L251 bGwNCj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJzZXJMDQo+IGliLmluZg0KPiBAQCAtMCwwICsxLDMzIEBA DQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0g YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNE IExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhl IGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRI RSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMg SVMiDQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9O UyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsN Cj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFT RV9OQU1FICAgICAgPSBTcGNyUGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gMDhDMTdD NEMtRTYyRC00QUU0LTk1QzUtREVGNDJBMjRBNTZDDQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4w DQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9 IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IFNwY3JQYXJzZXJMaWJDb25z dHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IFNwY3JQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBTcGNyUGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0K PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAg TWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0K PiArICBBY3BpUGFyc2VyTGliDQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlci5jDQo+IGIv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0 L1NyYXRQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmQ5NzNjOTg5OGEwNTkzMDhjYzNk NThiDQo+IGJlNmI0YWZjMDY3YjliZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3JhdC9TcmF0 UGFyc2VyLmMNCj4gQEAgLTAsMCArMSwzNzMgQEANCj4gKy8qKg0KPiArICBTUkFUIHRhYmxlIHBh cnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIg dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiArICB3aGlj aCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxp Y2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNl bnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRF RCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyAgV0lU SE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAg ICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4g KyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5j bHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5o Pg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExvY2Fs IFZhcmlhYmxlcw0KPiArU1RBVElDIENPTlNUIFVJTlQ4KiBTcmF0UkFUeXBlOw0KPiArU1RBVElD IENPTlNUIFVJTlQ4KiBTcmF0UkFMZW5ndGg7DQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9I RUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRh dGVzIHRoZSBSZXNlcnZlZCBmaWVsZCBpbiB0aGUgU1JBVCB0YWJsZSBoZWFkZXIuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQg ZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lm aWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQg YmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMN Cj4gK1ZPSUQNCj4gK1ZhbGlkYXRlU3JhdFJlc2VydmVkICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwN Cj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rp b24gdHJhY2VzIHRoZSBBUElDIFByb3hpbWl0eSBEb21haW4gZmllbGQuDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gRm9ybWF0ICBGb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiAr ICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIu DQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wU3JhdEFwaWNQcm94aW1pdHkgKA0K PiArICBJTiAgQ09OU1QgQ0hBUjE2KiAgRm9ybWF0LA0KPiArICBJTiAgVUlOVDgqICAgICAgICAg UHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBTUkFUIFRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0 UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiAr ICB7TCJSZXNlcnZlZCIsIDQsIDM2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZVNyYXRS ZXNlcnZlZCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgOCwgNDAsIEwiMHglbHgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFy cmF5IGRlc2NyaWJpbmcgdGhlIFJlc291cmNlIEFsbG9jYXRpb24NCj4gKyAgICBzdHJ1Y3R1cmUg aGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0UmVzb3VyY2VB bGxvY2F0aW9uUGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBOVUxMLCBOVUxMLCAo Vk9JRCoqKSZTcmF0UkFUeXBlLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwg TlVMTCwgTlVMTCwgKFZPSUQqKikmU3JhdFJBTGVuZ3RoLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4g Kw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQ0MgQWZmaW5p dHkgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0R2lj Q0FmZmluaXR5UGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiUHJveGltaXR5IERvbWFpbiIsIDQs IDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBQ1BJIFByb2Nl c3NvciBVSUQiLCA0LCA2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiRmxhZ3MiLCA0LCAxMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIkNsb2NrIERvbWFpbiIsIDQsIDE0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IEdJQyBJVFMgQWZmaW5pdHkgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJ X1BBUlNFUiBTcmF0R2ljSVRTQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEs IDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAx LCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJQcm94 aW1pdHkgRG9tYWluIiwgNCwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIlJlc2VydmVkIiwgMiwgNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIklUUyBJZCIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IE1lbW9yeSBBZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElf UEFSU0VSIFNyYXRNZW1BZmZpbml0eVBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlByb3hpbWl0 eSBEb21haW4iLCA0LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiUmVzZXJ2ZWQiLCAyLCA2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiQmFzZSBBZGRyZXNzIExvdyIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJCYXNlIEFkZHJlc3MgSGlnaCIsIDQsIDEyLCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIExvdyIsIDQsIDE2LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIEhpZ2giLCA0LCAyMCwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgNCwg MjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbGFncyIsIDQs IDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQi LCA4LCAzMiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQVBJQy9TQVBJQyBBZmZp bml0eSBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRB cGNpU2FwaWNBZmZpbml0eVBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlByb3hpbWl0eSBEb21h aW4gWzc6MF0iLCAxLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiQVBJQyBJRCIsIDEsIDMsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJGbGFncyIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJMb2NhbCBTQVBJQyBFSUQiLCAxLCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gKyAge0wiUHJveGltaXR5IERvbWFpbiBbMzE6OF0iLCAzLCA5LCBMIjB4JXgiLCBE dW1wU3JhdEFwaWNQcm94aW1pdHksDQo+ICsgICBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi Q2xvY2sgRG9tYWluIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUHJv Y2Vzc29yIExvY2FsIHgyQVBJQw0KPiArICAgIEFmZmluaXR5IHN0cnVjdHVyZS4NCj4gKyovDQo+ ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3JhdFgyQXBjaUFmZmluaXR5UGFyc2VyW10gPSB7 DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsNCj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiUHJveGltaXR5IERvbWFpbiIsIDQsIDQsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYMkFQSUMgSUQiLCA0LCA4LCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRmxhZ3MiLCA0LCAxMiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkNsb2NrIERvbWFpbiIsIDQsIDE2LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAy MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgUmVzZXJ2ZWQgZmllbGQgaW4gdGhlIFNSQVQgdGFi bGUgaGVhZGVyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUg c3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRl ciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAg ICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIu DQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtWYWxpZGF0ZVNyYXRSZXNlcnZlZCAoDQo+ ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sN Cj4gKyAgaWYgKCooVUlOVDMyKilQdHIgIT0gMSkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291 bnQgKCk7DQo+ICsgICAgUHJpbnQgKEwiXG5FUlJPUjogUmVzZXJ2ZWQgc2hvdWxkIGJlIDEgZm9y IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4iKTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiog VGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFQSUMgUHJveGltaXR5IERvbWFpbiBmaWVsZC4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIEZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhl IGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBTcmF0QXBpY1By b3hpbWl0eSAoDQo+ICsgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ICsgSU4gVUlOVDgqICAg ICAgICBQdHINCj4gKyApDQo+ICt7DQo+ICsgIFVJTlQzMiBQcm94aW1pdHlEb21haW4gPSBQdHJb MF0gfCAoUHRyWzFdIDw8IDgpIHwgKFB0clsyXSA8PCAxNik7DQo+ICsgIFByaW50IChGb3JtYXQs IFByb3hpbWl0eURvbWFpbik7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNl cyB0aGUgQUNQSSBTUkFUIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBm dW5jdGlvbiBwYXJzZXMgdGhlIFNSQVQgdGFibGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0 YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIGZvbGxvd2lu ZyBSZXNvdXJjZSBBbGxvY2F0aW9uIFN0cnVjdHVyZXM6DQo+ICsgICAgLSBQcm9jZXNzb3IgTG9j YWwgQVBJQy9TQVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUNCj4gKyAgICAtIE1lbW9yeSBBZmZpbml0 eSBTdHJ1Y3R1cmUNCj4gKyAgICAtIFByb2Nlc3NvciBMb2NhbCB4MkFQSUMgQWZmaW5pdHkgU3Ry dWN0dXJlDQo+ICsgICAgLSBHSUNDIEFmZmluaXR5IFN0cnVjdHVyZQ0KPiArDQo+ICsgIFRoaXMg ZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxk cy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJh Y2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNw aVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtp bl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8N Cj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpU3JhdCAoDQo+ICsgIElOIEJPT0xFQU4g VHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxl bmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ICsgIFVJTlQ4KiBSZXNvdXJjZVB0cjsNCj4gKyAgVUlOVDMy IEdpY0NBZmZpbml0eUluZGV4ID0gMDsNCj4gKyAgVUlOVDMyIEdpY0lUU0FmZmluaXR5SW5kZXgg PSAwOw0KPiArICBVSU5UMzIgTWVtb3J5QWZmaW5pdHlJbmRleCA9IDA7DQo+ICsgIFVJTlQzMiBB cGljU2FwaWNBZmZpbml0eUluZGV4ID0gMDsNCj4gKyAgVUlOVDMyIFgyQXBpY0FmZmluaXR5SW5k ZXggPSAwOw0KPiArICBDSEFSOCAgQnVmZmVyWzgwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFtZSBw YXJhbSBvZiBQYXJzZUFjcGkNCj4gKw0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJu Ow0KPiArICB9DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAg ICBUUlVFLA0KPiArICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgIlNSQVQiLA0KPiAr ICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsg ICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdFBhcnNlcikNCj4gKyAgICAgICAgICAgICAp Ow0KPiArICBSZXNvdXJjZVB0ciA9IFB0ciArIE9mZnNldDsNCj4gKw0KPiArICB3aGlsZSAoT2Zm c2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQo+ICsgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgIEZB TFNFLA0KPiArICAgICAgMCwNCj4gKyAgICAgIE5VTEwsDQo+ICsgICAgICBSZXNvdXJjZVB0ciwN Cj4gKyAgICAgIDIsICAvLyBUaGUgbGVuZ3RoIGlzIDEgYnl0ZSBhdCBvZmZzZXQgMQ0KPiArICAg ICAgUEFSU0VSX1BBUkFNUyAoU3JhdFJlc291cmNlQWxsb2NhdGlvblBhcnNlcikNCj4gKyAgICAg ICk7DQo+ICsNCj4gKyAgICBzd2l0Y2ggKCpTcmF0UkFUeXBlKSB7DQo+ICsgICAgICBjYXNlIEVG SV9BQ1BJXzZfMl9HSUNDX0FGRklOSVRZOg0KPiArICAgICAgICBBc2NpaVNQcmludCAoDQo+ICsg ICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAg ICAgICAiR0lDQyBBZmZpbml0eSBTdHJ1Y3R1cmUgWyVkXSIsDQo+ICsgICAgICAgICAgR2ljQ0Fm ZmluaXR5SW5kZXgrKw0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAyLA0KPiArICAgICAgICAgIEJ1ZmZlciwN Cj4gKyAgICAgICAgICBSZXNvdXJjZVB0ciwNCj4gKyAgICAgICAgICAqU3JhdFJBTGVuZ3RoLA0K PiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNyYXRHaWNDQWZmaW5pdHlQYXJzZXIpDQo+ICsg ICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgIGNhc2UgRUZJX0FD UElfNl8yX0dJQ19JVFNfQUZGSU5JVFk6DQo+ICsgICAgICAgIEFzY2lpU1ByaW50ICgNCj4gKyAg ICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAgICAg ICAgICJHSUMgSVRTIEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4gKyAgICAgICAgICBHaWNJ VFNBZmZpbml0eUluZGV4KysNCj4gKyAgICAgICAgKTsNCj4gKyAgICAgICAgUGFyc2VBY3BpICgN Cj4gKyAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgQnVmZmVy LA0KPiArICAgICAgICAgIFJlc291cmNlUHRyLA0KPiArICAgICAgICAgICpTcmF0UkFMZW5ndGgs DQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdEdpY0lUU0FmZmluaXR5UGFyc2VyKQ0K PiArICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgY2FzZSBFRklf QUNQSV82XzJfTUVNT1JZX0FGRklOSVRZOg0KPiArICAgICAgICBBc2NpaVNQcmludCAoDQo+ICsg ICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAg ICAgICAiTWVtb3J5IEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4gKyAgICAgICAgICBNZW1v cnlBZmZpbml0eUluZGV4KysNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBQYXJzZUFjcGkg KA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgMiwNCj4gKyAgICAgICAgICBCdWZm ZXIsDQo+ICsgICAgICAgICAgUmVzb3VyY2VQdHIsDQo+ICsgICAgICAgICAgKlNyYXRSQUxlbmd0 aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0TWVtQWZmaW5pdHlQYXJzZXIpDQo+ ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgIGNhc2UgRUZJ X0FDUElfNl8yX1BST0NFU1NPUl9MT0NBTF9BUElDX1NBUElDX0FGRklOSVRZOg0KPiArICAgICAg ICBBc2NpaVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVv ZiAoQnVmZmVyKSwNCj4gKyAgICAgICAgICAiQVBJQy9TQVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUg WyVkXSIsDQo+ICsgICAgICAgICAgQXBpY1NhcGljQWZmaW5pdHlJbmRleCsrDQo+ICsgICAgICAg ICAgKTsNCj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAg ICAgICAgIDIsDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIFJlc291cmNlUHRy LA0KPiArICAgICAgICAgICpTcmF0UkFMZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFN UyAoU3JhdEFwY2lTYXBpY0FmZmluaXR5UGFyc2VyKQ0KPiArICAgICAgICAgICk7DQo+ICsgICAg ICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9QUk9DRVNTT1JfTE9D QUxfWDJBUElDX0FGRklOSVRZOg0KPiArICAgICAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICAg ICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICAgICAi WDJBUElDIEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4gKyAgICAgICAgICBYMkFwaWNBZmZp bml0eUluZGV4KysNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBQYXJzZUFjcGkgKA0KPiAr ICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgMiwNCj4gKyAgICAgICAgICBCdWZmZXIsDQo+ ICsgICAgICAgICAgUmVzb3VyY2VQdHIsDQo+ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwNCj4g KyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0WDJBcGNpQWZmaW5pdHlQYXJzZXIpDQo+ICsg ICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgIGRlZmF1bHQ6DQo+ ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICAgIFByaW50IChMIkVS Uk9SOiBVbmtub3duIFNSQVQgQWZmaW5pdHkgdHlwZSA9IDB4JXhcbiIsICpTcmF0UkFUeXBlKTsN Cj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgUmVzb3VyY2VQdHIgKz0g KCpTcmF0UkFMZW5ndGgpOw0KPiArICAgIE9mZnNldCArPSAoKlNyYXRSQUxlbmd0aCk7DQo+ICsg IH0NCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBh cmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsN Cj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3Rl cmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0 aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxy ZWFkeSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBh cmFtZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5v IHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTcmF0UGFyc2Vy TGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAg IEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5 c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4g KyAgICAgICAgICAgRUZJX0FDUElfNl8yX1NZU1RFTV9SRVNPVVJDRV9BRkZJTklUWV9UQUJMRV9T SUdOQVRVUkUsDQo+ICsgICAgICAgICAgIFBhcnNlQWNwaVNyYXQNCj4gKyAgICAgICAgICAgKTsN Cj4gK30NCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFy YW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFy YW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0K PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0 ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMg bm90IHJlZ2lzdGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTcmF0 UGFyc2VyTGliRGVzdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAg ICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09O U1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNl ciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9TWVNURU1fUkVTT1VSQ0VfQUZGSU5JVFlf VEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4g YS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1Ny YXQvU3JhdFBhcnNlckxpDQo+IGIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXJMaQ0KPiBiLmluZg0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwLi5mZTYxMjk1MjUzNjc2ZTdmODFlNGU3ZTFlZg0KPiBkZTVhY2NmNjVi NzkwMA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3JhdC9TcmF0UGFyc2VyTGkNCj4gYi5pbmYN Cj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAo YykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0K PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlz IGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZv dW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElF UyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElN UExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAw eDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gU3JhdFBhcnNlckxpYg0KPiArICBGSUxF X0dVSUQgICAgICA9IDEwNkIyMkNDLTE0OTktNDZENC1CNkZCLTM0MUJCODc4RkJDNQ0KPiArICBW RVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4g KyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAg PSBTcmF0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBTcmF0UGFy c2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgU3JhdFBhcnNlci5jDQo+ ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cv U2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4g K1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgQWNwaVBhcnNlckxpYg0KPiBkaWZmIC0tZ2l0DQo+IGEv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0 L1NzZHRQYXJzZXIuDQo+IGMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQvU3NkdFBhcnNlci4NCj4gYw0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi40YzU2MjQyYjM1MWM4YzA0ZDMxMjM0OTA4Ng0KPiBlMzUzYzk0ZTQzMGYzMg0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyLg0KPiBjDQo+IEBAIC0wLDAgKzEsOTIg QEANCj4gKy8qKg0KPiArICBTU0RUIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAo YykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBCU0QNCj4gTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1 dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0K PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04g QU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0K PiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24g LSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5k dXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLyoqIFRoaXMgZnVu Y3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNTRFQgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5h YmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1NEVCB0YWJsZSBhbmQNCj4gKyAgdHJhY2Vz IHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKyAgRm9yIHRoZSBTU0RUIHRhYmxlIG9ubHkgdGhl IEFDUEkgaGVhZGVyIGZpZWxkcyBhcmUNCj4gKyAgcGFyc2VkIGFuZCB0cmFjZWQuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJ IGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0 aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJs ZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ ICtFRklBUEkNCj4gK1BhcnNlQWNwaVNzZHQgKA0KPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiAr ICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ICsg IElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBpZiAoIVRy YWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgRHVtcEFjcGlIZWFkZXIg KFB0cik7DQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsg IEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsg IEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0K PiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVn aXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBm b3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fz IGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg QSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VT ICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU3NkdFBh cnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAg ICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05T VCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAo DQo+ICsNCj4gRUZJX0FDUElfNl8yX1NFQ09OREFSWV9TWVNURU1fREVTQ1JJUFRJT05fVEFCTEVf U0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJzZUFjcGlTc2R0DQo+ICsgICAgICAgICAgICk7 DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBh cmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsN Cj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lz dGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2Fz IG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU3Nk dFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENP TlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJz ZXIgKA0KPiArDQo+IEVGSV9BQ1BJXzZfMl9TRUNPTkRBUllfU1lTVEVNX0RFU0NSSVBUSU9OX1RB QkxFX1NJR05BVFVSRQ0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0DQo+IGEv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0 L1NzZHRQYXJzZXJMDQo+IGliLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyTA0KPiBpYi5pbmYNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uODcxM2U0OTM2YzMwZmRkNzk0MDg0MzAxZA0KPiAzZGM5MzljNDhiMGZm ZDINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQvU3NkdFBhcnNlckwNCj4gaWIuaW5mDQo+ IEBAIC0wLDAgKzEsMzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMp IDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4g KyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFy ZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRp b25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk aXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3Vu ZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiArIw0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBM SUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBM SUVELg0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgw MDAxMDAxOQ0KPiArICBCQVNFX05BTUUgICAgICA9IFNzZHRQYXJzZXJMaWINCj4gKyAgRklMRV9H VUlEICAgICAgPSBCQzJGRjUzOC04RkVCLTQ4RTMtOTJEMS1FQ0EwMUIyNzdCMkMNCj4gKyAgVkVS U0lPTl9TVFJJTkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsg IExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0g U3NkdFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gU3NkdFBhcnNl ckxpYkRlc3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIFNzZHRQYXJzZXIuYw0KPiAr DQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1No ZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtb TGlicmFyeUNsYXNzZXNdDQo+ICsgIEFjcGlQYXJzZXJMaWINCj4gZGlmZiAtLWdpdA0KPiBhL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvWHNkdC9Y c2R0UGFyc2VyLg0KPiBjDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXIuDQo+IGMNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uMGFmYjQzZWU3ODQ5YjhmYTFkZDExZGNiNw0KPiBlY2IyZDAzNGUzZWYzMTgNCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlci4NCj4gYw0KPiBAQCAtMCwwICsxLDE5NyBA QA0KPiArLyoqDQo+ICsgIFhTRFQgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChj KSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlIEJTRA0KPiBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0 aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4g KyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBB TiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5U QVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAt IEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1 c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4g KyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3Bp Vmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFi bGVQYXJzZXIuaD4NCj4gKw0KPiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ICtTVEFUSUMgQUNQSV9E RVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoqIEFuIEFDUElf UEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgWFNEVCB0YWJsZS4NCj4gKyovDQo+ICtT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgWHNkdFBhcnNlcltdID0gew0KPiArICBQQVJTRV9BQ1BJ X0hFQURFUiAoJkFjcGlIZHJJbmZvKQ0KPiArfTsNCj4gKw0KPiArQ09OU1QgQUNQSV9ERVNDUklQ VElPTl9IRUFERVJfSU5GTyogQ09OU1QNCj4gK0dldEFjcGlYc2R0SGVhZGVySW5mbyAoDQo+ICsg IFZPSUQNCj4gKykNCj4gK3sNCj4gKyAgcmV0dXJuICZBY3BpSGRySW5mbzsNCj4gK30NCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFhTRFQgdGFibGUNCj4gKyAgYW5k IG9wdGlvbmFsbHkgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlz IGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgWFNEVCB0YWJsZS4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhl IEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxl TGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNw aVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZP SUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpWHNkdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2Us DQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwN Cj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIFVJ TlQzMiAgICAgICAgT2Zmc2V0Ow0KPiArICBVSU5UMzIgICAgICAgIFRhYmxlT2Zmc2V0Ow0KPiAr ICBVSU5UNjQqICAgICAgIFRhYmxlUG9pbnRlcjsNCj4gKyAgVUlOVE4gICAgICAgICBFbnRyeUlu ZGV4Ow0KPiArICBDSEFSMTYgICAgICAgIEJ1ZmZlclszMl07DQo+ICsNCj4gKyAgLy8gUGFyc2Ug dGhlIEFDUEkgaGVhZGVyIHRvIGdldCB0aGUgbGVuZ3RoDQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsg ICAgRkFMU0UsDQo+ICsgICAgMCwNCj4gKyAgICAiWFNEVCIsDQo+ICsgICAgUHRyLA0KPiArICAg IEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0xFTkdUSCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChY c2R0UGFyc2VyKQ0KPiArICAgICk7DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4g KyAgICAgICAgICAgICBUcmFjZSwNCj4gKyAgICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAg ICJYU0RUIiwNCj4gKyAgICAgICAgICAgICBQdHIsDQo+ICsgICAgICAgICAgICAgKkFjcGlIZHJJ bmZvLkxlbmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChYc2R0UGFyc2VyKQ0K PiArICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgVGFibGVPZmZzZXQgPSBPZmZzZXQ7DQo+ICsN Cj4gKyAgaWYgKFRyYWNlKSB7DQo+ICsgICAgRW50cnlJbmRleCA9IDA7DQo+ICsgICAgVGFibGVQ b2ludGVyID0gKFVJTlQ2NCopKFB0ciArIFRhYmxlT2Zmc2V0KTsNCj4gKyAgICB3aGlsZSAoT2Zm c2V0IDwgKCpBY3BpSGRySW5mby5MZW5ndGgpKSB7DQo+ICsgICAgICBDT05TVCBVSU5UMzIqIFNp Z25hdHVyZTsNCj4gKyAgICAgIENPTlNUIFVJTlQzMiogTGVuZ3RoOw0KPiArICAgICAgQ09OU1Qg VUlOVDgqICBSZXZpc2lvbjsNCj4gKw0KPiArICAgICAgaWYgKChVSU5UNjQqKShVSU5UTikoKlRh YmxlUG9pbnRlcikgIT0gTlVMTCkgew0KPiArICAgICAgICBVSU5UOCogICAgICBQdHI7DQo+ICsN Cj4gKyAgICAgICAgUGFyc2VBY3BpSGVhZGVyICgNCj4gKyAgICAgICAgICAoVUlOVDgqKShVSU5U TikoKlRhYmxlUG9pbnRlciksDQo+ICsgICAgICAgICAgJlNpZ25hdHVyZSwNCj4gKyAgICAgICAg ICAmTGVuZ3RoLA0KPiArICAgICAgICAgICZSZXZpc2lvbg0KPiArICAgICAgICAgICk7DQo+ICsN Cj4gKyAgICAgICAgUHRyID0gKFVJTlQ4KilTaWduYXR1cmU7DQo+ICsNCj4gKyAgICAgICAgVW5p Y29kZVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAo QnVmZmVyKSwNCj4gKyAgICAgICAgICBMIkVudHJ5WyVkXSAtICVjJWMlYyVjIiwNCj4gKyAgICAg ICAgICBFbnRyeUluZGV4KyssDQo+ICsgICAgICAgICAgUHRyWzBdLA0KPiArICAgICAgICAgIFB0 clsxXSwNCj4gKyAgICAgICAgICBQdHJbMl0sDQo+ICsgICAgICAgICAgUHRyWzNdDQo+ICsgICAg ICAgICAgKTsNCj4gKyAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgIFVuaWNvZGVTUHJpbnQgKA0K PiArICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ICsg ICAgICAgICAgTCJFbnRyeVslZF0iLA0KPiArICAgICAgICAgIEVudHJ5SW5kZXgrKw0KPiArICAg ICAgICAgICk7DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIFByaW50RmllbGROYW1lICgyLCBC dWZmZXIpOw0KPiArICAgICAgUHJpbnQgKEwiMHglbHhcbiIsICpUYWJsZVBvaW50ZXIpOw0KPiAr DQo+ICsgICAgICAvLyBWYWxpZGF0ZSB0aGUgdGFibGUgcG9pbnRlcnMgYXJlIG5vdCBOVUxMDQo+ ICsgICAgICBpZiAoKFVJTlQ2NCopKFVJTlROKSgqVGFibGVQb2ludGVyKSA9PSBOVUxMKSB7DQo+ ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICAgIFByaW50ICgNCj4g KyAgICAgICAgICBMIkVSUk9SOiBJbnZhbGlkIHRhYmxlIGVudHJ5IGF0IDB4JWx4LCB0YWJsZSBh ZGRyZXNzIGlzIDB4JWx4XG4iLA0KPiArICAgICAgICAgIFRhYmxlUG9pbnRlciwNCj4gKyAgICAg ICAgICAqVGFibGVQb2ludGVyDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgIH0NCj4gKyAgICAg IE9mZnNldCArPSBzaXplb2YgKFVJTlQ2NCk7DQo+ICsgICAgICBUYWJsZVBvaW50ZXIrKzsNCj4g KyAgICB9IC8vIHdoaWxlDQo+ICsgIH0NCj4gKw0KPiArICAvLyBQcm9jZXNzIHRoZSB0YWJsZXMN Cj4gKyAgT2Zmc2V0ID0gVGFibGVPZmZzZXQ7DQo+ICsgIFRhYmxlUG9pbnRlciA9IChVSU5UNjQq KShQdHIgKyBUYWJsZU9mZnNldCk7DQo+ICsgIHdoaWxlIChPZmZzZXQgPCAoKkFjcGlIZHJJbmZv Lkxlbmd0aCkpIHsNCj4gKyAgICBpZiAoKFVJTlQ2NCopKFVJTlROKSgqVGFibGVQb2ludGVyKSAh PSBOVUxMKSB7DQo+ICsgICAgICBQcm9jZXNzQWNwaVRhYmxlICgoVUlOVDgqKShVSU5UTikoKlRh YmxlUG9pbnRlcikpOw0KPiArICAgIH0NCj4gKyAgICBPZmZzZXQgKz0gc2l6ZW9mIChVSU5UNjQp Ow0KPiArICAgIFRhYmxlUG9pbnRlcisrOw0KPiArICB9IC8vIHdoaWxlDQo+ICt9DQo+ICsNCj4g Ky8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhh bmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1U YWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZh bCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4N Cj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxp ZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3Rl ciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8N Cj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArWHNkdFBhcnNlckxpYkNvbnN0cnVjdG9yICgN Cj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4g KyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICAp DQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsNCj4gRUZJX0FDUElfNl8y X0VYVEVOREVEX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ICsgICAgICAg ICAgIFBhcnNlQWNwaVhzZHQNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIERl cmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUg IFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUg IFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBF RklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ICsq Lw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtYc2R0UGFyc2VyTGliRGVzdHJ1Y3RvciAo DQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAg KQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVG SV9BQ1BJXzZfMl9FWFRFTkRFRF9TWVNURU1fREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlcg0KPiBM aWIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXINCj4gTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y NmY3ZTcwNjcwZmEzODZkNTA5ZTQwYmY5NQ0KPiBhNWI3NDZhZDMxYWEzMw0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyDQo+IExpYi5pbmYNCj4gQEAgLTAsMCArMSwzMyBA QA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJT RCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRo ZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsjICBodHRw Oi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsjICBU SEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFT IElTIg0KPiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElP TlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsjIw0KPiAr DQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ICsgIEJB U0VfTkFNRSAgICAgID0gWHNkdFBhcnNlckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9IEE1N0VE N0EyLTRDRDYtNDIzOS05QTRELUY3RjBEQkRDRkNGQQ0KPiArICBWRVJTSU9OX1NUUklORyA9IDEu MA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9DTEFTUyAg PSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAgPSBYc2R0UGFyc2VyTGliQ29u c3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBYc2R0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0K PiArDQo+ICtbU291cmNlc10NCj4gKyAgWHNkdFBhcnNlci5jDQo+ICsNCj4gK1tQYWNrYWdlc10N Cj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsg IE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10N Cj4gKyAgQWNwaVBhcnNlckxpYg0KPiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tDQo+IGFuZExp Yi5jDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVm aVNoZWxsQWNwaVZpZXdDb21tDQo+IGFuZExpYi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MjIx ZDE0ZDhlMDMxZWYxY2E4MGE5MDcNCj4gZGRhNjYzZWIzNjQwNzBhDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv VWVmaVNoZWxsQWNwaVZpZXdDb21tDQo+IGFuZExpYi5jDQo+IEBAIC0wLDAgKzEsMTA2IEBADQo+ ICsvKioNCj4gKyAgTWFpbiBmaWxlIGZvciAnYWNwaXZpZXcnIFNoZWxsIGNvbW1hbmQgZnVuY3Rp b24uDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBh bnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5k ZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0KPiArICB3 aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhl IGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9s aWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklC VVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyAg V0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVS DQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8R3VpZC9T aGVsbExpYkhpaUd1aWQuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0hpaUxpYi5oPg0KPiArI2lu Y2x1ZGUgPExpYnJhcnkvU2hlbGxDb21tYW5kTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9V ZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIu aD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlWaWV3Lmg+DQo+ICsjaW5jbHVk ZSA8VWVmaS5oPg0KPiArI2luY2x1ZGUgIlVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oIg0K PiArDQo+ICtDT05TVCBDSEFSMTYgZ1NoZWxsQWNwaVZpZXdGaWxlTmFtZVtdID0gTCJTaGVsbENv bW1hbmQiOw0KPiArDQo+ICsvKioNCj4gKyAgUmV0dXJuIHRoZSBmaWxlIG5hbWUgb2YgdGhlIGhl bHAgdGV4dCBmaWxlIGlmIG5vdCB1c2luZyBISUkuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgc3Ry aW5nIHBvaW50ZXIgdG8gdGhlIGZpbGUgbmFtZS4NCj4gKyovDQo+ICtDT05TVCBDSEFSMTYqDQo+ ICtFRklBUEkNCj4gK1NoZWxsQ29tbWFuZEdldE1hbkZpbGVOYW1lQWNwaVZpZXcgKA0KPiArICBW T0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIGdTaGVsbEFjcGlWaWV3RmlsZU5hbWU7DQo+ ICt9DQo+ICsNCj4gKy8qKg0KPiArICBDb25zdHJ1Y3RvciBmb3IgdGhlIFNoZWxsIEFjcGlWaWV3 IENvbW1hbmQgbGlicmFyeS4NCj4gKw0KPiArICBJbnN0YWxsIHRoZSBoYW5kbGVycyBmb3IgYWNw aXZpZXcgVUVGSSBTaGVsbCBjb21tYW5kLg0KPiArDQo+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAg ICAgICAgICAgIFRoZSBpbWFnZSBoYW5kbGUgb2YgdGhlIHByb2Nlc3MuDQo+ICsgIEBwYXJhbSBT eXN0ZW1UYWJsZSAgICAgICAgICAgIFRoZSBFRkkgU3lzdGVtIFRhYmxlIHBvaW50ZXIuDQo+ICsN Cj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIFNoZWxsIGNvbW1hbmQgaGFu ZGxlcnMgd2VyZSBpbnN0YWxsZWQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3VjY2Vzc2Z1bGx5Lg0KPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBIaWkgcGFj a2FnZSBmYWlsZWQgdG8gaW5zdGFsbC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkN Cj4gK1NoZWxsQWNwaVZpZXdDb21tYW5kTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBFRklfSEFO RExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3Rl bVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUgPSBOVUxM Ow0KPiArDQo+ICsgIC8vIENoZWNrIFNoZWxsIFByb2ZpbGUgRGVidWcxIGJpdCBvZiB0aGUgcHJv ZmlsZXMgbWFzaw0KPiArICBpZiAoKEZpeGVkUGNkR2V0OCAoUGNkU2hlbGxQcm9maWxlTWFzaykg JiBCSVQxKSA9PSAwKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArICB9DQo+ICsN Cj4gKyAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUgPSBIaWlBZGRQYWNrYWdlcyAoDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmZ1NoZWxsQWNwaVZpZXdIaWlHdWlkLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0ltYWdlSGFuZGxlLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliU3RyaW5ncywNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICk7DQo+ICsgIGlmIChnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9PSBOVUxM KSB7DQo+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ICsgIH0NCj4gKyAgLy8gSW5z dGFsbCBvdXIgU2hlbGwgY29tbWFuZCBoYW5kbGVyDQo+ICsgIFNoZWxsQ29tbWFuZFJlZ2lzdGVy Q29tbWFuZE5hbWUgKA0KPiArICAgIEwiYWNwaXZpZXciLA0KPiArICAgIFNoZWxsQ29tbWFuZFJ1 bkFjcGlWaWV3LA0KPiArICAgIFNoZWxsQ29tbWFuZEdldE1hbkZpbGVOYW1lQWNwaVZpZXcsDQo+ ICsgICAgMCwNCj4gKyAgICBMImFjcGl2aWV3IiwNCj4gKyAgICBUUlVFLA0KPiArICAgIGdTaGVs bEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAgIFNUUklOR19UT0tFTiAoU1RSX0dFVF9IRUxQX0FD UElWSUVXKQ0KPiArICAgICk7DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0K PiArDQo+ICsvKioNCj4gKyAgRGVzdHJ1Y3RvciBmb3IgdGhlIGxpYnJhcnkuIGZyZWUgYW55IHJl c291cmNlcy4NCj4gKw0KPiArICBAcGFyYW0gSW1hZ2VIYW5kbGUgICAgICAgICAgICBUaGUgaW1h Z2UgaGFuZGxlIG9mIHRoZSBwcm9jZXNzLg0KPiArICBAcGFyYW0gU3lzdGVtVGFibGUgICAgICAg ICAgICBUaGUgRUZJIFN5c3RlbSBUYWJsZSBwb2ludGVyLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMN Cj4gK0VGSUFQSQ0KPiArU2hlbGxBY3BpVmlld0NvbW1hbmRMaWJEZXN0cnVjdG9yICgNCj4gKyAg SU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOIEVGSV9TWVNURU1fVEFC TEUgICpTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIGlmIChnU2hlbGxBY3BpVmlld0hp aUhhbmRsZSAhPSBOVUxMKSB7DQo+ICsgICAgSGlpUmVtb3ZlUGFja2FnZXMgKGdTaGVsbEFjcGlW aWV3SGlpSGFuZGxlKTsNCj4gKyAgfQ0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+ IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0NCj4gYW5kTGliLmgNCj4gYi9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0NCj4g YW5kTGliLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTljOGUyMTU0NGQ2ODI5YWM4NzI5NThmNmIN Cj4gODQzNThlMWY5MWIwMmYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0N Cj4gYW5kTGliLmgNCj4gQEAgLTAsMCArMSwzMiBAQA0KPiArLyoqDQo+ICsgIEhlYWRlciBmaWxl IGZvciAnYWNwaXZpZXcnIFNoZWxsIGNvbW1hbmQgZnVuY3Rpb25zLg0KPiArDQo+ICsgIENvcHly aWdodCAoYykgMjAxNiAtIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAr ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhp cyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBm b3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBM SUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBVRUZJX1NIRUxMX0FDUElWSUVXX0NPTU1BTkRf TElCX0hfDQo+ICsjZGVmaW5lIFVFRklfU0hFTExfQUNQSVZJRVdfQ09NTUFORF9MSUJfSF8NCj4g Kw0KPiArZXh0ZXJuIEVGSV9ISUlfSEFORExFIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlOw0KPiAr DQo+ICsvKioNCj4gKyAgRnVuY3Rpb24gZm9yICdhY3BpdmlldycgY29tbWFuZC4NCj4gKw0KPiAr ICBAcGFyYW1baW5dIEltYWdlSGFuZGxlICBIYW5kbGUgdG8gdGhlIEltYWdlIChOVUxMIGlmIElu dGVybmFsKS4NCj4gKyAgQHBhcmFtW2luXSBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lz dGVtIFRhYmxlIChOVUxMIGlmIEludGVybmFsKS4NCj4gKyovDQo+ICtTSEVMTF9TVEFUVVMNCj4g K0VGSUFQSQ0KPiArU2hlbGxDb21tYW5kUnVuQWNwaVZpZXcgKA0KPiArICBJTiBFRklfSEFORExF ICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRh YmxlDQo+ICsgICk7DQo+ICsNCj4gKyNlbmRpZiAvLyBVRUZJX1NIRUxMX0FDUElWSUVXX0NPTU1B TkRfTElCX0hfDQo+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0NCj4gYW5kTGliLmluZg0KPiBi L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFj cGlWaWV3Q29tbQ0KPiBhbmRMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NWNjMjhlM2Y5 MWJmYWFhMDkyNTQzMDMyDQo+IGM1MGUwMmNiNjMwZmM1DQo+IC0tLSAvZGV2L251bGwNCj4gKysr DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNo ZWxsQWNwaVZpZXdDb21tDQo+IGFuZExpYi5pbmYNCj4gQEAgLTAsMCArMSw1OCBAQA0KPiArIyMg IEBmaWxlDQo+ICsjIFByb3ZpZGVzIFNoZWxsICdhY3BpdmlldycgY29tbWFuZCBmdW5jdGlvbnMN Cj4gKyMNCj4gKyMgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj b21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIGZ1bGwgdGV4dCBv ZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNl Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RS SUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiAr IyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlU SEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMNCj4gKyMNCj4gKyMjDQo+ICsNCj4gK1tE ZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA2 DQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFVlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYg0KPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSBGQjVCMzA1 RS04NEY1LTQ2MUYtOTQwRC04MkQzNDU3NTdBRkENCj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAg ICAgICAgICAgID0gVUVGSV9BUFBMSUNBVElPTg0KPiArICBWRVJTSU9OX1NUUklORyAgICAgICAg ICAgICAgICAgPSAxLjANCj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gTlVM THxVRUZJX0FQUExJQ0FUSU9OIFVFRklfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgICAgICAg ICAgICAgICAgICA9IFNoZWxsQWNwaVZpZXdDb21tYW5kTGliQ29uc3RydWN0b3INCj4gKyAgREVT VFJVQ1RPUiAgICAgICAgICAgICAgICAgICAgID0gU2hlbGxBY3BpVmlld0NvbW1hbmRMaWJEZXN0 cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzLmNvbW1vbl0NCj4gKyAgVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliLnVuaQ0KPiArICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuYw0KPiArICBV ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuaA0KPiArICBBY3BpVmlldy5jDQo+ICsNCj4gK1tQ YWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cu ZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5 Q2xhc3Nlc10NCj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiArICBCYXNlTGliDQo+ICsgIEJh c2VNZW1vcnlMaWINCj4gKyAgRGVidWdMaWINCj4gKyAgU2hlbGxDb21tYW5kTGliDQo+ICsgIFNo ZWxsTGliDQo+ICsgIFVlZmlMaWINCj4gKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQo+ ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0KPiArICBQY2RMaWINCj4gKyAgSGlpTGliDQo+ ICsgIFByaW50TGliDQo+ICsgIEZpbGVIYW5kbGVMaWINCj4gKw0KPiArDQo+ICtbRml4ZWRQY2Rd DQo+ICsgIGdFZmlTaGVsbFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNoZWxsUHJvZmlsZU1hc2sgIyMg Q09OU1VNRVMNCj4gKw0KPiArW0d1aWRzXQ0KPiArICBnU2hlbGxBY3BpVmlld0hpaUd1aWQgICAg ICAgICAgICMjIENPTlNVTUVTICMjIEhJSQ0KPiArICBnRWZpQWNwaVRhYmxlR3VpZCAgICAgICAg ICAgICAgICMjIFNPTUVUSU1FU19DT05TVU1FUyAjIyBTeXN0ZW1UYWJsZQ0KPiBkaWZmIC0tZ2l0 DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNo ZWxsQWNwaVZpZXdDb21tDQo+IGFuZExpYi51bmkNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0NCj4gYW5kTGliLnVu aQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzRkNjZlMWZmNTA3MDU0ZDRhYTQyYmQ0Nw0KPiBiZmFl ODgyNGMyMThlNg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbQ0KPiBhbmRM aWIudW5pDQo+IEBAIC0wLDAgKzEsMTI3IEBADQo+ICsvLyAvKioNCj4gKy8vDQo+ICsvLyBDb3B5 cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ICsvLyBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ ICsvLyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQg Y29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gKy8vIHdoaWNoIGFjY29tcGFuaWVz IHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0K PiBmb3VuZCBhdA0KPiArLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNl bnNlLnBocA0KPiArLy8NCj4gKy8vIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRI RSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArLy8gV0lUSE9VVCBXQVJS QU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1Mg T1IgSU1QTElFRC4NCj4gKy8vDQo+ICsvLyBNb2R1bGUgTmFtZToNCj4gKy8vDQo+ICsvLyBVZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIudW5pDQo+ICsvLw0KPiArLy8gQWJzdHJhY3Q6DQo+ICsv Lw0KPiArLy8gU3RyaW5nIGRlZmluaXRpb25zIGZvciBVRUZJIFNoZWxsIGFjcGl2aWV3IGNvbW1h bmQNCj4gKy8vDQo+ICsvLw0KPiArLy8gKi8NCj4gKw0KPiArLz0jDQo+ICsNCj4gKyNsYW5nZGVm ICAgZW4tVVMgImVuZ2xpc2giDQo+ICsNCj4gKyNzdHJpbmcgU1RSX0dFTl9QUk9CTEVNICAgICAg ICAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMlTjogVW5rbm93bg0KPiBmbGFnIC0gJyVIJXMlTidc clxuIg0KPiArI3N0cmluZyBTVFJfR0VOX05PX1ZBTFVFICAgICAgICAgICNsYW5ndWFnZSBlbi1V UyAiJUglcyVOOiBNaXNzaW5nDQo+IGFyZ3VtZW50IGZvciBmbGFnIC0gJyVIJXMlTidcclxuIg0K PiArI3N0cmluZyBTVFJfR0VOX1RPT19NQU5ZICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUgl cyVOOiBUb28gbWFueQ0KPiBhcmd1bWVudHMuXHJcbiINCj4gKyNzdHJpbmcgU1RSX0dFTl9NSVNT SU5HX09QVElPTiAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMlTjogTWlzc2luZw0KPiBvcHRpb24g JyVIJXMlTicgcmVxdWlyZWQgYnkgZmxhZyAtICclSCVzJU4nXHJcbiINCj4gKyNzdHJpbmcgU1RS X0dFTl9SRUFET05MWV9NRURJQSAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMlTjogVW5hYmxlDQo+ IHRvIHdyaXRlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgY2hlY2sgaWYgbWVkaWEgaXMgd3Jp dGFibGUuXHJcbiINCj4gKw0KPiArI3N0cmluZyBTVFJfR0VUX0hFTFBfQUNQSVZJRVcgICAjbGFu Z3VhZ2UgZW4tVVMgIiINCj4gKyIuVEggYWNwaXZpZXcgMCAiRGlzcGxheSBBQ1BJIGluZm9ybWF0 aW9uLiJcclxuIg0KPiArIi5TSCBOQU1FXHJcbiINCj4gKyJEaXNwbGF5IEFDUEkgVGFibGUgaW5m b3JtYXRpb24uXHJcbiINCj4gKyIuU0ggU1lOT1BTSVNcclxuIg0KPiArIiBcclxuIg0KPiArIkFD UElWSUVXIFtbLT9dIHwgW1stbF0gfCBbLXMgQWNwaVRhYmxlIFstZF1dXSBbLWNdIFstdl0gWy1o IEhpZ2hsaWdodF1dXHJcbiINCj4gKyIgXHJcbiINCj4gKyIuU0ggT1BUSU9OU1xyXG4iDQo+ICsi IFxyXG4iDQo+ICsiICAtbCAtIERpc3BsYXkgbGlzdCBvZiBpbnN0YWxsZWQgQUNQSSBUYWJsZXMu XHJcbiINCj4gKyIgIC1zIC0gRGlzcGxheSBvbmx5IHRoZSBzcGVjaWZpZWQgQWNwaVRhYmxlIHR5 cGUuXHJcbiINCj4gKyIgICAgICAgICBBY3BpVGFibGUgICAgOiBUaGUgcmVxdWlyZWQgQUNQSSBU YWJsZSB0eXBlLlxyXG4iDQo+ICsiICAtZCAtIEdlbmVyYXRlIGEgYmluYXJ5IGZpbGUgZHVtcCBv ZiB0aGUgc3BlY2lmaWVkIEFjcGlUYWJsZS5cclxuIg0KPiArIiAgLWMgLSBDb25zaXN0ZW5jeSBj aGVja2luZyAoZW5hYmxlZCBieSBkZWZhdWx0KS5cclxuIg0KPiArIiAgLXYgLSBEaXNwbGF5IHZl cmJvc2UgZGF0YSAoZW5hYmxlZCBieSBkZWZhdWx0KS5cclxuIg0KPiArIiAgLWggLSBFbmFibGUv RGlzYWJsZSBDb2xvdXIgSGlnaGxpZ2h0aW5nLlxyXG4iDQo+ICsiICAgICAgICAgSGlnaGxpZ2h0 ICAgIDogVFJVRS9PTiBlbmFibGVzIGhpZ2hsaWdodGluZztcclxuIg0KPiArIiAgICAgICAgICAg ICAgICAgICAgICAgIEZBTFNFL09GRiAoZGVmYXVsdCkgZGlzYWJsZXMgaGlnaGxpZ2h0aW5nLlxy XG4iDQo+ICsiICAtPyAtIFNob3cgaGVscC5cclxuIg0KPiArIiBcclxuIg0KPiArIi5TSCBERVND UklQVElPTlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICBUaGlzIHByb2dyYW0gaXMgcHJvdmlkZWQg dG8gYWxsb3cgZXhhbWluYXRpb24gb2YgQUNQSSB0YWJsZSB2YWx1ZXMgZnJvbQ0KPiB0aGVcclxu Ig0KPiArIiAgVUVGSSBTaGVsbC4gIFRoaXMgY2FuIGhlbHAgd2l0aCBpbnZlc3RpZ2F0aW9ucywg ZXNwZWNpYWxseSBhdCB0aGF0IHN0YWdlDQo+IHdoZXJlXHJcbiINCj4gKyIgIHRoZSB0YWJsZXMg YXJlIG5vdCBlbmFibGluZyBhbiBPUyB0byBib290LlxyXG4iDQo+ICsiICBUaGUgcHJvZ3JhbSBp cyBub3QgZXhoYXVzdGl2ZSwgYW5kIG9ubHkgZW5jYXBzdWxhdGVzIGRldGFpbGVkIGtub3dsZWRn ZQ0KPiBvZiBhXHJcbiINCj4gKyIgIGxpbWl0ZWQgbnVtYmVyIG9mIHRhYmxlIHR5cGVzLlxyXG4i DQo+ICsiIFxyXG4iDQo+ICsiICBEZWZhdWx0IGJlaGF2aW91ciBpcyB0byBkaXNwbGF5IHRoZSBj b250ZW50IG9mIGFsbCB0YWJsZXMgaW5zdGFsbGVkLlxyXG4iDQo+ICsiICAnS25vd24nIHRhYmxl IHR5cGVzIChsaXN0ZWQgaW4gTk9URVMgYmVsb3cpIHdpbGwgYmUgcGFyc2VkIGFuZA0KPiBkaXNw bGF5ZWRcclxuIg0KPiArIiAgd2l0aCBkZXNjcmlwdGlvbnMgYW5kIGZpZWxkIHZhbHVlcy4gIFdo ZXJlIGFwcHJvcHJpYXRlIGEgZGVncmVlIG9mDQo+IGNvbnNpc3RlbmN5XHJcbiINCj4gKyIgIGNo ZWNraW5nIGlzIGRvbmUgYW5kIGVycm9ycyBtYXkgYmUgcmVwb3J0ZWQgaW4gdGhlIG91dHB1dC5c clxuIg0KPiArIiAgT3RoZXIgdGFibGUgdHlwZXMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgYW4gYXJy YXkgb2YgSGV4YWRlY2ltYWwgYnl0ZXMuXHJcbiINCj4gKyIgXHJcbiINCj4gKyIgIFRvIGZhY2ls aXRhdGUgZGVidWdnaW5nLCB0aGUgLXMgYW5kIC1kIG9wdGlvbnMgY2FuIGJlIHVzZWQgdG8gZ2Vu ZXJhdGUNCj4gYVxyXG4iDQo+ICsiICBiaW5hcnkgZmlsZSBpbWFnZSBvZiBhIHRhYmxlIHRoYXQg Y2FuIGJlIGNvcGllZCBlbHNld2hlcmUgZm9yDQo+IGludmVzdGlnYXRpb25cclxuIg0KPiArIiAg dXNpbmcgdG9vbHMgc3VjaCBhcyB0aG9zZSBwcm92aWRlZCBieSBhY3BpY2Eub3JnLiAgVGhpcyBp cyBlc3BlY2lhbGx5DQo+IHJlbGV2YW50XHJcbiINCj4gKyIgIGZvciBBTUwgdHlwZSB0YWJsZXMg bGlrZSBEU0RUIGFuZCBTU0RULlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiTk9URVM6XHJcbiINCj4g KyIgIDEuIFRoZSBBY3BpVGFibGUgcGFyYW1ldGVyIGNhbiBtYXRjaCBhbnkgaW5zdGFsbGVkIHRh YmxlIHR5cGUuXHJcbiINCj4gKyIgICAgIFRhYmxlcyB3aXRob3V0IHNwZWNpZmljIGhhbmRsaW5n IHdpbGwgYmUgZGlzcGxheWVkIGFzIGEgcmF3IGhleCBkdW1wDQo+IChvclxyXG4iDQo+ICsiICAg ICBkdW1wZWQgdG8gYSBmaWxlIGlmIC1kIGlzIHVzZWQpLlxyXG4iDQo+ICsiICAyLiBGb3JtYXR0 ZWQgZGlzcGxheSBhbmQgY2hlY2tpbmcgaXMgcHJvdmlkZWQgZm9yIHRoZXNlIHNpZ25hdHVyZQ0K PiB0eXBlczpcclxuIg0KPiArIiAgICAgICBBUElDICAtIE11bHRpcGxlIEFQSUMgRGVzY3JpcHRp b24gVGFibGUgKE1BRFQpXHJcbiINCj4gKyIgICAgICAgQkdSVCAgLSBCb290IEdyYXBoaWNzIFJl c291cmNlIFRhYmxlXHJcbiINCj4gKyIgICAgICAgREJHMiAgLSBEZWJ1ZyBQb3J0IFRhYmxlIDJc clxuIg0KPiArIiAgICAgICBGQUNQICAtIEZpeGVkIEFDUEkgRGVzY3JpcHRpb24gVGFibGUgKEZB RFQpXHJcbiINCj4gKyIgICAgICAgR1REVCAgLSBHZW5lcmljIFRpbWVyIERlc2NyaXB0aW9uIFRh YmxlXHJcbiINCj4gKyIgICAgICAgSU9SVCAgLSBJTyBSZW1hcHBpbmcgVGFibGVcclxuIg0KPiAr IiAgICAgICBNQ0ZHICAtIE1lbW9yeSBNYXBwZWQgQ29uZmlnIFNwYWNlIEJhc2UgQWRkcmVzcyBE ZXNjcmlwdGlvbg0KPiBUYWJsZVxyXG4iDQo+ICsiICAgICAgIFJTRFAgIC0gUm9vdCBTeXN0ZW0g RGVzY3JpcHRpb24gUG9pbnRlclxyXG4iDQo+ICsiICAgICAgIFNMSVQgIC0gU3lzdGVtIExvY2Fs aXR5IEluZm9ybWF0aW9uIFRhYmxlXHJcbiINCj4gKyIgICAgICAgU1BDUiAgLSBTZXJpYWwgUG9y dCBDb25zb2xlIFJlZGlyZWN0aW9uIFRhYmxlXHJcbiINCj4gKyIgICAgICAgU1JBVCAgLSBTeXN0 ZW0gUmVzb3VyY2UgQWZmaW5pdHkgVGFibGVcclxuIg0KPiArIiAgICAgICBYU0RUICAtIEV4dGVu ZGVkIFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZVxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiLlNIIFNU QU5EQVJEU1xyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICBUYWJsZSBkZXRhaWxzIGNvcnJlc3BvbmQg dG8gdGhvc2UgaW4gJ0FkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kDQo+IFBvd2VyXHJcbiINCj4g KyIgIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uJyBWZXJzaW9uIDYuMiBFcnJhdGEgQSwgW1NlcHRl bWJlciAyMDE3XVxyXG4iDQo+ICsiDQo+IChodHRwOi8vd3d3LnVlZmkub3JnL3NpdGVzL2RlZmF1 bHQvZmlsZXMvcmVzb3VyY2VzL0FDUEklMjA2XzJfQV9TZXB0MjkuDQo+IHBkZilcclxuIg0KPiAr IiBcclxuIg0KPiArIiAgTk9URTogVGhlIG5hdHVyZSBvZiB0aGUgQUNQSSBzdGFuZGFyZCBtZWFu cyB0aGF0IGFsbW9zdCBhbGwgdGFibGVzIGluIDYuMQ0KPiB3aWxsXHJcbiINCj4gKyIgICAgICAg IGJlICdiYWNrd2FyZHMgY29tcGF0aWJsZScgd2l0aCBwcmlvciB2ZXJzaW9uIG9mIHRoZSBzcGVj aWZpY2F0aW9uDQo+IGluXHJcbiINCj4gKyIgICAgICAgIHRlcm1zIG9mIHN0cnVjdHVyZSwgc28g Zm9ybWF0dGVkIG91dHB1dCBzaG91bGQgYmUgY29ycmVjdC4gIFRoZQ0KPiBtYWluXHJcbiINCj4g KyIgICAgICAgIGV4Y2VwdGlvbiB3aWxsIGJlIHRoYXQgcHJldmlvdXNseSAncmVzZXJ2ZWQnIGZp ZWxkcyB3aWxsIGJlIHJlcG9ydGVkXHJcbiINCj4gKyIgICAgICAgIHdpdGggbmV3IG5hbWVzLCB3 aGVyZSB0aGV5IGhhdmUgYmVlbiBhZGRlZCBpbiBsYXRlciB2ZXJzaW9ucyBvZg0KPiB0aGVcclxu Ig0KPiArIiAgICAgICAgc3BlY2lmaWNhdGlvbi5cclxuIg0KPiArIiBcclxuIg0KPiArIi5TSCBF WEFNUExFU1xyXG4iDQo+ICsiIFxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiRVhBTVBMRVM6XHJcbiIN Cj4gKyIgICogVG8gZGlzcGxheSBhIGxpc3Qgb2YgdGhlIGluc3RhbGxlZCB0YWJsZSB0eXBlczpc clxuIg0KPiArIiAgICBmczA6XD4gYWNwaXZpZXcgLWxcclxuIg0KPiArIiBcclxuIg0KPiArIiAg KiBUbyBwYXJzZSBhbmQgZGlzcGxheSBhIHNwZWNpZmljIHRhYmxlIHR5cGU6XHJcbiINCj4gKyIg ICAgZnMwOlw+IGFjcGl2aWV3IC1zIEdURFRcclxuIg0KPiArIiBcclxuIg0KPiArIiAgKiBUbyBz YXZlIGEgYmluYXJ5IGR1bXAgb2YgdGhlIGNvbnRlbnRzIG9mIGEgdGFibGUgdG8gYSBmaWxlXHJc biINCj4gKyIgICAgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnk6XHJcbiINCj4gKyIg ICAgZnMwOlw+IGFjcGl2aWV3IC1zIERTRFQgLWRcclxuIg0KPiArIiBcclxuIg0KPiArIiAgKiBU byBkaXNwbGF5IGNvbnRlbnRzIG9mIGFsbCBBQ1BJIHRhYmxlczpcclxuIg0KPiArIiAgICBmczA6 XD4gYWNwaXZpZXdcclxuIg0KPiArIiBcclxuIg0KPiArIi5TSCBSRVRVUk5WQUxVRVNcclxuIg0K PiArIiBcclxuIg0KPiArIlJFVFVSTiBWQUxVRVM6XHJcbiINCj4gKyIgIFNIRUxMX1NVQ0NFU1Mg ICAgICAgICAgICAgRGF0YSB3YXMgZGlzcGxheWVkIGFzIHJlcXVlc3RlZC5cclxuIg0KPiArIiAg U0hFTExfSU5WQUxJRF9QQVJBTUVURVIgICBBQ1BJIFRhYmxlIHBhcnNpbmcgZmFpbGVkLlxyXG4i DQo+ICsiIFxyXG4iDQo+ICsNCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL1NoZWxsUGtnLmRlYyBi L1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiBpbmRleA0KPiAwYzRmNzRmZjQxNzI2YzRhMjhlZDA4 Mjg0OWMxYjg2NGIxYzQ4NzUyLi5jMDkwYWE0ZDA4YmUzYWFkNGQ5YWVkYjU0DQo+IDJjMDEwNTZi Y2U0Njk2OSAxMDA2NDQNCj4gLS0tIGEvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsrKyBiL1No ZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiBAQCAtMyw2ICszLDcgQEANCj4gICMNCj4gICMgKEMpIENv cHlyaWdodCAyMDEzLTIwMTQgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksDQo+ IEwuUC48QlI+DQo+ICAjIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTgsIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyMgQ29weXJpZ2h0IChjKSAyMDE2IC0g MjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAgIw0KPiAgIyBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBh bmQgbWFkZQ0KPiBhdmFpbGFibGUgdW5kZXINCj4gICMgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25z IG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcyB0aGlzDQo+IGRpc3RyaWJ1dGlv bi4NCj4gQEAgLTU2LDcgKzU3LDcgQEAgW0d1aWRzXQ0KPiAgICBnU2hlbGxOZXR3b3JrMkhpaUd1 aWQgICAgICAgICAgID0gezB4MTc0YjJiNSwgMHhmNTA1LCAweDRiMTIsIHsweGFhLCAweDYwLA0K PiAweDU5LCAweGRmLCAweGY4LCAweGQ2LCAweGVhLCAweDM3fX0NCj4gICAgZ1NoZWxsVGZ0cEhp aUd1aWQgICAgICAgICAgICAgICA9IHsweDczOGE5MzE0LCAweDgyYzEsIDB4NDU5MiwgezB4OGYs IDB4ZjcsIDB4YzEsDQo+IDB4YmQsIDB4ZjEsIDB4YjIsIDB4MGUsIDB4ZDR9fQ0KPiAgICBnU2hl bGxCY2ZnSGlpR3VpZCAgICAgICAgICAgICAgID0gezB4NWY1ZjYwNWQsIDB4MTU4MywgMHg0YTJk LCB7MHhhNiwgMHhiMiwgMHhlYiwNCj4gMHgxMiwgMHhkYSwgMHhiNCwgMHhhMiwgMHhiNn19DQo+ IC0NCj4gKyAgZ1NoZWxsQWNwaVZpZXdIaWlHdWlkICAgICAgICAgICA9IHsweGRhOGNjZGY0LCAw eGVkOGYsIDB4NGZmYywgezB4YjUsIDB4ZWYsDQo+IDB4MmUsIDB4ZjUsIDB4NWUsIDB4MjQsIDB4 OTMsIDB4MmF9fQ0KPiAgICAjIEZJTEVfR1VJRCBhcyBkZWZpbmVkIGluIFNoZWxsUGtnL0FwcGxp Y2F0aW9uL1NoZWxsL1NoZWxsLmluZg0KPiAgICBnVWVmaVNoZWxsRmlsZUd1aWQgICAgICAgICAg ICAgID0gezB4N2MwNGE1ODMsIDB4OWUzZSwgMHg0ZjFjLCB7MHhhZCwgMHg2NSwgMHhlMCwNCj4g MHg1MiwgMHg2OCwgMHhkMCwgMHhiNCwgMHhkMX19DQo+IA0KPiAtLQ0KPiAnR3VpZChDRTE2NTY2 OS0zRUYzLTQ5M0YtQjg1RC02MTkwRUU1Qjk3NTkpJw0KPiANCg0K