From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0051.outbound.protection.outlook.com [104.47.36.51]) by dpdk.org (Postfix) with ESMTP id 0E8271B395 for ; Tue, 7 Nov 2017 06:49:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=42ODRrTfreG34aLN6ZxgdIY/+BAFUHoY1YfGT53bknM=; b=VgIP1bv20q4AgcZ5w4La2wbvg3j79kXpXG8LGKe8Ne8Ruo3XkeO3pPQdqW6W5kPiB4bNJQMrHNntC3K/IuVEeYVYpQL2rNxkd7wka7sOJIlnQREwq9+AEFSsmR29q0hSnSuaODI1GeyDepGEAoe2XhmMhHFsKSUyGzZstB3tAfc= Received: from BY1PR0701MB1111.namprd07.prod.outlook.com (10.160.104.21) by DM2PR0701MB1066.namprd07.prod.outlook.com (10.160.26.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.178.6; Tue, 7 Nov 2017 05:49:00 +0000 Received: from BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::4db7:8a12:3f98:64ce]) by BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::4db7:8a12:3f98:64ce%13]) with mapi id 15.20.0197.020; Tue, 7 Nov 2017 05:48:58 +0000 From: "Verma, Shally" To: "Trahe, Fiona" , "dev@dpdk.org" CC: "Athreya, Narayana Prasad" , "Challa, Mahipal" Thread-Topic: [dpdk-dev] [RFC] Compression API in DPDK Thread-Index: AdNUo5SS+eIRQu27zUO9vATBIE3R9ACJXmmgAC22ZuA= Date: Tue, 7 Nov 2017 05:48:58 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; x-originating-ip: [14.140.2.178] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DM2PR0701MB1066; 6:X9Ba5PLP6b9rMCFASbBQfj47vSvHnApJy9DvbzkCyp4omTvKmiFwV73m/Boq0j76QogitKDiz+xLbMSuJlkP2Yve/5bMoIEiXx/fuv6c9CLNM6y9AdeMNWfC95inWehIQFyZ6CLaNWQOIntC/ZEkoYpvJcKrfOb6pcI1jFVnKu6VtSLlFp2kYLTC/gCyrt3bcKNDpAr8yKrtRjZu/7S9TvhQSE8pIN6pmasoi4KtFOIpYj13eFuSXtWSVrNcqJf++umBNOnCPziMiazQNYhh3RaMXb23Hi2Z76CSlKgQZ6DVABF8T1m6kLLxuDgsyTXks4fu3Os4AtLzVgXVS3EyQjWT1thggdG89XmRpUeTis4=; 5:wDBz4xi3SIvp2zwhWCLNyQeXdozwAD0Pf1hV2u0v8ugnnOmGZBRLRWoRd/J0vfGP81VDroRuvgAGwhJssx8pnoyxuj2O8jnD6DYndUVRvxvkQr6ZDKys/ThBPC8//WNHFrMOSPBC7YkTFYSEmhV2mnLVRhEd8AFpL/IKTnZrkfM=; 24:UZdot4hPk8m9n8X6fTIR39qdaMOQLyTyNk+HmT8Lgt9VFWDJBvk6uCNA/ZVCNAzM166tF/QQmHyr5+jEPzIdo7czSeQxfY6O+Vh4U0Y881k=; 7:qHOU3DSqekIlzn5qGbcq1iZxMXTErVPOu3qNpOzdAwFNyD3eIHnA0otYI+rF0cdKfiezv6lFdaoZnpLLRjSPTxdLeXcSk2nrUEbKEk9mEX2MB7zC6x5+gu6AThY0G3wbPqfNOCiT3KgGL/NkDjCu+4DbrQztUNPt98LpBHKfohCu26RlKtRKMXXZkJ7kztY9iGRGPkw2bVpOPoKRciuj4uNR6gJ3IwbuypGWv9T+RzEO3+hjvnB4+S37BuTbHhMX x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(51414003)(189002)(13464003)(24454002)(199003)(105586002)(9686003)(478600001)(106356001)(189998001)(54356999)(101416001)(50986999)(55016002)(966005)(86362001)(53546010)(6306002)(33656002)(561944003)(72206003)(7696004)(5660300001)(8676002)(81156014)(81166006)(4326008)(316002)(25786009)(8936002)(3280700002)(66066001)(6506006)(6436002)(99286004)(229853002)(3660700001)(54906003)(110136005)(7736002)(305945005)(74316002)(2906002)(53936002)(68736007)(2501003)(53946003)(16200700003)(14454004)(2900100001)(97736004)(6246003)(5250100002)(6116002)(107886003)(3846002)(5890100001)(102836003)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0701MB1066; H:BY1PR0701MB1111.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; x-ms-office365-filtering-correlation-id: 80300892-ffa3-40b8-1733-08d525a33d7c x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603249); SRVR:DM2PR0701MB1066; x-ms-traffictypediagnostic: DM2PR0701MB1066: x-exchange-antispam-report-test: UriScan:(278428928389397)(228905959029699); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(3231021)(6041248)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123560025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM2PR0701MB1066; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM2PR0701MB1066; x-forefront-prvs: 0484063412 received-spf: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80300892-ffa3-40b8-1733-08d525a33d7c X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Nov 2017 05:48:58.2201 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0701MB1066 Subject: Re: [dpdk-dev] [RFC] Compression API in DPDK X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Nov 2017 05:49:04 -0000 DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFRyYWhlLCBGaW9uYSBbbWFp bHRvOmZpb25hLnRyYWhlQGludGVsLmNvbV0NCj4gU2VudDogMDMgTm92ZW1iZXIgMjAxNyAwMDo0 Nw0KPiBUbzogVmVybWEsIFNoYWxseSA8U2hhbGx5LlZlcm1hQGNhdml1bS5jb20+OyBkZXZAZHBk ay5vcmc7IEF0aHJleWEsDQo+IE5hcmF5YW5hIFByYXNhZCA8TmFyYXlhbmFQcmFzYWQuQXRocmV5 YUBjYXZpdW0uY29tPjsgQ2hhbGxhLCBNYWhpcGFsDQo+IDxNYWhpcGFsLkNoYWxsYUBjYXZpdW0u Y29tPg0KPiBDYzogVHJhaGUsIEZpb25hIDxmaW9uYS50cmFoZUBpbnRlbC5jb20+DQo+IFN1Ympl Y3Q6IFJFOiBbZHBkay1kZXZdIFtSRkNdIENvbXByZXNzaW9uIEFQSSBpbiBEUERLDQo+IA0KPiBI aSBTaGFsbHksDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTog VmVybWEsIFNoYWxseSBbbWFpbHRvOlNoYWxseS5WZXJtYUBjYXZpdW0uY29tXQ0KPiA+IFNlbnQ6 IEZyaWRheSwgT2N0b2JlciAyMCwgMjAxNyA2OjQwIFBNDQo+ID4gVG86IFRyYWhlLCBGaW9uYSA8 ZmlvbmEudHJhaGVAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnOyBBdGhyZXlhLA0KPiBOYXJheWFu YSBQcmFzYWQNCj4gPiA8TmFyYXlhbmFQcmFzYWQuQXRocmV5YUBjYXZpdW0uY29tPjsgQ2hhbGxh LCBNYWhpcGFsDQo+IDxNYWhpcGFsLkNoYWxsYUBjYXZpdW0uY29tPg0KPiA+IFN1YmplY3Q6IFJF OiBbZHBkay1kZXZdIFtSRkNdIENvbXByZXNzaW9uIEFQSSBpbiBEUERLDQo+ID4NCj4gPg0KPiA+ ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFRyYWhlLCBGaW9uYSBb bWFpbHRvOmZpb25hLnRyYWhlQGludGVsLmNvbV0NCj4gPiA+IFNlbnQ6IDE3IE9jdG9iZXIgMjAx NyAyMDoxMQ0KPiA+ID4gVG86IHNoYWxseSB2ZXJtYSA8c2hhbGx5dmVybWFjYXZpdW1AZ21haWwu Y29tPjsgZGV2QGRwZGsub3JnOw0KPiBBdGhyZXlhLA0KPiA+ID4gTmFyYXlhbmEgUHJhc2FkIDxO YXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1bS5jb20+OyBDaGFsbGEsDQo+IE1haGlwYWwNCj4g PiA+IDxNYWhpcGFsLkNoYWxsYUBjYXZpdW0uY29tPjsgVmVybWEsIFNoYWxseQ0KPiA8U2hhbGx5 LlZlcm1hQGNhdml1bS5jb20+DQo+ID4gPiBDYzogVHJhaGUsIEZpb25hIDxmaW9uYS50cmFoZUBp bnRlbC5jb20+DQo+ID4gPiBTdWJqZWN0OiBSRTogW2RwZGstZGV2XSBbUkZDXSBDb21wcmVzc2lv biBBUEkgaW4gRFBESw0KPiA+ID4NCj4gPiA+IEhpIFNoYWxseSwNCj4gPiA+DQo+ID4gPiBUaGFu a3MgZm9yIHlvdXIgZmVlZGJhY2suIENvbW1lbnRzIGJlbG93Lg0KPiA+ID4NCj4gPiA+IFJlZ2Fy ZHMsDQo+ID4gPiBGaW9uYQ0KPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPiA+ID4gRnJvbTogc2hhbGx5IHZlcm1hIFttYWlsdG86c2hhbGx5dmVybWFjYXZpdW1A Z21haWwuY29tXQ0KPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBPY3RvYmVyIDE3LCAyMDE3IDc6NTYg QU0NCj4gPiA+ID4gVG86IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPjsgZGV2 QGRwZGsub3JnOw0KPiA+ID4gPiBwYXRocmV5YUBjYXZpdW0uY29tOyBNYWhpcGFsIENoYWxsYSA8 bWNoYWxsYUBjYXZpdW0uY29tPjsgU2hhbGx5DQo+ID4gPiBWZXJtYQ0KPiA+ID4gPiA8c3Zlcm1h QGNhdml1bS5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtSRkNdIENvbXBy ZXNzaW9uIEFQSSBpbiBEUERLDQo+ID4gPiA+DQo+ID4gPiA+IFdoaWxlIEkgYW0gc3RpbGwgZ29p bmcgdGhyb3VnaCBSRkMgaW4gZGV0YWlscywgaW5saW5lIGFyZSBteSBpbnB1dHMgdG8NCj4gPiA+ ID4gc29tZSBvZiB0aGUgcG9pbnRzLg0KPiA+ID4gPg0KPiA+ID4gPiBPbiBUaHUsIE9jdCAxMiwg MjAxNyBhdCAxMDozNCBQTSwgVHJhaGUsIEZpb25hIDxmaW9uYS50cmFoZUBpbnRlbC5jb20+DQo+ ID4gPiB3cm90ZToNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFdpdGggdGhlIHZhc3QgYW1vdW50cyBv ZiBkYXRhIGJlaW5nIHRyYW5zcG9ydGVkIGFyb3VuZCBuZXR3b3Jrcw0KPiBhbmQNCj4gPiA+ID4g PiBzdG9yZWQgaW4gc3RvcmFnZSBzeXN0ZW1zLA0KPiA+ID4gPiByZWR1Y2luZyBkYXRhIHNpemUg aXMgYmVjb21pbmcgZXZlciBtb3JlIGltcG9ydGFudC4gVGhlcmUgYXJlIGJvdGgNCj4gPiA+ID4g c29mdHdhcmUgbGlicmFyaWVzIGFuZCBoYXJkd2FyZSBkZXZpY2VzIGF2YWlsYWJsZSB0aGF0IHBy b3ZpZGUNCj4gPiA+ID4gY29tcHJlc3Npb24sIGJ1dCBubyBjb21tb24gQVBJLiBUaGlzIFJGQyBw cm9wb3NlcyBhIGNvbXByZXNzaW9uDQo+IEFQSSBmb3INCj4gPiA+IERQREsgdG8gYWRkcmVzcyB0 aGlzIG5lZWQuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBGZWF0dXJlczoNCj4gPiA+ID4gPiAuIERl ZmxhdGUgQWxnb3JpdGhtIChodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMTk1MSksIG90 aGVyDQo+IGFsZ29yaXRobXMNCj4gPiA+IGNhbiBiZSBhZGRlZCBsYXRlci4NCj4gPiA+ID4gPiAu IFN0YXRpYyBhbmQgRHluYW1pYyBIdWZmbWFuIGVuY29kaW5nLg0KPiA+ID4gPiA+IC4gQ29tcHJl c3Npb24gbGV2ZWxzDQo+ID4gPiA+ID4gLiBDaGVja3N1bSBnZW5lcmF0aW9uDQo+ID4gPiA+ID4g LiBBc3luY2hyb25vdXMgYnVyc3QgQVBJDQo+ID4gPiA+ID4gLiBTZXNzaW9uLWJhc2VkLiAoZm9y IHN0YXRlbGVzcyBhIHNlc3Npb24gbWF5IGJlIHVzZWFibGUgYWNyb3NzDQo+ID4gPiA+ID4gZGV2 aWNlcywgZm9yIHN0YXRlZnVsIGl0IHdvdWxkbid0IGJlLikNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ DQo+ID4gPiA+ID4gTm90ZSAxOiBTcGxpdCBvZiBmdW5jdGlvbmFsaXR5IGFib3ZlL2JlbG93IEFQ SSBXaGVuIGNvbnNpZGVyaW5nDQo+ID4gPiA+ID4gd2hldGhlciBmZWF0dXJlcyBzaG91bGQgYmUg c3VwcG9ydGVkIG9uIHRoZSBBUEkgb3Igbm90LCB0aGUgZGVjaXNpb24NCj4gPiA+ID4gPiB3YXMg YmFzZWQgb24NCj4gPiA+ID4gdGhlIGZvbGxvd2luZzoNCj4gPiA+ID4gPiBUaGUgcHVycG9zZSBv ZiB0aGUgQVBJIGlzIHRvIGRlY291cGxlIHRoZSBhcHBsaWNhdGlvbiBmcm9tIHRoZQ0KPiA+ID4g PiA+IGNvbXB1dGUtaW50ZW5zaXZlIGZ1bmN0aW9ucyBuZWVkZWQNCj4gPiA+ID4gZm9yIGNvbXBy ZXNzaW9uIGJ5IGFic3RyYWN0aW5nIHRoZW0gdW5kZXIgYSBjb21tb24gQVBJLiBUaGVzZSBjYW4N Cj4gdGhlbg0KPiA+ID4gPiBiZSBpbXBsZW1lbnRlZCBieSBlaXRoZXIgaGFyZHdhcmUgYWNjZWxl cmF0b3JzIG9yIG9wdGltaXNlZCBzb2Z0d2FyZQ0KPiA+ID4gPiBsaWJyYXJpZXMuIFdoZXJlIGZl YXR1cmVzIGFyZSBub3QgY29tcHV0ZS1pbnRlbnNpdmUgYW5kIHVubGlrZWx5IHRvIGJlDQo+ID4g PiA+IG9mZmxvYWRlZCBvciBvcHRpbWlzZWQsIHRoZXJlJ3Mgbm90aGluZyB0byBiZSBnYWluZWQg YnkgZWFjaCBQTUQNCj4gPiA+ID4gaGF2aW5nIHRvIHNlcGFyYXRlbHkgaW1wbGVtZW50IHRoZW0s IGFuZCBpdCBtYWtlcyBtb3JlIHNlbnNlIGZvcg0KPiB0aGVtDQo+ID4gPiB0byBiZSBkb25lIGFi b3ZlIHRoZSBBUEkuIFNvIHRoZSBmb2xsb3dpbmcgYXJlIG5vdCBoYW5kbGVkIG9uIHRoZSBBUEkN Cj4gYW5kDQo+ID4gPiBjYW4gYmUgZG9uZSBhYm92ZS4NCj4gPiA+ID4gPiAuIFByZXBlbmRpbmcv YXBwZW5kaW5nIHByb3RvY29sIGhlYWRlcnMgKGd6aXAsIHpsaWIpIC4NCj4gPiA+ID4gPiBGaWxl LWhhbmRsaW5nLCBicmVha2luZyBmaWxlcyB1cCBpbnRvIHBhY2tldHMsIHJlYXNzZW1ibGluZy4N Cj4gPiA+ID4gPiAuIFN5bmNocm9ub3VzIEFQSQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ ID4gPiBOb3RlIDI6IFN0YXRlZnVsIGNvbXByZXNzaW9uLg0KPiA+ID4gPiA+IEEgYmV0dGVyIGNv bXByZXNzaW9uIHJhdGlvIGNhbiBiZSBhY2hpZXZlZCBieSB1c2luZyBzdGF0ZWZ1bA0KPiA+ID4g PiA+IGNvbXByZXNzaW9uLCBhbGxvd2luZyBwYXR0ZXJuIG1hdGNoaW5nDQo+ID4gPiA+IGFjcm9z cyBtdWx0aXBsZSBzZXF1ZW50aWFsIHBhY2tldHMuIFRoaXMgd2lsbCBiZSBzdXBwb3J0ZWQgb24g dGhlIEFQSSwNCj4gPiA+ID4gYnV0IGluIHRoZSBpbnRlcmVzdHMgb2YgZ2V0dGluZyBhbiBpbml0 aWFsIFJGQyBvdXQgZm9yIGZlZWRiYWNrLCB0aGVyZQ0KPiA+ID4gPiBhcmUgcGxhY2Vob2xkZXIg cGFyYW1ldGVycyBvbiB0aGUgQVBJLiBGZWVkYmFjayB3ZWxjb21lIG9uIHdoYXQNCj4gPiA+IHBh cmFtZXRlcnMgYXJlIG5lZWRlZCBmb3IgdGhpcyBmZWF0dXJlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ DQo+ID4gPiA+IFdlIHdvdWxkIGxpa2UgdG8gc2VlIHRoaXMgYXMgcGFydCBvZiBTcGVjaWZpY2F0 aW9uLiBXZSB3aWxsIHByb3ZpZGUNCj4gPiA+ID4gbW9yZSBkZXRhaWxzIG9uIHdoYXQgd2UoY2F2 aXVtKSByZXF1aXJlLg0KPiA+ID4NCj4gPiA+IFtGaW9uYV0gSSBsb29rIGZvcndhcmQgdG8gaXQu DQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBOb3RlIDM6 IFRoZSB0cmlja3kgcXVlc3Rpb24gb2Ygd2hlcmUgdGhlIEFQSSBiZWxvbmdzIFdlIGNvbnNpZGVy ZWQNCj4gPiA+ID4gPiAxLiBFeHRlbmRpbmcgY3J5cHRvZGV2IDIuIE5ldyBhY2NlbGRldiBBUElz IGZvciBkZXZpY2UgaGFuZGxpbmcgKw0KPiA+ID4gPiA+IGNvbXByZXNzZGV2IEFQSXMgZm9yIGRh dGEgcGF0aCAzLiBOZXcgYWNjZWxkZXYgZm9yIGFsbCBBUElzIDQuIE5ldw0KPiA+ID4gPiA+IGNv bXByZXNzZGV2IEFQSQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gV2UncmUgcHJvcG9zaW5nIG9wdGlv biA0LCBoZXJlJ3Mgd2h5Og0KPiA+ID4gPiA+IDEuIEV4dGVuZGluZyBjcnlwdG9kZXY6DQo+ID4g PiA+ID4gICAgIC4gICsgTmljZSBjb2RlIHJlLXVzZS4NCj4gPiA+ID4gPiAgICAgLiAgKyBDb25z aXN0ZW50IHdpdGggTGludXgga2VybmVsIGFuZCBCU0QgYXBwcm9hY2hlcy4NCj4gPiA+ID4gPiAg ICAgLiAgLSBCdXQgbm90IGEgZ29vZCBuYW1lLg0KPiA+ID4gPiA+ICAgICAuICAtIFdvdWxkIGlu ZXZpdGFibHkgbGVhZCB0byBzb21lIGNyeXB0b2RldiBBUEkgYnJlYWthZ2UgLSBjYW4gYmUNCj4g PiA+IG1pbmltaXNlZCwgYnV0IHRoZW4gbG9va3MgaGFja3kuDQo+ID4gPiA+IEUuZy4NCj4gPiA+ ID4gPiAgICAgICAgICAgICBydGVfY3J5cHRvZGV2X2luZm8ubWF4X25iX3F1ZXVlX3BhaXJzIGN1 cnJlbnRseS4gV291bGQNCj4gbmVlZA0KPiA+ID4gdG8gZXh0ZW5kIHRvDQo+ID4gPiA+ID4gICAg ICAgICAgICAgcnRlX2NyeXB0b2Rldl9pbmZvLm1heF9uYl9xdWV1ZV9wYWlycyAoSWRlYWxseSBy ZW5hbWUNCj4gPiA+ID4gPiB0aGlzIHRvIG1heF9uYl9zeW1fLi4uLiBidXQgdGhhdCdzIGFuDQo+ ID4gPiA+IEFQSSBicmVha2FnZSkNCj4gPiA+ID4gPiAgICAgICAgICAgICBydGVfY3J5cHRvZGV2 X2luZm8ubWF4X25iX2NvbXBfcXVldWVfcGFpcnMNCj4gPiA+ID4gPiAgICAgICAgICAgICBydGVf Y3J5cHRvZGV2X2luZm8ubWF4X25iX2FzeW1fcXVldWVfcGFpcnMNCj4gPiA+ID4gPiAgICAgICAg ICAgU2ltaWxhcmx5IGZuIG5hbWVzLCBlLmcuIHJ0ZV9jcnlwdG9kZXZfcXVldWVfcGFpcl9zZXR1 cC4NCj4gPiA+ID4gPiAgICAgICAgICAgIFJlbmFtZSB0byBydGVfY3J5cHRvZGV2X3N5bV9xdWV1 ZV9wYWlyX3NldHVwLCBhZGQgX2NvbXANCj4gPiA+ID4gPiBhbmQgX2FzeW0gZm5zPyBPciBhZGQN Cj4gPiA+ID4gcGFyYW1ldGVyPw0KPiA+ID4gPiA+IDIuIE5ldyBhY2NlbGRldiBBUElzIGZvciBk ZXZpY2UgaGFuZGxpbmcgKyBjb21wcmVzc2RldiBBUElzIGZvciBkYXRhDQo+ID4gPiBwYXRoOg0K PiA+ID4gPiA+ICAgICB+NzAlIG9mIGNyeXB0b2RldiBjb2RlIGlzIGRldmljZS1oYW5kbGluZyB3 aGljaCBpcyBjb21tb24gdG8gYWxsDQo+ID4gPiBhY2NlbGVyYXRvcnMuDQo+ID4gPiA+ID4gICAg IFJhdGhlciB0aGFuIHByb3ZpZGluZyBuZXcgY29tcHJlc3NkZXYgQVBJcywgcHJvdmlkZSBBUElz IHdoaWNoDQo+IGNhbg0KPiA+ID4gYmUgdXNlZCBmb3IgY29tcHJlc3Npb24NCj4gPiA+ID4gPiAg ICAgYW5kIGFsc28gb3RoZXIgYWNjZWxlcmF0b3JzLCBlLmcuIGJiZGV2LCBGUEdBcy4gV291bGQg bG9vayBsaWtlDQo+ID4gPiBydGVfYWNjZWxkZXZfaW5mb19nZXQoKSwNCj4gPiA+ID4gPiAgICAg cnRlX2FjY2VsZGV2X2NvbmZpZ3VyZSgpLCBydGVfY29tcHJlc3NfZW5xdWV1ZV9idXJzdCgpLCBl dGMNCj4gPiA+ID4gPiAgICAgLiArIE5pY2UgZnV0dXJlIGNvZGUgcmUtdXNlLg0KPiA+ID4gPiA+ ICAgICAuICsgTm8gY3J5cHRvZGV2IEFQSSBicmVha2FnZSwgdGhvdWdoIHdvdWxkIGJlIG5pY2Ug b3ZlciB0aW1lIHRvDQo+ID4gPiBtb3ZlIHRvIGFjY2VsZGV2IEFQSXMgZm9yDQo+ID4gPiA+ID4g ICAgICAgICAgIGNyeXB0b2RldiBhbmQgZGVwcmVjYXRlIGNyeXB0b2RldiBBUElzLg0KPiA+ID4g PiA+ICAgICAuIC0gYWNjZWxkZXYgZWl0aGVyIGhhcyB0byB1bmRlcnN0YW5kIHN0cnVjdHMgZm9y IGFsbCBzZXJ2aWNlcyB3aXRoDQo+ID4gPiByZXN1bHRpbmcgZGVwZW5kZW5jaWVzIE9SDQo+ID4g PiA+ID4gICAgICAgICAgICAgaXQncyBpbmRlcGVuZGVudCB3aXRoIG1pbmltYWwgdHlwZS1jaGVj a2luZywgbG90cyBvZiB2b2lkKiBhbmQNCj4gPiA+IGNhc3RpbmcuDQo+ID4gPiA+ID4gICAgIC4g LSBwb3RlbnRpYWwgQVBJIGNodXJuIGlmIHNlcnZpY2VzIGhhdmUgZGlmZmVyZW50IG5lZWRzDQo+ ID4gPiA+ID4gICAgIC4gLSB1c2FiaWxpdHkgLSBhcHBsaWNhdGlvbiBoYXMgdG8gc29tZXRpbWVz IHVzZSBhY2NlbGRldiwNCj4gPiA+ID4gPiBzb21ldGltZXMgY29tcHJlc3NkZXYgMy4gTmV3IGFj Y2VsZGV2IGZvciBhbGwgQVBJczoNCj4gPiA+ID4gPiAgICAgLiBBcyAyIGJ1dCB3aXRoIG9ubHkg dGhlIHhmb3JtcyBhbmQgb3BzIGRpZmZlcmVudCBmb3IgZWFjaCBzZXJ2aWNlLg0KPiBBbGwNCj4g PiA+IEFQSXMgYXJlIHJ0ZV9hY2NlbGRldl8uLi4uDQo+ID4gPiA+ID4gICAgIC4gU2ltaWxhciBw cm9zL2NvbnMuDQo+ID4gPiA+ID4gICAgIC4gLSBObyBmbGV4aWJpbGl0eSBmb3IgYWNjZWxlcmF0 b3JzIHNlcnZpY2VzIHRvIGhhdmUNCj4gPiA+ID4gPiBzZXJ2aWNlLXNwZWNpZmljIEFQSXMuIFNl cnZpY2VzIGFyZSBtb3JlIHRpZ2h0bHkNCj4gPiA+ID4gY291cGxlZC4NCj4gPiA+ID4gPiA0LiBO ZXcgY29tcHJlc3NkZXYgQVBJOiAocG9zc2libHkgd2l0aCBhbiBhY2NlbGRldiB1bmRlciB0aGUg aG9vZCkNCj4gPiA+ID4gPiAgICAgLiArIEJldHRlciBuYW1lDQo+ID4gPiA+ID4gICAgIC4gKyBV c2FiaWxpdHkgLSBydGVfY29tcGRldl8uLi4gZm9yIGV2ZXJ5dGhpbmcNCj4gPiA+ID4gPiAgICAg LiArIE5vIGNyeXB0b2RldiBBUEkgYnJlYWthZ2UNCj4gPiA+ID4gPiAgICAgLiArIEZsZXhpYmls aXR5IHRvIGFkZCBhbnkgY29tcHJlc3Npb24tc3BlY2lmaWMgQVBJcyBpZiBuZWVkZWQuDQo+ID4g PiA+ID4gICAgIC4gKyBTaW1wbGVyLCBtb3JlIGRlY291cGxlZCBjb2RlDQo+ID4gPiA+ID4gICAg IC4gLSBNb3JlIGNvZGUgZHVwbGljYXRpb24uDQo+ID4gPiA+ID4gICAgICAgICAgIE1heSBpbiBh IGxhdGVyIGl0ZXJhdGlvbiBpbXBsZW1lbnQgYW4gYWNjZWxkZXYgdW5kZXIgdGhlIGhvb2QsDQo+ IGZvcg0KPiA+ID4gY29kZSByZS11c2UsIGJ1dA0KPiA+ID4gPiA+ICAgICAgICAgICB0aGlzIGlz IGhpZGRlbiBmcm9tIGFwcGxpY2F0aW9ucy4gU2VydmljZSBBUElzIGNvdWxkIHBpY2sgYW5kDQo+ IGNob29zZQ0KPiA+ID4gd2hhdGV2ZXIgbWFrZXMgc2Vuc2UNCj4gPiA+ID4gPiAgICAgICAgICAg ZnJvbSBhY2NlbGRldi4gUE9DIG9uIHRoaXMgaW4tcHJvZ3Jlc3MsIGFsc28gYXdhaXRpbmcgSGVt YW50DQo+ID4gPiBBZ3Jhd2FsJ3MgcHJvcG9zZWQNCj4gPiA+ID4gPiAgICAgICAgICAgcnRlX3Jh d19kZXZpY2UgUkZDLCB3aGljaCBtYXkgZml0IHRoZSBhY2NlbGRldiByb2xlLg0KPiA+ID4gPiA+ DQo+ID4gPiA+ID4gTm90ZSA0OiBDaGFpbmluZyBvZiBjb21wcmVzc2lvbiB3aXRoIG90aGVyIHNl cnZpY2VzLg0KPiA+ID4gPiA+ICAgICBPcHRpb24gMSB3b3VsZCBtYWtlIGl0IGVhc3kgdG8gY2hh aW4gY29tcHJlc3Npb24gd2l0aCBzeW0NCj4gPiA+ID4gPiBjcnlwdG8uIFRob3VnaCBub3Qgd2l0 aCBvdGhlciBub24tDQo+ID4gPiA+IGNyeXB0bw0KPiA+ID4gPiA+ICAgICBvcGVyYXRpb25zIGlm IHRoaXMgaXMgYSBmdXR1cmUgdXNlLWNhc2UuIEhvd2V2ZXIgaXQgY2FuIGJlDQo+ID4gPiA+ID4g YWNoaWV2ZWQgd2l0aCBhbnkgb3B0aW9uLCBmb2xsb3dpbmcgdGhlDQo+ID4gPiA+IHBhdHRlcm4N Cj4gPiA+ID4gPiAgICAgb2YgcnRlX3NlY3VyaXR5IEFQSSwgc28gaXMgbm90IGEgZmFjdG9yIGlu IGFib3ZlIGRlY2lzaW9uLg0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IFdlIGFyZSBpbiBm YXZvciBvZiBzb2x1dGlvbiAjNC4gQXBhcnQgZnJvbSByZWFzb25zIGFzIHlvdSBzdGF0ZWQsDQo+ ID4gPiA+IG5hdHVyZSBvZiBib3RoIG9wZXJhdGlvbnMgYXJlIHZlcnkgZGlmZmVyZW50IGFuZCBp dCBhZGQgbG90cyBvZg0KPiA+ID4gPiBjb21wbGV4aXR5IHRvIGJvdGggZW5kcyAoY3J5cHRvICsg Y29tcHJlc3Npb24pIHRvIGNvLWV4aXN0IHdpdGgNCj4gPiA+ID4gZGlmZmVyZW50IGJlaGF2aW9y Lg0KPiA+ID4gPiBIb3dldmVyIEkgd291bGQgbGlrZSB0byB1bmRlcnN0YW5kIG1vcmUgYWJvdXQg YWNjZWxkZXYgcHJvcG9zYWw/IElzDQo+ID4gPiA+IHRoZXJlIGFueSBkb2N1bWVudCB0aGF0IEkg Y2FuIHNlZSB0byB1bmRlcnN0YW5kcyBpdHMgcHVycG9zZT8NCj4gPiA+DQo+ID4gPiBbRmlvbmFd IE5vdCBhdCB0aGUgbW9tZW50Lg0KPiA+ID4gV2UnZCBsaWtlIHRvIHdhaXQgZm9yIEhlbWFudCdz IHJ0ZV9yYXdfZGV2aWNlcyBSRkMgYmVmb3JlIG1ha2luZyBhDQo+ID4gPiBwcm9wb3NhbCBvbiB0 aGlzLg0KPiA+ID4NCj4gPg0KPiA+IFtTaGFsbHldIE9rLg0KPiA+DQo+ID4gPiA+DQo+ID4gPiA+ ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IENvZGUgZXh0cmFjdHMgYmVsb3c6DQo+ID4gPiA+ID4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVf Y29tcHJlc3NkZXYvcnRlX2NvbXAuaA0KPiA+ID4gPiA+IGIvbGliL2xpYnJ0ZV9jb21wcmVzc2Rl di9ydGVfY29tcC5oDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgKiBAZmlsZSBydGVfY29t cC5oDQo+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ID4gKyAqIFJURSBkZWZpbml0aW9ucyBmb3IgRGF0 YSBDb21wcmVzc2lvbiBTZXJ2aWNlDQo+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ID4gKyAqLw0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqIENvbXByZXNzaW9uIEFsZ29yaXRobXMgKi8NCj4gPiA+ ID4gPiArZW51bSBydGVfY29tcF9hbGdvcml0aG0gew0KPiA+ID4gPiA+ICsgICAgICBSVEVfQ09N UF9OVUxMID0gMSwNCj4gPg0KPiA+IFtTaGFsbHldIFdoYXQgaXMgYW4gQVBJIGV4cGVjdGF0aW9u IG9uIHNlZWluZyBhbGdvcml0aG0gYXMgTlVMTD8NCj4gW0Zpb25hXSBwYXNzLXRocm91Z2guIERh dGEgZnJvbSBzb3VyY2UgYnVmZmVyKHMpIGNvcGllZCB0byBkZXN0IGJ1ZmZlcihzKS4NCj4gSSdt IG5vdCBzdXJlIHRoZXJlJ3MgYSBuZWVkIGZvciBpdCwgYnV0IGlmIHRoZXJlIGlzIHRoZW4gdGhh dCdzIHdoYXQgaXQgc2hvdWxkIGRvLg0KPiANCltTaGFsbHldIE9rLg0KDQo+ID4NCj4gPiA+ID4g PiArICAgICAgLyoqPCBOVUxMIGNvbXByZXNzaW9uIGFsZ29yaXRobS4gKi8NCj4gPiA+ID4gPiAr ICAgICAgUlRFX0NPTVBfREVGTEFURSwNCj4gPiA+ID4gPiArICAgICAgLyoqPCBERUZMQVRFIGNv bXByZXNzaW9uIGFsZ29yaXRobQ0KPiA+ID4gPiA+ICsgICAgICAqIGh0dHBzOi8vdG9vbHMuaWV0 Zi5vcmcvaHRtbC9yZmMxOTUxICovDQo+ID4gPiA+ID4gKyAgICAgIFJURV9DT01QX0xJU1RfRU5E DQo+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiBXZSBzdXBwb3J0 IExaUyBvZmZsb2FkIGFzIHdlbGwsIG5lZWQgdG8gZXh0ZW5kIHdpdGggUlRFX0NPTVBfTFpTLg0K PiA+ID4NCj4gPiA+IFtGaW9uYV0gQWdyZWVkLiBEbyB5b3Ugc2VlIGFueSBuZWVkIGZvciBsenMt c3BlY2lmaWMgcGFyYW1ldGVycz8gaS5lLiBpcw0KPiB0aGVyZQ0KPiA+ID4gYSAgbmVlZCBmb3Ig YSBzdHJ1Y3QgcnRlX2NvbXBfbHpzX3BhcmFtcyBhbmQsIGlmIHNvLCB3aGF0IHNob3VsZCBpdA0K PiBjb250YWluPw0KPiA+ID4NCj4gPg0KPiA+IFtTaGFsbHldIE5vLiBDdXJyZW50IGV4cG9ydGVk IGVudW0vcGFyYW0gYXJlIHN1ZmZpY2llbnQuDQo+IFtGaW9uYV0gb2suDQo+IA0KPiA+DQo+ID4g PiA+DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKiogQ29tcHJlc3Npb24gY2hlY2tzdW0gdHlw ZXMgKi8NCj4gPiA+ID4gPiArZW51bSBydGVfY29tcF9jaGVja3N1bV90eXBlIHsNCj4gPiA+ID4g PiArICAgICAgUlRFX0NPTVBfTk9ORSwNCj4gPiA+ID4gPiArICAgICAgLyoqPCBObyBjaGVja3N1 bSBnZW5lcmF0ZWQgKi8NCj4gPiA+ID4gPiArICAgICAgUlRFX0NPTVBfQ1JDMzIsDQo+ID4gPiA+ ID4gKyAgICAgIC8qKjwgR2VuZXJhdGVzIGEgQ1JDMzIgY2hlY2tzdW0sIGFzIHVzZWQgYnkgZ3pp cCAqLw0KPiA+ID4gPiA+ICsgICAgICBSVEVfQ09NUF9BRExFUjMyLA0KPiA+ID4gPiA+ICsgICAg ICAvKio8IEdlbmVyYXRlcyBhbiBBZGxlci0zMiBjaGVja3N1bSwgYXMgdXNlZCBieSB6bGliICov DQo+ID4gPiA+ID4gKyAgICAgIFJURV9DT01QX0NSQzMyX0FETEVSMzIsDQo+ID4gPiA+ID4gKyAg ICAgIC8qKjwgR2VuZXJhdGVzIGJvdGggQWRsZXItMzIgYW5kIENSQzMyIGNoZWNrc3VtcywNCj4g Y29uY2F0ZW5hdGVkLg0KPiA+ID4gPiA+ICsgICAgICAqIENSQzMyIGlzIGluIHRoZSBsb3dlciAz MmJpdHMsIEFkbGVyLTMyIGluIHRoZSB1cHBlciAzMiBiaXRzLg0KPiA+ID4gPiA+ICsgICAgICAq Lw0KPiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gSW4gYWRkaXRp b24gdG8gdGhlc2Ugd2Ugc3VwcG9ydCBTSEExIGFuZCBTSEEyNTYuDQo+ID4gPiA+IFRvIGluY29y cG9yYXRlIHRoZXNlLCB3ZSBzdWdnZXN0IHRoZSBmb2xsb3dpbmc6DQo+ID4gPiA+DQo+ID4gPiA+ IGVudW0gcnRlX2NvbXBfaW50ZWdyaXR5X2FsZ28gew0KPiA+ID4gPiAgICBSVEVfQ09NUF9OT05F LA0KPiA+ID4gPiAgICBSVEVfQ09NUF9DUkMzMiwNCj4gPiA+ID4gICAgUlRFX0NPTVBfQURMRVIz MiwNCj4gPiA+ID4gICAgUlRFX0NPTVBfQ1JDMzJfQURMRVIzMiwNCj4gPiA+ID4gICAgUlRFX0NP TVBfU0hBMSwNCj4gPiA+ID4gICAgUlRFX0NPTVBfU0hBMjU2LA0KPiA+ID4gPiB9Ow0KPiA+ID4N Cj4gPiA+IFtGaW9uYV0gQ2FuIHlvdSBlbGFib3JhdGUgb24gd2h5IHRoZXNlIGFyZSBuZWVkZWQg aW4gdGhlIGNvbXByZXNzaW9uDQo+ID4gPiBjb250ZXh0Pw0KPiA+DQo+ID4gW1NoYWxseV0gT25l IGV4YW1wbGUgdHlwaWNhbCB1c2UgY2FzZXMgYXJlIGluIERhdGEgQ2VudHJlIGFwcGxpY2F0aW9u cw0KPiB3aGVyZSBIYXNoIGlzIHVzZWQgYXMgdW5pcXVlIGtleQ0KPiA+IGZvciBEYXRhIGZpbmdl cnByaW50aW5nL2lkZW50aWZpY2F0aW9uIGFuZCBEZS1kdXBsaWNhdGlvbi4NCj4gPg0KPiA+ID4g V2l0aCBsZW5ndGhzIG9mIDIwIGFuZCAzMiBieXRlcyB0aGV5IGFkZCBjb25zaWRlcmFibGUgb3Zl cmhlYWQgdG8NCj4gc21hbGxlcg0KPiA+ID4gcGFja2V0cy4NCj4gPg0KPiA+IFtTaGFsbHldIFR5 cGljYWwgdXNhZ2UgaXMgd2l0aCBsYXJnZXIgYnVmZmVycygyS0IgYW5kIGFib3ZlKS4NCj4gPg0K PiA+ID4gSG93IGRvIHlvdSBwcm9wb3NlIHRvIHJldHVybiB0aGUgY2hlY2tzdW0/IFRoZSBvdGhl cnMgcHJvcG9zZWQgYWxsIGZpdA0KPiBpbnRvDQo+ID4gPiBhbiA4LWJ5dGUgZmllbGQgaW4gdGhl IG9wLg0KPiA+ID4NCj4gPg0KPiA+IFtTaGFsbHldIFVzZXIgY2FuIHJlcXVlc3QgYm90aCBjaGVj a3N1bSBhbmQgaGFzaCBhdCBvdXRwdXQuIEkgd2lsbCBwcm9wb3NlDQo+IGFkZGl0aW9uYWwgYXNz b2NpYXRlZA0KPiA+IGNoYW5nZXMgYWZ0ZXIgd2UgZnJlZXplIGN1cnJlbnQgUkZDIHZlcnNpb24u DQo+ID4NCj4gW0Zpb25hXSBvay4gU28gbWF5YmUgaXQgc2hvdWxkIGJlIHNlcGFyYXRlIGZyb20g Y2hlY2tzdW0gZW51bT8gRS5nLg0KPiBlbnVtIHJ0ZV9jb21wX2hhc2hfYWxnbyB7DQo+ICAgICBS VEVfQ09NUF9OT05FLA0KPiAgICAgUlRFX0NPTVBfU0hBMSwNCj4gICAgIFJURV9DT01QX1NIQTI1 NiwNCj4gfTsNCj4gQW5kIG5lZWQgdG8gcHJvdmlkZSBhIHZpcnQvcGh5cyBwdHIgdG8gYSBkYXRh IGJ1ZmZlciBvZiBhcHByb3ByaWF0ZSBzaXplLg0KPiBBbmQgdmlhIGNhcGFiaWxpdHkgUE1EIGNh biBzYXkgd2hldGhlciBzdXBwb3J0ZWQgb3Igbm90Lg0KPiANCltTaGFsbHldIFllYWggbWF5YmUg c2VwYXJhdGUgZnJvbSBjaGVja3N1bS4gSSBhbSBzdGlsbCB0aGlua2luZyBhYm91dCB0aGlzLiBJ IHdpbGwgcHJvcG9zZSBpdCBzZXBhcmF0ZWx5IGFmdGVyIHdlIGFsaWduIG9uIFJGQyBkb2Mgd2hp Y2ggSSBoYXZlIHNlbnQgaW4gYW5vdGhlciBlbWFpbC4NCg0KPiANCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKy8qKiBDb21wcmVzc2lvbiBEZWZsYXRlIEh1ZmZtYW4gVHlwZSAqLyBlbnVtDQo+IHJ0 ZV9jb21wX2h1ZmZtYW4gew0KPiA+ID4gPiA+ICsgICAgICBSVEVfQ09NUF9TVEFUSUMsDQo+ID4g PiA+ID4gKyAgICAgIC8qKjwgU3RhdGljIGVuY29kaW5nICovDQo+ID4gPiA+ID4gKyAgICAgIFJU RV9DT01QX0RZTkFNSUMsDQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgRHluYW1pYyBlbmNvZGluZyAq Lw0KPiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gV2Ugd291bGQg bGlrZSB0byBzZWUgYSBSVEVfQ09NUF9ERUZBVUxUIGZvciBzaXR1YXRpb25zIHdoZXJlDQo+ID4g PiA+IGFwcGxpY2F0aW9uIGNhbm5vdCBtYWtlIGEgY2hvaWNlLiBBbHNvLCBUbyBiZSBtb3JlIGNv bnNpc3RlbnQgdG8NCj4gPiA+ID4gbmFtaW5nIGFuZCBkZWZsYXRlIFJGQzE5NTEsIHNob3VsZCBi ZSByZW5hbWVkIGFzIFJURV9DT01QX0ZJWEVEDQo+IGFuZA0KPiA+ID4gPiBSVEVfQ09NUF9EWU5B TUlDLg0KPiA+ID4NCj4gPiA+IFtGaW9uYV0gQWdyZWVkDQo+ID4gPiA+DQo+ID4gPiA+ID4gKy8q KiBDb21wcmVzc2lvbiBpbnRlZ3JpdHkgY2hlY2sgKi8NCj4gPiA+ID4gPiArZW51bSBydGVfY29t cF9pbnRlZ3JpdHlfY2hlY2sgew0KPiA+ID4gPiA+ICsgICAgICBSVEVfQ09NUF9OT19WRVJJRlks DQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgTm8gaW50ZWdyaXR5IGNoZWNrIG9uIG91dHB1dCBkYXRh ICovDQo+ID4gPiA+ID4gKyAgICAgIFJURV9DT01QX1ZFUklGWSwNCj4gPiA+ID4gPiArICAgICAg LyoqPCBJbnRlZ3JpdHkgY2hlY2sgb24gb3V0cHV0IGRhdGEuIE9ubHkgYXBwbGllcyB0byBjb21w cmVzcw0KPiA+ID4gb3BlcmF0aW9uLg0KPiA+ID4gPiA+ICsgICAgICAqIEFmdGVyIGNvbXByZXNz IG9wZXJhdGlvbiBkb25lLCBkZWNvbXByZXNzIGFuZCB2ZXJpZnkgaXQNCj4gbWF0Y2hlcw0KPiA+ ID4gb3JpZ2luYWwgZGF0YS4NCj4gPiA+ID4gPiArICAgICAgKi8NCj4gPiA+ID4NCj4gPiA+ID4g VGhpcyBsb29rcyBtb3JlIHRvIG1lIGFzIGRpYWdub3N0aWMgdG9vbCAvIHRlc3QgYXBwLi4gSXQg c2hvdWxkIGJlDQo+ID4gPiA+IHBhcnQgb2YgYW4gQXBwbGljYXRpb24gdGhhbiBhIGxpYnJhcnkN Cj4gPiA+IFtGaW9uYV0NCj4gPiA+IElmIG9ubHkgYSBkaWFnbm9zdGljIHRvb2wgdGhlbiB5ZXMs IGl0IG5lZWRuJ3QgYmUgb24gdGhlIEFQSS4NCj4gPiA+IEhvd2V2ZXIsIGRhdGEgaW50ZWdyaXR5 IGlzIGEgY3JpdGljYWwgcmVxdWlyZW1lbnQgZm9yIGxvc3NsZXNzIGNvbXByZXNzaW9uLg0KPiBJ dCBpcw0KPiA+ID4gZXh0cmVtZWx5IGRpZmZpY3VsdCB0byBmdWxseSB2YWxpZGF0ZSBhbnkgY29t cHJlc3Npb24gaW1wbGVtZW50YXRpb24gZHVlDQo+IHRvDQo+ID4gPiB0aGUgaW5maW5pdGUgdmFy aWV0eSBvZiBpbnB1dCBkYXRhIHBhdHRlcm5zIGFuZCB0aGUgZmFjdCB0aGF0IHRoZXJlIGFyZQ0K PiBtYW55DQo+ID4gPiBwb3NzaWJsZSBvdXRwdXRzIGZvciBhbnkgZ2l2ZW4gaW5wdXQuDQo+ID4g PiBTbyBhcHBsaWNhdGlvbnMgc29tZXRpbWVzIGJ1aWxkIHZlcmlmaWNhdGlvbiBpbnRvIHRoZSBz eXN0ZW0uDQo+ID4gPiBUaGlzIGNvdWxkIGJlIGRvbmUgYnkgdGhlIGFwcGxpY2F0aW9uLCBhYm92 ZSB0aGUgQVBJLCBidXQgYXMgaXMgY29tcHV0ZQ0KPiA+ID4gaW50ZW5zaXZlIGl0IGNhbiBhbHNv IGJlbmVmaXQgZnJvbSBvZmZsb2FkaW5nIHRvIGhhcmR3YXJlLiBBbmQgc2F2ZXMgUENJDQo+ID4g PiBiYW5kd2lkdGggaWYgZG9uZSBpbiBzYW1lIG9wZXJhdGlvbiBhcyBjb21wcmVzc2lvbi4gIFNv IHdlIHdvdWxkIGxpa2UNCj4gdG8NCj4gPiA+IGhhdmUgdGhpcyBvcHRpb24gb24gdGhlIEFQSS4N Cj4gPiA+IEFzIHdpdGggYW55IG9wdGlvbiB3ZSBzaG91bGQgYWxzbyBleHBvc2UgaXQgb24gdGhl IGNhcGFiaWxpdGllcyBBUEkgYW5kDQo+IFBNRHMNCj4gPiA+IGNhbiBzaWduYWwgdG8gdGhlIGFw cGxpY2F0aW9uIHdoZXRoZXIgb3Igbm90IHRoZXkgc3VwcG9ydCBpdC4NCj4gPiA+DQo+ID4NCj4g PiBbU2hhbGx5XSBDYXBhYmlsaXR5IGlkZWEgbG9va3MgZ29vZCB0byBtZSBtYWtpbmcgaXQgb3B0 aW9uYWwuIEhlcmUgYXJlIGZldw0KPiBtb3JlIHRoaW5ncyB0byBjb25zaWRlcjoNCj4gPiAtIE1l bW9yeSByZXF1aXJlbWVudCB0byBzdG9yZSBkZWNvbXByZXNzaW9uIHJlc3VsdHMgLSBzaG91bGQg Z2V0IGZyb20NCj4gdXNlciBPciBhbGxvY2F0ZSBpbnRlcm5hbGx5IGlmDQo+ID4gdmVyaWZpY2F0 aW9uIHR1cm5lZCBvbj8NCj4gPiAtIEl0J3MgdXNhZ2UgaWYgYnVyc3Qgc2l6ZSA+IDEuDQo+ID4g LSBEaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gbWF5IGhhdmUgdGhlaXIgb3duIHZlcnNpb24gc28g Zm9sbG93aW5nDQo+IGNvbW1lbnQgY291bGQgYmUgbW9yZSBnZW5lcmljDQo+ID4gc3VjaCBhcw0K PiA+ICAgICAgICAvKio8IEludGVncml0eSBjaGVjayBvbiBvdXRwdXQgZGF0YS4gT25seSBhcHBs aWVzIHRvIGNvbXByZXNzDQo+IG9wZXJhdGlvbi4NCj4gPiAgICAgICAgICAgKiBWZXJpZnkgY29y cmVjdG5lc3Mgb2YgY29tcHJlc3Npb24gb3BlcmF0aW9uIG9uIGRhdGEuDQo+ID4gICAgICAgICAg Ki8NCj4gPg0KPiBbRmlvbmFdIFdlIGNhbiBzaW1wbGlmeSBhbmQgcmVtb3ZlIHRoaXMgZmVhdHVy ZS4gTWF5YmUgd2UnbGwgcHJvcG9zZSBhbiBBUEkNCj4gZXh0ZW5zaW9uIGZvciBpdCBpbiBhIGxh dGVyIHJlbGVhc2UuDQo+IA0KW1NoYWxseV0gWWVhLiBUaGF0IHNvdW5kcyBiZXR0ZXIuDQoNCj4g PiBKdXN0IGZvciBteSBjdXJpb3NpdHksIGRvZXMgeW91ciBoYXJkd2FyZSBzdXBwb3J0IHZlcmlm aWNhdGlvbiBvZmZsb2FkPw0KPiANCj4gPiA+ID4NCj4gPiA+ID4gPiArfTsNCj4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gK2VudW0gcnRlX2NvbXBfZmx1c2hfZmxhZyB7DQo+ID4gPiA+ID4gKyAgICAg IFJURV9DT01QX0ZMVVNIX05PTkUsDQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgVE9ETyAqLw0KPiA+ ID4gPiA+ICsgICAgICBSVEVfQ09NUF9GTFVTSF9GVUxMLA0KPiA+ID4gPiA+ICsgICAgICAvKio8 IFRPRE8gKi8NCj4gPiA+ID4gPiArICAgICAgUlRFX0NPTVBfRkxVU0hfRklOQUwNCj4gPiA+ID4g PiArICAgICAgLyoqPCBUT0RPICovDQo+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4gKw0KPiA+ID4g Pg0KPiA+ID4gPiBXZSBuZWVkIHRvIGFkZCBSVEVfQ09NUF9GTFVTSF9TWU5DLg0KPiBbRmlvbmFd IEFncmVlZC4NCj4gDQo+ID4gPiA+ICBBbHNvLCB0aGVyZSBjb3VsZCBiZSBzb21lIGFsZ29yaXRo bXMgd2hlcmUgdGhlc2UgRkxVU0ggdHlwZSBtYXkgbm90DQo+ID4gPiA+IGJlICAgcmVsZXZhbnQg b3Igbm90IGFsbCBtYXkgYmUgc3VwcG9ydGVkICwgc28gd2hhdCBhcmUgUE1EDQo+ID4gPiA+IGV4 cGVjdGF0aW9ucyBmb3Igc3VjaCAgIGNhc2U/DQo+ID4gPiBbRmlvbmFdIExldCdzIGhvbGQgdGhl IGRpc2N1c3Npb24gb2YgZmx1c2ggZmxhZyB2YWx1ZXMgdW50aWwgd2UgdGFsayBhYm91dA0KPiA+ ID4gc3RhdGVmdWwgY29tcHJlc3Npb24uDQo+ID4gPiBJZiBhIFBNRCBkb2Vzbid0IHN1cHBvcnQg YSBmbHVzaCBmbGFnIHZhbHVlIHdlIHNob3VsZCBwcm92aWRlIGZvciB0aGlzIHRvDQo+IGJlDQo+ ID4gPiBzaWduYWxsZWQgb24gdGhlIGNhcGFiaWxpdGllcyBBUEkuDQo+ID4gPg0KPiA+DQo+ID4g W1NoYWxseV0gT2suDQo+ID4NCj4gPiA+ID4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKiBT dGF0dXMgb2YgY29tcHJlc3Npb24gb3BlcmF0aW9uICovIGVudW0gcnRlX2NvbXBfb3Bfc3RhdHVz DQo+IHsNCj4gPiA+ID4gPiArICAgICAgUlRFX0NPTVBfT1BfU1RBVFVTX1NVQ0NFU1MsDQo+ID4g PiA+ID4gKyAgICAgIC8qKjwgT3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgKi8NCj4g PiA+ID4gPiArICAgICAgUlRFX0NPTVBfT1BfU1RBVFVTX05PVF9QUk9DRVNTRUQsDQo+ID4NCj4g PiBbU2hhbGx5XSBJIGhhdmUgc29tZSBxdWVzdGlvbnMgYXJvdW5kIGl0LCBwbGVhc2Ugc2VlIG15 IGNvbW1lbnRzIG9uDQo+IHJ0ZV9jb21wX29wIHN0cnVjdHVyZS4NCj4gPg0KPiA+ID4gPiA+ICsg ICAgICAvKio8IE9wZXJhdGlvbiBoYXMgbm90IHlldCBiZWVuIHByb2Nlc3NlZCBieSB0aGUgZGV2 aWNlICovDQo+ID4gPiA+ID4gKyAgICAgIFJURV9DT01QX09QX1NUQVRVU19JTlZBTElEX1NFU1NJ T04sDQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgb3BlcmF0aW9uIGZhaWxlZCBkdWUgdG8gaW52YWxp ZCBzZXNzaW9uIGFyZ3VtZW50cyAqLw0KPiA+ID4gPiA+ICsgICAgICBSVEVfQ09NUF9PUF9TVEFU VVNfSU5WQUxJRF9BUkdTLA0KPiA+ID4gPiA+ICsgICAgICAvKio8IE9wZXJhdGlvbiBmYWlsZWQg ZHVlIHRvIGludmFsaWQgYXJndW1lbnRzIGluIHJlcXVlc3QgKi8NCj4gPiA+ID4gPiArICAgICAg UlRFX0NPTVBfT1BfU1RBVFVTX0VSUk9SLA0KPiA+ID4gPiA+ICsgICAgICAvKio8IEVycm9yIGhh bmRsaW5nIG9wZXJhdGlvbiAqLw0KPiA+ID4gPiA+ICsgICAgICBSVEVfQ09NUF9PUF9TVEFUVVNf T1ZFUkZMT1csDQo+ID4gPiA+DQo+ID4gPiA+IElmIEkgdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBj b3JyZWN0bHkgdGhlbiB0aGlzIGluZGljYXRlcyBhIHNpdHVhdGlvbg0KPiA+ID4gPiB3aGVyZSBv dXRwdXQgYnVmZmVyIGV4aGF1c3RlZCBkdXJpbmcgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbi4N Cj4gPiA+ID4gU28gaXQgc2hvdWxkIGJlIHJlbmFtZWQgYXMgUlRFX0NPTVBfT1BfU1RBVFVTX09V VF9PRl9TUEFDRQ0KPiA+ID4gW0Zpb25hXSBBZ3JlZWQuDQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4g PiA+ICsgICAgICAvKio8IE91dHB1dCBidWZmZXIgZmlsbGVkIHVwIGJlZm9yZSBhbGwgZGF0YSBp biBpbnB1dCBidWZmZXIgd2FzDQo+ID4gPiBjb25zdW1lZCAqLw0KPiA+ID4gPg0KPiA+ID4gPiBU aGlzIGNvdWxkIGFsc28gYXJpc2Ugd2hlcmUgaW5wdXQgYnVmZmVyIGlzIGZ1bGx5IGNvbnN1bWVk IGR1cmluZw0KPiA+ID4gPiBkZWNvbXByZXNzaW9uLiBTbyBjb21tZW50IGNhbiBiZSBtb3JlIGdl bmVyaWMgc3VjaCBhcw0KPiA+ID4gPiDigJxPdXRwdXQgYnVmZmVyIGV4aGF1c3RlZCBkdXJpbmcg b3BlcmF0aW9uLuKAnQ0KPiA+ID4gW0Zpb25hXSBJbiB0aGlzIGNhc2UgSSB3b3VsZCBleHBlY3Qg dGhlIHN0YXR1cyB0byBiZQ0KPiA+ID4gUlRFX0NPTVBfT1BfU1RBVFVTX1NVQ0NFU1MuDQo+ID4g PiBUaGUgY29uc3VtZWQgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbiB0 byBkZXRlY3QgdGhhdCBpdA0KPiBoYXMNCj4gPiA+IGNvbWUgdG8gdGhlIGVuZCBvZiB0aGUgb3V0 cHV0IGJ1ZmZlci4NCj4gPiA+DQo+ID4NCj4gPiBbU2hhbGx5XSAtIEhhdmUgYSBxdWVzdGlvbiBo ZXJlLCBjb25zaWRlciBhIHNjZW5hcmlvDQo+ID4gIC0gIGlucHV0IGlzIGZ1bGx5IHJlYWQgaS5l IGNvbnN1bWVkID0gbGVuZ3RoIG9mIHNyYyBkYXRhLA0KPiA+ICAtIG91dHB1dCBpcyB3cml0dGVu IGkuZS4gcHJvZHVjZWQgPSBsZW5ndGggb2YgZGF0YSB3cml0dGVuIGluIGRzdCBidWZmZXIsIGFu ZA0KPiA+ICAtIHN0YXR1cyA9IE9QX1NUQVRVU19TVUNDRVNTDQo+ID4gICAgIFRoZW4gaG93IGFu IGFwcGxpY2F0aW9uIHdvdWxkIGtub3cgdGhlcmUgaXMgbW9yZSBkYXRhIHRvIGJlIGZsdXNoZWQN Cj4gYW5kIGFwcGxpY2F0aW9uIG5lZWQgdG8gcmUtDQo+ID4gZW5xdWV1ZSByZXF1ZXN0IHdpdGgg bW9yZSBvdXRwdXQgYnVmZmVyPw0KPiA+DQo+IFtGaW9uYV0gT2ssIEkgc2VlIHdoYXQgeW91IG1l YW4uIEJ1dCBtYXliZSBjb21tZW50IHNob3VsZCBiZQ0KPiAiT3V0cHV0IGJ1ZmZlciByYW4gb3V0 LW9mLXNwYWNlIGJlZm9yZSBvcGVyYXRpb24gY29tcGxldGVkLiINCj4gU28gaWYgYWxsIGlucHV0 IGRhdGEgd2FzIGNvbnN1bWVkLCBidXQgdGhlcmUgaXMgc3RpbGwgZGF0YSB0byBiZSBmbHVzaGVk LCB0aGVuDQo+IE9VVF9PRl9TUEFDRSBzaG91bGQgYmUgcmV0dXJuZWQuDQo+IEJ1dCBpZiBhbGwg aW5wdXQgZGF0YSB3YXMgY29uc3VtZWQgYW5kIGFsbCBkYXRhIGZsdXNoZWQgdG8gZml0IGV4YWN0 bHkgaW4gb3V0cHV0DQo+IGJ1ZmZlciB0aGVuIFNVQ0NFU1MgY2FuIGJlIHJldHVybmVkLg0KPiAN CltTaGFsbHldIEFncmVlZC4NCg0KPiA+ID4NCj4gPiA+ID4gPiArICAgICAgUlRFX0NPTVBfT1Bf U1RBVFVTX1ZFUklGWV9GQUlMRUQNCj4gPiA+ID4gPiArICAgICAgLyoqPCBEZWNvbXByZXNzaW9u IGFmdGVyIGNvbXByZXNzaW9uIGZhaWxlZCB0byByZWdlbmVyYXRlDQo+IG9yaWdpbmFsDQo+ID4g PiBkYXRhICovDQo+ID4NCj4gPiBbU2hhbGx5XSBJdCBjYW4gc2ltcGx5IGJlICJkYXRhIHZlcmlm aWNhdGlvbiBmYWlsZWQiLg0KPiBbRmlvbmFdIFdlIGNhbiByZW1vdmUgdGhpcy4NCj4gDQo+ID4g PiA+DQo+ID4gPiA+IEJlbGlldmUgaXQgaXNuJ3QgbmVlZGVkIHRvIGJlIHBhcnQgb2YgU3BlYy4N Cj4gPiA+ID4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgIC8vTm90ZToNCj4gPiA+ID4g PiArICAgICAgLy9RQVQgQVBJIGhhcyAxOSBlcnJvciB0eXBlcy4NCj4gPiA+ID4gPiArICAgICAg Ly9JU0EtbCBoYXMgNSBpbmZsYXRlIGFuZCA2IGRlZmxhdGUgZXJyb3JzLg0KPiA+ID4gPiA+ICsg ICAgICAvL3psaWIgaGFzIDYgZXJyb3JzDQo+ID4gPiA+ID4gKyAgICAgIC8vUHJvcG9zZSBvbmx5 IGluY2x1ZGUgY29tbW9uIHN1YnNldCBpbiBzdGF0dXMgLSBvbmx5IHZhbHVlcw0KPiB3aGVyZQ0K PiA+ID4gYXBwbCBzaG91bGQgaGF2ZSBkaWZmZXJlbnQNCj4gPiA+ID4gYmVoYXZpb3VyLg0KPiA+ ID4gPiA+ICsgICAgICAvL0FkZCBzZXBhcmF0ZSBlcnJvciBmaWVsZCBvbiBvcCByZXR1cm4gd2hp Y2ggYSBQTUQgY291bGQNCj4gcG9wdWxhdGUNCj4gPiA+IHdpdGggUE1ELXNwZWNpZmljIGRlYnVn DQo+ID4gPiA+IGluZm8uDQo+ID4gPiA+DQo+ID4gPiA+IFByb2JhYmx5IHNob3VsZCBhZGQgUlRF X0NPTVBfT1BfU1RBVFVTX0lOVkFMSURfU1RBVEUgaW4gY2FzZQ0KPiBhbg0KPiA+ID4gPiBBUEkg aXMgaW52b2tlZCBpbiBpbnZhbGlkIHN0YXRlLg0KPiA+ID4gW0Zpb25hXSBBZ3JlZWQNCj4gPiA+ DQo+ID4gPiA+IFJlc3QgU3Vic2V0IGxvb2tzIHNlbGYtY29udGFpbmVkLg0KPiA+ID4gPg0KPiA+ ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKiBDb21w cmVzc2lvbiB0cmFuc2Zvcm0gdHlwZXMgKi8NCj4gPiA+ID4gPiArZW51bSBydGVfY29tcF94Zm9y bV90eXBlIHsNCj4gPiA+ID4gPiArICAgICAgUlRFX0NPTVBfQ09NUFJFU1MsDQo+ID4gPiA+ID4g KyAgICAgIC8qKjwgQ29tcHJlc3Npb24gc2VydmljZSAtIGNvbXByZXNzICovDQo+ID4gPiA+ID4g KyAgICAgIFJURV9DT01QX0RFQ09NUFJFU1MsDQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgQ29tcHJl c3Npb24gc2VydmljZSAtIGRlY29tcHJlc3MgKi8NCj4gPiA+ID4gPiArICAgICAgUlRFX0NPTVBf Q0hFQ0tTVU0NCj4gPiA+ID4gPiArICAgICAgLyoqIENvbXByZXNzaW9uIHNlcnZpY2UgLSBnZW5l cmF0ZSBjaGVja3N1bSAqLw0KPiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4NCj4g PiA+ID4gRW51bWVyYXRpb24gbWF5IGJlIHJlbmFtZWQgYXMgcnRlX2NvbXBfb3BfdHlwZQ0KPiA+ ID4gW0Zpb25hXSBTZWUgYW5zd2VyIHJlIHhmb3JtcyBiZWxvdy4NCj4gPiA+DQo+ID4gPiA+DQo+ ID4gPiA+ID4gKy8qKiBQYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBkZWZsYXRlIGFsZ29yaXRo bSAqLw0KPiA+ID4gPiA+ICtzdHJ1Y3QgcnRlX2NvbXBfZGVmbGF0ZV9wYXJhbXMgew0KPiA+ID4g PiA+ICsgICAgICBlbnVtIHJ0ZV9jb21wX2h1ZmZtYW4gaHVmZm1hbjsNCj4gPiA+ID4gPiArICAg ICAgLyoqPCBDb21wcmVzc2lvbiBodWZmbWFuIGVuY29kaW5nIHR5cGUgKi8NCj4gPiA+ID4gPiAr fTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgKiBTZXNzaW9uIFNl dHVwIERhdGEgY29tbW9uIHRvIGFsbCBjb21wcmVzcyB0cmFuc2Zvcm1zLg0KPiA+ID4gPiA+ICsg KiBJbmNsdWRlcyBwYXJhbWV0ZXJzIGNvbW1vbiB0byBzdGF0ZWxlc3MgYW5kIHN0YXRlZnVsDQo+ ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ICtzdHJ1Y3QgcnRlX2NvbXBfY29tcHJlc3NfY29tbW9u X3BhcmFtcyB7DQo+ID4gPiA+ID4gKyAgICAgIGVudW0gcnRlX2NvbXBfYWxnb3JpdGhtIGFsZ287 DQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgQWxnb3JpdGhtIHRvIHVzZSBmb3IgY29tcHJlc3Mgb3Bl cmF0aW9uICovDQo+ID4gPiA+ID4gKyAgICAgIHVuaW9uIHsNCj4gPiA+ID4gPiArICAgICAgICAg ICAgc3RydWN0IHJ0ZV9jb21wX2RlZmxhdGVfcGFyYW1zIGRlZmxhdGU7DQo+ID4gPiA+ID4gKyAg ICAgICAgICAgIC8qKjwgUGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZGVmbGF0ZSBhbGdvcml0 aG0gKi8NCj4gPiA+ID4gPiArICAgICAgfTsgLyoqPCBBbGdvcml0aG0gc3BlY2lmaWMgcGFyYW1l dGVycyAqLw0KPiA+ID4gPiA+ICsgICAgICB1aW50OF90IGxldmVsOw0KPiA+ID4gPiA+ICsgICAg ICAvKio8IENvbXByZXNzaW9uIGxldmVsDQo+ID4gPiA+ID4gKyAgICAgICogUmFuZ2UgaXMgMS05 LCB3aGVyZSAxIGlzIGZhc3Rlc3QgY29tcHJlc3Npb24NCj4gPiA+ID4gPiArICAgICAgKiBidXQg d29yc3QsIGkuZS4gaGlnaGVzdCwgY29tcHJlc3Npb24gcmF0aW8uDQo+ID4gPiA+ID4gKyAgICAg ICogSGlnaGVyIG51bWJlcnMgbWF5IGdpdmUgYmV0dGVyIGNvbXByZXNzaW9uIHJhdGlvcyBhbmQg YXJlDQo+IGxpa2VseQ0KPiA+ID4gc2xvd2VyLg0KPiA+ID4gPiA+ICsgICAgICAqIFRoZSBudW1i ZXIgaXMgaW50ZXJwcmV0ZWQgYnkgZWFjaCBQTUQgZGlmZmVyZW50bHkuDQo+ID4gPiA+ID4gKyAg ICAgICAqLw0KPiA+ID4gPg0KPiA+ID4gPiBEaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIHNh bWUgYWxnbyBtYXkgaGF2ZSBkaWZmZXJlbnQgbGV2ZWxzDQo+ID4gPiA+IHN1cHBvcnRlZC4gU28s IHdlIGNhbiBhZGQgZW51bSBhbG9uZ3NpZGUgdGhpcyBwYXJhbWV0ZXIgc3VjaCBhczoNCj4gPiA+ ID4NCj4gPiA+ID4gZW51bSBydGVfY29tcF9jb21wcmVzc2lvbl9sZXZlbCB7DQo+ID4gPiA+IFJU RV9DT01QX0NPTVBSRVNTSU9OX0xFVkVMX0RFRkFVTFQ9MCwNCj4gPiA+ID4gLyoqIFVzZSBQTUQg RGVmYXVsdCAqLw0KPiA+ID4gPiBSVEVfQ09NUF9DT01QUkVTU0lPTl9MRVZFTF9NSU49MSwNCj4g PiA+ID4gLyoqIEZhc3Rlc3QgQ29tcHJlc3Npb24gKi8NCj4gPiA+ID4gUlRFX0NPTVBfQ09NUFJF U1NJT05fTEVWRUxfTUFYPTkNCj4gPiA+ID4gLyoqIE1heGltdW0gbGV2ZWwgc3VwcG9ydGVkIGJ5 IGNvbXByZXNzaW9uIFBNRCAqLw0KPiA+ID4gPiB9DQo+ID4gPiBbRmlvbmFdIEFncmVlZC4NCj4g PiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioN Cj4gPiA+ID4gPiArICogU2Vzc2lvbiBTZXR1cCBEYXRhIGZvciBzdGF0ZWZ1bCBjb21wcmVzcyB0 cmFuc2Zvcm0uDQo+ID4gPiA+ID4gKyAqIEV4dHJhIHBhcmFtcyBmb3Igc3RhdGVmdWwgdHJhbnNm b3JtDQo+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ICtzdHJ1Y3QgcnRlX2NvbXBfY29tcHJlc3Nf c3RhdGVmdWxfcGFyYW1zIHsNCj4gPiA+ID4gPiArICAgICAgLy9UT0RPIDogYWRkIGV4dHJhIHBh cmFtcyBqdXN0IG5lZWRlZCBmb3Igc3RhdGVmdWwsIGUuZy4NCj4gPiA+ID4gPiArICAgICAgLy8g aGlzdG9yeSBidWZmZXIgc2l6ZSwgd2luZG93IHNpemUsIHN0YXRlLCBzdGF0ZSBidWZmZXJzLCBl dGMuLi4/DQo+ID4gPiA+DQo+ID4gPiA+IEkgd2lsbCBwcm92aWRlIG15IGNvbW1lbnRzIG9uIGl0 IGluIGFub3RoZXIgZW1haWwuDQo+ID4gPiA+DQo+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4gKy8q IFNlc3Npb24gU2V0dXAgRGF0YSBmb3IgY29tcHJlc3MgdHJhbnNmb3JtLiAqLw0KPiA+ID4gPiA+ ICtzdHJ1Y3QgcnRlX2NvbXBfY29tcHJlc3NfeGZvcm0gew0KPiA+ID4gPiA+ICsgICAgICBzdHJ1 Y3QgcnRlX2NvbXBfY29tcHJlc3NfY29tbW9uX3BhcmFtcyBjbW47DQo+ID4gPiA+ID4gKyAgICAg IHN0cnVjdCBydGVfY29tcF9jb21wcmVzc19zdGF0ZWZ1bF9wYXJhbXMgc3RhdGVmdWw7DQo+ID4g PiA+ID4gK307DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICogU2Vz c2lvbiBTZXR1cCBEYXRhIGNvbW1vbiB0byBhbGwgZGVjb21wcmVzcyB0cmFuc2Zvcm1zLg0KPiA+ ID4gPiA+ICsgKiBJbmNsdWRlcyBwYXJhbWV0ZXJzIGNvbW1vbiB0byBzdGF0ZWxlc3MgYW5kIHN0 YXRlZnVsDQo+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ICtzdHJ1Y3QgcnRlX2NvbXBfZGVjb21w cmVzc19jb21tb25fcGFyYW1zIHsNCj4gPiA+ID4gPiArICAgICAgZW51bSBydGVfY29tcF9hbGdv cml0aG0gYWxnbzsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBBbGdvcml0aG0gdG8gdXNlIGZvciBk ZWNvbXByZXNzaW9uICovDQo+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ICsgKiAgU2Vzc2lvbiBTZXR1cCBEYXRhIGZvciBkZWNvbXByZXNzIHRyYW5zZm9ybS4NCj4gPiA+ ID4gPiArICogRXh0cmEgcGFyYW1zIGZvciBzdGF0ZWZ1bCB0cmFuc2Zvcm0NCj4gPiA+ID4gPiAr ICovDQo+ID4gPiA+ID4gK3N0cnVjdCBydGVfY29tcF9kZWNvbXByZXNzX3N0YXRlZnVsX3BhcmFt cyB7DQo+ID4gPiA+ID4gKyAgICAgIC8vVE9ETyA6IGFkZCBleHRyYSBwYXJhbXMganVzdCBuZWVk ZWQgZm9yIHN0YXRlZnVsLCBlLmcuDQo+ID4gPiA+ID4gKyAgICAgIC8vIGhpc3RvcnkgYnVmZmVy IHNpemUsIHdpbmRvdyBzaXplLCBzdGF0ZSwgc3RhdGUgYnVmZmVycywgZXRjLi4uPw0KPiA+ID4g PiA+ICt9Ow0KPiA+ID4gPiA+ICsvKiBTZXNzaW9uIFNldHVwIERhdGEgZm9yIGRlY29tcHJlc3Mg dHJhbnNmb3JtLiAqLw0KPiA+ID4gPiA+ICtzdHJ1Y3QgcnRlX2NvbXBfZGVjb21wcmVzc194Zm9y bSB7DQo+ID4gPiA+ID4gKyAgICAgIHN0cnVjdCBydGVfY29tcF9kZWNvbXByZXNzX2NvbW1vbl9w YXJhbXMgY21uOw0KPiA+ID4gPiA+ICsgICAgICBzdHJ1Y3QgcnRlX2NvbXBfZGVjb21wcmVzc19z dGF0ZWZ1bF9wYXJhbXMgc3RhdGVmdWw7DQo+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsvKioNCj4gPiA+ID4gPiArICogIEdlbmVyYXRlIGNoZWNrc3VtIG9uIHVuY29tcHJl c3NlZCBkYXRhLg0KPiA+ID4gPiA+ICsgKiBBcHBsaWVzIHRvIGJvdGggY29tcHJlc3MgYW5kIGRl Y29tcHJlc3Mgb3BlcmF0aW9ucy4gKi8NCj4gPiA+ID4gPiArLyogU2Vzc2lvbiBTZXR1cCBEYXRh IGZvciBjaGVja3N1bSB0cmFuc2Zvcm0uICovDQo+ID4gPiA+ID4gK3N0cnVjdCBydGVfY29tcF9j aGVja3N1bV94Zm9ybSB7DQo+ID4gPiA+ID4gKyAgICAgIGVudW0gcnRlX2NvbXBfY2hlY2tzdW1f dHlwZSBjaGtzdW1fdHlwZTsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBUaGlzIHBhcmFtZXRlciBk ZXRlcm1pbmVzIHRoZSBjaGVja3N1bSB0eXBlICovDQo+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAqIENvbXByZXNzaW9u IHRyYW5zZm9ybSBzdHJ1Y3R1cmUuDQo+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ID4gKyAqIFRoaXMg aXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBjb21wcmVzc2lvbiB0cmFuc2Zvcm1zIHJlcXVpcmVkLA0K PiBtdWx0aXBsZQ0KPiA+ID4gdHJhbnNmb3Jtcw0KPiA+ID4gPiA+ICsgKiBjYW4gYmUgY2hhaW5l ZCB0b2dldGhlciB0byBzcGVjaWZ5IGEgY2hhaW4gb2YgdHJhbnNmb3JtcyBzdWNoIGFzDQo+ID4g PiA+ID4gKyAqIGdlbmVyYXRlIGNoZWNrc3VtLCB0aGVuIGNvbXByZXNzLiBFYWNoIHRyYW5zZm9y bSBzdHJ1Y3R1cmUgY2FuDQo+ID4gPiA+ID4gKyAqIGhvbGQgYSBzaW5nbGUgdHJhbnNmb3JtLCB0 aGUgdHlwZSBmaWVsZCBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2gNCj4gPiA+IHRyYW5zZm9ybQ0K PiA+ID4gPiA+ICsgKiBpcyBjb250YWluZWQgd2l0aGluIHRoZSB1bmlvbi4NCj4gPiA+ID4gPiAr ICogVGhlIHN1cHBvcnRlZCBjb21iaW5hdGlvbnMgYXJlOg0KPiA+ID4gPiA+ICsgKiAgLSBjb21w cmVzcy1vbmx5DQo+ID4gPiA+ID4gKyAqICAtIGRlY29tcHJlc3Mtb25seQ0KPiA+ID4gPiA+ICsg KiAgLSBnZW5lcmF0ZSBjaGVja3N1bSBhbmQgY29tcHJlc3MgaW5wdXQgZGF0YQ0KPiA+ID4gPiA+ ICsgKiAgLSBkZWNvbXByZXNzIGlucHV0IGRhdGEsIGdlbmVyYXRlIGNoZWNrc3VtIG9uIG91dHB1 dCBkYXRhDQo+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ICtzdHJ1Y3Qg cnRlX2NvbXBfeGZvcm0gew0KPiA+ID4gPiA+ICsgICAgICBzdHJ1Y3QgcnRlX2NvbXBfeGZvcm0g Km5leHQ7DQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgbmV4dCB4Zm9ybSBpbiBjaGFpbiAqLw0KPiA+ ID4gPiA+ICsgICAgICBlbnVtIHJ0ZV9jb21wX3hmb3JtX3R5cGUgdHlwZTsNCj4gPiA+ID4gPiAr ICAgICAgLyoqPCB4Zm9ybSB0eXBlICovDQo+ID4gPiA+ID4gKyAgICAgIHVuaW9uIHsNCj4gPiA+ ID4gPiArICAgICAgICAgICAgc3RydWN0IHJ0ZV9jb21wX2NvbXByZXNzX3hmb3JtIGNvbXByZXNz Ow0KPiA+ID4gPiA+ICsgICAgICAgICAgICAvKio8IHhmb3JtIGZvciBjb21wcmVzcyBvcGVyYXRp b24gKi8NCj4gPiA+ID4gPiArICAgICAgICAgICAgc3RydWN0IHJ0ZV9jb21wX2RlY29tcHJlc3Nf eGZvcm0gZGVjb21wcmVzczsNCj4gPiA+ID4gPiArICAgICAgICAgICAgLyoqPCB4Zm9ybSBmb3Ig ZGVjb21wcmVzcyBvcGVyYXRpb24gKi8NCj4gPiA+ID4gPiArICAgICAgICAgICAgc3RydWN0IHJ0 ZV9jb21wX2NoZWNrc3VtX3hmb3JtIGNoa3N1bTsNCj4gPiA+ID4gPiArICAgICAgICAgICAgLyoq PCB4Zm9ybSB0byBnZW5lcmF0ZSBjaGVja3N1bXMgKi8NCj4gPiA+ID4NCj4gPiA+ID4gV2UgbmVl ZCBjb21wcmVzcytjaGVja3N1bShhbmQgZGVjb21wcmVzcytjaGVja3N1bSkgYXMgYSBzaW5nbGUN Cj4gPiA+IHhmb3JtDQo+ID4gPiA+IGluc3RlYWQgb2YgcmVxdWlyaW5nIDIgeGZvcm1zLiBUaGUg dXNlIG9mIHhmb3JtIGNoYWluIHdpbGwgaW50cm9kdWNlDQo+ID4gPiA+IG5lZWRsZXNzIG92ZXJo ZWFkIGZvciB0aGUgbW9zdCB0eXBpY2FsIHVzZS1jYXNlcyBvZg0KPiBjb21wK2NoZWNrc3VtKGFu ZA0KPiA+ID4gPiBkZWNvbXArY2hlY2tzdW0pLg0KPiA+ID4gPg0KPiA+ID4gW0Zpb25hXSBvay4N Cj4gPiA+IEkgY2FuIG1lcmdlIHNvIHdlIGp1c3QgaGF2ZSBjb21wcmVzcyAmIGRlY29tcHJlc3Mg eGZvcm1zIHdpdGggYW4NCj4gaW50ZWdyaXR5DQo+ID4gPiAoY2hlY2tzdW0pIHBhcmFtLg0KPiA+ ID4gU28gbm93IEkgc2VlIHdoeSB5b3Ugd2FudCB0byByZW5hbWUgcnRlX2NvbXBfeGZvcm1fdHlw ZSBhcw0KPiA+ID4gcnRlX2NvbXBfb3BfdHlwZS4NCj4gPiA+IENhbGxpbmcgaXQgLi5vcF90eXBl IHRob3VnaCBpbXBsaWVzIGEgMToxIG1hcHBpbmcgYmV0d2VlbiB4Zm9ybSBhbmQNCj4gPiA+IG9w ZXJhdGlvbiwNCj4gPiA+IHNvIGFzc3VtZXMgdGhlcmUgd2lsbCBuZXZlciBiZSBhbnkgY2hhaW5l ZCB4Zm9ybXMuDQo+ID4gPiBJZiB0aGlzIGlzIHRoZSBjYXNlIHdlIHNob3VsZCBhbHNvIHJlbW92 ZSB0aGUgKm5leHQgcGFyYW1ldGVyLg0KPiA+ID4gSSdkIGZvbGxvd2VkIHRoZSBjcnlwdG8geGZv cm0gY2hhaW4gcGF0dGVybiBpbiBjYXNlIGl0IHByb3ZlcyBtb3JlDQo+ID4gPiBleHRlbmRhYmxl IGluIGZ1dHVyZSwNCj4gPiA+IGJ1dCBpZiB3ZSBjYW4ndCBmb3Jlc2VlIGFueSBjYXNlIGZvciBp dCwgdGhlbiB3ZSBzaG91bGQgc2ltcGxpZnkuDQo+ID4gPiBJZiB3ZSBjaG9vc2UgdG8ga2VlcCB0 aGUgKm5leHQgdGhlbiB3ZSBzaG91bGQga2VlcCB0aGUgbmFtZSBhcw0KPiA+ID4gcnRlX2NvbXBf eGZvcm1fdHlwZS4NCj4gPiA+DQo+ID4NCj4gPiAgW1NoYWxseV0gSSB3b3VsZCBwcmVmZXIgdG8g a2VlcCAibmV4dCIgZm9yIGV4dGVuc2liaWxpdHksIGlmIHRoYXQgcmVxdWlyZQ0KPiBuYW1pbmcg dG8gYmUgcmV0YWluZWQgYXMgInhmb3JtIg0KPiA+IGFtIGZpbmUgYnkgdGhhdC4NCj4gW0Zpb25h XSBPay4NCj4gDQo+ID4NCj4gPiBKdXN0IGEgbm90ZSwgc2FtZSBpcyBwcm9wb3NhbCBmb3IgaGFz aCBhcyB3ZWxsIGkuZS4gY29tcHJlc3MraGFzaCBvcg0KPiBjb21wcmVzcytjaGVja3N1bStoYXNo IHdpbGwgYmUNCj4gPiBvbmUgeGZvcm0uDQo+ID4gVG8gc3VwcG9ydCBjb21wcmVzcytjaGVja3N1 bStoYXNoLCBkYXRhIHN0cnVjdHVyZSB3b3VsZCBuZWVkIHRvIGJlDQo+IG1vZGlmaWVkLg0KPiBb RmlvbmFdIE9rLg0KPiANCj4gPiA+DQo+ID4gPiA+ID4gKyAgICAgIH07DQo+ID4gPiA+ID4gK307 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArc3RydWN0IHJ0ZV9jb21wX3Nl c3Npb247DQo+ID4NCj4gPiBbU2hhbGx5XSBJdCBpcyBuYW1lZCBhcyBydGVfY3J5dG9kZXZfc2Vz c2lvbiBpbiBjcnlwdG8gQVBJIHVubGlrZSBoZXJlLiBTbyBpcw0KPiBpdCBpbnRlbnRpb25hbD8N Cj4gW0Zpb25hXSBXZWxsLCB5ZXMsIGJlY2F1c2UgaXQncyBzaG9ydGVyIGFuZCBJIGRvbuKAmXQg dGhpbmsgdGhlIGRldiBhZGRzDQo+IGFueXRoaW5nLiBCdXQgSQ0KPiBkb27igJl0IGZlZWwgc3Ry b25nbHkgYWJvdXQgaXQsIGlmIHlvdSB0aGluayBpdCdzIGJldHRlciB3aXRoIHJ0ZV9jb21wZGV2 X3Nlc3Npb24NCj4gSSBjYW4gZG8gdGhhdD8NCltTaGFsbHldIEFtIGdvb2Qgd2l0aCBydGVfY29t cF9zZXNzaW9uLiANCg0KPiANCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ICsgKiBDb21wcmVzc2lvbiBPcGVyYXRpb24uDQo+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ID4gKyAq IFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGRhdGEgcmVsYXRpbmcgdG8gcGVyZm9ybWluZyBhIGNv bXByZXNzaW9uDQo+ID4gPiA+ID4gKyAqIG9wZXJhdGlvbiBvbiB0aGUgcmVmZXJlbmNlZCBtYnVm IGRhdGEgYnVmZmVycy4NCj4gPiA+ID4gPiArICoNCj4gPiA+ID4gPiArICogQWxsIGNvbXByZXNz aW9uIG9wZXJhdGlvbnMgYXJlIE91dC1vZi1wbGFjZSAoT09QKSBvcGVyYXRpb25zLA0KPiA+ID4g PiA+ICsgKiBhcyB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IGRhdGEgaXMgZGlmZmVyZW50IHRvIHRo ZSBzaXplIG9mIHRoZSBpbnB1dA0KPiBkYXRhLg0KPiA+ID4gPiA+ICsgKg0KPiA+ID4gPiA+ICsg KiBDb21wIG9wZXJhdGlvbnMgYXJlIGVucXVldWVkIGFuZCBkZXF1ZXVlZCBpbiBjb21wIFBNRHMN Cj4gdXNpbmcNCj4gPiA+IHRoZQ0KPiA+ID4gPiA+ICsgKiBydGVfY29tcGRldl9lbnF1ZXVlX2J1 cnN0KCkgLw0KPiBydGVfY29tcGRldl9kZXF1ZXVlX2J1cnN0KCkNCj4gPiA+IEFQSXMNCj4gPiA+ ID4gPiArICovDQo+ID4gPiA+ID4gK3N0cnVjdCBydGVfY29tcF9vcCB7DQo+ID4gPiA+ID4gKyAg ICAgIHVpbnQ4X3Qgc3RhdHVzOw0KPiA+ID4gPiA+ICsgICAgICAvKio8DQo+ID4gPiA+ID4gKyAg ICAgICogb3BlcmF0aW9uIHN0YXR1cyAtIHVzZSB2YWx1ZXMgZnJvbSBlbnVtIHJ0ZV9jb21wX3N0 YXR1cy4NCj4gPiA+ID4gPiArICAgICAgKiBUaGlzIGlzIHJlc2V0IHRvDQo+ID4gPiA+ID4gKyAg ICAgICogUlRFX0NPTVBfT1BfU1RBVFVTX05PVF9QUk9DRVNTRUQgb24gYWxsb2NhdGlvbiBmcm9t DQo+ID4gPiBtZW1wb29sIGFuZA0KPiA+DQo+ID4gW1NoYWxseV0gUGVyIG15IHVuZGVyc3RhbmRp bmcsIFJURV9DT01QX09QX1NUQVRVU19OT1RfUFJPQ0VTU0VEDQo+IHdpbGwgYmUgc2V0IG9ubHkg YXQgdGhlIHJldHVybg0KPiA+IG9mIHJ0ZV9jb21wX29wX2FsbG9jKCkgYW5kIG5ldmVyIGFmdGVy Lg0KPiA+IElmIHRoYXQgdW5kZXJzdGFuZGluZyBjb3JyZWN0LCBzaG91bGRuJ3QgaXQgYmUgcmVu YW1lZCBhcw0KPiBSVEVfQ09NUF9PUF9TVEFUVVNfQUxMT0NBVEVEPw0KPiBbRmlvbmFdIFdlbGwg aGVyZSBJIGxpa2UgdGhlIGNvbnNpc3RlbmN5IHdpdGggY3J5cHRvZGV2LiBCdXQgYWxzbyB0aGlu aw0KPiBOT1RfUFJPQ0VTU0VEIGlzIGEgZ29vZCBuYW1lLg0KPiBCZWNhdXNlIGV2ZW4gYWZ0ZXIg aXQncyBzZXQgdG8gU1VDQ0VTUyBpdCdzIHN0aWxsIGFsbG9jYXRlZC4gVW50aWwgaXQncyBmcmVl ZC4gU28NCj4gTk9UX1BST0NFU1NFRCBzZWVtcyB0bw0KPiBtZSB0byBiZXR0ZXIgcmVwcmVzZW50 IHRoZSBzdGF0ZSBvZiB0aGUgb3AgYXQgdGhhdCB0aW1lLg0KPiANCltTaGFsbHldIE9rLg0KDQo+ IA0KPiA+ID4gPiA+ICsgICAgICAqIHdpbGwgYmUgc2V0IHRvIFJURV9DT01QX09QX1NUQVRVU19T VUNDRVNTIGFmdGVyIG9wZXJhdGlvbg0KPiA+ID4gPiA+ICsgICAgICAqIGlzIHN1Y2Nlc3NmdWxs eSBwcm9jZXNzZWQgYnkgYSBQTUQNCj4gPiA+ID4gPiArICAgICAgKi8NCj4gPiA+ID4gPiArICAg ICAgdWludDE2X3QgZGVidWdfc3RhdHVzOw0KPiA+ID4gPiA+ICsgICAgICAvKio8DQo+ID4gPiA+ ID4gKyAgICAgICogU3RhdHVzIG9mIHRoZSBvcGVyYXRpb24gaXMgcmV0dXJuZWQgaW4gdGhlIHJ0 ZV9jcnlwdG9fb3AuDQo+ID4NCj4gPiBbU2hhbGx5XSBUeXBvIGNvcnJlY3Rpb24gdG8gcnRlX2Nv bXBfb3ANCj4gW0Zpb25hXSBvaw0KPiANCj4gDQo+ID4gPiA+ID4gKyAgICAgICogVGhpcyBmaWVs ZCBhbGxvd3MgdGhlIFBNRCB0byBwYXNzIGJhY2sgZXh0cmENCj4gPiA+ID4gPiArICAgICAgKiBw bWQtc3BlY2lmaWMgZGVidWcgaW5mb3JtYXRpb24uIFZhbHVlIGlzIG5vdCBkZWZpbmVkIG9uIHRo ZQ0KPiBBUEkuDQo+ID4gPiA+ID4gKyAgICAgICovDQo+ID4gPiA+ID4gKyAgICAgIHN0cnVjdCBy dGVfY29tcF9zZXNzaW9uICpzZXNzaW9uOw0KPiA+ID4gPiA+ICsgICAgICAvKio8IEhhbmRsZSBm b3IgdGhlIGluaXRpYWxpc2VkIHNlc3Npb24gY29udGV4dCAqLw0KPiA+ID4gPiA+ICsgICAgICBz dHJ1Y3QgcnRlX21lbXBvb2wgKm1lbXBvb2w7DQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgbWVtcG9v bCBmcm9tIHdoaWNoIG9wZXJhdGlvbiBpcyBhbGxvY2F0ZWQgKi8NCj4gPiA+ID4gPiArICAgICAg cGh5c19hZGRyX3QgcGh5c19hZGRyOw0KPiA+ID4gPiA+ICsgICAgICAvKio8IHBoeXNpY2FsIGFk ZHJlc3Mgb2YgdGhpcyBvcGVyYXRpb24gKi8NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAg IHN0cnVjdCBydGVfbWJ1ZiAqbV9zcmM7ICAgLyoqPCBzb3VyY2UgbWJ1ZiAqLw0KPiA+ID4gPiA+ ICsgICAgICBzdHJ1Y3QgcnRlX21idWYgKm1fZHN0OyAgIC8qKjwgZGVzdGluYXRpb24gbWJ1ZiAq Lw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgc3RydWN0IHsNCj4gPiA+ID4gPiArICAg ICAgICAgICAgdWludDMyX3Qgb2Zmc2V0Ow0KPiA+ID4gPiA+ICsgICAgICAgICAgICAvKio8IFN0 YXJ0aW5nIHBvaW50IGZvciBjb21wcmVzc2lvbiBvciBkZWNvbXByZXNzaW9uLA0KPiA+ID4gPiA+ ICsgICAgICAgICAgICAqIHNwZWNpZmllZCBhcyBudW1iZXIgb2YgYnl0ZXMgZnJvbSBzdGFydCBv ZiBwYWNrZXQgaW4NCj4gPiA+ID4gPiArICAgICAgICAgICAgKiBzb3VyY2UgYnVmZmVyLg0KPiA+ ID4gPiA+ICsgICAgICAgICAgICAqIFN0YXJ0aW5nIHBvaW50IGZvciBjaGVja3N1bSBnZW5lcmF0 aW9uIGluIGNvbXByZXNzDQo+IGRpcmVjdGlvbi4NCj4gPiA+ID4gPiArICAgICAgICAgICAgKi8N Cj4gPiA+ID4gPiArICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoOw0KPiA+ID4gPiA+ICsgICAg ICAgICAgICAvKio8IFRoZSBsZW5ndGgsIGluIGJ5dGVzLCBvZiB0aGUgZGF0YSBpbiBzb3VyY2Ug YnVmZmVyDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICogdG8gYmUgY29tcHJlc3NlZCBvciBkZWNv bXByZXNzZWQuDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICogQWxzbyB0aGUgbGVuZ3RoIG9mIHRo ZSBkYXRhIG92ZXIgd2hpY2ggdGhlIGNoZWNrc3VtDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICog c2hvdWxkIGJlIGdlbmVyYXRlZCBpbiBjb21wcmVzcyBkaXJlY3Rpb24NCj4gPiA+ID4gPiArICAg ICAgICAgICAgKi8NCj4gPiA+ID4gPiArICAgICAgfSBzcmM7DQo+ID4gPiA+ID4gKyAgICAgIHN0 cnVjdCB7DQo+ID4gPiA+ID4gKyAgICAgICAgICAgIHVpbnQzMl90IG9mZnNldDsNCj4gPiA+ID4g PiArICAgICAgICAgICAgLyoqPCBTdGFydGluZyBwb2ludCBmb3Igd3JpdGluZyBvdXRwdXQgZGF0 YSwgc3BlY2lmaWVkIGFzDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICogbnVtYmVyIG9mIGJ5dGVz IGZyb20gc3RhcnQgb2YgcGFja2V0IGluIG1fZHN0DQo+ID4gPiA+ID4gKyAgICAgICAgICAgICog YnVmZmVyLiBTdGFydGluZyBwb2ludCBmb3IgY2hlY2tzdW0gZ2VuZXJhdGlvbiBpbg0KPiA+ID4g PiA+ICsgICAgICAgICAgICAqIGRlY29tcHJlc3MgZGlyZWN0aW9uLg0KPiA+ID4gPiA+ICsgICAg ICAgICAgICAqLw0KPiA+DQo+ID4gW1NoYWxseV0gRG9uJ3Qgd2UgbmVlZCBsZW5ndGggaGVyZT8g aW5kaWNhdGluZyBsZW5ndGggKGluIGJ5dGVzKSBvZiBhdmFpbGFibGUNCj4gZHN0IG1idWYgYXQg aW5wdXQ/DQo+IFtGaW9uYV0gVGhlIGRzdCBtYnVmIGNvbnRhaW5zIHRoZSBzaXplIG9mIHRoZSBi dWZmZXIgb3IgYnVmZmVyIGNoYWluLg0KPiBUaGUgY2FsbGVyIGRvZXNuJ3Qga25vdyB0aGUgbGVu Z3RoIG9mIHRoZSBvdXRwdXQgZGF0YSwgdGhhdCB3aWxsIGJlIHJldHVybmVkDQo+IGluIG9wLnBy b2R1Y2VkLg0KPiBGb3IgdGhlIHNyYyBkYXRhIHRoZSBzcmMgbWJ1ZiBjb250YWlucyB0aGUgYnVm ZmVyIHNpemUgYnV0IHRoZSBsZW5ndGggc3BlY2lmZXMNCj4gdGhlIGRhdGEgd2hpY2ggc2hvdWxk IGJlIGNvbnN1bWVkLg0KPiBvcC5jb25zdW1lZCB3aWxsIHJldHVybiBleGFjdGx5IHdoYXQgd2Fz IGNvbnN1bWVkLg0KPiBJIGhhdmUgY29uc2lkZXJlZCBpbmNsdWRpbmcgYSBkc3QudG90YWxfYnVm ZmVyX2xlbmd0aCB0byBzYXZlIHRoZSBQTUQNCj4gd2Fsa2luZyBhbiBtYnVmIGNoYWluIHRvIGZp Z3VyZSBpdCBvdXQuDQo+IEJ1dCBJIGhhdmVuJ3QgZm91bmQgYSBuZWVkIGZvciB0aGF0IHlldCwg c28gbGVmdCBpdCBvdXQuDQo+IA0KW1NoYWxseV0gT2suIFRoZW4sIGp1c3QgdG8gY29uZmlybSBt eSB1bmRlcnN0YW5kaW5nIGhlcmUuIFlvdSBtZWFuIFBNRCBjYW4gZmlndXJlIG91dCBhbW91bnQg b2YgYXZhaWxhYmxlIHNwYWNlIGluIGRzdCBtYnVmIGJ5IGNhbGxpbmcgcnRlX3BrdG1idWZfZGF0 YV9sZW4oKSBvbiBlYWNoIG9mIGl0cyBzZWdtZW50Pw0KDQo+ID4NCj4gPiA+ID4gPiArICAgICAg fSBkc3Q7DQo+ID4gPiA+ID4gKyAgICAgIGVudW0gcnRlX2NvbXBfZmx1c2hfZmxhZyBmbHVzaF9m bGFnOw0KPiA+ID4gPiA+ICsgICAgICAvKio8IGRlZmluZXMgZmx1c2ggY2hhcmFjdGVyaXN0aWNz IGZvciB0aGUgb3V0cHV0IGRhdGEuDQo+ID4gPiA+ID4gKyAgICAgICogT25seSBhcHBsaWNhYmxl IGluIGNvbXByZXNzIGRpcmVjdGlvbi4NCj4gPiA+ID4gPiArICAgICAgKi8NCj4gPiA+ID4gPiAr ICAgICAgZW51bSBydGVfY29tcF9pbnRlZ3JpdHlfY2hlY2sgdmVyaWZ5Ow0KPiA+ID4gPiA+ICsg ICAgICAvKio8IFNwZWNpZmllcyBpZiB0aGUgb3V0cHV0IGRhdGEgc2hvdWxkIGJlIHZlcmlmaWVk Lg0KPiA+ID4gPiA+ICsgICAgICAgIE9ubHkgYXBwbGljYWJsZSBpbiBjb21wcmVzcyBkaXJlY3Rp b24uDQo+ID4gPiA+ID4gKyAgICAgICovDQo+ID4gPiA+DQo+ID4gPiA+IEFnYWluLCBiZWxpZXZl IHdlIGNhbiBnZXQgYXdheSB3aXRoIHRoaXMgYnkgbW92aW5nIHRvIGFwcGxpY2F0aW9uLg0KPiA+ ID4gPg0KPiA+ID4gPiBUaGFua3MNCj4gPiA+ID4gU2hhbGx5DQo+ID4gPiA+DQo+ID4gPiA+ID4g KyAgICAgIHVpbnQ2NF90IGlucHV0X2Noa3N1bTsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBBbiBp bnB1dCBjaGVja3N1bSBjYW4gYmUgcHJvdmlkZWQgdG8gZ2VuZXJhdGUgYQ0KPiA+ID4gPiA+ICsg ICAgICAqIGN1bXVsYXRpdmUgY2hlY2tzdW0gYWNyb3NzIHNlcXVlbnRpYWwgYmxvY2tzLg0KPiA+ ID4gPiA+ICsgICAgICAqIENoZWNrc3VtIHR5cGUgaXMgYXMgc3BlY2lmaWVkIGluIGNoa3N1bV90 eXBlIGluIHhmb3JtLg0KPiA+ID4gPiA+ICsgICAgICAqLw0KPiA+ID4gPiA+ICsgICAgICB1aW50 NjRfdCBvdXRwdXRfY2hrc3VtOw0KPiA+ID4gPiA+ICsgICAgICAvKio8IElmIGEgY2hlY2tzdW0g aXMgZ2VuZXJhdGVkIGl0IHdpbGwgYmUgd3JpdHRlbiBpbiBoZXJlLg0KPiA+ID4gPiA+ICsgICAg ICAqIENoZWNrc3VtIHR5cGUgaXMgYXMgc3BlY2lmaWVkIGluIGNoa3N1bV90eXBlIGluIHhmb3Jt Lg0KPiA+ID4gPiA+ICsgICAgICAqLw0KPiA+ID4gPiA+ICsgICAgICB1aW50MzJfdCBjb25zdW1l ZDsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBUaGUgbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHNv dXJjZSBidWZmZXINCj4gPiA+ID4gPiArICAgICAgKiB3aGljaCB3ZXJlIGNvbXByZXNzZWQvZGVj b21wcmVzc2VkLg0KPiA+ID4gPiA+ICsgICAgICAqLw0KPiA+ID4gPiA+ICsgICAgICB1aW50MzJf dCBwcm9kdWNlZDsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdy aXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcg0KPiA+ID4gPiA+ICsgICAgICAqIHdoaWNo IHdlcmUgY29tcHJlc3NlZC9kZWNvbXByZXNzZWQuDQo+ID4gPiA+ID4gKyAgICAgICovDQo+ID4g PiA+ID4gKyAgICAgIC8qDQo+ID4gPiA+ID4gKyAgICAgIFRPRE8gLSBBcmUgYW55IGV4dHJhIHBh cmFtcyBuZWVkZWQgb24gc3RhdGVmdWwgb3Agb3IgYXJlIGFsbCBpbg0KPiA+ID4geGZvcm0/DQo+ ID4gPiA+ID4gKyAgICAgIHJ0ZV9jb21wX29wX2NvbW1vbl9wYXJhbXMvX3N0YXRlZnVsX3BhcmFt cz8NCj4gPiA+ID4gPiArICAgICAgZXh0cmEgdmFsdWVzIGFwcGx5IHRvIGZsdXNoIGZsYWcNCj4g PiA+ID4gPiArICAgICAgKi8NCj4gPiA+ID4gPiArfTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsgaW50DQo+ID4gPiA+ID4gKyBydGVfY29tcGRldl9jb25maWd1cmUodWlu dDhfdCBkZXZfaWQsIHN0cnVjdA0KPiBydGVfY29tcGRldl9jb25maWcNCj4gPiA+ICpjb25maWcp Ow0KPiA+ID4gPiA+ICsgaW50DQo+ID4gPiA+ID4gKyBydGVfY29tcGRldl9zdGFydCh1aW50OF90 IGRldl9pZCk7DQo+ID4gPiA+ID4gKyB2b2lkDQo+ID4gPiA+ID4gKyBydGVfY29tcGRldl9zdG9w KHVpbnQ4X3QgZGV2X2lkKTsNCj4gPiA+ID4gPiAvKiBldGMuLi5SZXN0IG9mIEFQSXMgZm9sbG93 IHNhbWUgcGF0dGVybiwgc2ltaWxhciB0byBjcnlwdG9kZXYsDQo+IHN0cmlwcGVkDQo+ID4gPiBm cm9tIFJGQyBmb3Igc2ltcGxpY2l0eS4gKi8NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICsvKioNCj4g PiA+ID4gPiArICogQ29tcHJlc3Npb24gc3VwcG9ydGVkIGZlYXR1cmUgZmxhZ3MNCj4gPiA+ID4g PiArICoNCj4gPiA+ID4gPiArICogTm90ZToNCj4gPiA+ID4gPiArICogTmV3IGZlYXR1cmVzIGZs YWdzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0DQo+ID4gPiA+ID4gKyAq DQo+ID4gPiA+ID4gKyAqIEtlZXAgdGhlc2UgZmxhZ3Mgc3luY2hyb25pc2VkIHdpdGgNCj4gPiA+ IHJ0ZV9jb21wZGV2X2dldF9jb21wX2ZlYXR1cmVfbmFtZSgpDQo+ID4gPiA+ID4gKyAqIE5vdGU6 IGJpdCBudW1iZXJzIGhlcmUgYXJlIHNhbWUgYXMgb24gY3J5cHRvZGV2LCBoZW5jZSB0aGUNCj4g Z2Fwcy4NCj4gPiA+ID4gPiArICogVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgd2hp Y2ggbWF5IGNoYW5nZS4NCj4gPiA+ID4gPiArICovDQo+ID4gPiA+ID4gKyAjZGVmaW5lICAgICAg IFJURV9DT01QREVWX0ZGX0NQVV9TU0UgICAgICAgICAgKDFVTEwgPDwgMykNCj4gPiA+ID4gPiAr IC8qKjwgVXRpbGlzZXMgQ1BVIFNJTUQgU1NFIGluc3RydWN0aW9ucyAqLw0KPiA+ID4gPiA+ICsg I2RlZmluZSAgICAgICBSVEVfQ09NUERFVl9GRl9DUFVfQVZYICAgICAgICAgICgxVUxMIDw8IDQp DQo+ID4gPiA+ID4gKyAvKio8IFV0aWxpc2VzIENQVSBTSU1EIEFWWCBpbnN0cnVjdGlvbnMgKi8N Cj4gPiA+ID4gPiArICNkZWZpbmUgICAgICAgUlRFX0NPTVBERVZfRkZfQ1BVX0FWWDIgICAgICAg ICAoMVVMTCA8PCA1KQ0KPiA+ID4gPiA+ICsgLyoqPCBVdGlsaXNlcyBDUFUgU0lNRCBBVlgyIGlu c3RydWN0aW9ucyAqLw0KPiA+ID4gPiA+ICsgI2RlZmluZSAgICAgICBSVEVfQ09NUERFVl9GRl9I V19BQ0NFTEVSQVRFRCAgICAgICAgICAgKDFVTEwgPDwgNykNCj4gPiA+ID4gPiArIC8qKjwgT3Bl cmF0aW9ucyBhcmUgb2ZmLWxvYWRlZCB0byBhbiBleHRlcm5hbCBoYXJkd2FyZSBhY2NlbGVyYXRv cg0KPiAqLw0KPiA+ID4gPiA+ICsgI2RlZmluZSAgICAgICBSVEVfQ09NUERFVl9GRl9DUFVfQVZY NTEyICAgICAgICAgICAgICAgKDFVTEwgPDwgOCkNCj4gPiA+ID4gPiArIC8qKjwgVXRpbGlzZXMg Q1BVIFNJTUQgQVZYNTEyIGluc3RydWN0aW9ucyAqLw0KPiA+ID4gPiA+ICsgI2RlZmluZSAgICAg ICBSVEVfQ09NUERFVl9GRl9DUFVfTkVPTiAgICAgICAgICAgICAgICAgICAgICAgICgxVUxMIDw8 IDEwKQ0KPiA+ID4gPiA+ICsgLyoqPCBVdGlsaXNlcyBDUFUgTkVPTiBpbnN0cnVjdGlvbnMgKi8N Cj4gPiA+ID4gPiArICNkZWZpbmUgICAgICAgUlRFX0NPTVBERVZfRkZfQ1BVX0FSTV9DRSAgICAg ICAgICAgICAgICgxVUxMIDw8IDExKQ0KPiA+ID4gPiA+ICsgLyoqPCBVdGlsaXNlcyBBUk0gQ1BV IENyeXB0b2dyYXBoaWMgRXh0ZW5zaW9ucyAqLw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICNk ZWZpbmUgICAgIFJURV9DT01QX0ZGX01CVUZfU0NBVFRFUl9HQVRIRVIgICAgICAgICAgICAgICAg ICAgICgxVUxMDQo+IDw8DQo+ID4gPiAxMikNCj4gPiA+ID4gPiArIC8qKjwgU2NhdHRlci1nYXRo ZXIgbWJ1ZnMgYXJlIHN1cHBvcnRlZCAqLw0KPiA+ID4gPiA+ICsgI2RlZmluZSAgICAgUlRFX0NP TVBfRkZfU1RBVEVGVUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKDFVTEwNCj4gPDwNCj4gPiA+IDEzKQ0KPiA+ID4gPiA+ICsgLyoqPCBTdGF0ZWZ1bCBj b21wcmVzc2lvbiBpcyBzdXBwb3J0ZWQgKi8NCj4gPiA+ID4gPiArICNkZWZpbmUgICAgIFJURV9D T01QREVWX0ZGX01VTFRJX1BLVF9DSEVDS1NVTSAgICAgICAgICAgICAgICgxVUxMDQo+IDw8DQo+ ID4gPiAxNCkNCj4gPiA+ID4gPiArIC8qKjwgR2VuZXJhdGlvbiBvZiBjaGVja3N1bSBhY3Jvc3Mg bXVsdGlwbGUgcGFja2V0cyBpcyBzdXBwb3J0ZWQNCj4gKi8NCj4gPiA+ID4gPiArDQo+ID4NCj4g PiBbU2hhbGx5XSBXaGF0IGlzIG1lYW5pbmcgb2YgdGhpcyBmZWF0dXJlPyBob3cgaXQgaXMgc3Vw cG9zZWQgdG8gaW1wYWN0IGJ1cnN0DQo+IG9wZXJhdGlvbnMuDQo+IFtGaW9uYV0gSXQncyBiZXR0 ZXIgdG8gZXhwbGFpbiB0aGF0IHdoZW4gSSByZXBseSB0byB0aGUgZGV0YWlscyByZQ0KPiBzdGF0 ZWZ1bC9zdGF0ZWxlc3MgaW4gdGhlIGRvYyB5b3UndmUgc2VudC4NCj4gDQpbU2hhbGx5XSBPay4N Cg0KPiANCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKiogIENvbXByZXNz aW9uIGRldmljZSBpbmZvcm1hdGlvbiAqLw0KPiA+ID4gPiA+ICtzdHJ1Y3QgcnRlX2NvbXBkZXZf aW5mbyB7DQo+ID4gPiA+ID4gKyAgICAgIGNvbnN0IGNoYXIgKmRyaXZlcl9uYW1lOyAgLyoqPCBE cml2ZXIgbmFtZS4gKi8NCj4gPiA+ID4gPiArICAgICAgdWludDhfdCBkcml2ZXJfaWQ7ICAgICAg ICAgICAgICAgLyoqPCBEcml2ZXIgaWRlbnRpZmllciAqLw0KPiA+ID4gPiA+ICsgICAgICBzdHJ1 Y3QgcnRlX2RldmljZSAqZGV2OyAgICAgICAgICAvKio8IERldmljZSBpbmZvcm1hdGlvbi4gKi8N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgIHVpbnQ2NF90IGZlYXR1cmVfZmxhZ3M7DQo+ ID4gPiA+ID4gKyAgICAgIC8qKjwgZGV2aWNlIGZlYXR1cmUgZmxhZ3MgKi8NCj4gPiA+ID4gPiAr ICAgICBjb25zdCBzdHJ1Y3QgcnRlX2NvbXBfY2FwYWJpbGl0aWVzICpjYXBhYmlsaXRpZXM7DQo+ ID4gPiA+ID4gKyAgICAgIC8qKjwgQXJyYXkgb2YgZGV2aWNlcyBjYXBhYmlsaXRpZXMgKi8NCj4g PiA+ID4gPg0KPiA+ID4gPiA+ICsgICAgICB1bnNpZ25lZCBtYXhfbmJfcXVldWVfcGFpcnM7DQo+ ID4gPiA+ID4gKyAgICAgIC8qKjwgTWF4aW11bSBudW1iZXIgb2YgcXVldWVzIHBhaXJzIHN1cHBv cnRlZCBieSBkZXZpY2UuICovDQo+ID4gPiA+ID4gKyAgICAgIHVuc2lnbmVkIG1heF9uYl9zZXNz aW9uczsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBNYXhpbXVtIG51bWJlciBvZiBzZXNzaW9ucyBz dXBwb3J0ZWQgYnkgZGV2aWNlLiAqLw0KPiA+ID4gPiA+ICsgICAgICB1bnNpZ25lZCBpbnQgbWF4 X25iX3Nlc3Npb25zX3Blcl9xcDsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBNYXhpbXVtIG51bWJl ciBvZiBzZXNzaW9ucyBwZXIgcXVldWUgcGFpci4NCj4gPiA+ID4gPiArICAgICAgKiBEZWZhdWx0 IDAgZm9yIGluZmluaXRlIHNlc3Npb25zDQo+ID4gPiA+ID4gKyAgICAgICovDQo+ID4gPiA+ID4g KyAgICAgIC8qIFRPRE8gdWludDhfdCBuZWVkc19pbnRlcm1lZGlhdGVfYnVmZmVyIE9SIHNob3Vs ZCB0aGlzIGJlIGENCj4gPiA+IGZlYXR1cmUgZmxhZz8gT3Igbm90IG5lY2Vzc2FyeT8NCj4gPiA+ ID4gKi8NCj4gPiA+ID4gPiArfTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ICsvKiogQ29tcHJlc3Npb24gZGV2aWNlIHN0YXRpc3RpY3MgKi8NCj4gPiA+ID4gPiArc3RydWN0 IHJ0ZV9jb21wZGV2X3N0YXRzIHsNCj4gPiA+ID4gPiArICAgICAgdWludDY0X3QgZW5xdWV1ZWRf Y291bnQ7DQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgQ291bnQgb2YgYWxsIG9wZXJhdGlvbnMgZW5x dWV1ZWQgKi8NCj4gPiA+ID4gPiArICAgICAgdWludDY0X3QgZGVxdWV1ZWRfY291bnQ7DQo+ID4g PiA+ID4gKyAgICAgIC8qKjwgQ291bnQgb2YgYWxsIG9wZXJhdGlvbnMgZGVxdWV1ZWQgKi8NCj4g PiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgIHVpbnQ2NF90IGVucXVldWVfZXJyX2NvdW50Ow0K PiA+ID4gPiA+ICsgICAgICAvKio8IFRvdGFsIGVycm9yIGNvdW50IG9uIG9wZXJhdGlvbnMgZW5x dWV1ZWQgKi8NCj4gPiA+ID4gPiArICAgICAgdWludDY0X3QgZGVxdWV1ZV9lcnJfY291bnQ7DQo+ ID4gPiA+ID4gKyAgICAgIC8qKjwgVG90YWwgZXJyb3IgY291bnQgb24gb3BlcmF0aW9ucyBkZXF1 ZXVlZCAqLw0KPiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gKy8qKiBDb21wcmVzc2lvbiBkZXZpY2UgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgKi8NCj4g PiA+ID4gPiArc3RydWN0IHJ0ZV9jb21wZGV2X2NvbmZpZyB7DQo+ID4gPiA+ID4gKyAgICAgIGlu dCBzb2NrZXRfaWQ7DQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgU29ja2V0IHRvIGFsbG9jYXRlIHJl c291cmNlcyBvbiAqLw0KPiA+ID4gPiA+ICsgICAgICB1aW50MTZfdCBuYl9xdWV1ZV9wYWlyczsN Cj4gPiA+ID4gPiArICAgICAgLyoqPCBUb3RhbCBudW1iZXIgb2YgcXVldWUgcGFpcnMgdG8gY29u ZmlndXJlIG9uIGEgZGV2aWNlLiAqLw0KPiA+ID4gPiA+ICsgICAgICB1aW50MzJfdCBjb21wX2lu dGVybWVkaWF0ZV9idWZfc2l6ZTsNCj4gPiA+ID4gPiArICAgICAvKio8IEZvciBkZWZsYXRlIGFs Z29yaXRobSBIVyBhY2NlbGVyYXRvcnMgdXN1YWxseSBuZWVkIHRvDQo+IGFsbG9jYXRlDQo+ID4g PiA+ID4gKyAgICAgICogYSBwb29sIG9mIGludGVybWVkaWF0ZSBidWZmZXJzIGZvciBkeW5hbWlj IGNvbXByZXNzaW9uLg0KPiA+DQo+ID4gW1NoYWxseV0gRG8geW91IG1lYW4gRHluYW1pYyBIdWZm bWFuIGNvZGluZyBiYXNlZCBjb21wcmVzc2lvbj8NCj4gW0Zpb25hXSBZZXMuIEknbGwgdXBkYXRl IHRoZSBjb21tZW50Lg0KPiANCltTaGFsbHldIFRoZW4gdGhpcyBicmluZ3MgYSBxdWVzdGlvbi4g UGxlYXNlIHNlZSBteSBuZXh0IHJlc3BvbnNlLg0KDQo+ID4NCj4gPiA+ID4gPiArICAgICAgKiBU aGlzIGluZGljYXRlcyB0aGUgYnVmZmVyIHNpemUgYW5kIHNob3VsZCBiZQ0KPiA+ID4gPiA+ICsg ICAgICAqIHNldCBhIGxpdHRsZSBsYXJnZXIgdGhhbiB0aGUgZXhwZWN0ZWQgbWF4IHNvdXJjZSBi dWZmZXIgc2l6ZS4NCj4gPiA+ID4gPiArICAgICAgKiBpZiB0aGUgb3V0cHV0IG9mIHN0YXRpYyBj b21wcmVzc2lvbiBkb2Vzbid0IGZpdCBpbiB0aGUNCj4gPiA+ID4gPiArICAgICAgKiBpbnRlcm1l ZGlhdGUgYnVmZmVyIGR5bmFtaWMgY29tcHJlc3Npb24gbWF5IG5vdCBiZSBwb3NzaWJsZSwNCj4g PiA+ID4gPiArICAgICAgKiBpbiB0aGlzIGNhc2UgdGhlIGFjY2VsZXJhdG9yIG1heSByZXZlcnQg YmFjayB0byBzdGF0aWMNCj4gY29tcHJlc3Npb24uDQpbU2hhbGx5XSA+ID4gPiA+ICsgICAgICAq IGluIHRoaXMgY2FzZSB0aGUgYWNjZWxlcmF0b3IgbWF5IHJldmVydCBiYWNrIHRvIHN0YXRpYyBj b21wcmVzc2lvbi4+ID4gPiA+ID4gKyAgICAgICovDQpDYW4geW91IGVsYWJvcmF0ZSBtb3JlIG9u IHRoaXM/IFRoaXMgbG9va3MgdG8gbWUgYXMgZGVjaXNpb24gbWFkZSBkdXJpbmcgZW5xdWV1ZV9i dXJzdCgpIHByb2Nlc3NpbmcuIA0KSWYgeWVzIGFuZCBJZiBhcHBsaWNhdGlvbiBoYXMgY2hvc2Vu IHNwZWNpZmljIEh1ZmZtYW4gY29kZSBpLmUuIFJURV9DT01QX0RZTkFNSUMgb3IgUlRFX0NPTVBf RklYRUQgaW4gcnRlX2NvbXBfY29tcHJlc3NfeGZvcm0sIHRoZW4gaG93IHRoaXMgd291bGQgd29y az8NCg0KPiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g Ky8qKiBDb21wcmVzc2lvbiBkZXZpY2UgcXVldWUgcGFpciBjb25maWd1cmF0aW9uIHN0cnVjdHVy ZS4gKi8NCj4gPiA+ID4gPiArc3RydWN0IHJ0ZV9jb21wZGV2X3FwX2NvbmYgew0KPiA+ID4gPiA+ ICsgICAgICB1aW50MzJfdCBuYl9kZXNjcmlwdG9yczsgLyoqPCBOdW1iZXIgb2YgZGVzY3JpcHRv cnMgcGVyIHF1ZXVlDQo+IHBhaXINCj4gPiA+ICovDQo+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsNCj4gPg0KPiA+IFtTaGFsbHldIFN1YnNlcXVlbnQgQVBJcyBhbmQgcGFy dCBvZiBhYm92ZSBoYXMgcmVmZXJlbmNlIHRvIGNyeXB0b2RldiBhbmQNCj4gSSBoYXZlIHNvbWUg cXVlc3Rpb24gb24NCj4gPiB0aGVpciBvbmUtdG8tb25lIG1hcHBpbmcuIEkgd291bGQgbm90IGxp c3QgdGhlbSByaWdodCBub3cuIFdpbGwgdGFrZSB1cA0KPiBvbmNlIHdlIGZyZWV6ZSBmZWVkYmFj a3Mgb24NCj4gPiBjdXJyZW50IFJGQyB2ZXJzaW9uIHNvIHRoYXQgd2UgY2FuIGhhdmUgZm9jdXNl ZCBkaXNjdXNzaW9uIGFyb3VuZCByZXN0Lg0KPiA+DQo+ID4gVGhhbmtzDQo+ID4gU2hhbGx5DQo+ ID4NCj4gW0Zpb25hXSBvay4gSSdtIGRpZ2VzdGluZyB5b3VyIGRvYyBSRkMsIHNvbWUgdmVyeSB1 c2VmdWwgaW5wdXQgdGhlcmUsIHRoYW5rcy4NCj4gV2lsbCBnZXQgYmFjayB0byB5b3UgbmV4dA0K PiB3ZWVrIHdpdGggY29tbWVudHMuDQoNCltTaGFsbHldIFN1cmUuIFNvIGp1c3QgdG8gYWxpZ24g aGVyZS4gRXhjZXB0IGZldyBxdWVzdGlvbnMgcG9zdGVkIGFib3ZlIG9uIHRoaXMgUkZDIChzdWNo IGFzIER5bmFtaWMgVnMgU3RhdGljIG9yIGRzdCBtYnVmIHBhcnNpbmcpLCBmb2xsb3dpbmcgKGFu ZCBhbnkgb3RoZXIpIHdpbGwgZnVydGhlciBiZSBjb3ZlcmVkIGFzIHBhcnQgb2YgJ1JGQyBkb2Mn IGRpc2N1c3Npb24NCi0gSGFzaCBzdXBwb3J0IA0KLSBSVEVfQ09NUERFVl9GRl9NVUxUSV9QS1Rf Q0hFQ0tTVU0NCg0KVGhhbmtzDQpTaGFsbHkNCg0KPiANCj4gPiA+ID4gPiArdHlwZWRlZiB1aW50 MTZfdCAoKmRlcXVldWVfcGt0X2J1cnN0X3QpKHZvaWQgKnFwLA0KPiA+ID4gPiA+ICsgICAgICAg ICAgICBzdHJ1Y3QgcnRlX2NvbXBfb3AgKipvcHMsIHVpbnQxNl90IG5iX29wcyk7DQo+ID4gPiA+ ID4gKy8qKjwgRGVxdWV1ZSBwcm9jZXNzZWQgcGFja2V0cyBmcm9tIHF1ZXVlIHBhaXIgb2YgYSBk ZXZpY2UuICovDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICt0eXBlZGVmIHVpbnQxNl90ICgqZW5x dWV1ZV9wa3RfYnVyc3RfdCkodm9pZCAqcXAsDQo+ID4gPiA+ID4gKyAgICAgICAgICAgIHN0cnVj dCBydGVfY29tcF9vcCAqKm9wcywgdWludDE2X3QgbmJfb3BzKTsNCj4gPiA+ID4gPiArLyoqPCBF bnF1ZXVlIHBhY2tldHMgZm9yIHByb2Nlc3Npbmcgb24gcXVldWUgcGFpciBvZiBhIGRldmljZS4g Ki8NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoq IFRoZSBkYXRhIHN0cnVjdHVyZSBhc3NvY2lhdGVkIHdpdGggZWFjaCBjb21wcmVzc2lvbiBkZXZp Y2UuICovDQo+ID4gPiA+ID4gK3N0cnVjdCBydGVfY29tcGRldiB7DQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsgICAgICBkZXF1ZXVlX3BrdF9idXJzdF90IGRlcXVldWVfYnVyc3Q7DQo+ID4gPiA+ ID4gKyAgICAgIC8qKjwgUG9pbnRlciB0byBQTUQgcmVjZWl2ZSBmdW5jdGlvbi4gKi8NCj4gPiA+ ID4gPiArICAgICAgZW5xdWV1ZV9wa3RfYnVyc3RfdCBlbnF1ZXVlX2J1cnN0Ow0KPiA+ID4gPiA+ ICsgICAgICAvKio8IFBvaW50ZXIgdG8gUE1EIHRyYW5zbWl0IGZ1bmN0aW9uLiAqLw0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArICAgICAgc3RydWN0IHJ0ZV9jb21wZGV2X2RhdGEgKmRhdGE7DQo+ ID4gPiA+ID4gKyAgICAgIC8qKjwgUG9pbnRlciB0byBkZXZpY2UgZGF0YSAqLw0KPiA+ID4gPiA+ ICsgICAgICBzdHJ1Y3QgcnRlX2NvbXBkZXZfb3BzICpkZXZfb3BzOw0KPiA+ID4gPiA+ICsgICAg ICAvKio8IEZ1bmN0aW9ucyBleHBvcnRlZCBieSBQTUQgKi8NCj4gPiA+ID4gPiArICAgICAgdWlu dDY0X3QgZmVhdHVyZV9mbGFnczsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBTdXBwb3J0ZWQgZmVh dHVyZXMgKi8NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgc3RydWN0IHJ0ZV9kZXZpY2Ug KmRldmljZTsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBCYWNraW5nIGRldmljZSAqLw0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArICAgICAgdWludDhfdCBkcml2ZXJfaWQ7DQo+ID4gPiA+ID4gKyAg ICAgIC8qKjwgZHJpdmVyIGlkZW50aWZpZXIqLw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAg ICAgdWludDhfdCBhdHRhY2hlZCA6IDE7DQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgRmxhZyBpbmRp Y2F0aW5nIHRoZSBkZXZpY2UgaXMgYXR0YWNoZWQgKi8NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g K30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ICsgKg0KPiA+ID4gPiA+ ICsgKiBUaGUgZGF0YSBwYXJ0LCB3aXRoIG5vIGZ1bmN0aW9uIHBvaW50ZXJzLCBhc3NvY2lhdGVk IHdpdGggZWFjaA0KPiBkZXZpY2UuDQo+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ID4gKyAqIFRoaXMg c3RydWN0dXJlIGlzIHNhZmUgdG8gcGxhY2UgaW4gc2hhcmVkIG1lbW9yeSB0byBiZSBjb21tb24N Cj4gYW1vbmcNCj4gPiA+ID4gPiArICogZGlmZmVyZW50IHByb2Nlc3NlcyBpbiBhIG11bHRpLXBy b2Nlc3MgY29uZmlndXJhdGlvbi4NCj4gPiA+ID4gPiArICovDQo+ID4gPiA+ID4gK3N0cnVjdCBy dGVfY29tcGRldl9kYXRhIHsNCj4gPiA+ID4gPiArICAgICAgdWludDhfdCBkZXZfaWQ7DQo+ID4g PiA+ID4gKyAgICAgIC8qKjwgRGV2aWNlIElEIGZvciB0aGlzIGluc3RhbmNlICovDQo+ID4gPiA+ ID4gKyAgICAgIHVpbnQ4X3Qgc29ja2V0X2lkOw0KPiA+ID4gPiA+ICsgICAgICAvKio8IFNvY2tl dCBJRCB3aGVyZSBtZW1vcnkgaXMgYWxsb2NhdGVkICovDQo+ID4gPiA+ID4gKyAgICAgIGNoYXIg bmFtZVtSVEVfQ09NUERFVl9OQU1FX01BWF9MRU5dOw0KPiA+ID4gPiA+ICsgICAgICAvKio8IFVu aXF1ZSBpZGVudGlmaWVyIG5hbWUgKi8NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgIHVp bnQ4X3QgZGV2X3N0YXJ0ZWQgOiAxOw0KPiA+ID4gPiA+ICsgICAgICAvKio8IERldmljZSBzdGF0 ZTogU1RBUlRFRCgxKS9TVE9QUEVEKDApICovDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAg ICB2b2lkICoqcXVldWVfcGFpcnM7DQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgQXJyYXkgb2YgcG9p bnRlcnMgdG8gcXVldWUgcGFpcnMuICovDQo+ID4gPiA+ID4gKyAgICAgIHVpbnQxNl90IG5iX3F1 ZXVlX3BhaXJzOw0KPiA+ID4gPiA+ICsgICAgICAvKio8IE51bWJlciBvZiBkZXZpY2UgcXVldWUg cGFpcnMuICovDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgICAgICB2b2lkICpkZXZfcHJpdmF0 ZTsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBQTUQtc3BlY2lmaWMgcHJpdmF0ZSBkYXRhICovDQo+ ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKioNCj4g PiA+ID4gPiArICoNCj4gPiA+ID4gPiArICogRGVxdWV1ZSBhIGJ1cnN0IG9mIHByb2Nlc3NlZCBj b21wcmVzc2lvbiBvcGVyYXRpb25zIGZyb20gYQ0KPiBxdWV1ZQ0KPiA+ID4gb24gdGhlDQo+ID4g PiA+ID4gKyAqIGRldmljZS4gVGhlIGRlcXVldWVkIG9wZXJhdGlvbiBhcmUgc3RvcmVkIGluICpy dGVfY29tcF9vcCoNCj4gPiA+IHN0cnVjdHVyZXMNCj4gPiA+ID4gPiArICogd2hvc2UgcG9pbnRl cnMgYXJlIHN1cHBsaWVkIGluIHRoZSAqb3BzKiBhcnJheS4NCj4gPiA+ID4gPiArICoNCj4gPiA+ ID4gPiArICogVGhlIHJ0ZV9jb21wZGV2X2RlcXVldWVfYnVyc3QoKSBmdW5jdGlvbiByZXR1cm5z IHRoZSBudW1iZXINCj4gb2YNCj4gPiA+IG9wcw0KPiA+ID4gPiA+ICsgKiBhY3R1YWxseSBkZXF1 ZXVlZCwgd2hpY2ggaXMgdGhlIG51bWJlciBvZiAqcnRlX2NvbXBfb3AqIGRhdGENCj4gPiA+IHN0 cnVjdHVyZXMNCj4gPiA+ID4gPiArICogZWZmZWN0aXZlbHkgc3VwcGxpZWQgaW50byB0aGUgKm9w cyogYXJyYXkuDQo+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ID4gKyAqIEEgcmV0dXJuIHZhbHVlIGVx dWFsIHRvICpuYl9vcHMqIGluZGljYXRlcyB0aGF0IHRoZSBxdWV1ZQ0KPiBjb250YWluZWQNCj4g PiA+ID4gPiArICogYXQgbGVhc3QgKm5iX29wcyogb3BlcmF0aW9ucywgYW5kIHRoaXMgaXMgbGlr ZWx5IHRvIHNpZ25pZnkgdGhhdCBvdGhlcg0KPiA+ID4gPiA+ICsgKiBwcm9jZXNzZWQgb3BlcmF0 aW9ucyByZW1haW4gaW4gdGhlIGRldmljZXMgb3V0cHV0IHF1ZXVlLg0KPiA+ID4gQXBwbGljYXRp b25zDQo+ID4gPiA+ID4gKyAqIGltcGxlbWVudGluZyBhICJyZXRyaWV2ZSBhcyBtYW55IHByb2Nl c3NlZCBvcGVyYXRpb25zIGFzDQo+IHBvc3NpYmxlIg0KPiA+ID4gcG9saWN5DQo+ID4gPiA+ID4g KyAqIGNhbiBjaGVjayB0aGlzIHNwZWNpZmljIGNhc2UgYW5kIGtlZXAgaW52b2tpbmcgdGhlDQo+ ID4gPiA+ID4gKyAqIHJ0ZV9jb21wZGV2X2RlcXVldWVfYnVyc3QoKSBmdW5jdGlvbiB1bnRpbCBh IHZhbHVlIGxlc3MgdGhhbg0KPiA+ID4gPiA+ICsgKiAqbmJfb3BzKiBpcyByZXR1cm5lZC4NCj4g PiA+ID4gPiArICoNCj4gPiA+ID4gPiArICogVGhlIHJ0ZV9jb21wZGV2X2RlcXVldWVfYnVyc3Qo KSBmdW5jdGlvbiBkb2VzIG5vdCBwcm92aWRlDQo+IGFueQ0KPiA+ID4gZXJyb3INCj4gPiA+ID4g PiArICogbm90aWZpY2F0aW9uIHRvIGF2b2lkIHRoZSBjb3JyZXNwb25kaW5nIG92ZXJoZWFkLg0K PiA+ID4gPiA+ICsgKg0KPiA+ID4gPiA+ICsgKiBAcGFyYW0gICBkZXZfaWQgICAgICAgVGhlIGNv bXByZXNzaW9uIGRldmljZSBpZGVudGlmaWVyDQo+ID4gPiA+ID4gKyAqIEBwYXJhbSAgIHFwX2lk ICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHF1ZXVlIHBhaXIgZnJvbSB3aGljaCB0bw0KPiA+ID4g PiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgcmV0cmlldmUgcHJvY2Vzc2VkIHBhY2tldHMu IFRoZSB2YWx1ZSBtdXN0IGJlDQo+ID4gPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICBp biB0aGUgcmFuZ2UgWzAsIG5iX3F1ZXVlX3BhaXIgLSAxXSBwcmV2aW91c2x5DQo+ID4gPiA+ID4g KyAqICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGllZCB0byBydGVfY29tcGRldl9jb25maWd1 cmUoKS4NCj4gPiA+ID4gPiArICogQHBhcmFtICAgb3BzICAgICAgICAgIFRoZSBhZGRyZXNzIG9m IGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvDQo+ID4gPiA+ID4gKyAqICAgICAgICAgICAgICAgICAg ICAgICAqcnRlX2NvbXBfb3AqIHN0cnVjdHVyZXMgdGhhdCBtdXN0IGJlDQo+ID4gPiA+ID4gKyAq ICAgICAgICAgICAgICAgICAgICAgICBsYXJnZSBlbm91Z2ggdG8gc3RvcmUgKm5iX29wcyogcG9p bnRlcnMgaW4gaXQuDQo+ID4gPiA+ID4gKyAqIEBwYXJhbSAgIG5iX29wcyAgICAgICBUaGUgbWF4 aW11bSBudW1iZXIgb2Ygb3BlcmF0aW9ucyB0bw0KPiA+ID4gZGVxdWV1ZS4NCj4gPiA+ID4gPiAr ICoNCj4gPiA+ID4gPiArICogQHJldHVybg0KPiA+ID4gPiA+ICsgKiAgIC0gVGhlIG51bWJlciBv ZiBvcGVyYXRpb25zIGFjdHVhbGx5IGRlcXVldWVkLCB3aGljaCBpcyB0aGUNCj4gbnVtYmVyDQo+ ID4gPiA+ID4gKyAqICAgb2YgcG9pbnRlcnMgdG8gKnJ0ZV9jb21wX29wKiBzdHJ1Y3R1cmVzIGVm ZmVjdGl2ZWx5IHN1cHBsaWVkIHRvDQo+IHRoZQ0KPiA+ID4gPiA+ICsgKiAgICpvcHMqIGFycmF5 Lg0KPiA+ID4gPiA+ICsgKi8NCj4gPiA+ID4gPiArc3RhdGljIGlubGluZSB1aW50MTZfdA0KPiA+ ID4gPiA+ICtydGVfY29tcGRldl9kZXF1ZXVlX2J1cnN0KHVpbnQ4X3QgZGV2X2lkLCB1aW50MTZf dCBxcF9pZCwNCj4gPiA+ID4gPiArICAgICAgICAgICAgc3RydWN0IHJ0ZV9jb21wX29wICoqb3Bz LCB1aW50MTZfdCBuYl9vcHMpDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICAgICAgc3RydWN0 IHJ0ZV9jb21wZGV2ICpkZXYgPSAmcnRlX2NvbXBkZXZzW2Rldl9pZF07DQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsgICAgICBuYl9vcHMgPSAoKmRldi0+ZGVxdWV1ZV9idXJzdCkNCj4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgIChkZXYtPmRhdGEtPnF1ZXVlX3BhaXJzW3FwX2lkXSwgb3Bz LCBuYl9vcHMpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgcmV0dXJuIG5iX29wczsN Cj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAq IEVucXVldWUgYSBidXJzdCBvZiBvcGVyYXRpb25zIGZvciBwcm9jZXNzaW5nIG9uIGEgY29tcHJl c3Npb24NCj4gPiA+IGRldmljZS4NCj4gPiA+ID4gPiArICoNCj4gPiA+ID4gPiArICogVGhlIHJ0 ZV9jb21wZGV2X2VucXVldWVfYnVyc3QoKSBmdW5jdGlvbiBpcyBpbnZva2VkIHRvIHBsYWNlDQo+ ID4gPiA+ID4gKyAqIGNvbXAgb3BlcmF0aW9ucyBvbiB0aGUgcXVldWUgKnFwX2lkKiBvZiB0aGUg ZGV2aWNlIGRlc2lnbmF0ZWQNCj4gYnkNCj4gPiA+ID4gPiArICogaXRzICpkZXZfaWQqLg0KPiA+ ID4gPiA+ICsgKg0KPiA+ID4gPiA+ICsgKiBUaGUgKm5iX29wcyogcGFyYW1ldGVyIGlzIHRoZSBu dW1iZXIgb2Ygb3BlcmF0aW9ucyB0byBwcm9jZXNzDQo+ID4gPiB3aGljaCBhcmUNCj4gPiA+ID4g PiArICogc3VwcGxpZWQgaW4gdGhlICpvcHMqIGFycmF5IG9mICpydGVfY29tcF9vcCogc3RydWN0 dXJlcy4NCj4gPiA+ID4gPiArICoNCj4gPiA+ID4gPiArICogVGhlIHJ0ZV9jb21wZGV2X2VucXVl dWVfYnVyc3QoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXINCj4gb2YNCj4gPiA+ID4gPiAr ICogb3BlcmF0aW9ucyBpdCBhY3R1YWxseSBlbnF1ZXVlZCBmb3IgcHJvY2Vzc2luZy4gQSByZXR1 cm4gdmFsdWUNCj4gZXF1YWwNCj4gPiA+IHRvDQo+ID4gPiA+ID4gKyAqICpuYl9vcHMqIG1lYW5z IHRoYXQgYWxsIHBhY2tldHMgaGF2ZSBiZWVuIGVucXVldWVkLg0KPiA+ID4gPiA+ICsgKg0KPiA+ ID4gPiA+ICsgKiBAcGFyYW0gICBkZXZfaWQgICAgICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRl dmljZS4NCj4gPiA+ID4gPiArICogQHBhcmFtICAgcXBfaWQgICAgICAgIFRoZSBpbmRleCBvZiB0 aGUgcXVldWUgcGFpciB3aGljaCBwYWNrZXRzIGFyZQ0KPiA+ID4gPiA+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgdG8gYmUgZW5xdWV1ZWQgZm9yIHByb2Nlc3NpbmcuIFRoZSB2YWx1ZQ0KPiA+ ID4gPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWzAs IG5iX3F1ZXVlX3BhaXJzIC0gMV0NCj4gPiA+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAg IHByZXZpb3VzbHkgc3VwcGxpZWQgdG8NCj4gPiA+ID4gPiArICogICAgICAgICAgICAgICAgICAg ICAgICpydGVfY29tcGRldl9jb25maWd1cmUqLg0KPiA+ID4gPiA+ICsgKiBAcGFyYW0gICBvcHMg ICAgICAgICAgVGhlIGFkZHJlc3Mgb2YgYW4gYXJyYXkgb2YgKm5iX29wcyogcG9pbnRlcnMNCj4g PiA+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgIHRvICpydGVfY29tcF9vcCogc3RydWN0 dXJlcyB3aGljaCBjb250YWluDQo+ID4gPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICB0 aGUgb3BlcmF0aW9ucyB0byBiZSBwcm9jZXNzZWQuDQo+ID4gPiA+ID4gKyAqIEBwYXJhbSAgIG5i X29wcyAgICAgICBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgdG8gcHJvY2Vzcy4NCj4gPiA+ID4g PiArICoNCj4gPiA+ID4gPiArICogQHJldHVybg0KPiA+ID4gPiA+ICsgKiBUaGUgbnVtYmVyIG9m IG9wZXJhdGlvbnMgYWN0dWFsbHkgZW5xdWV1ZWQgb24gdGhlIGRldmljZS4gVGhlDQo+ID4gPiBy ZXR1cm4NCj4gPiA+ID4gPiArICogdmFsdWUgY2FuIGJlIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2Yg dGhlICpuYl9vcHMqIHBhcmFtZXRlciB3aGVuDQo+ID4gPiB0aGUNCj4gPiA+ID4gPiArICogZGV2 aWNlJ3MgcXVldWUgaXMgZnVsbCBvciBpZiBpbnZhbGlkIHBhcmFtZXRlcnMgYXJlIHNwZWNpZmll ZCBpbg0KPiA+ID4gPiA+ICsgKiBhICpydGVfY29tcF9vcCouDQo+ID4gPiA+ID4gKyAqLw0KPiA+ ID4gPiA+ICtzdGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ID4gPiA+ID4gK3J0ZV9jb21wZGV2X2Vu cXVldWVfYnVyc3QodWludDhfdCBkZXZfaWQsIHVpbnQxNl90IHFwX2lkLA0KPiA+ID4gPiA+ICsg ICAgICAgICAgICBzdHJ1Y3QgcnRlX2NvbXBfb3AgKipvcHMsIHVpbnQxNl90IG5iX29wcykNCj4g PiA+ID4gPiArew0KPiA+ID4gPiA+ICsgICAgICBzdHJ1Y3QgcnRlX2NvbXBkZXYgKmRldiA9ICZy dGVfY3J5cHRvZGV2c1tkZXZfaWRdOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgcmV0 dXJuICgqZGV2LT5lbnF1ZXVlX2J1cnN0KSgNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg IGRldi0+ZGF0YS0+cXVldWVfcGFpcnNbcXBfaWRdLCBvcHMsIG5iX29wcyk7DQo+ID4gPiA+ID4g K30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAvKiBBbGwgc2Vzc2lvbiBBUElz IHN0cmlwcGVkIGZyb20gUkZDIGZvciBzaW1wbGljaXR5LiAqLw0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gKy8qKiBjb21wcmVzc2lvbiBkZXZpY2Ugb3BlcmF0aW9ucyBmdW5jdGlvbiBwb2ludGVyIHRh YmxlICovDQo+ID4gPiA+ID4gK3N0cnVjdCBydGVfY29tcGRldl9vcHMgew0KPiA+ID4gPiA+ICsg ICAgICBjb21wZGV2X2NvbmZpZ3VyZV90IGRldl9jb25maWd1cmU7ICAgIC8qKjwgQ29uZmlndXJl IGRldmljZS4NCj4gKi8NCj4gPiA+ID4gPiArICAgICAgY29tcGRldl9zdGFydF90IGRldl9zdGFy dDsgICAgICAgICAgICAvKio8IFN0YXJ0IGRldmljZS4gKi8NCj4gPiA+ID4gPiArICAgICAgY29t cGRldl9zdG9wX3QgZGV2X3N0b3A7ICAgICAgICAvKio8IFN0b3AgZGV2aWNlLiAqLw0KPiA+ID4g PiA+ICsgICAgICBjb21wZGV2X2Nsb3NlX3QgZGV2X2Nsb3NlOyAgICAgICAgICAgIC8qKjwgQ2xv c2UgZGV2aWNlLiAqLw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgY29tcGRldl9pbmZv X2dldF90IGRldl9pbmZvc19nZXQ7ICAgICAvKio8IEdldCBkZXZpY2UgaW5mby4gKi8NCj4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgIGNvbXBkZXZfc3RhdHNfZ2V0X3Qgc3RhdHNfZ2V0Ow0K PiA+ID4gPiA+ICsgICAgICAvKio8IEdldCBkZXZpY2Ugc3RhdGlzdGljcy4gKi8NCj4gPiA+ID4g PiArICAgICAgY29tcGRldl9zdGF0c19yZXNldF90IHN0YXRzX3Jlc2V0Ow0KPiA+ID4gPiA+ICsg ICAgICAvKio8IFJlc2V0IGRldmljZSBzdGF0aXN0aWNzLiAqLw0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArICAgICAgY29tcGRldl9xdWV1ZV9wYWlyX3NldHVwX3QgcXVldWVfcGFpcl9zZXR1cDsN Cj4gPiA+ID4gPiArICAgICAgLyoqPCBTZXQgdXAgYSBkZXZpY2UgcXVldWUgcGFpci4gKi8NCj4g PiA+ID4gPiArICAgICAgY29tcGRldl9xdWV1ZV9wYWlyX3JlbGVhc2VfdCBxdWV1ZV9wYWlyX3Jl bGVhc2U7DQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgUmVsZWFzZSBhIHF1ZXVlIHBhaXIuICovDQo+ ID4gPiA+ID4gKyAgICAgIGNvbXBkZXZfcXVldWVfcGFpcl9zdGFydF90IHF1ZXVlX3BhaXJfc3Rh cnQ7DQo+ID4gPiA+ID4gKyAgICAgIC8qKjwgU3RhcnQgYSBxdWV1ZSBwYWlyLiAqLw0KPiA+ID4g PiA+ICsgICAgICBjb21wZGV2X3F1ZXVlX3BhaXJfc3RvcF90IHF1ZXVlX3BhaXJfc3RvcDsNCj4g PiA+ID4gPiArICAgICAgLyoqPCBTdG9wIGEgcXVldWUgcGFpci4gKi8NCj4gPiA+ID4gPiArICAg ICAgY29tcGRldl9xdWV1ZV9wYWlyX2NvdW50X3QgcXVldWVfcGFpcl9jb3VudDsNCj4gPiA+ID4g PiArICAgICAgLyoqPCBHZXQgY291bnQgb2YgdGhlIHF1ZXVlIHBhaXJzLiAqLw0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArICAgICAgY29tcF9nZXRfc2Vzc2lvbl9wcml2YXRlX3NpemVfdCBzZXNz aW9uX2dldF9zaXplOw0KPiA+ID4gPiA+ICsgICAgICAvKio8IFJldHVybiBwcml2YXRlIHNlc3Np b24uICovDQo+ID4gPiA+ID4gKyAgICAgIGNvbXBfY29uZmlndXJlX3Nlc3Npb25fdCBzZXNzaW9u X2NvbmZpZ3VyZTsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBDb25maWd1cmUgYSBjb21wIHNlc3Np b24uICovDQo+ID4gPiA+ID4gKyAgICAgIGNvbXBfZnJlZV9zZXNzaW9uX3Qgc2Vzc2lvbl9jbGVh cjsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBDbGVhciBhIGNvbXAgc2Vzc2lvbnMgcHJpdmF0ZSBk YXRhLiAqLw0KPiA+ID4gPiA+ICsgICAgICBjb21wX3F1ZXVlX3BhaXJfYXR0YWNoX3Nlc3Npb25f dCBxcF9hdHRhY2hfc2Vzc2lvbjsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBBdHRhY2ggc2Vzc2lv biB0byBxdWV1ZSBwYWlyLiAqLw0KPiA+ID4gPiA+ICsgICAgICBjb21wX3F1ZXVlX3BhaXJfYXR0 YWNoX3Nlc3Npb25fdCBxcF9kZXRhY2hfc2Vzc2lvbjsNCj4gPiA+ID4gPiArICAgICAgLyoqPCBE ZXRhY2ggc2Vzc2lvbiBmcm9tIHF1ZXVlIHBhaXIuICovDQo+ID4gPiA+ID4gK307DQo+ID4gPiA+ ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCg==