From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 991E5A034C; Thu, 22 Dec 2022 14:52:03 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2C05B410D3; Thu, 22 Dec 2022 14:52:03 +0100 (CET) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 3C051410D0 for ; Thu, 22 Dec 2022 14:52:01 +0100 (CET) Received: from frapeml500006.china.huawei.com (unknown [172.18.147.207]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4NdBXM3wMkz67PFg; Thu, 22 Dec 2022 21:50:27 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml500006.china.huawei.com (7.182.85.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Thu, 22 Dec 2022 14:52:00 +0100 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2375.034; Thu, 22 Dec 2022 14:52:00 +0100 From: Konstantin Ananyev To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "olivier.matz@6wind.com" , "andrew.rybchenko@oktetlabs.ru" , "thomas@monjalon.net" CC: "dev@dpdk.org" , "honnappa.nagarahalli@arm.com" , "bruce.richardson@intel.com" , nd Subject: RE: [PATCH v2] mempool: micro-optimize put function Thread-Topic: [PATCH v2] mempool: micro-optimize put function Thread-Index: AQHY+bT+yYInZk7j1E6wKVfv3icIqq5BsNgggAADx6CAAAFj8IAAFT8wgDM+VoCABRnf0A== Date: Thu, 22 Dec 2022 13:52:00 +0000 Message-ID: References: <20221116101855.93297-1-mb@smartsharesystems.com> <20221116121416.94990-1-mb@smartsharesystems.com> <98CBD80474FA8B44BF855DF32C47DC35D874CA@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D874CC@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D875C8@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35D875C8@smartserver.smartshare.dk> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.48.146.238] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQpIaSBNb3J0ZW4sDQoNCj4gUElORyBtZW1wb29sIG1haW50YWluZXJzLg0KPiANCj4gSWYgeW91 IGRvbid0IHByb3ZpZGUgQUNLIG9yIFJldmlldyB0byBwYXRjaGVzLCBob3cgc2hvdWxkIFRob21h cyBrbm93IHRoYXQgaXQgaXMgcmVhZHkgZm9yIG1lcmdpbmc/DQo+IA0KPiAtTW9ydGVuDQoNClRo ZSBjb2RlIGNoYW5nZXMgaXRzZWxmIGxvb2tzIG9rIHRvIG1lLiANClRob3VnaCBJIGRvbid0IHRo aW5rIGl0IHdvdWxkIHJlYWxseSBicmluZyBhbnkgbm90aWNlYWJsZSBzcGVlZHVwLg0KQnV0IHll cywgaXQgbG9va3MgYSBiaXQgbmljZXIgdGhpcyB3YXksIGVzcGVjaWFsbHkgd2l0aCBleHRyYSBj b21tZW50cy4NCk9uZSBxdWVzdGlvbiB0aG91Z2gsIHdoeSBkbyB5b3UgZmVlbCB0aGlzIGFzc2Vy dDoNClJURV9BU1NFUlQoY2FjaGUtPmxlbiA8PSBjYWNoZS0+Zmx1c2h0aHJlc2gpOw0KaXMgbmVj ZXNzYXJ5Pw0KSSBjYW4ndCBzZWUgYW55IHdheSBpdCBjb3VsZCBoYXBwZW4sIHVubGVzcyBzb21l dGhpbmcgaXMgdG90YWxseSBicm9rZW4NCndpdGhpbiB0aGUgYXBwLiAgIA0KDQo+ID4gRnJvbTog TW9ydGVuIEJyw7hydXAgW21haWx0bzptYkBzbWFydHNoYXJlc3lzdGVtcy5jb21dDQo+ID4gU2Vu dDogV2VkbmVzZGF5LCAxNiBOb3ZlbWJlciAyMDIyIDE4LjM5DQo+ID4NCj4gPiA+IEZyb206IEhv bm5hcHBhIE5hZ2FyYWhhbGxpIFttYWlsdG86SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbV0N Cj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgMTYgTm92ZW1iZXIgMjAyMiAxNy4yNw0KPiA+ID4NCj4g PiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gTWljcm8tb3B0aW1pemF0aW9uOg0KPiA+ID4g PiA+ID4gUmVkdWNlZCB0aGUgbW9zdCBsaWtlbHkgY29kZSBwYXRoIGluIHRoZSBnZW5lcmljIHB1 dCBmdW5jdGlvbg0KPiA+IGJ5DQo+ID4gPiA+ID4gbW92aW5nIGFuDQo+ID4gPiA+ID4gPiB1bmxp a2VseSBjaGVjayBvdXQgb2YgdGhlIG1vc3QgbGlrZWx5IGNvZGUgcGF0aCBhbmQgZnVydGhlcg0K PiA+IGRvd24uDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQWxzbyB1cGRhdGVkIHRoZSBjb21t ZW50cyBpbiB0aGUgZnVuY3Rpb24uDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gdjIgKGZlZWRi YWNrIGZyb20gQW5kcmV3IFJ5YmNoZW5rbyk6DQo+ID4gPiA+ID4gPiAqIE1vZGlmaWVkIGNvbXBh cmlzb24gdG8gcHJldmVudCBvdmVyZmxvdyBpZiBuIGlzIHJlYWxseSBodWdlDQo+ID4gYW5kDQo+ ID4gPiA+ID4gPiBsZW4NCj4gPiA+ID4gPiBpcw0KPiA+ID4gPiA+ID4gICBub24temVyby4NCj4g PiA+ID4gPiA+ICogQWRkZWQgYXNzZXJ0aW9uIGFib3V0IHRoZSBpbnZhcmlhbnQgcHJldmVudGlu ZyBvdmVyZmxvdyBpbg0KPiA+IHRoZQ0KPiA+ID4gPiA+ID4gICBjb21wYXJpc29uLg0KPiA+ID4g PiA+ID4gKiBDcm9zc2luZyB0aGUgdGhyZXNob2xkIGlzIG5vdCBleHRyZW1lbHkgdW5saWtlbHks IHNvIHJlbW92ZWQNCj4gPiA+ID4gPiBsaWtlbHkoKQ0KPiA+ID4gPiA+ID4gICBmcm9tIHRoYXQg Y29tcGFyaXNvbi4NCj4gPiA+ID4gPiA+ICAgVGhlIGNvbXBpbGVyIHdpbGwgZ2VuZXJhdGUgY29k ZSB3aXRoIG9wdGltYWwgc3RhdGljIGJyYW5jaA0KPiA+ID4gPiA+IHByZWRpY3Rpb24NCj4gPiA+ ID4gPiA+ICAgaGVyZSBhbnl3YXkuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gU2lnbmVkLW9m Zi1ieTogTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4gPiA+ID4g PiA+IC0tLQ0KPiA+ID4gPiA+ID4gIGxpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmggfCAzNiArKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tDQo+ID4gLS0NCj4gPiA+IC0tLQ0KPiA+ID4gPiA+ ID4gIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkNCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL21lbXBvb2wvcnRlX21lbXBv b2wuaA0KPiA+ID4gYi9saWIvbWVtcG9vbC9ydGVfbWVtcG9vbC5oDQo+ID4gPiA+ID4gPiBpbmRl eCA5ZjUzMGRiMjRiLi5kZDFhMzE3N2Q2IDEwMDY0NA0KPiA+ID4gPiA+ID4gLS0tIGEvbGliL21l bXBvb2wvcnRlX21lbXBvb2wuaA0KPiA+ID4gPiA+ID4gKysrIGIvbGliL21lbXBvb2wvcnRlX21l bXBvb2wuaA0KPiA+ID4gPiA+ID4gQEAgLTEzNjQsMzIgKzEzNjQsMzYgQEAgcnRlX21lbXBvb2xf ZG9fZ2VuZXJpY19wdXQoc3RydWN0DQo+ID4gPiA+ID4gPiBydGVfbWVtcG9vbCAqbXAsIHZvaWQg KiBjb25zdCAqb2JqX3RhYmxlLCAgew0KPiA+ID4gPiA+ID4gIAl2b2lkICoqY2FjaGVfb2JqczsN Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtCS8qIE5vIGNhY2hlIHByb3ZpZGVkICovDQo+ID4g PiA+ID4gPiArCS8qIE5vIGNhY2hlIHByb3ZpZGVkPyAqLw0KPiA+ID4gPiA+ID4gIAlpZiAodW5s aWtlbHkoY2FjaGUgPT0gTlVMTCkpDQo+ID4gPiA+ID4gPiAgCQlnb3RvIGRyaXZlcl9lbnF1ZXVl Ow0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0JLyogaW5jcmVtZW50IHN0YXQgbm93LCBhZGRp bmcgaW4gbWVtcG9vbCBhbHdheXMgc3VjY2VzcyAqLw0KPiA+ID4gPiA+ID4gKwkvKiBJbmNyZW1l bnQgc3RhdHMgbm93LCBhZGRpbmcgaW4gbWVtcG9vbCBhbHdheXMgc3VjY2VlZHMuDQo+ID4gPiAq Lw0KPiA+ID4gPiA+ID4gIAlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwgcHV0X2J1 bGssIDEpOw0KPiA+ID4gPiA+ID4gIAlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwg cHV0X29ianMsIG4pOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0JLyogVGhlIHJlcXVlc3Qg aXRzZWxmIGlzIHRvbyBiaWcgZm9yIHRoZSBjYWNoZSAqLw0KPiA+ID4gPiA+ID4gLQlpZiAodW5s aWtlbHkobiA+IGNhY2hlLT5mbHVzaHRocmVzaCkpDQo+ID4gPiA+ID4gPiAtCQlnb3RvIGRyaXZl cl9lbnF1ZXVlX3N0YXRzX2luY3JlbWVudGVkOw0KPiA+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+ID4g LQkvKg0KPiA+ID4gPiA+ID4gLQkgKiBUaGUgY2FjaGUgZm9sbG93cyB0aGUgZm9sbG93aW5nIGFs Z29yaXRobToNCj4gPiA+ID4gPiA+IC0JICogICAxLiBJZiB0aGUgb2JqZWN0cyBjYW5ub3QgYmUg YWRkZWQgdG8gdGhlIGNhY2hlIHdpdGhvdXQNCj4gPiA+ID4gPiBjcm9zc2luZw0KPiA+ID4gPiA+ ID4gLQkgKiAgICAgIHRoZSBmbHVzaCB0aHJlc2hvbGQsIGZsdXNoIHRoZSBjYWNoZSB0byB0aGUN Cj4gPiA+IGJhY2tlbmQuDQo+ID4gPiA+ID4gPiAtCSAqICAgMi4gQWRkIHRoZSBvYmplY3RzIHRv IHRoZSBjYWNoZS4NCj4gPiA+ID4gPiA+IC0JICovDQo+ID4gPiA+ID4gPiArCS8qIEFzc2VydCB0 aGUgaW52YXJpYW50IHByZXZlbnRpbmcgb3ZlcmZsb3cgaW4gdGhlDQo+ID4gPiBjb21wYXJpc29u DQo+ID4gPiA+ID4gYmVsb3cuDQo+ID4gPiA+ID4gPiAqLw0KPiA+ID4gPiA+ID4gKwlSVEVfQVNT RVJUKGNhY2hlLT5sZW4gPD0gY2FjaGUtPmZsdXNodGhyZXNoKTsNCj4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiAtCWlmIChjYWNoZS0+bGVuICsgbiA8PSBjYWNoZS0+Zmx1c2h0aHJlc2gpIHsNCj4g PiA+ID4gPiA+ICsJaWYgKG4gPD0gY2FjaGUtPmZsdXNodGhyZXNoIC0gY2FjaGUtPmxlbikgew0K PiA+ID4gPiA+ID4gKwkJLyoNCj4gPiA+ID4gPiA+ICsJCSAqIFRoZSBvYmplY3RzIGNhbiBiZSBh ZGRlZCB0byB0aGUgY2FjaGUgd2l0aG91dA0KPiA+ID4gY3Jvc3NpbmcNCj4gPiA+ID4gPiB0aGUN Cj4gPiA+ID4gPiA+ICsJCSAqIGZsdXNoIHRocmVzaG9sZC4NCj4gPiA+ID4gPiA+ICsJCSAqLw0K PiA+ID4gPiA+ID4gIAkJY2FjaGVfb2JqcyA9ICZjYWNoZS0+b2Jqc1tjYWNoZS0+bGVuXTsNCj4g PiA+ID4gPiA+ICAJCWNhY2hlLT5sZW4gKz0gbjsNCj4gPiA+ID4gPiA+IC0JfSBlbHNlIHsNCj4g PiA+ID4gPiA+ICsJfSBlbHNlIGlmIChsaWtlbHkobiA8PSBjYWNoZS0+Zmx1c2h0aHJlc2gpKSB7 DQo+ID4gPiA+ID4gSU1PLCB0aGlzIGlzIGEgbWlzY29uZmlndXJhdGlvbiBvbiB0aGUgYXBwbGlj YXRpb24gcGFydC4gSW4gdGhlDQo+ID4gPiBQTURzIEkNCj4gPiA+ID4gPiBoYXZlIGxvb2tlZCBh dCwgbWF4IHZhbHVlIG9mICduJyBpcyBjb250cm9sbGVkIGJ5IGNvbXBpbGUgdGltZQ0KPiA+ID4g PiA+IGNvbnN0YW50cy4gQXBwbGljYXRpb24gY291bGQgZG8gYSBjb21waWxlIHRpbWUgY2hlY2sg b24gdGhlIGNhY2hlDQo+ID4gPiA+ID4gdGhyZXNob2xkIG9yIHdlIGNvdWxkIGhhdmUgYW5vdGhl ciBSVEVfQVNTRVJUIG9uIHRoaXMuDQo+ID4gPiA+DQo+ID4gPiA+IFRoZXJlIGNvdWxkIGJlIGFw cGxpY2F0aW9ucyB1c2luZyBhIG1lbXBvb2wgZm9yIHNvbWV0aGluZyBlbHNlIHRoYW4NCj4gPiA+ IG1idWZzLg0KPiA+ID4gQWdyZWUNCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEluIHRoYXQgY2Fz ZSwgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBiZSBhbGxvd2VkIHRvIGdldC9wdXQgbWFueQ0KPiA+ ID4gb2JqZWN0cyBpbg0KPiA+ID4gPiBvbmUgdHJhbnNhY3Rpb24uDQo+ID4gPiBTdGlsbCwgdGhp cyBpcyBhIG1pc2NvbmZpZ3VyYXRpb24gb24gdGhlIGFwcGxpY2F0aW9uLiBPbiBvbmUgaGFuZCB0 aGUNCj4gPiA+IHRocmVzaG9sZCBpcyBjb25maWd1cmVkIGZvciAneCcgYnV0IHRoZXkgYXJlIHNl bmRpbmcgYSByZXF1ZXN0IHdoaWNoDQo+ID4gaXMNCj4gPiA+IG1vcmUgdGhhbiAneCcuIEl0IHNo b3VsZCBiZSBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIHRocmVzaG9sZA0KPiA+ID4gY29uZmlndXJh dGlvbiBvciByZWR1Y2UgdGhlIHJlcXVlc3Qgc2l6ZS4NCj4gPiA+DQo+ID4gPiBJZiB0aGUgYXBw bGljYXRpb24gZG9lcyBub3QgZml4IHRoZSBtaXNjb25maWd1cmF0aW9uLCBpdCBpcyBwb3NzaWJs ZQ0KPiA+ID4gdGhhdCBpdCB3aWxsIGFsd2F5cyBoaXQgdGhpcyBjYXNlIGFuZCBkb2VzIG5vdCBn ZXQgdGhlIGJlbmVmaXQgb2YNCj4gPiB1c2luZw0KPiA+ID4gdGhlIHBlci1jb3JlIGNhY2hlLg0K PiA+DQo+ID4gQ29ycmVjdC4gSSBzdXBwb3NlIHRoaXMgaXMgdGhlIGludGVuZGVkIGJlaGF2aW9y IG9mIHRoaXMgQVBJLg0KPiA+DQo+ID4gVGhlIHplcm8tY29weSBBUEkgcHJvcG9zZWQgaW4gYW5v dGhlciBwYXRjaCBbMV0gaGFzIHN0cmljdGVyDQo+ID4gcmVxdWlyZW1lbnRzIHRvIHRoZSBidWxr IHNpemUuDQo+ID4NCj4gPiBbMV06IGh0dHA6Ly9pbmJveC5kcGRrLm9yZy9kZXYvMjAyMjExMTUx NjE4MjIuNzA4ODYtMS0NCj4gPiBtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20vVC8jdQ0KPiA+DQo+ ID4gPg0KPiA+ID4gV2l0aCB0aGlzIGNoZWNrLCB3ZSBhcmUgaW50cm9kdWNpbmcgYW4gYWRkaXRp b25hbCBtZW1jcHkgYXMgd2VsbC4gSQ0KPiA+IGFtDQo+ID4gPiBub3Qgc3VyZSBpZiByZXVzaW5n IHRoZSBsYXRlc3QgYnVmZmVycyBpcyBiZXR0ZXIgdGhhbiBoYXZpbmcgYW4NCj4gPiBtZW1jcHku DQo+ID4NCj4gPiBUaGVyZSBpcyBubyBhZGRpdGlvbmFsIG1lbWNweS4gVGhlIGxhcmdlIGJ1bGsg dHJhbnNmZXIgaXMgc3RvcmVkDQo+ID4gZGlyZWN0bHkgaW4gdGhlIGJhY2tlbmQgcG9vbCwgYnlw YXNzaW5nIHRoZSBtZW1wb29sIGNhY2hlLg0KPiA+DQo+ID4gUGxlYXNlIG5vdGUgdGhhdCB0aGlz IGNoZWNrIGlzIG5vdCBuZXcsIGl0IGhhcyBqdXN0IGJlZW4gbW92ZWQuIEJlZm9yZQ0KPiA+IHRo aXMgcGF0Y2gsIGl0IHdhcyBjaGVja2VkIG9uIGV2ZXJ5IGNhbGwgKGlmIGEgY2FjaGUgaXMgcHJl c2VudCk7IHdpdGgNCj4gPiB0aGlzIHBhdGNoLCBpdCBpcyBvbmx5IGNoZWNrZWQgaWYgdGhlIGVu dGlyZSByZXF1ZXN0IGNhbm5vdCBnbyBkaXJlY3RseQ0KPiA+IGludG8gdGhlIGNhY2hlLg0KPiA+ DQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArCQkvKg0KPiA+ID4gPiA+ ID4gKwkJICogVGhlIHJlcXVlc3QgaXRzZWxmIGZpdHMgaW50byB0aGUgY2FjaGUuDQo+ID4gPiA+ ID4gPiArCQkgKiBCdXQgZmlyc3QsIHRoZSBjYWNoZSBtdXN0IGJlIGZsdXNoZWQgdG8gdGhlDQo+ ID4gPiBiYWNrZW5kLCBzbw0KPiA+ID4gPiA+ID4gKwkJICogYWRkaW5nIHRoZSBvYmplY3RzIGRv ZXMgbm90IGNyb3NzIHRoZSBmbHVzaA0KPiA+ID4gdGhyZXNob2xkLg0KPiA+ID4gPiA+ID4gKwkJ ICovDQo+ID4gPiA+ID4gPiAgCQljYWNoZV9vYmpzID0gJmNhY2hlLT5vYmpzWzBdOw0KPiA+ID4g PiA+ID4gIAkJcnRlX21lbXBvb2xfb3BzX2VucXVldWVfYnVsayhtcCwgY2FjaGVfb2JqcywgY2Fj aGUtDQo+ID4gPiA+ID4gPiA+bGVuKTsNCj4gPiA+ID4gPiA+ICAJCWNhY2hlLT5sZW4gPSBuOw0K PiA+ID4gPiA+ID4gKwl9IGVsc2Ugew0KPiA+ID4gPiA+ID4gKwkJLyogVGhlIHJlcXVlc3QgaXRz ZWxmIGlzIHRvbyBiaWcgZm9yIHRoZSBjYWNoZS4gKi8NCj4gPiA+ID4gPiA+ICsJCWdvdG8gZHJp dmVyX2VucXVldWVfc3RhdHNfaW5jcmVtZW50ZWQ7DQo+ID4gPiA+ID4gPiAgCX0NCj4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiAgCS8qIEFkZCB0aGUgb2JqZWN0cyB0byB0aGUgY2FjaGUuICovIEBA IC0xMzk5LDEzICsxNDAzLDEzIEBADQo+ID4gPiA+ID4gPiBydGVfbWVtcG9vbF9kb19nZW5lcmlj X3B1dChzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wLCB2b2lkICogY29uc3QNCj4gPiA+ID4gPiA+ICpv YmpfdGFibGUsDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gIGRyaXZlcl9lbnF1ZXVlOg0KPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0JLyogaW5jcmVtZW50IHN0YXQgbm93LCBhZGRpbmcgaW4g bWVtcG9vbCBhbHdheXMgc3VjY2VzcyAqLw0KPiA+ID4gPiA+ID4gKwkvKiBJbmNyZW1lbnQgc3Rh dHMgbm93LCBhZGRpbmcgaW4gbWVtcG9vbCBhbHdheXMgc3VjY2VlZHMuDQo+ID4gPiAqLw0KPiA+ ID4gPiA+ID4gIAlSVEVfTUVNUE9PTF9TVEFUX0FERChtcCwgcHV0X2J1bGssIDEpOw0KPiA+ID4g PiA+ID4gIAlSVEVfTUVNUE9PTF9TVEFUX0FERChtcCwgcHV0X29ianMsIG4pOw0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ICBkcml2ZXJfZW5xdWV1ZV9zdGF0c19pbmNyZW1lbnRlZDoNCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiAtCS8qIHB1c2ggb2JqZWN0cyB0byB0aGUgYmFja2VuZCAqLw0K PiA+ID4gPiA+ID4gKwkvKiBQdXNoIHRoZSBvYmplY3RzIHRvIHRoZSBiYWNrZW5kLiAqLw0KPiA+ ID4gPiA+ID4gIAlydGVfbWVtcG9vbF9vcHNfZW5xdWV1ZV9idWxrKG1wLCBvYmpfdGFibGUsIG4p OyAgfQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0tDQo+ID4gPiA+ID4gPiAyLjE3LjENCg0K