From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0051.outbound.protection.outlook.com [104.47.41.51]) by dpdk.org (Postfix) with ESMTP id 163481B23E for ; Fri, 20 Oct 2017 19:40:20 +0200 (CEST) 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=duw6bc1D9An4Tof6vsGcKfUYIzHuIpjrXvvsTK8AK60=; b=ZRCfiY0Pl3121+wKMRInpFnPgHsFPJqKhIangPS0cLPRAmBYpKrZxWpT4/6w9ofWabGpYV+nzuA/lyiF+/dzY2OWDWAohIQp46QQbn8unLwwptWhElg3mLcfQ7BHp0qASmB7n9JLDuNMMqtvItlaEPImXUNALia7LRuCZZzNO0g= Received: from BY1PR0701MB1111.namprd07.prod.outlook.com (10.160.104.21) by BLUPR0701MB1985.namprd07.prod.outlook.com (10.163.121.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.156.4; Fri, 20 Oct 2017 17:40:17 +0000 Received: from BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::54e2:b336:84a7:cb1f]) by BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::54e2:b336:84a7:cb1f%13]) with mapi id 15.20.0077.022; Fri, 20 Oct 2017 17:40:16 +0000 From: "Verma, Shally" To: "Trahe, Fiona" , "dev@dpdk.org" , "Athreya, Narayana Prasad" , "Challa, Mahipal" Thread-Topic: [dpdk-dev] [RFC] Compression API in DPDK Thread-Index: AQHTRxUK+eIRQu27zUO9vATBIE3R9KLoHbQAgATf8MA= Date: Fri, 20 Oct 2017 17:40:15 +0000 Message-ID: References: <348A99DA5F5B7549AA880327E580B435892A8BEC@IRSMSX101.ger.corp.intel.com> <348A99DA5F5B7549AA880327E580B435892ABFB2@IRSMSX101.ger.corp.intel.com> In-Reply-To: <348A99DA5F5B7549AA880327E580B435892ABFB2@IRSMSX101.ger.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [223.230.70.79] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; BLUPR0701MB1985; 6:UyTgCzf1Rx/C8a7gFz39I/KMoqRL8GT4Br9IDZmm2ICj7Rub/wlMLZ800z936NpOeWCnVjD66HwOuhhLsAeBbbjeKsmHC59jS/6EGLtND7uih5tReJZlxwxn6BrzaDDn3Zf4CaMkcESUvAN3/zDkMRRhW08CYRyY5ww039suJ5ZGwM+J+uqSobKSGI+Fkg61T8EqsNrEJlWetZZAxGQ3DZEJxcwcj4NB/ew4osoI2AcNQb91kDRR+hwUVwbKRy8ANEg0nwEQeTlcEgP9UIHHmyccXk8qzoNMKpkbcN8N8n5Ez8ppIA+7sojefFmelceJjQS6BA+wu/UGyv7lu5LpGg==; 5:Rg1L8AoK6fipus4dMg5vVYmZEvg6JBYKvcER2+PO9/1666z7s5q1XjaaS7i2eyZLNNcBAbBsxP1fqnm8JObnrxZhUXXq+Vs8UWWTCKtXGBimclGErkD1HTHkY/yPAAaUn40Oo1BWJi7YMHKvxl5BCg==; 24:Dy71/8KkeYqfUtvvZdUh9Mjvqug4x+mEGxwmwQj8fO/P2uft38eRqMnxsUaPGzoXyHDgh9sTywLWH1zoL2/XJg9VbKPuqursV6aoh/PLkH0=; 7:iUyOrhkAo9qHZXHcOXs0dO6Er4vqw9R5nl8r5ZjXCg01GYKfkk2dcPLrxALBFCQ2QgtFSxrYyuI0ACraSzxiDEhrzkEbTLGfWtmxfYhJzxtJPstT6NAIbu3jmroZ91/8xlwV7ATZBpBDiQiNmGh/pMjV59SabrFD8TW8GCqcTQE59eg0fVRWI9mS0dlnfwO6hMxrt0l91ze8y1GKUUkMRyUgufsM4jHD7320HWQDCNY= x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(199003)(189002)(51414003)(24454002)(13464003)(2906002)(305945005)(8676002)(99286003)(81156014)(7696004)(6506006)(81166006)(6436002)(25786009)(7736002)(86362001)(72206003)(6246003)(53546010)(189998001)(966005)(68736007)(2950100002)(97736004)(14454004)(8936002)(3846002)(2501003)(6636002)(106356001)(105586002)(561944003)(110136005)(5660300001)(5250100002)(5890100001)(6116002)(55016002)(101416001)(102836003)(3660700001)(9686003)(53946003)(2900100001)(66066001)(76176999)(54356999)(53936002)(229853002)(16200700003)(316002)(478600001)(33656002)(3280700002)(50986999)(6306002)(74316002)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1985; H:BY1PR0701MB1111.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; x-ms-office365-filtering-correlation-id: fdc8f552-6a7c-401e-1541-08d517e19ffc x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603229); SRVR:BLUPR0701MB1985; x-ms-traffictypediagnostic: BLUPR0701MB1985: 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)(100000703101)(100105400095)(3002001)(93006095)(93001095)(3231020)(10201501046)(6041248)(20161123560025)(20161123564025)(20161123558100)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR0701MB1985; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR0701MB1985; x-forefront-prvs: 0466CA5A45 received-spf: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; 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: fdc8f552-6a7c-401e-1541-08d517e19ffc X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Oct 2017 17:40:15.9627 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1985 X-Mailman-Approved-At: Mon, 23 Oct 2017 21:56:41 +0200 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: Fri, 20 Oct 2017 17:40:21 -0000 DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFRyYWhlLCBGaW9uYSBbbWFp bHRvOmZpb25hLnRyYWhlQGludGVsLmNvbV0NCj4gU2VudDogMTcgT2N0b2JlciAyMDE3IDIwOjEx DQo+IFRvOiBzaGFsbHkgdmVybWEgPHNoYWxseXZlcm1hY2F2aXVtQGdtYWlsLmNvbT47IGRldkBk cGRrLm9yZzsgQXRocmV5YSwNCj4gTmFyYXlhbmEgUHJhc2FkIDxOYXJheWFuYVByYXNhZC5BdGhy ZXlhQGNhdml1bS5jb20+OyBDaGFsbGEsIE1haGlwYWwNCj4gPE1haGlwYWwuQ2hhbGxhQGNhdml1 bS5jb20+OyBWZXJtYSwgU2hhbGx5IDxTaGFsbHkuVmVybWFAY2F2aXVtLmNvbT4NCj4gQ2M6IFRy YWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW2RwZGst ZGV2XSBbUkZDXSBDb21wcmVzc2lvbiBBUEkgaW4gRFBESw0KPiANCj4gSGkgU2hhbGx5LA0KPiAN Cj4gVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrLiBDb21tZW50cyBiZWxvdy4NCj4gDQo+IFJlZ2Fy ZHMsDQo+IEZpb25hDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJv bTogc2hhbGx5IHZlcm1hIFttYWlsdG86c2hhbGx5dmVybWFjYXZpdW1AZ21haWwuY29tXQ0KPiA+ IFNlbnQ6IFR1ZXNkYXksIE9jdG9iZXIgMTcsIDIwMTcgNzo1NiBBTQ0KPiA+IFRvOiBUcmFoZSwg RmlvbmEgPGZpb25hLnRyYWhlQGludGVsLmNvbT47IGRldkBkcGRrLm9yZzsNCj4gPiBwYXRocmV5 YUBjYXZpdW0uY29tOyBNYWhpcGFsIENoYWxsYSA8bWNoYWxsYUBjYXZpdW0uY29tPjsgU2hhbGx5 DQo+IFZlcm1hDQo+ID4gPHN2ZXJtYUBjYXZpdW0uY29tPg0KPiA+IFN1YmplY3Q6IFJlOiBbZHBk ay1kZXZdIFtSRkNdIENvbXByZXNzaW9uIEFQSSBpbiBEUERLDQo+ID4NCj4gPiBXaGlsZSBJIGFt IHN0aWxsIGdvaW5nIHRocm91Z2ggUkZDIGluIGRldGFpbHMsIGlubGluZSBhcmUgbXkgaW5wdXRz IHRvDQo+ID4gc29tZSBvZiB0aGUgcG9pbnRzLg0KPiA+DQo+ID4gT24gVGh1LCBPY3QgMTIsIDIw MTcgYXQgMTA6MzQgUE0sIFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPg0KPiB3 cm90ZToNCj4gPiA+DQo+ID4gPiBXaXRoIHRoZSB2YXN0IGFtb3VudHMgb2YgZGF0YSBiZWluZyB0 cmFuc3BvcnRlZCBhcm91bmQgbmV0d29ya3MgYW5kDQo+ID4gPiBzdG9yZWQgaW4gc3RvcmFnZSBz eXN0ZW1zLA0KPiA+IHJlZHVjaW5nIGRhdGEgc2l6ZSBpcyBiZWNvbWluZyBldmVyIG1vcmUgaW1w b3J0YW50LiBUaGVyZSBhcmUgYm90aA0KPiA+IHNvZnR3YXJlIGxpYnJhcmllcyBhbmQgaGFyZHdh cmUgZGV2aWNlcyBhdmFpbGFibGUgdGhhdCBwcm92aWRlDQo+ID4gY29tcHJlc3Npb24sIGJ1dCBu byBjb21tb24gQVBJLiBUaGlzIFJGQyBwcm9wb3NlcyBhIGNvbXByZXNzaW9uIEFQSSBmb3INCj4g RFBESyB0byBhZGRyZXNzIHRoaXMgbmVlZC4NCj4gPiA+DQo+ID4gPiBGZWF0dXJlczoNCj4gPiA+ IC4gRGVmbGF0ZSBBbGdvcml0aG0gKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMxOTUx KSwgb3RoZXIgYWxnb3JpdGhtcw0KPiBjYW4gYmUgYWRkZWQgbGF0ZXIuDQo+ID4gPiAuIFN0YXRp YyBhbmQgRHluYW1pYyBIdWZmbWFuIGVuY29kaW5nLg0KPiA+ID4gLiBDb21wcmVzc2lvbiBsZXZl bHMNCj4gPiA+IC4gQ2hlY2tzdW0gZ2VuZXJhdGlvbg0KPiA+ID4gLiBBc3luY2hyb25vdXMgYnVy c3QgQVBJDQo+ID4gPiAuIFNlc3Npb24tYmFzZWQuIChmb3Igc3RhdGVsZXNzIGEgc2Vzc2lvbiBt YXkgYmUgdXNlYWJsZSBhY3Jvc3MNCj4gPiA+IGRldmljZXMsIGZvciBzdGF0ZWZ1bCBpdCB3b3Vs ZG4ndCBiZS4pDQo+ID4gPg0KPiA+ID4NCj4gPiA+IE5vdGUgMTogU3BsaXQgb2YgZnVuY3Rpb25h bGl0eSBhYm92ZS9iZWxvdyBBUEkgV2hlbiBjb25zaWRlcmluZw0KPiA+ID4gd2hldGhlciBmZWF0 dXJlcyBzaG91bGQgYmUgc3VwcG9ydGVkIG9uIHRoZSBBUEkgb3Igbm90LCB0aGUgZGVjaXNpb24N Cj4gPiA+IHdhcyBiYXNlZCBvbg0KPiA+IHRoZSBmb2xsb3dpbmc6DQo+ID4gPiBUaGUgcHVycG9z ZSBvZiB0aGUgQVBJIGlzIHRvIGRlY291cGxlIHRoZSBhcHBsaWNhdGlvbiBmcm9tIHRoZQ0KPiA+ ID4gY29tcHV0ZS1pbnRlbnNpdmUgZnVuY3Rpb25zIG5lZWRlZA0KPiA+IGZvciBjb21wcmVzc2lv biBieSBhYnN0cmFjdGluZyB0aGVtIHVuZGVyIGEgY29tbW9uIEFQSS4gVGhlc2UgY2FuIHRoZW4N Cj4gPiBiZSBpbXBsZW1lbnRlZCBieSBlaXRoZXIgaGFyZHdhcmUgYWNjZWxlcmF0b3JzIG9yIG9w dGltaXNlZCBzb2Z0d2FyZQ0KPiA+IGxpYnJhcmllcy4gV2hlcmUgZmVhdHVyZXMgYXJlIG5vdCBj b21wdXRlLWludGVuc2l2ZSBhbmQgdW5saWtlbHkgdG8gYmUNCj4gPiBvZmZsb2FkZWQgb3Igb3B0 aW1pc2VkLCB0aGVyZSdzIG5vdGhpbmcgdG8gYmUgZ2FpbmVkIGJ5IGVhY2ggUE1EDQo+ID4gaGF2 aW5nIHRvIHNlcGFyYXRlbHkgaW1wbGVtZW50IHRoZW0sIGFuZCBpdCBtYWtlcyBtb3JlIHNlbnNl IGZvciB0aGVtDQo+IHRvIGJlIGRvbmUgYWJvdmUgdGhlIEFQSS4gU28gdGhlIGZvbGxvd2luZyBh cmUgbm90IGhhbmRsZWQgb24gdGhlIEFQSSBhbmQNCj4gY2FuIGJlIGRvbmUgYWJvdmUuDQo+ID4g PiAuIFByZXBlbmRpbmcvYXBwZW5kaW5nIHByb3RvY29sIGhlYWRlcnMgKGd6aXAsIHpsaWIpIC4N Cj4gPiA+IEZpbGUtaGFuZGxpbmcsIGJyZWFraW5nIGZpbGVzIHVwIGludG8gcGFja2V0cywgcmVh c3NlbWJsaW5nLg0KPiA+ID4gLiBTeW5jaHJvbm91cyBBUEkNCj4gPiA+DQo+ID4gPg0KPiA+ID4g Tm90ZSAyOiBTdGF0ZWZ1bCBjb21wcmVzc2lvbi4NCj4gPiA+IEEgYmV0dGVyIGNvbXByZXNzaW9u IHJhdGlvIGNhbiBiZSBhY2hpZXZlZCBieSB1c2luZyBzdGF0ZWZ1bA0KPiA+ID4gY29tcHJlc3Np b24sIGFsbG93aW5nIHBhdHRlcm4gbWF0Y2hpbmcNCj4gPiBhY3Jvc3MgbXVsdGlwbGUgc2VxdWVu dGlhbCBwYWNrZXRzLiBUaGlzIHdpbGwgYmUgc3VwcG9ydGVkIG9uIHRoZSBBUEksDQo+ID4gYnV0 IGluIHRoZSBpbnRlcmVzdHMgb2YgZ2V0dGluZyBhbiBpbml0aWFsIFJGQyBvdXQgZm9yIGZlZWRi YWNrLCB0aGVyZQ0KPiA+IGFyZSBwbGFjZWhvbGRlciBwYXJhbWV0ZXJzIG9uIHRoZSBBUEkuIEZl ZWRiYWNrIHdlbGNvbWUgb24gd2hhdA0KPiBwYXJhbWV0ZXJzIGFyZSBuZWVkZWQgZm9yIHRoaXMg ZmVhdHVyZS4NCj4gPiA+DQo+ID4NCj4gPiBXZSB3b3VsZCBsaWtlIHRvIHNlZSB0aGlzIGFzIHBh cnQgb2YgU3BlY2lmaWNhdGlvbi4gV2Ugd2lsbCBwcm92aWRlDQo+ID4gbW9yZSBkZXRhaWxzIG9u IHdoYXQgd2UoY2F2aXVtKSByZXF1aXJlLg0KPiANCj4gW0Zpb25hXSBJIGxvb2sgZm9yd2FyZCB0 byBpdC4NCj4gDQo+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gTm90ZSAzOiBUaGUgdHJpY2t5IHF1 ZXN0aW9uIG9mIHdoZXJlIHRoZSBBUEkgYmVsb25ncyBXZSBjb25zaWRlcmVkDQo+ID4gPiAxLiBF eHRlbmRpbmcgY3J5cHRvZGV2IDIuIE5ldyBhY2NlbGRldiBBUElzIGZvciBkZXZpY2UgaGFuZGxp bmcgKw0KPiA+ID4gY29tcHJlc3NkZXYgQVBJcyBmb3IgZGF0YSBwYXRoIDMuIE5ldyBhY2NlbGRl diBmb3IgYWxsIEFQSXMgNC4gTmV3DQo+ID4gPiBjb21wcmVzc2RldiBBUEkNCj4gPiA+DQo+ID4g PiBXZSdyZSBwcm9wb3Npbmcgb3B0aW9uIDQsIGhlcmUncyB3aHk6DQo+ID4gPiAxLiBFeHRlbmRp bmcgY3J5cHRvZGV2Og0KPiA+ID4gICAgIC4gICsgTmljZSBjb2RlIHJlLXVzZS4NCj4gPiA+ICAg ICAuICArIENvbnNpc3RlbnQgd2l0aCBMaW51eCBrZXJuZWwgYW5kIEJTRCBhcHByb2FjaGVzLg0K PiA+ID4gICAgIC4gIC0gQnV0IG5vdCBhIGdvb2QgbmFtZS4NCj4gPiA+ICAgICAuICAtIFdvdWxk IGluZXZpdGFibHkgbGVhZCB0byBzb21lIGNyeXB0b2RldiBBUEkgYnJlYWthZ2UgLSBjYW4gYmUN Cj4gbWluaW1pc2VkLCBidXQgdGhlbiBsb29rcyBoYWNreS4NCj4gPiBFLmcuDQo+ID4gPiAgICAg ICAgICAgICBydGVfY3J5cHRvZGV2X2luZm8ubWF4X25iX3F1ZXVlX3BhaXJzIGN1cnJlbnRseS4g V291bGQgbmVlZA0KPiB0byBleHRlbmQgdG8NCj4gPiA+ICAgICAgICAgICAgIHJ0ZV9jcnlwdG9k ZXZfaW5mby5tYXhfbmJfcXVldWVfcGFpcnMgKElkZWFsbHkgcmVuYW1lDQo+ID4gPiB0aGlzIHRv IG1heF9uYl9zeW1fLi4uLiBidXQgdGhhdCdzIGFuDQo+ID4gQVBJIGJyZWFrYWdlKQ0KPiA+ID4g ICAgICAgICAgICAgcnRlX2NyeXB0b2Rldl9pbmZvLm1heF9uYl9jb21wX3F1ZXVlX3BhaXJzDQo+ ID4gPiAgICAgICAgICAgICBydGVfY3J5cHRvZGV2X2luZm8ubWF4X25iX2FzeW1fcXVldWVfcGFp cnMNCj4gPiA+ICAgICAgICAgICBTaW1pbGFybHkgZm4gbmFtZXMsIGUuZy4gcnRlX2NyeXB0b2Rl dl9xdWV1ZV9wYWlyX3NldHVwLg0KPiA+ID4gICAgICAgICAgICBSZW5hbWUgdG8gcnRlX2NyeXB0 b2Rldl9zeW1fcXVldWVfcGFpcl9zZXR1cCwgYWRkIF9jb21wDQo+ID4gPiBhbmQgX2FzeW0gZm5z PyBPciBhZGQNCj4gPiBwYXJhbWV0ZXI/DQo+ID4gPiAyLiBOZXcgYWNjZWxkZXYgQVBJcyBmb3Ig ZGV2aWNlIGhhbmRsaW5nICsgY29tcHJlc3NkZXYgQVBJcyBmb3IgZGF0YQ0KPiBwYXRoOg0KPiA+ ID4gICAgIH43MCUgb2YgY3J5cHRvZGV2IGNvZGUgaXMgZGV2aWNlLWhhbmRsaW5nIHdoaWNoIGlz IGNvbW1vbiB0byBhbGwNCj4gYWNjZWxlcmF0b3JzLg0KPiA+ID4gICAgIFJhdGhlciB0aGFuIHBy b3ZpZGluZyBuZXcgY29tcHJlc3NkZXYgQVBJcywgcHJvdmlkZSBBUElzIHdoaWNoIGNhbg0KPiBi ZSB1c2VkIGZvciBjb21wcmVzc2lvbg0KPiA+ID4gICAgIGFuZCBhbHNvIG90aGVyIGFjY2VsZXJh dG9ycywgZS5nLiBiYmRldiwgRlBHQXMuIFdvdWxkIGxvb2sgbGlrZQ0KPiBydGVfYWNjZWxkZXZf aW5mb19nZXQoKSwNCj4gPiA+ICAgICBydGVfYWNjZWxkZXZfY29uZmlndXJlKCksIHJ0ZV9jb21w cmVzc19lbnF1ZXVlX2J1cnN0KCksIGV0Yw0KPiA+ID4gICAgIC4gKyBOaWNlIGZ1dHVyZSBjb2Rl IHJlLXVzZS4NCj4gPiA+ICAgICAuICsgTm8gY3J5cHRvZGV2IEFQSSBicmVha2FnZSwgdGhvdWdo IHdvdWxkIGJlIG5pY2Ugb3ZlciB0aW1lIHRvDQo+IG1vdmUgdG8gYWNjZWxkZXYgQVBJcyBmb3IN Cj4gPiA+ICAgICAgICAgICBjcnlwdG9kZXYgYW5kIGRlcHJlY2F0ZSBjcnlwdG9kZXYgQVBJcy4N Cj4gPiA+ICAgICAuIC0gYWNjZWxkZXYgZWl0aGVyIGhhcyB0byB1bmRlcnN0YW5kIHN0cnVjdHMg Zm9yIGFsbCBzZXJ2aWNlcyB3aXRoDQo+IHJlc3VsdGluZyBkZXBlbmRlbmNpZXMgT1INCj4gPiA+ ICAgICAgICAgICAgIGl0J3MgaW5kZXBlbmRlbnQgd2l0aCBtaW5pbWFsIHR5cGUtY2hlY2tpbmcs IGxvdHMgb2Ygdm9pZCogYW5kDQo+IGNhc3RpbmcuDQo+ID4gPiAgICAgLiAtIHBvdGVudGlhbCBB UEkgY2h1cm4gaWYgc2VydmljZXMgaGF2ZSBkaWZmZXJlbnQgbmVlZHMNCj4gPiA+ICAgICAuIC0g dXNhYmlsaXR5IC0gYXBwbGljYXRpb24gaGFzIHRvIHNvbWV0aW1lcyB1c2UgYWNjZWxkZXYsDQo+ ID4gPiBzb21ldGltZXMgY29tcHJlc3NkZXYgMy4gTmV3IGFjY2VsZGV2IGZvciBhbGwgQVBJczoN Cj4gPiA+ICAgICAuIEFzIDIgYnV0IHdpdGggb25seSB0aGUgeGZvcm1zIGFuZCBvcHMgZGlmZmVy ZW50IGZvciBlYWNoIHNlcnZpY2UuIEFsbA0KPiBBUElzIGFyZSBydGVfYWNjZWxkZXZfLi4uLg0K PiA+ID4gICAgIC4gU2ltaWxhciBwcm9zL2NvbnMuDQo+ID4gPiAgICAgLiAtIE5vIGZsZXhpYmls aXR5IGZvciBhY2NlbGVyYXRvcnMgc2VydmljZXMgdG8gaGF2ZQ0KPiA+ID4gc2VydmljZS1zcGVj aWZpYyBBUElzLiBTZXJ2aWNlcyBhcmUgbW9yZSB0aWdodGx5DQo+ID4gY291cGxlZC4NCj4gPiA+ IDQuIE5ldyBjb21wcmVzc2RldiBBUEk6IChwb3NzaWJseSB3aXRoIGFuIGFjY2VsZGV2IHVuZGVy IHRoZSBob29kKQ0KPiA+ID4gICAgIC4gKyBCZXR0ZXIgbmFtZQ0KPiA+ID4gICAgIC4gKyBVc2Fi aWxpdHkgLSBydGVfY29tcGRldl8uLi4gZm9yIGV2ZXJ5dGhpbmcNCj4gPiA+ICAgICAuICsgTm8g Y3J5cHRvZGV2IEFQSSBicmVha2FnZQ0KPiA+ID4gICAgIC4gKyBGbGV4aWJpbGl0eSB0byBhZGQg YW55IGNvbXByZXNzaW9uLXNwZWNpZmljIEFQSXMgaWYgbmVlZGVkLg0KPiA+ID4gICAgIC4gKyBT aW1wbGVyLCBtb3JlIGRlY291cGxlZCBjb2RlDQo+ID4gPiAgICAgLiAtIE1vcmUgY29kZSBkdXBs aWNhdGlvbi4NCj4gPiA+ICAgICAgICAgICBNYXkgaW4gYSBsYXRlciBpdGVyYXRpb24gaW1wbGVt ZW50IGFuIGFjY2VsZGV2IHVuZGVyIHRoZSBob29kLCBmb3INCj4gY29kZSByZS11c2UsIGJ1dA0K PiA+ID4gICAgICAgICAgIHRoaXMgaXMgaGlkZGVuIGZyb20gYXBwbGljYXRpb25zLiBTZXJ2aWNl IEFQSXMgY291bGQgcGljayBhbmQgY2hvb3NlDQo+IHdoYXRldmVyIG1ha2VzIHNlbnNlDQo+ID4g PiAgICAgICAgICAgZnJvbSBhY2NlbGRldi4gUE9DIG9uIHRoaXMgaW4tcHJvZ3Jlc3MsIGFsc28g YXdhaXRpbmcgSGVtYW50DQo+IEFncmF3YWwncyBwcm9wb3NlZA0KPiA+ID4gICAgICAgICAgIHJ0 ZV9yYXdfZGV2aWNlIFJGQywgd2hpY2ggbWF5IGZpdCB0aGUgYWNjZWxkZXYgcm9sZS4NCj4gPiA+ DQo+ID4gPiBOb3RlIDQ6IENoYWluaW5nIG9mIGNvbXByZXNzaW9uIHdpdGggb3RoZXIgc2Vydmlj ZXMuDQo+ID4gPiAgICAgT3B0aW9uIDEgd291bGQgbWFrZSBpdCBlYXN5IHRvIGNoYWluIGNvbXBy ZXNzaW9uIHdpdGggc3ltDQo+ID4gPiBjcnlwdG8uIFRob3VnaCBub3Qgd2l0aCBvdGhlciBub24t DQo+ID4gY3J5cHRvDQo+ID4gPiAgICAgb3BlcmF0aW9ucyBpZiB0aGlzIGlzIGEgZnV0dXJlIHVz ZS1jYXNlLiBIb3dldmVyIGl0IGNhbiBiZQ0KPiA+ID4gYWNoaWV2ZWQgd2l0aCBhbnkgb3B0aW9u LCBmb2xsb3dpbmcgdGhlDQo+ID4gcGF0dGVybg0KPiA+ID4gICAgIG9mIHJ0ZV9zZWN1cml0eSBB UEksIHNvIGlzIG5vdCBhIGZhY3RvciBpbiBhYm92ZSBkZWNpc2lvbi4NCj4gPiA+DQo+ID4NCj4g PiBXZSBhcmUgaW4gZmF2b3Igb2Ygc29sdXRpb24gIzQuIEFwYXJ0IGZyb20gcmVhc29ucyBhcyB5 b3Ugc3RhdGVkLA0KPiA+IG5hdHVyZSBvZiBib3RoIG9wZXJhdGlvbnMgYXJlIHZlcnkgZGlmZmVy ZW50IGFuZCBpdCBhZGQgbG90cyBvZg0KPiA+IGNvbXBsZXhpdHkgdG8gYm90aCBlbmRzIChjcnlw dG8gKyBjb21wcmVzc2lvbikgdG8gY28tZXhpc3Qgd2l0aA0KPiA+IGRpZmZlcmVudCBiZWhhdmlv ci4NCj4gPiBIb3dldmVyIEkgd291bGQgbGlrZSB0byB1bmRlcnN0YW5kIG1vcmUgYWJvdXQgYWNj ZWxkZXYgcHJvcG9zYWw/IElzDQo+ID4gdGhlcmUgYW55IGRvY3VtZW50IHRoYXQgSSBjYW4gc2Vl IHRvIHVuZGVyc3RhbmRzIGl0cyBwdXJwb3NlPw0KPiANCj4gW0Zpb25hXSBOb3QgYXQgdGhlIG1v bWVudC4NCj4gV2UnZCBsaWtlIHRvIHdhaXQgZm9yIEhlbWFudCdzIHJ0ZV9yYXdfZGV2aWNlcyBS RkMgYmVmb3JlIG1ha2luZyBhDQo+IHByb3Bvc2FsIG9uIHRoaXMuDQo+IA0KDQpbU2hhbGx5XSBP ay4NCg0KPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+IENvZGUgZXh0cmFjdHMgYmVsb3c6DQo+ID4g Pg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9jb21wcmVzc2Rl di9ydGVfY29tcC5oDQo+ID4gPiBiL2xpYi9saWJydGVfY29tcHJlc3NkZXYvcnRlX2NvbXAuaA0K PiA+ID4gKy8qKg0KPiA+ID4gKyAqIEBmaWxlIHJ0ZV9jb21wLmgNCj4gPiA+ICsgKg0KPiA+ID4g KyAqIFJURSBkZWZpbml0aW9ucyBmb3IgRGF0YSBDb21wcmVzc2lvbiBTZXJ2aWNlDQo+ID4gPiAr ICoNCj4gPiA+ICsgKi8NCj4gPiA+ICsNCj4gPiA+ICsvKiogQ29tcHJlc3Npb24gQWxnb3JpdGht cyAqLw0KPiA+ID4gK2VudW0gcnRlX2NvbXBfYWxnb3JpdGhtIHsNCj4gPiA+ICsgICAgICBSVEVf Q09NUF9OVUxMID0gMSwNCg0KW1NoYWxseV0gV2hhdCBpcyBhbiBBUEkgZXhwZWN0YXRpb24gb24g c2VlaW5nIGFsZ29yaXRobSBhcyBOVUxMPw0KDQo+ID4gPiArICAgICAgLyoqPCBOVUxMIGNvbXBy ZXNzaW9uIGFsZ29yaXRobS4gKi8NCj4gPiA+ICsgICAgICBSVEVfQ09NUF9ERUZMQVRFLA0KPiA+ ID4gKyAgICAgIC8qKjwgREVGTEFURSBjb21wcmVzc2lvbiBhbGdvcml0aG0NCj4gPiA+ICsgICAg ICAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMxOTUxICovDQo+ID4gPiArICAgICAg UlRFX0NPTVBfTElTVF9FTkQNCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+DQo+ID4gV2Ugc3VwcG9y dCBMWlMgb2ZmbG9hZCBhcyB3ZWxsLCBuZWVkIHRvIGV4dGVuZCB3aXRoIFJURV9DT01QX0xaUy4N Cj4gDQo+IFtGaW9uYV0gQWdyZWVkLiBEbyB5b3Ugc2VlIGFueSBuZWVkIGZvciBsenMtc3BlY2lm aWMgcGFyYW1ldGVycz8gaS5lLiBpcyB0aGVyZQ0KPiBhICBuZWVkIGZvciBhIHN0cnVjdCBydGVf Y29tcF9senNfcGFyYW1zIGFuZCwgaWYgc28sIHdoYXQgc2hvdWxkIGl0IGNvbnRhaW4/DQo+IA0K DQpbU2hhbGx5XSBOby4gQ3VycmVudCBleHBvcnRlZCBlbnVtL3BhcmFtIGFyZSBzdWZmaWNpZW50 Lg0KDQo+ID4NCj4gPiA+ICsNCj4gPiA+ICsvKiogQ29tcHJlc3Npb24gY2hlY2tzdW0gdHlwZXMg Ki8NCj4gPiA+ICtlbnVtIHJ0ZV9jb21wX2NoZWNrc3VtX3R5cGUgew0KPiA+ID4gKyAgICAgIFJU RV9DT01QX05PTkUsDQo+ID4gPiArICAgICAgLyoqPCBObyBjaGVja3N1bSBnZW5lcmF0ZWQgKi8N Cj4gPiA+ICsgICAgICBSVEVfQ09NUF9DUkMzMiwNCj4gPiA+ICsgICAgICAvKio8IEdlbmVyYXRl cyBhIENSQzMyIGNoZWNrc3VtLCBhcyB1c2VkIGJ5IGd6aXAgKi8NCj4gPiA+ICsgICAgICBSVEVf Q09NUF9BRExFUjMyLA0KPiA+ID4gKyAgICAgIC8qKjwgR2VuZXJhdGVzIGFuIEFkbGVyLTMyIGNo ZWNrc3VtLCBhcyB1c2VkIGJ5IHpsaWIgKi8NCj4gPiA+ICsgICAgICBSVEVfQ09NUF9DUkMzMl9B RExFUjMyLA0KPiA+ID4gKyAgICAgIC8qKjwgR2VuZXJhdGVzIGJvdGggQWRsZXItMzIgYW5kIENS QzMyIGNoZWNrc3VtcywgY29uY2F0ZW5hdGVkLg0KPiA+ID4gKyAgICAgICogQ1JDMzIgaXMgaW4g dGhlIGxvd2VyIDMyYml0cywgQWRsZXItMzIgaW4gdGhlIHVwcGVyIDMyIGJpdHMuDQo+ID4gPiAr ICAgICAgKi8NCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+DQo+ID4gSW4gYWRkaXRpb24gdG8gdGhl c2Ugd2Ugc3VwcG9ydCBTSEExIGFuZCBTSEEyNTYuDQo+ID4gVG8gaW5jb3Jwb3JhdGUgdGhlc2Us IHdlIHN1Z2dlc3QgdGhlIGZvbGxvd2luZzoNCj4gPg0KPiA+IGVudW0gcnRlX2NvbXBfaW50ZWdy aXR5X2FsZ28gew0KPiA+ICAgIFJURV9DT01QX05PTkUsDQo+ID4gICAgUlRFX0NPTVBfQ1JDMzIs DQo+ID4gICAgUlRFX0NPTVBfQURMRVIzMiwNCj4gPiAgICBSVEVfQ09NUF9DUkMzMl9BRExFUjMy LA0KPiA+ICAgIFJURV9DT01QX1NIQTEsDQo+ID4gICAgUlRFX0NPTVBfU0hBMjU2LA0KPiA+IH07 DQo+IA0KPiBbRmlvbmFdIENhbiB5b3UgZWxhYm9yYXRlIG9uIHdoeSB0aGVzZSBhcmUgbmVlZGVk IGluIHRoZSBjb21wcmVzc2lvbg0KPiBjb250ZXh0Pw0KDQpbU2hhbGx5XSBPbmUgZXhhbXBsZSB0 eXBpY2FsIHVzZSBjYXNlcyBhcmUgaW4gRGF0YSBDZW50cmUgYXBwbGljYXRpb25zIHdoZXJlIEhh c2ggaXMgdXNlZCBhcyB1bmlxdWUga2V5IGZvciBEYXRhIGZpbmdlcnByaW50aW5nL2lkZW50aWZp Y2F0aW9uIGFuZCBEZS1kdXBsaWNhdGlvbi4NCg0KPiBXaXRoIGxlbmd0aHMgb2YgMjAgYW5kIDMy IGJ5dGVzIHRoZXkgYWRkIGNvbnNpZGVyYWJsZSBvdmVyaGVhZCB0byBzbWFsbGVyDQo+IHBhY2tl dHMuDQoNCltTaGFsbHldIFR5cGljYWwgdXNhZ2UgaXMgd2l0aCBsYXJnZXIgYnVmZmVycygyS0Ig YW5kIGFib3ZlKS4NCg0KPiBIb3cgZG8geW91IHByb3Bvc2UgdG8gcmV0dXJuIHRoZSBjaGVja3N1 bT8gVGhlIG90aGVycyBwcm9wb3NlZCBhbGwgZml0IGludG8NCj4gYW4gOC1ieXRlIGZpZWxkIGlu IHRoZSBvcC4NCj4gDQoNCltTaGFsbHldIFVzZXIgY2FuIHJlcXVlc3QgYm90aCBjaGVja3N1bSBh bmQgaGFzaCBhdCBvdXRwdXQuIEkgd2lsbCBwcm9wb3NlIGFkZGl0aW9uYWwgYXNzb2NpYXRlZCBj aGFuZ2VzIGFmdGVyIHdlIGZyZWV6ZSBjdXJyZW50IFJGQyB2ZXJzaW9uLg0KDQo+ID4NCj4gPiA+ ICsNCj4gPiA+ICsvKiogQ29tcHJlc3Npb24gRGVmbGF0ZSBIdWZmbWFuIFR5cGUgKi8gZW51bSBy dGVfY29tcF9odWZmbWFuIHsNCj4gPiA+ICsgICAgICBSVEVfQ09NUF9TVEFUSUMsDQo+ID4gPiAr ICAgICAgLyoqPCBTdGF0aWMgZW5jb2RpbmcgKi8NCj4gPiA+ICsgICAgICBSVEVfQ09NUF9EWU5B TUlDLA0KPiA+ID4gKyAgICAgIC8qKjwgRHluYW1pYyBlbmNvZGluZyAqLw0KPiA+ID4gK307DQo+ ID4gPiArDQo+ID4NCj4gPiBXZSB3b3VsZCBsaWtlIHRvIHNlZSBhIFJURV9DT01QX0RFRkFVTFQg Zm9yIHNpdHVhdGlvbnMgd2hlcmUNCj4gPiBhcHBsaWNhdGlvbiBjYW5ub3QgbWFrZSBhIGNob2lj ZS4gQWxzbywgVG8gYmUgbW9yZSBjb25zaXN0ZW50IHRvDQo+ID4gbmFtaW5nIGFuZCBkZWZsYXRl IFJGQzE5NTEsIHNob3VsZCBiZSByZW5hbWVkIGFzIFJURV9DT01QX0ZJWEVEIGFuZA0KPiA+IFJU RV9DT01QX0RZTkFNSUMuDQo+IA0KPiBbRmlvbmFdIEFncmVlZA0KPiA+DQo+ID4gPiArLyoqIENv bXByZXNzaW9uIGludGVncml0eSBjaGVjayAqLw0KPiA+ID4gK2VudW0gcnRlX2NvbXBfaW50ZWdy aXR5X2NoZWNrIHsNCj4gPiA+ICsgICAgICBSVEVfQ09NUF9OT19WRVJJRlksDQo+ID4gPiArICAg ICAgLyoqPCBObyBpbnRlZ3JpdHkgY2hlY2sgb24gb3V0cHV0IGRhdGEgKi8NCj4gPiA+ICsgICAg ICBSVEVfQ09NUF9WRVJJRlksDQo+ID4gPiArICAgICAgLyoqPCBJbnRlZ3JpdHkgY2hlY2sgb24g b3V0cHV0IGRhdGEuIE9ubHkgYXBwbGllcyB0byBjb21wcmVzcw0KPiBvcGVyYXRpb24uDQo+ID4g PiArICAgICAgKiBBZnRlciBjb21wcmVzcyBvcGVyYXRpb24gZG9uZSwgZGVjb21wcmVzcyBhbmQg dmVyaWZ5IGl0IG1hdGNoZXMNCj4gb3JpZ2luYWwgZGF0YS4NCj4gPiA+ICsgICAgICAqLw0KPiA+ DQo+ID4gVGhpcyBsb29rcyBtb3JlIHRvIG1lIGFzIGRpYWdub3N0aWMgdG9vbCAvIHRlc3QgYXBw Li4gSXQgc2hvdWxkIGJlDQo+ID4gcGFydCBvZiBhbiBBcHBsaWNhdGlvbiB0aGFuIGEgbGlicmFy eQ0KPiBbRmlvbmFdDQo+IElmIG9ubHkgYSBkaWFnbm9zdGljIHRvb2wgdGhlbiB5ZXMsIGl0IG5l ZWRuJ3QgYmUgb24gdGhlIEFQSS4NCj4gSG93ZXZlciwgZGF0YSBpbnRlZ3JpdHkgaXMgYSBjcml0 aWNhbCByZXF1aXJlbWVudCBmb3IgbG9zc2xlc3MgY29tcHJlc3Npb24uIEl0IGlzDQo+IGV4dHJl bWVseSBkaWZmaWN1bHQgdG8gZnVsbHkgdmFsaWRhdGUgYW55IGNvbXByZXNzaW9uIGltcGxlbWVu dGF0aW9uIGR1ZSB0bw0KPiB0aGUgaW5maW5pdGUgdmFyaWV0eSBvZiBpbnB1dCBkYXRhIHBhdHRl cm5zIGFuZCB0aGUgZmFjdCB0aGF0IHRoZXJlIGFyZSBtYW55DQo+IHBvc3NpYmxlIG91dHB1dHMg Zm9yIGFueSBnaXZlbiBpbnB1dC4NCj4gU28gYXBwbGljYXRpb25zIHNvbWV0aW1lcyBidWlsZCB2 ZXJpZmljYXRpb24gaW50byB0aGUgc3lzdGVtLg0KPiBUaGlzIGNvdWxkIGJlIGRvbmUgYnkgdGhl IGFwcGxpY2F0aW9uLCBhYm92ZSB0aGUgQVBJLCBidXQgYXMgaXMgY29tcHV0ZQ0KPiBpbnRlbnNp dmUgaXQgY2FuIGFsc28gYmVuZWZpdCBmcm9tIG9mZmxvYWRpbmcgdG8gaGFyZHdhcmUuIEFuZCBz YXZlcyBQQ0kNCj4gYmFuZHdpZHRoIGlmIGRvbmUgaW4gc2FtZSBvcGVyYXRpb24gYXMgY29tcHJl c3Npb24uICBTbyB3ZSB3b3VsZCBsaWtlIHRvDQo+IGhhdmUgdGhpcyBvcHRpb24gb24gdGhlIEFQ SS4NCj4gQXMgd2l0aCBhbnkgb3B0aW9uIHdlIHNob3VsZCBhbHNvIGV4cG9zZSBpdCBvbiB0aGUg Y2FwYWJpbGl0aWVzIEFQSSBhbmQgUE1Ecw0KPiBjYW4gc2lnbmFsIHRvIHRoZSBhcHBsaWNhdGlv biB3aGV0aGVyIG9yIG5vdCB0aGV5IHN1cHBvcnQgaXQuDQo+IA0KDQpbU2hhbGx5XSBDYXBhYmls aXR5IGlkZWEgbG9va3MgZ29vZCB0byBtZSBtYWtpbmcgaXQgb3B0aW9uYWwuIEhlcmUgYXJlIGZl dyBtb3JlIHRoaW5ncyB0byBjb25zaWRlcjoNCi0gTWVtb3J5IHJlcXVpcmVtZW50IHRvIHN0b3Jl IGRlY29tcHJlc3Npb24gcmVzdWx0cyAtIHNob3VsZCBnZXQgZnJvbSB1c2VyIE9yIGFsbG9jYXRl IGludGVybmFsbHkgaWYgdmVyaWZpY2F0aW9uIHR1cm5lZCBvbj8NCi0gSXQncyB1c2FnZSBpZiBi dXJzdCBzaXplID4gMS4NCi0gRGlmZmVyZW50IGltcGxlbWVudGF0aW9uIG1heSBoYXZlIHRoZWly IG93biB2ZXJzaW9uIHNvIGZvbGxvd2luZyBjb21tZW50IGNvdWxkIGJlIG1vcmUgZ2VuZXJpYyBz dWNoIGFzDQogICAgICAgLyoqPCBJbnRlZ3JpdHkgY2hlY2sgb24gb3V0cHV0IGRhdGEuIE9ubHkg YXBwbGllcyB0byBjb21wcmVzcyBvcGVyYXRpb24uDQogICAgICAgICAgKiBWZXJpZnkgY29ycmVj dG5lc3Mgb2YgY29tcHJlc3Npb24gb3BlcmF0aW9uIG9uIGRhdGEuDQogICAgICAgICAqLw0KDQpK dXN0IGZvciBteSBjdXJpb3NpdHksIGRvZXMgeW91ciBoYXJkd2FyZSBzdXBwb3J0IHZlcmlmaWNh dGlvbiBvZmZsb2FkPw0KPiANCj4gPg0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArZW51bSBy dGVfY29tcF9mbHVzaF9mbGFnIHsNCj4gPiA+ICsgICAgICBSVEVfQ09NUF9GTFVTSF9OT05FLA0K PiA+ID4gKyAgICAgIC8qKjwgVE9ETyAqLw0KPiA+ID4gKyAgICAgIFJURV9DT01QX0ZMVVNIX0ZV TEwsDQo+ID4gPiArICAgICAgLyoqPCBUT0RPICovDQo+ID4gPiArICAgICAgUlRFX0NPTVBfRkxV U0hfRklOQUwNCj4gPiA+ICsgICAgICAvKio8IFRPRE8gKi8NCj4gPiA+ICt9Ow0KPiA+ID4gKw0K PiA+DQo+ID4gV2UgbmVlZCB0byBhZGQgUlRFX0NPTVBfRkxVU0hfU1lOQy4NCj4gPiAgQWxzbywg dGhlcmUgY291bGQgYmUgc29tZSBhbGdvcml0aG1zIHdoZXJlIHRoZXNlIEZMVVNIIHR5cGUgbWF5 IG5vdA0KPiA+IGJlICAgcmVsZXZhbnQgb3Igbm90IGFsbCBtYXkgYmUgc3VwcG9ydGVkICwgc28g d2hhdCBhcmUgUE1EDQo+ID4gZXhwZWN0YXRpb25zIGZvciBzdWNoICAgY2FzZT8NCj4gW0Zpb25h XSBMZXQncyBob2xkIHRoZSBkaXNjdXNzaW9uIG9mIGZsdXNoIGZsYWcgdmFsdWVzIHVudGlsIHdl IHRhbGsgYWJvdXQNCj4gc3RhdGVmdWwgY29tcHJlc3Npb24uDQo+IElmIGEgUE1EIGRvZXNuJ3Qg c3VwcG9ydCBhIGZsdXNoIGZsYWcgdmFsdWUgd2Ugc2hvdWxkIHByb3ZpZGUgZm9yIHRoaXMgdG8g YmUNCj4gc2lnbmFsbGVkIG9uIHRoZSBjYXBhYmlsaXRpZXMgQVBJLg0KPiANCg0KW1NoYWxseV0g T2suDQoNCj4gPg0KPiA+ID4gKw0KPiA+ID4gKy8qKiBTdGF0dXMgb2YgY29tcHJlc3Npb24gb3Bl cmF0aW9uICovIGVudW0gcnRlX2NvbXBfb3Bfc3RhdHVzIHsNCj4gPiA+ICsgICAgICBSVEVfQ09N UF9PUF9TVEFUVVNfU1VDQ0VTUywNCj4gPiA+ICsgICAgICAvKio8IE9wZXJhdGlvbiBjb21wbGV0 ZWQgc3VjY2Vzc2Z1bGx5ICovDQo+ID4gPiArICAgICAgUlRFX0NPTVBfT1BfU1RBVFVTX05PVF9Q Uk9DRVNTRUQsDQoNCltTaGFsbHldIEkgaGF2ZSBzb21lIHF1ZXN0aW9ucyBhcm91bmQgaXQsIHBs ZWFzZSBzZWUgbXkgY29tbWVudHMgb24gcnRlX2NvbXBfb3Agc3RydWN0dXJlLg0KDQo+ID4gPiAr ICAgICAgLyoqPCBPcGVyYXRpb24gaGFzIG5vdCB5ZXQgYmVlbiBwcm9jZXNzZWQgYnkgdGhlIGRl dmljZSAqLw0KPiA+ID4gKyAgICAgIFJURV9DT01QX09QX1NUQVRVU19JTlZBTElEX1NFU1NJT04s DQo+ID4gPiArICAgICAgLyoqPCBvcGVyYXRpb24gZmFpbGVkIGR1ZSB0byBpbnZhbGlkIHNlc3Np b24gYXJndW1lbnRzICovDQo+ID4gPiArICAgICAgUlRFX0NPTVBfT1BfU1RBVFVTX0lOVkFMSURf QVJHUywNCj4gPiA+ICsgICAgICAvKio8IE9wZXJhdGlvbiBmYWlsZWQgZHVlIHRvIGludmFsaWQg YXJndW1lbnRzIGluIHJlcXVlc3QgKi8NCj4gPiA+ICsgICAgICBSVEVfQ09NUF9PUF9TVEFUVVNf RVJST1IsDQo+ID4gPiArICAgICAgLyoqPCBFcnJvciBoYW5kbGluZyBvcGVyYXRpb24gKi8NCj4g PiA+ICsgICAgICBSVEVfQ09NUF9PUF9TVEFUVVNfT1ZFUkZMT1csDQo+ID4NCj4gPiBJZiBJIHVu ZGVyc3RhbmQgdGhlIHB1cnBvc2UgY29ycmVjdGx5IHRoZW4gdGhpcyBpbmRpY2F0ZXMgYSBzaXR1 YXRpb24NCj4gPiB3aGVyZSBvdXRwdXQgYnVmZmVyIGV4aGF1c3RlZCBkdXJpbmcgY29tcHJlc3Np b24vZGVjb21wcmVzc2lvbi4NCj4gPiBTbyBpdCBzaG91bGQgYmUgcmVuYW1lZCBhcyBSVEVfQ09N UF9PUF9TVEFUVVNfT1VUX09GX1NQQUNFDQo+IFtGaW9uYV0gQWdyZWVkLg0KPiANCj4gPg0KPiA+ ID4gKyAgICAgIC8qKjwgT3V0cHV0IGJ1ZmZlciBmaWxsZWQgdXAgYmVmb3JlIGFsbCBkYXRhIGlu IGlucHV0IGJ1ZmZlciB3YXMNCj4gY29uc3VtZWQgKi8NCj4gPg0KPiA+IFRoaXMgY291bGQgYWxz byBhcmlzZSB3aGVyZSBpbnB1dCBidWZmZXIgaXMgZnVsbHkgY29uc3VtZWQgZHVyaW5nDQo+ID4g ZGVjb21wcmVzc2lvbi4gU28gY29tbWVudCBjYW4gYmUgbW9yZSBnZW5lcmljIHN1Y2ggYXMNCj4g PiDigJxPdXRwdXQgYnVmZmVyIGV4aGF1c3RlZCBkdXJpbmcgb3BlcmF0aW9uLuKAnQ0KPiBbRmlv bmFdIEluIHRoaXMgY2FzZSBJIHdvdWxkIGV4cGVjdCB0aGUgc3RhdHVzIHRvIGJlDQo+IFJURV9D T01QX09QX1NUQVRVU19TVUNDRVNTLg0KPiBUaGUgY29uc3VtZWQgcGFyYW1ldGVyIGNhbiBiZSB1 c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbiB0byBkZXRlY3QgdGhhdCBpdCBoYXMNCj4gY29tZSB0byB0 aGUgZW5kIG9mIHRoZSBvdXRwdXQgYnVmZmVyLg0KPiANCiANCltTaGFsbHldIC0gSGF2ZSBhIHF1 ZXN0aW9uIGhlcmUsIGNvbnNpZGVyIGEgc2NlbmFyaW8NCiAtICBpbnB1dCBpcyBmdWxseSByZWFk IGkuZSBjb25zdW1lZCA9IGxlbmd0aCBvZiBzcmMgZGF0YSwgDQogLSBvdXRwdXQgaXMgd3JpdHRl biBpLmUuIHByb2R1Y2VkID0gbGVuZ3RoIG9mIGRhdGEgd3JpdHRlbiBpbiBkc3QgYnVmZmVyLCBh bmQNCiAtIHN0YXR1cyA9IE9QX1NUQVRVU19TVUNDRVNTDQogICAgVGhlbiBob3cgYW4gYXBwbGlj YXRpb24gd291bGQga25vdyB0aGVyZSBpcyBtb3JlIGRhdGEgdG8gYmUgZmx1c2hlZCBhbmQgYXBw bGljYXRpb24gbmVlZCB0byByZS1lbnF1ZXVlIHJlcXVlc3Qgd2l0aCBtb3JlIG91dHB1dCBidWZm ZXI/DQoNCj4gDQo+ID4gPiArICAgICAgUlRFX0NPTVBfT1BfU1RBVFVTX1ZFUklGWV9GQUlMRUQN Cj4gPiA+ICsgICAgICAvKio8IERlY29tcHJlc3Npb24gYWZ0ZXIgY29tcHJlc3Npb24gZmFpbGVk IHRvIHJlZ2VuZXJhdGUgb3JpZ2luYWwNCj4gZGF0YSAqLw0KDQpbU2hhbGx5XSBJdCBjYW4gc2lt cGx5IGJlICJkYXRhIHZlcmlmaWNhdGlvbiBmYWlsZWQiLg0KDQo+ID4NCj4gPiBCZWxpZXZlIGl0 IGlzbid0IG5lZWRlZCB0byBiZSBwYXJ0IG9mIFNwZWMuDQo+ID4NCj4gPiA+ICsNCj4gPiA+ICsg ICAgICAvL05vdGU6DQo+ID4gPiArICAgICAgLy9RQVQgQVBJIGhhcyAxOSBlcnJvciB0eXBlcy4N Cj4gPiA+ICsgICAgICAvL0lTQS1sIGhhcyA1IGluZmxhdGUgYW5kIDYgZGVmbGF0ZSBlcnJvcnMu DQo+ID4gPiArICAgICAgLy96bGliIGhhcyA2IGVycm9ycw0KPiA+ID4gKyAgICAgIC8vUHJvcG9z ZSBvbmx5IGluY2x1ZGUgY29tbW9uIHN1YnNldCBpbiBzdGF0dXMgLSBvbmx5IHZhbHVlcyB3aGVy ZQ0KPiBhcHBsIHNob3VsZCBoYXZlIGRpZmZlcmVudA0KPiA+IGJlaGF2aW91ci4NCj4gPiA+ICsg ICAgICAvL0FkZCBzZXBhcmF0ZSBlcnJvciBmaWVsZCBvbiBvcCByZXR1cm4gd2hpY2ggYSBQTUQg Y291bGQgcG9wdWxhdGUNCj4gd2l0aCBQTUQtc3BlY2lmaWMgZGVidWcNCj4gPiBpbmZvLg0KPiA+ DQo+ID4gUHJvYmFibHkgc2hvdWxkIGFkZCBSVEVfQ09NUF9PUF9TVEFUVVNfSU5WQUxJRF9TVEFU RSBpbiBjYXNlIGFuDQo+ID4gQVBJIGlzIGludm9rZWQgaW4gaW52YWxpZCBzdGF0ZS4NCj4gW0Zp b25hXSBBZ3JlZWQNCj4gDQo+ID4gUmVzdCBTdWJzZXQgbG9va3Mgc2VsZi1jb250YWluZWQuDQo+ ID4NCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gKw0KPiA+ID4gKy8qKiBDb21wcmVzc2lvbiB0 cmFuc2Zvcm0gdHlwZXMgKi8NCj4gPiA+ICtlbnVtIHJ0ZV9jb21wX3hmb3JtX3R5cGUgew0KPiA+ ID4gKyAgICAgIFJURV9DT01QX0NPTVBSRVNTLA0KPiA+ID4gKyAgICAgIC8qKjwgQ29tcHJlc3Np b24gc2VydmljZSAtIGNvbXByZXNzICovDQo+ID4gPiArICAgICAgUlRFX0NPTVBfREVDT01QUkVT UywNCj4gPiA+ICsgICAgICAvKio8IENvbXByZXNzaW9uIHNlcnZpY2UgLSBkZWNvbXByZXNzICov DQo+ID4gPiArICAgICAgUlRFX0NPTVBfQ0hFQ0tTVU0NCj4gPiA+ICsgICAgICAvKiogQ29tcHJl c3Npb24gc2VydmljZSAtIGdlbmVyYXRlIGNoZWNrc3VtICovDQo+ID4gPiArfTsNCj4gPiA+ICsN Cj4gPg0KPiA+IEVudW1lcmF0aW9uIG1heSBiZSByZW5hbWVkIGFzIHJ0ZV9jb21wX29wX3R5cGUN Cj4gW0Zpb25hXSBTZWUgYW5zd2VyIHJlIHhmb3JtcyBiZWxvdy4NCj4gDQo+ID4NCj4gPiA+ICsv KiogUGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZGVmbGF0ZSBhbGdvcml0aG0gKi8NCj4gPiA+ ICtzdHJ1Y3QgcnRlX2NvbXBfZGVmbGF0ZV9wYXJhbXMgew0KPiA+ID4gKyAgICAgIGVudW0gcnRl X2NvbXBfaHVmZm1hbiBodWZmbWFuOw0KPiA+ID4gKyAgICAgIC8qKjwgQ29tcHJlc3Npb24gaHVm Zm1hbiBlbmNvZGluZyB0eXBlICovDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4g PiA+ICsgKiBTZXNzaW9uIFNldHVwIERhdGEgY29tbW9uIHRvIGFsbCBjb21wcmVzcyB0cmFuc2Zv cm1zLg0KPiA+ID4gKyAqIEluY2x1ZGVzIHBhcmFtZXRlcnMgY29tbW9uIHRvIHN0YXRlbGVzcyBh bmQgc3RhdGVmdWwNCj4gPiA+ICsgKi8NCj4gPiA+ICtzdHJ1Y3QgcnRlX2NvbXBfY29tcHJlc3Nf Y29tbW9uX3BhcmFtcyB7DQo+ID4gPiArICAgICAgZW51bSBydGVfY29tcF9hbGdvcml0aG0gYWxn bzsNCj4gPiA+ICsgICAgICAvKio8IEFsZ29yaXRobSB0byB1c2UgZm9yIGNvbXByZXNzIG9wZXJh dGlvbiAqLw0KPiA+ID4gKyAgICAgIHVuaW9uIHsNCj4gPiA+ICsgICAgICAgICAgICBzdHJ1Y3Qg cnRlX2NvbXBfZGVmbGF0ZV9wYXJhbXMgZGVmbGF0ZTsNCj4gPiA+ICsgICAgICAgICAgICAvKio8 IFBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gdGhlIGRlZmxhdGUgYWxnb3JpdGhtICovDQo+ID4gPiAr ICAgICAgfTsgLyoqPCBBbGdvcml0aG0gc3BlY2lmaWMgcGFyYW1ldGVycyAqLw0KPiA+ID4gKyAg ICAgIHVpbnQ4X3QgbGV2ZWw7DQo+ID4gPiArICAgICAgLyoqPCBDb21wcmVzc2lvbiBsZXZlbA0K PiA+ID4gKyAgICAgICogUmFuZ2UgaXMgMS05LCB3aGVyZSAxIGlzIGZhc3Rlc3QgY29tcHJlc3Np b24NCj4gPiA+ICsgICAgICAqIGJ1dCB3b3JzdCwgaS5lLiBoaWdoZXN0LCBjb21wcmVzc2lvbiBy YXRpby4NCj4gPiA+ICsgICAgICAqIEhpZ2hlciBudW1iZXJzIG1heSBnaXZlIGJldHRlciBjb21w cmVzc2lvbiByYXRpb3MgYW5kIGFyZSBsaWtlbHkNCj4gc2xvd2VyLg0KPiA+ID4gKyAgICAgICog VGhlIG51bWJlciBpcyBpbnRlcnByZXRlZCBieSBlYWNoIFBNRCBkaWZmZXJlbnRseS4NCj4gPiA+ ICsgICAgICAgKi8NCj4gPg0KPiA+IERpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgb2Ygc2FtZSBh bGdvIG1heSBoYXZlIGRpZmZlcmVudCBsZXZlbHMNCj4gPiBzdXBwb3J0ZWQuIFNvLCB3ZSBjYW4g YWRkIGVudW0gYWxvbmdzaWRlIHRoaXMgcGFyYW1ldGVyIHN1Y2ggYXM6DQo+ID4NCj4gPiBlbnVt IHJ0ZV9jb21wX2NvbXByZXNzaW9uX2xldmVsIHsNCj4gPiBSVEVfQ09NUF9DT01QUkVTU0lPTl9M RVZFTF9ERUZBVUxUPTAsDQo+ID4gLyoqIFVzZSBQTUQgRGVmYXVsdCAqLw0KPiA+IFJURV9DT01Q X0NPTVBSRVNTSU9OX0xFVkVMX01JTj0xLA0KPiA+IC8qKiBGYXN0ZXN0IENvbXByZXNzaW9uICov DQo+ID4gUlRFX0NPTVBfQ09NUFJFU1NJT05fTEVWRUxfTUFYPTkNCj4gPiAvKiogTWF4aW11bSBs ZXZlbCBzdXBwb3J0ZWQgYnkgY29tcHJlc3Npb24gUE1EICovDQo+ID4gfQ0KPiBbRmlvbmFdIEFn cmVlZC4NCj4gDQo+ID4NCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAq IFNlc3Npb24gU2V0dXAgRGF0YSBmb3Igc3RhdGVmdWwgY29tcHJlc3MgdHJhbnNmb3JtLg0KPiA+ ID4gKyAqIEV4dHJhIHBhcmFtcyBmb3Igc3RhdGVmdWwgdHJhbnNmb3JtDQo+ID4gPiArICovDQo+ ID4gPiArc3RydWN0IHJ0ZV9jb21wX2NvbXByZXNzX3N0YXRlZnVsX3BhcmFtcyB7DQo+ID4gPiAr ICAgICAgLy9UT0RPIDogYWRkIGV4dHJhIHBhcmFtcyBqdXN0IG5lZWRlZCBmb3Igc3RhdGVmdWws IGUuZy4NCj4gPiA+ICsgICAgICAvLyBoaXN0b3J5IGJ1ZmZlciBzaXplLCB3aW5kb3cgc2l6ZSwg c3RhdGUsIHN0YXRlIGJ1ZmZlcnMsIGV0Yy4uLj8NCj4gPg0KPiA+IEkgd2lsbCBwcm92aWRlIG15 IGNvbW1lbnRzIG9uIGl0IGluIGFub3RoZXIgZW1haWwuDQo+ID4NCj4gPiA+ICt9Ow0KPiA+ID4g Ky8qIFNlc3Npb24gU2V0dXAgRGF0YSBmb3IgY29tcHJlc3MgdHJhbnNmb3JtLiAqLw0KPiA+ID4g K3N0cnVjdCBydGVfY29tcF9jb21wcmVzc194Zm9ybSB7DQo+ID4gPiArICAgICAgc3RydWN0IHJ0 ZV9jb21wX2NvbXByZXNzX2NvbW1vbl9wYXJhbXMgY21uOw0KPiA+ID4gKyAgICAgIHN0cnVjdCBy dGVfY29tcF9jb21wcmVzc19zdGF0ZWZ1bF9wYXJhbXMgc3RhdGVmdWw7DQo+ID4gPiArfTsNCj4g PiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgKiBTZXNzaW9uIFNldHVwIERhdGEgY29tbW9uIHRv IGFsbCBkZWNvbXByZXNzIHRyYW5zZm9ybXMuDQo+ID4gPiArICogSW5jbHVkZXMgcGFyYW1ldGVy cyBjb21tb24gdG8gc3RhdGVsZXNzIGFuZCBzdGF0ZWZ1bA0KPiA+ID4gKyAqLw0KPiA+ID4gK3N0 cnVjdCBydGVfY29tcF9kZWNvbXByZXNzX2NvbW1vbl9wYXJhbXMgew0KPiA+ID4gKyAgICAgIGVu dW0gcnRlX2NvbXBfYWxnb3JpdGhtIGFsZ287DQo+ID4gPiArICAgICAgLyoqPCBBbGdvcml0aG0g dG8gdXNlIGZvciBkZWNvbXByZXNzaW9uICovDQo+ID4gPiArfTsNCj4gPiA+ICsvKioNCj4gPiA+ ICsgKiAgU2Vzc2lvbiBTZXR1cCBEYXRhIGZvciBkZWNvbXByZXNzIHRyYW5zZm9ybS4NCj4gPiA+ ICsgKiBFeHRyYSBwYXJhbXMgZm9yIHN0YXRlZnVsIHRyYW5zZm9ybQ0KPiA+ID4gKyAqLw0KPiA+ ID4gK3N0cnVjdCBydGVfY29tcF9kZWNvbXByZXNzX3N0YXRlZnVsX3BhcmFtcyB7DQo+ID4gPiAr ICAgICAgLy9UT0RPIDogYWRkIGV4dHJhIHBhcmFtcyBqdXN0IG5lZWRlZCBmb3Igc3RhdGVmdWws IGUuZy4NCj4gPiA+ICsgICAgICAvLyBoaXN0b3J5IGJ1ZmZlciBzaXplLCB3aW5kb3cgc2l6ZSwg c3RhdGUsIHN0YXRlIGJ1ZmZlcnMsIGV0Yy4uLj8NCj4gPiA+ICt9Ow0KPiA+ID4gKy8qIFNlc3Np b24gU2V0dXAgRGF0YSBmb3IgZGVjb21wcmVzcyB0cmFuc2Zvcm0uICovDQo+ID4gPiArc3RydWN0 IHJ0ZV9jb21wX2RlY29tcHJlc3NfeGZvcm0gew0KPiA+ID4gKyAgICAgIHN0cnVjdCBydGVfY29t cF9kZWNvbXByZXNzX2NvbW1vbl9wYXJhbXMgY21uOw0KPiA+ID4gKyAgICAgIHN0cnVjdCBydGVf Y29tcF9kZWNvbXByZXNzX3N0YXRlZnVsX3BhcmFtcyBzdGF0ZWZ1bDsNCj4gPiA+ICt9Ow0KPiA+ ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAqICBHZW5lcmF0ZSBjaGVja3N1bSBvbiB1bmNvbXBy ZXNzZWQgZGF0YS4NCj4gPiA+ICsgKiBBcHBsaWVzIHRvIGJvdGggY29tcHJlc3MgYW5kIGRlY29t cHJlc3Mgb3BlcmF0aW9ucy4gKi8NCj4gPiA+ICsvKiBTZXNzaW9uIFNldHVwIERhdGEgZm9yIGNo ZWNrc3VtIHRyYW5zZm9ybS4gKi8NCj4gPiA+ICtzdHJ1Y3QgcnRlX2NvbXBfY2hlY2tzdW1feGZv cm0gew0KPiA+ID4gKyAgICAgIGVudW0gcnRlX2NvbXBfY2hlY2tzdW1fdHlwZSBjaGtzdW1fdHlw ZTsNCj4gPiA+ICsgICAgICAvKio8IFRoaXMgcGFyYW1ldGVyIGRldGVybWluZXMgdGhlIGNoZWNr c3VtIHR5cGUgKi8NCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ ID4gKyAqIENvbXByZXNzaW9uIHRyYW5zZm9ybSBzdHJ1Y3R1cmUuDQo+ID4gPiArICoNCj4gPiA+ ICsgKiBUaGlzIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgY29tcHJlc3Npb24gdHJhbnNmb3JtcyBy ZXF1aXJlZCwgbXVsdGlwbGUNCj4gdHJhbnNmb3Jtcw0KPiA+ID4gKyAqIGNhbiBiZSBjaGFpbmVk IHRvZ2V0aGVyIHRvIHNwZWNpZnkgYSBjaGFpbiBvZiB0cmFuc2Zvcm1zIHN1Y2ggYXMNCj4gPiA+ ICsgKiBnZW5lcmF0ZSBjaGVja3N1bSwgdGhlbiBjb21wcmVzcy4gRWFjaCB0cmFuc2Zvcm0gc3Ry dWN0dXJlIGNhbg0KPiA+ID4gKyAqIGhvbGQgYSBzaW5nbGUgdHJhbnNmb3JtLCB0aGUgdHlwZSBm aWVsZCBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2gNCj4gdHJhbnNmb3JtDQo+ID4gPiArICogaXMg Y29udGFpbmVkIHdpdGhpbiB0aGUgdW5pb24uDQo+ID4gPiArICogVGhlIHN1cHBvcnRlZCBjb21i aW5hdGlvbnMgYXJlOg0KPiA+ID4gKyAqICAtIGNvbXByZXNzLW9ubHkNCj4gPiA+ICsgKiAgLSBk ZWNvbXByZXNzLW9ubHkNCj4gPiA+ICsgKiAgLSBnZW5lcmF0ZSBjaGVja3N1bSBhbmQgY29tcHJl c3MgaW5wdXQgZGF0YQ0KPiA+ID4gKyAqICAtIGRlY29tcHJlc3MgaW5wdXQgZGF0YSwgZ2VuZXJh dGUgY2hlY2tzdW0gb24gb3V0cHV0IGRhdGENCj4gPiA+ICsgKg0KPiA+ID4gKyAqLw0KPiA+ID4g K3N0cnVjdCBydGVfY29tcF94Zm9ybSB7DQo+ID4gPiArICAgICAgc3RydWN0IHJ0ZV9jb21wX3hm b3JtICpuZXh0Ow0KPiA+ID4gKyAgICAgIC8qKjwgbmV4dCB4Zm9ybSBpbiBjaGFpbiAqLw0KPiA+ ID4gKyAgICAgIGVudW0gcnRlX2NvbXBfeGZvcm1fdHlwZSB0eXBlOw0KPiA+ID4gKyAgICAgIC8q KjwgeGZvcm0gdHlwZSAqLw0KPiA+ID4gKyAgICAgIHVuaW9uIHsNCj4gPiA+ICsgICAgICAgICAg ICBzdHJ1Y3QgcnRlX2NvbXBfY29tcHJlc3NfeGZvcm0gY29tcHJlc3M7DQo+ID4gPiArICAgICAg ICAgICAgLyoqPCB4Zm9ybSBmb3IgY29tcHJlc3Mgb3BlcmF0aW9uICovDQo+ID4gPiArICAgICAg ICAgICAgc3RydWN0IHJ0ZV9jb21wX2RlY29tcHJlc3NfeGZvcm0gZGVjb21wcmVzczsNCj4gPiA+ ICsgICAgICAgICAgICAvKio8IHhmb3JtIGZvciBkZWNvbXByZXNzIG9wZXJhdGlvbiAqLw0KPiA+ ID4gKyAgICAgICAgICAgIHN0cnVjdCBydGVfY29tcF9jaGVja3N1bV94Zm9ybSBjaGtzdW07DQo+ ID4gPiArICAgICAgICAgICAgLyoqPCB4Zm9ybSB0byBnZW5lcmF0ZSBjaGVja3N1bXMgKi8NCj4g Pg0KPiA+IFdlIG5lZWQgY29tcHJlc3MrY2hlY2tzdW0oYW5kIGRlY29tcHJlc3MrY2hlY2tzdW0p IGFzIGEgc2luZ2xlDQo+IHhmb3JtDQo+ID4gaW5zdGVhZCBvZiByZXF1aXJpbmcgMiB4Zm9ybXMu IFRoZSB1c2Ugb2YgeGZvcm0gY2hhaW4gd2lsbCBpbnRyb2R1Y2UNCj4gPiBuZWVkbGVzcyBvdmVy aGVhZCBmb3IgdGhlIG1vc3QgdHlwaWNhbCB1c2UtY2FzZXMgb2YgY29tcCtjaGVja3N1bShhbmQN Cj4gPiBkZWNvbXArY2hlY2tzdW0pLg0KPiA+DQo+IFtGaW9uYV0gb2suDQo+IEkgY2FuIG1lcmdl IHNvIHdlIGp1c3QgaGF2ZSBjb21wcmVzcyAmIGRlY29tcHJlc3MgeGZvcm1zIHdpdGggYW4gaW50 ZWdyaXR5DQo+IChjaGVja3N1bSkgcGFyYW0uDQo+IFNvIG5vdyBJIHNlZSB3aHkgeW91IHdhbnQg dG8gcmVuYW1lIHJ0ZV9jb21wX3hmb3JtX3R5cGUgYXMNCj4gcnRlX2NvbXBfb3BfdHlwZS4NCj4g Q2FsbGluZyBpdCAuLm9wX3R5cGUgdGhvdWdoIGltcGxpZXMgYSAxOjEgbWFwcGluZyBiZXR3ZWVu IHhmb3JtIGFuZA0KPiBvcGVyYXRpb24sDQo+IHNvIGFzc3VtZXMgdGhlcmUgd2lsbCBuZXZlciBi ZSBhbnkgY2hhaW5lZCB4Zm9ybXMuDQo+IElmIHRoaXMgaXMgdGhlIGNhc2Ugd2Ugc2hvdWxkIGFs c28gcmVtb3ZlIHRoZSAqbmV4dCBwYXJhbWV0ZXIuDQo+IEknZCBmb2xsb3dlZCB0aGUgY3J5cHRv IHhmb3JtIGNoYWluIHBhdHRlcm4gaW4gY2FzZSBpdCBwcm92ZXMgbW9yZQ0KPiBleHRlbmRhYmxl IGluIGZ1dHVyZSwNCj4gYnV0IGlmIHdlIGNhbid0IGZvcmVzZWUgYW55IGNhc2UgZm9yIGl0LCB0 aGVuIHdlIHNob3VsZCBzaW1wbGlmeS4NCj4gSWYgd2UgY2hvb3NlIHRvIGtlZXAgdGhlICpuZXh0 IHRoZW4gd2Ugc2hvdWxkIGtlZXAgdGhlIG5hbWUgYXMNCj4gcnRlX2NvbXBfeGZvcm1fdHlwZS4N Cj4gDQoNCiBbU2hhbGx5XSBJIHdvdWxkIHByZWZlciB0byBrZWVwICJuZXh0IiBmb3IgZXh0ZW5z aWJpbGl0eSwgaWYgdGhhdCByZXF1aXJlIG5hbWluZyB0byBiZSByZXRhaW5lZCBhcyAieGZvcm0i IGFtIGZpbmUgYnkgdGhhdC4NCiANCkp1c3QgYSBub3RlLCBzYW1lIGlzIHByb3Bvc2FsIGZvciBo YXNoIGFzIHdlbGwgaS5lLiBjb21wcmVzcytoYXNoIG9yIGNvbXByZXNzK2NoZWNrc3VtK2hhc2gg d2lsbCBiZSBvbmUgeGZvcm0uDQpUbyBzdXBwb3J0IGNvbXByZXNzK2NoZWNrc3VtK2hhc2gsIGRh dGEgc3RydWN0dXJlIHdvdWxkIG5lZWQgdG8gYmUgbW9kaWZpZWQuDQoNCj4gDQo+ID4gPiArICAg ICAgfTsNCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gKw0KPiA+ID4gK3N0cnVjdCBydGVfY29t cF9zZXNzaW9uOw0KDQpbU2hhbGx5XSBJdCBpcyBuYW1lZCBhcyBydGVfY3J5dG9kZXZfc2Vzc2lv biBpbiBjcnlwdG8gQVBJIHVubGlrZSBoZXJlLiBTbyBpcyBpdCBpbnRlbnRpb25hbD8NCg0KPiA+ ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAqIENvbXByZXNzaW9uIE9wZXJhdGlvbi4NCj4gPiA+ ICsgKg0KPiA+ID4gKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGRhdGEgcmVsYXRpbmcgdG8g cGVyZm9ybWluZyBhIGNvbXByZXNzaW9uDQo+ID4gPiArICogb3BlcmF0aW9uIG9uIHRoZSByZWZl cmVuY2VkIG1idWYgZGF0YSBidWZmZXJzLg0KPiA+ID4gKyAqDQo+ID4gPiArICogQWxsIGNvbXBy ZXNzaW9uIG9wZXJhdGlvbnMgYXJlIE91dC1vZi1wbGFjZSAoT09QKSBvcGVyYXRpb25zLA0KPiA+ ID4gKyAqIGFzIHRoZSBzaXplIG9mIHRoZSBvdXRwdXQgZGF0YSBpcyBkaWZmZXJlbnQgdG8gdGhl IHNpemUgb2YgdGhlIGlucHV0IGRhdGEuDQo+ID4gPiArICoNCj4gPiA+ICsgKiBDb21wIG9wZXJh dGlvbnMgYXJlIGVucXVldWVkIGFuZCBkZXF1ZXVlZCBpbiBjb21wIFBNRHMgdXNpbmcNCj4gdGhl DQo+ID4gPiArICogcnRlX2NvbXBkZXZfZW5xdWV1ZV9idXJzdCgpIC8gcnRlX2NvbXBkZXZfZGVx dWV1ZV9idXJzdCgpDQo+IEFQSXMNCj4gPiA+ICsgKi8NCj4gPiA+ICtzdHJ1Y3QgcnRlX2NvbXBf b3Agew0KPiA+ID4gKyAgICAgIHVpbnQ4X3Qgc3RhdHVzOw0KPiA+ID4gKyAgICAgIC8qKjwNCj4g PiA+ICsgICAgICAqIG9wZXJhdGlvbiBzdGF0dXMgLSB1c2UgdmFsdWVzIGZyb20gZW51bSBydGVf Y29tcF9zdGF0dXMuDQo+ID4gPiArICAgICAgKiBUaGlzIGlzIHJlc2V0IHRvDQo+ID4gPiArICAg ICAgKiBSVEVfQ09NUF9PUF9TVEFUVVNfTk9UX1BST0NFU1NFRCBvbiBhbGxvY2F0aW9uIGZyb20N Cj4gbWVtcG9vbCBhbmQNCg0KW1NoYWxseV0gUGVyIG15IHVuZGVyc3RhbmRpbmcsIFJURV9DT01Q X09QX1NUQVRVU19OT1RfUFJPQ0VTU0VEIHdpbGwgYmUgc2V0IG9ubHkgYXQgdGhlIHJldHVybiBv ZiBydGVfY29tcF9vcF9hbGxvYygpIGFuZCBuZXZlciBhZnRlci4NCklmIHRoYXQgdW5kZXJzdGFu ZGluZyBjb3JyZWN0LCBzaG91bGRuJ3QgaXQgYmUgcmVuYW1lZCBhcyBSVEVfQ09NUF9PUF9TVEFU VVNfQUxMT0NBVEVEPw0KDQo+ID4gPiArICAgICAgKiB3aWxsIGJlIHNldCB0byBSVEVfQ09NUF9P UF9TVEFUVVNfU1VDQ0VTUyBhZnRlciBvcGVyYXRpb24NCj4gPiA+ICsgICAgICAqIGlzIHN1Y2Nl c3NmdWxseSBwcm9jZXNzZWQgYnkgYSBQTUQNCj4gPiA+ICsgICAgICAqLw0KPiA+ID4gKyAgICAg IHVpbnQxNl90IGRlYnVnX3N0YXR1czsNCj4gPiA+ICsgICAgICAvKio8DQo+ID4gPiArICAgICAg KiBTdGF0dXMgb2YgdGhlIG9wZXJhdGlvbiBpcyByZXR1cm5lZCBpbiB0aGUgcnRlX2NyeXB0b19v cC4NCg0KW1NoYWxseV0gVHlwbyBjb3JyZWN0aW9uIHRvIHJ0ZV9jb21wX29wDQoNCj4gPiA+ICsg ICAgICAqIFRoaXMgZmllbGQgYWxsb3dzIHRoZSBQTUQgdG8gcGFzcyBiYWNrIGV4dHJhDQo+ID4g PiArICAgICAgKiBwbWQtc3BlY2lmaWMgZGVidWcgaW5mb3JtYXRpb24uIFZhbHVlIGlzIG5vdCBk ZWZpbmVkIG9uIHRoZSBBUEkuDQo+ID4gPiArICAgICAgKi8NCj4gPiA+ICsgICAgICBzdHJ1Y3Qg cnRlX2NvbXBfc2Vzc2lvbiAqc2Vzc2lvbjsNCj4gPiA+ICsgICAgICAvKio8IEhhbmRsZSBmb3Ig dGhlIGluaXRpYWxpc2VkIHNlc3Npb24gY29udGV4dCAqLw0KPiA+ID4gKyAgICAgIHN0cnVjdCBy dGVfbWVtcG9vbCAqbWVtcG9vbDsNCj4gPiA+ICsgICAgICAvKio8IG1lbXBvb2wgZnJvbSB3aGlj aCBvcGVyYXRpb24gaXMgYWxsb2NhdGVkICovDQo+ID4gPiArICAgICAgcGh5c19hZGRyX3QgcGh5 c19hZGRyOw0KPiA+ID4gKyAgICAgIC8qKjwgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGlzIG9wZXJh dGlvbiAqLw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgIHN0cnVjdCBydGVfbWJ1ZiAqbV9zcmM7ICAg LyoqPCBzb3VyY2UgbWJ1ZiAqLw0KPiA+ID4gKyAgICAgIHN0cnVjdCBydGVfbWJ1ZiAqbV9kc3Q7 ICAgLyoqPCBkZXN0aW5hdGlvbiBtYnVmICovDQo+ID4gPiArDQo+ID4gPiArICAgICAgc3RydWN0 IHsNCj4gPiA+ICsgICAgICAgICAgICB1aW50MzJfdCBvZmZzZXQ7DQo+ID4gPiArICAgICAgICAg ICAgLyoqPCBTdGFydGluZyBwb2ludCBmb3IgY29tcHJlc3Npb24gb3IgZGVjb21wcmVzc2lvbiwN Cj4gPiA+ICsgICAgICAgICAgICAqIHNwZWNpZmllZCBhcyBudW1iZXIgb2YgYnl0ZXMgZnJvbSBz dGFydCBvZiBwYWNrZXQgaW4NCj4gPiA+ICsgICAgICAgICAgICAqIHNvdXJjZSBidWZmZXIuDQo+ ID4gPiArICAgICAgICAgICAgKiBTdGFydGluZyBwb2ludCBmb3IgY2hlY2tzdW0gZ2VuZXJhdGlv biBpbiBjb21wcmVzcyBkaXJlY3Rpb24uDQo+ID4gPiArICAgICAgICAgICAgKi8NCj4gPiA+ICsg ICAgICAgICAgICB1aW50MzJfdCBsZW5ndGg7DQo+ID4gPiArICAgICAgICAgICAgLyoqPCBUaGUg bGVuZ3RoLCBpbiBieXRlcywgb2YgdGhlIGRhdGEgaW4gc291cmNlIGJ1ZmZlcg0KPiA+ID4gKyAg ICAgICAgICAgICogdG8gYmUgY29tcHJlc3NlZCBvciBkZWNvbXByZXNzZWQuDQo+ID4gPiArICAg ICAgICAgICAgKiBBbHNvIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgb3ZlciB3aGljaCB0aGUgY2hl Y2tzdW0NCj4gPiA+ICsgICAgICAgICAgICAqIHNob3VsZCBiZSBnZW5lcmF0ZWQgaW4gY29tcHJl c3MgZGlyZWN0aW9uDQo+ID4gPiArICAgICAgICAgICAgKi8NCj4gPiA+ICsgICAgICB9IHNyYzsN Cj4gPiA+ICsgICAgICBzdHJ1Y3Qgew0KPiA+ID4gKyAgICAgICAgICAgIHVpbnQzMl90IG9mZnNl dDsNCj4gPiA+ICsgICAgICAgICAgICAvKio8IFN0YXJ0aW5nIHBvaW50IGZvciB3cml0aW5nIG91 dHB1dCBkYXRhLCBzcGVjaWZpZWQgYXMNCj4gPiA+ICsgICAgICAgICAgICAqIG51bWJlciBvZiBi eXRlcyBmcm9tIHN0YXJ0IG9mIHBhY2tldCBpbiBtX2RzdA0KPiA+ID4gKyAgICAgICAgICAgICog YnVmZmVyLiBTdGFydGluZyBwb2ludCBmb3IgY2hlY2tzdW0gZ2VuZXJhdGlvbiBpbg0KPiA+ID4g KyAgICAgICAgICAgICogZGVjb21wcmVzcyBkaXJlY3Rpb24uDQo+ID4gPiArICAgICAgICAgICAg Ki8NCg0KW1NoYWxseV0gRG9uJ3Qgd2UgbmVlZCBsZW5ndGggaGVyZT8gaW5kaWNhdGluZyBsZW5n dGggKGluIGJ5dGVzKSBvZiBhdmFpbGFibGUgZHN0IG1idWYgYXQgaW5wdXQ/DQoNCj4gPiA+ICsg ICAgICB9IGRzdDsNCj4gPiA+ICsgICAgICBlbnVtIHJ0ZV9jb21wX2ZsdXNoX2ZsYWcgZmx1c2hf ZmxhZzsNCj4gPiA+ICsgICAgICAvKio8IGRlZmluZXMgZmx1c2ggY2hhcmFjdGVyaXN0aWNzIGZv ciB0aGUgb3V0cHV0IGRhdGEuDQo+ID4gPiArICAgICAgKiBPbmx5IGFwcGxpY2FibGUgaW4gY29t cHJlc3MgZGlyZWN0aW9uLg0KPiA+ID4gKyAgICAgICovDQo+ID4gPiArICAgICAgZW51bSBydGVf Y29tcF9pbnRlZ3JpdHlfY2hlY2sgdmVyaWZ5Ow0KPiA+ID4gKyAgICAgIC8qKjwgU3BlY2lmaWVz IGlmIHRoZSBvdXRwdXQgZGF0YSBzaG91bGQgYmUgdmVyaWZpZWQuDQo+ID4gPiArICAgICAgICBP bmx5IGFwcGxpY2FibGUgaW4gY29tcHJlc3MgZGlyZWN0aW9uLg0KPiA+ID4gKyAgICAgICovDQo+ ID4NCj4gPiBBZ2FpbiwgYmVsaWV2ZSB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCB0aGlzIGJ5IG1vdmlu ZyB0byBhcHBsaWNhdGlvbi4NCj4gPg0KPiA+IFRoYW5rcw0KPiA+IFNoYWxseQ0KPiA+DQo+ID4g PiArICAgICAgdWludDY0X3QgaW5wdXRfY2hrc3VtOw0KPiA+ID4gKyAgICAgIC8qKjwgQW4gaW5w dXQgY2hlY2tzdW0gY2FuIGJlIHByb3ZpZGVkIHRvIGdlbmVyYXRlIGENCj4gPiA+ICsgICAgICAq IGN1bXVsYXRpdmUgY2hlY2tzdW0gYWNyb3NzIHNlcXVlbnRpYWwgYmxvY2tzLg0KPiA+ID4gKyAg ICAgICogQ2hlY2tzdW0gdHlwZSBpcyBhcyBzcGVjaWZpZWQgaW4gY2hrc3VtX3R5cGUgaW4geGZv cm0uDQo+ID4gPiArICAgICAgKi8NCj4gPiA+ICsgICAgICB1aW50NjRfdCBvdXRwdXRfY2hrc3Vt Ow0KPiA+ID4gKyAgICAgIC8qKjwgSWYgYSBjaGVja3N1bSBpcyBnZW5lcmF0ZWQgaXQgd2lsbCBi ZSB3cml0dGVuIGluIGhlcmUuDQo+ID4gPiArICAgICAgKiBDaGVja3N1bSB0eXBlIGlzIGFzIHNw ZWNpZmllZCBpbiBjaGtzdW1fdHlwZSBpbiB4Zm9ybS4NCj4gPiA+ICsgICAgICAqLw0KPiA+ID4g KyAgICAgIHVpbnQzMl90IGNvbnN1bWVkOw0KPiA+ID4gKyAgICAgIC8qKjwgVGhlIG51bWJlciBv ZiBieXRlcyBmcm9tIHRoZSBzb3VyY2UgYnVmZmVyDQo+ID4gPiArICAgICAgKiB3aGljaCB3ZXJl IGNvbXByZXNzZWQvZGVjb21wcmVzc2VkLg0KPiA+ID4gKyAgICAgICovDQo+ID4gPiArICAgICAg dWludDMyX3QgcHJvZHVjZWQ7DQo+ID4gPiArICAgICAgLyoqPCBUaGUgbnVtYmVyIG9mIGJ5dGVz IHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcg0KPiA+ID4gKyAgICAgICogd2hpY2gg d2VyZSBjb21wcmVzc2VkL2RlY29tcHJlc3NlZC4NCj4gPiA+ICsgICAgICAqLw0KPiA+ID4gKyAg ICAgIC8qDQo+ID4gPiArICAgICAgVE9ETyAtIEFyZSBhbnkgZXh0cmEgcGFyYW1zIG5lZWRlZCBv biBzdGF0ZWZ1bCBvcCBvciBhcmUgYWxsIGluDQo+IHhmb3JtPw0KPiA+ID4gKyAgICAgIHJ0ZV9j b21wX29wX2NvbW1vbl9wYXJhbXMvX3N0YXRlZnVsX3BhcmFtcz8NCj4gPiA+ICsgICAgICBleHRy YSB2YWx1ZXMgYXBwbHkgdG8gZmx1c2ggZmxhZw0KPiA+ID4gKyAgICAgICovDQo+ID4gPiArfTsN Cj4gPiA+ICsNCj4gPiA+ICsNCj4gPiA+ICsgaW50DQo+ID4gPiArIHJ0ZV9jb21wZGV2X2NvbmZp Z3VyZSh1aW50OF90IGRldl9pZCwgc3RydWN0IHJ0ZV9jb21wZGV2X2NvbmZpZw0KPiAqY29uZmln KTsNCj4gPiA+ICsgaW50DQo+ID4gPiArIHJ0ZV9jb21wZGV2X3N0YXJ0KHVpbnQ4X3QgZGV2X2lk KTsNCj4gPiA+ICsgdm9pZA0KPiA+ID4gKyBydGVfY29tcGRldl9zdG9wKHVpbnQ4X3QgZGV2X2lk KTsNCj4gPiA+IC8qIGV0Yy4uLlJlc3Qgb2YgQVBJcyBmb2xsb3cgc2FtZSBwYXR0ZXJuLCBzaW1p bGFyIHRvIGNyeXB0b2Rldiwgc3RyaXBwZWQNCj4gZnJvbSBSRkMgZm9yIHNpbXBsaWNpdHkuICov DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4gKyAqIENvbXByZXNzaW9uIHN1cHBvcnRlZCBmZWF0 dXJlIGZsYWdzDQo+ID4gPiArICoNCj4gPiA+ICsgKiBOb3RlOg0KPiA+ID4gKyAqIE5ldyBmZWF0 dXJlcyBmbGFncyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdA0KPiA+ID4g KyAqDQo+ID4gPiArICogS2VlcCB0aGVzZSBmbGFncyBzeW5jaHJvbmlzZWQgd2l0aA0KPiBydGVf Y29tcGRldl9nZXRfY29tcF9mZWF0dXJlX25hbWUoKQ0KPiA+ID4gKyAqIE5vdGU6IGJpdCBudW1i ZXJzIGhlcmUgYXJlIHNhbWUgYXMgb24gY3J5cHRvZGV2LCBoZW5jZSB0aGUgZ2Fwcy4NCj4gPiA+ ICsgKiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCB3aGljaCBtYXkgY2hhbmdlLg0K PiA+ID4gKyAqLw0KPiA+ID4gKyAjZGVmaW5lICAgICAgIFJURV9DT01QREVWX0ZGX0NQVV9TU0Ug ICAgICAgICAgKDFVTEwgPDwgMykNCj4gPiA+ICsgLyoqPCBVdGlsaXNlcyBDUFUgU0lNRCBTU0Ug aW5zdHJ1Y3Rpb25zICovDQo+ID4gPiArICNkZWZpbmUgICAgICAgUlRFX0NPTVBERVZfRkZfQ1BV X0FWWCAgICAgICAgICAoMVVMTCA8PCA0KQ0KPiA+ID4gKyAvKio8IFV0aWxpc2VzIENQVSBTSU1E IEFWWCBpbnN0cnVjdGlvbnMgKi8NCj4gPiA+ICsgI2RlZmluZSAgICAgICBSVEVfQ09NUERFVl9G Rl9DUFVfQVZYMiAgICAgICAgICgxVUxMIDw8IDUpDQo+ID4gPiArIC8qKjwgVXRpbGlzZXMgQ1BV IFNJTUQgQVZYMiBpbnN0cnVjdGlvbnMgKi8NCj4gPiA+ICsgI2RlZmluZSAgICAgICBSVEVfQ09N UERFVl9GRl9IV19BQ0NFTEVSQVRFRCAgICAgICAgICAgKDFVTEwgPDwgNykNCj4gPiA+ICsgLyoq PCBPcGVyYXRpb25zIGFyZSBvZmYtbG9hZGVkIHRvIGFuIGV4dGVybmFsIGhhcmR3YXJlIGFjY2Vs ZXJhdG9yICovDQo+ID4gPiArICNkZWZpbmUgICAgICAgUlRFX0NPTVBERVZfRkZfQ1BVX0FWWDUx MiAgICAgICAgICAgICAgICgxVUxMIDw8IDgpDQo+ID4gPiArIC8qKjwgVXRpbGlzZXMgQ1BVIFNJ TUQgQVZYNTEyIGluc3RydWN0aW9ucyAqLw0KPiA+ID4gKyAjZGVmaW5lICAgICAgIFJURV9DT01Q REVWX0ZGX0NQVV9ORU9OICAgICAgICAgICAgICAgICAgICAgICAgKDFVTEwgPDwgMTApDQo+ID4g PiArIC8qKjwgVXRpbGlzZXMgQ1BVIE5FT04gaW5zdHJ1Y3Rpb25zICovDQo+ID4gPiArICNkZWZp bmUgICAgICAgUlRFX0NPTVBERVZfRkZfQ1BVX0FSTV9DRSAgICAgICAgICAgICAgICgxVUxMIDw8 IDExKQ0KPiA+ID4gKyAvKio8IFV0aWxpc2VzIEFSTSBDUFUgQ3J5cHRvZ3JhcGhpYyBFeHRlbnNp b25zICovDQo+ID4gPiArDQo+ID4gPiArICNkZWZpbmUgICAgIFJURV9DT01QX0ZGX01CVUZfU0NB VFRFUl9HQVRIRVIgICAgICAgICAgICAgICAgICAgICgxVUxMIDw8DQo+IDEyKQ0KPiA+ID4gKyAv Kio8IFNjYXR0ZXItZ2F0aGVyIG1idWZzIGFyZSBzdXBwb3J0ZWQgKi8NCj4gPiA+ICsgI2RlZmlu ZSAgICAgUlRFX0NPTVBfRkZfU1RBVEVGVUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKDFVTEwgPDwNCj4gMTMpDQo+ID4gPiArIC8qKjwgU3RhdGVmdWwg Y29tcHJlc3Npb24gaXMgc3VwcG9ydGVkICovDQo+ID4gPiArICNkZWZpbmUgICAgIFJURV9DT01Q REVWX0ZGX01VTFRJX1BLVF9DSEVDS1NVTSAgICAgICAgICAgICAgICgxVUxMIDw8DQo+IDE0KQ0K PiA+ID4gKyAvKio8IEdlbmVyYXRpb24gb2YgY2hlY2tzdW0gYWNyb3NzIG11bHRpcGxlIHBhY2tl dHMgaXMgc3VwcG9ydGVkICovDQo+ID4gPiArDQoNCltTaGFsbHldIFdoYXQgaXMgbWVhbmluZyBv ZiB0aGlzIGZlYXR1cmU/IGhvdyBpdCBpcyBzdXBwb3NlZCB0byBpbXBhY3QgYnVyc3Qgb3BlcmF0 aW9ucy4NCg0KPiA+ID4gKw0KPiA+ID4gKw0KPiA+ID4gKy8qKiAgQ29tcHJlc3Npb24gZGV2aWNl IGluZm9ybWF0aW9uICovDQo+ID4gPiArc3RydWN0IHJ0ZV9jb21wZGV2X2luZm8gew0KPiA+ID4g KyAgICAgIGNvbnN0IGNoYXIgKmRyaXZlcl9uYW1lOyAgLyoqPCBEcml2ZXIgbmFtZS4gKi8NCj4g PiA+ICsgICAgICB1aW50OF90IGRyaXZlcl9pZDsgICAgICAgICAgICAgICAvKio8IERyaXZlciBp ZGVudGlmaWVyICovDQo+ID4gPiArICAgICAgc3RydWN0IHJ0ZV9kZXZpY2UgKmRldjsgICAgICAg ICAgLyoqPCBEZXZpY2UgaW5mb3JtYXRpb24uICovDQo+ID4gPiArDQo+ID4gPiArICAgICAgdWlu dDY0X3QgZmVhdHVyZV9mbGFnczsNCj4gPiA+ICsgICAgICAvKio8IGRldmljZSBmZWF0dXJlIGZs YWdzICovDQo+ID4gPiArICAgICBjb25zdCBzdHJ1Y3QgcnRlX2NvbXBfY2FwYWJpbGl0aWVzICpj YXBhYmlsaXRpZXM7DQo+ID4gPiArICAgICAgLyoqPCBBcnJheSBvZiBkZXZpY2VzIGNhcGFiaWxp dGllcyAqLw0KPiA+ID4NCj4gPiA+ICsgICAgICB1bnNpZ25lZCBtYXhfbmJfcXVldWVfcGFpcnM7 DQo+ID4gPiArICAgICAgLyoqPCBNYXhpbXVtIG51bWJlciBvZiBxdWV1ZXMgcGFpcnMgc3VwcG9y dGVkIGJ5IGRldmljZS4gKi8NCj4gPiA+ICsgICAgICB1bnNpZ25lZCBtYXhfbmJfc2Vzc2lvbnM7 DQo+ID4gPiArICAgICAgLyoqPCBNYXhpbXVtIG51bWJlciBvZiBzZXNzaW9ucyBzdXBwb3J0ZWQg YnkgZGV2aWNlLiAqLw0KPiA+ID4gKyAgICAgIHVuc2lnbmVkIGludCBtYXhfbmJfc2Vzc2lvbnNf cGVyX3FwOw0KPiA+ID4gKyAgICAgIC8qKjwgTWF4aW11bSBudW1iZXIgb2Ygc2Vzc2lvbnMgcGVy IHF1ZXVlIHBhaXIuDQo+ID4gPiArICAgICAgKiBEZWZhdWx0IDAgZm9yIGluZmluaXRlIHNlc3Np b25zDQo+ID4gPiArICAgICAgKi8NCj4gPiA+ICsgICAgICAvKiBUT0RPIHVpbnQ4X3QgbmVlZHNf aW50ZXJtZWRpYXRlX2J1ZmZlciBPUiBzaG91bGQgdGhpcyBiZSBhDQo+IGZlYXR1cmUgZmxhZz8g T3Igbm90IG5lY2Vzc2FyeT8NCj4gPiAqLw0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArDQo+ ID4gPiArLyoqIENvbXByZXNzaW9uIGRldmljZSBzdGF0aXN0aWNzICovDQo+ID4gPiArc3RydWN0 IHJ0ZV9jb21wZGV2X3N0YXRzIHsNCj4gPiA+ICsgICAgICB1aW50NjRfdCBlbnF1ZXVlZF9jb3Vu dDsNCj4gPiA+ICsgICAgICAvKio8IENvdW50IG9mIGFsbCBvcGVyYXRpb25zIGVucXVldWVkICov DQo+ID4gPiArICAgICAgdWludDY0X3QgZGVxdWV1ZWRfY291bnQ7DQo+ID4gPiArICAgICAgLyoq PCBDb3VudCBvZiBhbGwgb3BlcmF0aW9ucyBkZXF1ZXVlZCAqLw0KPiA+ID4gKw0KPiA+ID4gKyAg ICAgIHVpbnQ2NF90IGVucXVldWVfZXJyX2NvdW50Ow0KPiA+ID4gKyAgICAgIC8qKjwgVG90YWwg ZXJyb3IgY291bnQgb24gb3BlcmF0aW9ucyBlbnF1ZXVlZCAqLw0KPiA+ID4gKyAgICAgIHVpbnQ2 NF90IGRlcXVldWVfZXJyX2NvdW50Ow0KPiA+ID4gKyAgICAgIC8qKjwgVG90YWwgZXJyb3IgY291 bnQgb24gb3BlcmF0aW9ucyBkZXF1ZXVlZCAqLw0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiAr DQo+ID4gPiArLyoqIENvbXByZXNzaW9uIGRldmljZSBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSAq Lw0KPiA+ID4gK3N0cnVjdCBydGVfY29tcGRldl9jb25maWcgew0KPiA+ID4gKyAgICAgIGludCBz b2NrZXRfaWQ7DQo+ID4gPiArICAgICAgLyoqPCBTb2NrZXQgdG8gYWxsb2NhdGUgcmVzb3VyY2Vz IG9uICovDQo+ID4gPiArICAgICAgdWludDE2X3QgbmJfcXVldWVfcGFpcnM7DQo+ID4gPiArICAg ICAgLyoqPCBUb3RhbCBudW1iZXIgb2YgcXVldWUgcGFpcnMgdG8gY29uZmlndXJlIG9uIGEgZGV2 aWNlLiAqLw0KPiA+ID4gKyAgICAgIHVpbnQzMl90IGNvbXBfaW50ZXJtZWRpYXRlX2J1Zl9zaXpl Ow0KPiA+ID4gKyAgICAgLyoqPCBGb3IgZGVmbGF0ZSBhbGdvcml0aG0gSFcgYWNjZWxlcmF0b3Jz IHVzdWFsbHkgbmVlZCB0byBhbGxvY2F0ZQ0KPiA+ID4gKyAgICAgICogYSBwb29sIG9mIGludGVy bWVkaWF0ZSBidWZmZXJzIGZvciBkeW5hbWljIGNvbXByZXNzaW9uLg0KDQpbU2hhbGx5XSBEbyB5 b3UgbWVhbiBEeW5hbWljIEh1ZmZtYW4gY29kaW5nIGJhc2VkIGNvbXByZXNzaW9uPw0KDQo+ID4g PiArICAgICAgKiBUaGlzIGluZGljYXRlcyB0aGUgYnVmZmVyIHNpemUgYW5kIHNob3VsZCBiZQ0K PiA+ID4gKyAgICAgICogc2V0IGEgbGl0dGxlIGxhcmdlciB0aGFuIHRoZSBleHBlY3RlZCBtYXgg c291cmNlIGJ1ZmZlciBzaXplLg0KPiA+ID4gKyAgICAgICogaWYgdGhlIG91dHB1dCBvZiBzdGF0 aWMgY29tcHJlc3Npb24gZG9lc24ndCBmaXQgaW4gdGhlDQo+ID4gPiArICAgICAgKiBpbnRlcm1l ZGlhdGUgYnVmZmVyIGR5bmFtaWMgY29tcHJlc3Npb24gbWF5IG5vdCBiZSBwb3NzaWJsZSwNCj4g PiA+ICsgICAgICAqIGluIHRoaXMgY2FzZSB0aGUgYWNjZWxlcmF0b3IgbWF5IHJldmVydCBiYWNr IHRvIHN0YXRpYyBjb21wcmVzc2lvbi4NCj4gPiA+ICsgICAgICAqLw0KPiA+ID4gK307DQo+ID4g PiArDQo+ID4gPiArDQo+ID4gPiArLyoqIENvbXByZXNzaW9uIGRldmljZSBxdWV1ZSBwYWlyIGNv bmZpZ3VyYXRpb24gc3RydWN0dXJlLiAqLw0KPiA+ID4gK3N0cnVjdCBydGVfY29tcGRldl9xcF9j b25mIHsNCj4gPiA+ICsgICAgICB1aW50MzJfdCBuYl9kZXNjcmlwdG9yczsgLyoqPCBOdW1iZXIg b2YgZGVzY3JpcHRvcnMgcGVyIHF1ZXVlIHBhaXINCj4gKi8NCj4gPiA+ICt9Ow0KPiA+ID4gKw0K PiA+ID4gKw0KDQpbU2hhbGx5XSBTdWJzZXF1ZW50IEFQSXMgYW5kIHBhcnQgb2YgYWJvdmUgaGFz IHJlZmVyZW5jZSB0byBjcnlwdG9kZXYgYW5kIEkgaGF2ZSBzb21lIHF1ZXN0aW9uIG9uIHRoZWly IG9uZS10by1vbmUgbWFwcGluZy4gSSB3b3VsZCBub3QgbGlzdCB0aGVtIHJpZ2h0IG5vdy4gV2ls bCB0YWtlIHVwIG9uY2Ugd2UgZnJlZXplIGZlZWRiYWNrcyBvbiBjdXJyZW50IFJGQyB2ZXJzaW9u IHNvIHRoYXQgd2UgY2FuIGhhdmUgZm9jdXNlZCBkaXNjdXNzaW9uIGFyb3VuZCByZXN0Lg0KDQpU aGFua3MNClNoYWxseQ0KDQo+ID4gPiArdHlwZWRlZiB1aW50MTZfdCAoKmRlcXVldWVfcGt0X2J1 cnN0X3QpKHZvaWQgKnFwLA0KPiA+ID4gKyAgICAgICAgICAgIHN0cnVjdCBydGVfY29tcF9vcCAq Km9wcywgdWludDE2X3QgbmJfb3BzKTsNCj4gPiA+ICsvKio8IERlcXVldWUgcHJvY2Vzc2VkIHBh Y2tldHMgZnJvbSBxdWV1ZSBwYWlyIG9mIGEgZGV2aWNlLiAqLw0KPiA+ID4gKw0KPiA+ID4gK3R5 cGVkZWYgdWludDE2X3QgKCplbnF1ZXVlX3BrdF9idXJzdF90KSh2b2lkICpxcCwNCj4gPiA+ICsg ICAgICAgICAgICBzdHJ1Y3QgcnRlX2NvbXBfb3AgKipvcHMsIHVpbnQxNl90IG5iX29wcyk7DQo+ ID4gPiArLyoqPCBFbnF1ZXVlIHBhY2tldHMgZm9yIHByb2Nlc3Npbmcgb24gcXVldWUgcGFpciBv ZiBhIGRldmljZS4gKi8NCj4gPiA+ICsNCj4gPiA+ICsNCj4gPiA+ICsNCj4gPiA+ICsvKiogVGhl IGRhdGEgc3RydWN0dXJlIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGNvbXByZXNzaW9uIGRldmljZS4g Ki8NCj4gPiA+ICtzdHJ1Y3QgcnRlX2NvbXBkZXYgew0KPiA+ID4gKw0KPiA+ID4gKyAgICAgIGRl cXVldWVfcGt0X2J1cnN0X3QgZGVxdWV1ZV9idXJzdDsNCj4gPiA+ICsgICAgICAvKio8IFBvaW50 ZXIgdG8gUE1EIHJlY2VpdmUgZnVuY3Rpb24uICovDQo+ID4gPiArICAgICAgZW5xdWV1ZV9wa3Rf YnVyc3RfdCBlbnF1ZXVlX2J1cnN0Ow0KPiA+ID4gKyAgICAgIC8qKjwgUG9pbnRlciB0byBQTUQg dHJhbnNtaXQgZnVuY3Rpb24uICovDQo+ID4gPiArDQo+ID4gPiArICAgICAgc3RydWN0IHJ0ZV9j b21wZGV2X2RhdGEgKmRhdGE7DQo+ID4gPiArICAgICAgLyoqPCBQb2ludGVyIHRvIGRldmljZSBk YXRhICovDQo+ID4gPiArICAgICAgc3RydWN0IHJ0ZV9jb21wZGV2X29wcyAqZGV2X29wczsNCj4g PiA+ICsgICAgICAvKio8IEZ1bmN0aW9ucyBleHBvcnRlZCBieSBQTUQgKi8NCj4gPiA+ICsgICAg ICB1aW50NjRfdCBmZWF0dXJlX2ZsYWdzOw0KPiA+ID4gKyAgICAgIC8qKjwgU3VwcG9ydGVkIGZl YXR1cmVzICovDQo+ID4gPiArDQo+ID4gPiArICAgICBzdHJ1Y3QgcnRlX2RldmljZSAqZGV2aWNl Ow0KPiA+ID4gKyAgICAgIC8qKjwgQmFja2luZyBkZXZpY2UgKi8NCj4gPiA+ICsNCj4gPiA+ICsg ICAgICB1aW50OF90IGRyaXZlcl9pZDsNCj4gPiA+ICsgICAgICAvKio8IGRyaXZlciBpZGVudGlm aWVyKi8NCj4gPiA+ICsNCj4gPiA+ICsgICAgICB1aW50OF90IGF0dGFjaGVkIDogMTsNCj4gPiA+ ICsgICAgICAvKio8IEZsYWcgaW5kaWNhdGluZyB0aGUgZGV2aWNlIGlzIGF0dGFjaGVkICovDQo+ ID4gPiArDQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAqDQo+ID4gPiAr ICogVGhlIGRhdGEgcGFydCwgd2l0aCBubyBmdW5jdGlvbiBwb2ludGVycywgYXNzb2NpYXRlZCB3 aXRoIGVhY2ggZGV2aWNlLg0KPiA+ID4gKyAqDQo+ID4gPiArICogVGhpcyBzdHJ1Y3R1cmUgaXMg c2FmZSB0byBwbGFjZSBpbiBzaGFyZWQgbWVtb3J5IHRvIGJlIGNvbW1vbiBhbW9uZw0KPiA+ID4g KyAqIGRpZmZlcmVudCBwcm9jZXNzZXMgaW4gYSBtdWx0aS1wcm9jZXNzIGNvbmZpZ3VyYXRpb24u DQo+ID4gPiArICovDQo+ID4gPiArc3RydWN0IHJ0ZV9jb21wZGV2X2RhdGEgew0KPiA+ID4gKyAg ICAgIHVpbnQ4X3QgZGV2X2lkOw0KPiA+ID4gKyAgICAgIC8qKjwgRGV2aWNlIElEIGZvciB0aGlz IGluc3RhbmNlICovDQo+ID4gPiArICAgICAgdWludDhfdCBzb2NrZXRfaWQ7DQo+ID4gPiArICAg ICAgLyoqPCBTb2NrZXQgSUQgd2hlcmUgbWVtb3J5IGlzIGFsbG9jYXRlZCAqLw0KPiA+ID4gKyAg ICAgIGNoYXIgbmFtZVtSVEVfQ09NUERFVl9OQU1FX01BWF9MRU5dOw0KPiA+ID4gKyAgICAgIC8q KjwgVW5pcXVlIGlkZW50aWZpZXIgbmFtZSAqLw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgIHVpbnQ4 X3QgZGV2X3N0YXJ0ZWQgOiAxOw0KPiA+ID4gKyAgICAgIC8qKjwgRGV2aWNlIHN0YXRlOiBTVEFS VEVEKDEpL1NUT1BQRUQoMCkgKi8NCj4gPiA+ICsNCj4gPiA+ICsgICAgICB2b2lkICoqcXVldWVf cGFpcnM7DQo+ID4gPiArICAgICAgLyoqPCBBcnJheSBvZiBwb2ludGVycyB0byBxdWV1ZSBwYWly cy4gKi8NCj4gPiA+ICsgICAgICB1aW50MTZfdCBuYl9xdWV1ZV9wYWlyczsNCj4gPiA+ICsgICAg ICAvKio8IE51bWJlciBvZiBkZXZpY2UgcXVldWUgcGFpcnMuICovDQo+ID4gPiArDQo+ID4gPiAr ICAgICAgdm9pZCAqZGV2X3ByaXZhdGU7DQo+ID4gPiArICAgICAgLyoqPCBQTUQtc3BlY2lmaWMg cHJpdmF0ZSBkYXRhICovDQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0K PiA+ID4gKyAqDQo+ID4gPiArICogRGVxdWV1ZSBhIGJ1cnN0IG9mIHByb2Nlc3NlZCBjb21wcmVz c2lvbiBvcGVyYXRpb25zIGZyb20gYSBxdWV1ZQ0KPiBvbiB0aGUNCj4gPiA+ICsgKiBkZXZpY2Uu IFRoZSBkZXF1ZXVlZCBvcGVyYXRpb24gYXJlIHN0b3JlZCBpbiAqcnRlX2NvbXBfb3AqDQo+IHN0 cnVjdHVyZXMNCj4gPiA+ICsgKiB3aG9zZSBwb2ludGVycyBhcmUgc3VwcGxpZWQgaW4gdGhlICpv cHMqIGFycmF5Lg0KPiA+ID4gKyAqDQo+ID4gPiArICogVGhlIHJ0ZV9jb21wZGV2X2RlcXVldWVf YnVyc3QoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIgb2YNCj4gb3BzDQo+ID4gPiArICog YWN0dWFsbHkgZGVxdWV1ZWQsIHdoaWNoIGlzIHRoZSBudW1iZXIgb2YgKnJ0ZV9jb21wX29wKiBk YXRhDQo+IHN0cnVjdHVyZXMNCj4gPiA+ICsgKiBlZmZlY3RpdmVseSBzdXBwbGllZCBpbnRvIHRo ZSAqb3BzKiBhcnJheS4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIEEgcmV0dXJuIHZhbHVlIGVxdWFs IHRvICpuYl9vcHMqIGluZGljYXRlcyB0aGF0IHRoZSBxdWV1ZSBjb250YWluZWQNCj4gPiA+ICsg KiBhdCBsZWFzdCAqbmJfb3BzKiBvcGVyYXRpb25zLCBhbmQgdGhpcyBpcyBsaWtlbHkgdG8gc2ln bmlmeSB0aGF0IG90aGVyDQo+ID4gPiArICogcHJvY2Vzc2VkIG9wZXJhdGlvbnMgcmVtYWluIGlu IHRoZSBkZXZpY2VzIG91dHB1dCBxdWV1ZS4NCj4gQXBwbGljYXRpb25zDQo+ID4gPiArICogaW1w bGVtZW50aW5nIGEgInJldHJpZXZlIGFzIG1hbnkgcHJvY2Vzc2VkIG9wZXJhdGlvbnMgYXMgcG9z c2libGUiDQo+IHBvbGljeQ0KPiA+ID4gKyAqIGNhbiBjaGVjayB0aGlzIHNwZWNpZmljIGNhc2Ug YW5kIGtlZXAgaW52b2tpbmcgdGhlDQo+ID4gPiArICogcnRlX2NvbXBkZXZfZGVxdWV1ZV9idXJz dCgpIGZ1bmN0aW9uIHVudGlsIGEgdmFsdWUgbGVzcyB0aGFuDQo+ID4gPiArICogKm5iX29wcyog aXMgcmV0dXJuZWQuDQo+ID4gPiArICoNCj4gPiA+ICsgKiBUaGUgcnRlX2NvbXBkZXZfZGVxdWV1 ZV9idXJzdCgpIGZ1bmN0aW9uIGRvZXMgbm90IHByb3ZpZGUgYW55DQo+IGVycm9yDQo+ID4gPiAr ICogbm90aWZpY2F0aW9uIHRvIGF2b2lkIHRoZSBjb3JyZXNwb25kaW5nIG92ZXJoZWFkLg0KPiA+ ID4gKyAqDQo+ID4gPiArICogQHBhcmFtICAgZGV2X2lkICAgICAgIFRoZSBjb21wcmVzc2lvbiBk ZXZpY2UgaWRlbnRpZmllcg0KPiA+ID4gKyAqIEBwYXJhbSAgIHFwX2lkICAgICAgICBUaGUgaW5k ZXggb2YgdGhlIHF1ZXVlIHBhaXIgZnJvbSB3aGljaCB0bw0KPiA+ID4gKyAqICAgICAgICAgICAg ICAgICAgICAgICByZXRyaWV2ZSBwcm9jZXNzZWQgcGFja2V0cy4gVGhlIHZhbHVlIG11c3QgYmUN Cj4gPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHJhbmdlIFswLCBuYl9xdWV1 ZV9wYWlyIC0gMV0gcHJldmlvdXNseQ0KPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICBz dXBwbGllZCB0byBydGVfY29tcGRldl9jb25maWd1cmUoKS4NCj4gPiA+ICsgKiBAcGFyYW0gICBv cHMgICAgICAgICAgVGhlIGFkZHJlc3Mgb2YgYW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8NCj4gPiA+ ICsgKiAgICAgICAgICAgICAgICAgICAgICAgKnJ0ZV9jb21wX29wKiBzdHJ1Y3R1cmVzIHRoYXQg bXVzdCBiZQ0KPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICBsYXJnZSBlbm91Z2ggdG8g c3RvcmUgKm5iX29wcyogcG9pbnRlcnMgaW4gaXQuDQo+ID4gPiArICogQHBhcmFtICAgbmJfb3Bz ICAgICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBvcGVyYXRpb25zIHRvDQo+IGRlcXVldWUuDQo+ ID4gPiArICoNCj4gPiA+ICsgKiBAcmV0dXJuDQo+ID4gPiArICogICAtIFRoZSBudW1iZXIgb2Yg b3BlcmF0aW9ucyBhY3R1YWxseSBkZXF1ZXVlZCwgd2hpY2ggaXMgdGhlIG51bWJlcg0KPiA+ID4g KyAqICAgb2YgcG9pbnRlcnMgdG8gKnJ0ZV9jb21wX29wKiBzdHJ1Y3R1cmVzIGVmZmVjdGl2ZWx5 IHN1cHBsaWVkIHRvIHRoZQ0KPiA+ID4gKyAqICAgKm9wcyogYXJyYXkuDQo+ID4gPiArICovDQo+ ID4gPiArc3RhdGljIGlubGluZSB1aW50MTZfdA0KPiA+ID4gK3J0ZV9jb21wZGV2X2RlcXVldWVf YnVyc3QodWludDhfdCBkZXZfaWQsIHVpbnQxNl90IHFwX2lkLA0KPiA+ID4gKyAgICAgICAgICAg IHN0cnVjdCBydGVfY29tcF9vcCAqKm9wcywgdWludDE2X3QgbmJfb3BzKQ0KPiA+ID4gK3sNCj4g PiA+ICsgICAgICBzdHJ1Y3QgcnRlX2NvbXBkZXYgKmRldiA9ICZydGVfY29tcGRldnNbZGV2X2lk XTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICBuYl9vcHMgPSAoKmRldi0+ZGVxdWV1ZV9idXJzdCkN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgKGRldi0+ZGF0YS0+cXVldWVfcGFpcnNbcXBfaWRd LCBvcHMsIG5iX29wcyk7DQo+ID4gPiArDQo+ID4gPiArICAgICAgcmV0dXJuIG5iX29wczsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICogRW5xdWV1ZSBhIGJ1cnN0IG9m IG9wZXJhdGlvbnMgZm9yIHByb2Nlc3Npbmcgb24gYSBjb21wcmVzc2lvbg0KPiBkZXZpY2UuDQo+ ID4gPiArICoNCj4gPiA+ICsgKiBUaGUgcnRlX2NvbXBkZXZfZW5xdWV1ZV9idXJzdCgpIGZ1bmN0 aW9uIGlzIGludm9rZWQgdG8gcGxhY2UNCj4gPiA+ICsgKiBjb21wIG9wZXJhdGlvbnMgb24gdGhl IHF1ZXVlICpxcF9pZCogb2YgdGhlIGRldmljZSBkZXNpZ25hdGVkIGJ5DQo+ID4gPiArICogaXRz ICpkZXZfaWQqLg0KPiA+ID4gKyAqDQo+ID4gPiArICogVGhlICpuYl9vcHMqIHBhcmFtZXRlciBp cyB0aGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgdG8gcHJvY2Vzcw0KPiB3aGljaCBhcmUNCj4gPiA+ ICsgKiBzdXBwbGllZCBpbiB0aGUgKm9wcyogYXJyYXkgb2YgKnJ0ZV9jb21wX29wKiBzdHJ1Y3R1 cmVzLg0KPiA+ID4gKyAqDQo+ID4gPiArICogVGhlIHJ0ZV9jb21wZGV2X2VucXVldWVfYnVyc3Qo KSBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIgb2YNCj4gPiA+ICsgKiBvcGVyYXRpb25zIGl0 IGFjdHVhbGx5IGVucXVldWVkIGZvciBwcm9jZXNzaW5nLiBBIHJldHVybiB2YWx1ZSBlcXVhbA0K PiB0bw0KPiA+ID4gKyAqICpuYl9vcHMqIG1lYW5zIHRoYXQgYWxsIHBhY2tldHMgaGF2ZSBiZWVu IGVucXVldWVkLg0KPiA+ID4gKyAqDQo+ID4gPiArICogQHBhcmFtICAgZGV2X2lkICAgICAgIFRo ZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UuDQo+ID4gPiArICogQHBhcmFtICAgcXBfaWQgICAg ICAgIFRoZSBpbmRleCBvZiB0aGUgcXVldWUgcGFpciB3aGljaCBwYWNrZXRzIGFyZQ0KPiA+ID4g KyAqICAgICAgICAgICAgICAgICAgICAgICB0byBiZSBlbnF1ZXVlZCBmb3IgcHJvY2Vzc2luZy4g VGhlIHZhbHVlDQo+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgaW4gdGhl IHJhbmdlIFswLCBuYl9xdWV1ZV9wYWlycyAtIDFdDQo+ID4gPiArICogICAgICAgICAgICAgICAg ICAgICAgIHByZXZpb3VzbHkgc3VwcGxpZWQgdG8NCj4gPiA+ICsgKiAgICAgICAgICAgICAgICAg ICAgICAgKnJ0ZV9jb21wZGV2X2NvbmZpZ3VyZSouDQo+ID4gPiArICogQHBhcmFtICAgb3BzICAg ICAgICAgIFRoZSBhZGRyZXNzIG9mIGFuIGFycmF5IG9mICpuYl9vcHMqIHBvaW50ZXJzDQo+ID4g PiArICogICAgICAgICAgICAgICAgICAgICAgIHRvICpydGVfY29tcF9vcCogc3RydWN0dXJlcyB3 aGljaCBjb250YWluDQo+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgIHRoZSBvcGVyYXRp b25zIHRvIGJlIHByb2Nlc3NlZC4NCj4gPiA+ICsgKiBAcGFyYW0gICBuYl9vcHMgICAgICAgVGhl IG51bWJlciBvZiBvcGVyYXRpb25zIHRvIHByb2Nlc3MuDQo+ID4gPiArICoNCj4gPiA+ICsgKiBA cmV0dXJuDQo+ID4gPiArICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIGFjdHVhbGx5IGVucXVl dWVkIG9uIHRoZSBkZXZpY2UuIFRoZQ0KPiByZXR1cm4NCj4gPiA+ICsgKiB2YWx1ZSBjYW4gYmUg bGVzcyB0aGFuIHRoZSB2YWx1ZSBvZiB0aGUgKm5iX29wcyogcGFyYW1ldGVyIHdoZW4NCj4gdGhl DQo+ID4gPiArICogZGV2aWNlJ3MgcXVldWUgaXMgZnVsbCBvciBpZiBpbnZhbGlkIHBhcmFtZXRl cnMgYXJlIHNwZWNpZmllZCBpbg0KPiA+ID4gKyAqIGEgKnJ0ZV9jb21wX29wKi4NCj4gPiA+ICsg Ki8NCj4gPiA+ICtzdGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ID4gPiArcnRlX2NvbXBkZXZfZW5x dWV1ZV9idXJzdCh1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBfaWQsDQo+ID4gPiArICAgICAg ICAgICAgc3RydWN0IHJ0ZV9jb21wX29wICoqb3BzLCB1aW50MTZfdCBuYl9vcHMpDQo+ID4gPiAr ew0KPiA+ID4gKyAgICAgIHN0cnVjdCBydGVfY29tcGRldiAqZGV2ID0gJnJ0ZV9jcnlwdG9kZXZz W2Rldl9pZF07DQo+ID4gPiArDQo+ID4gPiArICAgICAgcmV0dXJuICgqZGV2LT5lbnF1ZXVlX2J1 cnN0KSgNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgZGV2LT5kYXRhLT5xdWV1ZV9wYWlyc1tx cF9pZF0sIG9wcywgbmJfb3BzKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gLyog QWxsIHNlc3Npb24gQVBJcyBzdHJpcHBlZCBmcm9tIFJGQyBmb3Igc2ltcGxpY2l0eS4gKi8NCj4g PiA+DQo+ID4gPiArLyoqIGNvbXByZXNzaW9uIGRldmljZSBvcGVyYXRpb25zIGZ1bmN0aW9uIHBv aW50ZXIgdGFibGUgKi8NCj4gPiA+ICtzdHJ1Y3QgcnRlX2NvbXBkZXZfb3BzIHsNCj4gPiA+ICsg ICAgICBjb21wZGV2X2NvbmZpZ3VyZV90IGRldl9jb25maWd1cmU7ICAgIC8qKjwgQ29uZmlndXJl IGRldmljZS4gKi8NCj4gPiA+ICsgICAgICBjb21wZGV2X3N0YXJ0X3QgZGV2X3N0YXJ0OyAgICAg ICAgICAgIC8qKjwgU3RhcnQgZGV2aWNlLiAqLw0KPiA+ID4gKyAgICAgIGNvbXBkZXZfc3RvcF90 IGRldl9zdG9wOyAgICAgICAgLyoqPCBTdG9wIGRldmljZS4gKi8NCj4gPiA+ICsgICAgICBjb21w ZGV2X2Nsb3NlX3QgZGV2X2Nsb3NlOyAgICAgICAgICAgIC8qKjwgQ2xvc2UgZGV2aWNlLiAqLw0K PiA+ID4gKw0KPiA+ID4gKyAgICAgIGNvbXBkZXZfaW5mb19nZXRfdCBkZXZfaW5mb3NfZ2V0OyAg ICAgLyoqPCBHZXQgZGV2aWNlIGluZm8uICovDQo+ID4gPiArDQo+ID4gPiArICAgICAgY29tcGRl dl9zdGF0c19nZXRfdCBzdGF0c19nZXQ7DQo+ID4gPiArICAgICAgLyoqPCBHZXQgZGV2aWNlIHN0 YXRpc3RpY3MuICovDQo+ID4gPiArICAgICAgY29tcGRldl9zdGF0c19yZXNldF90IHN0YXRzX3Jl c2V0Ow0KPiA+ID4gKyAgICAgIC8qKjwgUmVzZXQgZGV2aWNlIHN0YXRpc3RpY3MuICovDQo+ID4g PiArDQo+ID4gPiArICAgICAgY29tcGRldl9xdWV1ZV9wYWlyX3NldHVwX3QgcXVldWVfcGFpcl9z ZXR1cDsNCj4gPiA+ICsgICAgICAvKio8IFNldCB1cCBhIGRldmljZSBxdWV1ZSBwYWlyLiAqLw0K PiA+ID4gKyAgICAgIGNvbXBkZXZfcXVldWVfcGFpcl9yZWxlYXNlX3QgcXVldWVfcGFpcl9yZWxl YXNlOw0KPiA+ID4gKyAgICAgIC8qKjwgUmVsZWFzZSBhIHF1ZXVlIHBhaXIuICovDQo+ID4gPiAr ICAgICAgY29tcGRldl9xdWV1ZV9wYWlyX3N0YXJ0X3QgcXVldWVfcGFpcl9zdGFydDsNCj4gPiA+ ICsgICAgICAvKio8IFN0YXJ0IGEgcXVldWUgcGFpci4gKi8NCj4gPiA+ICsgICAgICBjb21wZGV2 X3F1ZXVlX3BhaXJfc3RvcF90IHF1ZXVlX3BhaXJfc3RvcDsNCj4gPiA+ICsgICAgICAvKio8IFN0 b3AgYSBxdWV1ZSBwYWlyLiAqLw0KPiA+ID4gKyAgICAgIGNvbXBkZXZfcXVldWVfcGFpcl9jb3Vu dF90IHF1ZXVlX3BhaXJfY291bnQ7DQo+ID4gPiArICAgICAgLyoqPCBHZXQgY291bnQgb2YgdGhl IHF1ZXVlIHBhaXJzLiAqLw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgIGNvbXBfZ2V0X3Nlc3Npb25f cHJpdmF0ZV9zaXplX3Qgc2Vzc2lvbl9nZXRfc2l6ZTsNCj4gPiA+ICsgICAgICAvKio8IFJldHVy biBwcml2YXRlIHNlc3Npb24uICovDQo+ID4gPiArICAgICAgY29tcF9jb25maWd1cmVfc2Vzc2lv bl90IHNlc3Npb25fY29uZmlndXJlOw0KPiA+ID4gKyAgICAgIC8qKjwgQ29uZmlndXJlIGEgY29t cCBzZXNzaW9uLiAqLw0KPiA+ID4gKyAgICAgIGNvbXBfZnJlZV9zZXNzaW9uX3Qgc2Vzc2lvbl9j bGVhcjsNCj4gPiA+ICsgICAgICAvKio8IENsZWFyIGEgY29tcCBzZXNzaW9ucyBwcml2YXRlIGRh dGEuICovDQo+ID4gPiArICAgICAgY29tcF9xdWV1ZV9wYWlyX2F0dGFjaF9zZXNzaW9uX3QgcXBf YXR0YWNoX3Nlc3Npb247DQo+ID4gPiArICAgICAgLyoqPCBBdHRhY2ggc2Vzc2lvbiB0byBxdWV1 ZSBwYWlyLiAqLw0KPiA+ID4gKyAgICAgIGNvbXBfcXVldWVfcGFpcl9hdHRhY2hfc2Vzc2lvbl90 IHFwX2RldGFjaF9zZXNzaW9uOw0KPiA+ID4gKyAgICAgIC8qKjwgRGV0YWNoIHNlc3Npb24gZnJv bSBxdWV1ZSBwYWlyLiAqLw0KPiA+ID4gK307DQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPg0K