From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id D29BEE5D for ; Mon, 27 Nov 2017 19:54:34 +0100 (CET) Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 27 Nov 2017 10:54:33 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,465,1505804400"; d="scan'208";a="178392380" Received: from irsmsx152.ger.corp.intel.com ([163.33.192.66]) by orsmga005.jf.intel.com with ESMTP; 27 Nov 2017 10:54:31 -0800 Received: from irsmsx156.ger.corp.intel.com (10.108.20.68) by IRSMSX152.ger.corp.intel.com (163.33.192.66) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 27 Nov 2017 18:54:31 +0000 Received: from irsmsx101.ger.corp.intel.com ([169.254.1.22]) by IRSMSX156.ger.corp.intel.com ([169.254.3.33]) with mapi id 14.03.0319.002; Mon, 27 Nov 2017 18:54:30 +0000 From: "Trahe, Fiona" To: "Verma, Shally" , "dev@dpdk.org" , "Athreya, Narayana Prasad" , "Challa, Mahipal" , "De Lara Guarch, Pablo" CC: "Trahe, Fiona" Thread-Topic: [RFC v1] doc compression API for DPDK Thread-Index: AdNRkjwE1ZjDhxTcR46UpkXBh0QrkQAdnT0wBWWUaAA= Date: Mon, 27 Nov 2017 18:54:30 +0000 Message-ID: <348A99DA5F5B7549AA880327E580B435892C8ACD@IRSMSX101.ger.corp.intel.com> References: In-Reply-To: Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiY2U4YmIwOWYtZGE1ZC00N2U0LTgxY2MtY2M3YzFjNjBkYjgxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6ImkrK0V2SVJqZjd6dk51aEptc0liQkQ4a3pidlY1ZHd4Z21nK2pUQ25sVEU9In0= x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [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: Mon, 27 Nov 2017 18:54:35 -0000 SGkgU2hhbGx5LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFZlcm1h LCBTaGFsbHkgW21haWx0bzpTaGFsbHkuVmVybWFAY2F2aXVtLmNvbV0NCj4gU2VudDogVHVlc2Rh eSwgT2N0b2JlciAzMSwgMjAxNyAxMTozOSBBTQ0KPiBUbzogZGV2QGRwZGsub3JnOyBUcmFoZSwg RmlvbmEgPGZpb25hLnRyYWhlQGludGVsLmNvbT47IEF0aHJleWEsIE5hcmF5YW5hIFByYXNhZA0K PiA8TmFyYXlhbmFQcmFzYWQuQXRocmV5YUBjYXZpdW0uY29tPjsgQ2hhbGxhLCBNYWhpcGFsIDxN YWhpcGFsLkNoYWxsYUBjYXZpdW0uY29tPg0KPiBTdWJqZWN0OiBbUkZDIHYxXSBkb2MgY29tcHJl c3Npb24gQVBJIGZvciBEUERLDQo+IA0KPiBISSBGaW9uYQ0KPiANCj4gVGhpcyBpcyBhbiBSRkMg ZG9jdW1lbnQgdG8gYnJpZWYgb3VyIHVuZGVyc3RhbmRpbmcgYW5kIHJlcXVpcmVtZW50cyBvbiBj b21wcmVzc2lvbiBBUEkgcHJvcG9zYWwgaW4NCj4gRFBESy4gSXQgaXMgYmFzZWQgb24gIltSRkNd IENvbXByZXNzaW9uIEFQSSBpbiBEUERLIGh0dHA6Ly9kcGRrLm9yZy9tbC9hcmNoaXZlcy9kZXYv MjAxNy0NCj4gT2N0b2Jlci8wNzkzNzcuaHRtbCIuDQo+IEludGVudGlvbiBvZiB0aGlzIGRvY3Vt ZW50IGlzIHRvIGFsaWduIG9uIGNvbmNlcHRzIGJ1aWx0IGludG8gY29tcHJlc3Npb24gQVBJLCBp dHMgdXNhZ2UgYW5kIGlkZW50aWZ5IGZ1cnRoZXINCj4gcmVxdWlyZW1lbnRzLg0KPiANCj4gR29p bmcgZnVydGhlciBpdCBjb3VsZCBiZSBhIGJhc2UgdG8gQ29tcHJlc3Npb24gTW9kdWxlIFByb2dy YW1tZXIgR3VpZGUuDQo+IA0KPiBDdXJyZW50IHNjb3BlIGlzIGxpbWl0ZWQgdG8NCj4gLSBkZWZp bml0aW9uIG9mIHRoZSB0ZXJtaW5vbG9neSB3aGljaCBtYWtlcyB1cCBmb3VuZGF0aW9uIG9mIGNv bXByZXNzaW9uIEFQSQ0KPiAtIHR5cGljYWwgQVBJIGZsb3cgZXhwZWN0ZWQgdG8gdXNlIGJ5IGFw cGxpY2F0aW9ucw0KPiANCj4gT3ZlcnZpZXcNCj4gfn5+fn5+fn4NCj4gQS4gTm90aW9uIG9mIGEg c2Vzc2lvbiBpbiBjb21wcmVzc2lvbiBBUEkNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KPiBBIFNlc3Npb24gaXMgcGVyIGRldmljZSBsb2dpY2FsIGVudGl0eSB3aGljaCBp cyBzZXR1cCB3aXRoIGNoYWluZWQteGZvcm1zIHRvIGJlIHBlcmZvcm1lZCBvbiBidXJzdA0KPiBv cGVyYXRpb25zIHdoZXJlIGluZGl2aWR1YWwgZW50cnkgY29udGFpbnMgb3BlcmF0aW9uIHR5cGUg KGRlY29tcHJlc3MvY29tcHJlc3MpIGFuZCByZWxhdGVkIHBhcmFtZXRlci4NCj4gQSB0eXBpY2Fs IFNlc3Npb24gcGFyYW1ldGVyIGluY2x1ZGVzOg0KPiAtIGNvbXByZXNzIC8gZGVjb21wcmVzcw0K PiAtIGRldl9pZA0KPiAtIGNvbXByZXNzaW9uIGFsZ29yaXRobSBhbmQgb3RoZXIgcmVsYXRlZCBw YXJhbWV0ZXJzDQo+IC0gbWVtcG9vbCAtIGZvciB1c2UgYnkgc2Vzc2lvbiBmb3IgcnVudGltZSBy ZXF1aXJlbWVudA0KPiAtIGFuZCBhbnkgb3RoZXIgYXNzb2NpYXRlZCBwcml2YXRlIGRhdGEgbWFp bnRhaW5lZCBieSBzZXNzaW9uDQo+IA0KPiBBcHBsaWNhdGlvbiBjYW4gc2V0dXAgbXVsdGlwbGUg c2Vzc2lvbnMgb24gYSBkZXZpY2UgYXMgZGljdGF0ZWQgYnkgZGV2X2luZm8ubmJfc2Vzc2lvbnMg b3INCj4gbmJfc2Vzc2lvbl9wZXJfcXAuDQo+IA0KW0Zpb25hXSBUaGUgc2Vzc2lvbiBkZXNpZ24g aXMgbW9kZWxsZWQgb24gdGhlIGNyeXB0b2RldiBzZXNzaW9uIGRlc2lnbiBhbmQgc28gYWxsb3dz DQp0byBjcmVhdGUgYSBzZXNzaW9uIHdoaWNoIGNhbiBiZSB1c2VkIG9uIGRpZmZlcmVudCBkcml2 ZXIgdHlwZXMuIEUuZy4gIGEgc2Vzc2lvbiBjb3VsZCBiZSBzZXQgdXAgYW5kIGluaXRpYWxpc2Vk IA0KdG8gcnVuIG9uIGEgUXVpY2tBc3Npc3QgZGV2aWNlIGFuZCBhIFNvZnR3YXJlIGRldmljZS4g VGhpcyBtYXkgYmUgdXNlZnVsIGZvciBzdGF0ZWxlc3MNCnJlcXVlc3RzLCBhbmQgZW5hYmxlIGxv YWQtYmFsYW5jaW5nLiBGb3Igc3RhdGVmdWwgZmxvd3MgdGhlIHNlc3Npb24gc2hvdWxkIGJlIHNl dCB1cCBmb3INCm9ubHkgb25lIHNwZWNpZmljIGRyaXZlci10eXBlIGFzIHRoZSBzdGF0ZSBpbmZv cm1hdGlvbiB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgcHJpdmF0ZSBkYXRhIHNwZWNpZmljIHRvIHRo ZSBkcml2ZXItdHlwZQ0KYW5kIG5vdCB0cmFuc2ZlcnJhYmxlIGJldHdlZW4gZHJpdmVyLXR5cGVz Lg0KU28gYSBzZXNzaW9uIA0KIC0gaXMgbm90IHBlci1kZXZpY2UNCiAtIGhhcyBubyBkZXZfaWQN CiAtIGhhcyBubyBtZW1wb29sIHN0b3JlZCBpbiBpdCAtIHRoZSBwb29sIGlzIGNyZWF0ZWQgYnkg dGhlIGFwcGxpY2F0aW9uLCB0aGUgbGliIGNhbiByZXRyaWV2ZSB0aGUgcG9vbCBmcm9tIHRoZSBv YmplY3Qgd2l0aCBydGVfbWVtcG9vbF9mcm9tX29iaigpDQogLSBkb2VzIG5vdCBoYXZlIGEgbGlt aXQgbnVtYmVyIHBlciBkZXZpY2UsIGp1c3QgcGVyIHFwLCBpLmUuIHRoZXJlIGlzIG5vIGRldl9p bmZvLm5iX3Nlc3Npb25zLCBqdXN0IGRldl9pbmZvLm1heF9uYl9zZXNzaW9uc19wZXJfcXANCg0K RG8geW91IHRoaW5rIGFueSBvZiB0aGlzIG5lZWRzIHRvIGJlIGNoYW5nZWQ/IA0KDQo+IEIuIE5v dGlvbiBvZiBidXJzdCBvcGVyYXRpb25zIGluIGNvbXByZXNzaW9uIEFQSQ0KPiDCoD09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiBzdHJ1Y3QgcnRlX2NvbXBfb3AgZGVm aW5lcyBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIG9wZXJhdGlvbmFsIHBhcmFtZXRlciBhbmQg bWFrZXMgdXAgb25lIHNpbmdsZQ0KPiBlbGVtZW50IG9mIGJ1cnN0LiBUaGlzIGlzIGJvdGggYW4g aW5wdXQvb3V0cHV0IHBhcmFtZXRlci4NCj4gUE1EIGdldHMgc291cmNlLCBkZXN0aW5hdGlvbiBh bmQgY2hlY2tzdW0gaW5mb3JtYXRpb24gYXQgaW5wdXQgYW5kIHVwZGF0ZWQgaXQgd2l0aCBieXRl cyBjb25zdW1lZCBhbmQNCj4gcHJvZHVjZWQgYXQgb3V0cHV0Lg0KW0Zpb25hXSBBZ3JlZWQNCg0K PiBPbmNlIGVucXVldWVkIGZvciBwcm9jZXNzaW5nLCBydGVfY29tcF9vcCAqY2Fubm90IGJlIHJl dXNlZCogdW50aWwgaXRzIHN0YXR1cyBpcyBzZXQgdG8NCj4gUlRFX0NPTVBfT1BfRkFJTFVSRSBv ciBSVEVfQ09NUF9PUF9TVEFUVVNfU1VDQ0VTUy4NCltGaW9uYV0gY2Fubm90IGJlIHVzZWQgdW50 aWwgaXRzIHN0YXR1cyBpcyBzZXQgdG8gYW55IHZhbHVlIG90aGVyIHRoYW4gUlRFX0NPTVBfT1Bf Tk9UX1BST0NFU1NFRA0KDQoNCj4gQy4gU2Vzc2lvbiBhbmQgcnRlX2NvbXBfb3ANCj4gwqA9PT09 PT09PT09PT09PT09PT09PT09PQ0KPiBFdmVyeSBvcGVyYXRpb24gaW4gYSBidXJzdCBpcyB0aWVk IHRvIGEgU2Vzc2lvbi4gTW9yZSB0byBjb3ZlciBvbiB0aGlzIHVuZGVyIFN0YXRlbGVzcyBWcyBT dGF0ZWZ1bCBzZWN0aW9uLg0KW0Zpb25hXSBBZ3JlZWQuIEkgd291bGQgYWRkIHRoYXQgZWFjaCBv cGVyYXRpb24gaW4gYSBidXJzdCBtYXkgYmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgc2Vzc2lv bi4NCg0KIA0KPiBELiBTdGF0ZWxlc3MgVnMgU3RhdGVmdWwNCj4gPT09PT09PT09PT09PT09PT09 PQ0KPiBDb21wcmVzc2lvbiBBUEkgcHJvdmlkZSBSVEVfQ09NUF9GRl9TVEFURUZVTCBmZWF0dXJl IGZsYWcgZm9yIFBNRCB0byByZWZsZWN0IGl0cyBzdXBwb3J0IGZvciBTdGF0ZWZ1bA0KPiBvcGVy YXRpb24uDQpbRmlvbmFdIEFncmVlZC4NCg0KPiANCj4gRC4xIENvbXByZXNzaW9uIEFQSSBTdGF0 ZWxlc3Mgb3BlcmF0aW9uDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiBBIFN0YXRlbGVzcyBvcGVyYXRpb24gbWVhbnMgYWxsIGVucXVl dWVkIHBhY2tldHMgYXJlIGluZGVwZW5kZW50IG9mIGVhY2ggb3RoZXIgaS5lLiBFYWNoIHBhY2tl dCBoYXMNCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRoZWlyIGZsdXNoIHZhbHVlIGlz IHNldCB0byBSVEVfRkxVU0hfRlVMTCBvciBSVEVfRkxVU0hfRklOQUwgKHJlcXVpcmVkIG9ubHkg b24gY29tcHJlc3Npb24NCj4gc2lkZSksDQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBB bGwtb2YgdGhlIHJlcXVpcmVkIGlucHV0IGFuZCBzdWZmaWNpZW50IGxhcmdlIGJ1ZmZlciBzaXpl IHRvIHN0b3JlIG91dHB1dCBpLmUuIE9VVF9PRl9TUEFDRSBjYW4NCj4gbmV2ZXIgb2NjdXIgKHJl cXVpcmVkIGR1cmluZyBib3RoIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uKQ0KPiANCj4g SW4gc3VjaCBjYXNlLCBQTUQgaW5pdGlhdGVzIHN0YXRlbGVzcyBwcm9jZXNzaW5nIGFuZCByZWxl YXNlcyBhY3F1aXJlZCByZXNvdXJjZXMgYWZ0ZXIgcHJvY2Vzc2luZyBvZiBjdXJyZW50DQo+IG9w ZXJhdGlvbiBpcyBjb21wbGV0ZSBpLmUuIGZ1bGwgaW5wdXQgY29uc3VtZWQgYW5kIGZ1bGwgb3V0 cHV0IHdyaXR0ZW4uDQo+IEFwcGxpY2F0aW9uIGNhbiBhdHRhY2ggc2FtZSBvciBkaWZmZXJlbnQg c2Vzc2lvbiB0byBlYWNoIHBhY2tldCBhbmQgY2FuIG1ha2UgY29uc2VjdXRpdmUgZW5xdWVfYnVy c3QoKQ0KPiBjYWxscyBpLmUuIEZvbGxvd2luZyBpcyByZWxldmFudCB1c2FnZToNCj4gDQo+IGVu cXVldWVkID0gcnRlX2NvbXBfZW5xdWVfYnVyc3QgKGRldl9pZCwgcXBfaWQsIG9wczEsIG5iX29w cyk7DQo+IGVucXVldWVkID0gcnRlX2NvbXBfZW5xdWVfYnVyc3QoZGV2X2lkLCBxcF9pZCwgb3Bz MiwgbmJfb3BzKTsNCj4gZW5xdWV1ZWQgPSBydGVfY29tcF9lbnF1ZV9idXJzdChkZXZfaWQsIHFw X2lkLCBvcHMzLCBuYl9vcHMpOw0KPiANCj4gKk5vdGUg4oCTIEV2ZXJ5IGNhbGwgaGFzIGRpZmZl cmVudCBvcHMgYXJyYXkgaS5lLsKgIHNhbWUgcnRlX2NvbXBfb3AgYXJyYXkgKmNhbm5vdCBiZSBy ZXVzZWQqIHRvIHF1ZXVlIG5leHQNCj4gYmF0Y2ggb2YgZGF0YSB1bnRpbCBwcmV2aW91cyBvbmVz IGFyZSBjb21wbGV0ZWx5IHByb2Nlc3NlZC4NCj4gDQo+IEFsc28gaWYgbXVsdGlwbGUgdGhyZWFk cyBjYWxscyBlbnF1ZXVlX2J1cnN0KCkgb24gc2FtZSBxdWV1ZSBwYWlyIHRoZW4gaXTigJlzIGFw cGxpY2F0aW9uIG9udXMgdG8gdXNlIHByb3Blcg0KPiBsb2NraW5nIG1lY2hhbmlzbSB0byBlbnN1 cmUgc2VyaWFsaXplZCBlbnF1ZXVpbmcgb2Ygb3BlcmF0aW9ucy4NCltGaW9uYV0gQWdyZWVkIHRv IGFib3ZlIHN0YXRlbGVzcyBkZXNjcmlwdGlvbi4gDQoNCg0KPiBQbGVhc2Ugbm90ZSBhbnkgdGlt ZSBvdXRwdXQgYnVmZmVyIHJhbiBvdXQgb2Ygc3BhY2UgZHVyaW5nIHdyaXRlIHRoZW4gb3BlcmF0 aW9uIHdpbGwgdHVybiDigJxTdGF0ZWZ1bOKAnS7CoCBTZWUNCj4gbW9yZSBvbiBTdGF0ZWZ1bCB1 bmRlciByZXNwZWN0aXZlIHNlY3Rpb24uDQpbRmlvbmFdIExldCdzIGNvbWUgYmFjayB0byB0aGlz IGxhdGVyLiBBbiBhbHRlcm5hdGl2ZSBpcyB0aGF0IE9VVF9PRl9TUEFDRSBpcyByZXR1cm5lZCBh bmQgdGhlICBhcHBsaWNhdGlvbg0KbXVzdCB0cmVhdCBhcyBhIGZhaWwgYW5kIHJlc3VibWl0IHRo ZSBvcGVyYXRpb24gd2l0aCBhIGxhcmdlciBkZXN0aW5hdGlvbiBidWZmZXIuIA0KDQo+ICBUeXBp Y2FsIEFQSShmbG93LXdpc2UpIHRvIHNldHVwIGZvciBzdGF0ZWxlc3Mgb3BlcmF0aW9uOg0KPiAx LiBydGVfY29tcF9zZXNzaW9uICpzZXNzID0gcnRlX2NvbXBfc2Vzc2lvbl9jcmVhdGUocnRlX21l bXBvb2wgKnBvb2wpOw0KPiAyLiBydGVfY29tcF9zZXNzaW9uX2luaXQgKGludCBkZXZfaWQsIHJ0 ZV9jb21wX3Nlc3Npb24gKnNlc3MsIHJ0ZV9jb21wX3hmb3JtICp4Zm9ybSwgcnRlX21lbXBvb2wN Cj4gKnNlc3NfcG9vbCk7DQo+IDMuIHJ0ZV9jb21wX29wX3Bvb2xfY3JlYXRlKHJ0ZV9tZW1wb29s IC4uKQ0KPiA0LiBydGVfY29tcF9vcF9idWxrX2FsbG9jIChzdHJ1Y3QgcnRlX21lbXBvb2wgKm1l bXBvb2wsIHN0cnVjdCBydGVfY29tcF9vcCAqKm9wcywgdWludDE2X3QNCj4gbmJfb3BzKTsNCj4g NS4gZm9yIGV2ZXJ5IHJ0ZV9jb21wX29wIGluIG9wc1tdLA0KPiDCoMKgwqAgNS4xIHJ0ZV9jb21w X29wX2F0dGFjaF9zZXNzaW9uKHJ0ZV9jb21wX29wICpvcCwgcnRlX2NvbXBfc2Vzc2lvbiAqc2Vz cyk7DQo+IMKgwqDCoCA1LjIgc2V0IHVwIHdpdGggc3JjL2RzdCBidWZmZXINCj4gNi4gZW5xID0g cnRlX2NvbXBkZXZfZW5xdWV1ZV9idXJzdCh1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBfaWQs IHN0cnVjdCBydGVfY29tcF9vcCAqKm9wcywgdWludDE2X3QNCj4gbmJfb3BzKTsNCj4gNy4gZHF1 ID0gcnRlX2NvbXBkZXZfZGVxdWV1ZV9idXJzdChkZXZfaWQsIHFwX2lkLCBvcHMsIGVucSk7DQo+ IDguIHJlcGVhdCA3IHdoaWxlIChkcXUgPCBlbnEpIC8vIFdhaXQgdGlsbCBhbGwgb2YgZW5xdWV1 ZWQgYXJlIGRlcXVldWVkDQo+IDkuIFJlcGVhdCA1LjIgZm9yIG5leHQgYmF0Y2ggb2YgZGF0YQ0K PiAxMC4gcnRlX2NvbXBfc2Vzc2lvbl9jbGVhciAoKSAvLyBvbmx5IHJlc2V0IHByaXZhdGUgZGF0 YSBtZW1vcnkgYXJlYSBhbmQgKm5vdCogdGhlIHhmb3JtIGFuZCBkZXZpZA0KPiBpbmZvcm1hdGlv bi4gSW4gY2FzZSwgeW91IHdhbnQgdG8gcmUtdXNlIHNlc3Npb24uDQo+IDExLiBydGVfY29tcF9z ZXNzaW9uX2ZyZWUocmV0X2NvbXBfc2VzcyAqc2Vzc2lvbikNCltGaW9uYV0gb2suIFRoaXMgaXMg b25lIHBvc3NpYmxlIGZsb3cuIFRoZXJlIGFyZSB2YXJpYXRpb25zIHBvc3NpYmxlDQogLSBBYm92 ZSBhc3N1bWVzIGFsbCBvcHMgYXJlIHVzaW5nIHRoZSBzYW1lIHNlc3Npb24sIHRoaXMgaXMgbm90 IG5lY2Vzc2FyaWx5IHRoZSBjYXNlLiBFLmcuIHRoZXJlDQogICBjb3VsZCBiZSBhIGNvbXByZXNz aW9uIHNlc3Npb24gYW5kIGEgZGVjb21wcmVzc2lvbiBzZXNzaW9uIGFuZCBhIGJ1cnN0IG9mIG9w cyBtYXkgY29udGFpbiBib3RoLg0KICAgSW4gdGhpcyBjYXNlIFN0ZXAgOSB3b3VsZCBiZSBSZXBl YXQgNS4xIGFzIHdlbGwgYXMgNS4yDQogLSBBbHNvIGl0IHdvdWxkIG5vdCBiZSBuZWNlc3Nhcnkg dG8gd2FpdCB1bnRpbCB0aGUgZnVsbCBidXJzdCBpcyBkZXF1ZXVlZCBiZWZvcmUgZG9pbmcNCiAg IGFub3RoZXIgZW5xdWV1ZSAtIHRob3VnaCBvZiBjb3Vyc2UgdGhlIG9wcyB3b3VsZCBuZWVkIHRv IGJlIG1hbmFnZWQgc28gb25seSANCiAgIHRob3NlIGZpbmlzaGVkIHdpdGggYXJlIHJldXNlZCwg b3IgbXVsdGlwbGUgc2V0cyBvZiBvcHMgY291bGQgYmUgYWxsb2NhdGVkLg0KIC0gV2hhdCBkbyB5 b3UgbWVhbiBieSBTdGVwIDEwIGNvbW1lbnQ/IFRoZSBzZXNzaW9uIG9ubHkgaGFzIHByaXZhdGUg ZGF0YS4gSXQncyB1cCB0byB0aGUgUE1EIHRvIA0KICAgc3RvcmUgd2hhdGV2ZXIgaXQgbmVlZHMg ZnJvbSB0aGUgeGZvcm0uIEkgdGhpbmsgc2Vzc2lvbl9jbGVhciBzaG91bGQgbWVhbiBhbGwgdGhl IGRhdGEgaXMgemVyb2VkIGluIHRoZSBzZXNzaW9uLg0KICAgSWYgdGhlIHNlc3Npb24gaXMgdG8g YmUgcmUtdXNlZCB0aGVuIG5vdGhpbmcgbmVlZHMgdG8gYmUgY2xlYXJlZC4gRWFjaCBvcCBpcyBh bHJlYWR5IHJlLXVzaW5nIHRoZSBzZXNzaW9uIGluIHlvdXINCiAgIGZsb3cgYWJvdmUgd2l0aG91 dCBjbGVhcmluZyBiZXR3ZWVuIG9wcy4NCiAgIEJVVCB0aGlzIG9ubHkgYXBwbGllcyB0byBzdGF0 ZWxlc3MgLSBmb3Igc3RhdGVmdWwgd2UgbWF5IG5lZWQgYSBkaWZmZXJlbnQgYmVoYXZpb3VyIC0g dG8gY2xlYXIgc3RhdGUgZGF0YSBidXQgDQogICBrZWVwIGFsZ28sIGxldmVsLCBIdWZmbWFuLXR5 cGUsIGNoZWNrc3VtLXR5cGUuIExldCdzIGRpc2N1c3MgdW5kZXIgc3RhdGVmdWwgLSB0aGlzIG1h eSBuZWVkIGEgbmV3IEFQSS4NCiANCg0KPiBELjEuMiBSZXF1aXJlbWVudCBmb3IgU3RhdGVsZXNz DQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gU2luY2Ug b3BlcmF0aW9uIGNhbiBjb21wbGV0ZSBvdXQtb2Ytb3JkZXIuIFRoZXJlIHNob3VsZCBiZSBvbmUg KHZvaWQgKnVzZXIpIHBlciBydGVfY29tcF9vcCB0byBlbmFibGUNCj4gYXBwbGljYXRpb24gdG8g bWFwIGRlcXVldWVkIG9wIHRvIGVucXVldWVkIG9wLg0KW0Zpb25hXSBJbiBjcnlwdG9kZXYgdGhl cmUgd2FzIGFuIG9wYXF1ZV9kYXRhIGZpZWxkIGluIHRoZSBvcCAtIGl0IHdhcyByZW1vdmVkIGFz IHRoZSBhcHBsaWNhdGlvbiBjYW4gc3RvcmUgYW55DQpwcml2YXRlIGRhdGEgaXQgbmVlZHMgZm9s bG93aW5nIHRoZSBvcCwgYXMgaXQgY3JlYXRlcyB0aGUgb3AgcG9vbCBhbmQgZGljdGF0ZXMgdGhl IHNpemUuIERvIHlvdSB0aGluayB3ZSBuZWVkIGFuDQpleHBsaWNpdCAodm9pZCAqdXNlcikgb3Ig Y2FuIHdlIGZvbGxvdyB0aGUgc2FtZSBhcHByb2FjaD8NCg0KW0Zpb25hXSBPdXQgb2YgdGltZSAt IEknbGwgY29udGludWUgZnJvbSBoZXJlIGxhdGVyIGluIHRoZSB3ZWVrLg0KDQogDQo+IEQuMiBD b21wcmVzc2lvbiBBUEkgU3RhdGVmdWwgb3BlcmF0aW9uDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gwqBBIFN0YXRlZnVsIG9w ZXJhdGlvbiBtZWFucyBmb2xsb3dpbmcgY29uZGl0aW9uczoNCj4gLSBBUEkgcmFuIGludG8gb3V0 X29mX3NwYWNlIHNpdHVhdGlvbiBkdXJpbmcgcHJvY2Vzc2luZyBvZiBpbnB1dC4gRXhhbXBsZSwg c3RhdGVsZXNzIGNvbXByZXNzZWQgc3RyZWFtDQo+IGZlZCBmdWxseSB0byBkZWNvbXByZXNzb3Ig YnV0IG91dHB1dCBidWZmZXIgaXMgbm90IGxhcmdlIGVub3VnaCB0byBob2xkIG91dHB1dC4NCj4g LSBBUEkgd2FpdGluZyBmb3IgbW9yZSBpbnB1dCB0byBwcm9kdWNlIG91dHB1dC4gRXhhbXBsZSwg c3RhdGVsZXNzIGNvbXByZXNzZWQgc3RyZWFtIGZlZCBwYXJ0aWFsbHkgdG8NCj4gZGVjb21wcmVz c29yLg0KPiAtIEFQSSBpcyBkZXBlbmRlbnQgb24gcHJldmlvdXMgb3BlcmF0aW9uIGZvciBmdXJ0 aGVyIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24NCj4gDQo+IEluIGNhc2Ugb2YgZWl0aGVyIG9u ZSBvciBhbGwgb2YgdGhlIGFib3ZlIGNvbmRpdGlvbnMgUE1EIGlzIHJlcXVpcmVkIHRvIG1haW50 YWluIGNvbnRleHQgb2Ygb3BlcmF0aW9ucw0KPiBhY3Jvc3MgZW5xdWVfYnVyc3QoKSBjYWxscywg dW50aWwgYSBwYWNrZXQgd2l0aMKgIFJURV9GTFVTSF9GVUxML0ZJTkFMIGFuZCBzdWZmaWNpZW50 IGlucHV0L291dHB1dCBidWZmZXJzDQo+IGlzIHJlY2VpdmVkIGFuZCBwcm9jZXNzZWQuDQo+IA0K PiBELjIuMSBDb21wcmVzc2lvbiBBUEkgcmVxdWlyZW1lbnQgZm9yIFN0YXRlZnVsDQo+IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiANCj4gRC4yLjEuMSBTbGlkaW5nIFdpbmRvdyBTaXplDQo+IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBNYXhpbXVtIGxlbmd0aCBvZiBTbGlkaW5nIFdpbmRvdyBp biBieXRlcy4gUHJldmlvdXMgZGF0YSBsb29rdXAgd2lsbCBiZSBwZXJmb3JtZWQgdXAgdG8gdGhp cyBsZW5ndGguIFRvDQo+IGJlIGFkZGVkIGFzIGFsZ29yaXRobSBjYXBhYmlsaXR5IHBhcmFtZXRl ciBhbmQgc2V0IGJ5IFBNRC4NCj4gDQo+IEQuMi4xLjIgU3RhdGVmdWwgb3BlcmF0aW9uIHN0YXRl IG1haW50ZW5hbmNlDQo+IMKgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBUaGlzIHNlY3Rpb24gc3RhcnRzIHdpdGggZGVzY3Jp cHRpb24gb2Ygb3VyIHVuZGVyc3RhbmRpbmcgYWJvdXQgY29tcHJlc3Npb24gQVBJIHN1cHBvcnQg Zm9yIHN0YXRlZnVsLg0KPiBEZXBlbmRpbmcgdXBvbiB1bmRlcnN0YW5kaW5nIGJ1aWxkIHVwb24g dGhlc2UgY29uY2VwdHMsIHdlIHdpbGwgaWRlbnRpZnkgcmVxdWlyZWQgZGF0YSBzdHJ1Y3R1cmUv cGFyYW0NCj4gdG8gbWFpbnRhaW4gaW4tcHJvZ3Jlc3Mgb3BlcmF0aW9uIGNvbnRleHQgYnkgUE1E Lg0KPiANCj4gRm9yIHN0YXRlZnVsIGNvbXByZXNzaW9uLCBiYXRjaCBvZiBkZXBlbmRlbnQgcGFj a2V0cyBzdGFydHMgYXQgYSBwYWNrZXQgaGF2aW5nDQo+IFJURV9OT19GTFVTSC9SVEVfU1lOQ19G TFVTSCBmbHVzaCB2YWx1ZSBhbmQgZW5kIGF0IHBhY2tldCBoYXZpbmcgUlRFX0ZVTExfRkxVU0gv RklOQUxfRkxVU0guDQo+IGkuZS4gYXJyYXkgb2Ygb3BlcmF0aW9ucyB3aWxsIGNhcnJ5IHN0cnVj dHVyZSBsaWtlIHRoaXM6DQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gfG9w MS5ub19mbHVzaCB8IG9wMi5ub19mbHVzaCB8IG9wMy5ub19mbHVzaCB8IG9wNC5mdWxsX2ZsdXNo fA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IEZvciBzYWtlIG9mIHNpbXBs aWNpdHksIHdlIHdpbGwgdXNlIHRlcm0gInN0cmVhbSIgdG8gaWRlbnRpZnkgc3VjaCByZWxhdGVk IHNldCBvZiBvcGVyYXRpb24gaW4gZm9sbG93aW5nDQo+IGRlc2NyaXB0aW9uLg0KPiANCj4gU3Ry ZWFtIHByb2Nlc3NpbmcgaW1wb3NlIGZvbGxvd2luZyBsaW1pdGF0aW9ucyBvbiB1c2FnZSBvZiBl bnF1ZV9idXJzdCgpIEFQSQ0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQWxsIGRlcGVu ZGVudCBwYWNrZXRzIGluIGEgc3RyZWFtIHNob3VsZCBjYXJyeSBzYW1lIHNlc3Npb24NCj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIHN0cmVhbSBpcyBicm9rZW4gaW50byBtdWx0aXBs ZSBlbnF1ZXVlX2J1cnN0KCkgY2FsbCwgdGhlbiBuZXh0IGVucXVldWVfYnVyc3QoKSBjYW5ub3Qg YmUgY2FsbGVkDQo+IHVudGlsIHByZXZpb3VzIG9uZSBoYXMgZnVsbHkgcHJvY2Vzc2VkLiBJLkUu DQo+IA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENvbnNpZGVyIGZvciBleGFtcGxl LCBhIHN0cmVhbSB3aXRoIG9wczEgLi5vcHM3LCAgVGhpcyBpcyAqbm90KiBhbGxvd2VkDQo+IA0K PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnF1ZV9idXJzdCh8b3AxLm5vX2ZsdXNoIHwgb3Ay Lm5vX2ZsdXNoIHwgb3AzLm5vX2ZsdXNoIHwgb3A0Lm5vX2ZsdXNofCkNCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IA0KPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnF1ZV9idXJzdCh8 b3A1Lm5vX2ZsdXNoIHwgb3A2Lm5vX2ZsdXNoIHwgb3A3LmZsdXNoX2ZpbmFsIHwpDQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IA0KPiDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKg wqBUaGlzICppcyogYWxsb3dlZA0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW5xdWVfYnVyc3Qo fG9wMS5ub19mbHVzaCB8IG9wMi5ub19mbHVzaCB8IG9wMy5ub19mbHVzaCB8IG9wNC5ub19mbHVz aHwpDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAN Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlcXVlX2J1cnN0KG9wczEgLi5vcHM0 KQ0KPiANCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZW5xdWVfYnVyc3QofG9wNS5ub19mbHVzaCB8IG9wNi5ub19mbHVzaCB8IG9w Ny5mbHVzaF9maW5hbCB8KQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiANCj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEEgc2luZ2xlIGVucXVlX2J1cnN0KCkgY2FuIGNh cnJ5IG9ubHkgb25lIHN0cmVhbS4gSS5FLiBUaGlzIGlzICpub3QqIGFsbG93ZWQNCj4gDQo+IMKg IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnF1ZV9idXJzdCAofG9wMS5u b19mbHVzaCB8IG9wMi5ub19mbHVzaCB8IG9wMy5mbHVzaF9maW5hbCB8IG9wNC5ub19mbHVzaCB8 IG9wNS5ub19mbHVzaCB8KQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiANCj4gSWYgYSBzdHJlYW0gaXMgYnJv a2VuIGluIHRvIHNldmVyYWwgZW5xdWV1ZV9idXJzdCgpIGNhbGxzLCB0aGVuIGNvbXByZXNzIEFQ SSBuZWVkIHRvIG1haW50YWluIG9wZXJhdGlvbmFsDQo+IHN0YXRlIGJldHdlZW4gY2FsbHMuIEZv ciB0aGlzLCBjb25jZXB0IG9mIHJ0ZV9jb21wX3N0cmVhbSBpcyBlbmFibGVkIGluIHRvIGNvbXBy ZXNzaW9uIEFQSS4NCj4gSGVyZeKAmXJlIHRoZSBwcm9wb3NlZCBjaGFuZ2VzIHRvIGV4aXN0aW5n IGRlc2lnbjoNCj4gDQo+IDEuIEFkZCBydGVfY29tcF9vcF90eXBlDQo+IC4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4NCj4gZW51bSBydGVfY29tcF9vcF90eXBlIHsNCj4g UlRFX0NPTVBfT1BfU1RBVEVMRVNTLA0KPiBSVEVfQ09NUF9PUF9TVEFURUZVTA0KPiB9DQo+IA0K PiAyLiBBZGQgbmV3IGRhdGEgdHlwZSBydGVfY29tcF9zdHJlYW0gdG8gbWFpbnRhaW4gc3RyZWFt IHN0YXRlDQo+IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u DQo+IHJ0ZV9jb21wX3N0cmVhbSBpcyBhbiBvcGFxdWUgZGF0YSBzdHJ1Y3R1cmUgdG8gYXBwbGlj YXRpb24gd2hpY2ggaXMgZXhjaGFuZ2VkIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4NCj4gYXBwbGlj YXRpb24gYW5kIFBNRCBkdXJpbmcgc3RhdGVmdWwgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbi4N Cj4gSXQgc2hvdWxkIGJlIGFsbG9jYXRlZCBwZXIgc3RyZWFtIEFORCBiZWZvcmUgYmVnaW5uaW5n IG9mIHN0YXRlZnVsIG9wZXJhdGlvbi4gSWYgc3RyZWFtIGlzIGJyb2tlbiBpbnRvDQo+IG11bHRp cGxlIGVucXVldWVfYnVyc3QoKSB0aGVuIGVhY2gNCj4gcmVzcGVjdGl2ZSBlbnF1ZXVlX2J1cnN0 KCkgbXVzdCBjYXJyeSBzYW1lIHJ0ZV9jb21wX3N0cmVhbSBwb2ludGVyLiBJdCBpcyBtYW5kYXRv cnkgaW5wdXQgZm9yIHN0YXRlZnVsDQo+IG9wZXJhdGlvbnMuDQo+IHJ0ZV9jb21wX3N0cmVhbSBj YW4gYmUgY2xlYXJlZCBhbmQgcmV1c2VkIHZpYSBjb21wcmVzc2lvbiBBUEkgcnRlX2NvbXBfc3Ry ZWFtX2NsZWFyKCkgYW5kIGZyZWUgdmlhDQo+IHJ0ZV9jb21wX3N0cmVhbV9mcmVlKCkuIENsZWFy L2ZyZWUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBpdCBpcyBpbiB1c2UuDQo+IA0KPiBUaGlz IGVuYWJsZXMgc2hhcmluZyBvZiBhIHNlc3Npb24gYnkgbXVsdGlwbGUgdGhyZWFkcyBoYW5kbGlu ZyBkaWZmZXJlbnQgc3RyZWFtcyBhcyBlYWNoIGJ1bGsgb3BzIGNhcnJ5IGl0cw0KPiBvd24gY29u dGV4dC4gVGhpcyBjYW4gYWxzbyBiZSB1c2VkIGJ5IFBNRCB0byBoYW5kbGUgT1VUX09GX1NQQUNF IHNpdHVhdGlvbi4NCj4gDQo+IDMuIEFkZCBzdHJlYW0gYWxsb2NhdGUsIGNsZWFyIGFuZCBmcmVl IEFQSQ0KPiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uDQo+IDMuMS4gcnRlX2NvbXBfb3Bfc3RyZWFtX2FsbG9jKHJ0ZV9t ZW1wb29sICpwb29sLCBydGVfY29tcF9vcF90eXBlIHR5cGUsIHJ0ZV9jb21wX3N0cmVhbQ0KPiAq KnN0cmVhbSk7DQo+IDMuMi4gcnRlX2NvbXBfb3Bfc3RyZWFtX2NsZWFyKHJ0ZV9jb21wX3N0cmVh bSAqc3RyZWFtKTsgLy8gaW4gdGhpcyBjYXNlIHN0cmVhbSB3aWxsIGJlIHVzZWFibGUgZm9yIG5l dw0KPiBzdGF0ZWZ1bCBiYXRjaA0KPiAzLjMuIHJ0ZV9jb21wX29wX3N0cmVhbV9mcmVlKHJ0ZV9j b21wX3N0cmVhbSAqc3RyZWFtKTsgLy8gdG8gZnJlZSBjb250ZXh0DQo+IA0KPiA0LiBBZGQgbmV3 IEFQSSBydGVfY29tcGRldl9lbnF1ZXVlX3N0cmVhbSgpDQo+IC4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4NCj4gIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcnRlX2NvbXBkZXZfZW5xdWV1ZV9zdHJlYW0o dWludDhfdCBkZXZfaWQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MTZfdCBxcF9pZCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfY29tcF9vcCAqKm9wcywNCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG5iX29w cywNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRl X2NvbXBfc3RyZWFtICpzdHJlYW0pOyAvL3RvIGJlIHBhc3NlZCB3aXRoIGVhY2ggY2FsbA0KPiAN Cj4gQXBwbGljYXRpb24gc2hvdWxkIGNhbGwgdGhpcyBBUEkgdG8gcHJvY2VzcyBkZXBlbmRlbnQg c2V0IG9mIGRhdGEgT1Igd2hlbiBvdXRwdXQgYnVmZmVyIHNpemUgaXMgdW5rbm93bi4NCj4gDQo+ IHJ0ZV9jb21wX29wX3Bvb2xfY3JlYXRlKCkgc2hvdWxkIGNyZWF0ZSBtZW1wb29sIGxhcmdlIGVu b3VnaCB0byBhY2NvbW1vZGF0ZSBvcGVyYXRpb25hbCBzdGF0ZQ0KPiAobWFpbnRhaW5lZCBieSBy dGVfY29tcF9zdHJlYW0pIGJhc2VkIG9uIHJ0ZV9jb21wX29wX3R5cGUuIFNpbmNlIHJ0ZV9jb21w X3N0cmVhbSB3b3VsZCBiZQ0KPiBtYWludGFpbmVkIGJ5IFBNRCwgdGh1cyBhbGxvY2F0aW5nIGl0 IGZyb20gUE1EIG1hbmFnZWQgcG9vbCBvZmZlcnMgcGVyZm9ybWFuY2UgZ2FpbnMuDQo+IA0KPiBB UEkgZmxvdzogcnRlX2NvbXBfb3BfcG9vbF9jcmVhdGUoKSAt4oaSIHJ0ZV9jb21wX29wX2J1bGtf YWxsb2MoKSAtLS0+IHJ0ZV9jb21wX29wX3N0cmVhbV9hbGxvYygpIOKGkg0KPiBlbnF1ZV9zdHJl YW0oLi5vcHMsIC4uLCBzdHJlYW0pDQo+IA0KPiBELjIuMS4zIEhpc3RvcnkgYnVmZmVyDQo+IC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IFdpbGwgYmUgbWFpbnRhaW5lZCBieSBQTUQg d2l0aCBpbiBydGVfY29tcF9zdHJlYW0NCj4gDQo+IFRoYW5rcw0KPiBTaGFsbHkNCg0K