From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <michalx.k.jastrzebski@intel.com>
Received: from mga03.intel.com (mga03.intel.com [134.134.136.65])
 by dpdk.org (Postfix) with ESMTP id 72C9C6A80
 for <dev@dpdk.org>; Mon, 26 Oct 2015 12:58:01 +0100 (CET)
Received: from fmsmga003.fm.intel.com ([10.253.24.29])
 by orsmga103.jf.intel.com with ESMTP; 26 Oct 2015 04:58:00 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.20,201,1444719600"; d="scan'208";a="588132845"
Received: from irsmsx152.ger.corp.intel.com ([163.33.192.66])
 by FMSMGA003.fm.intel.com with ESMTP; 26 Oct 2015 04:57:59 -0700
Received: from irsmsx111.ger.corp.intel.com (10.108.20.4) by
 IRSMSX152.ger.corp.intel.com (163.33.192.66) with Microsoft SMTP Server (TLS)
 id 14.3.248.2; Mon, 26 Oct 2015 11:57:57 +0000
Received: from irsmsx109.ger.corp.intel.com ([169.254.13.139]) by
 irsmsx111.ger.corp.intel.com ([169.254.2.212]) with mapi id 14.03.0248.002;
 Mon, 26 Oct 2015 11:57:56 +0000
From: "Jastrzebski, MichalX K" <michalx.k.jastrzebski@intel.com>
To: Vladimir Medvedkin <medvedkinv@gmail.com>
Thread-Topic: [dpdk-dev] [PATCH v1 0/3] lpm: increase number of next hops
 for lpm (ipv4)
Thread-Index: AQHRDa78BzrexVJCBE2r2F3R8Ks8yp56GPUAgAJnZACAAS6ogIAAAHjA
Date: Mon, 26 Oct 2015 11:57:56 +0000
Message-ID: <60ABE07DBB3A454EB7FAD707B4BB1582139CCBF9@IRSMSX109.ger.corp.intel.com>
References: <1445608311-8092-1-git-send-email-michalx.k.jastrzebski@intel.com>
 <20151023162033.GA10036@mhcomputing.net> <562B209A.6030507@mhcomputing.net>
 <CANDrEHm5ycfPY5ROUXK0RQFMenZfc_0bMkUqZ1j2Vb17VxbYow@mail.gmail.com>
 <20151026115519.GA7576@MKJASTRX-MOBL>
In-Reply-To: <20151026115519.GA7576@MKJASTRX-MOBL>
Accept-Language: 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" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v1 0/3] lpm: increase number of next hops for
 lpm (ipv4)
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://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: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Mon, 26 Oct 2015 11:58:02 -0000

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNaWNoYWwgSmFzdHJ6ZWJza2kg
W21haWx0bzptaWNoYWx4LmsuamFzdHJ6ZWJza2lAaW50ZWwuY29tXQ0KPiBTZW50OiBNb25kYXks
IE9jdG9iZXIgMjYsIDIwMTUgMTI6NTUgUE0NCj4gVG86IFZsYWRpbWlyIE1lZHZlZGtpbg0KPiBT
dWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjEgMC8zXSBscG06IGluY3JlYXNlIG51bWJl
ciBvZiBuZXh0IGhvcHMNCj4gZm9yIGxwbSAoaXB2NCkNCj4gDQo+IE9uIFN1biwgT2N0IDI1LCAy
MDE1IGF0IDA4OjUyOjA0UE0gKzAzMDAsIFZsYWRpbWlyIE1lZHZlZGtpbiB3cm90ZToNCj4gPiBI
aSBhbGwsDQo+ID4NCj4gPiBIZXJlIG15IGltcGxlbWVudGF0aW9uDQo+ID4NCj4gPiBTaWduZWQt
b2ZmLWJ5OiBWbGFkaW1pciBNZWR2ZWRraW4gPG1lZHZlZGtpbnZAZ21haWwuY29tPg0KPiA+IC0t
LQ0KPiA+ICBjb25maWcvY29tbW9uX2JzZGFwcCAgICAgfCAgIDEgKw0KPiA+ICBjb25maWcvY29t
bW9uX2xpbnV4YXBwICAgfCAgIDEgKw0KPiA+ICBsaWIvbGlicnRlX2xwbS9ydGVfbHBtLmMgfCAx
OTQNCj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQ0K
PiA+ICBsaWIvbGlicnRlX2xwbS9ydGVfbHBtLmggfCAxNjMgKysrKysrKysrKysrKysrKysrKysr
KystLS0tLS0tLS0tLS0tLS0tDQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgMjE5IGluc2VydGlvbnMo
KyksIDE0MCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9jb25maWcvY29tbW9u
X2JzZGFwcCBiL2NvbmZpZy9jb21tb25fYnNkYXBwDQo+ID4gaW5kZXggYjM3ZGNmNC4uNDA4Y2My
YyAxMDA2NDQNCj4gPiAtLS0gYS9jb25maWcvY29tbW9uX2JzZGFwcA0KPiA+ICsrKyBiL2NvbmZp
Zy9jb21tb25fYnNkYXBwDQo+ID4gQEAgLTM0NCw2ICszNDQsNyBAQCBDT05GSUdfUlRFX0xJQlJU
RV9KT0JTVEFUUz15DQo+ID4gICMNCj4gPiAgQ09ORklHX1JURV9MSUJSVEVfTFBNPXkNCj4gPiAg
Q09ORklHX1JURV9MSUJSVEVfTFBNX0RFQlVHPW4NCj4gPiArQ09ORklHX1JURV9MSUJSVEVfTFBN
X0FTTlVNPW4NCj4gPg0KPiA+ICAjDQo+ID4gICMgQ29tcGlsZSBsaWJydGVfYWNsDQo+ID4gZGlm
ZiAtLWdpdCBhL2NvbmZpZy9jb21tb25fbGludXhhcHAgYi9jb25maWcvY29tbW9uX2xpbnV4YXBw
DQo+ID4gaW5kZXggMGRlNDNkNS4uMWM2MGU2MyAxMDA2NDQNCj4gPiAtLS0gYS9jb25maWcvY29t
bW9uX2xpbnV4YXBwDQo+ID4gKysrIGIvY29uZmlnL2NvbW1vbl9saW51eGFwcA0KPiA+IEBAIC0z
NTIsNiArMzUyLDcgQEAgQ09ORklHX1JURV9MSUJSVEVfSk9CU1RBVFM9eQ0KPiA+ICAjDQo+ID4g
IENPTkZJR19SVEVfTElCUlRFX0xQTT15DQo+ID4gIENPTkZJR19SVEVfTElCUlRFX0xQTV9ERUJV
Rz1uDQo+ID4gK0NPTkZJR19SVEVfTElCUlRFX0xQTV9BU05VTT1uDQo+ID4NCj4gPiAgIw0KPiA+
ICAjIENvbXBpbGUgbGlicnRlX2FjbA0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2xwbS9y
dGVfbHBtLmMgYi9saWIvbGlicnRlX2xwbS9ydGVfbHBtLmMNCj4gPiBpbmRleCAxNjNiYTNjLi4z
NjNiNDAwIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uYw0KPiA+ICsr
KyBiL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uYw0KPiA+IEBAIC0xNTksOSArMTU5LDExIEBAIHJ0
ZV9scG1fY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIGludCBzb2NrZXRfaWQsDQo+IGludA0KPiA+
IG1heF9ydWxlcywNCj4gPg0KPiA+ICAgICAgICAgbHBtX2xpc3QgPSBSVEVfVEFJTFFfQ0FTVChy
dGVfbHBtX3RhaWxxLmhlYWQsIHJ0ZV9scG1fbGlzdCk7DQo+ID4NCj4gPiAtICAgICAgIFJURV9C
VUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBydGVfbHBtX3RibDI0X2VudHJ5KSAhPSAyKTsNCj4g
PiAtICAgICAgIFJURV9CVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBydGVfbHBtX3RibDhfZW50
cnkpICE9IDIpOw0KPiA+IC0NCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4g
KyAgICAgICBSVEVfQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkp
ICE9IDgpOw0KPiA+ICsjZWxzZQ0KPiA+ICsgICAgICAgUlRFX0JVSUxEX0JVR19PTihzaXplb2Yo
c3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5KSAhPSA0KTsNCj4gPiArI2VuZGlmDQo+ID4gICAgICAg
ICAvKiBDaGVjayB1c2VyIGFyZ3VtZW50cy4gKi8NCj4gPiAgICAgICAgIGlmICgobmFtZSA9PSBO
VUxMKSB8fCAoc29ja2V0X2lkIDwgLTEpIHx8IChtYXhfcnVsZXMgPT0gMCkpew0KPiA+ICAgICAg
ICAgICAgICAgICBydGVfZXJybm8gPSBFSU5WQUw7DQo+ID4gQEAgLTI2MSw3ICsyNjMsNyBAQCBy
dGVfbHBtX2ZyZWUoc3RydWN0IHJ0ZV9scG0gKmxwbSkNCj4gPiAgICovDQo+ID4gIHN0YXRpYyBp
bmxpbmUgaW50MzJfdA0KPiA+ICBydWxlX2FkZChzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJf
dCBpcF9tYXNrZWQsIHVpbnQ4X3QgZGVwdGgsDQo+ID4gLSAgICAgICB1aW50OF90IG5leHRfaG9w
KQ0KPiA+ICsgICAgICAgc3RydWN0IHJ0ZV9scG1fcmVzICpyZXMpDQo+ID4gIHsNCj4gPiAgICAg
ICAgIHVpbnQzMl90IHJ1bGVfZ2luZGV4LCBydWxlX2luZGV4LCBsYXN0X3J1bGU7DQo+ID4gICAg
ICAgICBpbnQgaTsNCj4gPiBAQCAtMjgyLDggKzI4NCwxMSBAQCBydWxlX2FkZChzdHJ1Y3QgcnRl
X2xwbSAqbHBtLCB1aW50MzJfdA0KPiBpcF9tYXNrZWQsDQo+ID4gdWludDhfdCBkZXB0aCwNCj4g
Pg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHJ1bGUgYWxyZWFkeSBleGlzdHMg
dXBkYXRlIGl0cyBuZXh0X2hvcCBhbmQNCj4gPiByZXR1cm4uICovDQo+ID4gICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGxwbS0+cnVsZXNfdGJsW3J1bGVfaW5kZXhdLmlwID09IGlwX21hc2tl
ZCkgew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT5ydWxlc190Ymxb
cnVsZV9pbmRleF0ubmV4dF9ob3AgPQ0KPiA+IG5leHRfaG9wOw0KPiA+IC0NCj4gPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxwbS0+cnVsZXNfdGJsW3J1bGVfaW5kZXhdLm5leHRf
aG9wID0NCj4gPiByZXMtPm5leHRfaG9wOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbHBtLT5ydWxlc190YmxbcnVsZV9pbmRleF0uZndkX2NsYXNzID0NCj4gPiByZXMtPmZ3
ZF9jbGFzczsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBscG0tPnJ1bGVzX3RibFtydWxlX2luZGV4XS5hc19udW0g
PQ0KPiA+IHJlcy0+YXNfbnVtOw0KPiA+ICsjZW5kaWYNCj4gPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBydWxlX2luZGV4Ow0KPiA+ICAgICAgICAgICAgICAgICAgICAg
ICAgIH0NCj4gPiAgICAgICAgICAgICAgICAgfQ0KPiA+IEBAIC0zMjAsNyArMzI1LDExIEBAIHJ1
bGVfYWRkKHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90DQo+IGlwX21hc2tlZCwNCj4gPiB1
aW50OF90IGRlcHRoLA0KPiA+DQo+ID4gICAgICAgICAvKiBBZGQgdGhlIG5ldyBydWxlLiAqLw0K
PiA+ICAgICAgICAgbHBtLT5ydWxlc190YmxbcnVsZV9pbmRleF0uaXAgPSBpcF9tYXNrZWQ7DQo+
ID4gLSAgICAgICBscG0tPnJ1bGVzX3RibFtydWxlX2luZGV4XS5uZXh0X2hvcCA9IG5leHRfaG9w
Ow0KPiA+ICsgICAgICAgbHBtLT5ydWxlc190YmxbcnVsZV9pbmRleF0ubmV4dF9ob3AgPSByZXMt
Pm5leHRfaG9wOw0KPiA+ICsgICAgICAgbHBtLT5ydWxlc190YmxbcnVsZV9pbmRleF0uZndkX2Ns
YXNzID0gcmVzLT5md2RfY2xhc3M7DQo+ID4gKyNpZmRlZiBSVEVfTElCUlRFX0xQTV9BU05VTQ0K
PiA+ICsgICAgICAgbHBtLT5ydWxlc190YmxbcnVsZV9pbmRleF0uYXNfbnVtID0gcmVzLT5hc19u
dW07DQo+ID4gKyNlbmRpZg0KPiA+DQo+ID4gICAgICAgICAvKiBJbmNyZW1lbnQgdGhlIHVzZWQg
cnVsZXMgY291bnRlciBmb3IgdGhpcyBydWxlIGdyb3VwLiAqLw0KPiA+ICAgICAgICAgbHBtLT5y
dWxlX2luZm9bZGVwdGggLSAxXS51c2VkX3J1bGVzKys7DQo+ID4gQEAgLTM4MiwxMCArMzkxLDEw
IEBAIHJ1bGVfZmluZChzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiBpcF9tYXNrZWQs
DQo+ID4gdWludDhfdCBkZXB0aCkNCj4gPiAgICogRmluZCwgY2xlYW4gYW5kIGFsbG9jYXRlIGEg
dGJsOC4NCj4gPiAgICovDQo+ID4gIHN0YXRpYyBpbmxpbmUgaW50MzJfdA0KPiA+IC10Ymw4X2Fs
bG9jKHN0cnVjdCBydGVfbHBtX3RibDhfZW50cnkgKnRibDgpDQo+ID4gK3RibDhfYWxsb2Moc3Ry
dWN0IHJ0ZV9scG1fdGJsX2VudHJ5ICp0Ymw4KQ0KPiA+ICB7DQo+ID4gICAgICAgICB1aW50MzJf
dCB0Ymw4X2dpbmRleDsgLyogdGJsOCBncm91cCBpbmRleC4gKi8NCj4gPiAtICAgICAgIHN0cnVj
dCBydGVfbHBtX3RibDhfZW50cnkgKnRibDhfZW50cnk7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcnRl
X2xwbV90YmxfZW50cnkgKnRibDhfZW50cnk7DQo+ID4NCj4gPiAgICAgICAgIC8qIFNjYW4gdGhy
b3VnaCB0Ymw4IHRvIGZpbmQgYSBmcmVlIChpLmUuIElOVkFMSUQpIHRibDggZ3JvdXAuICovDQo+
ID4gICAgICAgICBmb3IgKHRibDhfZ2luZGV4ID0gMDsgdGJsOF9naW5kZXggPCBSVEVfTFBNX1RC
TDhfTlVNX0dST1VQUzsNCj4gPiBAQCAtMzkzLDEyICs0MDIsMTIgQEAgdGJsOF9hbGxvYyhzdHJ1
Y3QgcnRlX2xwbV90Ymw4X2VudHJ5ICp0Ymw4KQ0KPiA+ICAgICAgICAgICAgICAgICB0Ymw4X2Vu
dHJ5ID0gJnRibDhbdGJsOF9naW5kZXggKg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUlRFX0xQTV9UQkw4X0dST1VQX05VTV9FTlRSSUVTXTsNCj4gPiAgICAgICAgICAg
ICAgICAgLyogSWYgYSBmcmVlIHRibDggZ3JvdXAgaXMgZm91bmQgY2xlYW4gaXQgYW5kIHNldCBh
cyBWQUxJRC4NCj4gPiAqLw0KPiA+IC0gICAgICAgICAgICAgICBpZiAoIXRibDhfZW50cnktPnZh
bGlkX2dyb3VwKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGlmICghdGJsOF9lbnRyeS0+ZXh0X3Zh
bGlkKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCZ0Ymw4X2VudHJ5WzBd
LCAwLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfTFBN
X1RCTDhfR1JPVVBfTlVNX0VOVFJJRVMgKg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplb2YodGJsOF9lbnRyeVswXSkpOw0KPiA+DQo+ID4gLSAgICAgICAg
ICAgICAgICAgICAgICAgdGJsOF9lbnRyeS0+dmFsaWRfZ3JvdXAgPSBWQUxJRDsNCj4gPiArICAg
ICAgICAgICAgICAgICAgICAgICB0Ymw4X2VudHJ5LT5leHRfdmFsaWQgPSBWQUxJRDsNCj4gPg0K
PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJldHVybiBncm91cCBpbmRleCBmb3IgYWxs
b2NhdGVkIHRibDggZ3JvdXAuICovDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRibDhfZ2luZGV4Ow0KPiA+IEBAIC00MTAsNDYgKzQxOSw1MCBAQCB0Ymw4X2FsbG9jKHN0cnVj
dCBydGVfbHBtX3RibDhfZW50cnkgKnRibDgpDQo+ID4gIH0NCj4gPg0KPiA+ICBzdGF0aWMgaW5s
aW5lIHZvaWQNCj4gPiAtdGJsOF9mcmVlKHN0cnVjdCBydGVfbHBtX3RibDhfZW50cnkgKnRibDgs
IHVpbnQzMl90IHRibDhfZ3JvdXBfc3RhcnQpDQo+ID4gK3RibDhfZnJlZShzdHJ1Y3QgcnRlX2xw
bV90YmxfZW50cnkgKnRibDgsIHVpbnQzMl90IHRibDhfZ3JvdXBfc3RhcnQpDQo+ID4gIHsNCj4g
PiAgICAgICAgIC8qIFNldCB0Ymw4IGdyb3VwIGludmFsaWQqLw0KPiA+IC0gICAgICAgdGJsOFt0
Ymw4X2dyb3VwX3N0YXJ0XS52YWxpZF9ncm91cCA9IElOVkFMSUQ7DQo+ID4gKyAgICAgICB0Ymw4
W3RibDhfZ3JvdXBfc3RhcnRdLmV4dF92YWxpZCA9IElOVkFMSUQ7DQo+ID4gIH0NCj4gPg0KPiA+
ICBzdGF0aWMgaW5saW5lIGludDMyX3QNCj4gPiAgYWRkX2RlcHRoX3NtYWxsKHN0cnVjdCBydGVf
bHBtICpscG0sIHVpbnQzMl90IGlwLCB1aW50OF90IGRlcHRoLA0KPiA+IC0gICAgICAgICAgICAg
ICB1aW50OF90IG5leHRfaG9wKQ0KPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2xwbV9y
ZXMgKnJlcykNCj4gPiAgew0KPiA+ICAgICAgICAgdWludDMyX3QgdGJsMjRfaW5kZXgsIHRibDI0
X3JhbmdlLCB0Ymw4X2luZGV4LCB0Ymw4X2dyb3VwX2VuZCwgaSwgajsNCj4gPg0KPiA+ICAgICAg
ICAgLyogQ2FsY3VsYXRlIHRoZSBpbmRleCBpbnRvIFRhYmxlMjQuICovDQo+ID4gICAgICAgICB0
YmwyNF9pbmRleCA9IGlwID4+IDg7DQo+ID4gICAgICAgICB0YmwyNF9yYW5nZSA9IGRlcHRoX3Rv
X3JhbmdlKGRlcHRoKTsNCj4gPiArICAgICAgIHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSBuZXdf
dGJsX2VudHJ5ID0gew0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9MUE1fQVNOVU0NCj4gPiArICAg
ICAgICAgICAgICAgLmFzX251bSA9IHJlcy0+YXNfbnVtLA0KPiA+ICsjZW5kaWYNCj4gPiArICAg
ICAgICAgICAgICAgLm5leHRfaG9wID0gcmVzLT5uZXh0X2hvcCwNCj4gPiArICAgICAgICAgICAg
ICAgLmZ3ZF9jbGFzcyAgPSByZXMtPmZ3ZF9jbGFzcywNCj4gPiArICAgICAgICAgICAgICAgLmV4
dF92YWxpZCA9IDAsDQo+ID4gKyAgICAgICAgICAgICAgIC5kZXB0aCA9IGRlcHRoLA0KPiA+ICsg
ICAgICAgICAgICAgICAudmFsaWQgPSBWQUxJRCwNCj4gPiArICAgICAgIH07DQo+ID4gKw0KPiA+
DQo+ID4gICAgICAgICBmb3IgKGkgPSB0YmwyNF9pbmRleDsgaSA8ICh0YmwyNF9pbmRleCArIHRi
bDI0X3JhbmdlKTsgaSsrKSB7DQo+ID4gICAgICAgICAgICAgICAgIC8qDQo+ID4gICAgICAgICAg
ICAgICAgICAqIEZvciBpbnZhbGlkIE9SIHZhbGlkIGFuZCBub24tZXh0ZW5kZWQgdGJsIDI0IGVu
dHJpZXMgc2V0DQo+ID4gICAgICAgICAgICAgICAgICAqIGVudHJ5Lg0KPiA+ICAgICAgICAgICAg
ICAgICAgKi8NCj4gPiAtICAgICAgICAgICAgICAgaWYgKCFscG0tPnRibDI0W2ldLnZhbGlkIHx8
IChscG0tPnRibDI0W2ldLmV4dF9lbnRyeSA9PSAwICYmDQo+ID4gKyAgICAgICAgICAgICAgIGlm
ICghbHBtLT50YmwyNFtpXS52YWxpZCB8fCAobHBtLT50YmwyNFtpXS5leHRfdmFsaWQgPT0gMCAm
Jg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT50YmwyNFtpXS5kZXB0
aCA8PSBkZXB0aCkpIHsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBy
dGVfbHBtX3RibDI0X2VudHJ5IG5ld190YmwyNF9lbnRyeSA9IHsNCj4gPiAtICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsgLm5leHRfaG9wID0gbmV4dF9ob3AsIH0sDQo+ID4gLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsaWQgPSBWQUxJRCwNCj4gPiAtICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC5leHRfZW50cnkgPSAwLA0KPiA+IC0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLmRlcHRoID0gZGVwdGgsDQo+ID4gLSAgICAgICAgICAgICAgICAg
ICAgICAgfTsNCj4gPiAtDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgLyogU2V0dGluZyB0
YmwyNCBlbnRyeSBpbiBvbmUgZ28gdG8gYXZvaWQgcmFjZQ0KPiA+ICAgICAgICAgICAgICAgICAg
ICAgICAgICAqIGNvbmRpdGlvbnMNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4g
PiAtICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDI0W2ldID0gbmV3X3RibDI0X2VudHJ5
Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGxwbS0+dGJsMjRbaV0gPSBuZXdfdGJsX2Vu
dHJ5Ow0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gICAg
ICAgICAgICAgICAgIH0NCj4gPg0KPiA+IC0gICAgICAgICAgICAgICBpZiAobHBtLT50YmwyNFtp
XS5leHRfZW50cnkgPT0gMSkgew0KPiA+ICsgICAgICAgICAgICAgICBpZiAobHBtLT50YmwyNFtp
XS5leHRfdmFsaWQgPT0gMSkgew0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHRi
bDI0IGVudHJ5IGlzIHZhbGlkIGFuZCBleHRlbmRlZCBjYWxjdWxhdGUNCj4gPiB0aGUNCj4gPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgKiAgaW5kZXggaW50byB0Ymw4Lg0KPiA+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLw0KPiA+IEBAIC00NjEsMTkgKzQ3NCwxNCBAQCBhZGRfZGVwdGhf
c21hbGwoc3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QNCj4gaXAsDQo+ID4gdWludDhfdCBk
ZXB0aCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSB0Ymw4X2luZGV4OyBq
IDwgdGJsOF9ncm91cF9lbmQ7IGorKykgew0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFscG0tPnRibDhbal0udmFsaWQgfHwNCj4gPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhbal0uZGVwdGggPD0NCj4gPiBk
ZXB0aCkgew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgcnRlX2xwbV90Ymw4X2VudHJ5DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3X3RibDhfZW50cnkgPSB7DQo+ID4gLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbGlkID0gVkFMSUQsDQo+ID4gLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbGlkX2dyb3Vw
ID0gVkFMSUQsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLmRlcHRoID0gZGVwdGgsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLm5leHRfaG9wID0gbmV4dF9ob3AsDQo+ID4gLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfdGJsX2VudHJ5LmV4dF92YWxpZCA9IFZBTElE
Ow0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qDQo+
ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFNldHRpbmcgdGJs
OCBlbnRyeSBpbiBvbmUgZ28gdG8NCj4gPiBhdm9pZA0KPiA+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKiByYWNlIGNvbmRpdGlvbnMNCj4gPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQo+ID4gLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxwbS0+dGJsOFtqXSA9IG5ld190Ymw4X2VudHJ5Ow0KPiA+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhbal0gPSBuZXdf
dGJsX2VudHJ5Ow0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+
IEBAIC00ODYsNyArNDk0LDcgQEAgYWRkX2RlcHRoX3NtYWxsKHN0cnVjdCBydGVfbHBtICpscG0s
IHVpbnQzMl90IGlwLA0KPiA+IHVpbnQ4X3QgZGVwdGgsDQo+ID4NCj4gPiAgc3RhdGljIGlubGlu
ZSBpbnQzMl90DQo+ID4gIGFkZF9kZXB0aF9iaWcoc3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMy
X3QgaXBfbWFza2VkLCB1aW50OF90IGRlcHRoLA0KPiA+IC0gICAgICAgICAgICAgICB1aW50OF90
IG5leHRfaG9wKQ0KPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2xwbV9yZXMgKnJlcykN
Cj4gPiAgew0KPiA+ICAgICAgICAgdWludDMyX3QgdGJsMjRfaW5kZXg7DQo+ID4gICAgICAgICBp
bnQzMl90IHRibDhfZ3JvdXBfaW5kZXgsIHRibDhfZ3JvdXBfc3RhcnQsIHRibDhfZ3JvdXBfZW5k
LA0KPiA+IHRibDhfaW5kZXgsDQo+ID4gQEAgLTUxMiw3ICs1MjAsMTEgQEAgYWRkX2RlcHRoX2Jp
ZyhzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiBpcF9tYXNrZWQsDQo+ID4gdWludDhf
dCBkZXB0aCwNCj4gPiAgICAgICAgICAgICAgICAgLyogU2V0IHRibDggZW50cnkuICovDQo+ID4g
ICAgICAgICAgICAgICAgIGZvciAoaSA9IHRibDhfaW5kZXg7IGkgPCAodGJsOF9pbmRleCArIHRi
bDhfcmFuZ2UpOyBpKyspIHsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhb
aV0uZGVwdGggPSBkZXB0aDsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhb
aV0ubmV4dF9ob3AgPSBuZXh0X2hvcDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBscG0t
PnRibDhbaV0ubmV4dF9ob3AgPSByZXMtPm5leHRfaG9wOw0KPiA+ICsgICAgICAgICAgICAgICAg
ICAgICAgIGxwbS0+dGJsOFtpXS5md2RfY2xhc3MgPSByZXMtPmZ3ZF9jbGFzczsNCj4gPiArI2lm
ZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbHBt
LT50Ymw4W2ldLmFzX251bSA9IHJlcy0+YXNfbnVtOw0KPiA+ICsjZW5kaWYNCj4gPiAgICAgICAg
ICAgICAgICAgICAgICAgICBscG0tPnRibDhbaV0udmFsaWQgPSBWQUxJRDsNCj4gPiAgICAgICAg
ICAgICAgICAgfQ0KPiA+DQo+ID4gQEAgLTUyMiwxNyArNTM0LDE3IEBAIGFkZF9kZXB0aF9iaWco
c3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QNCj4gPiBpcF9tYXNrZWQsIHVpbnQ4X3QgZGVw
dGgsDQo+ID4gICAgICAgICAgICAgICAgICAqIHNvIGFzc2lnbiB3aG9sZSBzdHJ1Y3R1cmUgaW4g
b25lIGdvDQo+ID4gICAgICAgICAgICAgICAgICAqLw0KPiA+DQo+ID4gLSAgICAgICAgICAgICAg
IHN0cnVjdCBydGVfbHBtX3RibDI0X2VudHJ5IG5ld190YmwyNF9lbnRyeSA9IHsNCj4gPiAtICAg
ICAgICAgICAgICAgICAgICAgICB7IC50Ymw4X2dpbmRleCA9ICh1aW50OF90KXRibDhfZ3JvdXBf
aW5kZXgsIH0sDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgLnZhbGlkID0gVkFMSUQsDQo+
ID4gLSAgICAgICAgICAgICAgICAgICAgICAgLmV4dF9lbnRyeSA9IDEsDQo+ID4gKyAgICAgICAg
ICAgICAgIHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSBuZXdfdGJsMjRfZW50cnkgPSB7DQo+ID4g
KyAgICAgICAgICAgICAgICAgICAgICAgLnRibDhfZ2luZGV4ID0gKHVpbnQxNl90KXRibDhfZ3Jv
dXBfaW5kZXgsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgLmRlcHRoID0gMCwNCj4gPiAr
ICAgICAgICAgICAgICAgICAgICAgICAuZXh0X3ZhbGlkID0gMSwNCj4gPiArICAgICAgICAgICAg
ICAgICAgICAgICAudmFsaWQgPSBWQUxJRCwNCj4gPiAgICAgICAgICAgICAgICAgfTsNCj4gPg0K
PiA+ICAgICAgICAgICAgICAgICBscG0tPnRibDI0W3RibDI0X2luZGV4XSA9IG5ld190YmwyNF9l
bnRyeTsNCj4gPg0KPiA+ICAgICAgICAgfS8qIElmIHZhbGlkIGVudHJ5IGJ1dCBub3QgZXh0ZW5k
ZWQgY2FsY3VsYXRlIHRoZSBpbmRleCBpbnRvDQo+ID4gVGFibGU4LiAqLw0KPiA+IC0gICAgICAg
ZWxzZSBpZiAobHBtLT50YmwyNFt0YmwyNF9pbmRleF0uZXh0X2VudHJ5ID09IDApIHsNCj4gPiAr
ICAgICAgIGVsc2UgaWYgKGxwbS0+dGJsMjRbdGJsMjRfaW5kZXhdLmV4dF92YWxpZCA9PSAwKSB7
DQo+ID4gICAgICAgICAgICAgICAgIC8qIFNlYXJjaCBmb3IgZnJlZSB0Ymw4IGdyb3VwLiAqLw0K
PiA+ICAgICAgICAgICAgICAgICB0Ymw4X2dyb3VwX2luZGV4ID0gdGJsOF9hbGxvYyhscG0tPnRi
bDgpOw0KPiA+DQo+ID4gQEAgLTU1MSw2ICs1NjMsMTEgQEAgYWRkX2RlcHRoX2JpZyhzdHJ1Y3Qg
cnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiBpcF9tYXNrZWQsDQo+ID4gdWludDhfdCBkZXB0aCwN
Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhbaV0uZGVwdGggPSBscG0tPnRi
bDI0W3RibDI0X2luZGV4XS5kZXB0aDsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBscG0t
PnRibDhbaV0ubmV4dF9ob3AgPQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBscG0tPnRibDI0W3RibDI0X2luZGV4XS5uZXh0X2hvcDsNCj4gPiArICAgICAgICAg
ICAgICAgICAgICAgICBscG0tPnRibDhbaV0uZndkX2NsYXNzID0NCj4gPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT50YmwyNFt0YmwyNF9pbmRleF0uZndkX2Ns
YXNzOw0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9MUE1fQVNOVU0NCj4gPiArICAgICAgICAgICAg
ICAgICAgICAgICBscG0tPnRibDhbaV0uYXNfbnVtID0NCj4gPiBscG0tPnRibDI0W3RibDI0X2lu
ZGV4XS5hc19udW07DQo+ID4gKyNlbmRpZg0KPiA+ICAgICAgICAgICAgICAgICB9DQo+ID4NCj4g
PiAgICAgICAgICAgICAgICAgdGJsOF9pbmRleCA9IHRibDhfZ3JvdXBfc3RhcnQgKyAoaXBfbWFz
a2VkICYgMHhGRik7DQo+ID4gQEAgLTU2MSw3ICs1NzgsMTEgQEAgYWRkX2RlcHRoX2JpZyhzdHJ1
Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiBpcF9tYXNrZWQsDQo+ID4gdWludDhfdCBkZXB0
aCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT50Ymw4
W2ldLmRlcHRoIDw9IGRlcHRoKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBscG0tPnRibDhbaV0udmFsaWQgPSBWQUxJRDsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxwbS0+dGJsOFtpXS5kZXB0aCA9IGRlcHRoOw0KPiA+IC0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbHBtLT50Ymw4W2ldLm5leHRfaG9wID0gbmV4dF9ob3A7DQo+ID4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhbaV0ubmV4dF9ob3AgPSBy
ZXMtPm5leHRfaG9wOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT50
Ymw4W2ldLmZ3ZF9jbGFzcyA9IHJlcy0+ZndkX2NsYXNzOw0KPiA+ICsjaWZkZWYgUlRFX0xJQlJU
RV9MUE1fQVNOVU0NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwbS0+dGJs
OFtpXS5hc19udW0gPSByZXMtPmFzX251bTsNCj4gPiArI2VuZGlmDQo+ID4NCj4gPiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCj4gPiBAQCAtNTczLDExICs1OTQsMTEgQEAgYWRkX2RlcHRoX2JpZyhzdHJ1Y3Qg
cnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiA+IGlwX21hc2tlZCwgdWludDhfdCBkZXB0aCwNCj4g
PiAgICAgICAgICAgICAgICAgICogc28gYXNzaWduIHdob2xlIHN0cnVjdHVyZSBpbiBvbmUgZ28u
DQo+ID4gICAgICAgICAgICAgICAgICAqLw0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgIHN0cnVj
dCBydGVfbHBtX3RibDI0X2VudHJ5IG5ld190YmwyNF9lbnRyeSA9IHsNCj4gPiAtICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsgLnRibDhfZ2luZGV4ID0gKHVpbnQ4X3QpdGJsOF9ncm91
cF9pbmRleCwNCj4gPiB9LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZh
bGlkID0gVkFMSUQsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXh0X2Vu
dHJ5ID0gMSwNCj4gPiArICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5IG5l
d190YmwyNF9lbnRyeSA9IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50
Ymw4X2dpbmRleCA9ICh1aW50MTZfdCl0Ymw4X2dyb3VwX2luZGV4LA0KPiA+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLmRlcHRoID0gMCwNCj4gPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC5leHRfdmFsaWQgPSAxLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLnZhbGlkID0gVkFMSUQsDQo+ID4gICAgICAgICAgICAgICAgIH07DQo+ID4NCj4g
PiAgICAgICAgICAgICAgICAgbHBtLT50YmwyNFt0YmwyNF9pbmRleF0gPSBuZXdfdGJsMjRfZW50
cnk7DQo+ID4gQEAgLTU5NSwxMSArNjE2LDE1IEBAIGFkZF9kZXB0aF9iaWcoc3RydWN0IHJ0ZV9s
cG0gKmxwbSwgdWludDMyX3QNCj4gPiBpcF9tYXNrZWQsIHVpbnQ4X3QgZGVwdGgsDQo+ID4NCj4g
PiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxwbS0+dGJsOFtpXS52YWxpZCB8fA0KPiA+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhbaV0uZGVw
dGggPD0gZGVwdGgpIHsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBydGVfbHBtX3RibDhfZW50cnkgbmV3X3RibDhfZW50cnkgPSB7DQo+ID4gLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWxpZCA9IFZBTElELA0KPiA+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5IG5ld190Ymw4
X2VudHJ5ID0gew0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9MUE1fQVNOVU0NCj4gPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFzX251bSA9IHJlcy0+YXNfbnVtLA0K
PiA+ICsjZW5kaWYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Lm5leHRfaG9wID0gcmVzLT5uZXh0X2hvcCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLmZ3ZF9jbGFzcyA9IHJlcy0+ZndkX2NsYXNzLA0KPiA+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGVwdGggPSBkZXB0aCwNCj4gPiAtICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHRfaG9wID0gbmV4dF9ob3As
DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWxpZF9ncm91
cCA9DQo+ID4gbHBtLT50Ymw4W2ldLnZhbGlkX2dyb3VwLA0KPiA+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAuZXh0X3ZhbGlkID0gbHBtLT50Ymw4W2ldLmV4dF92YWxp
ZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbGlkID0g
VkFMSUQsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ow0KPiA+DQo+ID4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKg0KPiA+IEBAIC02MjEsMTkgKzY0Niwx
OSBAQCBhZGRfZGVwdGhfYmlnKHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90DQo+ID4gaXBf
bWFza2VkLCB1aW50OF90IGRlcHRoLA0KPiA+ICAgKi8NCj4gPiAgaW50DQo+ID4gIHJ0ZV9scG1f
YWRkKHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90IGlwLCB1aW50OF90IGRlcHRoLA0KPiA+
IC0gICAgICAgICAgICAgICB1aW50OF90IG5leHRfaG9wKQ0KPiA+ICsgICAgICAgICAgICAgICBz
dHJ1Y3QgcnRlX2xwbV9yZXMgKnJlcykNCj4gPiAgew0KPiA+ICAgICAgICAgaW50MzJfdCBydWxl
X2luZGV4LCBzdGF0dXMgPSAwOw0KPiA+ICAgICAgICAgdWludDMyX3QgaXBfbWFza2VkOw0KPiA+
DQo+ID4gICAgICAgICAvKiBDaGVjayB1c2VyIGFyZ3VtZW50cy4gKi8NCj4gPiAtICAgICAgIGlm
ICgobHBtID09IE5VTEwpIHx8IChkZXB0aCA8IDEpIHx8IChkZXB0aCA+IFJURV9MUE1fTUFYX0RF
UFRIKSkNCj4gPiArICAgICAgIGlmICgobHBtID09IE5VTEwpIHx8IChyZXMgPT0gTlVMTCkgfHwg
KGRlcHRoIDwgMSkgfHwgKGRlcHRoID4NCj4gPiBSVEVfTFBNX01BWF9ERVBUSCkpDQo+ID4gICAg
ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+DQo+ID4gICAgICAgICBpcF9tYXNrZWQg
PSBpcCAmIGRlcHRoX3RvX21hc2soZGVwdGgpOw0KPiA+DQo+ID4gICAgICAgICAvKiBBZGQgdGhl
IHJ1bGUgdG8gdGhlIHJ1bGUgdGFibGUuICovDQo+ID4gLSAgICAgICBydWxlX2luZGV4ID0gcnVs
ZV9hZGQobHBtLCBpcF9tYXNrZWQsIGRlcHRoLCBuZXh0X2hvcCk7DQo+ID4gKyAgICAgICBydWxl
X2luZGV4ID0gcnVsZV9hZGQobHBtLCBpcF9tYXNrZWQsIGRlcHRoLCByZXMpOw0KPiA+DQo+ID4g
ICAgICAgICAvKiBJZiB0aGUgaXMgbm8gc3BhY2UgYXZhaWxhYmxlIGZvciBuZXcgcnVsZSByZXR1
cm4gZXJyb3IuICovDQo+ID4gICAgICAgICBpZiAocnVsZV9pbmRleCA8IDApIHsNCj4gPiBAQCAt
NjQxLDEwICs2NjYsMTAgQEAgcnRlX2xwbV9hZGQoc3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMy
X3QgaXAsDQo+IHVpbnQ4X3QNCj4gPiBkZXB0aCwNCj4gPiAgICAgICAgIH0NCj4gPg0KPiA+ICAg
ICAgICAgaWYgKGRlcHRoIDw9IE1BWF9ERVBUSF9UQkwyNCkgew0KPiA+IC0gICAgICAgICAgICAg
ICBzdGF0dXMgPSBhZGRfZGVwdGhfc21hbGwobHBtLCBpcF9tYXNrZWQsIGRlcHRoLCBuZXh0X2hv
cCk7DQo+ID4gKyAgICAgICAgICAgICAgIHN0YXR1cyA9IGFkZF9kZXB0aF9zbWFsbChscG0sIGlw
X21hc2tlZCwgZGVwdGgsIHJlcyk7DQo+ID4gICAgICAgICB9DQo+ID4gICAgICAgICBlbHNlIHsg
LyogSWYgZGVwdGggPiBSVEVfTFBNX01BWF9ERVBUSF9UQkwyNCAqLw0KPiA+IC0gICAgICAgICAg
ICAgICBzdGF0dXMgPSBhZGRfZGVwdGhfYmlnKGxwbSwgaXBfbWFza2VkLCBkZXB0aCwgbmV4dF9o
b3ApOw0KPiA+ICsgICAgICAgICAgICAgICBzdGF0dXMgPSBhZGRfZGVwdGhfYmlnKGxwbSwgaXBf
bWFza2VkLCBkZXB0aCwgcmVzKTsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAvKg0KPiA+ICAg
ICAgICAgICAgICAgICAgKiBJZiBhZGQgZmFpbHMgZHVlIHRvIGV4aGF1c3Rpb24gb2YgdGJsOCBl
eHRlbnNpb25zIGRlbGV0ZQ0KPiA+IEBAIC02NjUsMTQgKzY5MCwxNCBAQCBydGVfbHBtX2FkZChz
dHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdCBpcCwNCj4gdWludDhfdA0KPiA+IGRlcHRoLA0K
PiA+ICAgKi8NCj4gPiAgaW50DQo+ID4gIHJ0ZV9scG1faXNfcnVsZV9wcmVzZW50KHN0cnVjdCBy
dGVfbHBtICpscG0sIHVpbnQzMl90IGlwLCB1aW50OF90IGRlcHRoLA0KPiA+IC11aW50OF90ICpu
ZXh0X2hvcCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2xwbV9yZXMg
KnJlcykNCj4gPiAgew0KPiA+ICAgICAgICAgdWludDMyX3QgaXBfbWFza2VkOw0KPiA+ICAgICAg
ICAgaW50MzJfdCBydWxlX2luZGV4Ow0KPiA+DQo+ID4gICAgICAgICAvKiBDaGVjayB1c2VyIGFy
Z3VtZW50cy4gKi8NCj4gPiAgICAgICAgIGlmICgobHBtID09IE5VTEwpIHx8DQo+ID4gLSAgICAg
ICAgICAgICAgIChuZXh0X2hvcCA9PSBOVUxMKSB8fA0KPiA+ICsgICAgICAgICAgICAgICAocmVz
ID09IE5VTEwpIHx8DQo+ID4gICAgICAgICAgICAgICAgIChkZXB0aCA8IDEpIHx8IChkZXB0aCA+
IFJURV9MUE1fTUFYX0RFUFRIKSkNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7
DQo+ID4NCj4gPiBAQCAtNjgxLDcgKzcwNiwxMSBAQCB1aW50OF90ICpuZXh0X2hvcCkNCj4gPiAg
ICAgICAgIHJ1bGVfaW5kZXggPSBydWxlX2ZpbmQobHBtLCBpcF9tYXNrZWQsIGRlcHRoKTsNCj4g
Pg0KPiA+ICAgICAgICAgaWYgKHJ1bGVfaW5kZXggPj0gMCkgew0KPiA+IC0gICAgICAgICAgICAg
ICAqbmV4dF9ob3AgPSBscG0tPnJ1bGVzX3RibFtydWxlX2luZGV4XS5uZXh0X2hvcDsNCj4gPiAr
ICAgICAgICAgICAgICAgcmVzLT5uZXh0X2hvcCA9IGxwbS0+cnVsZXNfdGJsW3J1bGVfaW5kZXhd
Lm5leHRfaG9wOw0KPiA+ICsgICAgICAgICAgICAgICByZXMtPmZ3ZF9jbGFzcyA9IGxwbS0+cnVs
ZXNfdGJsW3J1bGVfaW5kZXhdLmZ3ZF9jbGFzczsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBN
X0FTTlVNDQo+ID4gKyAgICAgICAgICAgICAgIHJlcy0+YXNfbnVtID0gbHBtLT5ydWxlc190Ymxb
cnVsZV9pbmRleF0uYXNfbnVtOw0KPiA+ICsjZW5kaWYNCj4gPiAgICAgICAgICAgICAgICAgcmV0
dXJuIDE7DQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiBAQCAtNzMxLDcgKzc2MCw3IEBAIGRlbGV0
ZV9kZXB0aF9zbWFsbChzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiA+IGlwX21hc2tl
ZCwNCj4gPiAgICAgICAgICAgICAgICAgICovDQo+ID4gICAgICAgICAgICAgICAgIGZvciAoaSA9
IHRibDI0X2luZGV4OyBpIDwgKHRibDI0X2luZGV4ICsgdGJsMjRfcmFuZ2UpOyBpKyspDQo+ID4g
ew0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxwbS0+dGJsMjRbaV0uZXh0
X2VudHJ5ID09IDAgJiYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAobHBtLT50Ymwy
NFtpXS5leHRfdmFsaWQgPT0gMCAmJg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBscG0tPnRibDI0W2ldLmRlcHRoIDw9IGRlcHRoICkgew0KPiA+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT50YmwyNFtpXS52YWxpZCA9IElOVkFMSUQ7DQo+
ID4gICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+IEBAIC03NjEsMjMgKzc5MCwzMCBAQCBk
ZWxldGVfZGVwdGhfc21hbGwoc3RydWN0IHJ0ZV9scG0gKmxwbSwNCj4gdWludDMyX3QNCj4gPiBp
cF9tYXNrZWQsDQo+ID4gICAgICAgICAgICAgICAgICAqIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJ1
bGUuDQo+ID4gICAgICAgICAgICAgICAgICAqLw0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgIHN0
cnVjdCBydGVfbHBtX3RibDI0X2VudHJ5IG5ld190YmwyNF9lbnRyeSA9IHsNCj4gPiAtICAgICAg
ICAgICAgICAgICAgICAgICB7Lm5leHRfaG9wID0NCj4gPiBscG0tPnJ1bGVzX3RibFtzdWJfcnVs
ZV9pbmRleF0ubmV4dF9ob3AsfSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAudmFsaWQg
PSBWQUxJRCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAuZXh0X2VudHJ5ID0gMCwNCj4g
PiArICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5IG5ld190YmwyNF9lbnRy
eSA9IHsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICAgICAg
ICAgICAgICAgICAgLmFzX251bSA9IGxwbS0+cnVsZXNfdGJsW3N1Yl9ydWxlX2luZGV4XS5hc19u
dW0sDQo+ID4gKyNlbmRpZg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0X2hvcCA9
IGxwbS0+cnVsZXNfdGJsW3N1Yl9ydWxlX2luZGV4XS5uZXh0X2hvcCwNCj4gPiArICAgICAgICAg
ICAgICAgICAgICAgICAuZndkX2NsYXNzID0NCj4gPiBscG0tPnJ1bGVzX3RibFtzdWJfcnVsZV9p
bmRleF0uZndkX2NsYXNzLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIC5kZXB0aCA9IHN1
Yl9ydWxlX2RlcHRoLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC5leHRfdmFsaWQgPSAw
LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC52YWxpZCA9IFZBTElELA0KPiA+ICAgICAg
ICAgICAgICAgICB9Ow0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgIHN0cnVjdCBydGVfbHBtX3Ri
bDhfZW50cnkgbmV3X3RibDhfZW50cnkgPSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg
LnZhbGlkID0gVkFMSUQsDQo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBydGVfbHBtX3RibF9l
bnRyeSBuZXdfdGJsOF9lbnRyeSA9IHsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVN
DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgLmFzX251bSA9IGxwbS0+cnVsZXNfdGJsW3N1
Yl9ydWxlX2luZGV4XS5hc19udW0sDQo+ID4gKyNlbmRpZg0KPiA+ICsgICAgICAgICAgICAgICAg
ICAgICAgIC5uZXh0X2hvcCA9IGxwbS0+cnVsZXNfdGJsW3N1Yl9ydWxlX2luZGV4XS5uZXh0X2hv
cCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAuZndkX2NsYXNzID0NCj4gPiBscG0tPnJ1
bGVzX3RibFtzdWJfcnVsZV9pbmRleF0uZndkX2NsYXNzLA0KPiA+ICAgICAgICAgICAgICAgICAg
ICAgICAgIC5kZXB0aCA9IHN1Yl9ydWxlX2RlcHRoLA0KPiA+IC0gICAgICAgICAgICAgICAgICAg
ICAgIC5uZXh0X2hvcCA9IGxwbS0+cnVsZXNfdGJsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAg
ICAgW3N1Yl9ydWxlX2luZGV4XS5uZXh0X2hvcCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg
ICAudmFsaWQgPSBWQUxJRCwNCj4gPiAgICAgICAgICAgICAgICAgfTsNCj4gPg0KPiA+ICAgICAg
ICAgICAgICAgICBmb3IgKGkgPSB0YmwyNF9pbmRleDsgaSA8ICh0YmwyNF9pbmRleCArIHRibDI0
X3JhbmdlKTsgaSsrKQ0KPiA+IHsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGlm
IChscG0tPnRibDI0W2ldLmV4dF9lbnRyeSA9PSAwICYmDQo+ID4gKyAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGxwbS0+dGJsMjRbaV0uZXh0X3ZhbGlkID09IDAgJiYNCj4gPiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT50YmwyNFtpXS5kZXB0aCA8PSBkZXB0
aCApIHsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwbS0+dGJsMjRbaV0g
PSBuZXdfdGJsMjRfZW50cnk7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+IEBA
IC04MTQsNyArODUwLDcgQEAgZGVsZXRlX2RlcHRoX3NtYWxsKHN0cnVjdCBydGVfbHBtICpscG0s
IHVpbnQzMl90DQo+ID4gaXBfbWFza2VkLA0KPiA+ICAgKiB0aHVzIGNhbiBiZSByZWN5Y2xlZA0K
PiA+ICAgKi8NCj4gPiAgc3RhdGljIGlubGluZSBpbnQzMl90DQo+ID4gLXRibDhfcmVjeWNsZV9j
aGVjayhzdHJ1Y3QgcnRlX2xwbV90Ymw4X2VudHJ5ICp0Ymw4LCB1aW50MzJfdA0KPiA+IHRibDhf
Z3JvdXBfc3RhcnQpDQo+ID4gK3RibDhfcmVjeWNsZV9jaGVjayhzdHJ1Y3QgcnRlX2xwbV90Ymxf
ZW50cnkgKnRibDgsIHVpbnQzMl90DQo+ID4gdGJsOF9ncm91cF9zdGFydCkNCj4gPiAgew0KPiA+
ICAgICAgICAgdWludDMyX3QgdGJsOF9ncm91cF9lbmQsIGk7DQo+ID4gICAgICAgICB0Ymw4X2dy
b3VwX2VuZCA9IHRibDhfZ3JvdXBfc3RhcnQgKw0KPiBSVEVfTFBNX1RCTDhfR1JPVVBfTlVNX0VO
VFJJRVM7DQo+ID4gQEAgLTg5MSwxMSArOTI3LDE1IEBAIGRlbGV0ZV9kZXB0aF9iaWcoc3RydWN0
IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QNCj4gPiBpcF9tYXNrZWQsDQo+ID4gICAgICAgICB9DQo+
ID4gICAgICAgICBlbHNlIHsNCj4gPiAgICAgICAgICAgICAgICAgLyogU2V0IG5ldyB0Ymw4IGVu
dHJ5LiAqLw0KPiA+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2xwbV90Ymw4X2VudHJ5IG5l
d190Ymw4X2VudHJ5ID0gew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIC52YWxpZCA9IFZB
TElELA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIC5kZXB0aCA9IHN1Yl9ydWxlX2RlcHRo
LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIC52YWxpZF9ncm91cCA9DQo+ID4gbHBtLT50
Ymw4W3RibDhfZ3JvdXBfc3RhcnRdLnZhbGlkX2dyb3VwLA0KPiA+ICsgICAgICAgICAgICAgICBz
dHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgbmV3X3RibDhfZW50cnkgPSB7DQo+ID4gKyNpZmRlZiBS
VEVfTElCUlRFX0xQTV9BU05VTQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC5hc19udW0g
PSBscG0tPnJ1bGVzX3RibFtzdWJfcnVsZV9pbmRleF0uYXNfbnVtLA0KPiA+ICsjZW5kaWYNCj4g
PiArICAgICAgICAgICAgICAgICAgICAgICAuZndkX2NsYXNzID0NCj4gPiBscG0tPnJ1bGVzX3Ri
bFtzdWJfcnVsZV9pbmRleF0uZndkX2NsYXNzLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg
IC5uZXh0X2hvcCA9IGxwbS0+cnVsZXNfdGJsW3N1Yl9ydWxlX2luZGV4XS5uZXh0X2hvcCwNCj4g
PiArICAgICAgICAgICAgICAgICAgICAgICAuZGVwdGggPSBzdWJfcnVsZV9kZXB0aCwNCj4gPiAr
ICAgICAgICAgICAgICAgICAgICAgICAuZXh0X3ZhbGlkID0gbHBtLT50Ymw4W3RibDhfZ3JvdXBf
c3RhcnRdLmV4dF92YWxpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAudmFsaWQgPSBW
QUxJRCwNCj4gPiAgICAgICAgICAgICAgICAgfTsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAv
Kg0KPiA+IEBAIC05MjMsMTEgKzk2MywxNSBAQCBkZWxldGVfZGVwdGhfYmlnKHN0cnVjdCBydGVf
bHBtICpscG0sIHVpbnQzMl90DQo+ID4gaXBfbWFza2VkLA0KPiA+ICAgICAgICAgfQ0KPiA+ICAg
ICAgICAgZWxzZSBpZiAodGJsOF9yZWN5Y2xlX2luZGV4ID4gLTEpIHsNCj4gPiAgICAgICAgICAg
ICAgICAgLyogVXBkYXRlIHRibDI0IGVudHJ5LiAqLw0KPiA+IC0gICAgICAgICAgICAgICBzdHJ1
Y3QgcnRlX2xwbV90YmwyNF9lbnRyeSBuZXdfdGJsMjRfZW50cnkgPSB7DQo+ID4gLSAgICAgICAg
ICAgICAgICAgICAgICAgeyAubmV4dF9ob3AgPQ0KPiA+IGxwbS0+dGJsOFt0Ymw4X3JlY3ljbGVf
aW5kZXhdLm5leHRfaG9wLCB9LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIC52YWxpZCA9
IFZBTElELA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIC5leHRfZW50cnkgPSAwLA0KPiA+
ICsgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgbmV3X3RibDI0X2VudHJ5
ID0gew0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9MUE1fQVNOVU0NCj4gPiArICAgICAgICAgICAg
ICAgICAgICAgICAuYXNfbnVtID0gbHBtLT50Ymw4W3RibDhfcmVjeWNsZV9pbmRleF0uYXNfbnVt
LA0KPiA+ICsjZW5kaWYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAubmV4dF9ob3AgPSBs
cG0tPnRibDhbdGJsOF9yZWN5Y2xlX2luZGV4XS5uZXh0X2hvcCwNCj4gPiArICAgICAgICAgICAg
ICAgICAgICAgICAuZndkX2NsYXNzID0NCj4gPiBscG0tPnRibDhbdGJsOF9yZWN5Y2xlX2luZGV4
XS5md2RfY2xhc3MsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgLmRlcHRoID0gbHBtLT50
Ymw4W3RibDhfcmVjeWNsZV9pbmRleF0uZGVwdGgsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg
ICAgLmV4dF92YWxpZCA9IDAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgLnZhbGlkID0g
VkFMSUQsDQo+ID4gICAgICAgICAgICAgICAgIH07DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAg
LyogU2V0IHRibDI0IGJlZm9yZSBmcmVlaW5nIHRibDggdG8gYXZvaWQgcmFjZSBjb25kaXRpb24u
ICovDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uaCBiL2xpYi9saWJy
dGVfbHBtL3J0ZV9scG0uaA0KPiA+IGluZGV4IGMyOTljZTIuLjdjNjE1YmMgMTAwNjQ0DQo+ID4g
LS0tIGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5oDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9scG0v
cnRlX2xwbS5oDQo+ID4gQEAgLTMxLDggKzMxLDggQEANCj4gPiAgICogICBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4gREFNQUdF
Lg0KPiA+ICAgKi8NCj4gPg0KPiA+IC0jaWZuZGVmIF9SVEVfTFBNX0hfDQo+ID4gLSNkZWZpbmUg
X1JURV9MUE1fSF8NCj4gPiArI2lmbmRlZiBfUlRFX0xQTV9FWFRfSF8NCj4gPiArI2RlZmluZSBf
UlRFX0xQTV9FWFRfSF8NCj4gPg0KPiA+ICAvKioNCj4gPiAgICogQGZpbGUNCj4gPiBAQCAtODEs
NTcgKzgxLDU4IEBAIGV4dGVybiAiQyIgew0KPiA+ICAjZGVmaW5lIFJURV9MUE1fUkVUVVJOX0lG
X1RSVUUoY29uZCwgcmV0dmFsKQ0KPiA+ICAjZW5kaWYNCj4gPg0KPiA+IC0vKiogQGludGVybmFs
IGJpdG1hc2sgd2l0aCB2YWxpZCBhbmQgZXh0X2VudHJ5L3ZhbGlkX2dyb3VwIGZpZWxkcyBzZXQg
Ki8NCj4gPiAtI2RlZmluZSBSVEVfTFBNX1ZBTElEX0VYVF9FTlRSWV9CSVRNQVNLIDB4MDMwMA0K
PiA+ICsvKiogQGludGVybmFsIGJpdG1hc2sgd2l0aCB2YWxpZCBhbmQgZXh0X3ZhbGlkL2V4dF92
YWxpZCBmaWVsZHMgc2V0ICovDQo+ID4gKyNkZWZpbmUgUlRFX0xQTV9WQUxJRF9FWFRfRU5UUllf
QklUTUFTSyAweDAzDQo+ID4NCj4gPiAgLyoqIEJpdG1hc2sgdXNlZCB0byBpbmRpY2F0ZSBzdWNj
ZXNzZnVsIGxvb2t1cCAqLw0KPiA+IC0jZGVmaW5lIFJURV9MUE1fTE9PS1VQX1NVQ0NFU1MgICAg
ICAgICAgMHgwMTAwDQo+ID4gKyNkZWZpbmUgUlRFX0xQTV9MT09LVVBfU1VDQ0VTUyAgICAgICAg
ICAweDAxDQo+ID4gKw0KPiA+ICtzdHJ1Y3QgcnRlX2xwbV9yZXMgew0KPiA+ICsgICAgICAgdWlu
dDE2X3QgICAgICAgIG5leHRfaG9wOw0KPiA+ICsgICAgICAgdWludDhfdCAgICAgICAgIGZ3ZF9j
bGFzczsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICB1aW50
MzJfdCAgICAgICAgYXNfbnVtOw0KPiA+ICsjZW5kaWYNCj4gPiArfTsNCj4gPg0KPiA+ICAjaWYg
UlRFX0JZVEVfT1JERVIgPT0gUlRFX0xJVFRMRV9FTkRJQU4NCj4gPiAtLyoqIEBpbnRlcm5hbCBU
YmwyNCBlbnRyeSBzdHJ1Y3R1cmUuICovDQo+ID4gLXN0cnVjdCBydGVfbHBtX3RibDI0X2VudHJ5
IHsNCj4gPiAtICAgICAgIC8qIFN0b3JlcyBOZXh0IGhvcCBvciBncm91cCBpbmRleCAoaS5lLiBn
aW5kZXgpaW50byB0Ymw4LiAqLw0KPiA+ICtzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgew0KPiA+
ICsgICAgICAgdWludDhfdCB2YWxpZCAgICAgICAgICAgOjE7DQo+ID4gKyAgICAgICB1aW50OF90
IGV4dF92YWxpZCAgICAgICA6MTsNCj4gPiArICAgICAgIHVpbnQ4X3QgZGVwdGggICAgICAgICAg
IDo2Ow0KPiA+ICsgICAgICAgdWludDhfdCBmd2RfY2xhc3M7DQo+ID4gICAgICAgICB1bmlvbiB7
DQo+ID4gLSAgICAgICAgICAgICAgIHVpbnQ4X3QgbmV4dF9ob3A7DQo+ID4gLSAgICAgICAgICAg
ICAgIHVpbnQ4X3QgdGJsOF9naW5kZXg7DQo+ID4gKyAgICAgICAgICAgICAgIHVpbnQxNl90IG5l
eHRfaG9wOw0KPiA+ICsgICAgICAgICAgICAgICB1aW50MTZfdCB0Ymw4X2dpbmRleDsNCj4gPiAg
ICAgICAgIH07DQo+ID4gLSAgICAgICAvKiBVc2luZyBzaW5nbGUgdWludDhfdCB0byBzdG9yZSAz
IHZhbHVlcy4gKi8NCj4gPiAtICAgICAgIHVpbnQ4X3QgdmFsaWQgICAgIDoxOyAvKio8IFZhbGlk
YXRpb24gZmxhZy4gKi8NCj4gPiAtICAgICAgIHVpbnQ4X3QgZXh0X2VudHJ5IDoxOyAvKio8IEV4
dGVybmFsIGVudHJ5LiAqLw0KPiA+IC0gICAgICAgdWludDhfdCBkZXB0aCAgICAgOjY7IC8qKjwg
UnVsZSBkZXB0aC4gKi8NCj4gPiAtfTsNCj4gPiAtDQo+ID4gLS8qKiBAaW50ZXJuYWwgVGJsOCBl
bnRyeSBzdHJ1Y3R1cmUuICovDQo+ID4gLXN0cnVjdCBydGVfbHBtX3RibDhfZW50cnkgew0KPiA+
IC0gICAgICAgdWludDhfdCBuZXh0X2hvcDsgLyoqPCBuZXh0IGhvcC4gKi8NCj4gPiAtICAgICAg
IC8qIFVzaW5nIHNpbmdsZSB1aW50OF90IHRvIHN0b3JlIDMgdmFsdWVzLiAqLw0KPiA+IC0gICAg
ICAgdWludDhfdCB2YWxpZCAgICAgICA6MTsgLyoqPCBWYWxpZGF0aW9uIGZsYWcuICovDQo+ID4g
LSAgICAgICB1aW50OF90IHZhbGlkX2dyb3VwIDoxOyAvKio8IEdyb3VwIHZhbGlkYXRpb24gZmxh
Zy4gKi8NCj4gPiAtICAgICAgIHVpbnQ4X3QgZGVwdGggICAgICAgOjY7IC8qKjwgUnVsZSBkZXB0
aC4gKi8NCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICB1aW50
MzJfdCBhc19udW07DQo+ID4gKyNlbmRpZg0KPiA+ICB9Ow0KPiA+ICAjZWxzZQ0KPiA+IC1zdHJ1
Y3QgcnRlX2xwbV90YmwyNF9lbnRyeSB7DQo+ID4gLSAgICAgICB1aW50OF90IGRlcHRoICAgICAg
IDo2Ow0KPiA+IC0gICAgICAgdWludDhfdCBleHRfZW50cnkgICA6MTsNCj4gPiAtICAgICAgIHVp
bnQ4X3QgdmFsaWQgICAgICAgOjE7DQo+ID4gK3N0cnVjdCBydGVfbHBtX3RibF9lbnRyeSB7DQo+
ID4gKyNpZmRlZiBSVEVfTElCUlRFX0xQTV9BU05VTQ0KPiA+ICsgICAgICAgdWludDMyX3QgYXNf
bnVtOw0KPiA+ICsjZW5kaWYNCj4gPiAgICAgICAgIHVuaW9uIHsNCj4gPiAtICAgICAgICAgICAg
ICAgdWludDhfdCB0Ymw4X2dpbmRleDsNCj4gPiAtICAgICAgICAgICAgICAgdWludDhfdCBuZXh0
X2hvcDsNCj4gPiArICAgICAgICAgICAgICAgdWludDE2X3QgdGJsOF9naW5kZXg7DQo+ID4gKyAg
ICAgICAgICAgICAgIHVpbnQxNl90IG5leHRfaG9wOw0KPiA+ICAgICAgICAgfTsNCj4gPiAtfTsN
Cj4gPiAtDQo+ID4gLXN0cnVjdCBydGVfbHBtX3RibDhfZW50cnkgew0KPiA+IC0gICAgICAgdWlu
dDhfdCBkZXB0aCAgICAgICA6NjsNCj4gPiAtICAgICAgIHVpbnQ4X3QgdmFsaWRfZ3JvdXAgOjE7
DQo+ID4gLSAgICAgICB1aW50OF90IHZhbGlkICAgICAgIDoxOw0KPiA+IC0gICAgICAgdWludDhf
dCBuZXh0X2hvcDsNCj4gPiArICAgICAgIHVpbnQ4X3QgZndkX2NsYXNzOw0KPiA+ICsgICAgICAg
dWludDhfdCBkZXB0aCAgICAgICAgICAgOjY7DQo+ID4gKyAgICAgICB1aW50OF90IGV4dF92YWxp
ZCAgICAgICA6MTsNCj4gPiArICAgICAgIHVpbnQ4X3QgdmFsaWQgICAgICAgICAgIDoxOw0KPiA+
ICB9Ow0KPiA+ICAjZW5kaWYNCj4gPg0KPiA+ICAvKiogQGludGVybmFsIFJ1bGUgc3RydWN0dXJl
LiAqLw0KPiA+ICBzdHJ1Y3QgcnRlX2xwbV9ydWxlIHsNCj4gPiAgICAgICAgIHVpbnQzMl90IGlw
OyAvKio8IFJ1bGUgSVAgYWRkcmVzcy4gKi8NCj4gPiAtICAgICAgIHVpbnQ4X3QgIG5leHRfaG9w
OyAvKio8IFJ1bGUgbmV4dCBob3AuICovDQo+ID4gKyNpZmRlZiBSVEVfTElCUlRFX0xQTV9BU05V
TQ0KPiA+ICsgICAgICAgdWludDMyX3QgYXNfbnVtOw0KPiA+ICsjZW5kaWYNCj4gPiArICAgICAg
IHVpbnQxNl90ICBuZXh0X2hvcDsgLyoqPCBSdWxlIG5leHQgaG9wLiAqLw0KPiA+ICsgICAgICAg
dWludDhfdCBmd2RfY2xhc3M7DQo+ID4gIH07DQo+ID4NCj4gPiAgLyoqIEBpbnRlcm5hbCBDb250
YWlucyBtZXRhZGF0YSBhYm91dCB0aGUgcnVsZXMgdGFibGUuICovDQo+ID4gQEAgLTE0OCw5ICsx
NDksOSBAQCBzdHJ1Y3QgcnRlX2xwbSB7DQo+ID4gICAgICAgICBzdHJ1Y3QgcnRlX2xwbV9ydWxl
X2luZm8gcnVsZV9pbmZvW1JURV9MUE1fTUFYX0RFUFRIXTsgLyoqPCBSdWxlDQo+ID4gaW5mbyB0
YWJsZS4gKi8NCj4gPg0KPiA+ICAgICAgICAgLyogTFBNIFRhYmxlcy4gKi8NCj4gPiAtICAgICAg
IHN0cnVjdCBydGVfbHBtX3RibDI0X2VudHJ5IHRibDI0W1JURV9MUE1fVEJMMjRfTlVNX0VOVFJJ
RVNdIFwNCj4gPiArICAgICAgIHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSB0YmwyNFtSVEVfTFBN
X1RCTDI0X05VTV9FTlRSSUVTXSBcDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgX19ydGVf
Y2FjaGVfYWxpZ25lZDsgLyoqPCBMUE0gdGJsMjQgdGFibGUuICovDQo+ID4gLSAgICAgICBzdHJ1
Y3QgcnRlX2xwbV90Ymw4X2VudHJ5IHRibDhbUlRFX0xQTV9UQkw4X05VTV9FTlRSSUVTXSBcDQo+
ID4gKyAgICAgICBzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgdGJsOFtSVEVfTFBNX1RCTDhfTlVN
X0VOVFJJRVNdIFwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBfX3J0ZV9jYWNoZV9hbGln
bmVkOyAvKio8IExQTSB0Ymw4IHRhYmxlLiAqLw0KPiA+ICAgICAgICAgc3RydWN0IHJ0ZV9scG1f
cnVsZSBydWxlc190YmxbMF0gXA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIF9fcnRlX2Nh
Y2hlX2FsaWduZWQ7IC8qKjwgTFBNIHJ1bGVzLiAqLw0KPiA+IEBAIC0yMTksNyArMjIwLDcgQEAg
cnRlX2xwbV9mcmVlKHN0cnVjdCBydGVfbHBtICpscG0pOw0KPiA+ICAgKiAgIDAgb24gc3VjY2Vz
cywgbmVnYXRpdmUgdmFsdWUgb3RoZXJ3aXNlDQo+ID4gICAqLw0KPiA+ICBpbnQNCj4gPiAtcnRl
X2xwbV9hZGQoc3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QgaXAsIHVpbnQ4X3QgZGVwdGgs
IHVpbnQ4X3QNCj4gPiBuZXh0X2hvcCk7DQo+ID4gK3J0ZV9scG1fYWRkKHN0cnVjdCBydGVfbHBt
ICpscG0sIHVpbnQzMl90IGlwLCB1aW50OF90IGRlcHRoLCBzdHJ1Y3QNCj4gPiBydGVfbHBtX3Jl
cyAqcmVzKTsNCj4gPg0KPiA+ICAvKioNCj4gPiAgICogQ2hlY2sgaWYgYSBydWxlIGlzIHByZXNl
bnQgaW4gdGhlIExQTSB0YWJsZSwNCj4gPiBAQCAtMjM4LDcgKzIzOSw3IEBAIHJ0ZV9scG1fYWRk
KHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90IGlwLA0KPiB1aW50OF90DQo+ID4gZGVwdGgs
IHVpbnQ4X3QgbmV4dF9ob3ApOw0KPiA+ICAgKi8NCj4gPiAgaW50DQo+ID4gIHJ0ZV9scG1faXNf
cnVsZV9wcmVzZW50KHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90IGlwLCB1aW50OF90IGRl
cHRoLA0KPiA+IC11aW50OF90ICpuZXh0X2hvcCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHJ0ZV9scG1fcmVzICpyZXMpOw0KPiA+DQo+ID4gIC8qKg0KPiA+ICAgKiBEZWxl
dGUgYSBydWxlIGZyb20gdGhlIExQTSB0YWJsZS4NCj4gPiBAQCAtMjc3LDI5ICsyNzgsNDMgQEAg
cnRlX2xwbV9kZWxldGVfYWxsKHN0cnVjdCBydGVfbHBtICpscG0pOw0KPiA+ICAgKiAgIC1FSU5W
QUwgZm9yIGluY29ycmVjdCBhcmd1bWVudHMsIC1FTk9FTlQgb24gbG9va3VwIG1pc3MsIDAgb24g
bG9va3VwDQo+ID4gaGl0DQo+ID4gICAqLw0KPiA+ICBzdGF0aWMgaW5saW5lIGludA0KPiA+IC1y
dGVfbHBtX2xvb2t1cChzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdCBpcCwgdWludDhfdCAq
bmV4dF9ob3ApDQo+ID4gK3J0ZV9scG1fbG9va3VwKHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQz
Ml90IGlwLCBzdHJ1Y3QgcnRlX2xwbV9yZXMgKnJlcykNCj4gPiAgew0KPiA+ICAgICAgICAgdW5z
aWduZWQgdGJsMjRfaW5kZXggPSAoaXAgPj4gOCk7DQo+ID4gLSAgICAgICB1aW50MTZfdCB0Ymxf
ZW50cnk7DQo+ID4gLQ0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9MUE1fQVNOVU0NCj4gPiArICAg
ICAgIHVpbnQ2NF90IHRibF9lbnRyeTsNCj4gPiArI2Vsc2UNCj4gPiArICAgICAgIHVpbnQzMl90
IHRibF9lbnRyeTsNCj4gPiArI2VuZGlmDQo+ID4gICAgICAgICAvKiBERUJVRzogQ2hlY2sgdXNl
ciBpbnB1dCBhcmd1bWVudHMuICovDQo+ID4gLSAgICAgICBSVEVfTFBNX1JFVFVSTl9JRl9UUlVF
KCgobHBtID09IE5VTEwpIHx8IChuZXh0X2hvcCA9PSBOVUxMKSksDQo+ID4gLUVJTlZBTCk7DQo+
ID4gKyAgICAgICBSVEVfTFBNX1JFVFVSTl9JRl9UUlVFKCgobHBtID09IE5VTEwpIHx8IChyZXMg
PT0gTlVMTCkpLCAtDQo+IEVJTlZBTCk7DQo+ID4NCj4gPiAgICAgICAgIC8qIENvcHkgdGJsMjQg
ZW50cnkgKi8NCj4gPiAtICAgICAgIHRibF9lbnRyeSA9ICooY29uc3QgdWludDE2X3QgKikmbHBt
LT50YmwyNFt0YmwyNF9pbmRleF07DQo+ID4gLQ0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9MUE1f
QVNOVU0NCj4gPiArICAgICAgIHRibF9lbnRyeSA9ICooY29uc3QgdWludDY0X3QgKikmbHBtLT50
YmwyNFt0YmwyNF9pbmRleF07DQo+ID4gKyNlbHNlDQo+ID4gKyAgICAgICB0YmxfZW50cnkgPSAq
KGNvbnN0IHVpbnQzMl90ICopJmxwbS0+dGJsMjRbdGJsMjRfaW5kZXhdOw0KPiA+ICsjZW5kaWYN
Cj4gPiAgICAgICAgIC8qIENvcHkgdGJsOCBlbnRyeSAob25seSBpZiBuZWVkZWQpICovDQo+ID4g
ICAgICAgICBpZiAodW5saWtlbHkoKHRibF9lbnRyeSAmIFJURV9MUE1fVkFMSURfRVhUX0VOVFJZ
X0JJVE1BU0spID09DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgUlRFX0xQTV9WQUxJRF9F
WFRfRU5UUllfQklUTUFTSykpIHsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0
Ymw4X2luZGV4ID0gKHVpbnQ4X3QpaXAgKw0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCh1aW50OF90KXRibF9lbnRyeSAqDQo+ID4gUlRFX0xQTV9UQkw4X0dST1VQX05VTV9F
TlRSSUVTKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKihzdHJ1Y3Qg
cnRlX2xwbV90YmxfZW50cnkNCj4gPiAqKSZ0YmxfZW50cnkpLnRibDhfZ2luZGV4ICogUlRFX0xQ
TV9UQkw4X0dST1VQX05VTV9FTlRSSUVTKTsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICB0Ymxf
ZW50cnkgPSAqKGNvbnN0IHVpbnQxNl90ICopJmxwbS0+dGJsOFt0Ymw4X2luZGV4XTsNCj4gPiAr
I2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICAgICAgICAgIHRibF9lbnRy
eSA9ICooY29uc3QgdWludDY0X3QgKikmbHBtLT50Ymw4W3RibDhfaW5kZXhdOw0KPiA+ICsjZWxz
ZQ0KPiA+ICsgICAgICAgICAgICAgICB0YmxfZW50cnkgPSAqKGNvbnN0IHVpbnQzMl90ICopJmxw
bS0+dGJsOFt0Ymw4X2luZGV4XTsNCj4gPiArI2VuZGlmDQo+ID4gICAgICAgICB9DQo+ID4gLQ0K
PiA+IC0gICAgICAgKm5leHRfaG9wID0gKHVpbnQ4X3QpdGJsX2VudHJ5Ow0KPiA+ICsgICAgICAg
cmVzLT5uZXh0X2hvcCAgPSAoKHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSAqKSZ0YmxfZW50cnkp
LT5uZXh0X2hvcDsNCj4gPiArICAgICAgIHJlcy0+ZndkX2NsYXNzID0gKChzdHJ1Y3QgcnRlX2xw
bV90YmxfZW50cnkNCj4gPiAqKSZ0YmxfZW50cnkpLT5md2RfY2xhc3M7DQo+ID4gKyNpZmRlZiBS
VEVfTElCUlRFX0xQTV9BU05VTQ0KPiA+ICsgICAgICAgcmVzLT5hc19udW0gICAgICAgPSAoKHN0
cnVjdCBydGVfbHBtX3RibF9lbnRyeQ0KPiA+ICopJnRibF9lbnRyeSktPmFzX251bTsNCj4gPiAr
I2VuZGlmDQo+ID4gICAgICAgICByZXR1cm4gKHRibF9lbnRyeSAmIFJURV9MUE1fTE9PS1VQX1NV
Q0NFU1MpID8gMCA6IC1FTk9FTlQ7DQo+ID4gKw0KPiA+ICB9DQo+ID4NCj4gPiAgLyoqDQo+ID4g
QEAgLTMyMiwxOSArMzM3LDI1IEBAIHJ0ZV9scG1fbG9va3VwKHN0cnVjdCBydGVfbHBtICpscG0s
IHVpbnQzMl90IGlwLA0KPiA+IHVpbnQ4X3QgKm5leHRfaG9wKQ0KPiA+ICAgKiAgQHJldHVybg0K
PiA+ICAgKiAgIC1FSU5WQUwgZm9yIGluY29ycmVjdCBhcmd1bWVudHMsIG90aGVyd2lzZSAwDQo+
ID4gICAqLw0KPiA+IC0jZGVmaW5lIHJ0ZV9scG1fbG9va3VwX2J1bGsobHBtLCBpcHMsIG5leHRf
aG9wcywgbikgXA0KPiA+IC0gICAgICAgICAgICAgICBydGVfbHBtX2xvb2t1cF9idWxrX2Z1bmMo
bHBtLCBpcHMsIG5leHRfaG9wcywgbikNCj4gPiArI2RlZmluZSBydGVfbHBtX2xvb2t1cF9idWxr
KGxwbSwgaXBzLCByZXNfdGJsLCBuKSBcDQo+ID4gKyAgICAgICAgICAgICAgIHJ0ZV9scG1fbG9v
a3VwX2J1bGtfZnVuYyhscG0sIGlwcywgcmVzX3RibCwgbikNCj4gPg0KPiA+ICBzdGF0aWMgaW5s
aW5lIGludA0KPiA+IC1ydGVfbHBtX2xvb2t1cF9idWxrX2Z1bmMoY29uc3Qgc3RydWN0IHJ0ZV9s
cG0gKmxwbSwgY29uc3QgdWludDMyX3QgKiBpcHMsDQo+ID4gLSAgICAgICAgICAgICAgIHVpbnQx
Nl90ICogbmV4dF9ob3BzLCBjb25zdCB1bnNpZ25lZCBuKQ0KPiA+ICtydGVfbHBtX2xvb2t1cF9i
dWxrX2Z1bmMoY29uc3Qgc3RydWN0IHJ0ZV9scG0gKmxwbSwgY29uc3QgdWludDMyX3QgKmlwcywN
Cj4gPiArICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9scG1fcmVzICpyZXNfdGJsLCBjb25zdCB1
bnNpZ25lZCBuKQ0KPiA+ICB7DQo+ID4gICAgICAgICB1bnNpZ25lZCBpOw0KPiA+ICsgICAgICAg
aW50IHJldCA9IDA7DQo+ID4gKyNpZmRlZiBSVEVfTElCUlRFX0xQTV9BU05VTQ0KPiA+ICsgICAg
ICAgdWludDY0X3QgdGJsX2VudHJ5Ow0KPiA+ICsjZWxzZQ0KPiA+ICsgICAgICAgdWludDMyX3Qg
dGJsX2VudHJ5Ow0KPiA+ICsjZW5kaWYNCj4gPiAgICAgICAgIHVuc2lnbmVkIHRibDI0X2luZGV4
ZXNbbl07DQo+ID4NCj4gPiAgICAgICAgIC8qIERFQlVHOiBDaGVjayB1c2VyIGlucHV0IGFyZ3Vt
ZW50cy4gKi8NCj4gPiAgICAgICAgIFJURV9MUE1fUkVUVVJOX0lGX1RSVUUoKChscG0gPT0gTlVM
TCkgfHwgKGlwcyA9PSBOVUxMKSB8fA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIChuZXh0
X2hvcHMgPT0gTlVMTCkpLCAtRUlOVkFMKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAo
cmVzX3RibCA9PSBOVUxMKSksIC1FSU5WQUwpOw0KPiA+DQo+ID4gICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgbjsgaSsrKSB7DQo+ID4gICAgICAgICAgICAgICAgIHRibDI0X2luZGV4ZXNbaV0gPSBp
cHNbaV0gPj4gODsNCj4gPiBAQCAtMzQyLDIwICszNjMsMzIgQEAgcnRlX2xwbV9sb29rdXBfYnVs
a19mdW5jKGNvbnN0IHN0cnVjdCBydGVfbHBtDQo+ICpscG0sDQo+ID4gY29uc3QgdWludDMyX3Qg
KiBpcHMsDQo+ID4NCj4gPiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsNCj4gPiAg
ICAgICAgICAgICAgICAgLyogU2ltcGx5IGNvcHkgdGJsMjQgZW50cnkgdG8gb3V0cHV0ICovDQo+
ID4gLSAgICAgICAgICAgICAgIG5leHRfaG9wc1tpXSA9ICooY29uc3QgdWludDE2X3QNCj4gPiAq
KSZscG0tPnRibDI0W3RibDI0X2luZGV4ZXNbaV1dOw0KPiA+IC0NCj4gPiArI2lmZGVmIFJURV9M
SUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICAgICAgICAgIHRibF9lbnRyeSA9ICooY29uc3Qg
dWludDY0X3QNCj4gPiAqKSZscG0tPnRibDI0W3RibDI0X2luZGV4ZXNbaV1dOw0KPiA+ICsjZWxz
ZQ0KPiA+ICsgICAgICAgICAgICAgICB0YmxfZW50cnkgPSAqKGNvbnN0IHVpbnQzMl90DQo+ID4g
KikmbHBtLT50YmwyNFt0YmwyNF9pbmRleGVzW2ldXTsNCj4gPiArI2VuZGlmDQo+ID4gICAgICAg
ICAgICAgICAgIC8qIE92ZXJ3cml0ZSBvdXRwdXQgd2l0aCB0Ymw4IGVudHJ5IGlmIG5lZWRlZCAq
Lw0KPiA+IC0gICAgICAgICAgICAgICBpZiAodW5saWtlbHkoKG5leHRfaG9wc1tpXSAmDQo+ID4g
UlRFX0xQTV9WQUxJRF9FWFRfRU5UUllfQklUTUFTSykgPT0NCj4gPiAtICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJURV9MUE1fVkFMSURfRVhUX0VOVFJZX0JJVE1BU0spKSB7DQo+ID4g
KyAgICAgICAgICAgICAgIGlmICh1bmxpa2VseSgodGJsX2VudHJ5ICYgUlRFX0xQTV9WQUxJRF9F
WFRfRU5UUllfQklUTUFTSykNCj4gPiA9PQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIFJU
RV9MUE1fVkFMSURfRVhUX0VOVFJZX0JJVE1BU0spKSB7DQo+ID4NCj4gPiAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCB0Ymw4X2luZGV4ID0gKHVpbnQ4X3QpaXBzW2ldICsNCj4gPiAt
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KW5leHRfaG9w
c1tpXSAqDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVf
TFBNX1RCTDhfR1JPVVBfTlVNX0VOVFJJRVMpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKCgqKHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeQ0KPiA+ICopJnRibF9lbnRyeSku
dGJsOF9naW5kZXggKiBSVEVfTFBNX1RCTDhfR1JPVVBfTlVNX0VOVFJJRVMpOw0KPiA+DQo+ID4g
LSAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9ob3BzW2ldID0gKihjb25zdCB1aW50MTZfdA0K
PiA+ICopJmxwbS0+dGJsOFt0Ymw4X2luZGV4XTsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBN
X0FTTlVNDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdGJsX2VudHJ5ID0gKihjb25zdCB1
aW50NjRfdA0KPiA+ICopJmxwbS0+dGJsOFt0Ymw4X2luZGV4XTsNCj4gPiArI2Vsc2UNCj4gPiAr
ICAgICAgICAgICAgICAgICAgICAgICB0YmxfZW50cnkgPSAqKGNvbnN0IHVpbnQzMl90DQo+ID4g
KikmbHBtLT50Ymw4W3RibDhfaW5kZXhdOw0KPiA+ICsjZW5kaWYNCj4gPiAgICAgICAgICAgICAg
ICAgfQ0KPiA+ICsgICAgICAgICAgICAgICByZXNfdGJsW2ldLm5leHRfaG9wICAgICA9ICgoc3Ry
dWN0IHJ0ZV9scG1fdGJsX2VudHJ5DQo+ID4gKikmdGJsX2VudHJ5KS0+bmV4dF9ob3A7DQo+ID4g
KyAgICAgICAgICAgICAgIHJlc190YmxbaV0uZndkX2NsYXNzICAgID0gKChzdHJ1Y3QgcnRlX2xw
bV90YmxfZW50cnkNCj4gPiAqKSZ0YmxfZW50cnkpLT5uZXh0X2hvcDsNCj4gPiArI2lmZGVmIFJU
RV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICAgICAgICAgIHJlc190YmxbaV0uYXNfbnVt
ICAgICAgID0gKChzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkNCj4gPiAqKSZ0YmxfZW50cnkpLT5h
c19udW07DQo+ID4gKyNlbmRpZg0KPiA+ICsgICAgICAgICAgICAgICByZXQgfD0gMSA8PCBpOw0K
PiA+ICAgICAgICAgfQ0KPiA+IC0gICAgICAgcmV0dXJuIDA7DQo+ID4gKyAgICAgICByZXR1cm4g
cmV0Ow0KPiA+ICB9DQo+ID4NCj4gPiAgLyogTWFzayBmb3VyIHJlc3VsdHMuICovDQo+ID4gQEAg
LTQ3Nyw0ICs1MTAsNCBAQCBydGVfbHBtX2xvb2t1cHg0KGNvbnN0IHN0cnVjdCBydGVfbHBtICps
cG0sDQo+IF9fbTEyOGkgaXAsDQo+ID4gdWludDE2X3QgaG9wWzRdLA0KPiA+ICB9DQo+ID4gICNl
bmRpZg0KPiA+DQo+ID4gLSNlbmRpZiAvKiBfUlRFX0xQTV9IXyAqLw0KPiA+ICsjZW5kaWYgLyog
X1JURV9MUE1fRVhUX0hfICovDQo+ID4NCj4gPiAyMDE1LTEwLTI0IDk6MDkgR01UKzAzOjAwIE1h
dHRoZXcgSGFsbCA8bWhhbGxAbWhjb21wdXRpbmcubmV0PjoNCj4gPg0KPiA+ID4gT24gMTAvMjMv
MTUgOToyMCBBTSwgTWF0dGhldyBIYWxsIHdyb3RlOg0KPiA+ID4NCj4gPiA+PiBPbiBGcmksIE9j
dCAyMywgMjAxNSBhdCAwMzo1MTo0OFBNICswMjAwLCBNaWNoYWwgSmFzdHJ6ZWJza2kgd3JvdGU6
DQo+ID4gPj4NCj4gPiA+Pj4gRnJvbTogTWljaGFsIEtvYnlsaW5za2kgIDxtaWNoYWx4LmtvYnls
aW5za2lAaW50ZWwuY29tPg0KPiA+ID4+Pg0KPiA+ID4+PiBUaGUgY3VycmVudCBEUERLIGltcGxl
bWVudGF0aW9uIGZvciBMUE0gZm9yIElQdjQgYW5kIElQdjYgbGltaXRzIHRoZQ0KPiA+ID4+PiBu
dW1iZXIgb2YgbmV4dCBob3BzIHRvIDI1NiwgYXMgdGhlIG5leHQgaG9wIElEIGlzIGFuIDgtYml0
IGxvbmcgZmllbGQuDQo+ID4gPj4+IFByb3Bvc2VkIGV4dGVuc2lvbiBpbmNyZWFzZSBudW1iZXIg
b2YgbmV4dCBob3BzIGZvciBJUHY0IHRvIDJeMjQgYW5kDQo+ID4gPj4+IGFsc28gYWxsb3dzIDMy
LWJpdHMgcmVhZC93cml0ZSBvcGVyYXRpb25zLg0KPiA+ID4+Pg0KPiA+ID4+PiBUaGlzIHBhdGNo
c2V0IHJlcXVpcmVzIGFkZGl0aW9uYWwgY2hhbmdlIHRvIHJ0ZV90YWJsZSBsaWJyYXJ5IHRvIG1l
ZXQNCj4gPiA+Pj4gQUJJIGNvbXBhdGliaWxpdHkgcmVxdWlyZW1lbnRzLiBBIHYyIHdpbGwgYmUg
c2VudCBuZXh0IHdlZWsuDQo+ID4gPj4+DQo+ID4gPj4NCj4gPiA+PiBJIGFsc28gaGF2ZSBhIHBh
dGNoc2V0IGZvciB0aGlzLg0KPiA+ID4+DQo+ID4gPj4gSSB3aWxsIHNlbmQgaXQgb3V0IGFzIHdl
bGwgc28gd2UgY291bGQgY29tcGFyZS4NCj4gPiA+Pg0KPiA+ID4+IE1hdHRoZXcuDQo+ID4gPj4N
Cj4gPiA+DQo+ID4gPiBTb3JyeSBhYm91dCB0aGUgZGVsYXk7IEkgb25seSB3b3JrIG9uIERQREsg
aW4gcGVyc29uYWwgdGltZSBhbmQgbm90IGFzDQo+ID4gPiBwYXJ0IG9mIGEgam9iLiBNeSBwYXRj
aHNldCBpcyBhdHRhY2hlZCB0byB0aGlzIGVtYWlsLg0KPiA+ID4NCj4gPiA+IE9uZSBwb3NzaWJs
ZSBhZHZhbnRhZ2Ugd2l0aCBteSBwYXRjaHNldCwgY29tcGFyZWQgdG8gb3RoZXJzLCBpcyB0aGF0
IHRoZQ0KPiA+ID4gc3BhY2UgcHJvYmxlbSBpcyBmaXhlZCBpbiBib3RoIElQVjQgYW5kIGluIElQ
VjYsIHRvIHByZXZlbnQgYXN5bW1ldHJ5DQo+ID4gPiBiZXR3ZWVuIHRoZXNlIHR3byBzdGFuZGFy
ZHMsIHdoaWNoIGlzIHNvbWV0aGluZyBJIHRyeSB0byBhdm9pZCBhcyBtdWNoDQo+IGFzDQo+ID4g
PiBodW1hbmx5IHBvc3NpYmxlLg0KPiA+ID4NCj4gPiA+IFRoaXMgaXMgYmVjYXVzZSBteSBhcHBs
aWNhdGlvbiBjb2RlIGlzIGdyZWVuLWZpZWxkLCBzbyBJIGFic29sdXRlbHkgZG9uJ3QNCj4gPiA+
IHdhbnQgdG8gcHV0IGFueSB1Z2x5IGhhY2tzIG9yIGluY29tcGF0aWJpbGl0aWVzIGluIHRoaXMg
Y29kZSBpZiBJIGNhbg0KPiA+ID4gcG9zc2libHkgYXZvaWQgaXQuDQo+ID4gPg0KPiA+ID4gT3Ro
ZXJ3aXNlLCBJIGFtIG5vdCBuZWNlc3NhcmlseSBhcyBleHBlcnQgYWJvdXQgcnRlX2xwbSBhcyBz
b21lIG9mIHRoZQ0KPiA+ID4gZnVsbC10aW1lIGd1eXMsIGJ1dCBJIHRoaW5rIHdpdGggZm91ciBv
ciBmaXZlIG9mIHVzIGluIHRoZSB0aHJlYWQgaGFtbWVyaW5nDQo+ID4gPiBvdXQgcGF0Y2hlcyB3
ZSB3aWxsIGJlIGFibGUgdG8gY3JlYXRlIHNvbWV0aGluZyBhbWF6aW5nIHRvZ2V0aGVyIGFuZCBJ
DQo+IGFtDQo+ID4gPiB2ZXJ5IHZlcnkgdmVyeSB2ZXJ5IHZlcnkgaGFwcHkgYWJvdXQgdGhpcy4N
Cj4gPiA+DQo+ID4gPiBNYXR0aGV3Lg0KPiA+ID4NCj4gDQoNCkhpIFZsYWRpbWlyLA0KVGhhbmtz
IGZvciBzaGFyaW5nIFlvdXIgaW1wbGVtZW50YXRpb24uDQpDb3VsZCBZb3UgcGxlYXNlIGNsYXJp
Znkgd2hhdCBhc19udW0gYW5kIGZ3ZF9jbGFzcyBmaWVsZHMgcmVwcmVzZW50Pw0KVGhlIHNlY29u
ZCBpc3N1ZSBJIGhhdmUgaXMgdGhhdCBZb3VyIHBhdGNoIGRvZXNu4oCZdCB3YW50IHRvIGFwcGx5
IG9uIHRvcCBvZg0KY3VycmVudCBoZWFkLiBDb3VsZCBZb3UgY2hlY2sgdGhpcyBwbGVhc2U/DQoN
CkJlc3QgcmVnYXJkcw0KTWljaGFsDQo=