From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id C90951B1C5 for ; Wed, 20 Dec 2017 16:32:43 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Dec 2017 07:32:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,432,1508828400"; d="scan'208";a="13907444" Received: from irsmsx153.ger.corp.intel.com ([163.33.192.75]) by orsmga003.jf.intel.com with ESMTP; 20 Dec 2017 07:32:39 -0800 Received: from irsmsx101.ger.corp.intel.com ([169.254.1.46]) by IRSMSX153.ger.corp.intel.com ([169.254.9.34]) with mapi id 14.03.0319.002; Wed, 20 Dec 2017 15:32:38 +0000 From: "Trahe, Fiona" To: "Verma, Shally" , "dev@dpdk.org" CC: "Athreya, Narayana Prasad" , "Gupta, Ashish" , "Sahu, Sunila" , "De Lara Guarch, Pablo" , "Challa, Mahipal" , "Jain, Deepak K" , Hemant Agrawal , Roy Pledge , Youri Querry , Ahmed Mansour , "Trahe, Fiona" Thread-Topic: [RFC v1] doc compression API for DPDK Thread-Index: AdN5YkDnST0/zTP6Qnydb7p68QcP6AAL8pPA Date: Wed, 20 Dec 2017 15:32:37 +0000 Message-ID: <348A99DA5F5B7549AA880327E580B435892E72D2@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: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMmE1MjdmZjEtOGQwZC00ZGFjLWI2NWQtOTYzNDE5Yzg4ZmVmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IlJnTnZyRWdDZUlDTnZiUFNYWElcL1pBQzhuOUdKZHBwUDhqZmJLTlBZaGQ4PSJ9 x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [163.33.239.180] 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: Wed, 20 Dec 2017 15:32:44 -0000 SGkgU2hhbGx5LA0KDQpJIHRoaW5rIHdlIGFyZSBhbG1vc3QgaW4gc3luYyBub3cgLSBhIGZldyBj b21tZW50cyBiZWxvdyB3aXRoIGp1c3Qgb25lIG9wZW4gcXVlc3Rpb24gd2hpY2ggSSBzdXNwZWN0 IHdhcyBhIHR5cG8uDQpJZiB0aGlzIGlzIG9rIHRoZW4gbm8gbmVlZCBmb3IgYSBtZWV0aW5nIEkg dGhpbmsuDQpJbiB0aGlzIGNhc2Ugd2lsbCB5b3UgaXNzdWUgYSB2MiBvZiB0aGlzIGRvYyA/DQoN Cg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBWZXJtYSwgU2hhbGx5IFtt YWlsdG86U2hhbGx5LlZlcm1hQGNhdml1bS5jb21dDQo+IFNlbnQ6IFdlZG5lc2RheSwgRGVjZW1i ZXIgMjAsIDIwMTcgNzoxNSBBTQ0KPiBUbzogVHJhaGUsIEZpb25hIDxmaW9uYS50cmFoZUBpbnRl bC5jb20+OyBkZXZAZHBkay5vcmcNCj4gQ2M6IEF0aHJleWEsIE5hcmF5YW5hIFByYXNhZCA8TmFy YXlhbmFQcmFzYWQuQXRocmV5YUBjYXZpdW0uY29tPjsgR3VwdGEsIEFzaGlzaA0KPiA8QXNoaXNo Lkd1cHRhQGNhdml1bS5jb20+OyBTYWh1LCBTdW5pbGEgPFN1bmlsYS5TYWh1QGNhdml1bS5jb20+ OyBEZSBMYXJhIEd1YXJjaCwgUGFibG8NCj4gPHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVsLmNv bT47IENoYWxsYSwgTWFoaXBhbCA8TWFoaXBhbC5DaGFsbGFAY2F2aXVtLmNvbT47IEphaW4sIERl ZXBhayBLDQo+IDxkZWVwYWsuay5qYWluQGludGVsLmNvbT47IEhlbWFudCBBZ3Jhd2FsIDxoZW1h bnQuYWdyYXdhbEBueHAuY29tPjsgUm95IFBsZWRnZQ0KPiA8cm95LnBsZWRnZUBueHAuY29tPjsg WW91cmkgUXVlcnJ5IDx5b3VyaS5xdWVycnlfMUBueHAuY29tPjsgQWhtZWQgTWFuc291cg0KPiA8 YWhtZWQubWFuc291ckBueHAuY29tPg0KPiBTdWJqZWN0OiBSRTogW1JGQyB2MV0gZG9jIGNvbXBy ZXNzaW9uIEFQSSBmb3IgRFBESw0KPiANCj4gSGkgRmlvbmENCj4gDQo+IFBsZWFzZSByZWZlciB0 byBteSBjb21tZW50cyBiZWxvdyB3aXRoIG15IHVuZGVyc3RhbmRpbmcgb24gdHdvIG1ham9yIHBv aW50cyBPVVRfT0ZfU1BBQ0UgYW5kDQo+IFN0YXRlZnVsIERlc2lnbi4NCj4gSWYgeW91IGJlbGll dmUgd2Ugc3RpbGwgbmVlZCBhIG1lZXRpbmcgdG8gY29udmVyZ2Ugb24gc2FtZSBwbGVhc2Ugc2hh cmUgbWVldGluZyBkZXRhaWxzIHRvIG1lLg0KPiANCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiBGcm9tOiBUcmFoZSwgRmlvbmEgW21haWx0bzpmaW9uYS50cmFoZUBpbnRl bC5jb21dDQo+ID4gU2VudDogMTUgRGVjZW1iZXIgMjAxNyAyMzoxMQ0KPiA+IFRvOiBWZXJtYSwg U2hhbGx5IDxTaGFsbHkuVmVybWFAY2F2aXVtLmNvbT47IGRldkBkcGRrLm9yZw0KPiA+IENjOiBB dGhyZXlhLCBOYXJheWFuYSBQcmFzYWQgPE5hcmF5YW5hUHJhc2FkLkF0aHJleWFAY2F2aXVtLmNv bT47DQo+ID4gQ2hhbGxhLCBNYWhpcGFsIDxNYWhpcGFsLkNoYWxsYUBjYXZpdW0uY29tPjsgRGUg TGFyYSBHdWFyY2gsIFBhYmxvDQo+ID4gPHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVsLmNvbT47 IEd1cHRhLCBBc2hpc2gNCj4gPiA8QXNoaXNoLkd1cHRhQGNhdml1bS5jb20+OyBTYWh1LCBTdW5p bGEgPFN1bmlsYS5TYWh1QGNhdml1bS5jb20+Ow0KPiA+IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJh aGVAaW50ZWwuY29tPjsgSmFpbiwgRGVlcGFrIEsNCj4gPiA8ZGVlcGFrLmsuamFpbkBpbnRlbC5j b20+DQo+ID4gU3ViamVjdDogUkU6IFtSRkMgdjFdIGRvYyBjb21wcmVzc2lvbiBBUEkgZm9yIERQ REsNCj4gPg0KPiA+IEhpIFNoYWxseSwNCj4gPg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogVmVybWEsIFNoYWxseSBbbWFpbHRvOlNoYWxseS5WZXJt YUBjYXZpdW0uY29tXQ0KPiA+ID4gU2VudDogVGh1cnNkYXksIERlY2VtYmVyIDcsIDIwMTcgNTo0 MyBBTQ0KPiA+ID4gVG86IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPjsgZGV2 QGRwZGsub3JnDQo+ID4gPiBDYzogQXRocmV5YSwgTmFyYXlhbmEgUHJhc2FkIDxOYXJheWFuYVBy YXNhZC5BdGhyZXlhQGNhdml1bS5jb20+Ow0KPiA+IENoYWxsYSwgTWFoaXBhbA0KPiA+ID4gPE1h aGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+OyBEZSBMYXJhIEd1YXJjaCwgUGFibG8NCj4gPiA8cGFi bG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPjsgR3VwdGEsIEFzaGlzaA0KPiA+ID4gPEFzaGlz aC5HdXB0YUBjYXZpdW0uY29tPjsgU2FodSwgU3VuaWxhIDxTdW5pbGEuU2FodUBjYXZpdW0uY29t Pg0KPiA+ID4gU3ViamVjdDogUkU6IFtSRkMgdjFdIGRvYyBjb21wcmVzc2lvbiBBUEkgZm9yIERQ REsNCj4gPg0KPiA+IC8vc25pcC4uLi4NCj4gPg0KPiA+ID4gPiA+ID4gPiBQbGVhc2Ugbm90ZSBh bnkgdGltZSBvdXRwdXQgYnVmZmVyIHJhbiBvdXQgb2Ygc3BhY2UgZHVyaW5nIHdyaXRlDQo+ID4g dGhlbg0KPiA+ID4gPiA+ID4gb3BlcmF0aW9uIHdpbGwgdHVybiDigJxTdGF0ZWZ1bOKAnS7CoCBT ZWUNCj4gPiA+ID4gPiA+ID4gbW9yZSBvbiBTdGF0ZWZ1bCB1bmRlciByZXNwZWN0aXZlIHNlY3Rp b24uDQo+ID4gPiA+ID4gPiBbRmlvbmFdIExldCdzIGNvbWUgYmFjayB0byB0aGlzIGxhdGVyLiBB biBhbHRlcm5hdGl2ZSBpcyB0aGF0DQo+ID4gPiA+IE9VVF9PRl9TUEFDRSBpcw0KPiA+ID4gPiA+ ID4gcmV0dXJuZWQgYW5kIHRoZSAgYXBwbGljYXRpb24NCj4gPiA+ID4gPiA+IG11c3QgdHJlYXQg YXMgYSBmYWlsIGFuZCByZXN1Ym1pdCB0aGUgb3BlcmF0aW9uIHdpdGggYSBsYXJnZXINCj4gPiBk ZXN0aW5hdGlvbg0KPiA+ID4gPiA+ID4gYnVmZmVyLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gW1No YWxseV0gVGhlbiBJIHByb3Bvc2UgdG8gYWRkIGEgZmVhdHVyZSBmbGFnDQo+ID4gPiA+ICJGRl9T VVBQT1JUX09VVF9PRl9TUEFDRSIgcGVyIHhmb3JtIHR5cGUgZm9yIGZsZXhpYmxlDQo+ID4gPiA+ ID4gUE1EIGRlc2lnbi4NCj4gPiA+ID4gPiBBcyB0aGVyZSdyZSBkZXZpY2VzIHdoaWNoIHRyZWF0 IGl0IGFzIGVycm9yIG9uIGNvbXByZXNzaW9uIGJ1dCBub3Qgb24NCj4gPiA+ID4gZGVjb21wcmVz c2lvbi4NCj4gPiA+ID4gPiBJZiBpdCBpcyBub3Qgc3VwcG9ydGVkLCB0aGVuIGl0IHNob3VsZCBi ZSB0cmVhdGVkIGFzIGZhaWx1cmUgY29uZGl0aW9uIGFuZA0KPiA+IGFwcA0KPiA+ID4gPiBjYW4g cmVzdWJtaXQgb3BlcmF0aW9uLg0KPiA+ID4gPiA+IGlmIHN1cHBvcnRlZCwgYmVoYXZpb3VyICpU by1iZS1EZWZpbmVkKiB1bmRlciBzdGF0ZWZ1bC4NCj4gPiA+ID4gW0Zpb25hXSBDYW4geW91IGV4 cGxhaW4gJ3R1cm4gc3RhdGVmdWwnIHNvbWUgbW9yZT8NCj4gPiA+ID4gSWYgY29tcHJlc3NvciBy dW5zIG91dCBvZiBzcGFjZSBkdXJpbmcgc3RhdGVsZXNzIG9wZXJhdGlvbiwgZWl0aGVyIGNvbXAN Cj4gPiBvcg0KPiA+ID4gPiBkZWNvbXAsIGFuZCB0dXJucyBzdGF0ZWZ1bCwgaG93IHdvdWxkIHRo ZSBhcHAga25vdz8gQW5kIHdoYXQgd291bGQNCj4gPiBiZSBpbg0KPiA+ID4gPiBzdGF0dXMsIGNv bnN1bWVkIGFuZCBwcm9kdWNlZD8NCj4gPiA+ID4gQ291bGQgaXQgcmV0dXJuIE9VVF9PRl9TUEFD RSwgYW5kIGlmIGJvdGggY29uc3VtZWQgYW5kIHByb2R1Y2VkID09IDANCj4gPiA+DQo+ID4gPiBb U2hhbGx5XSBJZiBjb25zdW1lZCA9IHByb2R1Y2VkID09IDAsIHRoZW4gaXQncyBub3QgT1VUX09G X1NQQUNFDQo+ID4gY29uZGl0aW9uLg0KPiA+ID4NCj4gPiA+ID4gdGhlbiB0aGUgd2hvbGUgb3Ag bXVzdCBiZSByZXN1Ym1pdHRlZCB3aXRoIGEgYmlnZ2VyIG91dHB1dCBidWZmZXIuIEJ1dA0KPiA+ IGlmDQo+ID4gPiA+IGNvbnN1bWVkIGFuZCBwcm9kdWNlZCA+IDAgdGhlbiBhcHAgY291bGQgdGFr ZSB0aGUgb3V0cHV0IGFuZCBzdWJtaXQNCj4gPiBuZXh0DQo+ID4gPiA+IG9wDQo+ID4gPiA+IGNv bnRpbnVpbmcgZnJvbSBjb25zdW1lZCsxLg0KPiA+ID4gPg0KPiA+ID4NCj4gPiA+IFtTaGFsbHld IGNvbnN1bWVkIGFuZCBwcm9kdWNlZCB3aWxsICphbHdheXMqIGJlID4gMCBpbiBjYXNlIG9mDQo+ ID4gT1VUX09GX1NQQUNFLg0KPiA+ID4gT1VUX09GX1NQQUNFIG1lYW5zIG91dHB1dCBidWZmZXIg ZXhoYXVzdGVkIHdoaWxlIHdyaXRpbmcgZGF0YSBpbnRvIGl0DQo+ID4gYW5kIFBNRCBtYXkgaGF2 ZSBtb3JlIHRvDQo+ID4gPiB3cml0ZSB0byBpdC4gU28gaW4gc3VjaCBjYXNlLCBQTUQgc2hvdWxk IHNldA0KPiA+ID4gUHJvZHVjZWQgPSBjb21wbGV0ZSBsZW5ndGggb2Ygb3V0cHV0IGJ1ZmZlcg0K PiA+ID4gU3RhdHVzID0gT1VUX09GX1NQQUNFDQo+ID4gPiBjb25zdW1lLCBmb2xsb3dpbmcgcG9z c2liaWxpdGllcyBoZXJlOg0KPiA+ID4gMS4gY29uc3VtZWQgPSBjb21wbGV0ZSBsZW5ndGggb2Yg c3JjIG1idWYgbWVhbnMgUE1EIGhhcyByZWFkIGZ1bGwgaW5wdXQsDQo+ID4gT1INCj4gPiA+IDIu IGNvbnN1bWVkID0gcGFydGlhbCBsZW5ndGggb2Ygc3JjIG1idWYgbWVhbnMgUE1EIGhhcyByZWFk IHBhcnRpYWwgaW5wdXQNCj4gPiA+DQo+ID4gPiBPbiBzZWVpbmcgdGhpcyBzdGF0dXMsIGFwcCBz aG91bGQgY29uc3VtZSBvdXRwdXQgYW5kIHJlLWVucXVldWUgc2FtZQ0KPiA+IG9wIHdpdGggZW1w dHkgb3V0cHV0IGJ1ZmZlciBhbmQNCj4gPiA+IHNyYyA9IGNvbnN1bWVkKzEuDQo+ID4gW0Zpb25h XSBBcyB0aGlzIHdhcyBhIHN0YXRlbGVzcyBvcCwgdGhlIFBNRCBjYW5ub3QgYmUgZXhwZWN0ZWQg dG8gaGF2ZQ0KPiA+IHN0b3JlZCB0aGUgaGlzdG9yeSBhbmQgc3RhdGUgYW5kIHNvDQo+ID4gY2Fu bm90IGJlIGV4cGVjdGVkIHRvIGNvbnRpbnVlIGZyb20gY29uc3VtZWQrMS4gVGhpcyB3b3VsZCBi ZSBzdGF0ZWZ1bA0KPiA+IGJlaGF2aW91ci4NCj4gDQo+IFtTaGFsbHldIEV4YWN0bHkuDQo+IA0K PiA+IEJ1dCBpdCBzZWVtcyB5b3UgYXJlIHNheWluZyB0aGF0IGV2ZW4gb24gaW4gdGhpcyBzdGF0 ZWxlc3MgY2FzZSB5b3UnZCBsaWtlIHRoZQ0KPiA+IFBNRHMgd2hvIGNhbiBzdG9yZSBzdGF0ZQ0K PiA+IHRvIGhhdmUgdGhlIG9wdGlvbiBvZiBjb252ZXJ0aW5nIHRvIHN0YXRlZnVsLiBTbw0KPiA+ IGEgUE1EIHdoaWNoIGNhbiBzdXBwb3J0IHRoaXMgY291bGQgcmV0dXJuIE9VVF9PRl9TUEFDRSB3 aXRoDQo+ID4gcHJvZHVjZWQvY29uc3VtZWQgYXMgeW91IGRlc2NyaWJlIGFib3ZlLg0KPiA+IGEg UE1EIHdoaWNoIGNhbid0IHN1cHBvcnQgaXQgc2hvdWxkIHJldHVybiBhbiBlcnJvci4NCj4gPiBU aGUgYXBwbCBjYW4gY29udGludWUgb24gZnJvbSBjb25zdW1lZCsxIGluIHRoZSBmb3JtZXIgY2Fz ZSBhbmQgcmVzdWJtaXQNCj4gPiB0aGUgZnVsbCByZXF1ZXN0DQo+ID4gd2l0aCBhIGJpZ2dlciBi dWZmZXIgaW4gdGhlIGxhdHRlciBjYXNlLg0KPiA+IElzIHRoaXMgdGhlIGJlaGF2aW91ciB5b3Un cmUgbG9va2luZyBmb3I/DQo+ID4gSWYgc28gdGhlIGVycm9yIGNvdWxkIGJlIHNvbWV0aGluZyBs aWtlIE5FRURfQklHR0VSX0RTVF9CVUY/DQo+ID4gSG93ZXZlciwgd291bGRuJ3QgT1VUX09GX1NQ QUNFIHdpdGggcHJvZHVjZWQ9Y29uc3VtZWQ9MCBjb252ZXkgdGhlDQo+ID4gc2FtZSBpbmZvcm1h dGlvbiBvbiB0aGUgQVBJPw0KPiA+IEl0IG1heSBjb3JyZXNwb25kIHRvIGFuIGVycm9yIG9uIHRo ZSB1bmRlcmx5aW5nIFBNRCwgYnV0IHdvdWxkIGl0IGJlIHNpbXBsZXINCj4gPiBvbiB0aGUgY29t cHJlc3NkZXYgQVBJDQo+ID4NCj4gPg0KPiA+ID4gUGxlYXNlIG5vdGUgYXMgcGVyIGN1cnJlbnQg cHJvcG9zYWwsIGFwcCBzaG91bGQgY2FsbA0KPiA+IHJ0ZV9jb21wZGV2X2VucXVldWVfc3RyZWFt KCkgdmVyc2lvbiBvZiBBUEkgaWYgaXQNCj4gPiA+IGRvZXNuJ3Qga25vdyBvdXRwdXQgc2l6ZSBi ZWZvcmVoYW5kLg0KPiA+IFtGaW9uYV0gVHJ1ZS4gQnV0IGFib3ZlIGlzIG9ubHkgdHJ5aW5nIHRv IGRlc2NyaWJlIGJlaGF2aW91ciBpbiB0aGUgc3RhdGVsZXNzDQo+ID4gZXJyb3IgY2FzZS4NCj4g DQo+IFtTaGFsbHldIE9rLiBOb3cgSSBnb3QgcG9pbnQgb2YgY29uZnVzaW9uIHdpdGggdGVybSAn dHVybnMgc3RhdGVmdWwnIGhlcmUuIE5vIGl0J3Mgbm90IGxpa2Ugc3RhdGVsZXNzIHRvDQo+IHN0 YXRlZnVsIGNvbnZlcnNpb24uDQo+IFN0YXRlbGVzcyBvcGVyYXRpb24gaXMgc3RhdGVsZXNzIG9u bHkgYW5kIGluIHN0YXRlbGVzcyB3ZSBkb24ndCBleHBlY3QgT1VUX09GX1NQQUNFIGVycm9yLiBT bywgbm93IEkNCj4gYWxzbyB1bmRlcnN0YW5kIHdoYXQgeW91J3JlIHRyeWluZyB0byBpbXBseSB3 aXRoIHByb2R1Y2VkPWNvbnN1bWVkPTAuDQo+IA0KPiBTbywgbGV0IG1lIHN1bW1hcmlzZSByZWRl ZmluaXRpb24gb2YgT1VUX09GX1NQQUNFIGJhc2VkIG9uIFJGQyB2MzoNCj4gDQo+IEludGVycHJl dGluZyBPVVRfT0ZfU1BBQ0UgY29uZGl0aW9uOg0KPiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fg0KPiBBLiBTdGF0ZWxlc3MgT3BlcmF0aW9uczoNCj4gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiBBLjEgSWYgb3BlcmF0aW9uIGlzIHN0YXRlbGVzcyBpLmUuIHJ0 ZV9jb21wX29wLiBvcF90eXBlID09IFJURV9DT01QX09QX1NUQVRFTEVTUywgYW5kIFBNRCBydW5z IG91dA0KPiBvZiBidWZmZXIgZHVyaW5nIGNvbXByZXNzaW9uIG9yIGRlY29tcHJlc3Npb24gdGhl biBpdCBpcyBhbiBlcnJvciBjb25kaXRpb24gZm9yIFBNRC4NCj4gSXQgd2lsbCByZXNldCBpdHNl bGYgYW5kIHJldHVybiB3aXRoIHByb2R1Y2VkPWNvbnN1bWVkPTAgd2l0aCBzdGF0dXMgT1VUX09G X1NQQUNFLiBPbiBzZWVpbmcgdGhpcywNCj4gYXBwbGljYXRpb24gc2hvdWxkIHJlc3VibWl0IGZ1 bGwgcmVxdWVzdCB3aXRoIGJpZ2dlciBvdXRwdXQgYnVmZmVyIHNpemUuDQo+IA0KPiBCLiBTdGF0 ZWZ1bCBPcGVyYXRpb25zOg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IEIu MSBJZiBvcGVyYXRpb24gaXMgc3RhdGVmdWwgaS5lLiBydGVfY29tcF9vcC5vcF90eXBlID09IFJU RV9DT01QX09QX1NUQVRFRlVMLCAgYW5kIFBNRCBydW5zIG91dA0KPiBvZiBidWZmZXIgZHVyaW5n IGNvbXByZXNzaW9uIG9yIGRlY29tcHJlc3Npb24sIHRoZW4gUE1EIHdpbGwgdXBkYXRlDQo+IHBy b2R1Y2VkPWNvbnN1bWVkIChhcyBtZW50aW9uZWQgYWJvdmUpIA0KW0Zpb25hXSA/IERpZCB5b3Ug bWVhbiB0byBzYXkgIndpbGwgdXBkYXRlIHByb2R1Y2VkICYgY29uc3VtZWQiID8NCkkgdGhpbmsg DQogIC0gY29uc3VtZWQgd291bGQgYmUgPD0gaW5wdXQgbGVuZ3RoICh0eXBpY2FsbHkgPCkNCiAg LSBwcm9kdWNlZCB3b3VsZCBiZSA8PSBvdXRwdXQgYnVmZmVyIGxlbiAodHlwaWNhbGx5ID0sIGJ1 dCBjb3VsZCBiZSBhIGZldyBieXRlcyBsZXNzKQ0KICAtIHN0YXR1cyB3b3VsZCBiZSBPVVRfT0Zf U1BBQ0UNCkRvIHlvdSBhZ3JlZT8NCg0KPiBhbmQgYXBwIHNob3VsZCByZXN1Ym1pdCBvcCB3aXRo IGlucHV0IGZyb20gY29uc3VtZWQrMQ0KPiBhbmQgb3V0cHV0IGJ1ZmZlciB3aXRoIGZyZWUgc3Bh Y2UuDQo+IFBsZWFzZSBub3RlIGZvciBzdWNoIGNhc2UsIGFwcGxpY2F0aW9uIHNob3VsZCBhbGxv Y2F0ZSBzdHJlYW0gdmlhIGNhbGwgdG8gcnRlX2NvbXBfc3RyZWFtX2NyZWF0ZSgpIGFuZA0KPiBh dHRhY2ggaXQgdG8gb3AgYW5kIHBhc3MgaXQgYWxvbmcgZXZlcnkgdGltZSBwZW5kaW5nIG9wIGlz IGVucXVldWVkIHVudGlsIG9wIHByb2Nlc3NpbmcgaXMgY29tcGxldGUgd2l0aA0KPiBzdGF0dXMg c2V0IHRvIFNVQ0NFU1MvRkFJTFVSRS4NCltGaW9uYV0gQWdyZWVkDQoNCj4gDQo+ID4NCj4gPiAv L3NuaXAuLi4uLg0KPiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEQuMi4xLjIgU3Rh dGVmdWwgb3BlcmF0aW9uIHN0YXRlIG1haW50ZW5hbmNlDQo+ID4gPiA+ID4gPiA+IMKgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiA+ID4gPiA+ID4gPiBUaGlzIHNlY3Rpb24gc3RhcnRzIHdpdGggZGVzY3JpcHRpb24gb2Ygb3Vy IHVuZGVyc3RhbmRpbmcgYWJvdXQNCj4gPiA+ID4gPiA+IGNvbXByZXNzaW9uIEFQSSBzdXBwb3J0 IGZvciBzdGF0ZWZ1bC4NCj4gPiA+ID4gPiA+ID4gRGVwZW5kaW5nIHVwb24gdW5kZXJzdGFuZGlu ZyBidWlsZCB1cG9uIHRoZXNlIGNvbmNlcHRzLCB3ZSB3aWxsDQo+ID4gPiA+IGlkZW50aWZ5DQo+ ID4gPiA+ID4gPiByZXF1aXJlZCBkYXRhIHN0cnVjdHVyZS9wYXJhbQ0KPiA+ID4gPiA+ID4gPiB0 byBtYWludGFpbiBpbi1wcm9ncmVzcyBvcGVyYXRpb24gY29udGV4dCBieSBQTUQuDQo+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEZvciBzdGF0ZWZ1bCBjb21wcmVzc2lvbiwgYmF0Y2ggb2Yg ZGVwZW5kZW50IHBhY2tldHMgc3RhcnRzIGF0IGENCj4gPiBwYWNrZXQNCj4gPiA+ID4gPiA+IGhh dmluZw0KPiA+ID4gPiA+ID4gPiBSVEVfTk9fRkxVU0gvUlRFX1NZTkNfRkxVU0ggZmx1c2ggdmFs dWUgYW5kIGVuZCBhdCBwYWNrZXQNCj4gPiBoYXZpbmcNCj4gPiA+ID4gPiA+IFJURV9GVUxMX0ZM VVNIL0ZJTkFMX0ZMVVNILg0KPiA+ID4gPiA+ID4gPiBpLmUuIGFycmF5IG9mIG9wZXJhdGlvbnMg d2lsbCBjYXJyeSBzdHJ1Y3R1cmUgbGlrZSB0aGlzOg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+IC0NCj4gPiA+ID4gPiA+ID4gfG9w MS5ub19mbHVzaCB8IG9wMi5ub19mbHVzaCB8IG9wMy5ub19mbHVzaCB8IG9wNC5mdWxsX2ZsdXNo fA0KPiA+ID4gPiA+ID4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+IC0NCj4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gW0Zpb25hXSBJIHRoaW5rIGl0IG5lZWRzIHRvIGJlIG1vcmUgY29u c3RyYWluZWQgdGhhbiB5b3VyIGV4YW1wbGVzDQo+ID4gYmVsb3cuDQo+ID4gPiA+IE9ubHkgMSBv cGVyYXRpb24gZnJvbSBhIHN0cmVhbSBjYW4gYmUgaW4gYSBidXJzdC4gQXMgZWFjaCBvcGVyYXRp b24NCj4gPiA+ID4gaW4gYSBzdGF0ZWZ1bCBzdHJlYW0gbXVzdCBjb21wbGV0ZSwgYXMgbmV4dCBv cGVyYXRpb24gbmVlZHMgc3RhdGUgYW5kDQo+ID4gPiA+IGhpc3RvcnkNCj4gPiA+ID4gb2YgcHJl dmlvdXMgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlIGJlZm9yZSBpdCBjYW4gYmUgcHJvY2Vzc2Vk Lg0KPiA+ID4gPiBBbmQgaWYgb25lIGZhaWxlZCwgZS5nLiBkdWUgdG8gT1VUX09GX1NQQUNFLCB0 aGlzIHNob3VsZCBhZmZlY3QNCj4gPiA+ID4gdGhlIGZvbGxvd2luZyBvcGVyYXRpb24gaW4gdGhl IHNhbWUgc3RyZWFtLg0KPiA+ID4gPiBXb3JzdCBjYXNlIHRoaXMgbWVhbnMgYnVyc3RzIG9mIDEu IEJ1cnN0IGNhbiBiZSA+MSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUNCj4gPiA+ID4gaW5kZXBlbmRl bnQgc3RyZWFtcyB3aXRoIGF2YWlsYWJsZSBkYXRhIGZvciBwcm9jZXNzaW5nLiBPciBpZiB0aGVy ZSBpcw0KPiA+ID4gPiBkYXRhIGF2YWlsYWJsZSB3aGljaCBjYW4gYmUgc3RhdGVsZXNzbHkgcHJv Y2Vzc2VkLg0KPiA+ID4gPg0KPiA+ID4gPiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgYnVmZmVycyBh dmFpbGFibGUgZnJvbSBhIHN0cmVhbSAsIHRoZW4gaW5zdGVhZCB0aGV5DQo+ID4gY2FuDQo+ID4g PiA+IGJlIGxpbmtlZCB0b2dldGhlciBpbiBhbiBtYnVmIGNoYWluIHNlbnQgaW4gYSBzaW5nbGUg b3BlcmF0aW9uLg0KPiA+ID4gPg0KPiA+ID4gPiBUbyBoYW5kbGUgdGhlIHNlcXVlbmNlcyBiZWxv dyB3b3VsZCBtZWFuIHRoZSBQTUQNCj4gPiA+ID4gd291bGQgbmVlZCB0byBzdG9yZSBvcHMgc2Vu ZGluZyBvbmUgYXQgYSB0aW1lIHRvIGJlIHByb2Nlc3NlZC4NCj4gPiA+ID4NCj4gPiA+ID4gQXMg dGhpcyBpcyBzaWduaWZpY2FudGx5IGRpZmZlcmVudCBmcm9tIHdoYXQgeW91IGRlc2NyaWJlIGJl bG93LCBJJ2xsIHdhaXQgZm9yDQo+ID4gPiA+IGZ1cnRoZXIgZmVlZGJhY2sNCj4gPiA+ID4gYmVm b3JlIGNvbnRpbnVpbmcuDQo+ID4gPg0KPiA+ID4gW1NoYWxseV0gSSBjb25jdXIgd2l0aCB5b3Vy IHRob3VnaHRzLiBBbmQgdGhlc2UncmUgYXJlIG5vdCBzaWduaWZpY2FudGx5DQo+ID4gZGlmZmVy ZW50IGZyb20gdGhlIGNvbmNlcHQNCj4gPiA+IHByZXNlbnRlZCBiZWxvdy4NCj4gPiA+DQo+ID4g PiBZZXMgYXMgeW91IG1lbnRpb25lZCwgZXZlbiBmb3IgYnVyc3Rfc2l6ZT4xIFBNRCB3aWxsIGhh dmUgdG8gc2VyaWFsaXplDQo+ID4gZWFjaCBvcCBpbnRlcm5hbGx5IGkuZS4NCj4gPiA+IEl0IGhh cyB0byB3YWl0IGZvciBwcmV2aW91cyB0byBmaW5pc2ggYmVmb3JlIHB1dHRpbmcgbmV4dCBmb3Ig cHJvY2Vzc2luZyB3aGljaA0KPiA+IGlzDQo+ID4gPiBhcyBnb29kIGFzIGFwcGxpY2F0aW9uIG1h a2luZyBzZXJpYWxpc2VkIGNhbGwgcGFzc2luZyBvbmUgb3AgYXQtYS10aW1lIG9yIGlmDQo+ID4g PiBzdHJlYW0gY29uc2lzdHMgb2YgbXVsdGlwbGUgYnVmZmVycywgbWFraW5nIHRoZWlyIHNjYXR0 ZXItZ2F0aGVyIGxpc3QgYW5kDQo+ID4gPiB0aGVuIGVucXVldWUgaXQgYXMgb25lIG9wIGF0IGEg dGltZSB3aGljaCBpcyBtb3JlIGVmZmljaWVudCBhbmQgaWRlYWwgdXNhZ2UuDQo+ID4gPiBIb3dl dmVyIGluIG9yZGVyIHRvIGFsbG93IGV4dGVuc2liaWxpdHksIEkgZGlkbid0IG1lbnRpb24gbGlt aXRhdGlvbiBvbg0KPiA+IGJ1cnN0X3NpemUuDQo+ID4gPiBCZWNhdXNlIElmIFBNRCBkb2Vzbid0 IHN1cHBvcnQgYnVyc3Rfc2l6ZSA+IDEgaXQgY2FuIGFsd2F5cyByZXR1cm4NCj4gPiBuYl9lbnF1 ZXVlZCA9IDEsIGluIHdoaWNoIGNhc2UNCj4gPiA+IGFwcCBjYW4gZW5xdWV1ZSBuZXh0IGhvd2V2 ZXIgd2l0aCBjb25kaXRpb24gaXQgc2hvdWxkIHdhaXQgZm9yIHByZXZpb3VzDQo+ID4gdG8gY29t cGxldGUNCj4gPiA+IGJlZm9yZSBtYWtpbmcgbmV4dCBlbnF1ZXVlIGNhbGwuDQo+ID4gPg0KPiA+ ID4gU28sIGlmIHdlIHRha2Ugc2ltcGxlIGV4YW1wbGUgdG8gY29tcHJlc3MgMmsgb2YgZGF0YSB3 aXRoIHNyYyBtYnVmIHNpemUgPQ0KPiA+IDFrLg0KPiA+ID4gVGhlbiB3aXRoIGJ1cnN0X3NpemU9 MSwgZXhwZWN0ZWQgY2FsbCBmbG93IHdvdWxkIGJlKHRoaXMgaXMganVzdCBvbmUgZmxvdywNCj4g PiBvdGhlciB2YXJpYXRpb25zIGFyZSBhbHNvIHBvc3NpYmxlDQo+ID4gPiBzdWNoYXMgbWFraW5n IGNoYWluIG9mIDFrIGJ1ZmZlcnMgYW5kIHBhc3Mgd2hvbGUgZGF0YSBpbiBvbmUgZ28pOg0KPiA+ ID4NCj4gPiA+IDEuIGZpbGwgMXN0IDFrIGNodW5rIG9mIGRhdGEgaW4gb3AubXNyYw0KPiA+ID4g Mi5lbnF1ZXVlX3N0cmVhbSAoLi4uLCB8b3AuZmx1c2ggPSBub19mbHVzaHwsIDEsIHB0cl9zdHJl YW0pOw0KPiA+ID4gMy5kZXF1ZXVlX2J1cnN0KHxvcHwsMSk7DQo+ID4gPiA0LnJlZmlsbCBuZXh0 IDFrIGNodW5rIGluIG9wLm1zcmMNCj4gPiA+IDUuZW5xdWV1ZV9zdHJlYW0oLi4uLHxvcC5mbHVz aCA9IGZ1bGxfZmx1c2h8LCAxICwgcHRyX3N0cmVhbSk7DQo+ID4gPiA2LmRlcXVldWVfYnVyc3Qo fG9wfCwgMSk7DQo+ID4gPiA3LmVuZA0KPiA+ID4NCj4gPiA+IFNvLCBJIGRvbuKAmXQgc2VlIG11 Y2ggb2YgYSBjaGFuZ2UgaW4gQVBJIGNhbGwgZmxvdyBmcm9tIGhlcmUgdG8gZGVzaWduDQo+ID4g cHJlc2VudGVkIGJlbG93IGV4Y2VwdCBuYl9vcHMgPSAxIGluDQo+ID4gPiBlYWNoIGNhbGwuDQo+ ID4gPiBIb3dldmVyIEkgYW0gYXNzdW1pbmcgdGhhdCBvcCBzdHJ1Y3R1cmUgd291bGQgc3RpbGwg YmUgc2FtZSBmb3Igc3RhdGVmdWwNCj4gPiBwcm9jZXNzaW5nIGkuZS4gaXQgd291bGQgc3RhcnQg d2l0aA0KPiA+ID4gb3AuZmx1c2ggdmFsdWUgPSBOTy9TWU5DX0ZMVVNIIGFuZCBlbmQgYXQgb3Ag d2l0aCBmbHVzaCB2YWx1ZSA9IEZVTEwNCj4gPiBGTFVTSC4NCj4gPiA+IEFyZSB3ZSBvbiBzYW1l IHBhZ2UgaGVyZT8NCj4gPiA+DQo+ID4gPiBUaGFua3MNCj4gPiA+IFNoYWxseQ0KPiA+DQo+ID4g W0Zpb25hXSBXZSBzdGlsbCBoYXZlIGEgZGlmZmVyZW50IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN0 YXRlZnVsIGZsb3cgbmVlZGVkDQo+ID4gb24gdGhlIEFQSS4NCj4gPiBJ4oCZbGwgdHJ5IHRvIGNs YXJpZnkgYW5kIG1heWJlIHdlIGNhbiBzZXQgdXAgYSBtZWV0aW5nIHRvIGRpc2N1c3MuDQo+ID4g TXkgYXNzdW1wdGlvbnMgZmlyc3Q6DQo+ID4g4oCiCU9yZGVyIG9mIG9wcyBvbiBhIHFwIG11c3Qg YmUgbWFpbnRhaW5lZCDigJMgb3BzIHNob3VsZCBiZSBkZXF1ZXVlZA0KPiA+IGluIHNhbWUgc2Vx dWVuY2UgdGhleSBhcmUgZW5xdWV1ZWQuDQo+ID4g4oCiCU9wcyBmcm9tIG1hbnkgc3RyZWFtcyBj YW4gYmUgZW5xdWV1ZWQgb24gc2FtZSBxcC4NCj4gPiDigKIJT3BzIGZyb20gYSBxcCBtYXkgYmUg ZmFubmVkIG91dCB0byBhdmFpbGFibGUgaHcgb3Igc3cgZW5naW5lcyBhbmQNCj4gPiBwcm9jZXNz ZWQgaW4gcGFyYWxsZWwsIHNvIGVhY2ggb3AgbXVzdCBiZSBpbmRlcGVuZGVudC4NCj4gPiDigKIJ U3RhdGVsZXNzIGFuZCBzdGF0ZWZ1bCBvcHMgY2FuIGJlIGVucXVldWVkIG9uIHRoZSBzYW1lIHFw DQo+ID4NCj4gPiBTdWJtaXR0aW5nIGEgYnVyc3Qgb2Ygc3RhdGVsZXNzIG9wcyB0byBhIHFwIGlz IG5vIHByb2JsZW0uDQo+ID4gU3VibWl0dGluZyBtb3JlIHRoYW4gMSBvcCBhdCBhIHRpbWUgZnJv bSB0aGUgc2FtZSBzdGF0ZWZ1bCBzdHJlYW0gdG8gYSBxcCBpcw0KPiA+IGEgcHJvYmxlbS4NCj4g PiBFeGFtcGxlOg0KPiA+IEFwcGwgc3VibWl0cyAyIG9wcyBpbiBzYW1lIHN0cmVhbSBpbiBhIGJ1 cnN0LCBlYWNoIGhhcyBzcmMgYW5kIGRlc3QgbWJ1ZnMsDQo+ID4gaW5wdXQgbGVuZ3RoL29mZnNl dCBhbmQNCj4gPiByZXF1aXJlcyBjaGVja3N1bSB0byBiZSBjYWxjdWxhdGVkLg0KPiA+IFRoZSBm aXJzdCBvcCBtdXN0IGJlIHByb2Nlc3NlZCB0byBjb21wbGV0aW9uIGJlZm9yZSB0aGUgc2Vjb25k IGNhbiBiZQ0KPiA+IHN0YXJ0ZWQgYXMgaXQgbmVlZHMgdGhlIGhpc3RvcnkgYW5kIHRoZSBjaGVj a3N1bSBzbyBmYXIuDQo+ID4gSWYgZWFjaCBkZXN0IG1idWYgaXMgYmlnIGVub3VnaCBzbyBubyBv dmVyZmxvdywgZWFjaCBkZXN0IG1idWYgd2lsbCBiZQ0KPiA+IHBhcnRpYWxseSBmaWxsZWQuIFRo aXMgaXMgcHJvYmFibHkgbm90DQo+ID4gd2hhdOKAmXMgZGVzaXJlZCwgYW5kIHdpbGwgZm9yY2Ug YW4gZXh0cmEgY29weSB0byBtYWtlIHRoZSBvdXRwdXQgZGF0YQ0KPiA+IGNvbnRpZ3VvdXMuDQo+ ID4gSWYgdGhlIGRlc3QgbWJ1ZiBpbiB0aGUgZmlyc3Qgb3AgaXMgdG9vIHNtYWxsLCB0aGVuIGRv ZXMgdGhlIFBNRCBhbGxvYyBtb3JlDQo+ID4gbWVtb3J5IGluIHRoZSBkZXN0IG1idWY/DQo+ID4g T3IgYWxsb2MgYW5vdGhlciBtYnVmPyBPciBmYWlsIGFuZCB0aGUgd2hvbGUgYnVyc3QgbXVzdCBi ZSByZXN1Ym1pdHRlZD8NCj4gPiBPciBzdG9yZSB0aGUgMm5kIG9wLCB3YWl0LCBvbiBzZWVpbmcg dGhlIE9VVF9PRl9TUEFDRSBvbiB0aGUgMXN0IG9wLA0KPiA+IG92ZXJ3cml0ZSB0aGUgc3JjLCBk ZXN0LCBsZW4gZXRjIG9mIHRoZSAybmQgb3ANCj4gPiB0byBpbmNsdWRlIHRoZSB1bnByb2Nlc3Nl ZCBwYXJ0IG9mIHRoZSAxc3Qgb3A/DQo+ID4gSW4gdGhlIG1lYW50aW1lLCBhcmUgYWxsIG90aGVy IG9wcyBvbiB0aGUgcXAgYmxvY2tlZCBiZWhpbmQgdGhlc2U/DQo+ID4gRm9yIGh3IGFjY2VsZXJh dG9ycyBpdOKAmXMgd29yc2UsIGFzIFBNRCB3b3VsZCBub3JtYWxseSByZXR1cm4gb25jZSBvcHMg YXJlDQo+ID4gb2ZmbG9hZGVkIGFuZCB0aGUgZGVxdWV1ZSB3b3VsZA0KPiA+IHBhc3MgcHJvY2Vz c2VkIG9wcyBzdHJhaWdodCBiYWNrIHRvIHRoZSBhcHBsLiBJbnN0ZWFkLCB0aGUgZW5xdWV1ZSB3 b3VsZA0KPiA+IG5lZWQgdG8ga2ljayBvZmYgYSB0aHJlYWQgdG8NCj4gPiBkZXF1ZXVlIG9wcyBh bmQgZmlsdGVyIHRvIGZpbmQgdGhlIHN0YXRlZnVsIG9uZSwgc3RvcmluZyB0aGUgb3RoZXJzIHRp bCB0aGUgbmV4dA0KPiA+IGFwcGxpY2F0aW9uIGRlcXVldWUgaXMgY2FsbGVkLg0KPiA+DQo+ID4g QWJvdmUgc2NlbmFyaW9zIGRvbuKAmXQgbGVuZCB0aGVtc2VsdmVzIHRvIGFjY2VsZXJhdGluZyBh IHBhY2tldCBwcm9jZXNzaW5nDQo+ID4gd29ya2xvYWQuDQo+ID4gSXQgcHVzaGVzIGEgd29ya2xv YWQgZG93biB0byBhbGwgUE1EcyB3aGljaCBJIGJlbGlldmUgYmVsb25ncyBhYm92ZSB0aGlzIEFQ SQ0KPiA+IGFzDQo+ID4gdGhhdCB3b3JrIGlzIG5vdCBhYm91dCBvZmZsb2FkaW5nIHRoZSBjb21w dXRlIGludGVuc2l2ZSBjb21wcmVzc2lvbiB3b3JrDQo+ID4gYnV0DQo+ID4gYWJvdXQgdGhlIHNl cXVlbmNpbmcgb2YgZGF0YSBhbmQgc28gaXMgYmV0dGVyIGNvZGVkIG9uY2UsIGFib3ZlIHRoZSBB UEkgaW4NCj4gPiBhbiBhcHBsaWNhdGlvbiBsYXllcg0KPiA+IGNvbW1vbiB0byBhbGwgUE1Ecy4g KFNlZSBOb3RlMSBpbiBodHRwOi8vZHBkay5vcmcvbWwvYXJjaGl2ZXMvZGV2LzIwMTctDQo+ID4g T2N0b2Jlci8wNzg5NDQuaHRtbCApDQo+ID4gSWYgYW4gYXBwbGljYXRpb24gaGFzIHNldmVyYWwg cGFja2V0cyB3aXRoIGRhdGEgZnJvbSBhIHN0cmVhbSB0aGF0IGl0IG5lZWRzIHRvDQo+ID4gKGRl KWNvbXByZXNzIHN0YXRlZnVsbHksDQo+ID4gd2hhdCBpdCBwcm9iYWJseSB3YW50cyBpcyBmb3Ig dGhlIG91dHB1dCBkYXRhIHRvIGZpbGwgZWFjaCBvdXRwdXQgYnVmZmVyDQo+ID4gY29tcGxldGVs eSBiZWZvcmUgd3JpdGluZyB0byB0aGUgbmV4dCBidWZmZXIuDQo+ID4gQ2hhaW5pbmcgdGhlIHNy YyBtYnVmcyBpbiB0aGVzZSBwa3RzIGludG8gb25lIGNoYWluIGFuZCBzZW5kaW5nIGFzIG9uZSBv cA0KPiA+IGFsbG93cyB0aGUgb3V0cHV0DQo+ID4gZGF0YSB0byBiZSBwYWNrZWQgaW50byBhIGRl c3QgbWJ1ZiBvciBtYnVmIGNoYWluLg0KPiA+IEkgdGhpbmsgd2hhdOKAmXMgbmVlZGVkIGlzIGEg bGF5ZXIgYWJvdmUgdGhlIEFQSSB0byBhY2N1bXVsYXRlIGluY29taW5nDQo+ID4gcGFja2V0cyB3 aGlsZSB3YWl0aW5nIGZvciB0aGUNCj4gPiBwcmV2aW91cyBzZXQgb2YgcGFja2V0cyB0byBiZSBj b21wcmVzc2VkLiBGb3J3YXJkaW5nIHRvIHRoZSBQTUQgdG8gcXVldWUNCj4gPiB0aGVyZSBpcyBu b3QgdGhlIHJpZ2h0IHBsYWNlDQo+ID4gdG8gYnVmZmVyIHRoZW0gYXMgdGhlIHF1ZXVlIHNob3Vs ZCBiZSBwZXIgc3RyZWFtIHJhdGhlciB0aGFuIG9uIHRoZQ0KPiA+IGFjY2VsZXJhdG9yIGVuZ2lu ZeKAmXMgcXVldWUNCj4gPiB3aGljaCBoYXMgbG90cyBvZiBvdGhlciBpbmRlcGVuZGVudCBwYWNr ZXRzLg0KPiA+DQo+IA0KPiBbU2hhbGx5XSBPay4gSSBiZWxpZXZlIEkgZ2V0IGl0Lg0KPiBJbiBn ZW5lcmFsIEkgYWdyZWUgdG8gdGhpcyBwcm9wb3NhbC4gSG93ZXZlciBoYXZlIGNvbmNlcm4gb24g MSBwb2ludCBoZXJlIGkuZS4gb3JkZXIgbWFpbnRlbmFuY2UuIFBsZWFzZQ0KPiBzZWUgZnVydGhl ciBmb3IgbW9yZSBleHBsYW5hdGlvbi4NCj4gDQo+ID4NCj4gPiBQcm9wb3NhbDoNCj4gPiDigKIg T3BzIGZyb20gYSBxcCBtYXkgYmUgZmFubmVkIG91dCB0byBhdmFpbGFibGUgaHcgb3Igc3cgZW5n aW5lcyBhbmQNCj4gPiAgICAgcHJvY2Vzc2VkIGluIHBhcmFsbGVsLCBzbyBlYWNoIG9wIG11c3Qg YmUgaW5kZXBlbmRlbnQuDQo+IFtTaGFsbHldIFBvc3NpYmxlIG9ubHkgaWYgIFBNRCBzdXBwb3J0 IGNvbWJpbmF0aW9uIG9mIFNXIGFuZCBIVyBwcm9jZXNzaW5nLiBSaWdodD8NCltGaW9uYV0gTm90 IG5lY2Vzc2FyaWx5LCBJbnRlbCBRdWlja0Fzc2lzdCBhY2NlbGVyYXRvcnMgYXJlIEhXIGFuZCBj YW4gcHJvY2VzcyBvcHMgZnJvbSBzYW1lIHFwIGluIHBhcmFsbGVsDQoNCg0KPiA+IOKAoiBPcmRl ciBvZiBvcHMgb24gYSBxcCBtdXN0IGJlIG1haW50YWluZWQg4oCTIG9wcyBzaG91bGQgYmUgZGVx dWV1ZWQgaW4NCj4gPiBzYW1lIHNlcXVlbmNlIHRoZXkgYXJlIGVucXVldWVkLg0KPiBbU2hhbGx5 XSBJZiBlYWNoIG9wIGlzIGluZGVwZW5kZW50IHRoZW4gd2h5IGRvIHdlIG5lZWQgdG8gbWFpbnRh aW4gb3JkZXJpbmcuIFNpbmNlIHRoZXkncmUgaW5kZXBlbmRlbnQNCj4gYW5kIHRodXMgY2FuIGJl IHByb2Nlc3NlZCBpbiBwYXJhbGxlbCBzbyB0aGV5IGNhbiB3ZWxsIGJlIHF1aXRlIG91dC1vZi1v cmRlciBhbmQgYXZhaWxhYmxlIGZvciBkZXF1ZXVlIGFzDQo+IHNvb24gYXMgY29tcGxldGVkLg0K PiBTZXJpYWxpemluZyB0aGVtIHdpbGwgbGltaXQgSFcgdGhyb3VnaHB1dCBjYXBhYmlsaXR5LiBB bmQgSSBjYW4gZW52aXNpb24gc29tZSBhcHAgbWF5IG5vdCBjYXJlIGFib3V0DQo+IG9yZGVyaW5n IGp1c3QgY29tcGxldGlvbi4NCj4gU28gSSB3b3VsZCBzdWdnZXN0IGlmIGFwcGxpY2F0aW9uIG5l ZWQgb3JkZXJpbmcgc2hvdWxkIHRhZyBlYWNoIG9wIHdpdGggc29tZSBpZCBvciBzZXJpYWwgbnVt YmVyIGluIG9wDQo+IHVzZXJfZGF0YSBhcmVhIHRvIGlkZW50aWZ5IGVucXVldWUgb3JkZXIgT1Ig d2UgbWF5IGFkZCBmbGFnIGluIGVucXVldWVfYnVyc3QoKSBBUEkgdG8gZW5mb3JjZQ0KPiBzZXJp YWxpemVkIGRlcXVldWluZywgaWYgdGhhdCdzIGhhcmQgcmVxdWlyZW1lbnQgb2YgYW55Lg0KW0Zp b25hXSBPaywgIEkgdGhpbmsgeW91J3JlIHJpZ2h0LCB0aGlzIHJlcXVpcmVtZW50IGlzbid0IG5l ZWRlZC4gDQpJbiBzdGF0ZWxlc3Mgb3BzIGl0J3Mgbm90IG5lZWRlZC4NCkZvciBzdGF0ZWZ1bCB0 aGUgYXBwbCBzaG91bGQgb25seSBoYXZlIG9uZSBvcCBwZXIgc3RyZWFtIGluZmxpZ2h0IGF0IGFu eSB0aW1lIHNvIG1hbmFnZXMgdGhlIG9yZGVyaW5nLg0KU28gd2UgY2FuIHNwZWNpZnkgb24gdGhl IEFQSSB0aGF0IG9yZGVyaW5nIGlzIG5vdCBuZWNlc3NhcmlseSBtYWludGFpbmVkIG9uIHRoZSBx cCBhbmQgUE1EcyBtYXkgcmV0dXJuIHJlc3BvbnNlcyBvdXQtb2Ytb3JkZXIuDQpUaGUgcmVzcG9u c2liaWxpdHkgaXMgb24gdGhlIGFwcGxpY2F0aW9uIHRvIG1haW50YWluIG9yZGVyIGlmIGl0J3Mg bmVlZGVkLiANCklmIGxhdGVyIHdlIGZpbmQgc29tZSBhcmd1bWVudCBmb3IgbWFpbnRhaW5pbmcg b3JkZXIgSSdkIHN1Z2dlc3QgYSBjb25maWd1cmF0aW9uIHBhcmFtIHBlciBxcCBvciBldmVuIHBl ciBkZXZpY2UgcmF0aGVyIHRoYW4gb24gdGhlIGVucXVldWVfYnVyc3QoKSANCg0KDQo+ID4g4oCi IFN0YXRlbGVzcyBhbmQgc3RhdGVmdWwgb3BzIGNhbiBiZSBlbnF1ZXVlZCBvbiB0aGUgc2FtZSBx cA0KPiA+IOKAoiBTdGF0ZWxlc3MgYW5kIHN0YXRlZnVsIG9wcyBjYW4gYmUgZW5xdWV1ZWQgaW4g dGhlIHNhbWUgYnVyc3QNCj4gPiDigKIgT25seSAxIG9wIGF0IGEgdGltZSBtYXkgYmUgZW5xdWV1 ZWQgdG8gdGhlIHFwIGZyb20gYW55IHN0YXRlZnVsIHN0cmVhbS4NCj4gPiDigKIgQSBidXJzdCBj YW4gaGF2ZSBtdWx0aXBsZSBzdGF0ZWZ1bCBvcHMsIGJ1dCBlYWNoIG11c3QgYmUgZnJvbSBhIGRp ZmZlcmVudA0KPiA+IHN0cmVhbS4NCj4gPiDigKIgQWxsIG9wcyB3aWxsIGhhdmUgYSBzZXNzaW9u IGF0dGFjaGVkIOKAkyB0aGlzIHdpbGwgb25seSBjb250YWluIGltbXV0YWJsZSBkYXRhDQo+ID4g d2hpY2gNCj4gPiAgICBjYW4gYmUgdXNlZCBieSBtYW55IG9wcywgZGV2aWNlcyBhbmQgb3IgZHJp dmVycyBhdCB0aGUgc2FtZSB0aW1lLg0KPiA+IOKAoiBBbGwgc3RhdGVmdWwgb3BzIHdpbGwgaGF2 ZSBhIHN0cmVhbSBhdHRhY2hlZCBmb3IgbWFpbnRhaW5pbmcgc3RhdGUgYW5kDQo+ID4gICAgaGlz dG9yeSwgdGhpcyBjYW4gb25seSBiZSB1c2VkIGJ5IG9uZSBvcCBhdCBhIHRpbWUuDQo+IFtTaGFs bHldIFNvLCB5b3UgbWVhbjoNCj4gDQo+IEEgc2luZ2xlIGVucXVlX2J1cnN0KCkgKmNhbiogY2Fy cnkgbXVsdGlwbGUgc3RyZWFtcy4gSS5FLiBUaGlzIGlzIGFsbG93ZWQgYm90aCBpbiBidXJzdCBv ciBpbiBxcCAoc2F5LCB3aGVuDQo+IG11bHRpcGxlIHRocmVhZHMgY2FsbCBlbnF1ZV9idXJzdCgp IG9uIHNhbWUgcXApDQo+IA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgICAg ICAgICAgICAgIGVucXVlX2J1cnN0ICh8b3AxLm5vX2ZsdXNoIHwgb3AyLm5vX2ZsdXNoIHwgb3Az LmZsdXNoX2ZpbmFsIHwgb3A0Lm5vX2ZsdXNoIHwgb3A1Lm5vX2ZsdXNoIHwpDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBXaGVyZSwNCj4gQWxsIG9wMSwgb3AyLi4ub3A1IGJl bG9uZ3MgdG8gYWxsICpkaWZmZXJlbnQqIHN0cmVhbXMuIE9wMyBjYW4gYmUgc3RhdGVsZXNzL3N0 YXRlZnVsIGRlcGVuZGluZyB1cG9uDQo+IG9wX3R5cGUgdmFsdWUgYW5kIGVhY2ggY2FuIGhhdmUg KnNhbWUgb3IgZGlmZmVyZW50KiBzZXNzaW9ucy4NCltGaW9uYV0gRXhhY3RseQ0KDQo+IElmIEkg dW5kZXJzdGFuZCB0aGlzIHJpZ2h0LCB0aGVuIHllcyBpdCBsb29rcyBnb29kIHRvIG1lLiBIb3dl dmVyIHRoaXMgYWxzbyBicmluZyBvbmUgbWlub3IgcG9pbnQgZm9yDQo+IGRpc2N1c3Npb24gYnV0 IEkgd291bGQgd2FpdCB0byBpbml0aWF0ZSB0aGF0IHVudGlsIHdlIGNsb3NlIG9uIGN1cnJlbnQg b3BlbiBwb2ludHMuDQo+IA0KPiBUaGFua3MNCj4gU2hhbGx5DQo+ID4NCj4gPg0KPiA+IENvZGUg YXJ0ZWZhY3RzOg0KPiA+DQo+ID4gZW51bSBydGVfY29tcF9vcF90eXBlIHsNCj4gPiAgICAgUlRF X0NPTVBfT1BfU1RBVEVMRVNTLA0KPiA+ICAgICBSVEVfQ09NUF9PUF9TVEFURUZVTA0KPiA+IH0N Cj4gPg0KPiA+IEFkZCBmb2xsb3dpbmcgdG8gcnRlX2NvbXBfb3A6DQo+ID4gICAgIGVudW0gcnRl X2NvbXBfb3BfdHlwZSBvcF90eXBlOw0KPiA+ICAgICB2b2lkICogc3RyZWFtX3ByaXZhdGU7DQo+ ID4gICAgIC8qIGxvY2F0aW9uIHdoZXJlIFBNRCBtYWludGFpbnMgc3RyZWFtIHN0YXRlIOKAkyBv bmx5IHJlcXVpcmVkIGlmIG9wX3R5cGUgaXMNCj4gPiBTVEFURUZVTCwgZWxzZSBzZXQgdG8gTlVM TCAqLw0KPiA+DQo+ID4gQXMgc2l6ZSBvZiBzdHJlYW0gZGF0YSB3aWxsIHZhcnkgZGVwZW5kaW5n IG9uIFBNRCwgZWFjaCBQTUQgb3IgZGV2aWNlDQo+ID4gc2hvdWxkIGFsbG9jYXRlICYgbWFuYWdl IGl0cyBvd24gbWVtcG9vbC4gQXNzb2NpYXRlZCBBUElzIGFyZToNCj4gPiBydGVfY29tcF9zdHJl YW1fY3JlYXRlKHVpbnQ4X3QgZGV2X2lkLCBydGVfY29tcF9zZXNzaW9uICpzZXNzLCB2b2lkICoq DQo+ID4gc3RyZWFtKTsNCj4gPiAvKiBUaGlzIHNob3VsZCBhbGxvYyBhIHN0cmVhbSBmcm9tIHRo ZSBkZXZpY2XigJlzIG1lbXBvb2wgYW5kIGluaXRpYWxpc2UgaXQuIFRoaXMNCj4gPiBoYW5kbGUg d2lsbCBiZSBwYXNzZWQgdG8gdGhlIFBNRCB3aXRoIGV2ZXJ5IG9wIGluIHRoZSBzdHJlYW0uIFEu IFNob3VsZA0KPiA+IHFwX2lkIGFsc28gYmUgYWRkZWQsIHdpdGggY29uc3RyYWludCB0aGF0IGFs bCBvcHMgaW4gdGhlIHNhbWUgc3RyZWFtIHNob3VsZA0KPiA+IGJlIHNlbnQgdG8gdGhlIHNhbWUg cXA/ICAqLw0KPiA+IHJ0ZV9jb21wX3N0cmVhbV9mcmVlKHVpbnQ4X3QgZGV2X2lkLCB2b2lkICog c3RyZWFtKTsNCj4gPiAvKiBUaGlzIHNob3VsZCBjbGVhciB0aGUgc3RyZWFtIGFuZCByZXR1cm4g aXQgdG8gdGhlIGRldmljZeKAmXMgbWVtcG9vbCAqLw0KPiA+DQo+ID4gQWxsIG9wcyBhcmUgZW5x dWV1ZWQvZGVxdWV1ZWQgdG8gZGV2aWNlICYgcXAgdXNpbmcgc2FtZQ0KPiA+IHJ0ZV9jb21wcmVz c2Rldl9lbnF1ZXVlX2J1cnN0KCkv4oCmZGVxdWV1ZV9idXJzdDsNCj4gPg0KPiA+IFJlIGZsdXNo IGZsYWdzLCBzdGF0ZWZ1bCBzdHJlYW0gd291bGQgc3RhcnQgd2l0aCBvcC5mbHVzaCA9IE5PTkUg b3IgU1lOQyBhbmQNCj4gPiBlbmQgd2l0aCBGVUxMIG9yIEZJTkFMDQo+ID4gU1RBVEVMRVNTIG9w cyB3b3VsZCBqdXN0IHVzZSBlaXRoZXIgRlVMTCBvciBGSU5BTA0KPiA+DQo+ID4NCj4gPiBMZXQg bWUga25vdyBpZiB5b3Ugd2FudCB0byBzZXQgdXAgYSBtZWV0aW5nIC0gaXQgbWlnaHQgYmUgYSBt b3JlIGVmZmVjdGl2ZQ0KPiA+IHdheSB0bw0KPiA+IGFycml2ZSBhdCBhbiBBUEkgdGhhdCB3b3Jr cyBmb3IgYWxsIFBNRHMuDQo+ID4NCj4gPiBJJ2xsIHNlbmQgb3V0IGEgdjMgdG9kYXkgd2l0aCBh Ym92ZSBwbHVzIHVwZGF0ZXMgYmFzZWQgb24gYWxsIHRoZSBvdGhlcg0KPiA+IGZlZWRiYWNrLg0K PiA+DQo+ID4gUmVnYXJkcywNCj4gPiBGaW9uYQ0KDQo=