From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <xuemingl@mellanox.com>
Received: from EUR02-AM5-obe.outbound.protection.outlook.com
 (mail-eopbgr00052.outbound.protection.outlook.com [40.107.0.52])
 by dpdk.org (Postfix) with ESMTP id 11D1F1B8AB
 for <dev@dpdk.org>; Wed, 11 Apr 2018 10:11:53 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com;
 s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version;
 bh=CkxC1MsgPaU9uvqKCEkWUnVNmOb72Rio67UnXkyE1Vo=;
 b=GWtL8jwDgsJUDuv0sI6MGFdAaeggnE/dHT+6dYR2c/x/BnMYDn6qwF4IHweoguI8aVOps1PSOmRXBVTGJ9lsn4aQ/TqNNaZQhXizS3ntktc/dOqxSfRPA/Grl84xyN9BGD0Kj8agurEw1wQN/Er3vZK0EsB3HJl73Al6q13swK0=
Received: from VI1PR05MB1678.eurprd05.prod.outlook.com (10.165.235.152) by
 VI1PR05MB4782.eurprd05.prod.outlook.com (20.176.4.31) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id
 15.20.675.10; Wed, 11 Apr 2018 08:11:50 +0000
Received: from VI1PR05MB1678.eurprd05.prod.outlook.com
 ([fe80::b8e2:e81f:98a:b6d0]) by VI1PR05MB1678.eurprd05.prod.outlook.com
 ([fe80::b8e2:e81f:98a:b6d0%14]) with mapi id 15.20.0653.018; Wed, 11 Apr 2018
 08:11:50 +0000
From: "Xueming(Steven) Li" <xuemingl@mellanox.com>
To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= <nelio.laranjeiro@6wind.com>
CC: Shahaf Shuler <shahafs@mellanox.com>, "dev@dpdk.org" <dev@dpdk.org>
Thread-Topic: [PATCH v2 04/15] net/mlx5: support Rx tunnel type identification
Thread-Index: AQHT0NCyvMpimHYno0ayzuHHFIBwyaP6HF2AgAEWWqA=
Date: Wed, 11 Apr 2018 08:11:50 +0000
Message-ID: <VI1PR05MB16786639EFF14130073A8E35ACBD0@VI1PR05MB1678.eurprd05.prod.outlook.com>
References: <20180410133415.189905-1-xuemingl@mellanox.com>
 <20180410133415.189905-5-xuemingl@mellanox.com>
 <20180410151711.zlxxkzycknrtlwhr@laranjeiro-vm.dev.6wind.com>
In-Reply-To: <20180410151711.zlxxkzycknrtlwhr@laranjeiro-vm.dev.6wind.com>
Accept-Language: zh-CN, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=xuemingl@mellanox.com; 
x-originating-ip: [114.83.166.179]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; VI1PR05MB4782;
 7:TS1zwzPqH0EbKnQFRTWdp0ANe0dP5IIhh+zrj+qkrVWxVeHlunrSdAb24yAcg7ZsKO1nNexA+gZrdmUf9cRO1BkEX3nPn2v+FEo48ODlsMWNMZlLSDW50tsMlIhMIhCOeQLtAcxlUpY/SBI1LjseGGeZgrFLcX/zJXrDtoREeJ5UV06zSVbNJQoQUbzOAdXYQcjsIyen2vo+8EyoSQp6RoGP5K/u2wLciXE+gqLcZPU8Q7dNS6BExyfLXTcQsuaw
x-ms-exchange-antispam-srfa-diagnostics: SOS;
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(7020095)(4652020)(5600026)(3008032)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020);
 SRVR:VI1PR05MB4782; 
x-ms-traffictypediagnostic: VI1PR05MB4782:
x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr
x-microsoft-antispam-prvs: <VI1PR05MB47824894DD35B8C667AFC0FCACBD0@VI1PR05MB4782.eurprd05.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:;
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0;
 RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231221)(944501327)(52105095)(93006095)(93001095)(10201501046)(3002001)(6055026)(6041310)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);
 SRVR:VI1PR05MB4782; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB4782; 
x-forefront-prvs: 0639027A9E
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(346002)(366004)(376002)(39860400002)(39380400002)(189003)(199004)(13464003)(6916009)(486006)(2900100001)(14454004)(3846002)(68736007)(6116002)(86362001)(6436002)(575784001)(26005)(316002)(4326008)(53936002)(446003)(66066001)(11346002)(229853002)(6246003)(105586002)(97736004)(54906003)(476003)(3660700001)(186003)(102836004)(25786009)(5250100002)(3280700002)(53946003)(9686003)(99286004)(76176011)(2906002)(33656002)(55016002)(5660300001)(106356001)(59450400001)(8936002)(74316002)(53546011)(6506007)(7736002)(305945005)(81166006)(81156014)(7696005)(478600001)(8676002)(21314002)(579004);
 DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB4782;
 H:VI1PR05MB1678.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: mellanox.com does not designate
 permitted sender hosts)
x-microsoft-antispam-message-info: Ik0S6bV2rT4sy3w/zguoc473fPSkOb/1vAOS2EuAD9s4IprlCQzwfdv8pjFIbzD/jhxP7V4JMWfAygmxIcdZJ1BmPkFXNuBnqnpTAbB+RmdVusZwPIuuBmQ6RrpjDDcUgxBbaSzNxUInFSXtLkauMkj5ihxnKadJEgyE09Z8Iu+pja3U+Luj4Ep1HppyFx7yJlvwFVtRj1oYCapVrhEE+G2TtgmOw4HxVPLYbW1P6EQvbgt6omoA9XDgwq5zeNz5rw3FVa8EOftJFGHCV2JwdEaI605Zb/zZqlz3Dtb9RvKSmjdsKLfV7O19dyPO6Pa22ovTepv4sMvSPC/xYqVeOdesuMi1pxG7dHc8s0hTf/IrLsvcFiv2RaF4txfTn9kzjaaaE2iHnZTnhn6YXGv8Gz3mTWZwjgOhMHhiR+tSLhY=
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Office365-Filtering-Correlation-Id: 259d4d8e-d632-416f-ac51-08d59f83e0ed
X-OriginatorOrg: Mellanox.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 259d4d8e-d632-416f-ac51-08d59f83e0ed
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Apr 2018 08:11:50.4279 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4782
Subject: Re: [dpdk-dev] [PATCH v2 04/15] net/mlx5: support Rx tunnel type
	identification
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Apr 2018 08:11:53 -0000

SGkgTmVsaW8sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTsOpbGlv
IExhcmFuamVpcm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPg0KPiBTZW50OiBUdWVzZGF5
LCBBcHJpbCAxMCwgMjAxOCAxMToxNyBQTQ0KPiBUbzogWHVlbWluZyhTdGV2ZW4pIExpIDx4dWVt
aW5nbEBtZWxsYW5veC5jb20+DQo+IENjOiBTaGFoYWYgU2h1bGVyIDxzaGFoYWZzQG1lbGxhbm94
LmNvbT47IGRldkBkcGRrLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDA0LzE1XSBuZXQv
bWx4NTogc3VwcG9ydCBSeCB0dW5uZWwgdHlwZQ0KPiBpZGVudGlmaWNhdGlvbg0KPiANCj4gT24g
VHVlLCBBcHIgMTAsIDIwMTggYXQgMDk6MzQ6MDRQTSArMDgwMCwgWHVlbWluZyBMaSB3cm90ZToN
Cj4gPiBUaGlzIHBhdGNoIGludHJvZHVjZWQgdHVubmVsIHR5cGUgaWRlbnRpZmljYXRpb24gYmFz
ZWQgb24gZmxvdyBydWxlcy4NCj4gPiBJZiBmbG93cyBvZiBtdWx0aXBsZSB0dW5uZWwgdHlwZXMg
YnVpbHQgb24gc2FtZSBxdWV1ZSwNCj4gPiBSVEVfUFRZUEVfVFVOTkVMX01BU0sgd2lsbCBiZSBy
ZXR1cm5lZCwgYml0cyBpbiBmbG93IG1hcmsgY291bGQgYmUNCj4gPiB1c2VkIGFzIHR1bm5lbCB0
eXBlIGlkZW50aWZpZXIuDQo+IA0KPiBJIGRvbid0IHNlZSBhbnl3aGVyZSBpbiB0aGlzIHBhdGNo
IHdoZXJlIHRoZSBiaXRzIGFyZSByZXNlcnZlZCB0byBpZGVudGlmeQ0KPiBhIGZsb3csIG5vciB2
YWx1ZXMgd2hpY2ggY2FuIGhlbHAgdG8gaWRlbnRpZnkgaXQuDQo+IA0KPiBJcyB0aGlzIG1pc3Np
bmc/DQo+IA0KPiBBbnl3YXkgd2UgaGF2ZSBhbHJlYWR5IHZlcnkgZmV3IGJpdHMgaW4gdGhlIG1h
cmsgbWFraW5nIGl0IGRpZmZpY3VsdCB0byBiZQ0KPiB1c2VkIGJ5IHRoZSB1c2VyLCByZXNlcnZp
bmcgYWdhaW4gc29tZSB0byBtYXkgbGVhZCB0byByZW1vdmUgdGhlIG1hcmsNCj4gc3VwcG9ydCBm
cm9tIHRoZSBmbG93cy4NCg0KTm90IGFsbCB1c2VycyB3aWxsIHVzZSBtdWx0aXBsZSB0dW5uZWwg
dHlwZXMsIHRoaXMgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMgcGF0Y2gNCnNldCBhbmQgbGVmdCB0
byB1c2VyIGRlY2lzaW9uLiBJJ2xsIHVwZGF0ZSBjb21tZW50cyB0byBtYWtlIHRoaXMgY2xlYXIu
DQoNCj4gDQo+ID4gU2lnbmVkLW9mZi1ieTogWHVlbWluZyBMaSA8eHVlbWluZ2xAbWVsbGFub3gu
Y29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jICAgICAgICAg
IHwgMTI1DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0NCj4gPiAgZHJpdmVy
cy9uZXQvbWx4NS9tbHg1X3J4cS5jICAgICAgICAgICB8ICAxMSArKy0NCj4gPiAgZHJpdmVycy9u
ZXQvbWx4NS9tbHg1X3J4dHguYyAgICAgICAgICB8ICAxMiArKy0tDQo+ID4gIGRyaXZlcnMvbmV0
L21seDUvbWx4NV9yeHR4LmggICAgICAgICAgfCAgIDkgKystDQo+ID4gIGRyaXZlcnMvbmV0L21s
eDUvbWx4NV9yeHR4X3ZlY19uZW9uLmggfCAgMjEgKysrLS0tDQo+ID4gZHJpdmVycy9uZXQvbWx4
NS9tbHg1X3J4dHhfdmVjX3NzZS5oICB8ICAxNyArKystLQ0KPiA+ICA2IGZpbGVzIGNoYW5nZWQs
IDE1NyBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQg
YS9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jDQo+ID4gYi9kcml2ZXJzL25ldC9tbHg1L21s
eDVfZmxvdy5jIGluZGV4IDg3MGQwNTI1MC4uNjVkN2E5YjYyIDEwMDY0NA0KPiA+IC0tLSBhL2Ry
aXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmMNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21s
eDVfZmxvdy5jDQo+ID4gQEAgLTIyMiw2ICsyMjIsNyBAQCBzdHJ1Y3QgcnRlX2Zsb3cgew0KPiA+
ICAJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9yc3MgcnNzX2NvbmY7IC8qKjwgUlNTIGNvbmZpZ3Vy
YXRpb24gKi8NCj4gPiAgCXVpbnQxNl90ICgqcXVldWVzKVtdOyAvKio8IFF1ZXVlcyBpbmRleGVz
IHRvIHVzZS4gKi8NCj4gPiAgCXVpbnQ4X3QgcnNzX2tleVs0MF07IC8qKjwgY29weSBvZiB0aGUg
UlNTIGtleS4gKi8NCj4gPiArCXVpbnQzMl90IHR1bm5lbDsgLyoqPCBUdW5uZWwgdHlwZSBvZiBS
VEVfUFRZUEVfVFVOTkVMX1hYWC4gKi8NCj4gPiAgCXN0cnVjdCBpYnZfY291bnRlcl9zZXQgKmNz
OyAvKio8IEhvbGRzIHRoZSBjb3VudGVycyBmb3IgdGhlIHJ1bGUuICovDQo+ID4gIAlzdHJ1Y3Qg
bWx4NV9mbG93X2NvdW50ZXJfc3RhdHMgY291bnRlcl9zdGF0czsvKio8VGhlIGNvdW50ZXIgc3Rh
dHMuDQo+ICovDQo+ID4gIAlzdHJ1Y3QgbWx4NV9mbG93IGZyeHFbUlRFX0RJTShoYXNoX3J4cV9p
bml0KV07IEBAIC0yMzgsNiArMjM5LDE5IEBADQo+ID4gc3RydWN0IHJ0ZV9mbG93IHsNCj4gPiAg
CSh0eXBlKSA9PSBSVEVfRkxPV19JVEVNX1RZUEVfVlhMQU4gfHwgXA0KPiA+ICAJKHR5cGUpID09
IFJURV9GTE9XX0lURU1fVFlQRV9HUkUpDQo+ID4NCj4gPiArY29uc3QgdWludDMyX3QgZmxvd19w
dHlwZVtdID0gew0KPiA+ICsJW1JURV9GTE9XX0lURU1fVFlQRV9WWExBTl0gPSBSVEVfUFRZUEVf
VFVOTkVMX1ZYTEFOLA0KPiA+ICsJW1JURV9GTE9XX0lURU1fVFlQRV9HUkVdID0gUlRFX1BUWVBF
X1RVTk5FTF9HUkUsIH07DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFBUWVBFX0lEWCh0KSAoKFJURV9Q
VFlQRV9UVU5ORUxfTUFTSyAmICh0KSkgPj4gMTIpDQo+ID4gKw0KPiA+ICtjb25zdCB1aW50MzJf
dCBwdHlwZV9leHRbXSA9IHsNCj4gPiArCVtQVFlQRV9JRFgoUlRFX1BUWVBFX1RVTk5FTF9WWExB
TildID0gUlRFX1BUWVBFX1RVTk5FTF9WWExBTiB8DQo+ID4gKwkJCQkJICAgICAgUlRFX1BUWVBF
X0w0X1VEUCwNCj4gPiArCVtQVFlQRV9JRFgoUlRFX1BUWVBFX1RVTk5FTF9HUkUpXSA9IFJURV9Q
VFlQRV9UVU5ORUxfR1JFLCB9Ow0KPiA+ICsNCj4gPiAgLyoqIFN0cnVjdHVyZSB0byBnZW5lcmF0
ZSBhIHNpbXBsZSBncmFwaCBvZiBsYXllcnMgc3VwcG9ydGVkIGJ5IHRoZQ0KPiA+IE5JQy4gKi8g
IHN0cnVjdCBtbHg1X2Zsb3dfaXRlbXMgew0KPiA+ICAJLyoqIExpc3Qgb2YgcG9zc2libGUgYWN0
aW9ucyBmb3IgdGhlc2UgaXRlbXMuICovIEBAIC00MzcsNiArNDUxLDcgQEANCj4gPiBzdHJ1Y3Qg
bWx4NV9mbG93X3BhcnNlIHsNCj4gPiAgCXVpbnQxNl90IHF1ZXVlc1tSVEVfTUFYX1FVRVVFU19Q
RVJfUE9SVF07IC8qKjwgUXVldWVzIGluZGV4ZXMgdG8gdXNlLg0KPiAqLw0KPiA+ICAJdWludDhf
dCByc3Nfa2V5WzQwXTsgLyoqPCBjb3B5IG9mIHRoZSBSU1Mga2V5LiAqLw0KPiA+ICAJZW51bSBo
YXNoX3J4cV90eXBlIGxheWVyOyAvKio8IExhc3QgcGF0dGVybiBsYXllciBkZXRlY3RlZC4gKi8N
Cj4gPiArCXVpbnQzMl90IHR1bm5lbDsgLyoqPCBUdW5uZWwgdHlwZSBvZiBSVEVfUFRZUEVfVFVO
TkVMX1hYWC4gKi8NCj4gPiAgCXN0cnVjdCBpYnZfY291bnRlcl9zZXQgKmNzOyAvKio8IEhvbGRz
IHRoZSBjb3VudGVyIHNldCBmb3IgdGhlIHJ1bGUNCj4gKi8NCj4gPiAgCXN0cnVjdCB7DQo+ID4g
IAkJc3RydWN0IGlidl9mbG93X2F0dHIgKmlidl9hdHRyOw0KPiA+IEBAIC04NjAsNyArODc1LDcg
QEAgbWx4NV9mbG93X2NvbnZlcnRfaXRlbXNfdmFsaWRhdGUoY29uc3Qgc3RydWN0DQo+IHJ0ZV9m
bG93X2l0ZW0gaXRlbXNbXSwNCj4gPiAgCQlpZiAocmV0KQ0KPiA+ICAJCQlnb3RvIGV4aXRfaXRl
bV9ub3Rfc3VwcG9ydGVkOw0KPiA+ICAJCWlmIChJU19UVU5ORUwoaXRlbXMtPnR5cGUpKSB7DQo+
ID4gLQkJCWlmIChwYXJzZXItPmlubmVyKSB7DQo+ID4gKwkJCWlmIChwYXJzZXItPnR1bm5lbCkg
ew0KPiA+ICAJCQkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+ICAJCQkJ
CQkgICBSVEVfRkxPV19FUlJPUl9UWVBFX0lURU0sDQo+ID4gIAkJCQkJCSAgIGl0ZW1zLA0KPiA+
IEBAIC04NjksNiArODg0LDcgQEAgbWx4NV9mbG93X2NvbnZlcnRfaXRlbXNfdmFsaWRhdGUoY29u
c3Qgc3RydWN0DQo+IHJ0ZV9mbG93X2l0ZW0gaXRlbXNbXSwNCj4gPiAgCQkJCXJldHVybiAtcnRl
X2Vycm5vOw0KPiA+ICAJCQl9DQo+ID4gIAkJCXBhcnNlci0+aW5uZXIgPSBJQlZfRkxPV19TUEVD
X0lOTkVSOw0KPiA+ICsJCQlwYXJzZXItPnR1bm5lbCA9IGZsb3dfcHR5cGVbaXRlbXMtPnR5cGVd
Ow0KPiA+ICAJCX0NCj4gPiAgCQlpZiAocGFyc2VyLT5kcm9wKSB7DQo+ID4gIAkJCXBhcnNlci0+
cXVldWVbSEFTSF9SWFFfRVRIXS5vZmZzZXQgKz0gY3VyX2l0ZW0tPmRzdF9zejsNCj4gQEAgLTEx
NjUsNg0KPiA+ICsxMTgxLDcgQEAgbWx4NV9mbG93X2NvbnZlcnQoc3RydWN0IHJ0ZV9ldGhfZGV2
ICpkZXYsDQo+ID4gIAl9DQo+ID4gIAkvKiBUaGlyZCBzdGVwLiBDb252ZXJzaW9uIHBhcnNlLCBm
aWxsIHRoZSBzcGVjaWZpY2F0aW9ucy4gKi8NCj4gPiAgCXBhcnNlci0+aW5uZXIgPSAwOw0KPiA+
ICsJcGFyc2VyLT50dW5uZWwgPSAwOw0KPiA+ICAJZm9yICg7IGl0ZW1zLT50eXBlICE9IFJURV9G
TE9XX0lURU1fVFlQRV9FTkQ7ICsraXRlbXMpIHsNCj4gPiAgCQlzdHJ1Y3QgbWx4NV9mbG93X2Rh
dGEgZGF0YSA9IHsNCj4gPiAgCQkJLnBhcnNlciA9IHBhcnNlciwNCj4gPiBAQCAtMTYzMyw2ICsx
NjUwLDcgQEAgbWx4NV9mbG93X2NyZWF0ZV92eGxhbihjb25zdCBzdHJ1Y3QNCj4gPiBydGVfZmxv
d19pdGVtICppdGVtLA0KPiA+DQo+ID4gIAlpZC52bmlbMF0gPSAwOw0KPiA+ICAJcGFyc2VyLT5p
bm5lciA9IElCVl9GTE9XX1NQRUNfSU5ORVI7DQo+ID4gKwlwYXJzZXItPnR1bm5lbCA9IHB0eXBl
X2V4dFtQVFlQRV9JRFgoUlRFX1BUWVBFX1RVTk5FTF9WWExBTildOw0KPiA+ICAJaWYgKHNwZWMp
IHsNCj4gPiAgCQlpZiAoIW1hc2spDQo+ID4gIAkJCW1hc2sgPSBkZWZhdWx0X21hc2s7DQo+ID4g
QEAgLTE2ODYsNiArMTcwNCw3IEBAIG1seDVfZmxvd19jcmVhdGVfZ3JlKGNvbnN0IHN0cnVjdCBy
dGVfZmxvd19pdGVtDQo+ICppdGVtIF9fcnRlX3VudXNlZCwNCj4gPiAgCX07DQo+ID4NCj4gPiAg
CXBhcnNlci0+aW5uZXIgPSBJQlZfRkxPV19TUEVDX0lOTkVSOw0KPiA+ICsJcGFyc2VyLT50dW5u
ZWwgPSBwdHlwZV9leHRbUFRZUEVfSURYKFJURV9QVFlQRV9UVU5ORUxfR1JFKV07DQo+ID4gIAlt
bHg1X2Zsb3dfY3JlYXRlX2NvcHkocGFyc2VyLCAmdHVubmVsLCBzaXplKTsNCj4gPiAgCXJldHVy
biAwOw0KPiA+ICB9DQo+ID4gQEAgLTE4NjQsNyArMTg4Myw4IEBAIG1seDVfZmxvd19jcmVhdGVf
YWN0aW9uX3F1ZXVlX3JzcyhzdHJ1Y3QNCj4gcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCQkJCSAg
ICAgIHBhcnNlci0+cnNzX2NvbmYua2V5X2xlbiwNCj4gPiAgCQkJCSAgICAgIGhhc2hfZmllbGRz
LA0KPiA+ICAJCQkJICAgICAgcGFyc2VyLT5yc3NfY29uZi5xdWV1ZSwNCj4gPiAtCQkJCSAgICAg
IHBhcnNlci0+cnNzX2NvbmYucXVldWVfbnVtKTsNCj4gPiArCQkJCSAgICAgIHBhcnNlci0+cnNz
X2NvbmYucXVldWVfbnVtLA0KPiA+ICsJCQkJICAgICAgcGFyc2VyLT50dW5uZWwpOw0KPiA+ICAJ
CWlmIChmbG93LT5mcnhxW2ldLmhyeHEpDQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+ICAJCWZsb3ct
PmZyeHFbaV0uaHJ4cSA9DQo+ID4gQEAgLTE4NzMsNyArMTg5Myw4IEBAIG1seDVfZmxvd19jcmVh
dGVfYWN0aW9uX3F1ZXVlX3JzcyhzdHJ1Y3QNCj4gcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCQkJ
CSAgICAgIHBhcnNlci0+cnNzX2NvbmYua2V5X2xlbiwNCj4gPiAgCQkJCSAgICAgIGhhc2hfZmll
bGRzLA0KPiA+ICAJCQkJICAgICAgcGFyc2VyLT5yc3NfY29uZi5xdWV1ZSwNCj4gPiAtCQkJCSAg
ICAgIHBhcnNlci0+cnNzX2NvbmYucXVldWVfbnVtKTsNCj4gPiArCQkJCSAgICAgIHBhcnNlci0+
cnNzX2NvbmYucXVldWVfbnVtLA0KPiA+ICsJCQkJICAgICAgcGFyc2VyLT50dW5uZWwpOw0KPiA+
ICAJCWlmICghZmxvdy0+ZnJ4cVtpXS5ocnhxKSB7DQo+ID4gIAkJCXJldHVybiBydGVfZmxvd19l
cnJvcl9zZXQoZXJyb3IsIEVOT01FTSwNCj4gPiAgCQkJCQkJICBSVEVfRkxPV19FUlJPUl9UWVBF
X0hBTkRMRSwNCj4gPiBAQCAtMTg4NSw2ICsxOTA2LDQwIEBAIG1seDVfZmxvd19jcmVhdGVfYWN0
aW9uX3F1ZXVlX3JzcyhzdHJ1Y3QNCj4gPiBydGVfZXRoX2RldiAqZGV2LCAgfQ0KPiA+DQo+ID4g
IC8qKg0KPiA+ICsgKiBSWFEgdXBkYXRlIGFmdGVyIGZsb3cgcnVsZSBjcmVhdGlvbi4NCj4gPiAr
ICoNCj4gPiArICogQHBhcmFtIGRldg0KPiA+ICsgKiAgIFBvaW50ZXIgdG8gRXRoZXJuZXQgZGV2
aWNlLg0KPiA+ICsgKiBAcGFyYW0gZmxvdw0KPiA+ICsgKiAgIFBvaW50ZXIgdG8gdGhlIGZsb3cg
cnVsZS4NCj4gPiArICovDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK21seDVfZmxvd19jcmVhdGVf
dXBkYXRlX3J4cXMoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBydGVfZmxvdw0KPiA+
ICsqZmxvdykgew0KPiA+ICsJc3RydWN0IHByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2
YXRlOw0KPiA+ICsJdW5zaWduZWQgaW50IGk7DQo+ID4gKw0KPiA+ICsJaWYgKCFkZXYtPmRhdGEt
PmRldl9zdGFydGVkKQ0KPiA+ICsJCXJldHVybjsNCj4gPiArCWZvciAoaSA9IDA7IGkgIT0gZmxv
dy0+cnNzX2NvbmYucXVldWVfbnVtOyArK2kpIHsNCj4gPiArCQlzdHJ1Y3QgbWx4NV9yeHFfZGF0
YSAqcnhxX2RhdGEgPSAoKnByaXYtPnJ4cXMpDQo+ID4gKwkJCQkJCSBbKCpmbG93LT5xdWV1ZXMp
W2ldXTsNCj4gPiArCQlzdHJ1Y3QgbWx4NV9yeHFfY3RybCAqcnhxX2N0cmwgPQ0KPiA+ICsJCQlj
b250YWluZXJfb2YocnhxX2RhdGEsIHN0cnVjdCBtbHg1X3J4cV9jdHJsLCByeHEpOw0KPiA+ICsJ
CXVpbnQ4X3QgdHVubmVsID0gUFRZUEVfSURYKGZsb3ctPnR1bm5lbCk7DQo+ID4gKw0KPiA+ICsJ
CXJ4cV9kYXRhLT5tYXJrIHw9IGZsb3ctPm1hcms7DQo+ID4gKwkJaWYgKCF0dW5uZWwpDQo+ID4g
KwkJCWNvbnRpbnVlOw0KPiA+ICsJCXJ4cV9jdHJsLT50dW5uZWxfdHlwZXNbdHVubmVsXSArPSAx
Ow0KPiANCj4gSSBkb24ndCB1bmRlcnN0YW5kIHdoeSB5b3UgbmVlZCBzdWNoIGFycmF5LCB0aGUg
TklDIGlzIHVuYWJsZSB0byByZXR1cm4NCj4gdGhlIHR1bm5lbCB0eXBlIGhhcyBpdCByZXR1cm5z
IG9ubHkgb25lIGJpdCBzYXlpbmcgdHVubmVsLg0KPiBXaHkgZG9uJ3QgaXQgc3RvcmUgaW4gdGhl
IHByaXYgc3RydWN0dXJlIHRoZSBjdXJyZW50IGNvbmZpZ3VyZWQgdHVubmVsPw0KDQpUaGlzIGFy
cmF5IGlzIHVzZWQgdG8gY291bnQgdHVubmVsIHR5cGVzIGJvdW5kIHRvIHF1ZXVlLCBpZiBvbmx5
IG9uZSB0dW5uZWwgdHlwZSwNCnB0eXBlIHdpbGwgcmVwb3J0IHRoYXQgdHVubmVsIHR5cGUsIFRV
Tk5FTCBNQVNLKG1heCB2YWx1ZSkgd2lsbCBiZSByZXR1cm5lZCBpZiANCm11bHRpcGxlIHR5cGVz
IGJvdW5kIHRvIGEgcXVldWUuDQoNCkZsb3cgcnNzIGFjdGlvbiBzcGVjaWZpZXMgcXVldWVzIHRo
YXQgYmluZGluZyB0byB0dW5uZWwsIHRodXMgd2UgY2FuJ3QgYXNzdW1lDQphbGwgcXVldWVzIGhh
dmUgc2FtZSB0dW5uZWwgdHlwZXMsIHNvIHRoaXMgaXMgYSBwZXIgcXVldWUgc3RydWN0dXJlLg0K
DQoNCmhhdmUgDQoNCj4gDQo+ID4gKwkJaWYgKHJ4cV9kYXRhLT50dW5uZWwgIT0gZmxvdy0+dHVu
bmVsKQ0KPiA+ICsJCQlyeHFfZGF0YS0+dHVubmVsID0gcnhxX2RhdGEtPnR1bm5lbCA/DQo+ID4g
KwkJCQkJICAgUlRFX1BUWVBFX1RVTk5FTF9NQVNLIDoNCj4gPiArCQkJCQkgICBmbG93LT50dW5u
ZWw7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICAgKiBDb21wbGV0ZSBm
bG93IHJ1bGUgY3JlYXRpb24uDQo+ID4gICAqDQo+ID4gICAqIEBwYXJhbSBkZXYNCj4gPiBAQCAt
MTk0NCwxMiArMTk5OSw3IEBAIG1seDVfZmxvd19jcmVhdGVfYWN0aW9uX3F1ZXVlKHN0cnVjdCBy
dGVfZXRoX2Rldg0KPiAqZGV2LA0KPiA+ICAJCQkJICAgTlVMTCwgImludGVybmFsIGVycm9yIGlu
IGZsb3cgY3JlYXRpb24iKTsNCj4gPiAgCQlnb3RvIGVycm9yOw0KPiA+ICAJfQ0KPiA+IC0JZm9y
IChpID0gMDsgaSAhPSBwYXJzZXItPnJzc19jb25mLnF1ZXVlX251bTsgKytpKSB7DQo+ID4gLQkJ
c3RydWN0IG1seDVfcnhxX2RhdGEgKnEgPQ0KPiA+IC0JCQkoKnByaXYtPnJ4cXMpW3BhcnNlci0+
cnNzX2NvbmYucXVldWVbaV1dOw0KPiA+IC0NCj4gPiAtCQlxLT5tYXJrIHw9IHBhcnNlci0+bWFy
azsNCj4gPiAtCX0NCj4gPiArCW1seDVfZmxvd19jcmVhdGVfdXBkYXRlX3J4cXMoZGV2LCBmbG93
KTsNCj4gPiAgCXJldHVybiAwOw0KPiA+ICBlcnJvcjoNCj4gPiAgCXJldCA9IHJ0ZV9lcnJubzsg
LyogU2F2ZSBydGVfZXJybm8gYmVmb3JlIGNsZWFudXAuICovIEBAIC0yMDIyLDYNCj4gPiArMjA3
Miw3IEBAIG1seDVfZmxvd19saXN0X2NyZWF0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4g
PiAgCX0NCj4gPiAgCS8qIENvcHkgY29uZmlndXJhdGlvbi4gKi8NCj4gPiAgCWZsb3ctPnF1ZXVl
cyA9ICh1aW50MTZfdCAoKilbXSkoZmxvdyArIDEpOw0KPiA+ICsJZmxvdy0+dHVubmVsID0gcGFy
c2VyLnR1bm5lbDsNCj4gPiAgCWZsb3ctPnJzc19jb25mID0gKHN0cnVjdCBydGVfZmxvd19hY3Rp
b25fcnNzKXsNCj4gPiAgCQkuZnVuYyA9IFJURV9FVEhfSEFTSF9GVU5DVElPTl9ERUZBVUxULA0K
PiA+ICAJCS5sZXZlbCA9IDAsDQo+ID4gQEAgLTIxMTMsOSArMjE2NCwzOCBAQCBtbHg1X2Zsb3df
bGlzdF9kZXN0cm95KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiBzdHJ1Y3QgbWx4NV9mbG93
cyAqbGlzdCwNCj4gPiAgCXN0cnVjdCBwcml2ICpwcml2ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0
ZTsNCj4gPiAgCXVuc2lnbmVkIGludCBpOw0KPiA+DQo+ID4gLQlpZiAoZmxvdy0+ZHJvcCB8fCAh
Zmxvdy0+bWFyaykNCj4gPiArCWlmIChmbG93LT5kcm9wIHx8ICFkZXYtPmRhdGEtPmRldl9zdGFy
dGVkKQ0KPiA+ICAJCWdvdG8gZnJlZTsNCj4gPiAtCWZvciAoaSA9IDA7IGkgIT0gZmxvdy0+cnNz
X2NvbmYucXVldWVfbnVtOyArK2kpIHsNCj4gPiArCWZvciAoaSA9IDA7IGZsb3ctPnR1bm5lbCAm
JiBpICE9IGZsb3ctPnJzc19jb25mLnF1ZXVlX251bTsgKytpKSB7DQo+ID4gKwkJLyogVXBkYXRl
IHF1ZXVlIHR1bm5lbCB0eXBlLiAqLw0KPiA+ICsJCXN0cnVjdCBtbHg1X3J4cV9kYXRhICpyeHFf
ZGF0YSA9ICgqcHJpdi0+cnhxcykNCj4gPiArCQkJCQkJIFsoKmZsb3ctPnF1ZXVlcylbaV1dOw0K
PiA+ICsJCXN0cnVjdCBtbHg1X3J4cV9jdHJsICpyeHFfY3RybCA9DQo+ID4gKwkJCWNvbnRhaW5l
cl9vZihyeHFfZGF0YSwgc3RydWN0IG1seDVfcnhxX2N0cmwsIHJ4cSk7DQo+ID4gKwkJdWludDhf
dCB0dW5uZWwgPSBQVFlQRV9JRFgoZmxvdy0+dHVubmVsKTsNCj4gPiArDQo+ID4gKwkJUlRFX0FT
U0VSVChyeHFfY3RybC0+dHVubmVsX3R5cGVzW3R1bm5lbF0gPiAwKTsNCj4gDQo+IHVzZSBhc3Nl
cnQoKSBub3QgUlRFX0FTU0VSVCgpIG9yIG1ha2UgYSBwYXRjaCB0byBtYWtlIHN1Y2ggbW92ZSBp
biB0aGUNCj4gd2hvbGUgUE1ELg0KPiANCj4gPiArCQlyeHFfY3RybC0+dHVubmVsX3R5cGVzW3R1
bm5lbF0gLT0gMTsNCj4gPiArCQlpZiAoIXJ4cV9jdHJsLT50dW5uZWxfdHlwZXNbdHVubmVsXSkg
ew0KPiA+ICsJCQkvKiBVcGRhdGUgdHVubmVsIHR5cGUuICovDQo+ID4gKwkJCXVpbnQ4X3QgajsN
Cj4gPiArCQkJdWludDhfdCB0eXBlcyA9IDA7DQo+ID4gKwkJCXVpbnQ4X3QgbGFzdDsNCj4gPiAr
DQo+ID4gKwkJCWZvciAoaiA9IDA7IGogPCBSVEVfRElNKHJ4cV9jdHJsLT50dW5uZWxfdHlwZXMp
OyBqKyspDQo+ID4gKwkJCQlpZiAocnhxX2N0cmwtPnR1bm5lbF90eXBlc1tqXSkgew0KPiA+ICsJ
CQkJCXR5cGVzICs9IDE7DQo+ID4gKwkJCQkJbGFzdCA9IGo7DQo+ID4gKwkJCQl9DQo+ID4gKwkJ
CS8qIEtlZXAgc2FtZSBpZiBtb3JlIHRoYW4gb25lIHR1bm5lbCB0eXBlcyBsZWZ0LiAqLw0KPiA+
ICsJCQlpZiAodHlwZXMgPT0gMSkNCj4gPiArCQkJCXJ4cV9kYXRhLT50dW5uZWwgPSBwdHlwZV9l
eHRbbGFzdF07DQo+ID4gKwkJCWVsc2UgaWYgKHR5cGVzID09IDApDQo+ID4gKwkJCQkvKiBObyB0
dW5uZWwgdHlwZSBsZWZ0LiAqLw0KPiA+ICsJCQkJcnhxX2RhdGEtPnR1bm5lbCA9IDA7DQo+ID4g
KwkJfQ0KPiA+ICsJfQ0KPiA+ICsJZm9yIChpID0gMDsgZmxvdy0+bWFyayAmJiBpICE9IGZsb3ct
PnJzc19jb25mLnF1ZXVlX251bTsgKytpKSB7DQo+ID4gIAkJc3RydWN0IHJ0ZV9mbG93ICp0bXA7
DQo+ID4gIAkJaW50IG1hcmsgPSAwOw0KPiA+DQo+ID4gQEAgLTIzMzQsOSArMjQxNCw5IEBAIG1s
eDVfZmxvd19zdG9wKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QNCj4gPiBtbHg1X2Zs
b3dzICpsaXN0KSAgew0KPiA+ICAJc3RydWN0IHByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9w
cml2YXRlOw0KPiA+ICAJc3RydWN0IHJ0ZV9mbG93ICpmbG93Ow0KPiA+ICsJdW5zaWduZWQgaW50
IGk7DQo+ID4NCj4gPiAgCVRBSUxRX0ZPUkVBQ0hfUkVWRVJTRShmbG93LCBsaXN0LCBtbHg1X2Zs
b3dzLCBuZXh0KSB7DQo+ID4gLQkJdW5zaWduZWQgaW50IGk7DQo+ID4gIAkJc3RydWN0IG1seDVf
aW5kX3RhYmxlX2lidiAqaW5kX3RibCA9IE5VTEw7DQo+ID4NCj4gPiAgCQlpZiAoZmxvdy0+ZHJv
cCkgew0KPiA+IEBAIC0yMzgyLDYgKzI0NjIsMTYgQEAgbWx4NV9mbG93X3N0b3Aoc3RydWN0IHJ0
ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdA0KPiBtbHg1X2Zsb3dzICpsaXN0KQ0KPiA+ICAJCURSVl9M
T0coREVCVUcsICJwb3J0ICV1IGZsb3cgJXAgcmVtb3ZlZCIsIGRldi0+ZGF0YS0+cG9ydF9pZCwN
Cj4gPiAgCQkJKHZvaWQgKilmbG93KTsNCj4gPiAgCX0NCj4gPiArCS8qIENsZWFudXAgUnggcXVl
dWUgdHVubmVsIGluZm8uICovDQo+ID4gKwlmb3IgKGkgPSAwOyBpICE9IHByaXYtPnJ4cXNfbjsg
KytpKSB7DQo+ID4gKwkJc3RydWN0IG1seDVfcnhxX2RhdGEgKnEgPSAoKnByaXYtPnJ4cXMpW2ld
Ow0KPiA+ICsJCXN0cnVjdCBtbHg1X3J4cV9jdHJsICpyeHFfY3RybCA9DQo+ID4gKwkJCWNvbnRh
aW5lcl9vZihxLCBzdHJ1Y3QgbWx4NV9yeHFfY3RybCwgcnhxKTsNCj4gPiArDQo+ID4gKwkJbWVt
c2V0KCh2b2lkICopcnhxX2N0cmwtPnR1bm5lbF90eXBlcywgMCwNCj4gPiArCQkgICAgICAgc2l6
ZW9mKHJ4cV9jdHJsLT50dW5uZWxfdHlwZXMpKTsNCj4gPiArCQlxLT50dW5uZWwgPSAwOw0KPiA+
ICsJfQ0KPiA+ICB9DQo+IA0KPiBUaGlzIGh1bmsgZG9lcyBub3QgaGFuZGxlIHRoZSBmYWN0IHRo
ZSBSeCBxdWV1ZSBhcnJheSBtYXkgaGF2ZSBzb21lIGhvbGVzDQo+IGkuZS4gdGhlIGFwcGxpY2F0
aW9uIGlzIGFsbG93ZWQgdG8gYXNrIGZvciAxMCBxdWV1ZXMgYW5kIG9ubHkgaW5pdGlhbGlzZQ0K
PiBzb21lLiAgSW4gc3VjaCBzaXR1YXRpb24gdGhpcyBjb2RlIHdpbGwgc2VnZmF1bHQuDQoNCklu
IG90aGVyIHdvcmRzLCAicSIgY291bGQgYmUgTlVMTCwgY29ycmVjdD8gSSdsbCBhZGQgY2hlY2sg
Zm9yIHRoaXMuDQpCVFcsIHRoZXJlIHNob3VsZCBiZSBhbiBhY3Rpb24gaXRlbSB0byBhZGQgc3Vj
aCBjaGVjayBpbiByc3MvcXVldWUgZmxvdyBjcmVhdGlvbi4NCg0KPiANCj4gSXQgc2hvdWxkIG9u
bHkgbWVtc2V0IHRoZSBSeCBxdWV1ZXMgbWFraW5nIHBhcnQgb2YgdGhlIGZsb3cgbm90IHRoZSBv
dGhlcnMuDQoNCkNsZWFuIHRoaXMoZGVjcmVhc2UgdHVubmVsX3R5cGVzIGNvdW50ZXIgb2YgZWFj
aCBxdWV1ZSkgZnJvbSBlYWNoIGZsb3cgd291bGQgYmUgdGltZSANCmNvbnN1bWluZy4gSWYgYW4g
ZXJyb3IgaGFwcGVuZWQsIGNvdW50ZXIgd2lsbCBub3QgYmUgY2xlYXJlZCBhbmQgc3VjaCBzdGF0
ZSANCndpbGwgaW1wYWN0IHR1bm5lbCB0eXBlIGFmdGVyIHBvcnQgc3RhcnQgYWdhaW4uDQoNCj4g
DQo+ID4gIC8qKg0KPiA+IEBAIC0yNDI5LDcgKzI1MTksOCBAQCBtbHg1X2Zsb3dfc3RhcnQoc3Ry
dWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdA0KPiBtbHg1X2Zsb3dzICpsaXN0KQ0KPiA+ICAJ
CQkJCSAgICAgIGZsb3ctPnJzc19jb25mLmtleV9sZW4sDQo+ID4gIAkJCQkJICAgICAgaGFzaF9y
eHFfaW5pdFtpXS5oYXNoX2ZpZWxkcywNCj4gPiAgCQkJCQkgICAgICBmbG93LT5yc3NfY29uZi5x
dWV1ZSwNCj4gPiAtCQkJCQkgICAgICBmbG93LT5yc3NfY29uZi5xdWV1ZV9udW0pOw0KPiA+ICsJ
CQkJCSAgICAgIGZsb3ctPnJzc19jb25mLnF1ZXVlX251bSwNCj4gPiArCQkJCQkgICAgICBmbG93
LT50dW5uZWwpOw0KPiA+ICAJCQlpZiAoZmxvdy0+ZnJ4cVtpXS5ocnhxKQ0KPiA+ICAJCQkJZ290
byBmbG93X2NyZWF0ZTsNCj4gPiAgCQkJZmxvdy0+ZnJ4cVtpXS5ocnhxID0NCj4gPiBAQCAtMjQz
Nyw3ICsyNTI4LDggQEAgbWx4NV9mbG93X3N0YXJ0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBz
dHJ1Y3QNCj4gbWx4NV9mbG93cyAqbGlzdCkNCj4gPiAgCQkJCQkgICAgICBmbG93LT5yc3NfY29u
Zi5rZXlfbGVuLA0KPiA+ICAJCQkJCSAgICAgIGhhc2hfcnhxX2luaXRbaV0uaGFzaF9maWVsZHMs
DQo+ID4gIAkJCQkJICAgICAgZmxvdy0+cnNzX2NvbmYucXVldWUsDQo+ID4gLQkJCQkJICAgICAg
Zmxvdy0+cnNzX2NvbmYucXVldWVfbnVtKTsNCj4gPiArCQkJCQkgICAgICBmbG93LT5yc3NfY29u
Zi5xdWV1ZV9udW0sDQo+ID4gKwkJCQkJICAgICAgZmxvdy0+dHVubmVsKTsNCj4gPiAgCQkJaWYg
KCFmbG93LT5mcnhxW2ldLmhyeHEpIHsNCj4gPiAgCQkJCURSVl9MT0coREVCVUcsDQo+ID4gIAkJ
CQkJInBvcnQgJXUgZmxvdyAlcCBjYW5ub3QgYmUgYXBwbGllZCIsIEBAIC0NCj4gMjQ1OSwxMCAr
MjU1MSw3IEBADQo+ID4gbWx4NV9mbG93X3N0YXJ0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBz
dHJ1Y3QgbWx4NV9mbG93cyAqbGlzdCkNCj4gPiAgCQkJRFJWX0xPRyhERUJVRywgInBvcnQgJXUg
ZmxvdyAlcCBhcHBsaWVkIiwNCj4gPiAgCQkJCWRldi0+ZGF0YS0+cG9ydF9pZCwgKHZvaWQgKilm
bG93KTsNCj4gPiAgCQl9DQo+ID4gLQkJaWYgKCFmbG93LT5tYXJrKQ0KPiA+IC0JCQljb250aW51
ZTsNCj4gPiAtCQlmb3IgKGkgPSAwOyBpICE9IGZsb3ctPnJzc19jb25mLnF1ZXVlX251bTsgKytp
KQ0KPiA+IC0JCQkoKnByaXYtPnJ4cXMpW2Zsb3ctPnJzc19jb25mLnF1ZXVlW2ldXS0+bWFyayA9
IDE7DQo+ID4gKwkJbWx4NV9mbG93X2NyZWF0ZV91cGRhdGVfcnhxcyhkZXYsIGZsb3cpOw0KPiA+
ICAJfQ0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u
ZXQvbWx4NS9tbHg1X3J4cS5jIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4cS5jDQo+ID4gaW5k
ZXggMWU0MzU0YWIzLi4zNTFhY2ZjMGYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4
NS9tbHg1X3J4cS5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4cS5jDQo+ID4g
QEAgLTEzODYsNiArMTM4Niw4IEBAIG1seDVfaW5kX3RhYmxlX2lidl92ZXJpZnkoc3RydWN0IHJ0
ZV9ldGhfZGV2ICpkZXYpDQo+ID4gICAqICAgZmlyc3QgcXVldWUgaW5kZXggd2lsbCBiZSB0YWtl
biBmb3IgdGhlIGluZGlyZWN0aW9uIHRhYmxlLg0KPiA+ICAgKiBAcGFyYW0gcXVldWVzX24NCj4g
PiAgICogICBOdW1iZXIgb2YgcXVldWVzLg0KPiA+ICsgKiBAcGFyYW0gdHVubmVsDQo+ID4gKyAq
ICAgVHVubmVsIHR5cGUuDQo+ID4gICAqDQo+ID4gICAqIEByZXR1cm4NCj4gPiAgICogICBUaGUg
VmVyYnMgb2JqZWN0IGluaXRpYWxpc2VkLCBOVUxMIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlz
IHNldC4NCj4gPiBAQCAtMTM5NCw3ICsxMzk2LDcgQEAgc3RydWN0IG1seDVfaHJ4cSAqICBtbHg1
X2hyeHFfbmV3KHN0cnVjdA0KPiA+IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gIAkgICAgICBjb25z
dCB1aW50OF90ICpyc3Nfa2V5LCB1aW50MzJfdCByc3Nfa2V5X2xlbiwNCj4gPiAgCSAgICAgIHVp
bnQ2NF90IGhhc2hfZmllbGRzLA0KPiA+IC0JICAgICAgY29uc3QgdWludDE2X3QgKnF1ZXVlcywg
dWludDMyX3QgcXVldWVzX24pDQo+ID4gKwkgICAgICBjb25zdCB1aW50MTZfdCAqcXVldWVzLCB1
aW50MzJfdCBxdWV1ZXNfbiwgdWludDMyX3QgdHVubmVsKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3Qg
cHJpdiAqcHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gIAlzdHJ1Y3QgbWx4NV9o
cnhxICpocnhxOw0KPiA+IEBAIC0xNDM4LDYgKzE0NDAsNyBAQCBtbHg1X2hyeHFfbmV3KHN0cnVj
dCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJaHJ4cS0+cXAgPSBxcDsNCj4gPiAgCWhyeHEtPnJz
c19rZXlfbGVuID0gcnNzX2tleV9sZW47DQo+ID4gIAlocnhxLT5oYXNoX2ZpZWxkcyA9IGhhc2hf
ZmllbGRzOw0KPiA+ICsJaHJ4cS0+dHVubmVsID0gdHVubmVsOw0KPiA+ICAJbWVtY3B5KGhyeHEt
PnJzc19rZXksIHJzc19rZXksIHJzc19rZXlfbGVuKTsNCj4gPiAgCXJ0ZV9hdG9taWMzMl9pbmMo
JmhyeHEtPnJlZmNudCk7DQo+ID4gIAlMSVNUX0lOU0VSVF9IRUFEKCZwcml2LT5ocnhxcywgaHJ4
cSwgbmV4dCk7IEBAIC0xNDY2LDYgKzE0NjksOCBAQA0KPiA+IG1seDVfaHJ4cV9uZXcoc3RydWN0
IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gICAqICAgZmlyc3QgcXVldWUgaW5kZXggd2lsbCBiZSB0
YWtlbiBmb3IgdGhlIGluZGlyZWN0aW9uIHRhYmxlLg0KPiA+ICAgKiBAcGFyYW0gcXVldWVzX24N
Cj4gPiAgICogICBOdW1iZXIgb2YgcXVldWVzLg0KPiA+ICsgKiBAcGFyYW0gdHVubmVsDQo+ID4g
KyAqICAgVHVubmVsIHR5cGUuDQo+ID4gICAqDQo+ID4gICAqIEByZXR1cm4NCj4gPiAgICogICBB
biBoYXNoIFJ4IHF1ZXVlIG9uIHN1Y2Nlc3MuDQo+ID4gQEAgLTE0NzQsNyArMTQ3OSw3IEBAIHN0
cnVjdCBtbHg1X2hyeHEgKiAgbWx4NV9ocnhxX2dldChzdHJ1Y3QNCj4gPiBydGVfZXRoX2RldiAq
ZGV2LA0KPiA+ICAJICAgICAgY29uc3QgdWludDhfdCAqcnNzX2tleSwgdWludDMyX3QgcnNzX2tl
eV9sZW4sDQo+ID4gIAkgICAgICB1aW50NjRfdCBoYXNoX2ZpZWxkcywNCj4gPiAtCSAgICAgIGNv
bnN0IHVpbnQxNl90ICpxdWV1ZXMsIHVpbnQzMl90IHF1ZXVlc19uKQ0KPiA+ICsJICAgICAgY29u
c3QgdWludDE2X3QgKnF1ZXVlcywgdWludDMyX3QgcXVldWVzX24sIHVpbnQzMl90IHR1bm5lbCkN
Cj4gPiAgew0KPiA+ICAJc3RydWN0IHByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRl
Ow0KPiA+ICAJc3RydWN0IG1seDVfaHJ4cSAqaHJ4cTsNCj4gPiBAQCAtMTQ4OSw2ICsxNDk0LDgg
QEAgbWx4NV9ocnhxX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCQkJY29udGlu
dWU7DQo+ID4gIAkJaWYgKGhyeHEtPmhhc2hfZmllbGRzICE9IGhhc2hfZmllbGRzKQ0KPiA+ICAJ
CQljb250aW51ZTsNCj4gPiArCQlpZiAoaHJ4cS0+dHVubmVsICE9IHR1bm5lbCkNCj4gPiArCQkJ
Y29udGludWU7DQo+ID4gIAkJaW5kX3RibCA9IG1seDVfaW5kX3RhYmxlX2lidl9nZXQoZGV2LCBx
dWV1ZXMsIHF1ZXVlc19uKTsNCj4gPiAgCQlpZiAoIWluZF90YmwpDQo+ID4gIAkJCWNvbnRpbnVl
Ow0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5jDQo+ID4gYi9k
cml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5jIGluZGV4IDFmNDIyYzcwYi4uZDA2MWRmYzhhIDEw
MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmMNCj4gPiArKysgYi9k
cml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5jDQo+ID4gQEAgLTM0LDcgKzM0LDcgQEANCj4gPiAg
I2luY2x1ZGUgIm1seDVfcHJtLmgiDQo+ID4NCj4gPiAgc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxp
bmUgdWludDMyX3QNCj4gPiAtcnhxX2NxX3RvX3BrdF90eXBlKHZvbGF0aWxlIHN0cnVjdCBtbHg1
X2NxZSAqY3FlKTsNCj4gPiArcnhxX2NxX3RvX3BrdF90eXBlKHN0cnVjdCBtbHg1X3J4cV9kYXRh
ICpyeHEsIHZvbGF0aWxlIHN0cnVjdA0KPiA+ICttbHg1X2NxZSAqY3FlKTsNCj4gPg0KPiA+ICBz
dGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSBpbnQNCj4gPiAgbWx4NV9yeF9wb2xsX2xlbihzdHJ1
Y3QgbWx4NV9yeHFfZGF0YSAqcnhxLCB2b2xhdGlsZSBzdHJ1Y3QgbWx4NV9jcWUNCj4gPiAqY3Fl
LCBAQCAtMTI1LDEyICsxMjUsMTQgQEAgbWx4NV9zZXRfcHR5cGVfdGFibGUodm9pZCkNCj4gPiAg
CSgqcClbMHg4YV0gPSBSVEVfUFRZUEVfTDJfRVRIRVIgfCBSVEVfUFRZUEVfTDNfSVBWNF9FWFRf
VU5LTk9XTiB8DQo+ID4gIAkJICAgICBSVEVfUFRZUEVfTDRfVURQOw0KPiA+ICAJLyogVHVubmVs
ZWQgLSBMMyAqLw0KPiA+ICsJKCpwKVsweDQwXSA9IFJURV9QVFlQRV9MMl9FVEhFUiB8IFJURV9Q
VFlQRV9MM19JUFY0X0VYVF9VTktOT1dOOw0KPiA+ICAJKCpwKVsweDQxXSA9IFJURV9QVFlQRV9M
Ml9FVEhFUiB8IFJURV9QVFlQRV9MM19JUFY0X0VYVF9VTktOT1dOIHwNCj4gPiAgCQkgICAgIFJU
RV9QVFlQRV9JTk5FUl9MM19JUFY2X0VYVF9VTktOT1dOIHwNCj4gPiAgCQkgICAgIFJURV9QVFlQ
RV9JTk5FUl9MNF9OT05GUkFHOw0KPiA+ICAJKCpwKVsweDQyXSA9IFJURV9QVFlQRV9MMl9FVEhF
UiB8IFJURV9QVFlQRV9MM19JUFY0X0VYVF9VTktOT1dOIHwNCj4gPiAgCQkgICAgIFJURV9QVFlQ
RV9JTk5FUl9MM19JUFY0X0VYVF9VTktOT1dOIHwNCj4gPiAgCQkgICAgIFJURV9QVFlQRV9JTk5F
Ul9MNF9OT05GUkFHOw0KPiA+ICsJKCpwKVsweGMwXSA9IFJURV9QVFlQRV9MMl9FVEhFUiB8IFJU
RV9QVFlQRV9MM19JUFY2X0VYVF9VTktOT1dOOw0KPiA+ICAJKCpwKVsweGMxXSA9IFJURV9QVFlQ
RV9MMl9FVEhFUiB8IFJURV9QVFlQRV9MM19JUFY2X0VYVF9VTktOT1dOIHwNCj4gPiAgCQkgICAg
IFJURV9QVFlQRV9JTk5FUl9MM19JUFY2X0VYVF9VTktOT1dOIHwNCj4gPiAgCQkgICAgIFJURV9Q
VFlQRV9JTk5FUl9MNF9OT05GUkFHOw0KPiA+IEBAIC0xNTc3LDYgKzE1NzksOCBAQCBtbHg1X3R4
X2J1cnN0X2VtcHcodm9pZCAqZHBka190eHEsIHN0cnVjdA0KPiA+IHJ0ZV9tYnVmICoqcGt0cywg
dWludDE2X3QgcGt0c19uKQ0KPiA+ICAvKioNCj4gPiAgICogVHJhbnNsYXRlIFJYIGNvbXBsZXRp
b24gZmxhZ3MgdG8gcGFja2V0IHR5cGUuDQo+ID4gICAqDQo+ID4gKyAqIEBwYXJhbVtpbl0gcnhx
DQo+ID4gKyAqICAgUG9pbnRlciB0byBSWCBxdWV1ZSBzdHJ1Y3R1cmUuDQo+ID4gICAqIEBwYXJh
bVtpbl0gY3FlDQo+ID4gICAqICAgUG9pbnRlciB0byBDUUUuDQo+ID4gICAqDQo+ID4gQEAgLTE1
ODYsNyArMTU5MCw3IEBAIG1seDVfdHhfYnVyc3RfZW1wdyh2b2lkICpkcGRrX3R4cSwgc3RydWN0
IHJ0ZV9tYnVmDQo+ICoqcGt0cywgdWludDE2X3QgcGt0c19uKQ0KPiA+ICAgKiAgIFBhY2tldCB0
eXBlIGZvciBzdHJ1Y3QgcnRlX21idWYuDQo+ID4gICAqLw0KPiA+ICBzdGF0aWMgaW5saW5lIHVp
bnQzMl90DQo+ID4gLXJ4cV9jcV90b19wa3RfdHlwZSh2b2xhdGlsZSBzdHJ1Y3QgbWx4NV9jcWUg
KmNxZSkNCj4gPiArcnhxX2NxX3RvX3BrdF90eXBlKHN0cnVjdCBtbHg1X3J4cV9kYXRhICpyeHEs
IHZvbGF0aWxlIHN0cnVjdA0KPiA+ICttbHg1X2NxZSAqY3FlKQ0KPiA+ICB7DQo+ID4gIAl1aW50
OF90IGlkeDsNCj4gPiAgCXVpbnQ4X3QgcGluZm8gPSBjcWUtPnBrdF9pbmZvOw0KPiA+IEBAIC0x
NjAxLDcgKzE2MDUsNyBAQCByeHFfY3FfdG9fcGt0X3R5cGUodm9sYXRpbGUgc3RydWN0IG1seDVf
Y3FlICpjcWUpDQo+ID4gIAkgKiBiaXRbN10gPSBvdXRlcl9sM190eXBlDQo+ID4gIAkgKi8NCj4g
PiAgCWlkeCA9ICgocGluZm8gJiAweDMpIDw8IDYpIHwgKChwdHlwZSAmIDB4ZmMwMCkgPj4gMTAp
Ow0KPiA+IC0JcmV0dXJuIG1seDVfcHR5cGVfdGFibGVbaWR4XTsNCj4gPiArCXJldHVybiBtbHg1
X3B0eXBlX3RhYmxlW2lkeF0gfCByeHEtPnR1bm5lbCAqICEhKGlkeCAmICgxIDw8IDYpKTsNCj4g
PiAgfQ0KPiA+DQo+ID4gIC8qKg0KPiA+IEBAIC0xODMzLDcgKzE4MzcsNyBAQCBtbHg1X3J4X2J1
cnN0KHZvaWQgKmRwZGtfcnhxLCBzdHJ1Y3QgcnRlX21idWYNCj4gKipwa3RzLCB1aW50MTZfdCBw
a3RzX24pDQo+ID4gIAkJCXBrdCA9IHNlZzsNCj4gPiAgCQkJYXNzZXJ0KGxlbiA+PSAocnhxLT5j
cmNfcHJlc2VudCA8PCAyKSk7DQo+ID4gIAkJCS8qIFVwZGF0ZSBwYWNrZXQgaW5mb3JtYXRpb24u
ICovDQo+ID4gLQkJCXBrdC0+cGFja2V0X3R5cGUgPSByeHFfY3FfdG9fcGt0X3R5cGUoY3FlKTsN
Cj4gPiArCQkJcGt0LT5wYWNrZXRfdHlwZSA9IHJ4cV9jcV90b19wa3RfdHlwZShyeHEsIGNxZSk7
DQo+ID4gIAkJCXBrdC0+b2xfZmxhZ3MgPSAwOw0KPiA+ICAJCQlpZiAocnNzX2hhc2hfcmVzICYm
IHJ4cS0+cnNzX2hhc2gpIHsNCj4gPiAgCQkJCXBrdC0+aGFzaC5yc3MgPSByc3NfaGFzaF9yZXM7
DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmgNCj4gPiBiL2Ry
aXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmggaW5kZXggYTcwMmNiNjAzLi42ODY2ZjY4MTggMTAw
NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4dHguaA0KPiA+ICsrKyBiL2Ry
aXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmgNCj4gPiBAQCAtMTA0LDYgKzEwNCw3IEBAIHN0cnVj
dCBtbHg1X3J4cV9kYXRhIHsNCj4gPiAgCXZvaWQgKmNxX3VhcjsgLyogQ1EgdXNlciBhY2Nlc3Mg
cmVnaW9uLiAqLw0KPiA+ICAJdWludDMyX3QgY3FuOyAvKiBDUSBudW1iZXIuICovDQo+ID4gIAl1
aW50OF90IGNxX2FybV9zbjsgLyogQ1EgYXJtIHNlcSBudW1iZXIuICovDQo+ID4gKwl1aW50MzJf
dCB0dW5uZWw7IC8qIFR1bm5lbCBpbmZvcm1hdGlvbi4gKi8NCj4gPiAgfSBfX3J0ZV9jYWNoZV9h
bGlnbmVkOw0KPiA+DQo+ID4gIC8qIFZlcmJzIFJ4IHF1ZXVlIGVsZW1lbnRzLiAqLw0KPiA+IEBA
IC0xMjUsNiArMTI2LDcgQEAgc3RydWN0IG1seDVfcnhxX2N0cmwgew0KPiA+ICAJc3RydWN0IG1s
eDVfcnhxX2lidiAqaWJ2OyAvKiBWZXJicyBlbGVtZW50cy4gKi8NCj4gPiAgCXN0cnVjdCBtbHg1
X3J4cV9kYXRhIHJ4cTsgLyogRGF0YSBwYXRoIHN0cnVjdHVyZS4gKi8NCj4gPiAgCXVuc2lnbmVk
IGludCBzb2NrZXQ7IC8qIENQVSBzb2NrZXQgSUQgZm9yIGFsbG9jYXRpb25zLiAqLw0KPiA+ICsJ
dWludDMyX3QgdHVubmVsX3R5cGVzWzE2XTsgLyogVHVubmVsIHR5cGUgY291bnRlci4gKi8NCj4g
PiAgCXVuc2lnbmVkIGludCBpcnE6MTsgLyogV2hldGhlciBJUlEgaXMgZW5hYmxlZC4gKi8NCj4g
PiAgCXVpbnQxNl90IGlkeDsgLyogUXVldWUgaW5kZXguICovDQo+ID4gIH07DQo+ID4gQEAgLTE0
NSw2ICsxNDcsNyBAQCBzdHJ1Y3QgbWx4NV9ocnhxIHsNCj4gPiAgCXN0cnVjdCBtbHg1X2luZF90
YWJsZV9pYnYgKmluZF90YWJsZTsgLyogSW5kaXJlY3Rpb24gdGFibGUuICovDQo+ID4gIAlzdHJ1
Y3QgaWJ2X3FwICpxcDsgLyogVmVyYnMgcXVldWUgcGFpci4gKi8NCj4gPiAgCXVpbnQ2NF90IGhh
c2hfZmllbGRzOyAvKiBWZXJicyBIYXNoIGZpZWxkcy4gKi8NCj4gPiArCXVpbnQzMl90IHR1bm5l
bDsgLyogVHVubmVsIHR5cGUuICovDQo+ID4gIAl1aW50MzJfdCByc3Nfa2V5X2xlbjsgLyogSGFz
aCBrZXkgbGVuZ3RoIGluIGJ5dGVzLiAqLw0KPiA+ICAJdWludDhfdCByc3Nfa2V5W107IC8qIEhh
c2gga2V5LiAqLw0KPiA+ICB9Ow0KPiA+IEBAIC0yNDgsMTEgKzI1MSwxMyBAQCBpbnQgbWx4NV9p
bmRfdGFibGVfaWJ2X3ZlcmlmeShzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPiAqZGV2KTsgIHN0cnVj
dCBtbHg1X2hyeHEgKm1seDVfaHJ4cV9uZXcoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4g
IAkJCQljb25zdCB1aW50OF90ICpyc3Nfa2V5LCB1aW50MzJfdCByc3Nfa2V5X2xlbiwNCj4gPiAg
CQkJCXVpbnQ2NF90IGhhc2hfZmllbGRzLA0KPiA+IC0JCQkJY29uc3QgdWludDE2X3QgKnF1ZXVl
cywgdWludDMyX3QgcXVldWVzX24pOw0KPiA+ICsJCQkJY29uc3QgdWludDE2X3QgKnF1ZXVlcywg
dWludDMyX3QgcXVldWVzX24sDQo+ID4gKwkJCQl1aW50MzJfdCB0dW5uZWwpOw0KPiA+ICBzdHJ1
Y3QgbWx4NV9ocnhxICptbHg1X2hyeHFfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+
ICAJCQkJY29uc3QgdWludDhfdCAqcnNzX2tleSwgdWludDMyX3QgcnNzX2tleV9sZW4sDQo+ID4g
IAkJCQl1aW50NjRfdCBoYXNoX2ZpZWxkcywNCj4gPiAtCQkJCWNvbnN0IHVpbnQxNl90ICpxdWV1
ZXMsIHVpbnQzMl90IHF1ZXVlc19uKTsNCj4gPiArCQkJCWNvbnN0IHVpbnQxNl90ICpxdWV1ZXMs
IHVpbnQzMl90IHF1ZXVlc19uLA0KPiA+ICsJCQkJdWludDMyX3QgdHVubmVsKTsNCj4gPiAgaW50
IG1seDVfaHJ4cV9yZWxlYXNlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9o
cnhxDQo+ID4gKmh4cnEpOyAgaW50IG1seDVfaHJ4cV9pYnZfdmVyaWZ5KHN0cnVjdCBydGVfZXRo
X2RldiAqZGV2KTsgIHVpbnQ2NF90DQo+ID4gbWx4NV9nZXRfcnhfcG9ydF9vZmZsb2Fkcyh2b2lk
KTsgZGlmZiAtLWdpdA0KPiA+IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4dHhfdmVjX25lb24u
aA0KPiA+IGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4dHhfdmVjX25lb24uaA0KPiA+IGluZGV4
IGJiZTE4MThlZi4uOWY5MTM2MTA4IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUv
bWx4NV9yeHR4X3ZlY19uZW9uLmgNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfcnh0
eF92ZWNfbmVvbi5oDQo+ID4gQEAgLTU1MSw2ICs1NTEsNyBAQCByeHFfY3FfdG9fcHR5cGVfb2Zs
YWdzX3Yoc3RydWN0IG1seDVfcnhxX2RhdGEgKnJ4cSwNCj4gPiAgCWNvbnN0IHVpbnQ2NHgxX3Qg
bWJ1Zl9pbml0ID0gdmxkMV91NjQoJnJ4cS0+bWJ1Zl9pbml0aWFsaXplcik7DQo+ID4gIAljb25z
dCB1aW50NjR4MV90IHIzMl9tYXNrID0gdmNyZWF0ZV91NjQoMHhmZmZmZmZmZik7DQo+ID4gIAl1
aW50NjR4Ml90IHJlYXJtMCwgcmVhcm0xLCByZWFybTIsIHJlYXJtMzsNCj4gPiArCXVpbnQ4X3Qg
cHRfaWR4MCwgcHRfaWR4MSwgcHRfaWR4MiwgcHRfaWR4MzsNCj4gPg0KPiA+ICAJaWYgKHJ4cS0+
bWFyaykgew0KPiA+ICAJCWNvbnN0IHVpbnQzMng0X3QgZnRfZGVmID0gdmR1cHFfbl91MzIoTUxY
NV9GTE9XX01BUktfREVGQVVMVCk7DQo+ID4gQEAgLTU4MywxNCArNTg0LDE4IEBAIHJ4cV9jcV90
b19wdHlwZV9vZmxhZ3NfdihzdHJ1Y3QgbWx4NV9yeHFfZGF0YSAqcnhxLA0KPiA+ICAJcHR5cGUg
PSB2c2hybl9uX3UzMihwdHlwZV9pbmZvLCAxMCk7DQo+ID4gIAkvKiBFcnJvcmVkIHBhY2tldHMg
d2lsbCBoYXZlIFJURV9QVFlQRV9BTExfTUFTSy4gKi8NCj4gPiAgCXB0eXBlID0gdm9ycl91MTYo
cHR5cGUsIG9wX2Vycik7DQo+ID4gLQlwa3RzWzBdLT5wYWNrZXRfdHlwZSA9DQo+ID4gLQkJbWx4
NV9wdHlwZV90YWJsZVt2Z2V0X2xhbmVfdTgodnJlaW50ZXJwcmV0X3U4X3UxNihwdHlwZSksIDYp
XTsNCj4gPiAtCXBrdHNbMV0tPnBhY2tldF90eXBlID0NCj4gPiAtCQltbHg1X3B0eXBlX3RhYmxl
W3ZnZXRfbGFuZV91OCh2cmVpbnRlcnByZXRfdThfdTE2KHB0eXBlKSwgNCldOw0KPiA+IC0JcGt0
c1syXS0+cGFja2V0X3R5cGUgPQ0KPiA+IC0JCW1seDVfcHR5cGVfdGFibGVbdmdldF9sYW5lX3U4
KHZyZWludGVycHJldF91OF91MTYocHR5cGUpLCAyKV07DQo+ID4gLQlwa3RzWzNdLT5wYWNrZXRf
dHlwZSA9DQo+ID4gLQkJbWx4NV9wdHlwZV90YWJsZVt2Z2V0X2xhbmVfdTgodnJlaW50ZXJwcmV0
X3U4X3UxNihwdHlwZSksIDApXTsNCj4gPiArCXB0X2lkeDAgPSB2Z2V0X2xhbmVfdTgodnJlaW50
ZXJwcmV0X3U4X3UxNihwdHlwZSksIDYpOw0KPiA+ICsJcHRfaWR4MSA9IHZnZXRfbGFuZV91OCh2
cmVpbnRlcnByZXRfdThfdTE2KHB0eXBlKSwgNCk7DQo+ID4gKwlwdF9pZHgyID0gdmdldF9sYW5l
X3U4KHZyZWludGVycHJldF91OF91MTYocHR5cGUpLCAyKTsNCj4gPiArCXB0X2lkeDMgPSB2Z2V0
X2xhbmVfdTgodnJlaW50ZXJwcmV0X3U4X3UxNihwdHlwZSksIDApOw0KPiA+ICsJcGt0c1swXS0+
cGFja2V0X3R5cGUgPSBtbHg1X3B0eXBlX3RhYmxlW3B0X2lkeDBdIHwNCj4gPiArCQkJICAgICAg
ICEhKHB0X2lkeDAgJiAoMSA8PCA2KSkgKiByeHEtPnR1bm5lbDsNCj4gPiArCXBrdHNbMV0tPnBh
Y2tldF90eXBlID0gbWx4NV9wdHlwZV90YWJsZVtwdF9pZHgxXSB8DQo+ID4gKwkJCSAgICAgICAh
IShwdF9pZHgxICYgKDEgPDwgNikpICogcnhxLT50dW5uZWw7DQo+ID4gKwlwa3RzWzJdLT5wYWNr
ZXRfdHlwZSA9IG1seDVfcHR5cGVfdGFibGVbcHRfaWR4Ml0gfA0KPiA+ICsJCQkgICAgICAgISEo
cHRfaWR4MiAmICgxIDw8IDYpKSAqIHJ4cS0+dHVubmVsOw0KPiA+ICsJcGt0c1szXS0+cGFja2V0
X3R5cGUgPSBtbHg1X3B0eXBlX3RhYmxlW3B0X2lkeDNdIHwNCj4gPiArCQkJICAgICAgICEhKHB0
X2lkeDMgJiAoMSA8PCA2KSkgKiByeHEtPnR1bm5lbDsNCj4gPiAgCS8qIEZpbGwgZmxhZ3MgZm9y
IGNoZWNrc3VtIGFuZCBWTEFOLiAqLw0KPiA+ICAJcGluZm8gPSB2YW5kcV91MzIocHR5cGVfaW5m
bywgcHR5cGVfb2xfbWFzayk7DQo+ID4gIAlwaW5mbyA9IHZyZWludGVycHJldHFfdTMyX3U4KA0K
PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eF92ZWNfc3NlLmgNCj4g
PiBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4X3ZlY19zc2UuaA0KPiA+IGluZGV4IGMwODhi
Y2I1MS4uZDI0OTI0ODFkIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9y
eHR4X3ZlY19zc2UuaA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4X3ZlY19z
c2UuaA0KPiA+IEBAIC01NDIsNiArNTQyLDcgQEAgcnhxX2NxX3RvX3B0eXBlX29mbGFnc192KHN0
cnVjdCBtbHg1X3J4cV9kYXRhICpyeHEsDQo+IF9fbTEyOGkgY3Flc1s0XSwNCj4gPiAgCWNvbnN0
IF9fbTEyOGkgbWJ1Zl9pbml0ID0NCj4gPiAgCQlfbW1fbG9hZGxfZXBpNjQoKF9fbTEyOGkgKikm
cnhxLT5tYnVmX2luaXRpYWxpemVyKTsNCj4gPiAgCV9fbTEyOGkgcmVhcm0wLCByZWFybTEsIHJl
YXJtMiwgcmVhcm0zOw0KPiA+ICsJdWludDhfdCBwdF9pZHgwLCBwdF9pZHgxLCBwdF9pZHgyLCBw
dF9pZHgzOw0KPiA+DQo+ID4gIAkvKiBFeHRyYWN0IHBrdF9pbmZvIGZpZWxkLiAqLw0KPiA+ICAJ
cGluZm8wID0gX21tX3VucGFja2xvX2VwaTMyKGNxZXNbMF0sIGNxZXNbMV0pOyBAQCAtNTk1LDEw
ICs1OTYsMTggQEANCj4gPiByeHFfY3FfdG9fcHR5cGVfb2ZsYWdzX3Yoc3RydWN0IG1seDVfcnhx
X2RhdGEgKnJ4cSwgX19tMTI4aSBjcWVzWzRdLA0KPiA+ICAJLyogRXJyb3JlZCBwYWNrZXRzIHdp
bGwgaGF2ZSBSVEVfUFRZUEVfQUxMX01BU0suICovDQo+ID4gIAlvcF9lcnIgPSBfbW1fc3JsaV9l
cGkxNihvcF9lcnIsIDgpOw0KPiA+ICAJcHR5cGUgPSBfbW1fb3Jfc2kxMjgocHR5cGUsIG9wX2Vy
cik7DQo+ID4gLQlwa3RzWzBdLT5wYWNrZXRfdHlwZSA9IG1seDVfcHR5cGVfdGFibGVbX21tX2V4
dHJhY3RfZXBpOChwdHlwZSwgMCldOw0KPiA+IC0JcGt0c1sxXS0+cGFja2V0X3R5cGUgPSBtbHg1
X3B0eXBlX3RhYmxlW19tbV9leHRyYWN0X2VwaTgocHR5cGUsIDIpXTsNCj4gPiAtCXBrdHNbMl0t
PnBhY2tldF90eXBlID0gbWx4NV9wdHlwZV90YWJsZVtfbW1fZXh0cmFjdF9lcGk4KHB0eXBlLCA0
KV07DQo+ID4gLQlwa3RzWzNdLT5wYWNrZXRfdHlwZSA9IG1seDVfcHR5cGVfdGFibGVbX21tX2V4
dHJhY3RfZXBpOChwdHlwZSwgNildOw0KPiA+ICsJcHRfaWR4MCA9IF9tbV9leHRyYWN0X2VwaTgo
cHR5cGUsIDApOw0KPiA+ICsJcHRfaWR4MSA9IF9tbV9leHRyYWN0X2VwaTgocHR5cGUsIDIpOw0K
PiA+ICsJcHRfaWR4MiA9IF9tbV9leHRyYWN0X2VwaTgocHR5cGUsIDQpOw0KPiA+ICsJcHRfaWR4
MyA9IF9tbV9leHRyYWN0X2VwaTgocHR5cGUsIDYpOw0KPiA+ICsJcGt0c1swXS0+cGFja2V0X3R5
cGUgPSBtbHg1X3B0eXBlX3RhYmxlW3B0X2lkeDBdIHwNCj4gPiArCQkJICAgICAgICEhKHB0X2lk
eDAgJiAoMSA8PCA2KSkgKiByeHEtPnR1bm5lbDsNCj4gPiArCXBrdHNbMV0tPnBhY2tldF90eXBl
ID0gbWx4NV9wdHlwZV90YWJsZVtwdF9pZHgxXSB8DQo+ID4gKwkJCSAgICAgICAhIShwdF9pZHgx
ICYgKDEgPDwgNikpICogcnhxLT50dW5uZWw7DQo+ID4gKwlwa3RzWzJdLT5wYWNrZXRfdHlwZSA9
IG1seDVfcHR5cGVfdGFibGVbcHRfaWR4Ml0gfA0KPiA+ICsJCQkgICAgICAgISEocHRfaWR4MiAm
ICgxIDw8IDYpKSAqIHJ4cS0+dHVubmVsOw0KPiA+ICsJcGt0c1szXS0+cGFja2V0X3R5cGUgPSBt
bHg1X3B0eXBlX3RhYmxlW3B0X2lkeDNdIHwNCj4gPiArCQkJICAgICAgICEhKHB0X2lkeDMgJiAo
MSA8PCA2KSkgKiByeHEtPnR1bm5lbDsNCj4gPiAgCS8qIEZpbGwgZmxhZ3MgZm9yIGNoZWNrc3Vt
IGFuZCBWTEFOLiAqLw0KPiA+ICAJcGluZm8gPSBfbW1fYW5kX3NpMTI4KHBpbmZvLCBwdHlwZV9v
bF9tYXNrKTsNCj4gPiAgCXBpbmZvID0gX21tX3NodWZmbGVfZXBpOChjdl9mbGFnX3NlbCwgcGlu
Zm8pOw0KPiA+IC0tDQo+ID4gMi4xMy4zDQo+IA0KPiBSZWdhcmRzLA0KPiANCj4gLS0NCj4gTsOp
bGlvIExhcmFuamVpcm8NCj4gNldJTkQNCg==