From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.windriver.com (mail.windriver.com [147.11.1.11]) by dpdk.org (Postfix) with ESMTP id 6663D7E99 for ; Tue, 4 Nov 2014 21:36:40 +0100 (CET) Received: from ALA-HCB.corp.ad.wrs.com (ala-hcb.corp.ad.wrs.com [147.11.189.41]) by mail.windriver.com (8.14.9/8.14.5) with ESMTP id sA4KjrWA024517 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Tue, 4 Nov 2014 12:45:58 -0800 (PST) Received: from ALA-MBB.corp.ad.wrs.com ([169.254.1.158]) by ALA-HCB.corp.ad.wrs.com ([147.11.189.41]) with mapi id 14.03.0174.001; Tue, 4 Nov 2014 12:45:53 -0800 From: "Wiles, Roger Keith" To: Neil Horman Thread-Topic: [dpdk-dev] [PATCH] Add external parser support for unknown commands. Thread-Index: AQHP9uxdDSP7jrkqd0+Hu6BUZuES8JxPPbcAgAA56ICAAAJMAIAAAnoAgAAb/wCAAAxagIAAbs4AgAAEYQCAAFaxgIAAblcAgAA3BQCAAE95AIAAFXUA Date: Tue, 4 Nov 2014 20:45:53 +0000 Message-ID: <394E147B-5A0E-4557-8FD0-496BA25A4CB6@windriver.com> References: <307F2C60-7638-40C8-A9BC-DC3EE3D59F8C@windriver.com> <20141103141658.GA6964@bricha3-MOBL3> <7D39110F-D305-4C48-8BD6-37F6DCD2E434@windriver.com> <20141103160602.GA6625@localhost.localdomain> <6F166021-567F-4B30-8EAE-EDB68A86C6CC@windriver.com> <20141103152650.262e4da3@urahara> <20141103234230.GA2660@localhost.localdomain> <35090085-66D7-4F23-9867-A0DCC09E7DDD@windriver.com> <20141104112742.GB9995@hmsreliant.think-freely.org> <6F5C8CE3-5882-4222-BF8F-B8A29A3EB1BD@windriver.com> <20141104192904.GD9995@hmsreliant.think-freely.org> In-Reply-To: <20141104192904.GD9995@hmsreliant.think-freely.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.25.40.162] Content-Type: text/plain; charset="utf-8" Content-ID: <6DCAFF8A417A5C449E0F5C84BD3479F1@local> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH] Add external parser support for unknown commands. X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Nov 2014 20:36:41 -0000 DQo+IE9uIE5vdiA0LCAyMDE0LCBhdCAxOjI5IFBNLCBOZWlsIEhvcm1hbiA8bmhvcm1hbkB0dXhk cml2ZXIuY29tPiB3cm90ZToNCj4gDQo+IE9uIFR1ZSwgTm92IDA0LCAyMDE0IGF0IDAyOjQ0OjM5 UE0gKzAwMDAsIFdpbGVzLCBSb2dlciBLZWl0aCB3cm90ZToNCj4+IA0KPj4+IE9uIE5vdiA0LCAy MDE0LCBhdCA1OjI3IEFNLCBOZWlsIEhvcm1hbiA8bmhvcm1hbkB0dXhkcml2ZXIuY29tPiB3cm90 ZToNCj4+PiANCj4+PiBPbiBUdWUsIE5vdiAwNCwgMjAxNCBhdCAwNDo1Mjo0OEFNICswMDAwLCBX aWxlcywgUm9nZXIgS2VpdGggd3JvdGU6DQo+Pj4+IA0KPj4+Pj4gT24gTm92IDMsIDIwMTQsIGF0 IDU6NDIgUE0sIE5laWwgSG9ybWFuIDxuaG9ybWFuQHR1eGRyaXZlci5jb20+IHdyb3RlOg0KPj4+ Pj4gDQo+Pj4+PiBPbiBNb24sIE5vdiAwMywgMjAxNCBhdCAwMzoyNjo1MFBNIC0wODAwLCBTdGVw aGVuIEhlbW1pbmdlciB3cm90ZToNCj4+Pj4+PiBPbiBNb24sIDMgTm92IDIwMTQgMTY6NTA6MTUg KzAwMDANCj4+Pj4+PiAiV2lsZXMsIFJvZ2VyIEtlaXRoIiA8a2VpdGgud2lsZXNAd2luZHJpdmVy LmNvbT4gd3JvdGU6DQo+Pj4+Pj4gDQo+Pj4+Pj4+IA0KPj4+Pj4+Pj4gT24gTm92IDMsIDIwMTQs IGF0IDEwOjA2IEFNLCBOZWlsIEhvcm1hbiA8bmhvcm1hbkB0dXhkcml2ZXIuY29tPiB3cm90ZToN Cj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4gT24gTW9uLCBOb3YgMDMsIDIwMTQgYXQgMDI6MjU6NTFQTSAr MDAwMCwgV2lsZXMsIFJvZ2VyIEtlaXRoIHdyb3RlOg0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+PiBP biBOb3YgMywgMjAxNCwgYXQgODoxNiBBTSwgQnJ1Y2UgUmljaGFyZHNvbiA8YnJ1Y2UucmljaGFy ZHNvbkBpbnRlbC5jb20+IHdyb3RlOg0KPj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4gT24gTW9uLCBO b3YgMDMsIDIwMTQgYXQgMDI6MDg6NDZQTSArMDAwMCwgV2lsZXMsIFJvZ2VyIEtlaXRoIHdyb3Rl Og0KPj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4gT24gTm92IDMsIDIwMTQsIGF0IDQ6NDEgQU0s IEJydWNlIFJpY2hhcmRzb24gPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPiB3cm90ZToNCj4+ Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+PiBPbiBTdW4sIE5vdiAwMiwgMjAxNCBhdCAwNDoyODoy OFBNIC0wNjAwLCBLZWl0aCBXaWxlcyB3cm90ZToNCj4+Pj4+Pj4+Pj4+Pj4gQWxsb3cgZm9yIGEg ZXh0ZXJuYWwgcGFyc2VyIHRvIGhhbmRsZSB0aGUgY29tbWFuZCBsaW5lIGlmIHRoZQ0KPj4+Pj4+ Pj4+Pj4+PiBjb21tYW5kIGlzIG5vdCBmb3VuZCBhbmQgdGhlIGRldmVsb3BlciBoYXMgY2FsbGVk IHRoZSByb3V0aW5lDQo+Pj4+Pj4+Pj4+Pj4+IGludCBjbWRsaW5lX3NldF9leHRlcm5hbF9wYXJz ZXIoc3RydWN0IGNtZGxpbmUgKiBjbCwNCj4+Pj4+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgICBjbWRsaW5lX2V4dGVybmFsX3BhcnNlcl90IHBhcnNlcik7DQo+Pj4+Pj4+Pj4+Pj4+ IGZ1bmN0aW9uIHRvIHNldCB0aGUgZnVuY3Rpb24gcG9pbnRlci4NCj4+Pj4+Pj4+Pj4+Pj4gDQo+ Pj4+Pj4+Pj4+Pj4+IFRoZSBmdW5jdGlvbiBmb3IgdGhlIGV4dGVybmFsIHBhcnNlciBmdW5jdGlv biBzaG91bGQgcmV0dXJuIENNRExJTkVfUEFSU0VfTk9NQVRDSA0KPj4+Pj4+Pj4+Pj4+PiBpZiBu b3QgYWJsZSB0byBtYXRjaCB0aGUgY29tbWFuZCByZXF1ZXN0ZWQgb3IgemVybyBpcyBoYW5kbGVk Lg0KPj4+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+Pj4gUHJvdG90eXBlIG9mIGV4dGVybmFsIHJv dXRpbmU6DQo+Pj4+Pj4+Pj4+Pj4+IGludCAoKmNtZGxpbmVfZXh0ZXJuYWxfcGFyc2VyX3QpKHN0 cnVjdCBjbWRsaW5lICogY2wsIGNvbnN0IGNoYXIgKiBidXkpOw0KPj4+Pj4+Pj4+Pj4+PiANCj4+ Pj4+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogS2VpdGggV2lsZXMgPGtlaXRoLndpbGVzQHdpbmRy aXZlci5jb20+DQo+Pj4+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4gSGkgS2VpdGgsDQo+Pj4+Pj4+ Pj4+Pj4gDQo+Pj4+Pj4+Pj4+Pj4gd2hhdCBpcyB0aGUgZXhwZWN0ZWQgdXNlIGNhc2UgZm9yIHRo aXM/IElzIGl0IGZvciBlbWJlZGRpbmcgb3RoZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGFsb25n c2lkZSB0aGUgZXhpc3RpbmcgRFBESyBjb21tYW5kLWxpbmUgb3Igc29tZSBvdGhlciBwdXJwb3Nl PyBbUGVyaGFwcyB0aGUgdXNlIGNhc2UgY291bGQgYmUgY2FsbGVkIG91dCBpbiB0aGUgcGF0Y2gg ZGVzY3JpcHRpb25dDQo+Pj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4+IEhpIEJydWNlLA0KPj4+Pj4+ Pj4+Pj4gDQo+Pj4+Pj4+Pj4+PiBJIGd1ZXNzIHRoZSBleHRlcm5hbCBwYXJzZXIgY291bGQgYmUg dXNlZCBmb3Igb3RoZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLCBidXQgdGhlIGNhc2UgSSB3YXMg bG9va2luZyBhdCB3YXMgdG8gcHJvdmlkZSBhIGRlZmF1bHQgZXNjYXBlIGZyb20gdGhlIGNvbW1h bmQgbGluZSBwYXJzZXIgdG8gYWxsb3cgbXkgYXBwbGljYXRpb24gdG8gaGFuZGxlIHRoZSBjb21t YW5kcyBub3QgdW5kZXJzdG9vZCBieSB0aGUgcGFyc2VyLiBOb3cgdGhhdCB5b3UgcG9pbnQgaXQg b3V0IEkgY291bGQgdXNlIHNvbWV0aGluZyBsaWtlIOKAmCU8bGluZS1vZi1zY3JpcHQtY29kZT7i gJkgdG8gZXhlY3V0ZSBhIHNpbmdsZSBsaW5lIG9mIHNjcmlwdCBjb2RlLCB3aGljaCBpcyBhIGdv b2QgaWRlYSAodGhhbmtzKS4NCj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gT25lIGNhc2UgSSBh bSBsb29raW5nIGF0IGlzIHdoZW4geW91IHdhbnQgdG8gZXhlY3V0ZSBhIGNvbW1hbmQgYW5kIGRv IG5vdCB3YW50IHRvIGFkZCB0aGUgc3VwcG9ydCBpbnRvIHRoZSBjb21tYW5kcy5jIGZpbGUgZm9y IGV2ZXJ5IHBvc3NpYmxlIGNvbW1hbmQuIFRha2UgdGhlIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSBi dW5jaCBvZiBzY3JpcHRzIChMdWEpIGluIGEgZGlyZWN0b3J5IG11Y2ggbGlrZSBhIGJpbiBkaXJl Y3RvcnkuIFRoZW4geW91IGNvdWxkIHR5cGUgZm9vLmx1YSBvciBmb28gb24gdGhlIGNvbW1hbmQg bGluZSBhbmQgZXhlY3V0ZSB0aGUgZm9vLmx1YSBoYXZpbmcgdGhlIGFwcGxpY2F0aW9uIGRldGVj dCB5b3Ugd2FudCB0byBsb2FkIGFuZCBydW4gYSBMdWEgc2NyaXB0IGFmdGVyIGl0IGhhcyBmaW5p c2hlZCBwYXJzaW5nIGZvciB0aGUgYnVpbHRpbiBjb21tYW5kcy4NCj4+Pj4+Pj4+Pj4+IA0KPj4+ Pj4+Pj4+Pj4gRm9yIFBrdGdlbiBJIGhhZCB0byBhZGQgYSBjb21tYW5kIGNhbGxlZCDigJhydW4g PGZpbGVuYW1lPiA8YXJnc+KApj7igJkgdG8gc3VwcG9ydCBydW5uaW5nIGEgc2NyaXB0IHdpdGgg YXJndW1lbnRzLiBJIGFsc28gbmVlZGVkIHRvIGFkZCBhIGFyZ3ZsaXN0IHR5cGUgdG8gY21kbGlu ZSB0byBub3QgZXJyb3Igb3V0IG9uIHRoYXQgY29tbWFuZCBhbmQgc3BsaXQgdXAgdGhlIGFyZ3Mg aW50byBhIGFyZ3YgbGlzdCBsaWtlIGZvcm1hdC4gKE1heWJlIEkgbmVlZCB0byBzdWJtaXQgdGhh dCBjb2RlPz8pIEl0IHNlZW1lZCBtb3JlIHN0cmFpZ2h0IGZvcndhcmQgdG8ganVzdCBwYXNzIHRo ZSBjb21tYW5kIGxpbmUgdG8gdGhlIGFwcGxpY2F0aW9uIHRvIHJ1biB0aGUgY29tbWFuZC4gSSB1 bmRlcnN0YW5kIHRoYXQgc2VlbXMgbGlrZSBhIG1pbm9yIHBvaW50LCBidXQgaXQgZG9lcyBtYWtl IGl0IGVhc2llciB0byB1c2UgYW5kIHRvIHN1cHBvcnQgdGhlIGZlYXR1cmVzIEkgd2FudCB0byBz dXBwb3J0IGluIG15IFBvQy4NCj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gVXNpbmcgdGhpcyBt ZXRob2QgeW91IGNhbiBqdXN0IHR5cGUgdGhlIG5hbWUgaW5zdGVhZCBvZiBzb21ldGhpbmcgbGlr ZSDigJhydW4gZm9vLmx1YeKAmSBvciBqdXN0IOKAmHJ1biBmb2/igJkgYW5kIGxldCB0aGUgY29k ZSBmaWd1cmUgb3V0IHdoYXQgdG8gcnVuLiBJIGhhdmUgbW9yZSBwbGFucyBmb3IgdGhpcyBmZWF0 dXJlcyBhcyB3ZWxsIGFuZCBoYXZlIG5vdCBmaW5pc2hlZCB0aGUgYmFzaWMgUG9DIHlldC4gSWYg eW91IHdhbnQgYSBwZWVrIEkgY2FuIHNob3cgeW91IHdoYXQgSSBhbSB3b3JraW5nIG9uIGN1cnJl bnRseS4NCj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+Pj4gRG9lcyB0aGlzIGhlbHAgYW5kIGRvIEkg cmVhbGx5IG5lZWQgdG8gYWRkIGFsbCBvZiB0aGlzIHRvIHRoZSBjb21taXQgbWVzc2FnZSA6LSkN Cj4+Pj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+PiBUaGFua3MgZm9yIHRoZSBleHBsYW5hdGlvbi4gSG93 ZXZlciwgaWYgeW91IGFyZSBsb29raW5nIHRvIGhhdmUgdGhlIGFwcGxpY2F0aW9uIGhhbmRsZSBh IGJ1bmNoIG9mIGNvbW1hbmRzIGl0c2VsZiwgd2h5IGRvZXMgaXQgbmVlZCB0byB1c2UgdGhlIGNv bW1hbmRsaW5lIGxpYnJhcnkgYXQgYWxsPyBXaHkgbm90IGp1c3QgaGF2ZSB0aGUgYXBwIGhhbmRs ZSBhbGwgdGhlIGNvbW1hbmRzIGluc3RlYWQgb2Ygc29tZSBvZiB0aGVtPw0KPj4+Pj4+Pj4+IA0K Pj4+Pj4+Pj4+IEkgZ3Vlc3MgdGhhdCB3b3VsZCBiZSByZWFzb25hYmxlLCBidXQgdGhlbiBJIHdv dWxkIGhhdmUgdG8gYWRkIHN1cHBvcnQgZm9yIGFsbCBvZiB0aGUgY29tbWFuZCBsaW5lIHBhcnNp bmcgYmVpbmcgZG9uZSBpbiB0aGUgY21kbGluZSBjb2RlLiBUaGluayBvZiB0aGlzIGFzIGEgZGVm YXVsdCBjYXNlIGZvciB0aGUgcGFyc2VyIGFuZCB0byBtZSB0aGF0IG1ha2VzIG1vcmUgc2Vuc2Ug dGhlbiBqdXN0IGRvaW5nIG15IG93biBjb21tYW5kIGxpbmUgZGVzaWduLiBJbiB0aGUgY21kbGlu ZSBjb2RlIHlvdSBndXlzIHByb3ZpZGVkIGlzIGEgbG90IG9mIGZlYXR1cmVzIGxpa2UgaGlzdG9y eSwgY29udHJvbCBrZXkgc3VwcG9ydCwgYXJnIHBhcnNpbmcgKElQLCBNQUMpIGFuZCBtYW55IG90 aGVycy4gSSB3b3VsZCByYXRoZXIgbm90IGhhdmUgdG8gd3JpdGUgdGhhdCBjb2RlIG15c2VsZi4N Cj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiBUaGUgZGVmYXVsdCBjYXNlIGlzIHRoZSBzYW1lIGJlaGF2 aW9yIHRvZGF5LCB3aXRoIGdpdmluZyBhIG5vIG1hdGNoIGVycm9yIHVubGVzcyB0aGV5IGFkZCB0 aGUgZXh0ZXJuYWwgcGFyc2VyLg0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+PiBJdCBzZWVtcyBhbG90IHNp bXBsZXIgdGhhbiB0aGF0IHRvIG1lLiAgTG9va2luZyBhdCB0aGUgdGVzdCBhcHBsaWNhdGlvbnMs IHRoZQ0KPj4+Pj4+Pj4gY29tbWFuZCBsaW5lIHBhcnNlciBleHBlY3RzIHRoZSBhcHBsaWNhdGlv biB0byBjcmVhdGUgYW4gYXJyYXkgb2YNCj4+Pj4+Pj4+IGNtZGxpbmVfcGFyc2VfY3R4X3Qgc3Ry dWN0dXJlcyB0byBzdXBwb3J0IG5ldyBvcHRpb24gcGFyc2luZy4gIElmIHlvdXIgZ29hbCBpcw0K Pj4+Pj4+Pj4gdG8gc3VwcG9ydCBvdGhlciBsYW5ndWFnZXMsIGl0IHNlZW1zIHRvIG1ha2UgbW9y ZSBzZW5zZSB0byBqdXN0IHVzZSBmb3JlaWduDQo+Pj4+Pj4+PiBsYW5ndWFnZSBiaW5kaW5ncyB0 byBtZXJnZSB5b3VyIGNvZGluZyBsYW5ndWFnZSBzdXBwb3J0IHdpdGggdGhlIERQREsNCj4+Pj4+ Pj4+IChvc3RlbnNpYmx5IHlvdSB3aWxsIGFscmVhZHkgaGF2ZSB0byBkbyB0aGF0IGlmIHlvdSB3 YW50IHRvIHVzZSBvdGhlciBwYXJ0cyBvZg0KPj4+Pj4+Pj4gdGhlIERQREspLg0KPj4+Pj4+PiBI aSBOZWlsLA0KPj4+Pj4+PiANCj4+Pj4+Pj4gQSB0cnVlIGxhbmd1YWdlIGJpbmRpbmcgbGlrZSBM dWEgb3Igb25lIG9mIHRob3NlIG90aGVyIGxhbmd1YWdlcyA6LSkgeW91IGFyZSBjb3JyZWN0IHRv IGJlbGlldmUgYmluZGluZyBkaXJlY3RseSB1c2luZyDigJhD4oCZIGNvZGUgaXMgdGhlIHJpZ2h0 IHNvbHV0aW9uIC4gSW4gUGt0Z2VuIEkgdXNlIEx1YSBhcyB0aGUgZGlyZWN0IGxhbmd1YWdlIGJp bmRpbmcgYW5kIGV4dGVuZCBMdWEgd2l0aCBzcGVjaWZpYyBQa3RnZW4gZnVuY3Rpb25zLg0KPj4+ Pj4+PiANCj4+Pj4+Pj4gV2hhdCBJIGFtIGRvaW5nIGhlcmUgaXMgdG8gYWRkIGEgZGVmYXVsdCBj YXNlIHRvIGNtZGxpbmUgY29kZSwgd2hpY2gganVzdCBoYXBwZW5zIHRvIGFsbG93IG1lIHRvIHBh cnNlIHRoZSBjbWRsaW5lIGluIHRoZSBhcHBsaWNhdGlvbi4gQmVpbmcgYWJsZSB0byBleGVjdXRl IHNheSBhIGxpbmUgb2Ygc2NyaXB0IGNvZGUgaXMgbm90IHJlYWxseSB0aGUgcmVxdWlyZW1lbnQg SU1PLiBCZWluZyBhYmxlIHRvIGV4dGVuZCB0aGUgY21kbGluZSBjb2RlIHdpdGggYSBkZWZhdWx0 IGNhc2UgaXMgYSBnb29kIGZlYXR1cmUgYW5kIGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIGV4dGVu ZCBjbWRsaW5lIGZvciBzb21lIHNpbXBsZSBjYXNlcy4gVGhlIGNtZGxpbmUgY29kZSBpcyBraW5k IG9mIHNpbXBsZSwgYnV0IGRvZXMgcmVxdWlyZSBhIGZhaXIgYW1vdW50IG9mIHN0cnVjdHVyZXMs IGNvZGUgYW5kIHVuZGVyc3RhbmRpbmcgdG8gd3JpdGUgYSBjb21wbGV4IGV4dGVuZGFibGUgY29t bWFuZCBsaW5lIGludGVyZmFjZS4gSXQgZG9lcyBzZWVtIGhhcmQgdG8gZmluZCBhIGNsZWFuLCBz aW1wbGUgYW5kIHVzYWJsZSBlbWJlZGRlZCBjb21tYW5kIGxpbmUgY29kZSBiYXNlIGlzIG5vdCB2 ZXJ5IGVhc3kgdG8gbG9jYXRlLiANCj4+Pj4+Pj4gDQo+Pj4+Pj4+IEFkZGluZyBhIHRydWUgbGFu Z3VhZ2UgYmluZGluZyByZWFsbHkgcmVxdWlyZXMgdXNpbmcgY29kZSB0byBleHRlbmQgdGhlIGxh bmd1YWdlIGFzIEkgZGlkIHdpdGggTHVhIGFuZCBQa3RnZW4uIEl0IGNvdWxkIGhhdmUgYmVlbiBk b25lIHdpdGggYW55IGxhbmd1YWdlIEkganVzdCBwaWNrZWQgTHVhLCBidXQgdGhlIHBhdGNoIGRv ZXMgbm90IHJlYWxseSBhZGQgc3VwcG9ydCBmb3IgYSBsYW5ndWFnZSBvdGhlciB0aGVuIGdpdmlu ZyBzb21lIHN1cHBvcnQgZm9yIHNvbWVvbmUgdG8gaGFuZGxlIHRoZSBub19tYXRjaCBjYXNlLg0K Pj4+Pj4+PiANCj4+Pj4+Pj4gVGhlIHVzZSBjYXNlIGZvciB0aGlzIGZlYXR1cmUgaXMgbm90IGp1 c3QgZm9yIFBrdGdlbiwgYnV0IGFub3RoZXIgc29sdXRpb24gSSBob3BlIGV2ZXJ5b25lIHdpbGwg ZmluZCB1c2VmdWwgd2hlbiBJIGdldCBpdCBtb3JlIGNvbXBsZXRlLg0KPj4+Pj4+PiANCj4+Pj4+ Pj4gVGhhbmtzDQo+Pj4+Pj4+ICsrS2VpdGgNCj4+Pj4+Pj4gDQo+Pj4+Pj4+IFBTLiBvbiBhIGRp ZmZlcmVudCB0b3BpYyBJIHdhcyB0aGlua2luZyBhYm91dCBzdWdnZXN0aW5nIGFuZCB3cml0aW5n IGEgcGF0Y2ggdG8gYWRkIEx1YSB3aXRoIERQREsgc3BlY2lmaWMgYmluZGluZyBhbmQgZXh0ZW5z aW9ucy4gKGFsc28gYWxsb3dpbmcgdGhvc2UgYG90aGVyYCBsYW5ndWFnZXMgdG9vIDotKSBCZWlu ZyBhYmxlIHRvIHVzZSBhIHNjcmlwdGluZyBsYW5ndWFnZSBhbmQgYmUgYWJsZSB0byBjYWxsIERQ REsgQVBJ4oCZcyBjb3VsZCBiZSB1c2VmdWwuIEhvdyB1c2VmdWwgbm90IHN1cmUgYXQgdGhpcyB0 aW1lLiAoSWYgeW91IHdhbnQgdG8gdGFsayBhYm91dCB0aGlzIHRvcGljIHBsZWFzZSBzdGFydCBh IG5ldyB0aHJlYWQpLg0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+PiBBbSBJIG1pc3Npbmcgc29tZXRoaW5n Pw0KPj4+Pj4+Pj4gTmVpbA0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+PiANCj4+Pj4+Pj4+Pj4gDQo+Pj4+ Pj4+Pj4+IC9CcnVjZQ0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IEtlaXRoIFdpbGVzLCBQcmluY2lw YWwgVGVjaG5vbG9naXN0IHdpdGggQ1RPIG9mZmljZSwgV2luZCBSaXZlciBtb2JpbGUgOTcyLTIx My01NTMzDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBLZWl0aCBXaWxlcywgUHJpbmNpcGFsIFRlY2hub2xv Z2lzdCB3aXRoIENUTyBvZmZpY2UsIFdpbmQgUml2ZXIgbW9iaWxlIDk3Mi0yMTMtNTUzMw0KPj4+ Pj4+IA0KPj4+Pj4+IEkgd291bGRuJ3QgaW52ZXN0IGEgbG90IG9mIHN3ZWF0IGluIHRoZSBjb21t YW5kIGxpbmUgcGFyc2VyLg0KPj4+Pj4+IFRoZSBvbmUgaW4gdGhlIERQREsgaXMgImdvb2QgZW5v dWdoIiBmb3Igd2hhdCBpdCBuZWVkcyB0byBkbywgYnV0IHJlYWxseSBpc24ndA0KPj4+Pj4+IHZl cnkgY29tcGxldGUgYW5kIGZsZXhpYmxlLiBTZWVtcyBsaWtlIHRoZSBraW5kIG9mIHRoaW5nIHRo YXQgZG9lc24ndCByZWFsbHkgZXZlbg0KPj4+Pj4+IG5lZWQgdG8gYmUgaW4gRFBESy4gQmV0dGVy IG9mZiBiZWluZyBwYXJ0IG9mIHNvbWUgb3RoZXIgbGlicmFyeS4NCj4+Pj4+PiANCj4+Pj4+IFdl bGwsIHNvbWV0aGluZyBuZWVkcyB0byBiZSB0aGVyZSB0byBwYXJzZSB0aGUgbGlicmFyaWVzJyBj b21tb24gb3B0aW9ucywgdGhvdWdoDQo+Pj4+PiBJIGFncmVlLCBtYWtpbmcgZWFsX2NtZGxpbmUg anVzdCBhIHJlZ2lzdHJhdGlvbiBmcm9udGVuZCB0byBnZXRvcHQgb3INCj4+Pj4+IGdldG9wdF9s b25nIHdvdWxkIGJlIHN1ZmZpY2llbnQuDQo+Pj4+IA0KPj4+PiBVbnRpbCB3ZSBoYXZlIGEgYmV0 dGVyIGNvbW1hbmQgbGluZSBzb2x1dGlvbiwgd2hpY2ggSSB0aGluayB3b3VsZCBiZSBncmVhdCwg YnV0IGluIHRoZSBtZWFuIHRpbWUgSSB3b3VsZCBsaWtlIHRvIHNlZSB0aGlzIHBhdGNoIGFwcGxp ZWQgaWYgbm8gb25lIGhhcyBhIHRlY2huaWNhbCByZWFzb24gb3IgYmV0dGVyIHN1Z2dlc3Rpb24u DQo+Pj4+IA0KPj4+PiBJIHRoaW5rIHRoaXMgcGF0Y2ggaXMgZmFpcmx5IHNpbXBsZSBhbmQgSSB0 aGluayB3ZSBuZWVkIGEgd2F5IHRvIGhhbmRsZSB0aGUgZGVmYXVsdCBjYXNlLiBJZiBzb21lb25l IGNvdWxkIHBsZWFzZSByZXZpZXcgdGhlIHBhdGNoLCB0aGF0IHdvdWxkIGJlIGdyZWF0Lg0KPj4+ PiANCj4+PiBJIGhhdmUgYW4gb2JqZWN0aW9uLCBzcGVjaWZpY2FsbHksIHRoYXQgaXRzIG5vdCBu ZWNlc3NlY2FyeS4gIFlvdSBjYW4gYWxyZWFkeQ0KPj4+IGFjY29tcGxpc2ggd2hhdCB5b3Ugd2Fu dCB0byBkbyBieSBhZGRpbmcgc3RydWN0dXJlcyB0byB0aGUgY29udGV4dCBhcnJheSBpbiB0aGUN Cj4+PiBjbWRsaW5lIHN0cnVjdHVyZS4gIEkgcmVhbGl6ZSBpdHMgbm90IGFzIGVhc3kgYXMganVz dCBhZGRpbmcgYW4gZXh0ZXJuYWwgcGFyc2VyDQo+Pj4gZnVuY3Rpb24sIGJ1dCBpdHMgdGhlIGRl c2lnbmVkIHdheSB0byBhZGQgb3B0aW9ucy4gIFRoaXMgZG9lcyBsaXR0bGUgbW9yZSB0aGFuDQo+ Pj4gYWRkIGFkZGl0aW9uIEFQSSBzdXJmYWNlIHdpdGhvdXQgYW55IHJlYWwgbmVlZC4NCj4+PiBO ZWlsDQo+PiANCj4+IE5laWwNCj4+IA0KPj4gSSBkbyBub3QgYWdyZWUgd2l0aCB5b3VyIGNvbW1l bnRzIGFzIEkgc2VlIGl0IHRvIGJlIGEgc21hbGwgZXh0ZW5zaW9uIHRvIGNtZGxpbmUgdG8gaGFu ZGxlIHRoZSBjYXNlIHdoZXJlIEkgd2lsbCBoYXZlIHRvIHBvc3NpYmx5IGFkZCBhIGh1Z2UgbnVt YmVyIG9mIGNvbW1hbmRzL2NvZGUgdG8gdGhlIGNtZGxpbmUgc3RydWN0dXJlcy4gVXNpbmcgdGhp cyBtZXRob2QgSSBhbSBhYmxlIHRvIGFkZCB0aGVzZSB2ZXJ5IHNpbXBsZSBjb21tYW5kcyB3aXRo b3V0IGhhdmluZyB0byBhZGQgbW9yZSBjb2RlIGZvciB0aGlzIHVzZSBjYXNlLg0KPj4gDQo+IENh biB5b3UgcHJvdmlkZSBhIHJlYWwgZXhhbXBsZSBoZXJlPyAgdXNuaWcgdmFndWUgdGVybXMgbGlr ZSAiaHVnZSIgcmVhbGx5IG1ha2VzDQo+IG1vcmUgb2YgYW4gZW1vdGlvbmFsIGFyZ3VtZW50IHRo YW4gYSBmYWN0dWFsIG9uZS4gIFRvIGNpdGUgYW4gZXhhbXBsZSB0aGUNCj4gY21kbGluZV90ZXN0 IHByb2dyYW0gYWRkcyBhIGNvbW1hbmQgbGluZSBwYXJhbXRlciB0aGF0IGp1c3QgbGV0cyB5b3Ug cGFyc2UgYQ0KPiBudW1iZXIgb3V0IG9mIHRoZSBjb21tYW5kIGxpbmUuICBTaWxseSwgZ3JhbnRl ZCwgYnV0IGl0IHNlcnZlcyB0aGUgcHVycG9zZS4gIEl0cw0KPiBjYWxsZWQgY21kX251bSwgYW5k IHdpdGggZnVuY3Rpb25zIGFuZCBkYXRhIGFsbCB0b2xkLCBpdCBsb29rcyBsaWtlIGl0IHRha2Vz DQo+IGFib3V0IDE3IGxpbmVzIG9mIGNvZGUuICBOb3cgdGhhdHMgbW9yZSB0aGFuIHdoYXQgeW91 J3JlIGFkZGluZyB3aXRoIHlvdSBwYXRjaCwNCj4gSSBncmFudCB5b3UsIGJ1dCBJIGFzc2VydCB0 aGF0IHRoZSAicG90ZW50aWFsbHkgaHVnZSIgYXJndW1lbnQgeW91J3JlIG1ha2luZw0KPiBhYm92 ZSBpcyBmYWxzZSwgZXNwZWNpYWxseSB3aGFuIHlvdSBjb25zaWRlciB0aGF0IHNvbWUgcmVhc29u YWJseSBjbGV2ZXIgY29kaW5nDQo+IGNhbiBsaWtlbHkgYWxsb3cgeW91IHRvIHJldXNlIGZ1bmN0 aW9uIHBhcnNpbmcgZmFpcmx5IGVhc2lseS4NCg0KSSB0aGluayBJIGdhdmUgeW91IGFuIGV4YW1w bGUgYmVsb3csIGJ1dCBoZXJlIGlzIG9uZSBJIGFtIGxvb2tpbmcgYXQgbm93Lg0KDQpJIGhhdmUg YSBudW1iZXIgb2YgcHJvZ3JhbXMgYW5kIHNjcmlwdHMgaW4gYSBiaW4gZGlyZWN0b3J5LCBvbmUg b2YgdGhlIHJlYXNvbnMgZm9yIHRoZXNlIHByb2dyYW1zIGlzIHRvIGJlIGFibGUgdG8gZXh0ZW5k IHRoZSBhcHBsaWNhdGlvbiB3aXRob3V0IGhhdmluZyB0byByZWJ1aWxkIHRoZSBhcHBsaWNhdGlv biBvciBhZGRpbmcgc3BlY2lhbCBwYXJzaW5nIG9mIHRoZSBhcmd1bWVudHMgZm9yIGp1c3QgdGhl IG9uZSBwcm9ncmFtLiBJbiBteSBjYXNlIHRoZSBzY3JpcHRzIGNhbiBwYXJzZSB0aGUgYXJndW1l bnRzIGFzIGl0IGFscmVhZHkgaGFzIHRoZSBzdXBwb3J0IGJ1aWx0aW4gYW5kIGhhdmluZyBjbWRs aW5lIGRvIGFueSBwcm9jZXNzaW5nIG9mIHRoZSBjb21tYW5kcyBpcyByZWR1bmRhbnQuDQoNClRo ZSBwcm9ncmFtcyBiZWluZyBsb2FkZWQgYXJlIHNoYXJlZCBvYmplY3RzIHZpYSBkbG9wZW4oKSBh bmQgYWxyZWFkeSBoYXZlIGl0cyBvd24gcGFyc2luZyBjb2RlIGFuZCB0cnlpbmcgdG8gcGFyc2Ug YW4gSVAgYWRkcmVzcyBpbiBjbWRsaW5lIHRvIGEgYmluYXJ5IGZvcm1hdCB3b3VsZCBqdXN0IHJl cXVpcmUgbWUgdG8gY29udmVydCBpdCBiYWNrIHRvIGEgc3RyaW5nIHRvIHBhc3MgdGhhdCBzdHJp bmcgaW4gYSBhcmdjL2FyZ3YgZm9ybWF0LiBUaGUgcHJvamVjdCBJIGFtIGRvaW5nIG5vdyBpcyBi dWlsZGluZyBhIGRwZGstc2hlbGwgbGlrZSBlbnZpcm9ubWVudCwgd2hpY2ggc3RhcnRzIHVwIERQ REsgYXMgbm9ybWFsIHRoZW4gc3RvcHMgYXQgYSBjb21tYW5kIHByb21wdC4NCg0KSW4gdGhlIGNv bW1hbmQgcHJvbXB0IEkgYW0gYWJsZSB0byBsb2FkIGFuZCBleGVjdXRlIGFwcGxpY2F0aW9uIGxp a2UgbDJmd2Qgb3IgbDNmd2QgYnVpbHQgYXMgYSBzaGFyZWQgb2JqZWN0LiBQbHVzIEkgc3RpbGwg aGF2ZSBhIGNvbW1hbmQgcHJvbXB0IGZyb20gdGhlIGRwZGstc2ggdG8gbGF1bmNoIG90aGVyIGFw cGxpY2F0aW9ucyBvciBsb29rIGF0IHN0YXRzIG9yIGRlYnVnIHRoZSBhcHBsaWNhdGlvbi4gSSBh bSBzdGlsbCByZWZpbmluZyB0aGUgZGV0YWlscywgYnV0IGJlaW5nIGFibGUgdG8gbGF1bmNoIGEg 4oCcZHBkay1zaOKAnSBsaWtlIHN5c3RlbSB0aGVuIGJlIGFibGUgdG8gZXhlY3V0ZS9kZWJ1Zy92 aWV3IHN0YXRzIGFuZCBhbnl0aGluZyBlbHNlIG9uZSBjYW4gdGhpbmsgb2YgaXMgYSB2ZXJ5IHJl YXNvbmFibGUgdXNlLiBVc2luZyB0aGlzIG1ldGhvZCB0aGUgdXNlciBjb21tYW5kcyBhcmUgc2lt cGxlIGFuZCBlYXN5IHRvIHJlbWVtYmVyLCBwbHVzIHNvbWVvbmUgY2FuIGJ1aWxkIGEgbmV3IGFw cGxpY2F0aW9uIHRvIGRlYnVnIHdpdGhvdXQgcmVidWlsZGluZyBEUERLLg0KDQpJIGNhbiBzZWUg dGhpcyB0eXBlIG9mIGVudmlyb25tZW50IGFzIGEgY2xlYW5lciB3YXkgZm9yIG5ldyB1c2VycyB0 byB1bmRlcnN0YW5kIERQREsgYW5kIHN0YXJ0IHBsYXlpbmcgd2l0aCB0aGUgc3lzdGVtLiBJIHdh bnQgdG8gYWRkIHN1cHBvcnQgdG8gcnVuIG11bHRpcGxlIGFwcGxpY2F0aW9ucyBhdCB0aGUgc2Ft ZSB0aW1lIG9yIGF0IGxlYXN0IGJlIGFibGUgdG8gZ3JhYiBzdGF0cyBhbmQgaW5mb3JtYXRpb24g ZnJvbSB0aGUgYXBwbGljYXRpb24gYW5kL29yIERQREsgd2l0aG91dCBzb21lb25lIGhhdmluZyB0 byBhZGQgdGhhdCBzdXBwb3J0IHRvIGhpcyBhcHBsaWNhdGlvbi4gSXQgaXMgcG9zc2libGUgd2l0 aCBzb21lIGNoYW5nZXMgdG8gcmVtb3ZlIHRoZSBjbWRsaW5lIHBhcnNpbmcgZnJvbSB0aGUgbDNm d2QgYXBwbGljYXRpb24gYnkgYWRkaW5nIHRoZSBiYXNpYyBjb21tYW5kcyBpbnRvIHRoZSBkcGRr LXNoIGVudmlyb25tZW50LiAqKiBUaGlzIGRvZXMgbm90IG1lYW4gSSBhbSBmb3JjaW5nIGNtZGxp bmUgb24gYXBwbGljYXRpb25zIG9yIGRldmVsb3BlcnMgdGhleSBjYW4gc3RpbGwgdXNlIERQREsg d2l0aG91dCBjbWRsaW5lIG9yIGFueSBvdGhlciBmZWF0dXJlLg0KDQpQbHVzIEkgY2FuIG5vdyBl eGVjdXRlIGFueSBmdW5jdGlvbiB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uIG9mIGxvYWRlZCBtb2R1 bGVzIG9yIERQREsgYnkgZG9pbmcgYSBzeW1ib2wgbG9va3VwIGFuZCBjYWxsIHRoZSBmdW5jdGlv bi4NCg0KSSBhbSB0cnlpbmcgdG8gYnVpbGQgdGhlIGRwZGstc2ggd2l0aCB2ZXJ5IGxpdHRsZSBt b2RpZmljYXRpb25zIHRvIERQREsgYW5kIGFzIGFub3RoZXIgYXBwbGljYXRpb24gc2ltaWxhciB0 byBQa3RnZW4uIFRvZGF5IHRoZSBleGFtcGxlcyBkaXJlY3RvcnkgaGFzIHNvbWUgZ3JlYXQgZXhh bXBsZSBjb2RlIGFsbCBkZXZlbG9wZWQgYnkgSW50ZWwgYW5kIEkgd291bGQgbGlrZSB0byBzdGFy dCBzZWVpbmcgb3RoZXIgYXBwbGljYXRpb25zIChsaWtlIFBrdGdlbikgY29udHJpYnV0ZWQgdG8g dGhlIGNvbW11bml0eS4gSXQgd291bGQgYmUgZXZlbiBiZXR0ZXIgKHdpdGggc29tZSBlZmZvcnQp IHRvIHJld3JpdGUgdGhlIGV4YW1wbGVzIGRpcmVjdG9yeSB0byB1c2UgZHBkay1zaCBpbnN0ZWFk IG9yIGFzIHdlbGwuDQo+IA0KPj4gTGV0cyBzYXkgeW91IGhhdmUgYSBkaXJlY3Rvcnkgb24gdGhl IGRpc2sgdGhhdCBoYXMgcG9zc2libHkgYSAxMDAgbGl0dGxlIGNvbW1hbmRzLCB3aXRob3V0IHRo aXMgbWlub3IgY2hhbmdlIEkgd291bGQgaGF2ZSB0byB3cml0ZSAxMDAgbGl0dGxlIHN0cnVjdHVy ZXMvY29kZSBmb3IgY21kbGluZSB0byBoYW5kbGUgZWFjaCBjYXNlLiBBbm90aGVyIG9wdGlvbiBp cyB0byB3cml0ZSBhIHNpbmdsZSBjb21tYW5kIHRvIGhhbmRsZSB0aGVzZSBjb21tYW5kcy4gSSB1 c2VkIHRoaXMgbWV0aG9kIGluIFBrdGdlbiBhbmQgY291bGQgZG8g4oCYcnVuIGZvbyA8YXJncz7i gJkgc3R5bGUgY29tbWFuZHMsIGJ1dCBpdCB3b3VsZCBiZSBtdWNoIHNpbXBsZXIgZm9yIHRoZSB1 c2VyIHRvIGp1c3QgdHlwZSDigJhmb28gPGFyZ3M+4oCZIGluc3RlYWQuDQo+PiANCj4gWWVzLCBi dXQgdGhhdHMgaG9uZXN0bHkgdHJ1ZSBvZiBldmVyeSBjb21tYW5kIGxpbmUgcGFyc2VyLCBzb21l dGhpbmcgbmVlZHMgdG8NCj4gZGVmaW5lIHRoZSB0b2tlbnMgdGhhdCBpZGVudGlmeSB0aGUgb3B0 aW9uLCB0aGUgZnVuY3Rpb24gdG8gaGFuZGxlIGl0cw0KPiBpbnRlcnByZXRhdGlvbiBhbmQgdGhl IHN0cnVjdHVyZXMgdG8gZ2x1ZSBpdCBhbGwgdG9nZXRoZXIuICBUaGF0IGNhbiBiZSBpbiB0aGUN Cj4gRFBESywgb3IgaW4gc29tZXRoaW5nIGVsc2UuICBUbyB1c2UgeW91ciBleGFtcGxlIGFib3Zl LCBvbmUgcHJlc3VtZXMgdGhhdCB5b3VyDQo+IDEwMCBsaXR0bGUgY29tbWFuZHMgYWxsIGhhdmUg c29tZSBzb3J0IG9mIHBhcnNpbmcgc3RydWN0dXJlIGNvZGVkIGVsc2V3aGVyZSwNCj4gYWxvbmcg d2l0aCB0aGUgY29kZSB0byBkbyB0aGF0IHBhcnNpbmcsIHJpZ2h0PyBZb3UgZG9uJ3Qgc2VlbSB0 byB0YWtlIHRoYXQNCj4gYWRkaXRpb25hbCBjb2RlIGludG8gYWNjb3VudCBoZXJlLiAgSWYgeW91 IGNhbiByZW1vdmUgdGhhdCBwYXJzaW5nIGNvZGUgZnJvbQ0KPiB5b3VyIGFwcGxpY2F0aW9uLCB0 aGVuIGl0IHNlZW1zIHRvIG1lIHRoZSBhZGRpdGlvbmFsIDE3IGxpbmVzIGFib3ZlIHJlYWxseSBp c24ndA0KPiB0aGF0IGJpZyBhIGRlYWwuDQoNClllcywgdGhlIHBhdGNoIGlzIHZlcnkgc21hbGws IGJ1dCBhZGRzIG1vcmUgZnVuY3Rpb25hbGl0eSB0byBjbWRsaW5lLiBFdmVuIHRoZSBhcHBsaWNh dGlvbiBuZWVkcyB0byBoYXZlIHBhcnNpbmcgY29kZSB0byBkZWNvZGUgY29tcGxleCBhcmd1bWVu dHMuIEFkZGluZyB0aGF0IHN1cHBvcnQgdG8gY21kbGluZSBmb3IganVzdCBvbmUgYXBwbGljYXRp b24gd291bGQgYmUgb3ZlciBraWxsLiBJbiBQa3RnZW4gYSBjb3VwbGUgb2YgYXJndW1lbnRzIGFy ZSBlYXNpZXIgdG8gcGFyc2UgaW4gdGhlIGFwcGxpY2F0aW9uIHRoZW4gdG8gd3JpdGUgYSBjbWRs aW5lIHN0cnVjdHVyZS9jb2RlIGp1c3Qgbm90IHdvcnRoIHRoZSAncmV0dXJuIG9uIGludmVzdG1l bnQnIHRoYXQgbm8gb25lIGVsc2Ugd2lsbCB1c2UuDQo+IA0KPiBJdCBzZWVtcyB0byBtZSB0aGF0 LCB3aGF0IHRoaXMgYm9pbHMgZG93biB0byBpcyB0aGUgZmFjdCB0aGF0IHlvdSBoYXZlIGFuDQo+ IGFwcGxpY2F0aW9uIHRoYXQgbmVlZHMgdG8gcGFyc2UgYSBzaW5nbGUgY29tbWFuZCBsaW5lIHdp dGggdHdvIGRpZmZlcmVudCBwYXJzZXIsDQo+IHdoY2loIGlzIGp1c3Qga2luZCBvZiBhIGxvdXN5 IHNpdHVhdGlvbiwgYmVjYXVzZSBwYXJzZXJzIGFsbCBhc3N1bWUgdGhhdCB0aGV5DQo+IGFyZSB0 aGUgb25seSB0aGluZyBwYXJzaW5nIHRoZSBjb21tYW5kIGxpbmUuICBIb25lc3RseSwgSSByZWFs bHkgcXVlc3Rpb24gdGhlDQo+IG5lZWQgZm9yIGEgY29tbWFuZCBsaW5lIHBhcnNlciBzbyB0aWdo dGx5IGludGVncmF0ZWQgd2l0aCBEUERLIGF0IGFsbC4NCg0KVGhlIGNvbW1hbmQgbGluZSBwYXJz ZXIgaXMgbm90IGludGVncmF0ZWQgd2l0aCBEUERLLCBqdXN0IGhhcHBlbnMgdG8gYmUgaW4gdGhl IGxpYnJhcnkuDQoNClllcywgSSBoYXZlIGFuIGFwcGxpY2F0aW9uIGp1c3QgbGlrZSB0aGUgcmVz dCBvZiB0aGUgd29ybGQgYW5kIEkgdGhvdWdodCB0aGlzIHdvdWxkIGEgcmVhc29uYWJsZSBjaGFu Z2UgdG8gZXh0ZW5kIGNtZGxpbmUgY29kZS4gSnVzdCBiZWNhdXNlIHlvdSBkbyBub3Qgc2VlIGEg bmVlZCB0byB1c2UgdGhpcyBmZWF0dXJlIG9yIGhhdmUgYW4gYXBwbGljYXRpb24gbmVlZGluZyB0 aGUgZmVhdHVyZSBkb2VzIG5vdCBtZWFuIGFueXRoaW5nIHRvIHRoaXMgZGlzY3Vzc2lvbi4NCg0K PiBydGVfZWFsX2luaXQgcmVhbGx5IHNob3VsZG4ndCBiZSBhY2VwdGluZyBhIHN0cmFpZ2h0IGNv bW1hbmQgbGluZSBidWZmZXIuICBBcyBhDQo+IGxpYnJhcnksIGl0IHNob3VsZCBtb3JlIGxpa2Vs eSBhY2NlcHQgYSBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSB3aGljaCBpdCBqdXN0DQo+IGRvbGVz IG91dCB0byBpbmRpdmlkdWFsIGNvbXBvbmVudHMgZHVyaW5nIGluaXRhbGl6YXRpb24uICBUaGF0 IGNhbiBsZWF2ZQ0KPiBhcHBsaWNhdGlvbnMgbGlrZSB5b3VycyB0byBoYW5kbGUgY29tbWFuZCBs aW5lIHBhcnNpbmcgMTAwJSBhcyB5b3Ugc2VlIGZpdCwgYW5kDQo+IHRoZW4gYnVpbGQgdGhlIERQ REsgY29uZmlndXJhdGlvbiBmcm9tIHRoYXQgYXMgeW91IGxpa2UuDQoNCmhtbW0sIERQREsgdXNp bmcgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBpcyBhIG5pY2UgZmVhdHVyZS4gSWYgeW91IHdhbnQg dG8gcGFzcyBhIHN0cnVjdHVyZSBpbnN0ZWFkIHRoZW4gcGxlYXNlIHByb2R1Y2UgYSBwYXRjaCB0 byBhZGQgdGhhdCBzdXBwb3J0LCBidXQgeW91IGhhZCBiZXR0ZXIga2VlcCB0aGUgb3JpZ2luYWwg YXJndW1lbnQgcGFzc2luZyBBUEkgdG9vLiBUaGlzIHdheSB5b3UgZ2V0IGEgc3RydWN0dXJlIHBh c3NpbmcgQVBJIGFuZCB0aGUgcmVzdCBvZiB0aGUgY29kZSBjYW4gdXNlIHRoZSBvcmlnaW5hbCBB UEkuIFlvdSBzdGlsbCBuZWVkIGFyZ3VtZW50IHBhcnNpbmcgY29kZSBpbiB0aGUgYXBwbGljYXRp b24gZm9yIHRoZSBhcHBsaWNhdGlvbiBuZWVkcy4gRnJvbSB0aGUgY29tbWFuZCBsaW5lIHdlIG5l ZWQgYXJnYy9hcmd2IGFuZCB0aGVzZSBoYXBwZW5lZCB0byBiZSBwYXNzZWQgdG8gRFBESyB0byBw YXJzZSwgd2hpY2ggZ2V0cyBjb252ZXJ0ZWQgaW50byBhIHN0cnVjdHVyZSBhbnl3YXkuIElmIHlv dXIgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIHRoZSBjb21tYW5kIGxpbmUgYXMgaXQgaXMgZW1i ZWRkZWQgaW50byBhbm90aGVyIGFwcGxpY2F0aW9uLCB0aGVuIHVzaW5nIGEgc3RydWN0dXJlIG1h a2Ugc2Vuc2UuDQoNCllvdSBzZWVtIHRvIGFjY3VzZSBtZSBvZiBiZWluZyBteW9waWMgdG93YXJk IGNvbW1hbmQgbGluZSBhbmQgYXJnYy9hcmd2IGRlc2lnbiwgYnV0IHlvdSBzZWVtIHRvIGFsc28g YmUgbXlvcGljIGZvciB0aGUgZW1iZWRkZWQgY2FzZSB2aWV3IHBvaW50LiBPaCB3ZWxsISEhDQoN Cj4gDQo+PiBIYXZpbmcgYSBkZWZhdWx0IGhhbmRsZXIgZm9yIGNvbW1hbmRzIGp1c3QgbWFrZXMg YSBsb3Qgb2Ygc2Vuc2UgdG8gbWUgYW5kIEkgZG8gbm90IGJ1eSB0aGUgJ2FkZGVkIEFQSSBzdXJm YWNlIHdpdGhvdXQgYW55IHJlYWwgbmVlZCcgc3RhdGVtZW50Lg0KPiBJJ20gbm90IHN1cmUgd2hh dHMgbm90IHRvIGJ1eSB0aGVyZS4gIEkgc2VlIHRoZSBhYm92ZSBhcyBmYWN0czoNCj4gDQo+IDEp IFlvdSdyZSBhZGRpbmcgQVBJIHN1cmZhY2UgKHlvdSBhZGRlZCBhIGZ1bmN0aW9uIHRoYXQgaXMg ZXhwb3J0ZWQgZnJvbSB0aGUNCj4gbGlicmFyeSkNCg0KWWVzLCB0aGlzIGlzIGEgZmFjdCBidXQg aXMgbm90IHJlbGV2YW50IHRvIHRoZSBpc3N1ZSBoZXJlLiBBbnkgYWRkZWQgQVBJIHdpbGwgaW5j cmVhc2UgdGhlIHRlc3RpbmcuIEkgY291bGQgaGF2ZSBub3QgdXNlZCBhbiBBUEkgdG8gc2V0IHRo ZSBmdW5jdGlvbiBwb2ludGVyLCBqdXN0IG1ha2UgdGhlIHZhcmlhYmxlIGdsb2JhbCB0byBhbGxv dyB0aGUgYXBwbGljYXRpb24gdG8gc2V0IHRoZSBmdW5jdGlvbiBwb2ludGVyLiBJIGp1c3QgZmln dXJlcyBpdCB3YXMgY2xlYW5lci4gU28gaWYgSSBkbyByZW1vdmUgdGhlIGZ1bmN0aW9uIHRoZSAj MSBtZWFucyBub3RoaW5nLg0KPiANCj4gMikgWW91IGRvbid0IG5lZWQgdG8gZG8gKDEpICh0aGVy ZXMgYW4gYWxyZWFkeSBleGlzdGluZyBhbHRlcm5hdGUgbWV0aG9kIHRvIGRvDQo+IHdoYXQgeW91 IHdhbnQpDQoNClllcywgeW91IGNvdWxkIHdvcmsgYXJvdW5kIHRoaXMgcHJvYmxlbSB3aXRoIEFQ SSBvciB0cmlja3MsIGJ1dCBhZGRpbmcgYSBkZWZhdWx0IGNhc2UgaGVyZSBpcyB0aGUgY2xlYW5l c3QgYW5kIHNpbXBsZXN0IG1ldGhvZC4gRnJvbSBhIHVzZXJzIHBvaW50IG9mIHZpZXcgIzIgaXMg bm90IHZhbGlkLg0KDQpJIGZlZWwgbGlrZSB5b3UgaGF2ZSBub3QgaGFkIGEgbG90IG9mIHJlcXVp cmVtZW50cyBvciBleHBlcmllbmNlIHdpdGggd3JpdGluZyBhIGNvbXBsZXggYXBwbGljYXRpb24g Zm9yIERQREsgd2l0aCBhIGZhaXIgbnVtYmVyIG9mIGFyZ3VtZW50cyBvciBjb21tYW5kIGxpbmUg Y29tbWFuZHMuIE1heWJlLCBJIGFtIHdyb25nIGhlcmUuDQo+IA0KPiBZb3UgY2FuIGFyZ3VlIGFs bCBkYXkgdGhhdCB5b3VyIG1ldGhvZCBpcyBiZXR0ZXIsIGJ1dCBpdCBkb2Vzbid0IGNoYW5nZSB0 aGUgZmFjdA0KPiB0aGF0ICgxKSBhbmQgKDIpIGFyZSB0cnVlLiBBbmQgSSBkb24ndCB3YW50IHRv IGdvIGFkZGluZyBhZGRpdGlvbmFsIG1ldGhvZHMgdG8NCj4gdGhlIGV4aXN0aW5nIG9uZXMgYXMg dGhlcmUgd2lsbCBiZSBhIG5lZWQgdG8gc3VwcG9ydCB0aGVtIGluIHRoZSBmdXR1cmUsIGFuZCBh cw0KPiBzdWNoLCBJZiB3ZSdyZSBnb2luZyB0byBzdGFydCBkZXByZWNhdGluZyBBUEkncyBpbiBm YXZvciBvZiBzdXBlcmlvciBkZXNpZ25zLA0KPiBJJ2QgbGlrZSB0byBkbyB0aGF0IGFzIGluZnJl cXVlbnRseSBhcyBwb3NzaWJsZS4NCg0KQXMgSSBwb2ludGVkIG91dCB5b3VyICMxIGFuZCAjMiBh cmUgbm90IHJlYWxseSBhIGdyZWF0IGFyZ3VtZW50IGhlcmUgZm9yIHRoZSBzdWdnZXN0ZWQgZmVh dHVyZSBub3QgaG93IEkgd291bGQgdXNlIHNhaWQgZmVhdHVyZSBpcyBhIGJpdCBvdXRzaWRlIHRo ZSBzY29wZS4NCg0KV2hhdCBpcyB0aGUgb3BpbmlvbiBvZiB0aGUgcmVzdCBvZiB0aGUgbGlzdCwg YXMgaXQgYXBwZWFycyBOZWlsIGFuZCBteXNlbGYgYXJlIG5vdCBnb2luZyB0byBhZ3JlZT8NCg0K KEZvciBhIGZldyBsaW5lcyBvZiBjb2RlLCBJIGNvdWxkIGhhdmUgd3JpdHRlbiBhIG5ldyBjb21t YW5kIGxpbmUgbGlicmFyeSBhZnRlciB0aGVzZSBlbWFpbCA6LSkNCg0KSWYgeW91IHdhbnQgbWUg dG8gcHVsbCB0aGUgcGF0Y2ggSSBjYW4sIGJ1dCBJIGZlZWwgd2UgYXJlIGJlaW5nIGEgYml0IHNo b3J0IHNpZ2h0ZWQgaGVyZS4NCg0KVGhhbmtzDQorK0tlaXRoDQoNCj4gTmVpbA0KPiANCj4+IA0K Pj4gVGhhbmtzDQo+PiArK0tlaXRoDQo+Pj4gDQo+Pj4gDQo+Pj4+ICsrS2VpdGggDQo+Pj4+IA0K Pj4+Pj4gDQo+Pj4+PiBOZWlsDQo+Pj4+PiANCj4+Pj4gDQo+Pj4+IEtlaXRoIFdpbGVzLCBQcmlu Y2lwYWwgVGVjaG5vbG9naXN0IHdpdGggQ1RPIG9mZmljZSwgV2luZCBSaXZlciBtb2JpbGUgOTcy LTIxMy01NTMzDQo+PiANCj4+IEtlaXRoIFdpbGVzLCBQcmluY2lwYWwgVGVjaG5vbG9naXN0IHdp dGggQ1RPIG9mZmljZSwgV2luZCBSaXZlciBtb2JpbGUgOTcyLTIxMy01NTMzDQoNCktlaXRoIFdp bGVzLCBQcmluY2lwYWwgVGVjaG5vbG9naXN0IHdpdGggQ1RPIG9mZmljZSwgV2luZCBSaXZlciBt b2JpbGUgOTcyLTIxMy01NTMzDQoNCg==