From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.107.5.47; helo=eur03-ve1-obe.outbound.protection.outlook.com; envelope-from=girish.pathak@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50047.outbound.protection.outlook.com [40.107.5.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 82A392119683E for ; Fri, 21 Dec 2018 08:48:45 -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:X-MS-Exchange-SenderADCheck; bh=nxQeEBuw0fmE0lOSbuxdoDV/NsmTIAh4deeEX+NsoH0=; b=hparNT6iVf5n9Hvm9GiR6rXGq490/gS0cwITUpcbjq556zryPKZsv2UdOJdcZ56OPgVL23QYCMJNcRFmQOjxfrdT7QfDjy6d5DLrpFmTRiW4yAmArH5usZXQlhTPUqIqkyL8vLPzqidW3fytVPlMqS8sWXOTx20cdZiijLUy140= Received: from VI1PR08MB1006.eurprd08.prod.outlook.com (10.166.143.156) by VI1PR08MB1151.eurprd08.prod.outlook.com (10.166.45.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1446.17; Fri, 21 Dec 2018 16:48:42 +0000 Received: from VI1PR08MB1006.eurprd08.prod.outlook.com ([fe80::61ec:a775:6be1:b812]) by VI1PR08MB1006.eurprd08.prod.outlook.com ([fe80::61ec:a775:6be1:b812%4]) with mapi id 15.20.1446.022; Fri, 21 Dec 2018 16:48:42 +0000 From: Girish Pathak To: Ard Biesheuvel , Jeff Brasen CC: "edk2-devel@lists.01.org" , Leif Lindholm Thread-Topic: [PATCH v3] ArmPkg/ArmScmiDxe: Add clock enable function Thread-Index: AQHUkz5pr9emsRdoVUy46qcANFEytKWJU8WAgAAYCoA= Date: Fri, 21 Dec 2018 16:48:41 +0000 Message-ID: References: <76d15663dbbcc6e83813d86f6ca981b47791cdcf.1544744882.git.jbrasen@nvidia.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Girish.Pathak@arm.com; x-originating-ip: [217.140.106.51] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR08MB1151; 6:p0d0wBgeGF6EJCeAZ1kVcsAMzUOR2AvntiMRRaIT3IyyblWgnj/wPqgc8LjIxXG+YLl0EsCwaqfyanTetCU7y+dieKzfmDObpcl/Xle6qRO8fMJTMivBFmTT1aeWRPqsorBh3pQqMGHzLVmI6byCHgEeGCT+XKpAhI3LlSqX4jzk/U1ysdDXfuOzqLv+U6hlX+jx8FQjDKyCwU5R3HAqNpkwDDqWtszuVA3V/psnk9YCIxRHQNwuxCgC1wJEEpvFD6FlSROfr9l7pFQOFimfv5qkVammrqqghcs43GFYfWQgBreV/sYvqsFniLynoGcDH4uNjs/ygF72yiW+jfT8zh0qSHRPs8h4UgUqaAkUKpQ02RWQx0NVX2ljvQs5aMwtvK6bLoaNBEO6/ZBePojeAKkm9pS7W5jTldtxnSMXpuoFEbxOYY3gpg58p9e/tdkaVh/0ZLAe057ypnTrx+I4gA==; 5:slexW7Cf4mwZTrXn+SsrvJgy9DzXlPdNZB+fO8EEoMB1p3ek3wIC0Z8CdPOc13mfsBYq334eARxS8otG7vMSyFeEvS2R03PoVDbwf5iZMPt0KFS1UK/6pL3lnSIKgjLvorFK1fM74Fyx0mvMgjM1R5EKfezHSfMIh0u/Pdi55A8=; 7:ryOmR+vPZaDp7hUKQtrFQJnq0be1BgAOQ0dn710R6zbC0oZ6rY89kc8KDt189fteV4skorcLSIvo43nvmTDY5Wqt5MN81aJDDg+3rfXNRCBtHmZHA7Cdvx9innfXzq00NIggXVQ/+AM/jxCWvriqkA== x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 10f96b51-d6e6-4e59-16d4-08d667642a33 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR08MB1151; x-ms-traffictypediagnostic: VI1PR08MB1151: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(5005026)(6040522)(2401047)(8121501046)(3231475)(944501520)(4982022)(52105112)(93006095)(93001095)(3002001)(10201501046)(6055026)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR08MB1151; BCL:0; PCL:0; RULEID:; SRVR:VI1PR08MB1151; x-forefront-prvs: 0893636978 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(136003)(366004)(346002)(376002)(396003)(199004)(189003)(40434004)(13464003)(72206003)(966005)(71190400001)(478600001)(4744004)(3846002)(71200400001)(66066001)(14454004)(6306002)(55016002)(106356001)(6436002)(105586002)(7736002)(54906003)(305945005)(97736004)(110136005)(26005)(53936002)(5660300001)(25786009)(2906002)(68736007)(102836004)(6506007)(76176011)(229853002)(16799955002)(186003)(74316002)(33656002)(15188155005)(53546011)(6246003)(7696005)(86362001)(8676002)(316002)(19627235002)(8936002)(9686003)(53376002)(446003)(11346002)(14444005)(5024004)(81166006)(256004)(575784001)(81156014)(99286004)(486006)(6116002)(476003)(4326008); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR08MB1151; H:VI1PR08MB1006.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: MjFXsjGE2U62l57Fx1QGix+f5NDDewgpX+NpaGIX0JRC0ijJoj9ihDWd/K5+1ntl69Vn4cpGyb8FqZLSWpMlM57QG089KhWFgUhLJgpHRDS3lI4u+hqJeYuCmT6cuZyuxah9EjfBqUEd3XY6jDJ1rYsMbULQNrGZW+7dgxrw+HTIyaW16/TuwGG8ovmaUPNmt10OhIi4lG2yNDUxOxd7DKyFkbcXDcAjNTu50SBGsRr+54EQxqZ+TGTzxN93MhExQH7NEnDK22kkEInFRDXEC3eEYlRH688U9PGBPrGhgkB0RGww0ZnXISGvVZku/Rks spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 10f96b51-d6e6-4e59-16d4-08d667642a33 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Dec 2018 16:48:41.9723 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB1151 Subject: Re: [PATCH v3] ArmPkg/ArmScmiDxe: Add clock enable function 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, 21 Dec 2018 16:48:48 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QXBhcnQgZnJvbSBzb21lIG1pbm9yIGluZGVudGF0aW9uIGVycm9ycyBpbiBmdW5jdGlvbiBwYXJh bWV0ZXIgZGVjbGFyYXRpb25zIGluIEFybVNjbWlDbG9jazJQcm90b2NvbC5oICwgdGhpcyBsb29r cyBmaW5lLg0KDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBBcmQgQmllc2hl dXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4NClNlbnQ6IDIxIERlY2VtYmVyIDIwMTgg MTQ6NTUNClRvOiBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPjsgR2lyaXNoIFBhdGhh ayA8R2lyaXNoLlBhdGhha0Bhcm0uY29tPg0KQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBM ZWlmIExpbmRob2xtIDxsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc+DQpTdWJqZWN0OiBSZTogW1BB VENIIHYzXSBBcm1Qa2cvQXJtU2NtaUR4ZTogQWRkIGNsb2NrIGVuYWJsZSBmdW5jdGlvbg0KDQpP biBGcmksIDE0IERlYyAyMDE4IGF0IDAwOjQ4LCBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEu Y29tPiB3cm90ZToNCj4NCj4gQWRkIGZ1bmN0aW9uIHRvIGFsbG93IGVuYWJsaW5nIGFuZCBkaXNh Ymxpbmcgb2YgdGhlIGNsb2NrIHVzaW5nIHRoZQ0KPiBTQ01JIGludGVyZmFjZS4gQWRkIGdBcm1T Y21pQ2xvY2syUHJvdG9jb2xHdWlkIHRvIGRpc3Rpbmd1aXNoDQo+IHBsYXRmb3JtcyB0aGF0IHN1 cHBvcnQgbmV3IEFQSSBmcm9tIHRob3NlIHRoYXQganVzdCBoYXZlIHRoZSBvbGRlciBwcm90b2Nv bC4NCj4NCj4gU0NNSV9DTE9DSzJfUFJPVE9DT0wgYWxzbyBhZGRzIGEgdmVyc2lvbiBwYXJhbWV0 ZXIgdG8gYWxsb3cgZm9yIGZ1dHVyZQ0KPiBjaGFuZ2VzLiBJdCBpcyBwbGFjZWQgYWZ0ZXIgdGhl IGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmVzZW50IGluIHRoZQ0KPiBleGlzdGluZyBwcm90b2NvbCB0 byBhbGxvdyBTQ01JX0NMT0NLMl9QUk9UT0NPTCB0byBiZSBjYXN0IHRvDQo+IFNDTUlfQ0xPQ0tf UFJPVE9DT0wgc28gdGhhdCBvbmx5IGEgc2luZ2xlIGltcGxlbWVudGF0aW9uIG9mIHRob3NlDQo+ IGZ1bmN0aW9uIGFyZSBuZWVkZWQuDQo+DQo+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUg Q29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gU2lnbmVkLW9mZi1ieTogSmVmZiBCcmFzZW4g PGpicmFzZW5AbnZpZGlhLmNvbT4NCj4gQ2M6IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZl bEBsaW5hcm8ub3JnPg0KPiBDYzogTGVpZiBMaW5kaG9sbSA8bGVpZi5saW5kaG9sbUBsaW5hcm8u b3JnPg0KPiBDYzogR3Jpc2ggUGF0aGFrIDxnaXJpc2gucGF0aGFrQGFybS5jb20+DQoNCkknZCBs aWtlIHRvIGhlYXIgZnJvbSBHaXJpc2ggYXMgd2VsbCwgc2luY2UgaGUgY29udHJpYnV0ZWQgdGhp cyBjb2RlIG9yaWdpbmFsbHkuDQoNCj4gLS0tDQo+ICBBcm1Qa2cvQXJtUGtnLmRlYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+ICAuLi4vQXJtU2NtaUR4ZS9Bcm1T Y21pQ2xvY2tQcm90b2NvbFByaXZhdGUuaCAgICAgICB8ICAgNyArDQo+ICBBcm1Qa2cvRHJpdmVy cy9Bcm1TY21pRHhlL0FybVNjbWlEeGUuaW5mICAgICAgICAgICB8ICAgMSArDQo+ICBBcm1Qa2cv RHJpdmVycy9Bcm1TY21pRHhlL1NjbWlDbG9ja1Byb3RvY29sLmMgICAgICB8ICA2MiArKysrKysr DQo+ICBBcm1Qa2cvSW5jbHVkZS9Qcm90b2NvbC9Bcm1TY21pQ2xvY2syUHJvdG9jb2wuaCAgICB8 IDE5OCArKysrKysrKysrKysrKysrKysrKysNCj4gIDUgZmlsZXMgY2hhbmdlZCwgMjY5IGluc2Vy dGlvbnMoKykNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBBcm1Qa2cvSW5jbHVkZS9Qcm90b2NvbC9B cm1TY21pQ2xvY2syUHJvdG9jb2wuaA0KPg0KPiBkaWZmIC0tZ2l0IGEvQXJtUGtnL0FybVBrZy5k ZWMgYi9Bcm1Qa2cvQXJtUGtnLmRlYyBpbmRleA0KPiBkOTllYjY3Li4yZjVlNWIzIDEwMDY0NA0K PiAtLS0gYS9Bcm1Qa2cvQXJtUGtnLmRlYw0KPiArKysgYi9Bcm1Qa2cvQXJtUGtnLmRlYw0KPiBA QCAtNTksNiArNTksNyBAQA0KPiAgICAjIyBBcm0gU3lzdGVtIENvbnRyb2wgYW5kIE1hbmFnZW1l bnQgSW50ZXJmYWNlKFNDTUkpIENsb2NrIG1hbmFnZW1lbnQgcHJvdG9jb2wNCj4gICAgIyMgQXJt UGtnL0luY2x1ZGUvUHJvdG9jb2wvQXJtU2NtaUNsb2NrUHJvdG9jb2wuaA0KPiAgICBnQXJtU2Nt aUNsb2NrUHJvdG9jb2xHdWlkID0geyAweDkxY2U2N2E4LCAweGUwYWEsIDB4NDAxMiwgeyAweGI5 LA0KPiAweDlmLCAweGI2LCAweGZjLCAweGYzLCAweDQsIDB4OGUsIDB4YWEgfSB9DQo+ICsgIGdB cm1TY21pQ2xvY2syUHJvdG9jb2xHdWlkID0geyAweGI4ZDhjYWYyLCAweDllOTQsIDB4NDYyYywg eyAweGE4LA0KPiArIDB4MzQsIDB4NmMsIDB4OTksIDB4ZmMsIDB4MDUsIDB4ZWYsIDB4Y2YgfSB9 DQo+DQo+ICAgICMjIEFybSBTeXN0ZW0gQ29udHJvbCBhbmQgTWFuYWdlbWVudCBJbnRlcmZhY2Uo U0NNSSkgQ2xvY2sgbWFuYWdlbWVudCBwcm90b2NvbA0KPiAgICAjIyBBcm1Qa2cvSW5jbHVkZS9Q cm90b2NvbC9Bcm1TY21pUGVyZm9ybWFuY2VQcm90b2NvbC5oDQo+IGRpZmYgLS1naXQgYS9Bcm1Q a2cvRHJpdmVycy9Bcm1TY21pRHhlL0FybVNjbWlDbG9ja1Byb3RvY29sUHJpdmF0ZS5oDQo+IGIv QXJtUGtnL0RyaXZlcnMvQXJtU2NtaUR4ZS9Bcm1TY21pQ2xvY2tQcm90b2NvbFByaXZhdGUuaA0K PiBpbmRleCAwZDFlYzZmLi5jMTM1YmFjIDEwMDY0NA0KPiAtLS0gYS9Bcm1Qa2cvRHJpdmVycy9B cm1TY21pRHhlL0FybVNjbWlDbG9ja1Byb3RvY29sUHJpdmF0ZS5oDQo+ICsrKyBiL0FybVBrZy9E cml2ZXJzL0FybVNjbWlEeGUvQXJtU2NtaUNsb2NrUHJvdG9jb2xQcml2YXRlLmgNCj4gQEAgLTU5 LDYgKzU5LDEzIEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gICAgQ0xPQ0tfUkFURV9EV09SRCBSYXRl Ow0KPiAgfSBDTE9DS19SQVRFX1NFVF9BVFRSSUJVVEVTOw0KPg0KPiArDQo+ICsvLyBNZXNzYWdl IHBhcmFtZXRlcnMgZm9yIENMT0NLX0NPTkZJR19TRVQgY29tbWFuZC4NCj4gK3R5cGVkZWYgc3Ry dWN0IHsNCj4gKyAgVUlOVDMyIENsb2NrSWQ7DQo+ICsgIFVJTlQzMiBBdHRyaWJ1dGVzOw0KPiAr fSBDTE9DS19DT05GSUdfU0VUX0FUVFJJQlVURVM7DQo+ICsNCj4gIC8vICBpZiBDbG9ja0F0dHIg Qml0WzBdIGlzIHNldCB0aGVuIGNsb2NrIGRldmljZSBpcyBlbmFibGVkLg0KPiAgI2RlZmluZSBD TE9DS19FTkFCTEVfTUFTSyAgICAgICAgIDB4MQ0KPiAgI2RlZmluZSBDTE9DS19FTkFCTEVEKENs b2NrQXR0cikgICgoQ2xvY2tBdHRyICYgQ0xPQ0tfRU5BQkxFX01BU0spID09DQo+IDEpIGRpZmYg LS1naXQgYS9Bcm1Qa2cvRHJpdmVycy9Bcm1TY21pRHhlL0FybVNjbWlEeGUuaW5mDQo+IGIvQXJt UGtnL0RyaXZlcnMvQXJtU2NtaUR4ZS9Bcm1TY21pRHhlLmluZg0KPiBpbmRleCAwNWNlOWMwLi45 YjI5YjlmIDEwMDY0NA0KPiAtLS0gYS9Bcm1Qa2cvRHJpdmVycy9Bcm1TY21pRHhlL0FybVNjbWlE eGUuaW5mDQo+ICsrKyBiL0FybVBrZy9Ecml2ZXJzL0FybVNjbWlEeGUvQXJtU2NtaUR4ZS5pbmYN Cj4gQEAgLTQ2LDYgKzQ2LDcgQEANCj4gIFtQcm90b2NvbHNdDQo+ICAgIGdBcm1TY21pQmFzZVBy b3RvY29sR3VpZA0KPiAgICBnQXJtU2NtaUNsb2NrUHJvdG9jb2xHdWlkDQo+ICsgIGdBcm1TY21p Q2xvY2syUHJvdG9jb2xHdWlkDQo+ICAgIGdBcm1TY21pUGVyZm9ybWFuY2VQcm90b2NvbEd1aWQN Cj4NCj4gIFtEZXBleF0NCj4gZGlmZiAtLWdpdCBhL0FybVBrZy9Ecml2ZXJzL0FybVNjbWlEeGUv U2NtaUNsb2NrUHJvdG9jb2wuYw0KPiBiL0FybVBrZy9Ecml2ZXJzL0FybVNjbWlEeGUvU2NtaUNs b2NrUHJvdG9jb2wuYw0KPiBpbmRleCA2NGQyYWZhLi5jN2YyN2EzIDEwMDY0NA0KPiAtLS0gYS9B cm1Qa2cvRHJpdmVycy9Bcm1TY21pRHhlL1NjbWlDbG9ja1Byb3RvY29sLmMNCj4gKysrIGIvQXJt UGtnL0RyaXZlcnMvQXJtU2NtaUR4ZS9TY21pQ2xvY2tQcm90b2NvbC5jDQo+IEBAIC0xOSw2ICsx OSw3IEBADQo+ICAjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiAgI2luY2x1ZGUgPExp YnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ICAjaW5jbHVkZSA8UHJvdG9jb2wv QXJtU2NtaUNsb2NrUHJvdG9jb2wuaD4NCj4gKyNpbmNsdWRlIDxQcm90b2NvbC9Bcm1TY21pQ2xv Y2syUHJvdG9jb2wuaD4NCj4NCj4gICNpbmNsdWRlICJBcm1TY21pQ2xvY2tQcm90b2NvbFByaXZh dGUuaCINCj4gICNpbmNsdWRlICJTY21pUHJpdmF0ZS5oIg0KPiBAQCAtMzg4LDYgKzM4OSw1MyBA QCBDbG9ja1JhdGVTZXQgKA0KPiAgICByZXR1cm4gU3RhdHVzOw0KPiAgfQ0KPg0KPiArLyoqIEVu YWJsZS9EaXNhYmxlIHNwZWNpZmllZCBjbG9jay4NCj4gKw0KPiArICBAcGFyYW1baW5dICBUaGlz ICAgICAgICBBIFBvaW50ZXIgdG8gU0NNSV9DTE9DS19QUk9UT0NPTCBJbnN0YW5jZS4NCj4gKyAg QHBhcmFtW2luXSAgQ2xvY2tJZCAgICAgSWRlbnRpZmllciBmb3IgdGhlIGNsb2NrIGRldmljZS4N Cj4gKyAgQHBhcmFtW2luXSAgRW5hYmxlICAgICAgVFJVRSB0byBlbmFibGUsIEZBTFNFIHRvIGRp c2FibGUuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICBDbG9jayBlbmFi bGUvZGlzYWJsZSBzdWNjZXNzZnVsLg0KPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAg IFNDUCByZXR1cm5zIGFuIFNDTUkgZXJyb3IuDQo+ICsgIEByZXR2YWwgIShFRklfU1VDQ0VTUykg ICAgICAgT3RoZXIgZXJyb3JzLg0KPiArKiovDQo+ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMNCj4g K0Nsb2NrRW5hYmxlICgNCj4gKyAgSU4gU0NNSV9DTE9DSzJfUFJPVE9DT0wgKlRoaXMsDQo+ICsg IElOIFVJTlQzMiAgICAgICAgICAgICAgIENsb2NrSWQsDQo+ICsgIElOIEJPT0xFQU4gICAgICAg ICAgICAgIEVuYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAg ICAgICBTdGF0dXM7DQo+ICsgIENMT0NLX0NPTkZJR19TRVRfQVRUUklCVVRFUyAqQ2xvY2tDb25m aWdTZXRBdHRyaWJ1dGVzOw0KPiArICBTQ01JX0NPTU1BTkQgICAgICAgICAgICAgICAgQ21kOw0K PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgUGF5bG9hZExlbmd0aDsNCj4gKw0KPiAr ICBTdGF0dXMgPSBTY21pQ29tbWFuZEdldFBheWxvYWQNCj4gKyAoKFVJTlQzMioqKSZDbG9ja0Nv bmZpZ1NldEF0dHJpYnV0ZXMpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsg ICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vIEZpbGwgYXJndW1lbnRzIGZv ciBjbG9jayBwcm90b2NvbCBjb21tYW5kLg0KPiArICBDbG9ja0NvbmZpZ1NldEF0dHJpYnV0ZXMt PkNsb2NrSWQgICAgPSBDbG9ja0lkOw0KPiArICBDbG9ja0NvbmZpZ1NldEF0dHJpYnV0ZXMtPkF0 dHJpYnV0ZXMgPSBFbmFibGUgPyBCSVQwIDogMDsNCj4gKw0KPiArICBDbWQuUHJvdG9jb2xJZCA9 IFNDTUlfUFJPVE9DT0xfSURfQ0xPQ0s7ICBDbWQuTWVzc2FnZUlkICA9DQo+ICsgU0NNSV9NRVNT QUdFX0lEX0NMT0NLX0NPTkZJR19TRVQ7DQo+ICsNCj4gKyAgUGF5bG9hZExlbmd0aCA9IHNpemVv ZiAoQ0xPQ0tfQ09ORklHX1NFVF9BVFRSSUJVVEVTKTsNCj4gKw0KPiArICAvLyBFeGVjdXRlIGFu ZCB3YWl0IGZvciByZXNwb25zZSBvbiBhIFNDTUkgY2hhbm5lbC4NCj4gKyAgU3RhdHVzID0gU2Nt aUNvbW1hbmRFeGVjdXRlICgNCj4gKyAgICAgICAgICAgICAmQ21kLA0KPiArICAgICAgICAgICAg ICZQYXlsb2FkTGVuZ3RoLA0KPiArICAgICAgICAgICAgIE5VTEwNCj4gKyAgICAgICAgICAgICAp Ow0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gIC8vIEluc3RhbmNlIG9m IHRoZSBTQ01JIGNsb2NrIG1hbmFnZW1lbnQgcHJvdG9jb2wuDQo+ICBTVEFUSUMgQ09OU1QgU0NN SV9DTE9DS19QUk9UT0NPTCBTY21pQ2xvY2tQcm90b2NvbCA9IHsNCj4gICAgQ2xvY2tHZXRWZXJz aW9uLA0KPiBAQCAtMzk4LDYgKzQ0NiwxOCBAQCBTVEFUSUMgQ09OU1QgU0NNSV9DTE9DS19QUk9U T0NPTCBTY21pQ2xvY2tQcm90b2NvbCA9IHsNCj4gICAgQ2xvY2tSYXRlU2V0DQo+ICAgfTsNCj4N Cj4gKy8vIEluc3RhbmNlIG9mIHRoZSBTQ01JIGNsb2NrIG1hbmFnZW1lbnQgcHJvdG9jb2wuDQo+ ICtTVEFUSUMgQ09OU1QgU0NNSV9DTE9DSzJfUFJPVE9DT0wgU2NtaUNsb2NrMlByb3RvY29sID0g ew0KPiArICAoU0NNSV9DTE9DSzJfR0VUX1ZFUlNJT04pQ2xvY2tHZXRWZXJzaW9uLA0KPiArICAo U0NNSV9DTE9DSzJfR0VUX1RPVEFMX0NMT0NLUylDbG9ja0dldFRvdGFsQ2xvY2tzLA0KPiArICAo U0NNSV9DTE9DSzJfR0VUX0NMT0NLX0FUVFJJQlVURVMpQ2xvY2tHZXRDbG9ja0F0dHJpYnV0ZXMs DQo+ICsgIChTQ01JX0NMT0NLMl9ERVNDUklCRV9SQVRFUylDbG9ja0Rlc2NyaWJlUmF0ZXMsDQo+ ICsgIChTQ01JX0NMT0NLMl9SQVRFX0dFVClDbG9ja1JhdGVHZXQsDQo+ICsgIChTQ01JX0NMT0NL Ml9SQVRFX1NFVClDbG9ja1JhdGVTZXQsDQo+ICsgIFNDTUlfQ0xPQ0syX1BST1RPQ09MX1ZFUlNJ T04sDQo+ICsgIENsb2NrRW5hYmxlDQo+ICsgfTsNCj4gKw0KPiAgLyoqIEluaXRpYWxpemUgY2xv Y2sgbWFuYWdlbWVudCBwcm90b2NvbCBhbmQgaW5zdGFsbCBwcm90b2NvbCBvbiBhIGdpdmVuIGhh bmRsZS4NCj4NCj4gICAgQHBhcmFtW2luXSBIYW5kbGUgICAgICAgICAgICAgIEhhbmRsZSB0byBp bnN0YWxsIGNsb2NrIG1hbmFnZW1lbnQgcHJvdG9jb2wuDQo+IEBAIC00MTMsNiArNDczLDggQEAg U2NtaUNsb2NrUHJvdG9jb2xJbml0ICgNCj4gICAgICAgICAgICAgICAgICBIYW5kbGUsDQo+ICAg ICAgICAgICAgICAgICAgJmdBcm1TY21pQ2xvY2tQcm90b2NvbEd1aWQsDQo+ICAgICAgICAgICAg ICAgICAgJlNjbWlDbG9ja1Byb3RvY29sLA0KPiArICAgICAgICAgICAgICAgICZnQXJtU2NtaUNs b2NrMlByb3RvY29sR3VpZCwNCj4gKyAgICAgICAgICAgICAgICAmU2NtaUNsb2NrMlByb3RvY29s LA0KPiAgICAgICAgICAgICAgICAgIE5VTEwNCj4gICAgICAgICAgICAgICAgICApOw0KPiAgfQ0K PiBkaWZmIC0tZ2l0IGEvQXJtUGtnL0luY2x1ZGUvUHJvdG9jb2wvQXJtU2NtaUNsb2NrMlByb3Rv Y29sLmgNCj4gYi9Bcm1Qa2cvSW5jbHVkZS9Qcm90b2NvbC9Bcm1TY21pQ2xvY2syUHJvdG9jb2wu aA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5mMmM5NjcwDQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvQXJtUGtnL0luY2x1ZGUvUHJvdG9jb2wvQXJtU2NtaUNsb2Nr MlByb3RvY29sLmgNCj4gQEAgLTAsMCArMSwxOTggQEANCj4gKy8qKiBAZmlsZQ0KPiArDQo+ICsg IENvcHlyaWdodCAoYykgMjAxNy0yMDE4LCBBcm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gKw0KPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUNCj4gKyBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSAgd2hpY2gNCj4gKyBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+ ICsgZm91bmQgYXQgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5w aHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIg0KPiArIEJBU0lTLCAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJF UFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4g Kw0KPiArICBTeXN0ZW0gQ29udHJvbCBhbmQgTWFuYWdlbWVudCBJbnRlcmZhY2UgVjEuMA0KPiAr ICAgIGh0dHA6Ly9pbmZvY2VudGVyLmFybS5jb20vaGVscC90b3BpYy9jb20uYXJtLmRvYy5kZW4w MDU2YS8NCj4gKyAgICBERU4wMDU2QV9TeXN0ZW1fQ29udHJvbF9hbmRfTWFuYWdlbWVudF9JbnRl cmZhY2UucGRmDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBBUk1fU0NNSV9DTE9DSzJfUFJPVE9D T0xfSF8NCj4gKyNkZWZpbmUgQVJNX1NDTUlfQ0xPQ0syX1BST1RPQ09MX0hfDQo+ICsNCj4gKyNp bmNsdWRlIDxQcm90b2NvbC9Bcm1TY21pLmg+DQo+ICsjaW5jbHVkZSA8UHJvdG9jb2wvQXJtU2Nt aUNsb2NrUHJvdG9jb2wuaD4NCj4gKw0KPiArI2RlZmluZSBBUk1fU0NNSV9DTE9DSzJfUFJPVE9D T0xfR1VJRCB7IFwNCj4gKyAgMHhiOGQ4Y2FmMiwgMHg5ZTk0LCAweDQ2MmMsIHsgMHhhOCwgMHgz NCwgMHg2YywgMHg5OSwgMHhmYywgMHgwNSwNCj4gKzB4ZWYsIDB4Y2YgfSBcDQo+ICsgIH0NCj4g Kw0KPiArZXh0ZXJuIEVGSV9HVUlEIGdBcm1TY21pQ2xvY2syUHJvdG9jb2xHdWlkOw0KPiArDQo+ ICsjZGVmaW5lIFNDTUlfQ0xPQ0syX1BST1RPQ09MX1ZFUlNJT04gMQ0KPiArDQo+ICt0eXBlZGVm IHN0cnVjdCBfU0NNSV9DTE9DSzJfUFJPVE9DT0wgU0NNSV9DTE9DSzJfUFJPVE9DT0w7DQo+ICsN Cj4gKy8vIFByb3RvY29sIEludGVyZmFjZSBmdW5jdGlvbnMuDQo+ICsNCj4gKy8qKiBSZXR1cm4g dmVyc2lvbiBvZiB0aGUgY2xvY2sgbWFuYWdlbWVudCBwcm90b2NvbCBzdXBwb3J0ZWQgYnkgU0NQ IGZpcm13YXJlLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgIEEgUG9pbnRlciB0byBT Q01JX0NMT0NLMl9QUk9UT0NPTCBJbnN0YW5jZS4NCj4gKw0KPiArICBAcGFyYW1bb3V0XSBWZXJz aW9uICBWZXJzaW9uIG9mIHRoZSBzdXBwb3J0ZWQgU0NNSSBDbG9jayBtYW5hZ2VtZW50IHByb3Rv Y29sLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIHZlcnNpb24gaXMg cmV0dXJuZWQuDQo+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgU0NQIHJldHVybnMgYW4g U0NNSSBlcnJvci4NCj4gKyAgQHJldHZhbCAhKEVGSV9TVUNDRVNTKSAgICBPdGhlciBlcnJvcnMu DQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklBUEkgKlNDTUlfQ0xP Q0syX0dFVF9WRVJTSU9OKSAoDQo+ICsgIElOICBTQ01JX0NMT0NLMl9QUk9UT0NPTCAgKlRoaXMs DQo+ICsgIE9VVCBVSU5UMzIgICAgICAgICAgICAgICAqVmVyc2lvbg0KPiArICApOw0KPiArDQo+ ICsvKiogUmV0dXJuIHRvdGFsIG51bWJlciBvZiBjbG9jayBkZXZpY2VzIHN1cHBvcnRlZCBieSB0 aGUgY2xvY2sgbWFuYWdlbWVudA0KPiArICAgcHJvdG9jb2wuDQo+ICsNCj4gKyAgQHBhcmFtW2lu XSAgVGhpcyAgICAgICAgIEEgUG9pbnRlciB0byBTQ01JX0NMT0NLMl9QUk9UT0NPTCBJbnN0YW5j ZS4NCj4gKw0KPiArICBAcGFyYW1bb3V0XSBUb3RhbENsb2NrcyAgVG90YWwgbnVtYmVyIG9mIGNs b2NrcyBzdXBwb3J0ZWQuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUb3Rh bCBudW1iZXIgb2YgY2xvY2tzIHN1cHBvcnRlZCBpcyByZXR1cm5lZC4NCj4gKyAgQHJldHZhbCBF RklfREVWSUNFX0VSUk9SICBTQ1AgcmV0dXJucyBhbiBTQ01JIGVycm9yLg0KPiArICBAcmV0dmFs ICEoRUZJX1NVQ0NFU1MpICAgIE90aGVyIGVycm9ycy4NCj4gKyoqLw0KPiArdHlwZWRlZg0KPiAr RUZJX1NUQVRVUw0KPiArKEVGSUFQSSAqU0NNSV9DTE9DSzJfR0VUX1RPVEFMX0NMT0NLUykgKA0K PiArICBJTiAgU0NNSV9DTE9DSzJfUFJPVE9DT0wgICpUaGlzLA0KPiArICBPVVQgVUlOVDMyICAg ICAgICAgICAgICAgKlRvdGFsQ2xvY2tzDQo+ICsgICk7DQo+ICsNCj4gKy8qKiBSZXR1cm4gYXR0 cmlidXRlcyBvZiBhIGNsb2NrIGRldmljZS4NCj4gKw0KPiArICBAcGFyYW1baW5dICBUaGlzICAg ICAgICBBIFBvaW50ZXIgdG8gU0NNSV9DTE9DSzJfUFJPVE9DT0wgSW5zdGFuY2UuDQo+ICsgIEBw YXJhbVtpbl0gIENsb2NrSWQgICAgIElkZW50aWZpZXIgZm9yIHRoZSBjbG9jayBkZXZpY2UuDQo+ ICsNCj4gKyAgQHBhcmFtW291dF0gRW5hYmxlZCAgICAgICAgIElmIFRSVUUsIHRoZSBjbG9jayBk ZXZpY2UgaXMgZW5hYmxlZC4NCj4gKyAgQHBhcmFtW291dF0gQ2xvY2tBc2NpaU5hbWUgIEEgTlVM TCB0ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZyB3aXRoIHRoZSBjbG9jaw0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmFtZSwgb2YgdXAgdG8gMTYgYnl0ZXMuDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICBDbG9jayBkZXZpY2UgYXR0cmlidXRlcyBhcmUgcmV0 dXJuZWQuDQo+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgU0NQIHJldHVybnMgYW4g U0NNSSBlcnJvci4NCj4gKyAgQHJldHZhbCAhKEVGSV9TVUNDRVNTKSAgICAgICBPdGhlciBlcnJv cnMuDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklBUEkgKlNDTUlf Q0xPQ0syX0dFVF9DTE9DS19BVFRSSUJVVEVTKSAoDQo+ICsgIElOICBTQ01JX0NMT0NLMl9QUk9U T0NPTCAgKlRoaXMsDQo+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICBDbG9ja0lkLA0KPiAr ICBPVVQgQk9PTEVBTiAgICAgICAgICAgICAgKkVuYWJsZWQsDQo+ICsgIE9VVCBDSEFSOCAgICAg ICAgICAgICAgICAqQ2xvY2tBc2NpaU5hbWUNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFJldHVybiBs aXN0IG9mIHJhdGVzIHN1cHBvcnRlZCBieSBhIGdpdmVuIGNsb2NrIGRldmljZS4NCj4gKw0KPiAr ICBAcGFyYW1baW5dIFRoaXMgICAgICAgIEEgcG9pbnRlciB0byBTQ01JX0NMT0NLMl9QUk9UT0NP TCBJbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSBDbG9ja0lkICAgICBJZGVudGlmaWVyIGZvciB0 aGUgY2xvY2sgZGV2aWNlLg0KPiArDQo+ICsgIEBwYXJhbVtvdXRdIEZvcm1hdCAgICAgIFNDTUlf Q0xPQ0tfUkFURV9GT1JNQVRfRElTQ1JFVEU6IENsb2NrIGRldmljZQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICBzdXBwb3J0cyByYW5nZSBvZiBjbG9jayByYXRlcyB3aGljaCBhcmUgbm9u LWxpbmVhci4NCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBTQ01JX0NMT0NLX1JB VEVfRk9STUFUX0xJTkVBUjogQ2xvY2sgZGV2aWNlIHN1cHBvcnRzDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgIHJhbmdlIG9mIGxpbmVhciBjbG9jayByYXRlcyBmcm9tIE1pbiB0byBNYXgg aW4gc3RlcHMuDQo+ICsNCj4gKyAgQHBhcmFtW291dF0gVG90YWxSYXRlcyAgVG90YWwgbnVtYmVy IG9mIHJhdGVzLg0KPiArDQo+ICsgIEBwYXJhbVtpbixvdXRdIFJhdGVBcnJheVNpemUgIFNpemUg b2YgdGhlIFJhdGVBcnJheS4NCj4gKw0KPiArICBAcGFyYW1bb3V0XSBSYXRlQXJyYXkgICBMaXN0 IG9mIGNsb2NrIHJhdGVzLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg TGlzdCBvZiBjbG9jayByYXRlcyBhcmUgcmV0dXJuZWQuDQo+ICsgIEByZXR2YWwgRUZJX0RFVklD RV9FUlJPUiAgICAgU0NQIHJldHVybnMgYW4gU0NNSSBlcnJvci4NCj4gKyAgQHJldHZhbCBFRklf QlVGRkVSX1RPT19TTUFMTCBSYXRlQXJyYXlTaXplIGlzIHRvbyBzbWFsbCBmb3IgdGhlIHJlc3Vs dC4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBoYXMgYmVlbiB1cGRhdGVk IHRvIHRoZSBzaXplIG5lZWRlZC4NCj4gKyAgQHJldHZhbCAhKEVGSV9TVUNDRVNTKSAgICAgICBP dGhlciBlcnJvcnMuDQo+ICsqKi8NCj4gK3R5cGVkZWYNCj4gK0VGSV9TVEFUVVMNCj4gKyhFRklB UEkgKlNDTUlfQ0xPQ0syX0RFU0NSSUJFX1JBVEVTKSAoDQo+ICsgIElOICAgICBTQ01JX0NMT0NL Ml9QUk9UT0NPTCAgICAgKlRoaXMsDQo+ICsgIElOICAgICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgQ2xvY2tJZCwNCj4gKyAgT1VUICAgIFNDTUlfQ0xPQ0tfUkFURV9GT1JNQVQgICpGb3JtYXQs DQo+ICsgIE9VVCAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAqVG90YWxSYXRlcywNCj4gKyAg SU4gT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAgICpSYXRlQXJyYXlTaXplLA0KPiArICBPVVQg ICAgU0NNSV9DTE9DS19SQVRFICAgICAgICAgKlJhdGVBcnJheQ0KPiArICApOw0KPiArDQo+ICsv KiogR2V0IGNsb2NrIHJhdGUuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAgQSBQ b2ludGVyIHRvIFNDTUlfQ0xPQ0syX1BST1RPQ09MIEluc3RhbmNlLg0KPiArICBAcGFyYW1baW5d ICBDbG9ja0lkICAgICBJZGVudGlmaWVyIGZvciB0aGUgY2xvY2sgZGV2aWNlLg0KPiArDQo+ICsg IEBwYXJhbVtvdXRdICBSYXRlICAgICAgIENsb2NrIHJhdGUuDQo+ICsNCj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICBDbG9jayByYXRlIGlzIHJldHVybmVkLg0KPiArICBAcmV0dmFs IEVGSV9ERVZJQ0VfRVJST1IgICAgIFNDUCByZXR1cm5zIGFuIFNDTUkgZXJyb3IuDQo+ICsgIEBy ZXR2YWwgIShFRklfU1VDQ0VTUykgICAgICAgT3RoZXIgZXJyb3JzLg0KPiArKiovDQo+ICt0eXBl ZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJICpTQ01JX0NMT0NLMl9SQVRFX0dFVCkgKA0K PiArICBJTiAgU0NNSV9DTE9DSzJfUFJPVE9DT0wgICpUaGlzLA0KPiArICBJTiAgVUlOVDMyICAg ICAgICAgICAgICAgQ2xvY2tJZCwNCj4gKyAgT1VUIFVJTlQ2NCAgICAgICAgICAgICAgICpSYXRl DQo+ICsgICk7DQo+ICsNCj4gKy8qKiBTZXQgY2xvY2sgcmF0ZS4NCj4gKw0KPiArICBAcGFyYW1b aW5dICBUaGlzICAgICAgICBBIFBvaW50ZXIgdG8gU0NNSV9DTE9DSzJfUFJPVE9DT0wgSW5zdGFu Y2UuDQo+ICsgIEBwYXJhbVtpbl0gIENsb2NrSWQgICAgIElkZW50aWZpZXIgZm9yIHRoZSBjbG9j ayBkZXZpY2UuDQo+ICsgIEBwYXJhbVtpbl0gIFJhdGUgICAgICAgIENsb2NrIHJhdGUuDQo+ICsN Cj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICBDbG9jayByYXRlIHNldCBzdWNjZXNz Lg0KPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgIFNDUCByZXR1cm5zIGFuIFNDTUkg ZXJyb3IuDQo+ICsgIEByZXR2YWwgIShFRklfU1VDQ0VTUykgICAgICAgT3RoZXIgZXJyb3JzLg0K PiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJICpTQ01JX0NMT0NL Ml9SQVRFX1NFVCkgKA0KPiArICBJTiBTQ01JX0NMT0NLMl9QUk9UT0NPTCAgKlRoaXMsDQo+ICsg IElOIFVJTlQzMiAgICAgICAgICAgICAgIENsb2NrSWQsDQo+ICsgIElOIFVJTlQ2NCAgICAgICAg ICAgICAgIFJhdGUNCj4gKyAgKTsNCj4gKw0KPiArLyoqIEVuYWJsZS9EaXNhYmxlIHNwZWNpZmll ZCBjbG9jay4NCj4gKyAgICBGdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSB1bmRlciBnQXJtU2Nt aUNsb2NrMlByb3RvY29sR3VpZA0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgIEEg UG9pbnRlciB0byBTQ01JX0NMT0NLMl9QUk9UT0NPTCBJbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2lu XSAgQ2xvY2tJZCAgICAgSWRlbnRpZmllciBmb3IgdGhlIGNsb2NrIGRldmljZS4NCj4gKyAgQHBh cmFtW2luXSAgRW5hYmxlICAgICAgVFJVRSB0byBlbmFibGUsIEZBTFNFIHRvIGRpc2FibGUuDQo+ ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICBDbG9jayBlbmFibGUvZGlzYWJs ZSBzdWNjZXNzZnVsLg0KPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgIFNDUCByZXR1 cm5zIGFuIFNDTUkgZXJyb3IuDQo+ICsgIEByZXR2YWwgIShFRklfU1VDQ0VTUykgICAgICAgT3Ro ZXIgZXJyb3JzLg0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJ ICpTQ01JX0NMT0NLMl9FTkFCTEUpICgNCj4gKyAgSU4gU0NNSV9DTE9DSzJfUFJPVE9DT0wgKlRo aXMsDQo+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICAgIENsb2NrSWQsDQo+ICsgIElOIEJPT0xF QU4gICAgICAgICAgICAgIEVuYWJsZQ0KPiArICApOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBf U0NNSV9DTE9DSzJfUFJPVE9DT0wgew0KPiArICBTQ01JX0NMT0NLMl9HRVRfVkVSU0lPTiBHZXRW ZXJzaW9uOw0KPiArICBTQ01JX0NMT0NLMl9HRVRfVE9UQUxfQ0xPQ0tTIEdldFRvdGFsQ2xvY2tz Ow0KPiArICBTQ01JX0NMT0NLMl9HRVRfQ0xPQ0tfQVRUUklCVVRFUyBHZXRDbG9ja0F0dHJpYnV0 ZXM7DQo+ICsgIFNDTUlfQ0xPQ0syX0RFU0NSSUJFX1JBVEVTIERlc2NyaWJlUmF0ZXM7DQo+ICsg IFNDTUlfQ0xPQ0syX1JBVEVfR0VUIFJhdGVHZXQ7DQo+ICsgIFNDTUlfQ0xPQ0syX1JBVEVfU0VU IFJhdGVTZXQ7DQo+ICsNCj4gKyAgLy9FeHRlbnRpb24gdG8gb3JpZ2luYWwgQ2xvY2tQcm90b2Nv bCwgYWRkZWQgaGVyZSBzbw0KPiArU0NNSV9DTE9DSzJfUFJPVE9DT0wNCj4gKyAgLy9jYW4gYmUg Y2FzdCB0byBTQ01JX0NMT0NLX1BST1RPQ09MDQo+ICsgIFVJTlROIFZlcnNpb247IC8vRm9yIGZ1 dHVyZSBleHBhbmRhYmlsaXR5IG9mIHByb3RvY29sDQo+ICsgIFNDTUlfQ0xPQ0syX0VOQUJMRSBF bmFibGU7DQo+ICt9IFNDTUlfQ0xPQ0syX1BST1RPQ09MOw0KPiArDQo+ICsjZW5kaWYgLyogQVJN X1NDTUlfQ0xPQ0syX1BST1RPQ09MX0hfICovDQo+ICsNCj4gLS0NCj4gMi43LjQNCj4NCklNUE9S VEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVu dHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFy ZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGlt bWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBw ZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9y bWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4NCg==