From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.2.51; helo=eur01-db5-obe.outbound.protection.outlook.com; envelope-from=sami.mujawar@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0051.outbound.protection.outlook.com [104.47.2.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id ECE2D22283518 for ; Tue, 6 Mar 2018 08:02:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=dEPGvu169vdqyWlWjryb52PnQYGPmEyku0TWgcnYEVI=; b=bTqPpkyj2r+g6luuRViLUlCT6VPV1hnedvKGKm//K+B/uiz6SYK0xOb/soqIBgSZ1glonpzZLNzfrNSb2baW1QFdrlGSen+MrRAS4WBNwN6pxdsd272LunbcX8VIkdyC+/daTAktHYkW7t9WTRkMQUSZYDkn843CPK1RVcifNNU= Received: from DB5PR0801MB2710.eurprd08.prod.outlook.com (10.166.170.155) by DB5PR0801MB2742.eurprd08.prod.outlook.com (10.166.176.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.548.13; Tue, 6 Mar 2018 16:08:53 +0000 Received: from DB5PR0801MB2710.eurprd08.prod.outlook.com ([10.166.170.155]) by DB5PR0801MB2710.eurprd08.prod.outlook.com ([10.166.170.155]) with mapi id 15.20.0548.016; Tue, 6 Mar 2018 16:08:53 +0000 From: Sami Mujawar To: Sami Mujawar , "Ni, Ruiyu" , "edk2-devel@lists.01.org" CC: "leif.lindholm@linaro.org" , "Stephanie Hughes-Fitt" , "jiewen.yao@intel.com" , "jaben.carsey@intel.com" , nd Thread-Topic: [PATCH v4] ShellPkg: Add acpiview tool to dump ACPI tables Thread-Index: AQHTrRVeyHeFMUQhb02fe0jJ+y5TxKOzNSdQgBA2WGA= Date: Tue, 6 Mar 2018 16:08:53 +0000 Message-ID: References: <20180223164457.44056-1-sami.mujawar@arm.com> <83c10b19-7965-419f-9e41-638986163044@Intel.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Sami.Mujawar@arm.com; x-originating-ip: [217.140.96.140] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB5PR0801MB2742; 6:kvJRL2X6nloaj6x9O8LCg2VXSOv97vF0X+uk+JnRkW7/hyIuAlQVrieQ7wH9pTsO3RGn0JOvtGelCZoSH3kXoRitojW01pljjCNN8vbd7z3yOvk3dmGLE3L5SAW598z8p2OqjjXnHRgqukE5xBLRmPFjDf1bnXDcy05b/0D2kJHtChYWrUX8FlT3pczFT7I9GLvcOyWrzV4wu4wf3PkbIPTNY3wki9UbPyLt19VmZjnoj0Vy/4CcxmsSccGufYZDcfLL7/zYCXzEy83aCITacZIZ/TaBd3xpojjCaEETQ/5c0hs5hH8BHu74REJIZvd6Maf4n0v9oErBUKxjs+wmaRz+Vlvh/qDIXqxLIHcjoma6dYDSOoJNgQMXr+tNNtvb; 5:xNBs2KPGD5iN8U0/Bdy6pT7qvoAze0V7ivfRziOYLhhPHPMQkQooridhjCtcbVH/GoZEi4BNcPHn5ZPSDCHDrVu8KUlm8bSBlvjEQYpG7FINn7ogZtR9PVqxLPT9EOt9EKg5gj8LakZabhKZuDin4WmrsJzVkkXW8uZT8pr5Cc4=; 24:BJy1l28b51E5wsimBRUAOIcWNv1T87N2c60NIryKR8WcydXFToik+MfCQpgjY7D8fs8945qisRPw655sEduk4uW+GZ/gJGTtidqGx9i3jLg=; 7:swxeXjyvhpM4EPZrYQJCakoQBlt7p4PBY+ZDCZjFleNGdcSKCn2E+yN63TmiIDfOPfdzzlhVDzgTiqOI6bbLaWuTkcJfd8cMc4L+isznHHEKtJbRAH/CyFZEB028xq6QwdHFpjeqQYI6j9FQVvpjYgcWsIfpBAZJHxpux4XushNTUcovg9jhLCzEfJ5/b6M/KmyoIeG+EzRVVXy7aZB+K/bJ1SPS8+6Xv9CAgEFprh2+3iQtbXLWAIpVjQMBZSsa x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: a32ca89a-d017-429b-f75f-08d5837c8eb4 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(3008032)(2017052603328)(7153060)(7193020); SRVR:DB5PR0801MB2742; x-ms-traffictypediagnostic: DB5PR0801MB2742: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(158342451672863)(180628864354917)(166708455590820)(131327999870524)(162533806227266)(265313219721884)(211171220733660)(228905959029699)(17755550239193); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3231220)(944501244)(52105095)(3002001)(6055026)(6041288)(20161123560045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(6072148)(201708071742011); SRVR:DB5PR0801MB2742; BCL:0; PCL:0; RULEID:; SRVR:DB5PR0801MB2742; x-forefront-prvs: 06036BD506 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39380400002)(396003)(366004)(39860400002)(346002)(376002)(199004)(189003)(13464003)(86362001)(305945005)(45080400002)(33656002)(74316002)(316002)(7736002)(110136005)(966005)(16799955002)(5660300001)(54906003)(2950100002)(2906002)(14454004)(15188155005)(77096007)(53546011)(575784001)(66066001)(102836004)(59450400001)(26005)(6506007)(229853002)(3280700002)(68736007)(53376002)(99286004)(53366004)(4326008)(6116002)(3846002)(55016002)(97736004)(6436002)(106356001)(9686003)(53946003)(2900100001)(105586002)(53936002)(81166006)(76176011)(6306002)(25786009)(7696005)(8676002)(16200700003)(8936002)(72206003)(2501003)(3660700001)(6246003)(478600001)(81156014)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR0801MB2742; H:DB5PR0801MB2710.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 7qZog0ItBMbNckP6LtcM5CqqpZKlJ4Wq8sIouhgjawve/vsiZxMo0dCY5vvUNKcFQu4k/Q+MV0pH9ID9VJJ5va6AQ5GcRH1+DGNtKz4LqCYFI5xCIZs/Ar0R8x01yKi7fIFJXIG4dML++sHEcRp1E0Z71F1I5xs/EL0zW5OLTGeAKWTZpmbECpvr9fF4cbImCyyCcUSxPXIA/aydxDopz++BH7Yx2ntrwFqSMy/aUf+m/YuJdAtg6y7NTazvwsZtJ76BLXYWmYOH44gESg5eJftrj85DoDZfsK3kZESgCxpGkqjJKmO3NkP5HeUVk91aB6SHH9g+3xIijj63BKKPUQ== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: a32ca89a-d017-429b-f75f-08d5837c8eb4 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Mar 2018 16:08:53.4013 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR0801MB2742 Subject: Re: [PATCH v4] 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: Tue, 06 Mar 2018 16:02:53 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgUmF5LA0KDQpDYW4geW91IGxldCBtZSBrbm93IGlmIHRoZXJlIGlzIGFueXRoaW5nIG1vcmUg eW91IG5lZWQgZnJvbSBtZSBiZWZvcmUgeW91IGNhbiBhY2NlcHQgdGhpcyBwYXRjaCwgcGxlYXNl Pw0KDQpSZWdhcmRzLA0KDQpTYW1pIE11amF3YXINCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCkZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEu b3JnXSBPbiBCZWhhbGYgT2YgU2FtaSBNdWphd2FyDQpTZW50OiAyNiBGZWJydWFyeSAyMDE4IDA3 OjE2IFBNDQpUbzogTmksIFJ1aXl1IDxydWl5dS5uaUBJbnRlbC5jb20+OyBlZGsyLWRldmVsQGxp c3RzLjAxLm9yZw0KQ2M6IGxlaWYubGluZGhvbG1AbGluYXJvLm9yZzsgU3RlcGhhbmllIEh1Z2hl cy1GaXR0IDxTdGVwaGFuaWUuSHVnaGVzLUZpdHRAYXJtLmNvbT47IGppZXdlbi55YW9AaW50ZWwu Y29tOyBqYWJlbi5jYXJzZXlAaW50ZWwuY29tOyBuZCA8bmRAYXJtLmNvbT4NClN1YmplY3Q6IFJl OiBbZWRrMl0gW1BBVENIIHY0XSBTaGVsbFBrZzogQWRkIGFjcGl2aWV3IHRvb2wgdG8gZHVtcCBB Q1BJIHRhYmxlcw0KDQpbVGhpcyBzZW5kZXIgZmFpbGVkIG91ciBmcmF1ZCBkZXRlY3Rpb24gY2hl Y2tzIGFuZCBtYXkgbm90IGJlIHdobyB0aGV5IGFwcGVhciB0byBiZS4gTGVhcm4gYWJvdXQgc3Bv b2ZpbmcgYXQgaHR0cDovL2FrYS5tcy9MZWFybkFib3V0U3Bvb2ZpbmddDQoNCkhpIFJheSwNCg0K UGxlYXNlIHNlZSBteSByZXNwb25zZSBiZWxvdyBtYXJrZWQgW1NBTUldLg0KDQo+PiAgIFNoZWxs UGtnL0luY2x1ZGUvTGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA0NDkgKysrKysrKysrKysrDQo+PiAgIFNoZWxsUGtnL0luY2x1ZGUv TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaCAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAxMjYgKysrKw0KDQo+IFNhbWksIHNob3VsZCB0aGUgYWJvdmUgdHdvIG5ldyBmaWxlcyBi ZSByZW1vdmVkPw0KDQpbU0FNSV0gVGhlIGluZGl2aWR1YWwgdGFibGUgcGFyc2VycyBhcmUgaW1w bGVtZW50ZWQgYXMgTlVMTCBsaWJyYXJpZXMgdGhhdCByZWdpc3RlciB0aGUgcGFyc2VyIHdpdGgg VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLiBUaGVzZSBwYXJzZXIgbGlicmFyaWVzIGFyZSBw cmVzZW50IGluIHN1YiBmb2xkZXJzIGUuZy4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0OyBhIGNoYW5nZSB0aGF0IHdhcyBpbnRyb2R1Y2Vk IGluIHRoZSB2MyBwYXRjaCBpbiByZXNwb25zZSB0byByZXZpZXcgY29tbWVudHMuIEZvciBidWls ZGluZyB0aGUgcGFyc2VyIGxpYnJhcmllcywgSSBuZWVkIGEgbWVjaGFuaXNtIHRvIGdldCB0aGUg aW5jbHVkZSBwYXRoIHRvIHRoZSBoZWFkZXIgZmlsZXMgYWJvdmUgKHdoaWNoIGV4cG9zZSB0aGUg cGFyc2VyIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYW5kIHRoZSBjb21tb24gZnVuY3Rpb25hbGl0 eSBpbXBsZW1lbnRlZCBpbiBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIpLiBUaGVyZWZvcmUs IEkgaGF2ZSBrZXB0IHRoZW0gdW5kZXIgU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3 Lg0KDQo+IFNpbmNlIHBlciB5b3VyIGNvbW1lbnRzLCB0aGUgaW50ZXJmYWNlcyBhcmUga2VwdCBp bnNpZGUgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLg0KDQpbU0FNSV0gSXQgbG9va3MgbGlr ZSBJIGhhZCBub3QgZnVsbHkgdW5kZXJzdG9vZCB5b3VyICMyIGNvbW1lbnQuIEkgaGFkIGEgaGVs cGVyIGxpYnJhcnkgZm9yIGV4cG9zaW5nIHRoZSByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFuZCBj b21tb24gZnVuY3Rpb25hbGl0eS4gSSBtb3ZlZCB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8ga2VlcCB0 aGVzZSBpbnRlcmZhY2VzIGluc2lkZSBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuDQpIb3dl dmVyIGFzIGV4cGxhaW5lZCBhYm92ZSBJIGhhdmUgdGhlIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGlt cGxlbWVudGVkIGFzIHBhcnQgb2YgdGhlIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYiB3aGlj aCBpcyB1dGlsaXplZCBieSBpbmRpdmlkdWFsIHBhcnNlcnMuDQoNCkNvbnNpZGVyaW5nIHRoZSBh Ym92ZSBJIGhvcGUgdGhlIHBhdGNoIE9LLiBBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgY2FuIGFkdmlz ZSBtZSBvbiBhIGJldHRlciB3YXkgb2YgYWNoaWV2aW5nIHRoaXMsIEkgd2lsbCBiZSBoYXBweSB0 byBpbmNvcnBvcmF0ZSB0aGUgY2hhbmdlcy4NCg0KUmVnYXJkcywNCg0KU2FtaSBNdWphd2FyDQoN Ci0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBOaSwgUnVpeXUgW21haWx0bzpydWl5 dS5uaUBJbnRlbC5jb21dDQpTZW50OiAyNCBGZWJydWFyeSAyMDE4IDAyOjE1IEFNDQpUbzogU2Ft aSBNdWphd2FyIDxTYW1pLk11amF3YXJAYXJtLmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3Jn DQpDYzogRXZhbiBMbG95ZCA8RXZhbi5MbG95ZEBhcm0uY29tPjsgbGVpZi5saW5kaG9sbUBsaW5h cm8ub3JnOyBNYXR0ZW8gQ2FybGluaSA8TWF0dGVvLkNhcmxpbmlAYXJtLmNvbT47IFN0ZXBoYW5p ZSBIdWdoZXMtRml0dCA8U3RlcGhhbmllLkh1Z2hlcy1GaXR0QGFybS5jb20+OyBuZCA8bmRAYXJt LmNvbT47IGphYmVuLmNhcnNleUBpbnRlbC5jb207IGppZXdlbi55YW9AaW50ZWwuY29tDQpTdWJq ZWN0OiBSZTogW1BBVENIIHY0XSBTaGVsbFBrZzogQWRkIGFjcGl2aWV3IHRvb2wgdG8gZHVtcCBB Q1BJIHRhYmxlcw0KDQpPbiAyLzI0LzIwMTggMTI6NDQgQU0sIFNhbWkgTXVqYXdhciB3cm90ZToN Cj4gVGhpcyBwcm9ncmFtIGlzIHByb3ZpZGVkIHRvIGFsbG93IGV4YW1pbmF0aW9uIG9mIEFDUEkg dGFibGUgY29udGVudHMNCj4gZnJvbSB0aGUgVUVGSSBTaGVsbC4gIFRoaXMgY2FuIGhlbHAgd2l0 aCBpbnZlc3RpZ2F0aW9ucywgZXNwZWNpYWxseSBhdA0KPiB0aGF0IHN0YWdlIHdoZXJlIHRoZSB0 YWJsZXMgYXJlIG5vdCBlbmFibGluZyBhbiBPUyB0byBib290Lg0KPiBUaGUgcHJvZ3JhbSBpcyBu b3QgZXhoYXVzdGl2ZSwgYW5kIG9ubHkgZW5jYXBzdWxhdGVzIGRldGFpbGVkIGtub3dsZWRnZQ0K PiBvZiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHRhYmxlIHR5cGVzLg0KPg0KPiBEZWZhdWx0IGJlaGF2 aW91ciBpcyB0byBkaXNwbGF5IHRoZSBjb250ZW50IG9mIGFsbCB0YWJsZXMgaW5zdGFsbGVkLg0K PiAnS25vd24nIHRhYmxlIHR5cGVzIHdpbGwgYmUgcGFyc2VkIGFuZCBkaXNwbGF5ZWQgd2l0aCBk ZXNjcmlwdGlvbnMgYW5kDQo+IGZpZWxkIHZhbHVlcy4gIFdoZXJlIGFwcHJvcHJpYXRlIGEgZGVn cmVlIG9mIGNvbnNpc3RlbmN5IGNoZWNraW5nIGlzDQo+IGRvbmUgYW5kIGVycm9ycyBtYXkgYmUg cmVwb3J0ZWQgaW4gdGhlIG91dHB1dC4NCj4gT3RoZXIgdGFibGUgdHlwZXMgd2lsbCBiZSBkaXNw bGF5ZWQgYXMgYW4gYXJyYXkgb2YgSGV4YWRlY2ltYWwgYnl0ZXMuDQo+DQo+IFRvIGZhY2lsaXRh dGUgZGVidWdnaW5nLCB0aGUgLXMgYW5kIC1kIG9wdGlvbnMgY2FuIGJlIHVzZWQgdG8gZ2VuZXJh dGUgYQ0KPiBiaW5hcnkgZmlsZSBpbWFnZSBvZiBhIHRhYmxlIHRoYXQgY2FuIGJlIGNvcGllZCBl bHNld2hlcmUgZm9yDQo+IGludmVzdGlnYXRpb24gdXNpbmcgdG9vbHMgc3VjaCBhcyB0aG9zZSBw cm92aWRlZCBieSBhY3BpY2Eub3JnLiAgVGhpcyBpcw0KPiBlc3BlY2lhbGx5IHJlbGV2YW50IGZv ciBBTUwgdHlwZSB0YWJsZXMgbGlrZSBEU0RUIGFuZCBTU0RULg0KPg0KPiBUaGUgaW5zcGlyYXRp b24gZm9yIHRoaXMgaXMgdGhlIGV4aXN0aW5nIHNtYmlvc3ZpZXcgRGVidWcxIFNoZWxsDQo+IGNv bW1hbmQuDQo+DQo+IE1hbnkgdGFibGVzIGFyZSBub3QgZXhwbGljaXRseSBoYW5kbGVkLCBpbiBw YXJ0IGJlY2F1c2Ugbm8gZXhhbXBsZXMgYXJlDQo+IGF2YWlsYWJsZSBmb3Igb3VyIHRlc3Rpbmcu DQo+DQo+IFRoZSBwcm9ncmFtIGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuZGVkIHRvIG5ldyB0YWJs ZXMgd2l0aCBtaW5pbWFsDQo+IGVmZm9ydCwgYW5kIGNvbnRyaWJ1dGlvbnMgYXJlIGludml0ZWQu DQo+DQo+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVu dCAxLjENCj4gU2lnbmVkLW9mZi1ieTogU2FtaSBNdWphd2FyIDxzYW1pLm11amF3YXJAYXJtLmNv bT4NCj4gU2lnbmVkLW9mZi1ieTogRXZhbiBMbG95ZCA8ZXZhbi5sbG95ZEBhcm0uY29tPg0KPiBS ZXZpZXdlZC1ieTogSmFiZW4gQ2Fyc2V5IDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPg0KPiAtLS0N Cj4NCj4gVGhlIHVwZGF0ZWQgY2hhbmdlcyBjYW4gYmUgdmlld2VkIGF0Og0KPiAgICAgICBodHRw czovL2dpdGh1Yi5jb20vc2FtaW11amF3YXIvZWRrMi90cmVlLzE4OF9hY3Bpdmlld192NA0KPg0K PiBOb3RlczoNCj4gICAgICB2NDoNCj4gICAgICAtIEZpcnN0bHksIHB1YmxpYyBsaWJyYXJ5IEFQ SXMgc2hvdWxkIGhhdmUgIkVGSUFQSSIgZGVjb3JhdG9yLiAgICAgW1JBWV0NCj4gICAgICAtIFJl c3VibWl0dGluZyB1cGRhdGVkIHBhdGNoIHdpdGggIkVGSUFQSSIgZGVjb3JhdG9yLiAgICAgICAg ICAgICBbU0FNSV0NCj4NCj4gICAgICAtIFNlY29uZGx5LCBJIGFtIHdvbmRlcmluZyBpZiBpdCdz IHBvc3NpYmxlIHRvIG5vdCBleHBvc2UgYW55DQo+ICAgICAgICBsaWJyYXJ5IGNsYXNzZXMgZm9y IGhhbmRsaW5nIG9mIG1vcmUgQUNQSSB0YWJsZXMuDQo+ICAgICAgICBJIGFncmVlIHRvIGltcGxl bWVudCBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIgaW4gYSB3YXkgZm9yIGVhc3kNCj4gICAg ICAgIGV4dGVuc2lvbiBmb3IgaGFuZGxpbmcgb2YgbW9yZSBBQ1BJIHRhYmxlcywgYnV0IEkgcHJl ZmVyIHRvIGtlZXAgdGhlDQo+ICAgICAgICBpbnRlcmZhY2VzIGludGVybmFsbHkgaW5zaWRlIHRo ZSBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuICAgIFtSQVldDQo+ICAgICAgLSBVcGRhdGVk IGFzIHN1Z2dlc3RlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg W1NBTUldDQo+DQo+ICAgICAgdjM6DQo+ICAgICAgLSBDYW4gdGhlIGluZGl2aWR1YWwgImNoaWxk IiBsaWJyYXJpZXMgYmUgcGxhY2VkIGludG8NCj4gICAgICAgIHN1YmRpcmVjdG9yaWVzIHVuZGVy IFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYiBkaXJlY3RvcnkNCj4gICAgICAgIGZvciBjbGVh ciBzZXBhcmF0aW9uPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtK QUJFTl0NCj4gICAgICAtIFBhdGNoIHVwZGF0ZWQgdG8gbW92ZSBpbmRpdmlkdWFsICJjaGlsZCIg bGlicmFyaWVzIGludG8NCj4gICAgICAgIHN1YmRpcmVjdG9yaWVzLiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU0FNSV0NCj4NCj4gICAgICAtIEluIFVl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYixjIHdoYXQncyB0aGUgbW90aXZhdGlvbiBmb3IgYWxs DQo+ICAgICAgICB0aGUgd3JhcHBlcnMgYXJvdW5kIHByaW50PyBJIHNlZSB0aGF0IHNvbWUgYXJl IGZvciBtZW1vcnkgYWNjZXNzDQo+ICAgICAgICByZXN0cmljdGlvbnMsIGJ1dCB0aGUgcmVzdD8g IFByaW50R3VpZCwgbG9va3MgdGhlIHNhbWUgYXMgdXNpbmcNCj4gICAgICAgICVnIHdpdGggUHJp bnQoKS4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtKQUJF Tl0NCj4gICAgICAtIFRoZSBwcmludCB3cmFwcGVycyBlbmFibGUgYSBjb21tb24gc3R5bGVkIGZv cm1hdHRlZCBwcmludGluZyBmb3INCj4gICAgICAgIHRoZSBBQ1BJIGZpZWxkcy4gVGhlIEFDUEl2 aWV3IHRhYmxlIHBhcnNpbmcgZnJhbWV3b3JrIHV0aWxpemVzIGENCj4gICAgICAgIHRhYmxlLWRy aXZlbiBhcHByb2FjaCBmb3IgcGFyc2luZyB0aGUgdGFibGVzIGFuZCB0aGVzZSBmdW5jdGlvbnMN Cj4gICAgICAgIGFyZSBpbnZva2VkIGJ5IHRoZSBmcmFtZXdvcmsgYmFzZWQgb24gdGhlIGZpZWxk IHNpemUgYW5kIHR5cGUuDQo+ICAgICAgICBIb3dldmVyIHlvdSBhcmUgcmlnaHQsIGl0IGlzIHN1 cGVyZmx1b3VzIGluIHRoZSBjYXNlIG9mIFByaW50R3VpZA0KPiAgICAgICAgKFdoaWNoIGhhcyBu b3cgYmVlbiByZW1vdmVkIGluIHRoZSB1cGRhdGVkIHBhdGNoKS4gICAgICAgICAgICAgIFtTQU1J XQ0KPg0KPiAgICAgIC0gRG8gd2Ugd2FudCB0byBjaGFuZ2UgdGhlIG1haW4gZW50cnlwb2ludCB0 byBhIER5bmFtaWNDb21tYW5kDQo+ICAgICAgICBzaW5jZSB0aGlzIGNvbW1hbmQgaXMgbm90IGlu IHRoZSBzaGVsbCBzcGVjPyBJZiB5ZXMsIGRvIHdlIHdhbnQNCj4gICAgICAgIHRvIGRvIHRoYXQg Zmlyc3Qgb3IgYWZ0ZXI/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtKQUJF Tl0NCj4gICAgICAtIFRoZSBFQ1IgMTc4NCBmb3IgQUNQSXZpZXcgYXBwZWFycyB0byBiZSAnQXBw cm92ZWQgYXMgbmV3IGNvbnRlbnQNCj4gICAgICAgIGZvciB0aGUgU2hlbGwgU3BlYy4nIGluIE1h bnRpcywNCj4gICAgICAgIHNlZSBodHRwczovL21hbnRpcy51ZWZpLm9yZy9tYW50aXMvdmlldy5w aHA/aWQ9MTc4NC4NCj4gICAgICAgIEFzIEkgdW5kZXJzdGFuZCBpdCwgdGhlIEVDUiBjaGFuZ2Ug bmVlZHMgdG8gYmUgcHJvcGFnYXRlZCB0byB0aGUNCj4gICAgICAgIFNoZWxsIHNwZWNpZmljYXRp b24gYW5kIGlzIHBlbmRpbmcuIEluIGxpZ2h0IG9mIHRoZSBhYm92ZSwgSSB0aGluaw0KPiAgICAg ICAgdGhhdCBhZGRpbmcgRHluYW1pY0NvbW1hbmQgc3VwcG9ydCBpcyBub3QgbmVjZXNzYXJ5LiBQ bGVhc2UgbGV0IG1lDQo+ICAgICAgICBrbm93IGlmIHlvdSBmZWVsIG90aGVyd2lzZS4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NBTUldDQo+DQo+ICAgU2hlbGxQa2cvSW5j bHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDQ0OSArKysrKysrKysrKysNCj4gICBTaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkv QWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTI2 ICsrKysNCg0KU2FtaSwgc2hvdWxkIHRoZSBhYm92ZSB0d28gbmV3IGZpbGVzIGJlIHJlbW92ZWQ/ DQpTaW5jZSBwZXIgeW91ciBjb21tZW50cywgdGhlIGludGVyZmFjZXMgYXJlIGtlcHQgaW5zaWRl DQpVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuDQoNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmMgICAgICAgICAgICAgICAgICAg IHwgNjYyICsrKysrKysrKysrKysrKysrDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvQWNwaVRhYmxlUGFyc2VyLmMgICAgICAgICAgICAgICB8IDIxNSAr KysrKysNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9B Y3BpVmlldy5jICAgICAgICAgICAgICAgICAgICAgIHwgNjAxICsrKysrKysrKysrKysrKysNCj4g ICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5o ICAgICAgICAgICAgICAgICAgICAgIHwgMTAzICsrKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyLmMgICAgICAg fCAxMTcgKysrDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXJMaWIuaW5mICB8ICAzMyArDQo+ICAgU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJz ZXIuYyAgICAgICB8IDI4NyArKysrKysrKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRGJnMi9EYmcyUGFyc2VyTGliLmluZiAgfCAgMzMg Kw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvRHNkdC9Ec2R0UGFyc2VyLmMgICAgICAgfCAgOTIgKysrDQo+ICAgU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJzZXJMaWIu aW5mICB8ICAzMyArDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJzZXIuYyAgICAgICB8IDMwOSArKysrKysrKw0KPiAg IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFk dC9GYWR0UGFyc2VyTGliLmluZiAgfCAgMzMgKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyLmMgICAgICAgfCAz MzggKysrKysrKysrDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXJMaWIuaW5mICB8ICAzMyArDQo+ICAgU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQ YXJzZXIuYyAgICAgICB8IDc0NSArKysrKysrKysrKysrKysrKysrKw0KPiAgIFNoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2Vy TGliLmluZiAgfCAgMzMgKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0UGFyc2VyLmMgICAgICAgfCAzNTggKysrKysrKysr Kw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvTWFkdC9NYWR0UGFyc2VyTGliLmluZiAgfCAgMzMgKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyLmMgICAg ICAgfCAxMzkgKysrKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyTGliLmluZiAgfCAgMzMgKw0KPiAgIFNoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2Rw UGFyc2VyLmMgICAgICAgfCAyMTQgKysrKysrDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZXJMaWIuaW5mICB8ICAz MyArDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9TbGl0L1NsaXRQYXJzZXIuYyAgICAgICB8IDE4NyArKysrKw0KPiAgIFNoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2Vy TGliLmluZiAgfCAgMzMgKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyLmMgICAgICAgfCAyMTMgKysrKysrDQo+ ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9T cGNyL1NwY3JQYXJzZXJMaWIuaW5mICB8ICAzMyArDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXIuYyAgICAgICB8 IDM3NSArKysrKysrKysrDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXJMaWIuaW5mICB8ICAzMyArDQo+ICAgU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0L1Nz ZHRQYXJzZXIuYyAgICAgICB8ICA5MiArKysNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQvU3NkdFBhcnNlckxpYi5pbmYgIHwgIDMz ICsNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1hzZHQvWHNkdFBhcnNlci5jICAgICAgIHwgMTk4ICsrKysrKw0KPiAgIFNoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2Vy TGliLmluZiAgfCAgMzMgKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5jICAgfCAxMDYgKysrDQo+ICAg U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliLmggICB8ICAzMiArDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmluZiB8ICA2 MCArKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi51bmkgfCAxMjcgKysrKw0KPiAgIFNoZWxsUGtnL1No ZWxsUGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDMgKy0NCj4gICAzOSBmaWxlcyBjaGFuZ2VkLCA2NjA5IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkNCj4NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0luY2x1ZGUvTGli cmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmggYi9TaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNw aVZpZXcvQWNwaVBhcnNlci5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ZDc1ZWViOTI4MmE3NjQ5MjQz M2U0NjBhMTgwZGNjNGNkMTRjNGUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9J bmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oDQo+IEBAIC0wLDAgKzEsNDQ5IEBA DQo+ICsvKioNCj4gKyAgSGVhZGVyIGZpbGUgZm9yIEFDUEkgcGFyc2VyDQo+ICsNCj4gKyAgQ29w eXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz dHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQN Cj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiAr DQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBP TiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5U QVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArKiovDQo+ ICsNCj4gKyNpZm5kZWYgQUNQSVBBUlNFUl9IXw0KPiArI2RlZmluZSBBQ1BJUEFSU0VSX0hfDQo+ ICsNCj4gKyNkZWZpbmUgT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAgMzYNCj4gKw0KPiArLy8v IFRoZSBSU0RQIHRhYmxlIHNpZ25hdHVyZSBpcyAiUlNEIFBUUiAiICg4IGJ5dGVzKQ0KPiArLy8v IEhvd2V2ZXIgVGhlIHNpZ25hdHVyZSBmb3IgQUNQSSB0YWJsZXMgaXMgNCBieXRlcy4NCj4gKy8v LyBUbyB3b3JrIGFyb3VuZCB0aGlzIG9kZGl0eSBkZWZpbmUgYSBzaWduYXR1cmUgdHlwZQ0KPiAr Ly8vIHRoYXQgYWxsb3dzIHVzIHRvIHByb2Nlc3MgdGhlIGxvZyBvcHRpb25zLg0KPiArI2RlZmlu ZSBSU0RQX1RBQkxFX0lORk8gIFNJR05BVFVSRV8zMignUicsICdTJywgJ0QnLCAnUCcpDQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291 bnRlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0luY3JlbWVudEVycm9yQ291bnQg KA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVu dHMgdGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3VudGVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VG SUFQSQ0KPiArSW5jcmVtZW50V2FybmluZ0NvdW50ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgQUNQSSB0YWJsZSBjaGVja3N1bS4N Cj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBjaGVja3N1bSBmb3IgdGhlIEFD UEkgdGFibGUgYW5kIG9wdGlvbmFsbHkNCj4gKyAgcHJpbnRzIHRoZSBzdGF0dXMuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gTG9nICAgICBJZiBUUlVFIGxvZyB0aGUgc3RhdHVzIG9mIHRoZSBjaGVj a3N1bS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgdGFibGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggIFRoZSBsZW5ndGggb2Yg dGhlIGJ1ZmZlci4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUgICAgICAgICBUaGUgY2hlY2tzdW0g aXMgT0suDQo+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgIFRoZSBjaGVja3N1bSBmYWlsZWQuDQo+ ICsqLw0KPiArQk9PTEVBTg0KPiArRUZJQVBJDQo+ICtWZXJpZnlDaGVja3N1bSAoDQo+ICsgIElO IEJPT0xFQU4gTG9nLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBMZW5n dGgNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSByYXcgZGF0 YSBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIHRhYmxlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtp bl0gTGVuZ3RoICBUaGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiAr RUZJQVBJDQo+ICtEdW1wUmF3ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDMy IExlbmd0aA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMSBieXRl IG9mIGRhdHVtIGFzIHNwZWNpZmllZCBpbiB0aGUNCj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcg dGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXBVaW50OCAo DQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0 cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMiBieXRlcyBvZiBk YXRhIGFzIHNwZWNpZmllZCBpbiB0aGUNCj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiArDQo+ICsg IEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRh dGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXBVaW50MTYgKA0KPiAr ICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4g KyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDQgYnl0ZXMgb2YgZGF0YSBh cyBzcGVjaWZpZWQgaW4gdGhlDQo+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiArICBAcGFy YW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0K PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZm ZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtEdW1wVWludDMyICgNCj4gKyAgSU4g Q09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7 DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA4IGJ5dGVzIG9mIGRhdGEgYXMgc3Bl Y2lmaWVkIGJ5IHRoZQ0KPiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4gKyAgQHBhcmFtIFtp bl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0K PiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVtcFVpbnQ2NCAoDQo+ICsgIElOIENPTlNU IENIQVIxNiogRm9ybWF0LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMyBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBv cHRpb25hbGx5DQo+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVj aWZpZWQuDQo+ICsNCj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZv cm1hdCBtdXN0IGJlIE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25h bCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQ dHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9J RA0KPiArRUZJQVBJDQo+ICtEdW1wM0NoYXJzICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3Jt YXQgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA0IGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlv bmFsbHkNCj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmll ZC4NCj4gKw0KPiArICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0 IG11c3QgYmUgTlVMTC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZv cm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ ICtFRklBUEkNCj4gK0R1bXA0Q2hhcnMgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBP UFRJT05BTCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gdHJhY2VzIDYgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxs eQ0KPiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0K PiArDQo+ICsgIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVz dCBiZSBOVUxMLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0 IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VG SUFQSQ0KPiArRHVtcDZDaGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElP TkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhp cyBmdW5jdGlvbiB0cmFjZXMgOCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsN Cj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJl IE5VTEwuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3Ry aW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJ DQo+ICtEdW1wOENoYXJzICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUws DQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1 bmN0aW9uIGluZGVudHMgYW5kIHByaW50cyB0aGUgQUNQSSB0YWJsZSBGaWVsZCBOYW1lLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIEluZGVudCAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRkIHRv IHRoZSBnbG9iYWwgdGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LiBU aGUgZ2xvYmFsIHRhYmxlIGluZGVudCBpcyAwIGJ5IGRlZmF1bHQ7DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgIGhvd2V2ZXIgdGhpcyB2YWx1ZSBpcyB1cGRhdGVkIG9uIGVudHJ5IHRvIHRo ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZUFjcGkoKSBieSBhZGRpbmcgdGhl IGluZGVudCB2YWx1ZSBwcm92aWRlZCB0bw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBQ YXJzZUFjcGkoKSBhbmQgcmVzdG9yZWQgYmFjayBvbiBleGl0LiBUaGVyZWZvcmUNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgdGhlIHRvdGFsIGluZGVudCBpbiB0aGUgb3V0cHV0IGlzIGRl cGVuZGVudCBvbiBmcm9tDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRoaXMg ZnVuY3Rpb24gaXMgY2FsbGVkLg0KPiArICBAcGFyYW0gW2luXSBGaWVsZE5hbWUgICBQb2ludGVy IHRvIHRoZSBGaWVsZCBOYW1lLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUHJpbnRG aWVsZE5hbWUgKA0KPiArICBJTiBVSU5UMzIgICAgICAgICBJbmRlbnQsDQo+ICsgIElOIENPTlNU IENIQVIxNiogIEZpZWxkTmFtZQ0KPiArKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcG9p bnRlciBpcyB0aGUgdGVtcGxhdGUgZm9yIGN1c3RvbWl6aW5nIHRoZSB0cmFjZSBvdXRwdXQNCj4g Kw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIEZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhl IGRhdGEgYXMgc3BlY2lmaWVkIGJ5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlICdGb3Jt YXQnIG1lbWJlciBvZiBBQ1BJX1BBUlNFUi4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK3R5cGVkZWYgVk9JRCAo RUZJQVBJICpGTlBUUl9QUklOVF9GT1JNQVRURVIpKENPTlNUIENIQVIxNiogRm9ybWF0LCBVSU5U OCogUHRyKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcG9pbnRlciBpcyB0aGUgdGVtcGxh dGUgZm9yIHZhbGlkYXRpbmcgYW4gQUNQSSB0YWJsZSBmaWVsZC4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiAr ICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1h dGlvbiBhcyBzcGVjaWZpZWQgYnkNCj4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgJ0NvbnRl eHQnIG1lbWJlciBvZiB0aGUgQUNQSV9QQVJTRVIuDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ZS5nLiB0aGlzIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ ICsqLw0KPiArdHlwZWRlZiBWT0lEIChFRklBUEkgKkZOUFRSX0ZJRUxEX1ZBTElEQVRPUikoVUlO VDgqIFB0ciwgVk9JRCogQ29udGV4dCk7DQo+ICsNCj4gKy8qKiBUaGUgQUNQSV9QQVJTRVIgc3Ry dWN0dXJlIGRlc2NyaWJlcyB0aGUgZmllbGRzIG9mIGFuIEFDUEkgdGFibGUgYW5kDQo+ICsgICAg cHJvdmlkZXMgbWVhbnMgZm9yIHRoZSBwYXJzZXIgdG8gaW50ZXJwcmV0IGFuZCB0cmFjZSBhcHBy b3ByaWF0ZWx5Lg0KPiArDQo+ICsgIFRoZSBmaXJzdCB0aHJlZSBtZW1iZXJzIGFyZSBwb3B1bGF0 ZWQgYmFzZWQgb24gaW5mb3JtYXRpb24gcHJlc2VudCBpbg0KPiArICBpbiB0aGUgQUNQSSB0YWJs ZSBzcGVjaWZpY2F0aW9ucy4gVGhlIHJlbWFpbmluZyBtZW1iZXJzIGRlc2NyaWJlIGhvdw0KPiAr ICB0aGUgcGFyc2VyIHNob3VsZCByZXBvcnQgdGhlIGZpZWxkIGluZm9ybWF0aW9uLCB2YWxpZGF0 ZSB0aGUgZmllbGQgZGF0YQ0KPiArICBhbmQvb3IgdXBkYXRlIGFuIGV4dGVybmFsIHBvaW50ZXIg dG8gdGhlIGZpZWxkIChJdGVtUHRyKS4NCj4gKw0KPiArICBQYXJzZUFjcGkoKSB1c2VzIHRoZSBm b3JtYXQgc3RyaW5nIHNwZWNpZmllZCBieSAnRm9ybWF0JyBmb3IgdHJhY2luZw0KPiArICB0aGUg ZmllbGQgZGF0YS4gSWYgdGhlIGZpZWxkIGlzIG1vcmUgY29tcGxleCBhbmQgcmVxdWlyZXMgYWRk aXRpb25hbA0KPiArICBwcm9jZXNzaW5nIGZvciBmb3JtYXR0aW5nIGFuZCByZXByZXNlbnRhdGlv biBhIHByaW50IGZvcm1hdHRlciBmdW5jdGlvbg0KPiArICBjYW4gYmUgc3BlY2lmaWVkIGluICdQ cmludEZvcm1hdHRlcicuDQo+ICsgIFRoZSBQcmludEZvcm1hdHRlciBmdW5jdGlvbiBtYXkgY2hv b3NlIHRvIHVzZSB0aGUgZm9ybWF0IHN0cmluZw0KPiArICBzcGVjaWZpZWQgYnkgJ0Zvcm1hdCcg b3IgdXNlIGl0cyBvd24gaW50ZXJuYWwgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiArICBUaGUgJ0Zv cm1hdCcgYW5kICdQcmludEZvcm1hdHRlcicgbWVtYmVycyBhbGxvdyBmbGV4aWJpbGl0eSBmb3IN Cj4gKyAgcmVwcmVzZW50aW5nIHRoZSBmaWVsZCBkYXRhLg0KPiArKi8NCj4gK3R5cGVkZWYgc3Ry dWN0IEFjcGlQYXJzZXIgew0KPiArDQo+ICsgIC8vLyBTdHJpbmcgZGVzY3JpYmluZyB0aGUgQUNQ SSB0YWJsZSBmaWVsZA0KPiArICAvLy8gKEZpZWxkIGNvbHVtbiBmcm9tIEFDUEkgdGFibGUgc3Bl YykNCj4gKyAgQ09OU1QgQ0hBUjE2KiAgICAgICAgIE5hbWVTdHI7DQo+ICsNCj4gKyAgLy8vIFRo ZSBsZW5ndGggb2YgdGhlIGZpZWxkLg0KPiArICAvLy8gKEJ5dGUgTGVuZ3RoIGNvbHVtbiBmcm9t IEFDUEkgdGFibGUgc3BlYykNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgIExlbmd0aDsNCj4g Kw0KPiArICAvLy8gVGhlIG9mZnNldCBvZiB0aGUgZmllbGQgZnJvbSB0aGUgc3RhcnQgb2YgdGhl IHRhYmxlLg0KPiArICAvLy8gKEJ5dGUgT2Zmc2V0IGNvbHVtbiBmcm9tIEFDUEkgdGFibGUgc3Bl YykNCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgIE9mZnNldDsNCj4gKw0KPiArICAvLy8gT3B0 aW9uYWwgUHJpbnQoKSBzdHlsZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLiBJ ZiBub3QNCj4gKyAgLy8vIHVzZWQgdGhpcyBtdXN0IGJlIHNldCB0byBOVUxMLg0KPiArICBDT05T VCBDSEFSMTYqICAgICAgICAgRm9ybWF0Ow0KPiArDQo+ICsgIC8vLyBPcHRpb25hbCBwb2ludGVy IHRvIGEgcHJpbnQgZm9ybWF0dGVyIGZ1bmN0aW9uIHdoaWNoDQo+ICsgIC8vLyBpcyB0eXBpY2Fs bHkgdXNlZCB0byB0cmFjZSBjb21wbGV4IGZpZWxkIGluZm9ybWF0aW9uLg0KPiArICAvLy8gSWYg bm90IHVzZWQgdGhpcyBtdXN0IGJlIHNldCB0byBOVUxMLg0KPiArICAvLy8gVGhlIEZvcm1hdCBz dHJpbmcgaXMgcGFzc2VkIHRvIHRoZSBQcmludEZvcm1hdHRlciBmdW5jdGlvbg0KPiArICAvLy8g YnV0IG1heSBiZSBpZ25vcmVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBjb2RlLg0KPiArICBGTlBU Ul9QUklOVF9GT1JNQVRURVIgUHJpbnRGb3JtYXR0ZXI7DQo+ICsNCj4gKyAgLy8vIE9wdGlvbmFs IHBvaW50ZXIgd2hpY2ggbWF5IGJlIHNldCB0byByZXF1ZXN0IHRoZSBwYXJzZXIgdG8gdXBkYXRl DQo+ICsgIC8vLyBhIHBvaW50ZXIgdG8gdGhlIGZpZWxkIGRhdGEuIElmIHVudXNlZCB0aGlzIG11 c3QgYmUgc2V0IHRvIE5VTEwuDQo+ICsgIFZPSUQqKiAgICAgICAgICAgICAgICBJdGVtUHRyOw0K PiArDQo+ICsgIC8vLyBPcHRpb25hbCBwb2ludGVyIHRvIGEgZmllbGQgdmFsaWRhdG9yIGZ1bmN0 aW9uLg0KPiArICAvLy8gVGhlIGZ1bmN0aW9uIHNob3VsZCBkaXJlY3RseSByZXBvcnQgYW55IGFw cHJvcHJpYXRlIGVycm9yIG9yIHdhcm5pbmcNCj4gKyAgLy8vIGFuZCBpbnZva2UgdGhlIGFwcHJv cHJpYXRlIGNvdW50ZXIgdXBkYXRlIGZ1bmN0aW9uLg0KPiArICAvLy8gSWYgbm90IHVzZWQgdGhp cyBwYXJhbWV0ZXIgbXVzdCBiZSBzZXQgdG8gTlVMTC4NCj4gKyAgRk5QVFJfRklFTERfVkFMSURB VE9SIEZpZWxkVmFsaWRhdG9yOw0KPiArDQo+ICsgIC8vLyBPcHRpb25hbCBwb2ludGVyIHRvIGNv bnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24sDQo+ICsgIC8vLyB3aGljaCB0aGUgRmllbGQgVmFs aWRhdG9yIGZ1bmN0aW9uIGNhbiB1c2UgdG8gZGV0ZXJtaW5lDQo+ICsgIC8vLyBhZGRpdGlvbmFs IGluZm9ybWF0aW9uIGFib3V0IHRoZSBBQ1BJIHRhYmxlIGFuZCBtYWtlDQo+ICsgIC8vLyBkZWNp c2lvbnMgYWJvdXQgdGhlIGZpZWxkIGJlaW5nIHZhbGlkYXRlZC4NCj4gKyAgLy8vIGUuZy4gdGhp cyBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyDQo+ICsgIFZPSUQq ICAgICAgICAgICAgICAgICBDb250ZXh0Ow0KPiArfSBBQ1BJX1BBUlNFUjsNCj4gKw0KPiArLyoq IEEgc3RydWN0dXJlIHVzZWQgdG8gc3RvcmUgdGhlIHBvaW50ZXJzIHRvIHRoZSBtZW1iZXJzIG9m IHRoZQ0KPiArICAgIEFDUEkgZGVzY3JpcHRpb24gaGVhZGVyIHN0cnVjdHVyZSB0aGF0IHdhcyBw YXJzZWQuDQo+ICsqLw0KPiArdHlwZWRlZiBzdHJ1Y3QgQWNwaURlc2NyaXB0aW9uSGVhZGVySW5m byB7DQo+ICsgIC8vLyBBQ1BJIHRhYmxlIHNpZ25hdHVyZQ0KPiArICBVSU5UMzIqIFNpZ25hdHVy ZTsNCj4gKyAgLy8vIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZQ0KPiArICBVSU5UMzIqIExlbmd0 aDsNCj4gKyAgLy8vIFJldmlzaW9uDQo+ICsgIFVJTlQ4KiAgUmV2aXNpb247DQo+ICsgIC8vLyBD aGVja3N1bQ0KPiArICBVSU5UOCogIENoZWNrc3VtOw0KPiArICAvLy8gT0VNIElkIC0gbGVuZ3Ro IGlzIDYgYnl0ZXMNCj4gKyAgVUlOVDgqICBPZW1JZDsNCj4gKyAgLy8vIE9FTSB0YWJsZSBJZA0K PiArICBVSU5UNjQqIE9lbVRhYmxlSWQ7DQo+ICsgIC8vLyBPRU0gcmV2aXNpb24gSWQNCj4gKyAg VUlOVDMyKiBPZW1SZXZpc2lvbjsNCj4gKyAgLy8vIENyZWF0b3IgSWQNCj4gKyAgVUlOVDMyKiBD cmVhdG9ySWQ7DQo+ICsgIC8vLyBDcmVhdG9yIHJldmlzaW9uDQo+ICsgIFVJTlQzMiogQ3JlYXRv clJldmlzaW9uOw0KPiArfSBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPOw0KPiArDQo+ICsv KiogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNlIGFuIEFDUEkgdGFibGUgYnVmZmVyLg0K PiArDQo+ICsgIFRoZSBBQ1BJIHRhYmxlIGJ1ZmZlciBpcyBwYXJzZWQgdXNpbmcgdGhlIEFDUEkg dGFibGUgcGFyc2VyIGluZm9ybWF0aW9uDQo+ICsgIHNwZWNpZmllZCBieSBhIHBvaW50ZXIgdG8g YW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgZWxlbWVudHMuIFRoaXMgcGFyc2VyDQo+ICsgIGZ1bmN0 aW9uIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCBpdGVtIG9uIHRoZSBBQ1BJX1BBUlNFUiBhcnJheSBh bmQgbG9ncyB0aGUNCj4gKyAgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5j dGlvbiBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIHRvIHBhcnNlIEFDUEkgdGFibGVzIGFuZCBmZXRj aCBzcGVjaWZpYw0KPiArICBmaWVsZCB2YWx1ZXMuIFRoZSBJdGVtUHRyIG1lbWJlciBvZiB0aGUg QUNQSV9QQVJTRVIgc3RydWN0dXJlICh3aGVyZSB1c2VkKQ0KPiArICBpcyB1cGRhdGVkIGJ5IHRo aXMgcGFyc2VyIGZ1bmN0aW9uIHRvIHBvaW50IHRvIHRoZSBzZWxlY3RlZCBmaWVsZCBkYXRhDQo+ ICsgIChlLmcuIHVzZWZ1bCBmb3IgdmFyaWFibGUgbGVuZ3RoIG5lc3RlZCBmaWVsZHMpLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICBUcmFjZSB0aGUgQUNQSSBmaWVsZHMgVFJV RSBlbHNlIG9ubHkgcGFyc2UgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJs ZS4NCj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gaW5k ZW50IHRoZSBvdXRwdXQuDQo+ICsgIEBwYXJhbSBbaW5dIEFzY2lpTmFtZSAgICBPcHRpb25hbCBw b2ludGVyIHRvIGFuIEFTQ0lJIHN0cmluZyB0aGF0IGRlc2NyaWJlcw0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGhlIHRhYmxlIGJlaW5nIHBhcnNlZC4NCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBw YXJhbSBbaW5dIExlbmd0aCAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlciBwb2ludGVkIGJ5IFB0 ci4NCj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyICAgICAgIFBvaW50ZXIgdG8gYW4gYXJyYXkgb2Yg QUNQSV9QQVJTRVIgc3RydWN0dXJlIHRoYXQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlc2NyaWJlcyB0aGUgdGFibGUgYmVpbmcgcGFyc2VkLg0KPiArICBAcGFyYW0gW2luXSBQYXJz ZXJJdGVtcyAgTnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBBQ1BJX1BBUlNFUiBhcnJheS4NCj4gKw0K PiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJzZWQuDQo+ICsqLw0KPiArVUlOVDMyDQo+ ICtFRklBUEkNCj4gK1BhcnNlQWNwaSAoDQo+ICsgIElOIEJPT0xFQU4gICAgICAgICAgICBUcmFj ZSwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIEluZGVudCwNCj4gKyAgSU4gQ09OU1QgQ0hB UjgqICAgICAgIEFzY2lpTmFtZSBPUFRJT05BTCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICAgICAg IFB0ciwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIExlbmd0aCwNCj4gKyAgSU4gQ09OU1Qg QUNQSV9QQVJTRVIqIFBhcnNlciwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIFBhcnNlckl0 ZW1zDQo+ICspOw0KPiArDQo+ICsvKiogVGhpcyBpcyBhIGhlbHBlciBtYWNybyB0byBwYXNzIHBh cmFtZXRlcnMgdG8gdGhlIFBhcnNlciBmdW5jdGlvbnMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g UGFyc2VyIFRoZSBuYW1lIG9mIHRoZSBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZQ0K PiArICAgICAgICAgICAgICBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKyovDQo+ICsjZGVmaW5lIFBB UlNFUl9QQVJBTVMoUGFyc2VyKSBQYXJzZXIsIHNpemVvZiAoUGFyc2VyKSAvIHNpemVvZiAoUGFy c2VyWzBdKQ0KPiArDQo+ICsvKiogVGhpcyBpcyBhIGhlbHBlciBtYWNybyBmb3IgZGVzY3JpYmlu ZyB0aGUgQUNQSSBoZWFkZXIgZmllbGRzLg0KPiArDQo+ICsgIEBwYXJhbSBbb3V0XSBJbmZvICBQ b2ludGVyIHRvIHJldHJpZXZlIHRoZSBBQ1BJIHRhYmxlIGhlYWRlciBpbmZvcm1hdGlvbi4NCj4g KyovDQo+ICsjZGVmaW5lIFBBUlNFX0FDUElfSEVBREVSKEluZm8pICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgeyBMIlNpZ25hdHVyZSIsIDQsIDAsIE5VTEwsIER1bXA0Q2hhcnMsICAgICAgICAg XA0KPiArICAgIChWT0lEKiopJihJbmZvKS0+U2lnbmF0dXJlICwgTlVMTCwgTlVMTCB9LCAgICBc DQo+ICsgIHsgTCJMZW5ndGgiLCA0LCA0LCBMIiVkIiwgTlVMTCwgICAgICAgICAgICAgICAgIFwN Cj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPkxlbmd0aCwgTlVMTCwgTlVMTCB9LCAgICAgICAgXA0K PiArICB7IEwiUmV2aXNpb24iLCAxLCA4LCBMIiVkIiwgTlVMTCwgICAgICAgICAgICAgICBcDQo+ ICsgICAgKFZPSUQqKikmKEluZm8pLT5SZXZpc2lvbiwgTlVMTCwgTlVMTCB9LCAgICAgIFwNCj4g KyAgeyBMIkNoZWNrc3VtIiwgMSwgOSwgTCIweCVYIiwgTlVMTCwgICAgICAgICAgICAgXA0KPiAr ICAgIChWT0lEKiopJihJbmZvKS0+Q2hlY2tzdW0sIE5VTEwsIE5VTEwgfSwgICAgICBcDQo+ICsg IHsgTCJPZW0gSUQiLCA2LCAxMCwgTlVMTCwgRHVtcDZDaGFycywgICAgICAgICAgIFwNCj4gKyAg ICAoVk9JRCoqKSYoSW5mbyktPk9lbUlkLCBOVUxMLCBOVUxMIH0sICAgICAgICAgXA0KPiArICB7 IEwiT2VtIFRhYmxlIElEIiwgOCwgMTYsIE5VTEwsIER1bXA4Q2hhcnMsICAgICBcDQo+ICsgICAg KFZPSUQqKikmKEluZm8pLT5PZW1UYWJsZUlkLCBOVUxMLCBOVUxMIH0sICAgIFwNCj4gKyAgeyBM Ik9lbSBSZXZpc2lvbiIsIDQsIDI0LCBMIjB4JVgiLCBOVUxMLCAgICAgICAgXA0KPiArICAgIChW T0lEKiopJihJbmZvKS0+T2VtUmV2aXNpb24sIE5VTEwsIE5VTEwgfSwgICBcDQo+ICsgIHsgTCJD cmVhdG9yIElEIiwgNCwgMjgsIE5VTEwsIER1bXA0Q2hhcnMsICAgICAgIFwNCj4gKyAgICAoVk9J RCoqKSYoSW5mbyktPkNyZWF0b3JJZCwgTlVMTCwgTlVMTCB9LCAgICAgXA0KPiArICB7IEwiQ3Jl YXRvciBSZXZpc2lvbiIsIDQsIDMyLCBMIjB4JVgiLCBOVUxMLCAgICBcDQo+ICsgICAgKFZPSUQq KikmKEluZm8pLT5DcmVhdG9yUmV2aXNpb24sIE5VTEwsIE5VTEwgfQ0KPiArDQo+ICsvKiogTGVu Z3RoIG9mIHRoZSBBQ1BJIEdBUyBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgTk9URTogVGhpcyBtaWdo dCBub3JtYWxseSBiZSBkZWZpbmVkIGFzDQo+ICsgICAgICAgIHNpemVvZiAoRUZJX0FDUElfNl8y X0dFTkVSSUNfQUREUkVTU19TVFJVQ1RVUkUpLg0KPiArICAgICAgICBIb3dldmVyLCB3ZSBkZWxp YmVyYXRlbHkgbWluaW1pc2UgYW55IHJlZmVyZW5jZSB0byB0aGUgRURLMiBBQ1BJDQo+ICsgICAg ICAgIGhlYWRlcnMgaW4gYW4gYXR0ZW1wdCB0byBwcm92aWRlIGNyb3NzIGNoZWNraW5nLg0KPiAr Ki8NCj4gKyNkZWZpbmUgR0FTX0xFTkdUSCAgICAgICAgICAgICAgICAgICAgIDEyDQo+ICsNCj4g Ky8qKiBMZW5ndGggb2YgdGhlIEFDUEkgSGVhZGVyIHN0cnVjdHVyZS4NCj4gKw0KPiArICBOT1RF OiBUaGlzIG1pZ2h0IG5vcm1hbGx5IGJlIGRlZmluZWQgYXMNCj4gKyAgICAgICAgc2l6ZW9mIChF RklfQUNQSV9ERVNDUklQVElPTl9IRUFERVIpLg0KPiArICAgICAgICBIb3dldmVyLCB3ZSBkZWxp YmVyYXRlbHkgbWluaW1pc2UgYW55IHJlZmVyZW5jZSB0byB0aGUgRURLMiBBQ1BJDQo+ICsgICAg ICAgIGhlYWRlcnMgaW4gYW4gYXR0ZW1wdCB0byBwcm92aWRlIGNyb3NzIGNoZWNraW5nLg0KPiAr Ki8NCj4gKyNkZWZpbmUgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RIICAzNg0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiBpbmRlbnRzIGFuZCB0cmFjZXMgdGhlIEdBUyBzdHJ1Y3R1cmUg YXMgZGVzY3JpYmVkDQo+ICsgICAgYnkgdGhlIEdhc1BhcnNlci4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBw YXJhbSBbaW5dIEluZGVudCAgTnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgdGhlIG91dHB1dC4N Cj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXBHYXNTdHJ1Y3QgKA0KPiArICBJTiBV SU5UOCogICAgICAgIFB0ciwNCj4gKyAgSU4gVUlOVDMyICAgICAgICBJbmRlbnQNCj4gKyAgKTsN Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIHRoZSBHQVMgc3RydWN0dXJlIGFzIGRl c2NyaWJlZCBieSB0aGUgR2FzUGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAg T3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFt IFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8N Cj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVtcEdhcyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiog Rm9ybWF0IE9QVElPTkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJl ZCBieSB0aGUgQWNwaUhlYWRlclBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAg ICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKw0KPiArICBAcmV0 dmFsIE51bWJlciBvZiBieXRlcyBwYXJzZWQuDQo+ICsqLw0KPiArVUlOVDMyDQo+ICtFRklBUEkN Cj4gK0R1bXBBY3BpSGVhZGVyICgNCj4gKyAgSU4gVUlOVDgqIFB0cg0KPiArICApOw0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBi eSB0aGUgQWNwaUhlYWRlclBhcnNlci4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIG9wdGlvbmFs bHkgcmV0dXJucyB0aGUgU2lnbmF0dXJlLCBMZW5ndGggYW5kIHJldmlzaW9uIG9mIHRoZQ0KPiAr ICBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBQdHIgICAgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbb3V0XSBTaWduYXR1cmUg IEdldHMgbG9jYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiArICBAcGFyYW0g W291dF0gTGVuZ3RoICAgICBHZXRzIGxvY2F0aW9uIG9mIHRoZSBsZW5ndGggb2YgdGhlIEFDUEkg dGFibGUuDQo+ICsgIEBwYXJhbSBbb3V0XSBSZXZpc2lvbiAgIEdldHMgbG9jYXRpb24gb2YgdGhl IHJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgTnVtYmVyIG9m IGJ5dGVzIHBhcnNlZC4NCj4gKyovDQo+ICtVSU5UMzINCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3Bp SGVhZGVyICgNCj4gKyAgSU4gIFVJTlQ4KiAgICAgICAgIFB0ciwNCj4gKyAgT1VUIENPTlNUIFVJ TlQzMioqIFNpZ25hdHVyZSwNCj4gKyAgT1VUIENPTlNUIFVJTlQzMioqIExlbmd0aCwNCj4gKyAg T1VUIENPTlNUIFVJTlQ4KiogIFJldmlzaW9uDQo+ICsgICk7DQo+ICsNCj4gKyNlbmRpZiAvLyBB Q1BJUEFSU0VSX0hfDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNw aVZpZXcvQWNwaVRhYmxlUGFyc2VyLmggYi9TaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZp ZXcvQWNwaVRhYmxlUGFyc2VyLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY5ZDU2ZGE2Y2Y3MjhiYjk4 ZGYyNjVkZTNhZTAzMGQ4NTEyMDQ5NA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtn L0luY2x1ZGUvTGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaA0KPiBAQCAtMCwwICsx LDEyNiBAQA0KPiArLyoqDQo+ICsgIEhlYWRlciBmaWxlIGZvciBBQ1BJIHRhYmxlIHBhcnNlcg0K PiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBh bmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5 IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUg QlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElF RC4NCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIEFDUElUQUJMRVBBUlNFUl9IXw0KPiArI2RlZmlu ZSBBQ1BJVEFCTEVQQVJTRVJfSF8NCj4gKw0KPiArLyoqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBB Q1BJIHRhYmxlIHBhcnNlcnMuDQo+ICsqLw0KPiArI2RlZmluZSBNQVhfQUNQSV9UQUJMRV9QQVJT RVJTICAgICAgICAgIDE2DQo+ICsNCj4gKy8qKiBBbiBpbnZhbGlkL05VTEwgc2lnbmF0dXJlIHZh bHVlLg0KPiArKi8NCj4gKyNkZWZpbmUgQUNQSV9QQVJTRVJfU0lHTkFUVVJFX05VTEwgICAgICAw DQo+ICsNCj4gKy8qKiBBIGZ1bmN0aW9uIHRoYXQgcGFyc2VzIHRoZSBBQ1BJIHRhYmxlLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUg QUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVM ZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3Bp VGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArdHlw ZWRlZg0KPiArVk9JRA0KPiArKEVGSUFQSSAqIFBBUlNFX0FDUElfVEFCTEVfUFJPQykgKA0KPiAr ICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMy ICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4g KyAgKTsNCj4gKw0KPiArLyoqIFRoZSBBQ1BJIHRhYmxlIHBhcnNlciBpbmZvcm1hdGlvbg0KPiAr Ki8NCj4gK3R5cGVkZWYgc3RydWN0IEFjcGlUYWJsZVBhcnNlciB7DQo+ICsgIC8vLyBBQ1BJIHRh YmxlIHNpZ25hdHVyZQ0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICBTaWduYXR1cmU7DQo+ ICsNCj4gKyAgLy8vIFRoZSBBQ1BJIHRhYmxlIHBhcnNlciBmdW5jdGlvbi4NCj4gKyAgUEFSU0Vf QUNQSV9UQUJMRV9QUk9DICAgUGFyc2VyOw0KPiArfSBBQ1BJX1RBQkxFX1BBUlNFUjsNCj4gKw0K PiArLyoqIFJlZ2lzdGVyIHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiArDQo+ICsgIFRoaXMgZnVu Y3Rpb24gcmVnaXN0ZXJzIHRoZSBBQ1BJIHRhYmxlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBTaWduYXR1cmUgICBUaGUgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ICsgIEBwYXJhbSBb aW5dIFBhcnNlclByb2MgIFRoZSBBQ1BJIHRhYmxlIHBhcnNlci4NCj4gKw0KPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEBy ZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ICsg IEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBUYWJsZQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVk Lg0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3Rl ciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8N Cj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArUmVnaXN0ZXJQYXJzZXIgKA0KPiArICBJTiAg VUlOVDMyICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLA0KPiArICBJTiAgUEFSU0VfQUNQSV9U QUJMRV9QUk9DICAgUGFyc2VyUHJvYw0KPiArKTsNCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhl IEFDUEkgdGFibGUgUGFyc2VyDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBkZXJlZ2lzdGVycyB0 aGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlICAg VGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIFRoZSBwYXJzZXIgd2FzIGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBF RklfTk9UX0ZPVU5EICAgICAgICAgQSByZWdpc3RlcmVkIHBhcnNlciB3YXMgbm90IGZvdW5kLg0K PiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRGVyZWdpc3RlclBhcnNlciAoDQo+ ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICBTaWduYXR1cmUNCj4gKyk7DQo+ICsNCj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgQUNQSSB0YWJsZXMuDQo+ICsgIFRoaXMg ZnVuY3Rpb24gY2FsbHMgUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucygpIHRvIGxpc3QgdGhlIEFD UEkNCj4gKyAgdGFibGVzLCBwZXJmb3JtIGJpbmFyeSBkdW1wIG9mIHRoZSB0YWJsZXMgYW5kIGRl dGVybWluZSBpZiB0aGUNCj4gKyAgQUNQSSBmaWVsZHMgc2hvdWxkIGJlIHRyYWNlZC4NCj4gKw0K PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgQUNQSSB0 YWJsZXMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIGEgUkFXIGR1bXAg b2YgdGhlIEFDUEkgdGFibGUgaW5jbHVkaW5nDQo+ICsgIHRoZSB1bmtub3duL3VucGFyc2VkIEFD UEkgdGFibGVzIGFuZCB2YWxpZGF0ZXMgdGhlIGNoZWNrc3VtLg0KPiArDQo+ICsgIEBwYXJhbSBb aW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgQUNQSQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUgZGF0YSBidWZmZXIuDQo+ ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQcm9jZXNzQWNwaVRhYmxlICgNCj4gKyAgSU4g VUlOVDgqIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogR2V0IHRoZSBBQ1BJIHRhYmxlIFBhcnNl cg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIg cHJvYyBmcm9tIHRoZSBsaXN0IG9mDQo+ICsgIHJlZ2lzdGVyZWQgcGFyc2Vycy4NCj4gKw0KPiAr ICBAcGFyYW0gW2luXSAgU2lnbmF0dXJlICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiAr ICBAcGFyYW0gW291dF0gUGFyc2VyUHJvYyAgUG9pbnRlciB0byBhIEFDUEkgdGFibGUgcGFyc2Vy IHByb2MuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNl ciB3YXMgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5Lg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9V TkQgICAgICAgICBBIHJlZ2lzdGVyZWQgcGFyc2VyIHdhcyBub3QgZm91bmQuDQo+ICsqLw0KPiAr RUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtHZXRQYXJzZXIgKA0KPiArICBJTiAgVUlOVDMyICAg ICAgICAgICAgICAgICAgIFNpZ25hdHVyZSwNCj4gKyAgT1VUIFBBUlNFX0FDUElfVEFCTEVfUFJP QyAqICBQYXJzZXJQcm9jDQo+ICsgICk7DQo+ICsNCj4gKyNlbmRpZiAvLyBBQ1BJVEFCTEVQQVJT RVJfSF8NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL0FjcGlQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL0FjcGlQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTcxMjA2NmU2MzJi NDNjNTAyM2FjZDljOGI1YmVjMTUwZTAyZDlmDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5jDQo+ IEBAIC0wLDAgKzEsNjYyIEBADQo+ICsvKioNCj4gKyAgQUNQSSBwYXJzZXINCj4gKw0KPiArICBD b3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiAr ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk aXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBh dA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNF TlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsqKi8N Cj4gKw0KPiArI2luY2x1ZGUgPFVlZmkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIu aD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiAr I2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUgIkFj cGlWaWV3LmgiDQo+ICsNCj4gK1NUQVRJQyBVSU5UMzIgICBnSW5kZW50Ow0KPiArU1RBVElDIFVJ TlQzMiAgIG1UYWJsZUVycm9yQ291bnQ7DQo+ICtTVEFUSUMgVUlOVDMyICAgbVRhYmxlV2Fybmlu Z0NvdW50Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXNldHMgdGhlIEFDUEkgdGFibGUg ZXJyb3IgY291bnRlciB0byBaZXJvLg0KPiArKi8NCj4gK1ZPSUQNCj4gK1Jlc2V0RXJyb3JDb3Vu dCAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICBtVGFibGVFcnJvckNvdW50ID0gMDsN Cj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSBl cnJvciBjb3VudC4NCj4gKw0KPiArICBAcmV0dmFsIFJldHVybnMgdGhlIGNvdW50IG9mIGVycm9y cyBkZXRlY3RlZCBpbiB0aGUgQUNQSSB0YWJsZXMuDQo+ICsqLw0KPiArVUlOVDMyDQo+ICtHZXRF cnJvckNvdW50ICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBtVGFibGVF cnJvckNvdW50Ow0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXNldHMgdGhlIEFD UEkgdGFibGUgd2FybmluZyBjb3VudGVyIHRvIFplcm8uDQo+ICsqLw0KPiArVk9JRA0KPiArUmVz ZXRXYXJuaW5nQ291bnQgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgbVRhYmxlV2Fy bmluZ0NvdW50ID0gMDsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0 aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50Lg0KPiArDQo+ICsgIEByZXR2YWwgUmV0dXJucyB0 aGUgY291bnQgb2Ygd2FybmluZyBkZXRlY3RlZCBpbiB0aGUgQUNQSSB0YWJsZXMuDQo+ICsqLw0K PiArVUlOVDMyDQo+ICtHZXRXYXJuaW5nQ291bnQgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sN Cj4gKyAgcmV0dXJuIG1UYWJsZVdhcm5pbmdDb3VudDsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gaW5jcmVtZW50cyB0aGUgQUNQSSB0YWJsZSBlcnJvciBjb3VudGVyLg0KPiArKi8N Cj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArSW5jcmVtZW50RXJyb3JDb3VudCAoDQo+ICsgIFZPSUQN Cj4gKyAgKQ0KPiArew0KPiArICBtVGFibGVFcnJvckNvdW50Kys7DQo+ICt9DQo+ICsNCj4gKy8q KiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3VudGVy Lg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArSW5jcmVtZW50V2FybmluZ0NvdW50ICgN Cj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIG1UYWJsZVdhcm5pbmdDb3VudCsrOw0KPiAr fQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgQUNQSSB0YWJsZSBjaGVj a3N1bS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBjaGVja3N1bSBmb3Ig dGhlIEFDUEkgdGFibGUgYW5kIG9wdGlvbmFsbHkNCj4gKyAgcHJpbnRzIHRoZSBzdGF0dXMuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gTG9nICAgICBJZiBUUlVFIGxvZyB0aGUgc3RhdHVzIG9mIHRo ZSBjaGVja3N1bS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgdGFibGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggIFRoZSBsZW5n dGggb2YgdGhlIGJ1ZmZlci4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUgICAgICAgIFRoZSBjaGVj a3N1bSBpcyBPSy4NCj4gKyAgQHJldHZhbCBGQUxTRSAgICAgICBUaGUgY2hlY2tzdW0gZmFpbGVk Lg0KPiArKi8NCj4gK0JPT0xFQU4NCj4gK0VGSUFQSQ0KPiArVmVyaWZ5Q2hlY2tzdW0gKA0KPiAr ICBJTiBCT09MRUFOIExvZywNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAg TGVuZ3RoDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVE4gQnl0ZUNvdW50ID0gMDsNCj4gKyAgVUlO VDggQ2hlY2tzdW0gPSAwOw0KPiArICBVSU5UTiBPcmlnaW5hbEF0dHJpYnV0ZTsNCj4gKw0KPiAr ICB3aGlsZSAoQnl0ZUNvdW50IDwgTGVuZ3RoKSB7DQo+ICsgICAgQ2hlY2tzdW0gKz0gKihQdHIr Kyk7DQo+ICsgICAgQnl0ZUNvdW50Kys7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoTG9nKSB7DQo+ ICsgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91dC0+TW9kZS0+QXR0cmlidXRlOw0K PiArICAgIGlmIChDaGVja3N1bSA9PSAwKSB7DQo+ICsgICAgICBpZiAoR2V0Q29sb3VySGlnaGxp Z2h0aW5nICgpKSB7DQo+ICsgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgRUZJX1RFWFRfQVRUUiAoRUZJX0dSRUVOLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICApOw0KPiArICAgICAgfQ0KPiArICAgICAgUHJpbnQgKEwiXG5cblRh YmxlIENoZWNrc3VtIDogT0tcblxuIik7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIEluY3Jl bWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBpZiAoR2V0Q29sb3VySGlnaGxpZ2h0aW5nICgp KSB7DQo+ICsgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKA0KPiArICAgICAgICAg ICAgICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgRUZJ X1RFWFRfQVRUUiAoRUZJX1JFRCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdp bmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikpPj40KSkNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIFByaW50IChMIlxuXG5UYWJsZSBDaGVja3N1 bSA6IEZBSUxFRCAoMHglWClcblxuIiwgQ2hlY2tzdW0pOw0KPiArICAgIH0NCj4gKyAgICBpZiAo R2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpKSB7DQo+ICsgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0 cmlidXRlIChnU1QtPkNvbk91dCwgT3JpZ2luYWxBdHRyaWJ1dGUpOw0KPiArICAgIH0NCj4gKyAg fQ0KPiArDQo+ICsgIHJldHVybiAoQ2hlY2tzdW0gPT0gMCk7DQo+ICt9DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgcmF3IGRhdGEgZHVtcCBvZiB0aGUgQUNQSSB0YWJsZS4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSB0YWJsZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgVGhlIGxlbmd0aCBvZiB0 aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVtcFJhdyAoDQo+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+ICtFRklBUEkNCj4gK0R1 bXBVaW50OCAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiArICBJTiBVSU5UOCog ICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIFByaW50IChGb3JtYXQsICpQdHIpOw0KPiAr fQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMiBieXRlcyBvZiBkYXRhIGFzIHNw ZWNpZmllZCBpbiB0aGUNCj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiArDQo+ICsgIEBwYXJhbSBb aW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsg IEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4N Cj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXBVaW50MTYgKA0KPiArICBJTiBDT05T VCBDSEFSMTYqIEZvcm1hdCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKQ0KPiAr ew0KPiArICBQcmludCAoRm9ybWF0LCAqKFVJTlQxNiopUHRyKTsNCj4gK30NCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gdHJhY2VzIDQgYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgaW4gdGhl DQo+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRo ZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQ dHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9J RA0KPiArRUZJQVBJDQo+ICtEdW1wVWludDMyICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3Jt YXQsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICkNCj4gK3sNCj4gKyAgUHJpbnQg KEZvcm1hdCwgKihVSU5UMzIqKVB0cik7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHRyYWNlcyA4IGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGJ5IHRoZQ0KPiArICAgIGZvcm1h dCBzdHJpbmcuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmlu ZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0K PiArRHVtcFVpbnQ2NCAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiArICBJTiBV SU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIC8vIFNvbWUgZmllbGRzIGFyZSBu b3QgYWxpZ25lZCBhbmQgdGhpcyBjYXVzZXMgYWxpZ25tZW50IGZhdWx0cw0KPiArICAvLyBvbiBB Uk0gcGxhdGZvcm1zIGlmIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgTERSRCBpbnN0cnVjdGlvbnMu DQo+ICsgIC8vIFBlcmZvcm0gd29yZCBhY2Nlc3Mgc28gdGhhdCBMRFJEIGluc3RydWN0aW9ucyBh cmUgbm90IGdlbmVyYXRlZC4NCj4gKyAgVUlOVDY0IFZhbCA9ICooVUlOVDMyKikoUHRyICsgc2l6 ZW9mIChVSU5UMzIpKTsNCj4gKyAgVmFsIDw8PSAzMjsNCj4gKyAgVmFsIHw9ICooVUlOVDMyKilQ dHI7DQo+ICsNCj4gKyAgUHJpbnQgKEZvcm1hdCwgVmFsKTsNCj4gK30NCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gdHJhY2VzIDMgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0K PiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KPiAr DQo+ICsgIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBi ZSBOVUxMLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0 cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQ SQ0KPiArRHVtcDNDaGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFM LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIFByaW50ICgN Cj4gKyAgICAoRm9ybWF0ICE9IE5VTEwpID8gRm9ybWF0IDogTCIlYyVjJWMiLA0KPiArICAgIFB0 clswXSwNCj4gKyAgICBQdHJbMV0sDQo+ICsgICAgUHRyWzJdDQo+ICsgICAgKTsNCj4gK30NCj4g Kw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDQgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUg b3B0aW9uYWxseQ0KPiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3Bl Y2lmaWVkLg0KPiArDQo+ICsgIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBG b3JtYXQgbXVzdCBiZSBOVUxMLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9u YWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZP SUQNCj4gK0VGSUFQSQ0KPiArRHVtcDRDaGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9y bWF0IE9QVElPTkFMLA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ ICsgIFByaW50ICgNCj4gKyAgICAoRm9ybWF0ICE9IE5VTEwpID8gRm9ybWF0IDogTCIlYyVjJWMl YyIsDQo+ICsgICAgUHRyWzBdLA0KPiArICAgIFB0clsxXSwNCj4gKyAgICBQdHJbMl0sDQo+ICsg ICAgUHRyWzNdDQo+ICsgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJh Y2VzIDYgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KPiArICAgZm9ybWF0ZWQg dXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KPiArDQo+ICsgIElmIG5vIGZv cm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxMLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2lu ZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVtcDZDaGFy cyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiArICBJTiBVSU5U OCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIFByaW50ICgNCj4gKyAgICAoRm9ybWF0 ICE9IE5VTEwpID8gRm9ybWF0IDogTCIlYyVjJWMlYyVjJWMiLA0KPiArICAgIFB0clswXSwNCj4g KyAgICBQdHJbMV0sDQo+ICsgICAgUHRyWzJdLA0KPiArICAgIFB0clszXSwNCj4gKyAgICBQdHJb NF0sDQo+ICsgICAgUHRyWzVdDQo+ICsgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVu Y3Rpb24gdHJhY2VzIDggY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KPiArICAg Zm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KPiArDQo+ICsg IElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxM Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0cmluZyBm b3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiAr RHVtcDhDaGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiAr ICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIFByaW50ICgNCj4gKyAg ICAoRm9ybWF0ICE9IE5VTEwpID8gRm9ybWF0IDogTCIlYyVjJWMlYyVjJWMlYyVjIiwNCj4gKyAg ICBQdHJbMF0sDQo+ICsgICAgUHRyWzFdLA0KPiArICAgIFB0clsyXSwNCj4gKyAgICBQdHJbM10s DQo+ICsgICAgUHRyWzRdLA0KPiArICAgIFB0cls1XSwNCj4gKyAgICBQdHJbNl0sDQo+ICsgICAg UHRyWzddDQo+ICsgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gaW5kZW50 cyBhbmQgcHJpbnRzIHRoZSBBQ1BJIHRhYmxlIEZpZWxkIE5hbWUuDQo+ICsNCj4gKyAgQHBhcmFt IFtpbl0gSW5kZW50ICAgICAgTnVtYmVyIG9mIHNwYWNlcyB0byBhZGQgdG8gdGhlIGdsb2JhbCB0 YWJsZSBpbmRlbnQuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBnbG9iYWwgdGFi bGUgaW5kZW50IGlzIDAgYnkgZGVmYXVsdDsgaG93ZXZlcg0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICB0aGlzIHZhbHVlIGlzIHVwZGF0ZWQgb24gZW50cnkgdG8gdGhlIFBhcnNlQWNwaSgp DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGFkZGluZyB0aGUgaW5kZW50IHZhbHVl IHByb3ZpZGVkIHRvIFBhcnNlQWNwaSgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGFu ZCByZXN0b3JlZCBiYWNrIG9uIGV4aXQuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIFRo ZXJlZm9yZSB0aGUgdG90YWwgaW5kZW50IGluIHRoZSBvdXRwdXQgaXMNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgZGVwZW5kZW50IG9uIGZyb20gd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBj YWxsZWQuDQo+ICsgIEBwYXJhbSBbaW5dIEZpZWxkTmFtZSAgIFBvaW50ZXIgdG8gdGhlIEZpZWxk IE5hbWUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQcmludEZpZWxkTmFtZSAoDQo+ ICsgIElOIFVJTlQzMiAgICAgICAgIEluZGVudCwNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiAgRmll bGROYW1lDQo+ICspDQo+ICt7DQo+ICsgIFByaW50ICgNCj4gKyAgICBMIiUqYSUtKnMgOiAiLA0K PiArICAgIGdJbmRlbnQgKyBJbmRlbnQsDQo+ICsgICAgIiIsDQo+ICsgICAgKE9VVFBVVF9GSUVM RF9DT0xVTU5fV0lEVEggLSBnSW5kZW50IC0gSW5kZW50KSwNCj4gKyAgICBGaWVsZE5hbWUNCj4g KyAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNl IGFuIEFDUEkgdGFibGUgYnVmZmVyLg0KPiArDQo+ICsgIFRoZSBBQ1BJIHRhYmxlIGJ1ZmZlciBp cyBwYXJzZWQgdXNpbmcgdGhlIEFDUEkgdGFibGUgcGFyc2VyIGluZm9ybWF0aW9uDQo+ICsgIHNw ZWNpZmllZCBieSBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgZWxlbWVudHMu IFRoaXMgcGFyc2VyDQo+ICsgIGZ1bmN0aW9uIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCBpdGVtIG9u IHRoZSBBQ1BJX1BBUlNFUiBhcnJheSBhbmQgbG9ncyB0aGUNCj4gKyAgQUNQSSB0YWJsZSBmaWVs ZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIHRvIHBh cnNlIEFDUEkgdGFibGVzIGFuZCBmZXRjaCBzcGVjaWZpYw0KPiArICBmaWVsZCB2YWx1ZXMuIFRo ZSBJdGVtUHRyIG1lbWJlciBvZiB0aGUgQUNQSV9QQVJTRVIgc3RydWN0dXJlICh3aGVyZSB1c2Vk KQ0KPiArICBpcyB1cGRhdGVkIGJ5IHRoaXMgcGFyc2VyIGZ1bmN0aW9uIHRvIHBvaW50IHRvIHRo ZSBzZWxlY3RlZCBmaWVsZCBkYXRhDQo+ICsgIChlLmcuIHVzZWZ1bCBmb3IgdmFyaWFibGUgbGVu Z3RoIG5lc3RlZCBmaWVsZHMpLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICBU cmFjZSB0aGUgQUNQSSBmaWVsZHMgVFJVRSBlbHNlIG9ubHkgcGFyc2UgdGhlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICAgICAg IE51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IHRoZSBvdXRwdXQuDQo+ICsgIEBwYXJhbSBbaW5d IEFzY2lpTmFtZSAgICBPcHRpb25hbCBwb2ludGVyIHRvIGFuIEFTQ0lJIHN0cmluZyB0aGF0IGRl c2NyaWJlcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhYmxlIGJlaW5nIHBh cnNlZC4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICBMZW5ndGggb2Yg dGhlIGJ1ZmZlciBwb2ludGVkIGJ5IFB0ci4NCj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyICAgICAg IFBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgc3RydWN0dXJlIHRoYXQNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyB0aGUgdGFibGUgYmVpbmcgcGFyc2Vk Lg0KPiArICBAcGFyYW0gW2luXSBQYXJzZXJJdGVtcyAgTnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBB Q1BJX1BBUlNFUiBhcnJheS4NCj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJz ZWQuDQo+ICsqLw0KPiArVUlOVDMyDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaSAoDQo+ICsgIElO IEJPT0xFQU4gICAgICAgICAgICBUcmFjZSwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIElu ZGVudCwNCj4gKyAgSU4gQ09OU1QgQ0hBUjgqICAgICAgIEFzY2lpTmFtZSBPUFRJT05BTCwNCj4g KyAgSU4gVUlOVDgqICAgICAgICAgICAgIFB0ciwNCj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAg IExlbmd0aCwNCj4gKyAgSU4gQ09OU1QgQUNQSV9QQVJTRVIqIFBhcnNlciwNCj4gKyAgSU4gVUlO VDMyICAgICAgICAgICAgIFBhcnNlckl0ZW1zDQo+ICspDQo+ICt7DQo+ICsgIFVJTlQzMiAgSW5k ZXg7DQo+ICsgIFVJTlQzMiAgT2Zmc2V0ID0gMDsNCj4gKw0KPiArICAvLyBJbmNyZW1lbnQgdGhl IEluZGVudA0KPiArICBnSW5kZW50ICs9IEluZGVudDsNCj4gKw0KPiArICBpZiAoVHJhY2UgJiYg KEFzY2lpTmFtZSAhPSBOVUxMKSl7DQo+ICsgICAgQk9PTEVBTiBIaWdoTGlnaHQgPSBHZXRDb2xv dXJIaWdobGlnaHRpbmcgKCk7DQo+ICsgICAgVUlOVE4gICBPcmlnaW5hbEF0dHJpYnV0ZTsNCj4g Kw0KPiArICAgIGlmIChIaWdoTGlnaHQpIHsNCj4gKyAgICAgIE9yaWdpbmFsQXR0cmlidXRlID0g Z1NULT5Db25PdXQtPk1vZGUtPkF0dHJpYnV0ZTsNCj4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRB dHRyaWJ1dGUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgZ1NULT5Db25PdXQsDQo+ICsgICAg ICAgICAgICAgICAgICAgICBFRklfVEVYVF9BVFRSKEVGSV9ZRUxMT1csDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0K PiArICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgICB9DQo+ICsgICAgUHJpbnQgKA0KPiAr ICAgICAgTCIlKmElLSphIDpcbiIsDQo+ICsgICAgICBnSW5kZW50LA0KPiArICAgICAgIiIsDQo+ ICsgICAgICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIGdJbmRlbnQpLA0KPiArICAgICAg QXNjaWlOYW1lDQo+ICsgICAgICApOw0KPiArICAgIGlmIChIaWdoTGlnaHQpIHsNCj4gKyAgICAg IGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0 ZSk7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwg UGFyc2VySXRlbXM7IEluZGV4KyspIHsNCj4gKyAgICBpZiAoKE9mZnNldCArIFBhcnNlcltJbmRl eF0uTGVuZ3RoKSA+IExlbmd0aCkgew0KPiArICAgICAgLy8gV2UgZG9uJ3QgcGFyc2UgcGFzdCB0 aGUgZW5kIG9mIHRoZSBtYXggbGVuZ3RoIHNwZWNpZmllZA0KPiArICAgICAgYnJlYWs7DQo+ICsg ICAgfQ0KPiArDQo+ICsgICAgaWYgKE9mZnNldCAhPSBQYXJzZXJbSW5kZXhdLk9mZnNldCkgew0K PiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgIFByaW50ICgNCj4gKyAg ICAgICAgTCJcbkVSUk9SOiAlYTogT2Zmc2V0IE1pc21hdGNoIGZvciAlc1xuIg0KPiArICAgICAg ICAgICJDdXJyZW50T2Zmc2V0ID0gJWQgRmllbGRPZmZzZXQgPSAlZFxuIiwNCj4gKyAgICAgICAg QXNjaWlOYW1lLA0KPiArICAgICAgICBQYXJzZXJbSW5kZXhdLk5hbWVTdHIsDQo+ICsgICAgICAg IE9mZnNldCwNCj4gKyAgICAgICAgUGFyc2VyW0luZGV4XS5PZmZzZXQNCj4gKyAgICAgICAgKTsN Cj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAoVHJhY2UpIHsNCj4gKyAgICAgIC8vIGlmIHRoZXJl IGlzIGEgRm9ybWF0dGVyIGZ1bmN0aW9uIGxldCB0aGUgZnVuY3Rpb24gaGFuZGxlDQo+ICsgICAg ICAvLyB0aGUgcHJpbnRpbmcgZWxzZSBpZiBhIEZvcm1hdCBpcyBzcGVjaWZpZWQgaW4gdGhlIHRh YmxlIHVzZQ0KPiArICAgICAgLy8gdGhlIEZvcm1hdCBmb3IgcHJpbnRpbmcNCj4gKyAgICAgIFBy aW50RmllbGROYW1lICgyLCBQYXJzZXJbSW5kZXhdLk5hbWVTdHIpOw0KPiArICAgICAgaWYgKFBh cnNlcltJbmRleF0uUHJpbnRGb3JtYXR0ZXIgIT0gTlVMTCkgew0KPiArICAgICAgICBQYXJzZXJb SW5kZXhdLlByaW50Rm9ybWF0dGVyIChQYXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCj4gKyAg ICAgIH0gZWxzZSBpZiAoUGFyc2VyW0luZGV4XS5Gb3JtYXQgIT0gTlVMTCkgew0KPiArICAgICAg ICBzd2l0Y2ggKFBhcnNlcltJbmRleF0uTGVuZ3RoKSB7DQo+ICsgICAgICAgICAgY2FzZSAxOg0K PiArICAgICAgICAgICAgRHVtcFVpbnQ4IChQYXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCj4g KyAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgIGNhc2UgMjoNCj4gKyAgICAgICAgICAg IER1bXBVaW50MTYgKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0KPiArICAgICAgICAgICAg YnJlYWs7DQo+ICsgICAgICAgICAgY2FzZSA0Og0KPiArICAgICAgICAgICAgRHVtcFVpbnQzMiAo UGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0cik7DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAg ICAgICAgICBjYXNlIDg6DQo+ICsgICAgICAgICAgICBEdW1wVWludDY0IChQYXJzZXJbSW5kZXhd LkZvcm1hdCwgUHRyKTsNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgIGRlZmF1 bHQ6DQo+ICsgICAgICAgICAgICBQcmludCAoDQo+ICsgICAgICAgICAgICAgIEwiXG5FUlJPUjog JWE6IENBTk5PVCBQQVJTRSBUSElTIEZJRUxELCBGaWVsZCBMZW5ndGggPSAlZFxuIiwNCj4gKyAg ICAgICAgICAgICAgQXNjaWlOYW1lLA0KPiArICAgICAgICAgICAgICBQYXJzZXJbSW5kZXhdLkxl bmd0aA0KPiArICAgICAgICAgICAgICApOw0KPiArICAgICAgICB9IC8vIHN3aXRjaA0KPiArDQo+ ICsgICAgICAgIC8vIFZhbGlkYXRpbmcgb25seSBtYWtlcyBzZW5zZSBpZiB3ZSBhcmUgdHJhY2lu Zw0KPiArICAgICAgICAvLyB0aGUgcGFyc2VkIHRhYmxlIGVudHJpZXMsIHRvIHJlcG9ydCBieSB0 YWJsZSBuYW1lLg0KPiArICAgICAgICBpZiAoUGFyc2VyW0luZGV4XS5GaWVsZFZhbGlkYXRvciAh PSBOVUxMKSB7DQo+ICsgICAgICAgICAgUGFyc2VyW0luZGV4XS5GaWVsZFZhbGlkYXRvciAoUHRy LCBQYXJzZXJbSW5kZXhdLkNvbnRleHQpOw0KPiArICAgICAgICB9DQo+ICsgICAgICB9DQo+ICsg ICAgICBQcmludCAoTCJcbiIpOw0KPiArICAgIH0gLy8gaWYgKFRyYWNlKQ0KPiArDQo+ICsgICAg aWYgKFBhcnNlcltJbmRleF0uSXRlbVB0ciAhPSBOVUxMKSB7DQo+ICsgICAgICAqUGFyc2VyW0lu ZGV4XS5JdGVtUHRyID0gKFZPSUQqKVB0cjsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBQdHIgKz0g UGFyc2VyW0luZGV4XS5MZW5ndGg7DQo+ICsgICAgT2Zmc2V0ICs9IFBhcnNlcltJbmRleF0uTGVu Z3RoOw0KPiArICB9IC8vIGZvcg0KPiArDQo+ICsgIC8vIERlY3JlbWVudCB0aGUgSW5kZW50DQo+ ICsgIGdJbmRlbnQgLT0gSW5kZW50Ow0KPiArICByZXR1cm4gT2Zmc2V0Ow0KPiArfQ0KPiArDQo+ ICsvKiogQW4gYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBHZW5lcmljIEFkZHJlc3MgU3RydWN0 dXJlLg0KPiArICBUaGUgR2FzUGFyc2VyIGFycmF5IGlzIHVzZWQgYnkgdGhlIFBhcnNlQWNwaSBm dW5jdGlvbiB0byBwYXJzZSBhbmQvb3IgdHJhY2UNCj4gKyAgdGhlIEdBUyBzdHJ1Y3R1cmUuDQo+ ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdhc1BhcnNlcltdID0gew0KPiArICB7 TCJBZGRyZXNzIFNwYWNlIElEIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIlJlZ2lzdGVyIEJpdCBXaWR0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZWdpc3RlciBCaXQgT2Zmc2V0IiwgMSwgMiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFkZHJlc3MgU2l6ZSIsIDEs IDMsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBZGRyZXNzIiwg OCwgNCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsv KiogVGhpcyBmdW5jdGlvbiBpbmRlbnRzIGFuZCB0cmFjZXMgdGhlIEdBUyBzdHJ1Y3R1cmUgYXMg ZGVzY3JpYmVkDQo+ICsgICAgYnkgdGhlIEdhc1BhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJh bSBbaW5dIEluZGVudCAgTnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgdGhlIG91dHB1dC4NCj4g KyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXBHYXNTdHJ1Y3QgKA0KPiArICBJTiBVSU5U OCogICAgICAgIFB0ciwNCj4gKyAgSU4gVUlOVDMyICAgICAgICBJbmRlbnQNCj4gKyAgKQ0KPiAr ew0KPiArICBQcmludCAoTCJcbiIpOw0KPiArICBQYXJzZUFjcGkgKA0KPiArICAgIFRSVUUsDQo+ ICsgICAgSW5kZW50LA0KPiArICAgIE5VTEwsDQo+ICsgICAgUHRyLA0KPiArICAgIEdBU19MRU5H VEgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoR2FzUGFyc2VyKQ0KPiArICAgICk7DQo+ICt9DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgR0FTIHN0cnVjdHVyZSBhcyBkZXNj cmliZWQgYnkgdGhlIEdhc1BhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9w dGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBb aW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXBHYXMgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZv cm1hdCBPUFRJT05BTCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKQ0KPiArew0K PiArICBEdW1wR2FzU3RydWN0IChQdHIsIDIpOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiB0cmFjZXMgdGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0aGUgQWNwaUhlYWRl clBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBvZiBieXRl cyBwYXJzZWQuDQo+ICsqLw0KPiArVUlOVDMyDQo+ICtFRklBUEkNCj4gK0R1bXBBY3BpSGVhZGVy ICgNCj4gKyAgSU4gVUlOVDgqIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIEFDUElfREVTQ1JJUFRJ T05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsgIEFDUElfUEFSU0VSIEFjcGlIZWFkZXJQ YXJzZXJbXSA9IHsNCj4gKyAgICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKQ0KPiAr ICB9Ow0KPiArDQo+ICsgIHJldHVybiBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgICBUUlVFLA0K PiArICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAiQUNQSSBUYWJsZSBIZWFkZXIiLA0KPiAr ICAgICAgICAgICBQdHIsDQo+ICsgICAgICAgICAgIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0xF TkdUSCwNCj4gKyAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoQWNwaUhlYWRlclBhcnNlcikNCj4g KyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRo ZSBBQ1BJIGhlYWRlciBhcyBkZXNjcmliZWQgYnkgdGhlIEFjcGlIZWFkZXJQYXJzZXIuDQo+ICsN Cj4gKyAgVGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHJldHVybnMgdGhlIHNpZ25hdHVyZSwgbGVu Z3RoIGFuZCByZXZpc2lvbiBvZiB0aGUNCj4gKyAgQUNQSSB0YWJsZS4NCj4gKw0KPiArICBAcGFy YW0gW2luXSAgUHRyICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0K PiArICBAcGFyYW0gW291dF0gU2lnbmF0dXJlICBHZXRzIGxvY2F0aW9uIG9mIHRoZSBBQ1BJIHRh YmxlIHNpZ25hdHVyZS4NCj4gKyAgQHBhcmFtIFtvdXRdIExlbmd0aCAgICAgR2V0cyBsb2NhdGlv biBvZiB0aGUgbGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW291dF0gUmV2 aXNpb24gICBHZXRzIGxvY2F0aW9uIG9mIHRoZSByZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4N Cj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJzZWQuDQo+ICsqLw0KPiArVUlO VDMyDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaUhlYWRlciAoDQo+ICsgIElOICBVSU5UOCogICAg ICAgICBQdHIsDQo+ICsgIE9VVCBDT05TVCBVSU5UMzIqKiBTaWduYXR1cmUsDQo+ICsgIE9VVCBD T05TVCBVSU5UMzIqKiBMZW5ndGgsDQo+ICsgIE9VVCBDT05TVCBVSU5UOCoqICBSZXZpc2lvbg0K PiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVzUGFy c2VkOw0KPiArICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPICBBY3BpSGRySW5mbzsNCj4g KyAgQUNQSV9QQVJTRVIgQWNwaUhlYWRlclBhcnNlcltdID0gew0KPiArICAgIFBBUlNFX0FDUElf SEVBREVSICgmQWNwaUhkckluZm8pDQo+ICsgIH07DQo+ICsNCj4gKyAgQnl0ZXNQYXJzZWQgPSBQ YXJzZUFjcGkgKA0KPiArICAgICAgICAgICAgICAgICAgRkFMU0UsDQo+ICsgICAgICAgICAgICAg ICAgICAwLA0KPiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAg IFB0ciwNCj4gKyAgICAgICAgICAgICAgICAgIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0xFTkdU SCwNCj4gKyAgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEFjcGlIZWFkZXJQYXJzZXIp DQo+ICsgICAgICAgICAgICAgICAgICApOw0KPiArDQo+ICsgICpTaWduYXR1cmUgPSBBY3BpSGRy SW5mby5TaWduYXR1cmU7DQo+ICsgICpMZW5ndGggPSBBY3BpSGRySW5mby5MZW5ndGg7DQo+ICsg ICpSZXZpc2lvbiA9IEFjcGlIZHJJbmZvLlJldmlzaW9uOw0KPiArDQo+ICsgIHJldHVybiBCeXRl c1BhcnNlZDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL0FjcGlUYWJsZVBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVRhYmxlUGFyc2VyLmMNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uNTk4M2VlMjExMjliMGM0MGUxOWQ3NDFmYjYxMzU5YTIzZWU2MjJkMA0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL0FjcGlUYWJsZVBhcnNlci5jDQo+IEBAIC0wLDAgKzEsMjE1IEBADQo+ICsvKioNCj4gKyAg QUNQSSB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBB Uk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0 aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UN Cj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0 IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5v cmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElT VFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsg IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhF UiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPFVlZmkuaD4N Cj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJy YXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIu aD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiAr I2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ICsNCj4gKy8qKiBBIGxpc3Qgb2YgcmVnaXN0ZXJlZCBB Q1BJIHRhYmxlIHBhcnNlcnMuDQo+ICsqLw0KPiArU1RBVElDIEFDUElfVEFCTEVfUEFSU0VSIG1U YWJsZVBhcnNlckxpc3RbTUFYX0FDUElfVEFCTEVfUEFSU0VSU107DQo+ICsNCj4gKy8qKiBSZWdp c3RlciB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHJlZ2lz dGVycyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0 dXJlICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiArICBAcGFyYW0gW2luXSBQYXJzZXJQ cm9jICBUaGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9J TlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVG SV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgVGFibGUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJl dHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gKyovDQo+ICtFRklfU1RB VFVTDQo+ICtFRklBUEkNCj4gK1JlZ2lzdGVyUGFyc2VyICgNCj4gKyAgSU4gIFVJTlQzMiAgICAg ICAgICAgICAgICAgIFNpZ25hdHVyZSwNCj4gKyAgSU4gIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAg IFBhcnNlclByb2MNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgaW5kZXg7DQo+ICsNCj4gKyAg aWYgKChQYXJzZXJQcm9jID09IE5VTEwpIHx8IChTaWduYXR1cmUgPT0gQUNQSV9QQVJTRVJfU0lH TkFUVVJFX05VTEwpKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4g KyAgfQ0KPiArDQo+ICsgIC8vIFNlYXJjaCBpZiBhIHBhcnNlciBpcyBhbHJlYWR5IGluc3RhbGxl ZA0KPiArICBmb3IgKGluZGV4ID0gMDsNCj4gKyAgICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJs ZVBhcnNlckxpc3QpIC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQo+ICsgICAgICAg aW5kZXgrKykNCj4gKyAgew0KPiArICAgIGlmIChTaWduYXR1cmUgPT0gbVRhYmxlUGFyc2VyTGlz dFtpbmRleF0uU2lnbmF0dXJlKSB7DQo+ICsgICAgICBpZiAobVRhYmxlUGFyc2VyTGlzdFtpbmRl eF0uUGFyc2VyICE9IE5VTEwpIHsNCj4gKyAgICAgICAgcmV0dXJuIEVGSV9BTFJFQURZX1NUQVJU RUQ7DQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgLy8gRmluZCB0aGUg Zmlyc3QgZnJlZSBzbG90IGFuZCByZWdpc3RlciB0aGUgcGFyc2VyDQo+ICsgIGZvciAoaW5kZXgg PSAwOw0KPiArICAgICAgaW5kZXggPCAoc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0KSAvIHNpemVv ZiAobVRhYmxlUGFyc2VyTGlzdFswXSkpOw0KPiArICAgICAgaW5kZXgrKykNCj4gKyAgew0KPiAr ICAgIGlmIChtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5TaWduYXR1cmUgPT0gQUNQSV9QQVJTRVJf U0lHTkFUVVJFX05VTEwpIHsNCj4gKyAgICAgIG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25h dHVyZSA9IFNpZ25hdHVyZTsNCj4gKyAgICAgIG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNl ciA9IFBhcnNlclByb2M7DQo+ICsgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICsgICAgfQ0K PiArICB9DQo+ICsNCj4gKyAgLy8gTm8gZnJlZSBzbG90IGZvdW5kDQo+ICsgIHJldHVybiBFRklf T1VUX09GX1JFU09VUkNFUzsNCj4gK30NCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIEFDUEkg dGFibGUgUGFyc2VyDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBkZXJlZ2lzdGVycyB0aGUgQUNQ SSB0YWJsZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlICAgVGhlIEFD UEkgdGFibGUgc2lnbmF0dXJlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgIFRoZSBwYXJzZXIgd2FzIGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJ RF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfTk9U X0ZPVU5EICAgICAgICAgQSByZWdpc3RlcmVkIHBhcnNlciB3YXMgbm90IGZvdW5kLg0KPiArKi8N Cj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRGVyZWdpc3RlclBhcnNlciAoDQo+ICsgIElO ICBVSU5UMzIgICAgICAgICAgICAgICAgICBTaWduYXR1cmUNCj4gKyAgKQ0KPiArew0KPiArICBV SU5UMzIgaW5kZXg7DQo+ICsNCj4gKyAgaWYgKFNpZ25hdHVyZSA9PSBBQ1BJX1BBUlNFUl9TSUdO QVRVUkVfTlVMTCkgew0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsg IH0NCj4gKw0KPiArICBmb3IgKGluZGV4ID0gMDsNCj4gKyAgICAgICBpbmRleCA8IChzaXplb2Yg KG1UYWJsZVBhcnNlckxpc3QpIC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQo+ICsg ICAgICAgaW5kZXgrKykNCj4gKyAgew0KPiArICAgIGlmIChTaWduYXR1cmUgPT0gbVRhYmxlUGFy c2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlKSB7DQo+ICsgICAgICBtVGFibGVQYXJzZXJMaXN0W2lu ZGV4XS5TaWduYXR1cmUgPSBBQ1BJX1BBUlNFUl9TSUdOQVRVUkVfTlVMTDsNCj4gKyAgICAgIG1U YWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlciA9IE5VTEw7DQo+ICsgICAgICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgLy8gTm8gbWF0Y2hpbmcgcmVn aXN0ZXJlZCBwYXJzZXIgZm91bmQuDQo+ICsgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiArfQ0K PiArDQo+ICsvKiogR2V0IHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiArDQo+ICsgIFRoaXMgZnVu Y3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIgcHJvYyBmcm9tIHRoZSBsaXN0IG9m DQo+ICsgIHJlZ2lzdGVyZWQgcGFyc2Vycy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgU2lnbmF0 dXJlICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiArICBAcGFyYW0gW291dF0gUGFyc2Vy UHJvYyAgUG9pbnRlciB0byBhIEFDUEkgdGFibGUgcGFyc2VyIHByb2MuDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciB3YXMgcmV0dXJuZWQgc3VjY2Vz c2Z1bGx5Lg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBp cyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBBIHJlZ2lzdGVy ZWQgcGFyc2VyIHdhcyBub3QgZm91bmQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJ DQo+ICtHZXRQYXJzZXIgKA0KPiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgIFNpZ25h dHVyZSwNCj4gKyAgT1VUIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAqICBQYXJzZXJQcm9jDQo+ICsg ICkNCj4gK3sNCj4gKyAgVUlOVDMyIGluZGV4Ow0KPiArDQo+ICsgIGlmICgoUGFyc2VyUHJvYyA9 PSBOVUxMKSB8fCAoU2lnbmF0dXJlID09IEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxMKSkgew0K PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiArICBm b3IgKGluZGV4ID0gMDsNCj4gKyAgICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJsZVBhcnNlckxp c3QpIC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQo+ICsgICAgICAgaW5kZXgrKykN Cj4gKyAgew0KPiArICAgIGlmIChTaWduYXR1cmUgPT0gbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0u U2lnbmF0dXJlKSB7DQo+ICsgICAgICAqUGFyc2VyUHJvYyA9IG1UYWJsZVBhcnNlckxpc3RbaW5k ZXhdLlBhcnNlcjsNCj4gKyAgICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKyAgICB9DQo+ICsg IH0NCj4gKw0KPiArICAvLyBObyBtYXRjaGluZyByZWdpc3RlcmVkIHBhcnNlciBmb3VuZC4NCj4g KyAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHByb2Nlc3NlcyB0aGUgQUNQSSB0YWJsZXMuDQo+ICsgIFRoaXMgZnVuY3Rpb24gY2FsbHMgUHJv Y2Vzc1RhYmxlUmVwb3J0T3B0aW9ucygpIHRvIGxpc3QgdGhlIEFDUEkNCj4gKyAgdGFibGVzLCBw ZXJmb3JtIGJpbmFyeSBkdW1wIG9mIHRoZSB0YWJsZXMgYW5kIGRldGVybWluZSBpZiB0aGUNCj4g KyAgQUNQSSBmaWVsZHMgc2hvdWxkIGJlIHRyYWNlZC4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9u IGFsc28gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgQUNQSSB0YWJsZXMuDQo+ICsNCj4gKyAg VGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIGEgUkFXIGR1bXAgb2YgdGhlIEFDUEkgdGFibGUg aW5jbHVkaW5nDQo+ICsgIHRoZSB1bmtub3duL3VucGFyc2VkIEFDUEkgdGFibGVzIGFuZCB2YWxp ZGF0ZXMgdGhlIGNoZWNrc3VtLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAg ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgQUNQSQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFibGUgZGF0YSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiAr RUZJQVBJDQo+ICtQcm9jZXNzQWNwaVRhYmxlICgNCj4gKyAgSU4gVUlOVDgqIFB0cg0KPiArICAp DQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KPiArICBCT09MRUFOICAgICAgIFRy YWNlOw0KPiArICBDT05TVCBVSU5UMzIqIEFjcGlUYWJsZVNpZ25hdHVyZTsNCj4gKyAgQ09OU1Qg VUlOVDMyKiBBY3BpVGFibGVMZW5ndGg7DQo+ICsgIENPTlNUIFVJTlQ4KiAgQWNwaVRhYmxlUmV2 aXNpb247DQo+ICsgIFBBUlNFX0FDUElfVEFCTEVfUFJPQyBQYXJzZXJQcm9jOw0KPiArDQo+ICsg IFBhcnNlQWNwaUhlYWRlciAoDQo+ICsgICAgUHRyLA0KPiArICAgICZBY3BpVGFibGVTaWduYXR1 cmUsDQo+ICsgICAgJkFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgICAmQWNwaVRhYmxlUmV2aXNpb24N Cj4gKyAgICApOw0KPiArDQo+ICsgIFRyYWNlID0gUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucyAo DQo+ICsgICAgICAgICAgICAqQWNwaVRhYmxlU2lnbmF0dXJlLA0KPiArICAgICAgICAgICAgUHRy LA0KPiArICAgICAgICAgICAgKkFjcGlUYWJsZUxlbmd0aA0KPiArICAgICAgICAgICAgKTsNCj4g Kw0KPiArICBpZiAoVHJhY2UpIHsNCj4gKyAgICBEdW1wUmF3IChQdHIsICpBY3BpVGFibGVMZW5n dGgpOw0KPiArICAgIFZlcmlmeUNoZWNrc3VtIChUUlVFLCBQdHIsICpBY3BpVGFibGVMZW5ndGgp Ow0KPiArICB9DQo+ICsNCj4gKyAgU3RhdHVzID0gR2V0UGFyc2VyICgqQWNwaVRhYmxlU2lnbmF0 dXJlLCAmUGFyc2VyUHJvYyk7DQo+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAg ICAvLyBObyByZWdpc3RlcmVkIHBhcnNlciBmb3VuZCwgZG8gZGVmYXVsdCBoYW5kbGluZy4NCj4g KyAgICBpZiAoVHJhY2UpIHsNCj4gKyAgICAgIER1bXBBY3BpSGVhZGVyIChQdHIpOw0KPiArICAg IH0NCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBQYXJzZXJQcm9jICgNCj4gKyAg ICBUcmFjZSwNCj4gKyAgICBQdHIsDQo+ICsgICAgKkFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgICAq QWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuYyBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlWaWV3LmMNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uNTg2ZTA1YWJiNzE2YjM2ZDM0YTljNGU1MTU2OGRjNjNmZWNiMTA4NQ0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL0FjcGlWaWV3LmMNCj4gQEAgLTAsMCArMSw2MDEgQEANCj4gKy8qKg0KPiArDQo+ ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl c2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz DQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZv dW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5w aHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJF UFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4g KyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvU2hlbGxMaWIuaD4NCj4g KyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdM aWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gKyNp bmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRlIDxMaWJy YXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiArI2luY2x1ZGUgIkFjcGlWaWV3Lmgi DQo+ICsjaW5jbHVkZSAiVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmgiDQo+ICsNCj4gK0VG SV9ISUlfSEFORExFIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlID0gTlVMTDsNCj4gKw0KPiArLy8g UmVwb3J0IHZhcmlhYmxlcw0KPiArU1RBVElDIFVJTlQzMiAgICAgICAgICAgICBtU2VsZWN0ZWRB Y3BpVGFibGU7DQo+ICtTVEFUSUMgQ09OU1QgQ0hBUjE2KiAgICAgIG1TZWxlY3RlZEFjcGlUYWJs ZU5hbWU7DQo+ICtTVEFUSUMgQk9PTEVBTiAgICAgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZUZv dW5kOw0KPiArU1RBVElDIEVSRVBPUlRfT1BUSU9OICAgICBtUmVwb3J0VHlwZTsNCj4gK1NUQVRJ QyBVSU5UMzIgICAgICAgICAgICAgbVRhYmxlQ291bnQ7DQo+ICtTVEFUSUMgVUlOVDMyICAgICAg ICAgICAgIG1CaW5UYWJsZUNvdW50Ow0KPiArU1RBVElDIEJPT0xFQU4gICAgICAgICAgICBtVmVy Ym9zZTsNCj4gK1NUQVRJQyBCT09MRUFOICAgICAgICAgICAgbUNvbnNpc3RlbmN5Q2hlY2s7DQo+ ICtTVEFUSUMgQk9PTEVBTiAgICAgICAgICAgIG1Db2xvdXJIaWdobGlnaHRpbmc7DQo+ICsNCj4g Ky8qKiBBbiBhcnJheSBvZiBhY3BpdmlldyBjb21tYW5kIGxpbmUgcGFyYW1ldGVycy4NCj4gKyov DQo+ICtTVEFUSUMgQ09OU1QgU0hFTExfUEFSQU1fSVRFTSBQYXJhbUxpc3RbXSA9IHsNCj4gKyAg e0wiLz8iLCBUeXBlRmxhZ30sDQo+ICsgIHtMIi1jIiwgVHlwZUZsYWd9LA0KPiArICB7TCItZCIs IFR5cGVGbGFnfSwNCj4gKyAge0wiLWgiLCBUeXBlVmFsdWV9LA0KPiArICB7TCItbCIsIFR5cGVG bGFnfSwNCj4gKyAge0wiLXMiLCBUeXBlVmFsdWV9LA0KPiArICB7TCItdiIsIFR5cGVGbGFnfSwN Cj4gKyAge05VTEwsIFR5cGVNYXh9DQo+ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBy ZXR1cm5zIHRoZSBjb2xvdXIgaGlnaGxpZ2h0aW5nIHN0YXR1cy4NCj4gKw0KPiArICBAcmV0dmFs IFRSVUUgaWYgY29sb3VyIGhpZ2hsaWdodGluZyBpcyBlbmFibGVkLg0KPiArKi8NCj4gK0JPT0xF QU4NCj4gK0dldENvbG91ckhpZ2hsaWdodGluZyAoDQo+ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0K PiArICByZXR1cm4gbUNvbG91ckhpZ2hsaWdodGluZzsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gc2V0cyB0aGUgY29sb3VyIGhpZ2hsaWdodGluZyBzdGF0dXMuDQo+ICsNCj4gKyov DQo+ICtWT0lEDQo+ICtTZXRDb2xvdXJIaWdobGlnaHRpbmcgKA0KPiArICBCT09MRUFOIEhpZ2hs aWdodA0KPiArICApDQo+ICt7DQo+ICsgIG1Db2xvdXJIaWdobGlnaHRpbmcgPSBIaWdobGlnaHQ7 DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlcG9ydCBvcHRp b25zLg0KPiArDQo+ICsgIEByZXR2YWwgUmV0dXJucyB0aGUgcmVwb3J0IG9wdGlvbi4NCj4gKyov DQo+ICtTVEFUSUMNCj4gK0VSRVBPUlRfT1BUSU9ODQo+ICtHZXRSZXBvcnRPcHRpb24gKA0KPiAr ICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIG1SZXBvcnRUeXBlOw0KPiArfQ0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBzZWxlY3RlZCBBQ1BJIHRhYmxlLg0K PiArDQo+ICsgIEByZXR2YWwgUmV0dXJucyBzaWduYXR1cmUgb2YgdGhlIHNlbGVjdGVkIEFDUEkg dGFibGUuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtVSU5UMzINCj4gK0dldFNlbGVjdGVkQWNwaVRh YmxlICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBtU2VsZWN0ZWRBY3Bp VGFibGU7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGR1bXBzIHRoZSBBQ1BJIHRh YmxlIHRvIGEgZmlsZS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgIFBvaW50ZXIgdG8gdGhl IEFDUEkgdGFibGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgIFRoZSBsZW5ndGgg b2YgdGhlIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIFN1Y2Nl c3MuDQo+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBGYWlsdXJlLg0KPiArKi8NCj4gK1NUQVRJ Qw0KPiArQk9PTEVBTg0KPiArRHVtcEFjcGlUYWJsZVRvRmlsZSAoDQo+ICsgIElOIENPTlNUIFVJ TlQ4KiAgUHRyLA0KPiArICBJTiBDT05TVCBVSU5UTiAgIExlbmd0aA0KPiArICApDQo+ICt7DQo+ ICsgIEVGSV9TVEFUVVMgICAgICAgICBTdGF0dXM7DQo+ICsgIENIQVIxNiAgICAgICAgICAgICBG aWxlTmFtZUJ1ZmZlcltNQVhfRklMRV9OQU1FX0xFTl07DQo+ICsgIFNIRUxMX0ZJTEVfSEFORExF ICBEdW1wRmlsZUhhbmRsZSA9IE5VTEw7DQo+ICsgIFVJTlROICAgICAgICAgICAgICBUcmFuc2Zl ckJ5dGVzID0gTGVuZ3RoOw0KPiArDQo+ICsgIFVuaWNvZGVTUHJpbnQgKA0KPiArICAgIEZpbGVO YW1lQnVmZmVyLA0KPiArICAgIHNpemVvZiAoRmlsZU5hbWVCdWZmZXIpLA0KPiArICAgIEwiLlxc JXMlMDRkLmJpbiIsDQo+ICsgICAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSwNCj4gKyAgICBtQmlu VGFibGVDb3VudCsrDQo+ICsgICAgKTsNCj4gKw0KPiArICBTdGF0dXMgPSBTaGVsbE9wZW5GaWxl QnlOYW1lICgNCj4gKyAgICAgICAgICAgICBGaWxlTmFtZUJ1ZmZlciwNCj4gKyAgICAgICAgICAg ICAmRHVtcEZpbGVIYW5kbGUsDQo+ICsgICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9SRUFEIHwg RUZJX0ZJTEVfTU9ERV9XUklURSB8IEVGSV9GSUxFX01PREVfQ1JFQVRFLA0KPiArICAgICAgICAg ICAgIDANCj4gKyAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 DQo+ICsgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgIC0xLA0KPiArICAgICAgLTEsDQo+ ICsgICAgICBOVUxMLA0KPiArICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1JFQURPTkxZX01F RElBKSwNCj4gKyAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAgICAgTCJhY3Bp dmlldyINCj4gKyAgICAgICk7DQo+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiArICB9DQo+ICsNCj4g KyAgUHJpbnQgKEwiRHVtcGluZyBBQ1BJIHRhYmxlIHRvIDogJXMgLi4uICIsIEZpbGVOYW1lQnVm ZmVyKTsNCj4gKw0KPiArICBTdGF0dXMgPSBTaGVsbFdyaXRlRmlsZSAoDQo+ICsgICAgICAgICAg ICAgRHVtcEZpbGVIYW5kbGUsDQo+ICsgICAgICAgICAgICAgJlRyYW5zZmVyQnl0ZXMsDQo+ICsg ICAgICAgICAgICAgKFZPSUQqKVB0cg0KPiArICAgICAgICAgICAgICk7DQo+ICsgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBQcmludCAoTCJFUlJPUjogRmFpbGVkIHRvIGR1bXAg dGFibGUgdG8gYmluYXJ5IGZpbGUuXG4iKTsNCj4gKyAgICBUcmFuc2ZlckJ5dGVzID0gMDsNCj4g KyAgfSBlbHNlIHsNCj4gKyAgICBQcmludCAoTCJET05FLlxuIik7DQo+ICsgIH0NCj4gKw0KPiAr ICBTaGVsbENsb3NlRmlsZSAoJkR1bXBGaWxlSGFuZGxlKTsNCj4gKyAgcmV0dXJuIChMZW5ndGgg PT0gVHJhbnNmZXJCeXRlcyk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHByb2Nl c3NlcyB0aGUgdGFibGUgcmVwb3J0aW5nIG9wdGlvbnMgZm9yIHRoZSBBQ1BJIHRhYmxlLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIFNpZ25hdHVyZSBUaGUgQUNQSSB0YWJsZSBTaWduYXR1cmUuDQo+ ICsgIEBwYXJhbSBbaW5dIFRhYmxlUHRyICBQb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGRhdGEu DQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICBUaGUgbGVuZ3RoIGZvIHRoZSBBQ1BJIHRhYmxl Lg0KPiArDQo+ICsgIEByZXR2YWwgUmV0dXJucyBUUlVFIGlmIHRoZSBBQ1BJIHRhYmxlIHNob3Vs ZCBiZSB0cmFjZWQuDQo+ICsqLw0KPiArQk9PTEVBTg0KPiArUHJvY2Vzc1RhYmxlUmVwb3J0T3B0 aW9ucyAoDQo+ICsgIElOIENPTlNUIFVJTlQzMiAgU2lnbmF0dXJlLA0KPiArICBJTiBDT05TVCBV SU5UOCogIFRhYmxlUHRyLA0KPiArICBJTiBDT05TVCBVSU5UMzIgIExlbmd0aA0KPiArICApDQo+ ICt7DQo+ICsgIFVJTlROICAgT3JpZ2luYWxBdHRyaWJ1dGU7DQo+ICsgIFVJTlQ4KiAgU2lnbmF0 dXJlUHRyID0gKFVJTlQ4KikoVUlOVE4pJlNpZ25hdHVyZTsNCj4gKyAgQk9PTEVBTiBMb2cgPSBG QUxTRTsNCj4gKyAgQk9PTEVBTiBIaWdoTGlnaHQgPSBHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCk7 DQo+ICsgIHN3aXRjaCAoR2V0UmVwb3J0T3B0aW9uICgpKSB7DQo+ICsgICAgY2FzZSBFUkVQT1JU X0FMTDoNCj4gKyAgICAgIExvZyA9IFRSVUU7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICBjYXNl IEVSRVBPUlRfU0VMRUNURUQ6DQo+ICsgICAgICBpZiAoU2lnbmF0dXJlID09IEdldFNlbGVjdGVk QWNwaVRhYmxlICgpKSB7DQo+ICsgICAgICAgIExvZyA9IFRSVUU7DQo+ICsgICAgICAgIG1TZWxl Y3RlZEFjcGlUYWJsZUZvdW5kID0gVFJVRTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIGJyZWFrOw0K PiArICAgIGNhc2UgRVJFUE9SVF9UQUJMRV9MSVNUOg0KPiArICAgICAgaWYgKG1UYWJsZUNvdW50 ID09IDApIHsNCj4gKyAgICAgICAgaWYgKEhpZ2hMaWdodCkgew0KPiArICAgICAgICAgIE9yaWdp bmFsQXR0cmlidXRlID0gZ1NULT5Db25PdXQtPk1vZGUtPkF0dHJpYnV0ZTsNCj4gKyAgICAgICAg ICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBnU1QtPkNvbk91dCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBFRklfVEVYVF9BVFRS KEVGSV9DWUFOLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJp YnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg KTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICBQcmludCAoTCJcbkluc3RhbGxlZCBUYWJsZShz KTpcbiIpOw0KPiArICAgICAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ICsgICAgICAgICAgZ1NULT5D b25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25PdXQsIE9yaWdpbmFsQXR0cmlidXRlKTsNCj4g KyAgICAgICAgfQ0KPiArICAgICAgfQ0KPiArICAgICAgUHJpbnQgKA0KPiArICAgICAgICBMIlx0 JTRkLiAlYyVjJWMlY1xuIiwNCj4gKyAgICAgICAgKyttVGFibGVDb3VudCwNCj4gKyAgICAgICAg U2lnbmF0dXJlUHRyWzBdLA0KPiArICAgICAgICBTaWduYXR1cmVQdHJbMV0sDQo+ICsgICAgICAg IFNpZ25hdHVyZVB0clsyXSwNCj4gKyAgICAgICAgU2lnbmF0dXJlUHRyWzNdDQo+ICsgICAgICAg ICk7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICBjYXNlIEVSRVBPUlRfRFVNUF9CSU5fRklMRToN Cj4gKyAgICAgIGlmIChTaWduYXR1cmUgPT0gR2V0U2VsZWN0ZWRBY3BpVGFibGUgKCkpIHsNCj4g KyAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlRm91bmQgPSBUUlVFOw0KPiArICAgICAgICBEdW1w QWNwaVRhYmxlVG9GaWxlIChUYWJsZVB0ciwgTGVuZ3RoKTsNCj4gKyAgICAgIH0NCj4gKyAgICAg IGJyZWFrOw0KPiArICAgIGNhc2UgRVJFUE9SVF9NQVg6DQo+ICsgICAgICAvLyBXZSBzaG91bGQg bmV2ZXIgYmUgaGVyZS4NCj4gKyAgICAgIC8vIFRoaXMgY2FzZSBpcyBvbmx5IHByZXNlbnQgdG8g cHJldmVudCBjb21waWxlciB3YXJuaW5nLg0KPiArICAgICAgYnJlYWs7DQo+ICsgIH0gLy8gc3dp dGNoDQo+ICsNCj4gKyAgaWYgKExvZykgew0KPiArICAgIGlmIChIaWdoTGlnaHQpIHsNCj4gKyAg ICAgIE9yaWdpbmFsQXR0cmlidXRlID0gZ1NULT5Db25PdXQtPk1vZGUtPkF0dHJpYnV0ZTsNCj4g KyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKA0KPiArICAgICAgICAgICAgICAgICAg ICAgZ1NULT5Db25PdXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICBFRklfVEVYVF9BVFRSKEVG SV9MSUdIVEJMVUUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1 dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiArICAgICAgICAgICAgICAgICAgICAgKTsNCj4g KyAgICB9DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcblxuIC0tLS0tLS0tLS0tLS0tLSAl YyVjJWMlYyBUYWJsZSAtLS0tLS0tLS0tLS0tLS0gXG5cbiIsDQo+ICsgICAgICBTaWduYXR1cmVQ dHJbMF0sDQo+ICsgICAgICBTaWduYXR1cmVQdHJbMV0sDQo+ICsgICAgICBTaWduYXR1cmVQdHJb Ml0sDQo+ICsgICAgICBTaWduYXR1cmVQdHJbM10NCj4gKyAgICAgICk7DQo+ICsgICAgaWYgKEhp Z2hMaWdodCkgew0KPiArICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25P dXQsIE9yaWdpbmFsQXR0cmlidXRlKTsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICByZXR1 cm4gTG9nOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyBhIHN0cmlu ZyB0byBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBTdHIgICBQ b2ludGVyIHRvIHRoZSBzdHJpbmcgdG8gYmUgY29udmVydGVkIHRvIHRoZQ0KPiArICAgICAgICAg ICAgICAgICAgICBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKw0KPiArICBAcmV0dmFsIFRoZSBB Q1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1VJTlQzMg0KPiArQ29u dmVydFN0clRvQWNwaVNpZ25hdHVyZSAoDQo+ICsgIElOICBDT05TVCBDSEFSMTYqIFN0cg0KPiAr ICApDQo+ICt7DQo+ICsgIFVJTlQ4IEluZGV4ID0gMDsNCj4gKyAgQ0hBUjggUHRyWzRdOw0KPiAr DQo+ICsgIC8vIENvbnZlcnQgdG8gVXBwZXIgY2FzZSBhbmQgY29udmVydCB0byBBU0NJSQ0KPiAr ICB3aGlsZSAoKEluZGV4IDwgNCkgJiYgKFN0cltJbmRleF0gIT0gMCkpIHsNCj4gKyAgICBpZiAo U3RyW0luZGV4XSA+PSBMJ2EnICYmIFN0cltJbmRleF0gPD0gTCd6Jykgew0KPiArICAgICAgUHRy W0luZGV4XSA9IChDSEFSOCkoU3RyW0luZGV4XSAtIChMJ2EnIC0gTCdBJykpOw0KPiArICAgIH0g ZWxzZSB7DQo+ICsgICAgICBQdHJbSW5kZXhdID0gKENIQVI4KVN0cltJbmRleF07DQo+ICsgICAg fQ0KPiArICAgIEluZGV4Kys7DQo+DQo+ICsgIH0NCj4gKyAgcmV0dXJuICooVUlOVDMyKilQdHI7 DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGl0ZXJhdGVzIHRoZSBjb25maWd1cmF0 aW9uIHRhYmxlIGVudHJpZXMgaW4gdGhlDQo+ICsgICAgc3lzdGVtIHRhYmxlLCByZXRyaWV2ZXMg dGhlIFJTRFAgcG9pbnRlciBhbmQgc3RhcnRzIHBhcnNpbmcNCj4gKyAgICB0aGUgQUNQSSB0YWJs ZXMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU3lzdGVtVGFibGUgUG9pbnRlciB0byB0aGUgRUZJ IHN5c3RlbSB0YWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIFJldHVybnMgRUZJX05PVF9GT1VORCAg IGlmIHRoZSBSU0RQIHBvaW50ZXIgaXMgbm90IGZvdW5kLg0KPiArICAgICAgICAgIFJldHVybnMg RUZJX1VOU1VQUE9SVEVEIGlmIHRoZSBSU0RQIHZlcnNpb24gaXMgbGVzcyB0aGFuIDIuDQo+ICsg ICAgICAgICAgUmV0dXJucyBFRklfU1VDQ0VTUyAgICAgaWYgc3VjY2Vzc2Z1bC4NCj4gKyovDQo+ ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArQWNwaVZpZXcgKA0KPiArICBJ TiBFRklfU1lTVEVNX1RBQkxFKiBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9T VEFUVVMgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAg ICBJbmRleDsNCj4gKyAgRUZJX0NPTkZJR1VSQVRJT05fVEFCTEUqIEVmaUNvbmZpZ3VyYXRpb25U YWJsZTsNCj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgIEZvdW5kQWNwaVRhYmxlOw0KPiAr ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgT3JpZ2luYWxBdHRyaWJ1dGU7DQo+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgICBQcmludEF0dHJpYnV0ZTsNCj4gKyAgRVJFUE9SVF9PUFRJT04g ICAgICAgICAgIFJlcG9ydE9wdGlvbjsNCj4gKyAgVUlOVDgqICAgICAgICAgICAgICAgICAgIFJz ZHBQdHI7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICBSc2RwTGVuZ3RoOw0KPiArICBV SU5UOCAgICAgICAgICAgICAgICAgICAgUnNkcFJldmlzaW9uOw0KPiArICBQQVJTRV9BQ1BJX1RB QkxFX1BST0MgICAgUnNkcFBhcnNlclByb2M7DQo+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAg ICBUcmFjZTsNCj4gKw0KPiArICAvLyBTZWFyY2ggdGhlIHRhYmxlIGZvciBhbiBlbnRyeSB0aGF0 IG1hdGNoZXMgdGhlIEFDUEkgVGFibGUgR3VpZA0KPiArICBGb3VuZEFjcGlUYWJsZSA9IEZBTFNF Ow0KPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBTeXN0ZW1UYWJsZS0+TnVtYmVyT2ZUYWJs ZUVudHJpZXM7IEluZGV4KyspIHsNCj4gKyAgICBpZiAoQ29tcGFyZUd1aWQgKCZnRWZpQWNwaVRh YmxlR3VpZCwNCj4gKyAgICAgICAgICAmKFN5c3RlbVRhYmxlLT5Db25maWd1cmF0aW9uVGFibGVb SW5kZXhdLlZlbmRvckd1aWQpKSkgew0KPiArICAgICAgRWZpQ29uZmlndXJhdGlvblRhYmxlID0g JlN5c3RlbVRhYmxlLT5Db25maWd1cmF0aW9uVGFibGVbSW5kZXhdOw0KPiArICAgICAgRm91bmRB Y3BpVGFibGUgPSBUUlVFOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsN Cj4gKyAgaWYgKEZvdW5kQWNwaVRhYmxlKSB7DQo+ICsgICAgUnNkcFB0ciA9IChVSU5UOCopRWZp Q29uZmlndXJhdGlvblRhYmxlLT5WZW5kb3JUYWJsZTsNCj4gKw0KPiArICAgIC8vIFRoZSBSU0RQ IHJldmlzaW9uIGlzIDEgYnl0ZSBzdGFydGluZyBhdCBvZmZzZXQgMTUNCj4gKyAgICBSc2RwUmV2 aXNpb24gPSAqKFJzZHBQdHIgKyBSU0RQX1JFVklTSU9OX09GRlNFVCk7DQo+ICsNCj4gKyAgICBp ZiAoUnNkcFJldmlzaW9uIDwgMikgew0KPiArICAgICAgUHJpbnQgKA0KPiArICAgICAgICBMIkVS Uk9SOiBSU0RQIHZlcnNpb24gbGVzcyB0aGFuIDIgaXMgbm90IHN1cHBvcnRlZC5cbiINCj4gKyAg ICAgICAgKTsNCj4gKyAgICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ICsgICAgfQ0KPiAr DQo+ICsgICAgLy8gVGhlIFJTRFAgbGVuZ3RoIGlzIDQgYnl0ZXMgc3RhcnRpbmcgYXQgb2Zmc2V0 IDIwDQo+ICsgICAgUnNkcExlbmd0aCA9ICooVUlOVDMyKikoUnNkcFB0ciArIFJTRFBfTEVOR1RI X09GRlNFVCk7DQo+ICsNCj4gKyAgICBUcmFjZSA9IFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMg KFJTRFBfVEFCTEVfSU5GTywgUnNkcFB0ciwgUnNkcExlbmd0aCk7DQo+ICsNCj4gKyAgICBTdGF0 dXMgPSBHZXRQYXJzZXIgKFJTRFBfVEFCTEVfSU5GTywgJlJzZHBQYXJzZXJQcm9jKTsNCj4gKyAg ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICBQcmludCAoDQo+ICsgICAgICAg IEwiRVJST1I6IE5vIHJlZ2lzdGVyZWQgcGFyc2VyIGZvdW5kIGZvciBSU0RQLlxuIg0KPiArICAg ICAgICApOw0KPiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBS c2RwUGFyc2VyUHJvYyAoDQo+ICsgICAgICBUcmFjZSwNCj4gKyAgICAgIFJzZHBQdHIsDQo+ICsg ICAgICBSc2RwTGVuZ3RoLA0KPiArICAgICAgUnNkcFJldmlzaW9uDQo+ICsgICAgICApOw0KPiAr DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQ cmludCAoDQo+ICsgICAgICBMIkVSUk9SOiBGYWlsZWQgdG8gZmluZCBBQ1BJIFRhYmxlIEd1aWQg aW4gU3lzdGVtIENvbmZpZ3VyYXRpb24gVGFibGUuXG4iDQo+ICsgICAgICApOw0KPiArICAgIHJl dHVybiBFRklfTk9UX0ZPVU5EOw0KPiArICB9DQo+ICsNCj4gKyAgUmVwb3J0T3B0aW9uID0gR2V0 UmVwb3J0T3B0aW9uICgpOw0KPiArICBpZiAoRVJFUE9SVF9UQUJMRV9MSVNUICE9IFJlcG9ydE9w dGlvbikgew0KPiArICAgIGlmICgoKEVSRVBPUlRfU0VMRUNURUQgPT0gUmVwb3J0T3B0aW9uKSAg fHwNCj4gKyAgICAgICAgIChFUkVQT1JUX0RVTVBfQklOX0ZJTEUgPT0gUmVwb3J0T3B0aW9uKSkg JiYNCj4gKyAgICAgICAgKCFtU2VsZWN0ZWRBY3BpVGFibGVGb3VuZCkpIHsNCj4gKyAgICAgIFBy aW50IChMIlxuUmVxdWVzdGVkIEFDUEkgVGFibGUgbm90IGZvdW5kLlxuIik7DQo+ICsgICAgfSBl bHNlIGlmIChFUkVQT1JUX0RVTVBfQklOX0ZJTEUgIT0gUmVwb3J0T3B0aW9uKSB7DQo+ICsgICAg ICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ICsN Cj4gKyAgICAgIFByaW50IChMIlxuVGFibGUgU3RhdGlzdGljczpcbiIpOw0KPiArDQo+ICsgICAg ICBpZiAoR2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpKSB7DQo+ICsgICAgICAgIFByaW50QXR0cmli dXRlID0gKEdldEVycm9yQ291bnQgKCkgPiAwKSA/DQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRUZJX1RFWFRfQVRUUiAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF RklfUkVELA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJp YnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkgOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yaWdpbmFsQXR0cmlidXRl Ow0KPiArICAgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgUHJp bnRBdHRyaWJ1dGUpOw0KPiArICAgICAgfQ0KPiArICAgICAgUHJpbnQgKEwiXHQlZCBFcnJvcihz KVxuIiwgR2V0RXJyb3JDb3VudCAoKSk7DQo+ICsNCj4gKyAgICAgIGlmIChHZXRDb2xvdXJIaWdo bGlnaHRpbmcgKCkpIHsNCj4gKyAgICAgICAgUHJpbnRBdHRyaWJ1dGUgPSAoR2V0V2FybmluZ0Nv dW50ICgpID4gMCkgPw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9URVhUX0FU VFIgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1JFRCwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxC SVQ2KSk+PjQpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDoNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPcmlnaW5hbEF0dHJpYnV0ZTsNCj4gKw0KPiArICAgICAg ICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgUHJpbnRBdHRyaWJ1dGUp Ow0KPiArICAgICAgfQ0KPiArICAgICAgUHJpbnQgKEwiXHQlZCBXYXJuaW5nKHMpXG4iLCBHZXRX YXJuaW5nQ291bnQgKCkpOw0KPiArDQo+ICsgICAgICBpZiAoR2V0Q29sb3VySGlnaGxpZ2h0aW5n ICgpKSB7DQo+ICsgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0 LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICB9DQo+ICsg IHJldHVybiBFRklfU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIEZ1bmN0aW9uIGZv ciAnYWNwaXZpZXcnIGNvbW1hbmQuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSBJbWFnZUhhbmRsZSAg SGFuZGxlIHRvIHRoZSBJbWFnZSAoTlVMTCBpZiBJbnRlcm5hbCkuDQo+ICsgIEBwYXJhbVtpbl0g U3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZSAoTlVMTCBpZiBJbnRlcm5h bCkuDQo+ICsqLw0KPiArU0hFTExfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NoZWxsQ29tbWFuZFJ1 bkFjcGlWaWV3ICgNCj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsg IElOIEVGSV9TWVNURU1fVEFCTEUqIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJ X1NUQVRVUyAgICAgICAgIFN0YXR1czsNCj4gKyAgU0hFTExfU1RBVFVTICAgICAgIFNoZWxsU3Rh dHVzID0gU0hFTExfU1VDQ0VTUzsNCj4gKyAgTElTVF9FTlRSWSogICAgICAgIFBhY2thZ2UgPSBO VUxMOw0KPiArICBDSEFSMTYqICAgICAgICAgICAgUHJvYmxlbVBhcmFtOw0KPiArICBDT05TVCBD SEFSMTYqICAgICAgVGVtcDsNCj4gKyAgQ0hBUjggICAgICAgICAgICAgIENvbG91ck9wdGlvbls4 XTsNCj4gKyAgU0hFTExfRklMRV9IQU5ETEUgIFRtcER1bXBGaWxlSGFuZGxlID0gTlVMTDsNCj4g Kw0KPiArICAvLyBTZXQgRGVmYXVsdHMNCj4gKyAgbVJlcG9ydFR5cGUgPSBFUkVQT1JUX0FMTDsN Cj4gKyAgbVRhYmxlQ291bnQgPSAwOw0KPiArICBtQmluVGFibGVDb3VudCA9IDA7DQo+ICsgIG1T ZWxlY3RlZEFjcGlUYWJsZSA9IDA7DQo+ICsgIG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUgPSBOVUxM Ow0KPiArICBtU2VsZWN0ZWRBY3BpVGFibGVGb3VuZCA9IEZBTFNFOw0KPiArICBtVmVyYm9zZSA9 IFRSVUU7DQo+ICsgIG1Db25zaXN0ZW5jeUNoZWNrID0gVFJVRTsNCj4gKw0KPiArICAvLyBSZXNl dCBUaGUgZXJyb3Ivd2FybmluZyBjb3VudGVycw0KPiArICBSZXNldEVycm9yQ291bnQgKCk7DQo+ ICsgIFJlc2V0V2FybmluZ0NvdW50ICgpOw0KPiArDQo+ICsgIFN0YXR1cyA9IFNoZWxsQ29tbWFu ZExpbmVQYXJzZSAoUGFyYW1MaXN0LCAmUGFja2FnZSwgJlByb2JsZW1QYXJhbSwgVFJVRSk7DQo+ ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBpZiAoU3RhdHVzID09IEVGSV9W T0xVTUVfQ09SUlVQVEVEICYmIFByb2JsZW1QYXJhbSAhPSBOVUxMKSB7DQo+ICsgICAgICBTaGVs bFByaW50SGlpRXggKA0KPiArICAgICAgICAtMSwNCj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAg IE5VTEwsDQo+ICsgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9QUk9CTEVNKSwNCj4gKyAg ICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ICsgICAgICAgIEwiYWNwaXZpZXciLA0K PiArICAgICAgICBQcm9ibGVtUGFyYW0NCj4gKyAgICAgICAgKTsNCj4gKyAgICAgIEZyZWVQb29s IChQcm9ibGVtUGFyYW0pOw0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBQcmludCAoTCJhY3Bp dmlldzogRXJyb3IgcHJvY2Vzc2luZyBpbnB1dCBwYXJhbWV0ZXIocylcbiIpOw0KPiArICAgIH0N Cj4gKyAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9IGVs c2Ugew0KPiArICAgIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0Q291bnQgKFBhY2thZ2UpID4gMSkg ew0KPiArICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAg IC0xLA0KPiArICAgICAgICBOVUxMLA0KPiArICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRU5f VE9PX01BTlkpLA0KPiArICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAgICAg ICAgTCJhY3BpdmlldyINCj4gKyAgICAgICAgKTsNCj4gKyAgICAgIFNoZWxsU3RhdHVzID0gU0hF TExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5l R2V0RmxhZyAoUGFja2FnZSwgTCItPyIpKSB7DQo+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0K PiArICAgICAgICAtMSwNCj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAgIE5VTEwsDQo+ICsgICAg ICAgIFNUUklOR19UT0tFTiAoU1RSX0dFVF9IRUxQX0FDUElWSUVXKSwNCj4gKyAgICAgICAgZ1No ZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ICsgICAgICAgIEwiYWNwaXZpZXciDQo+ICsgICAgICAg ICk7DQo+ICsgICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwg TCItcyIpICYmDQo+ICsgICAgICAgICAgICAgICBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKFBh Y2thZ2UsIEwiLXMiKSA9PSBOVUxMKSB7DQo+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiAr ICAgICAgICAtMSwNCj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAgIE5VTEwsDQo+ICsgICAgICAg IFNUUklOR19UT0tFTiAoU1RSX0dFTl9OT19WQUxVRSksDQo+ICsgICAgICAgIGdTaGVsbEFjcGlW aWV3SGlpSGFuZGxlLA0KPiArICAgICAgICBMImFjcGl2aWV3IiwNCj4gKyAgICAgICAgTCItcyIN Cj4gKyAgICAgICAgKTsNCj4gKyAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJB TUVURVI7DQo+ICsgICAgfSBlbHNlIGlmICgoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2th Z2UsIEwiLXMiKSAmJg0KPiArICAgICAgICAgICAgICAgIFNoZWxsQ29tbWFuZExpbmVHZXRGbGFn IChQYWNrYWdlLCBMIi1sIikpKSB7DQo+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiArICAg ICAgICAtMSwNCj4gKyAgICAgICAgLTEsDQo+ICsgICAgICAgIE5VTEwsDQo+ICsgICAgICAgIFNU UklOR19UT0tFTiAoU1RSX0dFTl9UT09fTUFOWSksDQo+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3 SGlpSGFuZGxlLA0KPiArICAgICAgICBMImFjcGl2aWV3Ig0KPiArICAgICAgICApOw0KPiArICAg ICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICB9IGVsc2Ug aWYgKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1oIikgJiYNCj4gKyAgICAg ICAgICAgICAgIFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoUGFja2FnZSwgTCItaCIpID09IE5V TEwpIHsNCj4gKyAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAgICAgICAgICAtMSwNCj4g KyAgICAgICAgICAtMSwNCj4gKyAgICAgICAgICBOVUxMLA0KPiArICAgICAgICAgIFNUUklOR19U T0tFTiAoU1RSX0dFTl9OT19WQUxVRSksDQo+ICsgICAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlI YW5kbGUsDQo+ICsgICAgICAgICAgTCJhY3BpdmlldyIsDQo+ICsgICAgICAgICAgTCItaCINCj4g KyAgICAgICAgICApOw0KPiArICAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFS QU1FVEVSOw0KPiArICAgIH0gZWxzZSBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2th Z2UsIEwiLWQiKSAmJg0KPiArICAgICAgICAgICAgICAgIVNoZWxsQ29tbWFuZExpbmVHZXRGbGFn IChQYWNrYWdlLCBMIi1zIikpIHsNCj4gKyAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gKyAg ICAgICAgICAtMSwNCj4gKyAgICAgICAgICAtMSwNCj4gKyAgICAgICAgICBOVUxMLA0KPiArICAg ICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9NSVNTSU5HX09QVElPTiksDQo+ICsgICAgICAg ICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ICsgICAgICAgICAgTCJhY3BpdmlldyIsDQo+ ICsgICAgICAgICAgTCItcyIsDQo+ICsgICAgICAgICAgTCItZCINCj4gKyAgICAgICAgICApOw0K PiArICAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAg IH0gZWxzZSB7DQo+ICsgICAgICAvLyBDaGVjayBpZiB0aGUgY29sb3VyIG9wdGlvbiBpcyBzZXQN Cj4gKyAgICAgIFRlbXAgPSBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKFBhY2thZ2UsIEwiLWgi KTsNCj4gKyAgICAgIGlmIChUZW1wICE9IE5VTEwpIHsNCj4gKyAgICAgICAgVW5pY29kZVN0clRv QXNjaWlTdHJTIChUZW1wLCBDb2xvdXJPcHRpb24sIHNpemVvZiAoQ29sb3VyT3B0aW9uKSk7DQo+ ICsgICAgICAgIGlmICgoQXNjaWlTdHJpQ21wIChDb2xvdXJPcHRpb24sICJPTiIpID09IDApIHx8 DQo+ICsgICAgICAgICAgICAoQXNjaWlTdHJpQ21wIChDb2xvdXJPcHRpb24sICJUUlVFIikgPT0g MCkpIHsNCj4gKyAgICAgICAgICBTZXRDb2xvdXJIaWdobGlnaHRpbmcgKFRSVUUpOw0KPiArICAg ICAgICB9IGVsc2UgaWYgKChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlvbiwgIk9GRiIpID09IDAp IHx8DQo+ICsgICAgICAgICAgICAgICAgICAgKEFzY2lpU3RyaUNtcCAoQ29sb3VyT3B0aW9uLCAi RkFMU0UiKSA9PSAwKSkgew0KPiArICAgICAgICAgIFNldENvbG91ckhpZ2hsaWdodGluZyAoRkFM U0UpOw0KPiArICAgICAgICB9DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIGlmIChTaGVsbENv bW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItbCIpKSB7DQo+ICsgICAgICAgIG1SZXBvcnRU eXBlID0gRVJFUE9SVF9UQUJMRV9MSVNUOw0KPiArICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAg bVNlbGVjdGVkQWNwaVRhYmxlTmFtZSA9IFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoUGFja2Fn ZSwgTCItcyIpOw0KPiArICAgICAgICBpZiAobVNlbGVjdGVkQWNwaVRhYmxlTmFtZSAhPSBOVUxM KSB7DQo+ICsgICAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlID0gKFVJTlQzMilDb252ZXJ0U3Ry VG9BY3BpU2lnbmF0dXJlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICApOw0KPiArICAgICAgICAgIG1SZXBvcnRUeXBlID0gRVJFUE9SVF9T RUxFQ1RFRDsNCj4gKw0KPiArICAgICAgICAgIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAo UGFja2FnZSwgTCItZCIpKSAgew0KPiArICAgICAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5 IGZpbGUgdG8gY2hlY2sgaWYgdGhlIG1lZGlhIGlzIHdyaXRhYmxlLg0KPiArICAgICAgICAgICAg Q0hBUjE2IEZpbGVOYW1lQnVmZmVyW01BWF9GSUxFX05BTUVfTEVOXTsNCj4gKyAgICAgICAgICAg IG1SZXBvcnRUeXBlID0gRVJFUE9SVF9EVU1QX0JJTl9GSUxFOw0KPiArDQo+ICsgICAgICAgICAg ICBVbmljb2RlU1ByaW50ICgNCj4gKyAgICAgICAgICAgICAgRmlsZU5hbWVCdWZmZXIsDQo+ICsg ICAgICAgICAgICAgIHNpemVvZiAoRmlsZU5hbWVCdWZmZXIpLA0KPiArICAgICAgICAgICAgICBM Ii5cXCVzJTA0ZC50bXAiLA0KPiArICAgICAgICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVOYW1l LA0KPiArICAgICAgICAgICAgICBtQmluVGFibGVDb3VudA0KPiArICAgICAgICAgICAgICApOw0K PiArDQo+ICsgICAgICAgICAgICBTdGF0dXMgPSBTaGVsbE9wZW5GaWxlQnlOYW1lICgNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgRmlsZU5hbWVCdWZmZXIsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICZUbXBEdW1wRmlsZUhhbmRsZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgRUZJ X0ZJTEVfTU9ERV9SRUFEIHwgRUZJX0ZJTEVfTU9ERV9XUklURSB8DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIEVGSV9GSUxFX01PREVfQ1JFQVRFLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAwDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgICAgICAgICAgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgICAgICAgICAgU2hlbGxTdGF0dXMgPSBT SEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAgICAgICAgICAgICAgVG1wRHVtcEZpbGVIYW5k bGUgPSBOVUxMOw0KPiArICAgICAgICAgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiArICAgICAg ICAgICAgICAgIC0xLA0KPiArICAgICAgICAgICAgICAgIC0xLA0KPiArICAgICAgICAgICAgICAg IE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1JFQURPTkxZ X01FRElBKSwNCj4gKyAgICAgICAgICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4g KyAgICAgICAgICAgICAgICBMImFjcGl2aWV3Ig0KPiArICAgICAgICAgICAgICAgICk7DQo+ICsg ICAgICAgICAgICAgIGdvdG8gRG9uZTsNCj4gKyAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAg IC8vIERlbGV0ZSBUZW1wb3JhcnkgZmlsZS4NCj4gKyAgICAgICAgICAgIFNoZWxsRGVsZXRlRmls ZSAoJlRtcER1bXBGaWxlSGFuZGxlKTsNCj4gKyAgICAgICAgICB9IC8vIC1kDQo+ICsgICAgICAg IH0gLy8gLXMNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgLy8gUGFyc2UgQUNQSSBUYWJsZSBp bmZvcm1hdGlvbg0KPiArICAgICAgU3RhdHVzID0gQWNwaVZpZXcgKFN5c3RlbVRhYmxlKTsNCj4g KyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgICAgU2hlbGxTdGF0dXMg PSBTSEVMTF9OT1RfRk9VTkQ7DQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4g K0RvbmU6DQo+ICsgIGlmIChQYWNrYWdlICE9IE5VTEwpIHsNCj4gKyAgICBTaGVsbENvbW1hbmRM aW5lRnJlZVZhckxpc3QgKFBhY2thZ2UpOw0KPiArICB9DQo+ICsgIHJldHVybiBTaGVsbFN0YXR1 czsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL0FjcGlWaWV3LmggYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9BY3BpVmlldy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNTYxZWE4MTY4Njgy MWUzN2MwNWQ5MGYwNTM3MzFmZGU2M2ZiYjUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5oDQo+IEBA IC0wLDAgKzEsMTAzIEBADQo+ICsvKioNCj4gKyAgSGVhZGVyIGZpbGUgZm9yIEFjcGlWaWV3DQo+ ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkg YmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNl bnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBC U0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgQUNQSVZJRVdfSF8NCj4gKyNkZWZpbmUgQUNQSVZJ RVdfSF8NCj4gKw0KPiArLyoqIEEgbWFjcm8gdG8gZGVmaW5lIHRoZSBtYXggZmlsZSBuYW1lIGxl bmd0aA0KPiArKi8NCj4gKyNkZWZpbmUgTUFYX0ZJTEVfTkFNRV9MRU4gICAgMTI4DQo+ICsNCj4g Ky8qKiBPZmZzZXQgdG8gdGhlIFJTRFAgcmV2aXNpb24gZnJvbSB0aGUgc3RhcnQgb2YgdGhlIFJT RFANCj4gKyovDQo+ICsjZGVmaW5lIFJTRFBfUkVWSVNJT05fT0ZGU0VUIDE1DQo+ICsNCj4gKy8q KiBPZmZzZXQgdG8gdGhlIFJTRFAgbGVuZ3RoIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBSU0RQDQo+ ICsqLw0KPiArI2RlZmluZSBSU0RQX0xFTkdUSF9PRkZTRVQgICAyMA0KPiArDQo+ICsvKiogVGhl IEVSRVBPUlRfT1BUSU9OIGVudW0gZGVzY3JpYmVzIEFDUEkgdGFibGUgUmVwb3J0aW5nIG9wdGlv bnMuDQo+ICsqLw0KPiArdHlwZWRlZiBlbnVtIFJlcG9ydE9wdGlvbiB7DQo+ICsgIEVSRVBPUlRf QUxMLCAgICAgICAgICAgIC8vLzwgUmVwb3J0IEFsbCB0YWJsZXMuDQo+ICsgIEVSRVBPUlRfU0VM RUNURUQsICAgICAgIC8vLzwgUmVwb3J0IFNlbGVjdGVkIHRhYmxlLg0KPiArICBFUkVQT1JUX1RB QkxFX0xJU1QsICAgICAvLy88IFJlcG9ydCBMaXN0IG9mIHRhYmxlcy4NCj4gKyAgRVJFUE9SVF9E VU1QX0JJTl9GSUxFLCAgLy8vPCBEdW1wIHNlbGVjdGVkIHRhYmxlIHRvIGEgZmlsZS4NCj4gKyAg RVJFUE9SVF9NQVgNCj4gK30gRVJFUE9SVF9PUFRJT047DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHJlc2V0cyB0aGUgQUNQSSB0YWJsZSBlcnJvciBjb3VudGVyIHRvIFplcm8uDQo+ICsqLw0K PiArVk9JRA0KPiArUmVzZXRFcnJvckNvdW50ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50Lg0K PiArDQo+ICsgIEByZXR2YWwgUmV0dXJucyB0aGUgY291bnQgb2YgZXJyb3JzIGRldGVjdGVkIGlu IHRoZSBBQ1BJIHRhYmxlcy4NCj4gKyovDQo+ICtVSU5UMzINCj4gK0dldEVycm9yQ291bnQgKA0K PiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUg QUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50ZXIgdG8gWmVyby4NCj4gKyovDQo+ICtWT0lEDQo+ICtS ZXNldFdhcm5pbmdDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50Lg0KPiArDQo+ICsg IEByZXR2YWwgUmV0dXJucyB0aGUgY291bnQgb2Ygd2FybmluZyBkZXRlY3RlZCBpbiB0aGUgQUNQ SSB0YWJsZXMuDQo+ICsqLw0KPiArVUlOVDMyDQo+ICtHZXRXYXJuaW5nQ291bnQgKA0KPiArICBW T0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbG91 ciBoaWdobGlnaHRpbmcgc3RhdHVzLg0KPiArDQo+ICsgIEByZXR2YWwgVFJVRSBpZiBjb2xvdXIg aGlnaGxpZ2h0aW5nIGlzIGVuYWJsZWQuDQo+ICsqLw0KPiArQk9PTEVBTg0KPiArR2V0Q29sb3Vy SGlnaGxpZ2h0aW5nICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiBzZXRzIHRoZSBjb2xvdXIgaGlnaGxpZ2h0aW5nIHN0YXR1cy4NCj4gKw0KPiArKi8NCj4g K1ZPSUQNCj4gK1NldENvbG91ckhpZ2hsaWdodGluZyAoDQo+ICsgIEJPT0xFQU4gSGlnaGxpZ2h0 DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgdGFibGUg cmVwb3J0aW5nIG9wdGlvbnMgZm9yIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEBwYXJhbSBb aW5dIFNpZ25hdHVyZSBUaGUgQUNQSSB0YWJsZSBTaWduYXR1cmUuDQo+ICsgIEBwYXJhbSBbaW5d IFRhYmxlUHRyICBQb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGRhdGEuDQo+ICsgIEBwYXJhbSBb aW5dIExlbmd0aCAgICBUaGUgbGVuZ3RoIGZvIHRoZSBBQ1BJIHRhYmxlLg0KPiArDQo+ICsgIEBy ZXR2YWwgUmV0dXJucyBUUlVFIGlmIHRoZSBBQ1BJIHRhYmxlIHNob3VsZCBiZSB0cmFjZWQuDQo+ ICsqLw0KPiArQk9PTEVBTg0KPiArUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucyAoDQo+ICsgIElO IENPTlNUIFVJTlQzMiAgU2lnbmF0dXJlLA0KPiArICBJTiBDT05TVCBVSU5UOCogIFRhYmxlUHRy LA0KPiArICBJTiBDT05TVCBVSU5UMzIgIExlbmd0aA0KPiArICApOw0KPiArDQo+ICsjZW5kaWYg Ly8gQUNQSVZJRVdfSF8NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyLmMgYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBhcnNl ci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2NmU4MjBiYTc4OGEwZmI3ODEwNjFkYmFkMWY1N2Y5MGFj ZWY3OGMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBhcnNlci5jDQo+IEBAIC0wLDAg KzEsMTE3IEBADQo+ICsvKioNCj4gKyAgQkdSVCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5 cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4N Cj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBh cmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0 cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0K PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsN Cj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAg QHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJy YXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5 U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2lu Y2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJh cnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxl cw0KPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEJEUlQg VGFibGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEJncnRQYXJzZXJbXSA9 IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIlZlcnNp b24iLCAyLCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlN0 YXR1cyIsIDEsIDM4LCBMIjB4JXgiLCBOVUxMLCAgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtM IkltYWdlIFR5cGUiLCAxLCAzOSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIkltYWdlIEFkZHJlc3MiLCA4LCA0MCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJJbWFnZSBPZmZzZXQgWCIsIDQsIDQ4LCBMIiVkIiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkltYWdlIE9mZnNldCBZIiwgNCwgNTIsIEwiJWQiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSBBQ1BJIEJHUlQgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0 aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQkdSVCB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBB Q1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGFyc2VzIHRo ZSBBQ1BJIGhlYWRlciBmb3IgdGhlIERTRFQgdGFibGUgYW5kDQo+ICsgIGludm9rZXMgdGhlIHBh cnNlciBmb3IgdGhlIEFDUEkgRFNEVCB0YWJsZS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFs c28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJ IGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0 aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJs ZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ ICtFRklBUEkNCj4gK1BhcnNlQWNwaUJncnQgKA0KPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiAr ICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ICsg IElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBpZiAoIVRy YWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgUGFyc2VBY3BpICgNCj4g KyAgICBUcmFjZSwNCj4gKyAgICAwLA0KPiArICAgICJCR1JUIiwNCj4gKyAgICBQdHIsDQo+ICsg ICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKEJncnRQYXJzZXIpDQo+ ICsgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4g KyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUu DQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBy ZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2Vy IGZvciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3 YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJD RVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtCZ3J0 UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENP TlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2Vy ICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX0JPT1RfR1JBUEhJQ1NfUkVTT1VSQ0VfVEFC TEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJzZUFjcGlCZ3J0DQo+ICsgICAgICAgICAg ICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAg QHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAg QHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJl Z2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIg d2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiAr QmdydFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAg ICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAq IENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQ YXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJfQk9PVF9HUkFQSElDU19SRVNPVVJD RV9UQUJMRV9TSUdOQVRVUkUNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBh L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQmdy dC9CZ3J0UGFyc2VyTGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyTGliLmluZg0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li4wYTRkNDBmMDBkYTFhMjBlNDhjODRlNGEzZDI1ZGQ3YTRkYjc0NzYxDQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9CZ3J0L0JncnRQYXJzZXJMaWIuaW5mDQo+IEBAIC0wLDAgKzEsMzMgQEANCj4gKyMj IEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRl ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhl IGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFp bGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0K PiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0 IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uu b3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0KPiArIyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsg IElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiArICBCQVNFX05BTUUgICAgICA9IEJncnRQ YXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAgICAgPSBDNENDRDlCNi1GNjJGLTRCMDYtQTI1RC1G ODE1NTA3QjQ5RTANCj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUg ICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ ICsgIENPTlNUUlVDVE9SICAgID0gQmdydFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RS VUNUT1IgICAgID0gQmdydFBhcnNlckxpYkRlc3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ ICsgIEJncnRQYXJzZXIuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cu ZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9k dWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIFNoZWxsQWNwaVZpZXdD b21tYW5kTGliDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZXIuYw0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwLi45NGRlOWEzNjVjYzFmOTYxZDM1MWVmMjI5MTdkMzAwOWEzZTlkYzUz DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDI4 NyBAQA0KPiArLyoqDQo+ICsgIERCRzIgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0 IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsg IFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxp Y2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg b2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0 aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAg aHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsg IFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAi QVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIg UmVmZXJlbmNlKHMpOg0KPiArICAgIC0gTWljcm9zb2Z0IERlYnVnIFBvcnQgVGFibGUgMiAoREJH MikgU3BlY2lmaWNhdGlvbiAtIERlY2VtYmVyIDEwLCAyMDE1Lg0KPiArKiovDQo+ICsNCj4gKyNp bmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0RlYnVnUG9ydDJUYWJsZS5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBh cnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+ DQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcyBwb2ludGluZyB0byB0aGUgdGFibGUgZmllbGRz DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBPZmZzZXREYmdEZXZpY2VJbmZvOw0KPiArU1RBVElD IENPTlNUIFVJTlQzMiogTnVtYmVyRGJnRGV2aWNlSW5mbzsNCj4gK1NUQVRJQyBDT05TVCBVSU5U MTYqIERiZ0RldkluZm9MZW47DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDgqICBHYXNDb3VudDsNCj4g K1NUQVRJQyBDT05TVCBVSU5UMTYqIE5hbWVTcGFjZVN0cmluZ0xlbmd0aDsNCj4gK1NUQVRJQyBD T05TVCBVSU5UMTYqIE5hbWVTcGFjZVN0cmluZ09mZnNldDsNCj4gK1NUQVRJQyBDT05TVCBVSU5U MTYqIE9FTURhdGFMZW5ndGg7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBPRU1EYXRhT2Zmc2V0 Ow0KPiArU1RBVElDIENPTlNUIFVJTlQxNiogQmFzZUFkZHJSZWdPZmZzZXQ7DQo+ICtTVEFUSUMg Q09OU1QgVUlOVDE2KiBBZGRyU2l6ZU9mZnNldDsNCj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9O X0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBWYWxp ZGF0ZXMgdGhlIE5hbWVTcGFjZSBzdHJpbmcgbGVuZ3RoLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5d IFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFt IFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5n LiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRo ZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQ SQ0KPiArVmFsaWRhdGVOYW1lU3BhY2VTdHJMZW4gKA0KPiArICBJTiAgVUlOVDgqIFB0ciwNCj4g KyAgSU4gIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHBhcnNlcyB0aGUgZGVidWcgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdHVyZS4NCj4gKw0KPiAr ICBAcGFyYW0gW2luXSAgUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVy Lg0KPiArICBAcGFyYW0gW291dF0gTGVuZ3RoICBQb2ludGVyIGluIHdoaWNoIHRoZSBsZW5ndGgg b2YgdGhlIGRlYnVnDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBpbmZvcm1hdGlv biBpcyByZXR1cm5lZC4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiAr RHVtcERiZ0RldmljZUluZm8gKA0KPiArICBJTiAgVUlOVDgqICBQdHIsDQo+ICsgIE9VVCBVSU5U MzIqIExlbmd0aA0KPiArICApOw0KPiArDQo+ICsvLy8gQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVz Y3JpYmluZyB0aGUgQUNQSSBEQkcyIHRhYmxlLg0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VS IERiZzJQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyks DQo+ICsgIHtMIk9mZnNldERiZ0RldmljZUluZm8iLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwNCj4g KyAgIChWT0lEKiopJk9mZnNldERiZ0RldmljZUluZm8sIE5VTEwsIE5VTEx9LA0KPiArICB7TCJO dW1iZXJEYmdEZXZpY2VJbmZvIiwgNCwgNDAsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikm TnVtYmVyRGJnRGV2aWNlSW5mbywgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8vLyBBbiBB Q1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBkZWJ1ZyBkZXZpY2UgaW5mb3JtYXRpb24u DQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgRGJnRGV2SW5mb1BhcnNlcltdID0gew0KPiAr ICB7TCJSZXZpc2lvbiIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmRGJnRGV2SW5mb0xl biwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiR2VuZXJpYyBBZGRyZXNzIFJlZ2lzdGVycyBD b3VudCIsIDEsIDMsIEwiMHgleCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZHYXNDb3VudCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIk5hbWVTcGFjZSBTdHJpbmcgTGVuZ3RoIiwgMiwgNCwgTCIlZCIs IE5VTEwsDQo+ICsgICAoVk9JRCoqKSZOYW1lU3BhY2VTdHJpbmdMZW5ndGgsIFZhbGlkYXRlTmFt ZVNwYWNlU3RyTGVuLCBOVUxMfSwNCj4gKyAge0wiTmFtZVNwYWNlIFN0cmluZyBPZmZzZXQiLCAy LCA2LCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmTmFtZVNwYWNlU3RyaW5nT2Zmc2V0 LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiT0VNIERhdGEgTGVuZ3RoIiwgMiwgOCwgTCIlZCIsIE5V TEwsIChWT0lEKiopJk9FTURhdGFMZW5ndGgsDQo+ICsgICBOVUxMLCBOVUxMfSwNCj4gKyAge0wi T0VNIERhdGEgT2Zmc2V0IiwgMiwgMTAsIEwiMHgleCIsIE5VTEwsIChWT0lEKiopJk9FTURhdGFP ZmZzZXQsDQo+ICsgICBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJQb3J0IFR5cGUiLCAyLCAx MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBvcnQgU3ViVHlw ZSIsIDIsIDE0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVz ZXJ2ZWQiLCAyLCAxNiwgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsg IHtMIkJhc2UgQWRkcmVzcyBSZWdpc3RlciBPZmZzZXQiLCAyLCAxOCwgTCIweCV4IiwgTlVMTCwN Cj4gKyAgIChWT0lEKiopJkJhc2VBZGRyUmVnT2Zmc2V0LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi QWRkcmVzcyBTaXplIE9mZnNldCIsIDIsIDIwLCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQq KikmQWRkclNpemVPZmZzZXQsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBm dW5jdGlvbiB2YWxpZGF0ZXMgdGhlIE5hbWVTcGFjZSBzdHJpbmcgbGVuZ3RoLg0KPiArDQo+ICsg IEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4N Cj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5m b3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBw b2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZP SUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVOYW1lU3BhY2VTdHJMZW4gKA0KPiArICBJTiBVSU5U OCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQx NiBOYW1lU3BhY2VTdHJMZW4gPSAqKFVJTlQxNiopUHRyOw0KPiArICBpZiAoTmFtZVNwYWNlU3Ry TGVuIDwgMikgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQg KA0KPiArICAgICAgTCJcbkVSUk9SOiBOYW1lc3BhY2VTdHJpbmcgTGVuZ3RoID0gJWQuIElmIG5v IE5hbWVzcGFjZSBkZXZpY2UgZXhpc3RzLFxuIg0KPiArICAgICAgICIgICAgdGhlbiBOYW1lc3Bh Y2VTdHJpbmdbXSBtdXN0IGNvbnRhaW4gYSBwZXJpb2QgJy4nIiwNCj4gKyAgICAgIE5hbWVTcGFj ZVN0ckxlbg0KPiArICAgICAgKTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiBwYXJzZXMgdGhlIGRlYnVnIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1 ZmZlci4NCj4gKyAgQHBhcmFtIFtvdXRdIFB0ciAgICAgUG9pbnRlciBpbiB3aGljaCB0aGUgbGVu Z3RoIG9mIHRoZSBkZWJ1Zw0KPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgaW5mb3Jt YXRpb24gaXMgcmV0dXJuZWQuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklBUEkN Cj4gK0R1bXBEYmdEZXZpY2VJbmZvICgNCj4gKyAgSU4gIFVJTlQ4KiAgUHRyLA0KPiArICBPVVQg VUlOVDMyKiBMZW5ndGgNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMTYgIEluZGV4Ow0KPiArICBV SU5UOCogIERhdGFQdHI7DQo+ICsgIFVJTlQzMiogQWRkclNpemU7DQo+ICsNCj4gKyAgLy8gUGFy c2UgdGhlIGRlYnVnIGRldmljZSBpbmZvIHRvIGdldCB0aGUgTGVuZ3RoDQo+ICsgIFBhcnNlQWNw aSAoDQo+ICsgICAgRkFMU0UsDQo+ICsgICAgMCwNCj4gKyAgICAiRGVidWcgRGV2aWNlIEluZm8i LA0KPiArICAgIFB0ciwNCj4gKyAgICAzLCAgLy8gTGVuZ3RoIGlzIDIgYnl0ZXMgc3RhcnRpbmcg YXQgb2Zmc2V0IDENCj4gKyAgICBQQVJTRVJfUEFSQU1TIChEYmdEZXZJbmZvUGFyc2VyKQ0KPiAr ICAgICk7DQo+ICsNCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDIsDQo+ ICsgICAgIkRlYnVnIERldmljZSBJbmZvIiwNCj4gKyAgICBQdHIsDQo+ICsgICAgKkRiZ0Rldklu Zm9MZW4sDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoRGJnRGV2SW5mb1BhcnNlcikNCj4gKyAgICAp Ow0KPiArDQo+ICsgIC8vIEdBUyBhbmQgQWRkcmVzcyBTaXplDQo+ICsgIEluZGV4ID0gMDsNCj4g KyAgRGF0YVB0ciA9IFB0ciArICgqQmFzZUFkZHJSZWdPZmZzZXQpOw0KPiArICBBZGRyU2l6ZSA9 IChVSU5UMzIqKShQdHIgKyAoKkFkZHJTaXplT2Zmc2V0KSk7DQo+ICsgIHdoaWxlIChJbmRleCA8 ICgqR2FzQ291bnQpKSB7DQo+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiQmFzZUFkZHJlc3NS ZWdpc3RlciIpOw0KPiArICAgIER1bXBHYXNTdHJ1Y3QgKERhdGFQdHIsIDQpOw0KPiArICAgIFBy aW50RmllbGROYW1lICg0LCBMIkFkZHJlc3MgU2l6ZSIpOw0KPiArICAgIFByaW50IChMIjB4JXhc biIsIEFkZHJTaXplW0luZGV4XSk7DQo+ICsgICAgRGF0YVB0ciArPSBHQVNfTEVOR1RIOw0KPiAr ICAgIEluZGV4Kys7DQo+ICsgIH0NCj4gKw0KPiArICAvLyBOYW1lU3BhY2UgU3RyaW5nDQo+ICsg IEluZGV4ID0gMDsNCj4gKyAgRGF0YVB0ciA9IFB0ciArICgqTmFtZVNwYWNlU3RyaW5nT2Zmc2V0 KTsNCj4gKyAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiTmFtZVNwYWNlIFN0cmluZyIpOw0KPiArICB3 aGlsZSAoSW5kZXggPCAoKk5hbWVTcGFjZVN0cmluZ0xlbmd0aCkpIHsNCj4gKyAgICBQcmludCAo TCIlYyIsIERhdGFQdHJbSW5kZXgrK10pOw0KPiArICB9DQo+ICsgIFByaW50IChMIlxuIik7DQo+ ICsNCj4gKyAgLy8gT0VNIERhdGENCj4gKyAgSW5kZXggPSAwOw0KPiArICBEYXRhUHRyID0gUHRy ICsgKCpPRU1EYXRhT2Zmc2V0KTsNCj4gKyAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiT0VNIERhdGEi KTsNCj4gKyAgd2hpbGUgKEluZGV4IDwgKCpPRU1EYXRhTGVuZ3RoKSkgew0KPiArICAgIFByaW50 IChMIiV4ICIsIERhdGFQdHJbSW5kZXgrK10pOw0KPiArICAgIGlmICgoSW5kZXggJiA3KSA9PSAw KSB7DQo+ICsgICAgICBQcmludCAoTCJcbiUtKnMgICAiLCBPVVRQVVRfRklFTERfQ09MVU1OX1dJ RFRILCBMIiIpOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgICpMZW5ndGggPSAqRGJnRGV2 SW5mb0xlbjsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJ IERCRzIgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBh cnNlcyB0aGUgREJHMiB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxk cy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0 aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAg ICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFi bGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUg QUNQSSB0YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaURiZzIg KA0KPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4g VUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNp b24NCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBVSU5UMzIgRGJnRGV2 aWNlSW5mb0xlbmd0aDsNCj4gKyAgVUlOVDgqIERldkluZm9QdHI7DQo+ICsNCj4gKyAgaWYgKCFU cmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIE9mZnNldCA9IFBhcnNl QWNwaSAoDQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAwLA0KPiArICAg ICAgICAgICAgICJEQkcyIiwNCj4gKyAgICAgICAgICAgICBQdHIsDQo+ICsgICAgICAgICAgICAg QWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKERiZzJQYXJz ZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKyAgRGV2SW5mb1B0ciA9IFB0ciArIE9mZnNldDsN Cj4gKw0KPiArICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQo+ICsgICAgRHVt cERiZ0RldmljZUluZm8gKA0KPiArICAgICAgRGV2SW5mb1B0ciwNCj4gKyAgICAgICZEYmdEZXZp Y2VJbmZvTGVuZ3RoDQo+ICsgICAgICApOw0KPiArICAgIE9mZnNldCArPSBEYmdEZXZpY2VJbmZv TGVuZ3RoOw0KPiArICAgIERldkluZm9QdHIgKz0gRGJnRGV2aWNlSW5mb0xlbmd0aDsNCj4gKyAg fQ0KPiArfQ0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFy YW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFy YW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0K PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVy ZWQuDQo+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRo ZSBBQ1BJIFRhYmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJl YWR5IHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFy YW1ldGVyIGlzIGludmFsaWQNCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8g c3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBhcnNlci4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0RiZzJQYXJzZXJM aWJDb25zdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg SW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lz dGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiAr ICAgICAgICAgICBFRklfQUNQSV82XzJfREVCVUdfUE9SVF8yX1RBQkxFX1NJR05BVFVSRSwNCj4g KyAgICAgICAgICAgUGFyc2VBY3BpRGJnMg0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFn ZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0 ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBA cmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJl ZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0RiZzJQYXJzZXJMaWJEZXN0 cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhh bmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJs ZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAg ICAgICAgRUZJX0FDUElfNl8yX0RFQlVHX1BPUlRfMl9UQUJMRV9TSUdOQVRVUkUNCj4gKyAgICAg ICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRGJnMi9EYmcyUGFyc2VyTGliLmluZiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRGJnMi9EYmcy UGFyc2VyTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzNjMGRmOTJjZmY4NzBjODEzNGMwMTQ4 Zjg4ZDI0Y2RlYzZmMGJhDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZXJMaWIu aW5mDQo+IEBAIC0wLDAgKzEsMzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmln aHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g KyMNCj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4g KyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBj b25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhp cyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3Vu ZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiArIw0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBM SUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0K PiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAx OQ0KPiArICBCQVNFX05BTUUgICAgICA9IERiZzJQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAg ICAgPSBGQjFGMTFBQS1GMkYwLTRENTgtOEQwNi0zNjVEQ0I2M0E2MTQNCj4gKyAgVkVSU0lPTl9T VFJJTkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJB UllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gRGJnMlBh cnNlckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gRGJnMlBhcnNlckxpYkRl c3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIERiZzJQYXJzZXIuYw0KPiArDQo+ICtb UGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtn LmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFy eUNsYXNzZXNdDQo+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+IGRpZmYgLS1naXQgYS9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RzZHQv RHNkdFBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzZjYzdlODc3 N2U3NWYzOTgzY2EzMTBjYjNjMGQ0M2ZlZDAzYmY1DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0 L0RzZHRQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDkyIEBADQo+ICsvKioNCj4gKyAgRFNEVCB0YWJs ZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRl ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21w YW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVu ZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hp Y2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQg VU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBBQ1BJ IDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ICsqKi8NCj4g Kw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExp YnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNl ci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBEU0RUIHRhYmxlLg0KPiAr ICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIERTRFQgdGFi bGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsgIEZvciB0aGUg RFNEVCB0YWJsZSBvbmx5IHRoZSBBQ1BJIGhlYWRlciBmaWVsZHMgYXJlIHBhcnNlZCBhbmQNCj4g KyAgdHJhY2VkLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBU UlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAg ICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0g W2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBA cGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUu DQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlEc2R0ICgNCj4gKyAgSU4g Qk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNw aVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkN Cj4gK3sNCj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ ICsgIER1bXBBY3BpSGVhZGVyIChQdHIpOw0KPiArfQ0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhl IHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUg dG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8g dGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RB UlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJ X0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gKyAgQHJldHZhbCBF RklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ ICtFRklBUEkNCj4gK0RzZHRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVG SV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9T WVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1 cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJfRElGRkVSRU5U SUFURURfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgICAgICAg UGFyc2VBY3BpRHNkdA0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdp c3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhl IGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9p bnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9O T1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0RzZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4g KyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAg SU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FD UElfNl8yX0RJRkZFUkVOVElBVEVEX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUN Cj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2VyTGliLmlu ZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv RHNkdC9Ec2R0UGFyc2VyTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmJmMjM4ZTFjYjM4M2M2 MjMzZTcyOGQyOTdjZDQyOTI5MTllZWQzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQ YXJzZXJMaWIuaW5mDQo+IEBAIC0wLDAgKzEsMzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsj ICBDb3B5cmlnaHQgKGMpIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K PiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0K PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZv dW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQu DQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEw MDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gRHNkdFBhcnNlckxpYg0KPiArICBGSUxFX0dVSUQg ICAgICA9IDMwNDc4NDJCLTlGQTYtNENBMi05NTEzLUQ3RkQ2QUQwOTU3NA0KPiArICBWRVJTSU9O X1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gKyAgTElC UkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAgPSBEc2R0 UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBEc2R0UGFyc2VyTGli RGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgRHNkdFBhcnNlci5jDQo+ICsNCj4g K1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQ a2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJy YXJ5Q2xhc3Nlc10NCj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gZGlmZiAtLWdpdCBh L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFk dC9GYWR0UGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0ZhZHQvRmFkdFBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMTNhZjQw YmQ3ZjljNmY1NTAyOTQwMjUyMzYwZDA5NWRiZDU5ZDQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysg Yi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0Zh ZHQvRmFkdFBhcnNlci5jDQo+IEBAIC0wLDAgKzEsMzA5IEBADQo+ICsvKioNCj4gKyAgRkFEVCB0 YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGlt aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj b21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAg d2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRo ZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGlj ZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVU RUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBS RVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBB Q1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ICsqKi8N Cj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBh cnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+ DQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogRHNk dEFkZHJlc3M7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDY0KiBYX0RzZHRBZGRyZXNzOw0KPiArU1RB VElDIENPTlNUIFVJTlQ4KiAgRmFkdE1pbm9yUmV2aXNpb247DQo+ICtTVEFUSUMgQUNQSV9ERVND UklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoqIEEgbWFjcm8gZGVm aW5pbmcgdGhlIEhhcmR3YXJlIHJlZHVjZWQgQUNQSSBmbGFnDQo+ICsqLw0KPiArI2RlZmluZSBI V19SRURVQ0VEX0FDUEkgICBCSVQyMA0KPiArDQo+ICsvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucw0K PiArQ09OU1QgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyogQ09OU1QNCj4gK0VGSUFQSQ0K PiArR2V0QWNwaVhzZHRIZWFkZXJJbmZvICgNCj4gKyAgVk9JRA0KPiArKTsNCj4gKw0KPiArU1RB VElDDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1ZhbGlkYXRlRmlybXdhcmVDdHJsICgNCj4gKyAg SU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyk7DQo+ICsNCj4gK1NU QVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZVhGaXJtd2FyZUN0cmwgKA0KPiAr ICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKTsNCj4gKw0KPiAr U1RBVElDDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1ZhbGlkYXRlRmxhZ3MgKA0KPiArICBJTiBV SU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKTsNCj4gKw0KPiArLyoqIEFu IEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgRkFEVCBUYWJsZS4NCj4gKyov DQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgRmFkdFBhcnNlcltdID0gew0KPiArICBQQVJT RV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gKyAge0wiRklSTVdBUkVfQ1RSTCIsIDQs IDM2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZUZpcm13YXJlQ3RybCwgTlVMTH0sDQo+ ICsgIHtMIkRTRFQiLCA0LCA0MCwgTCIweCV4IiwgTlVMTCwgKFZPSUQqKikmRHNkdEFkZHJlc3Ms IE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDEsIDQ0LCBMIiV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlByZWZlcnJlZF9QTV9Qcm9maWxlIiwgMSwgNDUsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTQ0lfSU5UIiwgMiwgNDYs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTTUlfQ01EIiwgNCwg NDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBQ1BJX0VOQUJM RSIsIDEsIDUyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQUNQ SV9ESVNBQkxFIiwgMSwgNTMsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJTNEJJT1NfUkVRIiwgMSwgNTQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJQU1RBVEVfQ05UIiwgMSwgNTUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJQTTFhX0VWVF9CTEsiLCA0LCA1NiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBNMWJfRVZUX0JMSyIsIDQsIDYwLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE0xYV9DTlRfQkxLIiwgNCwgNjQsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQTTFiX0NOVF9CTEsiLCA0 LCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBNMl9DTlRf QkxLIiwgNCwgNzIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQ TV9UTVJfQkxLIiwgNCwgNzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJHUEUwX0JMSyIsIDQsIDgwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiR1BFMV9CTEsiLCA0LCA4NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIlBNMV9FVlRfTEVOIiwgMSwgODgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJQTTFfQ05UX0xFTiIsIDEsIDg5LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE0yX0NOVF9MRU4iLCAxLCA5MCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBNX1RNUl9MRU4iLCAxLCA5MSwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdQRTBfQkxLX0xFTiIsIDEs IDkyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR1BFMV9CTEtf TEVOIiwgMSwgOTMsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJH UEUxX0JBU0UiLCAxLCA5NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIkNTVF9DTlQiLCAxLCA5NSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIlBfTFZMMl9MQVQiLCAyLCA5NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIlBfTFZMM19MQVQiLCAyLCA5OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIkZMVVNIX1NJWkUiLCAyLCAxMDAsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGTFVTSF9TVFJJREUiLCAyLCAxMDIsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJEVVRZX09GRlNFVCIsIDEsIDEwNCwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkRVVFlfV0lEVEgiLCAx LCAxMDUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJEQVlfQUxS TSIsIDEsIDEwNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk1P Tl9BTFJNIiwgMSwgMTA3LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiQ0VOVFVSWSIsIDEsIDEwOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIklBUENfQk9PVF9BUkNIIiwgMiwgMTA5LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAxLCAxMTEsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbGFncyIsIDQsIDExMiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgVmFsaWRhdGVGbGFncywgTlVMTH0sDQo+ICsgIHtMIlJFU0VUX1JFRyIsIDEyLCAxMTYsIE5V TEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSRVNFVF9WQUxVRSIsIDEs IDEyOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFSTV9CT09U X0FSQ0giLCAyLCAxMjksIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJGQURUIE1pbm9yIFZlcnNpb24iLCAxLCAxMzEsIEwiMHgleCIsIE5VTEwsIChWT0lEKiopJkZh ZHRNaW5vclJldmlzaW9uLA0KPiArICAgIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYX0ZJUk1XQVJF X0NUUkwiLCA4LCAxMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLA0KPiArICAgIFZhbGlkYXRlWEZp cm13YXJlQ3RybCwgTlVMTH0sDQo+ICsgIHtMIlhfRFNEVCIsIDgsIDE0MCwgTCIweCVseCIsIE5V TEwsIChWT0lEKiopJlhfRHNkdEFkZHJlc3MsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYX1BNMWFf RVZUX0JMSyIsIDEyLCAxNDgsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJYX1BNMWJfRVZUX0JMSyIsIDEyLCAxNjAsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJYX1BNMWFfQ05UX0JMSyIsIDEyLCAxNzIsIE5VTEwsIER1bXBHYXMs IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYX1BNMWJfQ05UX0JMSyIsIDEyLCAxODQsIE5V TEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJYX1BNMl9DTlRfQkxLIiwg MTIsIDE5NiwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlhfUE1f VE1SX0JMSyIsIDEyLCAyMDgsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJYX0dQRTBfQkxLIiwgMTIsIDIyMCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIlhfR1BFMV9CTEsiLCAxMiwgMjMyLCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiU0xFRVBfQ09OVFJPTF9SRUciLCAxMiwgMjQ0LCBOVUxMLCBE dW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU0xFRVBfU1RBVFVTX1JFRyIsIDEy LCAyNTYsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJIeXBlcnZp c29yIFZlbmRvcklkZW50aXR5IiwgOCwgMjY4LCBMIiVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIEZpcm13 YXJlIENvbnRyb2wgRmllbGQuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4 dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxl IGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRh dGVGaXJtd2FyZUN0cmwgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29u dGV4dA0KPiArKQ0KPiArew0KPiArI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVk IChNREVfQ1BVX0FBUkNINjQpDQo+ICsgIGlmICgqKFVJTlQzMiopUHRyICE9IDApIHsNCj4gKyAg ICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5F UlJPUjogRmlybXdhcmUgQ29udHJvbCBtdXN0IGJlIHplcm8gZm9yIEFSTSBwbGF0Zm9ybXMuIg0K PiArICAgICk7DQo+ICsgIH0NCj4gKyNlbmRpZg0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiB2YWxpZGF0ZXMgdGhlIFhfRmlybXdhcmUgQ29udHJvbCBGaWVsZC4NCj4gKw0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRh Lg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBp bmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBh IHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiAr Vk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZVhGaXJtd2FyZUN0cmwgKA0KPiArICBJTiBVSU5U OCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKQ0KPiArew0KPiArI2lmIGRlZmlu ZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ICsgIGlmICgq KFVJTlQ2NCopUHRyICE9IDApIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiAr ICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjogWCBGaXJtd2FyZSBDb250cm9sIG11c3Qg YmUgemVybyBmb3IgQVJNIHBsYXRmb3Jtcy4iDQo+ICsgICAgKTsNCj4gKyAgfQ0KPiArI2VuZGlm DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgZmxhZ3MuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg ZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQg c3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAg Y291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtT VEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVGbGFncyAoDQo+ICsgIElOIFVJ TlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICspDQo+ICt7DQo+ICsjaWYgZGVm aW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gKyAgaWYg KCgoKihVSU5UMzIqKVB0cikgJiBIV19SRURVQ0VEX0FDUEkpID09IDApIHsNCj4gKyAgICBJbmNy ZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjog SFdfUkVEVUNFRF9BQ1BJIGZsYWcgbXVzdCBiZSBzZXQgZm9yIEFSTSBwbGF0Zm9ybXMuIg0KPiAr ICAgICk7DQo+ICsgIH0NCj4gKyNlbmRpZg0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlv biBwYXJzZXMgdGhlIEFDUEkgRkFEVCB0YWJsZS4NCj4gKyAgVGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIEZBRFQgdGFibGUgYW5kIG9wdGlvbmFsbHkgdHJhY2VzIHRoZSBBQ1BJDQo+ICsgIHRhYmxl IGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGFyc2VzIHRoZSBBQ1BJIGhl YWRlciBmb3IgdGhlIERTRFQgdGFibGUgYW5kDQo+ICsgIGludm9rZXMgdGhlIHBhcnNlciBmb3Ig dGhlIEFDUEkgRFNEVCB0YWJsZS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9y bXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFt IFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4N Cj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5n dGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9u ICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkN Cj4gK1BhcnNlQWNwaUZhZHQgKA0KPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5U OCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4 ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBVSU5UOCogIERzZHRQdHI7 DQo+ICsNCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBUcmFjZSwNCj4gKyAgICAwLA0KPiArICAg ICJGQURUIiwNCj4gKyAgICBQdHIsDQo+ICsgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgIFBB UlNFUl9QQVJBTVMgKEZhZHRQYXJzZXIpDQo+ICsgICAgKTsNCj4gKw0KPiArICBpZiAoVHJhY2Up IHsNCj4gKyAgICBQcmludCAoTCJcblN1bW1hcnk6XG4iKTsNCj4gKyAgICBQcmludEZpZWxkTmFt ZSAoMiwgTCJGQURUIFZlcnNpb24iKTsNCj4gKyAgICBQcmludCAoTCIlZC4lZFxuIiwgICpBY3Bp SGRySW5mby5SZXZpc2lvbiwgKkZhZHRNaW5vclJldmlzaW9uKTsNCj4gKw0KPiArICAgIGlmICgq R2V0QWNwaVhzZHRIZWFkZXJJbmZvICgpLT5PZW1UYWJsZUlkICE9ICpBY3BpSGRySW5mby5PZW1U YWJsZUlkKSB7DQo+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgUHJp bnQgKEwiRVJST1I6IE9FTSBUYWJsZSBJZCBkb2VzIG5vdCBtYXRjaCB3aXRoIFJTRFQvWFNEVC5c biIpOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIC8vIElmIFhfRFNEVCBpcyBub3QgemVy byB0aGVuIHVzZSBYX0RTRFQgYW5kIGlnbm9yZSBEU0RULA0KPiArICAvLyBlbHNlIHVzZSBEU0RU Lg0KPiArICBpZiAoKlhfRHNkdEFkZHJlc3MgIT0gMCkgew0KPiArICAgIERzZHRQdHIgPSAoVUlO VDgqKShVSU5UTikoKlhfRHNkdEFkZHJlc3MpOw0KPiArICB9IGVsc2UgaWYgKCpEc2R0QWRkcmVz cyAhPSAwKSB7DQo+ICsgICAgRHNkdFB0ciA9IChVSU5UOCopKFVJTlROKSgqRHNkdEFkZHJlc3Mp Ow0KPiArICB9IGVsc2Ugew0KPiArICAgIC8vIEJvdGggRFNEVCBhbmQgWF9EU0RUIGNhbm5vdCBi ZSB6ZXJvLg0KPiArI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BV X0FBUkNINjQpDQo+ICsgICAgaWYgKFRyYWNlKSB7DQo+ICsgICAgICAvLyBUaGUgRFNEVCBUYWJs ZSBpcyBtYW5kYXRvcnkgZm9yIEFSTSBzeXN0ZW1zDQo+ICsgICAgICAvLyBhcyB0aGUgQ1BVIGlu Zm9ybWF0aW9uIE1VU1QgYmUgcHJlc2VudGVkIGluDQo+ICsgICAgICAvLyB0aGUgRFNEVC4NCj4g KyAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBQcmludCAoTCJFUlJPUjog Qm90aCBYX0RTRFQgYW5kIERTRFQgYXJlIE5VTEwuXG4iKTsNCj4gKyAgICB9DQo+ICsjZW5kaWYN Cj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBQcm9jZXNzQWNwaVRhYmxlIChEc2R0 UHRyKTsNCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAg QHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAg QHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdp c3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZv ciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMg YWxyZWFkeSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBB IHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMg IE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtGYWR0UGFy c2VyTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAg ICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNU IFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgN Cj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX0ZJWEVEX0FDUElfREVTQ1JJUFRJT05fVEFCTEVf U0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJzZUFjcGlGYWR0DQo+ICsgICAgICAgICAgICk7 DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBh cmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsN Cj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lz dGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2Fz IG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRmFk dFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENP TlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJz ZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJfRklYRURfQUNQSV9ERVNDUklQVElPTl9U QUJMRV9TSUdOQVRVUkUNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9G YWR0UGFyc2VyTGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40 MjhhMWEwMjZkZWVjMWI4N2NjYjkzZGQ3Nzc1MDA3OGUyYThlZWZkDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9GYWR0L0ZhZHRQYXJzZXJMaWIuaW5mDQo+IEBAIC0wLDAgKzEsMzMgQEANCj4gKyMjIEBm aWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFi bGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiAr IyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3Jn L2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElT VFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsj ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRI RVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElO Rl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiArICBCQVNFX05BTUUgICAgICA9IEZhZHRQYXJz ZXJMaWINCj4gKyAgRklMRV9HVUlEICAgICAgPSAxNTA3RUM4QS0yQkQ0LTQ2MEItOTgzMC1ENzhE MEJEN0UwRTYNCj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAg PSBEWEVfRFJJVkVSDQo+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsg IENPTlNUUlVDVE9SICAgID0gRmFkdFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNU T1IgICAgID0gRmFkdFBhcnNlckxpYkRlc3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsg IEZhZHRQYXJzZXIuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVj DQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxl UGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIFNoZWxsQWNwaVZpZXdDb21t YW5kTGliDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIuYw0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi43ODQxMDRhOGE0ZTVjNWZmMGJhMjYzNzRhNjczNzdlNzdkZGZlMzliDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDMzOCBA QA0KPiArLyoqDQo+ICsgIEdURFQgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChj KSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9u LiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0 cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRI RSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMg SVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVm ZXJlbmNlKHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBT ZXB0ZW1iZXIgMjAxNw0KPiArICAqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRh cmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNw aVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiAr U1RBVElDIENPTlNUIFVJTlQzMiogR3RkdFBsYXRmb3JtVGltZXJDb3VudDsNCj4gK1NUQVRJQyBD T05TVCBVSU5UMzIqIEd0ZHRQbGF0Zm9ybVRpbWVyT2Zmc2V0Ow0KPiArU1RBVElDIENPTlNUIFVJ TlQ4KiAgUGxhdGZvcm1UaW1lclR5cGU7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBQbGF0Zm9y bVRpbWVyTGVuZ3RoOw0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogR3RCbG9ja1RpbWVyQ291bnQ7 DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBHdEJsb2NrVGltZXJPZmZzZXQ7DQo+ICtTVEFUSUMg Q09OU1QgVUlOVDE2KiBHdEJsb2NrTGVuZ3RoOw0KPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05f SEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlk YXRlcyB0aGUgR1QgQmxvY2sgdGltZXIgY291bnQuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFt IFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5n LiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRo ZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQ SQ0KPiArVmFsaWRhdGVHdEJsb2NrVGltZXJDb3VudCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNF UiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEdURFQgVGFibGUuDQo+ICsqLw0KPiArU1RBVElD IENPTlNUIEFDUElfUEFSU0VSIEd0ZHRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFE RVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIkNudENvbnRyb2xCYXNlIFBoeXNpY2FsIEFkZHJl c3MiLCA4LCAzNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsDQo+ICsgICBOVUxMLCBOVUxMfSwNCj4g KyAge0wiUmVzZXJ2ZWQiLCA0LCA0NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlNlY3VyZSBFTDEgdGltZXIgR1NJViIsIDQsIDQ4LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU2VjdXJlIEVMMSB0aW1lciBGTEFHUyIsIDQsIDUy LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJOb24tU2Vj dXJlIEVMMSB0aW1lciBHU0lWIiwgNCwgNTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJOb24tU2VjdXJlIEVMMSB0aW1lciBGTEFHUyIsIDQsIDYwLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJWaXJ0dWFsIHRpbWVyIEdT SVYiLCA0LCA2NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlZp cnR1YWwgdGltZXIgRkxBR1MiLCA0LCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsNCj4gKyAge0wiTm9uLVNlY3VyZSBFTDIgdGltZXIgR1NJViIsIDQsIDcyLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTm9uLVNlY3VyZSBFTDIgdGlt ZXIgRkxBR1MiLCA0LCA3NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsN Cj4gKyAge0wiQ250UmVhZEJhc2UgUGh5c2ljYWwgYWRkcmVzcyIsIDgsIDgwLCBMIjB4JWx4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBsYXRmb3JtIFRpbWVyIENvdW50Iiwg NCwgODgsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmR3RkdFBsYXRmb3JtVGltZXJDb3Vu dCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBsYXRmb3JtIFRpbWVyIE9mZnNldCIsIDQsIDkyLCBM IjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikmR3RkdFBsYXRmb3JtVGltZXJPZmZzZXQsIE5V TEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3Jp YmluZyB0aGUgUGxhdGZvcm0gdGltZXIgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBB Q1BJX1BBUlNFUiBHdFBsYXRmb3JtVGltZXJIZWFkZXJQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlw ZSIsIDEsIDAsIE5VTEwsIE5VTEwsIChWT0lEKiopJlBsYXRmb3JtVGltZXJUeXBlLCBOVUxMLCBO VUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMiwgMSwgTlVMTCwgTlVMTCwgKFZPSUQqKikmUGxhdGZv cm1UaW1lckxlbmd0aCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMSwgMywgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BB UlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBQbGF0Zm9ybSBHVCBCbG9jay4NCj4gKyovDQo+ICtT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR3RCbG9ja1BhcnNlcltdID0gew0KPiArICB7TCJUeXBl IiwgMSwgMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgi LCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmR3RCbG9ja0xlbmd0aCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlJlc2VydmVkIiwgMSwgMywgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJQaHlzaWNhbCBhZGRyZXNzIChDbnRDdGxCYXNlKSIsIDgsIDQsIEwiMHglbHgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVGltZXIgQ291bnQiLCA0LCAxMiwg TCIlZCIsIE5VTEwsIChWT0lEKiopJkd0QmxvY2tUaW1lckNvdW50LA0KPiArICAgVmFsaWRhdGVH dEJsb2NrVGltZXJDb3VudCwgTlVMTH0sDQo+ICsgIHtMIlRpbWVyIE9mZnNldCIsIDQsIDE2LCBM IiVkIiwgTlVMTCwgKFZPSUQqKikmR3RCbG9ja1RpbWVyT2Zmc2V0LCBOVUxMLA0KPiArICAgIE5V TEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0 aGUgR1QgQmxvY2sgdGltZXIuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEd0 QmxvY2tUaW1lclBhcnNlcltdID0gew0KPiArICB7TCJGcmFtZSBOdW1iZXIiLCAxLCAwLCBMIiVk IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMywgMSwgTCIl eCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQaHlzaWNh bCBhZGRyZXNzIChDbnRCYXNlWCkiLCA4LCA0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIlBoeXNpY2FsIGFkZHJlc3MgKENudEVMMEJhc2VYKSIsIDgsIDEyLCBM IjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gKyAgICBOVUxMfSwNCj4gKyAge0wiUGh5c2lj YWwgVGltZXIgR1NJViIsIDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiUGh5c2ljYWwgVGltZXIgRmxhZ3MiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlZpcnR1YWwgVGltZXIgR1NJViIsIDQsIDI4LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVmlydHVhbCBUaW1lciBGbGFn cyIsIDQsIDMyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQ29t bW9uIEZsYWdzIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9 Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUGxhdGZv cm0gV2F0Y2hkb2cuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNCU0FHZW5l cmljV2F0Y2hkb2dQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiJWQiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMiwgMSwgTCIlZCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDEsIDMsIEwiJXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVmcmVzaEZyYW1lIFBoeXNpY2FsIGFkZHJl c3MiLCA4LCA0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkNv bnRyb2xGcmFtZSBQaHlzaWNhbCBhZGRyZXNzIiwgOCwgMTIsIEwiMHglbHgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiV2F0Y2hkb2cgVGltZXIgR1NJViIsIDQsIDIwLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiV2F0Y2hkb2cgVGltZXIgRmxh Z3MiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgR1QgQmxvY2sgdGltZXIgY291bnQu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRl eHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVHdEJsb2NrVGltZXJDb3Vu dCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkN Cj4gK3sNCj4gKyAgVUlOVDMyIEJsb2NrVGltZXJDb3VudCA9ICooVUlOVDMyKilQdHI7DQo+ICsg IGlmIChCbG9ja1RpbWVyQ291bnQgPiA4KSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAo KTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxuRVJST1I6IFRpbWVyIENvdW50ID0gJWQu IE1heCBUaW1lciBDb3VudCBpcyA4LiIsDQo+ICsgICAgICBCbG9ja1RpbWVyQ291bnQNCj4gKyAg ICAgICk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRo ZSBQbGF0Zm9ybSBHVCBCbG9jay4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBHVCBCbG9jayBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBM ZW5ndGggIExlbmd0aCBvZiB0aGUgR1QgQmxvY2sgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJ Qw0KPiArVk9JRA0KPiArRHVtcEdUQmxvY2sgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJ TiBVSU5UMTYgTGVuZ3RoDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBV SU5UMzIgT2Zmc2V0Ow0KPiArICBVSU5UMTYgR1RCbG9ja1RpbWVyTGVuZ3RoOw0KPiArDQo+ICsg IE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAg ICAgICAyLA0KPiArICAgICAgICAgICAgICJHVCBCbG9jayIsDQo+ICsgICAgICAgICAgICAgUHRy LA0KPiArICAgICAgICAgICAgIExlbmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1T IChHdEJsb2NrUGFyc2VyKQ0KPiArICAgICAgICAgICAgICk7DQo+ICsgIEdUQmxvY2tUaW1lckxl bmd0aCA9ICgqR3RCbG9ja0xlbmd0aCAtIE9mZnNldCkgLyAoKkd0QmxvY2tUaW1lckNvdW50KTsN Cj4gKyAgTGVuZ3RoIC09IE9mZnNldDsNCj4gKw0KPiArICBpZiAoKkd0QmxvY2tUaW1lckNvdW50 ICE9IDApIHsNCj4gKyAgICBQdHIgKz0gKCpHdEJsb2NrVGltZXJPZmZzZXQpOw0KPiArICAgIElu ZGV4ID0gMDsNCj4gKyAgICB3aGlsZSAoKEluZGV4IDwgKCpHdEJsb2NrVGltZXJDb3VudCkpICYm IChMZW5ndGggPj0gR1RCbG9ja1RpbWVyTGVuZ3RoKSkgew0KPiArICAgICAgT2Zmc2V0ID0gUGFy c2VBY3BpICgNCj4gKyAgICAgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAgICAg MiwNCj4gKyAgICAgICAgICAgICAgICAgIkdUIEJsb2NrIFRpbWVyIiwNCj4gKyAgICAgICAgICAg ICAgICAgUHRyLA0KPiArICAgICAgICAgICAgICAgICBHVEJsb2NrVGltZXJMZW5ndGgsDQo+ICsg ICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEd0QmxvY2tUaW1lclBhcnNlcikNCj4gKyAg ICAgICAgICAgICAgICAgKTsNCj4gKyAgICAgIC8vIEluY3JlbWVudCBieSBHVCBCbG9jayBUaW1l ciBzdHJ1Y3R1cmUgc2l6ZQ0KPiArICAgICAgUHRyICs9IE9mZnNldDsNCj4gKyAgICAgIExlbmd0 aCAtPSBPZmZzZXQ7DQo+ICsgICAgICBJbmRleCsrOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlm IChMZW5ndGggIT0gMCkgew0KPiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAg ICAgIFByaW50ICgNCj4gKyAgICAgICAgTCJFUlJPUjpHVCBCbG9jayBUaW1lciBsZW5ndGggbWlz bWF0Y2guIFVucGFyc2VkICVkIGJ5dGVzLlxuIiwNCj4gKyAgICAgICAgTGVuZ3RoDQo+ICsgICAg ICAgICk7DQo+ICsgICAgfQ0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHBhcnNlcyB0aGUgUGxhdGZvcm0gV2F0Y2hkb2cgdGltZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtp bl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgd2F0Y2hkb2cgdGltZXIgZGF0 YS4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBMZW5ndGggb2YgdGhlIHdhdGNoZG9nIHRpbWVy IHN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBXYXRjaGRvZ1Rp bWVyICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aA0KPiArICAp DQo+ICt7DQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAyLA0KPiArICAg ICJTQlNBIEdlbmVyaWMgV2F0Y2hkb2ciLA0KPiArICAgIFB0ciwNCj4gKyAgICBMZW5ndGgsDQo+ ICsgICAgUEFSU0VSX1BBUkFNUyAoU0JTQUdlbmVyaWNXYXRjaGRvZ1BhcnNlcikNCj4gKyAgICAp Ow0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgR1REVCB0 YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRo ZSBHVERUIHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiAr DQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwYXJzZXMgdGhlIGZvbGxvd2luZyBwbGF0Zm9ybSB0 aW1lciBzdHJ1Y3R1cmVzOg0KPiArICAgIC0gR1QgQmxvY2sgdGltZXINCj4gKyAgICAtIFdhdGNo ZG9nIHRpbWVyDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRp b24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNl ICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJh bSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVm ZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBB Q1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24g b2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFj cGlHdGR0ICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJs ZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5UOCog VGltZXJQdHI7DQo+ICsNCj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAg fQ0KPiArDQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAwLA0KPiArICAg ICJHVERUIiwNCj4gKyAgICBQdHIsDQo+ICsgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgIFBB UlNFUl9QQVJBTVMgKEd0ZHRQYXJzZXIpDQo+ICsgICAgKTsNCj4gKw0KPiArICBpZiAoKkd0ZHRQ bGF0Zm9ybVRpbWVyQ291bnQgIT0gMCkgew0KPiArICAgIFRpbWVyUHRyID0gUHRyICsgKCpHdGR0 UGxhdGZvcm1UaW1lck9mZnNldCk7DQo+ICsgICAgSW5kZXggPSAwOw0KPiArICAgIGRvIHsNCj4g KyAgICAgIC8vIFBhcnNlIHRoZSBQbGF0Zm9ybSBUaW1lciBIZWFkZXINCj4gKyAgICAgIFBhcnNl QWNwaSAoDQo+ICsgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAwLA0KPiArICAgICAgICBOVUxM LA0KPiArICAgICAgICBUaW1lclB0ciwNCj4gKyAgICAgICAgNCwgIC8vIEdUIFBsYXRmb3JtIFRp bWVyIHN0cnVjdHVyZSBoZWFkZXIgbGVuZ3RoLg0KPiArICAgICAgICBQQVJTRVJfUEFSQU1TIChH dFBsYXRmb3JtVGltZXJIZWFkZXJQYXJzZXIpDQo+ICsgICAgICAgICk7DQo+ICsgICAgICBzd2l0 Y2ggKCpQbGF0Zm9ybVRpbWVyVHlwZSkgew0KPiArICAgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9H VERUX0dUX0JMT0NLOg0KPiArICAgICAgICAgIER1bXBHVEJsb2NrIChUaW1lclB0ciwgKlBsYXRm b3JtVGltZXJMZW5ndGgpOw0KPiArICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICBjYXNlIEVG SV9BQ1BJXzZfMl9HVERUX1NCU0FfR0VORVJJQ19XQVRDSERPRzoNCj4gKyAgICAgICAgICBEdW1w V2F0Y2hkb2dUaW1lciAoVGltZXJQdHIsICpQbGF0Zm9ybVRpbWVyTGVuZ3RoKTsNCj4gKyAgICAg ICAgICBicmVhazsNCj4gKyAgICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICBJbmNyZW1lbnRF cnJvckNvdW50ICgpOw0KPiArICAgICAgICAgIFByaW50ICgNCj4gKyAgICAgICAgICAgIEwiRVJS T1I6IElOVkFMSUQgUGxhdGZvcm0gVGltZXIgVHlwZSA9ICVkXG4iLA0KPiArICAgICAgICAgICAg KlBsYXRmb3JtVGltZXJUeXBlDQo+ICsgICAgICAgICAgICApOw0KPiArICAgICAgICAgIGJyZWFr Ow0KPiArICAgICAgfSAvLyBzd2l0Y2gNCj4gKyAgICAgIFRpbWVyUHRyICs9ICgqUGxhdGZvcm1U aW1lckxlbmd0aCk7DQo+ICsgICAgICBJbmRleCsrOw0KPiArICAgIH0gd2hpbGUgKEluZGV4IDwg Kkd0ZHRQbGF0Zm9ybVRpbWVyQ291bnQpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdp c3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhl IGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9p bnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxS RUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBA cmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9T VEFUVVMNCj4gK0VGSUFQSQ0KPiArR3RkdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4g Q09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAg ICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9H RU5FUklDX1RJTUVSX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgICAgICAg UGFyc2VBY3BpR3RkdA0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdp c3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhl IGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9p bnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9O T1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0d0ZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4g KyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAg SU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FD UElfNl8yX0dFTkVSSUNfVElNRVJfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAg ICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBhcnNlckxpYi5pbmYgYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3Rk dFBhcnNlckxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIxZTlkOTlmMjM1M2U3ZTY5NmY2ZjBm YzcxNmQ0MmIyNGJmZWI5ZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyTGli LmluZg0KPiBAQCAtMCwwICsxLDMzIEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJp Z2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQg Y29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRo aXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91 bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5w aHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0Qg TElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4N Cj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAw MTkNCj4gKyAgQkFTRV9OQU1FICAgICAgPSBHdGR0UGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAg ICAgID0gNDYzOEE1NzItNTlDMC00QUFGLUI5OTAtQjk1RkE2N0Q5NjU2DQo+ICsgIFZFUlNJT05f U1RSSU5HID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJS QVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IEd0ZHRQ YXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IEd0ZHRQYXJzZXJMaWJE ZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBHdGR0UGFyc2VyLmMNCj4gKw0KPiAr W1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBr Zy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJh cnlDbGFzc2VzXQ0KPiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiBkaWZmIC0tZ2l0IGEv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0 L0lvcnRQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzViMjU3MTI4 MmMwNDI1N2EwMTBiZjZjODAwYWNmNzE0MGQwMjgzYg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9y dC9Jb3J0UGFyc2VyLmMNCj4gQEAgLTAsMCArMSw3NDUgQEANCj4gKy8qKg0KPiArICBJT1JUIHRh YmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2Nv bXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUg dW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3 aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhl IGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNl bnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRF RCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9V VCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJF U1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIElP IFJlbWFwcGluZyBUYWJsZSwgUGxhdGZvcm0gRGVzaWduIERvY3VtZW50LCBSZXZpc2lvbiBDLCAx NSBNYXkgMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0lv UmVtYXBwaW5nVGFibGUuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsj aW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmll dy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQ YXJzZXIuaD4NCj4gKw0KPiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ICtTVEFUSUMgQUNQSV9ERVND UklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoqIFRoZSBFSU9SVF9O T0RFIGVudW0gZGVzY3JpYmVzIHRoZSBJT1JUIE5vZGUgdHlwZXMuDQo+ICsqLw0KPiArdHlwZWRl ZiBlbnVtIElvcnROb2RlIHsNCj4gKyAgRUlPUlRfTk9ERV9JVFNfR1JPVVAsICAgICAgICAvLy88 IElUUyBHcm91cCBub2RlDQo+ICsgIEVJT1JUX05PREVfTkFNRURfQ09NUE9ORU5ULCAgLy8vPCBO YW1lZCBDb21wb25lbnQgbm9kZQ0KPiArICBFSU9SVF9OT0RFX1JPT1RfQ09NUExFWCwgICAgIC8v LzwgUm9vdCBDb21wbGV4IG5vZGUNCj4gKyAgRUlPUlRfTk9ERV9TTU1VVjFfVjIsICAgICAgICAv Ly88IFNNTVUgdjEvdjIgbm9kZQ0KPiArICBFSU9SVF9OT0RFX1NNTVVWMywgICAgICAgICAgIC8v LzwgU01NVSB2MyBub2RlDQo+ICsgIEVJT1JUX05PREVfUE1DRywgICAgICAgICAgICAgLy8vPCBQ TUMgZ3JvdXAgbm9kZQ0KPiArICBFSU9SVF9OT0RFX01BWA0KPiArfSBFSU9SVF9OT0RFOw0KPiAr DQo+ICsvLyBMb2NhbCBWYXJpYWJsZXMNCj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIElvcnROb2Rl Q291bnQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0Tm9kZU9mZnNldDsNCj4gKw0KPiAr U1RBVElDIENPTlNUIFVJTlQ4KiBJb3J0Tm9kZVR5cGU7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDE2 KiBJb3J0Tm9kZUxlbmd0aDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIElvcnRJZE1hcHBpbmdD b3VudDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIElvcnRJZE1hcHBpbmdPZmZzZXQ7DQo+ICsN Cj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEludGVycnVwdENvbnRleHRDb3VudDsNCj4gK1NUQVRJ QyBDT05TVCBVSU5UMzIqIEludGVycnVwdENvbnRleHRPZmZzZXQ7DQo+ICtTVEFUSUMgQ09OU1Qg VUlOVDMyKiBQbXVJbnRlcnJ1cHRDb3VudDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIFBtdUlu dGVycnVwdE9mZnNldDsNCj4gKw0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogSXRzQ291bnQ7DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFwcGluZyBhcnJheSBj b3VudCBmb3IgdGhlIElUUyBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENv bnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0K PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0 YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1Zh bGlkYXRlSXRzSWRNYXBwaW5nQ291bnQgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBW T0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0 ZXMgdGhlIElEIE1hcHBpbmcgYXJyYXkgb2Zmc2V0IGZvciB0aGUgSVRTIG5vZGUuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQg ZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lm aWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQg YmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMN Cj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVJdHNJZEFycmF5UmVmZXJlbmNlICgNCj4g KyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKTsNCj4gKw0K PiArLyoqIEhlbHBlciBNYWNybyBmb3IgcG9wdWxhdGluZyB0aGUgSU9SVCBOb2RlIGhlYWRlciBp biB0aGUgQUNQSV9QQVJTRVINCj4gKyAgICBhcnJheS4NCj4gKw0KPiArICBAcGFyYW0gW291dF0g VmFsaWRhdGVJZE1hcHBpbmdDb3VudCAgICBPcHRpb25hbCBwb2ludGVyIHRvIGEgZnVuY3Rpb24g Zm9yDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRp bmcgdGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJhbSBbb3V0XSBWYWxpZGF0ZUlkQXJy YXlSZWZlcmVuY2UgIE9wdGlvbmFsIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiBmb3INCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGluZyB0aGUgSUQgQXJy YXkgcmVmZXJlbmNlLg0KPiArKi8NCj4gKyNkZWZpbmUgUEFSU0VfSU9SVF9OT0RFX0hFQURFUihW YWxpZGF0ZUlkTWFwcGluZ0NvdW50LCAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVJZEFycmF5UmVmZXJlbmNlKSAgICAgICAgICAg ICAgICAgXA0KPiArICB7IEwiVHlwZSIsIDEsIDAsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZJb3J0 Tm9kZVR5cGUsIE5VTEwsIE5VTEwgfSwgICAgIFwNCj4gKyAgeyBMIkxlbmd0aCIsIDIsIDEsIEwi JWQiLCBOVUxMLCAoVk9JRCoqKSZJb3J0Tm9kZUxlbmd0aCwgTlVMTCwgTlVMTCB9LCBcDQo+ICsg IHsgTCJSZXZpc2lvbiIsIDEsIDMsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0sICAg ICAgICAgICAgICAgICAgXA0KPiArICB7IEwiUmVzZXJ2ZWQiLCA0LCA0LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMIH0sICAgICAgICAgICAgICAgIFwNCj4gKyAgeyBMIk51bWJlciBv ZiBJRCBtYXBwaW5ncyIsIDQsIDgsIEwiJWQiLCBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgKFZPSUQqKikmSW9ydElkTWFwcGluZ0NvdW50LCBWYWxpZGF0ZUlkTWFwcGlu Z0NvdW50LCBOVUxMIH0sICAgICAgICAgXA0KPiArICB7IEwiUmVmZXJlbmNlIHRvIElEIEFycmF5 IiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAo Vk9JRCoqKSZJb3J0SWRNYXBwaW5nT2Zmc2V0LCBWYWxpZGF0ZUlkQXJyYXlSZWZlcmVuY2UsIE5V TEwgfQ0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQ SSBJT1JUIFRhYmxlDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnRQYXJz ZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtM Ik51bWJlciBvZiBJT1JUIE5vZGVzIiwgNCwgMzYsIEwiJWQiLCBOVUxMLA0KPiArICAgKFZPSUQq KikmSW9ydE5vZGVDb3VudCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk9mZnNldCB0byBBcnJheSBv ZiBJT1JUIE5vZGVzIiwgNCwgNDAsIEwiMHgleCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZJb3J0 Tm9kZU9mZnNldCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgNCwgNDQsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9Q QVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBub2RlIGhlYWRlciBzdHJ1Y3R1cmUuDQo+ ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnROb2RlSGVhZGVyUGFyc2VyW10g PSB7DQo+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpDQo+ICt9Ow0KPiAr DQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBTTU1VdjEv MiBub2RlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZVNtbXVW MVYyUGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwp LA0KPiArICB7TCJCYXNlIEFkZHJlc3MiLCA4LCAxNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJTcGFuIiwgOCwgMjQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiTW9kZWwiLCA0LCAzMiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJGbGFncyIsIDQsIDM2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiUmVmZXJlbmNlIHRvIEdsb2JhbCBJbnRlcnJ1cHQgQXJyYXki LCA0LCA0MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gKyAgIE5VTEx9LA0KPiArICB7 TCJOdW1iZXIgb2YgY29udGV4dCBpbnRlcnJ1cHRzIiwgNCwgNDQsIEwiJWQiLCBOVUxMLA0KPiAr ICAgKFZPSUQqKikmSW50ZXJydXB0Q29udGV4dENvdW50LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi UmVmZXJlbmNlIHRvIENvbnRleHQgSW50ZXJydXB0IEFycmF5IiwgNCwgNDgsIEwiMHgleCIsIE5V TEwsDQo+ICsgICAoVk9JRCoqKSZJbnRlcnJ1cHRDb250ZXh0T2Zmc2V0LCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiTnVtYmVyIG9mIFBNVSBJbnRlcnJ1cHRzIiwgNCwgNTIsIEwiJWQiLCBOVUxMLA0K PiArICAgKFZPSUQqKikmUG11SW50ZXJydXB0Q291bnQsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJS ZWZlcmVuY2UgdG8gUE1VIEludGVycnVwdCBBcnJheSIsIDQsIDU2LCBMIjB4JXgiLCBOVUxMLA0K PiArICAgKFZPSUQqKikmUG11SW50ZXJydXB0T2Zmc2V0LCBOVUxMLCBOVUxMfSwNCj4gKw0KPiAr ICAvLyBJbnRlcnJ1cHQgQXJyYXkNCj4gKyAge0wiU01NVV9OU2dJcnB0IiwgNCwgNjAsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTTU1VX05TZ0lycHQgaW50ZXJy dXB0IGZsYWdzIiwgNCwgNjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJTTU1VX05TZ0NmZ0lycHQiLCA0LCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIlNNTVVfTlNnQ2ZnSXJwdCBpbnRlcnJ1cHQgZmxhZ3MiLCA0LCA3Miwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBB Q1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBTTU1VdjEvMiBOb2RlIEludGVycnVwdCBB cnJheS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW50ZXJydXB0QXJyYXlQ YXJzZXJbXSA9IHsNCj4gKyAge0wiICBJbnRlcnJ1cHQgR1NJViIsIDQsIDAsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCIgIEZsYWdzIiwgNCwgNCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNF UiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIElEIE1hcHBpbmcuDQo+ICsqLw0KPiArU1RBVElD IENPTlNUIEFDUElfUEFSU0VSIElvcnROb2RlSWRNYXBwaW5nUGFyc2VyW10gPSB7DQo+ICsgIHtM IiAgSW5wdXQgYmFzZSIsIDQsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCIgIE51bWJlciBvZiBJRHMiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiICBPdXRwdXQgYmFzZSIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCIgIE91dHB1dCByZWZlcmVuY2UiLCA0LCAxMiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIiAgRmxhZ3MiLCA0LCAxNiwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBB Q1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIFNNTVV2MyBub2RlLg0KPiArKi8N Cj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZVNtbXVWM1BhcnNlcltdID0gew0K PiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxMKSwNCj4gKyAge0wiQmFzZSBB ZGRyZXNzIiwgOCwgMTYsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiRmxhZ3MiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlJlc2VydmVkIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJWQVRPUyBBZGRyZXNzIiwgOCwgMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiTW9kZWwiLCA0LCA0MCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJFdmVudCIsIDQsIDQ0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiUFJJIiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJHRVJSIiwgNCwgNTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJTeW5jIiwgNCwgNTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmlu ZyB0aGUgSU9SVCBJVFMgbm9kZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIg SW9ydE5vZGVJdHNQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfSU9SVF9OT0RFX0hFQURFUiAoDQo+ ICsgICAgVmFsaWRhdGVJdHNJZE1hcHBpbmdDb3VudCwNCj4gKyAgICBWYWxpZGF0ZUl0c0lkQXJy YXlSZWZlcmVuY2UNCj4gKyAgICApLA0KPiArICB7TCIgIE51bWJlciBvZiBJVFNzIiwgNCwgMTYs IEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZJdHNDb3VudCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8q KiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJVFMgSUQuDQo+ICsqLw0KPiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEl0c0lkUGFyc2VyW10gPSB7DQo+ICsgIHsgTCIgIEdJ QyBJVFMgSWRlbnRpZmllciIsIDQsIDAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMIH0NCj4gK307 DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIE5h bWVzIENvbXBvbmVudCBub2RlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJ b3J0Tm9kZU5hbWVkQ29tcG9uZW50UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0lPUlRfTk9ERV9I RUFERVIgKE5VTEwsIE5VTEwpLA0KPiArICB7TCJOb2RlIEZsYWdzIiwgNCwgMTYsIEwiJWQiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTWVtb3J5IGFjY2VzcyBwcm9wZXJ0aWVz IiwgOCwgMjAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRGV2 aWNlIG1lbW9yeSBhZGRyZXNzIHNpemUgbGltaXQiLCAxLCAyOCwgTCIlZCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVz Y3JpYmluZyB0aGUgSU9SVCBSb290IENvbXBsZXggbm9kZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09O U1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVSb290Q29tcGxleFBhcnNlcltdID0gew0KPiArICBQQVJT RV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxMKSwNCj4gKyAge0wiTWVtb3J5IGFjY2VzcyBw cm9wZXJ0aWVzIiwgOCwgMTYsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiQVRTIEF0dHJpYnV0ZSIsIDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gKyAge0wiUENJIFNlZ21lbnQgbnVtYmVyIiwgNCwgMjgsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgSU9SVCBQTUNHIG5vZGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNU IEFDUElfUEFSU0VSIElvcnROb2RlUG1jZ1BhcnNlcltdID0gew0KPiArICBQQVJTRV9JT1JUX05P REVfSEVBREVSIChOVUxMLCBOVUxMKSwNCj4gKyAge0wiQmFzZSBBZGRyZXNzIiwgOCwgMTYsIEwi MHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiT3ZlcmZsb3cgaW50ZXJy dXB0IEdTSVYiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIk5vZGUgcmVmZXJlbmNlIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJRCBN YXBwaW5nIGFycmF5IGNvdW50IGZvciB0aGUgSVRTIG5vZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtp bl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAg QHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRp b24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVy IHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4g K0VGSUFQSQ0KPiArVmFsaWRhdGVJdHNJZE1hcHBpbmdDb3VudCAoDQo+ICsgIElOIFVJTlQ4KiBQ dHIsDQo+ICsgIFZPSUQqICAgICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKCooVUlO VDMyKilQdHIgIT0gMCkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAg UHJpbnQgKEwiXG5FUlJPUjogSU9SVCBJRCBNYXBwaW5nIGNvdW50IG11c3QgYmUgemVyby4iKTsN Cj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElE IE1hcHBpbmcgYXJyYXkgb2Zmc2V0IGZvciB0aGUgSVRTIG5vZGUuDQo+ICsNCj4gKyAgQHBhcmFt IFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4g KyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3Jt YXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2lu dGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQN Cj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVJdHNJZEFycmF5UmVmZXJlbmNlICgNCj4gKyAgSU4gVUlO VDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArICBpZiAo KihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4g KyAgICBQcmludCAoTCJcbkVSUk9SOiBJT1JUIElEIE1hcHBpbmcgb2Zmc2V0IG11c3QgYmUgemVy by4iKTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhl IElPUlQgTm9kZSBJZCBNYXBwaW5nIGFycmF5Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBJT1JUIFRhYmxlLg0KPiArICBA cGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCj4gKyAgQHBh cmFtIFtpbl0gTWFwcGluZ09mZnNldCAgVGhlIG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJh eQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUg SU9SVCB0YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBJb3J0Tm9kZUlk TWFwcGluZ3MgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ0Nv dW50LA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiArICApDQo+ICt7DQo+ICsgIFVJ TlQ4KiBJZE1hcHBpbmdQdHI7DQo+ICsgIFVJTlQzMiBJbmRleDsNCj4gKyAgVUlOVDMyIE9mZnNl dDsNCj4gKyAgQ0hBUjggIEJ1ZmZlcls0MF07ICAvLyBVc2VkIGZvciBBc2NpaU5hbWUgcGFyYW0g b2YgUGFyc2VBY3BpDQo+ICsNCj4gKyAgSWRNYXBwaW5nUHRyID0gUHRyICsgTWFwcGluZ09mZnNl dDsNCj4gKyAgSW5kZXggPSAwOw0KPiArICB3aGlsZSAoSW5kZXggPCBNYXBwaW5nQ291bnQpIHsN Cj4gKyAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICBCdWZmZXIsDQo+ICsgICAgICBzaXplb2Yg KEJ1ZmZlciksDQo+ICsgICAgICAiSUQgTWFwcGluZyBbJWRdIiwNCj4gKyAgICAgIEluZGV4DQo+ ICsgICAgICApOw0KPiArICAgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAg ICBUUlVFLA0KPiArICAgICAgICAgICAgICAgNCwNCj4gKyAgICAgICAgICAgICAgIEJ1ZmZlciwN Cj4gKyAgICAgICAgICAgICAgIElkTWFwcGluZ1B0ciwNCj4gKyAgICAgICAgICAgICAgIDIwLA0K PiArICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVJZE1hcHBpbmdQYXJzZXIp DQo+ICsgICAgICAgICAgICAgICApOw0KPiArICAgIElkTWFwcGluZ1B0ciArPSBPZmZzZXQ7DQo+ ICsgICAgSW5kZXgrKzsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBw YXJzZXMgdGhlIElPUlQgU01NVXYxLzIgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIg ICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFy YW0gW2luXSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFt IFtpbl0gTWFwcGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJhbSBb aW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQg dGFibGUuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVTbW11VjFW MiAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJTlQxNiBMZW5ndGgsDQo+ICsgIElO IFVJTlQzMiBNYXBwaW5nQ291bnQsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ICsg ICkNCj4gK3sNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBD SEFSOCAgQnVmZmVyWzUwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFj cGkNCj4gKw0KPiArICBVSU5UOCogQXJyYXlQdHI7DQo+ICsNCj4gKyAgUGFyc2VBY3BpICgNCj4g KyAgICBUUlVFLA0KPiArICAgIDIsDQo+ICsgICAgIlNNTVV2MSBvciBTTU1VdjIgTm9kZSIsDQo+ ICsgICAgUHRyLA0KPiArICAgIExlbmd0aCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9k ZVNtbXVWMVYyUGFyc2VyKQ0KPiArICAgICk7DQo+ICsNCj4gKyAgQXJyYXlQdHIgPSBQdHIgKyAq SW50ZXJydXB0Q29udGV4dE9mZnNldDsNCj4gKyAgSW5kZXggPSAwOw0KPiArICB3aGlsZSAoSW5k ZXggPCAqSW50ZXJydXB0Q29udGV4dENvdW50KSB7DQo+ICsgICAgQXNjaWlTUHJpbnQgKA0KPiAr ICAgICAgQnVmZmVyLA0KPiArICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAgICAgIkNvbnRl eHQgSW50ZXJydXB0cyBBcnJheSBbJWRdIiwNCj4gKyAgICAgIEluZGV4DQo+ICsgICAgICApOw0K PiArICAgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgICBUUlVFLA0KPiAr ICAgICAgICAgICAgICAgNCwNCj4gKyAgICAgICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAg ICAgICAgIEFycmF5UHRyLA0KPiArICAgICAgICAgICAgICAgOCwNCj4gKyAgICAgICAgICAgICAg IFBBUlNFUl9QQVJBTVMgKEludGVycnVwdEFycmF5UGFyc2VyKQ0KPiArICAgICAgICAgICAgICAg KTsNCj4gKyAgICBBcnJheVB0ciArPSBPZmZzZXQ7DQo+ICsgICAgSW5kZXgrKzsNCj4gKyAgfQ0K PiArDQo+ICsgIEFycmF5UHRyID0gUHRyICsgKlBtdUludGVycnVwdE9mZnNldDsNCj4gKyAgSW5k ZXggPSAwOw0KPiArICB3aGlsZSAoSW5kZXggPCAqUG11SW50ZXJydXB0Q291bnQpIHsNCj4gKyAg ICBBc2NpaVNQcmludCAoDQo+ICsgICAgICBCdWZmZXIsDQo+ICsgICAgICBzaXplb2YgKEJ1ZmZl ciksDQo+ICsgICAgICAiUE1VIEludGVycnVwdHMgQXJyYXkgWyVkXSIsDQo+ICsgICAgICBJbmRl eA0KPiArICAgICAgKTsNCj4gKyAgICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAgICAg ICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAgIDQsDQo+ICsgICAgICAgICAgICAgICBCdWZm ZXIsDQo+ICsgICAgICAgICAgICAgICBBcnJheVB0ciwNCj4gKyAgICAgICAgICAgICAgIDgsDQo+ ICsgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJbnRlcnJ1cHRBcnJheVBhcnNlcikNCj4g KyAgICAgICAgICAgICAgICk7DQo+ICsgICAgQXJyYXlQdHIgKz0gT2Zmc2V0Ow0KPiArICAgIElu ZGV4Kys7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoKklvcnRJZE1hcHBpbmdDb3VudCAhPSAwKSB7 DQo+ICsgICAgRHVtcElvcnROb2RlSWRNYXBwaW5ncyAoUHRyLCBNYXBwaW5nQ291bnQsIE1hcHBp bmdPZmZzZXQpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNl cyB0aGUgSU9SVCBTTU1VdjMgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAg ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2lu XSBMZW5ndGggICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0g TWFwcGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJhbSBbaW5dIE1h cHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUu DQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVTbW11VjMgKA0KPiAr ICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBVSU5UMTYgTGVuZ3RoLA0KPiArICBJTiBVSU5UMzIg TWFwcGluZ0NvdW50LA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiArICApDQo+ICt7 DQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAyLA0KPiArICAgICJTTU1V VjMgTm9kZSIsDQo+ICsgICAgUHRyLA0KPiArICAgIExlbmd0aCwNCj4gKyAgICBQQVJTRVJfUEFS QU1TIChJb3J0Tm9kZVNtbXVWM1BhcnNlcikNCj4gKyAgICApOw0KPiArDQo+ICsgIGlmICgqSW9y dElkTWFwcGluZ0NvdW50ICE9IDApIHsNCj4gKyAgICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQ dHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiAr LyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIElUUyBub2RlLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZm ZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVy Lg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcElvcnROb2RlSXRzICgNCj4gKyAg SU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aA0KPiArICApDQo+ICt7DQo+ICsg IFVJTlQzMiBPZmZzZXQ7DQo+ICsgIFVJTlQzMiBJbmRleDsNCj4gKyAgVUlOVDgqIEl0c0lkUHRy Ow0KPiArICBDSEFSOCAgQnVmZmVyWzgwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFtZSBwYXJhbSBv ZiBQYXJzZUFjcGkNCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAgICAg ICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgMiwNCj4gKyAgICAgICAgICAgICAiSVRTIE5vZGUi LA0KPiArICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICBMZW5ndGgsDQo+ICsgICAg ICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVJdHNQYXJzZXIpDQo+ICsgICAgICAgICAg ICAgKTsNCj4gKw0KPiArICBJdHNJZFB0ciA9IFB0ciArIE9mZnNldDsNCj4gKyAgSW5kZXggPSAw Ow0KPiArICB3aGlsZSAoSW5kZXggPCAqSXRzQ291bnQpIHsNCj4gKyAgICBBc2NpaVNQcmludCAo DQo+ICsgICAgICBCdWZmZXIsDQo+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ICsgICAgICAi R0lDIElUUyBJZGVudGlmaWVyIEFycmF5IFslZF0iLA0KPiArICAgICAgSW5kZXgNCj4gKyAgICAg ICk7DQo+ICsgICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICAgIFRSVUUs DQo+ICsgICAgICAgICAgICAgICA0LA0KPiArICAgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAg ICAgICAgICAgICAgSXRzSWRQdHIsDQo+ICsgICAgICAgICAgICAgICA0LA0KPiArICAgICAgICAg ICAgICAgUEFSU0VSX1BBUkFNUyAoSXRzSWRQYXJzZXIpDQo+ICsgICAgICAgICAgICAgICApOw0K PiArICAgIEl0c0lkUHRyICs9IE9mZnNldDsNCj4gKyAgICBJbmRleCsrOw0KPiArICB9DQo+ICsN Cj4gKyAgLy8gTm90ZTogSVRTIGRvZXMgbm90IGhhdmUgdGhlIElEIE1hcHBpbmdzIEFycmF5DQo+ ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBOYW1lZCBDb21w b25lbnQgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAg ICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0NvdW50 ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQg IFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ICsqLw0KPiAr U1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVOYW1lZENvbXBvbmVudCAoDQo+ICsgIElO IFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJTlQxNiBMZW5ndGgsDQo+ICsgIElOIFVJTlQzMiBNYXBw aW5nQ291bnQsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ICsgICkNCj4gK3sNCj4g KyAgVUlOVDMyIE9mZnNldDsNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5UOCogRGV2aWNl TmFtZVB0cjsNCj4gKyAgVUlOVDMyIERldmljZU5hbWVMZW5ndGg7DQo+ICsNCj4gKyAgT2Zmc2V0 ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgIDIs DQo+ICsgICAgICAgICAgICAgIk5hbWVkIENvbXBvbmVudCBOb2RlIiwNCj4gKyAgICAgICAgICAg ICBQdHIsDQo+ICsgICAgICAgICAgICAgTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9Q QVJBTVMgKElvcnROb2RlTmFtZWRDb21wb25lbnRQYXJzZXIpDQo+ICsgICAgICAgICAgICAgKTsN Cj4gKw0KPiArICBEZXZpY2VOYW1lUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArICAvLyBFc3RpbWF0 ZSB0aGUgRGV2aWNlIE5hbWUgbGVuZ3RoDQo+ICsgIERldmljZU5hbWVMZW5ndGggPSBMZW5ndGgg LSBPZmZzZXQgLSAoTWFwcGluZ0NvdW50ICogMjApOw0KPiArICBQcmludEZpZWxkTmFtZSAoMiwg TCJEZXZpY2UgT2JqZWN0IE5hbWUiKTsNCj4gKyAgSW5kZXggPSAwOw0KPiArICB3aGlsZSAoKElu ZGV4IDwgRGV2aWNlTmFtZUxlbmd0aCkgJiYgKERldmljZU5hbWVQdHJbSW5kZXhdICE9IDApKSB7 DQo+ICsgICAgUHJpbnQgKEwiJWMiLCBEZXZpY2VOYW1lUHRyW0luZGV4KytdKTsNCj4gKyAgfQ0K PiArICBQcmludCAoTCJcbiIpOw0KPiArDQo+ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50ICE9 IDApIHsNCj4gKyAgICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwg TWFwcGluZ09mZnNldCk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSBJT1JUIFJvb3QgQ29tcGxleCBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5d IFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsg IEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiArICBA cGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCj4gKyAgQHBh cmFtIFtpbl0gTWFwcGluZ09mZnNldCAgVGhlIG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJh eQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUg SU9SVCB0YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBJb3J0Tm9kZVJv b3RDb21wbGV4ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aCwN Cj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdPZmZz ZXQNCj4gKyAgKQ0KPiArew0KPiArICBQYXJzZUFjcGkgKA0KPiArICAgIFRSVUUsDQo+ICsgICAg MiwNCj4gKyAgICAiUm9vdCBDb21wbGV4IE5vZGUiLA0KPiArICAgIFB0ciwNCj4gKyAgICBMZW5n dGgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVSb290Q29tcGxleFBhcnNlcikNCj4g KyAgICApOw0KPiArDQo+ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50ICE9IDApIHsNCj4gKyAg ICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNl dCk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJ T1JUIFBNQ0cgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGgg ICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0Nv dW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZz ZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ICsqLw0K PiArU1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVQbWNnICgNCj4gKyAgSU4gVUlOVDgq IFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3Vu dCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCj4gKykNCj4gK3sNCj4gKyAgUGFyc2VB Y3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDIsDQo+ICsgICAgIlBNQ0cgTm9kZSIsDQo+ICsg ICAgUHRyLA0KPiArICAgIExlbmd0aCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZVBt Y2dQYXJzZXIpDQo+ICsgICk7DQo+ICsNCj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgIT0g MCkgew0KPiArICAgIER1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKFB0ciwgTWFwcGluZ0NvdW50LCBN YXBwaW5nT2Zmc2V0KTsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50 ID4gMSkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0K PiArICAgICAgTCJFUlJPUjogSUQgbWFwcGluZyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMS4g SWQgTWFwcGluZyBDb3VudCA9JWRcbiIsDQo+ICsgICAgICAqSW9ydElkTWFwcGluZ0NvdW50DQo+ ICsgICAgICApOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNl cyB0aGUgQUNQSSBJT1JUIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBm dW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgdGFibGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSBm aWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBhcnNlcyB0aGUgZm9sbG93aW5n IG5vZGVzOg0KPiArICAgIC0gSVRTIEdyb3VwDQo+ICsgICAgLSBOYW1lZCBDb21wb25lbnQNCj4g KyAgICAtIFJvb3QgQ29tcGxleA0KPiArICAgIC0gU01NVXYxLzINCj4gKyAgICAtIFNNTVV2Mw0K PiArICAgIC0gUE1DRw0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxp ZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBU cmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0 aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlz aW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFy c2VBY3BpSW9ydCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRy LA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3Bp VGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ICsgIFVJ TlQzMiBJbmRleDsNCj4gKyAgVUlOVDgqIE5vZGVQdHI7DQo+ICsNCj4gKyAgaWYgKCFUcmFjZSkg ew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAg VFJVRSwNCj4gKyAgICAwLA0KPiArICAgICJJT1JUIiwNCj4gKyAgICBQdHIsDQo+ICsgICAgQWNw aVRhYmxlTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKElvcnRQYXJzZXIpDQo+ICsgICAg KTsNCj4gKyAgT2Zmc2V0ID0gKklvcnROb2RlT2Zmc2V0Ow0KPiArICBOb2RlUHRyID0gUHRyICsg T2Zmc2V0Ow0KPiArICBJbmRleCA9IDA7DQo+ICsNCj4gKyAgd2hpbGUgKChJbmRleCA8ICpJb3J0 Tm9kZUNvdW50KSAmJiAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSkgew0KPiArICAgIC8vIFBh cnNlIHRoZSBJT1JUIE5vZGUgSGVhZGVyDQo+ICsgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgIEZB TFNFLA0KPiArICAgICAgMCwNCj4gKyAgICAgICJJT1JUIE5vZGUgSGVhZGVyIiwNCj4gKyAgICAg IE5vZGVQdHIsDQo+ICsgICAgICAxNiwNCj4gKyAgICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2Rl SGVhZGVyUGFyc2VyKQ0KPiArICAgICAgKTsNCj4gKyAgICBpZiAoKklvcnROb2RlTGVuZ3RoID09 IDApIHsNCj4gKyAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBQcmludCAo TCJFUlJPUjogUGFyc2VyIGVycm9yLiBJbnZhbGlkIHRhYmxlIGRhdGEuXG4iKTsNCj4gKyAgICAg IHJldHVybjsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBQcmludEZpZWxkTmFtZSAoMiwgTCIqIE5v ZGUgT2Zmc2V0ICoiKTsNCj4gKyAgICBQcmludCAoTCIweCV4XG4iLCBPZmZzZXQpOw0KPiArDQo+ ICsgICAgc3dpdGNoICgqSW9ydE5vZGVUeXBlKSB7DQo+ICsgICAgICBjYXNlIEVJT1JUX05PREVf SVRTX0dST1VQOg0KPiArICAgICAgICBEdW1wSW9ydE5vZGVJdHMgKA0KPiArICAgICAgICAgIE5v ZGVQdHIsDQo+ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoDQo+ICsgICAgICAgICAgKTsNCj4g KyAgICAgICAgYnJlYWs7DQo+ICsgICAgICBjYXNlIEVJT1JUX05PREVfTkFNRURfQ09NUE9ORU5U Og0KPiArICAgICAgICBEdW1wSW9ydE5vZGVOYW1lZENvbXBvbmVudCAoDQo+ICsgICAgICAgICAg Tm9kZVB0ciwNCj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ICsgICAgICAgICAgKklv cnRJZE1hcHBpbmdDb3VudCwNCj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ09mZnNldA0KPiAr ICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgICAgY2FzZSBFSU9SVF9OT0RF X1JPT1RfQ09NUExFWDoNCj4gKyAgICAgICAgRHVtcElvcnROb2RlUm9vdENvbXBsZXggKA0KPiAr ICAgICAgICAgIE5vZGVQdHIsDQo+ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoLA0KPiArICAg ICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdP ZmZzZXQNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIGNhc2Ug RUlPUlRfTk9ERV9TTU1VVjFfVjI6DQo+ICsgICAgICAgIER1bXBJb3J0Tm9kZVNtbXVWMVYyICgN Cj4gKyAgICAgICAgICBOb2RlUHRyLA0KPiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwNCj4g KyAgICAgICAgICAqSW9ydElkTWFwcGluZ0NvdW50LA0KPiArICAgICAgICAgICpJb3J0SWRNYXBw aW5nT2Zmc2V0DQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICBj YXNlIEVJT1JUX05PREVfU01NVVYzOg0KPiArICAgICAgICBEdW1wSW9ydE5vZGVTbW11VjMgKA0K PiArICAgICAgICAgIE5vZGVQdHIsDQo+ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoLA0KPiAr ICAgICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ICsgICAgICAgICAgKklvcnRJZE1hcHBp bmdPZmZzZXQNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIGNh c2UgRUlPUlRfTk9ERV9QTUNHOg0KPiArICAgICAgICBEdW1wSW9ydE5vZGVQbWNnICgNCj4gKyAg ICAgICAgICBOb2RlUHRyLA0KPiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwNCj4gKyAgICAg ICAgICAqSW9ydElkTWFwcGluZ0NvdW50LA0KPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nT2Zm c2V0DQo+ICsgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICBkZWZh dWx0Og0KPiArICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgICBQcmlu dCAoTCJFUlJPUjogVW5zdXBwb3J0ZWQgSU9SVCBOb2RlIHR5cGUgPSAlZFxuIiwgKklvcnROb2Rl 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 PiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXJMaWIuaW5m IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9J b3J0L0lvcnRQYXJzZXJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZWRiZDRmZTc3OGJkOWI2 MDFlMmNhZjNhYzdmZDMzNjhkOTk0NWYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0lvcnQvSW9ydFBh cnNlckxpYi5pbmYNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMg IENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVy aWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBh bmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5 IGJlIGZvdW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBU SEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFO VElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElN UExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAw eDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gSW9ydFBhcnNlckxpYg0KPiArICBGSUxF X0dVSUQgICAgICA9IDMxQ0Y5QTUwLTBCMkEtNEYzMy1CRDJDLTM2MDZFMzVBQTlFRg0KPiArICBW RVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4g KyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAg PSBJb3J0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBJb3J0UGFy c2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgSW9ydFBhcnNlci5jDQo+ ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cv U2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4g K1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gZGlmZiAt LWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvTWFkdC9NYWR0UGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL01hZHQvTWFkdFBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVh MzBjMDQxOTUxNDVjODhkMzkyZGRjYTE2NGEwNjA2MzliNzQ1NmENCj4gLS0tIC9kZXYvbnVsbA0K PiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL01hZHQvTWFkdFBhcnNlci5jDQo+IEBAIC0wLDAgKzEsMzU4IEBADQo+ICsvKioNCj4gKyAg TUFEVCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBB Uk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0 aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UN Cj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0 IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5v cmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElT VFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsg IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhF UiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsg ICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2lu Y2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcv QWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFy c2VyLmg+DQo+ICsNCj4gKy8vIExvY2FsIFZhcmlhYmxlcw0KPiArU1RBVElDIENPTlNUIFVJTlQ4 KiBNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGU7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDgqIE1h ZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoOw0KPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05f SEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4gKy8vIEZvcndhcmQgZGVjbGFyYXRpb25z DQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVHSUNEU3lzdGVtVmVj dG9yQmFzZSAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ ICspOw0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR0lD QyBJbnRlcnJ1cHQNCj4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFU SUMgQ09OU1QgQUNQSV9QQVJTRVIgR2ljQ1BhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwg MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEs IDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAy LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJDUFUg SW50ZXJmYWNlIE51bWJlciIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJBQ1BJIFByb2Nlc3NvciBVSUQiLCA0LCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRmxhZ3MiLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBhcmtpbmcgUHJvdG9jb2wgVmVyc2lvbiIsIDQsIDE2 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJQZXJmb3Jt YW5jZSBJbnRlcnJ1cHQgR1NJViIsIDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gKyAge0wiUGFya2VkIEFkZHJlc3MiLCA4LCAyNCwgTCIweCVseCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQaHlzaWNhbCBCYXNlIEFkZHJlc3MiLCA4LCAzMiwg TCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJHSUNWIiwgOCwgNDAs IEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR0lDSCIsIDgsIDQ4 LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlZHSUMgTWFpbnRl bmFuY2UgaW50ZXJydXB0IiwgNCwgNTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJHSUNSIEJhc2UgQWRkcmVzcyIsIDgsIDYwLCBMIjB4JWx4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk1QSURSIiwgOCwgNjgsIEwiMHglbHgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUHJvY2Vzc29yIFBvd2VyIEVmZmljaWVuY3kgQ2xh c3MiLCAxLCA3NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gKyAgIE5VTEx9LA0KPiAr ICB7TCJSZXNlcnZlZCIsIDMsIDc3LCBMIiV4ICV4ICV4IiwgRHVtcDNDaGFycywgTlVMTCwgTlVM TCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmli aW5nIHRoZSBHSUNEIEludGVycnVwdA0KPiArICAgIENvbnRyb2xsZXIgU3RydWN0dXJlLg0KPiAr Ki8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHaWNEUGFyc2VyW10gPSB7DQo+ICsgIHtM IlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi TGVuZ3RoIiwgMSwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJS ZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ ICsgIHtMIkdJQyBJRCIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJQaHlzaWNhbCBCYXNlIEFkZHJlc3MiLCA4LCA4LCBMIjB4JWx4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlN5c3RlbSBWZWN0b3IgQmFzZSIsIDQsIDE2LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLA0KPiArICAgIFZhbGlkYXRlR0lDRFN5c3RlbVZlY3RvckJhc2UsIE5V TEx9LA0KPiArICB7TCJHSUMgVmVyc2lvbiIsIDEsIDIwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMywgMjEsIEwiJXggJXggJXgiLCBEdW1wM0No YXJzLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VS IGFycmF5IGRlc2NyaWJpbmcgdGhlIE1TSSBGcmFtZSBJbnRlcnJ1cHQNCj4gKyAgICBDb250cm9s bGVyIFN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR2ljTVNJ RnJhbWVQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVkIiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiTVNJIEZyYW1lIElEIiwgNCwgNCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBoeXNpY2FsIEJhc2UgQWRk cmVzcyIsIDgsIDgsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi RmxhZ3MiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4g KyAge0wiU1BJIENvdW50IiwgMiwgMjAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiU1BJIEJhc2UiLCAyLCAyMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRo ZSBHSUNSIEludGVycnVwdA0KPiArICAgIENvbnRyb2xsZXIgU3RydWN0dXJlLg0KPiArKi8NCj4g K1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHaWNSUGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUi LCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3Ro IiwgMSwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZl ZCIsIDIsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtM IkRpc2NvdmVyeSBSYW5nZSBCYXNlIEFkZHJlc3MiLCA4LCA0LCBMIjB4JWx4IiwgTlVMTCwgTlVM TCwgTlVMTCwNCj4gKyAgIE5VTEx9LA0KPiArICB7TCJEaXNjb3ZlcnkgUmFuZ2UgTGVuZ3RoIiwg NCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsv KiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR0lDIElUUyBJbnRlcnJ1cHQN Cj4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQ SV9QQVJTRVIgR2ljSVRTUGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIlZCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIkdJQyBJVFMgSUQiLCA0 LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGh5c2ljYWwg QmFzZSBBZGRyZXNzIiwgOCwgOCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJSZXNlcnZlZCIsIDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IEFDUEkgTUFEVCBUYWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgTWFk dFBhcnNlcltdID0gew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4g KyAge0wiTG9jYWwgSW50ZXJydXB0IENvbnRyb2xsZXIgQWRkcmVzcyIsIDQsIDM2LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLA0KPiArICAgTlVMTH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgNDAs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4g QUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgTUFEVCBJbnRlcnJ1cHQNCj4gKyAgICBD b250cm9sbGVyIFN0cnVjdHVyZSBIZWFkZXIgU3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBD T05TVCBBQ1BJX1BBUlNFUiBNYWR0SW50ZXJydXB0Q29udHJvbGxlckhlYWRlclBhcnNlcltdID0g ew0KPiArICB7TlVMTCwgMSwgMCwgTlVMTCwgTlVMTCwgKFZPSUQqKikmTWFkdEludGVycnVwdENv bnRyb2xsZXJUeXBlLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTlVMTCwg TlVMTCwgKFZPSUQqKikmTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsIE5VTEwsDQo+ICsg ICBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBT eXN0ZW0gVmVjdG9yIEJhc2UgaW4gdGhlIEdJQ0QuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFt IFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5n LiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRo ZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQ SQ0KPiArVmFsaWRhdGVHSUNEU3lzdGVtVmVjdG9yQmFzZSAoDQo+ICsgIElOIFVJTlQ4KiBQdHIs DQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICspDQo+ICt7DQo+ICsgIGlmICgqKFVJTlQzMiop UHRyICE9IDApIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50 ICgNCj4gKyAgICAgIEwiXG5FUlJPUjogU3lzdGVtIFZlY3RvciBCYXNlIG11c3QgYmUgemVyby4i DQo+ICsgICAgKTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJz ZXMgdGhlIEFDUEkgTUFEVCB0YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMg ZnVuY3Rpb24gcGFyc2VzIHRoZSBNQURUIHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkg dGFibGUgZmllbGRzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gY3VycmVudGx5IHBhcnNlcyB0 aGUgZm9sbG93aW5nIEludGVycnVwdCBDb250cm9sbGVyDQo+ICsgIFN0cnVjdHVyZXM6DQo+ICsg ICAgLSBHSUNDDQo+ICsgICAgLSBHSUNEDQo+ICsgICAgLSBHSUMgTVNJIEZyYW1lDQo+ICsgICAg LSBHSUNSDQo+ICsgICAgLSBHSUMgSVRTDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBl cmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIEBw YXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVs ZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAg TGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZp c2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJ QVBJDQo+ICtQYXJzZUFjcGlNYWR0ICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4g VUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBV SU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIE9mZnNl dDsNCj4gKyAgVUlOVDgqIEludGVycnVwdENvbnRvbGxlclB0cjsNCj4gKyAgVUlOVDMyIEdJQ0RD b3VudCA9IDA7DQo+ICsNCj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAg fQ0KPiArDQo+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgVFJVRSwN Cj4gKyAgICAgICAgICAgICAwLA0KPiArICAgICAgICAgICAgICJNQURUIiwNCj4gKyAgICAgICAg ICAgICBQdHIsDQo+ICsgICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgICAgICAg ICAgIFBBUlNFUl9QQVJBTVMgKE1hZHRQYXJzZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKyAg SW50ZXJydXB0Q29udG9sbGVyUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArDQo+ICsgIHdoaWxlIChP ZmZzZXQgPCBBY3BpVGFibGVMZW5ndGgpIHsNCj4gKyAgICAvLyBQYXJzZSBJbnRlcnJ1cHQgQ29u dHJvbGxlciBTdHJ1Y3R1cmUgdG8gb2J0YWluIExlbmd0aC4NCj4gKyAgICBQYXJzZUFjcGkgKA0K PiArICAgICAgRkFMU0UsDQo+ICsgICAgICAwLA0KPiArICAgICAgTlVMTCwNCj4gKyAgICAgIElu dGVycnVwdENvbnRvbGxlclB0ciwNCj4gKyAgICAgIDIsICAvLyAgTGVuZ3RoIGlzIDEgYnl0ZSBh dCBvZmZzZXQgMQ0KPiArICAgICAgUEFSU0VSX1BBUkFNUyAoTWFkdEludGVycnVwdENvbnRyb2xs ZXJIZWFkZXJQYXJzZXIpDQo+ICsgICAgICApOw0KPiArDQo+ICsgICAgaWYgKCgoT2Zmc2V0ICsg KCpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCkpID4gQWNwaVRhYmxlTGVuZ3RoKSB8fA0K PiArICAgICAgICAoKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoIDwgNCkpIHsNCj4gKyAg ICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBQcmludCAoDQo+ICsgICAgICAg ICBMIkVSUk9SOiBJbnZhbGlkIEludGVycnVwdCBDb250cm9sbGVyIExlbmd0aCwiDQo+ICsgICAg ICAgICAgIiBUeXBlID0gJWQsIExlbmd0aCA9ICVkXG4iLA0KPiArICAgICAgICAgKk1hZHRJbnRl cnJ1cHRDb250cm9sbGVyVHlwZSwNCj4gKyAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxl ckxlbmd0aA0KPiArICAgICAgICAgKTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0K PiArICAgIHN3aXRjaCAoKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyVHlwZSkgew0KPiArICAgICAg Y2FzZSBFRklfQUNQSV82XzJfR0lDOiB7DQo+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ICsgICAg ICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAyLA0KPiArICAgICAgICAgICJHSUNDIiwNCj4gKyAg ICAgICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQo+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1 cHRDb250cm9sbGVyTGVuZ3RoLA0KPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY0NQYXJz ZXIpDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICB9DQo+ICsN Cj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ0Q6IHsNCj4gKyAgICAgICAgaWYgKCsrR0lD RENvdW50ID4gMSkgew0KPiArICAgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsg ICAgICAgICAgUHJpbnQgKA0KPiArICAgICAgICAgICAgTCJFUlJPUjogT25seSBvbmUgR0lDRCBt dXN0IGJlIHByZXNlbnQsIg0KPiArICAgICAgICAgICAgICAiIEdJQ0RDb3VudCA9ICVkXG4iLA0K PiArICAgICAgICAgICAgR0lDRENvdW50DQo+ICsgICAgICAgICAgICApOw0KPiArICAgICAgICB9 DQo+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAg ICAyLA0KPiArICAgICAgICAgICJHSUNEIiwNCj4gKyAgICAgICAgICBJbnRlcnJ1cHRDb250b2xs ZXJQdHIsDQo+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoLA0KPiAr ICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY0RQYXJzZXIpDQo+ICsgICAgICAgICAgKTsNCj4g KyAgICAgICAgYnJlYWs7DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIGNhc2UgRUZJX0FDUElf Nl8yX0dJQ19NU0lfRlJBTUU6IHsNCj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAg ICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgIkdJQyBNU0kgRnJhbWUiLA0K PiArICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gKyAgICAgICAgICAqTWFkdElu dGVycnVwdENvbnRyb2xsZXJMZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoR2lj TVNJRnJhbWVQYXJzZXIpDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsg ICAgICB9DQo+ICsNCj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ1I6IHsNCj4gKyAgICAg ICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsg ICAgICAgICAgIkdJQ1IiLA0KPiArICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwNCj4g KyAgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsDQo+ICsgICAgICAgICAg UEFSU0VSX1BBUkFNUyAoR2ljUlBhcnNlcikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBi cmVhazsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgY2FzZSBFRklfQUNQSV82XzJfR0lDX0lU Uzogew0KPiArICAgICAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAg ICAgICAgMiwNCj4gKyAgICAgICAgICAiR0lDIElUUyIsDQo+ICsgICAgICAgICAgSW50ZXJydXB0 Q29udG9sbGVyUHRyLA0KPiArICAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0 aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHaWNJVFNQYXJzZXIpDQo+ICsgICAgICAg ICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIGRlZmF1 bHQ6IHsNCj4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgICAgUHJp bnQgKA0KPiArICAgICAgICAgIEwiRVJST1I6IFVua25vd24gSW50ZXJydXB0IENvbnRyb2xsZXIg U3RydWN0dXJlLCINCj4gKyAgICAgICAgICAgICIgVHlwZSA9ICVkLCBMZW5ndGggPSAlZFxuIiwN Cj4gKyAgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJUeXBlLA0KPiArICAgICAgICAg ICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aA0KPiArICAgICAgICAgICk7DQo+ICsgICAg ICB9DQo+ICsgICAgfSAvLyBzd2l0Y2gNCj4gKw0KPiArICAgIEludGVycnVwdENvbnRvbGxlclB0 ciArPSAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGg7DQo+ICsgICAgT2Zmc2V0ICs9ICpN YWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aDsNCj4gKyAgfSAvLyB3aGlsZQ0KPiArfQ0KPiAr DQo+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1h Z2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lz dGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEBy ZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxl DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVy ZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGlu dmFsaWQNCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVn aXN0ZXIgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4g KyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK01hZHRQYXJzZXJMaWJDb25zdHJ1Y3Rv ciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUs DQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4g KyAgKQ0KPiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBF RklfQUNQSV82XzJfTVVMVElQTEVfQVBJQ19ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ ICsgICAgICAgICAgIFBhcnNlQWNwaU1hZHQNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0K PiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1h Z2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lz dGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gKyAg QHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVy ZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtNYWR0UGFyc2VyTGliRGVz dHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VI YW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFi bGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ICsgICAg ICAgICAgIEVGSV9BQ1BJXzZfMl9NVUxUSVBMRV9BUElDX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05B VFVSRQ0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQYXJzZXJM aWIuaW5mIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9NYWR0L01hZHRQYXJzZXJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMmI2MDQyYmJm YjUxMDgzMWU4NjZhYTFkYzQzMzQ2N2RhYWM0OWUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01hZHQv TWFkdFBhcnNlckxpYi5pbmYNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMN Cj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n IG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBh Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vu c2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv YnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBV TkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyMgIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04g ICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gTWFkdFBhcnNlckxpYg0KPiAr ICBGSUxFX0dVSUQgICAgICA9IENBMEE2QUUxLTExQTEtNDhDOC1BNTYxLUQyQ0ZBOTE3OTYyQQ0K PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklW RVINCj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNU T1IgICAgPSBNYWR0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBN YWR0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgTWFkdFBhcnNl ci5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hl bGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4g ZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01jZmcvTWNmZ1BhcnNlci5jDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjEwYmZlYzkwMWE3YzUwNGU3MDIyYzIxYWFmYmFjNGM4NzVkODg4NmMNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL01jZmcvTWNmZ1BhcnNlci5jDQo+IEBAIC0wLDAgKzEsMTM5IEBADQo+ICsvKioN Cj4gKyAgTUNGRyB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAy MDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExp Y2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMs DQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQs IEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6 DQo+ICsgICAgLSBQQ0kgRmlybXdhcmUgU3BlY2lmaWNhdGlvbiAtIFJldmlzaW9uIDMuMiwgSmFu dWFyeSAyNiwgMjAxNS4NCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFy ZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3Bp Vmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ICtT VEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiAr LyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgTUNGRyBUYWJsZS4N Cj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgTWNmZ1BhcnNlcltdID0gew0KPiAr ICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA4 LCAzNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArfTsNCj4gKw0KPiAr LyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIFBDSSBjb25maWd1cmF0aW9u IFNwYWNlDQo+ICsgICAgQmFzZSBBZGRyZXNzIHN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMg Q09OU1QgQUNQSV9QQVJTRVIgUGNpQ2ZnU3BhY2VCYXNlQWRkclBhcnNlcltdID0gew0KPiArICB7 TCJCYXNlIEFkZHJlc3MiLCA4LCAwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlBDSSBTZWdtZW50IEdyb3VwIE5vLiIsIDIsIDgsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTdGFydCBCdXMgTm8uIiwgMSwgMTAsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJFbmQgQnVzIE5vLiIsIDEsIDExLCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAx MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBNQ0ZHIHRhYmxlLg0KPiArICBXaGVuIHRyYWNl IGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIE1DRkcgdGFibGUgYW5kDQo+ICsg IHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBh bHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQ SSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5n dGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFi bGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0K PiArRUZJQVBJDQo+ICtQYXJzZUFjcGlNY2ZnICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4g KyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiAr ICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMy IE9mZnNldDsNCj4gKyAgVUlOVDMyIFBjaUNmZ09mZnNldDsNCj4gKyAgVUlOVDgqIFBjaUNmZ1Nw YWNlUHRyOw0KPiArDQo+ICsgIGlmICghVHJhY2UpIHsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0N Cj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgICAgIFRSVUUsDQo+ ICsgICAgICAgICAgICAgMCwNCj4gKyAgICAgICAgICAgICAiTUNGRyIsDQo+ICsgICAgICAgICAg ICAgUHRyLA0KPiArICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgICAgICAgICAg ICBQQVJTRVJfUEFSQU1TIChNY2ZnUGFyc2VyKQ0KPiArICAgICAgICAgICAgICk7DQo+ICsNCj4g KyAgUGNpQ2ZnU3BhY2VQdHIgPSBQdHIgKyBPZmZzZXQ7DQo+ICsNCj4gKyAgd2hpbGUgKE9mZnNl dCA8IEFjcGlUYWJsZUxlbmd0aCkgew0KPiArICAgIFBjaUNmZ09mZnNldCA9IFBhcnNlQWNwaSAo DQo+ICsgICAgICAgICAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgICAgICAgICAg MiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICJQQ0kgQ29uZmlndXJhdGlvbiBTcGFjZSIsDQo+ ICsgICAgICAgICAgICAgICAgICAgICBQY2lDZmdTcGFjZVB0ciwNCj4gKyAgICAgICAgICAgICAg ICAgICAgIChBY3BpVGFibGVMZW5ndGggLSBPZmZzZXQpLA0KPiArICAgICAgICAgICAgICAgICAg ICAgUEFSU0VSX1BBUkFNUyAoUGNpQ2ZnU3BhY2VCYXNlQWRkclBhcnNlcikNCj4gKyAgICAgICAg ICAgICAgICAgICAgICk7DQo+ICsgICAgUGNpQ2ZnU3BhY2VQdHIgKz0gUGNpQ2ZnT2Zmc2V0Ow0K PiArICAgIE9mZnNldCArPSBQY2lDZmdPZmZzZXQ7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoq IFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxl ICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxl ICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVG SV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiAr ICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRo ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiAr RUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtNY2ZnUGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiAr ICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJ TiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4g K3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElf Nl8yX1BDSV9FWFBSRVNTX01FTU9SWV9NQVBQRURfQ09ORklHVVJBVElPTl9TUEFDRV9CQVNFX0FE RFJFU1NfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJzZUFj cGlNY2ZnDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRo ZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxl IHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRv IHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VO RCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9T VEFUVVMNCj4gK0VGSUFQSQ0KPiArTWNmZ1BhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBD T05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAg ICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4g KyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJf UENJX0VYUFJFU1NfTUVNT1JZX01BUFBFRF9DT05GSUdVUkFUSU9OX1NQQUNFX0JBU0VfQUREUkVT U19ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4g ZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyTGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyTGliLmluZg0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi40N2QxZDU2YTUyODk2ZWM3ZDQwMjFlOGUyM2FlZjJhZmVmMjU2Y2IzDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01jZmdQYXJzZXJMaWIuaW5mDQo+IEBAIC0wLDAgKzEs MzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4 LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRoaXMgcHJv Z3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArIyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0KPiArIyAgVEhF IFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJ UyIgQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIyMNCj4gKw0KPiArW0Rl ZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiArICBCQVNFX05BTUUg ICAgICA9IE1jZmdQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAgICAgPSA0N0U4QzEwRC02Q0Uw LTQ1NUMtQTdCQy04M0E3QjA4OTVDOUYNCj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gKyAg TU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxE WEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gTWNmZ1BhcnNlckxpYkNvbnN0cnVjdG9y DQo+ICsgIERFU1RSVUNUT1IgICAgID0gTWNmZ1BhcnNlckxpYkRlc3RydWN0b3INCj4gKw0KPiAr W1NvdXJjZXNdDQo+ICsgIE1jZmdQYXJzZXIuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1k ZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1 bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIFNo ZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlci5jIGIvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Sc2RwL1Jz ZHBQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWM1NTA4ZDIyMmVmMTRlOTljMmQzOTJhMDAz M2U2YzZkNWZhYTNlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZXIuYw0KPiBA QCAtMCwwICsxLDIxNCBAQA0KPiArLyoqDQo+ICsgIFJTRFAgdGFibGUgcGFyc2VyDQo+ICsNCj4g KyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMN Cj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRo aXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91 bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQ UkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAr DQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlv biAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxM aWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJz ZXIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0K PiArDQo+ICsvLyBMb2NhbCBWYXJpYWJsZXMNCj4gK1NUQVRJQyBDT05TVCBVSU5UNjQqIFhzZHRB ZGRyZXNzOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJTRFQgQWRk cmVzcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8g Y29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAg ICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiAr Ki8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZVJzZHRBZGRyZXNz ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKTsN Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBYU0RUIEFkZHJlc3MuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg ZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQg c3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAg Y291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtT VEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVYc2R0QWRkcmVzcyAoDQo+ICsg IElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ICsNCj4g Ky8qKiBBbiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIFJTRFAgVGFibGUuDQo+ICsqLw0KPiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFJzZHBQYXJzZXJbXSA9IHsNCj4gKyAge0wiU2lnbmF0 dXJlIiwgOCwgMCwgTlVMTCwgRHVtcDhDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtM IkNoZWNrc3VtIiwgMSwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIk9lbSBJRCIsIDYsIDksIE5VTEwsIER1bXA2Q2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJSZXZpc2lvbiIsIDEsIDE1LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlJTRFQgQWRkcmVzcyIsIDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBWYWxp ZGF0ZVJzZHRBZGRyZXNzLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgNCwgMjAsIEwiJWQiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWFNEVCBBZGRyZXNzIiwgOCwgMjQsIEwi MHglbHgiLCBOVUxMLCAoVk9JRCoqKSZYc2R0QWRkcmVzcywNCj4gKyAgIFZhbGlkYXRlWHNkdEFk ZHJlc3MsIE5VTEx9LA0KPiArICB7TCJFeHRlbmRlZCBDaGVja3N1bSIsIDEsIDMyLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAzLCAzMywgTCIl eCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsv KiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJTRFQgQWRkcmVzcy4NCj4gKw0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRh Lg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBp bmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBh IHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiAr Vk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZVJzZHRBZGRyZXNzICgNCj4gKyAgSU4gVUlOVDgq IFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArI2lmIGRlZmlu ZWQoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gKyAgLy8gUmVm ZXJlbmNlOiBTZXJ2ZXIgQmFzZSBCb290IFJlcXVpcmVtZW50cyBTeXN0ZW0gU29mdHdhcmUgb24g QVJNIFBsYXRmb3Jtcw0KPiArICAvLyBTZWN0aW9uOiA0LjIuMS4xIFJTRFANCj4gKyAgLy8gUm9v dCBTeXN0ZW0gRGVzY3JpcHRpb24gUG9pbnRlciAoUlNEUCksIEFDUEkg77+9IDUuMi41Lg0KPiAr ICAvLyAgIC0gV2l0aGluIHRoZSBSU0RQLCB0aGUgUnNkdEFkZHJlc3MgZmllbGQgbXVzdCBiZSBu dWxsICh6ZXJvKSBhbmQgdGhlDQo+ICsgIC8vICAgICBYc2R0QWRkcmVzc3MgTVVTVCBiZSBhIHZh bGlkLCBub24tbnVsbCwgNjQtYml0IHZhbHVlLg0KPiArICBVSU5UMzIgUnNkdEFkZHIgPSAqKFVJ TlQzMiopUHRyOw0KPiArICBpZiAoUnNkdEFkZHIgIT0gMCkgew0KPiArICAgIEluY3JlbWVudEVy cm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVSUk9SOiBSc2R0IEFk ZHJlc3MgPSAweCVwLiBUaGlzIG11c3QgYmUgTlVMTCBvbiBBUk0gUGxhdGZvcm1zLiIsDQo+ICsg ICAgICBSc2R0QWRkcg0KPiArICAgICAgKTsNCj4gKyAgfQ0KPiArI2VuZGlmDQo+ICt9DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgWFNEVCBBZGRyZXNzLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxk IGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNp ZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxk IGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElD DQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1ZhbGlkYXRlWHNkdEFkZHJlc3MgKA0KPiArICBJTiBV SU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsjaWYg ZGVmaW5lZChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiArICAv LyBSZWZlcmVuY2U6IFNlcnZlciBCYXNlIEJvb3QgUmVxdWlyZW1lbnRzIFN5c3RlbSBTb2Z0d2Fy ZSBvbiBBUk0gUGxhdGZvcm1zDQo+ICsgIC8vIFNlY3Rpb246IDQuMi4xLjEgUlNEUA0KPiArICAv LyBSb290IFN5c3RlbSBEZXNjcmlwdGlvbiBQb2ludGVyIChSU0RQKSwgQUNQSSDvv70gNS4yLjUu DQo+ICsgIC8vICAgLSBXaXRoaW4gdGhlIFJTRFAsIHRoZSBSc2R0QWRkcmVzcyBmaWVsZCBtdXN0 IGJlIG51bGwgKHplcm8pIGFuZCB0aGUNCj4gKyAgLy8gICAgIFhzZHRBZGRyZXNzcyBNVVNUIGJl IGEgdmFsaWQsIG5vbi1udWxsLCA2NC1iaXQgdmFsdWUuDQo+ICsgIFVJTlQ2NCBYc2R0QWRkciA9 ICooVUlOVDY0KilQdHI7DQo+ICsgIGlmIChYc2R0QWRkciA9PSAwKSB7DQo+ICsgICAgSW5jcmVt ZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxuRVJST1I6IFhz ZHQgQWRkcmVzcyA9IDB4JXAuIFRoaXMgbXVzdCBub3QgYmUgTlVMTCBvbiBBUk0gUGxhdGZvcm1z LiIsDQo+ICsgICAgICBYc2R0QWRkcg0KPiArICAgICAgKTsNCj4gKyAgfQ0KPiArI2VuZGlmDQo+ ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBSU0RQIHRhYmxl Lg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgWFNE VCB0YWJsZS4NCj4gKyAgKiBOb3RlIC0gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHBh cnNpbmcgb2YgUlNEVCB0YWJsZS4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9y bXMgYSBSQVcgZHVtcCBvZiB0aGUgQUNQSSB0YWJsZSBhbmQNCj4gKyAgdmFsaWRhdGVzIHRoZSBj aGVja3N1bS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJV RSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAg ICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtp bl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBh cmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0K PiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpUnNkcCAoDQo+ICsgIElOIEJP T0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlU YWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ ICt7DQo+ICsgIGlmIChUcmFjZSkgew0KPiArICAgIER1bXBSYXcgKFB0ciwgQWNwaVRhYmxlTGVu Z3RoKTsNCj4gKyAgICBWZXJpZnlDaGVja3N1bSAoVFJVRSwgUHRyLCBBY3BpVGFibGVMZW5ndGgp Ow0KPiArICB9DQo+ICsNCj4gKyAgUGFyc2VBY3BpIChUcmFjZSwgMCwgIlJTRFAiLCBQdHIsIEFj cGlUYWJsZUxlbmd0aCwgUEFSU0VSX1BBUkFNUyAoUnNkcFBhcnNlcikpOw0KPiArDQo+ICsgIC8v IFRoaXMgY29kZSBjdXJyZW50bHkgc3VwcG9ydHMgcGFyc2luZyBvZiBYU0RUIHRhYmxlIG9ubHkN Cj4gKyAgLy8gYW5kIGRvZXMgbm90IHBhcnNlIHRoZSBSU0RUIHRhYmxlLiBQbGF0Zm9ybXMgcHJv dmlkZSB0aGUNCj4gKyAgLy8gUlNEVCB0byBlbmFibGUgY29tcGF0aWJpbGl0eSB3aXRoIEFDUEkg MS4wIG9wZXJhdGluZyBzeXN0ZW1zLg0KPiArICAvLyBUaGVyZWZvcmUgdGhlIFJTRFQgc2hvdWxk IG5vdCBiZSB1c2VkIG9uIEFSTSBwbGF0Zm9ybXMuDQo+ICsgIGlmICgoKlhzZHRBZGRyZXNzKSA9 PSAwKSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoTCJF UlJPUjogWFNEVCBQb2ludGVyIGlzIG5vdCBzZXQuXG4iKTsNCj4gKyAgICByZXR1cm47DQo+ICsg IH0NCj4gKw0KPiArICBQcm9jZXNzQWNwaVRhYmxlICgoVUlOVDgqKShVSU5UTikoKlhzZHRBZGRy ZXNzKSk7DQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsg IEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsg IEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0K PiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVn aXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBm b3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fz IGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg QSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VT ICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArUnNkcFBh cnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAg ICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05T VCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAo DQo+ICsgICAgICAgICAgIFJTRFBfVEFCTEVfSU5GTywNCj4gKyAgICAgICAgICAgUGFyc2VBY3Bp UnNkcA0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUg cGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0 byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0 aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg IFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQg ICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RB VFVTDQo+ICtFRklBUEkNCj4gK1JzZHBQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gKyAgSU4gQ09O U1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAg RUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsg IHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgUlNEUF9UQUJMRV9JTkZP DQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlckxpYi5p bmYgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L1JzZHAvUnNkcFBhcnNlckxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMzYjhlZmRiNjZmMDY3 ODYyYWU1MDlkNjQ1NzgzMTlmYzYzYjlmOA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2Rw UGFyc2VyTGliLmluZg0KPiBAQCAtMCwwICsxLDMzIEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiAr IyAgQ29weXJpZ2h0IChjKSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4N Cj4gKyMNCj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMN Cj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMg dGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBm b3VuZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNl LnBocA0KPiArIw0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJT RCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAx MDAxOQ0KPiArICBCQVNFX05BTUUgICAgICA9IFJzZHBQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlE ICAgICAgPSA5MzY1Q0VCMy01MkRDLTQ4OEQtOUUyRS1DNEUxRTMwNjJGQTkNCj4gKyAgVkVSU0lP Tl9TVFJJTkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJ QlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gUnNk cFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gUnNkcFBhcnNlckxp YkRlc3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIFJzZHBQYXJzZXIuYw0KPiArDQo+ ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxs UGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGli cmFyeUNsYXNzZXNdDQo+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+IGRpZmYgLS1naXQg YS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1Ns aXQvU2xpdFBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9TbGl0L1NsaXRQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmE0YzQx NmFhMjU5YWYxNmFhMGI3NzZkY2MwNTg2MDRiNWMxN2MyDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9T bGl0L1NsaXRQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDE4NyBAQA0KPiArLyoqDQo+ICsgIFNMSVQg dGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExp bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsg IHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0 aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp Y2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJV VEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRI T1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQ UkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0g QUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiArKiov DQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNsdWRl IDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLy8gTG9jYWwgVmFy aWFibGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDY0KiBTbGl0U3lzdGVtTG9jYWxpdHlDb3VudDsN Cj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiAr DQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBTTElUIHRh YmxlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTbGl0UGFyc2VyW10gPSB7 DQo+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiArICB7TCJOdW1iZXIg b2YgU3lzdGVtIExvY2FsaXRpZXMiLCA4LCAzNiwgTCIweCVseCIsIE5VTEwsDQo+ICsgICAoVk9J RCoqKSZTbGl0U3lzdGVtTG9jYWxpdHlDb3VudCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4g Ky8qKiBNYWNybyB0byBnZXQgdGhlIHZhbHVlIG9mIGEgU3lzdGVtIExvY2FsaXR5DQo+ICsqLw0K PiArI2RlZmluZSBTTElUX0VMRU1FTlQoUHRyLCBpLCBqKSAqKFB0ciArIChpICogTG9jYWxpdHlD b3VudCkgKyBqKQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgU0xJ VCB0YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBTTElUIHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0K PiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyB2YWxpZGF0ZXMgU3lzdGVtIExvY2FsaXRpZXMg Zm9yIHRoZSBmb2xsb3dpbmc6DQo+ICsgICAgLSBEaWFnb25hbCBlbGVtZW50cyBoYXZlIGEgbm9y bWFsaXplZCB2YWx1ZSBvZiAxMA0KPiArICAgIC0gUmVsYXRpdmUgZGlzdGFuY2UgZnJvbSBTeXN0 ZW0gTG9jYWxpdHkgYXQgaSpOK2ogaXMgc2FtZSBhcw0KPiArICAgICAgaipOK2kNCj4gKw0KPiAr ICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkg ZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3Ro ICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxl UmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4g K0VGSUFQSQ0KPiArUGFyc2VBY3BpU2xpdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsg IElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAg SU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBP ZmZzZXQ7DQo+ICsgIFVJTlQ2NCBpOw0KPiArICBVSU5UNjQgajsNCj4gKyAgVUlOVDY0IExvY2Fs aXR5Q291bnQ7DQo+ICsgIFVJTlQ4KiBMb2NhbGl0eVB0cjsNCj4gKyAgQ0hBUjE2IEJ1ZmZlcls4 MF07ICAvLyBVc2VkIGZvciBBc2NpaU5hbWUgcGFyYW0gb2YgUGFyc2VBY3BpDQo+ICsNCj4gKyAg aWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIE9mZnNldCA9 IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAwLA0K PiArICAgICAgICAgICAgICJTTElUIiwNCj4gKyAgICAgICAgICAgICBQdHIsDQo+ICsgICAgICAg ICAgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNs aXRQYXJzZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKyAgTG9jYWxpdHlQdHIgPSBQdHIgKyBP ZmZzZXQ7DQo+ICsNCj4gKyAgTG9jYWxpdHlDb3VudCA9ICpTbGl0U3lzdGVtTG9jYWxpdHlDb3Vu dDsNCj4gKyAgLy8gV2Ugb25seSBwcmludCB0aGUgTG9jYWxpdGllcyBpZiB0aGUgY291bnQgaXMg bGVzcyB0aGFuIDE2DQo+ICsgIC8vIElmIHRoZSBsb2NhbGl0eSBjb3VudCBpcyBtb3JlIHRoYW4g MTYgdGhlbiByZWZlciB0byB0aGUNCj4gKyAgLy8gcmF3IGRhdGEgZHVtcC4NCj4gKyAgaWYgKExv Y2FsaXR5Q291bnQgPCAxNikgew0KPiArICAgIFVuaWNvZGVTUHJpbnQgKA0KPiArICAgICAgQnVm ZmVyLA0KPiArICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAgICAgTCJFbnRyeVsweCVseF1b MHglbHhdIiwNCj4gKyAgICAgIExvY2FsaXR5Q291bnQsDQo+ICsgICAgICBMb2NhbGl0eUNvdW50 DQo+ICsgICAgICApOw0KPiArICAgIFByaW50RmllbGROYW1lICgwLCBCdWZmZXIpOw0KPiArICAg IFByaW50IChMIlxuIik7DQo+ICsgICAgUHJpbnQgKEwiICAgICAgICIpOw0KPiArICAgIGZvciAo aiA9IDA7IGogPCBMb2NhbGl0eUNvdW50OyBqKyspIHsNCj4gKyAgICAgIFByaW50IChMIiAoJTNk KSAiLCBqKTsNCj4gKyAgICB9DQo+ICsgICAgUHJpbnQgKEwiXG4iKTsNCj4gKyAgICBmb3IgKGkg PSAwOyBpIDwgTG9jYWxpdHlDb3VudDsgaSsrKSB7DQo+ICsgICAgICBQcmludCAoTCIgKCUzZCkg IiwgaSk7DQo+ICsgICAgICBmb3IgKGogPSAwOyBqIDwgTG9jYWxpdHlDb3VudDsgaisrKSB7DQo+ ICsgICAgICAgIFByaW50IChMIiAgJTNkICAiLCBTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBp LCBqKSk7DQo+ICsgICAgICB9DQo+ICsgICAgICBQcmludCAoTCJcbiIpOw0KPiArICAgIH0NCj4g KyAgfQ0KPiArDQo+ICsgIC8vIFZhbGlkYXRlDQo+ICsgIGZvciAoaSA9IDA7IGkgPCBMb2NhbGl0 eUNvdW50OyBpKyspIHsNCj4gKyAgICBmb3IgKGogPSAwOyBqIDwgTG9jYWxpdHlDb3VudDsgaisr KSB7DQo+ICsgICAgICAvLyBFbGVtZW50W3hdW3hdIG11c3QgYmUgZXF1YWwgdG8gMTANCj4gKyAg ICAgIGlmICgoaSA9PSBqKSAmJiAoU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaSwgaikgIT0g MTApKSB7DQo+ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICAgIFBy aW50ICgNCj4gKyAgICAgICAgICBMIkVSUk9SOiBEaWFnb25hbCBFbGVtZW50WzB4JWx4XVsweCVs eF0gKCUzZCkuIg0KPiArICAgICAgICAgICAgIiBOb3JtYWxpemVkIFZhbHVlIGlzIG5vdCAxMFxu IiwNCj4gKyAgICAgICAgICBpLA0KPiArICAgICAgICAgIGosDQo+ICsgICAgICAgICAgU0xJVF9F TEVNRU5UIChMb2NhbGl0eVB0ciwgaSwgaikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgfQ0K PiArICAgICAgLy8gRWxlbWVudFtpXVtqXSBtdXN0IGJlIGVxdWFsIHRvIEVsZW1lbnRbal1baV0N Cj4gKyAgICAgIGlmIChTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKSAhPQ0KPiArICAg ICAgICAgIFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIsIGosIGkpKSB7DQo+ICsgICAgICAgIElu Y3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICAgIFByaW50ICgNCj4gKyAgICAgICAgICBM IkVSUk9SOiBSZWxhdGl2ZSBkaXN0YW5jZXMgZm9yIEVsZW1lbnRbMHglbHhdWzB4JWx4XSAoJTNk KSBhbmQgXG4iDQo+ICsgICAgICAgICAgICJFbGVtZW50WzB4JWx4XVsweCVseF0gKCUzZCkgZG8g bm90IG1hdGNoLlxuIiwNCj4gKyAgICAgICAgICBpLA0KPiArICAgICAgICAgIGosDQo+ICsgICAg ICAgICAgU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaSwgaiksDQo+ICsgICAgICAgICAgaiwN Cj4gKyAgICAgICAgICBpLA0KPiArICAgICAgICAgIFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIs IGosIGkpDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ICsgIH0NCj4g K30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtp bl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtp bl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0K PiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQ SSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSBy ZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRl ciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNl IHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJz ZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTbGl0UGFyc2VyTGliQ29u c3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdl SGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRh YmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAg ICAgICAgRUZJX0FDUElfNl8yX1NZU1RFTV9MT0NBTElUWV9JTkZPUk1BVElPTl9UQUJMRV9TSUdO QVRVUkUsDQo+ICsgICAgICAgICAgIFBhcnNlQWNwaVNsaXQNCj4gKyAgICAgICAgICAgKTsNCj4g K30NCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0g W2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0g W2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJl ZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90 IHJlZ2lzdGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTbGl0UGFy c2VyTGliRGVzdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1Qg U3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAo DQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9TWVNURU1fTE9DQUxJVFlfSU5GT1JNQVRJT05f VEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQv U2xpdFBhcnNlckxpYi5pbmYgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlckxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u OTY0MzBlZDlhOThmMWNjY2NkZTA3NTIyYjRiZjkwZDZkMjJjZDc5Mg0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvU2xpdC9TbGl0UGFyc2VyTGliLmluZg0KPiBAQCAtMCwwICsxLDMzIEBADQo+ICsjIyBA ZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQu IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxh YmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4g KyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBv ZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9y Zy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJ U1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiAr IyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlU SEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJ TkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1FICAgICAgPSBTbGl0UGFy c2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gM0RDRjczMzMtMzY3Qi00RDQwLTg1NkEtRkYw RjczRkI2QjQ5DQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAg ID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiAr ICBDT05TVFJVQ1RPUiAgICA9IFNsaXRQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVD VE9SICAgICA9IFNsaXRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiAr ICBTbGl0UGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRl Yw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVs ZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBTaGVsbEFjcGlWaWV3Q29t bWFuZExpYg0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyLmMNCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uMjQ2ODdhNzA4YmI4MjhjNTNjZWI3YTYxZTllMTFjZTAwYjU4M2NkNQ0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyLmMNCj4gQEAgLTAsMCArMSwyMTMg QEANCj4gKy8qKg0KPiArICBTUENSIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAo YykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlv bi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0 dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBU SEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFT IElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJl ZmVyZW5jZShzKToNCj4gKyAgICAtIE1pY3Jvc29mdCBTZXJpYWwgUG9ydCBDb25zb2xlIFJlZGly ZWN0aW9uIFRhYmxlDQo+ICsgICAgICBTcGVjaWZpY2F0aW9uIC0gVmVyc2lvbiAxLjAzIC0gQXVn dXN0IDEwLCAyMDE1Lg0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJk L0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1NlcmlhbFBvcnRDb25zb2xl UmVkaXJlY3Rpb25UYWJsZS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiAr I2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExp YnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExvY2FsIHZhcmlh Ymxlcw0KPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87 DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSW50ZXJydXB0IFR5cGUu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRl eHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVJbnRlcnJ1cHRUeXBlICgN Cj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKTsNCj4g Kw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJcnEuDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4N Cj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5m b3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBw b2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZP SUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVJcnEgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiAr ICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIg YXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBTUENSIFRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQyBD T05TVCBBQ1BJX1BBUlNFUiBTcGNyUGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0FDUElfSEVBREVS ICgmQWNwaUhkckluZm8pLA0KPiArICB7TCJJbnRlcmZhY2UgVHlwZSIsIDEsIDM2LCBMIiVkIiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMywgMzcsIEwiJXgg JXggJXgiLCBEdW1wM0NoYXJzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQmFzZSBBZGRy ZXNzIiwgMTIsIDQwLCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi SW50ZXJydXB0IFR5cGUiLCAxLCA1MiwgTCIlZCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlSW50ZXJy dXB0VHlwZSwgTlVMTH0sDQo+ICsgIHtMIklSUSIsIDEsIDUzLCBMIiVkIiwgTlVMTCwgTlVMTCwg VmFsaWRhdGVJcnEsIE5VTEx9LA0KPiArICB7TCJHbG9iYWwgU3lzdGVtIEludGVycnVwdCIsIDQs IDU0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQmF1ZCBSYXRl IiwgMSwgNTgsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGFyaXR5 IiwgMSwgNTksIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU3RvcCBC aXRzIiwgMSwgNjAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRmxv dyBDb250cm9sIiwgMSwgNjEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJUZXJtaW5hbCBUeXBlIiwgMSwgNjIsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAxLCA2MywgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArDQo+ICsgIHtMIlBDSSBEZXZpY2UgSUQiLCAyLCA2NCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBDSSBWZW5kb3IgSUQiLCAyLCA2NiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBDSSBCdXMgTnVtYmVyIiwgMSwg NjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQQ0kgRGV2aWNl IE51bWJlciIsIDEsIDY5LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiUENJIEZ1bmN0aW9uIE51bWJlciIsIDEsIDcwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gKyAge0wiUENJIEZsYWdzIiwgNCwgNzEsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJQQ0kgU2VnbWVudCIsIDEsIDc1LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCA3NiwgTCIleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2 YWxpZGF0ZXMgdGhlIEludGVycnVwdCBUeXBlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJhbSBb aW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4g dGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUg QUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklBUEkN Cj4gK1ZhbGlkYXRlSW50ZXJydXB0VHlwZSAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElO IFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyNpZiBkZWZpbmVkIChNREVfQ1BVX0FS TSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiArICBVSU5UOCBJbnRlcnJ1cHRUeXBl ID0gKlB0cjsNCj4gKyAgaWYgKEludGVycnVwdFR5cGUgIT0NCj4gKyAgICAgICAgRUZJX0FDUElf U0VSSUFMX1BPUlRfQ09OU09MRV9SRURJUkVDVElPTl9UQUJMRV9JTlRFUlJVUFRfVFlQRV9HSUMp IHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAg ICAgIEwiXG5FUlJPUjogSW50ZXJydXB0VHlwZSA9ICVkLiBUaGlzIG11c3QgYmUgOCBvbiBBUk0g UGxhdGZvcm1zIiwNCj4gKyAgICAgIEludGVycnVwdFR5cGUNCj4gKyAgICAgICk7DQo+ICsgIH0N Cj4gKyNlbmRpZg0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhl IElycS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8g Y29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAg ICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiAr Ki8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZUlycSAoDQo+ICsg IElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4g KyNpZiBkZWZpbmVkIChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0K PiArICBVSU5UOCBJcnEgPSAqUHRyOw0KPiArICBpZiAoSXJxICE9IDApIHsNCj4gKyAgICBJbmNy ZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjog SXJxID0gJWQuIFRoaXMgbXVzdCBiZSB6ZXJvIG9uIEFSTSBQbGF0Zm9ybXNcbiIsDQo+ICsgICAg ICBJcnENCj4gKyAgICAgICk7DQo+ICsgIH0NCj4gKyNlbmRpZg0KPiArfQ0KPiArDQo+ICsvKiog VGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgU1BDUiB0YWJsZS4NCj4gKyAgV2hlbiB0cmFj ZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBTUENSIHRhYmxlIGFuZA0KPiAr ICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24g YWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9ucyBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBB Q1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxl bmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlU YWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtWT0lE DQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaVNwY3IgKA0KPiArICBJTiBCT09MRUFOIFRyYWNlLA0K PiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBpZiAo IVRyYWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgLy8gRHVtcCB0aGUg U1BDUg0KPiArICBQYXJzZUFjcGkgKA0KPiArICAgIFRSVUUsDQo+ICsgICAgMCwNCj4gKyAgICAi U1BDUiIsDQo+ICsgICAgUHRyLA0KPiArICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgICBQQVJT RVJfUEFSQU1TIChTcGNyUGFyc2VyKQ0KPiArICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdp c3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhl IGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9p bnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxS RUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBA cmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9T VEFUVVMNCj4gK0VGSUFQSQ0KPiArU3BjclBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4g Q09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAg ICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9T RVJJQUxfUE9SVF9DT05TT0xFX1JFRElSRUNUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAg ICAgICAgUGFyc2VBY3BpU3Bjcg0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiog RGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRs ZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJs ZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFs IEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4g KyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NwY3JQYXJzZXJMaWJEZXN0cnVjdG9y ICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiAr ICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAg RUZJX0FDUElfNl8yX1NFUklBTF9QT1JUX0NPTlNPTEVfUkVESVJFQ1RJT05fVEFCTEVfU0lHTkFU VVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3BjclBhcnNlckxp Yi5pbmYgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1NwY3IvU3BjclBhcnNlckxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRhZGQzMWRlMDMw YWI3NzcxZmMzMDNlYmE3YjkyMjI3MDI2NTk3MA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bjci9T cGNyUGFyc2VyTGliLmluZg0KPiBAQCAtMCwwICsxLDMzIEBADQo+ICsjIyBAZmlsZQ0KPiArIw0K PiArIyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMg cmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcg bWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFj Y29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5z ZSBtYXkgYmUgZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9i c2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVO REVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArIyAgV0lUSE9VVCBX QVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1Mg T1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAg ICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1FICAgICAgPSBTcGNyUGFyc2VyTGliDQo+ICsg IEZJTEVfR1VJRCAgICAgID0gMDhDMTdDNEMtRTYyRC00QUU0LTk1QzUtREVGNDJBMjRBNTZDDQo+ ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZF Ug0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RP UiAgICA9IFNwY3JQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IFNw Y3JQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBTcGNyUGFyc2Vy LmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVs bFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4g Kw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiBk aWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9TcmF0L1NyYXRQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3JhdC9TcmF0UGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uYmVlNTFhN2VlNmEzNTUzZmM0MGQxNzY3MWFjZDY3MWYwYmUwMWU1OQ0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvU3JhdC9TcmF0UGFyc2VyLmMNCj4gQEAgLTAsMCArMSwzNzUgQEANCj4gKy8qKg0K PiArICBTUkFUIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIw MTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0g YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFk ZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGlj ZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxs IHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291 cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJ UyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywN Cj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwg RUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToN Cj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIw MTcNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVm aUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiAr I2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8v IExvY2FsIFZhcmlhYmxlcw0KPiArU1RBVElDIENPTlNUIFVJTlQ4KiBTcmF0UkFUeXBlOw0KPiAr U1RBVElDIENPTlNUIFVJTlQ4KiBTcmF0UkFMZW5ndGg7DQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQ VElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24g dmFsaWRhdGVzIHRoZSBSZXNlcnZlZCBmaWVsZCBpbiB0aGUgU1JBVCB0YWJsZSBoZWFkZXIuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg ZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQg c3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAg Y291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtT VEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVTcmF0UmVzZXJ2ZWQgKA0KPiAr ICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFQSUMgUHJveGltaXR5IERvbWFpbiBmaWVs ZC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIEZvcm1hdCBzdHJpbmcgZm9yIHRyYWNp bmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBTcmF0 QXBpY1Byb3hpbWl0eSAoDQo+ICsgIElOICBDT05TVCBDSEFSMTYqICBGb3JtYXQsDQo+ICsgIElO ICBVSU5UOCogICAgICAgICBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VS IGFycmF5IGRlc2NyaWJpbmcgdGhlIFNSQVQgVGFibGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNU IEFDUElfUEFSU0VSIFNyYXRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZB Y3BpSGRySW5mbyksDQo+ICsgIHtMIlJlc2VydmVkIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsIE5V TEwsIFZhbGlkYXRlU3JhdFJlc2VydmVkLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA4LCA0 MCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiog QW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUmVzb3VyY2UgQWxsb2NhdGlvbg0K PiArICAgIHN0cnVjdHVyZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFS U0VSIFNyYXRSZXNvdXJjZUFsbG9jYXRpb25QYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEs IDAsIE5VTEwsIE5VTEwsIChWT0lEKiopJlNyYXRSQVR5cGUsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJMZW5ndGgiLCAxLCAxLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZTcmF0UkFMZW5ndGgsIE5VTEws IE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmlu ZyB0aGUgR0lDQyBBZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFD UElfUEFSU0VSIFNyYXRHaWNDQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEs IDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAx LCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJQcm94 aW1pdHkgRG9tYWluIiwgNCwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIkFDUEkgUHJvY2Vzc29yIFVJRCIsIDQsIDYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJGbGFncyIsIDQsIDEwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiQ2xvY2sgRG9tYWluIiwgNCwgMTQsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgR0lDIElUUyBBZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRHaWNJVFNBZmZpbml0eVBhcnNlcltdID0gew0K PiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArDQo+ICsgIHtMIlByb3hpbWl0eSBEb21haW4iLCA0LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCA2LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiSVRTIElkIiwgNCwgOCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgTWVtb3J5IEFmZmluaXR5IHN0cnVjdHVyZS4NCj4gKyovDQo+ICtT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3JhdE1lbUFmZmluaXR5UGFyc2VyW10gPSB7DQo+ICsg IHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiTGVuZ3RoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsN Cj4gKyAge0wiUHJveGltaXR5IERvbWFpbiIsIDQsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDIsIDYsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJCYXNlIEFkZHJlc3MgTG93IiwgNCwgOCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkJhc2UgQWRkcmVzcyBIaWdoIiwgNCwg MTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGggTG93 IiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5n dGggSGlnaCIsIDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiUmVzZXJ2ZWQiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIkZsYWdzIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJSZXNlcnZlZCIsIDgsIDMyLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRo ZSBBUElDL1NBUElDIEFmZmluaXR5IHN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1Qg QUNQSV9QQVJTRVIgU3JhdEFwY2lTYXBpY0FmZmluaXR5UGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5 cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVu Z3RoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAg e0wiUHJveGltaXR5IERvbWFpbiBbNzowXSIsIDEsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJBUElDIElEIiwgMSwgMywgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxvY2FsIFNBUElDIEVJRCIsIDEsIDgsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQcm94aW1pdHkgRG9tYWluIFszMTo4XSIs IDMsIDksIEwiMHgleCIsIER1bXBTcmF0QXBpY1Byb3hpbWl0eSwNCj4gKyAgIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJDbG9jayBEb21haW4iLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBk ZXNjcmliaW5nIHRoZSBQcm9jZXNzb3IgTG9jYWwgeDJBUElDDQo+ICsgICAgQWZmaW5pdHkgc3Ry dWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0WDJBcGNpQWZm aW5pdHlQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQcm94aW1pdHkgRG9tYWluIiwgNCwg NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlgyQVBJQyBJRCIs IDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbGFncyIs IDQsIDEyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQ2xvY2sg RG9tYWluIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJSZXNlcnZlZCIsIDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiAr fTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBSZXNlcnZlZCBmaWVs ZCBpbiB0aGUgU1JBVCB0YWJsZSBoZWFkZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtp bl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0 aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBB Q1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0K PiArVmFsaWRhdGVTcmF0UmVzZXJ2ZWQgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBW T0lEKiAgQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsgIGlmICgqKFVJTlQzMiopUHRyICE9IDEp IHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50IChMIlxuRVJS T1I6IFJlc2VydmVkIHNob3VsZCBiZSAxIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuIik7 DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIHRoZSBBUElD IFByb3hpbWl0eSBEb21haW4gZmllbGQuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBG b3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArU1RBVElD DQo+ICtWT0lEDQo+ICtEdW1wU3JhdEFwaWNQcm94aW1pdHkgKA0KPiArIElOIENPTlNUIENIQVIx NiogRm9ybWF0LA0KPiArIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgKQ0KPiArew0KPiArICBV SU5UMzIgUHJveGltaXR5RG9tYWluID0gUHRyWzBdIHwgKFB0clsxXSA8PCA4KSB8IChQdHJbMl0g PDwgMTYpOw0KPiArICBQcmludCAoRm9ybWF0LCBQcm94aW1pdHlEb21haW4pOw0KPiArfQ0KPiAr DQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgU1JBVCB0YWJsZS4NCj4gKyAg V2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBTUkFUIHRhYmxl IGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIFRoaXMg ZnVuY3Rpb24gcGFyc2VzIHRoZSBmb2xsb3dpbmcgUmVzb3VyY2UgQWxsb2NhdGlvbiBTdHJ1Y3R1 cmVzOg0KPiArICAgIC0gUHJvY2Vzc29yIExvY2FsIEFQSUMvU0FQSUMgQWZmaW5pdHkgU3RydWN0 dXJlDQo+ICsgICAgLSBNZW1vcnkgQWZmaW5pdHkgU3RydWN0dXJlDQo+ICsgICAgLSBQcm9jZXNz b3IgTG9jYWwgeDJBUElDIEFmZmluaXR5IFN0cnVjdHVyZQ0KPiArICAgIC0gR0lDQyBBZmZpbml0 eSBTdHJ1Y3R1cmUNCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRh dGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJh Y2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBi dWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhl IEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lv biBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNl QWNwaVNyYXQgKA0KPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwN Cj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRh YmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBVSU5U OCogUmVzb3VyY2VQdHI7DQo+ICsgIFVJTlQzMiBHaWNDQWZmaW5pdHlJbmRleCA9IDA7DQo+ICsg IFVJTlQzMiBHaWNJVFNBZmZpbml0eUluZGV4ID0gMDsNCj4gKyAgVUlOVDMyIE1lbW9yeUFmZmlu aXR5SW5kZXggPSAwOw0KPiArICBVSU5UMzIgQXBpY1NhcGljQWZmaW5pdHlJbmRleCA9IDA7DQo+ ICsgIFVJTlQzMiBYMkFwaWNBZmZpbml0eUluZGV4ID0gMDsNCj4gKyAgQ0hBUjggIEJ1ZmZlcls4 MF07ICAvLyBVc2VkIGZvciBBc2NpaU5hbWUgcGFyYW0gb2YgUGFyc2VBY3BpDQo+ICsNCj4gKyAg aWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIE9mZnNldCA9 IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAgICAwLA0K PiArICAgICAgICAgICAgICJTUkFUIiwNCj4gKyAgICAgICAgICAgICBQdHIsDQo+ICsgICAgICAg ICAgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNy YXRQYXJzZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKyAgUmVzb3VyY2VQdHIgPSBQdHIgKyBP ZmZzZXQ7DQo+ICsNCj4gKyAgd2hpbGUgKE9mZnNldCA8IEFjcGlUYWJsZUxlbmd0aCkgew0KPiAr ICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICBGQUxTRSwNCj4gKyAgICAgIDAsDQo+ICsgICAgICBO VUxMLA0KPiArICAgICAgUmVzb3VyY2VQdHIsDQo+ICsgICAgICAyLCAgLy8gVGhlIGxlbmd0aCBp cyAxIGJ5dGUgYXQgb2Zmc2V0IDENCj4gKyAgICAgIFBBUlNFUl9QQVJBTVMgKFNyYXRSZXNvdXJj ZUFsbG9jYXRpb25QYXJzZXIpDQo+ICsgICAgICApOw0KPiArDQo+ICsgICAgc3dpdGNoICgqU3Jh dFJBVHlwZSkgew0KPiArICAgICAgY2FzZSBFRklfQUNQSV82XzJfR0lDQ19BRkZJTklUWToNCj4g KyAgICAgICAgQXNjaWlTUHJpbnQgKA0KPiArICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAg ICBzaXplb2YgKEJ1ZmZlciksDQo+ICsgICAgICAgICAgIkdJQ0MgQWZmaW5pdHkgU3RydWN0dXJl IFslZF0iLA0KPiArICAgICAgICAgIEdpY0NBZmZpbml0eUluZGV4KysNCj4gKyAgICAgICAgICAp Ow0KPiArICAgICAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAg ICAgMiwNCj4gKyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgUmVzb3VyY2VQdHIsDQo+ ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChT cmF0R2ljQ0FmZmluaXR5UGFyc2VyKQ0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFr Ow0KPiArDQo+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNfSVRTX0FGRklOSVRZOg0KPiAr ICAgICAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAg IHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICAgICAiR0lDIElUUyBBZmZpbml0eSBTdHJ1Y3R1 cmUgWyVkXSIsDQo+ICsgICAgICAgICAgR2ljSVRTQWZmaW5pdHlJbmRleCsrDQo+ICsgICAgICAg ICk7DQo+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAg ICAgICAyLA0KPiArICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICBSZXNvdXJjZVB0ciwN Cj4gKyAgICAgICAgICAqU3JhdFJBTGVuZ3RoLA0KPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMg KFNyYXRHaWNJVFNBZmZpbml0eVBhcnNlcikNCj4gKyAgICAgICAgKTsNCj4gKyAgICAgICAgYnJl YWs7DQo+ICsNCj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX01FTU9SWV9BRkZJTklUWToNCj4g KyAgICAgICAgQXNjaWlTUHJpbnQgKA0KPiArICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAg ICBzaXplb2YgKEJ1ZmZlciksDQo+ICsgICAgICAgICAgIk1lbW9yeSBBZmZpbml0eSBTdHJ1Y3R1 cmUgWyVkXSIsDQo+ICsgICAgICAgICAgTWVtb3J5QWZmaW5pdHlJbmRleCsrDQo+ICsgICAgICAg ICAgKTsNCj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAg ICAgICAgIDIsDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIFJlc291cmNlUHRy LA0KPiArICAgICAgICAgICpTcmF0UkFMZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFN UyAoU3JhdE1lbUFmZmluaXR5UGFyc2VyKQ0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJy ZWFrOw0KPiArDQo+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9QUk9DRVNTT1JfTE9DQUxfQVBJ Q19TQVBJQ19BRkZJTklUWToNCj4gKyAgICAgICAgQXNjaWlTUHJpbnQgKA0KPiArICAgICAgICAg IEJ1ZmZlciwNCj4gKyAgICAgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ICsgICAgICAgICAgIkFQ SUMvU0FQSUMgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0KPiArICAgICAgICAgIEFwaWNTYXBp Y0FmZmluaXR5SW5kZXgrKw0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIFBhcnNlQWNwaSAo DQo+ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAyLA0KPiArICAgICAgICAgIEJ1ZmZl ciwNCj4gKyAgICAgICAgICBSZXNvdXJjZVB0ciwNCj4gKyAgICAgICAgICAqU3JhdFJBTGVuZ3Ro LA0KPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNyYXRBcGNpU2FwaWNBZmZpbml0eVBhcnNl cikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgY2Fz ZSBFRklfQUNQSV82XzJfUFJPQ0VTU09SX0xPQ0FMX1gyQVBJQ19BRkZJTklUWToNCj4gKyAgICAg ICAgQXNjaWlTUHJpbnQgKA0KPiArICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICBzaXpl b2YgKEJ1ZmZlciksDQo+ICsgICAgICAgICAgIlgyQVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUgWyVk XSIsDQo+ICsgICAgICAgICAgWDJBcGljQWZmaW5pdHlJbmRleCsrDQo+ICsgICAgICAgICAgKTsN Cj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAg IDIsDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIFJlc291cmNlUHRyLA0KPiAr ICAgICAgICAgICpTcmF0UkFMZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU3Jh dFgyQXBjaUFmZmluaXR5UGFyc2VyKQ0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFr Ow0KPiArDQo+ICsgICAgICBkZWZhdWx0Og0KPiArICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50 ICgpOw0KPiArICAgICAgICBQcmludCAoTCJFUlJPUjogVW5rbm93biBTUkFUIEFmZmluaXR5IHR5 cGUgPSAweCV4XG4iLCAqU3JhdFJBVHlwZSk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgIH0N Cj4gKw0KPiArICAgIFJlc291cmNlUHRyICs9ICgqU3JhdFJBTGVuZ3RoKTsNCj4gKyAgICBPZmZz ZXQgKz0gKCpTcmF0UkFMZW5ndGgpOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3Rl ciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhh bmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRl ciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFE WV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZh bCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBAcmV0 dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9TVEFU VVMNCj4gK0VGSUFQSQ0KPiArU3JhdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gQ09O U1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAg RUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsg IHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9TWVNU RU1fUkVTT1VSQ0VfQUZGSU5JVFlfVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJz ZUFjcGlTcmF0DQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVy IHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFu ZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVy IHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9G T1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VG SV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU3JhdFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJ TiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAg ICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sN Cj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82 XzJfU1lTVEVNX1JFU09VUkNFX0FGRklOSVRZX1RBQkxFX1NJR05BVFVSRQ0KPiArICAgICAgICAg ICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXJMaWIuaW5mIGIvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJz ZXJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4MjNiYWI1MGRmNjQ5NzQ4OGU0MWZhYWE1YWU3 YTgxM2FlZTQ3OTINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlckxpYi5pbmYN Cj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAo YykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0K PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRp c3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0 DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VO U0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBS RVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsj Iw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ ICsgIEJBU0VfTkFNRSAgICAgID0gU3JhdFBhcnNlckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9 IDEwNkIyMkNDLTE0OTktNDZENC1CNkZCLTM0MUJCODc4RkJDNQ0KPiArICBWRVJTSU9OX1NUUklO RyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9D TEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAgPSBTcmF0UGFyc2Vy TGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBTcmF0UGFyc2VyTGliRGVzdHJ1 Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgU3JhdFBhcnNlci5jDQo+ICsNCj4gK1tQYWNr YWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVj DQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xh c3Nlc10NCj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gZGlmZiAtLWdpdCBhL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0 UGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL1NzZHQvU3NkdFBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjNTYyNDJiMzUxYzhj MDRkMzEyMzQ5MDg2ZTM1M2M5NGU0MzBmMzINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQvU3Nk dFBhcnNlci5jDQo+IEBAIC0wLDAgKzEsOTIgQEANCj4gKy8qKg0KPiArICBTU0RUIHRhYmxlIHBh cnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIg dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBh Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vu c2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9i c2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJS QU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1Ig SU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkgNi4y IFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNTRFQgdGFibGUuDQo+ICsgIFdo ZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1NEVCB0YWJsZSBh bmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKyAgRm9yIHRoZSBTU0RU IHRhYmxlIG9ubHkgdGhlIEFDUEkgaGVhZGVyIGZpZWxkcyBhcmUNCj4gKyAgcGFyc2VkIGFuZCB0 cmFjZWQuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUs IHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5d IEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJh bSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4g KyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaVNzZHQgKA0KPiArICBJTiBCT09M RUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFi bGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiAr ew0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAg RHVtcEFjcGlIZWFkZXIgKFB0cik7DQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFy c2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0 aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUg U3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVE ICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VG SUFQSQ0KPiArU3NkdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hB TkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RF TV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBS ZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9TRUNPTkRBUllfU1lT VEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgICAgICAgUGFyc2VBY3Bp U3NkdA0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdpc3RlciB0aGUg cGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0 byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0 aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg IFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQg ICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ICtFRklfU1RB VFVTDQo+ICtFRklBUEkNCj4gK1NzZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gKyAgSU4gQ09O U1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAg RUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsg IHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX1NF Q09OREFSWV9TWVNURU1fREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAg ICk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQvU3NkdFBhcnNlckxpYi5pbmYgYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQvU3NkdFBhcnNl ckxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdlNTVlYWYwODI0YjZjOGQwNWNlOWI3OWQ5NTk4 ZWRkOGY2NzNkOQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyTGliLmluZg0K PiBAQCAtMCwwICsxLDMzIEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChj KSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBh cmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz dHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQN Cj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4g KyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5T RSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJF U0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMj DQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4g KyAgQkFTRV9OQU1FICAgICAgPSBTc2R0UGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0g QkMyRkY1MzgtOEZFQi00OEUzLTkyRDEtRUNBMDFCMjc3QjJDDQo+ICsgIFZFUlNJT05fU1RSSU5H ID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NM QVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IFNzZHRQYXJzZXJM aWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IFNzZHRQYXJzZXJMaWJEZXN0cnVj dG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBTc2R0UGFyc2VyLmMNCj4gKw0KPiArW1BhY2th Z2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMN Cj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFz c2VzXQ0KPiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQ YXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvWHNkdC9Yc2R0UGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI5ZjMxNGI3NDhkNDI4 MWRjYzU2ZDcwNzc5OGU2ZWIxYzJmNzAzOQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvWHNkdC9Yc2R0 UGFyc2VyLmMNCj4gQEAgLTAsMCArMSwxOTggQEANCj4gKy8qKg0KPiArICBYU0RUIHRhYmxlIHBh cnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIg dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBh Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vu c2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9i c2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJS QU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1Ig SU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkgNi4y IFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiArI2luY2x1 ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkv QWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExvY2FsIHZhcmlhYmxlcw0K PiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsN Cj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIFhTRFQgdGFi bGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFhzZHRQYXJzZXJbXSA9IHsN Cj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbykNCj4gK307DQo+ICsNCj4gK0NP TlNUIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8qIENPTlNUDQo+ICtFRklBUEkNCj4gK0dl dEFjcGlYc2R0SGVhZGVySW5mbyAoDQo+ICsgIFZPSUQNCj4gKykNCj4gK3sNCj4gKyAgcmV0dXJu ICZBY3BpSGRySW5mbzsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRo ZSBBQ1BJIFhTRFQgdGFibGUNCj4gKyAgYW5kIG9wdGlvbmFsbHkgdHJhY2VzIHRoZSBBQ1BJIHRh YmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRh dGlvbiBvZiB0aGUgWFNEVCB0YWJsZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAg ICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2lu XSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4N Cj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0 YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRo ZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpWHNk dCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJ TiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZp c2lvbg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiAgICAgICAgT2Zmc2V0Ow0KPiArICBVSU5U MzIgICAgICAgIFRhYmxlT2Zmc2V0Ow0KPiArICBVSU5UNjQqICAgICAgIFRhYmxlUG9pbnRlcjsN Cj4gKyAgVUlOVE4gICAgICAgICBFbnRyeUluZGV4Ow0KPiArICBDSEFSMTYgICAgICAgIEJ1ZmZl clszMl07DQo+ICsNCj4gKyAgLy8gUGFyc2UgdGhlIEFDUEkgaGVhZGVyIHRvIGdldCB0aGUgbGVu Z3RoDQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgRkFMU0UsDQo+ICsgICAgMCwNCj4gKyAgICAi WFNEVCIsDQo+ICsgICAgUHRyLA0KPiArICAgIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0xFTkdU SCwNCj4gKyAgICBQQVJTRVJfUEFSQU1TIChYc2R0UGFyc2VyKQ0KPiArICAgICk7DQo+ICsNCj4g KyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICBUcmFjZSwNCj4gKyAgICAg ICAgICAgICAwLA0KPiArICAgICAgICAgICAgICJYU0RUIiwNCj4gKyAgICAgICAgICAgICBQdHIs DQo+ICsgICAgICAgICAgICAgKkFjcGlIZHJJbmZvLkxlbmd0aCwNCj4gKyAgICAgICAgICAgICBQ QVJTRVJfUEFSQU1TIChYc2R0UGFyc2VyKQ0KPiArICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAg VGFibGVPZmZzZXQgPSBPZmZzZXQ7DQo+ICsNCj4gKyAgaWYgKFRyYWNlKSB7DQo+ICsgICAgRW50 cnlJbmRleCA9IDA7DQo+ICsgICAgVGFibGVQb2ludGVyID0gKFVJTlQ2NCopKFB0ciArIFRhYmxl T2Zmc2V0KTsNCj4gKyAgICB3aGlsZSAoT2Zmc2V0IDwgKCpBY3BpSGRySW5mby5MZW5ndGgpKSB7 DQo+ICsgICAgICBDT05TVCBVSU5UMzIqIFNpZ25hdHVyZTsNCj4gKyAgICAgIENPTlNUIFVJTlQz MiogTGVuZ3RoOw0KPiArICAgICAgQ09OU1QgVUlOVDgqICBSZXZpc2lvbjsNCj4gKw0KPiArICAg ICAgaWYgKChVSU5UNjQqKShVSU5UTikoKlRhYmxlUG9pbnRlcikgIT0gTlVMTCkgew0KPiArICAg ICAgICBVSU5UOCogICAgICBQdHI7DQo+ICsNCj4gKyAgICAgICAgUGFyc2VBY3BpSGVhZGVyICgN Cj4gKyAgICAgICAgICAoVUlOVDgqKShVSU5UTikoKlRhYmxlUG9pbnRlciksDQo+ICsgICAgICAg ICAgJlNpZ25hdHVyZSwNCj4gKyAgICAgICAgICAmTGVuZ3RoLA0KPiArICAgICAgICAgICZSZXZp c2lvbg0KPiArICAgICAgICAgICk7DQo+ICsNCj4gKyAgICAgICAgUHRyID0gKFVJTlQ4KilTaWdu YXR1cmU7DQo+ICsNCj4gKyAgICAgICAgVW5pY29kZVNQcmludCAoDQo+ICsgICAgICAgICAgQnVm ZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICAgICBMIkVudHJ5 WyVkXSAtICVjJWMlYyVjIiwNCj4gKyAgICAgICAgICBFbnRyeUluZGV4KyssDQo+ICsgICAgICAg ICAgUHRyWzBdLA0KPiArICAgICAgICAgIFB0clsxXSwNCj4gKyAgICAgICAgICBQdHJbMl0sDQo+ ICsgICAgICAgICAgUHRyWzNdDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgIH0gZWxzZSB7DQo+ ICsgICAgICAgIFVuaWNvZGVTUHJpbnQgKA0KPiArICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAg ICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ICsgICAgICAgICAgTCJFbnRyeVslZF0iLA0KPiArICAg ICAgICAgIEVudHJ5SW5kZXgrKw0KPiArICAgICAgICAgICk7DQo+ICsgICAgICB9DQo+ICsNCj4g KyAgICAgIFByaW50RmllbGROYW1lICgyLCBCdWZmZXIpOw0KPiArICAgICAgUHJpbnQgKEwiMHgl bHhcbiIsICpUYWJsZVBvaW50ZXIpOw0KPiArDQo+ICsgICAgICAvLyBWYWxpZGF0ZSB0aGUgdGFi bGUgcG9pbnRlcnMgYXJlIG5vdCBOVUxMDQo+ICsgICAgICBpZiAoKFVJTlQ2NCopKFVJTlROKSgq VGFibGVQb2ludGVyKSA9PSBOVUxMKSB7DQo+ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQg KCk7DQo+ICsgICAgICAgIFByaW50ICgNCj4gKyAgICAgICAgICBMIkVSUk9SOiBJbnZhbGlkIHRh YmxlIGVudHJ5IGF0IDB4JWx4LCB0YWJsZSBhZGRyZXNzIGlzIDB4JWx4XG4iLA0KPiArICAgICAg ICAgIFRhYmxlUG9pbnRlciwNCj4gKyAgICAgICAgICAqVGFibGVQb2ludGVyDQo+ICsgICAgICAg ICAgKTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIE9mZnNldCArPSBzaXplb2YgKFVJTlQ2NCk7DQo+ ICsgICAgICBUYWJsZVBvaW50ZXIrKzsNCj4gKyAgICB9IC8vIHdoaWxlDQo+ICsgIH0NCj4gKw0K PiArICAvLyBQcm9jZXNzIHRoZSB0YWJsZXMNCj4gKyAgT2Zmc2V0ID0gVGFibGVPZmZzZXQ7DQo+ ICsgIFRhYmxlUG9pbnRlciA9IChVSU5UNjQqKShQdHIgKyBUYWJsZU9mZnNldCk7DQo+ICsgIHdo aWxlIChPZmZzZXQgPCAoKkFjcGlIZHJJbmZvLkxlbmd0aCkpIHsNCj4gKyAgICBpZiAoKFVJTlQ2 NCopKFVJTlROKSgqVGFibGVQb2ludGVyKSAhPSBOVUxMKSB7DQo+ICsgICAgICBQcm9jZXNzQWNw aVRhYmxlICgoVUlOVDgqKShVSU5UTikoKlRhYmxlUG9pbnRlcikpOw0KPiArICAgIH0NCj4gKyAg ICBPZmZzZXQgKz0gc2l6ZW9mIChVSU5UNjQpOw0KPiArICAgIFRhYmxlUG9pbnRlcisrOw0KPiAr ICB9IC8vIHdoaWxlDQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2Uu DQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRh YmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIg aXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBh cnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJB TUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiAr WHNkdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAg ICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAg KiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBh cnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9FWFRFTkRFRF9TWVNURU1fREVTQ1JJ UFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJzZUFjcGlYc2R0DQo+ICsg ICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFn ZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0g VGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNl ciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRo ZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VG SUFQSQ0KPiArWHNkdFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFO RExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVN X1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERl cmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJfRVhURU5ERURfU1lT VEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRQ0KPiArICAgICAgICAgICApOw0KPiArfQ0K PiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXJMaWIuaW5mIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXJMaWIuaW5mDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLjJiOWEwNTgzNjQwNTYzNzU1MjAxYzA4OWFhMjA3MDNhOGIyYzdmMDQN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlckxpYi5pbmYNCj4gQEAgLTAsMCAr MSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIw MTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBw cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2Vk IGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl IEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g IFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsjICBodHRw Oi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsjICBU SEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFT IElTIiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMg T0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsjIw0KPiArDQo+ICtb RGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFN RSAgICAgID0gWHNkdFBhcnNlckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9IEE1N0VEN0EyLTRD RDYtNDIzOS05QTRELUY3RjBEQkRDRkNGQQ0KPiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiAr ICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxM fERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAgPSBYc2R0UGFyc2VyTGliQ29uc3RydWN0 b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBYc2R0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ ICtbU291cmNlc10NCj4gKyAgWHNkdFBhcnNlci5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAg TWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1v ZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAg U2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5j IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg4MDMxMGU4ZmNlMzQ3MWVj NTBiODVkNmZhYjk5NWFhMWM5N2FlNQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi5jDQo+IEBAIC0wLDAgKzEsMTA2IEBADQo+ICsvKioNCj4gKyAgTWFpbiBmaWxlIGZv ciAnYWNwaXZpZXcnIFNoZWxsIGNvbW1hbmQgZnVuY3Rpb24uDQo+ICsNCj4gKyAgQ29weXJpZ2h0 IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFy ZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRp b25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3Ry aWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0K PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04g QU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyoqLw0KPiAr DQo+ICsjaW5jbHVkZSA8R3VpZC9TaGVsbExpYkhpaUd1aWQuaD4NCj4gKyNpbmNsdWRlIDxMaWJy YXJ5L0hpaUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvU2hlbGxDb21tYW5kTGliLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZp Qm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ICsjaW5jbHVk ZSAiQWNwaVZpZXcuaCINCj4gKyNpbmNsdWRlICJVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIu aCINCj4gKw0KPiArQ09OU1QgQ0hBUjE2IGdTaGVsbEFjcGlWaWV3RmlsZU5hbWVbXSA9IEwiU2hl bGxDb21tYW5kIjsNCj4gKw0KPiArLyoqDQo+ICsgIFJldHVybiB0aGUgZmlsZSBuYW1lIG9mIHRo ZSBoZWxwIHRleHQgZmlsZSBpZiBub3QgdXNpbmcgSElJLg0KPiArDQo+ICsgIEByZXR1cm4gVGhl IHN0cmluZyBwb2ludGVyIHRvIHRoZSBmaWxlIG5hbWUuDQo+ICsqLw0KPiArQ09OU1QgQ0hBUjE2 Kg0KPiArRUZJQVBJDQo+ICtTaGVsbENvbW1hbmRHZXRNYW5GaWxlTmFtZUFjcGlWaWV3ICgNCj4g KyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBnU2hlbGxBY3BpVmlld0ZpbGVOYW1l Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgQ29uc3RydWN0b3IgZm9yIHRoZSBTaGVsbCBBY3Bp VmlldyBDb21tYW5kIGxpYnJhcnkuDQo+ICsNCj4gKyAgSW5zdGFsbCB0aGUgaGFuZGxlcnMgZm9y IGFjcGl2aWV3IFVFRkkgU2hlbGwgY29tbWFuZC4NCj4gKw0KPiArICBAcGFyYW0gSW1hZ2VIYW5k bGUgICAgICAgICAgICBUaGUgaW1hZ2UgaGFuZGxlIG9mIHRoZSBwcm9jZXNzLg0KPiArICBAcGFy YW0gU3lzdGVtVGFibGUgICAgICAgICAgICBUaGUgRUZJIFN5c3RlbSBUYWJsZSBwb2ludGVyLg0K PiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBTaGVsbCBjb21tYW5k IGhhbmRsZXJzIHdlcmUgaW5zdGFsbGVkDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN1Y2Nlc3NmdWxseS4NCj4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgSGlp IHBhY2thZ2UgZmFpbGVkIHRvIGluc3RhbGwuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJ QVBJDQo+ICtTaGVsbEFjcGlWaWV3Q29tbWFuZExpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gRUZJ X0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUgICpT eXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlID0g TlVMTDsNCj4gKw0KPiArICAvLyBDaGVjayBTaGVsbCBQcm9maWxlIERlYnVnMSBiaXQgb2YgdGhl IHByb2ZpbGVzIG1hc2sNCj4gKyAgaWYgKChGaXhlZFBjZEdldDggKFBjZFNoZWxsUHJvZmlsZU1h c2spICYgQklUMSkgPT0gMCkgew0KPiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gKyAgfQ0K PiArDQo+ICsgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlID0gSGlpQWRkUGFja2FnZXMgKA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdTaGVsbEFjcGlWaWV3SGlpR3VpZCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdJbWFnZUhhbmRsZSwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYlN0cmluZ3Ms DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUgPT0g TlVMTCkgew0KPiArICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiArICB9DQo+ICsgIC8v IEluc3RhbGwgb3VyIFNoZWxsIGNvbW1hbmQgaGFuZGxlcg0KPiArICBTaGVsbENvbW1hbmRSZWdp c3RlckNvbW1hbmROYW1lICgNCj4gKyAgICBMImFjcGl2aWV3IiwNCj4gKyAgICBTaGVsbENvbW1h bmRSdW5BY3BpVmlldywNCj4gKyAgICBTaGVsbENvbW1hbmRHZXRNYW5GaWxlTmFtZUFjcGlWaWV3 LA0KPiArICAgIDAsDQo+ICsgICAgTCJhY3BpdmlldyIsDQo+ICsgICAgVFJVRSwNCj4gKyAgICBn U2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRVRfSEVM UF9BQ1BJVklFVykNCj4gKyAgICApOw0KPiArDQo+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4g K30NCj4gKw0KPiArLyoqDQo+ICsgIERlc3RydWN0b3IgZm9yIHRoZSBsaWJyYXJ5LiBmcmVlIGFu eSByZXNvdXJjZXMuDQo+ICsNCj4gKyAgQHBhcmFtIEltYWdlSGFuZGxlICAgICAgICAgICAgVGhl IGltYWdlIGhhbmRsZSBvZiB0aGUgcHJvY2Vzcy4NCj4gKyAgQHBhcmFtIFN5c3RlbVRhYmxlICAg ICAgICAgICAgVGhlIEVGSSBTeXN0ZW0gVGFibGUgcG9pbnRlci4NCj4gKyovDQo+ICtFRklfU1RB VFVTDQo+ICtFRklBUEkNCj4gK1NoZWxsQWNwaVZpZXdDb21tYW5kTGliRGVzdHJ1Y3RvciAoDQo+ ICsgIElOIEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiBFRklfU1lTVEVN X1RBQkxFICAqU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICBpZiAoZ1NoZWxsQWNwaVZp ZXdIaWlIYW5kbGUgIT0gTlVMTCkgew0KPiArICAgIEhpaVJlbW92ZVBhY2thZ2VzIChnU2hlbGxB Y3BpVmlld0hpaUhhbmRsZSk7DQo+ICsgIH0NCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiAr fQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmggYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuaA0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwLi41OWM4ZTIxNTQ0ZDY4MjlhYzg3Mjk1OGY2Yjg0MzU4ZTFmOTFiMDJm DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmgNCj4gQEAgLTAsMCAr MSwzMiBAQA0KPiArLyoqDQo+ICsgIEhlYWRlciBmaWxlIGZvciAnYWNwaXZpZXcnIFNoZWxsIGNv bW1hbmQgZnVuY3Rpb25zLg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKyAgVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vu c2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0 ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBVRUZJX1NI RUxMX0FDUElWSUVXX0NPTU1BTkRfTElCX0hfDQo+ICsjZGVmaW5lIFVFRklfU0hFTExfQUNQSVZJ RVdfQ09NTUFORF9MSUJfSF8NCj4gKw0KPiArZXh0ZXJuIEVGSV9ISUlfSEFORExFIGdTaGVsbEFj cGlWaWV3SGlpSGFuZGxlOw0KPiArDQo+ICsvKioNCj4gKyAgRnVuY3Rpb24gZm9yICdhY3Bpdmll dycgY29tbWFuZC4NCj4gKw0KPiArICBAcGFyYW1baW5dIEltYWdlSGFuZGxlICBIYW5kbGUgdG8g dGhlIEltYWdlIChOVUxMIGlmIEludGVybmFsKS4NCj4gKyAgQHBhcmFtW2luXSBTeXN0ZW1UYWJs ZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlIChOVUxMIGlmIEludGVybmFsKS4NCj4gKyov DQo+ICtTSEVMTF9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2hlbGxDb21tYW5kUnVuQWNwaVZpZXcg KA0KPiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gRUZJX1NZ U1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ICsgICk7DQo+ICsNCj4gKyNlbmRpZiAvLyBVRUZJ X1NIRUxMX0FDUElWSUVXX0NPTU1BTkRfTElCX0hfDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIuaW5mIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTNiMjg5 OGUxYWU2ZGRiYzhjN2MwYTI5MzEyZTYwMmFiMDU0M2EzDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliLmluZg0KPiBAQCAtMCwwICsxLDYwIEBADQo+ICsjIyAgQGZpbGUN Cj4gKyMgUHJvdmlkZXMgU2hlbGwgJ2FjcGl2aWV3JyBjb21tYW5kIGZ1bmN0aW9ucw0KPiArIw0K PiArIyBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNo IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNl bnNlIG1heSBiZSBmb3VuZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2Vz L2JzZC1saWNlbnNlLnBocA0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIg VEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJ TVBMSUVELg0KPiArIw0KPiArIw0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9W RVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDYNCj4gKyAgQkFTRV9OQU1FICAg ICAgICAgICAgICAgICAgICAgID0gVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ICsgIEZJ TEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IEZCNUIzMDVFLTg0RjUtNDYxRi05NDBELTgy RDM0NTc1N0FGQQ0KPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBVRUZJX0RS SVZFUg0KPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gKyAgTElC UkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gU2hlbGxBY3BpVmlld0NvbW1hbmRMaWJ8VUVG SV9BUFBMSUNBVElPTiBVRUZJX0RSSVZFUiBEWEVfUlVOVElNRV9EUklWRVINCj4gKyAgQ09OU1RS VUNUT1IgICAgICAgICAgICAgICAgICAgID0gU2hlbGxBY3BpVmlld0NvbW1hbmRMaWJDb25zdHJ1 Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICAgICAgICAgICAgICAgICAgPSBTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYkRlc3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXMuY29tbW9uXQ0KPiArICBVZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIudW5pDQo+ICsgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi5jDQo+ICsgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oDQo+ICsgIEFjcGlQYXJz ZXIuYw0KPiArICBBY3BpVGFibGVQYXJzZXIuYw0KPiArICBBY3BpVmlldy5jDQo+ICsNCj4gK1tQ YWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cu ZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5 Q2xhc3Nlc10NCj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiArICBCYXNlTGliDQo+ICsgIEJh c2VNZW1vcnlMaWINCj4gKyAgRGVidWdMaWINCj4gKyAgU2hlbGxDb21tYW5kTGliDQo+ICsgIFNo ZWxsTGliDQo+ICsgIFVlZmlMaWINCj4gKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQo+ ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0KPiArICBQY2RMaWINCj4gKyAgSGlpTGliDQo+ ICsgIFByaW50TGliDQo+ICsgIEZpbGVIYW5kbGVMaWINCj4gKw0KPiArDQo+ICtbRml4ZWRQY2Rd DQo+ICsgIGdFZmlTaGVsbFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNoZWxsUHJvZmlsZU1hc2sgIyMg Q09OU1VNRVMNCj4gKw0KPiArW0d1aWRzXQ0KPiArICBnU2hlbGxBY3BpVmlld0hpaUd1aWQgICAg ICAgICAgICMjIENPTlNVTUVTICMjIEhJSQ0KPiArICBnRWZpQWNwaVRhYmxlR3VpZCAgICAgICAg ICAgICAgICMjIFNPTUVUSU1FU19DT05TVU1FUyAjIyBTeXN0ZW1UYWJsZQ0KPiBkaWZmIC0tZ2l0 IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliLnVuaSBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi51bmkNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uMWM0ZDY2ZTFmZjUwNzA1NGQ0YWE0MmJkNDdiZmFlODgyNGMyMThlNg0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi51bmkNCj4gQEAgLTAsMCArMSwxMjcgQEAN Cj4gKy8vIC8qKg0KPiArLy8NCj4gKy8vIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFSTSBM aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKy8vIFRoaXMgcHJvZ3JhbSBhbmQg dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKy8vIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBh dmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5z ZQ0KPiArLy8gd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uIFRoZSBmdWxsIHRl eHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsvLyBodHRwOi8vb3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsvLw0KPiArLy8gVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMs DQo+ICsvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArLy8NCj4gKy8vIE1vZHVsZSBOYW1lOg0K PiArLy8NCj4gKy8vIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi51bmkNCj4gKy8vDQo+ICsv LyBBYnN0cmFjdDoNCj4gKy8vDQo+ICsvLyBTdHJpbmcgZGVmaW5pdGlvbnMgZm9yIFVFRkkgU2hl bGwgYWNwaXZpZXcgY29tbWFuZA0KPiArLy8NCj4gKy8vDQo+ICsvLyAqLw0KPiArDQo+ICsvPSMN Cj4gKw0KPiArI2xhbmdkZWYgICBlbi1VUyAiZW5nbGlzaCINCj4gKw0KPiArI3N0cmluZyBTVFJf R0VOX1BST0JMRU0gICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBVbmtub3duIGZs YWcgLSAnJUglcyVOJ1xyXG4iDQo+ICsjc3RyaW5nIFNUUl9HRU5fTk9fVkFMVUUgICAgICAgICAg I2xhbmd1YWdlIGVuLVVTICIlSCVzJU46IE1pc3NpbmcgYXJndW1lbnQgZm9yIGZsYWcgLSAnJUgl cyVOJ1xyXG4iDQo+ICsjc3RyaW5nIFNUUl9HRU5fVE9PX01BTlkgICAgICAgICAgI2xhbmd1YWdl IGVuLVVTICIlSCVzJU46IFRvbyBtYW55IGFyZ3VtZW50cy5cclxuIg0KPiArI3N0cmluZyBTVFJf R0VOX01JU1NJTkdfT1BUSU9OICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBNaXNzaW5nIG9w dGlvbiAnJUglcyVOJyByZXF1aXJlZCBieSBmbGFnIC0gJyVIJXMlTidcclxuIg0KPiArI3N0cmlu ZyBTVFJfR0VOX1JFQURPTkxZX01FRElBICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBVbmFi bGUgdG8gd3JpdGUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBjaGVjayBpZiBtZWRpYSBpcyB3 cml0YWJsZS5cclxuIg0KPiArDQo+ICsjc3RyaW5nIFNUUl9HRVRfSEVMUF9BQ1BJVklFVyAgICNs YW5ndWFnZSBlbi1VUyAiIg0KPiArIi5USCBhY3BpdmlldyAwICJEaXNwbGF5IEFDUEkgaW5mb3Jt YXRpb24uIlxyXG4iDQo+ICsiLlNIIE5BTUVcclxuIg0KPiArIkRpc3BsYXkgQUNQSSBUYWJsZSBp bmZvcm1hdGlvbi5cclxuIg0KPiArIi5TSCBTWU5PUFNJU1xyXG4iDQo+ICsiIFxyXG4iDQo+ICsi QUNQSVZJRVcgW1stP10gfCBbWy1sXSB8IFstcyBBY3BpVGFibGUgWy1kXV1dIFstY10gWy12XSBb LWggSGlnaGxpZ2h0XV1cclxuIg0KPiArIiBcclxuIg0KPiArIi5TSCBPUFRJT05TXHJcbiINCj4g KyIgXHJcbiINCj4gKyIgIC1sIC0gRGlzcGxheSBsaXN0IG9mIGluc3RhbGxlZCBBQ1BJIFRhYmxl cy5cclxuIg0KPiArIiAgLXMgLSBEaXNwbGF5IG9ubHkgdGhlIHNwZWNpZmllZCBBY3BpVGFibGUg dHlwZS5cclxuIg0KPiArIiAgICAgICAgIEFjcGlUYWJsZSAgICA6IFRoZSByZXF1aXJlZCBBQ1BJ IFRhYmxlIHR5cGUuXHJcbiINCj4gKyIgIC1kIC0gR2VuZXJhdGUgYSBiaW5hcnkgZmlsZSBkdW1w IG9mIHRoZSBzcGVjaWZpZWQgQWNwaVRhYmxlLlxyXG4iDQo+ICsiICAtYyAtIENvbnNpc3RlbmN5 IGNoZWNraW5nIChlbmFibGVkIGJ5IGRlZmF1bHQpLlxyXG4iDQo+ICsiICAtdiAtIERpc3BsYXkg dmVyYm9zZSBkYXRhIChlbmFibGVkIGJ5IGRlZmF1bHQpLlxyXG4iDQo+ICsiICAtaCAtIEVuYWJs ZS9EaXNhYmxlIENvbG91ciBIaWdobGlnaHRpbmcuXHJcbiINCj4gKyIgICAgICAgICBIaWdobGln aHQgICAgOiBUUlVFL09OIGVuYWJsZXMgaGlnaGxpZ2h0aW5nO1xyXG4iDQo+ICsiICAgICAgICAg ICAgICAgICAgICAgICAgRkFMU0UvT0ZGIChkZWZhdWx0KSBkaXNhYmxlcyBoaWdobGlnaHRpbmcu XHJcbiINCj4gKyIgIC0/IC0gU2hvdyBoZWxwLlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiLlNIIERF U0NSSVBUSU9OXHJcbiINCj4gKyIgXHJcbiINCj4gKyIgIFRoaXMgcHJvZ3JhbSBpcyBwcm92aWRl ZCB0byBhbGxvdyBleGFtaW5hdGlvbiBvZiBBQ1BJIHRhYmxlIHZhbHVlcyBmcm9tIHRoZVxyXG4i DQo+ICsiICBVRUZJIFNoZWxsLiAgVGhpcyBjYW4gaGVscCB3aXRoIGludmVzdGlnYXRpb25zLCBl c3BlY2lhbGx5IGF0IHRoYXQgc3RhZ2Ugd2hlcmVcclxuIg0KPiArIiAgdGhlIHRhYmxlcyBhcmUg bm90IGVuYWJsaW5nIGFuIE9TIHRvIGJvb3QuXHJcbiINCj4gKyIgIFRoZSBwcm9ncmFtIGlzIG5v dCBleGhhdXN0aXZlLCBhbmQgb25seSBlbmNhcHN1bGF0ZXMgZGV0YWlsZWQga25vd2xlZGdlIG9m IGFcclxuIg0KPiArIiAgbGltaXRlZCBudW1iZXIgb2YgdGFibGUgdHlwZXMuXHJcbiINCj4gKyIg XHJcbiINCj4gKyIgIERlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGRpc3BsYXkgdGhlIGNvbnRlbnQg b2YgYWxsIHRhYmxlcyBpbnN0YWxsZWQuXHJcbiINCj4gKyIgICdLbm93bicgdGFibGUgdHlwZXMg KGxpc3RlZCBpbiBOT1RFUyBiZWxvdykgd2lsbCBiZSBwYXJzZWQgYW5kIGRpc3BsYXllZFxyXG4i DQo+ICsiICB3aXRoIGRlc2NyaXB0aW9ucyBhbmQgZmllbGQgdmFsdWVzLiAgV2hlcmUgYXBwcm9w cmlhdGUgYSBkZWdyZWUgb2YgY29uc2lzdGVuY3lcclxuIg0KPiArIiAgY2hlY2tpbmcgaXMgZG9u ZSBhbmQgZXJyb3JzIG1heSBiZSByZXBvcnRlZCBpbiB0aGUgb3V0cHV0LlxyXG4iDQo+ICsiICBP dGhlciB0YWJsZSB0eXBlcyB3aWxsIGJlIGRpc3BsYXllZCBhcyBhbiBhcnJheSBvZiBIZXhhZGVj aW1hbCBieXRlcy5cclxuIg0KPiArIiBcclxuIg0KPiArIiAgVG8gZmFjaWxpdGF0ZSBkZWJ1Z2dp bmcsIHRoZSAtcyBhbmQgLWQgb3B0aW9ucyBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBhXHJcbiIN Cj4gKyIgIGJpbmFyeSBmaWxlIGltYWdlIG9mIGEgdGFibGUgdGhhdCBjYW4gYmUgY29waWVkIGVs c2V3aGVyZSBmb3IgaW52ZXN0aWdhdGlvblxyXG4iDQo+ICsiICB1c2luZyB0b29scyBzdWNoIGFz IHRob3NlIHByb3ZpZGVkIGJ5IGFjcGljYS5vcmcuICBUaGlzIGlzIGVzcGVjaWFsbHkgcmVsZXZh bnRcclxuIg0KPiArIiAgZm9yIEFNTCB0eXBlIHRhYmxlcyBsaWtlIERTRFQgYW5kIFNTRFQuXHJc biINCj4gKyIgXHJcbiINCj4gKyJOT1RFUzpcclxuIg0KPiArIiAgMS4gVGhlIEFjcGlUYWJsZSBw YXJhbWV0ZXIgY2FuIG1hdGNoIGFueSBpbnN0YWxsZWQgdGFibGUgdHlwZS5cclxuIg0KPiArIiAg ICAgVGFibGVzIHdpdGhvdXQgc3BlY2lmaWMgaGFuZGxpbmcgd2lsbCBiZSBkaXNwbGF5ZWQgYXMg YSByYXcgaGV4IGR1bXAgKG9yXHJcbiINCj4gKyIgICAgIGR1bXBlZCB0byBhIGZpbGUgaWYgLWQg aXMgdXNlZCkuXHJcbiINCj4gKyIgIDIuIEZvcm1hdHRlZCBkaXNwbGF5IGFuZCBjaGVja2luZyBp cyBwcm92aWRlZCBmb3IgdGhlc2Ugc2lnbmF0dXJlIHR5cGVzOlxyXG4iDQo+ICsiICAgICAgIEFQ SUMgIC0gTXVsdGlwbGUgQVBJQyBEZXNjcmlwdGlvbiBUYWJsZSAoTUFEVClcclxuIg0KPiArIiAg ICAgICBCR1JUICAtIEJvb3QgR3JhcGhpY3MgUmVzb3VyY2UgVGFibGVcclxuIg0KPiArIiAgICAg ICBEQkcyICAtIERlYnVnIFBvcnQgVGFibGUgMlxyXG4iDQo+ICsiICAgICAgIEZBQ1AgIC0gRml4 ZWQgQUNQSSBEZXNjcmlwdGlvbiBUYWJsZSAoRkFEVClcclxuIg0KPiArIiAgICAgICBHVERUICAt IEdlbmVyaWMgVGltZXIgRGVzY3JpcHRpb24gVGFibGVcclxuIg0KPiArIiAgICAgICBJT1JUICAt IElPIFJlbWFwcGluZyBUYWJsZVxyXG4iDQo+ICsiICAgICAgIE1DRkcgIC0gTWVtb3J5IE1hcHBl ZCBDb25maWcgU3BhY2UgQmFzZSBBZGRyZXNzIERlc2NyaXB0aW9uIFRhYmxlXHJcbiINCj4gKyIg ICAgICAgUlNEUCAgLSBSb290IFN5c3RlbSBEZXNjcmlwdGlvbiBQb2ludGVyXHJcbiINCj4gKyIg ICAgICAgU0xJVCAgLSBTeXN0ZW0gTG9jYWxpdHkgSW5mb3JtYXRpb24gVGFibGVcclxuIg0KPiAr IiAgICAgICBTUENSICAtIFNlcmlhbCBQb3J0IENvbnNvbGUgUmVkaXJlY3Rpb24gVGFibGVcclxu Ig0KPiArIiAgICAgICBTUkFUICAtIFN5c3RlbSBSZXNvdXJjZSBBZmZpbml0eSBUYWJsZVxyXG4i DQo+ICsiICAgICAgIFhTRFQgIC0gRXh0ZW5kZWQgU3lzdGVtIERlc2NyaXB0aW9uIFRhYmxlXHJc biINCj4gKyIgXHJcbiINCj4gKyIuU0ggU1RBTkRBUkRTXHJcbiINCj4gKyIgXHJcbiINCj4gKyIg IFRhYmxlIGRldGFpbHMgY29ycmVzcG9uZCB0byB0aG9zZSBpbiAnQWR2YW5jZWQgQ29uZmlndXJh dGlvbiBhbmQgUG93ZXJcclxuIg0KPiArIiAgSW50ZXJmYWNlIFNwZWNpZmljYXRpb24nIFZlcnNp b24gNi4yIEVycmF0YSBBLCBbU2VwdGVtYmVyIDIwMTddXHJcbiINCj4gKyIgIChodHRwOi8vd3d3 LnVlZmkub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvcmVzb3VyY2VzL0FDUEklMjA2XzJfQV9TZXB0 MjkucGRmKVxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICBOT1RFOiBUaGUgbmF0dXJlIG9mIHRoZSBB Q1BJIHN0YW5kYXJkIG1lYW5zIHRoYXQgYWxtb3N0IGFsbCB0YWJsZXMgaW4gNi4xIHdpbGxcclxu Ig0KPiArIiAgICAgICAgYmUgJ2JhY2t3YXJkcyBjb21wYXRpYmxlJyB3aXRoIHByaW9yIHZlcnNp b24gb2YgdGhlIHNwZWNpZmljYXRpb24gaW5cclxuIg0KPiArIiAgICAgICAgdGVybXMgb2Ygc3Ry dWN0dXJlLCBzbyBmb3JtYXR0ZWQgb3V0cHV0IHNob3VsZCBiZSBjb3JyZWN0LiAgVGhlIG1haW5c clxuIg0KPiArIiAgICAgICAgZXhjZXB0aW9uIHdpbGwgYmUgdGhhdCBwcmV2aW91c2x5ICdyZXNl cnZlZCcgZmllbGRzIHdpbGwgYmUgcmVwb3J0ZWRcclxuIg0KPiArIiAgICAgICAgd2l0aCBuZXcg bmFtZXMsIHdoZXJlIHRoZXkgaGF2ZSBiZWVuIGFkZGVkIGluIGxhdGVyIHZlcnNpb25zIG9mIHRo ZVxyXG4iDQo+ICsiICAgICAgICBzcGVjaWZpY2F0aW9uLlxyXG4iDQo+ICsiIFxyXG4iDQo+ICsi LlNIIEVYQU1QTEVTXHJcbiINCj4gKyIgXHJcbiINCj4gKyIgXHJcbiINCj4gKyJFWEFNUExFUzpc clxuIg0KPiArIiAgKiBUbyBkaXNwbGF5IGEgbGlzdCBvZiB0aGUgaW5zdGFsbGVkIHRhYmxlIHR5 cGVzOlxyXG4iDQo+ICsiICAgIGZzMDpcPiBhY3BpdmlldyAtbFxyXG4iDQo+ICsiIFxyXG4iDQo+ ICsiICAqIFRvIHBhcnNlIGFuZCBkaXNwbGF5IGEgc3BlY2lmaWMgdGFibGUgdHlwZTpcclxuIg0K PiArIiAgICBmczA6XD4gYWNwaXZpZXcgLXMgR1REVFxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiICAq IFRvIHNhdmUgYSBiaW5hcnkgZHVtcCBvZiB0aGUgY29udGVudHMgb2YgYSB0YWJsZSB0byBhIGZp bGVcclxuIg0KPiArIiAgICBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeTpcclxuIg0K PiArIiAgICBmczA6XD4gYWNwaXZpZXcgLXMgRFNEVCAtZFxyXG4iDQo+ICsiIFxyXG4iDQo+ICsi ICAqIFRvIGRpc3BsYXkgY29udGVudHMgb2YgYWxsIEFDUEkgdGFibGVzOlxyXG4iDQo+ICsiICAg IGZzMDpcPiBhY3Bpdmlld1xyXG4iDQo+ICsiIFxyXG4iDQo+ICsiLlNIIFJFVFVSTlZBTFVFU1xy XG4iDQo+ICsiIFxyXG4iDQo+ICsiUkVUVVJOIFZBTFVFUzpcclxuIg0KPiArIiAgU0hFTExfU1VD Q0VTUyAgICAgICAgICAgICBEYXRhIHdhcyBkaXNwbGF5ZWQgYXMgcmVxdWVzdGVkLlxyXG4iDQo+ ICsiICBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUiAgIEFDUEkgVGFibGUgcGFyc2luZyBmYWlsZWQu XHJcbiINCj4gKyIgXHJcbiINCj4gKw0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvU2hlbGxQa2cu ZGVjIGIvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+IGluZGV4IDBjNGY3NGZmNDE3MjZjNGEyOGVk MDgyODQ5YzFiODY0YjFjNDg3NTIuLmMwOTBhYTRkMDhiZTNhYWQ0ZDlhZWRiNTQyYzAxMDU2YmNl NDY5NjkgMTAwNjQ0DQo+IC0tLSBhL1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiArKysgYi9TaGVs bFBrZy9TaGVsbFBrZy5kZWMNCj4gQEAgLTMsNiArMyw3IEBADQo+ICAgIw0KPiAgICMgKEMpIENv cHlyaWdodCAyMDEzLTIwMTQgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksIEwu UC48QlI+DQo+ICAgIyBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsjIENvcHlyaWdodCAoYykgMjAxNiAtIDIw MTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gICAjDQo+ICAgIyBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXINCj4gICAjIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uDQo+ IEBAIC01Niw3ICs1Nyw3IEBAIFtHdWlkc10NCj4gICAgIGdTaGVsbE5ldHdvcmsySGlpR3VpZCAg ICAgICAgICAgPSB7MHgxNzRiMmI1LCAweGY1MDUsIDB4NGIxMiwgezB4YWEsIDB4NjAsIDB4NTks IDB4ZGYsIDB4ZjgsIDB4ZDYsIDB4ZWEsIDB4Mzd9fQ0KPiAgICAgZ1NoZWxsVGZ0cEhpaUd1aWQg ICAgICAgICAgICAgICA9IHsweDczOGE5MzE0LCAweDgyYzEsIDB4NDU5MiwgezB4OGYsIDB4Zjcs IDB4YzEsIDB4YmQsIDB4ZjEsIDB4YjIsIDB4MGUsIDB4ZDR9fQ0KPiAgICAgZ1NoZWxsQmNmZ0hp aUd1aWQgICAgICAgICAgICAgICA9IHsweDVmNWY2MDVkLCAweDE1ODMsIDB4NGEyZCwgezB4YTYs IDB4YjIsIDB4ZWIsIDB4MTIsIDB4ZGEsIDB4YjQsIDB4YTIsIDB4YjZ9fQ0KPiAtDQo+ICsgIGdT aGVsbEFjcGlWaWV3SGlpR3VpZCAgICAgICAgICAgPSB7MHhkYThjY2RmNCwgMHhlZDhmLCAweDRm ZmMsIHsweGI1LCAweGVmLCAweDJlLCAweGY1LCAweDVlLCAweDI0LCAweDkzLCAweDJhfX0NCj4g ICAgICMgRklMRV9HVUlEIGFzIGRlZmluZWQgaW4gU2hlbGxQa2cvQXBwbGljYXRpb24vU2hlbGwv U2hlbGwuaW5mDQo+ICAgICBnVWVmaVNoZWxsRmlsZUd1aWQgICAgICAgICAgICAgID0gezB4N2Mw NGE1ODMsIDB4OWUzZSwgMHg0ZjFjLCB7MHhhZCwgMHg2NSwgMHhlMCwgMHg1MiwgMHg2OCwgMHhk MCwgMHhiNCwgMHhkMX19DQo+DQo+DQoNCg0KLS0NClRoYW5rcywNClJheQ0KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCmVkazItZGV2ZWwgbWFpbGluZyBs aXN0DQplZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1h bi9saXN0aW5mby9lZGsyLWRldmVsDQo=