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 79D7C3772 for ; Wed, 15 Jul 2015 12:03:17 +0200 (CEST) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP; 15 Jul 2015 03:03:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,479,1432623600"; d="scan'208,217";a="762904262" Received: from kmsmsx152.gar.corp.intel.com ([172.21.73.87]) by fmsmga002.fm.intel.com with ESMTP; 15 Jul 2015 03:03:14 -0700 Received: from kmsmsx154.gar.corp.intel.com ([169.254.12.160]) by KMSMSX152.gar.corp.intel.com ([169.254.11.67]) with mapi id 14.03.0224.002; Wed, 15 Jul 2015 18:01:48 +0800 From: "Choi, Sy Jong" To: =?utf-8?B?IlNjb3R0LkpodWFuZyAo6I6K5riF57+UKSA6IDYzMDki?= , "dev@dpdk.org" , =?utf-8?B?IlNhbmR5LkxpdSAo5YqJ6LuS6LuSKSA6IDY4MTci?= , =?utf-8?B?IkFsYW4gWXUgKOS/nuS6puWBiSkgOiA2NjMyIg==?= Thread-Topic: [dpdk-dev] How to get net_device and use struct ethtool_cmd at DPDK enverinment? Thread-Index: AQHQp1cQ9UcItmMt1Uay1Etrk44wmZ2usWaggADQcoCAAIZ+EIABIEOAgAH4K4CABnpLAIAMIsUAgACZ0DCAFZwEAIAAhpoA Date: Wed, 15 Jul 2015 10:01:47 +0000 Message-ID: <697F8B1B48670548A5BAB03E8283550F3545A94C@KMSMSX154.gar.corp.intel.com> References: <557EAA67.6090702@cas-well.com> <697F8B1B48670548A5BAB03E8283550F354483D8@PGSMSX108.gar.corp.intel.com> <5580E567.3020204@cas-well.com> <697F8B1B48670548A5BAB03E8283550F35448689@PGSMSX108.gar.corp.intel.com> <55824809.9090804@cas-well.com> <697F8B1B48670548A5BAB03E8283550F35448F93@PGSMSX108.gar.corp.intel.com> <55895E0A.50107@cas-well.com> <55938C30.6040703@cas-well.com> <697F8B1B48670548A5BAB03E8283550F3544C9A4@PGSMSX108.gar.corp.intel.com> <55A62DCE.6090503@cas-well.com> In-Reply-To: <55A62DCE.6090503@cas-well.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.30.20.206] MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] How to get net_device and use struct ethtool_cmd at DPDK enverinment? 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: Wed, 15 Jul 2015 10:03:18 -0000 SGkgU2NvdHQsDQoNCllvdSB3aWxsIG5lZWQgdG8gc3RhcnQgS05JIHNhbXBsZSBhcHAsIGl0IHdp bGwgY3JlYXRlIHRoZSB2RXRoIGludGVyZmFjZS4gQWZ0ZXIga25pIGFwcCwgaXQgd2lsbCBiZSB0 aGVyZSwga25pIGFwcCBpcyB0aGUgZGF0YXBhdGgsIGl0IGdldCB0aGUgcGFja2V0IGludG8gdGhl IGtlcm5lbC4NCg0KaHR0cDovL2RwZGsub3JnL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9rZXJuZWxf bmljX2ludGVyZmFjZS5odG1sDQoNCg0KICAxLiAgSW5zZXJ0IHRoZSBLTkkga2VybmVsIG1vZHVs ZToNCjIuICBpbnNtb2QgLi9ydGVfa25pLmtvDQpJZiB1c2luZyBLTkkgaW4gbXVsdGktdGhyZWFk IG1vZGUsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgbGluZToNCmluc21vZCAuL3J0ZV9rbmku a28ga3RocmVhZF9tb2RlPW11bHRpcGxlDQoNCiAgMS4gIFJ1bm5pbmcgdGhlIEtOSSBzYW1wbGUg YXBwbGljYXRpb246DQo0LiAgLi9rbmkgLWMgLTB4ZjAgLW4gNCAtLSAtcCAweDMgLVAgLWNvbmZp Zz0iKDAsNCw2KSwoMSw1LDcpIg0KVGhpcyBjb21tYW5kIHJ1bnMgdGhlIGtuaSBzYW1wbGUgYXBw bGljYXRpb24gd2l0aCB0d28gcGh5c2ljYWwgcG9ydHMuIEVhY2ggcG9ydCBwaW5zIHR3byBmb3J3 YXJkaW5nIGNvcmVzIChpbmdyZXNzL2VncmVzcykgaW4gdXNlciBzcGFjZS4NCg0KDQpSZWdhcmRz LA0KQ2hvaSwgU3kgSm9uZw0KUGxhdGZvcm0gQXBwbGljYXRpb24gRW5naW5lZXINCg0KRnJvbTog IlNjb3R0LkpodWFuZyAo6I6K5riF57+UKSA6IDYzMDkiIFttYWlsdG86U2NvdHQuSmh1YW5nQGNh cy13ZWxsLmNvbV0NClNlbnQ6IFdlZG5lc2RheSwgSnVseSAxNSwgMjAxNSA1OjU0IFBNDQpUbzog Q2hvaSwgU3kgSm9uZzsgZGV2QGRwZGsub3JnOyAiU2FuZHkuTGl1ICjlionou5Lou5IpIDogNjgx NyI7ICJBbGFuIFl1ICjkv57kuqblgYkpIDogNjYzMiINClN1YmplY3Q6IFJlOiBbZHBkay1kZXZd IEhvdyB0byBnZXQgbmV0X2RldmljZSBhbmQgdXNlIHN0cnVjdCBldGh0b29sX2NtZCBhdCBEUERL IGVudmVyaW5tZW50Pw0KDQpIaSBTeSBKb25nLA0KDQpJZiBJIGxvYWQgInJ0ZV9rbmkua28iIGRy aXZlciwgdGhlIG5ldF9kZXZpY2Ugc3RydWN0cyB3aWxsIGJlIGluaXRpYWxsZWQgYnkgS05JLCBy aWdodD8NCklmIHllcywgaG93IGNhbiBJIGhhbmRsZSB0aGVzZSBuZXRfZGV2aWNlIHN0cnVjdHMg aW4gb3RoZXIgZHJpdmVyLA0KYmVjYXVzZSBJIHVzaW5nICJmb3JfZWFjaF9uZXRkZXYoKSIga2Vy bmVsIEFQSSBjYW4ndCBmaW5kIHRoZSBuZXRfZGV2aWNlIHN0cnVjdHMgd2hpY2ggS05JIGluaXRp YWxsZWQuDQpPciB0aGVzZSBzdHJ1Y3RzIGhhdmUgbm90IGJlZW4gZXhwb3J0ZWQgdG8ga2VybmVs Pw0KDQpDaG9pLCBTeSBKb25nIOaWvCAyMDE15bm0MDfmnIgwMeaXpSAxNTo1NSDlr6vpgZM6DQpI aSBTY290dCwNCg0KUGxlYXNlIHJlZmVyIHRvIG91ciBLTkkgbGlicmFyeSBhdDotDQpkcGRrLTEu OC4wXGxpYlxsaWJydGVfZWFsXGxpbnV4YXBwXGtuaVxldGh0b29sXGlnYlxpZ2IuaA0KDQpSZWdh cmRzLA0KQ2hvaSwgU3kgSm9uZw0KUGxhdGZvcm0gQXBwbGljYXRpb24gRW5naW5lZXINCg0KRnJv bTogIlNjb3R0LkpodWFuZyAo6I6K5riFIOe/lCkgOiA2MzA5IiBbbWFpbHRvOlNjb3R0LkpodWFu Z0BjYXMtd2VsbC5jb21dDQpTZW50OiBXZWRuZXNkYXksIEp1bHkgMDEsIDIwMTUgMjo0NCBQTQ0K VG86IENob2ksIFN5IEpvbmc7IGRldkBkcGRrLm9yZzxtYWlsdG86ZGV2QGRwZGsub3JnPg0KU3Vi amVjdDogUmU6IFtkcGRrLWRldl0gSG93IHRvIGdldCBuZXRfZGV2aWNlIGFuZCB1c2Ugc3RydWN0 IGV0aHRvb2xfY21kIGF0IERQREsgZW52ZXJpbm1lbnQ/DQoNCkhpIFN5IEpvbmcsDQoNCkhhdmUg YW55IGlkZWE/DQoNCiJTY290dC5KaHVhbmcgKOiOiiDmuIXnv5QpIDogNjMwOSIg5pa8IDIwMTXl ubQwNuaciDIz5pelIDIxOjI0IOWvq+mBkzoNCkRlYXIgU3kgSm9uZywNCg0KWWVzLCBJIGhhdmUg Y2hlY2sgb3V0IERQREsgS05JLCBidXQgSSBzdGlsbCBjYW4ndCBmaW5kIGhvdyB0byBwcmVwYXJl IG5ldF9kZXZpY2Ugc3RydWN0dXJlLi4uDQpBbmQgSSBhbHNvIGRvZXNuJ3QgZmluZCBob3cgdG8g Z2V0ICJldGh0b29sX2NtZC5waHlfYWRkcmVzcyINCkNvdWxkIHlvdSBsZXQgbWUga25vdyB0aGUg cGF0aCBvZiBzb3VyY2UgY29kZSBmb2xkZXINCg0KQ2hvaSwgU3kgSm9uZyDmlrwgMjAxNeW5tDA2 5pyIMTnml6UgMTA6MzUg5a+r6YGTOg0KSGkgU2NvdHQsDQoNCkRQREsgUE1EIGFyZSBpbnRlcmZh Y2luZyB1c2luZyBydGVfZXRoZGV2LmMgd2hpY2ggbGluayB0byBpeGdiZV9ldGhkZXYuYyB0aGVy ZeKAmXMgbm8g4oCcbmV0X2RldmljZeKAnSBpbiBvdXIgY29kZS4NCg0KQnV0IGlmIHlvdSBzZWFy Y2ggRFBEayBjb2RlIGJhc2VkLCB3ZSBoYXZlIEtOSSBleGFtcGxlIHRvIHRlYWNoIHlvdSBob3cg dG8gcHJlcGFyZSB0aGUgbmV0X2RldmljZSBzdHJ1Y3R1cmUuDQpIYXZlIHlvdSBjaGVjayBvdXQg b3VyIERQREsgS05JIGNvZGVzPw0KDQpSZWdhcmRzLA0KQ2hvaSwgU3kgSm9uZw0KUGxhdGZvcm0g QXBwbGljYXRpb24gRW5naW5lZXINCg0KRnJvbTogIlNjb3R0LkpodWFuZyAo6I6KIOa4hSDnv5Qp IDogNjMwOSIgW21haWx0bzpTY290dC5KaHVhbmdAY2FzLXdlbGwuY29tXQ0KU2VudDogVGh1cnNk YXksIEp1bmUgMTgsIDIwMTUgMTI6MjUgUE0NClRvOiBDaG9pLCBTeSBKb25nOyBkZXZAZHBkay5v cmc8bWFpbHRvOmRldkBkcGRrLm9yZz4NClN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIEhvdyB0byBn ZXQgbmV0X2RldmljZSBhbmQgdXNlIHN0cnVjdCBldGh0b29sX2NtZCBhdCBEUERLIGVudmVyaW5t ZW50Pw0KDQpEZWFyIFN5IEpvbmcsDQoNCkknbSBwbGFubmluZyB0byBwcm9ncmFtIGEgZHJpdmVy IHRvIGdldCBhbGwgdGhlIGV0aHBvcnQncyBuZXRfZGV2aWNlIHN0cnVjdHVyZSwgYmVjYXVzZSBJ IG5lZWQgc29tZSBpbmZvcm1hdGlvbiBmcm9tIHRoZXNlIG5ldF9kZXZpY2Ugc3RydWN0dXJlcy4N CkFuZCBJIGFsc28gbmVlZCB0byB1c2UgbmV0X2RldmljZSBzdHJ1Y3QncyBldGh0b29sX2NtZCB0 byBnZXQgc29tZSBpbmZvcm1hdGlvbiBlLmcuIGV0aHRvb2xfY21kLnBoeV9hZGRyZXNzLCBuZXRf ZGV2aWNlLT5ldGh0b29sX29wcy0+Z2V0X3NldHRpbmdzLg0KDQpJbiBmYWN0LCBJIG5lZWQgc29t ZSBpbmZvcm1hdGlvbiBmcm9tIG5ldF9kZXZpY2Ugc3RydWN0IHRvIGFjY2VzcyBhbmQgY29udHJv bCBQSFkncyBsaW5rLXVwL2Rvd24sDQphbmQgSSByZWZlcmVuY2UgaWdiIGRyaXZlciB0byBkZXNp Z24gdGhlIGxpbmstdXAvZG93biBmdW5jdGlvbnMsIHNpbmNlIGluIERQREsgZW52aXJlbm1lbnQg ZG9lc24ndCBoYXZlIGlnYiBkcml2ZXIsDQpzbyBJbiBEUERLIGVudmlyZW5tZW50LCBJIGRvbid0 IGtub3cgaG93IHRvIGdldCBuZXR3b3JrIGRlaXZjZSdzIG5ldF9kZXZpY2Ugc3RydWN0cyBhbmQg bW9yZSBpbmZvcm1hdGlvbiB3aGljaCBpbml0aWFsIGJ5IGlnYiBkcml2ZXIoYmVjYXVzZSBkb2Vz bid0IGhhdmUgaWdiIGRyaXZlcikuDQoNCkNob2ksIFN5IEpvbmcg5pa8IDIwMTXlubQwNuaciDE3 5pelIDExOjE1IOWvq+mBkzoNCkhpIFNjb3R0LA0KDQpZb3UgYXJlIHJpZ2h0LCB0aGUgS05JIHdp bGwgYmUgYSBnb29kIHJlZmVyZW5jZSBmb3IgeW91LiBJdCBkZW1vbnN0cmF0ZSBob3cgRFBESyBQ TUQgaW50ZXJmYWNlIHdpdGgga2VybmVsLg0KTWF5IEkga25vdyBhcmUgeW91IHBsYW5uaW5nIHRv IGJ1aWxkIHRoZSBpbnRlcmZhY2UgdG8gZXRodG9vbD8gWW91IGNhbiB0cnkgcnVubmluZyBLTkkg YXBwLg0KDQpSZWdhcmRzLA0KQ2hvaSwgU3kgSm9uZw0KUGxhdGZvcm0gQXBwbGljYXRpb24gRW5n aW5lZXINCg0KRnJvbTogIlNjb3R0LkpodWFuZyAo6I6K5riFIOe/lCkgOiA2MzA5IiBbbWFpbHRv OlNjb3R0LkpodWFuZ0BjYXMtd2VsbC5jb21dDQpTZW50OiBXZWRuZXNkYXksIEp1bmUgMTcsIDIw MTUgMTE6MTIgQU0NClRvOiBDaG9pLCBTeSBKb25nOyBkZXZAZHBkay5vcmc8bWFpbHRvOmRldkBk cGRrLm9yZz4NClN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIEhvdyB0byBnZXQgbmV0X2RldmljZSBh bmQgdXNlIHN0cnVjdCBldGh0b29sX2NtZCBhdCBEUERLIGVudmVyaW5tZW50Pw0KDQpIaSBTeSBK b25nLA0KDQpCdXQuLi5JIGFtIHByb2dyYW1taW5nIGEgZHJpdmVyIG5vdywgaGF2ZSBhbnkgc2Ft cGxlIGRyaXZlciBJIGNhbiByZWZlcmVuY2U/DQoNCkNob2ksIFN5IEpvbmcg5pa8IDIwMTXlubQw NuaciDE25pelIDE0OjQ4IOWvq+mBkzoNCg0KSGkgU2NvdHQsDQoNCg0KDQpZb3UgY2FuIHJldmll dyBEUERLIEtOSSBzYW1wbGUgYXBwLCB0aGVyZSdzIGV0aHRvb2wgc3VwcG9ydCB1c2luZyBhIHZF dGggZGV2aWNlIGludGVyZmFjaW5nIHRvIERQREsgUE1ELg0KDQoNCg0KUHVyZSBEUERLIFBNRCBy ZXF1aXJlIHByb2dyYW1taW5nIHRvIGRpc3BsYXkgdGhlIGluZm9ybWF0aW9uIGluIGV0aHRvb2wu IFRoZSBpbnRlcmZhY2luZyBpcyBkZW1vbnN0cmF0ZSBvbiBLTkkgc2FtcGxlIGFwcC4NCg0KDQoN ClJlZ2FyZHMsDQoNCkNob2ksIFN5IEpvbmcNCg0KUGxhdGZvcm0gQXBwbGljYXRpb24gRW5naW5l ZXINCg0KDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQoNCkZyb206IGRldiBbbWFpbHRv OmRldi1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgIlNjb3R0LkpodWFuZyAoPz8/KSA6 IDYzMDkiDQoNClNlbnQ6IE1vbmRheSwgSnVuZSAxNSwgMjAxNSA2OjM1IFBNDQoNClRvOiBkZXZA ZHBkay5vcmc8bWFpbHRvOmRldkBkcGRrLm9yZz4NCg0KU3ViamVjdDogW2RwZGstZGV2XSBIb3cg dG8gZ2V0IG5ldF9kZXZpY2UgYW5kIHVzZSBzdHJ1Y3QgZXRodG9vbF9jbWQgYXQgRFBESyBlbnZl cmlubWVudD8NCg0KDQoNCkhpLA0KDQoNCg0KSSB3YW50IHRvIGdldCBldGhlcnBvcnQncyBuZXRf ZGV2aWNlIHN0cnVjdHMgYW5kIHVzaW5nIGV0aHRvb2xfY21kIHRvIGdldCBzb21lIGluZm9ybWF0 aW9uIG9mIGV0aGVycG9ydHMuDQoNCkFyZSB0aGVzZSBjYXBhYmlsaXR5cyBpZ2JfdWlvIGRyaXZl ciBhbHNvIHByb3ZpZGVkPw0KDQoNCg0KSWYgbm90LCBob3cgY2FuIEkgZ2V0IG5ldF9kZXZpY2Vz IGFuZCB1c2UgZXRodG9vbF9jbWQgY2FwYWJpbGl0eXM/DQoNCg0KDQotLQ0KDQoNCg0KQmVzdCBS ZWdhcmRzLA0KDQpTY290dCBKaHVhbmcNCg0KDQoNClNvZnR3YXJlIEVuZ2luZWVyaW5nIERlcHQu DQoNClNvZnR3YXJlIEVuZ2luZWVyDQoNCkNBU3dlbGwNCg0KMjM4IOaWsOWMl+W4guaoueael+WN gOWNmuaEm+ihlzI0MuiZnzjmqJMNCg0KOEYsIE5vLjI0MiwgQm8tQWkgU3QuLCBTaHUtTGluIERp c3QsIE5ldyBUYWlwZWkgQ2l0eSAyMzgsIFRhaXdhbg0KDQpUZWzvvJorODg2LTItNzcwNS04ODg4 ICMgNjMwOQ0KDQpGYXjvvJorODg2LTItNzczMS05OTg4DQoNCkUtbWFpbO+8mnNjb3R0LmpodWFu Z0BjYXMtd2VsbC5jb208bWFpbHRvOnNjb3R0LmpodWFuZ0BjYXMtd2VsbC5jb20+PG1haWx0bzpz Y290dC5qaHVhbmdAY2FzLXdlbGwuY29tPjxtYWlsdG86c2NvdHQuamh1YW5nQGNhcy13ZWxsLmNv bT4NCg0KQ0FTV0VMTCBJbmMuIOeRnueluumbu+mAmiBodHRwOi8vd3d3LmNhcy13ZWxsLmNvbQ0K DQoNCg0KDQoNCuacrOS/oeS7tuWPr+iDveWMheWQq+eRnueluumbu+mAmuapn+Wvhuizh+ioiu+8 jOmdnuaMh+WumuS5i+aUtuS7tuiAhe+8jOiri+WLv+S9v+eUqOaIluaPremcsuacrOS/oeS7tuWF p+Wuue+8jOS4puiri+mKt+avgOatpOS/oeS7tuOAgiBUaGlzIGVtYWlsIG1heSBjb250YWluIGNv bmZpZGVudGlhbCBpbmZvcm1hdGlvbi4gUGxlYXNlIGRvIG5vdCB1c2Ugb3IgZGlzY2xvc2UgaXQg aW4gYW55IHdheSBhbmQgZGVsZXRlIGl0IGlmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNp cGllbnQuDQoNCi0tDQoNCkJlc3QgUmVnYXJkcywNCg0KU2NvdHQgSmh1YW5nDQoNCg0KDQpTb2Z0 d2FyZSBFbmdpbmVlcmluZyBEZXB0Lg0KDQpTb2Z0d2FyZSBFbmdpbmVlcg0KDQpDQVN3ZWxsDQoN CjIzOCDmlrDljJfluILmqLnmnpfljYDljZrmhJvooZcyNDLomZ845qiTDQoNCjhGLCBOby4yNDIs IEJvLUFpIFN0LiwgU2h1LUxpbiBEaXN0LCBOZXcgVGFpcGVpIENpdHkgMjM4LCBUYWl3YW4NCg0K VGVs77yaKzg4Ni0yLTc3MDUtODg4OCAjIDYzMDkNCg0KRmF477yaKzg4Ni0yLTc3MzEtOTk4OA0K DQpFLW1haWzvvJpzY290dC5qaHVhbmdAY2FzLXdlbGwuY29tPG1haWx0bzpzY290dC5qaHVhbmdA Y2FzLXdlbGwuY29tPg0KDQpDQVNXRUxMIEluYy4g55Ge56W66Zu76YCaIGh0dHA6Ly93d3cuY2Fz LXdlbGwuY29tDQrmnKzkv6Hku7blj6/og73ljIXlkKvnkZ7npbrpm7vpgJrmqZ/lr4bos4foqIrv vIzpnZ7mjIflrprkuYvmlLbku7bogIXvvIzoq4vli7/kvb/nlKjmiJbmj63pnLLmnKzkv6Hku7bl haflrrnvvIzkuKboq4vpirfmr4Ag5q2k5L+hIOS7tuOAgiBUaGlzIGVtYWlsIG1heSBjb250YWlu IGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvbi4gUGxlYXNlIGRvIG5vdCB1c2Ugb3IgZGlzY2xvc2Ug aXQgaW4gYW55IHdheSBhbmQgZGVsZXRlIGl0IGlmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCBy ZWNpcGllbnQuDQoNCi0tDQoNCkJlc3QgUmVnYXJkcywNCg0KU2NvdHQgSmh1YW5nDQoNCg0KDQpT b2Z0d2FyZSBFbmdpbmVlcmluZyBEZXB0Lg0KDQpTb2Z0d2FyZSBFbmdpbmVlcg0KDQpDQVN3ZWxs DQoNCjIzOCDmlrDljJfluILmqLnmnpfljYDljZrmhJvooZcyNDLomZ845qiTDQoNCjhGLCBOby4y NDIsIEJvLUFpIFN0LiwgU2h1LUxpbiBEaXN0LCBOZXcgVGFpcGVpIENpdHkgMjM4LCBUYWl3YW4N Cg0KVGVs77yaKzg4Ni0yLTc3MDUtODg4OCAjIDYzMDkNCg0KRmF477yaKzg4Ni0yLTc3MzEtOTk4 OA0KDQpFLW1haWzvvJpzY290dC5qaHVhbmdAY2FzLXdlbGwuY29tPG1haWx0bzpzY290dC5qaHVh bmdAY2FzLXdlbGwuY29tPg0KDQpDQVNXRUxMIEluYy4g55Ge56W66Zu76YCaIGh0dHA6Ly93d3cu Y2FzLXdlbGwuY29tDQrmnKzkv6Hku7blj6/og73ljIXlkKvnkZ7npbrpm7vpgJrmqZ/lr4bos4fo qIrvvIzpnZ7mjIflrprkuYvmlLbku7bogIXvvIzoq4vli7/kvb/nlKjmiJbmj63pnLLmnKzkv6Hk u7blhaflrrnvvIzkuKboq4vpirfmr4DmraTkv6Eg5Lu244CCIFRoaXMgZW1haWwgbWF5IGNvbnRh aW4gY29uZmlkZW50aWFsIGluZm9ybWF0aW9uLiBQbGVhc2UgZG8gbm90IHVzZSBvciBkaXNjbG9z ZSBpdCBpbiBhbnkgd2F5IGFuZCBkZWxldGUgaXQgaWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVk IHJlY2lwaWVudC4NCg0KLS0NCg0KQmVzdCBSZWdhcmRzLA0KDQpTY290dCBKaHVhbmcNCg0KDQoN ClNvZnR3YXJlIEVuZ2luZWVyaW5nIERlcHQuDQoNClNvZnR3YXJlIEVuZ2luZWVyDQoNCkNBU3dl bGwNCg0KMjM4IOaWsOWMl+W4guaoueael+WNgOWNmuaEm+ihlzI0MuiZnzjmqJMNCg0KOEYsIE5v LjI0MiwgQm8tQWkgU3QuLCBTaHUtTGluIERpc3QsIE5ldyBUYWlwZWkgQ2l0eSAyMzgsIFRhaXdh bg0KDQpUZWzvvJorODg2LTItNzcwNS04ODg4ICMgNjMwOQ0KDQpGYXjvvJorODg2LTItNzczMS05 OTg4DQoNCkUtbWFpbO+8mnNjb3R0LmpodWFuZ0BjYXMtd2VsbC5jb208bWFpbHRvOnNjb3R0Lmpo dWFuZ0BjYXMtd2VsbC5jb20+DQoNCkNBU1dFTEwgSW5jLiDnkZ7npbrpm7vpgJogaHR0cDovL3d3 dy5jYXMtd2VsbC5jb20NCg0KLS0NCg0KQmVzdCBSZWdhcmRzLA0KDQpTY290dCBKaHVhbmcNCg0K DQoNClNvZnR3YXJlIEVuZ2luZWVyaW5nIERlcHQuDQoNClNvZnR3YXJlIEVuZ2luZWVyDQoNCkNB U3dlbGwNCg0KMjM4IOaWsOWMl+W4guaoueael+WNgOWNmuaEm+ihlzI0MuiZnzjmqJMNCg0KOEYs IE5vLjI0MiwgQm8tQWkgU3QuLCBTaHUtTGluIERpc3QsIE5ldyBUYWlwZWkgQ2l0eSAyMzgsIFRh aXdhbg0KDQpUZWzvvJorODg2LTItNzcwNS04ODg4ICMgNjMwOQ0KDQpGYXjvvJorODg2LTItNzcz MS05OTg4DQoNCkUtbWFpbO+8mnNjb3R0LmpodWFuZ0BjYXMtd2VsbC5jb208bWFpbHRvOnNjb3R0 LmpodWFuZ0BjYXMtd2VsbC5jb20+DQoNCkNBU1dFTEwgSW5jLiDnkZ7npbrpm7vpgJogaHR0cDov L3d3dy5jYXMtd2VsbC5jb20NCuacrOS/oeS7tuWPr+iDveWMheWQq+eRnueluumbu+mAmuapn+Wv huizh+ioiu+8jOmdnuaMh+WumuS5i+aUtuS7tuiAhe+8jOiri+WLv+S9v+eUqOaIluaPremcsuac rOS/oeS7tuWFp+Wuue+8jOS4puiri+mKt+avgOatpOS/oeS7tuOAgiBUaGlzIGVtYWlsIG1heSBj b250YWluIGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvbi4gUGxlYXNlIGRvIG5vdCB1c2Ugb3IgZGlz Y2xvc2UgaXQgaW4gYW55IHdheSBhbmQgZGVsZXRlIGl0IGlmIHlvdSBhcmUgbm90IHRoZSBpbnRl bmRlZCByZWNpcGllbnQuDQoNCi0tDQoNCkJlc3QgUmVnYXJkcywNCg0KU2NvdHQgSmh1YW5nDQoN Cg0KDQpTb2Z0d2FyZSBFbmdpbmVlcmluZyBEZXB0Lg0KDQpTb2Z0d2FyZSBFbmdpbmVlcg0KDQpD QVN3ZWxsDQoNCjIzOCDmlrDljJfluILmqLnmnpfljYDljZrmhJvooZcyNDLomZ845qiTDQoNCjhG LCBOby4yNDIsIEJvLUFpIFN0LiwgU2h1LUxpbiBEaXN0LCBOZXcgVGFpcGVpIENpdHkgMjM4LCBU YWl3YW4NCg0KVGVs77yaKzg4Ni0yLTc3MDUtODg4OCAjIDYzMDkNCg0KRmF477yaKzg4Ni0yLTc3 MzEtOTk4OA0KDQpFLW1haWzvvJpzY290dC5qaHVhbmdAY2FzLXdlbGwuY29tPG1haWx0bzpzY290 dC5qaHVhbmdAY2FzLXdlbGwuY29tPg0KDQpDQVNXRUxMIEluYy4g55Ge56W66Zu76YCaIGh0dHA6 Ly93d3cuY2FzLXdlbGwuY29tDQrmnKzkv6Hku7blj6/og73ljIXlkKvnkZ7npbrpm7vpgJrmqZ/l r4bos4foqIrvvIzpnZ7mjIflrprkuYvmlLbku7bogIXvvIzoq4vli7/kvb/nlKjmiJbmj63pnLLm nKzkv6Hku7blhaflrrnvvIzkuKboq4vpirfmr4DmraTkv6Hku7bjgIIgVGhpcyBlbWFpbCBtYXkg Y29udGFpbiBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24uIFBsZWFzZSBkbyBub3QgdXNlIG9yIGRp c2Nsb3NlIGl0IGluIGFueSB3YXkgYW5kIGRlbGV0ZSBpdCBpZiB5b3UgYXJlIG5vdCB0aGUgaW50 ZW5kZWQgcmVjaXBpZW50Lg0K