From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id C257095C9 for ; Thu, 7 Jan 2016 11:25:37 +0100 (CET) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP; 07 Jan 2016 02:24:40 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,532,1444719600"; d="scan'208";a="721944765" Received: from irsmsx153.ger.corp.intel.com ([163.33.192.75]) by orsmga003.jf.intel.com with ESMTP; 07 Jan 2016 02:24:26 -0800 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.104]) by IRSMSX153.ger.corp.intel.com ([169.254.9.170]) with mapi id 14.03.0248.002; Thu, 7 Jan 2016 10:24:19 +0000 From: "Ananyev, Konstantin" To: Adrien Mazarguil Thread-Topic: [dpdk-dev] [PATCH 01/12] ethdev: add API to query what/if packet type is set Thread-Index: AQHRQ9KoIugEgpKcLkGtpAxtk9NTop7rQSUAgAAxMWCAAa5MgIAABAAggAEl+oCAAEBwAIAAH5sAgAAH//CAABNuAIABGg4Q Date: Thu, 7 Jan 2016 10:24:19 +0000 Message-ID: <2601191342CEEE43887BDE71AB97725836AE2F5B@irsmsx105.ger.corp.intel.com> References: <1451544799-70776-1-git-send-email-jianfeng.tan@intel.com> <1451544799-70776-2-git-send-email-jianfeng.tan@intel.com> <20160104113814.GT3806@6wind.com> <2601191342CEEE43887BDE71AB97725836AE1002@irsmsx105.ger.corp.intel.com> <20160105161423.GE4712@autoinstall.dev.6wind.com> <2601191342CEEE43887BDE71AB97725836AE18E3@irsmsx105.ger.corp.intel.com> <20160106100053.GJ12095@6wind.com> <2601191342CEEE43887BDE71AB97725836AE1B46@irsmsx105.ger.corp.intel.com> <20160106154438.GP12095@6wind.com> <2601191342CEEE43887BDE71AB97725836AE2DBC@irsmsx105.ger.corp.intel.com> <20160106172248.GT12095@6wind.com> In-Reply-To: <20160106172248.GT12095@6wind.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH 01/12] ethdev: add API to query what/if packet type is set 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: Thu, 07 Jan 2016 10:25:38 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQWRyaWVuIE1hemFyZ3Vp bCBbbWFpbHRvOmFkcmllbi5tYXphcmd1aWxANndpbmQuY29tXQ0KPiBTZW50OiBXZWRuZXNkYXks IEphbnVhcnkgMDYsIDIwMTYgNToyMyBQTQ0KPiBUbzogQW5hbnlldiwgS29uc3RhbnRpbg0KPiBD YzogTsOpbGlvIExhcmFuamVpcm87IFRhbiwgSmlhbmZlbmc7IGRldkBkcGRrLm9yZw0KPiBTdWJq ZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggMDEvMTJdIGV0aGRldjogYWRkIEFQSSB0byBxdWVy eSB3aGF0L2lmIHBhY2tldCB0eXBlIGlzIHNldA0KPiANCj4gT24gV2VkLCBKYW4gMDYsIDIwMTYg YXQgMDQ6NDQ6NDNQTSArMDAwMCwgQW5hbnlldiwgS29uc3RhbnRpbiB3cm90ZToNCj4gPg0KPiA+ DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogQWRyaWVuIE1h emFyZ3VpbCBbbWFpbHRvOmFkcmllbi5tYXphcmd1aWxANndpbmQuY29tXQ0KPiA+ID4gU2VudDog V2VkbmVzZGF5LCBKYW51YXJ5IDA2LCAyMDE2IDM6NDUgUE0NCj4gPiA+IFRvOiBBbmFueWV2LCBL b25zdGFudGluDQo+ID4gPiBDYzogTsOpbGlvIExhcmFuamVpcm87IFRhbiwgSmlhbmZlbmc7IGRl dkBkcGRrLm9yZw0KPiA+ID4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIDAxLzEyXSBl dGhkZXY6IGFkZCBBUEkgdG8gcXVlcnkgd2hhdC9pZiBwYWNrZXQgdHlwZSBpcyBzZXQNCj4gPiA+ DQo+ID4gPiBPbiBXZWQsIEphbiAwNiwgMjAxNiBhdCAwMjoyOTowN1BNICswMDAwLCBBbmFueWV2 LCBLb25zdGFudGluIHdyb3RlOg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gRnJvbTogQWRyaWVuIE1hemFyZ3VpbCBbbWFp bHRvOmFkcmllbi5tYXphcmd1aWxANndpbmQuY29tXQ0KPiA+ID4gPiA+IFNlbnQ6IFdlZG5lc2Rh eSwgSmFudWFyeSAwNiwgMjAxNiAxMDowMSBBTQ0KPiA+ID4gPiA+IFRvOiBBbmFueWV2LCBLb25z dGFudGluDQo+ID4gPiA+ID4gQ2M6IE7DqWxpbyBMYXJhbmplaXJvOyBUYW4sIEppYW5mZW5nOyBk ZXZAZHBkay5vcmcNCj4gPiA+ID4gPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggMDEv MTJdIGV0aGRldjogYWRkIEFQSSB0byBxdWVyeSB3aGF0L2lmIHBhY2tldCB0eXBlIGlzIHNldA0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gT24gVHVlLCBKYW4gMDUsIDIwMTYgYXQgMDQ6NTA6MzFQTSAr MDAwMCwgQW5hbnlldiwgS29uc3RhbnRpbiB3cm90ZToNCj4gPiA+ID4gPiBbLi4uXQ0KPiA+ID4g PiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ID4gPiBGcm9tOiBO w6lsaW8gTGFyYW5qZWlybyBbbWFpbHRvOm5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tXQ0KPiA+ ID4gPiA+IFsuLi5dDQo+ID4gPiA+ID4gPiA+IEkgdGhpbmsgd2UgbWlzcyBhIGNvbW1lbnQgaGVy ZSBpbiBob3cgdGhvc2UgMi82LzQgdmFsdWVzIGFyZSBjaG9zZW4NCj4gPiA+ID4gPiA+ID4gYmVj YXVzZSwgYWNjb3JkaW5nIHRvIHRoZSBtYXNrLCBJIGV4cGVjdCAxNiBwb3NzaWJpbGl0aWVzIGJ1 dCBJIGdldA0KPiA+ID4gPiA+ID4gPiBsZXNzLiAgSXQgd2lsbCBoZWxwIGEgbG90IGFueW9uZSB3 aG8gbmVlZHMgdG8gYWRkIGEgbmV3IHR5cGUuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ IEV4dGVuZGluZyB0aGUgc25wcmludGYgYmVoYXZpb3IgYWJvdmUsIGl0IGlzIGJlc3QgdG8gcmVt b3ZlIHRoZSBtYXNrDQo+ID4gPiA+ID4gPiA+IGFyZ3VtZW50IGFsdG9nZXRoZXIgYW5kIGhhdmUg cnRlX2V0aF9kZXZfZ2V0X3B0eXBlX2luZm8oKSByZXR1cm4gdGhlDQo+ID4gPiA+ID4gPiA+IGVu dGlyZSBsaXN0IGV2ZXJ5IHRpbWUuICBBcHBsaWNhdGlvbnMgbmVlZCB0byBpdGVyYXRlIG9uIHRo ZSByZXN1bHQgaW4NCj4gPiA+ID4gPiA+ID4gYW55IGNhc2UuDQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gSSB0aGluayB3ZSdkIGJldHRlciBrZWVwIG1hc2sgYXJndW1lbnQuDQo+ID4gPiA+ID4g PiBJbiBtYW55IGNhc2VzIHVwcGVyIGxheWVyIG9ubHkgaW50ZXJlc3RlZCBpbiBzb21lIHBhcnRp Y3VsYXIgIHN1YnNldCBvZg0KPiA+ID4gPiA+ID4gYWxsIHBhY2tldCB0eXBlcyB0aGF0IEhXIGNh biByZWNvZ25pc2UuDQo+ID4gPiA+ID4gPiBMZXQgc2F5IGwzZndkIG9ubHkgY2FyZXMgYWJvdXQg IFJURV9QVFlQRV9MM19NQVNLLCBpdCBpcyBub3QgaW50ZXJlc3RlZCBpbiBMNCwNCj4gPiA+ID4g PiA+IHR1bm5lbGxpbmcgcGFja2V0IHR5cGVzLCBldGMuDQo+ID4gPiA+ID4gPiBJZiBjYWxsZXIg bmVlZHMgdG8ga25vdyBhbGwgcmVjb2duaXNlZCBwdHlwZXMsIGhlIGNhbiBzZXQgbWFzaz09LTEs DQo+ID4gPiA+ID4gPiBJbiB0aGF0IGNhc2UgYWxsIHN1cHBvcnRlZCBwYWNrZXQgdHlwZXMgd2ls bCBiZSByZXR1cm5lZC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoZXJlIGFyZSBvdGhlciBkcmF3 YmFja3MgdG8gdGhlIG1hc2sgYXJndW1lbnQgaW4gbXkgb3Bpbmlvbi4gVGhlIEFQSSB3aWxsDQo+ ID4gPiA+ID4gaGF2ZSB0byBiZSB1cGRhdGVkIGFnYWluIGFzIHNvb24gYXMgMzIgYml0cyBhcmVu J3QgZW5vdWdoIHRvIHJlcHJlc2VudCBhbGwNCj4gPiA+ID4gPiBwb3NzaWJsZSBtYXNrcy4gV2Ug Y2FuJ3QgcHJlZGljdCBpdCB3aWxsIGJlIGxhcmdlIGVub3VnaCBmb3JldmVyIGJ1dCBvbiB0aGUN Cj4gPiA+ID4gPiBvdGhlciBoYW5kLCB1c2luZyB1aW50NjRfdCBzZWVtcyBvdmVya2lsbCBhdCB0 aGlzIHBvaW50Lg0KPiA+ID4gPg0KPiA+ID4gPiBJbnNpZGUgcnRlX21idWYgcGFja2V0X3R5cGUg aXRzZWxmIGlzIGEgMzIgYml0IHZhbHVlLg0KPiA+ID4gPiBUaGVzZSAzMiBiaXRzIGFyZSBkaXZp ZGVkIGludG8gc2V2ZXJhbCBmaWVsZHMgdG8gbWFyayBwYWNrZXQgdHlwZXMsDQo+ID4gPiA+IGku ZTogYml0cyBbMC0zXSBhcmUgZm9yIGFsbCBwb3NzaWJsZSBMMiB0eXBlcywgYml0cyBbNC03XSBm b3IgTDMgdHlwZXMsIGV0Yy4NCj4gPiA+ID4gQXMgbG9uZyBhcyBwYWNrZXRfdHlwZSBpdHNlbGYg aXMgMzJiaXRzLCAzMmJpdCBtYXNrIGlzIHN1ZmZpY2llbnQuDQo+ID4gPiA+IElmIHdlJ2xsIGV2 ZXIgcnVuIG91dCBvZiAzMiBiaXRzIGluIHBhY2tldF90eXBlIGl0c2VsZiwgaXQgd2lsbCBiZSBB QkkgY2hhbmdlIGFueXdheS4NCj4gPiA+DQo+ID4gPiBTdXJlLCBob3dldmVyIHdoeSBub3QgZG8g aXQgbm93IHRoaXMgaXNzdWUgaGFzIGJlZW4gcmFpc2VkIHNvIHRoaXMgZnVuY3Rpb24NCj4gPiA+ IGRvZXNuJ3QgbmVlZCB1cGRhdGluZyB0aGUgZGF5IGl0IGJyZWFrcz8gSSBrbm93IHRoZXJlJ3Mg YSBtaWxsaW9uIG90aGVyDQo+ID4gPiBwbGFjZXMgd2l0aCBhIHNpbWlsYXIgcHJvYmxlbSBidXQg SSdtIGFsbCBmb3IgbWFraW5nIG5ldyBjb2RlIGZ1dHVyZSBwcm9vZi4NCj4gPg0KPiA+IElmIHJ0 ZV9tYnVmIHBhY2tldF90eXBlIHdpbGwgaGF2ZSB0byBiZSBpbmNyZWFzZWQgdG8gNjRiaXQgbG9u ZywgdGhlbg0KPiA+IHRoaXMgZnVuY3Rpb24gd2lsbCBoYXZlIHRvIGNoYW5nZSBhbnl3YXkgKHdp dGggb3Igd2l0aG91dCBtYXNrIHBhcmFtZXRlcikuDQo+ID4gSXQgd2lsbCBoYXZlIHRvIGJlY29t ZToNCj4gPg0KPiA+IHJ0ZV9ldGhfZGV2X2dldF9wdHlwZV9pbmZvKHVpbnQ4X3QgcG9ydGlkLCB1 aW50NjRfdCBwdHlwZXNbXSwgLi4uKQ0KPiA+DQo+ID4gU28gSSB0aGluayB3ZSBkb24ndCBoYXZl IHRvIHdvcnJ5IGFib3V0IG1hc2sgcGFyYW1ldGVyIGl0c2VsZi4NCj4gDQo+IFdlbGwsIHllcywg YmVzaWRlcyBJIG92ZXJsb29rZWQgcHR5cGVzW10gaXRzZWxmIGlzIDMyIGJpdCwgd29ya2luZyBh cm91bmQNCj4gdGhlIHR5cGUgd2lkdGggb2YgdGhlIG1hc2sgd291bGRuJ3QgaGVscCBtdWNoLg0K PiANCj4gPiA+IFBlcmhhcHMgaW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2UgdGhlcmUgaXMgbm8gd2F5 IHRvIGhpdCB0aGUgbGltaXQgKGFsdGhvdWdoDQo+ID4gPiB0aGVyZSBhcmUgb25seSBmb3VyIHVu dXNlZCBiaXRzIGxlZnQgdG8gZXh0ZW5kIFJURV9QVFlQRSBtYXNrcykgYnV0IHdlJ3ZlDQo+ID4g PiBzZWVuIHRoaXMgaGFwcGVuIHRvbyBtYW55IHRpbWVzIHdpdGggc3Vic2VxdWVudCBBQkkgYnJl YWthZ2UuDQo+ID4NCj4gPiBXaGVuIHB0eXBlIHdhcyBpbnRyb2R1Y2VkIHdlIHRyaWVkIHRvIHJl c2VydmUgc29tZSBmcmVlIHNwYWNlIGZvciBlYWNoIGxheWVyIChMMi9MMy9MNC8uLi4pLA0KPiA+ IHNvIGl0IHdvdWxkbid0IGJlIG92ZXJydW4gaW1tZWRpYXRlbHkuDQo+ID4gQnV0IG9mIGNvdXJz ZSBpZiB0aGVyZSB3b3VsZCBiZSBhIG5ldyBIVyB0aGF0IGNhbiByZWNvZ25pc2UgZG96ZW4gbmV3 IHBhY2tldCB0eXBlcyAtIGl0IGlzIHBvc3NpYmxlLg0KPiA+IERvIHlvdSBoYXZlIGFueSBwYXJ0 aWN1bGFyIHVzZS1jYXNlIGluIG1pbmQ/DQo+IA0KPiBObywgdGhhdCB3YXMganVzdCB0byBpbGx1 c3RyYXRlIG15IHBvaW50Lg0KPiANCj4gPiA+ID4gPiBJIHRoaW5rIHRoaXMgdXNlIGZvciBtYXNr cyBzaG91bGQgYmUgYXZvaWRlZCB3aGVuIHBlcmZvcm1hbmNlIGRvZXMgbm90DQo+ID4gPiA+ID4g bWF0dGVyIG11Y2gsIGFzIGluIHRoaXMgY2FzZSwgdXNlciBhcHBsaWNhdGlvbiBjYW5ub3Qga25v dyB0aGUgbnVtYmVyIG9mDQo+ID4gPiA+ID4gZW50cmllcyBpbiBhZHZhbmNlIGFuZCBtdXN0IHJl bHkgb24gdGhlIHJldHVybmVkIHZhbHVlIHRvIGl0ZXJhdGUuDQo+ID4gPiA+DQo+ID4gPiA+IFVz ZXIgZG9lc24ndCBrbm93IG51bWJlcnMgb2YgZW50cmllcyBpbiBhZHZhbmNlIGFueXdheSAod2l0 aCBhbmQgd2l0aG91dCB0aGUgbWFzaykuDQo+ID4gPiA+IFRoYXQncyB3aHkgdGhpcyBmdW5jdGlv biB3YXMgaW50cm9kdWNlZCBhdCBmaXJzdCBwbGFjZS4NCj4gPiA+ID4NCj4gPiA+ID4gV2l0aCBt YXNrIGl0IGp1c3QgYSBiaXQgbW9yZSBoYW5keSwgaW4gY2FzZSB1c2VyIGNhcmVzIG9ubHkgYWJv dXQgcGFydGljdWxhciBzdWJzZXQgb2Ygc3VwcG9ydGVkDQo+ID4gPiA+IHBhY2tldCB0eXBlcyAo b25seSBMMiBsZXQgc2F5KS4NCj4gPiA+DQo+ID4gPiBPSywgc28gd2UgZGVmaW5pdGVseSBuZWVk IHNvbWV0aGluZyB0byBsZXQgYXBwbGljYXRpb25zIGtub3cgdGhlIGxheWVyIGENCj4gPiA+IGdp dmVuIHBhY2tldCB0eXBlIGJlbG9uZ3MgdG8sIEknbSBzdXJlIGl0IGNhbiBiZSBkb25lIGluIGEg Y29udmVuaWVudCB3YXkNCj4gPiA+IHRoYXQgd29uJ3QgYmUgbGltaXRlZCB0byB0aGUgdW5kZXJs eWluZyB0eXBlIG9mIHRoZSBtYXNrLg0KPiA+ID4NCj4gPiA+ID4gPiBBIGhlbHBlciBmdW5jdGlv biBjYW4gYmUgYWRkZWQgdG8gY29udmVydCBhIFJURV9QVFlQRV8qIHZhbHVlIHRvIHRoZSBsYXll cg0KPiA+ID4gPiA+IGl0IGJlbG9uZ3MgdG8gKHVzaW5nIGVudW0gdG8gZGVmaW5lIHBvc3NpYmxl IHZhbHVlcykuDQo+ID4gPiA+DQo+ID4gPiA+IE5vdCBzdXJlIHdoYXQgZm9yPw0KPiA+ID4NCj4g PiA+IFRoaXMgaXMgYXNzdW1pbmcgcnRlX2V0aF9kZXZfZ2V0X3B0eXBlX2luZm8oKSBkb2Vzbid0 IGZpbHRlciBhbnl0aGluZyAobm8NCj4gPiA+ICJtYXNrIiBhcmd1bWVudCkuIEluIHRoYXQgY2Fz ZSBhIHNlcGFyYXRlIGZ1bmN0aW9uIG11c3QgYmUgYWRkZWQgdG8gY29udmVydA0KPiA+ID4gUlRF X1BUWVBFXyogdmFsdWVzIHRvIGEgbGF5ZXIsIHNvIGFwcGxpY2F0aW9ucyBjYW4gbG9vayBmb3Ig aW50ZXJlc3RpbmcNCj4gPiA+IHBhY2tldCB0eXBlcyB3aGlsZSBwYXJzaW5nIHBsaXN0W10gb24g dGhlaXIgb3duLg0KPiA+DQo+ID4gSG9uZXN0bHksIEkgZG9uJ3Qgc2VlIHdoeSBkbyB5b3UgbmVl ZCB0aGF0Lg0KPiA+IFlvdSBhbHJlYWR5IGRvIGtub3cgdGhhdCAgbGV0IHNheSBSVEVfUFRZUEVf TDNfSVBWNCBiZWxvbmdzIHRvIEwzLg0KPiA+IFdoeSBkbyB5b3UgbmVlZCBzb21lIGV4dHJhIGVu dW0gaGVyZT8NCj4gPiBGcm9tIG15IHRob3VnaHQgLSB0aGUgb25seSBwdXJwb3NlIG9mIG1hc2sg cGFyYW1ldGVyIHdhcyB0byBsaW1pdCBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHB0eXBlc1td IGF0IHJldHVybi4NCj4gPiBTbyBsZXQgc2F5IHVzZXIgd291bGQgbmVlZCB0byBpdGVyYXRlIG92 ZXIgMTAgZWxlbWVudHMsIGluc3RlYWQgb2YgMTAwIHRvIGZpbmQNCj4gPiB0aGUgb25lcyBoZSBp cyBpbnRlcmVzdGVkIGluLg0KPiANCj4gU2luY2UgdGhpcyBpcyBhbHJlYWR5IGEgc2xvdyBtYW5u ZXIgZm9yIHJldHJpZXZpbmcgdHlwZXMsIDEwIG9yIDEwMCBkb2Vzbid0DQo+IG1ha2UgbXVjaCBk aWZmZXJlbmNlLiBTdWNoIGEgZnVuY3Rpb24gc2hvdWxkbid0IGJlIHVzZWQgaW4gdGhlIGRhdGEg cGF0aA0KPiBkaXJlY3RseS4NCiANClllcywgaXQgaXMgbm90IHN1cHBvc2VkIHRvIGJlIGNhbGxl ZCBmcm9tIGRhdGEtcGF0aC4NCg0KPiBNeSBwb2ludCBpcywgc2luY2Ugd2UncmUgZGVhbGluZyB3 aXRoIGEgc2xvdyBmdW5jdGlvbiwgbGV0J3Mga2VlcCBpdHMgQVBJIGFzDQo+IHNpbXBsZSBhcyBw b3NzaWJsZS4gDQoNCldlbGwsIEFQSSBzaG91bGQgYmUgc2ltcGxlLCBidXQgZnJvbSBvdGhlciBz aWRlIGl0IGhhcyB0byBiZSBmbGV4aWJsZSBhbmQgY29udmVuaWVudA0KZm9yIHRoZSB1c2VyLg0K QXMgSSB1c2VyLCBJIHdvdWxkIHByZWZlciB0byBoYXZlIGFuIGFiaWxpdHkgdG8gc2VsZWN0IHRo ZSBsYXllcnMgaGVyZSAtIHRoYXQncw0Kd2h5IEkgc3VnZ2VzdGVkIHRvIGFkZCB0aGUgbWFzayBw YXJhbWV0ZXIuIA0KDQo+QnkgaGF2aW5nIGEgbWFzayB0byBtYXRjaCwgYSBsYXJnZSBudW1iZXIg b2YgY2hlY2tzIGFyZQ0KPiBhZGRlZCBpbiBhbGwgUE1EcyB3aGlsZSB0aGV5IGNvdWxkIGp1c3Qg ZmlsbCB0aGUgYXJyYXkgd2l0aG91dA0KPiBib3RoZXJpbmcuIA0KDQpUaGF0J3MgYSB2YWxpZCBw b2ludC4NCldlIGNvdWxkIG1vdmUgZmlsdGVyIHBvaW50IGludG8gcnRlX2V0aGRldiBsYXllci4N ClNvIFBNRCB3b3VsZCBhbHdheXMgcmV0dXJuIGFuIGFycmF5IG9mIGFsbCBzdXBwb3J0ZWQgcHR5 cGVzLCBhbmQNCnRoZW4gcnRlX2V0aGRldiBsYXllciB3aWxsIGZpbHRlciBpdCBiYXNlZCBvbiBt YXNrIHBhcmFtZXRlci4NCkRvZXMgaXQgc291bmQgcmVhc29uYWJsZSB0byB5b3U/DQoNCktvbnN0 YW50aW4gDQoNCj5UaGUgZmlsdGVyaW5nIGxvZ2ljIGlzIGFuIGFwcGxpY2F0aW9uIHJlcXVpcmVt ZW50IHRoYXQgY291bGQgYmUNCj4gdXNlZnVsIGluIGl0cyBvd24gZnVuY3Rpb24gYXMgd2VsbCAo Y29udmVydGluZyBhbnkgcmFuZG9tIHZhbHVlIHRvIGl0cw0KPiByZWxhdGVkIGxheWVyIG9yIG1h c2spLg0KPiANCj4gPiA+IFRoaXMgbGF5ZXIgaW5mb3JtYXRpb24gY291bGQgYmUgZGVmaW5lZCBh cyBhbiBlbnVtLCBpLmUuOg0KPiA+ID4NCj4gPiA+ICBlbnVtIHJ0ZV9wdHlwZV9pbmZvIHsNCj4g PiA+ICAgICAgUlRFX1BUWVBFX1VOS05PV04sDQo+ID4gPiAgICAgIFJURV9QVFlQRV9MMiwNCj4g PiA+ICAgICAgUlRFX1BUWVBFX0wzLA0KPiA+ID4gICAgIC4uLg0KPiA+ID4gIH07DQo+ID4gPg0K PiA+ID4gT3IgZXZlbiBhbiBpbnQgdmFsdWUgKDIgc3RhbmRpbmcgZm9yIGZvciAibGF5ZXIgMiIg ZXRjLiBUdW5uZWwgZW5jYXBzdWxhdGlvbg0KPiA+ID4gd291bGRuJ3QgYmUgZGVzY3JpYmVkIGVh c2lseSB0aGF0IHdheSB0aG91Z2gpLiBJdCdzIGp1c3QgYW4gaWRlYS4NCj4gPiA+DQo+ID4gPiA+ ID4gSWYgd2UgYWJzb2x1dGVseSB3YW50IGEgbWVhbiB0byBmaWx0ZXIgcmV0dXJuZWQgdmFsdWVz LCBJIHN1Z2dlc3Qgd2UgdXNlDQo+ID4gPiA+ID4gdGhpcyBlbnVtIGluc3RlYWQgb2YgdGhlIG1h c2sgYXJndW1lbnQuDQo+ID4gPiA+ID4gU2luY2UgaXQgd29uJ3QgYmUgYSBtYXNrLCBpdCB3b24n dA0KPiA+ID4gPiA+IGhhdmUgdG8gYmUgdXBkYXRlZCBldmVyeSB0aW1lIGEgbmV3IHByb3RvY29s IHJlcXVpcmVzIGV4dGVuZGluZyBvbmUuDQo+ID4gPiA+DQo+ID4gPiA+IE51bWJlciBvZiBiaXRz IFBUWVBFX0wyL0wzL0w0LC4uLiBsYXllcnMgYXJlIGFscmVhZHkgZGVmaW5lZC4NCj4gPiA+ID4g U28gbGV0IHNheSBSVEVfUFRZUEVfTDJfTUFTSyBzaG91bGRuJ3QgY2hhbmdlIGlmIHlvdSdsbCBh ZGQgbmV3IEwyIHB0eXBlIC0NCj4gPiA+ID4gdGhlcmUgYXJlIGZldyByZXNlcnZlZCB2YWx1ZXMg cmlnaHQgbm93Lg0KPiA+ID4gPiBpZiBvbmUgZGF5IHdlJ2xsIHJ1biBvdXQgYml0cyBpbiBsZXQg c2F5IFJURV9QVFlQRV9MMl9NQVNLICBhbmQgd2lsbCBoYXZlIHRvIGluY3JlYXNlIGl0cyBzaXpl IC0NCj4gPiA+ID4gaXQgd291bGQgbWVhbiBjaGFuZ2Ugb2YgdGhlIHBhY2tldF90eXBlIGxheW91 dCBhbmQgcG9zc2libGUgQUJJIGJyZWFrYWdlIGFueXdheS4NCj4gPiA+DQo+ID4gPiBJJ20gYXdh cmUgb2YgdGhpcywgb25seSBwb2ludGluZyBvdXQgd2UgdGVuZCB0byByZWx5IG9uIG1hc2tzIGFu ZCB0eXBlDQo+ID4gPiBib3VuZGFyaWVzIGEgYml0IHRvbyBtdWNoIHdoZW4gdGhlcmUgYXJlIG90 aGVyIG1ldGhvZHMgdGhhdCBhcmUgYXMgKGlmIG5vdA0KPiA+ID4gbW9yZSkgY29udmVuaWVudC4N Cj4gPg0KPiA+IFllcywgd2UgZG8gcmVseSBvbiBtYXNrcyBpbiBwdHlwZS4NCj4gPiBUaGF0J3Mg aG93IHB0eXBlIHdhcyBkZWZpbmVkLg0KPiA+IExldCBzYXkgdG8gY2hlY2sgdGhhdCBpbmNvbWlu ZyBwYWNrZXQgaXMgRXRoZXIvSVB2NChubyBleHRlbnRpb25zKS9VRFAsDQo+ID4geW91IHByb2Jh Ymx5IHdvdWxkIGRvOg0KPiA+DQo+ID4gaWYgKG1idWYtPnBhY2tldF90eXBlICYgKFJURV9QVFlQ RV9MMl9NQVNLIHwgUlRFX1BUWVBFX0wzX01BU0sgfCBSVEVfUFRZUEVfTDRfTUFTSykgPT0NCj4g PiAoUlRFX1BUWVBFX0wyX0VUSEVSICB8IFJURV9QVFlQRV9MM19JUFY0IHwgIFJURV9QVFlQRV9M NF9VRFApKSB7Li4ufQ0KPiANCj4gQWxsIHJpZ2h0LCBsZXQncyBub3QgdXNlIGEgZGlmZmVyZW50 IG1ldGhvZCB0byBmaWx0ZXIgcGFja2V0IHR5cGVzLg0KPiANCj4gPiA+IFBlcmhhcHMgc29tZSBz b3J0IG9mIHR1bm5lbGVkIHBhY2tldCB0eXBlcyBiZXlvbmQgaW5uZXIgTDQgY29uc3VtaW5nIHRo ZQ0KPiA+ID4gZm91ciByZW1haW5pbmcgYml0cyB3aWxsIGJlIGFkZGVkPyBUaGF0IGNvdWxkIGhh cHBlbiBzb29uLg0KPiA+DQo+ID4gQXMgSSBzYWlkIGFib3ZlOiBkbyB5b3UgaGF2ZSBwYXJ0aWN1 bGFyIHNjZW5hcmlvIGluIG1pbmQgd2hlbiAzMmJpdHMgZm9yIHBhY2tldF90eXBlDQo+ID4gbWln aHQgYmUgbm90IGVub3VnaD8NCj4gPiBJZiB5ZXMsIHRoZW4gaXQgaXMgcHJvYmFibHkgYSBnb29k IGlkZWEgdG8gc3VibWl0IGFuIFJGQyBmb3IgZXh0ZW5kaW5nIGl0IHRvIDY0IGJpdCwNCj4gPiBv ciBpbnRyb2R1Y2UgcGFja2V0X3R5cGUyLCBvciB3aGF0ZXZlciB3b3VsZCBiZSB5b3VyIHByZWZl cnJlZCB3YXkgdG8gZGVhbCB3aXRoIGl0Lg0KPiANCj4gTm8sIHJlYWxseSwgSSBndWVzcyB3ZSds bCBleHRlbmQgcHR5cGUgdG8gNjQgYml0IHdoZW4gbmVjZXNzYXJ5LiBNeSBwb2ludCBvbg0KPiBm aWx0ZXJpbmcgc2VwYXJhdGVseSBzdGlsbCBzdGFuZHMuDQo+IA0KPiA+IEtvbnN0YW50aW4NCj4g Pg0KPiANCj4gLS0NCj4gQWRyaWVuIE1hemFyZ3VpbA0KPiA2V0lORA0K