From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Wiles, Keith" Subject: Re: [RFC] Yet another option for DPDK options Date: Fri, 3 Jun 2016 19:23:39 +0000 Message-ID: <8CDBBA50-A751-41B8-9FF4-7CDE928BA8AD@intel.com> References: <8CE01283-1E89-4302-BE7D-486975B43EF6@intel.com> <20160603174437.GC12627@hmsreliant.think-freely.org> <62A67FEB-AE18-43B1-8D15-27F23D5C8A7D@intel.com> <20160603183819.GD12627@hmsreliant.think-freely.org> <20160603191804.GE12627@hmsreliant.think-freely.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Arnon Warshavsky , Panu Matilainen , "Richardson, Bruce" , Thomas Monjalon , Yuanhan Liu , "dev@dpdk.org" , "Tan, Jianfeng" , Stephen Hemminger , Christian Ehrhardt , Olivier Matz To: Neil Horman Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id E100E5AB5 for ; Fri, 3 Jun 2016 21:23:42 +0200 (CEST) In-Reply-To: <20160603191804.GE12627@hmsreliant.think-freely.org> Content-Language: en-US Content-ID: List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQpPbiA2LzMvMTYsIDI6MTggUE0sICJOZWlsIEhvcm1hbiIgPG5ob3JtYW5AdHV4ZHJpdmVyLmNv bT4gd3JvdGU6DQoNCj5PbiBGcmksIEp1biAwMywgMjAxNiBhdCAwNzowNzo1MFBNICswMDAwLCBX aWxlcywgS2VpdGggd3JvdGU6DQo+PiBPbiA2LzMvMTYsIDI6MDAgUE0sICJkZXYgb24gYmVoYWxm IG9mIFdpbGVzLCBLZWl0aCIgPGRldi1ib3VuY2VzQGRwZGsub3JnIG9uIGJlaGFsZiBvZiBrZWl0 aC53aWxlc0BpbnRlbC5jb20+IHdyb3RlOg0KPj4gDQo+PiA+T24gNi8zLzE2LCAxOjUyIFBNLCAi QXJub24gV2Fyc2hhdnNreSIgPGFybm9uQHF3aWx0LmNvbTxtYWlsdG86YXJub25AcXdpbHQuY29t Pj4gd3JvdGU6DQo+PiA+DQo+PiA+DQo+PiA+DQo+PiA+T24gRnJpLCBKdW4gMywgMjAxNiBhdCA5 OjM4IFBNLCBOZWlsIEhvcm1hbiA8bmhvcm1hbkB0dXhkcml2ZXIuY29tPG1haWx0bzpuaG9ybWFu QHR1eGRyaXZlci5jb20+PiB3cm90ZToNCj4+ID5PbiBGcmksIEp1biAwMywgMjAxNiBhdCAwNjoy OToxM1BNICswMDAwLCBXaWxlcywgS2VpdGggd3JvdGU6DQo+PiA+Pg0KPj4gPj4gT24gNi8zLzE2 LCAxMjo0NCBQTSwgIk5laWwgSG9ybWFuIiA8bmhvcm1hbkB0dXhkcml2ZXIuY29tPG1haWx0bzpu aG9ybWFuQHR1eGRyaXZlci5jb20+PiB3cm90ZToNCj4+ID4+DQo+PiA+PiA+T24gRnJpLCBKdW4g MDMsIDIwMTYgYXQgMDQ6MDQ6MTRQTSArMDAwMCwgV2lsZXMsIEtlaXRoIHdyb3RlOg0KPj4gPj4g Pj4gU29ycnksIEkgZGVsZXRlZCBhbGwgb2YgdGhlIHRleHQgYXMgaXQgd2FzIGdldHRpbmcgYSBi aXQgbG9uZy4NCj4+ID4+ID4+DQo+PiA+PiA+PiBIZXJlIGFyZSBteSB0aG91Z2h0cyBhcyBvZiBu b3csIHdoaWNoIGlzIGEgY29tYmluYXRpb24gb2YgbWFueSBzdWdnZXN0aW9ucyBJIHJlYWQgZnJv bSBldmVyeW9uZeKAmXMgZW1haWxzLiBJIGhvcGUgdGhpcyBpcyBub3QgdG9vIGhhcmQgdG8gdW5k ZXJzdGFuZC4NCj4+ID4+ID4+DQo+PiA+PiA+PiAtIEJyZWFrIG91dCB0aGUgY3VycmVudCBjb21t YW5kIGxpbmUgb3B0aW9ucyBvdXQgb2YgdGhlIERQREsgY29tbW9uIGNvZGUgYW5kIG1vdmUgaW50 byBhIG5ldyBsaWIuDQo+PiA+PiA+PiAgIC0gQXQgdGhpcyBwb2ludCBJIHdhcyB0aGlua2luZyBv ZiBrZWVwaW5nIHRoZSBydGVfZWFsX2luaXQoYXJncywgYXJndikgQVBJIGFuZCBqdXN0IGhhdmUg aXQgcGFzcyB0aGUgYXJncy9hcmd2IHRvIHRoZSBuZXcgbGliIHRvIGNyZWF0ZSB0aGUgZGF0YSBz dG9yYWdlLg0KPj4gPj4gPj4gICAgICAtIE1heWJlIG1vdmUgdGhlIHJ0ZV9lYWxfaW5pdCgpIEFQ SSB0byB0aGUgbmV3IGxpYiBvciBrZWVwIGl0IGluIHRoZSBjb21tb24gZWFsIGNvZGUuIERvIG5v dCB3YW50IHRvIGdvIGhvZyB3aWxkLg0KPj4gPj4gPj4gICAtIFRoZSBydGVfZWFsX2luaXQoYXJn cywgYXJndikgd291bGQgdGhlbiBjYWxsIHRvIHRoZSBuZXcgQVBJIHJ0ZV9lYWxfaW5pdGlhbGl6 ZSh2b2lkKSwgd2hpY2ggaW4gdHVybiBxdWVyaWVzIHRoZSBkYXRhIHN0b3JhZ2UuIChzdGlsbCB0 aGlua2luZyBoZXJlKQ0KPj4gPj4gPlRoZXNlIHRocmVlIGl0ZW1zIHNlZW0gdG8gYmUgdGhlIGV4 YWN0IG9wcG9zaXRlIG9mIG15IHN1Z2dlc3Rpb24uICBUaGUgcG9pbnQgb2YNCj4+ID4+ID50aGlz IGNoYW5nZSB3YXMgdG8gc2VncmVnYXRlIHRoZSBwYXJzaW5nIG9mIGNvbmZpZ3VyYXRpb24gYXdh eSBmcm9tIHRoZQ0KPj4gPj4gPmluaXRhbGl6YXRpb24gZHBkayB1c2luZyB0aGF0IGNvbmZpZ3Vy dGlvbi4gIEJ5IGtlZXBpbmcgcnRlX2VhbF9pbml0IGluIHN1Y2ggYQ0KPj4gPj4gPndheSB0aGF0 IHRoZSBjb21tYW5kIGxpbmUgaXMgZGlyZWN0bHkgcGFzc2VkIGludG8gaXQsIHlvdSd2ZSBub3Qg Y2hhbmdlZCB0aGF0DQo+PiA+PiA+aW1wbGljaXQgYmluZGluZyB0byBjb21tYW5kIGxpbmUgb3B0 aW9ucy4NCj4+ID4+DQo+PiA+PiBOZWlsLA0KPj4gPj4NCj4+ID4+IFlvdSBtYXliZSByZWFkaW5n IHRoZSBhYm92ZSB3cm9uZyBvciBJIHdyb3RlIGl0IHdyb25nLCB3aGljaCBpcyBhIGhpZ2ggcG9z c2liaWxpdHkuIEkgd2FudCB0byBtb3ZlIHRoZSBjb21tYW5kIGxpbmUgcGFyc2luZyBvdXQgb2Yg RFBESyBhbiBpbnRvIGEgbGlicmFyeSwgYnV0IEkgc3RpbGwgYmVsaWV2ZSBJIG5lZWQgdG8gcHJv dmlkZSBzb21lIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIEFCSSBhbmQgdG8gcmVkdWNlIHRo ZSBsZWFybmluZyBjdXJ2ZS4gVGhlIGN1cnJlbnQgYXBwbGljYXRpb25zIGNhbiBzdGlsbCBjYWxs IHRoZSBydGVfZWFsX2luaXQoKSwgd2hpY2ggdGhlbiBjYWxscyB0aGUgbmV3IGxpYiBwYXJzZXIg Zm9yIGRwZGsgY29tbWFuZCBsaW5lIG9wdGlvbnMgYW5kIHRoZW4gY2FsbHMgcnRlX2VhbF9pbml0 aWFsaXplKCkgb3IgbW92ZSB0byB0aGUgbmV3IEFQSSBydGVfZWFsX2luaXRpYWxpemUoKSBwcmVj ZWRlZCBieSBhIG5ldyBsaWJyYXJ5IGNhbGwgdG8gcGFyc2UgdGhlIG9sZCBjb21tYW5kIGxpbmUg YXJncy4gQXQgc29tZSBwb2ludCB3ZSBjYW4gZGVwcmVjYXRlIHRoZSBydGVfZWFsX2luaXQoKSBp ZiB3ZSB0aGluayBpdCBpcyByZWFzb25hYmxlLg0KPj4gPj4NCj4+ID4+ID4NCj4+ID4+ID5JIGNh biB1bmRlcnN0YW5kIGlmIHlvdSB3YW50IHRvIGtlZXAgcnRlX2VhbF9pbml0IGFzIGlzIGZvciBB QkkgcHVycG9zZXMsIGJ1dA0KPj4gPj4gPnRoZW4geW91IHNob3VsZCBjcmVhdGUgYW4gcnRlX2Vh bF9pbml0Mihmb28pLCB3aGVyZSBmb28gaXMgc29tZSBoYW5kbGUgdG8gaW4NCj4+ID4+ID5tZW1v cnkgcGFyc2VkIGNvbmZpZ3VyYXRpb24sIHNvIHRoYXQgYXBwbGljYXRpb25zIGNhbiBwcmVmb3Jt IHRoYXQgc2VwYXJhdGlvbi4NCj4+ID4+DQo+PiA+PiBJIHRoaW5rIHlvdSBkZXNjcmliZSB3aGF0 IEkgaGFkIHBsYW5uZWQgaGVyZS4gVGhlIHJ0ZV9lYWxfaW5pdGlhbGl6ZSgpIHJvdXRpbmUgaXMg dGhlIG5ldyBydGVfZWFsX2luaXQyKCkgQVBJIGFuZCB0aGUgcnRlX2VhbF9pbml0KCkgd2FzIG9u bHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2FzIG15IHRoaW5raW5nLiBJIGZpZ3VyZWQg dGhlIGFyZ3VtZW50IHRvIHJ0ZV9lYWxfaW5pdGlhbGl6ZSgpIHdvdWxkIGJlIHNvbWV0aGluZyB0 byBiZSBkZWNpZGVkLCBidXQgaXQgd2lsbCBtb3N0bHkgbGlrZWx5IGJlIHNvbWUgdHlwZSBvZiBw b2ludGVyIHRvIHRoZSBzdG9yYWdlLg0KPj4gPj4NCj4+ID4+IEkgaG9wZSB0aGF0IGNsZWFycyB0 aGF0IHVwLCBidXQgbGV0IG1lIGtub3cuDQo+PiA+Pg0KPj4gPnllcywgdGhhdCBjbGFyaWZpZXMg eW91ciB0aGlua2luZywgYW5kIEkgYWdyZWUgd2l0aCBpdC4gIFRoYW5rIHlvdSENCj4+ID5OZWls DQo+PiA+DQo+PiA+PiArK0tlaXRoDQo+PiA+Pg0KPj4gPj4gPg0KPj4gPj4gPk5laWwNCj4+ID4+ ID4NCj4+ID4+ID4+ICAgLSBUaGUgZXhhbXBsZSBhcHBzIGFyZ3MgbmVlZHMgdG8gYmUgcGFzc2Vk IHRvIHRoZSBleGFtcGxlcyBhcyBpcyBmb3Igbm93LCB0aGVuIHdlIGNhbiBjb252ZXJ0IHRoZW0g b25lIGF0IGEgdGltZSBpZiBuZWVkZWQuDQo+PiA+PiA+Pg0KPj4gPj4gPj4gLSBJIHdvdWxkIGxp a2UgdG8ga2VlcCB0aGUgc3RvcmFnZSBvZiB0aGUgZGF0YSBzZXBhcmF0ZSBmcm9tIHRoZSBmaWxl IHBhcnNlciBhcyB0aGV5IGNhbiB1c2UgdGhlIOKAmHNldOKAmSByb3V0aW5lcyB0byBidWlsZCB0 aGUgZGF0YSBzdG9yYWdlIHVwLg0KPj4gPj4gPj4gICAtIEtlZXBpbmcgdGhlbSBzcGxpdCBhbGxv d3MgZm9yIG5ldyBwYXJzZXJzIHRvIGJlIGNyZWF0ZWQsIHdoaWxlIGtlZXBpbmcgdGhlIGRhdGEg c3RvcmFnZSBmcm9tIGNoYW5naW5nLg0KPj4gPj4gPj4gLSBUaGUgcnRlX2NmZyBjb2RlIGNvdWxk IGJlIG1vZGlmaWVkIHRvIHVzZSB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gaWYgc29tZW9uZSB3YW50 cyB0byB0YWtlIG9uIHRoYXQgdGFzayDimLoNCj4+ID4+ID4+DQo+PiA+PiA+PiAtIE5leHQgaXMg dGhlIGRhdGEgc3RvcmFnZSBhbmQgaG93IHdlIGNhbiBhY2Nlc3MgdGhlIGRhdGEgaW4gYSBjbGVh biBzaW1wbGUgd2F5Lg0KPj4gPj4gPj4gLSBJIHdhbnQgdG8gaGF2ZSBzb21lIHNpbXBsZSBsZXZl bCBvZiBoaWVyYXJjaHkgaW4gdGhlIGRhdGEuDQo+PiA+PiA+PiAgIC0gSGF2aW5nIGEgc3RyaW5n IGNvbnRhaW5pbmcgYXQgbGVhc3QgdHdvIGxldmVscyDigJxwcmltYXJ5OnNlY29uZGFyeeKAnS4N Cj4+ID4+ID4+ICAgICAgLSBQcmltYXJ5IHN0cmluZyBpcyBzb21ldGhpbmcgbGlrZSDigJxFQUzi gJ0gb3Ig4oCcUGt0Z2Vu4oCdIG9yIOKAnHRlc3RwbWTigJ0gdG8gZGl2aWRlIHRoZSBkYXRhIHN0 b3JhZ2UgaW50byBsb2dpY2FsIG1ham9yIGdyb3Vwcy4NCj4+ID4+ID4+ICAgICAgICAgLSBUaGUg cHJpbWFyeSBhbGxvd3MgdXMgdG8gaGF2ZSBncm91cHMgYW5kIHRoZW4gd2UgY2FuIGhhdmUgY29t bW9uIHNlY29uZGFyeSBzdHJpbmdzIGluIGRpZmZlcmVudCBncm91cHMgaWYgbmVlZGVkLg0KPj4g Pj4gPj4gICAgICAtIFNlY29uZGFyeSBzdHJpbmcgY2FuIGJlIHdoYXRldmVyIHRoZSBkZXZlbG9w ZXIgb2YgdGhhdCBncm91cCB3b3VsZCBsaWtlIGUuZy4gc2ltcGxlIOKAnEVBTDpmb29iYXLigJ0s IHR3byBsZXZlbHMg4oCcdGVzdHBtZDpmb28uYmFy4oCdDQo+PiA+PiA+Pg0KPj4gPj4gPj4gICAt IFRoZSBzZWNvbmRhcnkgc3RyaW5nIGlzIHRyZWF0ZWQgYXMgYSBzaW5nbGUgc3RyaW5nIGlmIGl0 IGhhcyBhIGhpZXJhcmNoeSBvciBub3QsIGJ1dCByZWZlcmVuY2luZyBhIHNpbmdsZSB2YWx1ZSBp biB0aGUgZGF0YSBzdG9yYWdlLg0KPj4gPj4gPj4gICAgICAtIEtleSB2YWx1ZSBwYWlycyAoS1ZQ KSBvciBhIGhhc2htYXAgZGF0YSBzdG9yZS4NCj4+ID4+ID4+ICAgICAgICAgLSBUaGUga2V5IGhl cmUgaXMgdGhlIHdob2xlIHN0cmluZyDigJxFQUw6Zm9vYmFy4oCdIG5vdCBqdXN0IOKAnGZvb2Jh cuKAnSBzZWNvbmRhcnkgc3RyaW5nLg0KPj4gPj4gPj4gICAgICAgICAgICAtIElmIHdlIHdhbnQg dG8gaGF2ZSB0aGUgdHdvIHNwbGl0IEkgYW0gb2sgd2l0aCB0aGF0IGFzIHdlbGwgbWVhbmluZyB0 aGUgQVBJIHdvdWxkIGJlOg0KPj4gPj4gPj4gICAgICAgICAgICAgIHJ0ZV9tYXBfZ2V0KG1hcE9i aiwg4oCcRUFM4oCdLCDigJxmb28uYmFy4oCdKTsNCj4+ID4+ID4+ICAgICAgICAgICAgICBydGVf bWFwX3NldChtYXBPYmosIOKAnEVBTOKAnSwg4oCcZm9vLmJhcuKAnSwgdmFsdWUpOw0KPj4gPj4g Pj4gICAgICAgICAgICAtIEhhdmUgdGhlIHByaW1hcnkgYXMgYSBkaWZmZXJlbnQgc2VjdGlvbiBp biB0aGUgZGF0YSBzdG9yZSwgd291bGQgYWxsb3cgZm9yIGR1bXBpbmcgdGhhdCBzZWN0aW9uIG1h eWJlIGVhc2llciwgbm90IHN1cmUuDQo+PiA+PiA+PiAgICAgICAgICAgICAgIC0gSSBhbSBsZWFu aW5nIHRvd2FyZA0KPj4gPj4gPj4gICAgICAtIE5vdCBnb2luZyB0byB0cnkgc3BsaXR0aW5nIHVw IHRoZSBzdHJpbmcgb3IgcGFyc2UgaXQgYXMgaXQgaXMgdXAgdG8gdGhlIGRldmVsb3BlciB0byBt YWtlIGl0IHVuaXF1ZSBpbiB0aGUgZGF0YSBzdG9yZS4NCj4+ID4+ID4+IC0gVXNlIGEgY29kZSBk ZXNpZ24gdG8gbWFrZSB0aGUgc3RyaW5ncyBzaW1wbGUgdG8gdXNlIHdpdGhvdXQgaGF2aW5nIHR5 cG9zIGJlIGEgcHJvYmxlbS4NCj4+ID4+ID4+ICAgIC0gTm90IHN1cmUgd2hhdCB0aGUgZGVzaWdu IGlzIHlldCwgYnV0IEkgZG8gbm90IHdhbnQgdG8gaGF2ZSB0byBjb25jYXQgdHdvIHN0cmluZyBv ciBzcGxpdCBzdHJpbmdzIGluIHRoZSBjb2RlLg0KPj4gPj4gPj4NCj4+ID4+ID4+IFRoaXMgaXMg YXMgZmFyIGFzIEkgaGF2ZSBnb3R0ZW4gYW5kIGdvdCB0aXJlZCBvZiB0eXBpbmcg4pi6DQo+PiA+ PiA+Pg0KPj4gPj4gPj4gSSBob3BlIHRoaXMgd2lsbCBzYXRpc2Z5IG1vc3QgZXZlcnlvbmXigJlz IG5lZWRzIGZvciBub3cuDQo+PiA+PiA+Pg0KPj4gPj4gPj4NCj4+ID4+ID4+IFJlZ2FyZHMsDQo+ PiA+PiA+PiBLZWl0aA0KPj4gPj4gPj4NCj4+ID4+ID4+DQo+PiA+PiA+Pg0KPj4gPj4gPg0KPj4g Pj4NCj4+ID4+DQo+PiA+Pg0KPj4gPg0KPj4gPktlaXRoDQo+PiA+V2hhdCBhYm91dCB0aGUgZGF0 YSB0eXBlcyBvZiB0aGUgdmFsdWVzPw0KPj4gPkkgd291bGQgYXNzdW1lIHRoYXQgYXMgYSBsaWJy YXJ5IGl0IGNhbiBwcm92aWRlIHRoZSBzZXJ2aWNlIG9mIHR5cGVkIGdldC9zZXQgYW5kIG5vdCBs ZWF2ZSBjb252ZXJzaW9uIGFuZCB2YWxpZGF0aW9uIHRvIHRoZSBhcHAuDQo+PiA+DQo+PiA+cnRl X21hcF9nZXRfaW50KG1hcCxzZWN0aW9uLGtleSkNCj4+ID5ydGVfbWFwX2dldF9kb3VibGUoLi4u KQ0KPj4gPnJ0ZV9tYXBfZ2V0X3N0cmluZyguLi4pDQo+PiA+cnRlX21hcF9nZXRfYnl0ZXMoLi4u LGRlc3RCdWZmICwgZGVzdEJ1ZmZTaXplKSAvL2UuZyBieXRlIGFycmF5IG9mIFJTUyBrZXkNCj4+ ID5UaGlzIG1heSBhbHNvIGFsbG93IHNvbWUgYmFzaWMgdmFsaWRpdHkgb2YgdGhlIGNvbmZpZ3Vy YXRpb24gZmlsZQ0KPj4gPkFub3RoZXIgcG9pbnQgSSBmb3Jnb3QgYWJvdXQgaXMgZGVmYXVsdCB2 YWx1ZXMuDQo+PiA+V2Ugc29tZXRpbWVzIHVzZSBhIG5vdGF0aW9uIHdoZXJlIHRoZSBhcHAgYWxz byBzcGVjaWZpZXMgYSBkZWZhdWx0IHZhbHVlIGluIGNhc2UgdGhlIGNvbmZpZ3VyYXRpb24gZGlk IG5vdCBzcGVjaWZ5IGl0DQo+PiA+ICBydGVfbWFwX2dldF9pbnQobWFwLHNlY3Rpb24sa2V5ICwg ZGVmYXVsdFZhbHVlICkNCj4+ID5hbmQgc3BlY2lmeSBpZiB0aGlzIHdhcyBhIG1hbmRhdG9yeSB0 aGF0IGhhcyBubyBkZWZhdWx0DQo+PiA+ICBydGVfbWFwX2dldF9pbnRfY3Jhc2hfaWZfbWlzc2lu ZyAobWFwLHNlY3Rpb24sa2V5KQ0KPj4gPg0KPj4gPg0KPj4gPg0KPj4gPg0KPj4gPi9Bcm5vbg0K Pj4gPg0KPj4gPkFybm9uLA0KPj4gPg0KPj4gPlllcywgSSB0b28gd2FzIHRoaW5raW5nIGFib3V0 IGFjY2VzcyB0eXBlIEFQSXMsIGJ1dCBoYWQgbm90IGNvbWUgdG8gYSBmdWxsIGNvbmNsdXNpb24g eWV0LiBBcyBsb25nIGFzIHRoZSBBUEkgZm9yIGdldC9wdXQgY2FuIHJldHVybiBhbnkgdmFsdWUs IHdlIGNhbiBhZGQgYSBsYXllciBvbiB0b3Agb2YgdGhlc2UgcHJpbWFyeSBnZXQvcHV0IEFQSXMg dG8gZG8gc29tZSBiYXNpYyB0eXBlIGNoZWNraW5nLiBUaGlzIHdheSB0aGUgZGV2ZWxvcGVyIGNh biBhZGQgaGlzL2hlciBvd24gdHlwZSBjaGVja2luZyBBUElzIG9yIHdlIHByb3ZpZGUgYSBjb3Vw bGUgYmFzaWMgdHlwZXMgZm9yIHNpbXBsZSB2YWx1ZXMuDQo+PiANCj4+IE9uZSBtb3JlIHRoaW5n LiBJIGhhZCBub3QgdGhvdWdodCBhYm91dCBkZWZhdWx0IHZhbHVlcyBhcyB0aGUgZGVmYXVsdHMg YXJlIGhhbmRsZSBkaXJlY3RseSBieSB0aGUgY29kZSB3aGVuIGFuIG9wdGlvbiBpcyBub3QgYXBw bGllZC4gSSB0aGluayBpdCBzaG91bGQgYmUgbGVmdCB1cCB0byB0aGUgZGV2ZWxvcGVyIHRvIGFk ZCBkZWZhdWx0IHZhbHVlcyB0byB0aGUgc3RvcmFnZSBvciBoYW5kbGUgaXQgd2hlbiBhbiBvcHRp b24gaXMgbm90IGZvdW5kIGluIHRoZSBzdG9yYWdlLg0KPj4gDQo+PiBJZiBJIHVuZGVyc3RhbmQg eW91ciBjb2RlIGFib3ZlIHRoZSBBUEkgd291bGQgcGFzcyBpbiBhIGRlZmF1bHQgdmFsdWUgaWYg b25lIGRpZCBub3QgZXhpc3QgaW4gdGhlIHN0b3JhZ2UsIHdoaWNoIEkgZ3Vlc3MgaXMgcmVhc29u YWJsZS4gQW55b25lIHRoaW5rIHRoaXMgaXMgYSBnb29kIGlkZWEgb3Igbm90Pw0KPj4gDQo+DQo+ SSdtIG5vdCBvcHBvc2VkIHRvIGRlZmF1bHQgdmFsdWVzLCBidXQgaXQgc2VlbXMgdG8gbWUgdGhh dCBpZiB3ZSBhcmUgc3BsaXR0aW5nDQo+b3V0IGEgY29uZmlndXJhdGlvbiBzdG9yYWdlIGxpYnJh cnkgZnJvbSBkcGRrLCBwYXJ0IG9mIHRoZSBpbml0emxpYXRpb24gb2YgdGhhdA0KPmxpYnJhcnkg Y2FuIGJlIGluc3RhbGxpbmcgZGVmYXVsdCB2YWx1ZXMuICBUaGF0IGlzIHRvIHNheSwgaW5zdGVh ZCBvZiBoYXZpbmcgdGhlDQo+Y29kZSBzcGVjaWZpYyBhcmVhcyBhc3N1bWUgYSBkZWZhdWx0IHZh bHVlIGlmIG5vbmUgaXMgcHJlc2VudCBpbiB0aGUgY29uZmlnLCBhbg0KPmluaXQgZnVuY3Rpb24g Zm9yIHRoZSBjb25maWd1cmF0aW9uIHN0b3JhZ2UgbGlicmFyeSB3b3VsZCBqdXN0IHBvcHVsYXRl IHRoZQ0KPmtleXN0b3JlLiAgVGhhdCB3YXkgYWxsIHRoZSBkcGRrIGl0c2VsZiBoYXMgdG8gZG8g aXMgYSBrZXkgbG9va3VwLg0KDQorMQ0KDQpJZiBzb21lb25lIG5lZWRzIG9yIHdhbnRzIGRlZmF1 bHQgdmFsdWVzIGluIHRoZSBBUEkgY2FsbCB0aGVuIGEgd3JhcHBlciBmdW5jdGlvbnMgYXJvdW5k IHRoZSBiYXNpYyBrZXlzdG9yZSBBUElzIGNhbiBiZSBkb25lIGJ5IHRoZSBkZXZlbG9wZXIgb3Ig d2UgY2FuIGFkZCBhIG5ldyBzZXQgb2YgQVBJcyB0byBwcm92aWRlIHRoYXQgdHlwZSBvZiBmZWF0 dXJlLCBqdXN0IGxpa2UgdGhlIHZhcmlhYmxlIHR5cGUgQVBJcy4gSnVzdCBhcyBsb25nIGFzIHRo ZSBiYXNpYyBBUElzIGRvIG5vdCBleGNsdWRlIHdlIGNhbiBhZGQgaXQgbGF0ZXIuDQoNCj4NCj5O ZWlsDQo+DQo+PiA+DQo+PiA+RG9lcyB0aGF0IG1ha2Ugc2Vuc2U/DQo+PiA+DQo+PiA+KytLZWl0 aA0KPj4gPg0KPj4gDQo+PiANCj4+IA0KPg0KDQoNCg0K