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.77; 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-db5eur01on0077.outbound.protection.outlook.com [104.47.2.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 56C9D209574EB for ; Mon, 26 Feb 2018 11:10:19 -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=GLDzQI6BFrPJSZiE5RSidEFXULNHGMFetSU+Cgj8OqE=; b=Qu5+F8WWptEFWEHF5jty5u7KKj9aApYs1TYxmj6lSwroqL0T61GzB6JsD/sN+Sgk75m3cggG00gVcRWcrT46+a8nzggwC/jJv+YbN8RmXiNI/dPulr+c2CRQvlfrgj3Yfs6Z4Wn35NsJaun2RJYKqrF73Iqkqug4Ft/cJx4hIpE= Received: from DB5PR0801MB2710.eurprd08.prod.outlook.com (10.166.170.155) by DB5PR0801MB1592.eurprd08.prod.outlook.com (10.167.230.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.527.15; Mon, 26 Feb 2018 19:16:18 +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.0527.021; Mon, 26 Feb 2018 19:16:18 +0000 From: Sami Mujawar To: "Ni, Ruiyu" , "edk2-devel@lists.01.org" CC: Evan Lloyd , "leif.lindholm@linaro.org" , Matteo Carlini , Stephanie Hughes-Fitt , nd , "jaben.carsey@intel.com" , "jiewen.yao@intel.com" Thread-Topic: [PATCH v4] ShellPkg: Add acpiview tool to dump ACPI tables Thread-Index: AQHTrRVeyHeFMUQhb02fe0jJ+y5TxKOzNSdQ Date: Mon, 26 Feb 2018 19:16:18 +0000 Message-ID: References: <20180223164457.44056-1-sami.mujawar@arm.com> <83c10b19-7965-419f-9e41-638986163044@Intel.com> In-Reply-To: <83c10b19-7965-419f-9e41-638986163044@Intel.com> 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; DB5PR0801MB1592; 6:NQZotIgw6X73Z77ZX6dXSSl0dRs9RIqGmlzfmiFH8Le1NU3zKnp+b3CAFulqTdhg1WMHW/6rimR7/S68PcE8F8DZ9KqXowVrvTyP7BB8j1p4+TfPKH+uGmLYKQn8r2vrLm/JsrP7jwSAli1TumL+15oKtghiCZRstKFDJx/3I1yw20MPFtgWKUxyIhdXrhW0gb81sTjtiFh8qpihTOwfE7jrUrz2bVLtmsrgmYOUsJzJZOA0mb4rDlwOp1T21ISSAPMmhqBXUAFftMJJQNPJLT7lld5h6LmeU1sTcGgkES5drmr7y+deMaHRH8iP3Z2wDTyeeXRWgpyYytcyFahRpkIGnrNJt5z33BbujnBefVchNSoDAGArtBvsi3sv96L8; 5:5HgzwWOjAf6gCywBL3nPMh2xFX8YDodAsWkBog2qXKVO12T9sQ/sRvN9DbaksYWGj6WFNG2klk58Rq0edLx8lXzD8uu3NkVqRzGRYH0ROelprQEgix/rdHO5+oykOAG5yMHDRQxJNlA98NBzEEk8+8EGc63CluRTHMgYVAsYZhk=; 24:HEQUl/T4/jBvRBkQW9ifht1EmuA9wCJBA5FMqNF9YPCRViqGUyhMoWV2KX2xKwgsAnE3mIAZ8f9+9bJ8HV8+US305s83GjreON7idCnZpJM=; 7:wUuSidR1Twg4eQxWhrFqqkK7SapZ8cm3nDBnd+qodISlsqkKpLjDoh6k9ny6VzcI6G7+xcwzWIdMjRPZSikIM0+UUBEbkWusyT+ASFgu5cLXnqE4sUYlfnZYi4ZxZ0GzA93E9PhuozrO6IOD/GFLafUceTXBxK/c7oOop7phKsaV1uWpGFYRifPOddtE19jv7w043fHpYyMLmiJ3vyFzqZXnbvEQFaydm7DgK7FjOUkPxt1g9ztd8FkDl5osyGbd x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 6d31197f-adad-42ed-49ec-08d57d4d69d0 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020); SRVR:DB5PR0801MB1592; x-ms-traffictypediagnostic: DB5PR0801MB1592: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(158342451672863)(180628864354917)(166708455590820)(131327999870524)(162533806227266)(211171220733660)(228905959029699)(17755550239193); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(3231220)(944501161)(52105095)(6055026)(6041288)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:DB5PR0801MB1592; BCL:0; PCL:0; RULEID:; SRVR:DB5PR0801MB1592; x-forefront-prvs: 05954A7C45 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(39380400002)(346002)(366004)(396003)(39860400002)(13464003)(189003)(199004)(76176011)(186003)(7696005)(2950100002)(33656002)(6436002)(106356001)(53936002)(77096007)(99286004)(6246003)(26005)(3280700002)(53376002)(5660300001)(7736002)(316002)(305945005)(6306002)(86362001)(575784001)(66066001)(9686003)(4326008)(25786009)(55016002)(110136005)(54906003)(105586002)(74316002)(15188155005)(3846002)(6116002)(16200700003)(229853002)(53946003)(6506007)(3660700001)(2906002)(53546011)(16799955002)(2900100001)(8936002)(81156014)(8676002)(81166006)(102836004)(97736004)(14454004)(59450400001)(966005)(45080400002)(72206003)(2501003)(68736007)(478600001)(579004)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR0801MB1592; H:DB5PR0801MB2710.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: PkiHSoFhG0dz8y5tzZ6vIsvm3HB3be6RDIbRQVdKz1cCHjti/NLFpnzX10Oce/DjEdCWpsxQMgcjquH97UvPTPy2k1YtLyZNpbamznYhB0XZfkmojmGzBU4BP8edFGmnS5zEp4rrk7PnBJgYCUaszKLvXytBTy1yps2k6O2q8Qs= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d31197f-adad-42ed-49ec-08d57d4d69d0 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Feb 2018 19:16:18.1817 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR0801MB1592 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: Mon, 26 Feb 2018 19:10:21 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgUmF5LA0KDQpQbGVhc2Ugc2VlIG15IHJlc3BvbnNlIGJlbG93IG1hcmtlZCBbU0FNSV0uDQoN Cj4+ICAgU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQ0OSArKysrKysrKysrKysNCj4+ICAgU2hlbGxQ a2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDEyNiArKysrDQoNCj4gU2FtaSwgc2hvdWxkIHRoZSBhYm92ZSB0d28g bmV3IGZpbGVzIGJlIHJlbW92ZWQ/DQoNCltTQU1JXSBUaGUgaW5kaXZpZHVhbCB0YWJsZSBwYXJz ZXJzIGFyZSBpbXBsZW1lbnRlZCBhcyBOVUxMIGxpYnJhcmllcyB0aGF0IHJlZ2lzdGVyIHRoZSBw YXJzZXIgd2l0aCBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuIFRoZXNlIHBhcnNlciBsaWJy YXJpZXMgYXJlIHByZXNlbnQgaW4gc3ViIGZvbGRlcnMgZS5nLiBTaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQ7IGEgY2hhbmdlIHRoYXQgd2Fz IGludHJvZHVjZWQgaW4gdGhlIHYzIHBhdGNoIGluIHJlc3BvbnNlIHRvIHJldmlldyBjb21tZW50 cy4gRm9yIGJ1aWxkaW5nIHRoZSBwYXJzZXIgbGlicmFyaWVzLCBJIG5lZWQgYSBtZWNoYW5pc20g dG8gZ2V0IHRoZSBpbmNsdWRlIHBhdGggdG8gdGhlIGhlYWRlciBmaWxlcyBhYm92ZSAod2hpY2gg ZXhwb3NlIHRoZSBwYXJzZXIgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhbmQgdGhlIGNvbW1vbiBm dW5jdGlvbmFsaXR5IGltcGxlbWVudGVkIGluIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYiku IFRoZXJlZm9yZSwgSSBoYXZlIGtlcHQgdGhlbSB1bmRlciBTaGVsbFBrZy9JbmNsdWRlL0xpYnJh cnkvQWNwaVZpZXcuDQoNCj4gU2luY2UgcGVyIHlvdXIgY29tbWVudHMsIHRoZSBpbnRlcmZhY2Vz IGFyZSBrZXB0IGluc2lkZSBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuDQoNCltTQU1JXSBJ dCBsb29rcyBsaWtlIEkgaGFkIG5vdCBmdWxseSB1bmRlcnN0b29kIHlvdXIgIzIgY29tbWVudC4g SSBoYWQgYSBoZWxwZXIgbGlicmFyeSBmb3IgZXhwb3NpbmcgdGhlIHJlZ2lzdHJhdGlvbiBmdW5j dGlvbnMgYW5kIGNvbW1vbiBmdW5jdGlvbmFsaXR5LiBJIG1vdmVkIHRoaXMgZnVuY3Rpb25hbGl0 eSB0byBrZWVwIHRoZXNlIGludGVyZmFjZXMgaW5zaWRlIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi4gDQpIb3dldmVyIGFzIGV4cGxhaW5lZCBhYm92ZSBJIGhhdmUgdGhlIGNvbW1vbiBmdW5j dGlvbmFsaXR5IGltcGxlbWVudGVkIGFzIHBhcnQgb2YgdGhlIFVlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYiB3aGljaCBpcyB1dGlsaXplZCBieSBpbmRpdmlkdWFsIHBhcnNlcnMuDQoNCkNvbnNp ZGVyaW5nIHRoZSBhYm92ZSBJIGhvcGUgdGhlIHBhdGNoIE9LLiBBbHRlcm5hdGl2ZWx5LCBpZiB5 b3UgY2FuIGFkdmlzZSBtZSBvbiBhIGJldHRlciB3YXkgb2YgYWNoaWV2aW5nIHRoaXMsIEkgd2ls bCBiZSBoYXBweSB0byBpbmNvcnBvcmF0ZSB0aGUgY2hhbmdlcy4gDQoNClJlZ2FyZHMsDQoNClNh bWkgTXVqYXdhcg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogTmksIFJ1aXl1 IFttYWlsdG86cnVpeXUubmlASW50ZWwuY29tXSANClNlbnQ6IDI0IEZlYnJ1YXJ5IDIwMTggMDI6 MTUgQU0NClRvOiBTYW1pIE11amF3YXIgPFNhbWkuTXVqYXdhckBhcm0uY29tPjsgZWRrMi1kZXZl bEBsaXN0cy4wMS5vcmcNCkNjOiBFdmFuIExsb3lkIDxFdmFuLkxsb3lkQGFybS5jb20+OyBsZWlm LmxpbmRob2xtQGxpbmFyby5vcmc7IE1hdHRlbyBDYXJsaW5pIDxNYXR0ZW8uQ2FybGluaUBhcm0u Y29tPjsgU3RlcGhhbmllIEh1Z2hlcy1GaXR0IDxTdGVwaGFuaWUuSHVnaGVzLUZpdHRAYXJtLmNv bT47IG5kIDxuZEBhcm0uY29tPjsgamFiZW4uY2Fyc2V5QGludGVsLmNvbTsgamlld2VuLnlhb0Bp bnRlbC5jb20NClN1YmplY3Q6IFJlOiBbUEFUQ0ggdjRdIFNoZWxsUGtnOiBBZGQgYWNwaXZpZXcg dG9vbCB0byBkdW1wIEFDUEkgdGFibGVzDQoNCk9uIDIvMjQvMjAxOCAxMjo0NCBBTSwgU2FtaSBN dWphd2FyIHdyb3RlOg0KPiBUaGlzIHByb2dyYW0gaXMgcHJvdmlkZWQgdG8gYWxsb3cgZXhhbWlu YXRpb24gb2YgQUNQSSB0YWJsZSBjb250ZW50cw0KPiBmcm9tIHRoZSBVRUZJIFNoZWxsLiAgVGhp cyBjYW4gaGVscCB3aXRoIGludmVzdGlnYXRpb25zLCBlc3BlY2lhbGx5IGF0DQo+IHRoYXQgc3Rh Z2Ugd2hlcmUgdGhlIHRhYmxlcyBhcmUgbm90IGVuYWJsaW5nIGFuIE9TIHRvIGJvb3QuDQo+IFRo ZSBwcm9ncmFtIGlzIG5vdCBleGhhdXN0aXZlLCBhbmQgb25seSBlbmNhcHN1bGF0ZXMgZGV0YWls ZWQga25vd2xlZGdlDQo+IG9mIGEgbGltaXRlZCBudW1iZXIgb2YgdGFibGUgdHlwZXMuDQo+IA0K PiBEZWZhdWx0IGJlaGF2aW91ciBpcyB0byBkaXNwbGF5IHRoZSBjb250ZW50IG9mIGFsbCB0YWJs ZXMgaW5zdGFsbGVkLg0KPiAnS25vd24nIHRhYmxlIHR5cGVzIHdpbGwgYmUgcGFyc2VkIGFuZCBk aXNwbGF5ZWQgd2l0aCBkZXNjcmlwdGlvbnMgYW5kDQo+IGZpZWxkIHZhbHVlcy4gIFdoZXJlIGFw cHJvcHJpYXRlIGEgZGVncmVlIG9mIGNvbnNpc3RlbmN5IGNoZWNraW5nIGlzDQo+IGRvbmUgYW5k IGVycm9ycyBtYXkgYmUgcmVwb3J0ZWQgaW4gdGhlIG91dHB1dC4NCj4gT3RoZXIgdGFibGUgdHlw ZXMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgYW4gYXJyYXkgb2YgSGV4YWRlY2ltYWwgYnl0ZXMuDQo+ IA0KPiBUbyBmYWNpbGl0YXRlIGRlYnVnZ2luZywgdGhlIC1zIGFuZCAtZCBvcHRpb25zIGNhbiBi ZSB1c2VkIHRvIGdlbmVyYXRlIGENCj4gYmluYXJ5IGZpbGUgaW1hZ2Ugb2YgYSB0YWJsZSB0aGF0 IGNhbiBiZSBjb3BpZWQgZWxzZXdoZXJlIGZvcg0KPiBpbnZlc3RpZ2F0aW9uIHVzaW5nIHRvb2xz IHN1Y2ggYXMgdGhvc2UgcHJvdmlkZWQgYnkgYWNwaWNhLm9yZy4gIFRoaXMgaXMNCj4gZXNwZWNp YWxseSByZWxldmFudCBmb3IgQU1MIHR5cGUgdGFibGVzIGxpa2UgRFNEVCBhbmQgU1NEVC4NCj4g DQo+IFRoZSBpbnNwaXJhdGlvbiBmb3IgdGhpcyBpcyB0aGUgZXhpc3Rpbmcgc21iaW9zdmlldyBE ZWJ1ZzEgU2hlbGwNCj4gY29tbWFuZC4NCj4gDQo+IE1hbnkgdGFibGVzIGFyZSBub3QgZXhwbGlj aXRseSBoYW5kbGVkLCBpbiBwYXJ0IGJlY2F1c2Ugbm8gZXhhbXBsZXMgYXJlDQo+IGF2YWlsYWJs ZSBmb3Igb3VyIHRlc3RpbmcuDQo+IA0KPiBUaGUgcHJvZ3JhbSBpcyBkZXNpZ25lZCB0byBiZSBl eHRlbmRlZCB0byBuZXcgdGFibGVzIHdpdGggbWluaW1hbA0KPiBlZmZvcnQsIGFuZCBjb250cmli dXRpb25zIGFyZSBpbnZpdGVkLg0KPiANCj4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBD b250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiBTaWduZWQtb2ZmLWJ5OiBTYW1pIE11amF3YXIg PHNhbWkubXVqYXdhckBhcm0uY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBFdmFuIExsb3lkIDxldmFu Lmxsb3lkQGFybS5jb20+DQo+IFJldmlld2VkLWJ5OiBKYWJlbiBDYXJzZXkgPGphYmVuLmNhcnNl eUBpbnRlbC5jb20+DQo+IC0tLQ0KPiANCj4gVGhlIHVwZGF0ZWQgY2hhbmdlcyBjYW4gYmUgdmll d2VkIGF0Og0KPiAJaHR0cHM6Ly9naXRodWIuY29tL3NhbWltdWphd2FyL2VkazIvdHJlZS8xODhf YWNwaXZpZXdfdjQNCj4gDQo+IE5vdGVzOg0KPiAgICAgIHY0Og0KPiAgICAgIC0gRmlyc3RseSwg cHVibGljIGxpYnJhcnkgQVBJcyBzaG91bGQgaGF2ZSAiRUZJQVBJIiBkZWNvcmF0b3IuICAgICBb UkFZXQ0KPiAgICAgIC0gUmVzdWJtaXR0aW5nIHVwZGF0ZWQgcGF0Y2ggd2l0aCAiRUZJQVBJIiBk ZWNvcmF0b3IuICAgICAgICAgICAgIFtTQU1JXQ0KPiAgICAgIA0KPiAgICAgIC0gU2Vjb25kbHks IEkgYW0gd29uZGVyaW5nIGlmIGl0J3MgcG9zc2libGUgdG8gbm90IGV4cG9zZSBhbnkNCj4gICAg ICAgIGxpYnJhcnkgY2xhc3NlcyBmb3IgaGFuZGxpbmcgb2YgbW9yZSBBQ1BJIHRhYmxlcy4NCj4g ICAgICAgIEkgYWdyZWUgdG8gaW1wbGVtZW50IFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYiBp biBhIHdheSBmb3IgZWFzeQ0KPiAgICAgICAgZXh0ZW5zaW9uIGZvciBoYW5kbGluZyBvZiBtb3Jl IEFDUEkgdGFibGVzLCBidXQgSSBwcmVmZXIgdG8ga2VlcCB0aGUNCj4gICAgICAgIGludGVyZmFj ZXMgaW50ZXJuYWxseSBpbnNpZGUgdGhlIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi4gICAg W1JBWV0NCj4gICAgICAtIFVwZGF0ZWQgYXMgc3VnZ2VzdGVkLiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBbU0FNSV0NCj4gICAgICANCj4gICAgICB2MzoNCj4gICAg ICAtIENhbiB0aGUgaW5kaXZpZHVhbCAiY2hpbGQiIGxpYnJhcmllcyBiZSBwbGFjZWQgaW50bw0K PiAgICAgICAgc3ViZGlyZWN0b3JpZXMgdW5kZXIgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli IGRpcmVjdG9yeQ0KPiAgICAgICAgZm9yIGNsZWFyIHNlcGFyYXRpb24/ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgW0pBQkVOXQ0KPiAgICAgIC0gUGF0Y2ggdXBkYXRl ZCB0byBtb3ZlIGluZGl2aWR1YWwgImNoaWxkIiBsaWJyYXJpZXMgaW50bw0KPiAgICAgICAgc3Vi ZGlyZWN0b3JpZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFtTQU1JXQ0KPiAgICAgIA0KPiAgICAgIC0gSW4gVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliLGMgd2hhdCdzIHRoZSBtb3RpdmF0aW9uIGZvciBhbGwNCj4gICAgICAgIHRoZSB3cmFwcGVy cyBhcm91bmQgcHJpbnQ/IEkgc2VlIHRoYXQgc29tZSBhcmUgZm9yIG1lbW9yeSBhY2Nlc3MNCj4g ICAgICAgIHJlc3RyaWN0aW9ucywgYnV0IHRoZSByZXN0PyAgUHJpbnRHdWlkLCBsb29rcyB0aGUg c2FtZSBhcyB1c2luZw0KPiAgICAgICAgJWcgd2l0aCBQcmludCgpLi4uICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0pBQkVOXQ0KPiAgICAgIC0gVGhlIHByaW50 IHdyYXBwZXJzIGVuYWJsZSBhIGNvbW1vbiBzdHlsZWQgZm9ybWF0dGVkIHByaW50aW5nIGZvcg0K PiAgICAgICAgdGhlIEFDUEkgZmllbGRzLiBUaGUgQUNQSXZpZXcgdGFibGUgcGFyc2luZyBmcmFt ZXdvcmsgdXRpbGl6ZXMgYQ0KPiAgICAgICAgdGFibGUtZHJpdmVuIGFwcHJvYWNoIGZvciBwYXJz aW5nIHRoZSB0YWJsZXMgYW5kIHRoZXNlIGZ1bmN0aW9ucw0KPiAgICAgICAgYXJlIGludm9rZWQg YnkgdGhlIGZyYW1ld29yayBiYXNlZCBvbiB0aGUgZmllbGQgc2l6ZSBhbmQgdHlwZS4NCj4gICAg ICAgIEhvd2V2ZXIgeW91IGFyZSByaWdodCwgaXQgaXMgc3VwZXJmbHVvdXMgaW4gdGhlIGNhc2Ug b2YgUHJpbnRHdWlkDQo+ICAgICAgICAoV2hpY2ggaGFzIG5vdyBiZWVuIHJlbW92ZWQgaW4gdGhl IHVwZGF0ZWQgcGF0Y2gpLiAgICAgICAgICAgICAgW1NBTUldDQo+ICAgICAgDQo+ICAgICAgLSBE byB3ZSB3YW50IHRvIGNoYW5nZSB0aGUgbWFpbiBlbnRyeXBvaW50IHRvIGEgRHluYW1pY0NvbW1h bmQNCj4gICAgICAgIHNpbmNlIHRoaXMgY29tbWFuZCBpcyBub3QgaW4gdGhlIHNoZWxsIHNwZWM/ IElmIHllcywgZG8gd2Ugd2FudA0KPiAgICAgICAgdG8gZG8gdGhhdCBmaXJzdCBvciBhZnRlcj8g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0pBQkVOXQ0KPiAgICAgIC0gVGhl IEVDUiAxNzg0IGZvciBBQ1BJdmlldyBhcHBlYXJzIHRvIGJlICdBcHByb3ZlZCBhcyBuZXcgY29u dGVudA0KPiAgICAgICAgZm9yIHRoZSBTaGVsbCBTcGVjLicgaW4gTWFudGlzLA0KPiAgICAgICAg c2VlIGh0dHBzOi8vbWFudGlzLnVlZmkub3JnL21hbnRpcy92aWV3LnBocD9pZD0xNzg0Lg0KPiAg ICAgICAgQXMgSSB1bmRlcnN0YW5kIGl0LCB0aGUgRUNSIGNoYW5nZSBuZWVkcyB0byBiZSBwcm9w YWdhdGVkIHRvIHRoZQ0KPiAgICAgICAgU2hlbGwgc3BlY2lmaWNhdGlvbiBhbmQgaXMgcGVuZGlu Zy4gSW4gbGlnaHQgb2YgdGhlIGFib3ZlLCBJIHRoaW5rDQo+ICAgICAgICB0aGF0IGFkZGluZyBE eW5hbWljQ29tbWFuZCBzdXBwb3J0IGlzIG5vdCBuZWNlc3NhcnkuIFBsZWFzZSBsZXQgbWUNCj4g ICAgICAgIGtub3cgaWYgeW91IGZlZWwgb3RoZXJ3aXNlLiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBbU0FNSV0NCj4gDQo+ICAgU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0Fj cGlWaWV3L0FjcGlQYXJzZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQ0OSAr KysrKysrKysrKysNCj4gICBTaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcvQWNwaVRh YmxlUGFyc2VyLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTI2ICsrKysNCg0KU2FtaSwg c2hvdWxkIHRoZSBhYm92ZSB0d28gbmV3IGZpbGVzIGJlIHJlbW92ZWQ/DQpTaW5jZSBwZXIgeW91 ciBjb21tZW50cywgdGhlIGludGVyZmFjZXMgYXJlIGtlcHQgaW5zaWRlDQpVZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIuDQoNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9BY3BpUGFyc2VyLmMgICAgICAgICAgICAgICAgICAgIHwgNjYyICsrKysrKysr KysrKysrKysrDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvQWNwaVRhYmxlUGFyc2VyLmMgICAgICAgICAgICAgICB8IDIxNSArKysrKysNCj4gICBTaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5jICAgICAg ICAgICAgICAgICAgICAgIHwgNjAxICsrKysrKysrKysrKysrKysNCj4gICBTaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5oICAgICAgICAgICAgICAg ICAgICAgIHwgMTAzICsrKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyLmMgICAgICAgfCAxMTcgKysrDQo+ICAg U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0 L0JncnRQYXJzZXJMaWIuaW5mICB8ICAzMyArDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZXIuYyAgICAgICB8IDI4 NyArKysrKysrKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvRGJnMi9EYmcyUGFyc2VyTGliLmluZiAgfCAgMzMgKw0KPiAgIFNoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFy c2VyLmMgICAgICAgfCAgOTIgKysrDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJzZXJMaWIuaW5mICB8ICAzMyArDQo+ ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9G YWR0L0ZhZHRQYXJzZXIuYyAgICAgICB8IDMwOSArKysrKysrKw0KPiAgIFNoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyTGli LmluZiAgfCAgMzMgKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyLmMgICAgICAgfCAzMzggKysrKysrKysrDQo+ ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9H dGR0L0d0ZHRQYXJzZXJMaWIuaW5mICB8ICAzMyArDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXIuYyAgICAgICB8 IDc0NSArKysrKysrKysrKysrKysrKysrKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyTGliLmluZiAgfCAgMzMg Kw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvTWFkdC9NYWR0UGFyc2VyLmMgICAgICAgfCAzNTggKysrKysrKysrKw0KPiAgIFNoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0UGFy c2VyTGliLmluZiAgfCAgMzMgKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyLmMgICAgICAgfCAxMzkgKysrKw0K PiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv TWNmZy9NY2ZnUGFyc2VyTGliLmluZiAgfCAgMzMgKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFyc2VyLmMgICAgICAg fCAyMTQgKysrKysrDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZXJMaWIuaW5mICB8ICAzMyArDQo+ICAgU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1NsaXRQ YXJzZXIuYyAgICAgICB8IDE4NyArKysrKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2VyTGliLmluZiAgfCAgMzMg Kw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvU3Bjci9TcGNyUGFyc2VyLmMgICAgICAgfCAyMTMgKysrKysrDQo+ICAgU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJzZXJM aWIuaW5mICB8ICAzMyArDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXIuYyAgICAgICB8IDM3NSArKysrKysrKysr DQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9TcmF0L1NyYXRQYXJzZXJMaWIuaW5mICB8ICAzMyArDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0L1NzZHRQYXJzZXIuYyAgICAg ICB8ICA5MiArKysNCj4gICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL1NzZHQvU3NkdFBhcnNlckxpYi5pbmYgIHwgIDMzICsNCj4gICBTaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBh cnNlci5jICAgICAgIHwgMTk4ICsrKysrKw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyTGliLmluZiAgfCAgMzMg Kw0KPiAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi5jICAgfCAxMDYgKysrDQo+ICAgU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli LmggICB8ICAzMiArDQo+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmluZiB8ICA2MCArKw0KPiAgIFNoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi51bmkgfCAxMjcgKysrKw0KPiAgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMg Ky0NCj4gICAzOSBmaWxlcyBjaGFuZ2VkLCA2NjA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkNCj4gDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcv QWNwaVBhcnNlci5oIGIvU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJz ZXIuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGQ3NWVlYjkyODJhNzY0OTI0MzNlNDYwYTE4MGRjYzRj ZDE0YzRlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5 L0FjcGlWaWV3L0FjcGlQYXJzZXIuaA0KPiBAQCAtMCwwICsxLDQ0OSBAQA0KPiArLyoqDQo+ICsg IEhlYWRlciBmaWxlIGZvciBBQ1BJIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAx NiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRo ZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBC QVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkg S0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVm IEFDUElQQVJTRVJfSF8NCj4gKyNkZWZpbmUgQUNQSVBBUlNFUl9IXw0KPiArDQo+ICsjZGVmaW5l IE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEggIDM2DQo+ICsNCj4gKy8vLyBUaGUgUlNEUCB0YWJs ZSBzaWduYXR1cmUgaXMgIlJTRCBQVFIgIiAoOCBieXRlcykNCj4gKy8vLyBIb3dldmVyIFRoZSBz aWduYXR1cmUgZm9yIEFDUEkgdGFibGVzIGlzIDQgYnl0ZXMuDQo+ICsvLy8gVG8gd29yayBhcm91 bmQgdGhpcyBvZGRpdHkgZGVmaW5lIGEgc2lnbmF0dXJlIHR5cGUNCj4gKy8vLyB0aGF0IGFsbG93 cyB1cyB0byBwcm9jZXNzIHRoZSBsb2cgb3B0aW9ucy4NCj4gKyNkZWZpbmUgUlNEUF9UQUJMRV9J TkZPICBTSUdOQVRVUkVfMzIoJ1InLCAnUycsICdEJywgJ1AnKQ0KPiArDQo+ICsvKiogVGhpcyBm dW5jdGlvbiBpbmNyZW1lbnRzIHRoZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50ZXIuDQo+ICsqLw0K PiArVk9JRA0KPiArRUZJQVBJDQo+ICtJbmNyZW1lbnRFcnJvckNvdW50ICgNCj4gKyAgVk9JRA0K PiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmNyZW1lbnRzIHRoZSBBQ1BJIHRh YmxlIHdhcm5pbmcgY291bnRlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0luY3Jl bWVudFdhcm5pbmdDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gdmVyaWZpZXMgdGhlIEFDUEkgdGFibGUgY2hlY2tzdW0uDQo+ICsNCj4gKyAgVGhp cyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgY2hlY2tzdW0gZm9yIHRoZSBBQ1BJIHRhYmxlIGFuZCBv cHRpb25hbGx5DQo+ICsgIHByaW50cyB0aGUgc3RhdHVzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5d IExvZyAgICAgSWYgVFJVRSBsb2cgdGhlIHN0YXR1cyBvZiB0aGUgY2hlY2tzdW0uDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIHRhYmxlIGJ1ZmZl ci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBUaGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIuDQo+ ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgVGhlIGNoZWNrc3VtIGlzIE9LLg0KPiArICBA cmV0dmFsIEZBTFNFICAgICAgICBUaGUgY2hlY2tzdW0gZmFpbGVkLg0KPiArKi8NCj4gK0JPT0xF QU4NCj4gK0VGSUFQSQ0KPiArVmVyaWZ5Q2hlY2tzdW0gKA0KPiArICBJTiBCT09MRUFOIExvZywN Cj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgTGVuZ3RoDQo+ICsgICk7DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgcmF3IGRhdGEgZHVtcCBvZiB0aGUg QUNQSSB0YWJsZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSB0YWJsZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgVGhl IGxlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVt cFJhdyAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJTlQzMiBMZW5ndGgNCj4gKyAg KTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDEgYnl0ZSBvZiBkYXR1bSBhcyBz cGVjaWZpZWQgaW4gdGhlDQo+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiAr ICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIu DQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtEdW1wVWludDggKA0KPiArICBJTiBDT05T VCBDSEFSMTYqIEZvcm1hdCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKTsNCj4g Kw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDIgYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZp ZWQgaW4gdGhlDQo+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBG b3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsq Lw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtEdW1wVWludDE2ICgNCj4gKyAgSU4gQ09OU1QgQ0hB UjE2KiBGb3JtYXQsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA0IGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGlu IHRoZQ0KPiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0 ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtp bl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4g K1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVtcFVpbnQzMiAoDQo+ICsgIElOIENPTlNUIENIQVIxNiog Rm9ybWF0LA0KPiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiog VGhpcyBmdW5jdGlvbiB0cmFjZXMgOCBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBieSB0aGUN Cj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhl IGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lE DQo+ICtFRklBUEkNCj4gK0R1bXBVaW50NjQgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1h dCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gdHJhY2VzIDMgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KPiAr ICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KPiArDQo+ ICsgIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBO VUxMLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0cmlu ZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0K PiArRHVtcDNDaGFycyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0K PiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiB0cmFjZXMgNCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ICsgICBm b3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ICsNCj4gKyAg SWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZv ciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtE dW1wNENoYXJzICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ICsg IElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHRyYWNlcyA2IGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1h dGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gKw0KPiArICBJZiBu byBmb3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRy YWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUg c3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXA2 Q2hhcnMgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCj4gKyAgSU4g VUlOVDgqICAgICAgICBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJh Y2VzIDggY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KPiArICAgZm9ybWF0ZWQg dXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KPiArDQo+ICsgIElmIG5vIGZv cm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxMLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2lu ZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVtcDhDaGFy cyAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiArICBJTiBVSU5U OCogICAgICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmRlbnRz IGFuZCBwcmludHMgdGhlIEFDUEkgdGFibGUgRmllbGQgTmFtZS4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBJbmRlbnQgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGFkZCB0byB0aGUgZ2xvYmFsIHRh YmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudC4gVGhlIGdsb2JhbCB0YWJs ZSBpbmRlbnQgaXMgMCBieSBkZWZhdWx0Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBo b3dldmVyIHRoaXMgdmFsdWUgaXMgdXBkYXRlZCBvbiBlbnRyeSB0byB0aGUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgUGFyc2VBY3BpKCkgYnkgYWRkaW5nIHRoZSBpbmRlbnQgdmFsdWUg cHJvdmlkZWQgdG8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VBY3BpKCkgYW5k IHJlc3RvcmVkIGJhY2sgb24gZXhpdC4gVGhlcmVmb3JlDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgIHRoZSB0b3RhbCBpbmRlbnQgaW4gdGhlIG91dHB1dCBpcyBkZXBlbmRlbnQgb24gZnJv bQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNh bGxlZC4NCj4gKyAgQHBhcmFtIFtpbl0gRmllbGROYW1lICAgUG9pbnRlciB0byB0aGUgRmllbGQg TmFtZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1ByaW50RmllbGROYW1lICgNCj4g KyAgSU4gVUlOVDMyICAgICAgICAgSW5kZW50LA0KPiArICBJTiBDT05TVCBDSEFSMTYqICBGaWVs ZE5hbWUNCj4gKyk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBvaW50ZXIgaXMgdGhlIHRl bXBsYXRlIGZvciBjdXN0b21pemluZyB0aGUgdHJhY2Ugb3V0cHV0DQo+ICsNCj4gKyAgQHBhcmFt IFtpbl0gRm9ybWF0ICBGb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhIGFzIHNwZWNp ZmllZCBieQ0KPiArICAgICAgICAgICAgICAgICAgICAgIHRoZSAnRm9ybWF0JyBtZW1iZXIgb2Yg QUNQSV9QQVJTRVIuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICt0eXBlZGVmIFZPSUQgKEVGSUFQSSAqRk5QVFJf UFJJTlRfRk9STUFUVEVSKShDT05TVCBDSEFSMTYqIEZvcm1hdCwgVUlOVDgqIFB0cik7DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBvaW50ZXIgaXMgdGhlIHRlbXBsYXRlIGZvciB2YWxpZGF0 aW5nIGFuIEFDUEkgdGFibGUgZmllbGQuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0g Q29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gYXMgc3BlY2lm aWVkIGJ5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlICdDb250ZXh0JyBtZW1iZXIgb2Yg dGhlIEFDUElfUEFSU0VSLg0KPiArICAgICAgICAgICAgICAgICAgICAgIGUuZy4gdGhpcyBjb3Vs ZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK3R5cGVk ZWYgVk9JRCAoRUZJQVBJICpGTlBUUl9GSUVMRF9WQUxJREFUT1IpKFVJTlQ4KiBQdHIsIFZPSUQq IENvbnRleHQpOw0KPiArDQo+ICsvKiogVGhlIEFDUElfUEFSU0VSIHN0cnVjdHVyZSBkZXNjcmli ZXMgdGhlIGZpZWxkcyBvZiBhbiBBQ1BJIHRhYmxlIGFuZA0KPiArICAgIHByb3ZpZGVzIG1lYW5z IGZvciB0aGUgcGFyc2VyIHRvIGludGVycHJldCBhbmQgdHJhY2UgYXBwcm9wcmlhdGVseS4NCj4g Kw0KPiArICBUaGUgZmlyc3QgdGhyZWUgbWVtYmVycyBhcmUgcG9wdWxhdGVkIGJhc2VkIG9uIGlu Zm9ybWF0aW9uIHByZXNlbnQgaW4NCj4gKyAgaW4gdGhlIEFDUEkgdGFibGUgc3BlY2lmaWNhdGlv bnMuIFRoZSByZW1haW5pbmcgbWVtYmVycyBkZXNjcmliZSBob3cNCj4gKyAgdGhlIHBhcnNlciBz aG91bGQgcmVwb3J0IHRoZSBmaWVsZCBpbmZvcm1hdGlvbiwgdmFsaWRhdGUgdGhlIGZpZWxkIGRh dGENCj4gKyAgYW5kL29yIHVwZGF0ZSBhbiBleHRlcm5hbCBwb2ludGVyIHRvIHRoZSBmaWVsZCAo SXRlbVB0cikuDQo+ICsNCj4gKyAgUGFyc2VBY3BpKCkgdXNlcyB0aGUgZm9ybWF0IHN0cmluZyBz cGVjaWZpZWQgYnkgJ0Zvcm1hdCcgZm9yIHRyYWNpbmcNCj4gKyAgdGhlIGZpZWxkIGRhdGEuIElm IHRoZSBmaWVsZCBpcyBtb3JlIGNvbXBsZXggYW5kIHJlcXVpcmVzIGFkZGl0aW9uYWwNCj4gKyAg cHJvY2Vzc2luZyBmb3IgZm9ybWF0dGluZyBhbmQgcmVwcmVzZW50YXRpb24gYSBwcmludCBmb3Jt YXR0ZXIgZnVuY3Rpb24NCj4gKyAgY2FuIGJlIHNwZWNpZmllZCBpbiAnUHJpbnRGb3JtYXR0ZXIn Lg0KPiArICBUaGUgUHJpbnRGb3JtYXR0ZXIgZnVuY3Rpb24gbWF5IGNob29zZSB0byB1c2UgdGhl IGZvcm1hdCBzdHJpbmcNCj4gKyAgc3BlY2lmaWVkIGJ5ICdGb3JtYXQnIG9yIHVzZSBpdHMgb3du IGludGVybmFsIGZvcm1hdCBzdHJpbmcuDQo+ICsNCj4gKyAgVGhlICdGb3JtYXQnIGFuZCAnUHJp bnRGb3JtYXR0ZXInIG1lbWJlcnMgYWxsb3cgZmxleGliaWxpdHkgZm9yDQo+ICsgIHJlcHJlc2Vu dGluZyB0aGUgZmllbGQgZGF0YS4NCj4gKyovDQo+ICt0eXBlZGVmIHN0cnVjdCBBY3BpUGFyc2Vy IHsNCj4gKw0KPiArICAvLy8gU3RyaW5nIGRlc2NyaWJpbmcgdGhlIEFDUEkgdGFibGUgZmllbGQN Cj4gKyAgLy8vIChGaWVsZCBjb2x1bW4gZnJvbSBBQ1BJIHRhYmxlIHNwZWMpDQo+ICsgIENPTlNU IENIQVIxNiogICAgICAgICBOYW1lU3RyOw0KPiArDQo+ICsgIC8vLyBUaGUgbGVuZ3RoIG9mIHRo ZSBmaWVsZC4NCj4gKyAgLy8vIChCeXRlIExlbmd0aCBjb2x1bW4gZnJvbSBBQ1BJIHRhYmxlIHNw ZWMpDQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICBMZW5ndGg7DQo+ICsNCj4gKyAgLy8vIFRo ZSBvZmZzZXQgb2YgdGhlIGZpZWxkIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSB0YWJsZS4NCj4gKyAg Ly8vIChCeXRlIE9mZnNldCBjb2x1bW4gZnJvbSBBQ1BJIHRhYmxlIHNwZWMpDQo+ICsgIFVJTlQz MiAgICAgICAgICAgICAgICBPZmZzZXQ7DQo+ICsNCj4gKyAgLy8vIE9wdGlvbmFsIFByaW50KCkg c3R5bGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4gSWYgbm90DQo+ICsgIC8v LyB1c2VkIHRoaXMgbXVzdCBiZSBzZXQgdG8gTlVMTC4NCj4gKyAgQ09OU1QgQ0hBUjE2KiAgICAg ICAgIEZvcm1hdDsNCj4gKw0KPiArICAvLy8gT3B0aW9uYWwgcG9pbnRlciB0byBhIHByaW50IGZv cm1hdHRlciBmdW5jdGlvbiB3aGljaA0KPiArICAvLy8gaXMgdHlwaWNhbGx5IHVzZWQgdG8gdHJh Y2UgY29tcGxleCBmaWVsZCBpbmZvcm1hdGlvbi4NCj4gKyAgLy8vIElmIG5vdCB1c2VkIHRoaXMg bXVzdCBiZSBzZXQgdG8gTlVMTC4NCj4gKyAgLy8vIFRoZSBGb3JtYXQgc3RyaW5nIGlzIHBhc3Nl ZCB0byB0aGUgUHJpbnRGb3JtYXR0ZXIgZnVuY3Rpb24NCj4gKyAgLy8vIGJ1dCBtYXkgYmUgaWdu b3JlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gY29kZS4NCj4gKyAgRk5QVFJfUFJJTlRfRk9STUFU VEVSIFByaW50Rm9ybWF0dGVyOw0KPiArDQo+ICsgIC8vLyBPcHRpb25hbCBwb2ludGVyIHdoaWNo IG1heSBiZSBzZXQgdG8gcmVxdWVzdCB0aGUgcGFyc2VyIHRvIHVwZGF0ZQ0KPiArICAvLy8gYSBw b2ludGVyIHRvIHRoZSBmaWVsZCBkYXRhLiBJZiB1bnVzZWQgdGhpcyBtdXN0IGJlIHNldCB0byBO VUxMLg0KPiArICBWT0lEKiogICAgICAgICAgICAgICAgSXRlbVB0cjsNCj4gKw0KPiArICAvLy8g T3B0aW9uYWwgcG9pbnRlciB0byBhIGZpZWxkIHZhbGlkYXRvciBmdW5jdGlvbi4NCj4gKyAgLy8v IFRoZSBmdW5jdGlvbiBzaG91bGQgZGlyZWN0bHkgcmVwb3J0IGFueSBhcHByb3ByaWF0ZSBlcnJv ciBvciB3YXJuaW5nDQo+ICsgIC8vLyBhbmQgaW52b2tlIHRoZSBhcHByb3ByaWF0ZSBjb3VudGVy IHVwZGF0ZSBmdW5jdGlvbi4NCj4gKyAgLy8vIElmIG5vdCB1c2VkIHRoaXMgcGFyYW1ldGVyIG11 c3QgYmUgc2V0IHRvIE5VTEwuDQo+ICsgIEZOUFRSX0ZJRUxEX1ZBTElEQVRPUiBGaWVsZFZhbGlk YXRvcjsNCj4gKw0KPiArICAvLy8gT3B0aW9uYWwgcG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmlj IGluZm9ybWF0aW9uLA0KPiArICAvLy8gd2hpY2ggdGhlIEZpZWxkIFZhbGlkYXRvciBmdW5jdGlv biBjYW4gdXNlIHRvIGRldGVybWluZQ0KPiArICAvLy8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBh Ym91dCB0aGUgQUNQSSB0YWJsZSBhbmQgbWFrZQ0KPiArICAvLy8gZGVjaXNpb25zIGFib3V0IHRo ZSBmaWVsZCBiZWluZyB2YWxpZGF0ZWQuDQo+ICsgIC8vLyBlLmcuIHRoaXMgY291bGQgYmUgYSBw b2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlcg0KPiArICBWT0lEKiAgICAgICAgICAgICAg ICAgQ29udGV4dDsNCj4gK30gQUNQSV9QQVJTRVI7DQo+ICsNCj4gKy8qKiBBIHN0cnVjdHVyZSB1 c2VkIHRvIHN0b3JlIHRoZSBwb2ludGVycyB0byB0aGUgbWVtYmVycyBvZiB0aGUNCj4gKyAgICBB Q1BJIGRlc2NyaXB0aW9uIGhlYWRlciBzdHJ1Y3R1cmUgdGhhdCB3YXMgcGFyc2VkLg0KPiArKi8N Cj4gK3R5cGVkZWYgc3RydWN0IEFjcGlEZXNjcmlwdGlvbkhlYWRlckluZm8gew0KPiArICAvLy8g QUNQSSB0YWJsZSBzaWduYXR1cmUNCj4gKyAgVUlOVDMyKiBTaWduYXR1cmU7DQo+ICsgIC8vLyBM ZW5ndGggb2YgdGhlIEFDUEkgdGFibGUNCj4gKyAgVUlOVDMyKiBMZW5ndGg7DQo+ICsgIC8vLyBS ZXZpc2lvbg0KPiArICBVSU5UOCogIFJldmlzaW9uOw0KPiArICAvLy8gQ2hlY2tzdW0NCj4gKyAg VUlOVDgqICBDaGVja3N1bTsNCj4gKyAgLy8vIE9FTSBJZCAtIGxlbmd0aCBpcyA2IGJ5dGVzDQo+ ICsgIFVJTlQ4KiAgT2VtSWQ7DQo+ICsgIC8vLyBPRU0gdGFibGUgSWQNCj4gKyAgVUlOVDY0KiBP ZW1UYWJsZUlkOw0KPiArICAvLy8gT0VNIHJldmlzaW9uIElkDQo+ICsgIFVJTlQzMiogT2VtUmV2 aXNpb247DQo+ICsgIC8vLyBDcmVhdG9yIElkDQo+ICsgIFVJTlQzMiogQ3JlYXRvcklkOw0KPiAr ICAvLy8gQ3JlYXRvciByZXZpc2lvbg0KPiArICBVSU5UMzIqIENyZWF0b3JSZXZpc2lvbjsNCj4g K30gQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTzsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rp b24gaXMgdXNlZCB0byBwYXJzZSBhbiBBQ1BJIHRhYmxlIGJ1ZmZlci4NCj4gKw0KPiArICBUaGUg QUNQSSB0YWJsZSBidWZmZXIgaXMgcGFyc2VkIHVzaW5nIHRoZSBBQ1BJIHRhYmxlIHBhcnNlciBp bmZvcm1hdGlvbg0KPiArICBzcGVjaWZpZWQgYnkgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIEFD UElfUEFSU0VSIGVsZW1lbnRzLiBUaGlzIHBhcnNlcg0KPiArICBmdW5jdGlvbiBpdGVyYXRlcyB0 aHJvdWdoIGVhY2ggaXRlbSBvbiB0aGUgQUNQSV9QQVJTRVIgYXJyYXkgYW5kIGxvZ3MgdGhlDQo+ ICsgIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gY2FuIG9wdGlv bmFsbHkgYmUgdXNlZCB0byBwYXJzZSBBQ1BJIHRhYmxlcyBhbmQgZmV0Y2ggc3BlY2lmaWMNCj4g KyAgZmllbGQgdmFsdWVzLiBUaGUgSXRlbVB0ciBtZW1iZXIgb2YgdGhlIEFDUElfUEFSU0VSIHN0 cnVjdHVyZSAod2hlcmUgdXNlZCkNCj4gKyAgaXMgdXBkYXRlZCBieSB0aGlzIHBhcnNlciBmdW5j dGlvbiB0byBwb2ludCB0byB0aGUgc2VsZWN0ZWQgZmllbGQgZGF0YQ0KPiArICAoZS5nLiB1c2Vm dWwgZm9yIHZhcmlhYmxlIGxlbmd0aCBuZXN0ZWQgZmllbGRzKS4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBUcmFjZSAgICAgICAgVHJhY2UgdGhlIEFDUEkgZmllbGRzIFRSVUUgZWxzZSBvbmx5IHBh cnNlIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuDQo+ICsgIEBwYXJh bSBbaW5dIEluZGVudCAgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCB0aGUgb3V0cHV0 Lg0KPiArICBAcGFyYW0gW2luXSBBc2NpaU5hbWUgICAgT3B0aW9uYWwgcG9pbnRlciB0byBhbiBB U0NJSSBzdHJpbmcgdGhhdCBkZXNjcmliZXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHRoZSB0YWJsZSBiZWluZyBwYXJzZWQuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBMZW5n dGggICAgICAgTGVuZ3RoIG9mIHRoZSBidWZmZXIgcG9pbnRlZCBieSBQdHIuDQo+ICsgIEBwYXJh bSBbaW5dIFBhcnNlciAgICAgICBQb2ludGVyIHRvIGFuIGFycmF5IG9mIEFDUElfUEFSU0VSIHN0 cnVjdHVyZSB0aGF0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgdGhl IHRhYmxlIGJlaW5nIHBhcnNlZC4NCj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VySXRlbXMgIE51bWJl ciBvZiBpdGVtcyBpbiB0aGUgQUNQSV9QQVJTRVIgYXJyYXkuDQo+ICsNCj4gKyAgQHJldHZhbCBO dW1iZXIgb2YgYnl0ZXMgcGFyc2VkLg0KPiArKi8NCj4gK1VJTlQzMg0KPiArRUZJQVBJDQo+ICtQ YXJzZUFjcGkgKA0KPiArICBJTiBCT09MRUFOICAgICAgICAgICAgVHJhY2UsDQo+ICsgIElOIFVJ TlQzMiAgICAgICAgICAgICBJbmRlbnQsDQo+ICsgIElOIENPTlNUIENIQVI4KiAgICAgICBBc2Np aU5hbWUgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgICAgICBQdHIsDQo+ICsgIElO IFVJTlQzMiAgICAgICAgICAgICBMZW5ndGgsDQo+ICsgIElOIENPTlNUIEFDUElfUEFSU0VSKiBQ YXJzZXIsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBQYXJzZXJJdGVtcw0KPiArKTsNCj4g Kw0KPiArLyoqIFRoaXMgaXMgYSBoZWxwZXIgbWFjcm8gdG8gcGFzcyBwYXJhbWV0ZXJzIHRvIHRo ZSBQYXJzZXIgZnVuY3Rpb25zLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFBhcnNlciBUaGUgbmFt ZSBvZiB0aGUgQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUNCj4gKyAgICAgICAgICAg ICAgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsqLw0KPiArI2RlZmluZSBQQVJTRVJfUEFSQU1TKFBh cnNlcikgUGFyc2VyLCBzaXplb2YgKFBhcnNlcikgLyBzaXplb2YgKFBhcnNlclswXSkNCj4gKw0K PiArLyoqIFRoaXMgaXMgYSBoZWxwZXIgbWFjcm8gZm9yIGRlc2NyaWJpbmcgdGhlIEFDUEkgaGVh ZGVyIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW291dF0gSW5mbyAgUG9pbnRlciB0byByZXRy aWV2ZSB0aGUgQUNQSSB0YWJsZSBoZWFkZXIgaW5mb3JtYXRpb24uDQo+ICsqLw0KPiArI2RlZmlu ZSBQQVJTRV9BQ1BJX0hFQURFUihJbmZvKSAgICAgICAgICAgICAgICAgICBcDQo+ICsgIHsgTCJT aWduYXR1cmUiLCA0LCAwLCBOVUxMLCBEdW1wNENoYXJzLCAgICAgICAgIFwNCj4gKyAgICAoVk9J RCoqKSYoSW5mbyktPlNpZ25hdHVyZSAsIE5VTEwsIE5VTEwgfSwgICAgXA0KPiArICB7IEwiTGVu Z3RoIiwgNCwgNCwgTCIlZCIsIE5VTEwsICAgICAgICAgICAgICAgICBcDQo+ICsgICAgKFZPSUQq KikmKEluZm8pLT5MZW5ndGgsIE5VTEwsIE5VTEwgfSwgICAgICAgIFwNCj4gKyAgeyBMIlJldmlz aW9uIiwgMSwgOCwgTCIlZCIsIE5VTEwsICAgICAgICAgICAgICAgXA0KPiArICAgIChWT0lEKiop JihJbmZvKS0+UmV2aXNpb24sIE5VTEwsIE5VTEwgfSwgICAgICBcDQo+ICsgIHsgTCJDaGVja3N1 bSIsIDEsIDksIEwiMHglWCIsIE5VTEwsICAgICAgICAgICAgIFwNCj4gKyAgICAoVk9JRCoqKSYo SW5mbyktPkNoZWNrc3VtLCBOVUxMLCBOVUxMIH0sICAgICAgXA0KPiArICB7IEwiT2VtIElEIiwg NiwgMTAsIE5VTEwsIER1bXA2Q2hhcnMsICAgICAgICAgICBcDQo+ICsgICAgKFZPSUQqKikmKElu Zm8pLT5PZW1JZCwgTlVMTCwgTlVMTCB9LCAgICAgICAgIFwNCj4gKyAgeyBMIk9lbSBUYWJsZSBJ RCIsIDgsIDE2LCBOVUxMLCBEdW1wOENoYXJzLCAgICAgXA0KPiArICAgIChWT0lEKiopJihJbmZv KS0+T2VtVGFibGVJZCwgTlVMTCwgTlVMTCB9LCAgICBcDQo+ICsgIHsgTCJPZW0gUmV2aXNpb24i LCA0LCAyNCwgTCIweCVYIiwgTlVMTCwgICAgICAgIFwNCj4gKyAgICAoVk9JRCoqKSYoSW5mbykt Pk9lbVJldmlzaW9uLCBOVUxMLCBOVUxMIH0sICAgXA0KPiArICB7IEwiQ3JlYXRvciBJRCIsIDQs IDI4LCBOVUxMLCBEdW1wNENoYXJzLCAgICAgICBcDQo+ICsgICAgKFZPSUQqKikmKEluZm8pLT5D cmVhdG9ySWQsIE5VTEwsIE5VTEwgfSwgICAgIFwNCj4gKyAgeyBMIkNyZWF0b3IgUmV2aXNpb24i LCA0LCAzMiwgTCIweCVYIiwgTlVMTCwgICAgXA0KPiArICAgIChWT0lEKiopJihJbmZvKS0+Q3Jl YXRvclJldmlzaW9uLCBOVUxMLCBOVUxMIH0NCj4gKw0KPiArLyoqIExlbmd0aCBvZiB0aGUgQUNQ SSBHQVMgc3RydWN0dXJlLg0KPiArDQo+ICsgIE5PVEU6IFRoaXMgbWlnaHQgbm9ybWFsbHkgYmUg ZGVmaW5lZCBhcw0KPiArICAgICAgICBzaXplb2YgKEVGSV9BQ1BJXzZfMl9HRU5FUklDX0FERFJF U1NfU1RSVUNUVVJFKS4NCj4gKyAgICAgICAgSG93ZXZlciwgd2UgZGVsaWJlcmF0ZWx5IG1pbmlt aXNlIGFueSByZWZlcmVuY2UgdG8gdGhlIEVESzIgQUNQSQ0KPiArICAgICAgICBoZWFkZXJzIGlu IGFuIGF0dGVtcHQgdG8gcHJvdmlkZSBjcm9zcyBjaGVja2luZy4NCj4gKyovDQo+ICsjZGVmaW5l IEdBU19MRU5HVEggICAgICAgICAgICAgICAgICAgICAxMg0KPiArDQo+ICsvKiogTGVuZ3RoIG9m IHRoZSBBQ1BJIEhlYWRlciBzdHJ1Y3R1cmUuDQo+ICsNCj4gKyAgTk9URTogVGhpcyBtaWdodCBu b3JtYWxseSBiZSBkZWZpbmVkIGFzDQo+ICsgICAgICAgIHNpemVvZiAoRUZJX0FDUElfREVTQ1JJ UFRJT05fSEVBREVSKS4NCj4gKyAgICAgICAgSG93ZXZlciwgd2UgZGVsaWJlcmF0ZWx5IG1pbmlt aXNlIGFueSByZWZlcmVuY2UgdG8gdGhlIEVESzIgQUNQSQ0KPiArICAgICAgICBoZWFkZXJzIGlu IGFuIGF0dGVtcHQgdG8gcHJvdmlkZSBjcm9zcyBjaGVja2luZy4NCj4gKyovDQo+ICsjZGVmaW5l IEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0xFTkdUSCAgMzYNCj4gKw0KPiArLyoqIFRoaXMgZnVu Y3Rpb24gaW5kZW50cyBhbmQgdHJhY2VzIHRoZSBHQVMgc3RydWN0dXJlIGFzIGRlc2NyaWJlZA0K PiArICAgIGJ5IHRoZSBHYXNQYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBJbmRl bnQgIE51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IHRoZSBvdXRwdXQuDQo+ICsqLw0KPiArVk9J RA0KPiArRUZJQVBJDQo+ICtEdW1wR2FzU3RydWN0ICgNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQ dHIsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgSW5kZW50DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgR0FTIHN0cnVjdHVyZSBhcyBkZXNjcmliZWQgYnkgdGhl IEdhc1BhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1h dCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtF RklBUEkNCj4gK0R1bXBHYXMgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05B TCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gdHJhY2VzIHRoZSBBQ1BJIGhlYWRlciBhcyBkZXNjcmliZWQgYnkgdGhlIEFjcGlI ZWFkZXJQYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBOdW1iZXIgb2Yg Ynl0ZXMgcGFyc2VkLg0KPiArKi8NCj4gK1VJTlQzMg0KPiArRUZJQVBJDQo+ICtEdW1wQWNwaUhl YWRlciAoDQo+ICsgIElOIFVJTlQ4KiBQdHINCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVu Y3Rpb24gcGFyc2VzIHRoZSBBQ1BJIGhlYWRlciBhcyBkZXNjcmliZWQgYnkgdGhlIEFjcGlIZWFk ZXJQYXJzZXIuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHJldHVybnMgdGhl IFNpZ25hdHVyZSwgTGVuZ3RoIGFuZCByZXZpc2lvbiBvZiB0aGUNCj4gKyAgQUNQSSB0YWJsZS4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSAgUHRyICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBv ZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW291dF0gU2lnbmF0dXJlICBHZXRzIGxvY2F0aW9u IG9mIHRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKyAgQHBhcmFtIFtvdXRdIExlbmd0aCAg ICAgR2V0cyBsb2NhdGlvbiBvZiB0aGUgbGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBA cGFyYW0gW291dF0gUmV2aXNpb24gICBHZXRzIGxvY2F0aW9uIG9mIHRoZSByZXZpc2lvbiBvZiB0 aGUgQUNQSSB0YWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJzZWQu DQo+ICsqLw0KPiArVUlOVDMyDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaUhlYWRlciAoDQo+ICsg IElOICBVSU5UOCogICAgICAgICBQdHIsDQo+ICsgIE9VVCBDT05TVCBVSU5UMzIqKiBTaWduYXR1 cmUsDQo+ICsgIE9VVCBDT05TVCBVSU5UMzIqKiBMZW5ndGgsDQo+ICsgIE9VVCBDT05TVCBVSU5U OCoqICBSZXZpc2lvbg0KPiArICApOw0KPiArDQo+ICsjZW5kaWYgLy8gQUNQSVBBUlNFUl9IXw0K PiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJs ZVBhcnNlci5oIGIvU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBh cnNlci5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2OWQ1NmRhNmNmNzI4YmI5OGRmMjY1ZGUzYWUwMzBk ODUxMjA0OTQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9JbmNsdWRlL0xpYnJh cnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmgNCj4gQEAgLTAsMCArMSwxMjYgQEANCj4gKy8q Kg0KPiArICBIZWFkZXIgZmlsZSBmb3IgQUNQSSB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5 cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4N Cj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBh cmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0 cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0K PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsN Cj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsqKi8NCj4g Kw0KPiArI2lmbmRlZiBBQ1BJVEFCTEVQQVJTRVJfSF8NCj4gKyNkZWZpbmUgQUNQSVRBQkxFUEFS U0VSX0hfDQo+ICsNCj4gKy8qKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgQUNQSSB0YWJsZSBwYXJz ZXJzLg0KPiArKi8NCj4gKyNkZWZpbmUgTUFYX0FDUElfVEFCTEVfUEFSU0VSUyAgICAgICAgICAx Ng0KPiArDQo+ICsvKiogQW4gaW52YWxpZC9OVUxMIHNpZ25hdHVyZSB2YWx1ZS4NCj4gKyovDQo+ ICsjZGVmaW5lIEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxMICAgICAgMA0KPiArDQo+ICsvKiog QSBmdW5jdGlvbiB0aGF0IHBhcnNlcyB0aGUgQUNQSSB0YWJsZS4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0K PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0 aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24g IFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK3R5cGVkZWYNCj4gK1ZPSUQN Cj4gKyhFRklBUEkgKiBQQVJTRV9BQ1BJX1RBQkxFX1BST0MpICgNCj4gKyAgSU4gQk9PTEVBTiBU cmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVu Z3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICk7DQo+ICsNCj4g Ky8qKiBUaGUgQUNQSSB0YWJsZSBwYXJzZXIgaW5mb3JtYXRpb24NCj4gKyovDQo+ICt0eXBlZGVm IHN0cnVjdCBBY3BpVGFibGVQYXJzZXIgew0KPiArICAvLy8gQUNQSSB0YWJsZSBzaWduYXR1cmUN Cj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlOw0KPiArDQo+ICsgIC8vLyBU aGUgQUNQSSB0YWJsZSBwYXJzZXIgZnVuY3Rpb24uDQo+ICsgIFBBUlNFX0FDUElfVEFCTEVfUFJP QyAgIFBhcnNlcjsNCj4gK30gQUNQSV9UQUJMRV9QQVJTRVI7DQo+ICsNCj4gKy8qKiBSZWdpc3Rl ciB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVy cyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJl ICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiArICBAcGFyYW0gW2luXSBQYXJzZXJQcm9j ICBUaGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVGSV9B TFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgVGFibGUNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZh bCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gKyovDQo+ICtFRklfU1RBVFVT DQo+ICtFRklBUEkNCj4gK1JlZ2lzdGVyUGFyc2VyICgNCj4gKyAgSU4gIFVJTlQzMiAgICAgICAg ICAgICAgICAgIFNpZ25hdHVyZSwNCj4gKyAgSU4gIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgIFBh cnNlclByb2MNCj4gKyk7DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBBQ1BJIHRhYmxlIFBh cnNlcg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gZGVyZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUg cGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxl IHNpZ25hdHVyZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUg cGFyc2VyIHdhcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAg ICAgICAgIEEgcmVnaXN0ZXJlZCBwYXJzZXIgd2FzIG5vdCBmb3VuZC4NCj4gKyovDQo+ICtFRklf U1RBVFVTDQo+ICtFRklBUEkNCj4gK0RlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICBJTiAgVUlOVDMy ICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlDQo+ICspOw0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiBwcm9jZXNzZXMgdGhlIEFDUEkgdGFibGVzLg0KPiArICBUaGlzIGZ1bmN0aW9uIGNhbGxz IFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMoKSB0byBsaXN0IHRoZSBBQ1BJDQo+ICsgIHRhYmxl cywgcGVyZm9ybSBiaW5hcnkgZHVtcCBvZiB0aGUgdGFibGVzIGFuZCBkZXRlcm1pbmUgaWYgdGhl DQo+ICsgIEFDUEkgZmllbGRzIHNob3VsZCBiZSB0cmFjZWQuDQo+ICsNCj4gKyAgVGhpcyBmdW5j dGlvbiBhbHNvIGludm9rZXMgdGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgdGFibGVzLg0KPiArDQo+ ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyBhIFJBVyBkdW1wIG9mIHRoZSBBQ1BJIHRh YmxlIGluY2x1ZGluZw0KPiArICB0aGUgdW5rbm93bi91bnBhcnNlZCBBQ1BJIHRhYmxlcyBhbmQg dmFsaWRhdGVzIHRoZSBjaGVja3N1bS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAg ICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIEFDUEkNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRhYmxlIGRhdGEgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQN Cj4gK0VGSUFQSQ0KPiArUHJvY2Vzc0FjcGlUYWJsZSAoDQo+ICsgIElOIFVJTlQ4KiBQdHINCj4g KyAgKTsNCj4gKw0KPiArLyoqIEdldCB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCj4gKw0KPiArICBU aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyIHByb2MgZnJvbSB0aGUg bGlzdCBvZg0KPiArICByZWdpc3RlcmVkIHBhcnNlcnMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g IFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gKyAgQHBhcmFtIFtvdXRd IFBhcnNlclByb2MgIFBvaW50ZXIgdG8gYSBBQ1BJIHRhYmxlIHBhcnNlciBwcm9jLg0KPiArDQo+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgd2FzIHJldHVybmVk IHN1Y2Nlc3NmdWxseS4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJh bWV0ZXIgaXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgQSBy ZWdpc3RlcmVkIHBhcnNlciB3YXMgbm90IGZvdW5kLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4g K0VGSUFQSQ0KPiArR2V0UGFyc2VyICgNCj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAg ICBTaWduYXR1cmUsDQo+ICsgIE9VVCBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgKiAgUGFyc2VyUHJv Yw0KPiArICApOw0KPiArDQo+ICsjZW5kaWYgLy8gQUNQSVRBQkxFUEFSU0VSX0hfDQo+IGRpZmYg LS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3Bp UGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9B Y3BpUGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk3MTIwNjZlNjMyYjQzYzUwMjNhY2Q5Yzhi NWJlYzE1MGUwMmQ5Zg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDY2 MiBAQA0KPiArLyoqDQo+ICsgIEFDUEkgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAy MDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2Vk IGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl IEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAg VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFO WSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArKiovDQo+ICsNCj4gKyNpbmNs dWRlIDxVZWZpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVk ZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJy YXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KPiAr DQo+ICtTVEFUSUMgVUlOVDMyICAgZ0luZGVudDsNCj4gK1NUQVRJQyBVSU5UMzIgICBtVGFibGVF cnJvckNvdW50Ow0KPiArU1RBVElDIFVJTlQzMiAgIG1UYWJsZVdhcm5pbmdDb3VudDsNCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gcmVzZXRzIHRoZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50ZXIg dG8gWmVyby4NCj4gKyovDQo+ICtWT0lEDQo+ICtSZXNldEVycm9yQ291bnQgKA0KPiArICBWT0lE DQo+ICsgICkNCj4gK3sNCj4gKyAgbVRhYmxlRXJyb3JDb3VudCA9IDA7DQo+ICt9DQo+ICsNCj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291bnQuDQo+ ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5zIHRoZSBjb3VudCBvZiBlcnJvcnMgZGV0ZWN0ZWQgaW4g dGhlIEFDUEkgdGFibGVzLg0KPiArKi8NCj4gK1VJTlQzMg0KPiArR2V0RXJyb3JDb3VudCAoDQo+ ICsgIFZPSUQNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gbVRhYmxlRXJyb3JDb3VudDsNCj4g K30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmVzZXRzIHRoZSBBQ1BJIHRhYmxlIHdhcm5p bmcgY291bnRlciB0byBaZXJvLg0KPiArKi8NCj4gK1ZPSUQNCj4gK1Jlc2V0V2FybmluZ0NvdW50 ICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIG1UYWJsZVdhcm5pbmdDb3VudCA9IDA7 DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUg d2FybmluZyBjb3VudC4NCj4gKw0KPiArICBAcmV0dmFsIFJldHVybnMgdGhlIGNvdW50IG9mIHdh cm5pbmcgZGV0ZWN0ZWQgaW4gdGhlIEFDUEkgdGFibGVzLg0KPiArKi8NCj4gK1VJTlQzMg0KPiAr R2V0V2FybmluZ0NvdW50ICgNCj4gKyAgVk9JRA0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBt VGFibGVXYXJuaW5nQ291bnQ7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3Jl bWVudHMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291bnRlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtF RklBUEkNCj4gK0luY3JlbWVudEVycm9yQ291bnQgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sN Cj4gKyAgbVRhYmxlRXJyb3JDb3VudCsrOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlv biBpbmNyZW1lbnRzIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291bnRlci4NCj4gKyovDQo+ICtW T0lEDQo+ICtFRklBUEkNCj4gK0luY3JlbWVudFdhcm5pbmdDb3VudCAoDQo+ICsgIFZPSUQNCj4g KyAgKQ0KPiArew0KPiArICBtVGFibGVXYXJuaW5nQ291bnQrKzsNCj4gK30NCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gdmVyaWZpZXMgdGhlIEFDUEkgdGFibGUgY2hlY2tzdW0uDQo+ICsNCj4g KyAgVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgY2hlY2tzdW0gZm9yIHRoZSBBQ1BJIHRhYmxl IGFuZCBvcHRpb25hbGx5DQo+ICsgIHByaW50cyB0aGUgc3RhdHVzLg0KPiArDQo+ICsgIEBwYXJh bSBbaW5dIExvZyAgICAgSWYgVFJVRSBsb2cgdGhlIHN0YXR1cyBvZiB0aGUgY2hlY2tzdW0uDQo+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIHRhYmxl IGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBUaGUgbGVuZ3RoIG9mIHRoZSBidWZm ZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFICAgICAgICBUaGUgY2hlY2tzdW0gaXMgT0suDQo+ ICsgIEByZXR2YWwgRkFMU0UgICAgICAgVGhlIGNoZWNrc3VtIGZhaWxlZC4NCj4gKyovDQo+ICtC T09MRUFODQo+ICtFRklBUEkNCj4gK1ZlcmlmeUNoZWNrc3VtICgNCj4gKyAgSU4gQk9PTEVBTiBM b2csDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIExlbmd0aA0KPiArICAp DQo+ICt7DQo+ICsgIFVJTlROIEJ5dGVDb3VudCA9IDA7DQo+ICsgIFVJTlQ4IENoZWNrc3VtID0g MDsNCj4gKyAgVUlOVE4gT3JpZ2luYWxBdHRyaWJ1dGU7DQo+ICsNCj4gKyAgd2hpbGUgKEJ5dGVD b3VudCA8IExlbmd0aCkgew0KPiArICAgIENoZWNrc3VtICs9ICooUHRyKyspOw0KPiArICAgIEJ5 dGVDb3VudCsrOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKExvZykgew0KPiArICAgIE9yaWdpbmFs QXR0cmlidXRlID0gZ1NULT5Db25PdXQtPk1vZGUtPkF0dHJpYnV0ZTsNCj4gKyAgICBpZiAoQ2hl Y2tzdW0gPT0gMCkgew0KPiArICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkgew0K PiArICAgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlICgNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgZ1NULT5Db25PdXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIEVGSV9URVhU X0FUVFIgKEVGSV9HUkVFTiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdpbmFs QXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikpPj40KSkNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgKTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIFByaW50IChMIlxuXG5UYWJsZSBDaGVja3N1bSA6 IE9LXG5cbiIpOw0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50 ICgpOw0KPiArICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkgew0KPiArICAgICAg ICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg Z1NULT5Db25PdXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIgKEVG SV9SRUQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYo QklUNHxCSVQ1fEJJVDYpKT4+NCkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsg ICAgICB9DQo+ICsgICAgICBQcmludCAoTCJcblxuVGFibGUgQ2hlY2tzdW0gOiBGQUlMRUQgKDB4 JVgpXG5cbiIsIENoZWNrc3VtKTsNCj4gKyAgICB9DQo+ICsgICAgaWYgKEdldENvbG91ckhpZ2hs aWdodGluZyAoKSkgew0KPiArICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5D b25PdXQsIE9yaWdpbmFsQXR0cmlidXRlKTsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICBy ZXR1cm4gKENoZWNrc3VtID09IDApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBw ZXJmb3JtcyBhIHJhdyBkYXRhIGR1bXAgb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgdGFibGUgYnVmZmVy Lg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4g KyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXBSYXcgKA0KPiArICBJTiBVSU5UOCogUHRy LA0KPiArICBJTiBVSU5UMzIgTGVuZ3RoDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVE4gQnl0ZUNv dW50ID0gMDsNCj4gKyAgVUlOVE4gUGFydExpbmVDaGFyczsNCj4gKyAgVUlOVE4gQXNjaWlCdWZm ZXJJbmRleCA9IDA7DQo+ICsgIENIQVI4IEFzY2lpQnVmZmVyWzE3XTsNCj4gKw0KPiArICBQcmlu dCAoTCJBZGRyZXNzICA6IDB4JXBcbiIsIFB0cik7DQo+ICsgIFByaW50IChMIkxlbmd0aCAgIDog JWRcbiIsIExlbmd0aCk7DQo+ICsNCj4gKyAgd2hpbGUgKEJ5dGVDb3VudCA8IExlbmd0aCkgew0K PiArICAgIGlmICgoQnl0ZUNvdW50ICYgMHgwRikgPT0gMCkgew0KPiArICAgICAgQXNjaWlCdWZm ZXJbQXNjaWlCdWZmZXJJbmRleF0gPSAnXDAnOw0KPiArICAgICAgUHJpbnQgKEwiICAlYVxuJTA4 WCA6ICIsIEFzY2lpQnVmZmVyLCBCeXRlQ291bnQpOw0KPiArICAgICAgQXNjaWlCdWZmZXJJbmRl eCA9IDA7DQo+ICsgICAgfSBlbHNlIGlmICgoQnl0ZUNvdW50ICYgMHgwNykgPT0gMCkgew0KPiAr ICAgICAgUHJpbnQgKEwiLSAiKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAoKCpQdHIgPj0g JyAnKSAmJiAoKlB0ciA8IDB4N0YpKSB7DQo+ICsgICAgICBBc2NpaUJ1ZmZlcltBc2NpaUJ1ZmZl ckluZGV4KytdID0gKlB0cjsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAgICAgQXNjaWlCdWZmZXJb QXNjaWlCdWZmZXJJbmRleCsrXSA9ICcuJzsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBQcmludCAo TCIlMDJYICIsICpQdHIrKyk7DQo+ICsNCj4gKyAgICBCeXRlQ291bnQrKzsNCj4gKyAgfQ0KPiAr DQo+ICsgIC8vIEp1c3RpZnkgdGhlIGZpbmFsIGxpbmUgdXNpbmcgc3BhY2VzIGJlZm9yZSBwcmlu dGluZw0KPiArICAvLyB0aGUgQVNDSUkgZGF0YS4NCj4gKyAgUGFydExpbmVDaGFycyA9IChMZW5n dGggJiAweDBGKTsNCj4gKyAgaWYgKFBhcnRMaW5lQ2hhcnMgIT0gMCkgew0KPiArICAgIFBhcnRM aW5lQ2hhcnMgPSA0OCAtIChQYXJ0TGluZUNoYXJzICogMyk7DQo+ICsgICAgaWYgKChMZW5ndGgg JiAweDBGKSA8PSA4KSB7DQo+ICsgICAgICBQYXJ0TGluZUNoYXJzICs9IDI7DQo+ICsgICAgfQ0K PiArICAgIHdoaWxlIChQYXJ0TGluZUNoYXJzID4gMCkgew0KPiArICAgICAgUHJpbnQgKEwiICIp Ow0KPiArICAgICAgUGFydExpbmVDaGFycy0tOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsg IC8vIFByaW50IEFTQ0lJIGRhdGEgZm9yIHRoZSBmaW5hbCBsaW5lLg0KPiArICBBc2NpaUJ1ZmZl cltBc2NpaUJ1ZmZlckluZGV4XSA9ICdcMCc7DQo+ICsgIFByaW50IChMIiAgJWEiLCBBc2NpaUJ1 ZmZlcik7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyAxIGJ5dGUgb2Yg ZGF0YSBhcyBzcGVjaWZpZWQgaW4gdGhlDQo+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiAr ICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBk YXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtEdW1wVWludDggKA0KPiAr ICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4g KyAgKQ0KPiArew0KPiArICBQcmludCAoRm9ybWF0LCAqUHRyKTsNCj4gK30NCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gdHJhY2VzIDIgYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgaW4gdGhl DQo+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRo ZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQ dHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9J RA0KPiArRUZJQVBJDQo+ICtEdW1wVWludDE2ICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3Jt YXQsDQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICkNCj4gK3sNCj4gKyAgUHJpbnQg KEZvcm1hdCwgKihVSU5UMTYqKVB0cik7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHRyYWNlcyA0IGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiArICAgIGZvcm1h dCBzdHJpbmcuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmlu ZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0K PiArRHVtcFVpbnQzMiAoDQo+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiArICBJTiBV SU5UOCogICAgICAgIFB0cg0KPiArICApDQo+ICt7DQo+ICsgIFByaW50IChGb3JtYXQsICooVUlO VDMyKilQdHIpOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgOCBieXRl cyBvZiBkYXRhIGFzIHNwZWNpZmllZCBieSB0aGUNCj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcg dGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXBVaW50NjQg KA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQ dHINCj4gKyAgKQ0KPiArew0KPiArICAvLyBTb21lIGZpZWxkcyBhcmUgbm90IGFsaWduZWQgYW5k IHRoaXMgY2F1c2VzIGFsaWdubWVudCBmYXVsdHMNCj4gKyAgLy8gb24gQVJNIHBsYXRmb3JtcyBp ZiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIExEUkQgaW5zdHJ1Y3Rpb25zLg0KPiArICAvLyBQZXJm b3JtIHdvcmQgYWNjZXNzIHNvIHRoYXQgTERSRCBpbnN0cnVjdGlvbnMgYXJlIG5vdCBnZW5lcmF0 ZWQuDQo+ICsgIFVJTlQ2NCBWYWwgPSAqKFVJTlQzMiopKFB0ciArIHNpemVvZiAoVUlOVDMyKSk7 DQo+ICsgIFZhbCA8PD0gMzI7DQo+ICsgIFZhbCB8PSAqKFVJTlQzMiopUHRyOw0KPiArDQo+ICsg IFByaW50IChGb3JtYXQsIFZhbCk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRy YWNlcyAzIGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1hdGVk IHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gKw0KPiArICBJZiBubyBm b3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gKw0K PiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNp bmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXAzQ2hh cnMgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCj4gKyAgSU4gVUlO VDgqICAgICAgICBQdHINCj4gKyAgKQ0KPiArew0KPiArICBQcmludCAoDQo+ICsgICAgKEZvcm1h dCAhPSBOVUxMKSA/IEZvcm1hdCA6IEwiJWMlYyVjIiwNCj4gKyAgICBQdHJbMF0sDQo+ICsgICAg UHRyWzFdLA0KPiArICAgIFB0clsyXQ0KPiArICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHRyYWNlcyA0IGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4g KyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gKw0K PiArICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUg TlVMTC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJp bmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkN Cj4gK0R1bXA0Q2hhcnMgKA0KPiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwN Cj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyAgKQ0KPiArew0KPiArICBQcmludCAoDQo+ ICsgICAgKEZvcm1hdCAhPSBOVUxMKSA/IEZvcm1hdCA6IEwiJWMlYyVjJWMiLA0KPiArICAgIFB0 clswXSwNCj4gKyAgICBQdHJbMV0sDQo+ICsgICAgUHRyWzJdLA0KPiArICAgIFB0clszXQ0KPiAr ICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA2IGNoYXJhY3Rl cnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3Jt YXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gKw0KPiArICBJZiBubyBmb3JtYXQgc3RyaW5nIGlz IHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl ci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXA2Q2hhcnMgKA0KPiArICBJTiBD T05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHIN Cj4gKyAgKQ0KPiArew0KPiArICBQcmludCAoDQo+ICsgICAgKEZvcm1hdCAhPSBOVUxMKSA/IEZv cm1hdCA6IEwiJWMlYyVjJWMlYyVjIiwNCj4gKyAgICBQdHJbMF0sDQo+ICsgICAgUHRyWzFdLA0K PiArICAgIFB0clsyXSwNCj4gKyAgICBQdHJbM10sDQo+ICsgICAgUHRyWzRdLA0KPiArICAgIFB0 cls1XQ0KPiArICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA4 IGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gKyAgIGZvcm1hdGVkIHVzaW5n IHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gKw0KPiArICBJZiBubyBmb3JtYXQg c3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gKw0KPiArICBA cGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhl IGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0R1bXA4Q2hhcnMgKA0K PiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCj4gKyAgSU4gVUlOVDgqICAg ICAgICBQdHINCj4gKyAgKQ0KPiArew0KPiArICBQcmludCAoDQo+ICsgICAgKEZvcm1hdCAhPSBO VUxMKSA/IEZvcm1hdCA6IEwiJWMlYyVjJWMlYyVjJWMlYyIsDQo+ICsgICAgUHRyWzBdLA0KPiAr ICAgIFB0clsxXSwNCj4gKyAgICBQdHJbMl0sDQo+ICsgICAgUHRyWzNdLA0KPiArICAgIFB0cls0 XSwNCj4gKyAgICBQdHJbNV0sDQo+ICsgICAgUHRyWzZdLA0KPiArICAgIFB0cls3XQ0KPiArICAg ICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluZGVudHMgYW5kIHByaW50cyB0 aGUgQUNQSSB0YWJsZSBGaWVsZCBOYW1lLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIEluZGVudCAg ICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRkIHRvIHRoZSBnbG9iYWwgdGFibGUgaW5kZW50Lg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZ2xvYmFsIHRhYmxlIGluZGVudCBpcyAw IGJ5IGRlZmF1bHQ7IGhvd2V2ZXINCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB2 YWx1ZSBpcyB1cGRhdGVkIG9uIGVudHJ5IHRvIHRoZSBQYXJzZUFjcGkoKQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICBieSBhZGRpbmcgdGhlIGluZGVudCB2YWx1ZSBwcm92aWRlZCB0byBQ YXJzZUFjcGkoKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVzdG9yZWQgYmFj ayBvbiBleGl0Lg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVyZWZvcmUgdGhlIHRv dGFsIGluZGVudCBpbiB0aGUgb3V0cHV0IGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg IGRlcGVuZGVudCBvbiBmcm9tIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLg0KPiArICBA cGFyYW0gW2luXSBGaWVsZE5hbWUgICBQb2ludGVyIHRvIHRoZSBGaWVsZCBOYW1lLg0KPiArKi8N Cj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUHJpbnRGaWVsZE5hbWUgKA0KPiArICBJTiBVSU5UMzIg ICAgICAgICBJbmRlbnQsDQo+ICsgIElOIENPTlNUIENIQVIxNiogIEZpZWxkTmFtZQ0KPiArKQ0K PiArew0KPiArICBQcmludCAoDQo+ICsgICAgTCIlKmElLSpzIDogIiwNCj4gKyAgICBnSW5kZW50 ICsgSW5kZW50LA0KPiArICAgICIiLA0KPiArICAgIChPVVRQVVRfRklFTERfQ09MVU1OX1dJRFRI IC0gZ0luZGVudCAtIEluZGVudCksDQo+ICsgICAgRmllbGROYW1lDQo+ICsgICAgKTsNCj4gK30N Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwYXJzZSBhbiBBQ1BJIHRhYmxl IGJ1ZmZlci4NCj4gKw0KPiArICBUaGUgQUNQSSB0YWJsZSBidWZmZXIgaXMgcGFyc2VkIHVzaW5n IHRoZSBBQ1BJIHRhYmxlIHBhcnNlciBpbmZvcm1hdGlvbg0KPiArICBzcGVjaWZpZWQgYnkgYSBw b2ludGVyIHRvIGFuIGFycmF5IG9mIEFDUElfUEFSU0VSIGVsZW1lbnRzLiBUaGlzIHBhcnNlcg0K PiArICBmdW5jdGlvbiBpdGVyYXRlcyB0aHJvdWdoIGVhY2ggaXRlbSBvbiB0aGUgQUNQSV9QQVJT RVIgYXJyYXkgYW5kIGxvZ3MgdGhlDQo+ICsgIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsg IFRoaXMgZnVuY3Rpb24gY2FuIG9wdGlvbmFsbHkgYmUgdXNlZCB0byBwYXJzZSBBQ1BJIHRhYmxl cyBhbmQgZmV0Y2ggc3BlY2lmaWMNCj4gKyAgZmllbGQgdmFsdWVzLiBUaGUgSXRlbVB0ciBtZW1i ZXIgb2YgdGhlIEFDUElfUEFSU0VSIHN0cnVjdHVyZSAod2hlcmUgdXNlZCkNCj4gKyAgaXMgdXBk YXRlZCBieSB0aGlzIHBhcnNlciBmdW5jdGlvbiB0byBwb2ludCB0byB0aGUgc2VsZWN0ZWQgZmll bGQgZGF0YQ0KPiArICAoZS5nLiB1c2VmdWwgZm9yIHZhcmlhYmxlIGxlbmd0aCBuZXN0ZWQgZmll bGRzKS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgVHJhY2UgdGhlIEFDUEkg ZmllbGRzIFRSVUUgZWxzZSBvbmx5IHBhcnNlIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEluZGVudCAgICAgICBOdW1iZXIgb2Ygc3Bh Y2VzIHRvIGluZGVudCB0aGUgb3V0cHV0Lg0KPiArICBAcGFyYW0gW2luXSBBc2NpaU5hbWUgICAg T3B0aW9uYWwgcG9pbnRlciB0byBhbiBBU0NJSSBzdHJpbmcgdGhhdCBkZXNjcmliZXMNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YWJsZSBiZWluZyBwYXJzZWQuDQo+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVy Lg0KPiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAgTGVuZ3RoIG9mIHRoZSBidWZmZXIgcG9p bnRlZCBieSBQdHIuDQo+ICsgIEBwYXJhbSBbaW5dIFBhcnNlciAgICAgICBQb2ludGVyIHRvIGFu IGFycmF5IG9mIEFDUElfUEFSU0VSIHN0cnVjdHVyZSB0aGF0DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZXNjcmliZXMgdGhlIHRhYmxlIGJlaW5nIHBhcnNlZC4NCj4gKyAgQHBhcmFt IFtpbl0gUGFyc2VySXRlbXMgIE51bWJlciBvZiBpdGVtcyBpbiB0aGUgQUNQSV9QQVJTRVIgYXJy YXkuDQo+ICsNCj4gKyAgQHJldHZhbCBOdW1iZXIgb2YgYnl0ZXMgcGFyc2VkLg0KPiArKi8NCj4g K1VJTlQzMg0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGkgKA0KPiArICBJTiBCT09MRUFOICAgICAg ICAgICAgVHJhY2UsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBJbmRlbnQsDQo+ICsgIElO IENPTlNUIENIQVI4KiAgICAgICBBc2NpaU5hbWUgT1BUSU9OQUwsDQo+ICsgIElOIFVJTlQ4KiAg ICAgICAgICAgICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBMZW5ndGgsDQo+ICsg IElOIENPTlNUIEFDUElfUEFSU0VSKiBQYXJzZXIsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAg ICBQYXJzZXJJdGVtcw0KPiArKQ0KPiArew0KPiArICBVSU5UMzIgIEluZGV4Ow0KPiArICBVSU5U MzIgIE9mZnNldCA9IDA7DQo+ICsNCj4gKyAgLy8gSW5jcmVtZW50IHRoZSBJbmRlbnQNCj4gKyAg Z0luZGVudCArPSBJbmRlbnQ7DQo+ICsNCj4gKyAgaWYgKFRyYWNlICYmIChBc2NpaU5hbWUgIT0g TlVMTCkpew0KPiArICAgIEJPT0xFQU4gSGlnaExpZ2h0ID0gR2V0Q29sb3VySGlnaGxpZ2h0aW5n ICgpOw0KPiArICAgIFVJTlROICAgT3JpZ2luYWxBdHRyaWJ1dGU7DQo+ICsNCj4gKyAgICBpZiAo SGlnaExpZ2h0KSB7DQo+ICsgICAgICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5N b2RlLT5BdHRyaWJ1dGU7DQo+ICsgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlICgNCj4g KyAgICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiArICAgICAgICAgICAgICAgICAg ICAgRUZJX1RFWFRfQVRUUihFRklfWUVMTE9XLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAo KE9yaWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikpPj40KSkNCj4gKyAgICAgICAgICAg ICAgICAgICAgICk7DQo+ICsgICAgfQ0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiJSphJS0q YSA6XG4iLA0KPiArICAgICAgZ0luZGVudCwNCj4gKyAgICAgICIiLA0KPiArICAgICAgKE9VVFBV VF9GSUVMRF9DT0xVTU5fV0lEVEggLSBnSW5kZW50KSwNCj4gKyAgICAgIEFzY2lpTmFtZQ0KPiAr ICAgICAgKTsNCj4gKyAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ICsgICAgICBnU1QtPkNvbk91dC0+ U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgT3JpZ2luYWxBdHRyaWJ1dGUpOw0KPiArICAgIH0N Cj4gKyAgfQ0KPiArDQo+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IFBhcnNlckl0ZW1zOyBJ bmRleCsrKSB7DQo+ICsgICAgaWYgKChPZmZzZXQgKyBQYXJzZXJbSW5kZXhdLkxlbmd0aCkgPiBM ZW5ndGgpIHsNCj4gKyAgICAgIC8vIFdlIGRvbid0IHBhcnNlIHBhc3QgdGhlIGVuZCBvZiB0aGUg bWF4IGxlbmd0aCBzcGVjaWZpZWQNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiAr ICAgIGlmIChPZmZzZXQgIT0gUGFyc2VyW0luZGV4XS5PZmZzZXQpIHsNCj4gKyAgICAgIEluY3Jl bWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBQcmludCAoDQo+ICsgICAgICAgIEwiXG5FUlJP UjogJWE6IE9mZnNldCBNaXNtYXRjaCBmb3IgJXNcbiINCj4gKyAgICAgICAgICAiQ3VycmVudE9m ZnNldCA9ICVkIEZpZWxkT2Zmc2V0ID0gJWRcbiIsDQo+ICsgICAgICAgIEFzY2lpTmFtZSwNCj4g KyAgICAgICAgUGFyc2VyW0luZGV4XS5OYW1lU3RyLA0KPiArICAgICAgICBPZmZzZXQsDQo+ICsg ICAgICAgIFBhcnNlcltJbmRleF0uT2Zmc2V0DQo+ICsgICAgICAgICk7DQo+ICsgICAgfQ0KPiAr DQo+ICsgICAgaWYgKFRyYWNlKSB7DQo+ICsgICAgICAvLyBpZiB0aGVyZSBpcyBhIEZvcm1hdHRl ciBmdW5jdGlvbiBsZXQgdGhlIGZ1bmN0aW9uIGhhbmRsZQ0KPiArICAgICAgLy8gdGhlIHByaW50 aW5nIGVsc2UgaWYgYSBGb3JtYXQgaXMgc3BlY2lmaWVkIGluIHRoZSB0YWJsZSB1c2UNCj4gKyAg ICAgIC8vIHRoZSBGb3JtYXQgZm9yIHByaW50aW5nDQo+ICsgICAgICBQcmludEZpZWxkTmFtZSAo MiwgUGFyc2VyW0luZGV4XS5OYW1lU3RyKTsNCj4gKyAgICAgIGlmIChQYXJzZXJbSW5kZXhdLlBy aW50Rm9ybWF0dGVyICE9IE5VTEwpIHsNCj4gKyAgICAgICAgUGFyc2VyW0luZGV4XS5QcmludEZv cm1hdHRlciAoUGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0cik7DQo+ICsgICAgICB9IGVsc2UgaWYg KFBhcnNlcltJbmRleF0uRm9ybWF0ICE9IE5VTEwpIHsNCj4gKyAgICAgICAgc3dpdGNoIChQYXJz ZXJbSW5kZXhdLkxlbmd0aCkgew0KPiArICAgICAgICAgIGNhc2UgMToNCj4gKyAgICAgICAgICAg IER1bXBVaW50OCAoUGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0cik7DQo+ICsgICAgICAgICAgICBi cmVhazsNCj4gKyAgICAgICAgICBjYXNlIDI6DQo+ICsgICAgICAgICAgICBEdW1wVWludDE2IChQ YXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArICAg ICAgICAgIGNhc2UgNDoNCj4gKyAgICAgICAgICAgIER1bXBVaW50MzIgKFBhcnNlcltJbmRleF0u Rm9ybWF0LCBQdHIpOw0KPiArICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgY2FzZSA4 Og0KPiArICAgICAgICAgICAgRHVtcFVpbnQ2NCAoUGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0cik7 DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICBkZWZhdWx0Og0KPiArICAgICAg ICAgICAgUHJpbnQgKA0KPiArICAgICAgICAgICAgICBMIlxuRVJST1I6ICVhOiBDQU5OT1QgUEFS U0UgVEhJUyBGSUVMRCwgRmllbGQgTGVuZ3RoID0gJWRcbiIsDQo+ICsgICAgICAgICAgICAgIEFz Y2lpTmFtZSwNCj4gKyAgICAgICAgICAgICAgUGFyc2VyW0luZGV4XS5MZW5ndGgNCj4gKyAgICAg ICAgICAgICAgKTsNCj4gKyAgICAgICAgfSAvLyBzd2l0Y2gNCj4gKw0KPiArICAgICAgICAvLyBW YWxpZGF0aW5nIG9ubHkgbWFrZXMgc2Vuc2UgaWYgd2UgYXJlIHRyYWNpbmcNCj4gKyAgICAgICAg Ly8gdGhlIHBhcnNlZCB0YWJsZSBlbnRyaWVzLCB0byByZXBvcnQgYnkgdGFibGUgbmFtZS4NCj4g KyAgICAgICAgaWYgKFBhcnNlcltJbmRleF0uRmllbGRWYWxpZGF0b3IgIT0gTlVMTCkgew0KPiAr ICAgICAgICAgIFBhcnNlcltJbmRleF0uRmllbGRWYWxpZGF0b3IgKFB0ciwgUGFyc2VyW0luZGV4 XS5Db250ZXh0KTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgfQ0KPiArICAgICAgUHJpbnQgKEwi XG4iKTsNCj4gKyAgICB9IC8vIGlmIChUcmFjZSkNCj4gKw0KPiArICAgIGlmIChQYXJzZXJbSW5k ZXhdLkl0ZW1QdHIgIT0gTlVMTCkgew0KPiArICAgICAgKlBhcnNlcltJbmRleF0uSXRlbVB0ciA9 IChWT0lEKilQdHI7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgUHRyICs9IFBhcnNlcltJbmRleF0u TGVuZ3RoOw0KPiArICAgIE9mZnNldCArPSBQYXJzZXJbSW5kZXhdLkxlbmd0aDsNCj4gKyAgfSAv LyBmb3INCj4gKw0KPiArICAvLyBEZWNyZW1lbnQgdGhlIEluZGVudA0KPiArICBnSW5kZW50IC09 IEluZGVudDsNCj4gKyAgcmV0dXJuIE9mZnNldDsNCj4gK30NCj4gKw0KPiArLyoqIEFuIGFycmF5 IGRlc2NyaWJpbmcgdGhlIEFDUEkgR2VuZXJpYyBBZGRyZXNzIFN0cnVjdHVyZS4NCj4gKyAgVGhl IEdhc1BhcnNlciBhcnJheSBpcyB1c2VkIGJ5IHRoZSBQYXJzZUFjcGkgZnVuY3Rpb24gdG8gcGFy c2UgYW5kL29yIHRyYWNlDQo+ICsgIHRoZSBHQVMgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJ QyBDT05TVCBBQ1BJX1BBUlNFUiBHYXNQYXJzZXJbXSA9IHsNCj4gKyAge0wiQWRkcmVzcyBTcGFj ZSBJRCIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJS ZWdpc3RlciBCaXQgV2lkdGgiLCAxLCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUmVnaXN0ZXIgQml0IE9mZnNldCIsIDEsIDIsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBZGRyZXNzIFNpemUiLCAxLCAzLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQWRkcmVzcyIsIDgsIDQsIEwiMHglbHgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rp b24gaW5kZW50cyBhbmQgdHJhY2VzIHRoZSBHQVMgc3RydWN0dXJlIGFzIGRlc2NyaWJlZA0KPiAr ICAgIGJ5IHRoZSBHYXNQYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBJbmRlbnQg IE51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IHRoZSBvdXRwdXQuDQo+ICsqLw0KPiArVk9JRA0K PiArRUZJQVBJDQo+ICtEdW1wR2FzU3RydWN0ICgNCj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHIs DQo+ICsgIElOIFVJTlQzMiAgICAgICAgSW5kZW50DQo+ICsgICkNCj4gK3sNCj4gKyAgUHJpbnQg KEwiXG4iKTsNCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIEluZGVudCwN Cj4gKyAgICBOVUxMLA0KPiArICAgIFB0ciwNCj4gKyAgICBHQVNfTEVOR1RILA0KPiArICAgIFBB UlNFUl9QQVJBTVMgKEdhc1BhcnNlcikNCj4gKyAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogVGhp cyBmdW5jdGlvbiB0cmFjZXMgdGhlIEdBUyBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkIGJ5IHRoZSBH YXNQYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQg c3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJ QVBJDQo+ICtEdW1wR2FzICgNCj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUws DQo+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ICsgICkNCj4gK3sNCj4gKyAgRHVtcEdhc1N0 cnVjdCAoUHRyLCAyKTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIHRo ZSBBQ1BJIGhlYWRlciBhcyBkZXNjcmliZWQgYnkgdGhlIEFjcGlIZWFkZXJQYXJzZXIuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBidWZmZXIuDQo+ICsNCj4gKyAgQHJldHZhbCBOdW1iZXIgb2YgYnl0ZXMgcGFyc2VkLg0KPiAr Ki8NCj4gK1VJTlQzMg0KPiArRUZJQVBJDQo+ICtEdW1wQWNwaUhlYWRlciAoDQo+ICsgIElOIFVJ TlQ4KiBQdHINCj4gKyAgKQ0KPiArew0KPiArICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZP IEFjcGlIZHJJbmZvOw0KPiArICBBQ1BJX1BBUlNFUiBBY3BpSGVhZGVyUGFyc2VyW10gPSB7DQo+ ICsgICAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbykNCj4gKyAgfTsNCj4gKw0KPiAr ICByZXR1cm4gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAg MCwNCj4gKyAgICAgICAgICAgIkFDUEkgVGFibGUgSGVhZGVyIiwNCj4gKyAgICAgICAgICAgUHRy LA0KPiArICAgICAgICAgICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9MRU5HVEgsDQo+ICsgICAg ICAgICAgIFBBUlNFUl9QQVJBTVMgKEFjcGlIZWFkZXJQYXJzZXIpDQo+ICsgICAgICAgICAgICk7 DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBoZWFkZXIg YXMgZGVzY3JpYmVkIGJ5IHRoZSBBY3BpSGVhZGVyUGFyc2VyLg0KPiArDQo+ICsgIFRoaXMgZnVu Y3Rpb24gb3B0aW9uYWxseSByZXR1cm5zIHRoZSBzaWduYXR1cmUsIGxlbmd0aCBhbmQgcmV2aXNp b24gb2YgdGhlDQo+ICsgIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIFB0ciAg ICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtv dXRdIFNpZ25hdHVyZSAgR2V0cyBsb2NhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBzaWduYXR1cmUu DQo+ICsgIEBwYXJhbSBbb3V0XSBMZW5ndGggICAgIEdldHMgbG9jYXRpb24gb2YgdGhlIGxlbmd0 aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtvdXRdIFJldmlzaW9uICAgR2V0cyBs b2NhdGlvbiBvZiB0aGUgcmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHJl dHZhbCBOdW1iZXIgb2YgYnl0ZXMgcGFyc2VkLg0KPiArKi8NCj4gK1VJTlQzMg0KPiArRUZJQVBJ DQo+ICtQYXJzZUFjcGlIZWFkZXIgKA0KPiArICBJTiAgVUlOVDgqICAgICAgICAgUHRyLA0KPiAr ICBPVVQgQ09OU1QgVUlOVDMyKiogU2lnbmF0dXJlLA0KPiArICBPVVQgQ09OU1QgVUlOVDMyKiog TGVuZ3RoLA0KPiArICBPVVQgQ09OU1QgVUlOVDgqKiAgUmV2aXNpb24NCj4gKyAgKQ0KPiArew0K PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICBCeXRlc1BhcnNlZDsNCj4gKyAgQUNQ SV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyAgQWNwaUhkckluZm87DQo+ICsgIEFDUElfUEFSU0VS IEFjcGlIZWFkZXJQYXJzZXJbXSA9IHsNCj4gKyAgICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlI ZHJJbmZvKQ0KPiArICB9Ow0KPiArDQo+ICsgIEJ5dGVzUGFyc2VkID0gUGFyc2VBY3BpICgNCj4g KyAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiArICAgICAgICAgICAgICAgICAgMCwNCj4gKyAg ICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICBQdHIsDQo+ICsgICAg ICAgICAgICAgICAgICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9MRU5HVEgsDQo+ICsgICAgICAg ICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChBY3BpSGVhZGVyUGFyc2VyKQ0KPiArICAgICAgICAg ICAgICAgICAgKTsNCj4gKw0KPiArICAqU2lnbmF0dXJlID0gQWNwaUhkckluZm8uU2lnbmF0dXJl Ow0KPiArICAqTGVuZ3RoID0gQWNwaUhkckluZm8uTGVuZ3RoOw0KPiArICAqUmV2aXNpb24gPSBB Y3BpSGRySW5mby5SZXZpc2lvbjsNCj4gKw0KPiArICByZXR1cm4gQnl0ZXNQYXJzZWQ7DQo+ICt9 DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9BY3BpVGFibGVQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL0FjcGlUYWJsZVBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ODNlZTIx MTI5YjBjNDBlMTlkNzQxZmI2MTM1OWEyM2VlNjIyZDANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysg Yi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVGFibGVQ YXJzZXIuYw0KPiBAQCAtMCwwICsxLDIxNSBAQA0KPiArLyoqDQo+ICsgIEFDUEkgdGFibGUgcGFy c2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu ZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFj Y29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5z ZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2Jz ZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVS IFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJ TVBMSUVELg0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ICsjaW5jbHVkZSA8 SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVk ZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKyNpbmNsdWRlICJBY3Bp Vmlldy5oIg0KPiArDQo+ICsvKiogQSBsaXN0IG9mIHJlZ2lzdGVyZWQgQUNQSSB0YWJsZSBwYXJz ZXJzLg0KPiArKi8NCj4gK1NUQVRJQyBBQ1BJX1RBQkxFX1BBUlNFUiBtVGFibGVQYXJzZXJMaXN0 W01BWF9BQ1BJX1RBQkxFX1BBUlNFUlNdOw0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhlIEFDUEkg dGFibGUgUGFyc2VyDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgdGhlIEFDUEkg dGFibGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJ IHRhYmxlIHNpZ25hdHVyZS4NCj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyUHJvYyAgVGhlIEFDUEkg dGFibGUgcGFyc2VyLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFS VEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIFRhYmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX09VVF9P Rl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJ DQo+ICtSZWdpc3RlclBhcnNlciAoDQo+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICBT aWduYXR1cmUsDQo+ICsgIElOICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgICBQYXJzZXJQcm9jDQo+ ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIGluZGV4Ow0KPiArDQo+ICsgIGlmICgoUGFyc2VyUHJv YyA9PSBOVUxMKSB8fCAoU2lnbmF0dXJlID09IEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxMKSkg ew0KPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKw0KPiAr ICAvLyBTZWFyY2ggaWYgYSBwYXJzZXIgaXMgYWxyZWFkeSBpbnN0YWxsZWQNCj4gKyAgZm9yIChp bmRleCA9IDA7DQo+ICsgICAgICAgaW5kZXggPCAoc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0KSAv IHNpemVvZiAobVRhYmxlUGFyc2VyTGlzdFswXSkpOw0KPiArICAgICAgIGluZGV4KyspDQo+ICsg IHsNCj4gKyAgICBpZiAoU2lnbmF0dXJlID09IG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25h dHVyZSkgew0KPiArICAgICAgaWYgKG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlciAhPSBO VUxMKSB7DQo+ICsgICAgICAgIHJldHVybiBFRklfQUxSRUFEWV9TVEFSVEVEOw0KPiArICAgICAg fQ0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIC8vIEZpbmQgdGhlIGZpcnN0IGZyZWUgc2xv dCBhbmQgcmVnaXN0ZXIgdGhlIHBhcnNlcg0KPiArICBmb3IgKGluZGV4ID0gMDsNCj4gKyAgICAg IGluZGV4IDwgKHNpemVvZiAobVRhYmxlUGFyc2VyTGlzdCkgLyBzaXplb2YgKG1UYWJsZVBhcnNl ckxpc3RbMF0pKTsNCj4gKyAgICAgIGluZGV4KyspDQo+ICsgIHsNCj4gKyAgICBpZiAobVRhYmxl UGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlID09IEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxM KSB7DQo+ICsgICAgICBtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5TaWduYXR1cmUgPSBTaWduYXR1 cmU7DQo+ICsgICAgICBtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5QYXJzZXIgPSBQYXJzZXJQcm9j Ow0KPiArICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ ICsgIC8vIE5vIGZyZWUgc2xvdCBmb3VuZA0KPiArICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJD RVM7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0K PiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gZGVyZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUgcGFyc2Vy Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25h dHVyZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2Vy IHdhcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEg cGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAg IEEgcmVnaXN0ZXJlZCBwYXJzZXIgd2FzIG5vdCBmb3VuZC4NCj4gKyovDQo+ICtFRklfU1RBVFVT DQo+ICtFRklBUEkNCj4gK0RlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICBJTiAgVUlOVDMyICAgICAg ICAgICAgICAgICAgU2lnbmF0dXJlDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIGluZGV4Ow0K PiArDQo+ICsgIGlmIChTaWduYXR1cmUgPT0gQUNQSV9QQVJTRVJfU0lHTkFUVVJFX05VTEwpIHsN Cj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAg Zm9yIChpbmRleCA9IDA7DQo+ICsgICAgICAgaW5kZXggPCAoc2l6ZW9mIChtVGFibGVQYXJzZXJM aXN0KSAvIHNpemVvZiAobVRhYmxlUGFyc2VyTGlzdFswXSkpOw0KPiArICAgICAgIGluZGV4Kysp DQo+ICsgIHsNCj4gKyAgICBpZiAoU2lnbmF0dXJlID09IG1UYWJsZVBhcnNlckxpc3RbaW5kZXhd LlNpZ25hdHVyZSkgew0KPiArICAgICAgbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJl ID0gQUNQSV9QQVJTRVJfU0lHTkFUVVJFX05VTEw7DQo+ICsgICAgICBtVGFibGVQYXJzZXJMaXN0 W2luZGV4XS5QYXJzZXIgPSBOVUxMOw0KPiArICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiAr ICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIC8vIE5vIG1hdGNoaW5nIHJlZ2lzdGVyZWQgcGFyc2Vy IGZvdW5kLg0KPiArICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gK30NCj4gKw0KPiArLyoqIEdl dCB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIHJldHVybnMg dGhlIEFDUEkgdGFibGUgcGFyc2VyIHByb2MgZnJvbSB0aGUgbGlzdCBvZg0KPiArICByZWdpc3Rl cmVkIHBhcnNlcnMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIFNpZ25hdHVyZSAgIFRoZSBBQ1BJ IHRhYmxlIHNpZ25hdHVyZS4NCj4gKyAgQHBhcmFtIFtvdXRdIFBhcnNlclByb2MgIFBvaW50ZXIg dG8gYSBBQ1BJIHRhYmxlIHBhcnNlciBwcm9jLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIFRoZSBwYXJzZXIgd2FzIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4NCj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4g KyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgQSByZWdpc3RlcmVkIHBhcnNlciB3YXMg bm90IGZvdW5kLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArR2V0UGFyc2Vy ICgNCj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUsDQo+ICsgIE9V VCBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgKiAgUGFyc2VyUHJvYw0KPiArICApDQo+ICt7DQo+ICsg IFVJTlQzMiBpbmRleDsNCj4gKw0KPiArICBpZiAoKFBhcnNlclByb2MgPT0gTlVMTCkgfHwgKFNp Z25hdHVyZSA9PSBBQ1BJX1BBUlNFUl9TSUdOQVRVUkVfTlVMTCkpIHsNCj4gKyAgICByZXR1cm4g RUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgZm9yIChpbmRleCA9IDA7 DQo+ICsgICAgICAgaW5kZXggPCAoc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0KSAvIHNpemVvZiAo bVRhYmxlUGFyc2VyTGlzdFswXSkpOw0KPiArICAgICAgIGluZGV4KyspDQo+ICsgIHsNCj4gKyAg ICBpZiAoU2lnbmF0dXJlID09IG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSkgew0K PiArICAgICAgKlBhcnNlclByb2MgPSBtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5QYXJzZXI7DQo+ ICsgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAg Ly8gTm8gbWF0Y2hpbmcgcmVnaXN0ZXJlZCBwYXJzZXIgZm91bmQuDQo+ICsgIHJldHVybiBFRklf Tk9UX0ZPVU5EOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhl IEFDUEkgdGFibGVzLg0KPiArICBUaGlzIGZ1bmN0aW9uIGNhbGxzIFByb2Nlc3NUYWJsZVJlcG9y dE9wdGlvbnMoKSB0byBsaXN0IHRoZSBBQ1BJDQo+ICsgIHRhYmxlcywgcGVyZm9ybSBiaW5hcnkg ZHVtcCBvZiB0aGUgdGFibGVzIGFuZCBkZXRlcm1pbmUgaWYgdGhlDQo+ICsgIEFDUEkgZmllbGRz IHNob3VsZCBiZSB0cmFjZWQuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIGludm9rZXMg dGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgdGFibGVzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24g YWxzbyBwZXJmb3JtcyBhIFJBVyBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxlIGluY2x1ZGluZw0KPiAr ICB0aGUgdW5rbm93bi91bnBhcnNlZCBBQ1BJIHRhYmxlcyBhbmQgdmFsaWRhdGVzIHRoZSBjaGVj a3N1bS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIEFDUEkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhYmxlIGRhdGEgYnVmZmVyLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUHJv Y2Vzc0FjcGlUYWJsZSAoDQo+ICsgIElOIFVJTlQ4KiBQdHINCj4gKyAgKQ0KPiArew0KPiArICBF RklfU1RBVFVTICAgIFN0YXR1czsNCj4gKyAgQk9PTEVBTiAgICAgICBUcmFjZTsNCj4gKyAgQ09O U1QgVUlOVDMyKiBBY3BpVGFibGVTaWduYXR1cmU7DQo+ICsgIENPTlNUIFVJTlQzMiogQWNwaVRh YmxlTGVuZ3RoOw0KPiArICBDT05TVCBVSU5UOCogIEFjcGlUYWJsZVJldmlzaW9uOw0KPiArICBQ QVJTRV9BQ1BJX1RBQkxFX1BST0MgUGFyc2VyUHJvYzsNCj4gKw0KPiArICBQYXJzZUFjcGlIZWFk ZXIgKA0KPiArICAgIFB0ciwNCj4gKyAgICAmQWNwaVRhYmxlU2lnbmF0dXJlLA0KPiArICAgICZB Y3BpVGFibGVMZW5ndGgsDQo+ICsgICAgJkFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICAgKTsNCj4g Kw0KPiArICBUcmFjZSA9IFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMgKA0KPiArICAgICAgICAg ICAgKkFjcGlUYWJsZVNpZ25hdHVyZSwNCj4gKyAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAg ICAgICpBY3BpVGFibGVMZW5ndGgNCj4gKyAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgaWYgKFRy YWNlKSB7DQo+ICsgICAgRHVtcFJhdyAoUHRyLCAqQWNwaVRhYmxlTGVuZ3RoKTsNCj4gKyAgICBW ZXJpZnlDaGVja3N1bSAoVFJVRSwgUHRyLCAqQWNwaVRhYmxlTGVuZ3RoKTsNCj4gKyAgfQ0KPiAr DQo+ICsgIFN0YXR1cyA9IEdldFBhcnNlciAoKkFjcGlUYWJsZVNpZ25hdHVyZSwgJlBhcnNlclBy b2MpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgLy8gTm8gcmVnaXN0 ZXJlZCBwYXJzZXIgZm91bmQsIGRvIGRlZmF1bHQgaGFuZGxpbmcuDQo+ICsgICAgaWYgKFRyYWNl KSB7DQo+ICsgICAgICBEdW1wQWNwaUhlYWRlciAoUHRyKTsNCj4gKyAgICB9DQo+ICsgICAgcmV0 dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgUGFyc2VyUHJvYyAoDQo+ICsgICAgVHJhY2UsDQo+ICsg ICAgUHRyLA0KPiArICAgICpBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgKkFjcGlUYWJsZVJldmlz aW9uDQo+ICsgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlWaWV3LmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4 NmUwNWFiYjcxNmIzNmQzNGE5YzRlNTE1NjhkYzYzZmVjYjEwODUNCj4gLS0tIC9kZXYvbnVsbA0K PiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3Bp Vmlldy5jDQo+IEBAIC0wLDAgKzEsNjAxIEBADQo+ICsvKioNCj4gKw0KPiArICBDb3B5cmlnaHQg KGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBo dHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAg VEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJB UyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMg T0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsqKi8NCj4gKw0KPiAr I2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlM aWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1NoZWxsTGliLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jh c2VNZW1vcnlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ICsjaW5j bHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9B Y3BpVGFibGVQYXJzZXIuaD4NCj4gKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KPiArI2luY2x1ZGUg IlVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oIg0KPiArDQo+ICtFRklfSElJX0hBTkRMRSBn U2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IE5VTEw7DQo+ICsNCj4gKy8vIFJlcG9ydCB2YXJpYWJs ZXMNCj4gK1NUQVRJQyBVSU5UMzIgICAgICAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlOw0KPiAr U1RBVElDIENPTlNUIENIQVIxNiogICAgICBtU2VsZWN0ZWRBY3BpVGFibGVOYW1lOw0KPiArU1RB VElDIEJPT0xFQU4gICAgICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVGb3VuZDsNCj4gK1NUQVRJ QyBFUkVQT1JUX09QVElPTiAgICAgbVJlcG9ydFR5cGU7DQo+ICtTVEFUSUMgVUlOVDMyICAgICAg ICAgICAgIG1UYWJsZUNvdW50Ow0KPiArU1RBVElDIFVJTlQzMiAgICAgICAgICAgICBtQmluVGFi bGVDb3VudDsNCj4gK1NUQVRJQyBCT09MRUFOICAgICAgICAgICAgbVZlcmJvc2U7DQo+ICtTVEFU SUMgQk9PTEVBTiAgICAgICAgICAgIG1Db25zaXN0ZW5jeUNoZWNrOw0KPiArU1RBVElDIEJPT0xF QU4gICAgICAgICAgICBtQ29sb3VySGlnaGxpZ2h0aW5nOw0KPiArDQo+ICsvKiogQW4gYXJyYXkg b2YgYWNwaXZpZXcgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuDQo+ICsqLw0KPiArU1RBVElDIENP TlNUIFNIRUxMX1BBUkFNX0lURU0gUGFyYW1MaXN0W10gPSB7DQo+ICsgIHtMIi8/IiwgVHlwZUZs YWd9LA0KPiArICB7TCItYyIsIFR5cGVGbGFnfSwNCj4gKyAge0wiLWQiLCBUeXBlRmxhZ30sDQo+ ICsgIHtMIi1oIiwgVHlwZVZhbHVlfSwNCj4gKyAge0wiLWwiLCBUeXBlRmxhZ30sDQo+ICsgIHtM Ii1zIiwgVHlwZVZhbHVlfSwNCj4gKyAge0wiLXYiLCBUeXBlRmxhZ30sDQo+ICsgIHtOVUxMLCBU eXBlTWF4fQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgY29s b3VyIGhpZ2hsaWdodGluZyBzdGF0dXMuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFIGlmIGNvbG91 ciBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZC4NCj4gKyovDQo+ICtCT09MRUFODQo+ICtHZXRDb2xv dXJIaWdobGlnaHRpbmcgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIG1D b2xvdXJIaWdobGlnaHRpbmc7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHNldHMg dGhlIGNvbG91ciBoaWdobGlnaHRpbmcgc3RhdHVzLg0KPiArDQo+ICsqLw0KPiArVk9JRA0KPiAr U2V0Q29sb3VySGlnaGxpZ2h0aW5nICgNCj4gKyAgQk9PTEVBTiBIaWdobGlnaHQNCj4gKyAgKQ0K PiArew0KPiArICBtQ29sb3VySGlnaGxpZ2h0aW5nID0gSGlnaGxpZ2h0Ow0KPiArfQ0KPiArDQo+ ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXBvcnQgb3B0aW9ucy4NCj4gKw0KPiAr ICBAcmV0dmFsIFJldHVybnMgdGhlIHJlcG9ydCBvcHRpb24uDQo+ICsqLw0KPiArU1RBVElDDQo+ ICtFUkVQT1JUX09QVElPTg0KPiArR2V0UmVwb3J0T3B0aW9uICgNCj4gKyAgVk9JRA0KPiArICAp DQo+ICt7DQo+ICsgIHJldHVybiBtUmVwb3J0VHlwZTsNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gcmV0dXJucyB0aGUgc2VsZWN0ZWQgQUNQSSB0YWJsZS4NCj4gKw0KPiArICBAcmV0 dmFsIFJldHVybnMgc2lnbmF0dXJlIG9mIHRoZSBzZWxlY3RlZCBBQ1BJIHRhYmxlLg0KPiArKi8N Cj4gK1NUQVRJQw0KPiArVUlOVDMyDQo+ICtHZXRTZWxlY3RlZEFjcGlUYWJsZSAoDQo+ICsgIFZP SUQNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gbVNlbGVjdGVkQWNwaVRhYmxlOw0KPiArfQ0K PiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBkdW1wcyB0aGUgQUNQSSB0YWJsZSB0byBhIGZpbGUu DQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICBQb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGRh dGEuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICBUaGUgbGVuZ3RoIG9mIHRoZSBBQ1BJIHRh YmxlLg0KPiArDQo+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBTdWNjZXNzLg0KPiArICBAcmV0 dmFsIEZBTFNFICAgICAgICAgRmFpbHVyZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK0JPT0xFQU4N Cj4gK0R1bXBBY3BpVGFibGVUb0ZpbGUgKA0KPiArICBJTiBDT05TVCBVSU5UOCogIFB0ciwNCj4g KyAgSU4gQ09OU1QgVUlOVE4gICBMZW5ndGgNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVT ICAgICAgICAgU3RhdHVzOw0KPiArICBDSEFSMTYgICAgICAgICAgICAgRmlsZU5hbWVCdWZmZXJb TUFYX0ZJTEVfTkFNRV9MRU5dOw0KPiArICBTSEVMTF9GSUxFX0hBTkRMRSAgRHVtcEZpbGVIYW5k bGUgPSBOVUxMOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgVHJhbnNmZXJCeXRlcyA9IExlbmd0 aDsNCj4gKw0KPiArICBVbmljb2RlU1ByaW50ICgNCj4gKyAgICBGaWxlTmFtZUJ1ZmZlciwNCj4g KyAgICBzaXplb2YgKEZpbGVOYW1lQnVmZmVyKSwNCj4gKyAgICBMIi5cXCVzJTA0ZC5iaW4iLA0K PiArICAgIG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUsDQo+ICsgICAgbUJpblRhYmxlQ291bnQrKw0K PiArICAgICk7DQo+ICsNCj4gKyAgU3RhdHVzID0gU2hlbGxPcGVuRmlsZUJ5TmFtZSAoDQo+ICsg ICAgICAgICAgICAgRmlsZU5hbWVCdWZmZXIsDQo+ICsgICAgICAgICAgICAgJkR1bXBGaWxlSGFu ZGxlLA0KPiArICAgICAgICAgICAgIEVGSV9GSUxFX01PREVfUkVBRCB8IEVGSV9GSUxFX01PREVf V1JJVEUgfCBFRklfRklMRV9NT0RFX0NSRUFURSwNCj4gKyAgICAgICAgICAgICAwDQo+ICsgICAg ICAgICAgICAgKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIFNoZWxs UHJpbnRIaWlFeCAoDQo+ICsgICAgICAtMSwNCj4gKyAgICAgIC0xLA0KPiArICAgICAgTlVMTCwN Cj4gKyAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9SRUFET05MWV9NRURJQSksDQo+ICsgICAg ICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAgICAgIEwiYWNwaXZpZXciDQo+ICsgICAg ICApOw0KPiArICAgIHJldHVybiBGQUxTRTsNCj4gKyAgfQ0KPiArDQo+ICsgIFByaW50IChMIkR1 bXBpbmcgQUNQSSB0YWJsZSB0byA6ICVzIC4uLiAiLCBGaWxlTmFtZUJ1ZmZlcik7DQo+ICsNCj4g KyAgU3RhdHVzID0gU2hlbGxXcml0ZUZpbGUgKA0KPiArICAgICAgICAgICAgIER1bXBGaWxlSGFu ZGxlLA0KPiArICAgICAgICAgICAgICZUcmFuc2ZlckJ5dGVzLA0KPiArICAgICAgICAgICAgIChW T0lEKilQdHINCj4gKyAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ICsgICAgUHJpbnQgKEwiRVJST1I6IEZhaWxlZCB0byBkdW1wIHRhYmxlIHRvIGJpbmFy eSBmaWxlLlxuIik7DQo+ICsgICAgVHJhbnNmZXJCeXRlcyA9IDA7DQo+ICsgIH0gZWxzZSB7DQo+ ICsgICAgUHJpbnQgKEwiRE9ORS5cbiIpOw0KPiArICB9DQo+ICsNCj4gKyAgU2hlbGxDbG9zZUZp bGUgKCZEdW1wRmlsZUhhbmRsZSk7DQo+ICsgIHJldHVybiAoTGVuZ3RoID09IFRyYW5zZmVyQnl0 ZXMpOw0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIHRhYmxl IHJlcG9ydGluZyBvcHRpb25zIGZvciB0aGUgQUNQSSB0YWJsZS4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBTaWduYXR1cmUgVGhlIEFDUEkgdGFibGUgU2lnbmF0dXJlLg0KPiArICBAcGFyYW0gW2lu XSBUYWJsZVB0ciAgUG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBkYXRhLg0KPiArICBAcGFyYW0g W2luXSBMZW5ndGggICAgVGhlIGxlbmd0aCBmbyB0aGUgQUNQSSB0YWJsZS4NCj4gKw0KPiArICBA cmV0dmFsIFJldHVybnMgVFJVRSBpZiB0aGUgQUNQSSB0YWJsZSBzaG91bGQgYmUgdHJhY2VkLg0K PiArKi8NCj4gK0JPT0xFQU4NCj4gK1Byb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMgKA0KPiArICBJ TiBDT05TVCBVSU5UMzIgIFNpZ25hdHVyZSwNCj4gKyAgSU4gQ09OU1QgVUlOVDgqICBUYWJsZVB0 ciwNCj4gKyAgSU4gQ09OU1QgVUlOVDMyICBMZW5ndGgNCj4gKyAgKQ0KPiArew0KPiArICBVSU5U TiAgIE9yaWdpbmFsQXR0cmlidXRlOw0KPiArICBVSU5UOCogIFNpZ25hdHVyZVB0ciA9IChVSU5U OCopKFVJTlROKSZTaWduYXR1cmU7DQo+ICsgIEJPT0xFQU4gTG9nID0gRkFMU0U7DQo+ICsgIEJP T0xFQU4gSGlnaExpZ2h0ID0gR2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpOw0KPiArICBzd2l0Y2gg KEdldFJlcG9ydE9wdGlvbiAoKSkgew0KPiArICAgIGNhc2UgRVJFUE9SVF9BTEw6DQo+ICsgICAg ICBMb2cgPSBUUlVFOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgY2FzZSBFUkVQT1JUX1NFTEVD VEVEOg0KPiArICAgICAgaWYgKFNpZ25hdHVyZSA9PSBHZXRTZWxlY3RlZEFjcGlUYWJsZSAoKSkg ew0KPiArICAgICAgICBMb2cgPSBUUlVFOw0KPiArICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVG b3VuZCA9IFRSVUU7DQo+ICsgICAgICB9DQo+ICsgICAgICBicmVhazsNCj4gKyAgICBjYXNlIEVS RVBPUlRfVEFCTEVfTElTVDoNCj4gKyAgICAgIGlmIChtVGFibGVDb3VudCA9PSAwKSB7DQo+ICsg ICAgICAgIGlmIChIaWdoTGlnaHQpIHsNCj4gKyAgICAgICAgICBPcmlnaW5hbEF0dHJpYnV0ZSA9 IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ICsgICAgICAgICAgZ1NULT5Db25PdXQt PlNldEF0dHJpYnV0ZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgZ1NULT5Db25PdXQs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUihFRklfQ1lBTiwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklU NXxCSVQ2KSk+PjQpKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgICAg IH0NCj4gKyAgICAgICAgUHJpbnQgKEwiXG5JbnN0YWxsZWQgVGFibGUocyk6XG4iKTsNCj4gKyAg ICAgICAgaWYgKEhpZ2hMaWdodCkgew0KPiArICAgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRy aWJ1dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ICsgICAgICAgIH0NCj4g KyAgICAgIH0NCj4gKyAgICAgIFByaW50ICgNCj4gKyAgICAgICAgTCJcdCU0ZC4gJWMlYyVjJWNc biIsDQo+ICsgICAgICAgICsrbVRhYmxlQ291bnQsDQo+ICsgICAgICAgIFNpZ25hdHVyZVB0clsw XSwNCj4gKyAgICAgICAgU2lnbmF0dXJlUHRyWzFdLA0KPiArICAgICAgICBTaWduYXR1cmVQdHJb Ml0sDQo+ICsgICAgICAgIFNpZ25hdHVyZVB0clszXQ0KPiArICAgICAgICApOw0KPiArICAgICAg YnJlYWs7DQo+ICsgICAgY2FzZSBFUkVQT1JUX0RVTVBfQklOX0ZJTEU6DQo+ICsgICAgICBpZiAo U2lnbmF0dXJlID09IEdldFNlbGVjdGVkQWNwaVRhYmxlICgpKSB7DQo+ICsgICAgICAgIG1TZWxl Y3RlZEFjcGlUYWJsZUZvdW5kID0gVFJVRTsNCj4gKyAgICAgICAgRHVtcEFjcGlUYWJsZVRvRmls ZSAoVGFibGVQdHIsIExlbmd0aCk7DQo+ICsgICAgICB9DQo+ICsgICAgICBicmVhazsNCj4gKyAg ICBjYXNlIEVSRVBPUlRfTUFYOg0KPiArICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGhlcmUu DQo+ICsgICAgICAvLyBUaGlzIGNhc2UgaXMgb25seSBwcmVzZW50IHRvIHByZXZlbnQgY29tcGls ZXIgd2FybmluZy4NCj4gKyAgICAgIGJyZWFrOw0KPiArICB9IC8vIHN3aXRjaA0KPiArDQo+ICsg IGlmIChMb2cpIHsNCj4gKyAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ICsgICAgICBPcmlnaW5hbEF0 dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ICsgICAgICBnU1QtPkNv bk91dC0+U2V0QXR0cmlidXRlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0 LA0KPiArICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUihFRklfTElHSFRCTFVFLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8 QklUNikpPj40KSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgfQ0KPiArICAg IFByaW50ICgNCj4gKyAgICAgIEwiXG5cbiAtLS0tLS0tLS0tLS0tLS0gJWMlYyVjJWMgVGFibGUg LS0tLS0tLS0tLS0tLS0tIFxuXG4iLA0KPiArICAgICAgU2lnbmF0dXJlUHRyWzBdLA0KPiArICAg ICAgU2lnbmF0dXJlUHRyWzFdLA0KPiArICAgICAgU2lnbmF0dXJlUHRyWzJdLA0KPiArICAgICAg U2lnbmF0dXJlUHRyWzNdDQo+ICsgICAgICApOw0KPiArICAgIGlmIChIaWdoTGlnaHQpIHsNCj4g KyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0 dHJpYnV0ZSk7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIExvZzsNCj4gK30N Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gY29udmVydHMgYSBzdHJpbmcgdG8gQUNQSSB0YWJs ZSBzaWduYXR1cmUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU3RyICAgUG9pbnRlciB0byB0aGUg c3RyaW5nIHRvIGJlIGNvbnZlcnRlZCB0byB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgQUNQ SSB0YWJsZSBzaWduYXR1cmUuDQo+ICsNCj4gKyAgQHJldHZhbCBUaGUgQUNQSSB0YWJsZSBzaWdu YXR1cmUuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtVSU5UMzINCj4gK0NvbnZlcnRTdHJUb0FjcGlT aWduYXR1cmUgKA0KPiArICBJTiAgQ09OU1QgQ0hBUjE2KiBTdHINCj4gKyAgKQ0KPiArew0KPiAr ICBVSU5UOCBJbmRleCA9IDA7DQo+ICsgIENIQVI4IFB0cls0XTsNCj4gKw0KPiArICAvLyBDb252 ZXJ0IHRvIFVwcGVyIGNhc2UgYW5kIGNvbnZlcnQgdG8gQVNDSUkNCj4gKyAgd2hpbGUgKChJbmRl eCA8IDQpICYmIChTdHJbSW5kZXhdICE9IDApKSB7DQo+ICsgICAgaWYgKFN0cltJbmRleF0gPj0g TCdhJyAmJiBTdHJbSW5kZXhdIDw9IEwneicpIHsNCj4gKyAgICAgIFB0cltJbmRleF0gPSAoQ0hB UjgpKFN0cltJbmRleF0gLSAoTCdhJyAtIEwnQScpKTsNCj4gKyAgICB9IGVsc2Ugew0KPiArICAg ICAgUHRyW0luZGV4XSA9IChDSEFSOClTdHJbSW5kZXhdOw0KPiArICAgIH0NCj4gKyAgICBJbmRl eCsrOw0KPiANCj4gKyAgfQ0KPiArICByZXR1cm4gKihVSU5UMzIqKVB0cjsNCj4gK30NCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gaXRlcmF0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gdGFibGUgZW50 cmllcyBpbiB0aGUNCj4gKyAgICBzeXN0ZW0gdGFibGUsIHJldHJpZXZlcyB0aGUgUlNEUCBwb2lu dGVyIGFuZCBzdGFydHMgcGFyc2luZw0KPiArICAgIHRoZSBBQ1BJIHRhYmxlcy4NCj4gKw0KPiAr ICBAcGFyYW0gW2luXSBTeXN0ZW1UYWJsZSBQb2ludGVyIHRvIHRoZSBFRkkgc3lzdGVtIHRhYmxl Lg0KPiArDQo+ICsgIEByZXR2YWwgUmV0dXJucyBFRklfTk9UX0ZPVU5EICAgaWYgdGhlIFJTRFAg cG9pbnRlciBpcyBub3QgZm91bmQuDQo+ICsgICAgICAgICAgUmV0dXJucyBFRklfVU5TVVBQT1JU RUQgaWYgdGhlIFJTRFAgdmVyc2lvbiBpcyBsZXNzIHRoYW4gMi4NCj4gKyAgICAgICAgICBSZXR1 cm5zIEVGSV9TVUNDRVNTICAgICBpZiBzdWNjZXNzZnVsLg0KPiArKi8NCj4gK1NUQVRJQw0KPiAr RUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtBY3BpVmlldyAoDQo+ICsgIElOIEVGSV9TWVNURU1f VEFCTEUqIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAg ICAgICAgIFN0YXR1czsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiAr ICBFRklfQ09ORklHVVJBVElPTl9UQUJMRSogRWZpQ29uZmlndXJhdGlvblRhYmxlOw0KPiArICBC T09MRUFOICAgICAgICAgICAgICAgICAgRm91bmRBY3BpVGFibGU7DQo+ICsgIFVJTlROICAgICAg ICAgICAgICAgICAgICBPcmlnaW5hbEF0dHJpYnV0ZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAg ICAgICAgIFByaW50QXR0cmlidXRlOw0KPiArICBFUkVQT1JUX09QVElPTiAgICAgICAgICAgUmVw b3J0T3B0aW9uOw0KPiArICBVSU5UOCogICAgICAgICAgICAgICAgICAgUnNkcFB0cjsNCj4gKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgIFJzZHBMZW5ndGg7DQo+ICsgIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICBSc2RwUmV2aXNpb247DQo+ICsgIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgICBS c2RwUGFyc2VyUHJvYzsNCj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgIFRyYWNlOw0KPiAr DQo+ICsgIC8vIFNlYXJjaCB0aGUgdGFibGUgZm9yIGFuIGVudHJ5IHRoYXQgbWF0Y2hlcyB0aGUg QUNQSSBUYWJsZSBHdWlkDQo+ICsgIEZvdW5kQWNwaVRhYmxlID0gRkFMU0U7DQo+ICsgIGZvciAo SW5kZXggPSAwOyBJbmRleCA8IFN5c3RlbVRhYmxlLT5OdW1iZXJPZlRhYmxlRW50cmllczsgSW5k ZXgrKykgew0KPiArICAgIGlmIChDb21wYXJlR3VpZCAoJmdFZmlBY3BpVGFibGVHdWlkLA0KPiAr ICAgICAgICAgICYoU3lzdGVtVGFibGUtPkNvbmZpZ3VyYXRpb25UYWJsZVtJbmRleF0uVmVuZG9y R3VpZCkpKSB7DQo+ICsgICAgICBFZmlDb25maWd1cmF0aW9uVGFibGUgPSAmU3lzdGVtVGFibGUt PkNvbmZpZ3VyYXRpb25UYWJsZVtJbmRleF07DQo+ICsgICAgICBGb3VuZEFjcGlUYWJsZSA9IFRS VUU7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoRm91 bmRBY3BpVGFibGUpIHsNCj4gKyAgICBSc2RwUHRyID0gKFVJTlQ4KilFZmlDb25maWd1cmF0aW9u VGFibGUtPlZlbmRvclRhYmxlOw0KPiArDQo+ICsgICAgLy8gVGhlIFJTRFAgcmV2aXNpb24gaXMg MSBieXRlIHN0YXJ0aW5nIGF0IG9mZnNldCAxNQ0KPiArICAgIFJzZHBSZXZpc2lvbiA9ICooUnNk cFB0ciArIFJTRFBfUkVWSVNJT05fT0ZGU0VUKTsNCj4gKw0KPiArICAgIGlmIChSc2RwUmV2aXNp b24gPCAyKSB7DQo+ICsgICAgICBQcmludCAoDQo+ICsgICAgICAgIEwiRVJST1I6IFJTRFAgdmVy c2lvbiBsZXNzIHRoYW4gMiBpcyBub3Qgc3VwcG9ydGVkLlxuIg0KPiArICAgICAgICApOw0KPiAr ICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLyBU aGUgUlNEUCBsZW5ndGggaXMgNCBieXRlcyBzdGFydGluZyBhdCBvZmZzZXQgMjANCj4gKyAgICBS c2RwTGVuZ3RoID0gKihVSU5UMzIqKShSc2RwUHRyICsgUlNEUF9MRU5HVEhfT0ZGU0VUKTsNCj4g Kw0KPiArICAgIFRyYWNlID0gUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucyAoUlNEUF9UQUJMRV9J TkZPLCBSc2RwUHRyLCBSc2RwTGVuZ3RoKTsNCj4gKw0KPiArICAgIFN0YXR1cyA9IEdldFBhcnNl ciAoUlNEUF9UQUJMRV9JTkZPLCAmUnNkcFBhcnNlclByb2MpOw0KPiArICAgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gKyAgICAgIFByaW50ICgNCj4gKyAgICAgICAgTCJFUlJPUjogTm8g cmVnaXN0ZXJlZCBwYXJzZXIgZm91bmQgZm9yIFJTRFAuXG4iDQo+ICsgICAgICAgICk7DQo+ICsg ICAgICByZXR1cm4gU3RhdHVzOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFJzZHBQYXJzZXJQcm9j ICgNCj4gKyAgICAgIFRyYWNlLA0KPiArICAgICAgUnNkcFB0ciwNCj4gKyAgICAgIFJzZHBMZW5n dGgsDQo+ICsgICAgICBSc2RwUmV2aXNpb24NCj4gKyAgICAgICk7DQo+ICsNCj4gKyAgfSBlbHNl IHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAg ICAgIEwiRVJST1I6IEZhaWxlZCB0byBmaW5kIEFDUEkgVGFibGUgR3VpZCBpbiBTeXN0ZW0gQ29u ZmlndXJhdGlvbiBUYWJsZS5cbiINCj4gKyAgICAgICk7DQo+ICsgICAgcmV0dXJuIEVGSV9OT1Rf Rk9VTkQ7DQo+ICsgIH0NCj4gKw0KPiArICBSZXBvcnRPcHRpb24gPSBHZXRSZXBvcnRPcHRpb24g KCk7DQo+ICsgIGlmIChFUkVQT1JUX1RBQkxFX0xJU1QgIT0gUmVwb3J0T3B0aW9uKSB7DQo+ICsg ICAgaWYgKCgoRVJFUE9SVF9TRUxFQ1RFRCA9PSBSZXBvcnRPcHRpb24pICB8fA0KPiArICAgICAg ICAgKEVSRVBPUlRfRFVNUF9CSU5fRklMRSA9PSBSZXBvcnRPcHRpb24pKSAmJg0KPiArICAgICAg ICAoIW1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kKSkgew0KPiArICAgICAgUHJpbnQgKEwiXG5SZXF1 ZXN0ZWQgQUNQSSBUYWJsZSBub3QgZm91bmQuXG4iKTsNCj4gKyAgICB9IGVsc2UgaWYgKEVSRVBP UlRfRFVNUF9CSU5fRklMRSAhPSBSZXBvcnRPcHRpb24pIHsNCj4gKyAgICAgIE9yaWdpbmFsQXR0 cmlidXRlID0gZ1NULT5Db25PdXQtPk1vZGUtPkF0dHJpYnV0ZTsNCj4gKw0KPiArICAgICAgUHJp bnQgKEwiXG5UYWJsZSBTdGF0aXN0aWNzOlxuIik7DQo+ICsNCj4gKyAgICAgIGlmIChHZXRDb2xv dXJIaWdobGlnaHRpbmcgKCkpIHsNCj4gKyAgICAgICAgUHJpbnRBdHRyaWJ1dGUgPSAoR2V0RXJy b3JDb3VudCAoKSA+IDApID8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfVEVY VF9BVFRSICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9SRUQsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJ VDV8QklUNikpPj40KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JpZ2luYWxBdHRyaWJ1dGU7DQo+ICsgICAgICAg IGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBQcmludEF0dHJpYnV0ZSk7 DQo+ICsgICAgICB9DQo+ICsgICAgICBQcmludCAoTCJcdCVkIEVycm9yKHMpXG4iLCBHZXRFcnJv ckNvdW50ICgpKTsNCj4gKw0KPiArICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkg ew0KPiArICAgICAgICBQcmludEF0dHJpYnV0ZSA9IChHZXRXYXJuaW5nQ291bnQgKCkgPiAwKSA/ DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUiAoDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfUkVELA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOg0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9yaWdpbmFsQXR0cmlidXRlOw0KPiArDQo+ICsgICAgICAgIGdTVC0+Q29uT3V0 LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBQcmludEF0dHJpYnV0ZSk7DQo+ICsgICAgICB9 DQo+ICsgICAgICBQcmludCAoTCJcdCVkIFdhcm5pbmcocylcbiIsIEdldFdhcm5pbmdDb3VudCAo KSk7DQo+ICsNCj4gKyAgICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCkpIHsNCj4gKyAg ICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25PdXQsIE9yaWdpbmFsQXR0 cmlidXRlKTsNCj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ICsgIH0NCj4gKyAgcmV0dXJuIEVGSV9T VUNDRVNTOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgRnVuY3Rpb24gZm9yICdhY3Bpdmlldycg Y29tbWFuZC4NCj4gKw0KPiArICBAcGFyYW1baW5dIEltYWdlSGFuZGxlICBIYW5kbGUgdG8gdGhl IEltYWdlIChOVUxMIGlmIEludGVybmFsKS4NCj4gKyAgQHBhcmFtW2luXSBTeXN0ZW1UYWJsZSAg UG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlIChOVUxMIGlmIEludGVybmFsKS4NCj4gKyovDQo+ ICtTSEVMTF9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArU2hlbGxDb21tYW5kUnVuQWNwaVZpZXcgKA0K PiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gRUZJX1NZU1RF TV9UQUJMRSogU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAg ICAgU3RhdHVzOw0KPiArICBTSEVMTF9TVEFUVVMgICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9T VUNDRVNTOw0KPiArICBMSVNUX0VOVFJZKiAgICAgICAgUGFja2FnZSA9IE5VTEw7DQo+ICsgIENI QVIxNiogICAgICAgICAgICBQcm9ibGVtUGFyYW07DQo+ICsgIENPTlNUIENIQVIxNiogICAgICBU ZW1wOw0KPiArICBDSEFSOCAgICAgICAgICAgICAgQ29sb3VyT3B0aW9uWzhdOw0KPiArICBTSEVM TF9GSUxFX0hBTkRMRSAgVG1wRHVtcEZpbGVIYW5kbGUgPSBOVUxMOw0KPiArDQo+ICsgIC8vIFNl dCBEZWZhdWx0cw0KPiArICBtUmVwb3J0VHlwZSA9IEVSRVBPUlRfQUxMOw0KPiArICBtVGFibGVD b3VudCA9IDA7DQo+ICsgIG1CaW5UYWJsZUNvdW50ID0gMDsNCj4gKyAgbVNlbGVjdGVkQWNwaVRh YmxlID0gMDsNCj4gKyAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSA9IE5VTEw7DQo+ICsgIG1TZWxl Y3RlZEFjcGlUYWJsZUZvdW5kID0gRkFMU0U7DQo+ICsgIG1WZXJib3NlID0gVFJVRTsNCj4gKyAg bUNvbnNpc3RlbmN5Q2hlY2sgPSBUUlVFOw0KPiArDQo+ICsgIC8vIFJlc2V0IFRoZSBlcnJvci93 YXJuaW5nIGNvdW50ZXJzDQo+ICsgIFJlc2V0RXJyb3JDb3VudCAoKTsNCj4gKyAgUmVzZXRXYXJu aW5nQ291bnQgKCk7DQo+ICsNCj4gKyAgU3RhdHVzID0gU2hlbGxDb21tYW5kTGluZVBhcnNlIChQ YXJhbUxpc3QsICZQYWNrYWdlLCAmUHJvYmxlbVBhcmFtLCBUUlVFKTsNCj4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiArICAgIGlmIChTdGF0dXMgPT0gRUZJX1ZPTFVNRV9DT1JSVVBU RUQgJiYgUHJvYmxlbVBhcmFtICE9IE5VTEwpIHsNCj4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAo DQo+ICsgICAgICAgIC0xLA0KPiArICAgICAgICAtMSwNCj4gKyAgICAgICAgTlVMTCwNCj4gKyAg ICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1BST0JMRU0pLA0KPiArICAgICAgICBnU2hlbGxB Y3BpVmlld0hpaUhhbmRsZSwNCj4gKyAgICAgICAgTCJhY3BpdmlldyIsDQo+ICsgICAgICAgIFBy b2JsZW1QYXJhbQ0KPiArICAgICAgICApOw0KPiArICAgICAgRnJlZVBvb2wgKFByb2JsZW1QYXJh bSk7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgIFByaW50IChMImFjcGl2aWV3OiBFcnJvciBw cm9jZXNzaW5nIGlucHV0IHBhcmFtZXRlcihzKVxuIik7DQo+ICsgICAgfQ0KPiArICAgIFNoZWxs U3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0gZWxzZSB7DQo+ICsgICAg aWYgKFNoZWxsQ29tbWFuZExpbmVHZXRDb3VudCAoUGFja2FnZSkgPiAxKSB7DQo+ICsgICAgICBT aGVsbFByaW50SGlpRXggKA0KPiArICAgICAgICAtMSwNCj4gKyAgICAgICAgLTEsDQo+ICsgICAg ICAgIE5VTEwsDQo+ICsgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9UT09fTUFOWSksDQo+ ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAgICAgICBMImFjcGl2aWV3 Ig0KPiArICAgICAgICApOw0KPiArICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BB UkFNRVRFUjsNCj4gKyAgICB9IGVsc2UgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNr YWdlLCBMIi0/IikpIHsNCj4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ICsgICAgICAgIC0x LA0KPiArICAgICAgICAtMSwNCj4gKyAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgU1RSSU5HX1RP S0VOIChTVFJfR0VUX0hFTFBfQUNQSVZJRVcpLA0KPiArICAgICAgICBnU2hlbGxBY3BpVmlld0hp aUhhbmRsZSwNCj4gKyAgICAgICAgTCJhY3BpdmlldyINCj4gKyAgICAgICAgKTsNCj4gKyAgICB9 IGVsc2UgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1zIikgJiYNCj4g KyAgICAgICAgICAgICAgIFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoUGFja2FnZSwgTCItcyIp ID09IE5VTEwpIHsNCj4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ICsgICAgICAgIC0xLA0K PiArICAgICAgICAtMSwNCj4gKyAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgU1RSSU5HX1RPS0VO IChTVFJfR0VOX05PX1ZBTFVFKSwNCj4gKyAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUs DQo+ICsgICAgICAgIEwiYWNwaXZpZXciLA0KPiArICAgICAgICBMIi1zIg0KPiArICAgICAgICAp Ow0KPiArICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gKyAg ICB9IGVsc2UgaWYgKChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItcyIpICYm DQo+ICsgICAgICAgICAgICAgICAgU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwi LWwiKSkpIHsNCj4gKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ICsgICAgICAgIC0xLA0KPiAr ICAgICAgICAtMSwNCj4gKyAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgU1RSSU5HX1RPS0VOIChT VFJfR0VOX1RPT19NQU5ZKSwNCj4gKyAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ ICsgICAgICAgIEwiYWNwaXZpZXciDQo+ICsgICAgICAgICk7DQo+ICsgICAgICBTaGVsbFN0YXR1 cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICAgIH0gZWxzZSBpZiAoU2hlbGxDb21t YW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLWgiKSAmJg0KPiArICAgICAgICAgICAgICAgU2hl bGxDb21tYW5kTGluZUdldFZhbHVlIChQYWNrYWdlLCBMIi1oIikgPT0gTlVMTCkgew0KPiArICAg ICAgICBTaGVsbFByaW50SGlpRXggKA0KPiArICAgICAgICAgIC0xLA0KPiArICAgICAgICAgIC0x LA0KPiArICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VO X05PX1ZBTFVFKSwNCj4gKyAgICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gKyAg ICAgICAgICBMImFjcGl2aWV3IiwNCj4gKyAgICAgICAgICBMIi1oIg0KPiArICAgICAgICAgICk7 DQo+ICsgICAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsg ICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItZCIpICYm DQo+ICsgICAgICAgICAgICAgICAhU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwi LXMiKSkgew0KPiArICAgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiArICAgICAgICAgIC0xLA0K PiArICAgICAgICAgIC0xLA0KPiArICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgU1RSSU5H X1RPS0VOIChTVFJfR0VOX01JU1NJTkdfT1BUSU9OKSwNCj4gKyAgICAgICAgICBnU2hlbGxBY3Bp Vmlld0hpaUhhbmRsZSwNCj4gKyAgICAgICAgICBMImFjcGl2aWV3IiwNCj4gKyAgICAgICAgICBM Ii1zIiwNCj4gKyAgICAgICAgICBMIi1kIg0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIFNo ZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAgfSBlbHNlIHsNCj4g KyAgICAgIC8vIENoZWNrIGlmIHRoZSBjb2xvdXIgb3B0aW9uIGlzIHNldA0KPiArICAgICAgVGVt cCA9IFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoUGFja2FnZSwgTCItaCIpOw0KPiArICAgICAg aWYgKFRlbXAgIT0gTlVMTCkgew0KPiArICAgICAgICBVbmljb2RlU3RyVG9Bc2NpaVN0clMgKFRl bXAsIENvbG91ck9wdGlvbiwgc2l6ZW9mIChDb2xvdXJPcHRpb24pKTsNCj4gKyAgICAgICAgaWYg KChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlvbiwgIk9OIikgPT0gMCkgfHwNCj4gKyAgICAgICAg ICAgIChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlvbiwgIlRSVUUiKSA9PSAwKSkgew0KPiArICAg ICAgICAgIFNldENvbG91ckhpZ2hsaWdodGluZyAoVFJVRSk7DQo+ICsgICAgICAgIH0gZWxzZSBp ZiAoKEFzY2lpU3RyaUNtcCAoQ29sb3VyT3B0aW9uLCAiT0ZGIikgPT0gMCkgfHwNCj4gKyAgICAg ICAgICAgICAgICAgICAoQXNjaWlTdHJpQ21wIChDb2xvdXJPcHRpb24sICJGQUxTRSIpID09IDAp KSB7DQo+ICsgICAgICAgICAgU2V0Q29sb3VySGlnaGxpZ2h0aW5nIChGQUxTRSk7DQo+ICsgICAg ICAgIH0NCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRG bGFnIChQYWNrYWdlLCBMIi1sIikpIHsNCj4gKyAgICAgICAgbVJlcG9ydFR5cGUgPSBFUkVQT1JU X1RBQkxFX0xJU1Q7DQo+ICsgICAgICB9IGVsc2Ugew0KPiArICAgICAgICBtU2VsZWN0ZWRBY3Bp VGFibGVOYW1lID0gU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChQYWNrYWdlLCBMIi1zIik7DQo+ ICsgICAgICAgIGlmIChtU2VsZWN0ZWRBY3BpVGFibGVOYW1lICE9IE5VTEwpIHsNCj4gKyAgICAg ICAgICBtU2VsZWN0ZWRBY3BpVGFibGUgPSAoVUlOVDMyKUNvbnZlcnRTdHJUb0FjcGlTaWduYXR1 cmUgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VsZWN0 ZWRBY3BpVGFibGVOYW1lDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICk7DQo+ICsgICAgICAgICAgbVJlcG9ydFR5cGUgPSBFUkVQT1JUX1NFTEVDVEVEOw0KPiAr DQo+ICsgICAgICAgICAgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1k IikpICB7DQo+ICsgICAgICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZSB0byBjaGVj ayBpZiB0aGUgbWVkaWEgaXMgd3JpdGFibGUuDQo+ICsgICAgICAgICAgICBDSEFSMTYgRmlsZU5h bWVCdWZmZXJbTUFYX0ZJTEVfTkFNRV9MRU5dOw0KPiArICAgICAgICAgICAgbVJlcG9ydFR5cGUg PSBFUkVQT1JUX0RVTVBfQklOX0ZJTEU7DQo+ICsNCj4gKyAgICAgICAgICAgIFVuaWNvZGVTUHJp bnQgKA0KPiArICAgICAgICAgICAgICBGaWxlTmFtZUJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAg c2l6ZW9mIChGaWxlTmFtZUJ1ZmZlciksDQo+ICsgICAgICAgICAgICAgIEwiLlxcJXMlMDRkLnRt cCIsDQo+ICsgICAgICAgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUsDQo+ICsgICAgICAg ICAgICAgIG1CaW5UYWJsZUNvdW50DQo+ICsgICAgICAgICAgICAgICk7DQo+ICsNCj4gKyAgICAg ICAgICAgIFN0YXR1cyA9IFNoZWxsT3BlbkZpbGVCeU5hbWUgKA0KPiArICAgICAgICAgICAgICAg ICAgICAgICBGaWxlTmFtZUJ1ZmZlciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgJlRtcER1 bXBGaWxlSGFuZGxlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICBFRklfRklMRV9NT0RFX1JF QUQgfCBFRklfRklMRV9NT0RFX1dSSVRFIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgRUZJ X0ZJTEVfTU9ERV9DUkVBVEUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIDANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgKTsNCj4gKw0KPiArICAgICAgICAgICAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiArICAgICAgICAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURf UEFSQU1FVEVSOw0KPiArICAgICAgICAgICAgICBUbXBEdW1wRmlsZUhhbmRsZSA9IE5VTEw7DQo+ ICsgICAgICAgICAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ICsgICAgICAgICAgICAgICAgLTEs DQo+ICsgICAgICAgICAgICAgICAgLTEsDQo+ICsgICAgICAgICAgICAgICAgTlVMTCwNCj4gKyAg ICAgICAgICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRU5fUkVBRE9OTFlfTUVESUEpLA0KPiAr ICAgICAgICAgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiArICAgICAgICAgICAg ICAgIEwiYWNwaXZpZXciDQo+ICsgICAgICAgICAgICAgICAgKTsNCj4gKyAgICAgICAgICAgICAg Z290byBEb25lOw0KPiArICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgLy8gRGVsZXRlIFRl bXBvcmFyeSBmaWxlLg0KPiArICAgICAgICAgICAgU2hlbGxEZWxldGVGaWxlICgmVG1wRHVtcEZp bGVIYW5kbGUpOw0KPiArICAgICAgICAgIH0gLy8gLWQNCj4gKyAgICAgICAgfSAvLyAtcw0KPiAr ICAgICAgfQ0KPiArDQo+ICsgICAgICAvLyBQYXJzZSBBQ1BJIFRhYmxlIGluZm9ybWF0aW9uDQo+ ICsgICAgICBTdGF0dXMgPSBBY3BpVmlldyAoU3lzdGVtVGFibGUpOw0KPiArICAgICAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX05PVF9G T1VORDsNCj4gKyAgICAgIH0NCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArRG9uZToNCj4gKyAg aWYgKFBhY2thZ2UgIT0gTlVMTCkgew0KPiArICAgIFNoZWxsQ29tbWFuZExpbmVGcmVlVmFyTGlz dCAoUGFja2FnZSk7DQo+ICsgIH0NCj4gKyAgcmV0dXJuIFNoZWxsU3RhdHVzOw0KPiArfQ0KPiBk aWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv QWNwaVZpZXcuaCBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L0FjcGlWaWV3LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM1NjFlYTgxNjg2ODIxZTM3YzA1ZDkwZjA1 MzczMWZkZTYzZmJiNQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlWaWV3LmgNCj4gQEAgLTAsMCArMSwxMDMg QEANCj4gKy8qKg0KPiArICBIZWFkZXIgZmlsZSBmb3IgQWNwaVZpZXcNCj4gKw0KPiArICBDb3B5 cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4N Cj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBh cmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0 cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0K PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsN Cj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsqKi8NCj4g Kw0KPiArI2lmbmRlZiBBQ1BJVklFV19IXw0KPiArI2RlZmluZSBBQ1BJVklFV19IXw0KPiArDQo+ ICsvKiogQSBtYWNybyB0byBkZWZpbmUgdGhlIG1heCBmaWxlIG5hbWUgbGVuZ3RoDQo+ICsqLw0K PiArI2RlZmluZSBNQVhfRklMRV9OQU1FX0xFTiAgICAxMjgNCj4gKw0KPiArLyoqIE9mZnNldCB0 byB0aGUgUlNEUCByZXZpc2lvbiBmcm9tIHRoZSBzdGFydCBvZiB0aGUgUlNEUA0KPiArKi8NCj4g KyNkZWZpbmUgUlNEUF9SRVZJU0lPTl9PRkZTRVQgMTUNCj4gKw0KPiArLyoqIE9mZnNldCB0byB0 aGUgUlNEUCBsZW5ndGggZnJvbSB0aGUgc3RhcnQgb2YgdGhlIFJTRFANCj4gKyovDQo+ICsjZGVm aW5lIFJTRFBfTEVOR1RIX09GRlNFVCAgIDIwDQo+ICsNCj4gKy8qKiBUaGUgRVJFUE9SVF9PUFRJ T04gZW51bSBkZXNjcmliZXMgQUNQSSB0YWJsZSBSZXBvcnRpbmcgb3B0aW9ucy4NCj4gKyovDQo+ ICt0eXBlZGVmIGVudW0gUmVwb3J0T3B0aW9uIHsNCj4gKyAgRVJFUE9SVF9BTEwsICAgICAgICAg ICAgLy8vPCBSZXBvcnQgQWxsIHRhYmxlcy4NCj4gKyAgRVJFUE9SVF9TRUxFQ1RFRCwgICAgICAg Ly8vPCBSZXBvcnQgU2VsZWN0ZWQgdGFibGUuDQo+ICsgIEVSRVBPUlRfVEFCTEVfTElTVCwgICAg IC8vLzwgUmVwb3J0IExpc3Qgb2YgdGFibGVzLg0KPiArICBFUkVQT1JUX0RVTVBfQklOX0ZJTEUs ICAvLy88IER1bXAgc2VsZWN0ZWQgdGFibGUgdG8gYSBmaWxlLg0KPiArICBFUkVQT1JUX01BWA0K PiArfSBFUkVQT1JUX09QVElPTjsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmVzZXRzIHRo ZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50ZXIgdG8gWmVyby4NCj4gKyovDQo+ICtWT0lEDQo+ICtS ZXNldEVycm9yQ291bnQgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1 bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291bnQuDQo+ICsNCj4gKyAgQHJl dHZhbCBSZXR1cm5zIHRoZSBjb3VudCBvZiBlcnJvcnMgZGV0ZWN0ZWQgaW4gdGhlIEFDUEkgdGFi bGVzLg0KPiArKi8NCj4gK1VJTlQzMg0KPiArR2V0RXJyb3JDb3VudCAoDQo+ICsgIFZPSUQNCj4g KyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmVzZXRzIHRoZSBBQ1BJIHRhYmxlIHdh cm5pbmcgY291bnRlciB0byBaZXJvLg0KPiArKi8NCj4gK1ZPSUQNCj4gK1Jlc2V0V2FybmluZ0Nv dW50ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1 cm5zIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291bnQuDQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1 cm5zIHRoZSBjb3VudCBvZiB3YXJuaW5nIGRldGVjdGVkIGluIHRoZSBBQ1BJIHRhYmxlcy4NCj4g KyovDQo+ICtVSU5UMzINCj4gK0dldFdhcm5pbmdDb3VudCAoDQo+ICsgIFZPSUQNCj4gKyAgKTsN Cj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgY29sb3VyIGhpZ2hsaWdodGlu ZyBzdGF0dXMuDQo+ICsNCj4gKyAgQHJldHZhbCBUUlVFIGlmIGNvbG91ciBoaWdobGlnaHRpbmcg aXMgZW5hYmxlZC4NCj4gKyovDQo+ICtCT09MRUFODQo+ICtHZXRDb2xvdXJIaWdobGlnaHRpbmcg KA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhl IGNvbG91ciBoaWdobGlnaHRpbmcgc3RhdHVzLg0KPiArDQo+ICsqLw0KPiArVk9JRA0KPiArU2V0 Q29sb3VySGlnaGxpZ2h0aW5nICgNCj4gKyAgQk9PTEVBTiBIaWdobGlnaHQNCj4gKyAgKTsNCj4g Kw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSB0YWJsZSByZXBvcnRpbmcgb3B0 aW9ucyBmb3IgdGhlIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJl IFRoZSBBQ1BJIHRhYmxlIFNpZ25hdHVyZS4NCj4gKyAgQHBhcmFtIFtpbl0gVGFibGVQdHIgIFBv aW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAg IFRoZSBsZW5ndGggZm8gdGhlIEFDUEkgdGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBSZXR1cm5z IFRSVUUgaWYgdGhlIEFDUEkgdGFibGUgc2hvdWxkIGJlIHRyYWNlZC4NCj4gKyovDQo+ICtCT09M RUFODQo+ICtQcm9jZXNzVGFibGVSZXBvcnRPcHRpb25zICgNCj4gKyAgSU4gQ09OU1QgVUlOVDMy ICBTaWduYXR1cmUsDQo+ICsgIElOIENPTlNUIFVJTlQ4KiAgVGFibGVQdHIsDQo+ICsgIElOIENP TlNUIFVJTlQzMiAgTGVuZ3RoDQo+ICsgICk7DQo+ICsNCj4gKyNlbmRpZiAvLyBBQ1BJVklFV19I Xw0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyLmMNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uYzY2ZTgyMGJhNzg4YTBmYjc4MTA2MWRiYWQxZjU3ZjkwYWNlZjc4Yw0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyLmMNCj4gQEAgLTAsMCArMSwxMTcgQEANCj4g Ky8qKg0KPiArICBCR1JUIHRhYmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAx NyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRo ZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBC QVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkg S0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5j ZShzKToNCj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVt YmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3Bp Lmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9B Y3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ICtTVEFUSUMg QUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoqIEFu IEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgQkRSVCBUYWJsZS4NCj4gKyov DQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgQmdydFBhcnNlcltdID0gew0KPiArICBQQVJT RV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gKyAge0wiVmVyc2lvbiIsIDIsIDM2LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU3RhdHVzIiwgMSwgMzgs IEwiMHgleCIsIE5VTEwsICBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiSW1hZ2UgVHlwZSIs IDEsIDM5LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiSW1hZ2Ug QWRkcmVzcyIsIDgsIDQwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIkltYWdlIE9mZnNldCBYIiwgNCwgNDgsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiSW1hZ2UgT2Zmc2V0IFkiLCA0LCA1MiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFD UEkgQkdSVCB0YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSBCR1JUIHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmll bGRzLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwYXJzZXMgdGhlIEFDUEkgaGVhZGVy IGZvciB0aGUgRFNEVCB0YWJsZSBhbmQNCj4gKyAgaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUg QUNQSSBEU0RUIHRhYmxlLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2 YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiAr ICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBv ZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJl dmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiAr UGFyc2VBY3BpQmdydCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAg UHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBB Y3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIGlmICghVHJhY2UpIHsNCj4gKyAg ICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBQYXJzZUFjcGkgKA0KPiArICAgIFRyYWNlLA0K PiArICAgIDAsDQo+ICsgICAgIkJHUlQiLA0KPiArICAgIFB0ciwNCj4gKyAgICBBY3BpVGFibGVM ZW5ndGgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoQmdydFBhcnNlcikNCj4gKyAgICApOw0KPiAr fQ0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2lu XSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJ IFRhYmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJl Z2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVy IGlzIGludmFsaWQNCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2Ug dG8gcmVnaXN0ZXIgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNl ci4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0JncnRQYXJzZXJMaWJDb25z dHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VI YW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFi bGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAg ICAgICBFRklfQUNQSV82XzJfQk9PVF9HUkFQSElDU19SRVNPVVJDRV9UQUJMRV9TSUdOQVRVUkUs DQo+ICsgICAgICAgICAgIFBhcnNlQWNwaUJncnQNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4g Kw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAg SW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAg U3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4g KyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lz dGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtCZ3J0UGFyc2VyTGli RGVzdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1h Z2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVt VGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ICsg ICAgICAgICAgIEVGSV9BQ1BJXzZfMl9CT09UX0dSQVBISUNTX1JFU09VUkNFX1RBQkxFX1NJR05B VFVSRQ0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXJM aWIuaW5mIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9CZ3J0L0JncnRQYXJzZXJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhNGQ0MGYwMGRh MWEyMGU0OGM4NGU0YTNkMjVkZDdhNGRiNzQ3NjENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQv QmdydFBhcnNlckxpYi5pbmYNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMN Cj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n IG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBh Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vu c2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv YnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBV TkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyMgIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04g ICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gQmdydFBhcnNlckxpYg0KPiAr ICBGSUxFX0dVSUQgICAgICA9IEM0Q0NEOUI2LUY2MkYtNEIwNi1BMjVELUY4MTU1MDdCNDlFMA0K PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklW RVINCj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNU T1IgICAgPSBCZ3J0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBC Z3J0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgQmdydFBhcnNl ci5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hl bGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4g ZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvRGJnMi9EYmcyUGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlci5jDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjk0ZGU5YTM2NWNjMWY5NjFkMzUxZWYyMjkxN2QzMDA5YTNlOWRjNTMNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlci5jDQo+IEBAIC0wLDAgKzEsMjg3IEBADQo+ICsvKioN Cj4gKyAgREJHMiB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAy MDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExp Y2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMs DQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQs IEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6 DQo+ICsgICAgLSBNaWNyb3NvZnQgRGVidWcgUG9ydCBUYWJsZSAyIChEQkcyKSBTcGVjaWZpY2F0 aW9uIC0gRGVjZW1iZXIgMTAsIDIwMTUuDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVz dHJ5U3RhbmRhcmQvRGVidWdQb3J0MlRhYmxlLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZp TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsj aW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLy8g TG9jYWwgdmFyaWFibGVzIHBvaW50aW5nIHRvIHRoZSB0YWJsZSBmaWVsZHMNCj4gK1NUQVRJQyBD T05TVCBVSU5UMzIqIE9mZnNldERiZ0RldmljZUluZm87DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMy KiBOdW1iZXJEYmdEZXZpY2VJbmZvOw0KPiArU1RBVElDIENPTlNUIFVJTlQxNiogRGJnRGV2SW5m b0xlbjsNCj4gK1NUQVRJQyBDT05TVCBVSU5UOCogIEdhc0NvdW50Ow0KPiArU1RBVElDIENPTlNU IFVJTlQxNiogTmFtZVNwYWNlU3RyaW5nTGVuZ3RoOw0KPiArU1RBVElDIENPTlNUIFVJTlQxNiog TmFtZVNwYWNlU3RyaW5nT2Zmc2V0Ow0KPiArU1RBVElDIENPTlNUIFVJTlQxNiogT0VNRGF0YUxl bmd0aDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMTYqIE9FTURhdGFPZmZzZXQ7DQo+ICtTVEFUSUMg Q09OU1QgVUlOVDE2KiBCYXNlQWRkclJlZ09mZnNldDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMTYq IEFkZHJTaXplT2Zmc2V0Ow0KPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8g QWNwaUhkckluZm87DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIFZhbGlkYXRlcyB0aGUgTmFt ZVNwYWNlIHN0cmluZyBsZW5ndGguDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0 IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAg ICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUg aGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0 ZU5hbWVTcGFjZVN0ckxlbiAoDQo+ICsgIElOICBVSU5UOCogUHRyLA0KPiArICBJTiAgVk9JRCog IENvbnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBk ZWJ1ZyBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0dXJlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5d ICBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJh bSBbb3V0XSBMZW5ndGggIFBvaW50ZXIgaW4gd2hpY2ggdGhlIGxlbmd0aCBvZiB0aGUgZGVidWcN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIGluZm9ybWF0aW9uIGlzIHJldHVybmVk Lg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtEdW1wRGJnRGV2aWNl SW5mbyAoDQo+ICsgIElOICBVSU5UOCogIFB0ciwNCj4gKyAgT1VUIFVJTlQzMiogTGVuZ3RoDQo+ ICsgICk7DQo+ICsNCj4gKy8vLyBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBB Q1BJIERCRzIgdGFibGUuDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgRGJnMlBhcnNlcltd ID0gew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gKyAge0wiT2Zm c2V0RGJnRGV2aWNlSW5mbyIsIDQsIDM2LCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQqKikm T2Zmc2V0RGJnRGV2aWNlSW5mbywgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIk51bWJlckRiZ0Rldmlj ZUluZm8iLCA0LCA0MCwgTCIlZCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZOdW1iZXJEYmdEZXZp Y2VJbmZvLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLy8vIEFuIEFDUElfUEFSU0VSIGFy cmF5IGRlc2NyaWJpbmcgdGhlIGRlYnVnIGRldmljZSBpbmZvcm1hdGlvbi4NCj4gK1NUQVRJQyBD T05TVCBBQ1BJX1BBUlNFUiBEYmdEZXZJbmZvUGFyc2VyW10gPSB7DQo+ICsgIHtMIlJldmlzaW9u IiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0 aCIsIDIsIDEsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZEYmdEZXZJbmZvTGVuLCBOVUxMLCBOVUxM fSwNCj4gKw0KPiArICB7TCJHZW5lcmljIEFkZHJlc3MgUmVnaXN0ZXJzIENvdW50IiwgMSwgMywg TCIweCV4IiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJkdhc0NvdW50LCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiTmFtZVNwYWNlIFN0cmluZyBMZW5ndGgiLCAyLCA0LCBMIiVkIiwgTlVMTCwNCj4gKyAg IChWT0lEKiopJk5hbWVTcGFjZVN0cmluZ0xlbmd0aCwgVmFsaWRhdGVOYW1lU3BhY2VTdHJMZW4s IE5VTEx9LA0KPiArICB7TCJOYW1lU3BhY2UgU3RyaW5nIE9mZnNldCIsIDIsIDYsIEwiMHgleCIs IE5VTEwsDQo+ICsgICAoVk9JRCoqKSZOYW1lU3BhY2VTdHJpbmdPZmZzZXQsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJPRU0gRGF0YSBMZW5ndGgiLCAyLCA4LCBMIiVkIiwgTlVMTCwgKFZPSUQqKikm T0VNRGF0YUxlbmd0aCwNCj4gKyAgIE5VTEwsIE5VTEx9LA0KPiArICB7TCJPRU0gRGF0YSBPZmZz ZXQiLCAyLCAxMCwgTCIweCV4IiwgTlVMTCwgKFZPSUQqKikmT0VNRGF0YU9mZnNldCwNCj4gKyAg IE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlBvcnQgVHlwZSIsIDIsIDEyLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUG9ydCBTdWJUeXBlIiwgMiwgMTQsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDIsIDE2 LCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiQmFzZSBBZGRy ZXNzIFJlZ2lzdGVyIE9mZnNldCIsIDIsIDE4LCBMIjB4JXgiLCBOVUxMLA0KPiArICAgKFZPSUQq KikmQmFzZUFkZHJSZWdPZmZzZXQsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBZGRyZXNzIFNpemUg T2Zmc2V0IiwgMiwgMjAsIEwiMHgleCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZBZGRyU2l6ZU9m ZnNldCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlk YXRlcyB0aGUgTmFtZVNwYWNlIHN0cmluZyBsZW5ndGguDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0g W2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcu IHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhl IEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJ DQo+ICtWYWxpZGF0ZU5hbWVTcGFjZVN0ckxlbiAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsg IElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDE2IE5hbWVTcGFjZVN0 ckxlbiA9ICooVUlOVDE2KilQdHI7DQo+ICsgIGlmIChOYW1lU3BhY2VTdHJMZW4gPCAyKSB7DQo+ ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBM IlxuRVJST1I6IE5hbWVzcGFjZVN0cmluZyBMZW5ndGggPSAlZC4gSWYgbm8gTmFtZXNwYWNlIGRl dmljZSBleGlzdHMsXG4iDQo+ICsgICAgICAgIiAgICB0aGVuIE5hbWVzcGFjZVN0cmluZ1tdIG11 c3QgY29udGFpbiBhIHBlcmlvZCAnLiciLA0KPiArICAgICAgTmFtZVNwYWNlU3RyTGVuDQo+ICsg ICAgICApOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgZGVidWcgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdHVyZS4NCj4gKw0KPiArICBAcGFyYW0g W2luXSAgUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBA cGFyYW0gW291dF0gUHRyICAgICBQb2ludGVyIGluIHdoaWNoIHRoZSBsZW5ndGggb2YgdGhlIGRl YnVnDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBpbmZvcm1hdGlvbiBpcyByZXR1 cm5lZC4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArRHVtcERiZ0Rl dmljZUluZm8gKA0KPiArICBJTiAgVUlOVDgqICBQdHIsDQo+ICsgIE9VVCBVSU5UMzIqIExlbmd0 aA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQxNiAgSW5kZXg7DQo+ICsgIFVJTlQ4KiAgRGF0YVB0 cjsNCj4gKyAgVUlOVDMyKiBBZGRyU2l6ZTsNCj4gKw0KPiArICAvLyBQYXJzZSB0aGUgZGVidWcg ZGV2aWNlIGluZm8gdG8gZ2V0IHRoZSBMZW5ndGgNCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBG QUxTRSwNCj4gKyAgICAwLA0KPiArICAgICJEZWJ1ZyBEZXZpY2UgSW5mbyIsDQo+ICsgICAgUHRy LA0KPiArICAgIDMsICAvLyBMZW5ndGggaXMgMiBieXRlcyBzdGFydGluZyBhdCBvZmZzZXQgMQ0K PiArICAgIFBBUlNFUl9QQVJBTVMgKERiZ0RldkluZm9QYXJzZXIpDQo+ICsgICAgKTsNCj4gKw0K PiArICBQYXJzZUFjcGkgKA0KPiArICAgIFRSVUUsDQo+ICsgICAgMiwNCj4gKyAgICAiRGVidWcg RGV2aWNlIEluZm8iLA0KPiArICAgIFB0ciwNCj4gKyAgICAqRGJnRGV2SW5mb0xlbiwNCj4gKyAg ICBQQVJTRVJfUEFSQU1TIChEYmdEZXZJbmZvUGFyc2VyKQ0KPiArICAgICk7DQo+ICsNCj4gKyAg Ly8gR0FTIGFuZCBBZGRyZXNzIFNpemUNCj4gKyAgSW5kZXggPSAwOw0KPiArICBEYXRhUHRyID0g UHRyICsgKCpCYXNlQWRkclJlZ09mZnNldCk7DQo+ICsgIEFkZHJTaXplID0gKFVJTlQzMiopKFB0 ciArICgqQWRkclNpemVPZmZzZXQpKTsNCj4gKyAgd2hpbGUgKEluZGV4IDwgKCpHYXNDb3VudCkp IHsNCj4gKyAgICBQcmludEZpZWxkTmFtZSAoNCwgTCJCYXNlQWRkcmVzc1JlZ2lzdGVyIik7DQo+ ICsgICAgRHVtcEdhc1N0cnVjdCAoRGF0YVB0ciwgNCk7DQo+ICsgICAgUHJpbnRGaWVsZE5hbWUg KDQsIEwiQWRkcmVzcyBTaXplIik7DQo+ICsgICAgUHJpbnQgKEwiMHgleFxuIiwgQWRkclNpemVb SW5kZXhdKTsNCj4gKyAgICBEYXRhUHRyICs9IEdBU19MRU5HVEg7DQo+ICsgICAgSW5kZXgrKzsN Cj4gKyAgfQ0KPiArDQo+ICsgIC8vIE5hbWVTcGFjZSBTdHJpbmcNCj4gKyAgSW5kZXggPSAwOw0K PiArICBEYXRhUHRyID0gUHRyICsgKCpOYW1lU3BhY2VTdHJpbmdPZmZzZXQpOw0KPiArICBQcmlu dEZpZWxkTmFtZSAoNCwgTCJOYW1lU3BhY2UgU3RyaW5nIik7DQo+ICsgIHdoaWxlIChJbmRleCA8 ICgqTmFtZVNwYWNlU3RyaW5nTGVuZ3RoKSkgew0KPiArICAgIFByaW50IChMIiVjIiwgRGF0YVB0 cltJbmRleCsrXSk7DQo+ICsgIH0NCj4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gKw0KPiArICAvLyBP RU0gRGF0YQ0KPiArICBJbmRleCA9IDA7DQo+ICsgIERhdGFQdHIgPSBQdHIgKyAoKk9FTURhdGFP ZmZzZXQpOw0KPiArICBQcmludEZpZWxkTmFtZSAoNCwgTCJPRU0gRGF0YSIpOw0KPiArICB3aGls ZSAoSW5kZXggPCAoKk9FTURhdGFMZW5ndGgpKSB7DQo+ICsgICAgUHJpbnQgKEwiJXggIiwgRGF0 YVB0cltJbmRleCsrXSk7DQo+ICsgICAgaWYgKChJbmRleCAmIDcpID09IDApIHsNCj4gKyAgICAg IFByaW50IChMIlxuJS0qcyAgICIsIE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEgsIEwiIik7DQo+ ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgKkxlbmd0aCA9ICpEYmdEZXZJbmZvTGVuOw0KPiAr fQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgREJHMiB0YWJsZS4N Cj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBEQkcy IHRhYmxlIGFuZA0KPiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsg IFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxl IGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJV RSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAg ICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtp bl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBh cmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0K PiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpRGJnMiAoDQo+ICsgIElOIEJP T0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlU YWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ ICt7DQo+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ICsgIFVJTlQzMiBEYmdEZXZpY2VJbmZvTGVuZ3Ro Ow0KPiArICBVSU5UOCogRGV2SW5mb1B0cjsNCj4gKw0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsg ICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAg ICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAgICAgIkRC RzIiLA0KPiArICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5n dGgsDQo+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoRGJnMlBhcnNlcikNCj4gKyAgICAg ICAgICAgICApOw0KPiArICBEZXZJbmZvUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArDQo+ICsgIHdo aWxlIChPZmZzZXQgPCBBY3BpVGFibGVMZW5ndGgpIHsNCj4gKyAgICBEdW1wRGJnRGV2aWNlSW5m byAoDQo+ICsgICAgICBEZXZJbmZvUHRyLA0KPiArICAgICAgJkRiZ0RldmljZUluZm9MZW5ndGgN Cj4gKyAgICAgICk7DQo+ICsgICAgT2Zmc2V0ICs9IERiZ0RldmljZUluZm9MZW5ndGg7DQo+ICsg ICAgRGV2SW5mb1B0ciArPSBEYmdEZXZpY2VJbmZvTGVuZ3RoOw0KPiArICB9DQo+ICt9DQo+ICsN Cj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFn ZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0 ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJl dHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJl ZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52 YWxpZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdp c3RlciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiAr Ki8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRGJnMlBhcnNlckxpYkNvbnN0cnVjdG9y ICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiAr ICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVG SV9BQ1BJXzZfMl9ERUJVR19QT1JUXzJfVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQ YXJzZUFjcGlEYmcyDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lz dGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUg aGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2lu dGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05P VF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4g K0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRGJnMlBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiAr ICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJ TiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4g K3sNCj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQ SV82XzJfREVCVUdfUE9SVF8yX1RBQkxFX1NJR05BVFVSRQ0KPiArICAgICAgICAgICApOw0KPiAr fQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZXJMaWIuaW5mIGIvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZXJMaWIuaW5m DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLmU3M2MwZGY5MmNmZjg3MGM4MTM0YzAxNDhmODhkMjRjZGVjNmYw YmENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlckxpYi5pbmYNCj4gQEAgLTAs MCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAt IDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyAgVGhp cyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlIEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlv bi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsjICBo dHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsj ICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4g IkFTIElTIiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElP TlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsjIw0KPiArDQo+ ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0Vf TkFNRSAgICAgID0gRGJnMlBhcnNlckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9IEZCMUYxMUFB LUYyRjAtNEQ1OC04RDA2LTM2NURDQjYzQTYxNA0KPiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0K PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9DTEFTUyAgPSBO VUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAgPSBEYmcyUGFyc2VyTGliQ29uc3Ry dWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBEYmcyUGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiAr DQo+ICtbU291cmNlc10NCj4gKyAgRGJnMlBhcnNlci5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4g KyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1k ZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4g KyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2VyLmMg Yi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0Rz ZHQvRHNkdFBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3NmNjN2U4Nzc3ZTc1ZjM5ODNjYTMx MGNiM2MwZDQzZmVkMDNiZjUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlci5j DQo+IEBAIC0wLDAgKzEsOTIgQEANCj4gKy8qKg0KPiArICBEU0RUIHRhYmxlIHBhcnNlcg0KPiAr DQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJp YWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1z IGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJl IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5z ZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4N Cj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmlj YXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVk ZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGli Lmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5j bHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIERTRFQgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2Ug aXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgRFNEVCB0YWJsZSBhbmQNCj4gKyAg dHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKyAgRm9yIHRoZSBEU0RUIHRhYmxlIG9u bHkgdGhlIEFDUEkgaGVhZGVyIGZpZWxkcyBhcmUgcGFyc2VkIGFuZA0KPiArICB0cmFjZWQuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRo ZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJs ZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFj cGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtW T0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaURzZHQgKA0KPiArICBJTiBCT09MRUFOIFRyYWNl LA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgs DQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBp ZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgRHVtcEFjcGlI ZWFkZXIgKFB0cik7DQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2Uu DQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRh YmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIg aXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBh cnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJB TUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiAr RHNkdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAg ICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAg KiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBSZWdpc3RlclBh cnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9ESUZGRVJFTlRJQVRFRF9TWVNURU1f REVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJzZUFjcGlEc2R0 DQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJz ZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRo ZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBT eXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhl IHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAg ICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMN Cj4gK0VGSUFQSQ0KPiArRHNkdFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBF RklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklf U1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0 dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJfRElGRkVS RU5USUFURURfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRQ0KPiArICAgICAgICAg ICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJzZXJMaWIuaW5mIGIvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJz ZXJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2YmYyMzhlMWNiMzgzYzYyMzNlNzI4ZDI5N2Nk NDI5MjkxOWVlZDMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlckxpYi5pbmYN Cj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAo YykgMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0 aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyMg IGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4g KyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBB TiAiQVMgSVMiIEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsN Cj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFT RV9OQU1FICAgICAgPSBEc2R0UGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gMzA0Nzg0 MkItOUZBNi00Q0EyLTk1MTMtRDdGRDZBRDA5NTc0DQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4w DQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9 IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IERzZHRQYXJzZXJMaWJDb25z dHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IERzZHRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBEc2R0UGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0K PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAg TWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0K PiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJzZXIu YyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv RmFkdC9GYWR0UGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmMxM2FmNDBiZDdmOWM2ZjU1MDI5 NDAyNTIzNjBkMDk1ZGJkNTlkNA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2Vy LmMNCj4gQEAgLTAsMCArMSwzMDkgQEANCj4gKy8qKg0KPiArICBGQURUIHRhYmxlIHBhcnNlcg0K PiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBh bmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5 IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUg QlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElF RC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkgNi4yIFNwZWNp ZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ICsjaW5j bHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZp TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsj aW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLy8g TG9jYWwgdmFyaWFibGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBEc2R0QWRkcmVzczsNCj4g K1NUQVRJQyBDT05TVCBVSU5UNjQqIFhfRHNkdEFkZHJlc3M7DQo+ICtTVEFUSUMgQ09OU1QgVUlO VDgqICBGYWR0TWlub3JSZXZpc2lvbjsNCj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURF Ul9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiogQSBtYWNybyBkZWZpbmluZyB0aGUgSGFy ZHdhcmUgcmVkdWNlZCBBQ1BJIGZsYWcNCj4gKyovDQo+ICsjZGVmaW5lIEhXX1JFRFVDRURfQUNQ SSAgIEJJVDIwDQo+ICsNCj4gKy8vIEZvcndhcmQgZGVjbGFyYXRpb25zDQo+ICtDT05TVCBBQ1BJ X0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPKiBDT05TVA0KPiArRUZJQVBJDQo+ICtHZXRBY3BpWHNk dEhlYWRlckluZm8gKA0KPiArICBWT0lEDQo+ICspOw0KPiArDQo+ICtTVEFUSUMNCj4gK1ZPSUQN Cj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVGaXJtd2FyZUN0cmwgKA0KPiArICBJTiBVSU5UOCogUHRy LA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArKTsNCj4gKw0KPiArU1RBVElDDQo+ICtWT0lE DQo+ICtFRklBUEkNCj4gK1ZhbGlkYXRlWEZpcm13YXJlQ3RybCAoDQo+ICsgIElOIFVJTlQ4KiBQ dHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICspOw0KPiArDQo+ICtTVEFUSUMNCj4gK1ZP SUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVGbGFncyAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICspOw0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIg YXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBGQURUIFRhYmxlLg0KPiArKi8NCj4gK1NUQVRJQyBD T05TVCBBQ1BJX1BBUlNFUiBGYWR0UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0FDUElfSEVBREVS ICgmQWNwaUhkckluZm8pLA0KPiArICB7TCJGSVJNV0FSRV9DVFJMIiwgNCwgMzYsIEwiMHgleCIs IE5VTEwsIE5VTEwsIFZhbGlkYXRlRmlybXdhcmVDdHJsLCBOVUxMfSwNCj4gKyAge0wiRFNEVCIs IDQsIDQwLCBMIjB4JXgiLCBOVUxMLCAoVk9JRCoqKSZEc2R0QWRkcmVzcywgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlJlc2VydmVkIiwgMSwgNDQsIEwiJXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUHJlZmVycmVkX1BNX1Byb2ZpbGUiLCAxLCA0NSwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNDSV9JTlQiLCAyLCA0NiwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNNSV9DTUQiLCA0LCA0OCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFDUElfRU5BQkxFIiwgMSwgNTIsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBQ1BJX0RJU0FCTEUiLCAx LCA1MywgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlM0QklPU19S RVEiLCAxLCA1NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBT VEFURV9DTlQiLCAxLCA1NSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlBNMWFfRVZUX0JMSyIsIDQsIDU2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUE0xYl9FVlRfQkxLIiwgNCwgNjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJQTTFhX0NOVF9CTEsiLCA0LCA2NCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBNMWJfQ05UX0JMSyIsIDQsIDY4LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUE0yX0NOVF9CTEsiLCA0LCA3Miwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBNX1RNUl9CTEsiLCA0 LCA3NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdQRTBfQkxL IiwgNCwgODAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJHUEUx X0JMSyIsIDQsIDg0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi UE0xX0VWVF9MRU4iLCAxLCA4OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIlBNMV9DTlRfTEVOIiwgMSwgODksIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJQTTJfQ05UX0xFTiIsIDEsIDkwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiUE1fVE1SX0xFTiIsIDEsIDkxLCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiR1BFMF9CTEtfTEVOIiwgMSwgOTIsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJHUEUxX0JMS19MRU4iLCAxLCA5Mywg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdQRTFfQkFTRSIsIDEs IDk0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQ1NUX0NOVCIs IDEsIDk1LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUF9MVkwy X0xBVCIsIDIsIDk2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi UF9MVkwzX0xBVCIsIDIsIDk4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiRkxVU0hfU0laRSIsIDIsIDEwMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIkZMVVNIX1NUUklERSIsIDIsIDEwMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIkRVVFlfT0ZGU0VUIiwgMSwgMTA0LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRFVUWV9XSURUSCIsIDEsIDEwNSwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkRBWV9BTFJNIiwgMSwgMTA2LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTU9OX0FMUk0iLCAxLCAx MDcsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJDRU5UVVJZIiwg MSwgMTA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiSUFQQ19C T09UX0FSQ0giLCAyLCAxMDksIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJSZXNlcnZlZCIsIDEsIDExMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIkZsYWdzIiwgNCwgMTEyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZUZs YWdzLCBOVUxMfSwNCj4gKyAge0wiUkVTRVRfUkVHIiwgMTIsIDExNiwgTlVMTCwgRHVtcEdhcywg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJFU0VUX1ZBTFVFIiwgMSwgMTI4LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQVJNX0JPT1RfQVJDSCIsIDIsIDEy OSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZBRFQgTWlub3Ig VmVyc2lvbiIsIDEsIDEzMSwgTCIweCV4IiwgTlVMTCwgKFZPSUQqKikmRmFkdE1pbm9yUmV2aXNp b24sDQo+ICsgICAgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlhfRklSTVdBUkVfQ1RSTCIsIDgsIDEz MiwgTCIweCVseCIsIE5VTEwsIE5VTEwsDQo+ICsgICAgVmFsaWRhdGVYRmlybXdhcmVDdHJsLCBO VUxMfSwNCj4gKyAge0wiWF9EU0RUIiwgOCwgMTQwLCBMIjB4JWx4IiwgTlVMTCwgKFZPSUQqKikm WF9Ec2R0QWRkcmVzcywgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlhfUE0xYV9FVlRfQkxLIiwgMTIs IDE0OCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlhfUE0xYl9F VlRfQkxLIiwgMTIsIDE2MCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlhfUE0xYV9DTlRfQkxLIiwgMTIsIDE3MiwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIlhfUE0xYl9DTlRfQkxLIiwgMTIsIDE4NCwgTlVMTCwgRHVtcEdhcywg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlhfUE0yX0NOVF9CTEsiLCAxMiwgMTk2LCBOVUxM LCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWF9QTV9UTVJfQkxLIiwgMTIs IDIwOCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlhfR1BFMF9C TEsiLCAxMiwgMjIwLCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wi WF9HUEUxX0JMSyIsIDEyLCAyMzIsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJTTEVFUF9DT05UUk9MX1JFRyIsIDEyLCAyNDQsIE5VTEwsIER1bXBHYXMsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJTTEVFUF9TVEFUVVNfUkVHIiwgMTIsIDI1NiwgTlVMTCwg RHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkh5cGVydmlzb3IgVmVuZG9ySWRl bnRpdHkiLCA4LCAyNjgsIEwiJWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgRmlybXdhcmUgQ29udHJvbCBG aWVsZC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8g Y29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAg ICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiAr Ki8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZUZpcm13YXJlQ3Ry bCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICspDQo+ ICt7DQo+ICsjaWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFS Q0g2NCkNCj4gKyAgaWYgKCooVUlOVDMyKilQdHIgIT0gMCkgew0KPiArICAgIEluY3JlbWVudEVy cm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVSUk9SOiBGaXJtd2Fy ZSBDb250cm9sIG11c3QgYmUgemVybyBmb3IgQVJNIHBsYXRmb3Jtcy4iDQo+ICsgICAgKTsNCj4g KyAgfQ0KPiArI2VuZGlmDQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRl cyB0aGUgWF9GaXJtd2FyZSBDb250cm9sIEZpZWxkLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJh bSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUu Zy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0 aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklB UEkNCj4gK1ZhbGlkYXRlWEZpcm13YXJlQ3RybCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsg IElOIFZPSUQqICBDb250ZXh0DQo+ICspDQo+ICt7DQo+ICsjaWYgZGVmaW5lZCAoTURFX0NQVV9B Uk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gKyAgaWYgKCooVUlOVDY0KilQdHIg IT0gMCkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0K PiArICAgICAgTCJcbkVSUk9SOiBYIEZpcm13YXJlIENvbnRyb2wgbXVzdCBiZSB6ZXJvIGZvciBB Uk0gcGxhdGZvcm1zLiINCj4gKyAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4gKw0K PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBmbGFncy4NCj4gKw0KPiArICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0K PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZv cm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBv aW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9J RA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZUZsYWdzICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4g KyAgSU4gVk9JRCogIENvbnRleHQNCj4gKykNCj4gK3sNCj4gKyNpZiBkZWZpbmVkIChNREVfQ1BV X0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiArICBpZiAoKCgqKFVJTlQzMiop UHRyKSAmIEhXX1JFRFVDRURfQUNQSSkgPT0gMCkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291 bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVSUk9SOiBIV19SRURVQ0VEX0FD UEkgZmxhZyBtdXN0IGJlIHNldCBmb3IgQVJNIHBsYXRmb3Jtcy4iDQo+ICsgICAgKTsNCj4gKyAg fQ0KPiArI2VuZGlmDQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUg QUNQSSBGQURUIHRhYmxlLg0KPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgRkFEVCB0YWJs ZSBhbmQgb3B0aW9uYWxseSB0cmFjZXMgdGhlIEFDUEkNCj4gKyAgdGFibGUgZmllbGRzLg0KPiAr DQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwYXJzZXMgdGhlIEFDUEkgaGVhZGVyIGZvciB0aGUg RFNEVCB0YWJsZSBhbmQNCj4gKyAgaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgQUNQSSBEU0RU IHRhYmxlLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9u IG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAg ICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0g W2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl ci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQ SSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9m IHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3Bp RmFkdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiAr ICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVS ZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQ4KiAgRHNkdFB0cjsNCj4gKw0KPiArICBQ YXJzZUFjcGkgKA0KPiArICAgIFRyYWNlLA0KPiArICAgIDAsDQo+ICsgICAgIkZBRFQiLA0KPiAr ICAgIFB0ciwNCj4gKyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAo RmFkdFBhcnNlcikNCj4gKyAgICApOw0KPiArDQo+ICsgIGlmIChUcmFjZSkgew0KPiArICAgIFBy aW50IChMIlxuU3VtbWFyeTpcbiIpOw0KPiArICAgIFByaW50RmllbGROYW1lICgyLCBMIkZBRFQg VmVyc2lvbiIpOw0KPiArICAgIFByaW50IChMIiVkLiVkXG4iLCAgKkFjcGlIZHJJbmZvLlJldmlz aW9uLCAqRmFkdE1pbm9yUmV2aXNpb24pOw0KPiArDQo+ICsgICAgaWYgKCpHZXRBY3BpWHNkdEhl YWRlckluZm8gKCktPk9lbVRhYmxlSWQgIT0gKkFjcGlIZHJJbmZvLk9lbVRhYmxlSWQpIHsNCj4g KyAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICBQcmludCAoTCJFUlJPUjog T0VNIFRhYmxlIElkIGRvZXMgbm90IG1hdGNoIHdpdGggUlNEVC9YU0RULlxuIik7DQo+ICsgICAg fQ0KPiArICB9DQo+ICsNCj4gKyAgLy8gSWYgWF9EU0RUIGlzIG5vdCB6ZXJvIHRoZW4gdXNlIFhf RFNEVCBhbmQgaWdub3JlIERTRFQsDQo+ICsgIC8vIGVsc2UgdXNlIERTRFQuDQo+ICsgIGlmICgq WF9Ec2R0QWRkcmVzcyAhPSAwKSB7DQo+ICsgICAgRHNkdFB0ciA9IChVSU5UOCopKFVJTlROKSgq WF9Ec2R0QWRkcmVzcyk7DQo+ICsgIH0gZWxzZSBpZiAoKkRzZHRBZGRyZXNzICE9IDApIHsNCj4g KyAgICBEc2R0UHRyID0gKFVJTlQ4KikoVUlOVE4pKCpEc2R0QWRkcmVzcyk7DQo+ICsgIH0gZWxz ZSB7DQo+ICsgICAgLy8gQm90aCBEU0RUIGFuZCBYX0RTRFQgY2Fubm90IGJlIHplcm8uDQo+ICsj aWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4g KyAgICBpZiAoVHJhY2UpIHsNCj4gKyAgICAgIC8vIFRoZSBEU0RUIFRhYmxlIGlzIG1hbmRhdG9y eSBmb3IgQVJNIHN5c3RlbXMNCj4gKyAgICAgIC8vIGFzIHRoZSBDUFUgaW5mb3JtYXRpb24gTVVT VCBiZSBwcmVzZW50ZWQgaW4NCj4gKyAgICAgIC8vIHRoZSBEU0RULg0KPiArICAgICAgSW5jcmVt ZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgIFByaW50IChMIkVSUk9SOiBCb3RoIFhfRFNEVCBh bmQgRFNEVCBhcmUgTlVMTC5cbiIpOw0KPiArICAgIH0NCj4gKyNlbmRpZg0KPiArICAgIHJldHVy bjsNCj4gKyAgfQ0KPiArDQo+ICsgIFByb2Nlc3NBY3BpVGFibGUgKERzZHRQdHIpOw0KPiArfQ0K PiArDQo+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAg SW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAg U3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsg IEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRh YmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lz dGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlz IGludmFsaWQNCj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8g cmVnaXN0ZXIgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4N Cj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0ZhZHRQYXJzZXJMaWJDb25zdHJ1 Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5k bGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUN Cj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAg ICBFRklfQUNQSV82XzJfRklYRURfQUNQSV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ ICsgICAgICAgICAgIFBhcnNlQWNwaUZhZHQNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0K PiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1h Z2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lz dGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gKyAg QHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVy ZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtGYWR0UGFyc2VyTGliRGVz dHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VI YW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFi bGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ICsgICAg ICAgICAgIEVGSV9BQ1BJXzZfMl9GSVhFRF9BQ1BJX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVS RQ0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJzZXJMaWIu aW5mIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9GYWR0L0ZhZHRQYXJzZXJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOGExYTAyNmRlZWMx Yjg3Y2NiOTNkZDc3NzUwMDc4ZTJhOGVlZmQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQvRmFk dFBhcnNlckxpYi5pbmYNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMgQGZpbGUNCj4gKyMNCj4g KyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl c2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2Nv bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2Ug bWF5IGJlIGZvdW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNk LWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9S IElNUExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAg PSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gRmFkdFBhcnNlckxpYg0KPiArICBG SUxFX0dVSUQgICAgICA9IDE1MDdFQzhBLTJCRDQtNDYwQi05ODMwLUQ3OEQwQkQ3RTBFNg0KPiAr ICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVIN Cj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1Ig ICAgPSBGYWR0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBGYWR0 UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4gKyAgRmFkdFBhcnNlci5j DQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQ a2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsN Cj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gZGlm ZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvR3RkdC9HdGR0UGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu Ljc4NDEwNGE4YTRlNWM1ZmYwYmEyNjM3NGE2NzM3N2U3N2RkZmUzOWINCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL0d0ZHQvR3RkdFBhcnNlci5jDQo+IEBAIC0wLDAgKzEsMzM4IEBADQo+ICsvKioNCj4g KyAgR1REVCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4 LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vu c2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0 ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3 DQo+ICsgICoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3Bp Vmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFi bGVQYXJzZXIuaD4NCj4gKw0KPiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ICtTVEFUSUMgQ09OU1Qg VUlOVDMyKiBHdGR0UGxhdGZvcm1UaW1lckNvdW50Ow0KPiArU1RBVElDIENPTlNUIFVJTlQzMiog R3RkdFBsYXRmb3JtVGltZXJPZmZzZXQ7DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDgqICBQbGF0Zm9y bVRpbWVyVHlwZTsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMTYqIFBsYXRmb3JtVGltZXJMZW5ndGg7 DQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBHdEJsb2NrVGltZXJDb3VudDsNCj4gK1NUQVRJQyBD T05TVCBVSU5UMzIqIEd0QmxvY2tUaW1lck9mZnNldDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMTYq IEd0QmxvY2tMZW5ndGg7DQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBB Y3BpSGRySW5mbzsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBHVCBC bG9jayB0aW1lciBjb3VudC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0 IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAg ICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUg aGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0 ZUd0QmxvY2tUaW1lckNvdW50ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCog IENvbnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2Ny aWJpbmcgdGhlIEFDUEkgR1REVCBUYWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9Q QVJTRVIgR3RkdFBhcnNlcltdID0gew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJ bmZvKSwNCj4gKyAge0wiQ250Q29udHJvbEJhc2UgUGh5c2ljYWwgQWRkcmVzcyIsIDgsIDM2LCBM IjB4JWx4IiwgTlVMTCwgTlVMTCwNCj4gKyAgIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZl ZCIsIDQsIDQ0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiU2Vj dXJlIEVMMSB0aW1lciBHU0lWIiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJTZWN1cmUgRUwxIHRpbWVyIEZMQUdTIiwgNCwgNTIsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIk5vbi1TZWN1cmUgRUwxIHRpbWVy IEdTSVYiLCA0LCA1NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtM Ik5vbi1TZWN1cmUgRUwxIHRpbWVyIEZMQUdTIiwgNCwgNjAsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlZpcnR1YWwgdGltZXIgR1NJViIsIDQsIDY0LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVmlydHVhbCB0aW1lciBG TEFHUyIsIDQsIDY4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiAr ICB7TCJOb24tU2VjdXJlIEVMMiB0aW1lciBHU0lWIiwgNCwgNzIsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJOb24tU2VjdXJlIEVMMiB0aW1lciBGTEFHUyIsIDQs IDc2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJDbnRS ZWFkQmFzZSBQaHlzaWNhbCBhZGRyZXNzIiwgOCwgODAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiUGxhdGZvcm0gVGltZXIgQ291bnQiLCA0LCA4OCwgTCIlZCIs IE5VTEwsDQo+ICsgICAoVk9JRCoqKSZHdGR0UGxhdGZvcm1UaW1lckNvdW50LCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUGxhdGZvcm0gVGltZXIgT2Zmc2V0IiwgNCwgOTIsIEwiMHgleCIsIE5VTEws DQo+ICsgICAoVk9JRCoqKSZHdGR0UGxhdGZvcm1UaW1lck9mZnNldCwgTlVMTCwgTlVMTH0NCj4g K307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBQbGF0 Zm9ybSB0aW1lciBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEd0 UGxhdGZvcm1UaW1lckhlYWRlclBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTlVM TCwgTlVMTCwgKFZPSUQqKikmUGxhdGZvcm1UaW1lclR5cGUsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJMZW5ndGgiLCAyLCAxLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZQbGF0Zm9ybVRpbWVyTGVuZ3Ro LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAxLCAzLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRl c2NyaWJpbmcgdGhlIFBsYXRmb3JtIEdUIEJsb2NrLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBB Q1BJX1BBUlNFUiBHdEJsb2NrUGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIiVk IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDIsIDEsIEwiJWQi LCBOVUxMLCAoVk9JRCoqKSZHdEJsb2NrTGVuZ3RoLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVz ZXJ2ZWQiLCAxLCAzLCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBo eXNpY2FsIGFkZHJlc3MgKENudEN0bEJhc2UpIiwgOCwgNCwgTCIweCVseCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJUaW1lciBDb3VudCIsIDQsIDEyLCBMIiVkIiwgTlVMTCwg KFZPSUQqKikmR3RCbG9ja1RpbWVyQ291bnQsDQo+ICsgICBWYWxpZGF0ZUd0QmxvY2tUaW1lckNv dW50LCBOVUxMfSwNCj4gKyAge0wiVGltZXIgT2Zmc2V0IiwgNCwgMTYsIEwiJWQiLCBOVUxMLCAo Vk9JRCoqKSZHdEJsb2NrVGltZXJPZmZzZXQsIE5VTEwsDQo+ICsgICAgTlVMTH0NCj4gK307DQo+ ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBHVCBCbG9jayB0 aW1lci4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR3RCbG9ja1RpbWVyUGFy c2VyW10gPSB7DQo+ICsgIHtMIkZyYW1lIE51bWJlciIsIDEsIDAsIEwiJWQiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAzLCAxLCBMIiV4ICV4ICV4IiwgRHVt cDNDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBoeXNpY2FsIGFkZHJlc3MgKENu dEJhc2VYKSIsIDgsIDQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiUGh5c2ljYWwgYWRkcmVzcyAoQ250RUwwQmFzZVgpIiwgOCwgMTIsIEwiMHglbHgiLCBOVUxM LCBOVUxMLCBOVUxMLA0KPiArICAgIE5VTEx9LA0KPiArICB7TCJQaHlzaWNhbCBUaW1lciBHU0lW IiwgNCwgMjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQaHlz aWNhbCBUaW1lciBGbGFncyIsIDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiVmlydHVhbCBUaW1lciBHU0lWIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJWaXJ0dWFsIFRpbWVyIEZsYWdzIiwgNCwgMzIsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJDb21tb24gRmxhZ3MiLCA0 LCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8q KiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBQbGF0Zm9ybSBXYXRjaGRvZy4N Cj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU0JTQUdlbmVyaWNXYXRjaGRvZ1Bh cnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMSwgMywgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJSZWZyZXNoRnJhbWUgUGh5c2ljYWwgYWRkcmVzcyIsIDgsIDQsIEwi MHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQ29udHJvbEZyYW1lIFBo eXNpY2FsIGFkZHJlc3MiLCA4LCAxMiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJXYXRjaGRvZyBUaW1lciBHU0lWIiwgNCwgMjAsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJXYXRjaGRvZyBUaW1lciBGbGFncyIsIDQsIDI0LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBHVCBCbG9jayB0aW1lciBjb3VudC4NCj4gKw0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRh Lg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBp bmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBh IHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiAr Vk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZUd0QmxvY2tUaW1lckNvdW50ICgNCj4gKyAgSU4g VUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArICBV SU5UMzIgQmxvY2tUaW1lckNvdW50ID0gKihVSU5UMzIqKVB0cjsNCj4gKyAgaWYgKEJsb2NrVGlt ZXJDb3VudCA+IDgpIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFBy aW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjogVGltZXIgQ291bnQgPSAlZC4gTWF4IFRpbWVyIENv dW50IGlzIDguIiwNCj4gKyAgICAgIEJsb2NrVGltZXJDb3VudA0KPiArICAgICAgKTsNCj4gKyAg fQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFBsYXRmb3JtIEdU IEJsb2NrLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIEdUIEJsb2NrIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgTGVuZ3Ro IG9mIHRoZSBHVCBCbG9jayBzdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ ICtEdW1wR1RCbG9jayAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJTlQxNiBMZW5n dGgNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgSW5kZXg7DQo+ICsgIFVJTlQzMiBPZmZzZXQ7 DQo+ICsgIFVJTlQxNiBHVEJsb2NrVGltZXJMZW5ndGg7DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFy c2VBY3BpICgNCj4gKyAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgIDIsDQo+ICsg ICAgICAgICAgICAgIkdUIEJsb2NrIiwNCj4gKyAgICAgICAgICAgICBQdHIsDQo+ICsgICAgICAg ICAgICAgTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEd0QmxvY2tQYXJz ZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKyAgR1RCbG9ja1RpbWVyTGVuZ3RoID0gKCpHdEJs b2NrTGVuZ3RoIC0gT2Zmc2V0KSAvICgqR3RCbG9ja1RpbWVyQ291bnQpOw0KPiArICBMZW5ndGgg LT0gT2Zmc2V0Ow0KPiArDQo+ICsgIGlmICgqR3RCbG9ja1RpbWVyQ291bnQgIT0gMCkgew0KPiAr ICAgIFB0ciArPSAoKkd0QmxvY2tUaW1lck9mZnNldCk7DQo+ICsgICAgSW5kZXggPSAwOw0KPiAr ICAgIHdoaWxlICgoSW5kZXggPCAoKkd0QmxvY2tUaW1lckNvdW50KSkgJiYgKExlbmd0aCA+PSBH VEJsb2NrVGltZXJMZW5ndGgpKSB7DQo+ICsgICAgICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiAr ICAgICAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgICAgICAyLA0KPiArICAgICAg ICAgICAgICAgICAiR1QgQmxvY2sgVGltZXIiLA0KPiArICAgICAgICAgICAgICAgICBQdHIsDQo+ ICsgICAgICAgICAgICAgICAgIEdUQmxvY2tUaW1lckxlbmd0aCwNCj4gKyAgICAgICAgICAgICAg ICAgUEFSU0VSX1BBUkFNUyAoR3RCbG9ja1RpbWVyUGFyc2VyKQ0KPiArICAgICAgICAgICAgICAg ICApOw0KPiArICAgICAgLy8gSW5jcmVtZW50IGJ5IEdUIEJsb2NrIFRpbWVyIHN0cnVjdHVyZSBz aXplDQo+ICsgICAgICBQdHIgKz0gT2Zmc2V0Ow0KPiArICAgICAgTGVuZ3RoIC09IE9mZnNldDsN Cj4gKyAgICAgIEluZGV4Kys7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKExlbmd0aCAhPSAw KSB7DQo+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgUHJpbnQgKA0K PiArICAgICAgICBMIkVSUk9SOkdUIEJsb2NrIFRpbWVyIGxlbmd0aCBtaXNtYXRjaC4gVW5wYXJz ZWQgJWQgYnl0ZXMuXG4iLA0KPiArICAgICAgICBMZW5ndGgNCj4gKyAgICAgICAgKTsNCj4gKyAg ICB9DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBQ bGF0Zm9ybSBXYXRjaGRvZyB0aW1lci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSB3YXRjaGRvZyB0aW1lciBkYXRhLg0KPiArICBAcGFy YW0gW2luXSBMZW5ndGggIExlbmd0aCBvZiB0aGUgd2F0Y2hkb2cgdGltZXIgc3RydWN0dXJlLg0K PiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcFdhdGNoZG9nVGltZXIgKA0KPiArICBJ TiBVSU5UOCogUHRyLA0KPiArICBJTiBVSU5UMTYgTGVuZ3RoDQo+ICsgICkNCj4gK3sNCj4gKyAg UGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDIsDQo+ICsgICAgIlNCU0EgR2VuZXJp YyBXYXRjaGRvZyIsDQo+ICsgICAgUHRyLA0KPiArICAgIExlbmd0aCwNCj4gKyAgICBQQVJTRVJf UEFSQU1TIChTQlNBR2VuZXJpY1dhdGNoZG9nUGFyc2VyKQ0KPiArICAgICk7DQo+ICt9DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBHVERUIHRhYmxlLg0KPiArICBX aGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEdURFQgdGFibGUg YW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBm dW5jdGlvbiBhbHNvIHBhcnNlcyB0aGUgZm9sbG93aW5nIHBsYXRmb3JtIHRpbWVyIHN0cnVjdHVy ZXM6DQo+ICsgICAgLSBHVCBCbG9jayB0aW1lcg0KPiArICAgIC0gV2F0Y2hkb2cgdGltZXINCj4g Kw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQ SSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAg IElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAg ICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBw YXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0 YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNlQWNwaUd0ZHQgKA0KPiAr ICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwNCj4gKyAgSU4gVUlOVDMy ICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4g KyAgKQ0KPiArew0KPiArICBVSU5UMzIgSW5kZXg7DQo+ICsgIFVJTlQ4KiBUaW1lclB0cjsNCj4g Kw0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAg UGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDAsDQo+ICsgICAgIkdURFQiLA0KPiAr ICAgIFB0ciwNCj4gKyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgUEFSU0VSX1BBUkFNUyAo R3RkdFBhcnNlcikNCj4gKyAgICApOw0KPiArDQo+ICsgIGlmICgqR3RkdFBsYXRmb3JtVGltZXJD b3VudCAhPSAwKSB7DQo+ICsgICAgVGltZXJQdHIgPSBQdHIgKyAoKkd0ZHRQbGF0Zm9ybVRpbWVy T2Zmc2V0KTsNCj4gKyAgICBJbmRleCA9IDA7DQo+ICsgICAgZG8gew0KPiArICAgICAgLy8gUGFy c2UgdGhlIFBsYXRmb3JtIFRpbWVyIEhlYWRlcg0KPiArICAgICAgUGFyc2VBY3BpICgNCj4gKyAg ICAgICAgRkFMU0UsDQo+ICsgICAgICAgIDAsDQo+ICsgICAgICAgIE5VTEwsDQo+ICsgICAgICAg IFRpbWVyUHRyLA0KPiArICAgICAgICA0LCAgLy8gR1QgUGxhdGZvcm0gVGltZXIgc3RydWN0dXJl IGhlYWRlciBsZW5ndGguDQo+ICsgICAgICAgIFBBUlNFUl9QQVJBTVMgKEd0UGxhdGZvcm1UaW1l ckhlYWRlclBhcnNlcikNCj4gKyAgICAgICAgKTsNCj4gKyAgICAgIHN3aXRjaCAoKlBsYXRmb3Jt VGltZXJUeXBlKSB7DQo+ICsgICAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dURFRfR1RfQkxPQ0s6 DQo+ICsgICAgICAgICAgRHVtcEdUQmxvY2sgKFRpbWVyUHRyLCAqUGxhdGZvcm1UaW1lckxlbmd0 aCk7DQo+ICsgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dU RFRfU0JTQV9HRU5FUklDX1dBVENIRE9HOg0KPiArICAgICAgICAgIER1bXBXYXRjaGRvZ1RpbWVy IChUaW1lclB0ciwgKlBsYXRmb3JtVGltZXJMZW5ndGgpOw0KPiArICAgICAgICAgIGJyZWFrOw0K PiArICAgICAgICBkZWZhdWx0Og0KPiArICAgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7 DQo+ICsgICAgICAgICAgUHJpbnQgKA0KPiArICAgICAgICAgICAgTCJFUlJPUjogSU5WQUxJRCBQ bGF0Zm9ybSBUaW1lciBUeXBlID0gJWRcbiIsDQo+ICsgICAgICAgICAgICAqUGxhdGZvcm1UaW1l clR5cGUNCj4gKyAgICAgICAgICAgICk7DQo+ICsgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICB9 IC8vIHN3aXRjaA0KPiArICAgICAgVGltZXJQdHIgKz0gKCpQbGF0Zm9ybVRpbWVyTGVuZ3RoKTsN Cj4gKyAgICAgIEluZGV4Kys7DQo+ICsgICAgfSB3aGlsZSAoSW5kZXggPCAqR3RkdFBsYXRmb3Jt VGltZXJDb3VudCk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJz ZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRo ZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBT eXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhl IHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQg ICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09V VF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJ QVBJDQo+ICtHdGR0UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFO RExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVN X1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJl Z2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX0dFTkVSSUNfVElNRVJf REVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJzZUFjcGlHdGR0 DQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJz ZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRo ZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBT eXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhl IHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAg ICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMN Cj4gK0VGSUFQSQ0KPiArR3RkdFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBF RklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklf U1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0 dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJfR0VORVJJ Q19USU1FUl9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gKyAgICAgICAgICAgKTsNCj4g K30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyTGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyTGliLmlu Zg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi40YjFlOWQ5OWYyMzUzZTdlNjk2ZjZmMGZjNzE2ZDQyYjI0YmZl YjllDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXJMaWIuaW5mDQo+IEBAIC0w LDAgKzEsMzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcg LSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArIyAg aHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0KPiAr IyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUyBJUyIgQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJ T05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIyMNCj4gKw0K PiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiArICBCQVNF X05BTUUgICAgICA9IEd0ZHRQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAgICAgPSA0NjM4QTU3 Mi01OUMwLTRBQUYtQjk5MC1COTVGQTY3RDk2NTYNCj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjAN Cj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJBUllfQ0xBU1MgID0g TlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gR3RkdFBhcnNlckxpYkNvbnN0 cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gR3RkdFBhcnNlckxpYkRlc3RydWN0b3INCj4g Kw0KPiArW1NvdXJjZXNdDQo+ICsgIEd0ZHRQYXJzZXIuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiArICBN ZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0lvcnQvSW9ydFBhcnNlci5j IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9J b3J0L0lvcnRQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWIyNTcxMjgyYzA0MjU3YTAxMGJm NmM4MDBhY2Y3MTQwZDAyODNiDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXIu Yw0KPiBAQCAtMCwwICsxLDc0NSBAQA0KPiArLyoqDQo+ICsgIElPUlQgdGFibGUgcGFyc2VyDQo+ ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkg YmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNl bnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBC U0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0gSU8gUmVtYXBwaW5nIFRh YmxlLCBQbGF0Zm9ybSBEZXNpZ24gRG9jdW1lbnQsIFJldmlzaW9uIEMsIDE1IE1heSAyMDE3DQo+ ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvSW9SZW1hcHBpbmdUYWJs ZS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJy YXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIu aD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiAr DQo+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURF Ul9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiogVGhlIEVJT1JUX05PREUgZW51bSBkZXNj cmliZXMgdGhlIElPUlQgTm9kZSB0eXBlcy4NCj4gKyovDQo+ICt0eXBlZGVmIGVudW0gSW9ydE5v ZGUgew0KPiArICBFSU9SVF9OT0RFX0lUU19HUk9VUCwgICAgICAgIC8vLzwgSVRTIEdyb3VwIG5v ZGUNCj4gKyAgRUlPUlRfTk9ERV9OQU1FRF9DT01QT05FTlQsICAvLy88IE5hbWVkIENvbXBvbmVu dCBub2RlDQo+ICsgIEVJT1JUX05PREVfUk9PVF9DT01QTEVYLCAgICAgLy8vPCBSb290IENvbXBs ZXggbm9kZQ0KPiArICBFSU9SVF9OT0RFX1NNTVVWMV9WMiwgICAgICAgIC8vLzwgU01NVSB2MS92 MiBub2RlDQo+ICsgIEVJT1JUX05PREVfU01NVVYzLCAgICAgICAgICAgLy8vPCBTTU1VIHYzIG5v ZGUNCj4gKyAgRUlPUlRfTk9ERV9QTUNHLCAgICAgICAgICAgICAvLy88IFBNQyBncm91cCBub2Rl DQo+ICsgIEVJT1JUX05PREVfTUFYDQo+ICt9IEVJT1JUX05PREU7DQo+ICsNCj4gKy8vIExvY2Fs IFZhcmlhYmxlcw0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogSW9ydE5vZGVDb3VudDsNCj4gK1NU QVRJQyBDT05TVCBVSU5UMzIqIElvcnROb2RlT2Zmc2V0Ow0KPiArDQo+ICtTVEFUSUMgQ09OU1Qg VUlOVDgqIElvcnROb2RlVHlwZTsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMTYqIElvcnROb2RlTGVu Z3RoOw0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogSW9ydElkTWFwcGluZ0NvdW50Ow0KPiArU1RB VElDIENPTlNUIFVJTlQzMiogSW9ydElkTWFwcGluZ09mZnNldDsNCj4gKw0KPiArU1RBVElDIENP TlNUIFVJTlQzMiogSW50ZXJydXB0Q29udGV4dENvdW50Ow0KPiArU1RBVElDIENPTlNUIFVJTlQz MiogSW50ZXJydXB0Q29udGV4dE9mZnNldDsNCj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIFBtdUlu dGVycnVwdENvdW50Ow0KPiArU1RBVElDIENPTlNUIFVJTlQzMiogUG11SW50ZXJydXB0T2Zmc2V0 Ow0KPiArDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJdHNDb3VudDsNCj4gKw0KPiArLyoqIFRo aXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJRCBNYXBwaW5nIGFycmF5IGNvdW50IGZvciB0aGUg SVRTIG5vZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVy IHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4N Cj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVJdHNJZE1h cHBpbmdDb3VudCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0 DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFw cGluZyBhcnJheSBvZmZzZXQgZm9yIHRoZSBJVFMgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBA cGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlv biBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIg dG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiAr RUZJQVBJDQo+ICtWYWxpZGF0ZUl0c0lkQXJyYXlSZWZlcmVuY2UgKA0KPiArICBJTiBVSU5UOCog UHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKiogSGVscGVy IE1hY3JvIGZvciBwb3B1bGF0aW5nIHRoZSBJT1JUIE5vZGUgaGVhZGVyIGluIHRoZSBBQ1BJX1BB UlNFUg0KPiArICAgIGFycmF5Lg0KPiArDQo+ICsgIEBwYXJhbSBbb3V0XSBWYWxpZGF0ZUlkTWFw cGluZ0NvdW50ICAgIE9wdGlvbmFsIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiBmb3INCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGluZyB0aGUgSUQgTWFw cGluZyBjb3VudC4NCj4gKyAgQHBhcmFtIFtvdXRdIFZhbGlkYXRlSWRBcnJheVJlZmVyZW5jZSAg T3B0aW9uYWwgcG9pbnRlciB0byBhIGZ1bmN0aW9uIGZvcg0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW5nIHRoZSBJRCBBcnJheSByZWZlcmVuY2Uu DQo+ICsqLw0KPiArI2RlZmluZSBQQVJTRV9JT1JUX05PREVfSEVBREVSKFZhbGlkYXRlSWRNYXBw aW5nQ291bnQsICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBWYWxpZGF0ZUlkQXJyYXlSZWZlcmVuY2UpICAgICAgICAgICAgICAgICBcDQo+ICsg IHsgTCJUeXBlIiwgMSwgMCwgTCIlZCIsIE5VTEwsIChWT0lEKiopJklvcnROb2RlVHlwZSwgTlVM TCwgTlVMTCB9LCAgICAgXA0KPiArICB7IEwiTGVuZ3RoIiwgMiwgMSwgTCIlZCIsIE5VTEwsIChW T0lEKiopJklvcnROb2RlTGVuZ3RoLCBOVUxMLCBOVUxMIH0sIFwNCj4gKyAgeyBMIlJldmlzaW9u IiwgMSwgMywgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwgfSwgICAgICAgICAgICAgICAg ICBcDQo+ICsgIHsgTCJSZXNlcnZlZCIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEwgfSwgICAgICAgICAgICAgICAgXA0KPiArICB7IEwiTnVtYmVyIG9mIElEIG1hcHBpbmdz IiwgNCwgOCwgTCIlZCIsIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAo Vk9JRCoqKSZJb3J0SWRNYXBwaW5nQ291bnQsIFZhbGlkYXRlSWRNYXBwaW5nQ291bnQsIE5VTEwg fSwgICAgICAgICBcDQo+ICsgIHsgTCJSZWZlcmVuY2UgdG8gSUQgQXJyYXkiLCA0LCAxMiwgTCIw eCV4IiwgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIChWT0lEKiopJklvcnRJ ZE1hcHBpbmdPZmZzZXQsIFZhbGlkYXRlSWRBcnJheVJlZmVyZW5jZSwgTlVMTCB9DQo+ICsNCj4g Ky8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIElPUlQgVGFibGUN Cj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydFBhcnNlcltdID0gew0KPiAr ICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gKyAge0wiTnVtYmVyIG9mIElP UlQgTm9kZXMiLCA0LCAzNiwgTCIlZCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZJb3J0Tm9kZUNv dW50LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiT2Zmc2V0IHRvIEFycmF5IG9mIElPUlQgTm9kZXMi LCA0LCA0MCwgTCIweCV4IiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJklvcnROb2RlT2Zmc2V0LCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCA0NCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBk ZXNjcmliaW5nIHRoZSBJT1JUIG5vZGUgaGVhZGVyIHN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFU SUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVIZWFkZXJQYXJzZXJbXSA9IHsNCj4gKyAgUEFS U0VfSU9SVF9OT0RFX0hFQURFUiAoTlVMTCwgTlVMTCkNCj4gK307DQo+ICsNCj4gKy8qKiBBbiBB Q1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIFNNTVV2MS8yIG5vZGUuDQo+ICsq Lw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnROb2RlU21tdVYxVjJQYXJzZXJbXSA9 IHsNCj4gKyAgUEFSU0VfSU9SVF9OT0RFX0hFQURFUiAoTlVMTCwgTlVMTCksDQo+ICsgIHtMIkJh c2UgQWRkcmVzcyIsIDgsIDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIlNwYW4iLCA4LCAyNCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJNb2RlbCIsIDQsIDMyLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIkZsYWdzIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJSZWZlcmVuY2UgdG8gR2xvYmFsIEludGVycnVwdCBBcnJheSIsIDQsIDQwLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiArICAgTlVMTH0sDQo+ICsgIHtMIk51bWJlciBvZiBj b250ZXh0IGludGVycnVwdHMiLCA0LCA0NCwgTCIlZCIsIE5VTEwsDQo+ICsgICAoVk9JRCoqKSZJ bnRlcnJ1cHRDb250ZXh0Q291bnQsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZWZlcmVuY2UgdG8g Q29udGV4dCBJbnRlcnJ1cHQgQXJyYXkiLCA0LCA0OCwgTCIweCV4IiwgTlVMTCwNCj4gKyAgIChW T0lEKiopJkludGVycnVwdENvbnRleHRPZmZzZXQsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJOdW1i ZXIgb2YgUE1VIEludGVycnVwdHMiLCA0LCA1MiwgTCIlZCIsIE5VTEwsDQo+ICsgICAoVk9JRCoq KSZQbXVJbnRlcnJ1cHRDb3VudCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlZmVyZW5jZSB0byBQ TVUgSW50ZXJydXB0IEFycmF5IiwgNCwgNTYsIEwiMHgleCIsIE5VTEwsDQo+ICsgICAoVk9JRCoq KSZQbXVJbnRlcnJ1cHRPZmZzZXQsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIC8vIEludGVycnVw dCBBcnJheQ0KPiArICB7TCJTTU1VX05TZ0lycHQiLCA0LCA2MCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNNTVVfTlNnSXJwdCBpbnRlcnJ1cHQgZmxhZ3MiLCA0 LCA2NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlNNTVVfTlNn Q2ZnSXJwdCIsIDQsIDY4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAg e0wiU01NVV9OU2dDZmdJcnB0IGludGVycnVwdCBmbGFncyIsIDQsIDcyLCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFy cmF5IGRlc2NyaWJpbmcgdGhlIFNNTVV2MS8yIE5vZGUgSW50ZXJydXB0IEFycmF5Lg0KPiArKi8N Cj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJbnRlcnJ1cHRBcnJheVBhcnNlcltdID0gew0K PiArICB7TCIgIEludGVycnVwdCBHU0lWIiwgNCwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIiAgRmxhZ3MiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2Ny aWJpbmcgdGhlIElPUlQgSUQgTWFwcGluZy4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9Q QVJTRVIgSW9ydE5vZGVJZE1hcHBpbmdQYXJzZXJbXSA9IHsNCj4gKyAge0wiICBJbnB1dCBiYXNl IiwgNCwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIiAgTnVt YmVyIG9mIElEcyIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCIgIE91dHB1dCBiYXNlIiwgNCwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIiAgT3V0cHV0IHJlZmVyZW5jZSIsIDQsIDEyLCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiICBGbGFncyIsIDQsIDE2LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFy cmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgU01NVXYzIG5vZGUuDQo+ICsqLw0KPiArU1RBVElDIENP TlNUIEFDUElfUEFSU0VSIElvcnROb2RlU21tdVYzUGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0lP UlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0KPiArICB7TCJCYXNlIEFkZHJlc3MiLCA4LCAx NiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbGFncyIsIDQs IDI0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQi LCA0LCAyOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlZBVE9T IEFkZHJlc3MiLCA4LCAzMiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJNb2RlbCIsIDQsIDQwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIkV2ZW50IiwgNCwgNDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJQUkkiLCA0LCA0OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIkdFUlIiLCA0LCA1MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIlN5bmMiLCA0LCA1NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307 DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIElU UyBub2RlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZUl0c1Bh cnNlcltdID0gew0KPiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSICgNCj4gKyAgICBWYWxpZGF0 ZUl0c0lkTWFwcGluZ0NvdW50LA0KPiArICAgIFZhbGlkYXRlSXRzSWRBcnJheVJlZmVyZW5jZQ0K PiArICAgICksDQo+ICsgIHtMIiAgTnVtYmVyIG9mIElUU3MiLCA0LCAxNiwgTCIlZCIsIE5VTEws IChWT0lEKiopJkl0c0NvdW50LCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFS U0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElUUyBJRC4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1Qg QUNQSV9QQVJTRVIgSXRzSWRQYXJzZXJbXSA9IHsNCj4gKyAgeyBMIiAgR0lDIElUUyBJZGVudGlm aWVyIiwgNCwgMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwgfQ0KPiArfTsNCj4gKw0KPiArLyoq IEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgTmFtZXMgQ29tcG9uZW50 IG5vZGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnROb2RlTmFtZWRD b21wb25lbnRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfSU9SVF9OT0RFX0hFQURFUiAoTlVMTCwg TlVMTCksDQo+ICsgIHtMIk5vZGUgRmxhZ3MiLCA0LCAxNiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJNZW1vcnkgYWNjZXNzIHByb3BlcnRpZXMiLCA4LCAyMCwgTCIw eCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJEZXZpY2UgbWVtb3J5IGFk ZHJlc3Mgc2l6ZSBsaW1pdCIsIDEsIDI4LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0N Cj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJ T1JUIFJvb3QgQ29tcGxleCBub2RlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNF UiBJb3J0Tm9kZVJvb3RDb21wbGV4UGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0lPUlRfTk9ERV9I RUFERVIgKE5VTEwsIE5VTEwpLA0KPiArICB7TCJNZW1vcnkgYWNjZXNzIHByb3BlcnRpZXMiLCA4 LCAxNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJBVFMgQXR0 cmlidXRlIiwgNCwgMjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJQQ0kgU2VnbWVudCBudW1iZXIiLCA0LCAyOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBJT1JUIFBNQ0cgbm9kZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIg SW9ydE5vZGVQbWNnUGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5V TEwsIE5VTEwpLA0KPiArICB7TCJCYXNlIEFkZHJlc3MiLCA4LCAxNiwgTCIweCVseCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJPdmVyZmxvdyBpbnRlcnJ1cHQgR1NJViIsIDQs IDI0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTm9kZSByZWZl cmVuY2UiLCA0LCAyOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICt9Ow0K PiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElEIE1hcHBpbmcgYXJyYXkg Y291bnQgZm9yIHRoZSBJVFMgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBD b250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMN Cj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkg dGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtW YWxpZGF0ZUl0c0lkTWFwcGluZ0NvdW50ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgVk9J RCogICAgIENvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAw KSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoTCJcbkVS Uk9SOiBJT1JUIElEIE1hcHBpbmcgY291bnQgbXVzdCBiZSB6ZXJvLiIpOw0KPiArICB9DQo+ICt9 DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFwcGluZyBhcnJh eSBvZmZzZXQgZm9yIHRoZSBJVFMgbm9kZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAg IFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2lu XSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRo aXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFD UEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ ICtWYWxpZGF0ZUl0c0lkQXJyYXlSZWZlcmVuY2UgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiAr ICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsgIGlmICgqKFVJTlQzMiopUHRy ICE9IDApIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50IChM IlxuRVJST1I6IElPUlQgSUQgTWFwcGluZyBvZmZzZXQgbXVzdCBiZSB6ZXJvLiIpOw0KPiArICB9 DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBOb2RlIElk IE1hcHBpbmcgYXJyYXkuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIElPUlQgVGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIE1h cHBpbmdDb3VudCAgIFRoZSBJRCBNYXBwaW5nIGNvdW50Lg0KPiArICBAcGFyYW0gW2luXSBNYXBw aW5nT2Zmc2V0ICBUaGUgb2Zmc2V0IG9mIHRoZSBJRCBNYXBwaW5nIGFycmF5DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBJT1JUIHRhYmxlLg0K PiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcElvcnROb2RlSWRNYXBwaW5ncyAoDQo+ ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nQ291bnQsDQo+ICsgIElO IFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDgqIElkTWFwcGlu Z1B0cjsNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBDSEFS OCAgQnVmZmVyWzQwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkN Cj4gKw0KPiArICBJZE1hcHBpbmdQdHIgPSBQdHIgKyBNYXBwaW5nT2Zmc2V0Ow0KPiArICBJbmRl eCA9IDA7DQo+ICsgIHdoaWxlIChJbmRleCA8IE1hcHBpbmdDb3VudCkgew0KPiArICAgIEFzY2lp U1ByaW50ICgNCj4gKyAgICAgIEJ1ZmZlciwNCj4gKyAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4g KyAgICAgICJJRCBNYXBwaW5nIFslZF0iLA0KPiArICAgICAgSW5kZXgNCj4gKyAgICAgICk7DQo+ ICsgICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICAgIFRSVUUsDQo+ICsg ICAgICAgICAgICAgICA0LA0KPiArICAgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAg ICAgICAgSWRNYXBwaW5nUHRyLA0KPiArICAgICAgICAgICAgICAgMjAsDQo+ICsgICAgICAgICAg ICAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZUlkTWFwcGluZ1BhcnNlcikNCj4gKyAgICAgICAg ICAgICAgICk7DQo+ICsgICAgSWRNYXBwaW5nUHRyICs9IE9mZnNldDsNCj4gKyAgICBJbmRleCsr Ow0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9S VCBTTU1VdjEvMiBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0 aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5n Q291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ09m ZnNldCAgVGhlIG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gKyov DQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBJb3J0Tm9kZVNtbXVWMVYyICgNCj4gKyAgSU4g VUlOVDgqIFB0ciwNCj4gKyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBp bmdDb3VudCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCj4gKyAgKQ0KPiArew0KPiAr ICBVSU5UMzIgSW5kZXg7DQo+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ICsgIENIQVI4ICBCdWZmZXJb NTBdOyAgLy8gVXNlZCBmb3IgQXNjaWlOYW1lIHBhcmFtIG9mIFBhcnNlQWNwaQ0KPiArDQo+ICsg IFVJTlQ4KiBBcnJheVB0cjsNCj4gKw0KPiArICBQYXJzZUFjcGkgKA0KPiArICAgIFRSVUUsDQo+ ICsgICAgMiwNCj4gKyAgICAiU01NVXYxIG9yIFNNTVV2MiBOb2RlIiwNCj4gKyAgICBQdHIsDQo+ ICsgICAgTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2RlU21tdVYxVjJQYXJz ZXIpDQo+ICsgICAgKTsNCj4gKw0KPiArICBBcnJheVB0ciA9IFB0ciArICpJbnRlcnJ1cHRDb250 ZXh0T2Zmc2V0Ow0KPiArICBJbmRleCA9IDA7DQo+ICsgIHdoaWxlIChJbmRleCA8ICpJbnRlcnJ1 cHRDb250ZXh0Q291bnQpIHsNCj4gKyAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICBCdWZmZXIs DQo+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ICsgICAgICAiQ29udGV4dCBJbnRlcnJ1cHRz IEFycmF5IFslZF0iLA0KPiArICAgICAgSW5kZXgNCj4gKyAgICAgICk7DQo+ICsgICAgT2Zmc2V0 ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAg ICA0LA0KPiArICAgICAgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgICAgICAgQXJyYXlQ dHIsDQo+ICsgICAgICAgICAgICAgICA4LA0KPiArICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFN UyAoSW50ZXJydXB0QXJyYXlQYXJzZXIpDQo+ICsgICAgICAgICAgICAgICApOw0KPiArICAgIEFy cmF5UHRyICs9IE9mZnNldDsNCj4gKyAgICBJbmRleCsrOw0KPiArICB9DQo+ICsNCj4gKyAgQXJy YXlQdHIgPSBQdHIgKyAqUG11SW50ZXJydXB0T2Zmc2V0Ow0KPiArICBJbmRleCA9IDA7DQo+ICsg IHdoaWxlIChJbmRleCA8ICpQbXVJbnRlcnJ1cHRDb3VudCkgew0KPiArICAgIEFzY2lpU1ByaW50 ICgNCj4gKyAgICAgIEJ1ZmZlciwNCj4gKyAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAg ICJQTVUgSW50ZXJydXB0cyBBcnJheSBbJWRdIiwNCj4gKyAgICAgIEluZGV4DQo+ICsgICAgICAp Ow0KPiArICAgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgICBUUlVFLA0K PiArICAgICAgICAgICAgICAgNCwNCj4gKyAgICAgICAgICAgICAgIEJ1ZmZlciwNCj4gKyAgICAg ICAgICAgICAgIEFycmF5UHRyLA0KPiArICAgICAgICAgICAgICAgOCwNCj4gKyAgICAgICAgICAg ICAgIFBBUlNFUl9QQVJBTVMgKEludGVycnVwdEFycmF5UGFyc2VyKQ0KPiArICAgICAgICAgICAg ICAgKTsNCj4gKyAgICBBcnJheVB0ciArPSBPZmZzZXQ7DQo+ICsgICAgSW5kZXgrKzsNCj4gKyAg fQ0KPiArDQo+ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50ICE9IDApIHsNCj4gKyAgICBEdW1w SW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIFNN TVV2MyBub2RlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAg ICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQg ICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ09mZnNldCAg VGhlIG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gKyovDQo+ICtT VEFUSUMNCj4gK1ZPSUQNCj4gK0R1bXBJb3J0Tm9kZVNtbXVWMyAoDQo+ICsgIElOIFVJTlQ4KiBQ dHIsDQo+ICsgIElOIFVJTlQxNiBMZW5ndGgsDQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nQ291bnQs DQo+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ICsgICkNCj4gK3sNCj4gKyAgUGFyc2VB Y3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAgIDIsDQo+ICsgICAgIlNNTVVWMyBOb2RlIiwNCj4g KyAgICBQdHIsDQo+ICsgICAgTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2Rl U21tdVYzUGFyc2VyKQ0KPiArICAgICk7DQo+ICsNCj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291 bnQgIT0gMCkgew0KPiArICAgIER1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKFB0ciwgTWFwcGluZ0Nv dW50LCBNYXBwaW5nT2Zmc2V0KTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5j dGlvbiBwYXJzZXMgdGhlIElPUlQgSVRTIG5vZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBh cmFtIFtpbl0gTGVuZ3RoICAgICAgICAgTGVuZ3RoIG9mIHRoZSBidWZmZXIuDQo+ICsqLw0KPiAr U1RBVElDDQo+ICtWT0lEDQo+ICtEdW1wSW9ydE5vZGVJdHMgKA0KPiArICBJTiBVSU5UOCogUHRy LA0KPiArICBJTiBVSU5UMTYgTGVuZ3RoDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIE9mZnNl dDsNCj4gKyAgVUlOVDMyIEluZGV4Ow0KPiArICBVSU5UOCogSXRzSWRQdHI7DQo+ICsgIENIQVI4 ICBCdWZmZXJbODBdOyAgLy8gVXNlZCBmb3IgQXNjaWlOYW1lIHBhcmFtIG9mIFBhcnNlQWNwaQ0K PiArDQo+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4g KyAgICAgICAgICAgICAyLA0KPiArICAgICAgICAgICAgICJJVFMgTm9kZSIsDQo+ICsgICAgICAg ICAgICAgUHRyLA0KPiArICAgICAgICAgICAgIExlbmd0aCwNCj4gKyAgICAgICAgICAgICBQQVJT RVJfUEFSQU1TIChJb3J0Tm9kZUl0c1BhcnNlcikNCj4gKyAgICAgICAgICAgICApOw0KPiArDQo+ ICsgIEl0c0lkUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiArICBJbmRleCA9IDA7DQo+ICsgIHdoaWxl IChJbmRleCA8ICpJdHNDb3VudCkgew0KPiArICAgIEFzY2lpU1ByaW50ICgNCj4gKyAgICAgIEJ1 ZmZlciwNCj4gKyAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICJHSUMgSVRTIElkZW50 aWZpZXIgQXJyYXkgWyVkXSIsDQo+ICsgICAgICBJbmRleA0KPiArICAgICAgKTsNCj4gKyAgICBP ZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAg ICAgICAgIDQsDQo+ICsgICAgICAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgICAgICBJ dHNJZFB0ciwNCj4gKyAgICAgICAgICAgICAgIDQsDQo+ICsgICAgICAgICAgICAgICBQQVJTRVJf UEFSQU1TIChJdHNJZFBhcnNlcikNCj4gKyAgICAgICAgICAgICAgICk7DQo+ICsgICAgSXRzSWRQ dHIgKz0gT2Zmc2V0Ow0KPiArICAgIEluZGV4Kys7DQo+ICsgIH0NCj4gKw0KPiArICAvLyBOb3Rl OiBJVFMgZG9lcyBub3QgaGF2ZSB0aGUgSUQgTWFwcGluZ3MgQXJyYXkNCj4gK30NCj4gKw0KPiAr LyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIE5hbWVkIENvbXBvbmVudCBub2RlLg0K PiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBv ZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFw cGluZyBjb3VudC4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ09mZnNldCAgVGhlIG9mZnNldCBv ZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm cm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZP SUQNCj4gK0R1bXBJb3J0Tm9kZU5hbWVkQ29tcG9uZW50ICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwN Cj4gKyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4g KyAgSU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgT2Zm c2V0Ow0KPiArICBVSU5UMzIgSW5kZXg7DQo+ICsgIFVJTlQ4KiBEZXZpY2VOYW1lUHRyOw0KPiAr ICBVSU5UMzIgRGV2aWNlTmFtZUxlbmd0aDsNCj4gKw0KPiArICBPZmZzZXQgPSBQYXJzZUFjcGkg KA0KPiArICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgMiwNCj4gKyAgICAgICAg ICAgICAiTmFtZWQgQ29tcG9uZW50IE5vZGUiLA0KPiArICAgICAgICAgICAgIFB0ciwNCj4gKyAg ICAgICAgICAgICBMZW5ndGgsDQo+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5v ZGVOYW1lZENvbXBvbmVudFBhcnNlcikNCj4gKyAgICAgICAgICAgICApOw0KPiArDQo+ICsgIERl dmljZU5hbWVQdHIgPSBQdHIgKyBPZmZzZXQ7DQo+ICsgIC8vIEVzdGltYXRlIHRoZSBEZXZpY2Ug TmFtZSBsZW5ndGgNCj4gKyAgRGV2aWNlTmFtZUxlbmd0aCA9IExlbmd0aCAtIE9mZnNldCAtIChN YXBwaW5nQ291bnQgKiAyMCk7DQo+ICsgIFByaW50RmllbGROYW1lICgyLCBMIkRldmljZSBPYmpl Y3QgTmFtZSIpOw0KPiArICBJbmRleCA9IDA7DQo+ICsgIHdoaWxlICgoSW5kZXggPCBEZXZpY2VO YW1lTGVuZ3RoKSAmJiAoRGV2aWNlTmFtZVB0cltJbmRleF0gIT0gMCkpIHsNCj4gKyAgICBQcmlu dCAoTCIlYyIsIERldmljZU5hbWVQdHJbSW5kZXgrK10pOw0KPiArICB9DQo+ICsgIFByaW50IChM IlxuIik7DQo+ICsNCj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgIT0gMCkgew0KPiArICAg IER1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKFB0ciwgTWFwcGluZ0NvdW50LCBNYXBwaW5nT2Zmc2V0 KTsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElP UlQgUm9vdCBDb21wbGV4IG5vZGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0g TGVuZ3RoICAgICAgICAgTGVuZ3RoIG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIE1h cHBpbmdDb3VudCAgIFRoZSBJRCBNYXBwaW5nIGNvdW50Lg0KPiArICBAcGFyYW0gW2luXSBNYXBw aW5nT2Zmc2V0ICBUaGUgb2Zmc2V0IG9mIHRoZSBJRCBNYXBwaW5nIGFycmF5DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBJT1JUIHRhYmxlLg0K PiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcElvcnROb2RlUm9vdENvbXBsZXggKA0K PiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJTiBVSU5UMTYgTGVuZ3RoLA0KPiArICBJTiBVSU5U MzIgTWFwcGluZ0NvdW50LA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiArICApDQo+ ICt7DQo+ICsgIFBhcnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAyLA0KPiArICAgICJS b290IENvbXBsZXggTm9kZSIsDQo+ICsgICAgUHRyLA0KPiArICAgIExlbmd0aCwNCj4gKyAgICBQ QVJTRVJfUEFSQU1TIChJb3J0Tm9kZVJvb3RDb21wbGV4UGFyc2VyKQ0KPiArICAgICk7DQo+ICsN Cj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgIT0gMCkgew0KPiArICAgIER1bXBJb3J0Tm9k ZUlkTWFwcGluZ3MgKFB0ciwgTWFwcGluZ0NvdW50LCBNYXBwaW5nT2Zmc2V0KTsNCj4gKyAgfQ0K PiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgUE1DRyBub2Rl Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0 aCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQg TWFwcGluZyBjb3VudC4NCj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ09mZnNldCAgVGhlIG9mZnNl dCBvZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gKyovDQo+ICtTVEFUSUMNCj4g K1ZPSUQNCj4gK0R1bXBJb3J0Tm9kZVBtY2cgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJ TiBVSU5UMTYgTGVuZ3RoLA0KPiArICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50LA0KPiArICBJTiBV SU5UMzIgTWFwcGluZ09mZnNldA0KPiArKQ0KPiArew0KPiArICBQYXJzZUFjcGkgKA0KPiArICAg IFRSVUUsDQo+ICsgICAgMiwNCj4gKyAgICAiUE1DRyBOb2RlIiwNCj4gKyAgICBQdHIsDQo+ICsg ICAgTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2RlUG1jZ1BhcnNlcikNCj4g KyAgKTsNCj4gKw0KPiArICBpZiAoKklvcnRJZE1hcHBpbmdDb3VudCAhPSAwKSB7DQo+ICsgICAg RHVtcElvcnROb2RlSWRNYXBwaW5ncyAoUHRyLCBNYXBwaW5nQ291bnQsIE1hcHBpbmdPZmZzZXQp Ow0KPiArICB9DQo+ICsNCj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgPiAxKSB7DQo+ICsg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIkVS Uk9SOiBJRCBtYXBwaW5nIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiAxLiBJZCBNYXBwaW5nIENv dW50ID0lZFxuIiwNCj4gKyAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQNCj4gKyAgICAgICk7DQo+ ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIElP UlQgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNl cyB0aGUgSU9SVCB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKw0K PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGFyc2VzIHRoZSBmb2xsb3dpbmcgbm9kZXM6DQo+ICsg ICAgLSBJVFMgR3JvdXANCj4gKyAgICAtIE5hbWVkIENvbXBvbmVudA0KPiArICAgIC0gUm9vdCBD b21wbGV4DQo+ICsgICAgLSBTTU1VdjEvMg0KPiArICAgIC0gU01NVXYzDQo+ICsgICAgLSBQTUNH DQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhl IEFDUEkgdGFibGUgZmllbGRzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAg ICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiAr ICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxl Lg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFD UEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlJb3J0ICgN Cj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJ TlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9u DQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gKyAgVUlOVDMyIEluZGV4Ow0K PiArICBVSU5UOCogTm9kZVB0cjsNCj4gKw0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0 dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgUGFyc2VBY3BpICgNCj4gKyAgICBUUlVFLA0KPiArICAg IDAsDQo+ICsgICAgIklPUlQiLA0KPiArICAgIFB0ciwNCj4gKyAgICBBY3BpVGFibGVMZW5ndGgs DQo+ICsgICAgUEFSU0VSX1BBUkFNUyAoSW9ydFBhcnNlcikNCj4gKyAgICApOw0KPiArICBPZmZz ZXQgPSAqSW9ydE5vZGVPZmZzZXQ7DQo+ICsgIE5vZGVQdHIgPSBQdHIgKyBPZmZzZXQ7DQo+ICsg IEluZGV4ID0gMDsNCj4gKw0KPiArICB3aGlsZSAoKEluZGV4IDwgKklvcnROb2RlQ291bnQpICYm IChPZmZzZXQgPCBBY3BpVGFibGVMZW5ndGgpKSB7DQo+ICsgICAgLy8gUGFyc2UgdGhlIElPUlQg Tm9kZSBIZWFkZXINCj4gKyAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgRkFMU0UsDQo+ICsgICAg ICAwLA0KPiArICAgICAgIklPUlQgTm9kZSBIZWFkZXIiLA0KPiArICAgICAgTm9kZVB0ciwNCj4g KyAgICAgIDE2LA0KPiArICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVIZWFkZXJQYXJzZXIp DQo+ICsgICAgICApOw0KPiArICAgIGlmICgqSW9ydE5vZGVMZW5ndGggPT0gMCkgew0KPiArICAg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgIFByaW50IChMIkVSUk9SOiBQYXJz ZXIgZXJyb3IuIEludmFsaWQgdGFibGUgZGF0YS5cbiIpOw0KPiArICAgICAgcmV0dXJuOw0KPiAr ICAgIH0NCj4gKw0KPiArICAgIFByaW50RmllbGROYW1lICgyLCBMIiogTm9kZSBPZmZzZXQgKiIp Ow0KPiArICAgIFByaW50IChMIjB4JXhcbiIsIE9mZnNldCk7DQo+ICsNCj4gKyAgICBzd2l0Y2gg KCpJb3J0Tm9kZVR5cGUpIHsNCj4gKyAgICAgIGNhc2UgRUlPUlRfTk9ERV9JVFNfR1JPVVA6DQo+ ICsgICAgICAgIER1bXBJb3J0Tm9kZUl0cyAoDQo+ICsgICAgICAgICAgTm9kZVB0ciwNCj4gKyAg ICAgICAgICAqSW9ydE5vZGVMZW5ndGgNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVh azsNCj4gKyAgICAgIGNhc2UgRUlPUlRfTk9ERV9OQU1FRF9DT01QT05FTlQ6DQo+ICsgICAgICAg IER1bXBJb3J0Tm9kZU5hbWVkQ29tcG9uZW50ICgNCj4gKyAgICAgICAgICBOb2RlUHRyLA0KPiAr ICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwNCj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ0Nv dW50LA0KPiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nT2Zmc2V0DQo+ICsgICAgICAgICAgKTsN Cj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICBjYXNlIEVJT1JUX05PREVfUk9PVF9DT01QTEVY Og0KPiArICAgICAgICBEdW1wSW9ydE5vZGVSb290Q29tcGxleCAoDQo+ICsgICAgICAgICAgTm9k ZVB0ciwNCj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ICsgICAgICAgICAgKklvcnRJ ZE1hcHBpbmdDb3VudCwNCj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ09mZnNldA0KPiArICAg ICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgICAgY2FzZSBFSU9SVF9OT0RFX1NN TVVWMV9WMjoNCj4gKyAgICAgICAgRHVtcElvcnROb2RlU21tdVYxVjIgKA0KPiArICAgICAgICAg IE5vZGVQdHIsDQo+ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoLA0KPiArICAgICAgICAgICpJ b3J0SWRNYXBwaW5nQ291bnQsDQo+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZzZXQNCj4g KyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIGNhc2UgRUlPUlRfTk9E RV9TTU1VVjM6DQo+ICsgICAgICAgIER1bXBJb3J0Tm9kZVNtbXVWMyAoDQo+ICsgICAgICAgICAg Tm9kZVB0ciwNCj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ICsgICAgICAgICAgKklv cnRJZE1hcHBpbmdDb3VudCwNCj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ09mZnNldA0KPiAr ICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgICAgY2FzZSBFSU9SVF9OT0RF X1BNQ0c6DQo+ICsgICAgICAgIER1bXBJb3J0Tm9kZVBtY2cgKA0KPiArICAgICAgICAgIE5vZGVQ dHIsDQo+ICsgICAgICAgICAgKklvcnROb2RlTGVuZ3RoLA0KPiArICAgICAgICAgICpJb3J0SWRN YXBwaW5nQ291bnQsDQo+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZzZXQNCj4gKyAgICAg ICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgIGRlZmF1bHQ6DQo+ICsgICAg ICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgICAgIFByaW50IChMIkVSUk9SOiBV bnN1cHBvcnRlZCBJT1JUIE5vZGUgdHlwZSA9ICVkXG4iLCAqSW9ydE5vZGVUeXBlKTsNCj4gKyAg ICB9IC8vIHN3aXRjaA0KPiArDQo+ICsgICAgTm9kZVB0ciArPSAoKklvcnROb2RlTGVuZ3RoKTsN Cj4gKyAgICBPZmZzZXQgKz0gKCpJb3J0Tm9kZUxlbmd0aCk7DQo+ICsgIH0gLy8gd2hpbGUNCj4g K30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtp bl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtp bl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0K PiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQ SSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSBy ZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRl ciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNl IHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJz ZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtJb3J0UGFyc2VyTGliQ29u c3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdl SGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRh YmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAg ICAgICAgRUZJX0FDUElfNl8yX0lPX1JFTUFQUElOR19UQUJMRV9TSUdOQVRVUkUsDQo+ICsgICAg ICAgICAgIFBhcnNlQWNwaUlvcnQNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoq IERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5k bGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFi bGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZh bCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtJb3J0UGFyc2VyTGliRGVzdHJ1Y3Rv ciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUs DQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4g KyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAg IEVGSV9BQ1BJXzZfMl9JT19SRU1BUFBJTkdfVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAg ICk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL0lvcnQvSW9ydFBhcnNlckxpYi5pbmYgYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0lvcnQvSW9ydFBhcnNl ckxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBlZGJkNGZlNzc4YmQ5YjYwMWUyY2FmM2FjN2Zk MzM2OGQ5OTQ1Zg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyTGliLmluZg0K PiBAQCAtMCwwICsxLDMzIEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChj KSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBh cmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz dHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQN Cj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4g KyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5T RSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJF U0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMj DQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4g KyAgQkFTRV9OQU1FICAgICAgPSBJb3J0UGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0g MzFDRjlBNTAtMEIyQS00RjMzLUJEMkMtMzYwNkUzNUFBOUVGDQo+ICsgIFZFUlNJT05fU1RSSU5H ID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NM QVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IElvcnRQYXJzZXJM aWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IElvcnRQYXJzZXJMaWJEZXN0cnVj dG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBJb3J0UGFyc2VyLmMNCj4gKw0KPiArW1BhY2th Z2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMN Cj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFz c2VzXQ0KPiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQ YXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvTWFkdC9NYWR0UGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWEzMGMwNDE5NTE0NWM4 OGQzOTJkZGNhMTY0YTA2MDYzOWI3NDU2YQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0 UGFyc2VyLmMNCj4gQEAgLTAsMCArMSwzNTggQEANCj4gKy8qKg0KPiArICBNQURUIHRhYmxlIHBh cnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIg dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBh Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vu c2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9i c2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJS QU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1Ig SU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIEFDUEkgNi4y IFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gKyoqLw0KPiArDQo+ ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0K PiArLy8gTG9jYWwgVmFyaWFibGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDgqIE1hZHRJbnRlcnJ1 cHRDb250cm9sbGVyVHlwZTsNCj4gK1NUQVRJQyBDT05TVCBVSU5UOCogTWFkdEludGVycnVwdENv bnRyb2xsZXJMZW5ndGg7DQo+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBB Y3BpSGRySW5mbzsNCj4gKw0KPiArLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMNCj4gK1NUQVRJQw0K PiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZUdJQ0RTeXN0ZW1WZWN0b3JCYXNlICgNCj4g KyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyk7DQo+ICsNCj4g Ky8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBHSUNDIEludGVycnVwdA0K PiArICAgIENvbnRyb2xsZXIgU3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJ X1BBUlNFUiBHaWNDUGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIlZCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIkNQVSBJbnRlcmZhY2UgTnVt YmVyIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkFD UEkgUHJvY2Vzc29yIFVJRCIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJGbGFncyIsIDQsIDEyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUGFya2luZyBQcm90b2NvbCBWZXJzaW9uIiwgNCwgMTYsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlBlcmZvcm1hbmNlIEludGVycnVw dCBHU0lWIiwgNCwgMjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7 TCJQYXJrZWQgQWRkcmVzcyIsIDgsIDI0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIlBoeXNpY2FsIEJhc2UgQWRkcmVzcyIsIDgsIDMyLCBMIjB4JWx4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdJQ1YiLCA4LCA0MCwgTCIweCVseCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJHSUNIIiwgOCwgNDgsIEwiMHglbHgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiVkdJQyBNYWludGVuYW5jZSBpbnRlcnJ1 cHQiLCA0LCA1NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkdJ Q1IgQmFzZSBBZGRyZXNzIiwgOCwgNjAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiTVBJRFIiLCA4LCA2OCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJQcm9jZXNzb3IgUG93ZXIgRWZmaWNpZW5jeSBDbGFzcyIsIDEsIDc2LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiArICAgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVk IiwgMywgNzcsIEwiJXggJXggJXgiLCBEdW1wM0NoYXJzLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiAr fTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQ0Qg SW50ZXJydXB0DQo+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElD IENPTlNUIEFDUElfUEFSU0VSIEdpY0RQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAx LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwg MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiR0lDIElE IiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBoeXNp Y2FsIEJhc2UgQWRkcmVzcyIsIDgsIDgsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiU3lzdGVtIFZlY3RvciBCYXNlIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5V TEwsDQo+ICsgICAgVmFsaWRhdGVHSUNEU3lzdGVtVmVjdG9yQmFzZSwgTlVMTH0sDQo+ICsgIHtM IkdJQyBWZXJzaW9uIiwgMSwgMjAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g KyAge0wiUmVzZXJ2ZWQiLCAzLCAyMSwgTCIleCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5V TEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3Jp YmluZyB0aGUgTVNJIEZyYW1lIEludGVycnVwdA0KPiArICAgIENvbnRyb2xsZXIgU3RydWN0dXJl Lg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHaWNNU0lGcmFtZVBhcnNlcltd ID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gKw0KPiArICB7TCJNU0kgRnJhbWUgSUQiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUGh5c2ljYWwgQmFzZSBBZGRyZXNzIiwgOCwgOCwg TCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbGFncyIsIDQsIDE2 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJTUEkgQ291 bnQiLCAyLCAyMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTUEkg QmFzZSIsIDIsIDIyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4g Kw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQ1IgSW50ZXJy dXB0DQo+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNU IEFDUElfUEFSU0VSIEdpY1JQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVk IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiRGlzY292ZXJ5IFJh bmdlIEJhc2UgQWRkcmVzcyIsIDgsIDQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiAr ICAgTlVMTH0sDQo+ICsgIHtMIkRpc2NvdmVyeSBSYW5nZSBMZW5ndGgiLCA0LCAxMiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BB UlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBHSUMgSVRTIEludGVycnVwdA0KPiArICAgIENvbnRy b2xsZXIgU3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHaWNJ VFNQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVkIiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wiR0lDIElUUyBJRCIsIDQsIDQsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQaHlzaWNhbCBCYXNlIEFkZHJlc3Mi LCA4LCA4LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2Vy dmVkIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiAr DQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBNQURUIFRh YmxlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBNYWR0UGFyc2VyW10gPSB7 DQo+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiArICB7TCJMb2NhbCBJ bnRlcnJ1cHQgQ29udHJvbGxlciBBZGRyZXNzIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsDQo+ICsgICBOVUxMfSwNCj4gKyAge0wiRmxhZ3MiLCA0LCA0MCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBh cnJheSBkZXNjcmliaW5nIHRoZSBNQURUIEludGVycnVwdA0KPiArICAgIENvbnRyb2xsZXIgU3Ry dWN0dXJlIEhlYWRlciBTdHJ1Y3R1cmUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFS U0VSIE1hZHRJbnRlcnJ1cHRDb250cm9sbGVySGVhZGVyUGFyc2VyW10gPSB7DQo+ICsgIHtOVUxM LCAxLCAwLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGUs IE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAxLCBOVUxMLCBOVUxMLCAoVk9JRCoq KSZNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwgTlVMTCwNCj4gKyAgIE5VTEx9LA0KPiAr ICB7TCJSZXNlcnZlZCIsIDIsIDIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9 Ow0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFN5c3RlbSBWZWN0b3Ig QmFzZSBpbiB0aGUgR0lDRC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0 IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAg ICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUg aGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0 ZUdJQ0RTeXN0ZW1WZWN0b3JCYXNlICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9J RCogIENvbnRleHQNCj4gKykNCj4gK3sNCj4gKyAgaWYgKCooVUlOVDMyKilQdHIgIT0gMCkgew0K PiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAg TCJcbkVSUk9SOiBTeXN0ZW0gVmVjdG9yIEJhc2UgbXVzdCBiZSB6ZXJvLiINCj4gKyAgICApOw0K PiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBN QURUIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJz ZXMgdGhlIE1BRFQgdGFibGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMu DQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBjdXJyZW50bHkgcGFyc2VzIHRoZSBmb2xsb3dpbmcg SW50ZXJydXB0IENvbnRyb2xsZXINCj4gKyAgU3RydWN0dXJlczoNCj4gKyAgICAtIEdJQ0MNCj4g KyAgICAtIEdJQ0QNCj4gKyAgICAtIEdJQyBNU0kgRnJhbWUNCj4gKyAgICAtIEdJQ1INCj4gKyAg ICAtIEdJQyBJVFMNCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRh dGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gVHJh Y2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBi dWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhl IEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lv biBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1BhcnNl QWNwaU1hZHQgKA0KPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCogIFB0ciwN Cj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAgQWNwaVRh YmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiArICBVSU5U OCogSW50ZXJydXB0Q29udG9sbGVyUHRyOw0KPiArICBVSU5UMzIgR0lDRENvdW50ID0gMDsNCj4g Kw0KPiArICBpZiAoIVRyYWNlKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAg T2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAg ICAgIDAsDQo+ICsgICAgICAgICAgICAgIk1BRFQiLA0KPiArICAgICAgICAgICAgIFB0ciwNCj4g KyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgICAgICAgICAgICAgUEFSU0VSX1BB UkFNUyAoTWFkdFBhcnNlcikNCj4gKyAgICAgICAgICAgICApOw0KPiArICBJbnRlcnJ1cHRDb250 b2xsZXJQdHIgPSBQdHIgKyBPZmZzZXQ7DQo+ICsNCj4gKyAgd2hpbGUgKE9mZnNldCA8IEFjcGlU YWJsZUxlbmd0aCkgew0KPiArICAgIC8vIFBhcnNlIEludGVycnVwdCBDb250cm9sbGVyIFN0cnVj dHVyZSB0byBvYnRhaW4gTGVuZ3RoLg0KPiArICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICBGQUxT RSwNCj4gKyAgICAgIDAsDQo+ICsgICAgICBOVUxMLA0KPiArICAgICAgSW50ZXJydXB0Q29udG9s bGVyUHRyLA0KPiArICAgICAgMiwgIC8vICBMZW5ndGggaXMgMSBieXRlIGF0IG9mZnNldCAxDQo+ ICsgICAgICBQQVJTRVJfUEFSQU1TIChNYWR0SW50ZXJydXB0Q29udHJvbGxlckhlYWRlclBhcnNl cikNCj4gKyAgICAgICk7DQo+ICsNCj4gKyAgICBpZiAoKChPZmZzZXQgKyAoKk1hZHRJbnRlcnJ1 cHRDb250cm9sbGVyTGVuZ3RoKSkgPiBBY3BpVGFibGVMZW5ndGgpIHx8DQo+ICsgICAgICAgICgq TWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGggPCA0KSkgew0KPiArICAgICAgSW5jcmVtZW50 RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgIFByaW50ICgNCj4gKyAgICAgICAgIEwiRVJST1I6IElu dmFsaWQgSW50ZXJydXB0IENvbnRyb2xsZXIgTGVuZ3RoLCINCj4gKyAgICAgICAgICAiIFR5cGUg PSAlZCwgTGVuZ3RoID0gJWRcbiIsDQo+ICsgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xs ZXJUeXBlLA0KPiArICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoDQo+ICsg ICAgICAgICApOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgc3dpdGNo ICgqTWFkdEludGVycnVwdENvbnRyb2xsZXJUeXBlKSB7DQo+ICsgICAgICBjYXNlIEVGSV9BQ1BJ XzZfMl9HSUM6IHsNCj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0K PiArICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgIkdJQ0MiLA0KPiArICAgICAgICAgIEludGVy cnVwdENvbnRvbGxlclB0ciwNCj4gKyAgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJM ZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoR2ljQ1BhcnNlcikNCj4gKyAgICAg ICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgY2Fz ZSBFRklfQUNQSV82XzJfR0lDRDogew0KPiArICAgICAgICBpZiAoKytHSUNEQ291bnQgPiAxKSB7 DQo+ICsgICAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgICAgICBQcmlu dCAoDQo+ICsgICAgICAgICAgICBMIkVSUk9SOiBPbmx5IG9uZSBHSUNEIG11c3QgYmUgcHJlc2Vu dCwiDQo+ICsgICAgICAgICAgICAgICIgR0lDRENvdW50ID0gJWRcbiIsDQo+ICsgICAgICAgICAg ICBHSUNEQ291bnQNCj4gKyAgICAgICAgICAgICk7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgICAg UGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsgICAg ICAgICAgIkdJQ0QiLA0KPiArICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gKyAg ICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsDQo+ICsgICAgICAgICAgUEFS U0VSX1BBUkFNUyAoR2ljRFBhcnNlcikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVh azsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgY2FzZSBFRklfQUNQSV82XzJfR0lDX01TSV9G UkFNRTogew0KPiArICAgICAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsg ICAgICAgICAgMiwNCj4gKyAgICAgICAgICAiR0lDIE1TSSBGcmFtZSIsDQo+ICsgICAgICAgICAg SW50ZXJydXB0Q29udG9sbGVyUHRyLA0KPiArICAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJv bGxlckxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHaWNNU0lGcmFtZVBhcnNl cikNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKyAgICAgIH0NCj4gKw0K PiArICAgICAgY2FzZSBFRklfQUNQSV82XzJfR0lDUjogew0KPiArICAgICAgICBQYXJzZUFjcGkg KA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgMiwNCj4gKyAgICAgICAgICAiR0lD UiIsDQo+ICsgICAgICAgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyLA0KPiArICAgICAgICAgICpN YWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1T IChHaWNSUGFyc2VyKQ0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAg ICAgfQ0KPiArDQo+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNfSVRTOiB7DQo+ICsgICAg ICAgIFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAyLA0KPiAr ICAgICAgICAgICJHSUMgSVRTIiwNCj4gKyAgICAgICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIs DQo+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoLA0KPiArICAgICAg ICAgIFBBUlNFUl9QQVJBTVMgKEdpY0lUU1BhcnNlcikNCj4gKyAgICAgICAgICApOw0KPiArICAg ICAgICBicmVhazsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgZGVmYXVsdDogew0KPiArICAg ICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgICAgICBQcmludCAoDQo+ICsgICAg ICAgICAgTCJFUlJPUjogVW5rbm93biBJbnRlcnJ1cHQgQ29udHJvbGxlciBTdHJ1Y3R1cmUsIg0K PiArICAgICAgICAgICAgIiBUeXBlID0gJWQsIExlbmd0aCA9ICVkXG4iLA0KPiArICAgICAgICAg ICpNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGUsDQo+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1 cHRDb250cm9sbGVyTGVuZ3RoDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgIH0NCj4gKyAgICB9 IC8vIHN3aXRjaA0KPiArDQo+ICsgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyICs9ICpNYWR0SW50 ZXJydXB0Q29udHJvbGxlckxlbmd0aDsNCj4gKyAgICBPZmZzZXQgKz0gKk1hZHRJbnRlcnJ1cHRD b250cm9sbGVyTGVuZ3RoOw0KPiArICB9IC8vIHdoaWxlDQo+ICt9DQo+ICsNCj4gKy8qKiBSZWdp c3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhl IGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9p bnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfQUxS RUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiArICBA cmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiArKi8NCj4gK0VGSV9T VEFUVVMNCj4gK0VGSUFQSQ0KPiArTWFkdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gKyAgSU4g Q09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gICAg ICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9N VUxUSVBMRV9BUElDX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgICAgICAg UGFyc2VBY3BpTWFkdA0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsvKiogRGVyZWdp c3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhl IGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9p bnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9O T1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gKyovDQo+ ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK01hZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4g KyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAg SU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiArICApDQo+ ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FD UElfNl8yX01VTFRJUExFX0FQSUNfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAg ICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01hZHQvTWFkdFBhcnNlckxpYi5pbmYgYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01hZHQvTWFk dFBhcnNlckxpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGIyYjYwNDJiYmZiNTEwODMxZTg2NmFh MWRjNDMzNDY3ZGFhYzQ5ZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0UGFyc2VyTGli LmluZg0KPiBAQCAtMCwwICsxLDMzIEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJp Z2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQg Y29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRo aXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91 bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5w aHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0Qg TElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4N Cj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAw MTkNCj4gKyAgQkFTRV9OQU1FICAgICAgPSBNYWR0UGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAg ICAgID0gQ0EwQTZBRTEtMTFBMS00OEM4LUE1NjEtRDJDRkE5MTc5NjJBDQo+ICsgIFZFUlNJT05f U1RSSU5HID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJS QVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IE1hZHRQ YXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiArICBERVNUUlVDVE9SICAgICA9IE1hZHRQYXJzZXJMaWJE ZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0KPiArICBNYWR0UGFyc2VyLmMNCj4gKw0KPiAr W1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBr Zy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJh cnlDbGFzc2VzXQ0KPiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiBkaWZmIC0tZ2l0IGEv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NY2Zn L01jZmdQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBiZmVjOTAx YTdjNTA0ZTcwMjJjMjFhYWZiYWM0Yzg3NWQ4ODg2Yw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNm Zy9NY2ZnUGFyc2VyLmMNCj4gQEAgLTAsMCArMSwxMzkgQEANCj4gKy8qKg0KPiArICBNQ0ZHIHRh YmxlIHBhcnNlcg0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2Nv bXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUg dW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3 aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhl IGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNl bnNlcy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRF RCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9V VCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJF U1MgT1IgSU1QTElFRC4NCj4gKw0KPiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gKyAgICAtIFBD SSBGaXJtd2FyZSBTcGVjaWZpY2F0aW9uIC0gUmV2aXNpb24gMy4yLCBKYW51YXJ5IDI2LCAyMDE1 Lg0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4g KyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlW aWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJs ZVBhcnNlci5oPg0KPiArDQo+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4gK1NUQVRJQyBBQ1BJX0RF U0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiogQW4gQUNQSV9Q QVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBNQ0ZHIFRhYmxlLg0KPiArKi8NCj4gK1NU QVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBNY2ZnUGFyc2VyW10gPSB7DQo+ICsgIFBBUlNFX0FDUElf SEVBREVSICgmQWNwaUhkckluZm8pLA0KPiArICB7TCJSZXNlcnZlZCIsIDgsIDM2LCBMIjB4JWx4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICt9Ow0KPiArDQo+ICsvKiogQW4gQUNQSV9Q QVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gU3BhY2UNCj4gKyAg ICBCYXNlIEFkZHJlc3Mgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BB UlNFUiBQY2lDZmdTcGFjZUJhc2VBZGRyUGFyc2VyW10gPSB7DQo+ICsgIHtMIkJhc2UgQWRkcmVz cyIsIDgsIDAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUENJ IFNlZ21lbnQgR3JvdXAgTm8uIiwgMiwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIlN0YXJ0IEJ1cyBOby4iLCAxLCAxMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIkVuZCBCdXMgTm8uIiwgMSwgMTEsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDQsIDEyLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIFRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSBBQ1BJIE1DRkcgdGFibGUuDQo+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0 aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgTUNGRyB0YWJsZSBhbmQNCj4gKyAgdHJhY2VzIHRoZSBB Q1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMg dmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgQHBhcmFtIFtp bl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGgg b2YgdGhlIEFDUEkgdGFibGUuDQo+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBS ZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4g K1BhcnNlQWNwaU1jZmcgKA0KPiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiArICBJTiBVSU5UOCog IFB0ciwNCj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ICsgIElOIFVJTlQ4ICAg QWNwaVRhYmxlUmV2aXNpb24NCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgT2Zmc2V0Ow0KPiAr ICBVSU5UMzIgUGNpQ2ZnT2Zmc2V0Ow0KPiArICBVSU5UOCogUGNpQ2ZnU3BhY2VQdHI7DQo+ICsN Cj4gKyAgaWYgKCFUcmFjZSkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIE9m ZnNldCA9IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAg ICAwLA0KPiArICAgICAgICAgICAgICJNQ0ZHIiwNCj4gKyAgICAgICAgICAgICBQdHIsDQo+ICsg ICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJB TVMgKE1jZmdQYXJzZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBQY2lDZmdTcGFj ZVB0ciA9IFB0ciArIE9mZnNldDsNCj4gKw0KPiArICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxl TGVuZ3RoKSB7DQo+ICsgICAgUGNpQ2ZnT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gKyAgICAgICAg ICAgICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAyLA0KPiArICAgICAg ICAgICAgICAgICAgICAgIlBDSSBDb25maWd1cmF0aW9uIFNwYWNlIiwNCj4gKyAgICAgICAgICAg ICAgICAgICAgIFBjaUNmZ1NwYWNlUHRyLA0KPiArICAgICAgICAgICAgICAgICAgICAgKEFjcGlU YWJsZUxlbmd0aCAtIE9mZnNldCksDQo+ICsgICAgICAgICAgICAgICAgICAgICBQQVJTRVJfUEFS QU1TIChQY2lDZmdTcGFjZUJhc2VBZGRyUGFyc2VyKQ0KPiArICAgICAgICAgICAgICAgICAgICAg KTsNCj4gKyAgICBQY2lDZmdTcGFjZVB0ciArPSBQY2lDZmdPZmZzZXQ7DQo+ICsgICAgT2Zmc2V0 ICs9IFBjaUNmZ09mZnNldDsNCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsvKiogUmVnaXN0ZXIgdGhl IHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUg dG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8g dGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RB UlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJ X0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gKyAgQHJldHZhbCBF RklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ ICtFRklBUEkNCj4gK01jZmdQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVG SV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9T WVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1 cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJfUENJX0VYUFJF U1NfTUVNT1JZX01BUFBFRF9DT05GSUdVUkFUSU9OX1NQQUNFX0JBU0VfQUREUkVTU19ERVNDUklQ VElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ICsgICAgICAgICAgIFBhcnNlQWNwaU1jZmcNCj4gKyAg ICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4g Kw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdl Lg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBU YWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2Vy IGlzIGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhl IHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJ QVBJDQo+ICtNY2ZnUGFyc2VyTGliRGVzdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1f VEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVy ZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9QQ0lfRVhQUkVTU19N RU1PUllfTUFQUEVEX0NPTkZJR1VSQVRJT05fU1BBQ0VfQkFTRV9BRERSRVNTX0RFU0NSSVBUSU9O X1RBQkxFX1NJR05BVFVSRQ0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NY2Zn L01jZmdQYXJzZXJMaWIuaW5mIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01jZmdQYXJzZXJMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LjQ3ZDFkNTZhNTI4OTZlYzdkNDAyMWU4ZTIzYWVmMmFmZWYyNTZjYjMNCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL01jZmcvTWNmZ1BhcnNlckxpYi5pbmYNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArIyMg QGZpbGUNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUg YWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWls YWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5v cmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBE SVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4g KyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAg SU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgID0gTWNmZ1Bh cnNlckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9IDQ3RThDMTBELTZDRTAtNDU1Qy1BN0JDLTgz QTdCMDg5NUM5Rg0KPiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiArICBNT0RVTEVfVFlQRSAg ICA9IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4g KyAgQ09OU1RSVUNUT1IgICAgPSBNY2ZnUGFyc2VyTGliQ29uc3RydWN0b3INCj4gKyAgREVTVFJV Q1RPUiAgICAgPSBNY2ZnUGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlc10NCj4g KyAgTWNmZ1BhcnNlci5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4gKyAgTWRlUGtnL01kZVBrZy5k ZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1 bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWINCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlci5jDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLmZlYzU1MDhkMjIyZWYxNGU5OWMyZDM5MmEwMDMzZTZjNmQ1ZmFhM2UN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlci5jDQo+IEBAIC0wLDAgKzEsMjE0 IEBADQo+ICsvKioNCj4gKyAgUlNEUCB0YWJsZSBwYXJzZXINCj4gKw0KPiArICBDb3B5cmlnaHQg KGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArICBo dHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAg VEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJB UyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMg T0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBS ZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEs IFNlcHRlbWJlciAyMDE3DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxp Yi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiArI2lu Y2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ICsNCj4gKy8vIExv Y2FsIFZhcmlhYmxlcw0KPiArU1RBVElDIENPTlNUIFVJTlQ2NCogWHNkdEFkZHJlc3M7DQo+ICsN Cj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgUlNEVCBBZGRyZXNzLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxk IGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNp ZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxk IGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElD DQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1ZhbGlkYXRlUnNkdEFkZHJlc3MgKA0KPiArICBJTiBV SU5UOCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKiog VGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFhTRFQgQWRkcmVzcy4NCj4gKw0KPiArICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0K PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZv cm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBv aW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9J RA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZVhzZHRBZGRyZXNzICgNCj4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIEFuIGFycmF5 IGRlc2NyaWJpbmcgdGhlIEFDUEkgUlNEUCBUYWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1Qg QUNQSV9QQVJTRVIgUnNkcFBhcnNlcltdID0gew0KPiArICB7TCJTaWduYXR1cmUiLCA4LCAwLCBO VUxMLCBEdW1wOENoYXJzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQ2hlY2tzdW0iLCAx LCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiT2VtIElEIiwg NiwgOSwgTlVMTCwgRHVtcDZDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJldmlz aW9uIiwgMSwgMTUsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUlNE VCBBZGRyZXNzIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlUnNkdEFkZHJl c3MsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCA0LCAyMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiArICB7TCJYU0RUIEFkZHJlc3MiLCA4LCAyNCwgTCIweCVseCIsIE5VTEws IChWT0lEKiopJlhzZHRBZGRyZXNzLA0KPiArICAgVmFsaWRhdGVYc2R0QWRkcmVzcywgTlVMTH0s DQo+ICsgIHtMIkV4dGVuZGVkIENoZWNrc3VtIiwgMSwgMzIsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDMsIDMzLCBMIiV4ICV4ICV4IiwgRHVt cDNDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHZhbGlkYXRlcyB0aGUgUlNEVCBBZGRyZXNzLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ICsgIEBwYXJh bSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUu Zy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0 aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtWT0lEDQo+ICtFRklB UEkNCj4gK1ZhbGlkYXRlUnNkdEFkZHJlc3MgKA0KPiArICBJTiBVSU5UOCogUHRyLA0KPiArICBJ TiBWT0lEKiAgQ29udGV4dA0KPiArICApDQo+ICt7DQo+ICsjaWYgZGVmaW5lZChNREVfQ1BVX0FS TSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiArICAvLyBSZWZlcmVuY2U6IFNlcnZl ciBCYXNlIEJvb3QgUmVxdWlyZW1lbnRzIFN5c3RlbSBTb2Z0d2FyZSBvbiBBUk0gUGxhdGZvcm1z DQo+ICsgIC8vIFNlY3Rpb246IDQuMi4xLjEgUlNEUA0KPiArICAvLyBSb290IFN5c3RlbSBEZXNj cmlwdGlvbiBQb2ludGVyIChSU0RQKSwgQUNQSSDvv70gNS4yLjUuDQo+ICsgIC8vICAgLSBXaXRo aW4gdGhlIFJTRFAsIHRoZSBSc2R0QWRkcmVzcyBmaWVsZCBtdXN0IGJlIG51bGwgKHplcm8pIGFu ZCB0aGUNCj4gKyAgLy8gICAgIFhzZHRBZGRyZXNzcyBNVVNUIGJlIGEgdmFsaWQsIG5vbi1udWxs LCA2NC1iaXQgdmFsdWUuDQo+ICsgIFVJTlQzMiBSc2R0QWRkciA9ICooVUlOVDMyKilQdHI7DQo+ ICsgIGlmIChSc2R0QWRkciAhPSAwKSB7DQo+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsN Cj4gKyAgICBQcmludCAoDQo+ICsgICAgICBMIlxuRVJST1I6IFJzZHQgQWRkcmVzcyA9IDB4JXAu IFRoaXMgbXVzdCBiZSBOVUxMIG9uIEFSTSBQbGF0Zm9ybXMuIiwNCj4gKyAgICAgIFJzZHRBZGRy DQo+ICsgICAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4gKw0KPiArLyoqIFRoaXMg ZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBYU0RUIEFkZHJlc3MuDQo+ICsNCj4gKyAgQHBhcmFtIFtp bl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAg QHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRp b24gZS5nLiB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVy IHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4g K0VGSUFQSQ0KPiArVmFsaWRhdGVYc2R0QWRkcmVzcyAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyNpZiBkZWZpbmVkKE1ERV9D UFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ICsgIC8vIFJlZmVyZW5jZTog U2VydmVyIEJhc2UgQm9vdCBSZXF1aXJlbWVudHMgU3lzdGVtIFNvZnR3YXJlIG9uIEFSTSBQbGF0 Zm9ybXMNCj4gKyAgLy8gU2VjdGlvbjogNC4yLjEuMSBSU0RQDQo+ICsgIC8vIFJvb3QgU3lzdGVt IERlc2NyaXB0aW9uIFBvaW50ZXIgKFJTRFApLCBBQ1BJIO+/vSA1LjIuNS4NCj4gKyAgLy8gICAt IFdpdGhpbiB0aGUgUlNEUCwgdGhlIFJzZHRBZGRyZXNzIGZpZWxkIG11c3QgYmUgbnVsbCAoemVy bykgYW5kIHRoZQ0KPiArICAvLyAgICAgWHNkdEFkZHJlc3NzIE1VU1QgYmUgYSB2YWxpZCwgbm9u LW51bGwsIDY0LWJpdCB2YWx1ZS4NCj4gKyAgVUlOVDY0IFhzZHRBZGRyID0gKihVSU5UNjQqKVB0 cjsNCj4gKyAgaWYgKFhzZHRBZGRyID09IDApIHsNCj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50 ICgpOw0KPiArICAgIFByaW50ICgNCj4gKyAgICAgIEwiXG5FUlJPUjogWHNkdCBBZGRyZXNzID0g MHglcC4gVGhpcyBtdXN0IG5vdCBiZSBOVUxMIG9uIEFSTSBQbGF0Zm9ybXMuIiwNCj4gKyAgICAg IFhzZHRBZGRyDQo+ICsgICAgICApOw0KPiArICB9DQo+ICsjZW5kaWYNCj4gK30NCj4gKw0KPiAr LyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFJTRFAgdGFibGUuDQo+ICsNCj4gKyAg VGhpcyBmdW5jdGlvbiBpbnZva2VzIHRoZSBwYXJzZXIgZm9yIHRoZSBYU0RUIHRhYmxlLg0KPiAr ICAqIE5vdGUgLSBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHN1cHBvcnQgcGFyc2luZyBvZiBSU0RU IHRhYmxlLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyBhIFJBVyBkdW1w IG9mIHRoZSBBQ1BJIHRhYmxlIGFuZA0KPiArICB2YWxpZGF0ZXMgdGhlIGNoZWNrc3VtLg0KPiAr DQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUg QUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVM ZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3Bp VGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9J RA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlSc2RwICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwN Cj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0K PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgaWYg KFRyYWNlKSB7DQo+ICsgICAgRHVtcFJhdyAoUHRyLCBBY3BpVGFibGVMZW5ndGgpOw0KPiArICAg IFZlcmlmeUNoZWNrc3VtIChUUlVFLCBQdHIsIEFjcGlUYWJsZUxlbmd0aCk7DQo+ICsgIH0NCj4g Kw0KPiArICBQYXJzZUFjcGkgKFRyYWNlLCAwLCAiUlNEUCIsIFB0ciwgQWNwaVRhYmxlTGVuZ3Ro LCBQQVJTRVJfUEFSQU1TIChSc2RwUGFyc2VyKSk7DQo+ICsNCj4gKyAgLy8gVGhpcyBjb2RlIGN1 cnJlbnRseSBzdXBwb3J0cyBwYXJzaW5nIG9mIFhTRFQgdGFibGUgb25seQ0KPiArICAvLyBhbmQg ZG9lcyBub3QgcGFyc2UgdGhlIFJTRFQgdGFibGUuIFBsYXRmb3JtcyBwcm92aWRlIHRoZQ0KPiAr ICAvLyBSU0RUIHRvIGVuYWJsZSBjb21wYXRpYmlsaXR5IHdpdGggQUNQSSAxLjAgb3BlcmF0aW5n IHN5c3RlbXMuDQo+ICsgIC8vIFRoZXJlZm9yZSB0aGUgUlNEVCBzaG91bGQgbm90IGJlIHVzZWQg b24gQVJNIHBsYXRmb3Jtcy4NCj4gKyAgaWYgKCgqWHNkdEFkZHJlc3MpID09IDApIHsNCj4gKyAg ICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiArICAgIFByaW50IChMIkVSUk9SOiBYU0RUIFBv aW50ZXIgaXMgbm90IHNldC5cbiIpOw0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsg IFByb2Nlc3NBY3BpVGFibGUgKChVSU5UOCopKFVJTlROKSgqWHNkdEFkZHJlc3MpKTsNCj4gK30N Cj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g IEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0g IFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiAr ICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBU YWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdp c3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBp cyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRv IHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIu DQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtSc2RwUGFyc2VyTGliQ29uc3Ry dWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFu ZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxl DQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAg ICAgUlNEUF9UQUJMRV9JTkZPLA0KPiArICAgICAgICAgICBQYXJzZUFjcGlSc2RwDQo+ICsgICAg ICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4N Cj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFi bGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBp cyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBw YXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQ SQ0KPiArUnNkcFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExF ICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RB QkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVn aXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBSU0RQX1RBQkxFX0lORk8NCj4gKyAgICAgICAg ICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFyc2VyTGliLmluZiBiL1NoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFy c2VyTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzNiOGVmZGI2NmYwNjc4NjJhZTUwOWQ2NDU3 ODMxOWZjNjNiOWY4DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZXJMaWIuaW5m DQo+IEBAIC0wLDAgKzEsMzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQg KGMpIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArIyAgYXJlIGxp Y2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg b2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1 dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsj ICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsjDQo+ ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04g QU4gIkFTIElTIiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsjIw0KPiAr DQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ICsgIEJB U0VfTkFNRSAgICAgID0gUnNkcFBhcnNlckxpYg0KPiArICBGSUxFX0dVSUQgICAgICA9IDkzNjVD RUIzLTUyREMtNDg4RC05RTJFLUM0RTFFMzA2MkZBOQ0KPiArICBWRVJTSU9OX1NUUklORyA9IDEu MA0KPiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gKyAgTElCUkFSWV9DTEFTUyAg PSBOVUxMfERYRV9EUklWRVINCj4gKyAgQ09OU1RSVUNUT1IgICAgPSBSc2RwUGFyc2VyTGliQ29u c3RydWN0b3INCj4gKyAgREVTVFJVQ1RPUiAgICAgPSBSc2RwUGFyc2VyTGliRGVzdHJ1Y3Rvcg0K PiArDQo+ICtbU291cmNlc10NCj4gKyAgUnNkcFBhcnNlci5jDQo+ICsNCj4gK1tQYWNrYWdlc10N Cj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsg IE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10N Cj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2Vy LmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L1NsaXQvU2xpdFBhcnNlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2YTRjNDE2YWEyNTlhZjE2YWEw Yjc3NmRjYzA1ODYwNGI1YzE3YzINCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNl ci5jDQo+IEBAIC0wLDAgKzEsMTg3IEBADQo+ICsvKioNCj4gKyAgU0xJVCB0YWJsZSBwYXJzZXIN Cj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJp Z2h0cyByZXNlcnZlZC4NCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21w YW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1h eSBiZSBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhF IEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElF UyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ICsNCj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ICsgICAgLSBBQ1BJIDYuMiBTcGVj aWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ICsqKi8NCj4gKw0KPiArI2lu Y2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvUHJp bnRMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxM aWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlW aWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiArDQo+ICsvLyBMb2NhbCBWYXJpYWJsZXMNCj4gK1NU QVRJQyBDT05TVCBVSU5UNjQqIFNsaXRTeXN0ZW1Mb2NhbGl0eUNvdW50Ow0KPiArU1RBVElDIEFD UElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ICsNCj4gKy8qKiBBbiBB Q1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIFNMSVQgdGFibGUuDQo+ICsqLw0K PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNsaXRQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0Vf QUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ICsgIHtMIk51bWJlciBvZiBTeXN0ZW0gTG9j YWxpdGllcyIsIDgsIDM2LCBMIjB4JWx4IiwgTlVMTCwNCj4gKyAgIChWT0lEKiopJlNsaXRTeXN0 ZW1Mb2NhbGl0eUNvdW50LCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4gKw0KPiArLyoqIE1hY3JvIHRv IGdldCB0aGUgdmFsdWUgb2YgYSBTeXN0ZW0gTG9jYWxpdHkNCj4gKyovDQo+ICsjZGVmaW5lIFNM SVRfRUxFTUVOVChQdHIsIGksIGopICooUHRyICsgKGkgKiBMb2NhbGl0eUNvdW50KSArIGopDQo+ ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBTTElUIHRhYmxlLg0KPiAr ICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFNMSVQgdGFi bGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhp cyBmdW5jdGlvbiBhbHNvIHZhbGlkYXRlcyBTeXN0ZW0gTG9jYWxpdGllcyBmb3IgdGhlIGZvbGxv d2luZzoNCj4gKyAgICAtIERpYWdvbmFsIGVsZW1lbnRzIGhhdmUgYSBub3JtYWxpemVkIHZhbHVl IG9mIDEwDQo+ICsgICAgLSBSZWxhdGl2ZSBkaXN0YW5jZSBmcm9tIFN5c3RlbSBMb2NhbGl0eSBh dCBpKk4raiBpcyBzYW1lIGFzDQo+ICsgICAgICBqKk4raQ0KPiArDQo+ICsgIEBwYXJhbSBbaW5d IFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsg IEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgYnVmZmVyLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9m IHRoZSBBQ1BJIHRhYmxlLg0KPiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2 aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQ YXJzZUFjcGlTbGl0ICgNCj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQ dHIsDQo+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFj cGlUYWJsZVJldmlzaW9uDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gKyAg VUlOVDY0IGk7DQo+ICsgIFVJTlQ2NCBqOw0KPiArICBVSU5UNjQgTG9jYWxpdHlDb3VudDsNCj4g KyAgVUlOVDgqIExvY2FsaXR5UHRyOw0KPiArICBDSEFSMTYgQnVmZmVyWzgwXTsgIC8vIFVzZWQg Zm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4gKw0KPiArICBpZiAoIVRyYWNlKSB7 DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgN Cj4gKyAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAg ICAgIlNMSVQiLA0KPiArICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICBBY3BpVGFi bGVMZW5ndGgsDQo+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU2xpdFBhcnNlcikNCj4g KyAgICAgICAgICAgICApOw0KPiArICBMb2NhbGl0eVB0ciA9IFB0ciArIE9mZnNldDsNCj4gKw0K PiArICBMb2NhbGl0eUNvdW50ID0gKlNsaXRTeXN0ZW1Mb2NhbGl0eUNvdW50Ow0KPiArICAvLyBX ZSBvbmx5IHByaW50IHRoZSBMb2NhbGl0aWVzIGlmIHRoZSBjb3VudCBpcyBsZXNzIHRoYW4gMTYN Cj4gKyAgLy8gSWYgdGhlIGxvY2FsaXR5IGNvdW50IGlzIG1vcmUgdGhhbiAxNiB0aGVuIHJlZmVy IHRvIHRoZQ0KPiArICAvLyByYXcgZGF0YSBkdW1wLg0KPiArICBpZiAoTG9jYWxpdHlDb3VudCA8 IDE2KSB7DQo+ICsgICAgVW5pY29kZVNQcmludCAoDQo+ICsgICAgICBCdWZmZXIsDQo+ICsgICAg ICBzaXplb2YgKEJ1ZmZlciksDQo+ICsgICAgICBMIkVudHJ5WzB4JWx4XVsweCVseF0iLA0KPiAr ICAgICAgTG9jYWxpdHlDb3VudCwNCj4gKyAgICAgIExvY2FsaXR5Q291bnQNCj4gKyAgICAgICk7 DQo+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDAsIEJ1ZmZlcik7DQo+ICsgICAgUHJpbnQgKEwiXG4i KTsNCj4gKyAgICBQcmludCAoTCIgICAgICAgIik7DQo+ICsgICAgZm9yIChqID0gMDsgaiA8IExv Y2FsaXR5Q291bnQ7IGorKykgew0KPiArICAgICAgUHJpbnQgKEwiICglM2QpICIsIGopOw0KPiAr ICAgIH0NCj4gKyAgICBQcmludCAoTCJcbiIpOw0KPiArICAgIGZvciAoaSA9IDA7IGkgPCBMb2Nh bGl0eUNvdW50OyBpKyspIHsNCj4gKyAgICAgIFByaW50IChMIiAoJTNkKSAiLCBpKTsNCj4gKyAg ICAgIGZvciAoaiA9IDA7IGogPCBMb2NhbGl0eUNvdW50OyBqKyspIHsNCj4gKyAgICAgICAgUHJp bnQgKEwiICAlM2QgICIsIFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIsIGksIGopKTsNCj4gKyAg ICAgIH0NCj4gKyAgICAgIFByaW50IChMIlxuIik7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4g KyAgLy8gVmFsaWRhdGUNCj4gKyAgZm9yIChpID0gMDsgaSA8IExvY2FsaXR5Q291bnQ7IGkrKykg ew0KPiArICAgIGZvciAoaiA9IDA7IGogPCBMb2NhbGl0eUNvdW50OyBqKyspIHsNCj4gKyAgICAg IC8vIEVsZW1lbnRbeF1beF0gbXVzdCBiZSBlcXVhbCB0byAxMA0KPiArICAgICAgaWYgKChpID09 IGopICYmIChTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKSAhPSAxMCkpIHsNCj4gKyAg ICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAgICAgUHJpbnQgKA0KPiArICAg ICAgICAgIEwiRVJST1I6IERpYWdvbmFsIEVsZW1lbnRbMHglbHhdWzB4JWx4XSAoJTNkKS4iDQo+ ICsgICAgICAgICAgICAiIE5vcm1hbGl6ZWQgVmFsdWUgaXMgbm90IDEwXG4iLA0KPiArICAgICAg ICAgIGksDQo+ICsgICAgICAgICAgaiwNCj4gKyAgICAgICAgICBTTElUX0VMRU1FTlQgKExvY2Fs aXR5UHRyLCBpLCBqKQ0KPiArICAgICAgICAgICk7DQo+ICsgICAgICB9DQo+ICsgICAgICAvLyBF bGVtZW50W2ldW2pdIG11c3QgYmUgZXF1YWwgdG8gRWxlbWVudFtqXVtpXQ0KPiArICAgICAgaWYg KFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIsIGksIGopICE9DQo+ICsgICAgICAgICAgU0xJVF9F TEVNRU5UIChMb2NhbGl0eVB0ciwgaiwgaSkpIHsNCj4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JD b3VudCAoKTsNCj4gKyAgICAgICAgUHJpbnQgKA0KPiArICAgICAgICAgIEwiRVJST1I6IFJlbGF0 aXZlIGRpc3RhbmNlcyBmb3IgRWxlbWVudFsweCVseF1bMHglbHhdICglM2QpIGFuZCBcbiINCj4g KyAgICAgICAgICAgIkVsZW1lbnRbMHglbHhdWzB4JWx4XSAoJTNkKSBkbyBub3QgbWF0Y2guXG4i LA0KPiArICAgICAgICAgIGksDQo+ICsgICAgICAgICAgaiwNCj4gKyAgICAgICAgICBTTElUX0VM RU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKSwNCj4gKyAgICAgICAgICBqLA0KPiArICAgICAgICAg IGksDQo+ICsgICAgICAgICAgU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaiwgaSkNCj4gKyAg ICAgICAgICApOw0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKyAgfQ0KPiArfQ0KPiArDQo+ICsv KiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5k bGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFi bGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwg RUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQN Cj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIg dGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gKyovDQo+ ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NsaXRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsg IElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0K PiArew0KPiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQ SV82XzJfU1lTVEVNX0xPQ0FMSVRZX0lORk9STUFUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAg ICAgICAgICAgUGFyc2VBY3BpU2xpdA0KPiArICAgICAgICAgICApOw0KPiArfQ0KPiArDQo+ICsv KiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhh bmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1U YWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiArICBAcmV0 dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4N Cj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NsaXRQYXJzZXJMaWJEZXN0cnVj dG9yICgNCj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRs ZSwNCj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0K PiArICApDQo+ICt7DQo+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAg ICAgRUZJX0FDUElfNl8yX1NZU1RFTV9MT0NBTElUWV9JTkZPUk1BVElPTl9UQUJMRV9TSUdOQVRV UkUNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2VyTGli LmluZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvU2xpdC9TbGl0UGFyc2VyTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjQzMGVkOWE5OGYx Y2NjY2RlMDc1MjJiNGJmOTBkNmQyMmNkNzkyDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1Ns aXRQYXJzZXJMaWIuaW5mDQo+IEBAIC0wLDAgKzEsMzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl IG1heSBiZSBmb3VuZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2Jz ZC1saWNlbnNlLnBocA0KPiArIw0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5E RVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdB UlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBP UiBJTVBMSUVELg0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAg ID0gMHgwMDAxMDAxOQ0KPiArICBCQVNFX05BTUUgICAgICA9IFNsaXRQYXJzZXJMaWINCj4gKyAg RklMRV9HVUlEICAgICAgPSAzRENGNzMzMy0zNjdCLTRENDAtODU2QS1GRjBGNzNGQjZCNDkNCj4g KyAgVkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVS DQo+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9S ICAgID0gU2xpdFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gU2xp dFBhcnNlckxpYkRlc3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIFNsaXRQYXJzZXIu Yw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxs UGtnL1NoZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiAr DQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+IGRp ZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL1NwY3IvU3BjclBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li4yNDY4N2E3MDhiYjgyOGM1M2NlYjdhNjFlOWUxMWNlMDBiNTgzY2Q1DQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9TcGNyL1NwY3JQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDIxMyBAQA0KPiArLyoqDQo+ ICsgIFNQQ1IgdGFibGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAx OCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBh bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRl IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNl bnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwg dGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3Vy Y2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElT IERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0K PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0K PiArICAgIC0gTWljcm9zb2Z0IFNlcmlhbCBQb3J0IENvbnNvbGUgUmVkaXJlY3Rpb24gVGFibGUN Cj4gKyAgICAgIFNwZWNpZmljYXRpb24gLSBWZXJzaW9uIDEuMDMgLSBBdWd1c3QgMTAsIDIwMTUu DQo+ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiAr I2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvU2VyaWFsUG9ydENvbnNvbGVSZWRpcmVjdGlvblRh YmxlLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmll dy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ICtTVEFU SUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoq IFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJbnRlcnJ1cHQgVHlwZS4NCj4gKw0KPiArICBA cGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRh Lg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBp bmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBh IHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiAr Vk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZUludGVycnVwdFR5cGUgKA0KPiArICBJTiBVSU5U OCogUHRyLA0KPiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiArICApOw0KPiArDQo+ICsvKiogVGhp cyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElycS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0g W2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcu IHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhl IEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJ DQo+ICtWYWxpZGF0ZUlycSAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBD b250ZXh0DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmli aW5nIHRoZSBBQ1BJIFNQQ1IgVGFibGUuDQo+ICsqLw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFS U0VSIFNwY3JQYXJzZXJbXSA9IHsNCj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5m byksDQo+ICsgIHtMIkludGVyZmFjZSBUeXBlIiwgMSwgMzYsIEwiJWQiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiUmVzZXJ2ZWQiLCAzLCAzNywgTCIleCAleCAleCIsIER1bXAz Q2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJCYXNlIEFkZHJlc3MiLCAxMiwgNDAs IE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJJbnRlcnJ1cHQgVHlw ZSIsIDEsIDUyLCBMIiVkIiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVJbnRlcnJ1cHRUeXBlLCBOVUxM fSwNCj4gKyAge0wiSVJRIiwgMSwgNTMsIEwiJWQiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZUlycSwg TlVMTH0sDQo+ICsgIHtMIkdsb2JhbCBTeXN0ZW0gSW50ZXJydXB0IiwgNCwgNTQsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJCYXVkIFJhdGUiLCAxLCA1OCwgTCIl ZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQYXJpdHkiLCAxLCA1OSwgTCIl ZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJTdG9wIEJpdHMiLCAxLCA2MCwg TCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJGbG93IENvbnRyb2wiLCAx LCA2MSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlRlcm1pbmFs IFR5cGUiLCAxLCA2MiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJS ZXNlcnZlZCIsIDEsIDYzLCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4g KyAge0wiUENJIERldmljZSBJRCIsIDIsIDY0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gKyAge0wiUENJIFZlbmRvciBJRCIsIDIsIDY2LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiUENJIEJ1cyBOdW1iZXIiLCAxLCA2OCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlBDSSBEZXZpY2UgTnVtYmVyIiwgMSwg NjksIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJQQ0kgRnVuY3Rp b24gTnVtYmVyIiwgMSwgNzAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiAr ICB7TCJQQ0kgRmxhZ3MiLCA0LCA3MSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIlBDSSBTZWdtZW50IiwgMSwgNzUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDQsIDc2LCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUg SW50ZXJydXB0IFR5cGUuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQ b2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhl YWRlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArVmFsaWRhdGVJ bnRlcnJ1cHRUeXBlICgNCj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gKyAgSU4gVk9JRCogIENvbnRl eHQNCj4gKyAgKQ0KPiArew0KPiArI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVk IChNREVfQ1BVX0FBUkNINjQpDQo+ICsgIFVJTlQ4IEludGVycnVwdFR5cGUgPSAqUHRyOw0KPiAr ICBpZiAoSW50ZXJydXB0VHlwZSAhPQ0KPiArICAgICAgICBFRklfQUNQSV9TRVJJQUxfUE9SVF9D T05TT0xFX1JFRElSRUNUSU9OX1RBQkxFX0lOVEVSUlVQVF9UWVBFX0dJQykgew0KPiArICAgIElu Y3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVSUk9S OiBJbnRlcnJ1cHRUeXBlID0gJWQuIFRoaXMgbXVzdCBiZSA4IG9uIEFSTSBQbGF0Zm9ybXMiLA0K PiArICAgICAgSW50ZXJydXB0VHlwZQ0KPiArICAgICAgKTsNCj4gKyAgfQ0KPiArI2VuZGlmDQo+ ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSXJxLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxk IGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNp ZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxk IGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ICsqLw0KPiArU1RBVElD DQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK1ZhbGlkYXRlSXJxICgNCj4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArI2lmIGRlZmluZWQg KE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ICsgIFVJTlQ4IEly cSA9ICpQdHI7DQo+ICsgIGlmIChJcnEgIT0gMCkgew0KPiArICAgIEluY3JlbWVudEVycm9yQ291 bnQgKCk7DQo+ICsgICAgUHJpbnQgKA0KPiArICAgICAgTCJcbkVSUk9SOiBJcnEgPSAlZC4gVGhp cyBtdXN0IGJlIHplcm8gb24gQVJNIFBsYXRmb3Jtc1xuIiwNCj4gKyAgICAgIElycQ0KPiArICAg ICAgKTsNCj4gKyAgfQ0KPiArI2VuZGlmDQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHBhcnNlcyB0aGUgQUNQSSBTUENSIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQg dGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFNQQ1IgdGFibGUgYW5kDQo+ICsgIHRyYWNlcyB0aGUg QUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1z IHZhbGlkYXRpb25zIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0g W2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0K PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0 aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24g IFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0K PiArUGFyc2VBY3BpU3BjciAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4 KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDgg ICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIGlmICghVHJhY2UpIHsNCj4g KyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICAvLyBEdW1wIHRoZSBTUENSDQo+ICsgIFBh cnNlQWNwaSAoDQo+ICsgICAgVFJVRSwNCj4gKyAgICAwLA0KPiArICAgICJTUENSIiwNCj4gKyAg ICBQdHIsDQo+ICsgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiArICAgIFBBUlNFUl9QQVJBTVMgKFNw Y3JQYXJzZXIpDQo+ICsgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJz ZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRo ZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBT eXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhl IHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQg ICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09V VF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJ QVBJDQo+ICtTcGNyUGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFO RExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVN X1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJl Z2lzdGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX1NFUklBTF9QT1JUX0NP TlNPTEVfUkVESVJFQ1RJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJzZUFj cGlTcGNyDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRo ZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxl IHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRv IHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VO RCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9T VEFUVVMNCj4gK0VGSUFQSQ0KPiArU3BjclBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBD T05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAg ICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4g KyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJf U0VSSUFMX1BPUlRfQ09OU09MRV9SRURJUkVDVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gKyAgICAg ICAgICAgKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyTGliLmluZiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bjci9TcGNy UGFyc2VyTGliLmluZg0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGFkZDMxZGUwMzBhYjc3NzFmYzMwM2Vi YTdiOTIyMjcwMjY1OTcwDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJzZXJMaWIu aW5mDQo+IEBAIC0wLDAgKzEsMzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmln aHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g KyMNCj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4g KyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBj b25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhp cyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3Vu ZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiArIw0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBM SUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0K PiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAx OQ0KPiArICBCQVNFX05BTUUgICAgICA9IFNwY3JQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAg ICAgPSAwOEMxN0M0Qy1FNjJELTRBRTQtOTVDNS1ERUY0MkEyNEE1NkMNCj4gKyAgVkVSU0lPTl9T VFJJTkcgPSAxLjANCj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJB UllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gU3BjclBh cnNlckxpYkNvbnN0cnVjdG9yDQo+ICsgIERFU1RSVUNUT1IgICAgID0gU3BjclBhcnNlckxpYkRl c3RydWN0b3INCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIFNwY3JQYXJzZXIuYw0KPiArDQo+ICtb UGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtn LmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFy eUNsYXNzZXNdDQo+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+IGRpZmYgLS1naXQgYS9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NyYXQv U3JhdFBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWU1MWE3ZWU2 YTM1NTNmYzQwZDE3NjcxYWNkNjcxZjBiZTAxZTU5DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0 L1NyYXRQYXJzZXIuYw0KPiBAQCAtMCwwICsxLDM3NSBAQA0KPiArLyoqDQo+ICsgIFNSQVQgdGFi bGUgcGFyc2VyDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0 ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t cGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1 bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdo aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUg bGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vu c2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVT UyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0gQUNQ SSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiArKiovDQo+ ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxM aWJyYXJ5L1ByaW50TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ICsj aW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLy8gTG9jYWwgVmFyaWFi bGVzDQo+ICtTVEFUSUMgQ09OU1QgVUlOVDgqIFNyYXRSQVR5cGU7DQo+ICtTVEFUSUMgQ09OU1Qg VUlOVDgqIFNyYXRSQUxlbmd0aDsNCj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9J TkZPIEFjcGlIZHJJbmZvOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhl IFJlc2VydmVkIGZpZWxkIGluIHRoZSBTUkFUIHRhYmxlIGhlYWRlci4NCj4gKw0KPiArICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0K PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZv cm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBv aW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9J RA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZVNyYXRSZXNlcnZlZCAoDQo+ICsgIElOIFVJTlQ4KiBQ dHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBUaGlzIGZ1 bmN0aW9uIHRyYWNlcyB0aGUgQVBJQyBQcm94aW1pdHkgRG9tYWluIGZpZWxkLg0KPiArDQo+ICsg IEBwYXJhbSBbaW5dIEZvcm1hdCAgRm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4N Cj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVm ZmVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcFNyYXRBcGljUHJveGltaXR5 ICgNCj4gKyAgSU4gIENPTlNUIENIQVIxNiogIEZvcm1hdCwNCj4gKyAgSU4gIFVJTlQ4KiAgICAg ICAgIFB0cg0KPiArICApOw0KPiArDQo+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3Jp YmluZyB0aGUgU1JBVCBUYWJsZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIg U3JhdFBhcnNlcltdID0gew0KPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwN Cj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVT cmF0UmVzZXJ2ZWQsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIsIDgsIDQwLCBMIjB4JWx4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNF UiBhcnJheSBkZXNjcmliaW5nIHRoZSBSZXNvdXJjZSBBbGxvY2F0aW9uDQo+ICsgICAgc3RydWN0 dXJlIGhlYWRlci4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3JhdFJlc291 cmNlQWxsb2NhdGlvblBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTlVMTCwgTlVM TCwgKFZPSUQqKikmU3JhdFJBVHlwZSwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEs IDEsIE5VTEwsIE5VTEwsIChWT0lEKiopJlNyYXRSQUxlbmd0aCwgTlVMTCwgTlVMTH0NCj4gK307 DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBHSUNDIEFm ZmluaXR5IHN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3Jh dEdpY0NBZmZpbml0eVBhcnNlcltdID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArDQo+ICsgIHtMIlByb3hpbWl0eSBEb21haW4i LCA0LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiQUNQSSBQ cm9jZXNzb3IgVUlEIiwgNCwgNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIkZsYWdzIiwgNCwgMTAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiArICB7TCJDbG9jayBEb21haW4iLCA0LCAxNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0NCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBHSUMgSVRTIEFmZmluaXR5IHN0cnVjdHVyZS4NCj4gKyovDQo+ICtTVEFUSUMgQ09OU1Qg QUNQSV9QQVJTRVIgU3JhdEdpY0lUU0FmZmluaXR5UGFyc2VyW10gPSB7DQo+ICsgIHtMIlR5cGUi LCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiTGVuZ3Ro IiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsNCj4gKyAge0wi UHJveGltaXR5IERvbWFpbiIsIDQsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiArICB7TCJSZXNlcnZlZCIsIDIsIDYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArICB7TCJJVFMgSWQiLCA0LCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gK307DQo+ICsNCj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBNZW1vcnkgQWZmaW5pdHkgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBB Q1BJX1BBUlNFUiBTcmF0TWVtQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEs IDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAx LCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJQcm94 aW1pdHkgRG9tYWluIiwgNCwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIlJlc2VydmVkIiwgMiwgNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ICsgIHtMIkJhc2UgQWRkcmVzcyBMb3ciLCA0LCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gKyAge0wiQmFzZSBBZGRyZXNzIEhpZ2giLCA0LCAxMiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCBMb3ciLCA0LCAxNiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkxlbmd0aCBIaWdoIiwgNCwg MjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJSZXNlcnZlZCIs IDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiRmxhZ3Mi LCA0LCAyOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2Vy dmVkIiwgOCwgMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiArfTsNCj4g Kw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFQSUMvU0FQSUMg QWZmaW5pdHkgc3RydWN0dXJlLg0KPiArKi8NCj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBT cmF0QXBjaVNhcGljQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gKyAge0wiVHlwZSIsIDEsIDAsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJMZW5ndGgiLCAxLCAxLCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKw0KPiArICB7TCJQcm94aW1pdHkg RG9tYWluIFs3OjBdIiwgMSwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ICsgIHtMIkFQSUMgSUQiLCAxLCAzLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiRmxhZ3MiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gKyAge0wiTG9jYWwgU0FQSUMgRUlEIiwgMSwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ICsgIHtMIlByb3hpbWl0eSBEb21haW4gWzMxOjhdIiwgMywgOSwgTCIweCV4 IiwgRHVtcFNyYXRBcGljUHJveGltaXR5LA0KPiArICAgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsg IHtMIkNsb2NrIERvbWFpbiIsIDQsIDEyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fQ0KPiArfTsNCj4gKw0KPiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IFByb2Nlc3NvciBMb2NhbCB4MkFQSUMNCj4gKyAgICBBZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ICsq Lw0KPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRYMkFwY2lBZmZpbml0eVBhcnNlcltd ID0gew0KPiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiArDQo+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ICsgIHtMIlByb3hpbWl0eSBEb21haW4iLCA0LCA0LCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gKyAge0wiWDJBUElDIElEIiwgNCwgOCwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIkZsYWdzIiwgNCwgMTIsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiArICB7TCJDbG9jayBEb21haW4iLCA0LCAx NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ICsgIHtMIlJlc2VydmVkIiwg NCwgMjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ICt9Ow0KPiArDQo+ICsv KiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJlc2VydmVkIGZpZWxkIGluIHRoZSBTUkFU IHRhYmxlIGhlYWRlci4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBv aW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gKyAgICAg ICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVh ZGVyLg0KPiArKi8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtWYWxpZGF0ZVNy YXRSZXNlcnZlZCAoDQo+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ICsgIElOIFZPSUQqICBDb250ZXh0 DQo+ICsgICkNCj4gK3sNCj4gKyAgaWYgKCooVUlOVDMyKilQdHIgIT0gMSkgew0KPiArICAgIElu Y3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAgUHJpbnQgKEwiXG5FUlJPUjogUmVzZXJ2ZWQg c2hvdWxkIGJlIDEgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4iKTsNCj4gKyAgfQ0KPiAr fQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFQSUMgUHJveGltaXR5IERv bWFpbiBmaWVsZC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBGb3JtYXQgIEZvcm1hdCBzdHJpbmcg Zm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4g K0R1bXBTcmF0QXBpY1Byb3hpbWl0eSAoDQo+ICsgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ ICsgSU4gVUlOVDgqICAgICAgICBQdHINCj4gKyApDQo+ICt7DQo+ICsgIFVJTlQzMiBQcm94aW1p dHlEb21haW4gPSBQdHJbMF0gfCAoUHRyWzFdIDw8IDgpIHwgKFB0clsyXSA8PCAxNik7DQo+ICsg IFByaW50IChGb3JtYXQsIFByb3hpbWl0eURvbWFpbik7DQo+ICt9DQo+ICsNCj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBTUkFUIHRhYmxlLg0KPiArICBXaGVuIHRyYWNlIGlz IGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFNSQVQgdGFibGUgYW5kDQo+ICsgIHRy YWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBwYXJz ZXMgdGhlIGZvbGxvd2luZyBSZXNvdXJjZSBBbGxvY2F0aW9uIFN0cnVjdHVyZXM6DQo+ICsgICAg LSBQcm9jZXNzb3IgTG9jYWwgQVBJQy9TQVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUNCj4gKyAgICAt IE1lbW9yeSBBZmZpbml0eSBTdHJ1Y3R1cmUNCj4gKyAgICAtIFByb2Nlc3NvciBMb2NhbCB4MkFQ SUMgQWZmaW5pdHkgU3RydWN0dXJlDQo+ICsgICAgLSBHSUNDIEFmZmluaXR5IFN0cnVjdHVyZQ0K PiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBB Q1BJIHRhYmxlIGZpZWxkcy4NCj4gKw0KPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAg ICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIg ICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAg QHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4N Cj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJ IHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpU3JhdCAoDQo+ ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5U MzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0K PiArICApDQo+ICt7DQo+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ICsgIFVJTlQ4KiBSZXNvdXJjZVB0 cjsNCj4gKyAgVUlOVDMyIEdpY0NBZmZpbml0eUluZGV4ID0gMDsNCj4gKyAgVUlOVDMyIEdpY0lU U0FmZmluaXR5SW5kZXggPSAwOw0KPiArICBVSU5UMzIgTWVtb3J5QWZmaW5pdHlJbmRleCA9IDA7 DQo+ICsgIFVJTlQzMiBBcGljU2FwaWNBZmZpbml0eUluZGV4ID0gMDsNCj4gKyAgVUlOVDMyIFgy QXBpY0FmZmluaXR5SW5kZXggPSAwOw0KPiArICBDSEFSOCAgQnVmZmVyWzgwXTsgIC8vIFVzZWQg Zm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4gKw0KPiArICBpZiAoIVRyYWNlKSB7 DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgN Cj4gKyAgICAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgICAgIDAsDQo+ICsgICAgICAgICAg ICAgIlNSQVQiLA0KPiArICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAgICAgICBBY3BpVGFi bGVMZW5ndGgsDQo+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdFBhcnNlcikNCj4g KyAgICAgICAgICAgICApOw0KPiArICBSZXNvdXJjZVB0ciA9IFB0ciArIE9mZnNldDsNCj4gKw0K PiArICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQo+ICsgICAgUGFyc2VBY3Bp ICgNCj4gKyAgICAgIEZBTFNFLA0KPiArICAgICAgMCwNCj4gKyAgICAgIE5VTEwsDQo+ICsgICAg ICBSZXNvdXJjZVB0ciwNCj4gKyAgICAgIDIsICAvLyBUaGUgbGVuZ3RoIGlzIDEgYnl0ZSBhdCBv ZmZzZXQgMQ0KPiArICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdFJlc291cmNlQWxsb2NhdGlvblBh cnNlcikNCj4gKyAgICAgICk7DQo+ICsNCj4gKyAgICBzd2l0Y2ggKCpTcmF0UkFUeXBlKSB7DQo+ ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNDX0FGRklOSVRZOg0KPiArICAgICAgICBBc2Np aVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAoQnVm ZmVyKSwNCj4gKyAgICAgICAgICAiR0lDQyBBZmZpbml0eSBTdHJ1Y3R1cmUgWyVkXSIsDQo+ICsg ICAgICAgICAgR2ljQ0FmZmluaXR5SW5kZXgrKw0KPiArICAgICAgICAgICk7DQo+ICsgICAgICAg IFBhcnNlQWNwaSAoDQo+ICsgICAgICAgICAgVFJVRSwNCj4gKyAgICAgICAgICAyLA0KPiArICAg ICAgICAgIEJ1ZmZlciwNCj4gKyAgICAgICAgICBSZXNvdXJjZVB0ciwNCj4gKyAgICAgICAgICAq U3JhdFJBTGVuZ3RoLA0KPiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNyYXRHaWNDQWZmaW5p dHlQYXJzZXIpDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAg ICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ19JVFNfQUZGSU5JVFk6DQo+ICsgICAgICAgIEFzY2lp U1ByaW50ICgNCj4gKyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgc2l6ZW9mIChCdWZm ZXIpLA0KPiArICAgICAgICAgICJHSUMgSVRTIEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4g KyAgICAgICAgICBHaWNJVFNBZmZpbml0eUluZGV4KysNCj4gKyAgICAgICAgKTsNCj4gKyAgICAg ICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAgICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsg ICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIFJlc291cmNlUHRyLA0KPiArICAgICAgICAg ICpTcmF0UkFMZW5ndGgsDQo+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdEdpY0lUU0Fm ZmluaXR5UGFyc2VyKQ0KPiArICAgICAgICApOw0KPiArICAgICAgICBicmVhazsNCj4gKw0KPiAr ICAgICAgY2FzZSBFRklfQUNQSV82XzJfTUVNT1JZX0FGRklOSVRZOg0KPiArICAgICAgICBBc2Np aVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAoQnVm ZmVyKSwNCj4gKyAgICAgICAgICAiTWVtb3J5IEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4g KyAgICAgICAgICBNZW1vcnlBZmZpbml0eUluZGV4KysNCj4gKyAgICAgICAgICApOw0KPiArICAg ICAgICBQYXJzZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgMiwNCj4g KyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgUmVzb3VyY2VQdHIsDQo+ICsgICAgICAg ICAgKlNyYXRSQUxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0TWVtQWZm aW5pdHlQYXJzZXIpDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4g KyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX1BST0NFU1NPUl9MT0NBTF9BUElDX1NBUElDX0FGRklO SVRZOg0KPiArICAgICAgICBBc2NpaVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiAr ICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gKyAgICAgICAgICAiQVBJQy9TQVBJQyBBZmZp bml0eSBTdHJ1Y3R1cmUgWyVkXSIsDQo+ICsgICAgICAgICAgQXBpY1NhcGljQWZmaW5pdHlJbmRl eCsrDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gKyAgICAgICAg ICBUUlVFLA0KPiArICAgICAgICAgIDIsDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAg ICAgIFJlc291cmNlUHRyLA0KPiArICAgICAgICAgICpTcmF0UkFMZW5ndGgsDQo+ICsgICAgICAg ICAgUEFSU0VSX1BBUkFNUyAoU3JhdEFwY2lTYXBpY0FmZmluaXR5UGFyc2VyKQ0KPiArICAgICAg ICAgICk7DQo+ICsgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZf Ml9QUk9DRVNTT1JfTE9DQUxfWDJBUElDX0FGRklOSVRZOg0KPiArICAgICAgICBBc2NpaVNQcmlu dCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwN Cj4gKyAgICAgICAgICAiWDJBUElDIEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4gKyAgICAg ICAgICBYMkFwaWNBZmZpbml0eUluZGV4KysNCj4gKyAgICAgICAgICApOw0KPiArICAgICAgICBQ YXJzZUFjcGkgKA0KPiArICAgICAgICAgIFRSVUUsDQo+ICsgICAgICAgICAgMiwNCj4gKyAgICAg ICAgICBCdWZmZXIsDQo+ICsgICAgICAgICAgUmVzb3VyY2VQdHIsDQo+ICsgICAgICAgICAgKlNy YXRSQUxlbmd0aCwNCj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0WDJBcGNpQWZmaW5p dHlQYXJzZXIpDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAg ICAgIGRlZmF1bHQ6DQo+ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ICsgICAg ICAgIFByaW50IChMIkVSUk9SOiBVbmtub3duIFNSQVQgQWZmaW5pdHkgdHlwZSA9IDB4JXhcbiIs ICpTcmF0UkFUeXBlKTsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAg UmVzb3VyY2VQdHIgKz0gKCpTcmF0UkFMZW5ndGgpOw0KPiArICAgIE9mZnNldCArPSAoKlNyYXRS QUxlbmd0aCk7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBp bWFnZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0 ZW0gVGFibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBh cnNlciBpcyByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBU aGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9P Rl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJ DQo+ICtTcmF0UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExF ICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RB QkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lz dGVyUGFyc2VyICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX1NZU1RFTV9SRVNPVVJDRV9B RkZJTklUWV9UQUJMRV9TSUdOQVRVUkUsDQo+ICsgICAgICAgICAgIFBhcnNlQWNwaVNyYXQNCj4g KyAgICAgICAgICAgKTsNCj4gK30NCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4N Cj4gKw0KPiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGlt YWdlLg0KPiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3Rl bSBUYWJsZS4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFy c2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAg VGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiAr RUZJQVBJDQo+ICtTcmF0UGFyc2VyTGliRGVzdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9I QU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNU RU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4g RGVyZWdpc3RlclBhcnNlciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9TWVNURU1fUkVT T1VSQ0VfQUZGSU5JVFlfVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+ IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlckxpYi5pbmYgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlckxpYi5pbmYNCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uNTgyM2JhYjUwZGY2NDk3NDg4ZTQxZmFhYTVhZTdhODEzYWVlNDc5Mg0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1BhcnNlcnMvU3JhdC9TcmF0UGFyc2VyTGliLmluZg0KPiBAQCAtMCwwICsx LDMzIEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAx OCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQg YW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUg QlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAg VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyMgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRI RSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMg SVMiIEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4gK1tE ZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1F ICAgICAgPSBTcmF0UGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gMTA2QjIyQ0MtMTQ5 OS00NkQ0LUI2RkItMzQxQkI4NzhGQkM1DQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsg IE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8 RFhFX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICA9IFNyYXRQYXJzZXJMaWJDb25zdHJ1Y3Rv cg0KPiArICBERVNUUlVDVE9SICAgICA9IFNyYXRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsNCj4g K1tTb3VyY2VzXQ0KPiArICBTcmF0UGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBN ZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRlTW9k dWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBT aGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0L1NzZHRQYXJzZXIuYyBiL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9T c2R0UGFyc2VyLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM1NjI0MmIzNTFjOGMwNGQzMTIzNDkwODZl MzUzYzk0ZTQzMGYzMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyLmMNCj4g QEAgLTAsMCArMSw5MiBAQA0KPiArLyoqDQo+ICsgIFNTRFQgdGFibGUgcGFyc2VyDQo+ICsNCj4g KyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMN Cj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRo aXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91 bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQ UkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAr DQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlv biAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJ bmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4N Cj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gKyNpbmNsdWRl IDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiArDQo+ICsvKiogVGhpcyBm dW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgU1NEVCB0YWJsZS4NCj4gKyAgV2hlbiB0cmFjZSBpcyBl bmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBTU0RUIHRhYmxlIGFuZA0KPiArICB0cmFj ZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiArICBGb3IgdGhlIFNTRFQgdGFibGUgb25seSB0 aGUgQUNQSSBoZWFkZXIgZmllbGRzIGFyZQ0KPiArICBwYXJzZWQgYW5kIHRyYWNlZC4NCj4gKw0K PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFD UEkgZmllbGRzLg0KPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVu Z3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRh YmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArKi8NCj4gK1ZPSUQN Cj4gK0VGSUFQSQ0KPiArUGFyc2VBY3BpU3NkdCAoDQo+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4g KyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiArICApDQo+ICt7DQo+ICsgIGlmICgh VHJhY2UpIHsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBEdW1wQWNwaUhlYWRl ciAoUHRyKTsNCj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4g KyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4g KyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUu DQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBy ZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2Vy IGZvciB0aGUgQUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3 YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJD RVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtTc2R0 UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENP TlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2Vy ICgNCj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8yX1NFQ09OREFSWV9TWVNURU1fREVTQ1JJUFRJ T05fVEFCTEVfU0lHTkFUVVJFLA0KPiArICAgICAgICAgICBQYXJzZUFjcGlTc2R0DQo+ICsgICAg ICAgICAgICk7DQo+ICt9DQo+ICsNCj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsN Cj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4N Cj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFi bGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBp cyBkZXJlZ2lzdGVyZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBw YXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQ SQ0KPiArU3NkdFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExF ICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RB QkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIERlcmVn aXN0ZXJQYXJzZXIgKA0KPiArICAgICAgICAgICBFRklfQUNQSV82XzJfU0VDT05EQVJZX1NZU1RF TV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gKyAgICAgICAgICAgKTsNCj4gK30NCj4g ZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyTGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyTGliLmluZg0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi41N2U1NWVhZjA4MjRiNmM4ZDA1Y2U5Yjc5ZDk1OThlZGQ4ZjY3M2Q5DQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0L1NzZHRQYXJzZXJMaWIuaW5mDQo+IEBAIC0wLDAgKzEs MzMgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4 LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRoaXMgcHJv Z3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArIyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0KPiArIyAgVEhF IFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJ UyIgQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIyMNCj4gKw0KPiArW0Rl ZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiArICBCQVNFX05BTUUg ICAgICA9IFNzZHRQYXJzZXJMaWINCj4gKyAgRklMRV9HVUlEICAgICAgPSBCQzJGRjUzOC04RkVC LTQ4RTMtOTJEMS1FQ0EwMUIyNzdCMkMNCj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gKyAg TU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxE WEVfRFJJVkVSDQo+ICsgIENPTlNUUlVDVE9SICAgID0gU3NkdFBhcnNlckxpYkNvbnN0cnVjdG9y DQo+ICsgIERFU1RSVUNUT1IgICAgID0gU3NkdFBhcnNlckxpYkRlc3RydWN0b3INCj4gKw0KPiAr W1NvdXJjZXNdDQo+ICsgIFNzZHRQYXJzZXIuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1k ZVBrZy9NZGVQa2cuZGVjDQo+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiArICBNZGVNb2R1 bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIFNo ZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlci5jIGIvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hz ZHRQYXJzZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjlmMzE0Yjc0OGQ0MjgxZGNjNTZkNzA3Nzk4 ZTZlYjFjMmY3MDM5DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXIuYw0KPiBA QCAtMCwwICsxLDE5OCBAQA0KPiArLyoqDQo+ICsgIFhTRFQgdGFibGUgcGFyc2VyDQo+ICsNCj4g KyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuDQo+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMN Cj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRo aXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91 bmQgYXQNCj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiArDQo+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQ UkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAr DQo+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlv biAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxJ bmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4N Cj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9B Y3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3Bp VGFibGVQYXJzZXIuaD4NCj4gKw0KPiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ICtTVEFUSUMgQUNQ SV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gKw0KPiArLyoqIEFuIEFD UElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgWFNEVCB0YWJsZS4NCj4gKyovDQo+ ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgWHNkdFBhcnNlcltdID0gew0KPiArICBQQVJTRV9B Q1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKQ0KPiArfTsNCj4gKw0KPiArQ09OU1QgQUNQSV9ERVND UklQVElPTl9IRUFERVJfSU5GTyogQ09OU1QNCj4gK0VGSUFQSQ0KPiArR2V0QWNwaVhzZHRIZWFk ZXJJbmZvICgNCj4gKyAgVk9JRA0KPiArKQ0KPiArew0KPiArICByZXR1cm4gJkFjcGlIZHJJbmZv Ow0KPiArfQ0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgWFNEVCB0 YWJsZQ0KPiArICBhbmQgb3B0aW9uYWxseSB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0K PiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBY U0RUIHRhYmxlLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBU UlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAg ICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiArICBAcGFyYW0g W2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiArICBA cGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUu DQo+ICsqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQYXJzZUFjcGlYc2R0ICgNCj4gKyAgSU4g Qk9PTEVBTiBUcmFjZSwNCj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ICsgIElOIFVJTlQzMiAgQWNw aVRhYmxlTGVuZ3RoLA0KPiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ICsgICkN Cj4gK3sNCj4gKyAgVUlOVDMyICAgICAgICBPZmZzZXQ7DQo+ICsgIFVJTlQzMiAgICAgICAgVGFi bGVPZmZzZXQ7DQo+ICsgIFVJTlQ2NCogICAgICAgVGFibGVQb2ludGVyOw0KPiArICBVSU5UTiAg ICAgICAgIEVudHJ5SW5kZXg7DQo+ICsgIENIQVIxNiAgICAgICAgQnVmZmVyWzMyXTsNCj4gKw0K PiArICAvLyBQYXJzZSB0aGUgQUNQSSBoZWFkZXIgdG8gZ2V0IHRoZSBsZW5ndGgNCj4gKyAgUGFy c2VBY3BpICgNCj4gKyAgICBGQUxTRSwNCj4gKyAgICAwLA0KPiArICAgICJYU0RUIiwNCj4gKyAg ICBQdHIsDQo+ICsgICAgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RILA0KPiArICAgIFBB UlNFUl9QQVJBTVMgKFhzZHRQYXJzZXIpDQo+ICsgICAgKTsNCj4gKw0KPiArICBPZmZzZXQgPSBQ YXJzZUFjcGkgKA0KPiArICAgICAgICAgICAgIFRyYWNlLA0KPiArICAgICAgICAgICAgIDAsDQo+ ICsgICAgICAgICAgICAgIlhTRFQiLA0KPiArICAgICAgICAgICAgIFB0ciwNCj4gKyAgICAgICAg ICAgICAqQWNwaUhkckluZm8uTGVuZ3RoLA0KPiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMg KFhzZHRQYXJzZXIpDQo+ICsgICAgICAgICAgICAgKTsNCj4gKw0KPiArICBUYWJsZU9mZnNldCA9 IE9mZnNldDsNCj4gKw0KPiArICBpZiAoVHJhY2UpIHsNCj4gKyAgICBFbnRyeUluZGV4ID0gMDsN Cj4gKyAgICBUYWJsZVBvaW50ZXIgPSAoVUlOVDY0KikoUHRyICsgVGFibGVPZmZzZXQpOw0KPiAr ICAgIHdoaWxlIChPZmZzZXQgPCAoKkFjcGlIZHJJbmZvLkxlbmd0aCkpIHsNCj4gKyAgICAgIENP TlNUIFVJTlQzMiogU2lnbmF0dXJlOw0KPiArICAgICAgQ09OU1QgVUlOVDMyKiBMZW5ndGg7DQo+ ICsgICAgICBDT05TVCBVSU5UOCogIFJldmlzaW9uOw0KPiArDQo+ICsgICAgICBpZiAoKFVJTlQ2 NCopKFVJTlROKSgqVGFibGVQb2ludGVyKSAhPSBOVUxMKSB7DQo+ICsgICAgICAgIFVJTlQ4KiAg ICAgIFB0cjsNCj4gKw0KPiArICAgICAgICBQYXJzZUFjcGlIZWFkZXIgKA0KPiArICAgICAgICAg IChVSU5UOCopKFVJTlROKSgqVGFibGVQb2ludGVyKSwNCj4gKyAgICAgICAgICAmU2lnbmF0dXJl LA0KPiArICAgICAgICAgICZMZW5ndGgsDQo+ICsgICAgICAgICAgJlJldmlzaW9uDQo+ICsgICAg ICAgICAgKTsNCj4gKw0KPiArICAgICAgICBQdHIgPSAoVUlOVDgqKVNpZ25hdHVyZTsNCj4gKw0K PiArICAgICAgICBVbmljb2RlU1ByaW50ICgNCj4gKyAgICAgICAgICBCdWZmZXIsDQo+ICsgICAg ICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiArICAgICAgICAgIEwiRW50cnlbJWRdIC0gJWMlYyVj JWMiLA0KPiArICAgICAgICAgIEVudHJ5SW5kZXgrKywNCj4gKyAgICAgICAgICBQdHJbMF0sDQo+ ICsgICAgICAgICAgUHRyWzFdLA0KPiArICAgICAgICAgIFB0clsyXSwNCj4gKyAgICAgICAgICBQ dHJbM10NCj4gKyAgICAgICAgICApOw0KPiArICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgVW5p Y29kZVNQcmludCAoDQo+ICsgICAgICAgICAgQnVmZmVyLA0KPiArICAgICAgICAgIHNpemVvZiAo QnVmZmVyKSwNCj4gKyAgICAgICAgICBMIkVudHJ5WyVkXSIsDQo+ICsgICAgICAgICAgRW50cnlJ bmRleCsrDQo+ICsgICAgICAgICAgKTsNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgUHJpbnRG aWVsZE5hbWUgKDIsIEJ1ZmZlcik7DQo+ICsgICAgICBQcmludCAoTCIweCVseFxuIiwgKlRhYmxl UG9pbnRlcik7DQo+ICsNCj4gKyAgICAgIC8vIFZhbGlkYXRlIHRoZSB0YWJsZSBwb2ludGVycyBh cmUgbm90IE5VTEwNCj4gKyAgICAgIGlmICgoVUlOVDY0KikoVUlOVE4pKCpUYWJsZVBvaW50ZXIp ID09IE5VTEwpIHsNCj4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gKyAgICAg ICAgUHJpbnQgKA0KPiArICAgICAgICAgIEwiRVJST1I6IEludmFsaWQgdGFibGUgZW50cnkgYXQg MHglbHgsIHRhYmxlIGFkZHJlc3MgaXMgMHglbHhcbiIsDQo+ICsgICAgICAgICAgVGFibGVQb2lu dGVyLA0KPiArICAgICAgICAgICpUYWJsZVBvaW50ZXINCj4gKyAgICAgICAgICApOw0KPiArICAg ICAgfQ0KPiArICAgICAgT2Zmc2V0ICs9IHNpemVvZiAoVUlOVDY0KTsNCj4gKyAgICAgIFRhYmxl UG9pbnRlcisrOw0KPiArICAgIH0gLy8gd2hpbGUNCj4gKyAgfQ0KPiArDQo+ICsgIC8vIFByb2Nl c3MgdGhlIHRhYmxlcw0KPiArICBPZmZzZXQgPSBUYWJsZU9mZnNldDsNCj4gKyAgVGFibGVQb2lu dGVyID0gKFVJTlQ2NCopKFB0ciArIFRhYmxlT2Zmc2V0KTsNCj4gKyAgd2hpbGUgKE9mZnNldCA8 ICgqQWNwaUhkckluZm8uTGVuZ3RoKSkgew0KPiArICAgIGlmICgoVUlOVDY0KikoVUlOVE4pKCpU YWJsZVBvaW50ZXIpICE9IE5VTEwpIHsNCj4gKyAgICAgIFByb2Nlc3NBY3BpVGFibGUgKChVSU5U OCopKFVJTlROKSgqVGFibGVQb2ludGVyKSk7DQo+ICsgICAgfQ0KPiArICAgIE9mZnNldCArPSBz aXplb2YgKFVJTlQ2NCk7DQo+ICsgICAgVGFibGVQb2ludGVyKys7DQo+ICsgIH0gLy8gd2hpbGUN Cj4gK30NCj4gKw0KPiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ICsNCj4gKyAgQHBhcmFt IFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gKyAgQHBhcmFt IFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ICsNCj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVk Lg0KPiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUg QUNQSSBUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFk eSByZWdpc3RlcmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFt ZXRlciBpcyBpbnZhbGlkDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNw YWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YXJzZXIuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtYc2R0UGFyc2VyTGli Q29uc3RydWN0b3IgKA0KPiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIElt YWdlSGFuZGxlLA0KPiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3Rl bVRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gKyAg ICAgICAgICAgRUZJX0FDUElfNl8yX0VYVEVOREVEX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9T SUdOQVRVUkUsDQo+ICsgICAgICAgICAgIFBhcnNlQWNwaVhzZHQNCj4gKyAgICAgICAgICAgKTsN Cj4gK30NCj4gKw0KPiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gKw0KPiArICBAcGFy YW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiArICBAcGFy YW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gKw0K PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0 ZXJlZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMg bm90IHJlZ2lzdGVyZWQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtYc2R0 UGFyc2VyTGliRGVzdHJ1Y3RvciAoDQo+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAg ICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09O U1QgU3lzdGVtVGFibGUNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNl ciAoDQo+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9FWFRFTkRFRF9TWVNURU1fREVTQ1JJUFRJ T05fVEFCTEVfU0lHTkFUVVJFDQo+ICsgICAgICAgICAgICk7DQo+ICt9DQo+IGRpZmYgLS1naXQg YS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1hz ZHQvWHNkdFBhcnNlckxpYi5pbmYgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlckxpYi5pbmYNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uMmI5YTA1ODM2NDA1NjM3NTUyMDFjMDg5YWEyMDcwM2E4YjJjN2YwNA0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyTGliLmluZg0KPiBAQCAtMCwwICsxLDMzIEBADQo+ICsj IyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0 ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRo ZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UN Cj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4 dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyMgIGh0dHA6Ly9vcGVuc291cmNl Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4gKyMgIFRIRSBQUk9HUkFNIElT IERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0K PiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwg RUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMjDQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiAr ICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1FICAgICAgPSBYc2R0 UGFyc2VyTGliDQo+ICsgIEZJTEVfR1VJRCAgICAgID0gQTU3RUQ3QTItNENENi00MjM5LTlBNEQt RjdGMERCRENGQ0ZBDQo+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ICsgIE1PRFVMRV9UWVBF ICAgID0gRFhFX0RSSVZFUg0KPiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0K PiArICBDT05TVFJVQ1RPUiAgICA9IFhzZHRQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiArICBERVNU UlVDVE9SICAgICA9IFhzZHRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ICsNCj4gK1tTb3VyY2VzXQ0K PiArICBYc2R0UGFyc2VyLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtn LmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1v ZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiArICBTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYg0KPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmMgYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODgwMzEwZThmY2UzNDcxZWM1MGI4NWQ2ZmFiOTk1 YWExYzk3YWU1DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmMNCj4g QEAgLTAsMCArMSwxMDYgQEANCj4gKy8qKg0KPiArICBNYWluIGZpbGUgZm9yICdhY3Bpdmlldycg U2hlbGwgY29tbWFuZCBmdW5jdGlvbi4NCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAy MDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsgIFRoaXMgcHJv Z3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFu ZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJT RCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhl IGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKyAgaHR0cDovL29w ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9H UkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJB U0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBL SU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRl IDxHdWlkL1NoZWxsTGliSGlpR3VpZC5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvSGlpTGliLmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9TaGVsbENvbW1hbmRMaWIuaD4NCj4gKyNpbmNsdWRlIDxM aWJyYXJ5L1VlZmlMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNU YWJsZUxpYi5oPg0KPiArI2luY2x1ZGUgPFVlZmkuaD4NCj4gKyNpbmNsdWRlICJBY3BpVmlldy5o Ig0KPiArI2luY2x1ZGUgIlVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oIg0KPiArDQo+ICtD T05TVCBDSEFSMTYgZ1NoZWxsQWNwaVZpZXdGaWxlTmFtZVtdID0gTCJTaGVsbENvbW1hbmQiOw0K PiArDQo+ICsvKioNCj4gKyAgUmV0dXJuIHRoZSBmaWxlIG5hbWUgb2YgdGhlIGhlbHAgdGV4dCBm aWxlIGlmIG5vdCB1c2luZyBISUkuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgc3RyaW5nIHBvaW50 ZXIgdG8gdGhlIGZpbGUgbmFtZS4NCj4gKyovDQo+ICtDT05TVCBDSEFSMTYqDQo+ICtFRklBUEkN Cj4gK1NoZWxsQ29tbWFuZEdldE1hbkZpbGVOYW1lQWNwaVZpZXcgKA0KPiArICBWT0lEDQo+ICsg ICkNCj4gK3sNCj4gKyAgcmV0dXJuIGdTaGVsbEFjcGlWaWV3RmlsZU5hbWU7DQo+ICt9DQo+ICsN Cj4gKy8qKg0KPiArICBDb25zdHJ1Y3RvciBmb3IgdGhlIFNoZWxsIEFjcGlWaWV3IENvbW1hbmQg bGlicmFyeS4NCj4gKw0KPiArICBJbnN0YWxsIHRoZSBoYW5kbGVycyBmb3IgYWNwaXZpZXcgVUVG SSBTaGVsbCBjb21tYW5kLg0KPiArDQo+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgICAgICAg IFRoZSBpbWFnZSBoYW5kbGUgb2YgdGhlIHByb2Nlc3MuDQo+ICsgIEBwYXJhbSBTeXN0ZW1UYWJs ZSAgICAgICAgICAgIFRoZSBFRkkgU3lzdGVtIFRhYmxlIHBvaW50ZXIuDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIFNoZWxsIGNvbW1hbmQgaGFuZGxlcnMgd2Vy ZSBpbnN0YWxsZWQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1 bGx5Lg0KPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBIaWkgcGFja2FnZSBmYWls ZWQgdG8gaW5zdGFsbC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1NoZWxs QWNwaVZpZXdDb21tYW5kTGliQ29uc3RydWN0b3IgKA0KPiArICBJTiBFRklfSEFORExFICAgICAg ICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ ICsgICkNCj4gK3sNCj4gKyAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUgPSBOVUxMOw0KPiArDQo+ ICsgIC8vIENoZWNrIFNoZWxsIFByb2ZpbGUgRGVidWcxIGJpdCBvZiB0aGUgcHJvZmlsZXMgbWFz aw0KPiArICBpZiAoKEZpeGVkUGNkR2V0OCAoUGNkU2hlbGxQcm9maWxlTWFzaykgJiBCSVQxKSA9 PSAwKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArICB9DQo+ICsNCj4gKyAgZ1No ZWxsQWNwaVZpZXdIaWlIYW5kbGUgPSBIaWlBZGRQYWNrYWdlcyAoDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmZ1NoZWxsQWNwaVZpZXdIaWlHdWlkLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ0ltYWdlSGFuZGxlLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliU3RyaW5ncywNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE5VTEwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICk7DQo+ICsgIGlmIChnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9PSBOVUxMKSB7DQo+ICsg ICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ICsgIH0NCj4gKyAgLy8gSW5zdGFsbCBvdXIg U2hlbGwgY29tbWFuZCBoYW5kbGVyDQo+ICsgIFNoZWxsQ29tbWFuZFJlZ2lzdGVyQ29tbWFuZE5h bWUgKA0KPiArICAgIEwiYWNwaXZpZXciLA0KPiArICAgIFNoZWxsQ29tbWFuZFJ1bkFjcGlWaWV3 LA0KPiArICAgIFNoZWxsQ29tbWFuZEdldE1hbkZpbGVOYW1lQWNwaVZpZXcsDQo+ICsgICAgMCwN Cj4gKyAgICBMImFjcGl2aWV3IiwNCj4gKyAgICBUUlVFLA0KPiArICAgIGdTaGVsbEFjcGlWaWV3 SGlpSGFuZGxlLA0KPiArICAgIFNUUklOR19UT0tFTiAoU1RSX0dFVF9IRUxQX0FDUElWSUVXKQ0K PiArICAgICk7DQo+ICsNCj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiArfQ0KPiArDQo+ICsv KioNCj4gKyAgRGVzdHJ1Y3RvciBmb3IgdGhlIGxpYnJhcnkuIGZyZWUgYW55IHJlc291cmNlcy4N Cj4gKw0KPiArICBAcGFyYW0gSW1hZ2VIYW5kbGUgICAgICAgICAgICBUaGUgaW1hZ2UgaGFuZGxl IG9mIHRoZSBwcm9jZXNzLg0KPiArICBAcGFyYW0gU3lzdGVtVGFibGUgICAgICAgICAgICBUaGUg RUZJIFN5c3RlbSBUYWJsZSBwb2ludGVyLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQ SQ0KPiArU2hlbGxBY3BpVmlld0NvbW1hbmRMaWJEZXN0cnVjdG9yICgNCj4gKyAgSU4gRUZJX0hB TkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUgICpTeXN0 ZW1UYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIGlmIChnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSAh PSBOVUxMKSB7DQo+ICsgICAgSGlpUmVtb3ZlUGFja2FnZXMgKGdTaGVsbEFjcGlWaWV3SGlpSGFu ZGxlKTsNCj4gKyAgfQ0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9DQo+IGRpZmYgLS1n aXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIuaCBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjU5YzhlMjE1NDRkNjgyOWFjODcyOTU4ZjZiODQzNThlMWY5MWIwMmYNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuaA0KPiBAQCAtMCwwICsxLDMyIEBADQo+ICsv KioNCj4gKyAgSGVhZGVyIGZpbGUgZm9yICdhY3BpdmlldycgU2hlbGwgY29tbWFuZCBmdW5jdGlv bnMuDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxNywgQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBh bnlpbmcgbWF0ZXJpYWxzDQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5k ZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArICB3aGlj aCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxp Y2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNl cy9ic2QtbGljZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBV TkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyAgV0lUSE9VVCBX QVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1Mg T1IgSU1QTElFRC4NCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIFVFRklfU0hFTExfQUNQSVZJRVdf Q09NTUFORF9MSUJfSF8NCj4gKyNkZWZpbmUgVUVGSV9TSEVMTF9BQ1BJVklFV19DT01NQU5EX0xJ Ql9IXw0KPiArDQo+ICtleHRlcm4gRUZJX0hJSV9IQU5ETEUgZ1NoZWxsQWNwaVZpZXdIaWlIYW5k bGU7DQo+ICsNCj4gKy8qKg0KPiArICBGdW5jdGlvbiBmb3IgJ2FjcGl2aWV3JyBjb21tYW5kLg0K PiArDQo+ICsgIEBwYXJhbVtpbl0gSW1hZ2VIYW5kbGUgIEhhbmRsZSB0byB0aGUgSW1hZ2UgKE5V TEwgaWYgSW50ZXJuYWwpLg0KPiArICBAcGFyYW1baW5dIFN5c3RlbVRhYmxlICBQb2ludGVyIHRv IHRoZSBTeXN0ZW0gVGFibGUgKE5VTEwgaWYgSW50ZXJuYWwpLg0KPiArKi8NCj4gK1NIRUxMX1NU QVRVUw0KPiArRUZJQVBJDQo+ICtTaGVsbENvbW1hbmRSdW5BY3BpVmlldyAoDQo+ICsgIElOIEVG SV9IQU5ETEUgICAgICAgIEltYWdlSGFuZGxlLA0KPiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAq U3lzdGVtVGFibGUNCj4gKyAgKTsNCj4gKw0KPiArI2VuZGlmIC8vIFVFRklfU0hFTExfQUNQSVZJ RVdfQ09NTUFORF9MSUJfSF8NCj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5pbmYgYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1M2IyODk4ZTFhZTZkZGJjOGM3 YzBhMjkzMTJlNjAyYWIwNTQzYTMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIuaW5mDQo+IEBAIC0wLDAgKzEsNjAgQEANCj4gKyMjICBAZmlsZQ0KPiArIyBQcm92aWRl cyBTaGVsbCAnYWNwaXZpZXcnIGNvbW1hbmQgZnVuY3Rpb25zDQo+ICsjDQo+ICsjIENvcHlyaWdo dCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N Cj4gKyMNCj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMN Cj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMg dGhpcyBkaXN0cmlidXRpb24uIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZv dW5kIGF0DQo+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VO U0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBS RVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsj DQo+ICsjDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAgICAg ICAgICAgICAgICAgID0gMHgwMDAxMDAwNg0KPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAg ICAgICAgPSBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gKyAgRklMRV9HVUlEICAgICAg ICAgICAgICAgICAgICAgID0gRkI1QjMwNUUtODRGNS00NjFGLTk0MEQtODJEMzQ1NzU3QUZBDQo+ ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IFVFRklfRFJJVkVSDQo+ICsgIFZF UlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiArICBMSUJSQVJZX0NMQVNTICAg ICAgICAgICAgICAgICAgPSBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYnxVRUZJX0FQUExJQ0FUSU9O IFVFRklfRFJJVkVSIERYRV9SVU5USU1FX0RSSVZFUg0KPiArICBDT05TVFJVQ1RPUiAgICAgICAg ICAgICAgICAgICAgPSBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYkNvbnN0cnVjdG9yDQo+ICsgIERF U1RSVUNUT1IgICAgICAgICAgICAgICAgICAgICA9IFNoZWxsQWNwaVZpZXdDb21tYW5kTGliRGVz dHJ1Y3Rvcg0KPiArDQo+ICtbU291cmNlcy5jb21tb25dDQo+ICsgIFVlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi51bmkNCj4gKyAgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmMNCj4gKyAg VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmgNCj4gKyAgQWNwaVBhcnNlci5jDQo+ICsgIEFj cGlUYWJsZVBhcnNlci5jDQo+ICsgIEFjcGlWaWV3LmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiAr ICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gKyAgTWRl TW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiAr ICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ICsgIEJhc2VMaWINCj4gKyAgQmFzZU1lbW9yeUxpYg0K PiArICBEZWJ1Z0xpYg0KPiArICBTaGVsbENvbW1hbmRMaWINCj4gKyAgU2hlbGxMaWINCj4gKyAg VWVmaUxpYg0KPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWINCj4gKyAgVWVmaUJvb3RT ZXJ2aWNlc1RhYmxlTGliDQo+ICsgIFBjZExpYg0KPiArICBIaWlMaWINCj4gKyAgUHJpbnRMaWIN Cj4gKyAgRmlsZUhhbmRsZUxpYg0KPiArDQo+ICsNCj4gK1tGaXhlZFBjZF0NCj4gKyAgZ0VmaVNo ZWxsUGtnVG9rZW5TcGFjZUd1aWQuUGNkU2hlbGxQcm9maWxlTWFzayAjIyBDT05TVU1FUw0KPiAr DQo+ICtbR3VpZHNdDQo+ICsgIGdTaGVsbEFjcGlWaWV3SGlpR3VpZCAgICAgICAgICAgIyMgQ09O U1VNRVMgIyMgSElJDQo+ICsgIGdFZmlBY3BpVGFibGVHdWlkICAgICAgICAgICAgICAgIyMgU09N RVRJTUVTX0NPTlNVTUVTICMjIFN5c3RlbVRhYmxlDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIudW5pIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLnVuaQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzRkNjZl MWZmNTA3MDU0ZDRhYTQyYmQ0N2JmYWU4ODI0YzIxOGU2DQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliLnVuaQ0KPiBAQCAtMCwwICsxLDEyNyBAQA0KPiArLy8gLyoqDQo+ ICsvLw0KPiArLy8gQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxNywgQVJNIExpbWl0ZWQuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArLy8gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55 aW5nIG1hdGVyaWFscw0KPiArLy8gYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICsvLyB3aGlj aCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGlj ZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gKy8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNl cy9ic2QtbGljZW5zZS5waHANCj4gKy8vDQo+ICsvLyBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRF RCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKy8vIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBS RVNTIE9SIElNUExJRUQuDQo+ICsvLw0KPiArLy8gTW9kdWxlIE5hbWU6DQo+ICsvLw0KPiArLy8g VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLnVuaQ0KPiArLy8NCj4gKy8vIEFic3RyYWN0Og0K PiArLy8NCj4gKy8vIFN0cmluZyBkZWZpbml0aW9ucyBmb3IgVUVGSSBTaGVsbCBhY3BpdmlldyBj b21tYW5kDQo+ICsvLw0KPiArLy8NCj4gKy8vICovDQo+ICsNCj4gKy89Iw0KPiArDQo+ICsjbGFu Z2RlZiAgIGVuLVVTICJlbmdsaXNoIg0KPiArDQo+ICsjc3RyaW5nIFNUUl9HRU5fUFJPQkxFTSAg ICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46IFVua25vd24gZmxhZyAtICclSCVzJU4n XHJcbiINCj4gKyNzdHJpbmcgU1RSX0dFTl9OT19WQUxVRSAgICAgICAgICAjbGFuZ3VhZ2UgZW4t VVMgIiVIJXMlTjogTWlzc2luZyBhcmd1bWVudCBmb3IgZmxhZyAtICclSCVzJU4nXHJcbiINCj4g KyNzdHJpbmcgU1RSX0dFTl9UT09fTUFOWSAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMl TjogVG9vIG1hbnkgYXJndW1lbnRzLlxyXG4iDQo+ICsjc3RyaW5nIFNUUl9HRU5fTUlTU0lOR19P UFRJT04gICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46IE1pc3Npbmcgb3B0aW9uICclSCVzJU4n IHJlcXVpcmVkIGJ5IGZsYWcgLSAnJUglcyVOJ1xyXG4iDQo+ICsjc3RyaW5nIFNUUl9HRU5fUkVB RE9OTFlfTUVESUEgICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46IFVuYWJsZSB0byB3cml0ZSB0 byB0aGUgY3VycmVudCBkaXJlY3RvcnksIGNoZWNrIGlmIG1lZGlhIGlzIHdyaXRhYmxlLlxyXG4i DQo+ICsNCj4gKyNzdHJpbmcgU1RSX0dFVF9IRUxQX0FDUElWSUVXICAgI2xhbmd1YWdlIGVuLVVT ICIiDQo+ICsiLlRIIGFjcGl2aWV3IDAgIkRpc3BsYXkgQUNQSSBpbmZvcm1hdGlvbi4iXHJcbiIN Cj4gKyIuU0ggTkFNRVxyXG4iDQo+ICsiRGlzcGxheSBBQ1BJIFRhYmxlIGluZm9ybWF0aW9uLlxy XG4iDQo+ICsiLlNIIFNZTk9QU0lTXHJcbiINCj4gKyIgXHJcbiINCj4gKyJBQ1BJVklFVyBbWy0/ XSB8IFtbLWxdIHwgWy1zIEFjcGlUYWJsZSBbLWRdXV0gWy1jXSBbLXZdIFstaCBIaWdobGlnaHRd XVxyXG4iDQo+ICsiIFxyXG4iDQo+ICsiLlNIIE9QVElPTlNcclxuIg0KPiArIiBcclxuIg0KPiAr IiAgLWwgLSBEaXNwbGF5IGxpc3Qgb2YgaW5zdGFsbGVkIEFDUEkgVGFibGVzLlxyXG4iDQo+ICsi ICAtcyAtIERpc3BsYXkgb25seSB0aGUgc3BlY2lmaWVkIEFjcGlUYWJsZSB0eXBlLlxyXG4iDQo+ ICsiICAgICAgICAgQWNwaVRhYmxlICAgIDogVGhlIHJlcXVpcmVkIEFDUEkgVGFibGUgdHlwZS5c clxuIg0KPiArIiAgLWQgLSBHZW5lcmF0ZSBhIGJpbmFyeSBmaWxlIGR1bXAgb2YgdGhlIHNwZWNp ZmllZCBBY3BpVGFibGUuXHJcbiINCj4gKyIgIC1jIC0gQ29uc2lzdGVuY3kgY2hlY2tpbmcgKGVu YWJsZWQgYnkgZGVmYXVsdCkuXHJcbiINCj4gKyIgIC12IC0gRGlzcGxheSB2ZXJib3NlIGRhdGEg KGVuYWJsZWQgYnkgZGVmYXVsdCkuXHJcbiINCj4gKyIgIC1oIC0gRW5hYmxlL0Rpc2FibGUgQ29s b3VyIEhpZ2hsaWdodGluZy5cclxuIg0KPiArIiAgICAgICAgIEhpZ2hsaWdodCAgICA6IFRSVUUv T04gZW5hYmxlcyBoaWdobGlnaHRpbmc7XHJcbiINCj4gKyIgICAgICAgICAgICAgICAgICAgICAg ICBGQUxTRS9PRkYgKGRlZmF1bHQpIGRpc2FibGVzIGhpZ2hsaWdodGluZy5cclxuIg0KPiArIiAg LT8gLSBTaG93IGhlbHAuXHJcbiINCj4gKyIgXHJcbiINCj4gKyIuU0ggREVTQ1JJUFRJT05cclxu Ig0KPiArIiBcclxuIg0KPiArIiAgVGhpcyBwcm9ncmFtIGlzIHByb3ZpZGVkIHRvIGFsbG93IGV4 YW1pbmF0aW9uIG9mIEFDUEkgdGFibGUgdmFsdWVzIGZyb20gdGhlXHJcbiINCj4gKyIgIFVFRkkg U2hlbGwuICBUaGlzIGNhbiBoZWxwIHdpdGggaW52ZXN0aWdhdGlvbnMsIGVzcGVjaWFsbHkgYXQg dGhhdCBzdGFnZSB3aGVyZVxyXG4iDQo+ICsiICB0aGUgdGFibGVzIGFyZSBub3QgZW5hYmxpbmcg YW4gT1MgdG8gYm9vdC5cclxuIg0KPiArIiAgVGhlIHByb2dyYW0gaXMgbm90IGV4aGF1c3RpdmUs IGFuZCBvbmx5IGVuY2Fwc3VsYXRlcyBkZXRhaWxlZCBrbm93bGVkZ2Ugb2YgYVxyXG4iDQo+ICsi ICBsaW1pdGVkIG51bWJlciBvZiB0YWJsZSB0eXBlcy5cclxuIg0KPiArIiBcclxuIg0KPiArIiAg RGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gZGlzcGxheSB0aGUgY29udGVudCBvZiBhbGwgdGFibGVz IGluc3RhbGxlZC5cclxuIg0KPiArIiAgJ0tub3duJyB0YWJsZSB0eXBlcyAobGlzdGVkIGluIE5P VEVTIGJlbG93KSB3aWxsIGJlIHBhcnNlZCBhbmQgZGlzcGxheWVkXHJcbiINCj4gKyIgIHdpdGgg ZGVzY3JpcHRpb25zIGFuZCBmaWVsZCB2YWx1ZXMuICBXaGVyZSBhcHByb3ByaWF0ZSBhIGRlZ3Jl ZSBvZiBjb25zaXN0ZW5jeVxyXG4iDQo+ICsiICBjaGVja2luZyBpcyBkb25lIGFuZCBlcnJvcnMg bWF5IGJlIHJlcG9ydGVkIGluIHRoZSBvdXRwdXQuXHJcbiINCj4gKyIgIE90aGVyIHRhYmxlIHR5 cGVzIHdpbGwgYmUgZGlzcGxheWVkIGFzIGFuIGFycmF5IG9mIEhleGFkZWNpbWFsIGJ5dGVzLlxy XG4iDQo+ICsiIFxyXG4iDQo+ICsiICBUbyBmYWNpbGl0YXRlIGRlYnVnZ2luZywgdGhlIC1zIGFu ZCAtZCBvcHRpb25zIGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIGFcclxuIg0KPiArIiAgYmluYXJ5 IGZpbGUgaW1hZ2Ugb2YgYSB0YWJsZSB0aGF0IGNhbiBiZSBjb3BpZWQgZWxzZXdoZXJlIGZvciBp bnZlc3RpZ2F0aW9uXHJcbiINCj4gKyIgIHVzaW5nIHRvb2xzIHN1Y2ggYXMgdGhvc2UgcHJvdmlk ZWQgYnkgYWNwaWNhLm9yZy4gIFRoaXMgaXMgZXNwZWNpYWxseSByZWxldmFudFxyXG4iDQo+ICsi ICBmb3IgQU1MIHR5cGUgdGFibGVzIGxpa2UgRFNEVCBhbmQgU1NEVC5cclxuIg0KPiArIiBcclxu Ig0KPiArIk5PVEVTOlxyXG4iDQo+ICsiICAxLiBUaGUgQWNwaVRhYmxlIHBhcmFtZXRlciBjYW4g bWF0Y2ggYW55IGluc3RhbGxlZCB0YWJsZSB0eXBlLlxyXG4iDQo+ICsiICAgICBUYWJsZXMgd2l0 aG91dCBzcGVjaWZpYyBoYW5kbGluZyB3aWxsIGJlIGRpc3BsYXllZCBhcyBhIHJhdyBoZXggZHVt cCAob3JcclxuIg0KPiArIiAgICAgZHVtcGVkIHRvIGEgZmlsZSBpZiAtZCBpcyB1c2VkKS5cclxu Ig0KPiArIiAgMi4gRm9ybWF0dGVkIGRpc3BsYXkgYW5kIGNoZWNraW5nIGlzIHByb3ZpZGVkIGZv ciB0aGVzZSBzaWduYXR1cmUgdHlwZXM6XHJcbiINCj4gKyIgICAgICAgQVBJQyAgLSBNdWx0aXBs ZSBBUElDIERlc2NyaXB0aW9uIFRhYmxlIChNQURUKVxyXG4iDQo+ICsiICAgICAgIEJHUlQgIC0g Qm9vdCBHcmFwaGljcyBSZXNvdXJjZSBUYWJsZVxyXG4iDQo+ICsiICAgICAgIERCRzIgIC0gRGVi dWcgUG9ydCBUYWJsZSAyXHJcbiINCj4gKyIgICAgICAgRkFDUCAgLSBGaXhlZCBBQ1BJIERlc2Ny aXB0aW9uIFRhYmxlIChGQURUKVxyXG4iDQo+ICsiICAgICAgIEdURFQgIC0gR2VuZXJpYyBUaW1l ciBEZXNjcmlwdGlvbiBUYWJsZVxyXG4iDQo+ICsiICAgICAgIElPUlQgIC0gSU8gUmVtYXBwaW5n IFRhYmxlXHJcbiINCj4gKyIgICAgICAgTUNGRyAgLSBNZW1vcnkgTWFwcGVkIENvbmZpZyBTcGFj ZSBCYXNlIEFkZHJlc3MgRGVzY3JpcHRpb24gVGFibGVcclxuIg0KPiArIiAgICAgICBSU0RQICAt IFJvb3QgU3lzdGVtIERlc2NyaXB0aW9uIFBvaW50ZXJcclxuIg0KPiArIiAgICAgICBTTElUICAt IFN5c3RlbSBMb2NhbGl0eSBJbmZvcm1hdGlvbiBUYWJsZVxyXG4iDQo+ICsiICAgICAgIFNQQ1Ig IC0gU2VyaWFsIFBvcnQgQ29uc29sZSBSZWRpcmVjdGlvbiBUYWJsZVxyXG4iDQo+ICsiICAgICAg IFNSQVQgIC0gU3lzdGVtIFJlc291cmNlIEFmZmluaXR5IFRhYmxlXHJcbiINCj4gKyIgICAgICAg WFNEVCAgLSBFeHRlbmRlZCBTeXN0ZW0gRGVzY3JpcHRpb24gVGFibGVcclxuIg0KPiArIiBcclxu Ig0KPiArIi5TSCBTVEFOREFSRFNcclxuIg0KPiArIiBcclxuIg0KPiArIiAgVGFibGUgZGV0YWls cyBjb3JyZXNwb25kIHRvIHRob3NlIGluICdBZHZhbmNlZCBDb25maWd1cmF0aW9uIGFuZCBQb3dl clxyXG4iDQo+ICsiICBJbnRlcmZhY2UgU3BlY2lmaWNhdGlvbicgVmVyc2lvbiA2LjIgRXJyYXRh IEEsIFtTZXB0ZW1iZXIgMjAxN11cclxuIg0KPiArIiAgKGh0dHA6Ly93d3cudWVmaS5vcmcvc2l0 ZXMvZGVmYXVsdC9maWxlcy9yZXNvdXJjZXMvQUNQSSUyMDZfMl9BX1NlcHQyOS5wZGYpXHJcbiIN Cj4gKyIgXHJcbiINCj4gKyIgIE5PVEU6IFRoZSBuYXR1cmUgb2YgdGhlIEFDUEkgc3RhbmRhcmQg bWVhbnMgdGhhdCBhbG1vc3QgYWxsIHRhYmxlcyBpbiA2LjEgd2lsbFxyXG4iDQo+ICsiICAgICAg ICBiZSAnYmFja3dhcmRzIGNvbXBhdGlibGUnIHdpdGggcHJpb3IgdmVyc2lvbiBvZiB0aGUgc3Bl Y2lmaWNhdGlvbiBpblxyXG4iDQo+ICsiICAgICAgICB0ZXJtcyBvZiBzdHJ1Y3R1cmUsIHNvIGZv cm1hdHRlZCBvdXRwdXQgc2hvdWxkIGJlIGNvcnJlY3QuICBUaGUgbWFpblxyXG4iDQo+ICsiICAg ICAgICBleGNlcHRpb24gd2lsbCBiZSB0aGF0IHByZXZpb3VzbHkgJ3Jlc2VydmVkJyBmaWVsZHMg d2lsbCBiZSByZXBvcnRlZFxyXG4iDQo+ICsiICAgICAgICB3aXRoIG5ldyBuYW1lcywgd2hlcmUg dGhleSBoYXZlIGJlZW4gYWRkZWQgaW4gbGF0ZXIgdmVyc2lvbnMgb2YgdGhlXHJcbiINCj4gKyIg ICAgICAgIHNwZWNpZmljYXRpb24uXHJcbiINCj4gKyIgXHJcbiINCj4gKyIuU0ggRVhBTVBMRVNc clxuIg0KPiArIiBcclxuIg0KPiArIiBcclxuIg0KPiArIkVYQU1QTEVTOlxyXG4iDQo+ICsiICAq IFRvIGRpc3BsYXkgYSBsaXN0IG9mIHRoZSBpbnN0YWxsZWQgdGFibGUgdHlwZXM6XHJcbiINCj4g KyIgICAgZnMwOlw+IGFjcGl2aWV3IC1sXHJcbiINCj4gKyIgXHJcbiINCj4gKyIgICogVG8gcGFy c2UgYW5kIGRpc3BsYXkgYSBzcGVjaWZpYyB0YWJsZSB0eXBlOlxyXG4iDQo+ICsiICAgIGZzMDpc PiBhY3BpdmlldyAtcyBHVERUXHJcbiINCj4gKyIgXHJcbiINCj4gKyIgICogVG8gc2F2ZSBhIGJp bmFyeSBkdW1wIG9mIHRoZSBjb250ZW50cyBvZiBhIHRhYmxlIHRvIGEgZmlsZVxyXG4iDQo+ICsi ICAgIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5OlxyXG4iDQo+ICsiICAgIGZzMDpc PiBhY3BpdmlldyAtcyBEU0RUIC1kXHJcbiINCj4gKyIgXHJcbiINCj4gKyIgICogVG8gZGlzcGxh eSBjb250ZW50cyBvZiBhbGwgQUNQSSB0YWJsZXM6XHJcbiINCj4gKyIgICAgZnMwOlw+IGFjcGl2 aWV3XHJcbiINCj4gKyIgXHJcbiINCj4gKyIuU0ggUkVUVVJOVkFMVUVTXHJcbiINCj4gKyIgXHJc biINCj4gKyJSRVRVUk4gVkFMVUVTOlxyXG4iDQo+ICsiICBTSEVMTF9TVUNDRVNTICAgICAgICAg ICAgIERhdGEgd2FzIGRpc3BsYXllZCBhcyByZXF1ZXN0ZWQuXHJcbiINCj4gKyIgIFNIRUxMX0lO VkFMSURfUEFSQU1FVEVSICAgQUNQSSBUYWJsZSBwYXJzaW5nIGZhaWxlZC5cclxuIg0KPiArIiBc clxuIg0KPiArDQo+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9TaGVsbFBrZy5kZWMgYi9TaGVsbFBr Zy9TaGVsbFBrZy5kZWMNCj4gaW5kZXggMGM0Zjc0ZmY0MTcyNmM0YTI4ZWQwODI4NDljMWI4NjRi MWM0ODc1Mi4uYzA5MGFhNGQwOGJlM2FhZDRkOWFlZGI1NDJjMDEwNTZiY2U0Njk2OSAxMDA2NDQN Cj4gLS0tIGEvU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ICsrKyBiL1NoZWxsUGtnL1NoZWxsUGtn LmRlYw0KPiBAQCAtMyw2ICszLDcgQEANCj4gICAjDQo+ICAgIyAoQykgQ29weXJpZ2h0IDIwMTMt MjAxNCBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLjxCUj4NCj4gICAj IENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gKyMgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0 ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAgICMNCj4gICAjIFRoaXMgcHJvZ3JhbSBh bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWls YWJsZSB1bmRlcg0KPiAgICMgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGlj ZW5zZSB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4NCj4gQEAgLTU2LDcgKzU3 LDcgQEAgW0d1aWRzXQ0KPiAgICAgZ1NoZWxsTmV0d29yazJIaWlHdWlkICAgICAgICAgICA9IHsw eDE3NGIyYjUsIDB4ZjUwNSwgMHg0YjEyLCB7MHhhYSwgMHg2MCwgMHg1OSwgMHhkZiwgMHhmOCwg MHhkNiwgMHhlYSwgMHgzN319DQo+ICAgICBnU2hlbGxUZnRwSGlpR3VpZCAgICAgICAgICAgICAg ID0gezB4NzM4YTkzMTQsIDB4ODJjMSwgMHg0NTkyLCB7MHg4ZiwgMHhmNywgMHhjMSwgMHhiZCwg MHhmMSwgMHhiMiwgMHgwZSwgMHhkNH19DQo+ICAgICBnU2hlbGxCY2ZnSGlpR3VpZCAgICAgICAg ICAgICAgID0gezB4NWY1ZjYwNWQsIDB4MTU4MywgMHg0YTJkLCB7MHhhNiwgMHhiMiwgMHhlYiwg MHgxMiwgMHhkYSwgMHhiNCwgMHhhMiwgMHhiNn19DQo+IC0NCj4gKyAgZ1NoZWxsQWNwaVZpZXdI aWlHdWlkICAgICAgICAgICA9IHsweGRhOGNjZGY0LCAweGVkOGYsIDB4NGZmYywgezB4YjUsIDB4 ZWYsIDB4MmUsIDB4ZjUsIDB4NWUsIDB4MjQsIDB4OTMsIDB4MmF9fQ0KPiAgICAgIyBGSUxFX0dV SUQgYXMgZGVmaW5lZCBpbiBTaGVsbFBrZy9BcHBsaWNhdGlvbi9TaGVsbC9TaGVsbC5pbmYNCj4g ICAgIGdVZWZpU2hlbGxGaWxlR3VpZCAgICAgICAgICAgICAgPSB7MHg3YzA0YTU4MywgMHg5ZTNl LCAweDRmMWMsIHsweGFkLCAweDY1LCAweGUwLCAweDUyLCAweDY4LCAweGQwLCAweGI0LCAweGQx fX0NCj4gICANCj4gDQoNCg0KLS0gDQpUaGFua3MsDQpSYXkNCg==