[5061] in arla-drinkers

home help back first fref pref prev next nref lref last post

Re: PATCH v2: Arla 0.90 on Linux 2.6.34 to 4.4

daemon@ATHENA.MIT.EDU (Bo Branten)
Sat Jan 16 08:47:57 2016

From arla-drinkers-bounces@stacken.kth.se Sat Jan 16 13:47:57 2016
Return-Path: <arla-drinkers-bounces@stacken.kth.se>
Delivered-To: arla-drinkers-mtg@bloom-picayune.mit.edu
Received: (qmail 1805 invoked from network); 16 Jan 2016 13:47:56 -0000
Received: from mx6.kth.se (130.237.48.70)
  by charon.mit.edu with SMTP; 16 Jan 2016 13:47:56 -0000
Received: from mx6.kth.se (localhost [127.0.0.1])
	by mx6.kth.se (Postfix) with ESMTP id 1CDA11C00A0;
	Sat, 16 Jan 2016 14:47:56 +0100 (CET)
X-Virus-Scanned: by amavisd-new at kth.se
Received: from mx6.kth.se ([127.0.0.1])
	by mx6.kth.se (mx6.kth.se [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id j3pX4HNAwq61; Sat, 16 Jan 2016 14:47:40 +0100 (CET)
Received: from vingummi.stacken.kth.se (lists.stacken.kth.se [130.237.234.174])
	by mx6.kth.se (Postfix) with ESMTP;
	Sat, 16 Jan 2016 14:47:40 +0100 (CET)
Received: from vingummi.stacken.kth.se (localhost [IPv6:::1])
	by vingummi.stacken.kth.se (Postfix) with ESMTP id 4B695148A3B;
	Sat, 16 Jan 2016 14:47:40 +0100 (CET)
Received: by vingummi.stacken.kth.se (Postfix)
 id 1A520149505; Sat, 16 Jan 2016 14:47:39 +0100 (CET)
Delivered-To: al_stacken_kth_se______________arla-drinkers@vingummi.stacken.kth.se
Received: from mx7.kth.se (mx7.kth.se [130.237.48.48])
 by vingummi.stacken.kth.se (Postfix) with ESMTPS id 14581148A3B
 for <arla-drinkers@stacken.kth.se>; Sat, 16 Jan 2016 14:47:39 +0100 (CET)
Received: from mx7.kth.se (localhost [127.0.0.1])
 by mx7.kth.se (Postfix) with ESMTP id 02A531400B0
 for <arla-drinkers@stacken.kth.se>; Sat, 16 Jan 2016 14:47:39 +0100 (CET)
X-Virus-Scanned: by amavisd-new at kth.se
X-Amavis-OS-Fingerprint: Windows NT kernel; dist: 9; link: Ethernet or modem; 
 params: generic fuzzy; raw_mtu: 1500; raw_sig:
 6:55+9:0:1440:mss*45,0:mss,nop,ws,nop,nop,sok::0,
 [2001:6b0:e:2018::156]:35472
Received: from mx7.kth.se ([127.0.0.1])
 by mx7.kth.se (mx7.kth.se [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 31k3WqcsITrX for <arla-drinkers@stacken.kth.se>;
 Sat, 16 Jan 2016 14:47:36 +0100 (CET)
Received: from mail.acc.umu.se (mail.acc.umu.se [IPv6:2001:6b0:e:2018::156])
 by mx7.kth.se (Postfix) with ESMTPS
 for <arla-drinkers@stacken.kth.se>; Sat, 16 Jan 2016 14:47:36 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by amavisd-new (Postfix) with ESMTP id BF4375D
 for <arla-drinkers@stacken.kth.se>; Sat, 16 Jan 2016 14:47:35 +0100 (MET)
X-Virus-Scanned: amavisd-new at acc.umu.se
Received: from suiko.acc.umu.se (suiko.acc.umu.se [IPv6:2001:6b0:e:2018::162])
 by mail.acc.umu.se (Postfix) with ESMTP id 347605C
 for <arla-drinkers@stacken.kth.se>; Sat, 16 Jan 2016 14:47:29 +0100 (MET)
Received: by suiko.acc.umu.se (Postfix, from userid 10005)
 id 2353444B8C; Sat, 16 Jan 2016 14:47:29 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by suiko.acc.umu.se (Postfix) with ESMTP id 1019844B8B
 for <arla-drinkers@stacken.kth.se>; Sat, 16 Jan 2016 14:47:29 +0100 (CET)
Date: Sat, 16 Jan 2016 14:47:29 +0100 (CET)
From: Bo Branten <bosse@acc.umu.se>
To: arla-drinkers@stacken.kth.se
Subject: Re: PATCH v2: Arla 0.90 on Linux 2.6.34 to 4.4
In-Reply-To: <alpine.DEB.2.10.1601150307590.11672@suiko.acc.umu.se>
Message-ID: <alpine.DEB.2.10.1601161441270.16393@suiko.acc.umu.se>
References: <alpine.DEB.2.10.1601110310480.17625@suiko.acc.umu.se>
 <alpine.DEB.2.10.1601150307590.11672@suiko.acc.umu.se>
User-Agent: Alpine 2.10 (DEB 1266 2009-07-14)
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED;
 BOUNDARY="-276651502-971852446-1452952049=:16393"
X-BeenThere: arla-drinkers@stacken.kth.se
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Arla discussions <arla-drinkers.stacken.kth.se>
List-Unsubscribe: <https://lists.stacken.kth.se/mailman/options/arla-drinkers>, 
 <mailto:arla-drinkers-request@stacken.kth.se?subject=unsubscribe>
List-Archive: <http://lists.stacken.kth.se/pipermail/arla-drinkers/>
List-Post: <mailto:arla-drinkers@stacken.kth.se>
List-Help: <mailto:arla-drinkers-request@stacken.kth.se?subject=help>
List-Subscribe: <https://lists.stacken.kth.se/mailman/listinfo/arla-drinkers>, 
 <mailto:arla-drinkers-request@stacken.kth.se?subject=subscribe>
Errors-To: arla-drinkers-bounces@stacken.kth.se
Sender: "Arla-drinkers" <arla-drinkers-bounces@stacken.kth.se>

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---276651502-971852446-1452952049=:16393
Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII

PATCH v2: Arla 0.90 on Linux 2.6.34 to 4.4

Two small corrections in the use of vfs_path_lookup from v3.12 and 
iov_iter_count from v4.1. With this patch it should be possible to try 
nnpfs on all Linux kernels up to 4.4.

Bo Branten

---276651502-971852446-1452952049=:16393
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-v2-arla-0.90-for-linux-4.4
Content-Transfer-Encoding: BASE64
Content-ID: <alpine.DEB.2.10.1601161447290.16393@suiko.acc.umu.se>
Content-Description: 
Content-Disposition: attachment; filename=patch-v2-arla-0.90-for-linux-4.4

ZGlmZiAtdXByTiAtWG5vZGlmZi50eHQgYXJsYS0wLjkwL25ucGZzL2luY2x1
ZGUvbm5wZnMvbm5wZnNfYXR0ci5oIGFybGEtZm9yLWxpbnV4LTQuNC9ubnBm
cy9pbmNsdWRlL25ucGZzL25ucGZzX2F0dHIuaA0KLS0tIGFybGEtMC45MC9u
bnBmcy9pbmNsdWRlL25ucGZzL25ucGZzX2F0dHIuaAkyMDA2LTEwLTI0IDE4
OjMzOjMwLjAwMDAwMDAwMCArMDIwMA0KKysrIGFybGEtZm9yLWxpbnV4LTQu
NC9ubnBmcy9pbmNsdWRlL25ucGZzL25ucGZzX2F0dHIuaAkyMDE2LTAxLTEy
IDE5OjI5OjUwLjUyMjA3MjA4NCArMDEwMA0KQEAgLTExMyw4ICsxMTMsMTMg
QEAgc3RydWN0IG5ucGZzX2F0dHIgew0KICAgICB1aW50MzJfdAkJeGFfbmxp
bms7DQogICAgIHVpbnQzMl90CQl4YV90eXBlOw0KIA0KKyNpZiAoZGVmaW5l
ZChfX0tFUk5FTF9fKSAmJiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVM
X1ZFUlNJT04oMywxNCwwKSkNCisgICAga3VpZF90CQl4YV91aWQ7DQorICAg
IGtnaWRfdAkJeGFfZ2lkOw0KKyNlbHNlDQogICAgIHVpbnQzMl90CQl4YV91
aWQ7DQogICAgIHVpbnQzMl90CQl4YV9naWQ7DQorI2VuZGlmDQogDQogICAg
IHVpbnQzMl90CQl4YV9hdGltZTsNCiAgICAgdWludDMyX3QJCXhhX210aW1l
Ow0KZGlmZiAtdXByTiAtWG5vZGlmZi50eHQgYXJsYS0wLjkwL25ucGZzL2lu
Y2x1ZGUvbm5wZnMvbm5wZnNfYmxvY2tzLmggYXJsYS1mb3ItbGludXgtNC40
L25ucGZzL2luY2x1ZGUvbm5wZnMvbm5wZnNfYmxvY2tzLmgNCi0tLSBhcmxh
LTAuOTAvbm5wZnMvaW5jbHVkZS9ubnBmcy9ubnBmc19ibG9ja3MuaAkyMDA2
LTEwLTI0IDE4OjMzOjMxLjAwMDAwMDAwMCArMDIwMA0KKysrIGFybGEtZm9y
LWxpbnV4LTQuNC9ubnBmcy9pbmNsdWRlL25ucGZzL25ucGZzX2Jsb2Nrcy5o
CTIwMDctMDEtMjQgMTg6MDk6MTcuMDAwMDAwMDAwICswMTAwDQpAQCAtMSw1
ICsxLDUgQEANCiAvKg0KLSAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA2LCBT
dG9ja2hvbG1zIFVuaXZlcnNpdGV0DQorICogQ29weXJpZ2h0IChjKSAyMDA1
LTIwMDcsIFN0b2NraG9sbXMgVW5pdmVyc2l0ZXQNCiAgKiAoU3RvY2tob2xt
IFVuaXZlcnNpdHksIFN0b2NraG9sbSBTd2VkZW4pDQogICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCiAgKg0KQEAgLTMxLDExICszMSwxNSBAQA0KICAqIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KICAqLw0KIA0KLS8qICRJZDog
bm5wZnNfYmxvY2tzLmgsdiAxLjIgMjAwNi8xMC8yNCAxNjozMzozMSB0b2wg
RXhwICQgKi8NCisvKiAkSWQ6IG5ucGZzX2Jsb2Nrcy5oLHYgMS4zIDIwMDcv
MDEvMjQgMTc6MDk6MTcgdG9sIEV4cCAkICovDQogDQogI2RlZmluZSBOTlBG
U19OT19JTkRFWCAgIDAgIC8qIGR1bW15IGNhY2hlIGluZGV4ICovDQogI2Rl
ZmluZSBOTlBGU19OT19PRkZTRVQgICgodWludDY0X3QpLTEpICAvKiBkdW1t
eSBvZmZzZXQsIG5vIGJsb2NrICovDQogDQotI2RlZmluZSBOTlBGU19DQUNI
RV9GSUxFX1BBVEggICAgIiUwMlgvJTAyWC8lMDJsbFgiDQotI2RlZmluZSBO
TlBGU19DQUNIRV9ESVJfUEFUSCAgICAgIiUwMlgvJTAyWEAiDQotI2RlZmlu
ZSBOTlBGU19DQUNIRV9QQVRIX1NJWkUgICAgKCA2ICsxICsyKzEgKzE2ICsx
KQ0KKyNkZWZpbmUgTk5QRlNfQ0FDSEVfRklMRV9ESVIxICAgICAgICAiJTAy
eCINCisjZGVmaW5lIE5OUEZTX0NBQ0hFX0ZJTEVfRElSX1BBVEggICAgTk5Q
RlNfQ0FDSEVfRklMRV9ESVIxICIvIiBOTlBGU19DQUNIRV9GSUxFX0RJUjEN
CisjZGVmaW5lIE5OUEZTX0NBQ0hFX0ZJTEVfQkxPQ0tfUEFUSCAgIiUwMmxs
eCINCisNCisjZGVmaW5lIE5OUEZTX0NBQ0hFX0ZJTEVfUEFUSCAgIE5OUEZT
X0NBQ0hFX0ZJTEVfRElSX1BBVEggIi8iIE5OUEZTX0NBQ0hFX0ZJTEVfQkxP
Q0tfUEFUSA0KKyNkZWZpbmUgTk5QRlNfQ0FDSEVfRElSX1BBVEggICAgTk5Q
RlNfQ0FDSEVfRklMRV9ESVJfUEFUSCAiQCINCisjZGVmaW5lIE5OUEZTX0NB
Q0hFX1BBVEhfU0laRSAgICggNiArMSArMisxICsxNiArMSApDQpkaWZmIC11
cHJOIC1Ybm9kaWZmLnR4dCBhcmxhLTAuOTAvbm5wZnMvaW5jbHVkZS9ubnBm
cy9ubnBmc19tZXNzYWdlLmggYXJsYS1mb3ItbGludXgtNC40L25ucGZzL2lu
Y2x1ZGUvbm5wZnMvbm5wZnNfbWVzc2FnZS5oDQotLS0gYXJsYS0wLjkwL25u
cGZzL2luY2x1ZGUvbm5wZnMvbm5wZnNfbWVzc2FnZS5oCTIwMDYtMTAtMjQg
MTg6MzM6MzIuMDAwMDAwMDAwICswMjAwDQorKysgYXJsYS1mb3ItbGludXgt
NC40L25ucGZzL2luY2x1ZGUvbm5wZnMvbm5wZnNfbWVzc2FnZS5oCTIwMTYt
MDEtMTQgMDA6MjY6MDQuMTI2MDE1MTM2ICswMTAwDQpAQCAtMzEsNyArMzEs
NyBAQA0KICAqIFNVQ0ggREFNQUdFLg0KICAqLw0KIA0KLS8qICRJZDogbm5w
ZnNfbWVzc2FnZS5oLHYgMS42MSAyMDA2LzEwLzI0IDE2OjMzOjMyIHRvbCBF
eHAgJCAqLw0KKy8qICRJZDogbm5wZnNfbWVzc2FnZS5oLHYgMS42MiAyMDA5
LzAyLzI0IDIwOjIwOjU1IHRvbCBFeHAgJCAqLw0KIA0KICNpZm5kZWYgX3ht
c2dfaA0KICNkZWZpbmUgX3htc2dfaA0KQEAgLTUyLDcgKzUyLDExIEBAIHR5
cGVkZWYgdWludDE2X3Qgbm5wZnNfcmlnaHRzOw0KICAqIFRoZSBubnBmc19j
cmVkLCBpZiBwYWcgPT0gMCwgdXNlIHVpZCANCiAgKi8NCiB0eXBlZGVmIHN0
cnVjdCBubnBmc19jcmVkIHsNCisjaWYgKGRlZmluZWQoX19LRVJORUxfXykg
JiYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsMTQs
MCkpDQorICAgIGt1aWRfdCB1aWQ7DQorI2Vsc2UNCiAgICAgdWludDMyX3Qg
dWlkOw0KKyNlbmRpZg0KICAgICBubnBmc19wYWdfdCBwYWc7DQogfSBubnBm
c19jcmVkOw0KIA0KQEAgLTEwNiw3ICsxMTAsNyBAQCB0eXBlZGVmIHN0cnVj
dCBubnBmc19ibG9ja19oYW5kbGUgew0KIA0KIC8qIG5ucGZzX25vZGUuZmxh
Z3MNCiAgKiBUaGUgbG93ZXIgMTYgYml0IGZsYWdzIGFyZSByZXNlcnZlZCBm
b3IgY29tbW9uIG5ucGZzIGZsYWdzDQotICogVGhlIHVwcGVyIDE2IGJpdCBm
bGFncyBhcmUgcmVzZXJ2ZWQgZm9yIG9wZXJ0aW5nIHN5c3RlbSBkZXBlbmRh
bnQNCisgKiBUaGUgdXBwZXIgMTYgYml0IGZsYWdzIGFyZSByZXNlcnZlZCBm
b3Igb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQNCiAgKiBmbGFncy4NCiAg
Ki8NCiANCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFybGEtMC45MC9ubnBm
cy9saW51eC9ubnBmcy9ubm5wZnMuaCBhcmxhLWZvci1saW51eC00LjQvbm5w
ZnMvbGludXgvbm5wZnMvbm5ucGZzLmgNCi0tLSBhcmxhLTAuOTAvbm5wZnMv
bGludXgvbm5wZnMvbm5ucGZzLmgJMjAwMi0wOS0wNyAxMjo0NzoxNy4wMDAw
MDAwMDAgKzAyMDANCisrKyBhcmxhLWZvci1saW51eC00LjQvbm5wZnMvbGlu
dXgvbm5wZnMvbm5ucGZzLmgJMjAwMi0wOS0wNyAxMjo0NzoxNy4wMDAwMDAw
MDAgKzAyMDANCkBAIC0xLDQgKzEsNCBAQA0KIC8qICRJZDogbm5ucGZzLmgs
diAxLjIgMjAwMi8wOS8wNyAxMDo0NzoxNyBsaGEgRXhwICQgKi8NCi0vKiAk
U291cmNlOiAvYWZzL3N0YWNrZW4ua3RoLnNlL3NyYy9Tb3VyY2VSZXBvc2l0
b3J5L2FybGEvbm5wZnMvbGludXgvbm5wZnMvbm5ucGZzLmgsdiAkICovDQor
LyogJFNvdXJjZTogL1VzZXJzL2JvL3RtcC9BcmxhU291cmNlUmVwb3NpdG9y
eS9hcmxhL25ucGZzL2xpbnV4L25ucGZzL25ubnBmcy5oLHYgJCAqLw0KIA0K
ICNkZWZpbmUgTk5OUEZTIDINCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFy
bGEtMC45MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19mcy5oIGFybGEtZm9y
LWxpbnV4LTQuNC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19mcy5oDQotLS0g
YXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2ZzLmgJMjAwNi0x
MC0yNCAxODozMzo0OC4wMDAwMDAwMDAgKzAyMDANCisrKyBhcmxhLWZvci1s
aW51eC00LjQvbm5wZnMvbGludXgvbm5wZnMvbm5wZnNfZnMuaAkyMDE2LTAx
LTEzIDIyOjU3OjA2LjM4NzY5MzMzOSArMDEwMA0KQEAgLTg0LDggKzg0LDEz
IEBAIHN0cnVjdCBubnBmcyB7DQogICAgIHN0cnVjdCB2ZnNtb3VudCAqY2Fj
aGVyb290OyAvKiBzaW1wbGlmeSBvcGVuIG9mIGNhY2hlIGJsb2NrcyAqLw0K
ICAgICBzdHJ1Y3QgZGVudHJ5ICpjYWNoZWRpcjsNCiANCisjaWYgTElOVVhf
VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNCwwKQ0KICAgICB1
aWRfdCB1aWQ7IC8qIGtlZXAgdHJhY2sgb2YgZGFlbW9uJ3MgaWRlbnRpdHkg
Ki8NCiAgICAgZ2lkX3QgZ2lkOw0KKyNlbHNlDQorICAgIGt1aWRfdCB1aWQ7
IC8qIGtlZXAgdHJhY2sgb2YgZGFlbW9uJ3MgaWRlbnRpdHkgKi8NCisgICAg
a2dpZF90IGdpZDsNCisjZW5kaWYNCiANCiAgICAgc3RydWN0IHsNCiAJaW50
IHJlY3Vyc2U7DQpkaWZmIC11cHJOIC1Ybm9kaWZmLnR4dCBhcmxhLTAuOTAv
bm5wZnMvbGludXgvbm5wZnMvbm5wZnNfbG9jbC5oIGFybGEtZm9yLWxpbnV4
LTQuNC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19sb2NsLmgNCi0tLSBhcmxh
LTAuOTAvbm5wZnMvbGludXgvbm5wZnMvbm5wZnNfbG9jbC5oCTIwMDctMDEt
MDggMTQ6NTI6NDkuMDAwMDAwMDAwICswMTAwDQorKysgYXJsYS1mb3ItbGlu
dXgtNC40L25ucGZzL2xpbnV4L25ucGZzL25ucGZzX2xvY2wuaAkyMDE2LTAx
LTEzIDIzOjAxOjEwLjE3ODcwODAzNyArMDEwMA0KQEAgLTM0LDcgKzM0LDcg
QEANCiAgKiBTVUNIIERBTUFHRS4NCiAgKi8NCiANCi0vKiAkSWQ6IG5ucGZz
X2xvY2wuaCx2IDEuNzcgMjAwNy8wMS8wOCAxMzo1Mjo0OSB0b2wgRXhwICQg
Ki8NCisvKiAkSWQ6IG5ucGZzX2xvY2wuaCx2IDEuNzggMjAxMC8wOC8wOCAy
MDo0MzowNiB0b2wgRXhwICQgKi8NCiANCiAjaWZkZWYgSEFWRV9DT05GSUdf
SA0KICNpbmNsdWRlIDxjb25maWcuaD4NCkBAIC01MSw3ICs1MSw5IEBADQog
I2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4NCiAjaW5jbHVkZSA8bGludXgvc3Ry
aW5nLmg+DQogI2luY2x1ZGUgPGxpbnV4L25hbWVpLmg+DQorI2lmIExJTlVY
X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAjaW5j
bHVkZSA8bGludXgvc21wX2xvY2suaD4NCisjZW5kaWYNCiAjaW5jbHVkZSA8
bGludXgvd2FpdC5oPg0KIA0KIC8qDQpAQCAtMTM4LDE1ICsxNDAsMTYgQEAg
dHlwZWRlZiBfX3UzMiAgdWludDMyX3Q7DQogaW50DQogbm5wZnNfZmV0Y2hf
cm9vdChzdHJ1Y3QgaW5vZGUgKmkpOw0KIA0KLSNpZiBMSU5VWF9WRVJTSU9O
X0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE4KQ0KKyNpZiBMSU5VWF9W
RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzkpDQogaW50DQog
bm5wZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBl
LA0KIAkgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsDQog
CSAgICAgdm9pZCAqZGF0YSwgc3RydWN0IHZmc21vdW50ICptbnQpOw0KICNl
bHNlDQotc3RydWN0IHN1cGVyX2Jsb2NrICoNCi1ubnBmc19nZXRfc2IgKHN0
cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLA0KLQkgICAgICBpbnQg
ZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKTsNCitz
dHJ1Y3QgZGVudHJ5Kg0KK25ucGZzX21vdW50KHN0cnVjdCBmaWxlX3N5c3Rl
bV90eXBlICpmc190eXBlLA0KKwkgICAgIGludCBmbGFncywgY29uc3QgY2hh
ciAqZGV2X25hbWUsDQorCSAgICAgdm9pZCAqZGF0YSk7DQogI2VuZGlmDQog
DQogZXh0ZXJuIHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyBubnBmc19kZW50
cnlfb3BlcmF0aW9uczsNCkBAIC0yMDAsMTYgKzIwMywyNSBAQCBubnBmc19p
d3JpdGVjb3VudCAoc3RydWN0IGlub2RlICppbm9kZSkNCiAgKiBIZWxwIGZ1
bmN0aW9uIHRvIHJlYWQgdGhlIGRlbnRyeS0+ZF9jb3VudCBhIHBvcnRhYmxl
IHdheQ0KICAqLw0KIA0KKy8qI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF
Uk5FTF9WRVJTSU9OKDIsNiwzOCkqLw0KIHN0YXRpYyBpbmxpbmUgaW50DQog
bm5wZnNfZGNvdW50IChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQor
LyojZWxzZQ0KK3N0YXRpYyBpbmxpbmUgaW50DQorbm5wZnNfZGNvdW50IChz
dHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQorI2VuZGlmKi8NCiB7DQorI2lmIExJ
TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCiAg
ICAgcmV0dXJuIGF0b21pY19yZWFkKCZkZW50cnktPmRfY291bnQpOw0KKyNl
bGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTEs
MCkNCisgICAgcmV0dXJuIGF0b21pY19yZWFkKChjb25zdCBhdG9taWNfdCop
JmRlbnRyeS0+ZF9jb3VudCk7DQorI2Vsc2UNCisgICAgcmV0dXJuIGRfY291
bnQoZGVudHJ5KTs7DQorI2VuZGlmDQogfQ0KIA0KIGV4dGVybiANCi0jaWYg
TElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwxOCkN
CiBjb25zdA0KLSNlbmRpZg0KIHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJh
dGlvbnMgbm5wZnNfYW9wczsNCiANCiAjaWZuZGVmIGxpc3RfZm9yX2VhY2gN
CkBAIC0yMzcsNyArMjQ5LDEyIEBAIG5ucGZzX2ZpeHVwX3N5c2NhbGxfbG9z
c2FnZSh2b2lkKTsNCiAjZW5kaWYNCiANCiAjZGVmaW5lIG5ucGZzX2Rldl90
IGRldl90DQorDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W
RVJTSU9OKDIsNiwzOCkNCiAjZGVmaW5lIG5ucGZzX2RfZW50cnlfdW5oYXNo
ZWQoZCkgaGxpc3RfdW5oYXNoZWQoZCkNCisjZWxzZQ0KKyNkZWZpbmUgbm5w
ZnNfZF9lbnRyeV91bmhhc2hlZChkKSBobGlzdF9ibF91bmhhc2hlZChkKQ0K
KyNlbmRpZg0KIA0KICNkZWZpbmUgTk5QRlNfTk9PUCAgICAgIHdoaWxlKDAp
e30NCiANCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFybGEtMC45MC9ubnBm
cy9saW51eC9ubnBmcy9ubnBmc19ub2RlLmggYXJsYS1mb3ItbGludXgtNC40
L25ucGZzL2xpbnV4L25ucGZzL25ucGZzX25vZGUuaA0KLS0tIGFybGEtMC45
MC9ubnBmcy9saW51eC9ubnBmcy9ubnBmc19ub2RlLmgJMjAwNi0xMi0xMSAx
NzoyOTozOS4wMDAwMDAwMDAgKzAxMDANCisrKyBhcmxhLWZvci1saW51eC00
LjQvbm5wZnMvbGludXgvbm5wZnMvbm5wZnNfbm9kZS5oCTIwMTAtMDgtMDgg
MjI6NDM6MDcuMDAwMDAwMDAwICswMjAwDQpAQCAtNTQsNyArNTQsNyBAQCBl
eHRlcm4gdWludDMyX3Qgbm5wZnNfYmxvY2tzaXplYml0czsNCiAgKiBmbGFn
cy4NCiAgKi8NCiANCi0jZGVmaW5lIE5OUEZTX05PREVfSVBVVAkweDAwMDEw
MDAwICAgLyogbm9kZSBpcyBpbiBpcHV0KCksIGF2b2lkIGRlYWRsb2NrICov
DQorI2RlZmluZSBOTlBGU19OT0RFX0lQVVQJMHgwMDAxMDAwMCAgIC8qIG5v
ZGUgaXMgaW4gaXB1dCgpLCBhdm9pZCBkZWFkbG9jay4gQ2FuIGJlIHJlbW92
ZWQ/ICovDQogDQogI2RlZmluZSBYTl9IQVNIU0laRSAxMDA5DQogI2RlZmlu
ZSBYTl9DTEVBTlVQX0lURVJTIDEyOQ0KZGlmZiAtdXByTiAtWG5vZGlmZi50
eHQgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX2Jsb2Nrcy5jIGFybGEt
Zm9yLWxpbnV4LTQuNC9ubnBmcy9saW51eC9ubnBmc19ibG9ja3MuYw0KLS0t
IGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19ibG9ja3MuYwkyMDA3LTAx
LTA4IDE0OjI0OjI0LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtZm9yLWxp
bnV4LTQuNC9ubnBmcy9saW51eC9ubnBmc19ibG9ja3MuYwkyMDE2LTAxLTE2
IDE0OjE2OjQ5Ljk5NDQzNzgxMyArMDEwMA0KQEAgLTM0LDcgKzM0LDcgQEAN
CiAgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAgKi8NCiANCi0v
KiAkSWQ6IG5ucGZzX2Jsb2Nrcy5jLHYgMS4zIDIwMDcvMDEvMDggMTM6MjQ6
MjQgdG9sIEV4cCAkICovDQorLyogJElkOiBubnBmc19ibG9ja3MuYyx2IDEu
NiAyMDEwLzA4LzA4IDIwOjQzOjA0IHRvbCBFeHAgJCAqLw0KIA0KICNpbmNs
dWRlIDxubnBmcy9ubnBmc19sb2NsLmg+DQogI2luY2x1ZGUgPG5ucGZzL25u
cGZzX2ZzLmg+DQpAQCAtNDMsNiArNDMsMTEgQEANCiAjaW5jbHVkZSA8bGlu
dXgvbW91bnQuaD4NCiAjaW5jbHVkZSA8bGludXgvbW0uaD4NCiANCisjaWYg
TElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsMTIsMCkN
CitleHRlcm4gaW50IHZmc19wYXRoX2xvb2t1cChzdHJ1Y3QgZGVudHJ5ICos
IHN0cnVjdCB2ZnNtb3VudCAqLA0KKwkJCSAgIGNvbnN0IGNoYXIgKiwgdW5z
aWduZWQgaW50LCBzdHJ1Y3QgcGF0aCAqKTsNCisjZW5kaWYNCisNCiAvKg0K
ICAqIHJldHVybiB0cnVlIGlmIGJsb2NrIGlzIGluIGNhY2hlDQogICovDQpA
QCAtMjkwLDcgKzI5NSwxMyBAQCBubnBmc19ibG9ja19leHRlbmQoc3RydWN0
IG5ucGZzX25vZGUgKm5vDQogICAgIGJhY2tub2RlID0gYmFja2ZpbGUtPmZf
bWFwcGluZy0+aG9zdDsNCiANCiAgICAgbXV0ZXhfbG9jaygmYmFja25vZGUt
PmlfbXV0ZXgpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf
VkVSU0lPTigzLDgsMCkNCiAgICAgcmV0ID0gdm10cnVuY2F0ZShiYWNrbm9k
ZSwgbm5wZnNfYmxvY2tzaXplKTsNCisjZWxzZQ0KKyAgICByZXQgPSBpbm9k
ZV9uZXdzaXplX29rKGJhY2tub2RlLCBubnBmc19ibG9ja3NpemUpOw0KKyAg
ICBpZighcmV0KQ0KKyAgICAgICAgdHJ1bmNhdGVfc2V0c2l6ZShiYWNrbm9k
ZSwgbm5wZnNfYmxvY2tzaXplKTsNCisjZW5kaWYNCiAgICAgbXV0ZXhfdW5s
b2NrKCZiYWNrbm9kZS0+aV9tdXRleCk7DQogICAgIA0KICAgICBmaWxwX2Ns
b3NlKGJhY2tmaWxlLCBOVUxMKTsNCkBAIC0zMTgsMTAgKzMyOSwyNiBAQCBu
bnBmc19ibG9ja19vcGVuKHN0cnVjdCBubnBmc19ub2RlICpub2RlDQogICAg
IHN0cnVjdCBubnBmcyAqbm5wZnNwID0gTk5QRlNfRlJPTV9YTk9ERShub2Rl
KTsNCiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IFhOT0RFX1RPX1ZOT0RF
KG5vZGUpOw0KICAgICBpbnQgZmxhZ3MgPSBPX0xBUkdFRklMRSB8IGZsYWc7
DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs
MTksMCkNCiAgICAgc3RydWN0IG5hbWVpZGF0YSBuZDsNCisjZWxzZQ0KKyAg
ICBzdHJ1Y3QgcGF0aCBwYXRoOw0KKyNlbmRpZg0KKyNpZiBMSU5VWF9WRVJT
SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE0LDApDQogICAgIHVpZF90
IHNhdmV1aWQ7DQogICAgIGdpZF90IHNhdmVnaWQ7DQorI2Vsc2UNCisgICAg
a3VpZF90IHNhdmV1aWQ7DQorICAgIGtnaWRfdCBzYXZlZ2lkOw0KKyNlbmRp
Zg0KICAgICBpbnQgcmV0Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0g
S0VSTkVMX1ZFUlNJT04oMiw2LDI5KQ0KKyAgICBjb25zdCBzdHJ1Y3QgY3Jl
ZCAqb2xkX2NyZWQ7DQorICAgIHN0cnVjdCBjcmVkICpvdmVycmlkZV9jcmVk
Ow0KKyNlbmRpZg0KKw0KKyAgICAodm9pZClzYXZldWlkOw0KKyAgICAodm9p
ZClzYXZlZ2lkOw0KIA0KICAgICBCVUdfT04oIW5ucGZzcCk7DQogICAgIEJV
R19PTihmbGFncyAmIE9fQ1JFQVQgJiYgZmlsZSAhPSBOVUxMKTsNCkBAIC0z
NDYsMjEgKzM3MywzOCBAQCBubnBmc19ibG9ja19vcGVuKHN0cnVjdCBubnBm
c19ub2RlICpub2RlDQogICAgIEJVR19PTighbm5wZnNwLT5jYWNoZWRpciB8
fCAhbm5wZnNwLT5jYWNoZXJvb3QpOw0KICAgICANCiAgICAgLyogdXNlIHRo
ZSBuZnNkIHRyaWNrIHRvIGdpdmUgdXMgYWNjZXNzICovDQorI2lmIExJTlVY
X1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAg
IHNhdmV1aWQgPSBjdXJyZW50LT5mc3VpZDsNCiAgICAgc2F2ZWdpZCA9IGN1
cnJlbnQtPmZzZ2lkOw0KICAgICBjdXJyZW50LT5mc3VpZCA9IG5ucGZzcC0+
dWlkOw0KICAgICBjdXJyZW50LT5mc2dpZCA9IG5ucGZzcC0+Z2lkOw0KLQ0K
LSAgICBuZC5kZW50cnkgPSBkZ2V0KG5ucGZzcC0+Y2FjaGVkaXIpOw0KLSAg
ICBuZC5tbnQgPSBtbnRnZXQobm5wZnNwLT5jYWNoZXJvb3QpOw0KLSAgICBu
ZC5sYXN0X3R5cGUgPSBMQVNUX05PUk07DQotICAgIG5kLmRlcHRoID0gMDsN
Ci0gICAgbmQuZmxhZ3MgPSAwOw0KLSAgICANCi0gICAgaWYgKGZsYWdzICYg
T19DUkVBVCkNCi0JbmQuZmxhZ3MgPSBMT09LVVBfUEFSRU5UOw0KLSAgICAN
Ci0gICAgcmV0ID0gcGF0aF93YWxrKGNhY2hlbmFtZSwgJm5kKTsNCisjZWxz
ZQ0KKyAgICBzYXZldWlkID0gY3VycmVudF9mc3VpZCgpOw0KKyAgICBzYXZl
Z2lkID0gY3VycmVudF9mc2dpZCgpOw0KKyAgICBvdmVycmlkZV9jcmVkID0g
cHJlcGFyZV9jcmVkcygpOw0KKyAgICBpZiAob3ZlcnJpZGVfY3JlZCA9PSBO
VUxMKQ0KKyAgICAgICAgcmV0dXJuIC1FTk9NRU07DQorICAgIG92ZXJyaWRl
X2NyZWQtPmZzdWlkID0gbm5wZnNwLT51aWQ7DQorICAgIG92ZXJyaWRlX2Ny
ZWQtPmZzZ2lkID0gbm5wZnNwLT5naWQ7DQorICAgIG9sZF9jcmVkID0gb3Zl
cnJpZGVfY3JlZHMob3ZlcnJpZGVfY3JlZCk7DQorI2VuZGlmDQorDQorI2lm
IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMSwwKQ0K
KyAgICByZXQgPSB2ZnNfcGF0aF9sb29rdXAobm5wZnNwLT5jYWNoZWRpciwg
bm5wZnNwLT5jYWNoZXJvb3QsDQorCQkJICBjYWNoZW5hbWUsDQorCQkJICBm
bGFncyAmIE9fQ1JFQVQgPyBMT09LVVBfUEFSRU5UIDogMCwNCisJCQkgICZu
ZCk7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ
T04oMywxOSwwKQ0KKyAgICByZXQgPSB2ZnNfcGF0aF9sb29rdXAobm5wZnNw
LT5jYWNoZWRpciwgbm5wZnNwLT5jYWNoZXJvb3QsDQorCQkJICBjYWNoZW5h
bWUsDQorCQkJICBmbGFncyAmIE9fQ1JFQVQgPyBMT09LVVBfUEFSRU5UIDog
MCwNCisJCQkgICZuZC5wYXRoKTsNCisjZWxzZQ0KKyAgICByZXQgPSB2ZnNf
cGF0aF9sb29rdXAobm5wZnNwLT5jYWNoZWRpciwgbm5wZnNwLT5jYWNoZXJv
b3QsDQorCQkJICBjYWNoZW5hbWUsDQorCQkJICBmbGFncyAmIE9fQ1JFQVQg
PyBMT09LVVBfUEFSRU5UIDogMCwNCisJCQkgICZwYXRoKTsNCisjZW5kaWYN
CiAgICAgaWYgKHJldCkgew0KIAl1aW50MzJfdCBubWFza3MgPSBub2RlLT5k
YXRhLm5tYXNrczsNCiAJdWludDMyX3QgbWFzazsNCkBAIC0zODcsMTYgKzQz
MSwzNyBAQCBubnBmc19ibG9ja19vcGVuKHN0cnVjdCBubnBmc19ub2RlICpu
b2RlDQogICAgIA0KICAgICBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7DQogCS8q
IFhYWCBtb2RlIGJpdHMgb24gY3JlYXRlIC0tIFNfSVJVU1J8U19JV1VTUiAq
Lw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz
LDEsMCkNCiAJc3RydWN0IGRlbnRyeSAqZGVudHJ5ID0gbG9va3VwX2NyZWF0
ZSgmbmQsIDApOwkNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO
RUxfVkVSU0lPTigzLDE5LDApDQorCS8qIFRPRE86IGNoZWNrIHRoZSBjYWxs
IHRvIGtlcm5fcGF0aF9jcmVhdGUoKSwgaXMgdGhlIHNlY29uZCBhcmd1bWVu
dCBvcHRpb25hbD8gKi8NCisJc3RydWN0IGRlbnRyeSAqZGVudHJ5ID0ga2Vy
bl9wYXRoX2NyZWF0ZShBVF9GRENXRCwgTlVMTCwgJm5kLnBhdGgsIDApOwkN
CisjZWxzZQ0KKwkvKiBUT0RPOiBjaGVjayB0aGUgY2FsbCB0byBrZXJuX3Bh
dGhfY3JlYXRlKCksIGlzIHRoZSBzZWNvbmQgYXJndW1lbnQgb3B0aW9uYWw/
ICovDQorCXN0cnVjdCBkZW50cnkgKmRlbnRyeSA9IGtlcm5fcGF0aF9jcmVh
dGUoQVRfRkRDV0QsIE5VTEwsICZwYXRoLCAwKTsJDQorI2VuZGlmDQogCWlm
IChJU19FUlIoZGVudHJ5KSkgew0KIAkgICAgcmV0ID0gUFRSX0VSUihkZW50
cnkpOw0KIAl9IGVsc2Ugew0KLQkgICAgcmV0ID0gdmZzX2NyZWF0ZShuZC5k
ZW50cnktPmRfaW5vZGUsIGRlbnRyeSwgU19JUlVTUnxTX0lXVVNSLCAmbmQp
Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz
LDYsMCkNCisJICAgIHJldCA9IHZmc19jcmVhdGUobmQucGF0aC5kZW50cnkt
PmRfaW5vZGUsIGRlbnRyeSwgU19JUlVTUnxTX0lXVVNSLCAmbmQpOw0KKyNl
bGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTks
MCkNCisJICAgIC8qIFRPRE86IHNob3VsZCB0aGUgbGFzdCBhcmd1bWVudCB0
byB2ZnNfY3JlYXRlOiBib29sIHdhbnRfZXhjbCwgYmUgMCBvciAxPyAqLw0K
KwkgICAgcmV0ID0gdmZzX2NyZWF0ZShuZC5wYXRoLmRlbnRyeS0+ZF9pbm9k
ZSwgZGVudHJ5LCBTX0lSVVNSfFNfSVdVU1IsIDApOw0KKyNlbHNlDQorCSAg
ICAvKiBUT0RPOiBzaG91bGQgdGhlIGxhc3QgYXJndW1lbnQgdG8gdmZzX2Ny
ZWF0ZTogYm9vbCB3YW50X2V4Y2wsIGJlIDAgb3IgMT8gKi8NCisJICAgIHJl
dCA9IHZmc19jcmVhdGUocGF0aC5kZW50cnktPmRfaW5vZGUsIGRlbnRyeSwg
U19JUlVTUnxTX0lXVVNSLCAwKTsNCisjZW5kaWYNCiAJICAgIGRwdXQoZGVu
dHJ5KTsNCiAJfQ0KIA0KLQltdXRleF91bmxvY2soJm5kLmRlbnRyeS0+ZF9p
bm9kZS0+aV9tdXRleCk7DQotCXBhdGhfcmVsZWFzZSgmbmQpOw0KKyNpZiBM
SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQor
CW11dGV4X3VubG9jaygmbmQucGF0aC5kZW50cnktPmRfaW5vZGUtPmlfbXV0
ZXgpOw0KKwlwYXRoX3B1dCgmbmQucGF0aCk7DQorI2Vsc2UNCisJbXV0ZXhf
dW5sb2NrKCZwYXRoLmRlbnRyeS0+ZF9pbm9kZS0+aV9tdXRleCk7DQorCXBh
dGhfcHV0KCZwYXRoKTsNCisjZW5kaWYNCiANCiAJaWYgKHJldCkgew0KIAkg
ICAgcHJpbnRrKCJubnBmc19ibG9ja19vcGVuKCVzKSBjcmVhdGUgZmFpbGVk
OiAlZFxuIiwgY2FjaGVuYW1lLCAtcmV0KTsNCkBAIC00MTAsMTIgKzQ3NSwy
NSBAQCBubnBmc19ibG9ja19vcGVuKHN0cnVjdCBubnBmc19ub2RlICpub2Rl
DQogCSAgICByZXQgPSBubnBmc19ibG9ja19leHRlbmQobm9kZSwgb2Zmc2V0
KTsNCiAJfQ0KICAgICB9IGVsc2Ugew0KLQlzdHJ1Y3QgZmlsZSAqZiA9IGRl
bnRyeV9vcGVuKG5kLmRlbnRyeSwgbmQubW50LCBmbGFncyk7DQorI2lmIExJ
TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwyOSkNCisJ
c3RydWN0IGZpbGUgKmYgPSBkZW50cnlfb3BlbihuZC5wYXRoLmRlbnRyeSwg
bmQucGF0aC5tbnQsIGZsYWdzKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NP
REUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCisgICAgICAgIHN0cnVjdCBm
aWxlICpmID0gZGVudHJ5X29wZW4obmQucGF0aC5kZW50cnksIG5kLnBhdGgu
bW50LCBmbGFncywgY3VycmVudF9jcmVkKCkpOw0KKyNlbGlmIExJTlVYX1ZF
UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisJc3RydWN0
IHBhdGggdG1wX3BhdGggPSB7IC5tbnQgPSBuZC5wYXRoLm1udCwgLmRlbnRy
eSA9IG5kLnBhdGguZGVudHJ5IH07DQorICAgICAgICBzdHJ1Y3QgZmlsZSAq
ZiA9IGRlbnRyeV9vcGVuKCZ0bXBfcGF0aCwgZmxhZ3MsIGN1cnJlbnRfY3Jl
ZCgpKTsNCisjZWxzZQ0KKyAgICAgICAgc3RydWN0IGZpbGUgKmYgPSBkZW50
cnlfb3BlbigmcGF0aCwgZmxhZ3MsIGN1cnJlbnRfY3JlZCgpKTsNCisjZW5k
aWYNCiAJaWYgKElTX0VSUihmKSkgew0KIAkgICAgcmV0ID0gUFRSX0VSUihm
KTsNCiAJICAgIHByaW50aygibm5wZnNfYmxvY2tfb3Blbiglcykgb3BlbiBm
YWlsZWQ6ICVkXG4iLCBjYWNoZW5hbWUsIC1yZXQpOw0KIAkgICAgbm5wZnNf
ZGVidWdfb29wcygpOw0KLQkgICAgcGF0aF9yZWxlYXNlKCZuZCk7DQorI2lm
IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkN
CisJICAgIHBhdGhfcHV0KCZuZC5wYXRoKTsNCisjZWxzZQ0KKwkgICAgcGF0
aF9wdXQoJnBhdGgpOw0KKyNlbmRpZg0KIAl9IGVsc2Ugew0KIAkgICAgKmZp
bGUgPSBmOw0KIAl9DQpAQCAtNDI0LDggKzUwMiwxMyBAQCBubnBmc19ibG9j
a19vcGVuKHN0cnVjdCBubnBmc19ub2RlICpub2RlDQogICAgIC8qIHBhdGhf
cmVsZWFzZSgpIGlzIHVzdWFsbHkgaGFuZGxlZCBvbiBjbG9zZSAqLw0KIA0K
ICBvdXQ6DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVS
U0lPTigyLDYsMjgpDQogICAgIGN1cnJlbnQtPmZzdWlkID0gc2F2ZXVpZDsN
CiAgICAgY3VycmVudC0+ZnNnaWQgPSBzYXZlZ2lkOw0KKyNlbHNlDQorICAg
IHJldmVydF9jcmVkcyhvbGRfY3JlZCk7DQorICAgIHB1dF9jcmVkKG92ZXJy
aWRlX2NyZWQpOw0KKyNlbmRpZg0KIA0KICAgICByZXR1cm4gcmV0Ow0KIH0N
CmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFybGEtMC45MC9ubnBmcy9saW51
eC9ubnBmc19jb21tb24uYyBhcmxhLWZvci1saW51eC00LjQvbm5wZnMvbGlu
dXgvbm5wZnNfY29tbW9uLmMNCi0tLSBhcmxhLTAuOTAvbm5wZnMvbGludXgv
bm5wZnNfY29tbW9uLmMJMjAwNi0xMi0xMSAxNzozMTo0Ni4wMDAwMDAwMDAg
KzAxMDANCisrKyBhcmxhLWZvci1saW51eC00LjQvbm5wZnMvbGludXgvbm5w
ZnNfY29tbW9uLmMJMjAxNi0wMS0xNCAxNjoxNTowMC4zNDc0NDc2NTcgKzAx
MDANCkBAIC0xMTIsMTAgKzExMiwxNSBAQCBubnBmc19wcmludF9hbGlhc2Vz
KGNvbnN0IHN0cnVjdCBpbm9kZSAqDQogdm9pZA0KIG5ucGZzX3ByaW50X2Fs
aWFzZXNfcmVhbChjb25zdCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQ0KIHsNCisj
aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDAp
DQogICAgIHN0cnVjdCBsaXN0X2hlYWQgKmFsaWFzOw0KKyNlbGlmIExJTlVY
X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsOSwwKQ0KKyAgICBz
dHJ1Y3QgaGxpc3Rfbm9kZSAqYWxpYXM7DQorI2VuZGlmDQogICAgIHN0cnVj
dCBkZW50cnkgKmRlbnRyeTsNCiAgICAgaW50IGJhaWxvdXQgPSAxMDA7DQog
DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs
NiwwKQ0KICAgICBhbGlhcyA9IGlub2RlLT5pX2RlbnRyeS5uZXh0Ow0KICAg
ICB3aGlsZSAoYWxpYXMgIT0gJmlub2RlLT5pX2RlbnRyeSkgew0KIAlpZiAo
LS1iYWlsb3V0IDwgMCkgew0KQEAgLTEzMSw2ICsxMzYsMjYgQEAgbm5wZnNf
cHJpbnRfYWxpYXNlc19yZWFsKGNvbnN0IHN0cnVjdCBpbg0KIAl9DQogCWFs
aWFzID0gYWxpYXMtPm5leHQ7DQogICAgIH0NCisjZWxzZQ0KKyNpZiBMSU5V
WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDksMCkNCisgICAg
aGxpc3RfZm9yX2VhY2hfZW50cnkoZGVudHJ5LCBhbGlhcywgJmlub2RlLT5p
X2RlbnRyeSwgZF9hbGlhcykgew0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09E
RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisgICAgaGxpc3RfZm9yX2Vh
Y2hfZW50cnkoZGVudHJ5LCAmaW5vZGUtPmlfZGVudHJ5LCBkX2FsaWFzKSB7
DQorI2Vsc2UNCisgICAgaGxpc3RfZm9yX2VhY2hfZW50cnkoZGVudHJ5LCAm
aW5vZGUtPmlfZGVudHJ5LCBkX3UuZF9hbGlhcykgew0KKyNlbmRpZg0KKwlp
ZiAoLS1iYWlsb3V0IDwgMCkgew0KKwkgICAgcHJpbnRrKCIgLi4uIik7DQor
CSAgICBicmVhazsNCisJfQ0KKwlpZiAoZGVudHJ5KSB7DQorCSAgICBwcmlu
dGsoIiAlLipzKCVwKSIsIChpbnQpZGVudHJ5LT5kX25hbWUubGVuLA0KKwkJ
ICAgZGVudHJ5LT5kX25hbWUubmFtZSwgZGVudHJ5KTsNCisJICAgIGlmIChu
bnBmc19kX2VudHJ5X3VuaGFzaGVkKCZkZW50cnktPmRfaGFzaCkpDQorCQlw
cmludGsoIih1bmhhc2hlZCkiKTsNCisJfQ0KKyAgICB9DQorI2VuZGlmDQog
ICAgIHByaW50aygiXG4iKTsNCiB9DQogDQpAQCAtMTQ2LDcgKzE3MSwxMSBA
QCBubnBmc19wcmludF9jaGlsZHJlbihjb25zdCBzdHJ1Y3QgZGVudHJ5DQog
DQogICAgIHdoaWxlIChzdWJkaXJzICE9ICZkZW50cnktPmRfc3ViZGlycykg
ew0KIAlzdHJ1Y3QgbGlzdF9oZWFkICp0bXAgPSBzdWJkaXJzOw0KKyNpZiBM
SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQog
CXN0cnVjdCBkZW50cnkgKmNoaWxkID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVj
dCBkZW50cnksIGRfdS5kX2NoaWxkKTsNCisjZWxzZQ0KKwlzdHJ1Y3QgZGVu
dHJ5ICpjaGlsZCA9IGxpc3RfZW50cnkodG1wLCBzdHJ1Y3QgZGVudHJ5LCBk
X2NoaWxkKTsNCisjZW5kaWYNCiANCiAJcHJpbnRrKCIgJS4qcyglcCkiLCAo
aW50KWNoaWxkLT5kX25hbWUubGVuLA0KIAkgICAgICAgY2hpbGQtPmRfbmFt
ZS5uYW1lLCBjaGlsZCk7DQpkaWZmIC11cHJOIC1Ybm9kaWZmLnR4dCBhcmxh
LTAuOTAvbm5wZnMvbGludXgvbm5wZnNfZGV2LmMgYXJsYS1mb3ItbGludXgt
NC40L25ucGZzL2xpbnV4L25ucGZzX2Rldi5jDQotLS0gYXJsYS0wLjkwL25u
cGZzL2xpbnV4L25ucGZzX2Rldi5jCTIwMDYtMTAtMjQgMTg6MzM6MzYuMDAw
MDAwMDAwICswMjAwDQorKysgYXJsYS1mb3ItbGludXgtNC40L25ucGZzL2xp
bnV4L25ucGZzX2Rldi5jCTIwMTYtMDEtMTQgMTY6Mjg6MTkuMjUwNDk1ODIw
ICswMTAwDQpAQCAtMzAwLDcgKzMwMCw5IEBAIG5ucGZzX2ludmFsaWRhdGVf
YWxsKHN0cnVjdCBubnBmcyAqbm5wZnMNCiAgICAgTk5QRlNERUIoWERFQk5P
REUsICgiZnJlZV9hbGxfbm5wZnNfbm9kZXMgc3RhcnRpbmdcbiIpKTsNCiAN
CiAgICAgc2hyaW5rX2RjYWNoZV9zYihubnBmcy0+c2IpOw0KKyNpZiBMSU5V
WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzcpDQogICAg
IGludmFsaWRhdGVfaW5vZGVzKG5ucGZzLT5zYik7DQorI2VuZGlmDQogICAg
IA0KICAgICBOTlBGU0RFQihYREVCTk9ERSwgKCJmcmVlX2FsbF9ubnBmc19u
b2RlcyBkb25lXG4iKSk7DQogfQ0KQEAgLTM3NCw3ICszNzYsMTEgQEAgbm5w
ZnNfZGV2Y2xvc2Uoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cg0KIHN0YXRp
YyBzc2l6ZV90DQogbm5wZnNfZGV2cmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwg
Y2hhciAqYnVmLCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykNCiB7DQor
I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTks
MCkNCiAgICAgbm5wZnNfZGV2X3QgZGV2ID0gZmlsZS0+Zl9kZW50cnktPmRf
aW5vZGUtPmlfcmRldjsNCisjZWxzZQ0KKyAgICBubnBmc19kZXZfdCBkZXYg
PSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlLT5pX3JkZXY7DQorI2Vu
ZGlmDQogICAgIHN0cnVjdCBubnBmcyAqbm5wZnNwID0gJm5ucGZzW01JTk9S
KGRldildOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbGluayAqZmlyc3Q7DQogICAg
IGludCByZXQgPSAwLCBlcnJvciA9IDA7DQpAQCAtNDM5LDggKzQ0NSwxMiBA
QCBubnBmc19kZXZ3cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QNCiAN
CiAgICAgTk5QRlNERUIoWERFQkRFViwgKCJubnBmc19kZXZ3cml0ZVxuIikp
Ow0KICAgICANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF
UlNJT04oMywxOSwwKQ0KICAgICBkZXYgPSBmaWxlLT5mX2RlbnRyeS0+ZF9p
bm9kZS0+aV9yZGV2Ow0KLSAgICBubnBmc3AgPSAmbm5wZnNbTUlOT1IoZGV2
KV07DQorI2Vsc2UNCisgICAgZGV2ID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+
ZF9pbm9kZS0+aV9yZGV2Ow0KKyNlbmRpZg0KKyAgICAgbm5wZnNwID0gJm5u
cGZzW01JTk9SKGRldildOw0KIA0KICAgICBkb3duKCZubnBmc3AtPmNoYW5u
ZWxfc2VtKTsNCiAgICAgaWYgKG5ucGZzcC0+c3RhdHVzICYgTk5QRlNfREVW
V1JJVEUpIHsNCkBAIC01MDUsMTkgKzUxNSwzNyBAQCBubnBmc19kZXZ3cml0
ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QNCiAvKg0KICAqIE5vdCB1c2Vk
Lg0KICAqLw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS
U0lPTigyLDYsMzYpDQogc3RhdGljIGludA0KIG5ucGZzX2RldmlvY3RsKHN0
cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLA0KIAkgICAg
ICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpDQorI2Vs
c2UNCitzdGF0aWMgbG9uZw0KK25ucGZzX3VubG9ja2VkX2RldmlvY3RsKHN0
cnVjdCBmaWxlICpmaWxlLA0KKwkgICAgICAgdW5zaWduZWQgaW50IGNtZCwg
dW5zaWduZWQgbG9uZyBhcmcpDQorI2VuZGlmDQogew0KKyNpZiBMSU5VWF9W
RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzYpDQogICAgIE5O
UEZTREVCKFhERUJERVYsICgibm5wZnNfZGV2aW9jdGwgZGV2ID0gJWQsIGZs
YWdzID0gJWRcbiIsDQogCQkgICAgICAgaW5vZGUtPmlfcmRldiwgZmlsZS0+
Zl9mbGFncykpOw0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F
TF9WRVJTSU9OKDMsMTksMCkNCisgICAgTk5QRlNERUIoWERFQkRFViwgKCJu
bnBmc19kZXZpb2N0bCBkZXYgPSAlZCwgZmxhZ3MgPSAlZFxuIiwNCisJCSAg
ICAgICBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV9yZGV2LCBmaWxlLT5m
X2ZsYWdzKSk7DQorI2Vsc2UNCisgICAgTk5QRlNERUIoWERFQkRFViwgKCJu
bnBmc19kZXZpb2N0bCBkZXYgPSAlZCwgZmxhZ3MgPSAlZFxuIiwNCisJCSAg
ICAgICBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlLT5pX3JkZXYsIGZp
bGUtPmZfZmxhZ3MpKTsNCisjZW5kaWYNCiAgICAgcmV0dXJuIC1FSU5WQUw7
DQogfQ0KIA0KIHN0YXRpYyB1bnNpZ25lZCBpbnQNCiBubnBmc19kZXZwb2xs
KHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KQ0KIHsNCisj
aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSww
KQ0KICAgICBubnBmc19kZXZfdCBkZXYgPSBmaWxlLT5mX2RlbnRyeS0+ZF9p
bm9kZS0+aV9yZGV2Ow0KKyNlbHNlDQorICAgIG5ucGZzX2Rldl90IGRldiA9
IGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGUtPmlfcmRldjsNCisjZW5k
aWYNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3AgPSAmbm5wZnNbTUlOT1Io
ZGV2KV07DQogICAgIGludCByZXQgPSAwOw0KICAgICANCkBAIC05NTMsNyAr
OTgxLDExIEBAIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbm5wZnNfZm9wcyA9
IHsNCiAgICAgcmVhZDoJCW5ucGZzX2RldnJlYWQsDQogICAgIHdyaXRlOgkJ
bm5wZnNfZGV2d3JpdGUsDQogICAgIHBvbGw6CQlubnBmc19kZXZwb2xsLA0K
KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs
MzYpDQogICAgIGlvY3RsOgkJbm5wZnNfZGV2aW9jdGwsDQorI2Vsc2UNCisg
ICAgdW5sb2NrZWRfaW9jdGw6CW5ucGZzX3VubG9ja2VkX2RldmlvY3RsLA0K
KyNlbmRpZg0KICAgICByZWxlYXNlOgkJbm5wZnNfZGV2Y2xvc2UsDQogICAg
IG9wZW46CQlubnBmc19kZXZvcGVuLA0KIH07DQpAQCAtOTY4LDggKzEwMDAs
MTMgQEAgbm5wZnNfaW5pdF9kZXZpY2Uodm9pZCkNCiAJaW5pdF93YWl0cXVl
dWVfaGVhZCgmKG5ucGZzW2ldLndhaXRfcXVldWUpKTsNCiAJbm5wZnNfaW5p
dHEoJm5ucGZzW2ldLm1lc3NhZ2VxKTsNCiAJbm5wZnNfaW5pdHEoJm5ucGZz
W2ldLnNsZWVwcSk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F
TF9WRVJTSU9OKDIsNiwzNykNCiAJaW5pdF9NVVRFWCgmbm5wZnNbaV0uaW5h
Y3RpdmVfc2VtKTsNCiAJaW5pdF9NVVRFWCgmbm5wZnNbaV0uY2hhbm5lbF9z
ZW0pOw0KKyNlbHNlDQorCXNlbWFfaW5pdCgmbm5wZnNbaV0uaW5hY3RpdmVf
c2VtLCAxKTsNCisJc2VtYV9pbml0KCZubnBmc1tpXS5jaGFubmVsX3NlbSwg
MSk7DQorI2VuZGlmDQogCUlOSVRfTElTVF9IRUFEKCZubnBmc1tpXS5pbmFj
dGl2ZV9saXN0KTsNCiAJbm5wZnNbaV0ubm5vZGVzID0gMDsNCiAgICAgfQ0K
ZGlmZiAtdXByTiAtWG5vZGlmZi50eHQgYXJsYS0wLjkwL25ucGZzL2xpbnV4
L25ucGZzX2lub2Rlb3BzLmMgYXJsYS1mb3ItbGludXgtNC40L25ucGZzL2xp
bnV4L25ucGZzX2lub2Rlb3BzLmMNCi0tLSBhcmxhLTAuOTAvbm5wZnMvbGlu
dXgvbm5wZnNfaW5vZGVvcHMuYwkyMDA2LTEyLTExIDE3OjM1OjI2LjAwMDAw
MDAwMCArMDEwMA0KKysrIGFybGEtZm9yLWxpbnV4LTQuNC9ubnBmcy9saW51
eC9ubnBmc19pbm9kZW9wcy5jCTIwMTYtMDEtMTUgMTI6NDQ6NTYuOTIyODk2
NjM5ICswMTAwDQpAQCAtNDAsMjUgKzQwLDQxIEBADQogI2luY2x1ZGUgPG5u
cGZzL25ucGZzX2Rldi5oPg0KICNpbmNsdWRlIDxubnBmcy9ubnBmc19kaXJl
bnQuaD4NCiAjaW5jbHVkZSA8bm5wZnMvbm5wZnNfc3lzY2FsbHMuaD4NCisj
aW5jbHVkZSA8bGludXgvYWlvLmg+DQogI2luY2x1ZGUgPGxpbnV4L2JpbmZt
dHMuaD4NCiAjaW5jbHVkZSA8bGludXgvZmlsZS5oPg0KICNpbmNsdWRlIDxs
aW51eC9wYWdlbWFwLmg+DQogI2luY2x1ZGUgPGxpbnV4L3BhZ2UtZmxhZ3Mu
aD4NCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9O
KDQsMSwwKQ0KKyNpbmNsdWRlIDxsaW51eC91aW8uaD4NCisjZW5kaWYNCiAj
aW5jbHVkZSA8bGludXgvd3JpdGViYWNrLmg+DQogI2luY2x1ZGUgPGFzbS9m
Y250bC5oPg0KIA0KICNpZmRlZiBSQ1NJRA0KLVJDU0lEKCIkSWQ6IG5ucGZz
X2lub2Rlb3BzLmMsdiAxLjIyMyAyMDA2LzEyLzExIDE2OjM1OjI2IHRvbCBF
eHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX2lub2Rlb3BzLmMsdiAxLjIy
NiAyMDEwLzA4LzA4IDIwOjQzOjA0IHRvbCBFeHAgJCIpOw0KICNlbmRpZg0K
IA0KIHN0YXRpYyBpbnQNCiBubnBmc19mc3luY19pbnQoc3RydWN0IGZpbGUg
KmZpbGUsIHVfaW50IGZsYWcpOw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP
REUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiBzdGF0aWMgaW50DQogbm5w
ZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0
IG5hbWVpZGF0YSAqbmQpOw0KLQ0KKyNlbHNlDQogc3RhdGljIGludA0KK25u
cGZzX2RfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVuc2ln
bmVkIGludCBmbGFncyk7DQorI2VuZGlmDQorDQorI2lmIExJTlVYX1ZFUlNJ
T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCitzdGF0aWMNCitp
bnQNCiBubnBmc19kX2RlbGV0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOw0K
KyNlbHNlDQorc3RhdGljDQoraW50DQorbm5wZnNfZF9kZWxldGUoY29uc3Qg
c3RydWN0IGRlbnRyeSAqZGVudHJ5KTsNCisjZW5kaWYNCiANCiBzdGF0aWMg
dm9pZA0KIG5ucGZzX2RfcmVsZWFzZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkp
Ow0KQEAgLTEwNSw3ICsxMjEsNyBAQCBubnBmc192bWFfY2xvc2UgKHN0cnVj
dCB2bV9hcmVhX3N0cnVjdCAqDQogfQ0KIA0KIHN0YXRpYyBzdHJ1Y3Qgdm1f
b3BlcmF0aW9uc19zdHJ1Y3Qgbm5wZnNfZmlsZV92bV9vcHMgPSB7DQotICAg
IC5ub3BhZ2UJPSBmaWxlbWFwX25vcGFnZSwNCisgICAgLmZhdWx0ICAgICAg
PSBmaWxlbWFwX2ZhdWx0LA0KICAgICAuY2xvc2UJPSBubnBmc192bWFfY2xv
c2UsDQogfTsNCiANCkBAIC0xMzQsMTIgKzE1MCwxNCBAQCBubnBmc19wcmlu
dF9wYXRoKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkNCiAgKg0KICAqLw0KIA0K
KyNpZiAwDQogdm9pZA0KIG5ucGZzX3ByaW50X2xvY2soY2hhciAqcywgc3Ry
dWN0IHNlbWFwaG9yZSAqc2VtKQ0KIHsNCiAgICAgTk5QRlNERUIoWERFQkxP
Q0ssICgibG9jazogJXMgc2VtOiAlcCBjb3VudDogJWRcbiIsDQogCQkgICAg
ICBzLCBzZW0sIChpbnQpYXRvbWljX3JlYWQoJnNlbS0+Y291bnQpKSk7DQog
fQ0KKyNlbmRpZg0KIA0KIC8qDQogICoNCkBAIC0xODUsNyArMjAzLDcgQEAg
bm5wZnNfZF9pcHV0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydQ0KICAg
ICBOTlBGU0RFQihYREVCVk5PUFMsDQogCSAgICAgKCJubnBmc19kX2lwdXQ6
IGRlbnRyeSAlcCwgaW5vZGUgJXBcbiIsIGRlbnRyeSwgaW5vZGUpKTsNCiAg
ICAgDQotICAgIGlmIChub2RlLT5mbGFncyAmIE5OUEZTX05PREVfSVBVVCkg
LyogWFhYIGxvY2tpbmcgKi8NCisgICAgaWYgKG5vZGUtPmZsYWdzICYgTk5Q
RlNfTk9ERV9JUFVUKSAvKiBYWFggbG9ja2luZy4gbmV2ZXIgc2V0PyAqLw0K
IAlubnBmc19pcmVsZShpbm9kZSk7DQogICAgIGVsc2UNCiAJaXB1dChpbm9k
ZSk7DQpAQCAtMjEyLDggKzIzMCwxMyBAQCBubnBmc19pbm9kZV92YWxpZChz
dHJ1Y3QgaW5vZGUgKmlub2RlKQ0KICAqIG5ucGZzX2xvb2t1cCBub3cgcmV0
dXJucyBhIGRlbnRyeS4NCiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9D
T0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogc3RhdGljIHN0cnVjdCBk
ZW50cnkgKg0KIG5ucGZzX2xvb2t1cCAoc3RydWN0IGlub2RlICpkaXIsIHN0
cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpDQor
I2Vsc2UNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqDQorbm5wZnNfbG9va3Vw
IChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1
bnNpZ25lZCBpbnQgZmxhZ3MpDQorI2VuZGlmDQogew0KICAgICBzdHJ1Y3Qg
bm5wZnNfbWVzc2FnZV9nZXRub2RlIG1zZzsNCiAgICAgc3RydWN0IG5ucGZz
ICpubnBmc3A7DQpAQCAtMjQwLDcgKzI2MywxMSBAQCBubnBmc19sb29rdXAg
KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QNCiANCiAJbXNnLmhlYWRlci5v
cGNvZGUgPSBOTlBGU19NU0dfR0VUTk9ERTsNCiAgICAgICAgIA0KKyNpZiBM
SU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0K
IAltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAg
ICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQog
CW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAJbXNnLnBhcmVu
dF9oYW5kbGUgPSBkLT5oYW5kbGU7DQogICAgICAgICANCkBAIC0zMTAsNyAr
MzM3LDExIEBAIG5ucGZzX29wZW5fdmFsaWQoc3RydWN0IGlub2RlICp2cCwg
dV9pbnQNCiAgICAgICB7DQogCXN0cnVjdCBubnBmc19tZXNzYWdlX29wZW4g
bXNnOw0KIAltc2cuaGVhZGVyLm9wY29kZSA9IE5OUEZTX01TR19PUEVOOw0K
KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2
LDI4KQ0KIAltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UN
CisgICAgICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2Vu
ZGlmDQogCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAJbXNn
LmhhbmRsZSA9IHhuLT5oYW5kbGU7DQogCW1zZy50b2tlbnMgPSB0b2s7DQpA
QCAtMzk3LDcgKzQyOCwxMSBAQCBmaW5kX2ZpcnN0X2Jsb2NrKHN0cnVjdCBu
bnBmc19ub2RlICpub2RlDQogc3RhdGljIGludA0KIG5ucGZzX2ZzeW5jX2lu
dChzdHJ1Y3QgZmlsZSAqZmlsZSwgdV9pbnQgZmxhZykNCiB7DQorI2lmIExJ
TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAg
ICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lu
b2RlOw0KKyNlbHNlDQorICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxl
LT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOw0KKyNlbmRpZg0KICAgICBzdHJ1
Y3Qgbm5wZnMgKm5ucGZzcCA9IE5OUEZTX0ZST01fVk5PREUoaW5vZGUpOw0K
ICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9UT19YTk9ERShp
bm9kZSk7DQogICAgIGxvZmZfdCBsZW4gPSBpX3NpemVfcmVhZChpbm9kZSk7
DQpAQCAtNDI1LDcgKzQ2MCwxMSBAQCBubnBmc19mc3luY19pbnQoc3RydWN0
IGZpbGUgKmZpbGUsIHVfaW50DQogDQogCW1zZy5oZWFkZXIub3Bjb2RlID0g
Tk5QRlNfTVNHX1BVVERBVEE7DQogCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dl
dF9wYWcoKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9W
RVJTSU9OKDIsNiwyOCkNCiAJbXNnLmNyZWQudWlkID0gY3VycmVudC0+dWlk
Ow0KKyNlbHNlDQorICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3Vp
ZCgpOw0KKyNlbmRpZg0KIAltc2cuaGFuZGxlID0geG4tPmhhbmRsZTsNCiAJ
bXNnLmZsYWcgICA9IGZsYWc7DQogCW1zZy5vZmZzZXQgPSBvZmY7DQpAQCAt
NDYwLDE0ICs0OTksMjcgQEAgbm5wZnNfZnN5bmNfaW50KHN0cnVjdCBmaWxl
ICpmaWxlLCB1X2ludA0KICAqDQogICovDQogDQorI2lmIExJTlVYX1ZFUlNJ
T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNSkNCiBzdGF0aWMgaW50
DQogbm5wZnNfZnN5bmMoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkZW50
cnkgKmRlbnRyeSwgaW50IGRhdGFzeW5jKQ0KKyNlbGlmIExJTlVYX1ZFUlNJ
T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMSwwKQ0KK3N0YXRpYyBpbnQN
CitubnBmc19mc3luYyhzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IGRhdGFzeW5j
KQ0KKyNlbHNlDQorc3RhdGljIGludA0KK25ucGZzX2ZzeW5jKHN0cnVjdCBm
aWxlICpmaWxlLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQsIGludCBkYXRh
c3luYykNCisjZW5kaWYNCiB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+
PSBLRVJORUxfVkVSU0lPTigyLDYsMzUpDQorICAgIHN0cnVjdCBkZW50cnkg
KmRlbnRyeSA9IGZpbGUtPmZfcGF0aC5kZW50cnk7DQorI2VuZGlmDQogICAg
IHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBERU5UUllfVE9fSU5PREUoZGVudHJ5
KTsNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3A7DQogICAgIHN0cnVjdCBu
bnBmc19ub2RlICp4bjsNCiAgICAgaW50IGVycm9yID0gMDsNCiANCisgICAg
KHZvaWQpbm5wZnNwOw0KKw0KICAgICBlcnJvciA9IG5ucGZzX2lub2RlX3Zh
bGlkKGlub2RlKTsNCiAgICAgaWYgKGVycm9yKQ0KIAlyZXR1cm4gZXJyb3I7
DQpAQCAtNTExLDcgKzU2MywxMSBAQCBubnBmc19hdHRyX3ZhbGlkKHN0cnVj
dCBpbm9kZSAqIHZwLCB1X2luDQogICAgICAgICAgICAgc3RydWN0IG5ucGZz
X21lc3NhZ2VfZ2V0YXR0ciBtc2c7DQogDQogICAgICAgICAgICAgbXNnLmhl
YWRlci5vcGNvZGUgPSBOTlBGU19NU0dfR0VUQVRUUjsNCisjaWYgTElOVVhf
VkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAg
ICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UN
CisgICAgICAgICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0K
KyNlbmRpZg0KICAgICAgICAgICAgIG1zZy5jcmVkLnBhZyA9IHBhZzsNCiAg
ICAgICAgICAgICBtc2cuaGFuZGxlID0geG4tPmhhbmRsZTsNCiAgICAgICAg
ICAgICBlcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5o
ZWFkZXIsIHNpemVvZihtc2cpKTsNCkBAIC01NTEsNyArNjA3LDExIEBAIG5u
cGZzX3JpZ2h0c192YWxpZChzdHJ1Y3QgaW5vZGUgKiB2cCwgbm4NCiAgICAg
ICAgICAgICBzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV9nZXRhdHRyIG1zZzsNCiAN
CiAgICAgICAgICAgICBtc2cuaGVhZGVyLm9wY29kZSA9IE5OUEZTX01TR19H
RVRBVFRSOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZF
UlNJT04oMiw2LDI4KQ0KICAgICAgICAgICAgIG1zZy5jcmVkLnVpZCA9IGN1
cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAgICAgIG1zZy5jcmVkLnVp
ZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQogICAgICAgICAgICAgbXNn
LmNyZWQucGFnID0gcGFnOw0KICAgICAgICAgICAgIG1zZy5oYW5kbGUgPSB4
bi0+aGFuZGxlOw0KICAgICAgICAgICAgIGVycm9yID0gbm5wZnNfbWVzc2Fn
ZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRlciwgc2l6ZW9mKG1zZykpOw0KQEAg
LTU5MiwxMSArNjUyLDI1IEBAIGNoZWNrX3JpZ2h0cyAobm5wZnNfcmlnaHRz
IHJpZ2h0cywgaW50IG0NCiAgKiBXZSBkb24ndCBob2xkIGlfbXV0ZXguDQog
ICovDQogDQorI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS
U0lPTigyLDYsMzgpIHx8IExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxf
VkVSU0lPTigzLDEsMCkpDQorc3RhdGljIGludA0KK25ucGZzX3Blcm1pc3Np
b24oc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1vZGUpDQorI2Vsc2UNCiBz
dGF0aWMgaW50DQotbm5wZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKmlu
b2RlLCBpbnQgbW9kZSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpDQorbm5wZnNf
cGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbW9kZSwgdW5z
aWduZWQgaW50IGZsYWdzKQ0KKyNlbmRpZg0KIHsNCiAgICAgaW50IGVycm9y
ID0gMDsNCi0gICAgbm5wZnNfcGFnX3QgcGFnID0gbm5wZnNfZ2V0X3BhZygp
Ow0KKyAgICBubnBmc19wYWdfdCBwYWc7DQorI2lmIExJTlVYX1ZFUlNJT05f
Q09ERSA+PSBLRVJORUxfVkVSU0lPTigzLDEsMCkNCisgICAgaWYgKG1vZGUg
JiBNQVlfTk9UX0JMT0NLKQ0KKyAgICAgICAgcmV0dXJuIC1FQ0hJTEQ7DQor
I2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIs
NiwzOCkNCisgICAgaWYgKGZsYWdzICYgSVBFUk1fRkxBR19SQ1UpDQorICAg
ICAgICByZXR1cm4gLUVDSElMRDsNCisjZW5kaWYNCisNCisgICAgcGFnID0g
bm5wZnNfZ2V0X3BhZygpOw0KICAgICANCiAgICAgTk5QRlNERUIoWERFQlZO
T1BTLCAoIm5ucGZzX2FjY2VzcyAoJXApIG1vZGUgPSAwJW8gYWxpYXNlczoi
LCBpbm9kZSwgbW9kZSkpOw0KICAgICBubnBmc19wcmludF9hbGlhc2VzKGlu
b2RlKTsNCkBAIC02MzYsNyArNzEwLDExIEBAIG5ucGZzX2RvX2dldGRhdGEo
c3RydWN0IG5ucGZzX25vZGUgKnhuLA0KICAgICBpbnQgZXJyb3I7DQogDQog
ICAgIG1zZy5oZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX0dFVERBVEE7DQor
I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYs
MjgpDQogICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxz
ZQ0KKyAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRp
Zg0KICAgICBtc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogICAg
IG1zZy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KICAgICBtc2cudG9rZW5zID0g
dG9rOw0KQEAgLTc1MCwxMSArODI4LDE5IEBAIG5ucGZzX2RhdGFfdmFsaWQo
c3RydWN0IGlub2RlICppbm9kZSwgdV8NCiBpbnQgbm5wZnNfZmlsZV9tbWFw
KHN0cnVjdCBmaWxlICogZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICog
dm1hKQ0KIHsNCiAgICAgaW50IGZsYWdzLCBlcnJvciA9IDA7DQorI2lmIExJ
TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAg
ICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUtPmZfZGVudHJ5LT5kX2lu
b2RlOw0KKyNlbHNlDQorICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxl
LT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOw0KKyNlbmRpZg0KICAgICBzdHJ1
Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGZpbGUtPmZfbWFwcGluZzsN
CiANCiAgICAgTk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX21tYXAgaW5v
ZGU6ICVwXG4iLCBpbm9kZSkpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg
PCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogICAgIG5ucGZzX3ByaW50X3Bh
dGgoZmlsZS0+Zl9kZW50cnkpOw0KKyNlbHNlDQorICAgIG5ucGZzX3ByaW50
X3BhdGgoZmlsZS0+Zl9wYXRoLmRlbnRyeSk7DQorI2VuZGlmDQogICAgIE5O
UEZTREVCKFhERUJWTk9QUywgKCJubnBmc19tbWFwIGFsaWFzZXM6IikpOw0K
ICAgICBubnBmc19wcmludF9hbGlhc2VzKGlub2RlKTsNCiAgICAgDQpAQCAt
Nzg5LDM3ICs4NzUsNTAgQEAgaW50IG5ucGZzX2ZpbGVfbW1hcChzdHJ1Y3Qg
ZmlsZSAqIGZpbGUsDQogICoNCiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lP
Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0KIHN0YXRpYyBzc2l6
ZV90DQogbm5wZnNfYWlvX3JlYWQoc3RydWN0IGtpb2NiICppb2NiLA0KLSNp
ZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE5
KQ0KIAkgICAgICAgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHVuc2lnbmVk
IGxvbmcgbnJfc2VncywNCisJICAgICAgIGxvZmZfdCBwb3MpDQogI2Vsc2UN
Ci0JICAgICAgIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCwNCitz
dGF0aWMgc3NpemVfdA0KK25ucGZzX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2Ig
KmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pDQogI2VuZGlmDQotCSAgICAg
ICBsb2ZmX3QgcG9zKQ0KIHsNCiAgICAgaW50IGVycm9yID0gMDsNCiAgICAg
c3RydWN0IGZpbGUgKmZpbGUgPSBpb2NiLT5raV9maWxwOw0KLSNpZiBMSU5V
WF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE5KQ0KKyNp
ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDEyLDAp
DQogICAgIHNzaXplX3QgY291bnQgPSBpb2NiLT5raV9sZWZ0Ow0KKyNlbGlm
IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQsMSwwKQ0K
KyAgICBzc2l6ZV90IGNvdW50ID0gaW9jYi0+a2lfbmJ5dGVzOw0KKyNlbHNl
DQorICAgIHNzaXplX3QgY291bnQgPSBpb3ZfaXRlcl9jb3VudCh0byk7DQog
I2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT
SU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUt
PmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQorICAgIHN0cnVjdCBpbm9k
ZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOw0KKyNl
bmRpZg0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9UT19Y
Tk9ERShpbm9kZSk7DQogICAgIA0KICAgICBpZiAoeG4gIT0gTlVMTCkNCiAJ
Tk5QRlNERUIoWERFQlZOT1BTLCAoIm5ucGZzX3JlYWRfZmlsZSglcCk6IHRv
a2VuczogMHgleFxuIiwNCiAJCQkgICAgIGlub2RlLCB4bi0+dG9rZW5zKSk7
DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O
KDMsMTYsMCkNCiAgICAgZXJyb3IgPSBubnBmc19kYXRhX3ZhbGlkKGlub2Rl
LCBOTlBGU19EQVRBX1IsIHBvcywgcG9zICsgY291bnQpOw0KKyNlbHNlDQor
ICAgIGVycm9yID0gbm5wZnNfZGF0YV92YWxpZChpbm9kZSwgTk5QRlNfREFU
QV9SLCBpb2NiLT5raV9wb3MsIGlvY2ItPmtpX3BvcyArIGNvdW50KTsNCisj
ZW5kaWYNCiAgICAgaWYgKGVycm9yKSB7DQogCU5OUEZTREVCKFhERUJWTk9Q
UywgKCJubnBmc19yZWFkX2ZpbGU6IGRhdGEgbm90IHZhbGlkICVkXG4iLCBl
cnJvcikpOw0KIAlyZXR1cm4gZXJyb3I7DQogICAgIH0NCiAgICAgDQotI2lm
IExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTkp
DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs
MTYsMCkNCiAgICAgZXJyb3IgPSBnZW5lcmljX2ZpbGVfYWlvX3JlYWQoaW9j
YiwgaW92LCBucl9zZWdzLCBwb3MpOw0KICNlbHNlDQotICAgIGVycm9yID0g
Z2VuZXJpY19maWxlX2Fpb19yZWFkKGlvY2IsIGJ1ZiwgY291bnQsIHBvcyk7
DQorICAgIGVycm9yID0gZ2VuZXJpY19maWxlX3JlYWRfaXRlcihpb2NiLCB0
byk7DQogI2VuZGlmDQogICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBm
c19yZWFkX2ZpbGU6IGVycm9yID0gJWRcbiIsIGVycm9yKSk7DQogICAgIHJl
dHVybiBlcnJvcjsNCkBAIC04MjksMjMgKzkyOCwzNiBAQCBubnBmc19haW9f
cmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsDQogICoNCiAgKi8NCiANCisjaWYg
TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0K
IHN0YXRpYyBzc2l6ZV90DQogbm5wZnNfYWlvX3dyaXRlKHN0cnVjdCBraW9j
YiAqaW9jYiwNCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9W
RVJTSU9OKDIsNiwxOSkNCiAJCWNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCB1
bnNpZ25lZCBsb25nIG5yX3NlZ3MsDQorCQlsb2ZmX3QgcG9zKQ0KICNlbHNl
DQotCQljb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsIA0K
K3N0YXRpYyBzc2l6ZV90DQorbm5wZnNfd3JpdGVfaXRlcihzdHJ1Y3Qga2lv
Y2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSkNCiAjZW5kaWYNCi0J
CWxvZmZfdCBwb3MpDQogew0KICAgICBpbnQgZXJyb3IgPSAwOw0KICAgICBz
dHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItPmtpX2ZpbHA7DQotI2lmIExJTlVY
X1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTkpDQorI2lm
IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTIsMCkN
CiAgICAgc3NpemVfdCBjb3VudCA9IGlvY2ItPmtpX2xlZnQ7DQorI2VsaWYg
TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwxLDApDQor
ICAgIHNzaXplX3QgY291bnQgPSBpb2NiLT5raV9uYnl0ZXM7DQorI2Vsc2UN
CisgICAgc3NpemVfdCBjb3VudCA9IGlvdl9pdGVyX2NvdW50KGZyb20pOw0K
ICNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS
U0lPTigzLDE5LDApDQogICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxl
LT5mX2RlbnRyeS0+ZF9pbm9kZTsNCisjZWxzZQ0KKyAgICBzdHJ1Y3QgaW5v
ZGUgKmlub2RlID0gZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsNCisj
ZW5kaWYNCiAgICAgc3RydWN0IG5ucGZzX25vZGUgKnhuID0gVk5PREVfVE9f
WE5PREUoaW5vZGUpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO
RUxfVkVSU0lPTigzLDE2LDApDQogICAgIGxvZmZfdCByZWFscG9zID0gcG9z
Ow0KKyNlbHNlDQorICAgIGxvZmZfdCByZWFscG9zID0gaW9jYi0+a2lfcG9z
Ow0KKyNlbmRpZg0KICAgICANCiAgICAgTk5QRlNERUIoWERFQlZOT1BTLCAo
Im5ucGZzX2Fpb193cml0ZSglcCk6IHRva2VuczogMHgleFxuIiwNCiAJCQkg
aW5vZGUsIHhuLT50b2tlbnMpKTsNCkBAIC04NTksMTAgKzk3MSwxMCBAQCBu
bnBmc19haW9fd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLA0KIAlyZXR1cm4g
ZXJyb3I7DQogICAgIH0NCiANCi0jaWYgTElOVVhfVkVSU0lPTl9DT0RFID49
IEtFUk5FTF9WRVJTSU9OKDIsNiwxOSkNCisjaWYgTElOVVhfVkVSU0lPTl9D
T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxNiwwKQ0KICAgICBlcnJvciA9IGdl
bmVyaWNfZmlsZV9haW9fd3JpdGUoaW9jYiwgaW92LCBucl9zZWdzLCBwb3Mp
Ow0KICNlbHNlDQotICAgIGVycm9yID0gZ2VuZXJpY19maWxlX2Fpb193cml0
ZShpb2NiLCBidWYsIGNvdW50LCBwb3MpOw0KKyAgICBlcnJvciA9IGdlbmVy
aWNfZmlsZV93cml0ZV9pdGVyKGlvY2IsIGZyb20pOw0KICNlbmRpZg0KICAg
ICBpZiAoIUlTX0VSUl9WQUxVRShlcnJvcikpDQogCXhuLT5mbGFncyB8PSBO
TlBGU19EQVRBX0RJUlRZOyAvKiBYWFggcmFjZSAqLw0KQEAgLTg3MSw5ICs5
ODMsMTkgQEAgbm5wZnNfYWlvX3dyaXRlKHN0cnVjdCBraW9jYiAqaW9jYiwN
CiAgICAgcmV0dXJuIGVycm9yOw0KIH0NCiANCisjaWYgTElOVVhfVkVSU0lP
Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywzLDApDQogc3RhdGljIGludA0K
IG5ucGZzX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRy
eSAqZGVudHJ5LA0KIAkgICAgIGludCBtb2RlLCBzdHJ1Y3QgbmFtZWlkYXRh
ICpuZCkNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS
U0lPTigzLDYsMCkNCitzdGF0aWMgaW50DQorbm5wZnNfY3JlYXRlKHN0cnVj
dCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksDQorCSAgICAg
dW1vZGVfdCBtb2RlLCBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkNCisjZWxzZQ0K
K3N0YXRpYyBpbnQNCitubnBmc19jcmVhdGUoc3RydWN0IGlub2RlICpkaXIs
IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwNCisJICAgICB1bW9kZV90IG1vZGUs
IGJvb2wgZXhjbCkNCisjZW5kaWYNCiB7DQogICAgIHN0cnVjdCBubnBmcyAq
bm5wZnNwOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG47DQpAQCAtOTAz
LDkgKzEwMjUsMTcgQEAgbm5wZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqZGly
LCBzdHJ1Y3QgZA0KICAgICBYQV9DTEVBUigmbXNnLmF0dHIpOw0KICAgICBY
QV9TRVRfTU9ERSgmbXNnLmF0dHIsIG1vZGUpOw0KICAgICBYQV9TRVRfVFlQ
RSgmbXNnLmF0dHIsIE5OUEZTX0ZJTEVfUkVHKTsNCisjaWYgTElOVVhfVkVS
U0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgWEFf
U0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnQtPmZzZ2lkKTsNCisjZWxzZQ0K
KyAgICBYQV9TRVRfR0lEKCZtc2cuYXR0ciwgY3VycmVudF9mc2dpZCgpKTsN
CisjZW5kaWYNCiAgICAgbXNnLm1vZGUgPSAwOwkJLyogWFhYICovDQorI2lm
IExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgp
DQogICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0K
KyAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0K
ICAgICBtc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogICAgIGVy
cm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRlciwg
c2l6ZW9mKG1zZykpOw0KICAgICBpZiAoZXJyb3IgPT0gMCkNCkBAIC05NDYs
NyArMTA3NiwxMSBAQCBubnBmc191bmxpbmsgKHN0cnVjdCBpbm9kZSAqIGRp
ciwgc3RydWN0DQogICAgIGlmIChzdHJsY3B5KG1zZy5uYW1lLCBkZW50cnkt
PmRfbmFtZS5uYW1lLCBzaXplb2YobXNnLm5hbWUpKSA+PSBOTlBGU19NQVhf
TkFNRSkNCiAJcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQogDQorI2lmIExJTlVY
X1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAg
IG1zZy5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICBt
c2cuY3JlZC51aWQgPSBjdXJyZW50X3VpZCgpOw0KKyNlbmRpZg0KICAgICBt
c2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQogICAgIGVycm9yID0g
bm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhlYWRlciwgc2l6ZW9m
KG1zZykpOw0KICAgICBpZiAoZXJyb3IgPT0gMCkNCkBAIC05OTEsNyArMTEy
NSwxMSBAQCBubnBmc19yZW5hbWUgKHN0cnVjdCBpbm9kZSAqIG9sZF9kaXIs
IHN0DQogICAgIGlmIChzdHJsY3B5KG1zZy5uZXdfbmFtZSwgbmV3X2RlbnRy
eS0+ZF9uYW1lLm5hbWUsIHNpemVvZihtc2cubmV3X25hbWUpKSA+PSBOTlBG
U19NQVhfTkFNRSkNCiAJcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQogCQ0KKyNp
ZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4
KQ0KICAgICBtc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UN
CisgICAgbXNnLmNyZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYN
CiAgICAgbXNnLmNyZWQucGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KICAgICBl
cnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIs
IHNpemVvZihtc2cpKTsNCiAgICAgaWYgKGVycm9yID09IDApDQpAQCAtMTAw
OCw4ICsxMTQ2LDEzIEBAIG5ucGZzX3JlbmFtZSAoc3RydWN0IGlub2RlICog
b2xkX2Rpciwgc3QNCiAgICAgcmV0dXJuIGVycm9yOw0KIH0NCiANCisjaWYg
TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywzLDApDQog
c3RhdGljIGludA0KIG5ucGZzX21rZGlyKHN0cnVjdCBpbm9kZSAqIGRpciwg
c3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgbW9kZSkNCisjZWxzZQ0KK3N0
YXRpYyBpbnQNCitubnBmc19ta2RpcihzdHJ1Y3QgaW5vZGUgKiBkaXIsIHN0
cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlKQ0KKyNlbmRpZg0K
IHsNCiAgICAgc3RydWN0IG5ucGZzICpubnBmc3A7DQogICAgIHN0cnVjdCBu
bnBmc19ub2RlICp4bjsNCkBAIC0xMDQwLDkgKzExODMsMTcgQEAgbm5wZnNf
bWtkaXIoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZA0KIAlYQV9DTEVB
UigmbXNnLmF0dHIpOw0KIAlYQV9TRVRfTU9ERSgmbXNnLmF0dHIsIG1vZGUp
Ow0KIAlYQV9TRVRfVFlQRSgmbXNnLmF0dHIsIE5OUEZTX0ZJTEVfRElSKTsN
CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIs
NiwyOCkNCiAJWEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1cnJlbnQtPmZzZ2lk
KTsNCisjZWxzZQ0KKyAgICAgICAgWEFfU0VUX0dJRCgmbXNnLmF0dHIsIGN1
cnJlbnRfZnNnaWQoKSk7DQorI2VuZGlmDQogDQorI2lmIExJTlVYX1ZFUlNJ
T05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogCW1zZy5jcmVk
LnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxzZQ0KKyAgICAgICAgbXNnLmNy
ZWQudWlkID0gY3VycmVudF91aWQoKTsNCisjZW5kaWYNCiAJbXNnLmNyZWQu
cGFnID0gbm5wZnNfZ2V0X3BhZygpOw0KIAllcnJvciA9IG5ucGZzX21lc3Nh
Z2VfcnBjKG5ucGZzcCwgJm1zZy5oZWFkZXIsIHNpemVvZihtc2cpKTsNCiAJ
aWYgKGVycm9yID09IDApDQpAQCAtMTA4Myw3ICsxMjM0LDExIEBAIG5ucGZz
X3JtZGlyKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGQNCiAgICAgbXNn
LnBhcmVudF9oYW5kbGUgPSB4bi0+aGFuZGxlOw0KICAgICBpZiAoc3RybGNw
eShtc2cubmFtZSwgZGVudHJ5LT5kX25hbWUubmFtZSwgc2l6ZW9mKG1zZy5u
YW1lKSkgPj0gTk5QRlNfTUFYX05BTUUpDQogCSAgICByZXR1cm4gLUVOQU1F
VE9PTE9ORzsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9W
RVJTSU9OKDIsNiwyOCkNCiAgICAgbXNnLmNyZWQudWlkID0gY3VycmVudC0+
dWlkOw0KKyNlbHNlDQorICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlk
KCk7DQorI2VuZGlmDQogICAgIG1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9w
YWcoKTsNCiAgICAgZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3As
ICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7DQogICAgIGlmIChlcnJvciA9
PSAwKQ0KQEAgLTExMjgsNyArMTI4MywxMSBAQCBzdGF0aWMgaW50IG5ucGZz
X2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkDQogCWlmIChzdHJsY3B5KG1zZy5u
YW1lLCBuYW1lLCBzaXplb2YobXNnLm5hbWUpKSA+PSBOTlBGU19NQVhfTkFN
RSkNCiAJICAgIHJldHVybiAtRU5BTUVUT09MT05HOw0KIA0KKyNpZiBMSU5V
WF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2LDI4KQ0KIAlt
c2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UNCisgICAgICAg
IG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2VuZGlmDQogCW1z
Zy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAJZXJyb3IgPSBubnBm
c19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVyLCBzaXplb2YobXNn
KSk7DQogCWlmIChlcnJvciA9PSAwKQ0KQEAgLTExNTcsMjkgKzEzMTYsNDcg
QEAgc3RhdGljIGludCBubnBmc19zeW1saW5rKHN0cnVjdCBpbm9kZSAqZA0K
ICAgICB4biA9IFZOT0RFX1RPX1hOT0RFKGRpcik7DQogDQogICAgIHsNCi0J
c3RydWN0IG5ucGZzX21lc3NhZ2Vfc3ltbGluayBtc2c7DQorCXN0cnVjdCBu
bnBmc19tZXNzYWdlX3N5bWxpbmsgKm1zZyA9IE5VTEw7DQogDQotCW1zZy5o
ZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX1NZTUxJTks7DQotCW1zZy5wYXJl
bnRfaGFuZGxlID0geG4tPmhhbmRsZTsNCi0JaWYgKHN0cmxjcHkobXNnLm5h
bWUsIG5hbWUsIHNpemVvZihtc2cubmFtZSkpID49IE5OUEZTX01BWF9OQU1F
KQ0KLQkgICAgcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQotCWlmIChzdHJsY3B5
KG1zZy5jb250ZW50cywgc3ltbmFtZSwgc2l6ZW9mKG1zZy5jb250ZW50cykp
ID49IE5OUEZTX01BWF9TWU1MSU5LX0NPTlRFTlQpDQotCSAgICByZXR1cm4g
LUVOQU1FVE9PTE9ORzsNCi0JWEFfQ0xFQVIoJm1zZy5hdHRyKTsNCi0JWEFf
U0VUX01PREUoJm1zZy5hdHRyLCAwNzc3KTsNCi0JWEFfU0VUX1RZUEUoJm1z
Zy5hdHRyLCBOTlBGU19GSUxFX0xOSyk7DQotCVhBX1NFVF9HSUQoJm1zZy5h
dHRyLCBjdXJyZW50LT5mc2dpZCk7DQorCW1zZyA9IGttYWxsb2Moc2l6ZW9m
KCptc2cpLCBHRlBfS0VSTkVMKTsNCiANCi0JbXNnLmNyZWQudWlkID0gY3Vy
cmVudC0+dWlkOw0KLQltc2cuY3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7
DQotCWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLmhl
YWRlciwgc2l6ZW9mKG1zZykpOw0KKwlpZiAobXNnID09IE5VTEwpDQorCSAg
cmV0dXJuIC1FTk9NRU07DQorDQorCW1zZy0+aGVhZGVyLm9wY29kZSA9IE5O
UEZTX01TR19TWU1MSU5LOw0KKwltc2ctPnBhcmVudF9oYW5kbGUgPSB4bi0+
aGFuZGxlOw0KKwlpZiAoc3RybGNweShtc2ctPm5hbWUsIG5hbWUsIHNpemVv
Zihtc2ctPm5hbWUpKSA+PSBOTlBGU19NQVhfTkFNRSkgew0KKwkgIGtmcmVl
KG1zZyk7DQorCSAgcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQorCX0NCisJaWYg
KHN0cmxjcHkobXNnLT5jb250ZW50cywgc3ltbmFtZSwgc2l6ZW9mKG1zZy0+
Y29udGVudHMpKSA+PSBOTlBGU19NQVhfU1lNTElOS19DT05URU5UKSB7DQor
CSAga2ZyZWUobXNnKTsNCisJICByZXR1cm4gLUVOQU1FVE9PTE9ORzsNCisJ
fQ0KKwlYQV9DTEVBUigmbXNnLT5hdHRyKTsNCisJWEFfU0VUX01PREUoJm1z
Zy0+YXR0ciwgMDc3Nyk7DQorCVhBX1NFVF9UWVBFKCZtc2ctPmF0dHIsIE5O
UEZTX0ZJTEVfTE5LKTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtF
Uk5FTF9WRVJTSU9OKDIsNiwyOCkNCisJWEFfU0VUX0dJRCgmbXNnLT5hdHRy
LCBjdXJyZW50LT5mc2dpZCk7DQorI2Vsc2UNCisgICAgICAgIFhBX1NFVF9H
SUQoJm1zZy0+YXR0ciwgY3VycmVudF9mc2dpZCgpKTsNCisjZW5kaWYNCisN
CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIs
NiwyOCkNCisJbXNnLT5jcmVkLnVpZCA9IGN1cnJlbnQtPnVpZDsNCisjZWxz
ZQ0KKyAgICAgICAgbXNnLT5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQor
I2VuZGlmDQorCW1zZy0+Y3JlZC5wYWcgPSBubnBmc19nZXRfcGFnKCk7DQor
CWVycm9yID0gbm5wZnNfbWVzc2FnZV9ycGMobm5wZnNwLCAmbXNnLT5oZWFk
ZXIsIHNpemVvZigqbXNnKSk7DQogCWlmIChlcnJvciA9PSAwKQ0KLQkgICAg
ZXJyb3IgPSBOTlBGU19NU0dfV0FLRVVQX0VSUk9SKCZtc2cpOw0KKwkgICAg
ZXJyb3IgPSBOTlBGU19NU0dfV0FLRVVQX0VSUk9SKG1zZyk7DQogDQogCS8q
IFhYWCBzaG91bGQgdGhpcyByZWFsbHkgYmUgaGVyZSAqLw0KIAlpZiAoREVO
VFJZX1RPX1hERU5UUlkoZGVudHJ5KS0+eGRfZmxhZ3MgPT0gMCkgew0KIAkg
ICAgcHJpbnRrKEtFUk5fRU1FUkcgIk5OUEZTIFBhbmljOiBubnBmc19zeW1s
aW5rOiBkZW50cnkgbm90IHZhbGlkXG4iKTsNCiAJfQ0KKwlrZnJlZShtc2cp
Ow0KICAgICB9DQogDQogICAgIHJldHVybiBlcnJvcjsNCkBAIC0xMTg4LDEy
ICsxMzY1LDIxIEBAIHN0YXRpYyBpbnQgbm5wZnNfc3ltbGluayhzdHJ1Y3Qg
aW5vZGUgKmQNCiAvKg0KICAqIFdlIGhvbGQgaV9tdXRleC4NCiAgKi8NCisj
aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxMSww
KQ0KIHN0YXRpYyBpbnQNCiBubnBmc19yZWFkZGlyKHN0cnVjdCBmaWxlICog
ZmlsZSwgdm9pZCAqIGRpcmVudCwgZmlsbGRpcl90IGZpbGxkaXIpDQorI2Vs
c2UNCitzdGF0aWMgaW50DQorbm5wZnNfaXRlcmF0ZShzdHJ1Y3QgZmlsZSAq
IGZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4KQ0KKyNlbmRpZg0KIHsN
CiAgICAgaW50IGVycm9yOw0KICAgICBsb2ZmX3Qgb2Zmc2V0LCBiZWdpbl9v
ZmZzZXQ7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT
SU9OKDMsMTksMCkNCiAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGUt
PmZfZGVudHJ5LT5kX2lub2RlOw0KKyNlbHNlDQorICAgIHN0cnVjdCBpbm9k
ZSAqaW5vZGUgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlOw0KKyNl
bmRpZg0KICAgICBzdHJ1Y3QgaW5vZGUgKmNhY2hlX2lub2RlOw0KICAgICBz
dHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9UT19YTk9ERShpbm9kZSk7
DQogICAgIGNoYXIgKmJ1ZjsNCkBAIC0xMjY0LDYgKzE0NTAsNyBAQCBubnBm
c19yZWFkZGlyKHN0cnVjdCBmaWxlICogZmlsZSwgdm9pZCAqDQogCQkgICAg
KGludCkgeGRpcmVudC0+ZF9uYW1sZW4sDQogCQkgICAgKGludCkgKG9mZnNl
dCtiZWdpbl9vZmZzZXQpKSk7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E
RSA8IEtFUk5FTF9WRVJTSU9OKDMsMTEsMCkNCiAJICAgIGlmICh4ZGlyZW50
LT5kX2ZpbGVubyAhPSAwDQogCQkmJiAoZmlsbGRpcl9lcnJvciA9IGZpbGxk
aXIgKGRpcmVudCwNCiAJCQkJICAgICB4ZGlyZW50LT5kX25hbWUsDQpAQCAt
MTI3NSw2ICsxNDYyLDE4IEBAIG5ucGZzX3JlYWRkaXIoc3RydWN0IGZpbGUg
KiBmaWxlLCB2b2lkICoNCiAJCQkgKCJubnBmc19yZWFkZGlyIGZpbGxkaXI6
ICVkXG4iLCBmaWxsZGlyX2Vycm9yKSk7DQogCQlicmVhazsNCiAJICAgIH0N
CisjZWxzZQ0KKwkgICAgaWYgKHhkaXJlbnQtPmRfZmlsZW5vICE9IDANCisJ
CSYmIChmaWxsZGlyX2Vycm9yID0gZGlyX2VtaXQgKGN0eCwNCisJCQkJICAg
ICB4ZGlyZW50LT5kX25hbWUsDQorCQkJCSAgICAgeGRpcmVudC0+ZF9uYW1s
ZW4sDQorCQkJCSAgICAgeGRpcmVudC0+ZF9maWxlbm8sDQorCQkJCSAgICAg
RFRfVU5LTk9XTikpIDwgMCkgew0KKwkJTk5QRlNERUIoWERFQlJFQURESVIs
DQorCQkJICgibm5wZnNfcmVhZGRpciBmaWxsZGlyOiAlZFxuIiwgZmlsbGRp
cl9lcnJvcikpOw0KKwkJYnJlYWs7DQorCSAgICB9DQorI2VuZGlmDQogCSAg
ICBvZmZzZXQgKz0geGRpcmVudC0+ZF9yZWNsZW47DQogDQogCSAgICBpZiAo
eGRpcmVudC0+ZF9yZWNsZW4gPT0gMCkgew0KQEAgLTEzMzEsOSArMTUzMCwx
NSBAQCBubnBmc19yZWFkbGluayAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBj
DQogICogV2UgZG9uJ3QgaG9sZCBpX211dGV4Lg0KICAqLw0KIA0KKyNpZiBM
SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig0LDIsMCkNCiBz
dGF0aWMgdm9pZCAqDQogbm5wZnNfZm9sbG93X2xpbmsgKHN0cnVjdCBkZW50
cnkgKmRlbnRyeSwNCiAJCSBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkNCisjZWxz
ZQ0KK3N0YXRpYyBjb25zdCBjaGFyICoNCitubnBmc19mb2xsb3dfbGluayAo
c3RydWN0IGRlbnRyeSAqZGVudHJ5LA0KKwkJIHZvaWQgKipwYWdlKQ0KKyNl
bmRpZg0KIHsNCiAgICAgaW50IGVycm9yID0gMDsNCiAgICAgc3RydWN0IGlu
b2RlICppbm9kZSA9IERFTlRSWV9UT19JTk9ERShkZW50cnkpOw0KQEAgLTEz
NDQsNyArMTU0OSwxMSBAQCBubnBmc19mb2xsb3dfbGluayAoc3RydWN0IGRl
bnRyeSAqZGVudHJ5DQogICAgIGlmIChlcnJvcikNCiAgICAgICAgcmV0dXJu
IEVSUl9QVFIoZXJyb3IpOw0KIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg
PCBLRVJORUxfVkVSU0lPTig0LDIsMCkNCiAgICAgcmV0dXJuIHBhZ2VfZm9s
bG93X2xpbmtfbGlnaHQoZGVudHJ5LCBuZCk7DQorI2Vsc2UNCisgICAgcmV0
dXJuIHBhZ2VfZm9sbG93X2xpbmtfbGlnaHQoZGVudHJ5LCBwYWdlKTsNCisj
ZW5kaWYNCiB9DQogDQogLyoNCkBAIC0xMzk4LDcgKzE2MDcsMTEgQEAgbm5w
ZnNfc2V0YXR0ciAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdA0KICAgICAg
ICAgc3RydWN0IG5ucGZzX21lc3NhZ2VfcHV0YXR0ciBtc2c7DQogDQogICAg
ICAgICBtc2cuaGVhZGVyLm9wY29kZSA9IE5OUEZTX01TR19QVVRBVFRSOw0K
KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2
LDI4KQ0KIAltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQorI2Vsc2UN
CisgICAgICAgIG1zZy5jcmVkLnVpZCA9IGN1cnJlbnRfdWlkKCk7DQorI2Vu
ZGlmDQogCW1zZy5jcmVkLnBhZyA9IG5ucGZzX2dldF9wYWcoKTsNCiAgICAg
ICAgIG1zZy5oYW5kbGUgPSB4bi0+aGFuZGxlOw0KICAgICAgICAgbm5wZnNf
aWF0dHIyYXR0cih4biwgYXR0ciwgJm1zZy5hdHRyKTsNCkBAIC0xNDIyLDYg
KzE2MzUsOCBAQCBubnBmc19yZWxlYXNlX2ZpbGUgKHN0cnVjdCBpbm9kZSAq
aW5vZGUsDQogICAgIHN0cnVjdCBubnBmc19ub2RlICp4bjsNCiAgICAgaW50
IGVycm9yID0gMDsNCiANCisgICAgKHZvaWQpbm5wZnNwOw0KKw0KICAgICBO
TlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfcmVsZWFzZV9maWxlXG4iKSk7
DQogDQogICAgIGVycm9yID0gbm5wZnNfaW5vZGVfdmFsaWQoaW5vZGUpOw0K
QEAgLTE0NTAsMTggKzE2NjUsMTggQEAgbm5wZnNfcmVsZWFzZV9maWxlIChz
dHJ1Y3QgaW5vZGUgKmlub2RlLA0KICAqDQogICovDQogDQotI2lmIExJTlVY
X1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTgpDQogc3Rh
dGljIGludA0KIG5ucGZzX2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9v
d25lcl90IGlkKQ0KLSNlbHNlDQotc3RhdGljIGludA0KLW5ucGZzX2ZsdXNo
KHN0cnVjdCBmaWxlICpmaWxlKQ0KLSNlbmRpZg0KIHsNCiAgICAgTk5QRlNE
RUIoWERFQlZOT1BTLCAoIm5ucGZzX2ZsdXNoXG4iKSk7DQogDQorI2lmIExJ
TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiAg
ICAgaWYgKGZpbGUgJiYgZmlsZS0+Zl9kZW50cnkgJiYgZmlsZS0+Zl9kZW50
cnktPmRfaW5vZGUpDQogCXJldHVybiBubnBmc19yZWxlYXNlX2ZpbGUoZmls
ZS0+Zl9kZW50cnktPmRfaW5vZGUsIGZpbGUpOw0KKyNlbHNlDQorICAgIGlm
IChmaWxlICYmIGZpbGUtPmZfcGF0aC5kZW50cnkgJiYgZmlsZS0+Zl9wYXRo
LmRlbnRyeS0+ZF9pbm9kZSkNCisJcmV0dXJuIG5ucGZzX3JlbGVhc2VfZmls
ZShmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlLCBmaWxlKTsNCisjZW5k
aWYNCiAgICAgZWxzZQ0KIAlyZXR1cm4gMDsNCiB9DQpAQCAtMTQ3MCw4ICsx
Njg1LDEzIEBAIG5ucGZzX2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlKQ0KICAq
IFJldHVybiAxIGlmIGBkZW50cnknIGlzIHN0aWxsIHZhbGlkLCBvdGhlcndp
c2UgMC4NCiAgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VS
TkVMX1ZFUlNJT04oMyw2LDApDQogc3RhdGljIGludA0KLW5ucGZzX2RfcmV2
YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBuYW1laWRh
dGEgKm5kKSANCitubnBmc19kX3JldmFsaWRhdGUoc3RydWN0IGRlbnRyeSAq
ZGVudHJ5LCBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkNCisjZWxzZQ0KK3N0YXRp
YyBpbnQNCitubnBmc19kX3JldmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqZGVu
dHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpDQorI2VuZGlmDQogew0KICAgICBz
dHJ1Y3QgaW5vZGUgKmlub2RlID0gREVOVFJZX1RPX0lOT0RFKGRlbnRyeSk7
DQogICAgIE5OUEZTREVCKFhERUJWTk9QUywgKCJubnBmc19kX3JldmFsaWRh
dGUgJXAgXCIlLipzXCIgKGlub2RlICVwKVxuIiwNCkBAIC0xNTE5LDkgKzE3
MzksMTUgQEAgbm5wZnNfZF9yZXZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKmRl
bnRyeQ0KICAgICByZXR1cm4gMDsNCiB9DQogDQorI2lmIExJTlVYX1ZFUlNJ
T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCiBzdGF0aWMNCiBp
bnQNCiBubnBmc19kX2RlbGV0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQor
I2Vsc2UNCitzdGF0aWMNCitpbnQNCitubnBmc19kX2RlbGV0ZShjb25zdCBz
dHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQorI2VuZGlmDQogew0KICAgICBzdHJ1
Y3QgaW5vZGUgKmlub2RlOw0KICAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG47
DQpAQCAtMTU0NiwxMSArMTc3MiwxNiBAQCBubnBmc19kX2RlbGV0ZShzdHJ1
Y3QgZGVudHJ5ICpkZW50cnkpDQogfQ0KIA0KIHN0YXRpYyBzc2l6ZV90DQot
bm5wZnNfc2VuZGZpbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCAqcHBv
cywgc2l6ZV90IGNvdW50LA0KLQkgICAgICAgcmVhZF9hY3Rvcl90IGFjdG9y
LCB2b2lkICp0YXJnZXQpDQorbm5wZnNfc3BsaWNlX3JlYWQoc3RydWN0IGZp
bGUgKmZpbGUsIGxvZmZfdCAqcHBvcywNCisJCSAgc3RydWN0IHBpcGVfaW5v
ZGVfaW5mbyAqcGlwZSwgc2l6ZV90IGNvdW50LA0KKwkJICB1bnNpZ25lZCBp
bnQgZmxhZ3MpDQogew0KICAgICBpbnQgZXJyb3IgPSAwOw0KKyNpZiBMSU5V
WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogICAg
IHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9k
ZTsNCisjZWxzZQ0KKyAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+
Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZTsNCisjZW5kaWYNCiAgICAgc3RydWN0
IG5ucGZzX25vZGUgKnhuID0gVk5PREVfVE9fWE5PREUoaW5vZGUpOw0KICAg
ICANCiAgICAgaWYgKHhuICE9IE5VTEwpDQpAQCAtMTU2MSw4ICsxNzkyLDcg
QEAgbm5wZnNfc2VuZGZpbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdA0K
IAlOTlBGU0RFQihYREVCVk5PUFMsICgibm5wZnNfc2VuZGZpbGU6IGRhdGEg
bm90IHZhbGlkICVkXG4iLCBlcnJvcikpOw0KIAlyZXR1cm4gZXJyb3I7DQog
ICAgIH0NCi0NCi0gICAgZXJyb3IgPSBnZW5lcmljX2ZpbGVfc2VuZGZpbGUo
ZmlsZSwgcHBvcywgY291bnQsIGFjdG9yLCB0YXJnZXQpOw0KKyAgICBlcnJv
ciA9IGZpbGUtPmZfb3AtPnNwbGljZV9yZWFkKGZpbGUsIHBwb3MsIHBpcGUs
IGNvdW50LCBmbGFncyk7DQogDQogICAgIE5OUEZTREVCKFhERUJWTk9QUywg
KCJubnBmc19zZW5kZmlsZTogZXJyb3IgPSAlZFxuIiwgZXJyb3IpKTsNCiAg
ICAgcmV0dXJuIGVycm9yOw0KQEAgLTE2MzksMzQgKzE4NjksMzEgQEAgbm5w
ZnNfd3JpdGVfYmFja3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsDQogCXN0cnVj
dCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gYmFja2ZpbGUtPmZfbWFwcGlu
ZzsNCiAJdW5zaWduZWQgbGVuID0gUEFHRV9DQUNIRV9TSVpFOw0KIAlzdHJ1
Y3QgcGFnZSAqYmFja3BhZ2U7DQorCXZvaWQgKmZzZGF0YTsNCiAJdW5zaWdu
ZWQgbG9uZyBvZmZzZXQ7DQogDQogCWludCBlcnJvcjsNCiAJDQotCWRvIHsN
Ci0JCWJhY2twYWdlID0gZ3JhYl9jYWNoZV9wYWdlKG1hcHBpbmcsIG5ucGZz
X2dldF9iYWNraW5kZXgocGFnZSkpOw0KLQkJaWYgKCFiYWNrcGFnZSkgew0K
LQkJCXByaW50aygibm5wZnNfd3JpdGVfYmFja3BhZ2U6IG5vIHBhZ2VcbiIp
Ow0KLQkJCXJldHVybiAtRUlPOw0KLQkJfQ0KKwkodm9pZClvZmZzZXQ7DQog
DQotCQllcnJvciA9IG1hcHBpbmctPmFfb3BzLT5wcmVwYXJlX3dyaXRlKGJh
Y2tmaWxlLCBiYWNrcGFnZSwNCi0JCQkJCQkgICAgICAwLCBsZW4pOw0KKwlk
byB7DQorCQllcnJvciA9IHBhZ2VjYWNoZV93cml0ZV9iZWdpbihiYWNrZmls
ZSwgbWFwcGluZywgMCwgbGVuLA0KKwkJCQkJICAgICAgQU9QX0ZMQUdfVU5J
TlRFUlJVUFRJQkxFLA0KKwkJCQkJICAgICAgJmJhY2twYWdlLCAmZnNkYXRh
KTsNCiAJCWlmICghZXJyb3IpIHsNCiAJCQljb3B5X2hpZ2hwYWdlKGJhY2tw
YWdlLCBwYWdlKTsNCiAJCQlmbHVzaF9kY2FjaGVfcGFnZShiYWNrcGFnZSk7
DQotCQkJZXJyb3IgPSBtYXBwaW5nLT5hX29wcy0+Y29tbWl0X3dyaXRlKGJh
Y2tmaWxlLCBiYWNrcGFnZSwNCi0JCQkJCQkJICAgICAwLCBsZW4pOw0KKwkJ
CWVycm9yID0gcGFnZWNhY2hlX3dyaXRlX2VuZChiYWNrZmlsZSwgbWFwcGlu
ZywgMCwgbGVuLA0KKwkJCQkJbGVuLCBiYWNrcGFnZSwgZnNkYXRhKTsNCisJ
CQlpZiAoZXJyb3IgPiAwKQ0KKwkJCQllcnJvciA9IDA7DQogCQl9DQogCQlp
ZiAoZXJyb3IgPT0gQU9QX1RSVU5DQVRFRF9QQUdFKSB7DQotCQkJcGFnZV9j
YWNoZV9yZWxlYXNlKGJhY2twYWdlKTsNCiAJCQljb250aW51ZTsNCiAJCX0N
CiAJfSB3aGlsZSAoMCk7DQogDQogCW9mZnNldCA9IHBhZ2Vfb2Zmc2V0KGJh
Y2twYWdlKTsNCi0JdW5sb2NrX3BhZ2UoYmFja3BhZ2UpOw0KLQlwYWdlX2Nh
Y2hlX3JlbGVhc2UoYmFja3BhZ2UpOw0KIA0KIAlpZiAoZXJyb3IpDQogCQlw
cmludGsoIm5ucGZzX3dyaXRlX2JhY2twYWdlOiBFSU9cbiIpOw0KQEAgLTE2
ODksMTMgKzE5MTYsOSBAQCBubnBmc19yZWFkX2JhY2twYWdlKHN0cnVjdCBw
YWdlICpwYWdlLCBzDQogCXN0cnVjdCBwYWdlICpiYWNrcGFnZTsNCiAJdW5z
aWduZWQgbG9uZyBvZmZzZXQ7DQogDQotI2lmIExJTlVYX1ZFUlNJT05fQ09E
RSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMTgpDQorCSh2b2lkKW9mZnNldDsN
CisNCiAJYmFja3BhZ2UgPSByZWFkX21hcHBpbmdfcGFnZShtYXBwaW5nLCBu
LCBiYWNrZmlsZSk7DQotI2Vsc2UNCi0JYmFja3BhZ2UgPSByZWFkX2NhY2hl
X3BhZ2UobWFwcGluZywgbiwNCi0JCQkJICAgKGZpbGxlcl90ICopbWFwcGlu
Zy0+YV9vcHMtPnJlYWRwYWdlLA0KLQkJCQkgICBiYWNrZmlsZSk7DQotI2Vu
ZGlmDQogCWlmICghSVNfRVJSKGJhY2twYWdlKSkgew0KIAkJd2FpdF9vbl9w
YWdlX2xvY2tlZChiYWNrcGFnZSk7DQogDQpAQCAtMTg0MiwxMSArMjA2NSwx
NyBAQCBubnBmc19wcmVwYXJlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBz
DQogDQogCWlmIChtb2RzaXplID4gaV9zaXplX3JlYWQoaW5vZGUpKSB7DQog
CQlpbnQgZXJyb3I7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F
TF9WRVJTSU9OKDMsOCwwKQ0KIAkJZXJyb3IgPSB2bXRydW5jYXRlKGlub2Rl
LCBtb2RzaXplKTsNCisjZWxzZQ0KKwkJZXJyb3IgPSBpbm9kZV9uZXdzaXpl
X29rKGlub2RlLCBtb2RzaXplKTsNCisJCWlmKCFlcnJvcikNCisJCQl0cnVu
Y2F0ZV9zZXRzaXplKGlub2RlLCBtb2RzaXplKTsNCisjZW5kaWYNCiAJCWlm
IChlcnJvcikgew0KIAkJCXByaW50aygibm5wZnNfcHJlcGFyZV93cml0ZTog
dHJ1bmNhdGUoJWxsdSkgLT4gJWRcbiIsDQogCQkJICAgICAgIG1vZHNpemUs
IC1lcnJvcik7DQotCQkJQlVHKCk7IC8qIFhYWCBub3QgY29ycmVjdCAqLw0K
KwkJCS8qQlVHKCk7Ki8gLyogWFhYIG5vdCBjb3JyZWN0ICovDQogCQl9DQog
CX0NCiANCkBAIC0xODcyLDggKzIxMDEsMzcgQEAgbm5wZnNfcHJlcGFyZV93
cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgcw0KIAlyZXR1cm4gcmV0Ow0KIH0N
CiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9O
KDIsNiwyOCkNCisNCitzdGF0aWMgaW50DQorbm5wZnNfd3JpdGVfYmVnaW4o
c3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBw
aW5nLCBsb2ZmX3QgcG9zLA0KK3Vuc2lnbmVkIGxlbiwgdW5zaWduZWQgZmxh
Z3MsIHN0cnVjdCBwYWdlICoqcGFnZXAsIHZvaWQgKipmc2RhdGEpDQorew0K
KwlzdHJ1Y3QgcGFnZSAqcGFnZTsNCisJcGdvZmZfdCBpbmRleDsNCisJdW5z
aWduZWQgZnJvbTsNCisNCisJaW5kZXggPSBwb3MgPj4gUEFHRV9DQUNIRV9T
SElGVDsNCisJZnJvbSA9IHBvcyAmIChQQUdFX0NBQ0hFX1NJWkUgLSAxKTsN
CisNCisjaWZkZWYgQU9QX0ZMQUdfTk9GUw0KKwlwYWdlID0gZ3JhYl9jYWNo
ZV9wYWdlX3dyaXRlX2JlZ2luKG1hcHBpbmcsIGluZGV4LCBmbGFncyk7DQor
I2Vsc2UNCisJcGFnZSA9IF9fZ3JhYl9jYWNoZV9wYWdlKG1hcHBpbmcsIGlu
ZGV4KTsNCisjZW5kaWYNCisJaWYgKHBhZ2UgPT0gTlVMTCkNCisJCXJldHVy
biAtRU5PTUVNOw0KKw0KKwkqcGFnZXAgPSBwYWdlOw0KKw0KKwlyZXR1cm4g
bm5wZnNfcHJlcGFyZV93cml0ZShmaWxlLCBwYWdlLCBmcm9tLCBmcm9tICsg
bGVuKTsNCit9DQorDQorI2VuZGlmDQorDQogc3RhdGljIGludA0KLW5ucGZz
X2NvbW1pdF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBhZ2Ug
KnBhZ2UsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKQ0KK25ucGZzX2Nv
bW1pdF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBhZ2UgKnBh
Z2UsDQorCQkgICB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykNCiB7DQog
ICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBwYWdlLT5tYXBwaW5nLT5ob3N0
Ow0KICAgICBsb2ZmX3QgcG9zID0gKChsb2ZmX3QpcGFnZS0+aW5kZXggPDwg
UEFHRV9DQUNIRV9TSElGVCkgKyB0bzsNCkBAIC0xOTAyLDE0ICsyMTYwLDUx
IEBAIG5ucGZzX2NvbW1pdF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3QN
CiAgICAgcmV0dXJuIDA7DQogfQ0KIA0KLSNpZiBMSU5VWF9WRVJTSU9OX0NP
REUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDE4KQ0KLWNvbnN0DQorI2lmIExJ
TlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQor
DQorc3RhdGljIGludA0KK25ucGZzX3dyaXRlX2VuZChzdHJ1Y3QgZmlsZSAq
ZmlsZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBw
b3MsDQorCQl1bnNpZ25lZCBsZW4sIHVuc2lnbmVkIGNvcGllZCwgc3RydWN0
IHBhZ2UgKnBhZ2UsIHZvaWQgKmZzZGF0YSkNCit7DQorCXVuc2lnbmVkIGZy
b20gPSBwb3MgJiAoUEFHRV9DQUNIRV9TSVpFIC0gMSk7DQorDQorCS8qIHpl
cm8gdGhlIHN0YWxlIHBhcnQgb2YgdGhlIHBhZ2UgaWYgd2UgZGlkIGEgc2hv
cnQgY29weSAqLw0KKwlpZiAoY29waWVkIDwgbGVuKSB7DQorI2lmIExJTlVY
X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KKwkJdm9p
ZCAqa2FkZHIgPSBrbWFwX2F0b21pYyhwYWdlLCBLTV9VU0VSMCk7DQorI2Vs
c2UNCisJCXZvaWQgKmthZGRyID0ga21hcF9hdG9taWMocGFnZSk7DQorI2Vu
ZGlmDQorCQltZW1zZXQoa2FkZHIgKyBmcm9tICsgY29waWVkLCAwLCBsZW4g
LSBjb3BpZWQpOw0KKwkJZmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7DQorI2lm
IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0K
KwkJa3VubWFwX2F0b21pYyhrYWRkciwgS01fVVNFUjApOw0KKyNlbHNlDQor
CQlrdW5tYXBfYXRvbWljKGthZGRyKTsNCiAjZW5kaWYNCisJfQ0KKw0KKwlu
bnBmc19jb21taXRfd3JpdGUoZmlsZSwgcGFnZSwgZnJvbSwgZnJvbSArIGNv
cGllZCk7DQorDQorCXVubG9ja19wYWdlKHBhZ2UpOw0KKwlwYWdlX2NhY2hl
X3JlbGVhc2UocGFnZSk7DQorDQorCXJldHVybiBjb3BpZWQ7DQorfQ0KKw0K
KyNlbmRpZg0KKw0KK2NvbnN0DQogc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3Bl
cmF0aW9ucyBubnBmc19hb3BzID0gew0KIAkucmVhZHBhZ2UgPSBubnBmc19y
ZWFkcGFnZSwNCiAJLndyaXRlcGFnZSA9IG5ucGZzX3dyaXRlcGFnZSwNCisj
aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDI4
KQ0KIAkucHJlcGFyZV93cml0ZSA9IG5ucGZzX3ByZXBhcmVfd3JpdGUsDQog
CS5jb21taXRfd3JpdGUgPSBubnBmc19jb21taXRfd3JpdGUsDQorI2Vsc2UN
CisJLndyaXRlX2JlZ2luID0gbm5wZnNfd3JpdGVfYmVnaW4sDQorCS53cml0
ZV9lbmQgPSBubnBmc193cml0ZV9lbmQsDQorI2VuZGlmDQogfTsNCiANCiAv
Kg0KQEAgLTE5MTcsMjEgKzIyMTIsMzAgQEAgc3RydWN0IGFkZHJlc3Nfc3Bh
Y2Vfb3BlcmF0aW9ucyBubnBmc19hbw0KICAqLw0KIA0KIHN0cnVjdCBmaWxl
X29wZXJhdGlvbnMgbm5wZnNfZmlsZV9vcGVyYXRpb25zID0gew0KKyNpZiBM
SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE2LDApDQog
ICAgIC5haW9fcmVhZAk9IG5ucGZzX2Fpb19yZWFkLA0KICAgICAuYWlvX3dy
aXRlCT0gbm5wZnNfYWlvX3dyaXRlLA0KKyNlbHNlDQorICAgIC5yZWFkX2l0
ZXIJPSBubnBmc19yZWFkX2l0ZXIsDQorICAgIC53cml0ZV9pdGVyCT0gbm5w
ZnNfd3JpdGVfaXRlciwNCisjZW5kaWYNCiAgICAgLm1tYXAJPSBubnBmc19m
aWxlX21tYXAsDQogICAgIC5vcGVuCT0gbm5wZnNfb3BlbiwNCiAgICAgLmZs
dXNoCT0gbm5wZnNfZmx1c2gsDQogICAgIC5yZWxlYXNlCT0gbm5wZnNfcmVs
ZWFzZV9maWxlLA0KICAgICAuZnN5bmMJPSBubnBmc19mc3luYywNCi0gICAg
LnNlbmRmaWxlCT0gbm5wZnNfc2VuZGZpbGUsDQorICAgIC5zcGxpY2VfcmVh
ZCA9IG5ucGZzX3NwbGljZV9yZWFkLA0KIH07DQogDQogc3RydWN0IGZpbGVf
b3BlcmF0aW9ucyBubnBmc19kZWFkX29wZXJhdGlvbnMgPSB7DQogfTsNCiAN
CiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG5ucGZzX2Rpcl9vcGVyYXRpb25z
ID0gew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lP
TigzLDExLDApDQogICAgIC5yZWFkZGlyCT0gbm5wZnNfcmVhZGRpciwNCisj
ZWxzZQ0KKyAgICAuaXRlcmF0ZSAgICA9IG5ucGZzX2l0ZXJhdGUsDQorI2Vu
ZGlmDQogICAgIC5mbHVzaAk9IG5ucGZzX2ZsdXNoLA0KIH07DQogDQpkaWZm
IC11cHJOIC1Ybm9kaWZmLnR4dCBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5w
ZnNfbG9hZC5jIGFybGEtZm9yLWxpbnV4LTQuNC9ubnBmcy9saW51eC9ubnBm
c19sb2FkLmMNCi0tLSBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5wZnNfbG9h
ZC5jCTIwMDYtMTAtMzEgMTE6MDI6NDEuMDAwMDAwMDAwICswMTAwDQorKysg
YXJsYS1mb3ItbGludXgtNC40L25ucGZzL2xpbnV4L25ucGZzX2xvYWQuYwky
MDE2LTAxLTEzIDIwOjE0OjAyLjgzMDEwMzUxNyArMDEwMA0KQEAgLTU0LDcg
KzU0LDExIEBAIGV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG5ucGZz
X2ZvcHMNCiANCiBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBubnBmc19mc190
eXBlID0gew0KICAgICAgICBuYW1lOiAgICAgICAgICAgIm5ucGZzIiwNCisj
aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM5
KQ0KICAgICAgICBnZXRfc2I6ICAgICAgICAgbm5wZnNfZ2V0X3NiLA0KKyNl
bHNlDQorICAgICAgIG1vdW50OiAgICAgICAgICBubnBmc19tb3VudCwNCisj
ZW5kaWYNCiAgICAgICAga2lsbF9zYjogICAgICAgIGtpbGxfbGl0dGVyX3N1
cGVyLA0KICAgICAgICBvd25lcjogICAgICAgICAgVEhJU19NT0RVTEUsDQog
fTsNCmRpZmYgLXVwck4gLVhub2RpZmYudHh0IGFybGEtMC45MC9ubnBmcy9s
aW51eC9ubnBmc19tZXNzYWdlLmMgYXJsYS1mb3ItbGludXgtNC40L25ucGZz
L2xpbnV4L25ucGZzX21lc3NhZ2UuYw0KLS0tIGFybGEtMC45MC9ubnBmcy9s
aW51eC9ubnBmc19tZXNzYWdlLmMJMjAwNy0wMS0wOSAxNzozMzozMS4wMDAw
MDAwMDAgKzAxMDANCisrKyBhcmxhLWZvci1saW51eC00LjQvbm5wZnMvbGlu
dXgvbm5wZnNfbWVzc2FnZS5jCTIwMTYtMDEtMTQgMTY6NTA6MTUuMTM5NTc1
MTUxICswMTAwDQpAQCAtNDUsNyArNDUsNyBAQA0KICNpbmNsdWRlIDxsaW51
eC9tb3VudC5oPg0KIA0KICNpZmRlZiBSQ1NJRA0KLVJDU0lEKCIkSWQ6IG5u
cGZzX21lc3NhZ2UuYyx2IDEuMTQzLjIuMSAyMDA3LzAxLzA5IDE2OjMzOjMx
IHRvbCBFeHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX21lc3NhZ2UuYyx2
IDEuMTQ1IDIwMTAvMDgvMDggMjA6NDM6MDUgdG9sIEV4cCAkIik7DQogI2Vu
ZGlmDQogDQogc3RhdGljIHZvaWQNCkBAIC01NSw5ICs1NSwxNSBAQCBzdGF0
aWMgdm9pZA0KIG5ucGZzX2RfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRlbnRy
eSkNCiB7DQogICAgIE5OUEZTREVCKFhERUJNU0csICgibm5wZnNfZF9yZW1v
dmUgJXBcbiIsIGRlbnRyeSkpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg
PCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQogICAgIHNwaW5fbG9jaygmZGNh
Y2hlX2xvY2spOw0KICAgICBkZ2V0X2xvY2tlZChkZW50cnkpOw0KICAgICBz
cGluX3VubG9jaygmZGNhY2hlX2xvY2spOw0KKyNlbHNlDQorICAgIHNwaW5f
bG9jaygmZGVudHJ5LT5kX2xvY2spOw0KKyAgICBkZ2V0X2Rsb2NrKGRlbnRy
eSk7DQorICAgIHNwaW5fdW5sb2NrKCZkZW50cnktPmRfbG9jayk7DQorI2Vu
ZGlmDQogICAgIGRfZHJvcChkZW50cnkpOw0KICAgICBkcHV0KGRlbnRyeSk7
DQogfQ0KQEAgLTEyMSw3ICsxMjcsMTEgQEAgbm5wZnNfbWVzc2FnZV9pbnN0
YWxsbm9kZShzdHJ1Y3Qgbm5wZnMgKg0KICAgICBzdHJ1Y3QgaW5vZGUgKmRp
LCAqaW5vZGU7DQogICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCA9IE5VTEw7
DQogICAgIHN0cnVjdCBxc3RyIHNxc3RyOw0KKyNpZiBMSU5VWF9WRVJTSU9O
X0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgc3RydWN0IGxp
c3RfaGVhZCAqYWxpYXM7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwg
S0VSTkVMX1ZFUlNJT04oMyw5LDApDQorICAgIHN0cnVjdCBobGlzdF9ub2Rl
ICphbGlhczsNCisjZW5kaWYNCiAgICAgDQogICAgIE5OUEZTREVCKFhERUJN
U0csICgibm5wZnNfbWVzc2FnZV9pbnN0YWxsbm9kZVxuIikpOw0KICAgICAN
CkBAIC0xNzYsMTIgKzE4NiwyNiBAQCBubnBmc19tZXNzYWdlX2luc3RhbGxu
b2RlKHN0cnVjdCBubnBmcyAqDQogICAgICAqDQogICAgICAqLw0KICAgICAN
CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2
LDApDQogICAgIGFsaWFzID0gZGktPmlfZGVudHJ5Lm5leHQ7DQogICAgIHdo
aWxlIChhbGlhcyAhPSAmZGktPmlfZGVudHJ5KSB7DQogCXBhcmVudCA9IGxp
c3RfZW50cnkoYWxpYXMsIHN0cnVjdCBkZW50cnksIGRfYWxpYXMpOw0KLQlz
cGluX2xvY2soJmRjYWNoZV9sb2NrKTsNCi0JZGdldF9sb2NrZWQocGFyZW50
KTsNCi0Jc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCisjZWxpZiBMSU5V
WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDksMCkNCisgICAg
aGxpc3RfZm9yX2VhY2hfZW50cnkocGFyZW50LCBhbGlhcywgJmRpLT5pX2Rl
bnRyeSwgZF9hbGlhcykgew0KKyNlbGlmIExJTlVYX1ZFUlNJT05fQ09ERSA8
IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisgICAgaGxpc3RfZm9yX2VhY2hf
ZW50cnkocGFyZW50LCAmZGktPmlfZGVudHJ5LCBkX2FsaWFzKSB7DQorI2Vs
c2UNCisgICAgaGxpc3RfZm9yX2VhY2hfZW50cnkocGFyZW50LCAmZGktPmlf
ZGVudHJ5LCBkX3UuZF9hbGlhcykgew0KKyNlbmRpZg0KKyNpZiBMSU5VWF9W
RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzgpDQorICAgIHNw
aW5fbG9jaygmZGNhY2hlX2xvY2spOw0KKyAgICBkZ2V0X2xvY2tlZChwYXJl
bnQpOw0KKyAgICBzcGluX3VubG9jaygmZGNhY2hlX2xvY2spOw0KKyNlbHNl
DQorICAgIHNwaW5fbG9jaygmcGFyZW50LT5kX2xvY2spOw0KKyAgICBkZ2V0
X2Rsb2NrKHBhcmVudCk7DQorICAgIHNwaW5fdW5sb2NrKCZwYXJlbnQtPmRf
bG9jayk7DQorI2VuZGlmDQogCWRlbnRyeSA9IGRfbG9va3VwKHBhcmVudCwg
JnNxc3RyKTsNCiAJTk5QRlNERUIoWERFQk1TRywNCiAJCSAoIm5ucGZzX21l
c3NhZ2VfaW5zdGFsbG5vZGU6IGFsaWFzICVwLCBsb29rdXAgJXBcbiIsDQpA
QCAtMjMzLDcgKzI1Nyw5IEBAIG5ucGZzX21lc3NhZ2VfaW5zdGFsbG5vZGUo
c3RydWN0IG5ucGZzICoNCiAJDQogCWRwdXQoZGVudHJ5KTsNCiAJZGVudHJ5
ID0gTlVMTDsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF
UlNJT04oMyw2LDApDQogCWFsaWFzID0gYWxpYXMtPm5leHQ7DQorI2VuZGlm
DQogCWRwdXQocGFyZW50KTsNCiAgICAgfQ0KICAgICBOTlBGU0RFQihYREVC
TVNHLCAoIm5ucGZzX21lc3NhZ2VfaW5zdGFsbG5vZGU6IGRvbmUgaW5zdGFs
bGluZ1xuIikpOw0KQEAgLTI2OCw3ICsyOTQsMTMgQEAgbm5wZnNfbWVzc2Fn
ZV9pbnN0YWxsYXR0cihzdHJ1Y3Qgbm5wZnMgKg0KICAgICB9DQogDQogICAg
IGlub2RlID0gWE5PREVfVE9fVk5PREUodCk7DQorI2lmIExJTlVYX1ZFUlNJ
T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICBkZW50cnkg
PSBsaXN0X2VudHJ5KGlub2RlLT5pX2RlbnRyeS5uZXh0LCBzdHJ1Y3QgZGVu
dHJ5LCBkX2FsaWFzKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL
RVJORUxfVkVSU0lPTigzLDE5LDApDQorICAgIGRlbnRyeSA9IGhsaXN0X2Vu
dHJ5KGlub2RlLT5pX2RlbnRyeS5maXJzdCwgc3RydWN0IGRlbnRyeSwgZF9h
bGlhcyk7DQorI2Vsc2UNCisgICAgZGVudHJ5ID0gaGxpc3RfZW50cnkoaW5v
ZGUtPmlfZGVudHJ5LmZpcnN0LCBzdHJ1Y3QgZGVudHJ5LCBkX3UuZF9hbGlh
cyk7DQorI2VuZGlmDQogICAgIA0KICAgICBOTlBGU0RFQihYREVCTVNHLCAo
Im5ucGZzX21lc3NhZ2VfaW5zdGFsbGF0dHIgbmFtZTolc1xuIiwNCiAJCSAg
ICAgICBkZW50cnktPmRfbmFtZS5uYW1lKSk7DQpAQCAtMzk2LDE3ICs0Mjgs
MzYgQEAgbm5wZnNfbWVzc2FnZV9pbnN0YWxsZGF0YShzdHJ1Y3Qgbm5wZnMg
Kg0KIHN0YXRpYyB2b2lkDQogY2xlYXJfYWxsX2NoaWxkcmVuIChzdHJ1Y3Qg
aW5vZGUgKmlub2RlLCBpbnQgcGFyZW50KQ0KIHsNCisgICAgc3RydWN0IGRl
bnRyeSAqZGVudHJ5Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO
RUxfVkVSU0lPTigzLDYsMCkNCiAgICAgc3RydWN0IGxpc3RfaGVhZCAqYWxp
YXM7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ
T04oMyw5LDApDQorICAgIHN0cnVjdCBobGlzdF9ub2RlICphbGlhczsNCisj
ZW5kaWYNCiANCiAgYWdhaW46DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8
IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCiAgICAgc3Bpbl9sb2NrKCZkY2Fj
aGVfbG9jayk7DQorI2Vsc2UNCisgICAgLyogVE9ETzogZmluZCB0aGUgZGVu
dHJ5IHRvIGxvY2sgKi8NCisgICAgLypzcGluX2xvY2soJmRlbnRyeS0+ZF9s
b2NrKTsqLw0KKyNlbmRpZg0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL
RVJORUxfVkVSU0lPTigzLDYsMCkNCiAgICAgYWxpYXMgPSBpbm9kZS0+aV9k
ZW50cnkubmV4dDsNCiAgICAgd2hpbGUgKGFsaWFzICE9ICZpbm9kZS0+aV9k
ZW50cnkpIHsNCi0Jc3RydWN0IGRlbnRyeSAqZGVudHJ5Ow0KKyNlbGlmIExJ
TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsOSwwKQ0KKyAg
ICBobGlzdF9mb3JfZWFjaF9lbnRyeShkZW50cnksIGFsaWFzLCAmaW5vZGUt
PmlfZGVudHJ5LCBkX2FsaWFzKSB7DQorI2VsaWYgTElOVVhfVkVSU0lPTl9D
T0RFIDwgS0VSTkVMX1ZFUlNJT04oMywxOSwwKQ0KKyAgICBobGlzdF9mb3Jf
ZWFjaF9lbnRyeShkZW50cnksICZpbm9kZS0+aV9kZW50cnksIGRfYWxpYXMp
IHsNCisjZWxzZQ0KKyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeShkZW50cnks
ICZpbm9kZS0+aV9kZW50cnksIGRfdS5kX2FsaWFzKSB7DQorI2VuZGlmDQog
CXN0cnVjdCBsaXN0X2hlYWQgKnN1YmRpcnM7DQogCXN0cnVjdCBubnBmc19k
ZW50cnlfZGF0YSAqeGQ7DQogCQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUg
PCBLRVJORUxfVkVSU0lPTigzLDYsMCkNCiAJZGVudHJ5ID0gbGlzdF9lbnRy
eShhbGlhcywgc3RydWN0IGRlbnRyeSwgZF9hbGlhcyk7DQorI2VuZGlmDQog
CWlmIChkZW50cnkgPT0gTlVMTCkgew0KIAkgICAgcHJpbnRrKEtFUk5fRU1F
UkcgIk5OUEZTIFBhbmljOiBkZW50cnkgaW4gYWxpYXMgbGlzdCBpcyBudWxs
XG4iKTsNCiAJICAgIGJyZWFrOw0KQEAgLTQyMiw3ICs0NzMsMTEgQEAgY2xl
YXJfYWxsX2NoaWxkcmVuIChzdHJ1Y3QgaW5vZGUgKmlub2RlLA0KIAlzdWJk
aXJzID0gZGVudHJ5LT5kX3N1YmRpcnMubmV4dDsNCiAJd2hpbGUgKHN1YmRp
cnMgIT0gJmRlbnRyeS0+ZF9zdWJkaXJzKSB7DQogCSAgICBzdHJ1Y3QgbGlz
dF9oZWFkICp0bXAgPSBzdWJkaXJzOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP
REUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogCSAgICBzdHJ1Y3QgZGVu
dHJ5ICpjaGlsZCA9IGxpc3RfZW50cnkodG1wLCBzdHJ1Y3QgZGVudHJ5LCBk
X3UuZF9jaGlsZCk7DQorI2Vsc2UNCisJICAgIHN0cnVjdCBkZW50cnkgKmNo
aWxkID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCBkZW50cnksIGRfY2hpbGQp
Ow0KKyNlbmRpZg0KIAkgICAgc3ViZGlycyA9IHRtcC0+bmV4dDsNCiAJICAg
IE5OUEZTREVCKFhERUJNU0csICgiY2xlYXJfYWxsX2NoaWxkcmVuIGNoaWxk
OiAlLipzIGlub2RlOiAlcC8lcCAiDQogCQkJICAgICAgICJkY291bnQ6ICVk
IGFsaWFzZXM6XG4iLA0KQEAgLTQ0MiwxNCArNDk3LDI2IEBAIGNsZWFyX2Fs
bF9jaGlsZHJlbiAoc3RydWN0IGlub2RlICppbm9kZSwNCiANCiAJICAgIC8q
IFRocm93IGltbWVkaWF0ZWx5ICovDQogCSAgICBpZiAobm5wZnNfZGNvdW50
KGNoaWxkKSA9PSAwKSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF
Uk5FTF9WRVJTSU9OKDIsNiwzOCkNCiAJICAgICAgICBzcGluX3VubG9jaygm
ZGNhY2hlX2xvY2spOw0KKyNlbHNlDQorCQkvKiBUT0RPOiB1bmxvY2sgdGhl
IGRlbnRyeSAqLw0KKwkJLypzcGluX3VubG9jaygmZGVudHJ5LT5kX2xvY2sp
OyovDQorI2VuZGlmDQogCQlubnBmc19kX3JlbW92ZShjaGlsZCk7DQogCQln
b3RvIGFnYWluOw0KIAkgICAgfQ0KIAl9DQorI2lmIExJTlVYX1ZFUlNJT05f
Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KIAlhbGlhcyA9IGFsaWFz
LT5uZXh0Ow0KKyNlbmRpZg0KICAgICB9DQorI2lmIExJTlVYX1ZFUlNJT05f
Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOCkNCiAgICAgc3Bpbl91bmxv
Y2soJmRjYWNoZV9sb2NrKTsNCisjZWxzZQ0KKyAgICAvKiBUT0RPOiB1bmxv
Y2sgdGhlIGRlbnRyeSAqLw0KKyAgICAvKnNwaW5fdW5sb2NrKCZkZW50cnkt
PmRfbG9jayk7Ki8NCisjZW5kaWYNCiB9DQogDQogc3RhdGljIHZvaWQNCkBA
IC02MDUsMTIgKzY3MiwxMCBAQCBnY19ibG9jayhzdHJ1Y3Qgbm5wZnMgKm5u
cGZzcCwNCiAgICAgfQ0KIA0KICAgICBpZiAoIW5ucGZzX2Jsb2NrX2hhdmVf
cCh4biwgb2Zmc2V0KSkgew0KLSNpZiAwICAgLyogaGFwcGVucyB3aGVuIGRh
ZW1vbiBzZW5kcyBzZXZlcmFsIG1lc3NhZ2VzIGZvciBzYW1lIGJsb2NrICov
DQogCXByaW50ayhLRVJOX0VNRVJHICJOTlBGUy9nY19ibG9jazogIg0KIAkg
ICAgICAgIkVOT0VOVCAoJWQsJWQsJWQsJWQpIDB4JWxseFxuIiwgDQogCSAg
ICAgICB4bi0+aGFuZGxlLmEsIHhuLT5oYW5kbGUuYiwgeG4tPmhhbmRsZS5j
LCB4bi0+aGFuZGxlLmQsIA0KIAkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9u
ZylvZmZzZXQpOw0KLSNlbmRpZg0KIAlyZXR1cm4gLUVOT0VOVDsNCiAgICAg
fQ0KIA0KQEAgLTcyMSwxMiArNzg2LDIyIEBAIG5ucGZzX21lc3NhZ2VfdmVy
c2lvbihzdHJ1Y3Qgbm5wZnMgKm5ucGYNCiANCiAgICAgLyogc2FuaXR5IGNo
ZWNrIGJlZm9yZSB3ZSBsb29rIGF0IGl0ICovDQogICAgIGlmIChzaXplID09
IHNpemVvZigqbWVzc2FnZSkgJiYgbWVzc2FnZS0+dmVyc2lvbiA9PSBOTlBG
U19WRVJTSU9OKSB7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F
TF9WRVJTSU9OKDMsMTksMCkNCiAJc3RydWN0IG5hbWVpZGF0YSBuZDsNCisj
ZWxzZQ0KKwlzdHJ1Y3QgcGF0aCBwYXRoOw0KKyNlbmRpZg0KIAlpbnQgZXJy
b3I7DQogDQogCXVpbnQ2NF90IGJsb2Nrc2l6ZSA9IG1lc3NhZ2UtPmJsb2Nr
c2l6ZTsNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF
UlNJT04oMiw2LDM5KQ0KIAllcnJvciA9IHBhdGhfbG9va3VwKCIuIiwgMCwg
Jm5kKTsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS
U0lPTigzLDE5LDApDQorCWVycm9yID0ga2Vybl9wYXRoKCIuIiwgMCwgJm5k
LnBhdGgpOw0KKyNlbHNlDQorCWVycm9yID0ga2Vybl9wYXRoKCIuIiwgMCwg
JnBhdGgpOw0KKyNlbmRpZg0KIAlpZiAoZXJyb3IpIHsNCiAJICAgIC8qDQog
CSAgICAgKiBCYWQgY2FjaGUgcm9vdCwganVzdCByZXR1cm4uDQpAQCAtNzM3
LDEyICs4MTIsMjMgQEAgbm5wZnNfbWVzc2FnZV92ZXJzaW9uKHN0cnVjdCBu
bnBmcyAqbm5wZg0KIAkJICAgIm5ucGZzX21lc3NhZ2VfdmVyc2lvbiBmYWls
ZWQgcGF0aF9sb29rdXAsICINCiAJCSAgICJlcnJubzogJWRcbiIsIGVycm9y
KTsNCiAJfSBlbHNlIHsNCi0JICAgIG5ucGZzcC0+Y2FjaGVyb290ID0gbW50
Z2V0KG5kLm1udCk7DQotCSAgICBubnBmc3AtPmNhY2hlZGlyID0gZGdldChu
ZC5kZW50cnkpOw0KLQkgICAgcGF0aF9yZWxlYXNlKCZuZCk7DQorI2lmIExJ
TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisJ
ICAgIG5ucGZzcC0+Y2FjaGVyb290ID0gbW50Z2V0KG5kLnBhdGgubW50KTsN
CisJICAgIG5ucGZzcC0+Y2FjaGVkaXIgPSBkZ2V0KG5kLnBhdGguZGVudHJ5
KTsNCisJICAgIHBhdGhfcHV0KCZuZC5wYXRoKTsNCisjZWxzZQ0KKwkgICAg
bm5wZnNwLT5jYWNoZXJvb3QgPSBtbnRnZXQocGF0aC5tbnQpOw0KKwkgICAg
bm5wZnNwLT5jYWNoZWRpciA9IGRnZXQocGF0aC5kZW50cnkpOw0KKwkgICAg
cGF0aF9wdXQoJnBhdGgpOw0KKyNlbmRpZg0KIAkgICAgDQorI2lmIExJTlVY
X1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogCSAg
ICBubnBmc3AtPnVpZCA9IGN1cnJlbnQtPmZzdWlkOw0KIAkgICAgbm5wZnNw
LT5naWQgPSBjdXJyZW50LT5mc2dpZDsNCisjZWxzZQ0KKyAgICAgICAgICAg
IG5ucGZzcC0+dWlkID0gY3VycmVudF9mc3VpZCgpOw0KKyAgICAgICAgICAg
IG5ucGZzcC0+Z2lkID0gY3VycmVudF9mc2dpZCgpOw0KKyNlbmRpZg0KIA0K
IAkgICAgLyogWFhYIHdlIHNob3VsZCB2YWxpZGF0ZSB0aGVzZSB2YWx1ZXMg
Ki8NCiAJICAgIG5ucGZzX2Jsb2Nrc2l6ZSA9IGJsb2Nrc2l6ZTsNCmRpZmYg
LXVwck4gLVhub2RpZmYudHh0IGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBm
c19ub2RlLmMgYXJsYS1mb3ItbGludXgtNC40L25ucGZzL2xpbnV4L25ucGZz
X25vZGUuYw0KLS0tIGFybGEtMC45MC9ubnBmcy9saW51eC9ubnBmc19ub2Rl
LmMJMjAwNy0wMS0wMyAxNDo1MjowMi4wMDAwMDAwMDAgKzAxMDANCisrKyBh
cmxhLWZvci1saW51eC00LjQvbm5wZnMvbGludXgvbm5wZnNfbm9kZS5jCTIw
MTYtMDEtMTQgMTY6NTE6MTEuNDIwNTc4NTQ0ICswMTAwDQpAQCAtMTMyLDcg
KzEzMiwxMiBAQCBubnBmc19zZXRzaXplKHN0cnVjdCBpbm9kZSAqaW5vZGUs
IHVpbnQ2DQogCXByaW50aygibm5wZnNfc2V0c2l6ZTogdHJ1bmNhdGluZyBA
MHglbGx1XG4iLA0KIAkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylzaXpl
KTsNCiAjZW5kaWYNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM
X1ZFUlNJT04oMyw4LDApDQogCXZtdHJ1bmNhdGUoaW5vZGUsIHNpemUpOyAv
KiBYWFggcmV0dmFsICovDQorI2Vsc2UNCisJaWYoIWlub2RlX25ld3NpemVf
b2soaW5vZGUsIHNpemUpKQ0KKwkgICAgdHJ1bmNhdGVfc2V0c2l6ZShpbm9k
ZSwgc2l6ZSk7DQorI2VuZGlmDQogCW5ucGZzX2Jsb2NrX3RydW5jYXRlKHhu
LCBzaXplKTsNCiAgICAgfQ0KIH0NCkBAIC0xNTAsOSArMTU1LDE4IEBAIG5u
cGZzX2F0dHIyaW5vZGUoY29uc3Qgc3RydWN0IG5ucGZzX2F0dHINCiAJc3Ry
dWN0IHRpbWVzcGVjIG5vdGltZSA9IHswfTsNCiANCiAJaW5vZGUtPmlfbW9k
ZSAgID0gMDsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF
UlNJT04oMywxNCwwKQ0KIAlpbm9kZS0+aV91aWQgICAgPSAwOw0KIAlpbm9k
ZS0+aV9naWQgICAgPSAwOw0KKyNlbHNlDQorCWlub2RlLT5pX3VpZCAgICA9
IEtVSURUX0lOSVQoMCk7DQorCWlub2RlLT5pX2dpZCAgICA9IEtHSURUX0lO
SVQoMCk7DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtF
Uk5FTF9WRVJTSU9OKDMsMiwwKQ0KIAlpbm9kZS0+aV9ubGluayAgPSAxOw0K
KyNlbHNlDQorCXNldF9ubGluayhpbm9kZSwgMSk7DQorI2VuZGlmDQogCWlu
b2RlLT5pX2F0aW1lICA9IG5vdGltZTsNCiAJaW5vZGUtPmlfbXRpbWUgID0g
bm90aW1lOw0KIAlpbm9kZS0+aV9jdGltZSAgPSBub3RpbWU7DQpAQCAtMTY5
LDcgKzE4MywxMSBAQCBubnBmc19hdHRyMmlub2RlKGNvbnN0IHN0cnVjdCBu
bnBmc19hdHRyDQogICAgIGlmIChYQV9WQUxJRF9HSUQoYXR0cikpDQogCWlu
b2RlLT5pX2dpZCAgICA9IGF0dHItPnhhX2dpZDsNCiAgICAgaWYgKFhBX1ZB
TElEX05MSU5LKGF0dHIpKQ0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL
RVJORUxfVkVSU0lPTigzLDIsMCkNCiAJaW5vZGUtPmlfbmxpbmsgID0gYXR0
ci0+eGFfbmxpbms7DQorI2Vsc2UNCisJc2V0X25saW5rKGlub2RlLCBhdHRy
LT54YV9ubGluayk7DQorI2VuZGlmDQogICAgIA0KICAgICBpZiAoWEFfVkFM
SURfU0laRShhdHRyKSkgew0KIAlubnBmc19zZXRzaXplKGlub2RlLCBhdHRy
LT54YV9zaXplKTsNCkBAIC01MTAsMTIgKzUyOCwyNCBAQCBubnBmc19oYXNf
cGFnKGNvbnN0IHN0cnVjdCBubnBmc19ub2RlICp4DQogaW50DQogbm5wZnNf
bm9kZV91c2VycyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQ0KIHsNCisjaWYgTElO
VVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw2LDApDQogICAg
IHN0cnVjdCBsaXN0X2hlYWQgKnBvczsNCisjZWxzZQ0KKyAgICBzdHJ1Y3Qg
aGxpc3Rfbm9kZSAqcG9zOw0KKyNlbmRpZg0KICAgICBpbnQgdXNlcnMgPSAw
Ow0KICAgICANCiAgICAgLyogWFhYIHRoaXMgc2hvdWxkIHByb2JhYmx5IGJl
IHByb3RlY3RlZCBzb21laG93ICovDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E
RSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0KICAgICBsaXN0X2Zvcl9lYWNo
KHBvcywgJmlub2RlLT5pX2RlbnRyeSkgew0KKyNlbHNlDQorICAgIGhsaXN0
X2Zvcl9lYWNoKHBvcywgJmlub2RlLT5pX2RlbnRyeSkgew0KKyNlbmRpZg0K
KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5
LDApDQogCXN0cnVjdCBkZW50cnkgKmRlbnRyeSA9IGxpc3RfZW50cnkocG9z
LCBzdHJ1Y3QgZGVudHJ5LCBkX2FsaWFzKTsNCisjZWxzZQ0KKwlzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnkgPSBsaXN0X2VudHJ5KHBvcywgc3RydWN0IGRlbnRy
eSwgZF91LmRfYWxpYXMpOw0KKyNlbmRpZg0KIAlpZiAobm5wZnNfZGNvdW50
KGRlbnRyeSkgPiAxKQ0KIAkgICAgdXNlcnMrKzsNCiAgICAgfQ0KZGlmZiAt
dXByTiAtWG5vZGlmZi50eHQgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZz
X3N5c2NhbGxzLmMgYXJsYS1mb3ItbGludXgtNC40L25ucGZzL2xpbnV4L25u
cGZzX3N5c2NhbGxzLmMNCi0tLSBhcmxhLTAuOTAvbm5wZnMvbGludXgvbm5w
ZnNfc3lzY2FsbHMuYwkyMDA3LTAxLTAzIDE1OjI2OjI3LjAwMDAwMDAwMCAr
MDEwMA0KKysrIGFybGEtZm9yLWxpbnV4LTQuNC9ubnBmcy9saW51eC9ubnBm
c19zeXNjYWxscy5jCTIwMTYtMDEtMTQgMTc6MDA6MjAuNjQxNjExNjU1ICsw
MTAwDQpAQCAtNDIsNyArNDIsOSBAQA0KICNpbmNsdWRlIDxubnBmcy9ubnBm
c19zeXNjYWxscy5oPg0KICNpbmNsdWRlIDxubnBmcy9ubnBmc19jb21tb24u
aD4NCiAjaW5jbHVkZSA8bGludXgvZmlsZS5oPg0KKyNpZiBMSU5VWF9WRVJT
SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzkpDQogI2luY2x1ZGUg
PGxpbnV4L3NtcF9sb2NrLmg+DQorI2VuZGlmDQogI2luY2x1ZGUgPGxpbnV4
L3NtcC5oPg0KICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+DQogDQpAQCAt
NTAsNiArNTIsMTEgQEANCiAjaW5jbHVkZSA8bGludXgvc2VjdXJpdHkuaD4N
CiAjZW5kaWYNCiANCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5F
TF9WRVJTSU9OKDMsNywwKQ0KKyN1bmRlZiBTWVNDQUxMSEFDSw0KKy8qIHRo
ZSBtZXRob2QgdG8gcmVhZCAnbG93ZXJfYm91bmQnIGRvZXMgbm90IHdvcmsg
b24ga2VybmVsIDMuNyBhbmQgbGF0ZXIsIHNlIG5ucGZzX3N5c2NhbGxzLWxv
c3NhZ2UuYyAqLw0KKyNlbmRpZg0KKw0KICNpZiAwDQogI2lmZGVmIENPTkZJ
R19DT01QQVQNCiAjaW5jbHVkZSA8bGludXgvaW9jdGwzMi5oPg0KQEAgLTY0
LDcgKzcxLDcgQEANCiAjdW5kZWYgTkVFRF9WSUNFSU9DVEwzMg0KIA0KICNp
ZmRlZiBSQ1NJRA0KLVJDU0lEKCIkSWQ6IG5ucGZzX3N5c2NhbGxzLmMsdiAx
LjEyMiAyMDA3LzAxLzAzIDE0OjI2OjI3IHRvbCBFeHAgJCIpOw0KK1JDU0lE
KCIkSWQ6IG5ucGZzX3N5c2NhbGxzLmMsdiAxLjEyNSAyMDEwLzA4LzA4IDIw
OjQzOjA2IHRvbCBFeHAgJCIpOw0KICNlbmRpZg0KIA0KIHN0YXRpYyBzdHJ1
Y3QgcHJvY19kaXJfZW50cnkgKm5ucGZzX3Byb2Nmc19kaXI7DQpAQCAtODIs
MTIgKzg5LDIyIEBAIHR5cGVkZWYgc3RydWN0IGFmc3Byb2NkYXRhIHsNCiAg
ICAgdW5zaWduZWQgbG9uZyBzeXNjYWxsOw0KIH0gYWZzcHJvY2RhdGE7DQog
DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIs
NiwzNikNCiBzdGF0aWMgaW50DQogbm5wZnNfcHJvY2ZzX2lvY3RsKHN0cnVj
dCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLA0KIAkJICAgdW5z
aWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOw0KKyNlbHNlDQor
c3RhdGljIGxvbmcNCitubnBmc19wcm9jZnNfaW9jdGwoc3RydWN0IGZpbGUg
KmZpbGUsDQorCQkgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25n
IGFyZyk7DQorI2VuZGlmDQogDQogc3RhdGljIHN0cnVjdCBmaWxlX29wZXJh
dGlvbnMgbm5wZnNfcHJvY2ZzX2ZvcHMgPSB7DQorI2lmIExJTlVYX1ZFUlNJ
T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzNikNCiAgICAgLmlvY3Rs
ID0gbm5wZnNfcHJvY2ZzX2lvY3RsLA0KKyNlbHNlDQorICAgIC51bmxvY2tl
ZF9pb2N0bCA9IG5ucGZzX3Byb2Nmc19pb2N0bCwNCisjZW5kaWYNCiB9Ow0K
IA0KIA0KQEAgLTE0Nyw1MyArMTY0LDQ4IEBAIHN0YXRpYyBpbnQgbm5wZnNf
c2VjX3JlZ2lzdGVyZWQgPSAwOw0KICNkZWZpbmUgU0VDMlBBRyhzKSAobm5w
ZnNfcGFnX3QpKHVuc2lnbmVkIGxvbmcpKHMpDQogI2RlZmluZSBQQUcyU0VD
KHApICh2b2lkICopKHVuc2lnbmVkIGxvbmcpKHApDQogDQotc3RhdGljIGlu
dA0KLW5ucGZzX3NlY190YXNrX2FsbG9jKHN0cnVjdCB0YXNrX3N0cnVjdCAq
cCkNCi17DQotICAgIG5ucGZzX3BhZ190IHBhZyA9IFNFQzJQQUcoY3VycmVu
dC0+c2VjdXJpdHkpOw0KLSAgICBpZiAocGFnKQ0KLQlwLT5zZWN1cml0eSA9
IFBBRzJTRUMocGFnKTsNCi0gICAgcmV0dXJuIDA7DQotfQ0KLQ0KLXN0YXRp
YyB2b2lkDQotbm5wZnNfc2VjX3Rhc2tfZnJlZShzdHJ1Y3QgdGFza19zdHJ1
Y3QgKnApDQotew0KLSAgICBubnBmc19wYWdfdCBwYWcgPSBTRUMyUEFHKHAt
PnNlY3VyaXR5KTsNCi0gICAgaWYgKHBhZykNCi0JcC0+c2VjdXJpdHkgPSBO
VUxMOw0KLX0NCi0NCiBzdGF0aWMgbm5wZnNfcGFnX3QNCiBubnBmc19nZXRf
cGFnX3NlYyh2b2lkKQ0KIHsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9
IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgbm5wZnNfcGFnX3QgcGFn
ID0gU0VDMlBBRyhjdXJyZW50LT5zZWN1cml0eSk7DQorI2Vsc2UNCisgICAg
bm5wZnNfcGFnX3QgcGFnID0gU0VDMlBBRyhjdXJyZW50X3NlY3VyaXR5KCkp
Ow0KKyNlbmRpZg0KICAgICBpZiAocGFnKQ0KIAlyZXR1cm4gcGFnOw0KIA0K
KyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVMX1ZFUlNJT04oMiw2
LDI4KQ0KICAgICByZXR1cm4gY3VycmVudC0+dWlkOw0KKyNlbGlmIExJTlVY
X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCisgICAg
cmV0dXJuIGN1cnJlbnRfdWlkKCk7DQorI2Vsc2UNCisgICAgeyBrdWlkX3Qg
a3VpZCA9IGN1cnJlbnRfdWlkKCk7IHJldHVybiBrdWlkLnZhbDsgfQ0KKyNl
bmRpZg0KIH0NCiANCiBzdGF0aWMgaW50DQogbm5wZnNfc2V0X3BhZ19zZWMo
dm9pZCkNCiB7DQogICAgIHN0YXRpYyBubnBmc19wYWdfdCBwYWdudW0gPSBO
TlBGU19QQUdfTExJTTsNCisjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtF
Uk5FTF9WRVJTSU9OKDIsNiwyOSkNCisgICAgc3RydWN0IGNyZWQgKmNyZWQ7
DQorI2VuZGlmDQogDQogICAgIGlmIChwYWdudW0gPT0gTk5QRlNfUEFHX1VM
SU0pDQogCXJldHVybiAtRU5PTUVNOw0KICAgICAvKiBwYWdudW0gPSBOTlBG
U19QQUdfTExJTTsgKi8NCiAgICAgDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E
RSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAgIGN1cnJlbnQtPnNl
Y3VyaXR5ID0gUEFHMlNFQyhwYWdudW0pOw0KKyNlbHNlDQorICAgIGNyZWQg
PSAoc3RydWN0IGNyZWQgKikgY3VycmVudC0+Y3JlZDsNCisgICAgY3JlZC0+
c2VjdXJpdHkgPSBQQUcyU0VDKHBhZ251bSk7DQorI2VuZGlmDQogICAgIHBh
Z251bSsrOw0KICAgICByZXR1cm4gMDsNCiB9DQogDQotc3RhdGljIHN0cnVj
dCBzZWN1cml0eV9vcGVyYXRpb25zIG5ucGZzX3NlY19vcHMgPSB7DQotICAg
IC50YXNrX2FsbG9jX3NlY3VyaXR5ID0gbm5wZnNfc2VjX3Rhc2tfYWxsb2Ms
DQotICAgIC50YXNrX2ZyZWVfc2VjdXJpdHkgPSBubnBmc19zZWNfdGFza19m
cmVlLA0KLS8vICAgIC50YXNrX3JlcGFyZW50X3RvX2luaXQgPSBubnBmc19z
ZWNfcmVwYXJlbnRfdG9faW5pdCwNCi19Ow0KLQ0KICNlbmRpZiAvKiBDT05G
SUdfU0VDVVJJVFkgKi8NCiANCiAjaWZkZWYgR1JPVVBQQUdTDQpAQCAtMjA2
LDcgKzIxOCwxMiBAQCBmaW5kX3BhZyhzdHJ1Y3QgZ3JvdXBfaW5mbyAqZ2kp
DQogICAgIE5OUEZTREVCKFhERUJTWVMsICgiZmluZF9wYWc6IG5ncm91cHMg
PSAlZFxuIiwgZ2ktPm5ncm91cHMpKTsNCiANCiAgICAgZm9yIChpID0gZ2kt
Pm5ncm91cHMgLSAxOyBpID49IDA7IGktLSkgew0KKyNpZiBMSU5VWF9WRVJT
SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE0LDApDQogCWdpZF90IGdy
b3VwID0gR1JPVVBfQVQoZ2ksIGkpOw0KKyNlbHNlDQorCWtnaWRfdCBrZ3Jv
dXAgPSBHUk9VUF9BVChnaSwgaSk7DQorCWdpZF90IGdyb3VwID0ga2dyb3Vw
LnZhbDsNCisjZW5kaWYNCiAJaWYgKChubnBmc19wYWdfdClncm91cCA+PSBO
TlBGU19QQUdfTExJTSAmJiAobm5wZnNfcGFnX3QpZ3JvdXAgPCBOTlBGU19Q
QUdfVUxJTSkgew0KIAkgICAgTk5QRlNERUIoWERFQlNZUywNCiAJCSAgICAg
KCJmaW5kX3BhZzogRXhpc3RpbmcgcGFnICV1IGF0IHBvcyAldVxuIiwgZ3Jv
dXAsIGkpKTsNCkBAIC0yMjIsMTUgKzIzOSwzMSBAQCBmaW5kX3BhZyhzdHJ1
Y3QgZ3JvdXBfaW5mbyAqZ2kpDQogc3RhdGljIG5ucGZzX3BhZ190DQogbm5w
ZnNfZ2V0X3BhZ19ncm91cCh2b2lkKQ0KIHsNCisjaWYgTElOVVhfVkVSU0lP
Tl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgc3RydWN0
IGdyb3VwX2luZm8gKmdpID0gY3VycmVudC0+Z3JvdXBfaW5mbzsNCiAgICAg
bm5wZnNfcGFnX3QgcmV0ID0gY3VycmVudC0+dWlkOw0KKyNlbHNlDQorICAg
IHN0cnVjdCBncm91cF9pbmZvICpnaSA9IGdldF9jdXJyZW50X2dyb3Vwcygp
Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigz
LDE0LDApDQorICAgIG5ucGZzX3BhZ190IHJldCA9IGN1cnJlbnRfdWlkKCk7
DQorI2Vsc2UNCisgICAga3VpZF90IGt1aWQgPSBjdXJyZW50X3VpZCgpOw0K
KyAgICBubnBmc19wYWdfdCByZXQgPSBrdWlkLnZhbDsNCisjZW5kaWYNCisj
ZW5kaWYNCiAgICAgaW50IGk7DQogDQorI2lmIExJTlVYX1ZFUlNJT05fQ09E
RSA8PSBLRVJORUxfVkVSU0lPTigyLDYsMjgpDQogICAgIGdldF9ncm91cF9p
bmZvKGdpKTsNCisjZW5kaWYNCiANCiAgICAgaSA9IGZpbmRfcGFnKGdpKTsN
CiAgICAgaWYgKGkgIT0gTk5QRlNfUEFHX05PVEZPVU5EKQ0KKyNpZiBMSU5V
WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE0LDApDQogCXJl
dCA9IEdST1VQX0FUKGdpLCBpKTsNCisjZWxzZQ0KKwl7IGtnaWRfdCBrZ2lk
ID0gR1JPVVBfQVQoZ2ksIGkpOyByZXQgPSBrZ2lkLnZhbDsgfQ0KKyNlbmRp
Zg0KIA0KICAgICBwdXRfZ3JvdXBfaW5mbyhnaSk7DQogDQpAQCAtMjQyLDEz
ICsyNzUsMTkgQEAgbm5wZnNfZ2V0X3BhZ19ncm91cCh2b2lkKQ0KIHN0YXRp
YyBpbnQNCiBzdG9yZV9wYWcobm5wZnNfcGFnX3QgcGFnbnVtKQ0KIHsNCisj
aWYgTElOVVhfVkVSU0lPTl9DT0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwy
OCkNCiAgICAgc3RydWN0IGdyb3VwX2luZm8gKm9sZF9naSA9IGN1cnJlbnQt
Pmdyb3VwX2luZm87DQorI2Vsc2UNCisgICBzdHJ1Y3QgZ3JvdXBfaW5mbyAq
b2xkX2dpID0gZ2V0X2N1cnJlbnRfZ3JvdXBzKCk7DQorI2VuZGlmDQogICAg
IHN0cnVjdCBncm91cF9pbmZvICpuZXdfZ2k7DQotICAgIGludCBuYmxvY2tz
LCBjb3VudDsNCisgICAgdW5zaWduZWQgaW50IG5ibG9ja3MsIGNvdW50Ow0K
ICAgICBpbnQgZm91bmQgPSAwOw0KICAgICBpbnQgaSwgazsNCiAgICAgDQor
I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDYs
MjgpICAgIA0KICAgICBnZXRfZ3JvdXBfaW5mbyhvbGRfZ2kpOw0KKyNlbmRp
Zg0KIA0KICAgICBpID0gZmluZF9wYWcob2xkX2dpKTsNCiAgICAgaWYgKGkg
IT0gTk5QRlNfUEFHX05PVEZPVU5EKQ0KQEAgLTI3NCwxMCArMzEzLDE3IEBA
IHN0b3JlX3BhZyhubnBmc19wYWdfdCBwYWdudW0pDQogCWNvdW50IC09IE5H
Uk9VUFNfUEVSX0JMT0NLOw0KICAgICB9DQogDQorI2lmIExJTlVYX1ZFUlNJ
T05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAgICAgaWYgKGZv
dW5kKQ0KIAlHUk9VUF9BVChuZXdfZ2ksIGkpID0gcGFnbnVtOw0KICAgICBl
bHNlDQogCUdST1VQX0FUKG5ld19naSwgbmV3X2dpLT5uZ3JvdXBzIC0gMSkg
PSBwYWdudW07DQorI2Vsc2UNCisgICAgaWYgKGZvdW5kKQ0KKwl7IGtnaWRf
dCBrZ2lkID0gS0dJRFRfSU5JVChwYWdudW0pOyBHUk9VUF9BVChuZXdfZ2ks
IGkpID0ga2dpZDsgfQ0KKyAgICBlbHNlDQorCXsga2dpZF90IGtnaWQgPSBL
R0lEVF9JTklUKHBhZ251bSk7IEdST1VQX0FUKG5ld19naSwgbmV3X2dpLT5u
Z3JvdXBzIC0gMSkgPSBrZ2lkOyB9DQorI2VuZGlmDQogICAgIA0KICAgICBz
ZXRfY3VycmVudF9ncm91cHMobmV3X2dpKTsNCiAgICAgcHV0X2dyb3VwX2lu
Zm8obmV3X2dpKTsNCkBAIC0zMTcsNyArMzYzLDEzIEBAIG5ucGZzX2dldF9w
YWcoKQ0KICAgICByZXR1cm4gbm5wZnNfZ2V0X3BhZ19ncm91cCgpOw0KICNl
bmRpZiAvKiBHUk9VUFBBR1MgKi8NCiANCisjaWYgTElOVVhfVkVSU0lPTl9D
T0RFIDw9IEtFUk5FTF9WRVJTSU9OKDIsNiwyOCkNCiAgICAgcmV0dXJuIGN1
cnJlbnQtPnVpZDsNCisjZWxpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO
RUxfVkVSU0lPTigzLDE0LDApDQorICAgIHJldHVybiBjdXJyZW50X3VpZCgp
Ow0KKyNlbHNlDQorICAgIHsga3VpZF90IGt1aWQgPSBjdXJyZW50X3VpZCgp
OyByZXR1cm4ga3VpZC52YWw7IH0NCisjZW5kaWYNCiB9DQogDQogc3RhdGlj
IGlubGluZSBpbnQNCkBAIC00MjIsNyArNDc0LDcgQEAgbm5wZnNfc2V0Z3Jv
dXBzMTYgKGludCBnaWRzZXRzaXplLCBvbGRfZw0KICNlbmRpZiAvKiBTWVND
QUxMSEFDSyAqLw0KICNlbmRpZiAvKiBHUk9VUFBBR1MgKi8NCiANCi1zdHJ1
Y3QgZmlsZV9oYW5kbGUgew0KK3N0cnVjdCBubnBmc19maWxlX2hhbmRsZSB7
DQogICAgIG5ucGZzX2Rldl90IGRldjsNCiAgICAgaW5vX3QgaW5vZGU7DQog
ICAgIF9fdTMyIGdlbjsNCkBAIC01MDksMTQgKzU2MSwyNyBAQCBubnBmc19k
ZWJ1Z19wcmludCAoc3RydWN0IGFybGFWaWNlSW9jdGwNCiAgKiBmb2xsb3cg
c3ltbGlua3MgaWZmIGBmb2xsb3cnDQogICovDQogDQorI2lmIExJTlVYX1ZF
UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCiBzdGF0aWMg
c3RydWN0IGRlbnRyeSAqDQogdXNlcl9wYXRoMmRlbnRyeSAoc3RydWN0IG5h
bWVpZGF0YSAqbmQsIGNoYXIgKnVzZXJfcGF0aCwgaW50IGZvbGxvdykNCisj
ZWxzZQ0KK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICoNCit1c2VyX3BhdGgyZGVu
dHJ5IChzdHJ1Y3QgcGF0aCAqcGF0aCwgY2hhciAqdXNlcl9wYXRoLCBpbnQg
Zm9sbG93KQ0KKyNlbmRpZg0KIHsNCi0gICAgY2hhciAqa25hbWU7DQogICAg
IGludCBmbGFncyA9IDA7DQogICAgIGludCBlcnJvciA9IDA7DQogDQotICAg
IGtuYW1lID0gZ2V0bmFtZSAodXNlcl9wYXRoKTsNCisjaWYgTElOVVhfVkVS
U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApDQorICAgIGNoYXIg
KmtuYW1lOw0KKyAgICBrbmFtZSA9IGdldG5hbWUodXNlcl9wYXRoKTsNCisj
ZWxzZQ0KKyAgICBjb25zdCBjaGFyICprbmFtZTsNCisgICAgc3RydWN0IGZp
bGVuYW1lICpmbmFtZTsNCisgICAgZm5hbWUgPSBnZXRuYW1lKHVzZXJfcGF0
aCk7DQorICAgIGtuYW1lID0gZm5hbWUtPm5hbWU7DQorI2VuZGlmDQorDQog
ICAgIGlmIChJU19FUlIoa25hbWUpKQ0KIAlyZXR1cm4gRVJSX1BUUihQVFJf
RVJSKGtuYW1lKSk7DQogICAgIGlmIChmb2xsb3cpDQpAQCAtNTI0LDExICs1
ODksMjUgQEAgdXNlcl9wYXRoMmRlbnRyeSAoc3RydWN0IG5hbWVpZGF0YSAq
bmQsDQogDQogICAgIE5OUEZTREVCKFhERUJNU0csICgibm5wZnNfc3lzY2Fs
bDogbG9va2luZyB1cDogJXNcbiIsIGtuYW1lKSk7DQogDQorI2lmIExJTlVY
X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAgICAg
ZXJyb3IgPSBwYXRoX2xvb2t1cChrbmFtZSwgZmxhZ3MsIG5kKTsNCisjZWxp
ZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDAp
DQorICAgIGVycm9yID0ga2Vybl9wYXRoKGtuYW1lLCBmbGFncywgJihuZC0+
cGF0aCkpOw0KKyNlbHNlDQorICAgIGVycm9yID0ga2Vybl9wYXRoKGtuYW1l
LCBmbGFncywgcGF0aCk7DQorI2VuZGlmDQorI2lmIExJTlVYX1ZFUlNJT05f
Q09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNywwKQ0KICAgICBwdXRuYW1lKGtu
YW1lKTsNCisjZWxzZQ0KKyAgICBrbWVtX2NhY2hlX2ZyZWUobmFtZXNfY2Fj
aGVwLCAodm9pZCAqKWtuYW1lKTsNCisjZW5kaWYNCiAgICAgaWYgKGVycm9y
KQ0KIAlyZXR1cm4gRVJSX1BUUihlcnJvcik7DQotICAgIHJldHVybiBuZC0+
ZGVudHJ5Ow0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS
U0lPTigzLDE5LDApDQorICAgIHJldHVybiBuZC0+cGF0aC5kZW50cnk7DQor
I2Vsc2UNCisgICAgcmV0dXJuIHBhdGgtPmRlbnRyeTsNCisjZW5kaWYNCiB9
DQogDQogYXNtbGlua2FnZSBsb25nDQpAQCAtNTQwLDEyICs2MTksMjQgQEAg
c3lzX2Fmc19pbnQgKGludCBvcGVyYXRpb24sDQogew0KICAgICBsb25nIGVy
cm9yID0gMDsNCiAgICAgc3RydWN0IGFybGFWaWNlSW9jdGwgdmljZV9pb2N0
bDsgDQotICAgIHN0cnVjdCBubnBmc19tZXNzYWdlX3Bpb2N0bCBtc2c7DQor
ICAgIHN0cnVjdCBubnBmc19tZXNzYWdlX3Bpb2N0bCAqbXNnID0gTlVMTDsN
CiAgICAgc3RydWN0IG5ucGZzX21lc3NhZ2Vfd2FrZXVwICptc2cyOw0KICAg
ICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBOVUxMOw0KKyNpZiBMSU5VWF9W
RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogICAgIHN0
cnVjdCBuYW1laWRhdGEgbmQ7DQorI2Vsc2UNCisgICAgc3RydWN0IHBhdGgg
cGF0aDsNCisjZW5kaWYNCiAgICAgDQorICAgIG1zZyA9IGttYWxsb2Moc2l6
ZW9mKCptc2cpLCBHRlBfS0VSTkVMKTsNCisgICAgaWYgKG1zZyA9PSBOVUxM
KQ0KKyAgICAgIHJldHVybiAtRU5PTUVNOw0KKw0KKyNpZiBMSU5VWF9WRVJT
SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzkpDQogICAgIGxvY2tf
a2VybmVsKCk7DQorI2Vsc2UNCisgICAgLyogVE9ETzogbG9ja19rZXJuZWwo
KSBpcyByZW1vdmVkLCBjb25zaWRlciBhZGRpbmcgYW4gcHJpdmF0ZSBsb2Nr
ICovDQorI2VuZGlmDQogDQogICAgIE5OUEZTREVCKFhERUJTWVMsICgic3lz
X2FmcyBrZXJuZWwgbG9ja2VkXG4iKSk7DQogDQpAQCAtNTc1LDcgKzY2Niw3
IEBAIHN5c19hZnNfaW50IChpbnQgb3BlcmF0aW9uLA0KIAkgICAgZ290byB1
bmxvY2s7DQogCX0NCiAJaWYgKHZpY2VfaW9jdGwuaW5fc2l6ZSAhPSAwKSB7
DQotCSAgICBpZihjb3B5X2Zyb21fdXNlcigmbXNnLm1zZywNCisJICAgIGlm
KGNvcHlfZnJvbV91c2VyKCZtc2ctPm1zZywNCiAJCQkgICAgICB2aWNlX2lv
Y3RsLmluLA0KIAkJCSAgICAgIHZpY2VfaW9jdGwuaW5fc2l6ZSkgIT0gMCkg
ew0KIAkJZXJyb3IgPSAtRUZBVUxUOw0KQEAgLTU4Myw3ICs2NzQsMTEgQEAg
c3lzX2Fmc19pbnQgKGludCBvcGVyYXRpb24sDQogCSAgICB9DQogCX0NCiAJ
aWYgKGFfcGF0aFAgIT0gTlVMTCkgew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NP
REUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQogCSAgICBkZW50cnkgPSB1
c2VyX3BhdGgyZGVudHJ5ICgmbmQsIGFfcGF0aFAsIGFfZm9sbG93U3ltbGlu
a3MpOw0KKyNlbHNlDQorCSAgICBkZW50cnkgPSB1c2VyX3BhdGgyZGVudHJ5
ICgmcGF0aCwgYV9wYXRoUCwgYV9mb2xsb3dTeW1saW5rcyk7DQorI2VuZGlm
DQogCSAgICBpZiAoIWRlbnRyeSkgew0KIAkJZXJyb3IgPSAtRUlOVkFMOw0K
IAkJZ290byB1bmxvY2s7DQpAQCAtNjI4LDE5ICs3MjMsMjMgQEAgc3lzX2Fm
c19pbnQgKGludCBvcGVyYXRpb24sDQogCQllcnJvciA9IC1FSU5WQUw7DQog
CQlnb3RvIHVubG9jazsNCiAJICAgIH0NCi0JICAgIG1zZy5oYW5kbGUgPSB4
bi0+aGFuZGxlOw0KKwkgICAgbXNnLT5oYW5kbGUgPSB4bi0+aGFuZGxlOw0K
IAl9DQogDQotCW1zZy5oZWFkZXIub3Bjb2RlID0gTk5QRlNfTVNHX1BJT0NU
TDsNCi0JbXNnLm9wY29kZSA9IGFfb3Bjb2RlOw0KKwltc2ctPmhlYWRlci5v
cGNvZGUgPSBOTlBGU19NU0dfUElPQ1RMOw0KKwltc2ctPm9wY29kZSA9IGFf
b3Bjb2RlOw0KIAkNCi0JbXNnLmluc2l6ZSAgID0gdmljZV9pb2N0bC5pbl9z
aXplOw0KLQltc2cub3V0c2l6ZSAgPSB2aWNlX2lvY3RsLm91dF9zaXplOw0K
LQltc2cuY3JlZC51aWQgPSBjdXJyZW50LT51aWQ7DQotCW1zZy5jcmVkLnBh
ZyA9IG5ucGZzX2dldF9wYWcoKTsNCisJbXNnLT5pbnNpemUgICA9IHZpY2Vf
aW9jdGwuaW5fc2l6ZTsNCisJbXNnLT5vdXRzaXplICA9IHZpY2VfaW9jdGwu
b3V0X3NpemU7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxf
VkVSU0lPTigyLDYsMjgpDQorCW1zZy0+Y3JlZC51aWQgPSBjdXJyZW50LT51
aWQ7DQorI2Vsc2UNCisgICAgICAgIG1zZy0+Y3JlZC51aWQgPSBjdXJyZW50
X3VpZCgpOw0KKyNlbmRpZg0KKwltc2ctPmNyZWQucGFnID0gbm5wZnNfZ2V0
X3BhZygpOw0KIAkNCi0JZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYygmbm5w
ZnNbMF0sICZtc2cuaGVhZGVyLCBzaXplb2YobXNnKSk7IC8qIFhYWCAqLw0K
LQltc2cyID0gKHN0cnVjdCBubnBmc19tZXNzYWdlX3dha2V1cCAqKSAmbXNn
Ow0KKwllcnJvciA9IG5ucGZzX21lc3NhZ2VfcnBjKCZubnBmc1swXSwgJm1z
Zy0+aGVhZGVyLCBzaXplb2YoKm1zZykpOyAvKiBYWFggKi8NCisJbXNnMiA9
IChzdHJ1Y3Qgbm5wZnNfbWVzc2FnZV93YWtldXAgKikgbXNnOw0KIAlpZiAo
ZXJyb3IgPT0gMCkNCiAJICAgIGVycm9yID0gbXNnMi0+ZXJyb3I7DQogDQpA
QCAtNjc1LDEyICs3NzQsMjEgQEAgc3lzX2Fmc19pbnQgKGludCBvcGVyYXRp
b24sDQogICAgIA0KICB1bmxvY2s6DQogICAgIGlmIChkZW50cnkpDQotCXBh
dGhfcmVsZWFzZSgmbmQpOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBL
RVJORUxfVkVSU0lPTigzLDE5LDApDQorCXBhdGhfcHV0KCZuZC5wYXRoKTsN
CisjZWxzZQ0KKwlwYXRoX3B1dCgmcGF0aCk7DQorI2VuZGlmDQogDQogICAg
IE5OUEZTREVCKFhERUJTWVMsICgibm5wZnNfc3lzY2FsbCByZXR1cm5zIGVy
cm9yOiAlbGRcbiIsIGVycm9yKSk7DQogDQogICAgIE5OUEZTREVCKFhERUJT
WVMsICgic3lzX2FmcyBrZXJuZWwgdW5sb2NrXG4iKSk7DQorICAgIGtmcmVl
KG1zZyk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJT
SU9OKDIsNiwzOSkNCiAgICAgdW5sb2NrX2tlcm5lbCgpOw0KKyNlbHNlDQor
ICAgIC8qIFRPRE86IHNlZSB0aGUgY29tbWVudCBhdCBsb2NrX2tlcm5lbCgp
IGFib3ZlICovDQorI2VuZGlmDQogDQogICAgIHJldHVybiBlcnJvcjsNCiB9
DQpAQCAtNzI5LDkgKzgzNywxNSBAQCBzeXNfYWZzIChpbnQgb3BlcmF0aW9u
LA0KIAkJICAgICAgIGFfZm9sbG93U3ltbGlua3MpOw0KIH0NCiANCisjaWYg
TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDM2KQ0K
IHN0YXRpYyBpbnQNCiBubnBmc19wcm9jZnNfaW9jdGwoc3RydWN0IGlub2Rl
ICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsDQogCQkgICB1bnNpZ25lZCBp
bnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykNCisjZWxzZQ0KK3N0YXRpYyBs
b25nDQorbm5wZnNfcHJvY2ZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLA0K
KwkJICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpDQor
I2VuZGlmDQogew0KICAgICBhZnNwcm9jZGF0YSBhcmdzOw0KICAgICBsb25n
IHJldDsNCkBAIC03ODAsMjEgKzg5NCwzMSBAQCBzdGF0aWMgaW50IG5ucGZz
X2luaXRfcHJvY2ZzKHZvaWQpDQogew0KICAgICBzdHJ1Y3QgcHJvY19kaXJf
ZW50cnkgKmVudHJ5Ow0KICAgICANCi0gICAgbm5wZnNfcHJvY2ZzX2RpciA9
IHByb2NfbWtkaXIoTk5QRlNfUFJPQ19ESVIsIHByb2Nfcm9vdF9mcyk7DQor
ICAgIG5ucGZzX3Byb2Nmc19kaXIgPSBwcm9jX21rZGlyKCJmcy8iIE5OUEZT
X1BST0NfRElSLCBOVUxMKTsNCiAgICAgaWYgKG5ucGZzX3Byb2Nmc19kaXIg
PT0gTlVMTCkNCiAJcmV0dXJuIC1FTk9NRU07DQogICAgIA0KKyNpZiBMSU5V
WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYsMzApDQogICAg
IG5ucGZzX3Byb2Nmc19kaXItPm93bmVyID0gVEhJU19NT0RVTEU7DQorI2Vu
ZGlmDQogICAgIA0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf
VkVSU0lPTigzLDEwLDApDQogICAgIGVudHJ5ID0gY3JlYXRlX3Byb2NfZW50
cnkoTk5QRlNfUFJPQ19OT0RFLCAwNjY2LCBubnBmc19wcm9jZnNfZGlyKTsN
CisjZWxzZQ0KKyAgICBlbnRyeSA9IHByb2NfY3JlYXRlKE5OUEZTX1BST0Nf
Tk9ERSwgMDY2NiwgTlVMTCwgJm5ucGZzX3Byb2Nmc19mb3BzKTsNCisjZW5k
aWYNCiAgICAgaWYgKGVudHJ5ID09IE5VTEwpIHsNCiAJTk5QRlNERUIoWERF
QlNZUywgKCJubnBmc19pbml0X3Byb2Nmczogbm8gbm9kZVxuIikpOw0KLQly
ZW1vdmVfcHJvY19lbnRyeShOTlBGU19QUk9DX0RJUiwgcHJvY19yb290X2Zz
KTsNCisJcmVtb3ZlX3Byb2NfZW50cnkoImZzLyIgTk5QRlNfUFJPQ19ESVIs
IE5VTEwpOw0KIAlyZXR1cm4gLUVOT01FTTsNCiAgICAgfQ0KICAgICANCisj
aWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiw2LDMw
KQ0KICAgICBlbnRyeS0+b3duZXIgPSBUSElTX01PRFVMRTsNCisjZW5kaWYN
CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywx
MCwwKQ0KICAgICBlbnRyeS0+cHJvY19mb3BzID0gJm5ucGZzX3Byb2Nmc19m
b3BzOw0KKyNlbmRpZg0KIA0KICNpZmRlZiBTWVNDQUxMQ09NUEFUDQogICAg
IGlmIChyZWdpc3Rlcl9pb2N0bDMyX2NvbnZlcnNpb24oQVJMQV9WSU9DX1NZ
U0NBTEwzMiwgbm5wZnNfcHJvY2ZzX2lvY3RsMzIpKSB7DQpAQCAtODE1LDcg
KzkzOSw3IEBAIHN0YXRpYyB2b2lkIG5ucGZzX2V4aXRfcHJvY2ZzKHZvaWQp
DQogICAgIH0NCiAjZW5kaWYgLyogU1lTQ0FMTENPTVBBVCAqLw0KICAgICBy
ZW1vdmVfcHJvY19lbnRyeShOTlBGU19QUk9DX05PREUsIG5ucGZzX3Byb2Nm
c19kaXIpOw0KLSAgICByZW1vdmVfcHJvY19lbnRyeShOTlBGU19QUk9DX0RJ
UiwgcHJvY19yb290X2ZzKTsNCisgICAgcmVtb3ZlX3Byb2NfZW50cnkoImZz
LyIgTk5QRlNfUFJPQ19ESVIsIE5VTEwpOw0KIH0NCiANCiAjaWZkZWYgR1JP
VVBQQUdTDQpAQCAtODM5LDE0ICs5NjMsNiBAQCBpbnN0YWxsX3NldGdyb3Vw
cyh2b2lkKQ0KIHZvaWQNCiBpbnN0YWxsX2Fmc19zeXNjYWxsKHZvaWQpDQog
ew0KLSNpZmRlZiBDT05GSUdfU0VDVVJJVFkNCi0gICAgaWYgKHJlZ2lzdGVy
X3NlY3VyaXR5KCZubnBmc19zZWNfb3BzKSkNCi0JTk5QRlNERUIoWERFQlNZ
UywNCi0JCSAoImluc3RhbGxfYWZzX3N5c2NhbGw6IG5ucGZzX2luaXRfc2Vj
IGZhaWxlZFxuIikpOw0KLSAgICBlbHNlDQotCW5ucGZzX3NlY19yZWdpc3Rl
cmVkID0gMTsNCi0jZW5kaWYNCi0NCiAgICAgbm5wZnNfaW5pdF9wcm9jZnMo
KTsNCiANCiAjaWZkZWYgU1lTQ0FMTEhBQ0sNCkBAIC04ODcsMTIgKzEwMDMs
NiBAQCByZXN0b3JlX2Fmc19zeXNjYWxsICh2b2lkKQ0KICNlbmRpZg0KICNl
bmRpZiAvKiBTWVNDQUxMSEFDSyAqLw0KIA0KLSNpZmRlZiBDT05GSUdfU0VD
VVJJVFkNCi0gICAgaWYgKG5ucGZzX3NlY19yZWdpc3RlcmVkKQ0KLQlpZiAo
dW5yZWdpc3Rlcl9zZWN1cml0eSgmbm5wZnNfc2VjX29wcykpDQotCSAgICBw
cmludGsoS0VSTl9FTUVSRyAibm5wZnNfZXhpdF9zZWM6IGNvdWxkbid0IHVu
cmVnaXN0ZXJcbiIpOw0KLSNlbmRpZiAvKiAhQ09ORklHX1NFQ1VSSVRZICov
DQotDQogI2lmZGVmIEdST1VQUEFHUw0KICNpZmRlZiBTWVNDQUxMSEFDSw0K
ICAgICBpZiAob2xkX3NldGdyb3Vwcykgew0KZGlmZiAtdXByTiAtWG5vZGlm
Zi50eHQgYXJsYS0wLjkwL25ucGZzL2xpbnV4L25ucGZzX3N5c2NhbGxzLWxv
c3NhZ2UuYyBhcmxhLWZvci1saW51eC00LjQvbm5wZnMvbGludXgvbm5wZnNf
c3lzY2FsbHMtbG9zc2FnZS5jDQotLS0gYXJsYS0wLjkwL25ucGZzL2xpbnV4
L25ucGZzX3N5c2NhbGxzLWxvc3NhZ2UuYwkyMDA2LTEyLTExIDE3OjMxOjQ1
LjAwMDAwMDAwMCArMDEwMA0KKysrIGFybGEtZm9yLWxpbnV4LTQuNC9ubnBm
cy9saW51eC9ubnBmc19zeXNjYWxscy1sb3NzYWdlLmMJMjAxNi0wMS0xMyAy
MTo1MTo0OS42ODI0NTcyMTMgKzAxMDANCkBAIC00NywxMSArNDcsMjAgQEAN
CiAjaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+DQogDQogI2lmZGVmIFJDU0lE
DQotUkNTSUQoIiRJZDogbm5wZnNfc3lzY2FsbHMtbG9zc2FnZS5jLHYgMS4x
NyAyMDA2LzEyLzExIDE2OjMxOjQ1IHRvbCBFeHAgJCIpOw0KK1JDU0lEKCIk
SWQ6IG5ucGZzX3N5c2NhbGxzLWxvc3NhZ2UuYyx2IDEuMTkgMjAxMC8wOC8w
OCAyMDo0MzowNSB0b2wgRXhwICQiKTsNCisjZW5kaWYNCisNCisjaWYgTElO
VVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsNywwKQ0KKy8q
IHRoZSBtZXRob2QgdG8gcmVhZCAnbG93ZXJfYm91bmQnIGRvZXMgbm90IHdv
cmsgb24ga2VybmVsIDMuNyBhbmQgbGF0ZXIgKi8NCisjdW5kZWYgU1lTQ0FM
TEhBQ0sNCiAjZW5kaWYNCiANCiAjaW5jbHVkZSA8bGludXgva2FsbHN5bXMu
aD4NCisjaWZkZWYgU1lTQ0FMTEhBQ0sNCisjaWYgTElOVVhfVkVSU0lPTl9D
T0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApDQogc3RhdGljIHZvaWQgKmxv
d2VyX2JvdW5kID0gJmtlcm5lbF90aHJlYWQ7DQorI2VuZGlmDQorI2VuZGlm
DQogDQogdm9pZCAqIF9fYXR0cmlidXRlX18oKHdlYWspKSBzeXNfY2FsbF90
YWJsZSh2b2lkKTsNCiBubnBmc19zeXNfY2FsbF9mdW5jdGlvbiAqbm5wZnNf
c3lzX2NhbGxfdGFibGUgPQ0KQEAgLTYzLDYgKzcyLDExIEBAIGNvbnN0IGNo
YXIgKiBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkNCiAJCSAgICB1bnNpZ25lZCBs
b25nICpvZmZzZXQsDQogCQkgICAgY2hhciAqKm1vZG5hbWUsIGNoYXIgKm5h
bWVidWYpOw0KIA0KKyNpZmRlZiBfX3g4Nl82NF9fDQorZXh0ZXJuIHJ3bG9j
a190IHRhc2tsaXN0X2xvY2sgX19hdHRyaWJ1dGVfXygod2VhaykpOw0KKyNl
bmRpZg0KKw0KKyNpZmRlZiBTWVNDQUxMSEFDSw0KIHN0YXRpYyB2b2lkICoq
DQogZ2V0X3N0YXJ0X2FkZHIodm9pZCkgew0KICNpZmRlZiBfX3g4Nl82NF9f
DQpAQCAtNzEsNiArODUsNyBAQCBnZXRfc3RhcnRfYWRkcih2b2lkKSB7DQog
ICAgIHJldHVybiAodm9pZCAqKikmbXV0ZXhfbG9jazsNCiAjZW5kaWYNCiB9
DQorI2VuZGlmDQogDQogc3RhdGljIGlubGluZSBpbnQgDQoga2FsbHN5bV9p
c19lcXVhbCh1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IGNoYXIgKm5hbWUp
DQpAQCAtMTM5LDYgKzE1NCw4IEBAIHZlcmlmeSh2b2lkICoqcCkgew0KICAg
ICByZXR1cm4gMTsNCiB9DQogDQorI2lmZGVmIFNZU0NBTExIQUNLDQorDQog
c3RhdGljIGlubGluZSBpbnQgbG9va3NfZ29vZCh2b2lkICoqcCkNCiB7DQog
ICAgIGlmICgqcCA8PSAodm9pZCopbG93ZXJfYm91bmQgfHwgKnAgPj0gKHZv
aWQqKXApDQpAQCAtMTg4LDMgKzIwNSw1IEBAIG5ucGZzX2ZpeHVwX3N5c2Nh
bGxfbG9zc2FnZSh2b2lkKQ0KIA0KICAgICByZXR1cm4gMDsNCiB9DQorDQor
I2VuZGlmDQpkaWZmIC11cHJOIC1Ybm9kaWZmLnR4dCBhcmxhLTAuOTAvbm5w
ZnMvbGludXgvbm5wZnNfdmZzb3BzLmMgYXJsYS1mb3ItbGludXgtNC40L25u
cGZzL2xpbnV4L25ucGZzX3Zmc29wcy5jDQotLS0gYXJsYS0wLjkwL25ucGZz
L2xpbnV4L25ucGZzX3Zmc29wcy5jCTIwMDYtMTItMTEgMTc6NDM6MzUuMDAw
MDAwMDAwICswMTAwDQorKysgYXJsYS1mb3ItbGludXgtNC40L25ucGZzL2xp
bnV4L25ucGZzX3Zmc29wcy5jCTIwMTYtMDEtMTQgMTc6MTM6MTguMjYzNjU4
NTM2ICswMTAwDQpAQCAtNDQsMzAgKzQ0LDI2IEBADQogI2luY2x1ZGUgPGxp
bnV4L21tLmg+DQogDQogI2lmZGVmIFJDU0lEDQotUkNTSUQoIiRJZDogbm5w
ZnNfdmZzb3BzLmMsdiAxLjEwOSAyMDA2LzEyLzExIDE2OjQzOjM1IHRvbCBF
eHAgJCIpOw0KK1JDU0lEKCIkSWQ6IG5ucGZzX3Zmc29wcy5jLHYgMS4xMTEg
MjAxMC8wOC8wOCAyMDo0MzowNiB0b2wgRXhwICQiKTsNCiAjZW5kaWYNCiAN
CiBzdHJ1Y3Qgbm5wZnMgbm5wZnNbTk5OUEZTXTsNCiANCi1zdGF0aWMgdm9p
ZCBubnBmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOw0KIHN0
YXRpYyB2b2lkIG5ucGZzX3B1dF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KnNiKTsNCi1zdGF0aWMgdm9pZCBubnBmc19wdXRfaW5vZGUoc3RydWN0IGlu
b2RlICppbm9kZSk7DQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F
TF9WRVJTSU9OKDMsNiwwKQ0KIHN0YXRpYyB2b2lkIG5ucGZzX3dyaXRlX3N1
cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiKTsNCisjZW5kaWYNCiANCi0j
aWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsNiwx
OCkNCiBzdGF0aWMgaW50IG5ucGZzX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICpk
ZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpOw0KLSNlbHNlDQotc3RhdGlj
IGludCBubnBmc19zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3Ry
dWN0IGtzdGF0ZnMgKmJ1Zik7DQotI2VuZGlmDQogDQogc3RhdGljIHN0cnVj
dCBzdXBlcl9vcGVyYXRpb25zIG5ucGZzX3NvcHMgPSB7IA0KLSAgICByZWFk
X2lub2RlCQk6IG5ucGZzX3JlYWRfaW5vZGUsDQotICAgIHB1dF9pbm9kZQkJ
OiBubnBmc19wdXRfaW5vZGUsDQogICAgIGFsbG9jX2lub2RlCQk6IG5ucGZz
X25vZGVfYWxsb2MsDQogICAgIGRlc3Ryb3lfaW5vZGUJOiBubnBmc19ub2Rl
X2ZyZWUsDQogICAgIGRyb3BfaW5vZGUJCTogZ2VuZXJpY19kZWxldGVfaW5v
ZGUsDQogICAgIHB1dF9zdXBlcgkJOiBubnBmc19wdXRfc3VwZXIsDQorI2lm
IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0K
ICAgICB3cml0ZV9zdXBlcgkJOiBubnBmc193cml0ZV9zdXBlciwNCisjZW5k
aWYNCiAgICAgc3RhdGZzCQk6IG5ucGZzX3N0YXRmcywNCiB9Ow0KIA0KQEAg
LTk0LDcgKzkwLDExIEBAIG5ucGZzX2ZldGNoX3Jvb3Qoc3RydWN0IGlub2Rl
ICppKQ0KIAkgKiByb290J3MgcHJpdmlsaWdlcyAodXN1YWxseSBub25lLCBh
bmQgbm9uZSBpcyBuZWVkZWQpLg0KIAkgKi8NCiAJDQorI2lmIExJTlVYX1ZF
UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTQsMCkNCiAJbXNnLmNy
ZWQudWlkID0gMDsNCisjZWxzZQ0KKwltc2cuY3JlZC51aWQgPSBLVUlEVF9J
TklUKDApOw0KKyNlbmRpZg0KIAltc2cuY3JlZC5wYWcgPSAwOw0KIAkNCiAJ
ZXJyb3IgPSBubnBmc19tZXNzYWdlX3JwYyhubnBmc3AsICZtc2cuaGVhZGVy
LCBzaXplb2YobXNnKSk7DQpAQCAtMTI5LDggKzEyOSwxMyBAQCBtYWtlX3Jv
b3RfaW5vZGUoc3RydWN0IG5ucGZzICpubnBmc3ApDQogICAgIFhBX1NFVF9N
T0RFKCZub2RlLmF0dHIsIFNfSUZESVIgfCAwNzc3KTsNCiAgICAgWEFfU0VU
X05MSU5LKCZub2RlLmF0dHIsIDEwMCk7DQogICAgIFhBX1NFVF9TSVpFKCZu
b2RlLmF0dHIsIDApOw0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJO
RUxfVkVSU0lPTigzLDE0LDApDQogICAgIFhBX1NFVF9VSUQoJm5vZGUuYXR0
ciwgMCk7DQogICAgIFhBX1NFVF9HSUQoJm5vZGUuYXR0ciwgMCk7DQorI2Vs
c2UNCisgICAgWEFfU0VUX1VJRCgmbm9kZS5hdHRyLCBLVUlEVF9JTklUKDAp
KTsNCisgICAgWEFfU0VUX0dJRCgmbm9kZS5hdHRyLCBLR0lEVF9JTklUKDAp
KTsNCisjZW5kaWYNCiAgICAgWEFfU0VUX0FUSU1FKCZub2RlLmF0dHIsIDAp
Ow0KICAgICBYQV9TRVRfTVRJTUUoJm5vZGUuYXR0ciwgMCk7DQogICAgIFhB
X1NFVF9DVElNRSgmbm9kZS5hdHRyLCAwKTsNCkBAIC0xNTksNyArMTY0LDEx
IEBAIG1ha2Vfcm9vdCAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikNCiAgICAg
bm5wZnMtPnJvb3QgPSBpbm9kZTsNCiANCiAgICAgLyogWFhYIGVycm9yIGhh
bmRsaW5nICovDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9W
RVJTSU9OKDMsNCwwKQ0KICAgICBkcCA9IGRfYWxsb2Nfcm9vdChpbm9kZSk7
DQorI2Vsc2UNCisgICAgZHAgPSBkX21ha2Vfcm9vdChpbm9kZSk7DQorI2Vu
ZGlmDQogICAgIG5ucGZzX2RfaW5pdChkcCk7DQogICAgIHNiLT5zX3Jvb3Qg
PSBkcDsNCiAgICAgcmV0dXJuIDA7DQpAQCAtMTgzLDEzICsxOTIsMjcgQEAg
bm5wZnNfcmVhZF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICogcw0KICAg
ICBOTlBGU0RFQihYREVCVkZPUFMsICgibm5wZnNfcmVhZF9zdXBlcjogYmVn
aW4gc2V0dGluZyB2YXJpYWJsZXNcbiIpKTsNCiANCiAgICAgaWYgKGRhdGEg
IT0gTlVMTCkgew0KKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxf
VkVSU0lPTigzLDE5LDApDQogCXN0cnVjdCBuYW1laWRhdGEgbmQ7DQorI2Vs
c2UNCisJc3RydWN0IHBhdGggcGF0aDsNCisjZW5kaWYNCiAJDQorI2lmIExJ
TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzOSkNCiAJ
ZXJyb3IgPSBwYXRoX2xvb2t1cChkYXRhLCAwLCAmbmQpOw0KKyNlbGlmIExJ
TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsMTksMCkNCisJ
ZXJyb3IgPSBrZXJuX3BhdGgoZGF0YSwgMCwgJm5kLnBhdGgpOw0KKyNlbHNl
DQorCWVycm9yID0ga2Vybl9wYXRoKGRhdGEsIDAsICZwYXRoKTsNCisjZW5k
aWYNCiAJaWYgKGVycm9yKQ0KIAkgICAgZGRldiA9IEVSUl9QVFIoZXJyb3Ip
Ow0KIAllbHNlDQotCSAgICBkZGV2ID0gbmQuZGVudHJ5Ow0KKyNpZiBMSU5V
WF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDE5LDApDQorCSAg
ICBkZGV2ID0gbmQucGF0aC5kZW50cnk7DQorI2Vsc2UNCisJICAgIGRkZXYg
PSBwYXRoLmRlbnRyeTsNCisjZW5kaWYNCiANCiAJaWYgKCFJU19FUlIoZGRl
dikpIHsNCiAJICAgIG1pbm9yZGV2aWNlID0gTUlOT1IoZGRldi0+ZF9pbm9k
ZS0+aV9yZGV2KTsNCkBAIC0yMzMsNyArMjU2LDcgQEAgbm5wZnNfZmlsbF9z
dXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYg0KICAgICByZXR1cm4gMDsN
CiB9DQogDQotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVS
U0lPTigyLDYsMTgpDQorI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5F
TF9WRVJTSU9OKDIsNiwzOSkNCiBpbnQNCiBubnBmc19nZXRfc2Ioc3RydWN0
IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsDQogCSAgICAgaW50IGZsYWdz
LCBjb25zdCBjaGFyICpkZXZfbmFtZSwNCkBAIC0yNDIsMTkgKzI2NSwyMiBA
QCBubnBmc19nZXRfc2Ioc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzDQog
ICAgIHJldHVybiBnZXRfc2Jfbm9kZXYoZnNfdHlwZSwgZmxhZ3MsIGRhdGEs
IG5ucGZzX2ZpbGxfc3VwZXIsIG1udCk7DQogfQ0KICNlbHNlDQotc3RydWN0
IHN1cGVyX2Jsb2NrICoNCi1ubnBmc19nZXRfc2IgKHN0cnVjdCBmaWxlX3N5
c3RlbV90eXBlICpmc190eXBlLA0KLQkgICAgICBpbnQgZmxhZ3MsIGNvbnN0
IGNoYXIgKmRldl9uYW1lLCB2b2lkICpkYXRhKSANCitzdHJ1Y3QgZGVudHJ5
Kg0KK25ucGZzX21vdW50KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190
eXBlLA0KKwkgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUs
DQorCSAgICAgdm9pZCAqZGF0YSkgDQogew0KLSAgICByZXR1cm4gZ2V0X3Ni
X25vZGV2KGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBubnBmc19maWxsX3N1cGVy
KTsNCisgICAgcmV0dXJuIG1vdW50X25vZGV2KGZzX3R5cGUsIGZsYWdzLCBk
YXRhLCBubnBmc19maWxsX3N1cGVyKTsNCiB9DQogI2VuZGlmDQogDQorI2lm
IExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNiwwKQ0K
IHN0YXRpYyB2b2lkDQogbm5wZnNfd3JpdGVfc3VwZXIoc3RydWN0IHN1cGVy
X2Jsb2NrICogc2IpDQogew0KICAgICBzYi0+c19kaXJ0ID0gMDsNCiB9DQor
I2VuZGlmDQogDQogLyoNCiAgKiBYWFggaXMgdGhpcyBnb29kPyANCkBAIC0y
NzMsNzMgKzI5OSw2IEBAIG5ucGZzX3B1dF9zdXBlcihzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKnNiKQ0KICAgICBOTlBGU0RFQihYREVCVkZPUFMsICgibm5wZnNf
cHV0X3N1cGVyIGV4aXRpbmdcbiIpKTsNCiB9DQogDQotc3RhdGljIHZvaWQN
Ci1ubnBmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpDQotew0K
LSAgICBOTlBGU0RFQihYREVCVkZPUFMsKCJubnBmc19yZWFkX2lub2RlIHN0
YXJ0aW5nIGlub2RlOiAlcFxuIixpbm9kZSkpOw0KLSAgICBOTlBGU0RFQihY
REVCVkZPUFMsKCJubnBmc19yZWFkX2lub2RlIGlub2RlLT5pX2lubzogJWxk
XG4iLGlub2RlLT5pX2lubykpOw0KLSNpZiBMSU5VWF9WRVJTSU9OX0NPREUg
PCBLRVJORUxfVkVSU0lPTigyLDYsMTkpDQotICAgIGlub2RlLT5pX2Jsa3Np
emUgPSAxMDI0Ow0KLSNlbmRpZg0KLSAgICBpbm9kZS0+aV9tb2RlID0gMDsN
Ci0gICAgaW5vZGUtPmlfb3AgPSBOVUxMOw0KLSAgICBOTlBGU0RFQihYREVC
VkZPUFMsKCJubnBmc19yZWFkX2lub2RlIGV4aXRpbmdcbiIpKTsNCi19DQot
IA0KLS8qDQotICogQ2FsbGVkIHdoZW4gYGlub2RlJyBpcyBkZS1yZWZlcmVu
Y2VkLCBpZSB3aGVuIGlwdXQgaXMgY2FsbGVkLg0KLSAqLw0KLQ0KLXN0YXRp
YyB2b2lkDQotbm5wZnNfcHV0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUp
DQotew0KLSAgICBzdHJ1Y3Qgbm5wZnNfbm9kZSAqeG4gPSBWTk9ERV9UT19Y
Tk9ERShpbm9kZSk7DQotICAgIHN0cnVjdCBubnBmcyAqbm5wZnNwID0gTk5Q
RlNfRlJPTV9WTk9ERShpbm9kZSk7DQotICAgIGludCBiYWQ7DQotDQotICAg
IE5OUEZTREVCKFhERUJWRk9QUywoIm5ucGZzX3B1dF9pbm9kZTogaW5vZGU6
ICVwIGNvdW50OiAlZCBhbGlhc2VzOiIsDQotCQkJaW5vZGUsIG5ucGZzX2lj
b3VudChpbm9kZSkpKTsNCi0gICAgbm5wZnNfcHJpbnRfYWxpYXNlcyhpbm9k
ZSk7DQotICAgIA0KLSAgICBkb3duKCZubnBmc3AtPmluYWN0aXZlX3NlbSk7
DQotDQotICAgIGlmICgobm5wZnNwLT5zdGF0dXMgJiBOTlBGU19ERVZPUEVO
KSA9PSAwKSB7DQotCWlmICghaXNfYmFkX2lub2RlKGlub2RlKSkgew0KLQkg
ICAgaWYgKGlub2RlICE9IG5ucGZzcC0+cm9vdCkgew0KLQkJbWFrZV9iYWRf
aW5vZGUoaW5vZGUpOw0KLQkJbm5wZnNfaXJlbGUoaW5vZGUpOyAvKiBzZWUg
bm5wZnNfbm9kZV9hZGQoKSAqLw0KLQkgICAgfQ0KLQkgICAgeG4tPmZsYWdz
IHw9IE5OUEZTX1NUQUxFOw0KLQl9DQotCWJhZCA9IDE7IC8qIG9yIHJvb3Qs
IHJlYWxseSAqLw0KLSAgICB9IGVsc2Ugew0KLQliYWQgPSBpc19iYWRfaW5v
ZGUoaW5vZGUpOw0KLSAgICB9DQotDQotICAgIGlmICh4bi0+ZmxhZ3MgJiBO
TlBGU19TVEFMRSAmJiAhbm5wZnNfbm9kZV91c2Vycyhpbm9kZSkpIHsNCi0J
eG4tPmZsYWdzIHw9IE5OUEZTX05PREVfSVBVVDsgLyogWFhYIGxvY2tpbmcg
Ki8NCi0gIAlubnBmc19mb3JjZV9pbnZhbGlkX25vZGUoeG4pOw0KLQl4bi0+
ZmxhZ3MgJj0gfk5OUEZTX05PREVfSVBVVDsNCi0gICAgfQ0KLSAgICANCi0g
ICAgaWYgKGJhZCkgew0KLQlpZiAobm5wZnNfaWNvdW50KGlub2RlKSA9PSAx
KQ0KLQkgICAgbm5wZnNfbm9kZV9jbGVhcih4bik7DQotICAgIH0gZWxzZSBp
ZiAobm5wZnNfaWNvdW50KGlub2RlKSA9PSAyKSB7DQotCS8qIA0KLQkgKiBU
aGUgbGFzdCBleHRlcm5hbCByZWZlcmVuY2UgaXMgYmVpbmcgZHJvcHBlZCwg
b25seSB0aGUgb25lDQotCSAqIGZyb20gbm5wZnNfbm9kZV9hZGQoKSBpcyBs
ZWZ0LiBUaW1lIHRvIGxldCBkYWVtb24gcmVsZWFzZQ0KLQkgKiB0aGlzIG5v
ZGUgcHJvcGVybHkuDQotCSAqLw0KLQlpZiAoKHhuLT5mbGFncyAmIE5OUEZT
X0xJTUJPKSA9PSAwKSB7DQotCSAgICBubnBmc19ub2RlX2NsZWFyKHhuKTsN
Ci0JICAgIG5ucGZzX3F1ZXVlX2luYWN0aXZlKHhuKTsNCi0JfQ0KLSAgICB9
DQotDQotICAgIHVwKCZubnBmc3AtPmluYWN0aXZlX3NlbSk7DQotfQ0KLQ0K
IHN0YXRpYyBpbnQNCiBubnBmc19zdGF0ZnNfaW50KHN0cnVjdCBzdXBlcl9i
bG9jayAqc2IsIHN0cnVjdCBrc3RhdGZzICpidWYpDQogew0KQEAgLTM1Miwy
NSArMzExLDIxIEBAIG5ucGZzX3N0YXRmc19pbnQoc3RydWN0IHN1cGVyX2Js
b2NrICpzYiwNCiAgICAgdG1wLmZfYmF2YWlsICA9IDEwMjQqMTAyNCoyLTUw
Ow0KICAgICB0bXAuZl9maWxlcyAgID0gMTAyNCoxMDI0Ow0KICAgICB0bXAu
Zl9mZnJlZSAgID0gMTAyNCoxMDI0LTEwMDsNCisgICAgdG1wLmZfZnNpZC52
YWxbMF0gPSAwOw0KKyAgICB0bXAuZl9mc2lkLnZhbFsxXSA9IDA7DQogICAg
IHRtcC5mX25hbWVsZW4gPSBOQU1FX01BWDsNCisgICAgdG1wLmZfZnJzaXpl
ICA9IDA7DQorICAgIHRtcC5mX3NwYXJlWzBdID0gMDsNCisgICAgdG1wLmZf
c3BhcmVbMV0gPSAwOw0KKyAgICB0bXAuZl9zcGFyZVsyXSA9IDA7DQorICAg
IHRtcC5mX3NwYXJlWzNdID0gMDsNCisgICAgdG1wLmZfc3BhcmVbNF0gPSAw
Ow0KICAgICAqYnVmID0gdG1wOw0KICAgICByZXR1cm4gMDsNCiB9DQogDQot
I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDYs
MTgpDQotDQogc3RhdGljIGludA0KIG5ucGZzX3N0YXRmcyhzdHJ1Y3QgZGVu
dHJ5ICpkZW50cnksIHN0cnVjdCBrc3RhdGZzICpidWYpDQogew0KICAgICBy
ZXR1cm4gbm5wZnNfc3RhdGZzX2ludChkZW50cnktPmRfc2IsIGJ1Zik7DQog
fQ0KLQ0KLSNlbHNlDQotDQotc3RhdGljIGludA0KLW5ucGZzX3N0YXRmcyhz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQ0K
LXsNCi0gICAgcmV0dXJuIG5ucGZzX3N0YXRmc19pbnQoc2IsIGJ1Zik7DQot
fQ0KLQ0KLSNlbmRpZg0K

---276651502-971852446-1452952049=:16393
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Arla-drinkers mailing list
Arla-drinkers@stacken.kth.se
https://lists.stacken.kth.se/mailman/listinfo/arla-drinkers

---276651502-971852446-1452952049=:16393--

home help back first fref pref prev next nref lref last post