From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0072.outbound.protection.outlook.com [104.47.36.72]) by dpdk.org (Postfix) with ESMTP id 69C834C57 for ; Thu, 30 Nov 2017 16:46:14 +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=Ff7dvdO5I5Raw3CiQQK9lsZIW12F3IEG+u7+f3r7pHA=; b=mabwRqjhawIh7lg3Md0eFqH7/hp7/NbYPoepz5Ne9pJgg05SYy2iycRKbHx5CKbY66CB52FX+X5bfbEeMve4wNpQzvxRIfbcCcdNWybK9tVl0vd4RjQuBN7TYveP+zKvJu8G3q4NEJDPEUcE7gKuZ+QA6UF8nkUFKM2Lf1FNMiI= Received: from BY1PR0701MB1111.namprd07.prod.outlook.com (10.160.104.21) by BLUPR0701MB1060.namprd07.prod.outlook.com (10.160.35.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Thu, 30 Nov 2017 15:46:11 +0000 Received: from BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::c184:ee9b:3c4c:c97c]) by BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::c184:ee9b:3c4c:c97c%14]) with mapi id 15.20.0260.007; Thu, 30 Nov 2017 15:46:09 +0000 From: "Verma, Shally" To: "De Lara Guarch, Pablo" , "'Trahe, Fiona'" , "dev@dpdk.org" CC: "Athreya, Narayana Prasad" , "Challa, Mahipal" Thread-Topic: [RFC v1] doc compression API for DPDK Thread-Index: AdNp8lM71ZjDhxTcR46UpkXBh0QrkQ== Date: Thu, 30 Nov 2017 15:46:09 +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: [223.237.24.244] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; BLUPR0701MB1060; 6:kttFUi5Y/ignyh4URKQzEDUjpRbZ6G5GXShbCNGrPhcEkwz41a3DsnJjDXTULW4EY9IMrURTVKCfbXjxow3o25dCR6XjTkDHON5v4mN586b86YBjhQAI+jbFBM44in8TNUF9ePqSdaGcHjjfNqCBOQkGJwWR90N8nUwaLMfOBK9ZNG40UeVrQHK/ey5Hmu1Y8Hcjg17sur32VXEGKGiORRQ+GDh+LAiz79HoqjgWgnhoQuLs6okQOZRtqzJg6XYHJGfGB1xOm9Zsm0RrSRKdSN/bGwyhJie+gP8G+jWP1mIwNy+c5PW1glgMt7CXb2tN6N5n1rMc9aTL49D0iNOw3sldqR8q654rfCwXzfcY4UA=; 5:9jdo9JGLyZdqlziW9y0XGIAz/aQXlS9y3CCD7IdzKhhd3bo3xZvRIv1z5mGFz74VkR3D/VzJogHzsWQP3wqXbJNfaPavamlBxxJnkRI3KHgyAUA2M1DaWZOrdfhtWPlp3ONJqZJqbpe4IviLGTD2oHPRi9zpTgiW7CwNvps2t/w=; 24:byUQp3rEQcq6XHj7e2BVfuxIT6zu/EMH7nMhNN0AexTiccad9JqbhsIJbcSMB0tx+RU+sHINV9K+pz0WK/xWcIPeRTV53Sdi9cf9WmlHjC0=; 7:FC+zj4c5RI9JqmoMaGq8DkWl1B5sCUgeZT0NIoCc4/A7t6gVV/sNgm929ceUyltTq1JlKHrWy3+Wb8HhN2JeH0R9yr5HjEFMqcTHNUMdtfmLq0qAfc2KTcuP7ixr2O2eoReWgOqUDEGHEHPMFP2d2WdK7WhI1ydvcPGiIrsyKCT5fx4WHsjoSINWAzZzEsGvAyIG1lY4R2Lax7opxmqLQl3QG62YtOW8ZWuk8t8sWMu/iSePu9u8uNnZDEmQeQc2 x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(6009001)(366004)(346002)(376002)(13464003)(189002)(199003)(6116002)(966005)(68736007)(189998001)(110136005)(3660700001)(6436002)(54906003)(1720100001)(316002)(74316002)(2906002)(66066001)(3846002)(50986010)(53546010)(25786009)(97736004)(107886003)(305945005)(102836003)(53376002)(3280700002)(4326008)(5250100002)(2900100001)(54356010)(229853002)(106356001)(86362001)(105586002)(53936002)(5890100001)(2501003)(2473003)(6306002)(14454004)(6506006)(7696005)(8936002)(55016002)(7736002)(9686003)(53946003)(33656002)(5660300001)(81166006)(81156014)(101416001)(8676002)(561944003)(478600001)(72206003)(99286004); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1060; H:BY1PR0701MB1111.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; x-ms-office365-filtering-correlation-id: 4ded88e8-c49e-4145-aa4b-08d538097a1a x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603286); SRVR:BLUPR0701MB1060; x-ms-traffictypediagnostic: BLUPR0701MB1060: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(278428928389397)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(8121501046)(5005006)(3231022)(10201501046)(3002001)(93006095)(93001095)(6041248)(20161123564025)(20161123562025)(20161123558100)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148)(201708071742011); SRVR:BLUPR0701MB1060; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:BLUPR0701MB1060; x-forefront-prvs: 05079D8470 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: 4ded88e8-c49e-4145-aa4b-08d538097a1a X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Nov 2017 15:46:09.5034 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1060 Subject: [dpdk-dev] FW: [RFC v1] doc compression API for 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: Thu, 30 Nov 2017 15:46:15 -0000 UmVzZW5kIHdpdGggK1BhYmxvDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBW ZXJtYSwgU2hhbGx5IA0KU2VudDogMzAgTm92ZW1iZXIgMjAxNyAxNjo0Mw0KVG86ICdUcmFoZSwg RmlvbmEnIDxmaW9uYS50cmFoZUBpbnRlbC5jb20+OyBkZXZAZHBkay5vcmcNCkNjOiBBdGhyZXlh LCBOYXJheWFuYSBQcmFzYWQgPE5hcmF5YW5hUHJhc2FkLkF0aHJleWFAY2F2aXVtLmNvbT47IENo YWxsYSwgTWFoaXBhbCA8TWFoaXBhbC5DaGFsbGFAY2F2aXVtLmNvbT4NClN1YmplY3Q6IFJlOiBb UkZDIHYxXSBkb2MgY29tcHJlc3Npb24gQVBJIGZvciBEUERLDQoNCkhJIEZpb25hDQoNCj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVHJhaGUsIEZpb25hIFttYWlsdG86Zmlv bmEudHJhaGVAaW50ZWwuY29tXQ0KPiBTZW50OiAyOCBOb3ZlbWJlciAyMDE3IDAwOjI1DQo+IFRv OiBWZXJtYSwgU2hhbGx5IDxTaGFsbHkuVmVybWFAY2F2aXVtLmNvbT47IGRldkBkcGRrLm9yZzsg QXRocmV5YSwNCj4gTmFyYXlhbmEgUHJhc2FkIDxOYXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1 bS5jb20+OyBDaGFsbGEsIE1haGlwYWwNCj4gPE1haGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+OyBE ZSBMYXJhIEd1YXJjaCwgUGFibG8NCj4gPHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVsLmNvbT4N Cj4gQ2M6IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBS RTogW1JGQyB2MV0gZG9jIGNvbXByZXNzaW9uIEFQSSBmb3IgRFBESw0KPiANCj4gSGkgU2hhbGx5 LA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFZlcm1hLCBT aGFsbHkgW21haWx0bzpTaGFsbHkuVmVybWFAY2F2aXVtLmNvbV0NCj4gPiBTZW50OiBUdWVzZGF5 LCBPY3RvYmVyIDMxLCAyMDE3IDExOjM5IEFNDQo+ID4gVG86IGRldkBkcGRrLm9yZzsgVHJhaGUs IEZpb25hIDxmaW9uYS50cmFoZUBpbnRlbC5jb20+OyBBdGhyZXlhLA0KPiBOYXJheWFuYSBQcmFz YWQNCj4gPiA8TmFyYXlhbmFQcmFzYWQuQXRocmV5YUBjYXZpdW0uY29tPjsgQ2hhbGxhLCBNYWhp cGFsDQo+IDxNYWhpcGFsLkNoYWxsYUBjYXZpdW0uY29tPg0KPiA+IFN1YmplY3Q6IFtSRkMgdjFd IGRvYyBjb21wcmVzc2lvbiBBUEkgZm9yIERQREsNCj4gPg0KPiA+IEhJIEZpb25hDQo+ID4NCj4g PiBUaGlzIGlzIGFuIFJGQyBkb2N1bWVudCB0byBicmllZiBvdXIgdW5kZXJzdGFuZGluZyBhbmQg cmVxdWlyZW1lbnRzIG9uDQo+IGNvbXByZXNzaW9uIEFQSSBwcm9wb3NhbCBpbg0KPiA+IERQREsu IEl0IGlzIGJhc2VkIG9uICJbUkZDXSBDb21wcmVzc2lvbiBBUEkgaW4gRFBESw0KPiBodHRwOi8v ZHBkay5vcmcvbWwvYXJjaGl2ZXMvZGV2LzIwMTctDQo+ID4gT2N0b2Jlci8wNzkzNzcuaHRtbCIu DQo+ID4gSW50ZW50aW9uIG9mIHRoaXMgZG9jdW1lbnQgaXMgdG8gYWxpZ24gb24gY29uY2VwdHMg YnVpbHQgaW50byBjb21wcmVzc2lvbg0KPiBBUEksIGl0cyB1c2FnZSBhbmQgaWRlbnRpZnkgZnVy dGhlcg0KPiA+IHJlcXVpcmVtZW50cy4NCj4gPg0KPiA+IEdvaW5nIGZ1cnRoZXIgaXQgY291bGQg YmUgYSBiYXNlIHRvIENvbXByZXNzaW9uIE1vZHVsZSBQcm9ncmFtbWVyDQo+IEd1aWRlLg0KPiA+ DQo+ID4gQ3VycmVudCBzY29wZSBpcyBsaW1pdGVkIHRvDQo+ID4gLSBkZWZpbml0aW9uIG9mIHRo ZSB0ZXJtaW5vbG9neSB3aGljaCBtYWtlcyB1cCBmb3VuZGF0aW9uIG9mIGNvbXByZXNzaW9uDQo+ IEFQSQ0KPiA+IC0gdHlwaWNhbCBBUEkgZmxvdyBleHBlY3RlZCB0byB1c2UgYnkgYXBwbGljYXRp b25zDQo+ID4NCj4gPiBPdmVydmlldw0KPiA+IH5+fn5+fn5+DQo+ID4gQS4gTm90aW9uIG9mIGEg c2Vzc2lvbiBpbiBjb21wcmVzc2lvbiBBUEkNCj4gPiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQo+ID4gQSBTZXNzaW9uIGlzIHBlciBkZXZpY2UgbG9naWNhbCBlbnRpdHkgd2hp Y2ggaXMgc2V0dXAgd2l0aCBjaGFpbmVkLXhmb3JtcyB0bw0KPiBiZSBwZXJmb3JtZWQgb24gYnVy c3QNCj4gPiBvcGVyYXRpb25zIHdoZXJlIGluZGl2aWR1YWwgZW50cnkgY29udGFpbnMgb3BlcmF0 aW9uIHR5cGUNCj4gKGRlY29tcHJlc3MvY29tcHJlc3MpIGFuZCByZWxhdGVkIHBhcmFtZXRlci4N Cj4gPiBBIHR5cGljYWwgU2Vzc2lvbiBwYXJhbWV0ZXIgaW5jbHVkZXM6DQo+ID4gLSBjb21wcmVz cyAvIGRlY29tcHJlc3MNCj4gPiAtIGRldl9pZA0KPiA+IC0gY29tcHJlc3Npb24gYWxnb3JpdGht IGFuZCBvdGhlciByZWxhdGVkIHBhcmFtZXRlcnMNCj4gPiAtIG1lbXBvb2wgLSBmb3IgdXNlIGJ5 IHNlc3Npb24gZm9yIHJ1bnRpbWUgcmVxdWlyZW1lbnQNCj4gPiAtIGFuZCBhbnkgb3RoZXIgYXNz b2NpYXRlZCBwcml2YXRlIGRhdGEgbWFpbnRhaW5lZCBieSBzZXNzaW9uDQo+ID4NCj4gPiBBcHBs aWNhdGlvbiBjYW4gc2V0dXAgbXVsdGlwbGUgc2Vzc2lvbnMgb24gYSBkZXZpY2UgYXMgZGljdGF0 ZWQgYnkNCj4gZGV2X2luZm8ubmJfc2Vzc2lvbnMgb3INCj4gPiBuYl9zZXNzaW9uX3Blcl9xcC4N Cj4gPg0KPiBbRmlvbmFdIFRoZSBzZXNzaW9uIGRlc2lnbiBpcyBtb2RlbGxlZCBvbiB0aGUgY3J5 cHRvZGV2IHNlc3Npb24gZGVzaWduIGFuZA0KPiBzbyBhbGxvd3MNCj4gdG8gY3JlYXRlIGEgc2Vz c2lvbiB3aGljaCBjYW4gYmUgdXNlZCBvbiBkaWZmZXJlbnQgZHJpdmVyIHR5cGVzLiBFLmcuICBh DQo+IHNlc3Npb24gY291bGQgYmUgc2V0IHVwIGFuZCBpbml0aWFsaXNlZA0KPiB0byBydW4gb24g YSBRdWlja0Fzc2lzdCBkZXZpY2UgYW5kIGEgU29mdHdhcmUgZGV2aWNlLiBUaGlzIG1heSBiZSB1 c2VmdWwgZm9yDQo+IHN0YXRlbGVzcw0KPiByZXF1ZXN0cywgYW5kIGVuYWJsZSBsb2FkLWJhbGFu Y2luZy4gRm9yIHN0YXRlZnVsIGZsb3dzIHRoZSBzZXNzaW9uIHNob3VsZCBiZQ0KPiBzZXQgdXAg Zm9yDQo+IG9ubHkgb25lIHNwZWNpZmljIGRyaXZlci10eXBlIGFzIHRoZSBzdGF0ZSBpbmZvcm1h dGlvbiB3aWxsIGJlIHN0b3JlZCBpbiB0aGUNCj4gcHJpdmF0ZSBkYXRhIHNwZWNpZmljIHRvIHRo ZSBkcml2ZXItdHlwZQ0KPiBhbmQgbm90IHRyYW5zZmVycmFibGUgYmV0d2VlbiBkcml2ZXItdHlw ZXMuDQo+IFNvIGEgc2Vzc2lvbg0KPiAgLSBpcyBub3QgcGVyLWRldmljZQ0KPiAgLSBoYXMgbm8g ZGV2X2lkDQo+ICAtIGhhcyBubyBtZW1wb29sIHN0b3JlZCBpbiBpdCAtIHRoZSBwb29sIGlzIGNy ZWF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLCB0aGUgbGliDQo+IGNhbiByZXRyaWV2ZSB0aGUgcG9v bCBmcm9tIHRoZSBvYmplY3Qgd2l0aCBydGVfbWVtcG9vbF9mcm9tX29iaigpDQo+ICAtIGRvZXMg bm90IGhhdmUgYSBsaW1pdCBudW1iZXIgcGVyIGRldmljZSwganVzdCBwZXIgcXAsIGkuZS4gdGhl cmUgaXMgbm8NCj4gZGV2X2luZm8ubmJfc2Vzc2lvbnMsIGp1c3QgZGV2X2luZm8ubWF4X25iX3Nl c3Npb25zX3Blcl9xcA0KPiANCj4gRG8geW91IHRoaW5rIGFueSBvZiB0aGlzIG5lZWRzIHRvIGJl IGNoYW5nZWQ/DQoNCltTaGFsbHldIFBsZWFzZSBoZWxwIGNvbmZpcm0gZm9sbG93aW5nIGJlZm9y ZSBJIGNvdWxkIGFuc3dlciB0aGlzLg0KDQpJbiBjcnlwdG9kZXYsIHNlc3Npb24gaG9sZHMgYW4g ZHJpdmVycyBhcnJheSBpbml0aWFsaXplZCBvbiBpdCB3aGVyZSBlYWNoIGNhbiBiZSBzZXR1cCB0 byBwZXJmb3JtIHNhbWUvZGlmZmVyZW50IG9wZXJhdGlvbiBpbiBpdHMgcHJpdmF0ZV9kYXRhLg0K T24gbWFwcGluZyBpdCB0byBjb21wcmVzc2lvbiBpdCBtZWFuLCBhIHNlc3Npb246DQotIFdpbGwg bm90IHJldGFpbiBhbnkgb2YgdGhlIGluZm8gYXMgbWVudGlvbmVkIGFib3ZlICh4Zm9ybSwgbWVt cG9vbCwgYWxnb3MgZXQgZWwpLiBBbGwgc3VjaCBpbmZvcm1hdGlvbiBpcyBtYWludGFpbmVkIGFz IHBhcnQgb2YgYXNzb2NpYXRlZCBkZXZpY2UgZHJpdmVyIHByaXZhdGUgZGF0YS4NCi0gQXBwIGNh biB1c2Ugc2FtZSBzZXNzaW9uIHRvIHNldCBjb21wcmVzcyB4Zm9ybSBhbmQgZGVjb21wcmVzcyB4 Zm9ybSBvbiBkZXZpY2VzIGJ1dCBpZiBib3RoIGRldmljZXMgbWFwcyB0byBzYW1lIGRyaXZlcl9p ZCB0aGVuIG9ubHkgZWl0aGVyIGlzIGVmZmVjdGl2ZSAod2hpY2hldmVyIGlzIHNldCBmaXJzdCk/ DQoNCklzIHRoaXMgdW5kZXJzdGFuZGluZyBjb3JyZWN0Pw0KDQo+IA0KPiA+IEIuIE5vdGlvbiBv ZiBidXJzdCBvcGVyYXRpb25zIGluIGNvbXByZXNzaW9uIEFQSQ0KPiA+IMKgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gc3RydWN0IHJ0ZV9jb21wX29wIGRlZmlu ZXMgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBvcGVyYXRpb25hbA0KPiBwYXJhbWV0ZXIgYW5k IG1ha2VzIHVwIG9uZSBzaW5nbGUNCj4gPiBlbGVtZW50IG9mIGJ1cnN0LiBUaGlzIGlzIGJvdGgg YW4gaW5wdXQvb3V0cHV0IHBhcmFtZXRlci4NCj4gPiBQTUQgZ2V0cyBzb3VyY2UsIGRlc3RpbmF0 aW9uIGFuZCBjaGVja3N1bSBpbmZvcm1hdGlvbiBhdCBpbnB1dCBhbmQNCj4gdXBkYXRlZCBpdCB3 aXRoIGJ5dGVzIGNvbnN1bWVkIGFuZA0KPiA+IHByb2R1Y2VkIGF0IG91dHB1dC4NCj4gW0Zpb25h XSBBZ3JlZWQNCj4gDQo+ID4gT25jZSBlbnF1ZXVlZCBmb3IgcHJvY2Vzc2luZywgcnRlX2NvbXBf b3AgKmNhbm5vdCBiZSByZXVzZWQqIHVudGlsIGl0cw0KPiBzdGF0dXMgaXMgc2V0IHRvDQo+ID4g UlRFX0NPTVBfT1BfRkFJTFVSRSBvciBSVEVfQ09NUF9PUF9TVEFUVVNfU1VDQ0VTUy4NCj4gW0Zp b25hXSBjYW5ub3QgYmUgdXNlZCB1bnRpbCBpdHMgc3RhdHVzIGlzIHNldCB0byBhbnkgdmFsdWUg b3RoZXIgdGhhbg0KPiBSVEVfQ09NUF9PUF9OT1RfUFJPQ0VTU0VEDQoNCltTaGFsbHldIEhvdyB1 c2VyIHdpbGwga25vdyB0aGF0IHN0YXR1cyBpcyBOT1RfUFJPQ0VTU0VEIGFmdGVyIG9wcyBhcmUg ZW5xdWV1ZWQ/IA0KSSBhc3N1bWUgb25seSB3YXkgdG8gY2hlY2sgZW5xdWV1ZWQgb3BzIHN0YXR1 cyBpcyBkZXF1ZXVlX2J1cnN0KCkgYW5kIFBNRCBwdXQgYW4gb3AgaW50byBjb21wbGV0aW9uIHF1 ZXVlIGZvciBkZXF1ZXVlICpvbmx5IHdoZW4qIGl0IGlzIGNvbXBsZXRlZCB3aXRoIFBhc3MvRmFp bC9PdXRfb2Zfc3BhY2UgY29uZGl0aW9uICpub3QqIHdoZW4gaXQncyBpbiBwcm9ncmVzcyAoZXF1 aXZhbGVudCBvZiBSVEVfQ09NUF9PUF9OT1RfUFJPQ0VTU0VEKS4NCg0KQW0gSSBtaXNzaW5nIGFu eXRoaW5nIGhlcmU/DQoNCj4gDQo+IA0KPiA+IEMuIFNlc3Npb24gYW5kIHJ0ZV9jb21wX29wDQo+ ID4gwqA9PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+IEV2ZXJ5IG9wZXJhdGlvbiBpbiBhIGJ1 cnN0IGlzIHRpZWQgdG8gYSBTZXNzaW9uLiBNb3JlIHRvIGNvdmVyIG9uIHRoaXMgdW5kZXINCj4g U3RhdGVsZXNzIFZzIFN0YXRlZnVsIHNlY3Rpb24uDQo+IFtGaW9uYV0gQWdyZWVkLiBJIHdvdWxk IGFkZCB0aGF0IGVhY2ggb3BlcmF0aW9uIGluIGEgYnVyc3QgbWF5IGJlIGF0dGFjaGVkDQo+IHRv IGEgZGlmZmVyZW50IHNlc3Npb24uDQo+IA0KPiANCj4gPiBELiBTdGF0ZWxlc3MgVnMgU3RhdGVm dWwNCj4gPiA9PT09PT09PT09PT09PT09PT09DQo+ID4gQ29tcHJlc3Npb24gQVBJIHByb3ZpZGUg UlRFX0NPTVBfRkZfU1RBVEVGVUwgZmVhdHVyZSBmbGFnIGZvciBQTUQNCj4gdG8gcmVmbGVjdCBp dHMgc3VwcG9ydCBmb3IgU3RhdGVmdWwNCj4gPiBvcGVyYXRpb24uDQo+IFtGaW9uYV0gQWdyZWVk Lg0KPiANCj4gPg0KPiA+IEQuMSBDb21wcmVzc2lvbiBBUEkgU3RhdGVsZXNzIG9wZXJhdGlvbg0K PiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiA+IEEgU3RhdGVsZXNzIG9wZXJhdGlvbiBtZWFucyBhbGwgZW5xdWV1ZWQgcGFja2V0cyBh cmUgaW5kZXBlbmRlbnQgb2YNCj4gZWFjaCBvdGhlciBpLmUuIEVhY2ggcGFja2V0IGhhcw0KPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBUaGVpciBmbHVzaCB2YWx1ZSBpcyBzZXQgdG8g UlRFX0ZMVVNIX0ZVTEwgb3IgUlRFX0ZMVVNIX0ZJTkFMDQo+IChyZXF1aXJlZCBvbmx5IG9uIGNv bXByZXNzaW9uDQo+ID4gc2lkZSksDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFs bC1vZiB0aGUgcmVxdWlyZWQgaW5wdXQgYW5kIHN1ZmZpY2llbnQgbGFyZ2UgYnVmZmVyIHNpemUg dG8gc3RvcmUNCj4gb3V0cHV0IGkuZS4gT1VUX09GX1NQQUNFIGNhbg0KPiA+IG5ldmVyIG9jY3Vy IChyZXF1aXJlZCBkdXJpbmcgYm90aCBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbikNCj4g Pg0KPiA+IEluIHN1Y2ggY2FzZSwgUE1EIGluaXRpYXRlcyBzdGF0ZWxlc3MgcHJvY2Vzc2luZyBh bmQgcmVsZWFzZXMgYWNxdWlyZWQNCj4gcmVzb3VyY2VzIGFmdGVyIHByb2Nlc3Npbmcgb2YgY3Vy cmVudA0KPiA+IG9wZXJhdGlvbiBpcyBjb21wbGV0ZSBpLmUuIGZ1bGwgaW5wdXQgY29uc3VtZWQg YW5kIGZ1bGwgb3V0cHV0IHdyaXR0ZW4uDQo+ID4gQXBwbGljYXRpb24gY2FuIGF0dGFjaCBzYW1l IG9yIGRpZmZlcmVudCBzZXNzaW9uIHRvIGVhY2ggcGFja2V0IGFuZCBjYW4NCj4gbWFrZSBjb25z ZWN1dGl2ZSBlbnF1ZV9idXJzdCgpDQo+ID4gY2FsbHMgaS5lLiBGb2xsb3dpbmcgaXMgcmVsZXZh bnQgdXNhZ2U6DQo+ID4NCj4gPiBlbnF1ZXVlZCA9IHJ0ZV9jb21wX2VucXVlX2J1cnN0IChkZXZf aWQsIHFwX2lkLCBvcHMxLCBuYl9vcHMpOw0KPiA+IGVucXVldWVkID0gcnRlX2NvbXBfZW5xdWVf YnVyc3QoZGV2X2lkLCBxcF9pZCwgb3BzMiwgbmJfb3BzKTsNCj4gPiBlbnF1ZXVlZCA9IHJ0ZV9j b21wX2VucXVlX2J1cnN0KGRldl9pZCwgcXBfaWQsIG9wczMsIG5iX29wcyk7DQo+ID4NCj4gPiAq Tm90ZSDigJMgRXZlcnkgY2FsbCBoYXMgZGlmZmVyZW50IG9wcyBhcnJheSBpLmUuwqAgc2FtZSBy dGVfY29tcF9vcCBhcnJheQ0KPiAqY2Fubm90IGJlIHJldXNlZCogdG8gcXVldWUgbmV4dA0KPiA+ IGJhdGNoIG9mIGRhdGEgdW50aWwgcHJldmlvdXMgb25lcyBhcmUgY29tcGxldGVseSBwcm9jZXNz ZWQuDQo+ID4NCj4gPiBBbHNvIGlmIG11bHRpcGxlIHRocmVhZHMgY2FsbHMgZW5xdWV1ZV9idXJz dCgpIG9uIHNhbWUgcXVldWUgcGFpciB0aGVuIGl04oCZcw0KPiBhcHBsaWNhdGlvbiBvbnVzIHRv IHVzZSBwcm9wZXINCj4gPiBsb2NraW5nIG1lY2hhbmlzbSB0byBlbnN1cmUgc2VyaWFsaXplZCBl bnF1ZXVpbmcgb2Ygb3BlcmF0aW9ucy4NCj4gW0Zpb25hXSBBZ3JlZWQgdG8gYWJvdmUgc3RhdGVs ZXNzIGRlc2NyaXB0aW9uLg0KPiANCj4gDQo+ID4gUGxlYXNlIG5vdGUgYW55IHRpbWUgb3V0cHV0 IGJ1ZmZlciByYW4gb3V0IG9mIHNwYWNlIGR1cmluZyB3cml0ZSB0aGVuDQo+IG9wZXJhdGlvbiB3 aWxsIHR1cm4g4oCcU3RhdGVmdWzigJ0uwqAgU2VlDQo+ID4gbW9yZSBvbiBTdGF0ZWZ1bCB1bmRl ciByZXNwZWN0aXZlIHNlY3Rpb24uDQo+IFtGaW9uYV0gTGV0J3MgY29tZSBiYWNrIHRvIHRoaXMg bGF0ZXIuIEFuIGFsdGVybmF0aXZlIGlzIHRoYXQgT1VUX09GX1NQQUNFIGlzDQo+IHJldHVybmVk IGFuZCB0aGUgIGFwcGxpY2F0aW9uDQo+IG11c3QgdHJlYXQgYXMgYSBmYWlsIGFuZCByZXN1Ym1p dCB0aGUgb3BlcmF0aW9uIHdpdGggYSBsYXJnZXIgZGVzdGluYXRpb24NCj4gYnVmZmVyLg0KDQpb U2hhbGx5XSBUaGVuIEkgcHJvcG9zZSB0byBhZGQgYSBmZWF0dXJlIGZsYWcgIkZGX1NVUFBPUlRf T1VUX09GX1NQQUNFIiBwZXIgeGZvcm0gdHlwZSBmb3IgZmxleGlibGUgUE1EIGRlc2lnbi4NCkFz IHRoZXJlJ3JlIGRldmljZXMgd2hpY2ggdHJlYXQgaXQgYXMgZXJyb3Igb24gY29tcHJlc3Npb24g YnV0IG5vdCBvbiBkZWNvbXByZXNzaW9uLg0KSWYgaXQgaXMgbm90IHN1cHBvcnRlZCwgdGhlbiBp dCBzaG91bGQgYmUgdHJlYXRlZCBhcyBmYWlsdXJlIGNvbmRpdGlvbiBhbmQgYXBwIGNhbiByZXN1 Ym1pdCBvcGVyYXRpb24uIA0KaWYgc3VwcG9ydGVkLCBiZWhhdmlvdXIgKlRvLWJlLURlZmluZWQq IHVuZGVyIHN0YXRlZnVsLg0KDQo+IA0KPiA+ICBUeXBpY2FsIEFQSShmbG93LXdpc2UpIHRvIHNl dHVwIGZvciBzdGF0ZWxlc3Mgb3BlcmF0aW9uOg0KPiA+IDEuIHJ0ZV9jb21wX3Nlc3Npb24gKnNl c3MgPSBydGVfY29tcF9zZXNzaW9uX2NyZWF0ZShydGVfbWVtcG9vbA0KPiAqcG9vbCk7DQo+ID4g Mi4gcnRlX2NvbXBfc2Vzc2lvbl9pbml0IChpbnQgZGV2X2lkLCBydGVfY29tcF9zZXNzaW9uICpz ZXNzLA0KPiBydGVfY29tcF94Zm9ybSAqeGZvcm0sIHJ0ZV9tZW1wb29sDQo+ID4gKnNlc3NfcG9v bCk7DQo+ID4gMy4gcnRlX2NvbXBfb3BfcG9vbF9jcmVhdGUocnRlX21lbXBvb2wgLi4pDQo+ID4g NC4gcnRlX2NvbXBfb3BfYnVsa19hbGxvYyAoc3RydWN0IHJ0ZV9tZW1wb29sICptZW1wb29sLCBz dHJ1Y3QNCj4gcnRlX2NvbXBfb3AgKipvcHMsIHVpbnQxNl90DQo+ID4gbmJfb3BzKTsNCj4gPiA1 LiBmb3IgZXZlcnkgcnRlX2NvbXBfb3AgaW4gb3BzW10sDQo+ID4gwqDCoMKgIDUuMSBydGVfY29t cF9vcF9hdHRhY2hfc2Vzc2lvbihydGVfY29tcF9vcCAqb3AsIHJ0ZV9jb21wX3Nlc3Npb24NCj4g KnNlc3MpOw0KPiA+IMKgwqDCoCA1LjIgc2V0IHVwIHdpdGggc3JjL2RzdCBidWZmZXINCj4gPiA2 LiBlbnEgPSBydGVfY29tcGRldl9lbnF1ZXVlX2J1cnN0KHVpbnQ4X3QgZGV2X2lkLCB1aW50MTZf dCBxcF9pZCwNCj4gc3RydWN0IHJ0ZV9jb21wX29wICoqb3BzLCB1aW50MTZfdA0KPiA+IG5iX29w cyk7DQo+ID4gNy4gZHF1ID0gcnRlX2NvbXBkZXZfZGVxdWV1ZV9idXJzdChkZXZfaWQsIHFwX2lk LCBvcHMsIGVucSk7DQo+ID4gOC4gcmVwZWF0IDcgd2hpbGUgKGRxdSA8IGVucSkgLy8gV2FpdCB0 aWxsIGFsbCBvZiBlbnF1ZXVlZCBhcmUgZGVxdWV1ZWQNCj4gPiA5LiBSZXBlYXQgNS4yIGZvciBu ZXh0IGJhdGNoIG9mIGRhdGENCj4gPiAxMC4gcnRlX2NvbXBfc2Vzc2lvbl9jbGVhciAoKSAvLyBv bmx5IHJlc2V0IHByaXZhdGUgZGF0YSBtZW1vcnkgYXJlYSBhbmQNCj4gKm5vdCogdGhlIHhmb3Jt IGFuZCBkZXZpZA0KPiA+IGluZm9ybWF0aW9uLiBJbiBjYXNlLCB5b3Ugd2FudCB0byByZS11c2Ug c2Vzc2lvbi4NCj4gPiAxMS4gcnRlX2NvbXBfc2Vzc2lvbl9mcmVlKHJldF9jb21wX3Nlc3MgKnNl c3Npb24pDQo+IFtGaW9uYV0gb2suIFRoaXMgaXMgb25lIHBvc3NpYmxlIGZsb3cuIFRoZXJlIGFy ZSB2YXJpYXRpb25zIHBvc3NpYmxlDQo+ICAtIEFib3ZlIGFzc3VtZXMgYWxsIG9wcyBhcmUgdXNp bmcgdGhlIHNhbWUgc2Vzc2lvbiwgdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkNCj4gdGhlIGNhc2Uu IEUuZy4gdGhlcmUNCj4gICAgY291bGQgYmUgYSBjb21wcmVzc2lvbiBzZXNzaW9uIGFuZCBhIGRl Y29tcHJlc3Npb24gc2Vzc2lvbiBhbmQgYSBidXJzdCBvZg0KPiBvcHMgbWF5IGNvbnRhaW4gYm90 aC4NCg0KW1NoYWxseV0gQWdyZWUgYnV0IGFzc3VtZSBhcHBsaWNhYmxlIG9ubHkgZm9yIHN0YXRl bGVzcyB1bnRpbCB3ZSBjb3ZlciBzdGF0ZWZ1bA0KDQo+ICAgIEluIHRoaXMgY2FzZSBTdGVwIDkg d291bGQgYmUgUmVwZWF0IDUuMSBhcyB3ZWxsIGFzIDUuMg0KPiAgLSBBbHNvIGl0IHdvdWxkIG5v dCBiZSBuZWNlc3NhcnkgdG8gd2FpdCB1bnRpbCB0aGUgZnVsbCBidXJzdCBpcyBkZXF1ZXVlZA0K PiBiZWZvcmUgZG9pbmcNCj4gICAgYW5vdGhlciBlbnF1ZXVlIC0gdGhvdWdoIG9mIGNvdXJzZSB0 aGUgb3BzIHdvdWxkIG5lZWQgdG8gYmUgbWFuYWdlZCBzbw0KPiBvbmx5DQo+ICAgIHRob3NlIGZp bmlzaGVkIHdpdGggYXJlIHJldXNlZCwgb3IgbXVsdGlwbGUgc2V0cyBvZiBvcHMgY291bGQgYmUg YWxsb2NhdGVkLg0KDQpbU2hhbGx5XSBBZ3JlZSANCg0KPiAgLSBXaGF0IGRvIHlvdSBtZWFuIGJ5 IFN0ZXAgMTAgY29tbWVudD8gVGhlIHNlc3Npb24gb25seSBoYXMgcHJpdmF0ZSBkYXRhLg0KPiBJ dCdzIHVwIHRvIHRoZSBQTUQgdG8NCj4gICAgc3RvcmUgd2hhdGV2ZXIgaXQgbmVlZHMgZnJvbSB0 aGUgeGZvcm0uIEkgdGhpbmsgc2Vzc2lvbl9jbGVhciBzaG91bGQgbWVhbg0KPiBhbGwgdGhlIGRh dGEgaXMgemVyb2VkIGluIHRoZSBzZXNzaW9uLg0KPiAgICBJZiB0aGUgc2Vzc2lvbiBpcyB0byBi ZSByZS11c2VkIHRoZW4gbm90aGluZyBuZWVkcyB0byBiZSBjbGVhcmVkLiBFYWNoIG9wIGlzDQo+ IGFscmVhZHkgcmUtdXNpbmcgdGhlIHNlc3Npb24gaW4geW91cg0KPiAgICBmbG93IGFib3ZlIHdp dGhvdXQgY2xlYXJpbmcgYmV0d2VlbiBvcHMuDQo+ICAgIEJVVCB0aGlzIG9ubHkgYXBwbGllcyB0 byBzdGF0ZWxlc3MgDQoNCltTaGFsbHldIFRoaXMgY2FtZSBmcm9tIG15IHByZXZpb3VzIG5vdGlv biBvZiBzZXNzaW9uLiBOb3cgd2hlbiBJIHNlZSBpdCBhbmFsb2d5IHRvIGNyeXB0b2RldiwgaXRz IHB1cnBvc2UgaXMgY2xlYXIgdG8gbWUuIA0KQnV0IHRoZW4gSSBwcm9wb3NlIHRvIHJlbmFtZSBB UEkgdG8gcnRlX2NvbXBkZXZfc2Vzc190ZXJtKCkgdG8gbWFrZSBpdCBzZWxmLWV4cGxhbmF0b3J5 LiANCg0KLSBmb3Igc3RhdGVmdWwgd2UgbWF5IG5lZWQgYSBkaWZmZXJlbnQNCj4gYmVoYXZpb3Vy IC0gdG8gY2xlYXIgc3RhdGUgZGF0YSBidXQNCj4gICAga2VlcCBhbGdvLCBsZXZlbCwgSHVmZm1h bi10eXBlLCBjaGVja3N1bS10eXBlLiBMZXQncyBkaXNjdXNzIHVuZGVyIHN0YXRlZnVsDQo+IC0g dGhpcyBtYXkgbmVlZCBhIG5ldyBBUEkuDQo+IA0KDQpbU2hhbGx5XSBPciBQTUQgY2FuIGludGVy bmFsbHkgcmVzZXQgaXRzIHN0YXRlIG9uY2UgaXQgcHJvY2VzcyBhbiBvcCB3aXRoIEZVTExfRkxV U0gvRklOSVNILiBXaWxsIHJldmlzaXQgaXQgdW5kZXIgc3RhdGVmdWwuDQoNCj4gDQo+ID4gRC4x LjIgUmVxdWlyZW1lbnQgZm9yIFN0YXRlbGVzcw0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiBTaW5jZSBvcGVyYXRpb24gY2FuIGNvbXBsZXRlIG91 dC1vZi1vcmRlci4gVGhlcmUgc2hvdWxkIGJlIG9uZSAodm9pZA0KPiAqdXNlcikgcGVyIHJ0ZV9j b21wX29wIHRvIGVuYWJsZQ0KPiA+IGFwcGxpY2F0aW9uIHRvIG1hcCBkZXF1ZXVlZCBvcCB0byBl bnF1ZXVlZCBvcC4NCj4gW0Zpb25hXSBJbiBjcnlwdG9kZXYgdGhlcmUgd2FzIGFuIG9wYXF1ZV9k YXRhIGZpZWxkIGluIHRoZSBvcCAtIGl0IHdhcw0KPiByZW1vdmVkIGFzIHRoZSBhcHBsaWNhdGlv biBjYW4gc3RvcmUgYW55DQo+IHByaXZhdGUgZGF0YSBpdCBuZWVkcyBmb2xsb3dpbmcgdGhlIG9w LCBhcyBpdCBjcmVhdGVzIHRoZSBvcCBwb29sIGFuZCBkaWN0YXRlcw0KPiB0aGUgc2l6ZS4gRG8g eW91IHRoaW5rIHdlIG5lZWQgYW4NCj4gZXhwbGljaXQgKHZvaWQgKnVzZXIpIG9yIGNhbiB3ZSBm b2xsb3cgdGhlIHNhbWUgYXBwcm9hY2g/DQo+IA0KDQpbU2hhbGx5XSBpZiBwcml2X2RhdGEgaW4g Y3J5cHRvX29wX3Bvb2xfY3JlYXRlKCkgaXMgdXNlciBkYXRhLCAgdGhlbiB3ZSBkb24ndCBuZWVk IGV4cGxpY2l0IHVzZXIgKi4NCkJ1dCB0aGVuIEkgcHJvcG9zZSB2YXJpYWJsZSBuYW1lIHNob3Vs ZCBiZSByZW5hbWVkIHRvIHVzZXJfZGF0YSBpbmRpY2F0aW5nIGl0IGlzIGFuIGFwcCBkYXRhIG9w YXF1ZSB0byBQTUQuDQpBbmQsIF9fcnRlX2NvbXBfb3BfZ2V0X3ByaXZfZGF0YV9zaXplICgpIHNo b3VsZCBiZSBjaGFuZ2VkIHRvIF9fcnRlX2NvbXBfb3BfZ2V0X3VzZXJfZGF0YV9zaXplKCkuDQoN Cj4gW0Zpb25hXSBPdXQgb2YgdGltZSAtIEknbGwgY29udGludWUgZnJvbSBoZXJlIGxhdGVyIGlu IHRoZSB3ZWVrLg0KW1NoYWxseV0gU3VyZS4gTG9vayBmb3J3YXJkIHRvIHRoYXQuDQoNClRoYW5r cw0KU2hhbGx5DQoNCj4gDQo+IA0KPiA+IEQuMiBDb21wcmVzc2lvbiBBUEkgU3RhdGVmdWwgb3Bl cmF0aW9uDQo+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiA+IMKgQSBTdGF0ZWZ1bCBvcGVyYXRpb24gbWVhbnMgZm9sbG93aW5n IGNvbmRpdGlvbnM6DQo+ID4gLSBBUEkgcmFuIGludG8gb3V0X29mX3NwYWNlIHNpdHVhdGlvbiBk dXJpbmcgcHJvY2Vzc2luZyBvZiBpbnB1dC4gRXhhbXBsZSwNCj4gc3RhdGVsZXNzIGNvbXByZXNz ZWQgc3RyZWFtDQo+ID4gZmVkIGZ1bGx5IHRvIGRlY29tcHJlc3NvciBidXQgb3V0cHV0IGJ1ZmZl ciBpcyBub3QgbGFyZ2UgZW5vdWdoIHRvIGhvbGQNCj4gb3V0cHV0Lg0KPiA+IC0gQVBJIHdhaXRp bmcgZm9yIG1vcmUgaW5wdXQgdG8gcHJvZHVjZSBvdXRwdXQuIEV4YW1wbGUsIHN0YXRlbGVzcw0K PiBjb21wcmVzc2VkIHN0cmVhbSBmZWQgcGFydGlhbGx5IHRvDQo+ID4gZGVjb21wcmVzc29yLg0K PiA+IC0gQVBJIGlzIGRlcGVuZGVudCBvbiBwcmV2aW91cyBvcGVyYXRpb24gZm9yIGZ1cnRoZXIN Cj4gY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbg0KPiA+DQo+ID4gSW4gY2FzZSBvZiBlaXRoZXIg b25lIG9yIGFsbCBvZiB0aGUgYWJvdmUgY29uZGl0aW9ucyBQTUQgaXMgcmVxdWlyZWQgdG8NCj4g bWFpbnRhaW4gY29udGV4dCBvZiBvcGVyYXRpb25zDQo+ID4gYWNyb3NzIGVucXVlX2J1cnN0KCkg Y2FsbHMsIHVudGlsIGEgcGFja2V0IHdpdGjCoCBSVEVfRkxVU0hfRlVMTC9GSU5BTCBhbmQNCj4g c3VmZmljaWVudCBpbnB1dC9vdXRwdXQgYnVmZmVycw0KPiA+IGlzIHJlY2VpdmVkIGFuZCBwcm9j ZXNzZWQuDQo+ID4NCj4gPiBELjIuMSBDb21wcmVzc2lvbiBBUEkgcmVxdWlyZW1lbnQgZm9yIFN0 YXRlZnVsDQo+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4NCj4gPiBELjIuMS4xIFNsaWRpbmcgV2luZG93IFNpemUN Cj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiBNYXhpbXVtIGxl bmd0aCBvZiBTbGlkaW5nIFdpbmRvdyBpbiBieXRlcy4gUHJldmlvdXMgZGF0YSBsb29rdXAgd2ls bCBiZQ0KPiBwZXJmb3JtZWQgdXAgdG8gdGhpcyBsZW5ndGguIFRvDQo+ID4gYmUgYWRkZWQgYXMg YWxnb3JpdGhtIGNhcGFiaWxpdHkgcGFyYW1ldGVyIGFuZCBzZXQgYnkgUE1ELg0KPiA+DQo+ID4g RC4yLjEuMiBTdGF0ZWZ1bCBvcGVyYXRpb24gc3RhdGUgbWFpbnRlbmFuY2UNCj4gPiDCoC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Cj4gPiBUaGlzIHNlY3Rpb24gc3RhcnRzIHdpdGggZGVzY3JpcHRpb24gb2Ygb3VyIHVuZGVyc3Rh bmRpbmcgYWJvdXQNCj4gY29tcHJlc3Npb24gQVBJIHN1cHBvcnQgZm9yIHN0YXRlZnVsLg0KPiA+ IERlcGVuZGluZyB1cG9uIHVuZGVyc3RhbmRpbmcgYnVpbGQgdXBvbiB0aGVzZSBjb25jZXB0cywg d2Ugd2lsbCBpZGVudGlmeQ0KPiByZXF1aXJlZCBkYXRhIHN0cnVjdHVyZS9wYXJhbQ0KPiA+IHRv IG1haW50YWluIGluLXByb2dyZXNzIG9wZXJhdGlvbiBjb250ZXh0IGJ5IFBNRC4NCj4gPg0KPiA+ IEZvciBzdGF0ZWZ1bCBjb21wcmVzc2lvbiwgYmF0Y2ggb2YgZGVwZW5kZW50IHBhY2tldHMgc3Rh cnRzIGF0IGEgcGFja2V0DQo+IGhhdmluZw0KPiA+IFJURV9OT19GTFVTSC9SVEVfU1lOQ19GTFVT SCBmbHVzaCB2YWx1ZSBhbmQgZW5kIGF0IHBhY2tldCBoYXZpbmcNCj4gUlRFX0ZVTExfRkxVU0gv RklOQUxfRkxVU0guDQo+ID4gaS5lLiBhcnJheSBvZiBvcGVyYXRpb25zIHdpbGwgY2Fycnkgc3Ry dWN0dXJlIGxpa2UgdGhpczoNCj4gPg0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiA+IHxvcDEubm9fZmx1c2ggfCBvcDIubm9fZmx1c2ggfCBvcDMubm9fZmx1c2ggfCBvcDQuZnVs bF9mbHVzaHwNCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPg0KPiA+IEZvciBz YWtlIG9mIHNpbXBsaWNpdHksIHdlIHdpbGwgdXNlIHRlcm0gInN0cmVhbSIgdG8gaWRlbnRpZnkg c3VjaCByZWxhdGVkIHNldA0KPiBvZiBvcGVyYXRpb24gaW4gZm9sbG93aW5nDQo+ID4gZGVzY3Jp cHRpb24uDQo+ID4NCj4gPiBTdHJlYW0gcHJvY2Vzc2luZyBpbXBvc2UgZm9sbG93aW5nIGxpbWl0 YXRpb25zIG9uIHVzYWdlIG9mIGVucXVlX2J1cnN0KCkNCj4gQVBJDQo+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEFsbCBkZXBlbmRlbnQgcGFja2V0cyBpbiBhIHN0cmVhbSBzaG91bGQg Y2Fycnkgc2FtZSBzZXNzaW9uDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIHN0 cmVhbSBpcyBicm9rZW4gaW50byBtdWx0aXBsZSBlbnF1ZXVlX2J1cnN0KCkgY2FsbCwgdGhlbiBu ZXh0DQo+IGVucXVldWVfYnVyc3QoKSBjYW5ub3QgYmUgY2FsbGVkDQo+ID4gdW50aWwgcHJldmlv dXMgb25lIGhhcyBmdWxseSBwcm9jZXNzZWQuIEkuRS4NCj4gPg0KPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgQ29uc2lkZXIgZm9yIGV4YW1wbGUsIGEgc3RyZWFtIHdpdGggb3BzMSAu Lm9wczcsICBUaGlzIGlzICpub3QqDQo+IGFsbG93ZWQNCj4gPg0KPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+IC0tLS0tLS0tLS0tLS0tDQo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGVucXVlX2J1cnN0KHxvcDEubm9fZmx1c2ggfCBvcDIubm9fZmx1c2gg fCBvcDMubm9fZmx1c2ggfA0KPiBvcDQubm9fZmx1c2h8KQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0tLS0tLS0tLS0NCj4gPg0KPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW5xdWVfYnVy c3QofG9wNS5ub19mbHVzaCB8IG9wNi5ub19mbHVzaCB8IG9wNy5mbHVzaF9maW5hbCB8KQ0KPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4NCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqAgwqDCoMKgwqBUaGlzICppcyogYWxsb3dlZA0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQo+IC0tLS0tLS0tLS0tLS0tDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBlbnF1ZV9idXJzdCh8b3AxLm5vX2ZsdXNoIHwgb3AyLm5vX2ZsdXNoIHwgb3AzLm5vX2Zs dXNoIHwNCj4gb3A0Lm5vX2ZsdXNofCkNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+IC0tLS0tLS0tLS0tLS0tDQo+ID4NCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZGVxdWVfYnVyc3Qob3BzMSAuLm9wczQpDQo+ID4NCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVucXVlX2J1cnN0 KHxvcDUubm9fZmx1c2ggfCBvcDYubm9fZmx1c2ggfCBvcDcuZmx1c2hfZmluYWwgfCkNCj4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+DQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEEgc2luZ2xlIGVucXVlX2J1cnN0KCkgY2FuIGNhcnJ5IG9ubHkgb25lIHN0cmVh bS4gSS5FLiBUaGlzIGlzICpub3QqDQo+IGFsbG93ZWQNCj4gPg0KPiA+IMKgIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnF1ZV9idXJzdCAofG9wMS5ub19mbHVz aCB8IG9wMi5ub19mbHVzaCB8IG9wMy5mbHVzaF9maW5hbCB8DQo+IG9wNC5ub19mbHVzaCB8IG9w NS5ub19mbHVzaCB8KQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+DQo+ID4gSWYgYSBzdHJlYW0g aXMgYnJva2VuIGluIHRvIHNldmVyYWwgZW5xdWV1ZV9idXJzdCgpIGNhbGxzLCB0aGVuIGNvbXBy ZXNzDQo+IEFQSSBuZWVkIHRvIG1haW50YWluIG9wZXJhdGlvbmFsDQo+ID4gc3RhdGUgYmV0d2Vl biBjYWxscy4gRm9yIHRoaXMsIGNvbmNlcHQgb2YgcnRlX2NvbXBfc3RyZWFtIGlzIGVuYWJsZWQg aW4gdG8NCj4gY29tcHJlc3Npb24gQVBJLg0KPiA+IEhlcmXigJlyZSB0aGUgcHJvcG9zZWQgY2hh bmdlcyB0byBleGlzdGluZyBkZXNpZ246DQo+ID4NCj4gPiAxLiBBZGQgcnRlX2NvbXBfb3BfdHlw ZQ0KPiA+IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4NCj4gPiBlbnVt IHJ0ZV9jb21wX29wX3R5cGUgew0KPiA+IFJURV9DT01QX09QX1NUQVRFTEVTUywNCj4gPiBSVEVf Q09NUF9PUF9TVEFURUZVTA0KPiA+IH0NCj4gPg0KPiA+IDIuIEFkZCBuZXcgZGF0YSB0eXBlIHJ0 ZV9jb21wX3N0cmVhbSB0byBtYWludGFpbiBzdHJlYW0gc3RhdGUNCj4gPiAuLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLg0KPiA+IHJ0ZV9jb21wX3N0cmVhbSBp cyBhbiBvcGFxdWUgZGF0YSBzdHJ1Y3R1cmUgdG8gYXBwbGljYXRpb24gd2hpY2ggaXMNCj4gZXhj aGFuZ2VkIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4NCj4gPiBhcHBsaWNhdGlvbiBhbmQgUE1EIGR1 cmluZyBzdGF0ZWZ1bCBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uLg0KPiA+IEl0IHNob3VsZCBi ZSBhbGxvY2F0ZWQgcGVyIHN0cmVhbSBBTkQgYmVmb3JlIGJlZ2lubmluZyBvZiBzdGF0ZWZ1bA0K PiBvcGVyYXRpb24uIElmIHN0cmVhbSBpcyBicm9rZW4gaW50bw0KPiA+IG11bHRpcGxlIGVucXVl dWVfYnVyc3QoKSB0aGVuIGVhY2gNCj4gPiByZXNwZWN0aXZlIGVucXVldWVfYnVyc3QoKSBtdXN0 IGNhcnJ5IHNhbWUgcnRlX2NvbXBfc3RyZWFtIHBvaW50ZXIuIEl0DQo+IGlzIG1hbmRhdG9yeSBp bnB1dCBmb3Igc3RhdGVmdWwNCj4gPiBvcGVyYXRpb25zLg0KPiA+IHJ0ZV9jb21wX3N0cmVhbSBj YW4gYmUgY2xlYXJlZCBhbmQgcmV1c2VkIHZpYSBjb21wcmVzc2lvbiBBUEkNCj4gcnRlX2NvbXBf c3RyZWFtX2NsZWFyKCkgYW5kIGZyZWUgdmlhDQo+ID4gcnRlX2NvbXBfc3RyZWFtX2ZyZWUoKS4g Q2xlYXIvZnJlZSBzaG91bGQgbm90IGJlIGNhbGxlZCB3aGVuIGl0IGlzIGluIHVzZS4NCj4gPg0K PiA+IFRoaXMgZW5hYmxlcyBzaGFyaW5nIG9mIGEgc2Vzc2lvbiBieSBtdWx0aXBsZSB0aHJlYWRz IGhhbmRsaW5nIGRpZmZlcmVudA0KPiBzdHJlYW1zIGFzIGVhY2ggYnVsayBvcHMgY2FycnkgaXRz DQo+ID4gb3duIGNvbnRleHQuIFRoaXMgY2FuIGFsc28gYmUgdXNlZCBieSBQTUQgdG8gaGFuZGxl IE9VVF9PRl9TUEFDRQ0KPiBzaXR1YXRpb24uDQo+ID4NCj4gPiAzLiBBZGQgc3RyZWFtIGFsbG9j YXRlLCBjbGVhciBhbmQgZnJlZSBBUEkNCj4gPiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uDQo+ID4gMy4xLiBydGVfY29t cF9vcF9zdHJlYW1fYWxsb2MocnRlX21lbXBvb2wgKnBvb2wsIHJ0ZV9jb21wX29wX3R5cGUNCj4g dHlwZSwgcnRlX2NvbXBfc3RyZWFtDQo+ID4gKipzdHJlYW0pOw0KPiA+IDMuMi4gcnRlX2NvbXBf b3Bfc3RyZWFtX2NsZWFyKHJ0ZV9jb21wX3N0cmVhbSAqc3RyZWFtKTsgLy8gaW4gdGhpcw0KPiBj YXNlIHN0cmVhbSB3aWxsIGJlIHVzZWFibGUgZm9yIG5ldw0KPiA+IHN0YXRlZnVsIGJhdGNoDQo+ ID4gMy4zLiBydGVfY29tcF9vcF9zdHJlYW1fZnJlZShydGVfY29tcF9zdHJlYW0gKnN0cmVhbSk7 IC8vIHRvIGZyZWUNCj4gY29udGV4dA0KPiA+DQo+ID4gNC4gQWRkIG5ldyBBUEkgcnRlX2NvbXBk ZXZfZW5xdWV1ZV9zdHJlYW0oKQ0KPiA+IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4NCj4gPiAgc3Rh dGljIGlubGluZSB1aW50MTZfdCBydGVfY29tcGRldl9lbnF1ZXVlX3N0cmVhbSh1aW50OF90IGRl dl9pZCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDE2X3QgcXBfaWQsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfY29tcF9vcCAqKm9wcywNCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbmJfb3BzLA0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9j b21wX3N0cmVhbSAqc3RyZWFtKTsgLy90byBiZSBwYXNzZWQgd2l0aA0KPiBlYWNoIGNhbGwNCj4g Pg0KPiA+IEFwcGxpY2F0aW9uIHNob3VsZCBjYWxsIHRoaXMgQVBJIHRvIHByb2Nlc3MgZGVwZW5k ZW50IHNldCBvZiBkYXRhIE9SIHdoZW4NCj4gb3V0cHV0IGJ1ZmZlciBzaXplIGlzIHVua25vd24u DQo+ID4NCj4gPiBydGVfY29tcF9vcF9wb29sX2NyZWF0ZSgpIHNob3VsZCBjcmVhdGUgbWVtcG9v bCBsYXJnZSBlbm91Z2ggdG8NCj4gYWNjb21tb2RhdGUgb3BlcmF0aW9uYWwgc3RhdGUNCj4gPiAo bWFpbnRhaW5lZCBieSBydGVfY29tcF9zdHJlYW0pIGJhc2VkIG9uIHJ0ZV9jb21wX29wX3R5cGUu IFNpbmNlDQo+IHJ0ZV9jb21wX3N0cmVhbSB3b3VsZCBiZQ0KPiA+IG1haW50YWluZWQgYnkgUE1E LCB0aHVzIGFsbG9jYXRpbmcgaXQgZnJvbSBQTUQgbWFuYWdlZCBwb29sIG9mZmVycw0KPiBwZXJm b3JtYW5jZSBnYWlucy4NCj4gPg0KPiA+IEFQSSBmbG93OiBydGVfY29tcF9vcF9wb29sX2NyZWF0 ZSgpIC3ihpIgcnRlX2NvbXBfb3BfYnVsa19hbGxvYygpIC0tLT4NCj4gcnRlX2NvbXBfb3Bfc3Ry ZWFtX2FsbG9jKCkg4oaSDQo+ID4gZW5xdWVfc3RyZWFtKC4ub3BzLCAuLiwgc3RyZWFtKQ0KPiA+ DQo+ID4gRC4yLjEuMyBIaXN0b3J5IGJ1ZmZlcg0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ID4gV2lsbCBiZSBtYWludGFpbmVkIGJ5IFBNRCB3aXRoIGluIHJ0ZV9jb21wX3N0 cmVhbQ0KPiA+DQo+ID4gVGhhbmtzDQo+ID4gU2hhbGx5DQoNCg==