From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.107.4.60; helo=eur03-db5-obe.outbound.protection.outlook.com; envelope-from=matteo.carlini@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40060.outbound.protection.outlook.com [40.107.4.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 814B7210F4BC3 for ; Fri, 24 Aug 2018 11:03:48 -0700 (PDT) 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:X-MS-Exchange-SenderADCheck; bh=HSjnr5urFt4QrNqC+8PHvdFadpOeygOeVqZRBXSmNGo=; b=fRUqO9RRI4MsEbSc7w9P3eKS/9EgiyfFIBMJmntREaMUO/vigURKp/K8IuEZW1mzbMRy06cqzq3yrAE+Dce4aWeuXMFsXvMACQEhw6wpjVoasotWZ4lZ/uVObgCII8BuAFZTfXw7UY7NLTj3QlZborUozQho0kVzcIkmOGgu07k= Received: from DB5PR08MB0901.eurprd08.prod.outlook.com (10.166.13.26) by DB5PR08MB0678.eurprd08.prod.outlook.com (10.169.33.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1080.13; Fri, 24 Aug 2018 18:03:44 +0000 Received: from DB5PR08MB0901.eurprd08.prod.outlook.com ([fe80::e8f8:e368:46f5:d1d6]) by DB5PR08MB0901.eurprd08.prod.outlook.com ([fe80::e8f8:e368:46f5:d1d6%4]) with mapi id 15.20.1080.015; Fri, 24 Aug 2018 18:03:44 +0000 From: Matteo Carlini To: Udit Kumar , Ard Biesheuvel , Achin Gupta CC: Sumit Garg , "edk2-devel@lists.01.org" , "tee-dev@lists.linaro.org" , "daniel.thompson@linaro.org" , "jens.wiklander@linaro.org" , Rod Dorris Thread-Topic: [edk2] [PATCH 1/1] ArmPkg/OpteeLib: Add APIs to communicate with OP-TEE Thread-Index: AQHUO4vqmu6xlR9ybUufvkk4jiVV26TPFcQAgAAU0wCAAALjAIAAAPkg Date: Fri, 24 Aug 2018 18:03:43 +0000 Message-ID: References: <1535102474-24383-1-git-send-email-sumit.garg@linaro.org> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Matteo.Carlini@arm.com; x-originating-ip: [81.157.244.84] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB5PR08MB0678; 6:xOY6vR7HyuP8SexxvUrzT5tYJl/JrdPRzCs3vYnCEgNEhVZDaU5SplWD95O1ncNLTbdWd3OZlpC/OrNUblQl7+ZkxeSWj4+0mw1kmZ7qjjdYRG3eu/bIBdYj/iptRbbqrgVcH726jkjgD6IAR87pxSnuOdf4IKYTF28mvhKuJqwDiRgCK76Tvo2nMSBSeKNE6xvmEV2TcJHBJsWL75HjrtUj0yPpcRDSL0oOn2IMP5jiV9E3/JzyOiF+nPPo0InrJ1alubx7TjAcdAc1c8tOcRNreAHbu/QhVwUbXlHgKyjEywf9fwpgXW7FGb7duPOSYYgpTlQgtQzyD25fRH99Ry1GC+dFL3Ze8QhHQxnPxeJxgnp3y3eYeA++DWkrjLBVq4orYZCRKcgudhz9WogVgra/Mmi8xyI2IjjIZbZiZb13EvbgmWByJjLl015Lf54l/mZhPVhStgdA+C6Z/b5vSw==; 5:qoKLSSi+WjGG3YkhrcBl63oJTaNbroe10KdLROSDwGKRsPiNMiiau3grPQZuA9z9JQlhkevpAmjMx/pXXb22Kyva8uDGZwZ3cCNFRZUD21MH8wD46Zt8R4PEmvv5hcIjnkt1jEiUeKc+Ynw67Salk8hB8VWpAW+jDVkteMw8DQA=; 7:jO1ziJ4Tuv4jYmReyUb0pRs8WpVrdfkSBoPhNjwQZz6PdrDvtzBvgGL3HOCuzh6fmYsWxo3AiSscVQXO7Xh9cadb2MpDwJJqDpsz33OYnSxBWbD6Sjktnix5wdyoYCm/19ITAaWxs49AxNgSMxQYfH2YXB3m9Y9U20UyFEE+dEy+hsWSMmS+Hy+2DVAu5dLLNN9zF4C69e9RuDiA1EzhsS7zMXeBzFNy5qfawvGBudtrj8uGnPFDu0ClEcgJkpd9 x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-correlation-id: b8d76ada-c3fa-4ece-074e-08d609ebee5b x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:DB5PR08MB0678; x-ms-traffictypediagnostic: DB5PR08MB0678: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(11711142671493)(189930954265078)(185117386973197)(223705240517415)(162533806227266)(1553240931313)(45079756050767); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(823301075)(93006095)(93001095)(3231311)(944501410)(52105095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699016); SRVR:DB5PR08MB0678; BCL:0; PCL:0; RULEID:; SRVR:DB5PR08MB0678; x-forefront-prvs: 07749F8C42 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(136003)(39860400002)(396003)(376002)(40434004)(13464003)(189003)(199004)(66066001)(102836004)(81156014)(6246003)(81166006)(97736004)(33656002)(26005)(5024004)(74316002)(14444005)(256004)(5660300001)(53546011)(186003)(5250100002)(8676002)(305945005)(105586002)(7736002)(68736007)(6506007)(6116002)(106356001)(3846002)(6636002)(2906002)(55016002)(966005)(486006)(575784001)(86362001)(8936002)(99286004)(2900100001)(53946003)(25786009)(93886005)(9686003)(316002)(6306002)(45080400002)(7696005)(76176011)(6436002)(229853002)(110136005)(72206003)(14454004)(54906003)(11346002)(446003)(4326008)(478600001)(476003)(16799955002)(53936002)(579004)(559001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR08MB0678; H:DB5PR08MB0901.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: /y0Y35vv3kcF/pkoR+QOq1plVh8kuK8Y90CuIEYmugsomsHcxCvm5zUdbUw04xl9fc8HjLFHW/1eMUfzTVe/mCxSH0j9zgcCoi1N1skqkH1FJSxYwYnDCVc64aOKiM4RNiYa8oqAf8etc7bgwdZZF7yV35LXaNqI72uz3WSPu4J9Uak8fvGFfgPGXdCXbAg2iqAOmvW4aB8RKOxxLUfpTCpYN1ORHmyFCm64UAwDNd0tTPMkRoMx/E8jde6jH5DU0Nd4MG1qoFQSIUvkMPUKzrtmp4wlB0dcgpiWJ+UJaSD6ro8GUwRR+xBRgCS9wscjRB0E5qUSlNrEWiPBCt3OEL8l0beWF5KIOav5LPhYjIc= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: b8d76ada-c3fa-4ece-074e-08d609ebee5b X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Aug 2018 18:03:43.8689 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR08MB0678 Subject: Re: [PATCH 1/1] ArmPkg/OpteeLib: Add APIs to communicate with OP-TEE X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Aug 2018 18:03:50 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 K0FjaGluDQoNClNQRCAoZm9yIE9QLVRFRSBhbmQgb3RoZXIgVHJ1c3RlZC1PU2VzIHBheWxvYWRz IHJ1bm5pbmcgYXQgUy1FTDEpIGFuZCBTUE0gKGZvciBTZWN1cmUgUGFydGl0aW9ucyBhdCBTLUVM MCkgYXJlIGN1cnJlbnRseSBtdXR1YWxseSBleGNsdXNpdmUgaW50byBUcnVzdGVkIEZpcm13YXJl LUEgY29kZWJhc2UuDQoNCkluIG90aGVyIHdvcmRzLCB5b3UgY2Fubm90IHR1cm4gdGhlbSBvbiBp biBwYXJhbGxlbCBhbmQgZXhlY3V0ZSBib3RoIGEgUy1FTDEgVHJ1c3RlZCBPUyBBTkQgKG9uZSBv ciBtYW55KSBTLUVMMCBTZWN1cmUgUGFydGl0aW9ucyBpbiB0aGUgU2VjdXJlIFdvcmxkIHdpdGgg dGhlIGN1cnJlbnQgU29mdHdhcmUgQXJjaGl0ZWN0dXJlLg0KDQpBY2hpbiBhbmQgb3RoZXIgQXJt IGFyY2hpdGVjdHMgYXJlIHRyeWluZyB0byBmaWd1cmUgb3V0IGEgd2F5IGZvciBzb2x2aW5nIHRo aXMgcHJvYmxlbSB3aXRob3V0IHRoZSBuZWVkIGZvciBhIHY4LjQgU2VjdXJlLUVMMiBIeXBlcnZp c29yLCBvYnZpb3VzbHkgd2l0aG91dCBsZXZlcmFnaW5nIHRoZSBpc29sYXRpb24gYmVuZWZpdHMg b2YgaXQgKHNlZSBhbHNvIFsxXSkuDQoNCkJ1dCBBcmQgaXMgcmlnaHQ6IHRoZXJlIGNvdWxkIGJl IHVzZS1jYXNlcyB0byBzaGlwIFVFRkkgc3lzdGVtcyB3aXRoIE9QLVRFRSBhbmQgVEFzIG9uIHRv cC4uLmFuZCB0aGlzIHNob3VsZCBzdGlsbCBiZSBjdXJyZW50bHkgcG9zc2libGUgdXNpbmcgdGhl IFNQRCBkaXNwYXRjaGVyIGludG8gVEYtQS4gSSd2ZSBub3QgbG9va2VkIGRlZXBseSBpbnRvIHRo aXMgcGF0Y2gsIGJ1dCBpdCBkb2VzbuKAmXQgc2VlbSB0byBjb250cmFkaWN0IHRoZSBhYm92ZSBT dyBhcmNoaXRlY3R1cmUuDQoNClRoZSBxdWVzdGlvbiB3b3VsZCBiZTogd291bGQgeW91IGZvcmVz ZWUgdGhlIG5lZWQgZm9yIHJ1bm5pbmcgb25lIChvciBtYW55KSBvdGhlciAoVUVGSS9FREsyLWJh c2VkKSBTZWN1cmUgU2VydmljZXMgaW4gdGhlIFNlY3VyZSBXb3JsZCBpbnRvIGEgU2VjdXJlIFBh cnRpdGlvbiAodXNpbmcgdGhlIFN0YW5kYWxvbmVNbVBrZykgKnRvZ2V0aGVyKiB3aXRoIE9QLVRF RT8NCg0KVGhhbmtzDQpNYXR0ZW8NCg0KWzFdOiBodHRwczovL2NvbW11bml0eS5hcm0uY29tL3By b2Nlc3NvcnMvYi9ibG9nL3Bvc3RzL2FyY2hpdGVjdGluZy1tb3JlLXNlY3VyZS13b3JsZC13aXRo LWlzb2xhdGlvbi1hbmQtdmlydHVhbGl6YXRpb24NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiBGcm9tOiBVZGl0IEt1bWFyIDx1ZGl0Lmt1bWFyQG54cC5jb20+DQo+IFNlbnQ6IDI0 IEF1Z3VzdCAyMDE4IDE4OjQ2DQo+IFRvOiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxA bGluYXJvLm9yZz47IE1hdHRlbyBDYXJsaW5pDQo+IDxNYXR0ZW8uQ2FybGluaUBhcm0uY29tPg0K PiBDYzogU3VtaXQgR2FyZyA8c3VtaXQuZ2FyZ0BsaW5hcm8ub3JnPjsgZWRrMi1kZXZlbEBsaXN0 cy4wMS5vcmc7IHRlZS0NCj4gZGV2QGxpc3RzLmxpbmFyby5vcmc7IGRhbmllbC50aG9tcHNvbkBs aW5hcm8ub3JnOyBqZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnOw0KPiBSb2QgRG9ycmlzIDxyb2Qu ZG9ycmlzQG54cC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENIIDEvMV0gQXJtUGtn L09wdGVlTGliOiBBZGQgQVBJcyB0byBjb21tdW5pY2F0ZQ0KPiB3aXRoIE9QLVRFRQ0KPg0KPiBI aSBBcmQNCj4NCj4gPiBJZiBNTSBtb2RlIGlzIGZ1bmRhbWVudGFsbHkgaW5jb21wYXRpYmxlIHdp dGggT1AtVEVFLCB0aGVuIHlvdSBjYW5ub3QNCj4gPiBydW4gYm90aCBhdCB0aGUgc2FtZSB0aW1l LA0KPg0KPiBCb3RoIGNhbm5vdCBjb2V4aXN0IHVubGVzcyB5b3UgaGF2ZSB2OC40IENQVQ0KPg0K PiBSZWdhcmRzDQo+IFVkaXQNCj4NCj4gPg0KPiA+DQo+ID4gPj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiA+PiBGcm9tOiBlZGsyLWRldmVsIDxlZGsyLWRldmVsLWJvdW5jZXNAbGlz dHMuMDEub3JnPiBPbiBCZWhhbGYgT2YNCj4gPiA+PiBTdW1pdCBHYXJnDQo+ID4gPj4gU2VudDog RnJpZGF5LCBBdWd1c3QgMjQsIDIwMTggMjo1MSBQTQ0KPiA+ID4+IFRvOiBlZGsyLWRldmVsQGxp c3RzLjAxLm9yZw0KPiA+ID4+IENjOiBkYW5pZWwudGhvbXBzb25AbGluYXJvLm9yZzsgdGVlLWRl dkBsaXN0cy5saW5hcm8ub3JnOw0KPiA+ID4+IGplbnMud2lrbGFuZGVyQGxpbmFyby5vcmcNCj4g PiA+PiBTdWJqZWN0OiBbZWRrMl0gW1BBVENIIDEvMV0gQXJtUGtnL09wdGVlTGliOiBBZGQgQVBJ cyB0bw0KPiA+ID4+IGNvbW11bmljYXRlIHdpdGggT1AtVEVFDQo+ID4gPj4NCj4gPiA+PiBBZGQg Zm9sbG93aW5nIEFQSXMgdG8gY29tbXVuaWNhdGUgd2l0aCBPUC1URUUgc3RhdGljIFRBOg0KPiA+ ID4+IDEuIE9wdGVlSW5pdA0KPiA+ID4+IDIuIE9wdGVlT3BlblNlc3Npb24NCj4gPiA+PiAzLiBP cHRlZUNsb3NlU2Vzc2lvbg0KPiA+ID4+IDQuIE9wdGVlSW52b2tlRnVuYw0KPiA+ID4+DQo+ID4g Pj4gQ2M6IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KPiA+ID4+ IENjOiBMZWlmIExpbmRob2xtIDxsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc+DQo+ID4gPj4gQ29u dHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiA+ ID4+IFNpZ25lZC1vZmYtYnk6IFN1bWl0IEdhcmcgPHN1bWl0LmdhcmdAbGluYXJvLm9yZz4NCj4g PiA+PiAtLS0NCj4gPiA+PiAgQXJtUGtnL0luY2x1ZGUvTGlicmFyeS9PcHRlZUxpYi5oICAgICAg ICAgICAgICAgICAgfCAxMDIgKysrKysrDQo+ID4gPj4gIEFybVBrZy9MaWJyYXJ5L09wdGVlTGli L09wdGVlLmMgICAgICAgICAgICAgICAgICAgIHwgMzU4DQo+ID4gPj4gKysrKysrKysrKysrKysr KysrKysrDQo+ID4gPj4gIEFybVBrZy9MaWJyYXJ5L09wdGVlTGliL09wdGVlTGliLmluZiAgICAg ICAgICAgICAgIHwgICAyICsNCj4gPiA+PiAgQXJtUGtnL0xpYnJhcnkvT3B0ZWVMaWIvT3B0ZWVT bWMuaCAgICAgICAgICAgICAgICAgfCAgNDMgKysrDQo+ID4gPj4gIC4uLi9JbmNsdWRlL0luZHVz dHJ5U3RhbmRhcmQvR2xvYmFsUGxhdGZvcm0uaCAgICAgIHwgIDYwICsrLS0NCj4gPiA+PiAgNSBm aWxlcyBjaGFuZ2VkLCA1MzEgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pICBjcmVhdGUg bW9kZQ0KPiA+ID4+IDEwMDY0NCBBcm1Qa2cvTGlicmFyeS9PcHRlZUxpYi9PcHRlZVNtYy5oDQo+ ID4gPj4gIGNvcHkgQXJtUGtnL0luY2x1ZGUvTGlicmFyeS9PcHRlZUxpYi5oID0+DQo+ID4gPj4g TWRlUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9HbG9iYWxQbGF0Zm9ybS5oICg1MyUpDQo+ ID4gPj4NCj4gPiA+PiBkaWZmIC0tZ2l0IGEvQXJtUGtnL0luY2x1ZGUvTGlicmFyeS9PcHRlZUxp Yi5oDQo+ID4gPj4gYi9Bcm1Qa2cvSW5jbHVkZS9MaWJyYXJ5L09wdGVlTGliLmgNCj4gPiA+PiBp bmRleCBmNjVkODY3NGQ5YjguLmMzMjNmNDkwNzJmOCAxMDA2NDQNCj4gPiA+PiAtLS0gYS9Bcm1Q a2cvSW5jbHVkZS9MaWJyYXJ5L09wdGVlTGliLmgNCj4gPiA+PiArKysgYi9Bcm1Qa2cvSW5jbHVk ZS9MaWJyYXJ5L09wdGVlTGliLmgNCj4gPiA+PiBAQCAtMjUsMTAgKzI1LDExMiBAQA0KPiA+ID4+ ICAjZGVmaW5lIE9QVEVFX09TX1VJRDIgICAgICAgICAgMHhhZjYzMDAwMg0KPiA+ID4+ICAjZGVm aW5lIE9QVEVFX09TX1VJRDMgICAgICAgICAgMHhhNWQ1YzUxYg0KPiA+ID4+DQo+ID4gPj4gKyNk ZWZpbmUgT1BURUVfTVNHX0FUVFJfVFlQRV9OT05FICAgICAgICAgICAgICAgIDB4MA0KPiA+ID4+ ICsjZGVmaW5lIE9QVEVFX01TR19BVFRSX1RZUEVfVkFMVUVfSU5QVVQgICAgICAgICAweDENCj4g PiA+PiArI2RlZmluZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX09VVFBVVCAgICAgICAgMHgy DQo+ID4gPj4gKyNkZWZpbmUgT1BURUVfTVNHX0FUVFJfVFlQRV9WQUxVRV9JTk9VVCAgICAgICAg IDB4Mw0KPiA+ID4+ICsjZGVmaW5lIE9QVEVFX01TR19BVFRSX1RZUEVfTUVNX0lOUFVUICAgICAg ICAgICAweDkNCj4gPiA+PiArI2RlZmluZSBPUFRFRV9NU0dfQVRUUl9UWVBFX01FTV9PVVRQVVQg ICAgICAgICAgMHhhDQo+ID4gPj4gKyNkZWZpbmUgT1BURUVfTVNHX0FUVFJfVFlQRV9NRU1fSU5P VVQgICAgICAgICAgIDB4Yg0KPiA+ID4+ICsNCj4gPiA+PiArI2RlZmluZSBPUFRFRV9NU0dfQVRU Ul9UWVBFX01BU0sgICAgICAgICAgICAgICAgMHhmZg0KPiA+ID4+ICsNCj4gPiA+PiArdHlwZWRl ZiBzdHJ1Y3Qgew0KPiA+ID4+ICsgIFVJTlQ2NCAgICBCdWZQdHI7DQo+ID4gPj4gKyAgVUlOVDY0 ICAgIFNpemU7DQo+ID4gPj4gKyAgVUlOVDY0ICAgIFNobVJlZjsNCj4gPiA+PiArfSBPUFRFRV9N U0dfUEFSQU1fTUVNOw0KPiA+ID4+ICsNCj4gPiA+PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ID4+ ICsgIFVJTlQ2NCAgICBBOw0KPiA+ID4+ICsgIFVJTlQ2NCAgICBCOw0KPiA+ID4+ICsgIFVJTlQ2 NCAgICBDOw0KPiA+ID4+ICt9IE9QVEVFX01TR19QQVJBTV9WQUxVRTsNCj4gPiA+PiArDQo+ID4g Pj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiA+PiArICBVSU5UNjQgQXR0cjsNCj4gPiA+PiArICB1 bmlvbiB7DQo+ID4gPj4gKyAgICBPUFRFRV9NU0dfUEFSQU1fTUVNICAgICAgTWVtOw0KPiA+ID4+ ICsgICAgT1BURUVfTVNHX1BBUkFNX1ZBTFVFICAgIFZhbHVlOw0KPiA+ID4+ICsgIH0gVTsNCj4g PiA+PiArfSBPUFRFRV9NU0dfUEFSQU07DQo+ID4gPj4gKw0KPiA+ID4+ICsjZGVmaW5lIE1BWF9Q QVJBTVMgICAgICAgICAgIDQNCj4gPiA+PiArDQo+ID4gPj4gK3R5cGVkZWYgc3RydWN0IHsNCj4g PiA+PiArICAgICAgICBVSU5UMzIgICAgICAgICAgICAgQ21kOw0KPiA+ID4+ICsgICAgICAgIFVJ TlQzMiAgICAgICAgICAgICBGdW5jOw0KPiA+ID4+ICsgICAgICAgIFVJTlQzMiAgICAgICAgICAg ICBTZXNzaW9uOw0KPiA+ID4+ICsgICAgICAgIFVJTlQzMiAgICAgICAgICAgICBDYW5jZWxJZDsN Cj4gPiA+PiArICAgICAgICBVSU5UMzIgICAgICAgICAgICAgUGFkOw0KPiA+ID4+ICsgICAgICAg IFVJTlQzMiAgICAgICAgICAgICBSZXQ7DQo+ID4gPj4gKyAgICAgICAgVUlOVDMyICAgICAgICAg ICAgIFJldE9yaWdpbjsNCj4gPiA+PiArICAgICAgICBVSU5UMzIgICAgICAgICAgICAgTnVtUGFy YW1zOw0KPiA+ID4+ICsNCj4gPiA+PiArICAgICAgICAvLyBOdW1QYXJhbXMgdGVsbHMgdGhlIGFj dHVhbCBudW1iZXIgb2YgZWxlbWVudCBpbiBQYXJhbXMNCj4gPiA+PiArICAgICAgICBPUFRFRV9N U0dfUEFSQU0gICAgUGFyYW1zW01BWF9QQVJBTVNdOw0KPiA+ID4+ICt9IE9QVEVFX01TR19BUkc7 DQo+ID4gPj4gKw0KPiA+ID4+ICsjZGVmaW5lIE9QVEVFX1VVSURfTEVOICAgICAgIDE2DQo+ID4g Pj4gKw0KPiA+ID4+ICsvLw0KPiA+ID4+ICsvLyBzdHJ1Y3QgT1BURUVfT1BFTl9TRVNTSU9OX0FS RyAtIE9wZW4gc2Vzc2lvbiBhcmd1bWVudA0KPiA+ID4+ICsvLyBAVXVpZDogICAgICAgW2luXSBV VUlEIG9mIHRoZSBUcnVzdGVkIEFwcGxpY2F0aW9uDQo+ID4gPj4gKy8vIEBTZXNzaW9uOiAgICBb b3V0XSBTZXNzaW9uIGlkDQo+ID4gPj4gKy8vIEBSZXQ6ICAgICAgICBbb3V0XSBSZXR1cm4gdmFs dWUNCj4gPiA+PiArLy8gQFJldE9yaWdpbiAgIFtvdXRdIE9yaWdpbiBvZiB0aGUgcmV0dXJuIHZh bHVlDQo+ID4gPj4gKy8vDQo+ID4gPj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiA+PiArICAgICAg ICBVSU5UOCAgICAgVXVpZFtPUFRFRV9VVUlEX0xFTl07DQo+ID4gPj4gKyAgICAgICAgVUlOVDMy ICAgIFNlc3Npb247DQo+ID4gPj4gKyAgICAgICAgVUlOVDMyICAgIFJldDsNCj4gPiA+PiArICAg ICAgICBVSU5UMzIgICAgUmV0T3JpZ2luOw0KPiA+ID4+ICt9IE9QVEVFX09QRU5fU0VTU0lPTl9B Ukc7DQo+ID4gPj4gKw0KPiA+ID4+ICsvLw0KPiA+ID4+ICsvLyBzdHJ1Y3QgT1BURUVfSU5WT0tF X0ZVTkNfQVJHIC0gSW52b2tlIGZ1bmN0aW9uIGFyZ3VtZW50DQo+ID4gPj4gKy8vIEBGdW5jOiAg ICAgICBbaW5dIFRydXN0ZWQgQXBwbGljYXRpb24gZnVuY3Rpb24sIHNwZWNpZmljIHRvIHRoZSBU QQ0KPiA+ID4+ICsvLyBAU2Vzc2lvbjogICAgW2luXSBTZXNzaW9uIGlkDQo+ID4gPj4gKy8vIEBS ZXQ6ICAgICAgICBbb3V0XSBSZXR1cm4gdmFsdWUNCj4gPiA+PiArLy8gQFJldE9yaWdpbiAgIFtv dXRdIE9yaWdpbiBvZiB0aGUgcmV0dXJuIHZhbHVlDQo+ID4gPj4gKy8vIEBQYXJhbXMgICAgICBb aW5vdXRdIFBhcmFtZXRlcnMgZm9yIGZ1bmN0aW9uIHRvIGJlIGludm9rZWQNCj4gPiA+PiArLy8N Cj4gPiA+PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ID4+ICsgICAgICAgIFVJTlQzMiAgICAgICAg ICAgICBGdW5jOw0KPiA+ID4+ICsgICAgICAgIFVJTlQzMiAgICAgICAgICAgICBTZXNzaW9uOw0K PiA+ID4+ICsgICAgICAgIFVJTlQzMiAgICAgICAgICAgICBSZXQ7DQo+ID4gPj4gKyAgICAgICAg VUlOVDMyICAgICAgICAgICAgIFJldE9yaWdpbjsNCj4gPiA+PiArICAgICAgICBPUFRFRV9NU0df UEFSQU0gICAgUGFyYW1zW01BWF9QQVJBTVNdOw0KPiA+ID4+ICt9IE9QVEVFX0lOVk9LRV9GVU5D X0FSRzsNCj4gPiA+PiArDQo+ID4gPj4gIEJPT0xFQU4NCj4gPiA+PiAgRUZJQVBJDQo+ID4gPj4g IElzT3B0ZWVQcmVzZW50ICgNCj4gPiA+PiAgICBWT0lEDQo+ID4gPj4gICAgKTsNCj4gPiA+Pg0K PiA+ID4+ICtFRklfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtPcHRlZUluaXQgKA0K PiA+ID4+ICsgIFZPSUQNCj4gPiA+PiArICApOw0KPiA+ID4+ICsNCj4gPiA+PiArRUZJX1NUQVRV Uw0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArT3B0ZWVPcGVuU2Vzc2lvbiAoDQo+ID4gPj4gKyAg SU4gT1VUIE9QVEVFX09QRU5fU0VTU0lPTl9BUkcgICAgICAqT3BlblNlc3Npb25BcmcNCj4gPiA+ PiArICApOw0KPiA+ID4+ICsNCj4gPiA+PiArRUZJX1NUQVRVUw0KPiA+ID4+ICtFRklBUEkNCj4g PiA+PiArT3B0ZWVDbG9zZVNlc3Npb24gKA0KPiA+ID4+ICsgIElOIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgICBTZXNzaW9uDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ID4gPj4gK0VGSV9T VEFUVVMNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK09wdGVlSW52b2tlRnVuYyAoDQo+ID4gPj4g KyAgSU4gT1VUIE9QVEVFX0lOVk9LRV9GVU5DX0FSRyAgICAgICAqSW52b2tlRnVuY0FyZw0KPiA+ ID4+ICsgICk7DQo+ID4gPj4gKw0KPiA+ID4+ICAjZW5kaWYNCj4gPiA+PiBkaWZmIC0tZ2l0IGEv QXJtUGtnL0xpYnJhcnkvT3B0ZWVMaWIvT3B0ZWUuYw0KPiA+ID4+IGIvQXJtUGtnL0xpYnJhcnkv T3B0ZWVMaWIvT3B0ZWUuYyBpbmRleCA1NzQ1MjdmOGI1ZWEuLjIxMTEwMjJkMzY2Mg0KPiA+ID4+ IDEwMDY0NA0KPiA+ID4+IC0tLSBhL0FybVBrZy9MaWJyYXJ5L09wdGVlTGliL09wdGVlLmMNCj4g PiA+PiArKysgYi9Bcm1Qa2cvTGlicmFyeS9PcHRlZUxpYi9PcHRlZS5jDQo+ID4gPj4gQEAgLTE0 LDExICsxNCwxOSBAQA0KPiA+ID4+DQo+ID4gPj4gICoqLw0KPiA+ID4+DQo+ID4gPj4gKyNpbmNs dWRlIDxMaWJyYXJ5L0FybU1tdUxpYi5oPg0KPiA+ID4+ICAjaW5jbHVkZSA8TGlicmFyeS9Bcm1T bWNMaWIuaD4NCj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiA+ ID4+ICAjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJy YXJ5L0RlYnVnTGliLmg+DQo+ID4gPj4gICNpbmNsdWRlIDxMaWJyYXJ5L09wdGVlTGliLmg+DQo+ ID4gPj4NCj4gPiA+PiAgI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQXJtU3RkU21jLmg+DQo+ ID4gPj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0dsb2JhbFBsYXRmb3JtLmg+DQo+ID4g Pj4gKyNpbmNsdWRlIDxPcHRlZVNtYy5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+ ID4+ICsNCj4gPiA+PiArU1RBVElDIE9QVEVFX1NIQVJFRF9NRU1PUllfSU5GTyBPcHRlZVNobUlu Zm8gPSB7IDAgfTsNCj4gPiA+Pg0KPiA+ID4+ICAvKioNCj4gPiA+PiAgICBDaGVjayBmb3IgT1At VEVFIHByZXNlbmNlLg0KPiA+ID4+IEBAIC0zMSw2ICszOSw3IEBAIElzT3B0ZWVQcmVzZW50ICgN Cj4gPiA+PiAgew0KPiA+ID4+ICAgIEFSTV9TTUNfQVJHUyBBcm1TbWNBcmdzOw0KPiA+ID4+DQo+ ID4gPj4gKyAgWmVyb01lbSAoJkFybVNtY0FyZ3MsIHNpemVvZiAoQVJNX1NNQ19BUkdTKSk7DQo+ ID4gPj4gICAgLy8gU2VuZCBhIFRydXN0ZWQgT1MgQ2FsbHMgVUlEIGNvbW1hbmQNCj4gPiA+PiAg ICBBcm1TbWNBcmdzLkFyZzAgPSBBUk1fU01DX0lEX1RPU19VSUQ7DQo+ID4gPj4gICAgQXJtQ2Fs bFNtYyAoJkFybVNtY0FyZ3MpOw0KPiA+ID4+IEBAIC00NCwzICs1MywzNTIgQEAgSXNPcHRlZVBy ZXNlbnQgKA0KPiA+ID4+ICAgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4+ICAgIH0NCj4gPiA+PiAg fQ0KPiA+ID4+ICsNCj4gPiA+PiArU1RBVElDDQo+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+PiAr T3B0ZWVTaG1NZW1SZW1hcCAoDQo+ID4gPj4gKyAgVk9JRA0KPiA+ID4+ICsgICkNCj4gPiA+PiAr ew0KPiA+ID4+ICsgIEFSTV9TTUNfQVJHUyAgICAgICAgICAgICAgICAgQXJtU21jQXJnczsNCj4g PiA+PiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgIFBhZGRyOw0KPiA+ID4+ICsgIEVG SV9QSFlTSUNBTF9BRERSRVNTICAgICAgICAgU3RhcnQ7DQo+ID4gPj4gKyAgRUZJX1BIWVNJQ0FM X0FERFJFU1MgICAgICAgICBFbmQ7DQo+ID4gPj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgICBTdGF0dXM7DQo+ID4gPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICBTaXpl Ow0KPiA+ID4+ICsNCj4gPiA+PiArICBaZXJvTWVtICgmQXJtU21jQXJncywgc2l6ZW9mIChBUk1f U01DX0FSR1MpKTsNCj4gPiA+PiArICBBcm1TbWNBcmdzLkFyZzAgPSBPUFRFRV9TTUNfR0VUX1NI TV9DT05GSUc7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIEFybUNhbGxTbWMgKCZBcm1TbWNBcmdzKTsN Cj4gPiA+PiArICBpZiAoQXJtU21jQXJncy5BcmcwICE9IE9QVEVFX1NNQ19SRVRVUk5fT0spIHsN Cj4gPiA+PiArICAgIERFQlVHICgoREVCVUdfV0FSTiwgIk9QLVRFRSBzaGFyZWQgbWVtb3J5IG5v dCBzdXBwb3J0ZWRcbiIpKTsNCj4gPiA+PiArICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICBpZiAoQXJtU21jQXJncy5BcmczICE9IE9Q VEVFX1NNQ19TSE1fQ0FDSEVEKSB7DQo+ID4gPj4gKyAgICBERUJVRyAoKERFQlVHX1dBUk4sICJP UC1URUU6IE9ubHkgbm9ybWFsIGNhY2hlZCBzaGFyZWQNCj4gPiBtZW1vcnkNCj4gPiA+PiBzdXBw b3J0ZWRcbiIpKTsNCj4gPiA+PiArICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gPj4g KyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICBTdGFydCA9IChBcm1TbWNBcmdzLkFyZzEgKyBTSVpF XzRLQiAtIDEpICYgfihTSVpFXzRLQiAtIDEpOyAgRW5kDQo+ID4gPj4gKyA9DQo+ID4gPj4gKyAo QXJtU21jQXJncy5BcmcxICsgQXJtU21jQXJncy5BcmcyKSAmIH4oU0laRV80S0IgLSAxKTsgIFBh ZGRyID0NCj4gPiA+PiArIFN0YXJ0OyBTaXplID0gRW5kIC0gU3RhcnQ7DQo+ID4gPj4gKw0KPiA+ ID4+ICsgIGlmIChTaXplIDwgU0laRV80S0IpIHsNCj4gPiA+PiArICAgIERFQlVHICgoREVCVUdf V0FSTiwgIk9QLVRFRSBzaGFyZWQgbWVtb3J5IHRvbyBzbWFsbFxuIikpOw0KPiA+ID4+ICsgICAg cmV0dXJuIEVGSV9CVUZGRVJfVE9PX1NNQUxMOw0KPiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4g Pj4gKyAgU3RhdHVzID0gQXJtU2V0TWVtb3J5QXR0cmlidXRlcyAoUGFkZHIsIFNpemUsIEVGSV9N RU1PUllfV0IpOw0KPiA+ID4+ICsgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4+ICsg ICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+PiArICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgIE9wdGVl U2htSW5mby5CYXNlID0gKFVJTlROKVBhZGRyOyAgT3B0ZWVTaG1JbmZvLlNpemUgPSBTaXplOw0K PiA+ID4+ICsNCj4gPiA+PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPj4gK30NCj4gPiA+ PiArDQo+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK09wdGVlSW5p dCAoDQo+ID4gPj4gKyAgVk9JRA0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIEVG SV9TVEFUVVMgICAgICBTdGF0dXM7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIGlmICghSXNPcHRlZVBy ZXNlbnQgKCkpIHsNCj4gPiA+PiArICAgIERFQlVHICgoREVCVUdfV0FSTiwgIk9QLVRFRSBub3Qg cHJlc2VudFxuIikpOw0KPiA+ID4+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiA+ PiArICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgIFN0YXR1cyA9IE9wdGVlU2htTWVtUmVtYXAgKCk7 DQo+ID4gPj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4+ICsgICAgREVCVUcg KChERUJVR19XQVJOLCAiT1AtVEVFIHNoYXJlZCBtZW1vcnkgcmVtYXAgZmFpbGVkXG4iKSk7DQo+ ID4gPj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4gPj4g KyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKioN Cj4gPiA+PiArICBEb2VzIFN0YW5kYXJkIFNNQyB0byBPUC1URUUgaW4gc2VjdXJlIHdvcmxkLg0K PiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW1baW5dICBQYXJnICAgUGh5c2ljYWwgYWRkcmVzcyBv ZiBtZXNzYWdlIHRvIHBhc3MgdG8gc2VjdXJlIHdvcmxkDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBy ZXR1cm4gICAgICAgICAgICAwIG9uIHN1Y2Nlc3MsIHNlY3VyZSB3b3JsZCByZXR1cm4gY29kZSBv dGhlcndpc2UNCj4gPiA+PiArDQo+ID4gPj4gKyoqLw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+PiAr VUlOVDMyDQo+ID4gPj4gK09wdGVlQ2FsbFdpdGhBcmcgKA0KPiA+ID4+ICsgIElOIEVGSV9QSFlT SUNBTF9BRERSRVNTIFBhcmcNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBBUk1f U01DX0FSR1MgQXJtU21jQXJnczsNCj4gPiA+PiArDQo+ID4gPj4gKyAgWmVyb01lbSAoJkFybVNt Y0FyZ3MsIHNpemVvZiAoQVJNX1NNQ19BUkdTKSk7DQo+ID4gPj4gKyAgQXJtU21jQXJncy5Bcmcw ID0gT1BURUVfU01DX0NBTExfV0lUSF9BUkc7DQo+ID4gPj4gKyAgQXJtU21jQXJncy5BcmcxID0g KFVJTlQzMikoUGFyZyA+PiAzMik7DQo+ID4gPj4gKyAgQXJtU21jQXJncy5BcmcyID0gKFVJTlQz MilQYXJnOw0KPiA+ID4+ICsNCj4gPiA+PiArICB3aGlsZSAoVFJVRSkgew0KPiA+ID4+ICsgICAg QXJtQ2FsbFNtYyAoJkFybVNtY0FyZ3MpOw0KPiA+ID4+ICsNCj4gPiA+PiArICAgIGlmIChBcm1T bWNBcmdzLkFyZzAgPT0gT1BURUVfU01DX1JFVFVSTl9SUENfRk9SRUlHTl9JTlRSKSB7DQo+ID4g Pj4gKyAgICAgIC8vDQo+ID4gPj4gKyAgICAgIC8vIEEgZm9yZWlnbiBpbnRlcnJ1cHQgd2FzIHJh aXNlZCB3aGlsZSBzZWN1cmUgd29ybGQgd2FzDQo+ID4gPj4gKyAgICAgIC8vIGV4ZWN1dGluZywg c2luY2UgdGhleSBhcmUgaGFuZGxlZCBpbiBVRUZJIGEgZHVtbXkgUlBDIGlzDQo+ID4gPj4gKyAg ICAgIC8vIHBlcmZvcm1lZCB0byBsZXQgVUVGSSB0YWtlIHRoZSBpbnRlcnJ1cHQgdGhyb3VnaCB0 aGUgbm9ybWFsDQo+ID4gPj4gKyAgICAgIC8vIHZlY3Rvci4NCj4gPiA+PiArICAgICAgLy8NCj4g PiA+PiArICAgICAgQXJtU21jQXJncy5BcmcwID0gT1BURUVfU01DX1JFVFVSTl9GUk9NX1JQQzsN Cj4gPiA+PiArICAgIH0gZWxzZSB7DQo+ID4gPj4gKyAgICAgIGJyZWFrOw0KPiA+ID4+ICsgICAg fQ0KPiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgcmV0dXJuIEFybVNtY0FyZ3MuQXJn MDsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArRUZJX1NUQVRVUw0KPiA+ID4+ICtFRklB UEkNCj4gPiA+PiArT3B0ZWVPcGVuU2Vzc2lvbiAoDQo+ID4gPj4gKyAgSU4gT1VUIE9QVEVFX09Q RU5fU0VTU0lPTl9BUkcgICAgICAqT3BlblNlc3Npb25BcmcNCj4gPiA+PiArICApDQo+ID4gPj4g K3sNCj4gPiA+PiArICBPUFRFRV9NU0dfQVJHICAgICpNc2dBcmc7DQo+ID4gPj4gKw0KPiA+ID4+ ICsgIE1zZ0FyZyA9IE5VTEw7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIGlmIChPcHRlZVNobUluZm8u QmFzZSA9PSAwKSB7DQo+ID4gPj4gKyAgICBERUJVRyAoKERFQlVHX1dBUk4sICJPUC1URUUgbm90 IGluaXRpYWxpemVkXG4iKSk7DQo+ID4gPj4gKyAgICByZXR1cm4gRUZJX05PVF9TVEFSVEVEOw0K PiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgTXNnQXJnID0gKE9QVEVFX01TR19BUkcg KilPcHRlZVNobUluZm8uQmFzZTsgIFplcm9NZW0gKE1zZ0FyZywNCj4gPiA+PiBzaXplb2YNCj4g PiA+PiArIChPUFRFRV9NU0dfQVJHKSk7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIE1zZ0FyZy0+Q21k ID0gT1BURUVfTVNHX0NNRF9PUEVOX1NFU1NJT047DQo+ID4gPj4gKw0KPiA+ID4+ICsgIC8vDQo+ ID4gPj4gKyAgLy8gSW5pdGlhbGl6ZSBhbmQgYWRkIHRoZSBtZXRhIHBhcmFtZXRlcnMgbmVlZGVk IHdoZW4gb3BlbmluZyBhDQo+ID4gPj4gKyAvLyBzZXNzaW9uLg0KPiA+ID4+ICsgIC8vDQo+ID4g Pj4gKyAgTXNnQXJnLT5QYXJhbXNbMF0uQXR0ciA9IE9QVEVFX01TR19BVFRSX1RZUEVfVkFMVUVf SU5QVVQgfA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBPUFRFRV9NU0dfQVRU Ul9NRVRBOw0KPiA+ID4+ICsgTXNnQXJnLT5QYXJhbXNbMV0uQXR0ciA9IE9QVEVFX01TR19BVFRS X1RZUEVfVkFMVUVfSU5QVVQgfA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBP UFRFRV9NU0dfQVRUUl9NRVRBOyAgQ29weU1lbQ0KPiA+ID4+ICsgKCZNc2dBcmctPlBhcmFtc1sw XS5VLlZhbHVlLCBPcGVuU2Vzc2lvbkFyZy0+VXVpZCwNCj4gPiBPUFRFRV9VVUlEX0xFTik7DQo+ ID4gPj4gKyBaZXJvTWVtICgmTXNnQXJnLT5QYXJhbXNbMV0uVS5WYWx1ZSwgT1BURUVfVVVJRF9M RU4pOw0KPiA+ID4+ICsgTXNnQXJnLT5QYXJhbXNbMV0uVS5WYWx1ZS5DID0gVEVFX0xPR0lOX1BV QkxJQzsNCj4gPiA+PiArDQo+ID4gPj4gKyAgTXNnQXJnLT5OdW1QYXJhbXMgPSAyOw0KPiA+ID4+ ICsNCj4gPiA+PiArICBpZiAoT3B0ZWVDYWxsV2l0aEFyZyAoKEVGSV9QSFlTSUNBTF9BRERSRVNT KU1zZ0FyZykpIHsNCj4gPiA+PiArICAgIE1zZ0FyZy0+UmV0ID0gVEVFQ19FUlJPUl9DT01NVU5J Q0FUSU9OOw0KPiA+ID4+ICsgICAgTXNnQXJnLT5SZXRPcmlnaW4gPSBURUVDX09SSUdJTl9DT01N UzsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgT3BlblNlc3Npb25BcmctPlNlc3Npb24gPSBNc2dB cmctPlNlc3Npb247ICBPcGVuU2Vzc2lvbkFyZy0+UmV0DQo+ID4gPj4gKyA9DQo+ID4gPj4gKyBN c2dBcmctPlJldDsgIE9wZW5TZXNzaW9uQXJnLT5SZXRPcmlnaW4gPSBNc2dBcmctPlJldE9yaWdp bjsNCj4gPiA+PiArDQo+ID4gPj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4+ICt9DQo+ ID4gPj4gKw0KPiA+ID4+ICtFRklfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtPcHRl ZUNsb3NlU2Vzc2lvbiAoDQo+ID4gPj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAg IFNlc3Npb24NCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBPUFRFRV9NU0dfQVJH ICAgICpNc2dBcmc7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIE1zZ0FyZyA9IE5VTEw7DQo+ID4gPj4g Kw0KPiA+ID4+ICsgIGlmIChPcHRlZVNobUluZm8uQmFzZSA9PSAwKSB7DQo+ID4gPj4gKyAgICBE RUJVRyAoKERFQlVHX1dBUk4sICJPUC1URUUgbm90IGluaXRpYWxpemVkXG4iKSk7DQo+ID4gPj4g KyAgICByZXR1cm4gRUZJX05PVF9TVEFSVEVEOw0KPiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4g Pj4gKyAgTXNnQXJnID0gKE9QVEVFX01TR19BUkcgKilPcHRlZVNobUluZm8uQmFzZTsgIFplcm9N ZW0gKE1zZ0FyZywNCj4gPiA+PiBzaXplb2YNCj4gPiA+PiArIChPUFRFRV9NU0dfQVJHKSk7DQo+ ID4gPj4gKw0KPiA+ID4+ICsgIE1zZ0FyZy0+Q21kID0gT1BURUVfTVNHX0NNRF9DTE9TRV9TRVNT SU9OOyAgTXNnQXJnLT5TZXNzaW9uDQo+ID4gPQ0KPiA+ID4+ICsgU2Vzc2lvbjsNCj4gPiA+PiAr DQo+ID4gPj4gKyAgT3B0ZWVDYWxsV2l0aEFyZyAoKEVGSV9QSFlTSUNBTF9BRERSRVNTKU1zZ0Fy Zyk7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+PiArfQ0K PiA+ID4+ICsNCj4gPiA+PiArU1RBVElDDQo+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+PiArT3B0 ZWVUb01zZ1BhcmFtICgNCj4gPiA+PiArICBPVVQgT1BURUVfTVNHX1BBUkFNICAgICpNc2dQYXJh bXMsDQo+ID4gPj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgICBOdW1QYXJhbXMsDQo+ID4gPj4g KyAgSU4gT1BURUVfTVNHX1BBUkFNICAgICAqSW5QYXJhbXMNCj4gPiA+PiArICApDQo+ID4gPj4g K3sNCj4gPiA+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICBJZHg7DQo+ID4gPj4gKyAgVUlO VE4gICAgICAgICAgICAgICAgICAgUGFyYW1TaG1BZGRyOw0KPiA+ID4+ICsgIFVJTlROICAgICAg ICAgICAgICAgICAgIFNobVNpemU7DQo+ID4gPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAg U2l6ZTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgU2l6ZSA9IChzaXplb2YgKE9QVEVFX01TR19BUkcp ICsgc2l6ZW9mIChVSU5UNjQpIC0gMSkgJiB+KHNpemVvZg0KPiA+ID4+ICsgKFVJTlQ2NCkgLSAx KTsgIFBhcmFtU2htQWRkciA9IE9wdGVlU2htSW5mby5CYXNlICsgU2l6ZTsgIFNobVNpemUNCj4g PiA+PiArID0gT3B0ZWVTaG1JbmZvLlNpemUgLSBTaXplOw0KPiA+ID4+ICsNCj4gPiA+PiArICBm b3IgKElkeCA9IDA7IElkeCA8IE51bVBhcmFtczsgSWR4KyspIHsNCj4gPiA+PiArICAgIENPTlNU IE9QVEVFX01TR19QQVJBTSAgICAqSXA7DQo+ID4gPj4gKyAgICBPUFRFRV9NU0dfUEFSQU0gICAg ICAgICAgKk1wOw0KPiA+ID4+ICsgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgIEF0dHI7DQo+ ID4gPj4gKw0KPiA+ID4+ICsgICAgSXAgPSBJblBhcmFtcyArIElkeDsNCj4gPiA+PiArICAgIE1w ID0gTXNnUGFyYW1zICsgSWR4Ow0KPiA+ID4+ICsgICAgQXR0ciA9IElwLT5BdHRyICYgT1BURUVf TVNHX0FUVFJfVFlQRV9NQVNLOw0KPiA+ID4+ICsNCj4gPiA+PiArICAgIHN3aXRjaCAoQXR0cikg ew0KPiA+ID4+ICsgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX05PTkU6DQo+ID4gPj4gKyAg ICAgIE1wLT5BdHRyID0gT1BURUVfTVNHX0FUVFJfVFlQRV9OT05FOw0KPiA+ID4+ICsgICAgICBa ZXJvTWVtICgmTXAtPlUsIHNpemVvZiAoTXAtPlUpKTsNCj4gPiA+PiArICAgICAgYnJlYWs7DQo+ ID4gPj4gKw0KPiA+ID4+ICsgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX0lOUFVU Og0KPiA+ID4+ICsgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX09VVFBVVDoNCj4g PiA+PiArICAgIGNhc2UgT1BURUVfTVNHX0FUVFJfVFlQRV9WQUxVRV9JTk9VVDoNCj4gPiA+PiAr ICAgICAgTXAtPkF0dHIgPSBBdHRyOw0KPiA+ID4+ICsgICAgICBNcC0+VS5WYWx1ZS5BID0gSXAt PlUuVmFsdWUuQTsNCj4gPiA+PiArICAgICAgTXAtPlUuVmFsdWUuQiA9IElwLT5VLlZhbHVlLkI7 DQo+ID4gPj4gKyAgICAgIE1wLT5VLlZhbHVlLkMgPSBJcC0+VS5WYWx1ZS5DOw0KPiA+ID4+ICsg ICAgICBicmVhazsNCj4gPiA+PiArDQo+ID4gPj4gKyAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZ UEVfTUVNX0lOUFVUOg0KPiA+ID4+ICsgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX01FTV9P VVRQVVQ6DQo+ID4gPj4gKyAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfTUVNX0lOT1VUOg0K PiA+ID4+ICsgICAgICBNcC0+QXR0ciA9IEF0dHI7DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgICBp ZiAoSXAtPlUuTWVtLlNpemUgPiBTaG1TaXplKSB7DQo+ID4gPj4gKyAgICAgICAgcmV0dXJuIEVG SV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4+ICsgICAgICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsg ICAgICBDb3B5TWVtICgoVk9JRCAqKVBhcmFtU2htQWRkciwgKFZPSUQgKilJcC0+VS5NZW0uQnVm UHRyLCBJcC0NCj4gPiA+PiA+VS5NZW0uU2l6ZSk7DQo+ID4gPj4gKyAgICAgIE1wLT5VLk1lbS5C dWZQdHIgPSAoVUlOVDY0KVBhcmFtU2htQWRkcjsNCj4gPiA+PiArICAgICAgTXAtPlUuTWVtLlNp emUgPSBJcC0+VS5NZW0uU2l6ZTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgICAgIFNpemUgPSAoSXAt PlUuTWVtLlNpemUgKyBzaXplb2YgKFVJTlQ2NCkgLSAxKSAmIH4oc2l6ZW9mIChVSU5UNjQpIC0g MSk7DQo+ID4gPj4gKyAgICAgIFBhcmFtU2htQWRkciArPSBTaXplOw0KPiA+ID4+ICsgICAgICBT aG1TaXplIC09IFNpemU7DQo+ID4gPj4gKyAgICAgIGJyZWFrOw0KPiA+ID4+ICsNCj4gPiA+PiAr ICAgIGRlZmF1bHQ6DQo+ID4gPj4gKyAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7 DQo+ID4gPj4gKyAgICB9DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICByZXR1cm4g RUZJX1NVQ0NFU1M7DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gK1NUQVRJQw0KPiA+ID4+ ICtFRklfU1RBVFVTDQo+ID4gPj4gK09wdGVlRnJvbU1zZ1BhcmFtICgNCj4gPiA+PiArICBPVVQg T1BURUVfTVNHX1BBUkFNICAgICpPdXRQYXJhbXMsDQo+ID4gPj4gKyAgSU4gVUlOVDMyICAgICAg ICAgICAgICBOdW1QYXJhbXMsDQo+ID4gPj4gKyAgSU4gT1BURUVfTVNHX1BBUkFNICAgICAqTXNn UGFyYW1zDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgVUlOVDMyICAgICAgICAg ICAgICAgICBJZHg7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIGZvciAoSWR4ID0gMDsgSWR4IDwgTnVt UGFyYW1zOyBJZHgrKykgew0KPiA+ID4+ICsgICAgT1BURUVfTVNHX1BBUkFNICAgICAgICAgICpP cDsNCj4gPiA+PiArICAgIENPTlNUIE9QVEVFX01TR19QQVJBTSAgICAqTXA7DQo+ID4gPj4gKyAg ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgQXR0cjsNCj4gPiA+PiArDQo+ID4gPj4gKyAgICBP cCA9IE91dFBhcmFtcyArIElkeDsNCj4gPiA+PiArICAgIE1wID0gTXNnUGFyYW1zICsgSWR4Ow0K PiA+ID4+ICsgICAgQXR0ciA9IE1wLT5BdHRyICYgT1BURUVfTVNHX0FUVFJfVFlQRV9NQVNLOw0K PiA+ID4+ICsNCj4gPiA+PiArICAgIHN3aXRjaCAoQXR0cikgew0KPiA+ID4+ICsgICAgY2FzZSBP UFRFRV9NU0dfQVRUUl9UWVBFX05PTkU6DQo+ID4gPj4gKyAgICAgIE9wLT5BdHRyID0gT1BURUVf TVNHX0FUVFJfVFlQRV9OT05FOw0KPiA+ID4+ICsgICAgICBaZXJvTWVtICgmT3AtPlUsIHNpemVv ZiAoT3AtPlUpKTsNCj4gPiA+PiArICAgICAgYnJlYWs7DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAg Y2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX0lOUFVUOg0KPiA+ID4+ICsgICAgY2FzZSBP UFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX09VVFBVVDoNCj4gPiA+PiArICAgIGNhc2UgT1BURUVf TVNHX0FUVFJfVFlQRV9WQUxVRV9JTk9VVDoNCj4gPiA+PiArICAgICAgT3AtPkF0dHIgPSBBdHRy Ow0KPiA+ID4+ICsgICAgICBPcC0+VS5WYWx1ZS5BID0gTXAtPlUuVmFsdWUuQTsNCj4gPiA+PiAr ICAgICAgT3AtPlUuVmFsdWUuQiA9IE1wLT5VLlZhbHVlLkI7DQo+ID4gPj4gKyAgICAgIE9wLT5V LlZhbHVlLkMgPSBNcC0+VS5WYWx1ZS5DOw0KPiA+ID4+ICsgICAgICBicmVhazsNCj4gPiA+PiAr DQo+ID4gPj4gKyAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfTUVNX0lOUFVUOg0KPiA+ID4+ ICsgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX01FTV9PVVRQVVQ6DQo+ID4gPj4gKyAgICBj YXNlIE9QVEVFX01TR19BVFRSX1RZUEVfTUVNX0lOT1VUOg0KPiA+ID4+ICsgICAgICBPcC0+QXR0 ciA9IEF0dHI7DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgICBpZiAoTXAtPlUuTWVtLlNpemUgPiBP cC0+VS5NZW0uU2l6ZSkgew0KPiA+ID4+ICsgICAgICAgIHJldHVybiBFRklfQkFEX0JVRkZFUl9T SVpFOw0KPiA+ID4+ICsgICAgICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgICBDb3B5TWVtICgo Vk9JRCAqKU9wLT5VLk1lbS5CdWZQdHIsIChWT0lEICopTXAtPlUuTWVtLkJ1ZlB0ciwNCj4gPiA+ PiBNcC0+VS5NZW0uU2l6ZSk7DQo+ID4gPj4gKyAgICAgIE9wLT5VLk1lbS5TaXplID0gTXAtPlUu TWVtLlNpemU7DQo+ID4gPj4gKyAgICAgIGJyZWFrOw0KPiA+ID4+ICsNCj4gPiA+PiArICAgIGRl ZmF1bHQ6DQo+ID4gPj4gKyAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4g Pj4gKyAgICB9DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICByZXR1cm4gRUZJX1NV Q0NFU1M7DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+PiAr RUZJQVBJDQo+ID4gPj4gK09wdGVlSW52b2tlRnVuYyAoDQo+ID4gPj4gKyAgSU4gT1VUIE9QVEVF X0lOVk9LRV9GVU5DX0FSRyAgICAgICAqSW52b2tlRnVuY0FyZw0KPiA+ID4+ICsgICkNCj4gPiA+ PiArew0KPiA+ID4+ICsgIEVGSV9TVEFUVVMgICAgICAgU3RhdHVzOw0KPiA+ID4+ICsgIE9QVEVF X01TR19BUkcgICAgKk1zZ0FyZzsNCj4gPiA+PiArDQo+ID4gPj4gKyAgTXNnQXJnID0gTlVMTDsN Cj4gPiA+PiArDQo+ID4gPj4gKyAgaWYgKE9wdGVlU2htSW5mby5CYXNlID09IDApIHsNCj4gPiA+ PiArICAgIERFQlVHICgoREVCVUdfV0FSTiwgIk9QLVRFRSBub3QgaW5pdGlhbGl6ZWRcbiIpKTsN Cj4gPiA+PiArICAgIHJldHVybiBFRklfTk9UX1NUQVJURUQ7DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ ICsNCj4gPiA+PiArICBNc2dBcmcgPSAoT1BURUVfTVNHX0FSRyAqKU9wdGVlU2htSW5mby5CYXNl OyAgWmVyb01lbSAoTXNnQXJnLA0KPiA+ID4+IHNpemVvZg0KPiA+ID4+ICsgKE9QVEVFX01TR19B UkcpKTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgTXNnQXJnLT5DbWQgPSBPUFRFRV9NU0dfQ01EX0lO Vk9LRV9DT01NQU5EOyAgTXNnQXJnLQ0KPiA+ID5GdW5jID0NCj4gPiA+PiArIEludm9rZUZ1bmNB cmctPkZ1bmM7ICBNc2dBcmctPlNlc3Npb24gPSBJbnZva2VGdW5jQXJnLT5TZXNzaW9uOw0KPiA+ ID4+ICsNCj4gPiA+PiArICBTdGF0dXMgPSBPcHRlZVRvTXNnUGFyYW0gKE1zZ0FyZy0+UGFyYW1z LCBNQVhfUEFSQU1TLA0KPiA+ID4+ICsgSW52b2tlRnVuY0FyZy0+UGFyYW1zKTsgIGlmIChTdGF0 dXMpDQo+ID4gPj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4+ICsNCj4gPiA+PiArICBNc2dB cmctPk51bVBhcmFtcyA9IE1BWF9QQVJBTVM7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIGlmIChPcHRl ZUNhbGxXaXRoQXJnICgoRUZJX1BIWVNJQ0FMX0FERFJFU1MpTXNnQXJnKSkgew0KPiA+ID4+ICsg ICAgTXNnQXJnLT5SZXQgPSBURUVDX0VSUk9SX0NPTU1VTklDQVRJT047DQo+ID4gPj4gKyAgICBN c2dBcmctPlJldE9yaWdpbiA9IFRFRUNfT1JJR0lOX0NPTU1TOyAgfQ0KPiA+ID4+ICsNCj4gPiA+ PiArICBpZiAoT3B0ZWVGcm9tTXNnUGFyYW0gKEludm9rZUZ1bmNBcmctPlBhcmFtcywgTUFYX1BB UkFNUywNCj4gPiA+PiBNc2dBcmctPlBhcmFtcykpIHsNCj4gPiA+PiArICAgIE1zZ0FyZy0+UmV0 ID0gVEVFQ19FUlJPUl9DT01NVU5JQ0FUSU9OOw0KPiA+ID4+ICsgICAgTXNnQXJnLT5SZXRPcmln aW4gPSBURUVDX09SSUdJTl9DT01NUzsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgSW52b2tlRnVu Y0FyZy0+UmV0ID0gTXNnQXJnLT5SZXQ7ICBJbnZva2VGdW5jQXJnLT5SZXRPcmlnaW4gPQ0KPiA+ ID4+ICsgTXNnQXJnLT5SZXRPcmlnaW47DQo+ID4gPj4gKw0KPiA+ID4+ICsgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4gPiA+PiArfQ0KPiA+ID4+IGRpZmYgLS1naXQgYS9Bcm1Qa2cvTGlicmFyeS9P cHRlZUxpYi9PcHRlZUxpYi5pbmYNCj4gPiA+PiBiL0FybVBrZy9MaWJyYXJ5L09wdGVlTGliL09w dGVlTGliLmluZg0KPiA+ID4+IGluZGV4IDVhYmQ0MjczNzljYy4uZTAzMDU0YTcxNjdkIDEwMDY0 NA0KPiA+ID4+IC0tLSBhL0FybVBrZy9MaWJyYXJ5L09wdGVlTGliL09wdGVlTGliLmluZg0KPiA+ ID4+ICsrKyBiL0FybVBrZy9MaWJyYXJ5L09wdGVlTGliL09wdGVlTGliLmluZg0KPiA+ID4+IEBA IC0yMywxMSArMjMsMTMgQEAgW0RlZmluZXNdDQo+ID4gPj4NCj4gPiA+PiAgW1NvdXJjZXNdDQo+ ID4gPj4gICAgT3B0ZWUuYw0KPiA+ID4+ICsgIE9wdGVlU21jLmgNCj4gPiA+Pg0KPiA+ID4+ICBb UGFja2FnZXNdDQo+ID4gPj4gICAgQXJtUGtnL0FybVBrZy5kZWMNCj4gPiA+PiAgICBNZGVQa2cv TWRlUGtnLmRlYw0KPiA+ID4+DQo+ID4gPj4gIFtMaWJyYXJ5Q2xhc3Nlc10NCj4gPiA+PiArICBB cm1NbXVMaWINCj4gPiA+PiAgICBBcm1TbWNMaWINCj4gPiA+PiAgICBCYXNlTGliDQo+ID4gPj4g ZGlmZiAtLWdpdCBhL0FybVBrZy9MaWJyYXJ5L09wdGVlTGliL09wdGVlU21jLmgNCj4gPiA+PiBi L0FybVBrZy9MaWJyYXJ5L09wdGVlTGliL09wdGVlU21jLmgNCj4gPiA+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+ID4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZTJlYTM1Nzg0YTBhDQo+ID4gPj4g LS0tIC9kZXYvbnVsbA0KPiA+ID4+ICsrKyBiL0FybVBrZy9MaWJyYXJ5L09wdGVlTGliL09wdGVl U21jLmgNCj4gPiA+PiBAQCAtMCwwICsxLDQzIEBADQo+ID4gPj4gKy8qKiBAZmlsZQ0KPiA+ID4+ ICsgIE9QLVRFRSBTTUMgaGVhZGVyIGZpbGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIENvcHlyaWdo dCAoYykgMjAxOCwgTGluYXJvIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPj4g Kw0KPiA+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMg IGFyZSBsaWNlbnNlZCBhbmQNCj4gPiA+PiArIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gPiA+PiArIHdoaWNoIGFjY29t cGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUNCj4gPiA+PiAr IGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ID4gPj4gKw0KPiA+ID4+ICsNCj4gPiA+Pg0KPiA+ IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0 cCUzQSUyRiUyRm9wZQ0KPiA+ID4+IG4NCj4gPiA+PiArIHNvdXJjZS5vcmclMkZsaWNlbnNlcyUy RmJzZC0NCj4gPiA+PiBsaWNlbnNlLnBocCZhbXA7ZGF0YT0wMiU3QzAxJTdDdWRpdC5rdW1hciUN Cj4gPiA+PiArDQo+ID4gPj4NCj4gPiA0MG54cC5jb20lN0NlOTU2MzVkMGMzYzc0ZWRiZjc5ODA4 ZDYwOWEzMGM3YiU3QzY4NmVhMWQzYmMyYjRjNmYNCj4gPiA+PiBhOTJjZDk5DQo+ID4gPj4gKw0K PiA+ID4+DQo+ID4gYzVjMzAxNjM1JTdDMCU3QzAlN0M2MzY3MDY5OTMyNTA1MzUzNzEmYW1wO3Nk YXRhPXB5WkY5S3UzcUVwcA0KPiA+ID4+IE9PS0N5c2hiZw0KPiA+ID4+ICsgOW9DVDRQNkF3TTJv bEtZMyUyQjJJbVdzJTNEJmFtcDtyZXNlcnZlZD0wDQo+ID4gPj4gKw0KPiA+ID4+ICsgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi DQo+ID4gPj4gQkFTSVMsDQo+ID4gPj4gKyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5U QVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiA+PiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ ID4gPj4gKw0KPiA+ID4+ICsqKi8NCj4gPiA+PiArDQo+ID4gPj4gKyNpZm5kZWYgX09QVEVFX1NN Q19IXw0KPiA+ID4+ICsjZGVmaW5lIF9PUFRFRV9TTUNfSF8NCj4gPiA+PiArDQo+ID4gPj4gKy8q IFJldHVybmVkIGluIEFyZzAgb25seSBmcm9tIFRydXN0ZWQgT1MgZnVuY3Rpb25zICovDQo+ID4g Pj4gKyNkZWZpbmUgT1BURUVfU01DX1JFVFVSTl9PSyAgICAgICAgICAgICAgICAgICAgIDB4MA0K PiA+ID4+ICsNCj4gPiA+PiArI2RlZmluZSBPUFRFRV9TTUNfUkVUVVJOX0ZST01fUlBDICAgICAg ICAgICAgICAgMHgzMjAwMDAwMw0KPiA+ID4+ICsjZGVmaW5lIE9QVEVFX1NNQ19DQUxMX1dJVEhf QVJHICAgICAgICAgICAgICAgICAweDMyMDAwMDA0DQo+ID4gPj4gKyNkZWZpbmUgT1BURUVfU01D X0dFVF9TSE1fQ09ORklHICAgICAgICAgICAgICAgIDB4YjIwMDAwMDcNCj4gPiA+PiArDQo+ID4g Pj4gKyNkZWZpbmUgT1BURUVfU01DX1NITV9DQUNIRUQgICAgICAgICAgICAgICAgICAgIDENCj4g PiA+PiArDQo+ID4gPj4gKyNkZWZpbmUgT1BURUVfU01DX1JFVFVSTl9SUENfRk9SRUlHTl9JTlRS ICAgICAgIDB4ZmZmZjAwMDQNCj4gPiA+PiArDQo+ID4gPj4gKyNkZWZpbmUgT1BURUVfTVNHX0NN RF9PUEVOX1NFU1NJT04gICAgICAgICAgICAgIDANCj4gPiA+PiArI2RlZmluZSBPUFRFRV9NU0df Q01EX0lOVk9LRV9DT01NQU5EICAgICAgICAgICAgMQ0KPiA+ID4+ICsjZGVmaW5lIE9QVEVFX01T R19DTURfQ0xPU0VfU0VTU0lPTiAgICAgICAgICAgICAyDQo+ID4gPj4gKw0KPiA+ID4+ICsjZGVm aW5lIE9QVEVFX01TR19BVFRSX01FVEEgICAgICAgICAgICAgICAgICAgICAweDEwMA0KPiA+ID4+ ICsNCj4gPiA+PiArI2RlZmluZSBURUVfTE9HSU5fUFVCTElDICAgICAgICAgICAgICAgICAgICAg ICAgMHgwDQo+ID4gPj4gKw0KPiA+ID4+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gPj4gKyAgVUlO VE4gICAgQmFzZTsNCj4gPiA+PiArICBVSU5UTiAgICBTaXplOw0KPiA+ID4+ICt9IE9QVEVFX1NI QVJFRF9NRU1PUllfSU5GTzsNCj4gPiA+PiArDQo+ID4gPj4gKyNlbmRpZg0KPiA+ID4+IGRpZmYg LS1naXQgYS9Bcm1Qa2cvSW5jbHVkZS9MaWJyYXJ5L09wdGVlTGliLmgNCj4gPiA+PiBiL01kZVBr Zy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvR2xvYmFsUGxhdGZvcm0uaA0KPiA+ID4+IHNpbWls YXJpdHkgaW5kZXggNTMlDQo+ID4gPj4gY29weSBmcm9tIEFybVBrZy9JbmNsdWRlL0xpYnJhcnkv T3B0ZWVMaWIuaCBjb3B5IHRvDQo+ID4gPj4gTWRlUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFy ZC9HbG9iYWxQbGF0Zm9ybS5oDQo+ID4gPj4gaW5kZXggZjY1ZDg2NzRkOWI4Li4xNGM2MjFkODk5 NzEgMTAwNjQ0DQo+ID4gPj4gLS0tIGEvQXJtUGtnL0luY2x1ZGUvTGlicmFyeS9PcHRlZUxpYi5o DQo+ID4gPj4gKysrIGIvTWRlUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9HbG9iYWxQbGF0 Zm9ybS5oDQo+ID4gPj4gQEAgLTEsMzQgKzEsMjYgQEANCj4gPiA+PiAtLyoqIEBmaWxlDQo+ID4g Pj4gLSAgT1AtVEVFIHNwZWNpZmljIGhlYWRlciBmaWxlLg0KPiA+ID4+IC0NCj4gPiA+PiAtICBD b3B5cmlnaHQgKGMpIDIwMTgsIExpbmFybyBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ID4+IC0NCj4gPiA+PiAtICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ID4gPj4gLSAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMNCj4gPiA+PiBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gPiA+ PiAtICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlDQo+ID4gPj4gbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gPiA+PiAtDQo+ID4gPj4N Cj4gPiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJs PWh0dHAlM0ElMkYlMkZvcGUNCj4gPiA+PiBuc291cmNlLm9yZyUyRmxpY2Vuc2VzJTJGYnNkLQ0K PiA+ID4+DQo+ID4gbGljZW5zZS5waHAmYW1wO2RhdGE9MDIlN0MwMSU3Q3VkaXQua3VtYXIlNDBu eHAuY29tJTdDZTk1NjM1ZDBjDQo+ID4gPj4NCj4gPiAzYzc0ZWRiZjc5ODA4ZDYwOWEzMGM3YiU3 QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5YzVjMzAxNjM1JTdDMCUNCj4gPiA+Pg0KPiA+IDdDMCU3 QzYzNjcwNjk5MzI1MDUzNTM3MSZhbXA7c2RhdGE9cHlaRjlLdTNxRXBwT09LQ3lzaGJnOW9DVDQN Cj4gPiA+PiBQNkF3TTJvbEtZMyUyQjJJbVdzJTNEJmFtcDtyZXNlcnZlZD0wDQo+ID4gPj4gLQ0K PiA+ID4+IC0gIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5T RSBPTiBBTiAiQVMgSVMiDQo+ID4gPj4gQkFTSVMsDQo+ID4gPj4gLSAgV0lUSE9VVCBXQVJSQU5U SUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVTUw0K PiA+ID4+IE9SIElNUExJRUQuDQo+ID4gPj4gLQ0KPiA+ID4+IC0qKi8NCj4gPiA+PiAtDQo+ID4g Pj4gLSNpZm5kZWYgX09QVEVFX0hfDQo+ID4gPj4gLSNkZWZpbmUgX09QVEVFX0hfDQo+ID4gPj4g LQ0KPiA+ID4+IC0vKg0KPiA+ID4+IC0gKiBUaGUgJ1RydXN0ZWQgT1MgQ2FsbCBVSUQnIGlzIHN1 cHBvc2VkIHRvIHJldHVybiB0aGUgZm9sbG93aW5nDQo+ID4gPj4gVVVJRCBmb3INCj4gPiA+PiAt ICogT1AtVEVFIE9TLiBUaGlzIGlzIGEgMTI4LWJpdCB2YWx1ZS4NCj4gPiA+PiAtICovDQo+ID4g Pj4gLSNkZWZpbmUgT1BURUVfT1NfVUlEMCAgICAgICAgICAweDM4NGZiM2UwDQo+ID4gPj4gLSNk ZWZpbmUgT1BURUVfT1NfVUlEMSAgICAgICAgICAweGU3ZjgxMWUzDQo+ID4gPj4gLSNkZWZpbmUg T1BURUVfT1NfVUlEMiAgICAgICAgICAweGFmNjMwMDAyDQo+ID4gPj4gLSNkZWZpbmUgT1BURUVf T1NfVUlEMyAgICAgICAgICAweGE1ZDVjNTFiDQo+ID4gPj4gLQ0KPiA+ID4+IC1CT09MRUFODQo+ ID4gPj4gLUVGSUFQSQ0KPiA+ID4+IC1Jc09wdGVlUHJlc2VudCAoDQo+ID4gPj4gLSAgVk9JRA0K PiA+ID4+IC0gICk7DQo+ID4gPj4gLQ0KPiA+ID4+IC0jZW5kaWYNCj4gPiA+PiArLyoqIEBmaWxl DQo+ID4gPj4gKyAgU3RhbmRhcmRpemVkIEdsb2JhbCBQbGF0Zm9ybSBoZWFkZXIgZmlsZS4NCj4g PiA+PiArDQo+ID4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE4LCBMaW5hcm8gTHRkLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+PiArDQo+ID4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0 aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgYXJlIGxpY2Vuc2VkIGFuZA0KPiA+ID4+ICsgbWFk ZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGlj ZW5zZQ0KPiA+ID4+ICsgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUg ZnVsbCB0ZXh0IG9mIHRoZQ0KPiA+ID4+ICsgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gPiA+ PiArDQo+ID4gPj4gKw0KPiA+ID4+DQo+ID4gaHR0cHM6Ly9lbWVhMDEuc2FmZWxpbmtzLnByb3Rl Y3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwJTNBJTJGJTJGb3BlDQo+ID4gPj4gbg0KPiA+ID4+ ICsgc291cmNlLm9yZyUyRmxpY2Vuc2VzJTJGYnNkLQ0KPiA+ID4+IGxpY2Vuc2UucGhwJmFtcDtk YXRhPTAyJTdDMDElN0N1ZGl0Lmt1bWFyJQ0KPiA+ID4+ICsNCj4gPiA+Pg0KPiA+IDQwbnhwLmNv bSU3Q2U5NTYzNWQwYzNjNzRlZGJmNzk4MDhkNjA5YTMwYzdiJTdDNjg2ZWExZDNiYzJiNGM2Zg0K PiA+ID4+IGE5MmNkOTkNCj4gPiA+PiArDQo+ID4gPj4NCj4gPiBjNWMzMDE2MzUlN0MwJTdDMCU3 QzYzNjcwNjk5MzI1MDUzNTM3MSZhbXA7c2RhdGE9cHlaRjlLdTNxRXBwDQo+ID4gPj4gT09LQ3lz aGJnDQo+ID4gPj4gKyA5b0NUNFA2QXdNMm9sS1kzJTJCMkltV3MlM0QmYW1wO3Jlc2VydmVkPTAN Cj4gPiA+PiArDQo+ID4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhF IEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gPiA+PiBCQVNJUywNCj4gPiA+PiArIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiA+ ID4+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiA+PiArDQo+ID4gPj4gKyoqLw0KPiA+ID4+ICsN Cj4gPiA+PiArI2lmbmRlZiBfR0xPQkFMX1BMQVRGT1JNX0hfDQo+ID4gPj4gKyNkZWZpbmUgX0dM T0JBTF9QTEFURk9STV9IXw0KPiA+ID4+ICsNCj4gPiA+PiArI2RlZmluZSBURUVDX09SSUdJTl9D T01NUyAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMg0KPiA+ID4+ICsNCj4gPiA+PiAr I2RlZmluZSBURUVDX1NVQ0NFU1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAw MA0KPiA+ID4+ICsjZGVmaW5lIFRFRUNfRVJST1JfQkFEX1BBUkFNRVRFUlMgICAgICAgICAgICAg ICAweEZGRkYwMDA2DQo+ID4gPj4gKyNkZWZpbmUgVEVFQ19FUlJPUl9DT01NVU5JQ0FUSU9OICAg ICAgICAgICAgICAgIDB4RkZGRjAwMEUNCj4gPiA+PiArI2RlZmluZSBURUVDX0VSUk9SX09VVF9P Rl9NRU1PUlkgICAgICAgICAgICAgICAgMHhGRkZGMDAwQw0KPiA+ID4+ICsNCj4gPiA+PiArI2Vu ZGlmDQo+ID4gPj4gLS0NCj4gPiA+PiAyLjcuNA0KPiA+ID4+DQo+ID4gPj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPiA+PiBlZGsyLWRldmVsIG1h aWxpbmcgbGlzdA0KPiA+ID4+IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4gPj4NCj4gPiBo dHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBz JTNBJTJGJTJGbGkNCj4gPiA+PiBzdA0KPiA+ID4+IHMuMDEub3JnJTJGbWFpbG1hbiUyRmxpc3Rp bmZvJTJGZWRrMi0NCj4gPiA+Pg0KPiA+IGRldmVsJmFtcDtkYXRhPTAyJTdDMDElN0N1ZGl0Lmt1 bWFyJTQwbnhwLmNvbSU3Q2U5NTYzNWQwYzNjNzRlDQo+ID4gPj4NCj4gPiBkYmY3OTgwOGQ2MDlh MzBjN2IlN0M2ODZlYTFkM2JjMmI0YzZmYTkyY2Q5OWM1YzMwMTYzNSU3QzAlN0MwJQ0KPiA+ID4+ DQo+ID4gN0M2MzY3MDY5OTMyNTA1MzUzNzEmYW1wO3NkYXRhPW1zQTZqR1JBa3BXb1EzM1ZzRGZi V3FnR2NJTVRQDQo+ID4gPj4gdSUyRmhjZHMzajlhRFBuVSUzRCZhbXA7cmVzZXJ2ZWQ9MA0KPiA+ ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPiA+ IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ID4gPiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0K PiA+ID4NCj4gPiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNv bS8/dXJsPWh0dHBzJTNBJTJGJTJGbGlzDQo+ID4gPiB0cy4wMS5vcmclMkZtYWlsbWFuJTJGbGlz dGluZm8lMkZlZGsyLQ0KPiA+IGRldmVsJmFtcDtkYXRhPTAyJTdDMDElN0N1ZGl0Lmt1DQo+ID4g Pg0KPiA+IG1hciU0MG54cC5jb20lN0M1MzExYzVkYzIyZDU0MDk1ZDc5ZDA4ZDYwOWU3ZmJmNSU3 QzY4NmVhMWQzYmMyDQo+ID4gYjRjNmZhOTINCj4gPiA+DQo+ID4gY2Q5OWM1YzMwMTYzNSU3QzAl N0MwJTdDNjM2NzA3Mjg5MzA1NTE5OTAzJmFtcDtzZGF0YT1kd0xVcThqOWYNCj4gPiA5cnhlYjM3 Vg0KPiA+ID4gOGZHWktvaVdoMVROQm5oVkZxbnVGNW9OM2clM0QmYW1wO3Jlc2VydmVkPTANCklN UE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNo bWVudHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91 IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVy IGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhl ciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGlu Zm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4NCg==