From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 790A643CEA;
	Tue, 19 Mar 2024 14:26:02 +0100 (CET)
Received: from mails.dpdk.org (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 00969402D1;
	Tue, 19 Mar 2024 14:26:02 +0100 (CET)
Received: from frasgout.his.huawei.com (frasgout.his.huawei.com
 [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 446CF40298
 for <dev@dpdk.org>; Tue, 19 Mar 2024 14:26:00 +0100 (CET)
Received: from mail.maildlp.com (unknown [172.18.186.231])
 by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TzXXT4jp1z684m2;
 Tue, 19 Mar 2024 21:25:29 +0800 (CST)
Received: from frapeml100005.china.huawei.com (unknown [7.182.85.132])
 by mail.maildlp.com (Postfix) with ESMTPS id 949F61400CF;
 Tue, 19 Mar 2024 21:25:58 +0800 (CST)
Received: from frapeml500007.china.huawei.com (7.182.85.172) by
 frapeml100005.china.huawei.com (7.182.85.132) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.1.2507.35; Tue, 19 Mar 2024 14:25:58 +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.2507.035;
 Tue, 19 Mar 2024 14:25:58 +0100
From: Konstantin Ananyev <konstantin.ananyev@huawei.com>
To: Yoan Picchi <yoan.picchi@foss.arm.com>, Yoan Picchi <yoan.picchi@arm.com>, 
 Thomas Monjalon <thomas@monjalon.net>, Yipeng Wang <yipeng1.wang@intel.com>,
 Sameh Gobriel <sameh.gobriel@intel.com>, Bruce Richardson
 <bruce.richardson@intel.com>, Vladimir Medvedkin
 <vladimir.medvedkin@intel.com>
CC: "dev@dpdk.org" <dev@dpdk.org>, "nd@arm.com" <nd@arm.com>, Ruifeng Wang
 <ruifeng.wang@arm.com>, Nathan Brown <nathan.brown@arm.com>
Subject: RE: [PATCH v7 1/4] hash: pack the hitmask for hash in bulk lookup
Thread-Topic: [PATCH v7 1/4] hash: pack the hitmask for hash in bulk lookup
Thread-Index: AQHadJP+5Ro6T8yAkEGoOrDN5ls2cbE+6Q3QgAAacACAABEvEA==
Date: Tue, 19 Mar 2024 13:25:58 +0000
Message-ID: <3cfce8e3b128473096e1d43683fbe6f0@huawei.com>
References: <20231020165159.1649282-1-yoan.picchi@arm.com>
 <20240312154215.802374-1-yoan.picchi@arm.com>
 <20240312154215.802374-2-yoan.picchi@arm.com>
 <28cff0e5ea404051acdcb71c567d9d7c@huawei.com>
 <169368f3-c385-4591-ab3c-531c8918eba3@foss.arm.com>
In-Reply-To: <169368f3-c385-4591-ab3c-531c8918eba3@foss.arm.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.206.138.42]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

DQoNCj4gPg0KPiA+IEhpLA0KPiA+DQo+ID4+IEN1cnJlbnQgaGl0bWFzayBpbmNsdWRlcyBwYWRk
aW5nIGR1ZSB0byBJbnRlbCdzIFNJTUQNCj4gPj4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiBUaGlz
IHBhdGNoIGFsbG93cyBub24gSW50ZWwgU0lNRA0KPiA+PiBpbXBsZW1lbnRhdGlvbnMgdG8gYmVu
ZWZpdCBmcm9tIGEgZGVuc2UgaGl0bWFzay4NCj4gPj4gSW4gYWRkaXRpb24sIHRoZSBuZXcgZGVu
c2UgaGl0bWFzayBpbnRlcndlYXZlIHRoZSBwcmltYXJ5DQo+ID4+IGFuZCBzZWNvbmRhcnkgbWF0
Y2hlcyB3aGljaCBhbGxvdyBhIGJldHRlciBjYWNoZSB1c2FnZSBhbmQNCj4gPj4gZW5hYmxlIGZ1
dHVyZSBpbXByb3ZlbWVudHMgZm9yIHRoZSBTSU1EIGltcGxlbWVudGF0aW9ucw0KPiA+Pg0KPiA+
PiBTaWduZWQtb2ZmLWJ5OiBZb2FuIFBpY2NoaSA8eW9hbi5waWNjaGlAYXJtLmNvbT4NCj4gPj4g
UmV2aWV3ZWQtYnk6IFJ1aWZlbmcgV2FuZyA8cnVpZmVuZy53YW5nQGFybS5jb20+DQo+ID4+IFJl
dmlld2VkLWJ5OiBOYXRoYW4gQnJvd24gPG5hdGhhbi5icm93bkBhcm0uY29tPg0KPiA+PiAtLS0N
Cj4gPj4gICAubWFpbG1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr
DQo+ID4+ICAgbGliL2hhc2gvYXJjaC9hcm0vY29tcGFyZV9zaWduYXR1cmVzLmggICAgfCAgNjEg
KysrKysrKw0KPiA+PiAgIGxpYi9oYXNoL2FyY2gvY29tbW9uL2NvbXBhcmVfc2lnbmF0dXJlcy5o
IHwgIDM4ICsrKysrDQo+ID4+ICAgbGliL2hhc2gvYXJjaC94ODYvY29tcGFyZV9zaWduYXR1cmVz
LmggICAgfCAgNTMgKysrKysrDQo+ID4+ICAgbGliL2hhc2gvcnRlX2N1Y2tvb19oYXNoLmMgICAg
ICAgICAgICAgICAgfCAxOTIgKysrKysrKysrKysrLS0tLS0tLS0tLQ0KPiA+PiAgIDUgZmlsZXMg
Y2hhbmdlZCwgMjU1IGluc2VydGlvbnMoKyksIDkxIGRlbGV0aW9ucygtKQ0KPiA+PiAgIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvaGFzaC9hcmNoL2FybS9jb21wYXJlX3NpZ25hdHVyZXMuaA0KPiA+
PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaGFzaC9hcmNoL2NvbW1vbi9jb21wYXJlX3NpZ25h
dHVyZXMuaA0KPiA+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaGFzaC9hcmNoL3g4Ni9jb21w
YXJlX3NpZ25hdHVyZXMuaA0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvLm1haWxtYXAgYi8ubWFp
bG1hcA0KPiA+PiBpbmRleCA2NmViYzIwNjY2Li4wMGI1MDQxNGQzIDEwMDY0NA0KPiA+PiAtLS0g
YS8ubWFpbG1hcA0KPiA+PiArKysgYi8ubWFpbG1hcA0KPiA+PiBAQCAtNDk0LDYgKzQ5NCw3IEBA
IEhhcmkgS3VtYXIgVmVtdWxhIDxoYXJpLmt1bWFyeC52ZW11bGFAaW50ZWwuY29tPg0KPiA+PiAg
IEhhcmluaSBSYW1ha3Jpc2huYW4gPGhhcmluaS5yYW1ha3Jpc2huYW5AbWljcm9zb2Z0LmNvbT4N
Cj4gPj4gICBIYXJpcHJhc2FkIEdvdmluZGhhcmFqYW4gPGhhcmlwcmFzYWQuZ292aW5kaGFyYWph
bkBpbnRlbC5jb20+DQo+ID4+ICAgSGFyaXNoIFBhdGlsIDxoYXJpc2gucGF0aWxAY2F2aXVtLmNv
bT4gPGhhcmlzaC5wYXRpbEBxbG9naWMuY29tPg0KPiA+PiArSGFyam90IFNpbmdoIDxoYXJqb3Qu
c2luZ2hAYXJtLmNvbT4NCj4gPj4gICBIYXJtYW4gS2FscmEgPGhrYWxyYUBtYXJ2ZWxsLmNvbT4N
Cj4gPj4gICBIYXJuZWV0IFNpbmdoIDxoYXJuZWV0LnNpbmdoQGludGVsLmNvbT4NCj4gPj4gICBI
YXJvbGQgSHVhbmcgPGJheW1heGh1YW5nQGdtYWlsLmNvbT4NCj4gPj4gQEAgLTE2MzMsNiArMTYz
NCw3IEBAIFlpeHVlIFdhbmcgPHlpeHVlLndhbmdAaW50ZWwuY29tPg0KPiA+PiAgIFlpIFlhbmcg
PHlhbmd5aTAxQGluc3B1ci5jb20+IDx5aS55LnlhbmdAaW50ZWwuY29tPg0KPiA+PiAgIFlpIFpo
YW5nIDx6aGFuZy55aTc1QHp0ZS5jb20uY24+DQo+ID4+ICAgWW9hbm4gRGVzbW91Y2VhdXggPHlk
ZXNtb3VjQGNpc2NvLmNvbT4NCj4gPj4gK1lvYW4gUGljY2hpIDx5b2FuLnBpY2NoaUBhcm0uY29t
Pg0KPiA+PiAgIFlvZ2VzaCBKYW5ncmEgPHlvZ2VzaC5qYW5ncmFAaW50ZWwuY29tPg0KPiA+PiAg
IFlvZ2V2IENoYWltb3ZpY2ggPHlvZ2V2QGNnc3Rvd2VybmV0d29ya3MuY29tPg0KPiA+PiAgIFlv
bmdqaWUgR3UgPHlvbmdqaWV4Lmd1QGludGVsLmNvbT4NCj4gPj4gZGlmZiAtLWdpdCBhL2xpYi9o
YXNoL2FyY2gvYXJtL2NvbXBhcmVfc2lnbmF0dXJlcy5oIGIvbGliL2hhc2gvYXJjaC9hcm0vY29t
cGFyZV9zaWduYXR1cmVzLmgNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgg
MDAwMDAwMDAwMC4uMWFmNmJhODE5MA0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKyBiL2xp
Yi9oYXNoL2FyY2gvYXJtL2NvbXBhcmVfc2lnbmF0dXJlcy5oDQo+ID4+IEBAIC0wLDAgKzEsNjEg
QEANCj4gPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPj4g
KyAqIENvcHlyaWdodChjKSAyMDEwLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24NCj4gPj4gKyAqIENv
cHlyaWdodChjKSAyMDE4LTIwMjQgQXJtIExpbWl0ZWQNCj4gPj4gKyAqLw0KPiA+PiArDQo+ID4+
ICsvKg0KPiA+PiArICogQXJtJ3MgdmVyc2lvbiB1c2VzIGEgZGVuc2VseSBwYWNrZWQgaGl0bWFz
ayBidWZmZXI6DQo+ID4+ICsgKiBFdmVyeSBiaXQgaXMgaW4gdXNlLg0KPiA+PiArICovDQo+ID4+
ICsNCj4gPj4gKyNpbmNsdWRlIDxpbnR0eXBlcy5oPg0KPiA+PiArI2luY2x1ZGUgPHJ0ZV9jb21t
b24uaD4NCj4gPj4gKyNpbmNsdWRlIDxydGVfdmVjdC5oPg0KPiA+PiArI2luY2x1ZGUgInJ0ZV9j
dWNrb29faGFzaC5oIg0KPiA+PiArDQo+ID4+ICsjZGVmaW5lIERFTlNFX0hBU0hfQlVMS19MT09L
VVAgMQ0KPiA+PiArDQo+ID4+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPj4gK2NvbXBhcmVfc2ln
bmF0dXJlc19kZW5zZSh1aW50MTZfdCAqaGl0bWFza19idWZmZXIsDQo+ID4+ICsJCQljb25zdCB1
aW50MTZfdCAqcHJpbV9idWNrZXRfc2lncywNCj4gPj4gKwkJCWNvbnN0IHVpbnQxNl90ICpzZWNf
YnVja2V0X3NpZ3MsDQo+ID4+ICsJCQl1aW50MTZfdCBzaWcsDQo+ID4+ICsJCQllbnVtIHJ0ZV9o
YXNoX3NpZ19jb21wYXJlX2Z1bmN0aW9uIHNpZ19jbXBfZm4pDQo+ID4+ICt7DQo+ID4+ICsNCj4g
Pj4gKwlzdGF0aWNfYXNzZXJ0KHNpemVvZigqaGl0bWFza19idWZmZXIpID49IDIqKFJURV9IQVNI
X0JVQ0tFVF9FTlRSSUVTLzgpLA0KPiA+PiArCSJUaGUgaGl0bWFzayBtdXN0IGJlIGV4YWN0bHkg
d2lkZSBlbm91Z2ggdG8gYWNjZXB0IHRoZSB3aG9sZSBoaXRtYXNrIGlmIGl0IGlzIGRlbnNlIik7
DQo+ID4+ICsNCj4gPj4gKwkvKiBGb3IgbWF0Y2ggbWFzayBldmVyeSBiaXRzIGluZGljYXRlcyB0
aGUgbWF0Y2ggKi8NCj4gPj4gKwlzd2l0Y2ggKHNpZ19jbXBfZm4pIHsNCj4gPj4gKyNpZiBSVEVf
SEFTSF9CVUNLRVRfRU5UUklFUyA8PSA4DQo+ID4+ICsJY2FzZSBSVEVfSEFTSF9DT01QQVJFX05F
T046IHsNCj4gPj4gKwkJdWludDE2eDhfdCB2bWF0LCB2c2lnLCB4Ow0KPiA+PiArCQlpbnQxNng4
X3Qgc2hpZnQgPSB7MCwgMSwgMiwgMywgNCwgNSwgNiwgN307DQo+ID4+ICsJCXVpbnQxNl90IGxv
dywgaGlnaDsNCj4gPj4gKw0KPiA+PiArCQl2c2lnID0gdmxkMXFfZHVwX3UxNigodWludDE2X3Qg
Y29uc3QgKikmc2lnKTsNCj4gPj4gKwkJLyogQ29tcGFyZSBhbGwgc2lnbmF0dXJlcyBpbiB0aGUg
cHJpbWFyeSBidWNrZXQgKi8NCj4gPj4gKwkJdm1hdCA9IHZjZXFxX3UxNih2c2lnLA0KPiA+PiAr
CQkJdmxkMXFfdTE2KCh1aW50MTZfdCBjb25zdCAqKXByaW1fYnVja2V0X3NpZ3MpKTsNCj4gPj4g
KwkJeCA9IHZzaGxxX3UxNih2YW5kcV91MTYodm1hdCwgdmR1cHFfbl91MTYoMHgwMDAxKSksIHNo
aWZ0KTsNCj4gPj4gKwkJbG93ID0gKHVpbnQxNl90KSh2YWRkdnFfdTE2KHgpKTsNCj4gPj4gKwkJ
LyogQ29tcGFyZSBhbGwgc2lnbmF0dXJlcyBpbiB0aGUgc2Vjb25kYXJ5IGJ1Y2tldCAqLw0KPiA+
PiArCQl2bWF0ID0gdmNlcXFfdTE2KHZzaWcsDQo+ID4+ICsJCQl2bGQxcV91MTYoKHVpbnQxNl90
IGNvbnN0ICopc2VjX2J1Y2tldF9zaWdzKSk7DQo+ID4+ICsJCXggPSB2c2hscV91MTYodmFuZHFf
dTE2KHZtYXQsIHZkdXBxX25fdTE2KDB4MDAwMSkpLCBzaGlmdCk7DQo+ID4+ICsJCWhpZ2ggPSAo
dWludDE2X3QpKHZhZGR2cV91MTYoeCkpOw0KPiA+PiArCQkqaGl0bWFza19idWZmZXIgPSBsb3cg
fCBoaWdoIDw8IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTOw0KPiA+PiArDQo+ID4+ICsJCX0NCj4g
Pj4gKwkJYnJlYWs7DQo+ID4+ICsjZW5kaWYNCj4gPj4gKwlkZWZhdWx0Og0KPiA+PiArCQlmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTOyBpKyspIHsN
Cj4gPj4gKwkJCSpoaXRtYXNrX2J1ZmZlciB8PQ0KPiA+PiArCQkJCSgoc2lnID09IHByaW1fYnVj
a2V0X3NpZ3NbaV0pIDw8IGkpOw0KPiA+PiArCQkJKmhpdG1hc2tfYnVmZmVyIHw9DQo+ID4+ICsJ
CQkJKChzaWcgPT0gc2VjX2J1Y2tldF9zaWdzW2ldKSA8PCBpKSA8PCBSVEVfSEFTSF9CVUNLRVRf
RU5UUklFUzsNCj4gPj4gKwkJfQ0KPiA+PiArCX0NCj4gPj4gK30NCj4gPj4gZGlmZiAtLWdpdCBh
L2xpYi9oYXNoL2FyY2gvY29tbW9uL2NvbXBhcmVfc2lnbmF0dXJlcy5oIGIvbGliL2hhc2gvYXJj
aC9jb21tb24vY29tcGFyZV9zaWduYXR1cmVzLmgNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN
Cj4gPj4gaW5kZXggMDAwMDAwMDAwMC4uZGNmOTQ0NDAzMg0KPiA+PiAtLS0gL2Rldi9udWxsDQo+
ID4+ICsrKyBiL2xpYi9oYXNoL2FyY2gvY29tbW9uL2NvbXBhcmVfc2lnbmF0dXJlcy5oDQo+ID4+
IEBAIC0wLDAgKzEsMzggQEANCj4gPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt
My1DbGF1c2UNCj4gPj4gKyAqIENvcHlyaWdodChjKSAyMDEwLTIwMTYgSW50ZWwgQ29ycG9yYXRp
b24NCj4gPj4gKyAqIENvcHlyaWdodChjKSAyMDE4LTIwMjQgQXJtIExpbWl0ZWQNCj4gPj4gKyAq
Lw0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArICogVGhlIGdlbmVyaWMgdmVyc2lvbiBjb3VsZCB1
c2UgZWl0aGVyIGEgZGVuc2Ugb3Igc3BhcnNlbHkgcGFja2VkIGhpdG1hc2sgYnVmZmVyLA0KPiA+
PiArICogYnV0IHRoZSBkZW5zZSBvbmUgaXMgc2xpZ2h0bHkgZmFzdGVyLg0KPiA+PiArICovDQo+
ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxpbnR0eXBlcy5oPg0KPiA+PiArI2luY2x1ZGUgPHJ0ZV9j
b21tb24uaD4NCj4gPj4gKyNpbmNsdWRlIDxydGVfdmVjdC5oPg0KPiA+PiArI2luY2x1ZGUgInJ0
ZV9jdWNrb29faGFzaC5oIg0KPiA+PiArDQo+ID4+ICsjZGVmaW5lIERFTlNFX0hBU0hfQlVMS19M
T09LVVAgMQ0KPiA+PiArDQo+ID4+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPj4gK2NvbXBhcmVf
c2lnbmF0dXJlc19kZW5zZSh1aW50MTZfdCAqaGl0bWFza19idWZmZXIsDQo+ID4+ICsJCQljb25z
dCB1aW50MTZfdCAqcHJpbV9idWNrZXRfc2lncywNCj4gPj4gKwkJCWNvbnN0IHVpbnQxNl90ICpz
ZWNfYnVja2V0X3NpZ3MsDQo+ID4+ICsJCQl1aW50MTZfdCBzaWcsDQo+ID4+ICsJCQllbnVtIHJ0
ZV9oYXNoX3NpZ19jb21wYXJlX2Z1bmN0aW9uIHNpZ19jbXBfZm4pDQo+ID4+ICt7DQo+ID4+ICsJ
KHZvaWQpIHNpZ19jbXBfZm47DQo+ID4+ICsNCj4gPj4gKwlzdGF0aWNfYXNzZXJ0KHNpemVvZigq
aGl0bWFza19idWZmZXIpID49IDIqKFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTLzgpLA0KPiA+PiAr
CSJUaGUgaGl0bWFzayBtdXN0IGJlIGV4YWN0bHkgd2lkZSBlbm91Z2ggdG8gYWNjZXB0IHRoZSB3
aG9sZSBoaXRtYXNrIGlmIGl0IGlzIGRlbnNlIik7DQo+ID4+ICsNCj4gPj4gKwkvKiBGb3IgbWF0
Y2ggbWFzayBldmVyeSBiaXRzIGluZGljYXRlcyB0aGUgbWF0Y2ggKi8NCj4gPj4gKwlmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTOyBpKyspIHsNCj4g
Pj4gKwkJKmhpdG1hc2tfYnVmZmVyIHw9DQo+ID4+ICsJCQkoKHNpZyA9PSBwcmltX2J1Y2tldF9z
aWdzW2ldKSA8PCBpKTsNCj4gPj4gKwkJKmhpdG1hc2tfYnVmZmVyIHw9DQo+ID4+ICsJCQkoKHNp
ZyA9PSBzZWNfYnVja2V0X3NpZ3NbaV0pIDw8IGkpIDw8IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVT
Ow0KPiA+PiArCX0NCj4gPj4gKw0KPiA+PiArfQ0KPiA+DQo+ID4gVGhhbmtzIGZvciByZS1mYWN0
b3JpbmcgY29tcGFyZV9zaWduYXR1cmVzXy4uLigpIGNvZGUsIGl0IGxvb2tzIG11Y2ggY2xlYW5l
ciB0aGF0IHdheS4NCj4gPiBPbmUgcXVlc3Rpb24gSSBoYXZlIC0gZG9lcyBpdCBtZWFuIHRoYXQg
bm93IGZvciB4ODYgd2UgYWx3YXlzIHVzZSAnc3BhcnNlJyB3aGlsZSBmb3IgYWxsIG90aGVyDQo+
ID4gQVJNIGFuZCBub24tQVJNIHBsYXRmb3JtcyB3ZSBzd2l0Y2ggdG8gJ2RlbnNlJz8NCj4gDQo+
IFllcyBpdCBkb2VzLiB4ODYgc3VwcG9ydCBvbmx5IHRoZSBzcGFyc2UgbWV0aG9kICh0aGUgbGVn
YWN5IG9uZSkuIEFybQ0KPiBhbmQgZ2VuZXJpYyBjb2RlIGNvdWxkIHN1cHBvcnQgYm90aCBkZW5z
ZSBhbmQgc3BhcnNlLiBUaGUgcmVhc29uIEkgbWFkZQ0KPiB0aGVtIHVzZSB0aGUgZGVuc2UgbWV0
aG9kIGlzIGJlY2F1c2UgaXQgd2FzIHNsaWdodGx5IGZhc3RlciBpbiBteSB0ZXN0cy4NCg0KT2ss
IGJ1dCBiZWZvcmUgdGhhdCwgYSAnZ2VuZXJpYycgb25lIChub24teDg2IGFuZCBub24tQVJNKSB1
c2VkICdzcGFyc2UnIG9uZSwgY29ycmVjdD8NCklmIHNvLCB0aGVuIHByb2JhYmx5IG5lZWQgdG8g
b3V0bGluZSBpdCBhIGJpdCBtb3JlIGluIHBhdGNoIGNvbW1lbnRzIGFuZCBtaWdodCBiZSBldmVu
IHJlbGVhc2Ugbm90ZXMuDQpBdCBsZWFzdCB0aGF0IHdvdWxkIGJlIG15IGV4cGVjdGF0aW9ucywg
cHJvYmFibHkgaGFzaCBsaWIgbWFpbnRhaW5lcnMgbmVlZCB0byBzYXkgd2hhdCBpcyB0aGUgYmVz
dCB3YXkgaGVyZS4NClRoZSBjb2RlIHJlZmFjdG9yaW5nIGl0c2VsZiAtIExHVE0uDQoNCj4gKG5v
IG5lZWQgdG8gYWRkIHBhZGRpbmcgYW5kIHNoaWZ0cyBhbW9uZ3N0IG90aGVyIGJlbmVmaXQuKQ0K
PiANCj4gPg0KPiA+PiBkaWZmIC0tZ2l0IGEvbGliL2hhc2gvYXJjaC94ODYvY29tcGFyZV9zaWdu
YXR1cmVzLmggYi9saWIvaGFzaC9hcmNoL3g4Ni9jb21wYXJlX3NpZ25hdHVyZXMuaA0KPiA+PiBu
ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleCAwMDAwMDAwMDAwLi43ZWVjNDk5ZTFmDQo+
ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrIGIvbGliL2hhc2gvYXJjaC94ODYvY29tcGFyZV9z
aWduYXR1cmVzLmgNCj4gPj4gQEAgLTAsMCArMSw1MyBAQA0KPiA+PiArLyogU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+PiArICogQ29weXJpZ2h0KGMpIDIwMTAtMjAx
NiBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+PiArICogQ29weXJpZ2h0KGMpIDIwMTgtMjAyNCBBcm0g
TGltaXRlZA0KPiA+PiArICovDQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsgKiB4ODYncyB2ZXJz
aW9uIHVzZXMgYSBzcGFyc2VseSBwYWNrZWQgaGl0bWFzayBidWZmZXI6DQo+ID4+ICsgKiBFdmVy
eSBvdGhlciBiaXQgaXMgcGFkZGluZy4NCj4gPj4gKyAqLw0KPiA+PiArDQo+ID4+ICsjaW5jbHVk
ZSA8aW50dHlwZXMuaD4NCj4gPj4gKyNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ID4+ICsjaW5j
bHVkZSA8cnRlX3ZlY3QuaD4NCj4gPj4gKyNpbmNsdWRlICJydGVfY3Vja29vX2hhc2guaCINCj4g
Pj4gKw0KPiA+PiArI2RlZmluZSBERU5TRV9IQVNIX0JVTEtfTE9PS1VQIDANCj4gPj4gKw0KPiA+
PiArc3RhdGljIGlubGluZSB2b2lkDQo+ID4+ICtjb21wYXJlX3NpZ25hdHVyZXNfc3BhcnNlKHVp
bnQzMl90ICpwcmltX2hhc2hfbWF0Y2hlcywgdWludDMyX3QgKnNlY19oYXNoX21hdGNoZXMsDQo+
ID4+ICsJCQljb25zdCBzdHJ1Y3QgcnRlX2hhc2hfYnVja2V0ICpwcmltX2JrdCwNCj4gPj4gKwkJ
CWNvbnN0IHN0cnVjdCBydGVfaGFzaF9idWNrZXQgKnNlY19ia3QsDQo+ID4+ICsJCQl1aW50MTZf
dCBzaWcsDQo+ID4+ICsJCQllbnVtIHJ0ZV9oYXNoX3NpZ19jb21wYXJlX2Z1bmN0aW9uIHNpZ19j
bXBfZm4pDQo+ID4+ICt7DQo+ID4+ICsJLyogRm9yIG1hdGNoIG1hc2sgdGhlIGZpcnN0IGJpdCBv
ZiBldmVyeSB0d28gYml0cyBpbmRpY2F0ZXMgdGhlIG1hdGNoICovDQo+ID4+ICsJc3dpdGNoIChz
aWdfY21wX2ZuKSB7DQo+ID4+ICsjaWYgZGVmaW5lZChfX1NTRTJfXykgJiYgUlRFX0hBU0hfQlVD
S0VUX0VOVFJJRVMgPD0gOA0KPiA+PiArCWNhc2UgUlRFX0hBU0hfQ09NUEFSRV9TU0U6DQo+ID4+
ICsJCS8qIENvbXBhcmUgYWxsIHNpZ25hdHVyZXMgaW4gdGhlIGJ1Y2tldCAqLw0KPiA+PiArCQkq
cHJpbV9oYXNoX21hdGNoZXMgPSBfbW1fbW92ZW1hc2tfZXBpOChfbW1fY21wZXFfZXBpMTYoDQo+
ID4+ICsJCQkJX21tX2xvYWRfc2kxMjgoDQo+ID4+ICsJCQkJCShfX20xMjhpIGNvbnN0ICopcHJp
bV9ia3QtPnNpZ19jdXJyZW50KSwNCj4gPj4gKwkJCQlfbW1fc2V0MV9lcGkxNihzaWcpKSk7DQo+
ID4+ICsJCS8qIEV4dHJhY3QgdGhlIGV2ZW4taW5kZXggYml0cyBvbmx5ICovDQo+ID4+ICsJCSpw
cmltX2hhc2hfbWF0Y2hlcyAmPSAweDU1NTU7DQo+ID4+ICsJCS8qIENvbXBhcmUgYWxsIHNpZ25h
dHVyZXMgaW4gdGhlIGJ1Y2tldCAqLw0KPiA+PiArCQkqc2VjX2hhc2hfbWF0Y2hlcyA9IF9tbV9t
b3ZlbWFza19lcGk4KF9tbV9jbXBlcV9lcGkxNigNCj4gPj4gKwkJCQlfbW1fbG9hZF9zaTEyOCgN
Cj4gPj4gKwkJCQkJKF9fbTEyOGkgY29uc3QgKilzZWNfYmt0LT5zaWdfY3VycmVudCksDQo+ID4+
ICsJCQkJX21tX3NldDFfZXBpMTYoc2lnKSkpOw0KPiA+PiArCQkvKiBFeHRyYWN0IHRoZSBldmVu
LWluZGV4IGJpdHMgb25seSAqLw0KPiA+PiArCQkqc2VjX2hhc2hfbWF0Y2hlcyAmPSAweDU1NTU7
DQo+ID4+ICsJCWJyZWFrOw0KPiA+PiArI2VuZGlmIC8qIGRlZmluZWQoX19TU0UyX18pICovDQo+
ID4+ICsJZGVmYXVsdDoNCj4gPj4gKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBSVEVf
SEFTSF9CVUNLRVRfRU5UUklFUzsgaSsrKSB7DQo+ID4+ICsJCQkqcHJpbV9oYXNoX21hdGNoZXMg
fD0NCj4gPj4gKwkJCQkoKHNpZyA9PSBwcmltX2JrdC0+c2lnX2N1cnJlbnRbaV0pIDw8IChpIDw8
IDEpKTsNCj4gPj4gKwkJCSpzZWNfaGFzaF9tYXRjaGVzIHw9DQo+ID4+ICsJCQkJKChzaWcgPT0g
c2VjX2JrdC0+c2lnX2N1cnJlbnRbaV0pIDw8IChpIDw8IDEpKTsNCj4gPj4gKwkJfQ0KPiA+PiAr
CX0NCj4gPj4gK30NCg0K