public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* other/10890: internal compiler error: in merge_assigned_reloads, at reload1.c:6134
@ 2003-05-20 21:56 rfreund
  0 siblings, 0 replies; only message in thread
From: rfreund @ 2003-05-20 21:56 UTC (permalink / raw)
  To: gcc-gnats


>Number:         10890
>Category:       other
>Synopsis:       internal compiler error: in merge_assigned_reloads, at reload1.c:6134
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue May 20 21:56:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     rfreund@uos.de
>Release:        3.3
>Organization:
>Environment:
linux x86
>Description:
note that I submitted this bug before, but forgot some information.

the compiler stops with the following message (when trying to compile linux 2.4.21-rc2):

sched.c: In function `schedule':
sched.c:709: internal compiler error: in merge_assigned_reloads, at reload1.c:6134

some info about gcc:
 --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --enable-languages=c,c++,f77,objc,java,ada --disable-checking --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit i486-suse-linux
Thread model: posix
gcc-Version 3.3
>How-To-Repeat:
gcc -D__KERNEL__ -I/usr/src/linux-2.4.20/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=pentium3 -mcpu=pentium4   -nostdinc -iwithprefix include -DKBUILD_BASENAME=sched  -fno-omit-frame-pointer -c -o sched.o sched.c
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="sched.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="sched.i"

IyAxICJzY2hlZC5jIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4iCiMgMSAi
c2NoZWQuYyIKIyAyMiAic2NoZWQuYyIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9jb25maWcuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2F1dG9jb25mLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9jb25maWcuaCIgMgojIDIzICJzY2hlZC5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvbW0uaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9hc20vcGFyYW0uaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiIDIKCmV4dGVybiB1bnNpZ25lZCBsb25nIGV2ZW50OwoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcHRyYWNlLmgiIDEKIyAyNCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcHRyYWNlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAxCiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKc3RydWN0IHB0X3JlZ3MgewogICAgICAgIGxvbmcgZWJ4
OwogICAgICAgIGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4OwogICAgICAgIGxvbmcgZXNpOwog
ICAgICAgIGxvbmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAgICAgIGxvbmcgZWF4OwogICAg
ICAgIGludCB4ZHM7CiAgICAgICAgaW50IHhlczsKICAgICAgICBsb25nIG9yaWdfZWF4OwogICAg
ICAgIGxvbmcgZWlwOwogICAgICAgIGludCB4Y3M7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAg
ICAgbG9uZyBlc3A7CiAgICAgICAgaW50IHhzczsKfTsKIyA2MCAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvYXNtL3B0cmFjZS5oIgpleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0
X3JlZ3MgKik7CiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3B0cmFj
ZS5oIiAyCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYmluZm10cy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5o
IiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHku
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMg
MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMQoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMgNSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMgojIDM2ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIgp0eXBlZGVm
IHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmZHNfYml0cyBbKDEwMjQvKDggKiBzaXpl
b2YodW5zaWduZWQgbG9uZykpKV07Cn0gX19rZXJuZWxfZmRfc2V0OwoKCnR5cGVkZWYgdm9pZCAo
Kl9fa2VybmVsX3NpZ2hhbmRsZXJfdCkoaW50KTsKCgp0eXBlZGVmIGludCBfX2tlcm5lbF9rZXlf
dDsKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgi
IDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgi
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZGV2X3Q7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBfX2tlcm5lbF9pbm9fdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9tb2Rl
X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfbmxpbmtfdDsKdHlwZWRlZiBsb25n
IF9fa2VybmVsX29mZl90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9waWRfdDsKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBfX2tlcm5lbF9pcGNfcGlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19r
ZXJuZWxfdWlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZ2lkX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX3NpemVfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfc3Np
emVfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfcHRyZGlmZl90Owp0eXBlZGVmIGxvbmcgX19rZXJu
ZWxfdGltZV90Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9u
ZyBfX2tlcm5lbF9jbG9ja190Owp0eXBlZGVmIGludCBfX2tlcm5lbF9kYWRkcl90Owp0eXBlZGVm
IGNoYXIgKiBfX2tlcm5lbF9jYWRkcl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVs
X3VpZDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZ2lkMTZfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfdWlkMzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19r
ZXJuZWxfZ2lkMzJfdDsKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfb2xkX3VpZF90
Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX29sZF9naWRfdDsKCgp0eXBlZGVmIGxv
bmcgbG9uZyBfX2tlcm5lbF9sb2ZmX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAgICAgICBpbnQg
dmFsWzJdOwoKCgp9IF9fa2VybmVsX2ZzaWRfdDsKIyA0NyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMgojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL3R5cGVzLmgiIDEKCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1bW9kZV90OwoK
CgoKCgp0eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
X191ODsKCnR5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBfX3MxNjsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBfX3UxNjsKCnR5cGVkZWYgX19zaWduZWRfXyBpbnQgX19zMzI7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fdTMyOwoKCnR5cGVkZWYgX19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7CnR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwojIDMyICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vdHlwZXMuaCIKdHlwZWRlZiBzaWduZWQgY2hhciBzODsKdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIHU4OwoKdHlwZWRlZiBzaWduZWQgc2hvcnQgczE2Owp0eXBlZGVmIHVuc2lnbmVk
IHNob3J0IHUxNjsKCnR5cGVkZWYgc2lnbmVkIGludCBzMzI7CnR5cGVkZWYgdW5zaWduZWQgaW50
IHUzMjsKCnR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBzNjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBsb25nIHU2NDsKIyA1MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3R5cGVz
LmgiCnR5cGVkZWYgdTMyIGRtYV9hZGRyX3Q7Cgp0eXBlZGVmIHU2NCBkbWE2NF9hZGRyX3Q7CiMg
MTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDIKCgoKdHlw
ZWRlZiBfX2tlcm5lbF9mZF9zZXQgZmRfc2V0Owp0eXBlZGVmIF9fa2VybmVsX2Rldl90IGRldl90
Owp0eXBlZGVmIF9fa2VybmVsX2lub190IGlub190Owp0eXBlZGVmIF9fa2VybmVsX21vZGVfdCBt
b2RlX3Q7CnR5cGVkZWYgX19rZXJuZWxfbmxpbmtfdCBubGlua190Owp0eXBlZGVmIF9fa2VybmVs
X29mZl90IG9mZl90Owp0eXBlZGVmIF9fa2VybmVsX3BpZF90IHBpZF90Owp0eXBlZGVmIF9fa2Vy
bmVsX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2tlcm5lbF9rZXlfdCBrZXlfdDsKdHlwZWRl
ZiBfX2tlcm5lbF9zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgp0eXBlZGVmIF9fa2VybmVsX3Vp
ZDMyX3QgdWlkX3Q7CnR5cGVkZWYgX19rZXJuZWxfZ2lkMzJfdCBnaWRfdDsKdHlwZWRlZiBfX2tl
cm5lbF91aWQxNl90IHVpZDE2X3Q7CnR5cGVkZWYgX19rZXJuZWxfZ2lkMTZfdCBnaWQxNl90OwoK
Cgp0eXBlZGVmIF9fa2VybmVsX29sZF91aWRfdCBvbGRfdWlkX3Q7CnR5cGVkZWYgX19rZXJuZWxf
b2xkX2dpZF90IG9sZF9naWRfdDsKIyA1MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvdHlwZXMuaCIKdHlwZWRlZiBfX2tlcm5lbF9sb2ZmX3QgbG9mZl90OwojIDYxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90eXBlcy5oIgp0eXBlZGVmIF9fa2VybmVs
X3NpemVfdCBzaXplX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX3NzaXplX3Qgc3NpemVfdDsKCgoK
CnR5cGVkZWYgX19rZXJuZWxfcHRyZGlmZl90IHB0cmRpZmZfdDsKCgoKCnR5cGVkZWYgX19rZXJu
ZWxfdGltZV90IHRpbWVfdDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfY2xvY2tfdCBjbG9ja190OwoK
CgoKdHlwZWRlZiBfX2tlcm5lbF9jYWRkcl90IGNhZGRyX3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQg
Y2hhciB1X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7CgoKdHlwZWRlZiB1
bnNpZ25lZCBjaGFyIHVuY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IHVpbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKCgoKCnR5
cGVkZWYgX191OCB1X2ludDhfdDsKdHlwZWRlZiBfX3M4IGludDhfdDsKdHlwZWRlZiBfX3UxNiB1
X2ludDE2X3Q7CnR5cGVkZWYgX19zMTYgaW50MTZfdDsKdHlwZWRlZiBfX3UzMiB1X2ludDMyX3Q7
CnR5cGVkZWYgX19zMzIgaW50MzJfdDsKCgoKdHlwZWRlZiBfX3U4IHVpbnQ4X3Q7CnR5cGVkZWYg
X191MTYgdWludDE2X3Q7CnR5cGVkZWYgX191MzIgdWludDMyX3Q7CgoKdHlwZWRlZiBfX3U2NCB1
aW50NjRfdDsKdHlwZWRlZiBfX3U2NCB1X2ludDY0X3Q7CnR5cGVkZWYgX19zNjQgaW50NjRfdDsK
IyAxMzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnN0cnVj
dCB1c3RhdCB7CiAgICAgICAgX19rZXJuZWxfZGFkZHJfdCBmX3RmcmVlOwogICAgICAgIF9fa2Vy
bmVsX2lub190IGZfdGlub2RlOwogICAgICAgIGNoYXIgZl9mbmFtZVs2XTsKICAgICAgICBjaGFy
IGZfZnBhY2tbNl07Cn07CiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2NhcGFiaWxpdHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKIyAx
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxCiMgMTIgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC93YWl0LmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvd2FpdC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2tlcm5lbC5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L2tlcm5lbC5oIgojIDEgIi91c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzMuMy9p
bmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAojIDQzICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1s
aW51eC8zLjMvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3Qg
X19nbnVjX3ZhX2xpc3Q7CiMgMTA1ICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8z
LjMvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsK
IyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDIKCgoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jb21waWxlci5oIiAxCiMg
MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAxCiMgMTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIKc3RhdGljIF9faW5s
aW5lX18gX19jb25zdF9fIF9fdTMyIF9fX2FyY2hfX3N3YWIzMihfX3UzMiB4KQp7CgogICAgICAg
IF9fYXNtX18oImJzd2FwICUwIiA6ICI9ciIgKHgpIDogIjAiICh4KSk7CgoKCgoKCgogICAgICAg
IHJldHVybiB4Owp9CgoKCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UxNiBfX19hcmNo
X19zd2FiMTYoX191MTYgeCkKewogICAgICAgIF9fYXNtX18oInhjaGdiICViMCwlaDAiCiAgICAg
ICAgICAgICAgICA6ICI9cSIgKHgpCiAgICAgICAgICAgICAgICA6ICIwIiAoeCkpOwogICAgICAg
ICAgICAgICAgcmV0dXJuIHg7Cn0KCgpzdGF0aWMgaW5saW5lIF9fdTY0IF9fX2FyY2hfX3N3YWI2
NChfX3U2NCB2YWwpCnsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgeyBf
X3UzMiBhLGI7IH0gczsKICAgICAgICAgICAgICAgIF9fdTY0IHU7CiAgICAgICAgfSB2OwogICAg
ICAgIHYudSA9IHZhbDsKCiAgICAgICAgYXNtKCJic3dhcGwgJTAgOyBic3dhcGwgJTEgOyB4Y2hn
bCAlMCwlMSIKICAgICAgICAgICAgOiAiPXIiICh2LnMuYSksICI9ciIgKHYucy5iKQogICAgICAg
ICAgICA6ICIwIiAodi5zLmEpLCAiMSIgKHYucy5iKSk7CgoKCgoKICAgICAgICByZXR1cm4gdi51
Owp9CiMgNjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxl
X2VuZGlhbi5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2J5
dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCIgMQojIDE1OSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCIKc3RhdGljIF9faW5saW5lX18gX19jb25z
dF9fIF9fdTE2IF9fZnN3YWIxNihfX3UxNiB4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3
YWIxNih4KTsKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3UxNiBfX3N3YWIxNnAoX191MTYgKngpCnsK
ICAgICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjE2KCooeCkpOwp9CnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgX19zd2FiMTZzKF9fdTE2ICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFkZHIpID0gX19f
YXJjaF9fc3dhYjE2KCooKGFkZHIpKSk7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgX19pbmxpbmVf
XyBfX2NvbnN0X18gX191MzIgX19mc3dhYjI0KF9fdTMyIHgpCnsKICAgICAgICByZXR1cm4gKHsg
X191MzIgX190bXAgPSAoeCkgOyAoeyBfX3UzMiBfX3ggPSAoX190bXApOyAoKF9fdTMyKSggKChf
X3ggJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAxNikgfCAoX194ICYgKF9fdTMyKTB4MDAwMGZm
MDBVTCkgfCAoKF9feCAmIChfX3UzMikweDAwZmYwMDAwVUwpID4+IDE2KSApKTsgfSk7IH0pOwp9
CnN0YXRpYyBfX2lubGluZV9fIF9fdTMyIF9fc3dhYjI0cChfX3UzMiAqeCkKewogICAgICAgIHJl
dHVybiAoeyBfX3UzMiBfX3RtcCA9ICgqKHgpKSA7ICh7IF9fdTMyIF9feCA9IChfX3RtcCk7ICgo
X191MzIpKCAoKF9feCAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDE2KSB8IChfX3ggJiAoX191
MzIpMHgwMDAwZmYwMFVMKSB8ICgoX194ICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gMTYpICkp
OyB9KTsgfSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3N3YWIyNHMoX191MzIgKmFkZHIp
CnsKICAgICAgICBkbyB7ICooYWRkcikgPSAoeyBfX3UzMiBfX3RtcCA9ICgqKChhZGRyKSkpIDsg
KHsgX191MzIgX194ID0gKF9fdG1wKTsgKChfX3UzMikoICgoX194ICYgKF9fdTMyKTB4MDAwMDAw
ZmZVTCkgPDwgMTYpIHwgKF9feCAmIChfX3UzMikweDAwMDBmZjAwVUwpIHwgKChfX3ggJiAoX191
MzIpMHgwMGZmMDAwMFVMKSA+PiAxNikgKSk7IH0pOyB9KTsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRp
YyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UzMiBfX2Zzd2FiMzIoX191MzIgeCkKewogICAgICAg
IHJldHVybiBfX19hcmNoX19zd2FiMzIoeCk7Cn0Kc3RhdGljIF9faW5saW5lX18gX191MzIgX19z
d2FiMzJwKF9fdTMyICp4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3YWIzMigqKHgpKTsK
fQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc3dhYjMycyhfX3UzMiAqYWRkcikKewogICAgICAg
IGRvIHsgKihhZGRyKSA9IF9fX2FyY2hfX3N3YWIzMigqKChhZGRyKSkpOyB9IHdoaWxlICgwKTsK
fQoKCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3U2NCBfX2Zzd2FiNjQoX191NjQgeCkK
ewoKCgoKCiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3YWI2NCh4KTsKCn0Kc3RhdGljIF9faW5s
aW5lX18gX191NjQgX19zd2FiNjRwKF9fdTY0ICp4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hf
X3N3YWI2NCgqKHgpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc3dhYjY0cyhfX3U2NCAq
YWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9IF9fX2FyY2hfX3N3YWI2NCgqKChhZGRyKSkp
OyB9IHdoaWxlICgwKTsKfQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIiAyCiMgODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIgMQojIDE1MCAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIK
ZXh0ZXJuIF9fdTMyIG50b2hsKF9fdTMyKTsKZXh0ZXJuIF9fdTMyIGh0b25sKF9fdTMyKTsKCgoK
CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgbnRvaHModW5zaWduZWQgc2hvcnQgaW50KTsKZXh0
ZXJuIHVuc2lnbmVkIHNob3J0IGludCBodG9ucyh1bnNpZ25lZCBzaG9ydCBpbnQpOwojIDgzICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlh
bi5oIiAyCiMgNjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIu
aCIgMgojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIg
MgojIDQxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKZXh0
ZXJuIGludCBjb25zb2xlX3ByaW50a1tdOwojIDU4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9rZXJuZWwuaCIKc3RydWN0IGNvbXBsZXRpb247CgpleHRlcm4gc3RydWN0IG5v
dGlmaWVyX2Jsb2NrICpwYW5pY19ub3RpZmllcl9saXN0Owogdm9pZCBwYW5pYyhjb25zdCBjaGFy
ICogZm10LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuLCBmb3JtYXQgKHBy
aW50ZiwgMSwgMikpKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIGRvX2V4aXQo
bG9uZyBlcnJvcl9jb2RlKQogICAgICAgIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiB2b2lk
IGNvbXBsZXRlX2FuZF9leGl0KHN0cnVjdCBjb21wbGV0aW9uICosIGxvbmcpCiAgICAgICAgX19h
dHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKZXh0ZXJuIGludCBhYnMoaW50KTsKZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgc2ltcGxlX3N0cnRvdWwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50
KTsKZXh0ZXJuIGxvbmcgc2ltcGxlX3N0cnRvbChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25l
ZCBpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIHNpbXBsZV9zdHJ0b3VsbChjb25zdCBj
aGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpleHRlcm4gbG9uZyBsb25nIHNpbXBsZV9zdHJ0
b2xsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBpbnQgc3ByaW50
ZihjaGFyICogYnVmLCBjb25zdCBjaGFyICogZm10LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVf
XyAoKGZvcm1hdCAocHJpbnRmLCAyLCAzKSkpOwpleHRlcm4gaW50IHZzcHJpbnRmKGNoYXIgKmJ1
ZiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKZXh0ZXJuIGludCBzbnByaW50ZihjaGFyICogYnVm
LCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRl
X18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIGludCB2c25wcmludGYoY2hhciAq
YnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwoKZXh0ZXJu
IGludCBzc2NhbmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikKICAgICAgICBfX2F0
dHJpYnV0ZV9fICgoZm9ybWF0IChzY2FuZiwyLDMpKSk7CmV4dGVybiBpbnQgdnNzY2FuZihjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CgpleHRlcm4gaW50IGdldF9vcHRpb24o
Y2hhciAqKnN0ciwgaW50ICpwaW50KTsKZXh0ZXJuIGNoYXIgKmdldF9vcHRpb25zKGNoYXIgKnN0
ciwgaW50IG5pbnRzLCBpbnQgKmludHMpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIG1lbXBh
cnNlKGNoYXIgKnB0ciwgY2hhciAqKnJldHB0cik7CmV4dGVybiB2b2lkIGRldl9wcm9iZV9sb2Nr
KHZvaWQpOwpleHRlcm4gdm9pZCBkZXZfcHJvYmVfdW5sb2NrKHZvaWQpOwoKZXh0ZXJuIGludCBz
ZXNzaW9uX29mX3BncnAoaW50IHBncnApOwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBp
bnQgcHJpbnRrKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9fICgo
Zm9ybWF0IChwcmludGYsIDEsIDIpKSk7CgpzdGF0aWMgaW5saW5lIHZvaWQgY29uc29sZV9zaWxl
bnQodm9pZCkKewogICAgICAgIChjb25zb2xlX3ByaW50a1swXSkgPSAwOwp9CgpzdGF0aWMgaW5s
aW5lIHZvaWQgY29uc29sZV92ZXJib3NlKHZvaWQpCnsKICAgICAgICBpZiAoKGNvbnNvbGVfcHJp
bnRrWzBdKSkKICAgICAgICAgICAgICAgIChjb25zb2xlX3ByaW50a1swXSkgPSAxNTsKfQoKZXh0
ZXJuIHZvaWQgYnVzdF9zcGlubG9ja3MoaW50IHllcyk7CmV4dGVybiBpbnQgb29wc19pbl9wcm9n
cmVzczsKCmV4dGVybiBpbnQgdGFpbnRlZDsKZXh0ZXJuIGNvbnN0IGNoYXIgKnByaW50X3RhaW50
ZWQodm9pZCk7CgpleHRlcm4gdm9pZCBkdW1wX3N0YWNrKHZvaWQpOwojIDE3NCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgva2VybmVsLmgiCmV4dGVybiB2b2lkIF9fb3V0X29m
X2xpbmVfYnVnKGludCBsaW5lKSBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwoKCgoKCnN0cnVj
dCBzeXNpbmZvIHsKICAgICAgICBsb25nIHVwdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxv
YWRzWzNdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdG90YWxyYW07CiAgICAgICAgdW5zaWduZWQg
bG9uZyBmcmVlcmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2hhcmVkcmFtOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgYnVmZmVycmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdG90YWxzd2FwOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZXN3YXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcHJv
Y3M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdG90
YWxoaWdoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZWhpZ2g7CiAgICAgICAgdW5zaWduZWQg
aW50IG1lbV91bml0OwogICAgICAgIGNoYXIgX2ZbMjAtMipzaXplb2YobG9uZyktc2l6ZW9mKGlu
dCldOwp9OwojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC93YWl0Lmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKCgoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDEK
IyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDEKIyAxMCAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS92bTg2LmgiIDEKIyA2OCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL3ZtODYuaCIKc3RydWN0IHZtODZfcmVncyB7CgoKCiAgICAg
ICAgbG9uZyBlYng7CiAgICAgICAgbG9uZyBlY3g7CiAgICAgICAgbG9uZyBlZHg7CiAgICAgICAg
bG9uZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7CiAgICAgICAgbG9uZyBlYnA7CiAgICAgICAgbG9u
ZyBlYXg7CiAgICAgICAgbG9uZyBfX251bGxfZHM7CiAgICAgICAgbG9uZyBfX251bGxfZXM7CiAg
ICAgICAgbG9uZyBfX251bGxfZnM7CiAgICAgICAgbG9uZyBfX251bGxfZ3M7CiAgICAgICAgbG9u
ZyBvcmlnX2VheDsKICAgICAgICBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjcywg
X19jc2g7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9uZyBlc3A7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc3MsIF9fc3NoOwoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGVzLCBfX2Vz
aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKfTsKCnN0cnVj
dCByZXZlY3RvcmVkX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX21hcFs4XTsKfTsK
CnN0cnVjdCB2bTg2X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtODZfcmVncyByZWdzOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0
bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJldmVj
dG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0
cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwp9OwoKCgoKCgpzdHJ1Y3Qgdm04NnBsdXNfaW5mb19zdHJ1
Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZm9yY2VfcmV0dXJuX2Zvcl9waWM6MTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHZtODZkYmdfYWN0aXZlOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2
bTg2ZGJnX1RGcGVuZGlnOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyB1bnVzZWQ6Mjg7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBpc192bTg2cHVzOjE7CiAgICAgICAgdW5zaWduZWQgY2hhciB2bTg2
ZGJnX2ludHh4dGFiWzMyXTsKfTsKCnN0cnVjdCB2bTg2cGx1c19zdHJ1Y3QgewogICAgICAgIHN0
cnVjdCB2bTg2X3JlZ3MgcmVnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc2NyZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdV90
eXBlOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnRfcmV2ZWN0b3JlZDsKICAg
ICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50MjFfcmV2ZWN0b3JlZDsKICAgICAgICBz
dHJ1Y3Qgdm04NnBsdXNfaW5mb19zdHJ1Y3Qgdm04NnBsdXM7Cn07CiMgMTQ1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdm04Ni5oIgpzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyB7
CgoKCiAgICAgICAgbG9uZyBlYng7CiAgICAgICAgbG9uZyBlY3g7CiAgICAgICAgbG9uZyBlZHg7
CiAgICAgICAgbG9uZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7CiAgICAgICAgbG9uZyBlYnA7CiAg
ICAgICAgbG9uZyBlYXg7CiAgICAgICAgbG9uZyBfX251bGxfZHM7CiAgICAgICAgbG9uZyBfX251
bGxfZXM7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAgICAgICBsb25nIGVpcDsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9u
ZyBlc3A7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwoKCgogICAgICAgIHVuc2ln
bmVkIHNob3J0IGVzLCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdz
LCBfX2dzaDsKfTsKCnN0cnVjdCBrZXJuZWxfdm04Nl9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBr
ZXJuZWxfdm04Nl9yZWdzIHJlZ3M7CiMgMTg0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9hc20vdm04Ni5oIgogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzY3JlZW5fYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAg
ICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0
cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2
bTg2cGx1c19pbmZvX3N0cnVjdCB2bTg2cGx1czsKICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVn
czMyOwojIDIwMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3ZtODYuaCIKfTsK
CnZvaWQgaGFuZGxlX3ZtODZfZmF1bHQoc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwgbG9uZyk7
CmludCBoYW5kbGVfdm04Nl90cmFwKHN0cnVjdCBrZXJuZWxfdm04Nl9yZWdzICosIGxvbmcsIGlu
dCk7CiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAxCgoK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCIgMQoj
IDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIgpzdHJ1
Y3QgX2ZwcmVnIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKfTsKCnN0cnVjdCBfZnB4cmVnIHsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBleHBv
bmVudDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nWzNdOwp9OwoKc3RydWN0IF94bW1y
ZWcgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZWxlbWVudFs0XTsKfTsKCnN0cnVjdCBfZnBzdGF0
ZSB7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgY3c7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdzsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHRhZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlwb2ZmOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgY3NzZWw7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhb2Zm
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YXNlbDsKICAgICAgICBzdHJ1Y3QgX2ZwcmVnIF9z
dFs4XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgbWFnaWM7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9meHNyX2Vudls2XTsKICAgICAgICB1
bnNpZ25lZCBsb25nIG14Y3NyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQ7CiAgICAg
ICAgc3RydWN0IF9mcHhyZWcgX2Z4c3Jfc3RbOF07CiAgICAgICAgc3RydWN0IF94bW1yZWcgX3ht
bVs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBhZGRpbmdbNTZdOwp9OwoKCgpzdHJ1Y3Qgc2ln
Y29udGV4dCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWRp
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWJwOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWJ4OwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZWR4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWN4OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZWF4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHJhcG5vOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZXJyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWlwOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVmbGFnczsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGVzcF9hdF9zaWduYWw7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c3MsIF9fc3NoOwogICAgICAgIHN0cnVjdCBfZnBzdGF0ZSAqIGZwc3RhdGU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBvbGRtYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3IyOwp9OwojIDUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAyCgppbnQgcmVzdG9y
ZV9pMzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICpidWYpOwppbnQgc2F2ZV9p
Mzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICogYnVmKTsKCgoKCgpzdHJ1Y3Qg
aW5mbyB7CiAgICAgICAgbG9uZyBfX19vcmlnX2VpcDsKICAgICAgICBsb25nIF9fX2VieDsKICAg
ICAgICBsb25nIF9fX2VjeDsKICAgICAgICBsb25nIF9fX2VkeDsKICAgICAgICBsb25nIF9fX2Vz
aTsKICAgICAgICBsb25nIF9fX2VkaTsKICAgICAgICBsb25nIF9fX2VicDsKICAgICAgICBsb25n
IF9fX2VheDsKICAgICAgICBsb25nIF9fX2RzOwogICAgICAgIGxvbmcgX19fZXM7CiAgICAgICAg
bG9uZyBfX19vcmlnX2VheDsKICAgICAgICBsb25nIF9fX2VpcDsKICAgICAgICBsb25nIF9fX2Nz
OwogICAgICAgIGxvbmcgX19fZWZsYWdzOwogICAgICAgIGxvbmcgX19fZXNwOwogICAgICAgIGxv
bmcgX19fc3M7CiAgICAgICAgbG9uZyBfX192bTg2X2VzOwogICAgICAgIGxvbmcgX19fdm04Nl9k
czsKICAgICAgICBsb25nIF9fX3ZtODZfZnM7CiAgICAgICAgbG9uZyBfX192bTg2X2dzOwp9Owoj
IDEyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc2VnbWVudC5oIiAxCiMgMTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyA0NSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL3BhZ2UuaCIKdHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBs
b25nIHB0ZV9sb3c7IH0gcHRlX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwbWQ7
IH0gcG1kX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwZ2Q7IH0gcGdkX3Q7CgoK
Cgp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcGdwcm90OyB9IHBncHJvdF90OwojIDEx
MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3BhZ2UuaCIKc3RhdGljIF9faW5s
aW5lX18gaW50IGdldF9vcmRlcih1bnNpZ25lZCBsb25nIHNpemUpCnsKICAgICAgICBpbnQgb3Jk
ZXI7CgogICAgICAgIHNpemUgPSAoc2l6ZS0xKSA+PiAoMTIgLTEpOwogICAgICAgIG9yZGVyID0g
LTE7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAgc2l6ZSA+Pj0gMTsKICAgICAgICAgICAg
ICAgIG9yZGVyKys7CiAgICAgICAgfSB3aGlsZSAoc2l6ZSk7CiAgICAgICAgcmV0dXJuIG9yZGVy
Owp9CiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIg
MgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIg
MQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAxCgoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9jYWNoZS5oIiAxCiMgNiAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMgojIDE4ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGhyZWFkcy5oIiAxCiMgMjAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDMzICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0cnVjdCBjcHVpbmZvX3g4NiB7CiAg
ICAgICAgX191OCB4ODY7CiAgICAgICAgX191OCB4ODZfdmVuZG9yOwogICAgICAgIF9fdTggeDg2
X21vZGVsOwogICAgICAgIF9fdTggeDg2X21hc2s7CiAgICAgICAgY2hhciB3cF93b3Jrc19vazsK
ICAgICAgICBjaGFyIGhsdF93b3Jrc19vazsKICAgICAgICBjaGFyIGhhcmRfbWF0aDsKICAgICAg
ICBjaGFyIHJmdTsKICAgICAgICBpbnQgY3B1aWRfbGV2ZWw7CiAgICAgICAgX191MzIgeDg2X2Nh
cGFiaWxpdHlbNF07CiAgICAgICAgY2hhciB4ODZfdmVuZG9yX2lkWzE2XTsKICAgICAgICBjaGFy
IHg4Nl9tb2RlbF9pZFs2NF07CiAgICAgICAgaW50IHg4Nl9jYWNoZV9zaXplOwoKICAgICAgICBp
bnQgZmRpdl9idWc7CiAgICAgICAgaW50IGYwMGZfYnVnOwogICAgICAgIGludCBjb21hX2J1ZzsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGxvb3BzX3Blcl9qaWZmeTsKICAgICAgICB1bnNpZ25lZCBs
b25nICpwZ2RfcXVpY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcG1kX3F1aWNrOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgKnB0ZV9xdWljazsKICAgICAgICB1bnNpZ25lZCBsb25nIHBndGFibGVf
Y2FjaGVfc3o7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpOwoj
IDc0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVy
biBzdHJ1Y3QgY3B1aW5mb194ODYgYm9vdF9jcHVfZGF0YTsKZXh0ZXJuIHN0cnVjdCB0c3Nfc3Ry
dWN0IGluaXRfdHNzWzMyXTsKCgpleHRlcm4gc3RydWN0IGNwdWluZm9feDg2IGNwdV9kYXRhW107
CiMgOTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0
ZXJuIGNoYXIgaWdub3JlX2lycTEzOwoKZXh0ZXJuIHZvaWQgaWRlbnRpZnlfY3B1KHN0cnVjdCBj
cHVpbmZvX3g4NiAqKTsKZXh0ZXJuIHZvaWQgcHJpbnRfY3B1X2luZm8oc3RydWN0IGNwdWluZm9f
eDg2ICopOwpleHRlcm4gdm9pZCBkb2RneV90c2Modm9pZCk7CiMgMTI3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBjcHVp
ZChpbnQgb3AsIGludCAqZWF4LCBpbnQgKmVieCwgaW50ICplY3gsIGludCAqZWR4KQp7CiAgICAg
ICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKCplYXgpLAogICAgICAg
ICAgICAgICAgICAiPWIiICgqZWJ4KSwKICAgICAgICAgICAgICAgICAgIj1jIiAoKmVjeCksCiAg
ICAgICAgICAgICAgICAgICI9ZCIgKCplZHgpCiAgICAgICAgICAgICAgICA6ICIwIiAob3ApKTsK
fQoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWF4KHVuc2lnbmVkIGludCBv
cCkKewogICAgICAgIHVuc2lnbmVkIGludCBlYXg7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgog
ICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpCiAgICAgICAgICAgICAgICA6ICIwIiAob3ApCiAg
ICAgICAgICAgICAgICA6ICJieCIsICJjeCIsICJkeCIpOwogICAgICAgIHJldHVybiBlYXg7Cn0K
c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWJ4KHVuc2lnbmVkIGludCBvcCkKewog
ICAgICAgIHVuc2lnbmVkIGludCBlYXgsIGVieDsKCiAgICAgICAgX19hc21fXygiY3B1aWQiCiAg
ICAgICAgICAgICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCkKICAgICAgICAgICAgICAgIDog
IjAiIChvcCkKICAgICAgICAgICAgICAgIDogImN4IiwgImR4IiApOwogICAgICAgIHJldHVybiBl
Yng7Cn0Kc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWN4KHVuc2lnbmVkIGludCBv
cCkKewogICAgICAgIHVuc2lnbmVkIGludCBlYXgsIGVjeDsKCiAgICAgICAgX19hc21fXygiY3B1
aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCksICI9YyIgKGVjeCkKICAgICAgICAgICAg
ICAgIDogIjAiIChvcCkKICAgICAgICAgICAgICAgIDogImJ4IiwgImR4IiApOwogICAgICAgIHJl
dHVybiBlY3g7Cn0Kc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRfZWR4KHVuc2lnbmVk
IGludCBvcCkKewogICAgICAgIHVuc2lnbmVkIGludCBlYXgsIGVkeDsKCiAgICAgICAgX19hc21f
XygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCksICI9ZCIgKGVkeCkKICAgICAg
ICAgICAgICAgIDogIjAiIChvcCkKICAgICAgICAgICAgICAgIDogImJ4IiwgImN4Iik7CiAgICAg
ICAgcmV0dXJuIGVkeDsKfQojIDIwNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNt
L3Byb2Nlc3Nvci5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBtbXVfY3I0X2ZlYXR1cmVzOwoKc3Rh
dGljIGlubGluZSB2b2lkIHNldF9pbl9jcjQgKHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAg
IG1tdV9jcjRfZmVhdHVyZXMgfD0gbWFzazsKICAgICAgICBfX2FzbV9fKCJtb3ZsICUlY3I0LCUl
ZWF4XG5cdCIKICAgICAgICAgICAgICAgICJvcmwgJTAsJSVlYXhcblx0IgogICAgICAgICAgICAg
ICAgIm1vdmwgJSVlYXgsJSVjcjRcbiIKICAgICAgICAgICAgICAgIDogOiAiaXJnIiAobWFzaykK
ICAgICAgICAgICAgICAgIDoiYXgiKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2luX2Ny
NCAodW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgbW11X2NyNF9mZWF0dXJlcyAmPSB+bWFz
azsKICAgICAgICBfX2FzbV9fKCJtb3ZsICUlY3I0LCUlZWF4XG5cdCIKICAgICAgICAgICAgICAg
ICJhbmRsICUwLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJtb3ZsICUlZWF4LCUlY3I0XG4i
CiAgICAgICAgICAgICAgICA6IDogImlyZyIgKH5tYXNrKQogICAgICAgICAgICAgICAgOiJheCIp
Owp9CiMgMjYyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
CmV4dGVybiBpbnQgTUNBX2J1czsKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCBtYWNoaW5lX2lkOwpl
eHRlcm4gdW5zaWduZWQgaW50IG1hY2hpbmVfc3VibW9kZWxfaWQ7CmV4dGVybiB1bnNpZ25lZCBp
bnQgQklPU19yZXZpc2lvbjsKZXh0ZXJuIHVuc2lnbmVkIGludCBtY2FfcGVudGl1bV9mbGFnOwoj
IDI4OCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1
Y3QgaTM4N19mc2F2ZV9zdHJ1Y3QgewogICAgICAgIGxvbmcgY3dkOwogICAgICAgIGxvbmcgc3dk
OwogICAgICAgIGxvbmcgdHdkOwogICAgICAgIGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwog
ICAgICAgIGxvbmcgZm9vOwogICAgICAgIGxvbmcgZm9zOwogICAgICAgIGxvbmcgc3Rfc3BhY2Vb
MjBdOwogICAgICAgIGxvbmcgc3RhdHVzOwp9OwoKc3RydWN0IGkzODdfZnhzYXZlX3N0cnVjdCB7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3dkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3ZDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCB0d2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZm9wOwog
ICAgICAgIGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxvbmcgZm9vOwogICAg
ICAgIGxvbmcgZm9zOwogICAgICAgIGxvbmcgbXhjc3I7CiAgICAgICAgbG9uZyByZXNlcnZlZDsK
ICAgICAgICBsb25nIHN0X3NwYWNlWzMyXTsKICAgICAgICBsb25nIHhtbV9zcGFjZVszMl07CiAg
ICAgICAgbG9uZyBwYWRkaW5nWzU2XTsKfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoMTYpKSk7
CgpzdHJ1Y3QgaTM4N19zb2Z0X3N0cnVjdCB7CiAgICAgICAgbG9uZyBjd2Q7CiAgICAgICAgbG9u
ZyBzd2Q7CiAgICAgICAgbG9uZyB0d2Q7CiAgICAgICAgbG9uZyBmaXA7CiAgICAgICAgbG9uZyBm
Y3M7CiAgICAgICAgbG9uZyBmb287CiAgICAgICAgbG9uZyBmb3M7CiAgICAgICAgbG9uZyBzdF9z
cGFjZVsyMF07CiAgICAgICAgdW5zaWduZWQgY2hhciBmdG9wLCBjaGFuZ2VkLCBsb29rYWhlYWQs
IG5vX3VwZGF0ZSwgcm0sIGFsaW1pdDsKICAgICAgICBzdHJ1Y3QgaW5mbyAqaW5mbzsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGVudHJ5X2VpcDsKfTsKCnVuaW9uIGkzODdfdW5pb24gewogICAgICAg
IHN0cnVjdCBpMzg3X2ZzYXZlX3N0cnVjdCBmc2F2ZTsKICAgICAgICBzdHJ1Y3QgaTM4N19meHNh
dmVfc3RydWN0IGZ4c2F2ZTsKICAgICAgICBzdHJ1Y3QgaTM4N19zb2Z0X3N0cnVjdCBzb2Z0Owp9
OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VnOwp9IG1tX3NlZ21l
bnRfdDsKCnN0cnVjdCB0c3Nfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBiYWNrX2xp
bmssX19ibGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AwOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHNzMCxfX3NzMGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AxOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNzMSxfX3NzMWg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AyOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHNzMixfX3NzMmg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX2NyMzsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVmbGFnczsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGVheCxlY3gsZWR4LGVieDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVicDsKICAgICAgICB1bnNpZ25lZCBsb25n
IGVzaTsKICAgICAgICB1bnNpZ25lZCBsb25nIGVkaTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBl
cywgX19lc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9fY3NoOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNzLCBfX3NzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdz
LCBfX2dzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZHQsIF9fbGR0aDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCB0cmFjZSwgYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW9fYml0bWFw
WzMyICsxXTsKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9fY2FjaGVsaW5lX2ZpbGxlcls1XTsK
fTsKCnN0cnVjdCB0aHJlYWRfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDA7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBmczsKICAgICAgICB1bnNpZ25lZCBsb25nIGdzOwoKICAgICAgICB1
bnNpZ25lZCBsb25nIGRlYnVncmVnWzhdOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGNyMiwgdHJh
cF9ubywgZXJyb3JfY29kZTsKCiAgICAgICAgdW5pb24gaTM4N191bmlvbiBpMzg3OwoKICAgICAg
ICBzdHJ1Y3Qgdm04Nl9zdHJ1Y3QgKiB2bTg2X2luZm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
Y3JlZW5fYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdjg2ZmxhZ3MsIHY4Nm1hc2ssIHNh
dmVkX2VzcDA7CgogICAgICAgIGludCBpb3Blcm07CiAgICAgICAgdW5zaWduZWQgbG9uZyBpb19i
aXRtYXBbMzIgKzFdOwp9OwojIDQzMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNt
L3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CnN0cnVjdCBtbV9zdHJ1Y3Q7CgoKZXh0
ZXJuIHZvaWQgcmVsZWFzZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoKCgpleHRlcm4g
aW50IGFyY2hfa2VybmVsX3RocmVhZChpbnQgKCpmbikodm9pZCAqKSwgdm9pZCAqIGFyZywgdW5z
aWduZWQgbG9uZyBmbGFncyk7CgoKZXh0ZXJuIHZvaWQgY29weV9zZWdtZW50cyhzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKnAsIHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSk7CmV4dGVybiB2b2lkIHJlbGVhc2Vf
c2VnbWVudHMoc3RydWN0IG1tX3N0cnVjdCAqIG1tKTsKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgbG9uZyB0aHJlYWRfc2F2ZWRfcGMoc3RydWN0IHRocmVhZF9zdHJ1Y3QgKnQpCnsKICAgICAg
ICByZXR1cm4gKCh1bnNpZ25lZCBsb25nICopdC0+ZXNwKVszXTsKfQoKdW5zaWduZWQgbG9uZyBn
ZXRfd2NoYW4oc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKIyA0NjQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IG1pY3JvY29kZSB7CiAgICAgICAg
dW5zaWduZWQgaW50IGhkcnZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcmV2OwogICAgICAgIHVu
c2lnbmVkIGludCBkYXRlOwogICAgICAgIHVuc2lnbmVkIGludCBzaWc7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGNrc3VtOwogICAgICAgIHVuc2lnbmVkIGludCBsZHJ2ZXI7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHBmOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZFs1XTsKICAgICAgICB1bnNp
Z25lZCBpbnQgYml0c1s1MDBdOwp9OwoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCByZXBfbm9wKHZv
aWQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmVwO25vcCIpOwp9CiMgMTQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDIKIyA0MyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIKc3RhdGljIGlubGlu
ZSB2b2lkIHByZWZldGNoKGNvbnN0IHZvaWQgKngpIHs7fQoKCgoKc3RhdGljIGlubGluZSB2b2lk
IHByZWZldGNodyhjb25zdCB2b2lkICp4KSB7O30KIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9saXN0LmgiIDIKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvbGlzdC5oIgpzdHJ1Y3QgbGlzdF9oZWFkIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkICpuZXh0LCAqcHJldjsKfTsKIyAzNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvbGlzdC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgX19saXN0X2FkZChzdHJ1Y3QgbGlzdF9o
ZWFkICpuZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
KnByZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5l
eHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gbmV3OwogICAgICAgIG5ldy0+bmV4dCA9IG5leHQ7
CiAgICAgICAgbmV3LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3Owp9CiMg
NTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlu
bGluZSB2b2lkIGxpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVh
ZCAqaGVhZCkKewogICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLCBoZWFkLT5uZXh0KTsKfQoj
IDY4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBp
bmxpbmUgdm9pZCBsaXN0X2FkZF90YWlsKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxp
c3RfaGVhZCAqaGVhZCkKewogICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLT5wcmV2LCBoZWFk
KTsKfQojIDgwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0
YXRpYyBpbmxpbmUgdm9pZCBfX2xpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKnByZXYsIHN0cnVj
dCBsaXN0X2hlYWQgKm5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAgICAgICBw
cmV2LT5uZXh0ID0gbmV4dDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgbGlzdF9kZWwoc3Ry
dWN0IGxpc3RfaGVhZCAqZW50cnkpCnsKICAgICAgICBfX2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBl
bnRyeS0+bmV4dCk7CiAgICAgICAgZW50cnktPm5leHQgPSAodm9pZCAqKSAwOwogICAgICAgIGVu
dHJ5LT5wcmV2ID0gKHZvaWQgKikgMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X2Rl
bF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRy
eS0+cHJldiwgZW50cnktPm5leHQpOwogICAgICAgIGRvIHsgKGVudHJ5KS0+bmV4dCA9IChlbnRy
eSk7IChlbnRyeSktPnByZXYgPSAoZW50cnkpOyB9IHdoaWxlICgwKTsKfQoKCgoKCgpzdGF0aWMg
aW5saW5lIHZvaWQgbGlzdF9tb3ZlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHN0cnVjdCBsaXN0
X2hlYWQgKmhlYWQpCnsKICAgICAgICBfX2xpc3RfZGVsKGxpc3QtPnByZXYsIGxpc3QtPm5leHQp
OwogICAgICAgIGxpc3RfYWRkKGxpc3QsIGhlYWQpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBsaXN0X21vdmVfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogICAgICAgIF9fbGlz
dF9kZWwobGlzdC0+cHJldiwgbGlzdC0+bmV4dCk7CiAgICAgICAgbGlzdF9hZGRfdGFpbChsaXN0
LCBoZWFkKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGxpc3RfZW1wdHkoc3RydWN0IGxpc3Rf
aGVhZCAqaGVhZCkKewogICAgICAgIHJldHVybiBoZWFkLT5uZXh0ID09IGhlYWQ7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCBfX2xpc3Rfc3BsaWNlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpmaXJzdCA9IGxpc3QtPm5leHQ7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCAqbGFzdCA9IGxpc3QtPnByZXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAq
YXQgPSBoZWFkLT5uZXh0OwoKICAgICAgICBmaXJzdC0+cHJldiA9IGhlYWQ7CiAgICAgICAgaGVh
ZC0+bmV4dCA9IGZpcnN0OwoKICAgICAgICBsYXN0LT5uZXh0ID0gYXQ7CiAgICAgICAgYXQtPnBy
ZXYgPSBsYXN0Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X3NwbGljZShzdHJ1Y3Qg
bGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgaWYgKCFs
aXN0X2VtcHR5KGxpc3QpKQogICAgICAgICAgICAgICAgX19saXN0X3NwbGljZShsaXN0LCBoZWFk
KTsKfQojIDE3MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbGlzdC5oIgpz
dGF0aWMgaW5saW5lIHZvaWQgbGlzdF9zcGxpY2VfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpo
ZWFkKQp7CiAgICAgICAgaWYgKCFsaXN0X2VtcHR5KGxpc3QpKSB7CiAgICAgICAgICAgICAgICBf
X2xpc3Rfc3BsaWNlKGxpc3QsIGhlYWQpOwogICAgICAgICAgICAgICAgZG8geyAobGlzdCktPm5l
eHQgPSAobGlzdCk7IChsaXN0KS0+cHJldiA9IChsaXN0KTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
fQp9CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMg
NDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3RyaW5naWZ5LmgiIDEKIyA0MSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMgojIDU2ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgMjIgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKdHlwZWRlZiBzdHJ1Y3QgeyB2b2xhdGls
ZSBpbnQgY291bnRlcjsgfSBhdG9taWNfdDsKIyA1MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19hZGQoaW50
IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg
ICAgICAgICAibG9jayA7ICIgImFkZGwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+
Y291bnRlcikKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0K
IyA2OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIGF0b21pY19zdWIoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibG9jayA7ICIgInN1YmwgJTEs
JTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoi
aXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0KIyA4NyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX3N1Yl9h
bmRfdGVzdChpbnQgaSwgYXRvbWljX3QgKnYpCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Cgog
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImxvY2sgOyAiICJz
dWJsICUyLCUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAi
PXFtIiAoYykKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSA6ICJt
ZW1vcnkiKTsKICAgICAgICByZXR1cm4gYzsKfQojIDEwNSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19pbmMo
YXRvbWljX3QgKnYpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAg
ICAgICJsb2NrIDsgIiAiaW5jbCAlMCIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVy
KQogICAgICAgICAgICAgICAgOiJtIiAodi0+Y291bnRlcikpOwp9CiMgMTIwICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQg
YXRvbWljX2RlYyhhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAog
ICAgICAgICAgICAgICAgImxvY2sgOyAiICJkZWNsICUwIgogICAgICAgICAgICAgICAgOiI9bSIg
KHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6Im0iICh2LT5jb3VudGVyKSk7Cn0KIyAxMzcg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5s
aW5lX18gaW50IGF0b21pY19kZWNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpCnsKICAgICAgICB1bnNp
Z25lZCBjaGFyIGM7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAg
ICAgImxvY2sgOyAiICJkZWNsICUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYt
PmNvdW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpIDog
Im1lbW9yeSIpOwogICAgICAgIHJldHVybiBjICE9IDA7Cn0KIyAxNTcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGF0b21p
Y19pbmNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Cgog
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImxvY2sgOyAiICJp
bmNsICUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAiPXFt
IiAoYykKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpIDogIm1lbW9yeSIpOwogICAg
ICAgIHJldHVybiBjICE9IDA7Cn0KIyAxNzggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY19hZGRfbmVnYXRpdmUo
aW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICJsb2NrIDsgIiAiYWRkbCAlMiwl
MDsgc2V0cyAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMp
CiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7
CiAgICAgICAgcmV0dXJuIGM7Cn0KIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vc3BpbmxvY2suaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9y
d2xvY2suaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zcGlubG9j
ay5oIiAyCgoKCmV4dGVybiBpbnQgcHJpbnRrKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CiMgMjYgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICAgICAgdm9sYXRpbGUgdW5zaWduZWQgaW50IGxvY2s7CgoKCn0gc3BpbmxvY2tfdDsKIyA4MCAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCnN0YXRpYyBpbmxp
bmUgdm9pZCBzcGluX3VubG9jayhzcGlubG9ja190ICpsb2NrKQp7CgoKCgoKCiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibW92YiAkMSwlMCIgOiI9bSIgKGxv
Y2stPmxvY2spIDogOiAibWVtb3J5IgogICAgICAgICk7Cn0KIyAxMTYgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIgpzdGF0aWMgaW5saW5lIGludCBzcGluX3Ry
eWxvY2soc3BpbmxvY2tfdCAqbG9jaykKewogICAgICAgIGNoYXIgb2xkdmFsOwogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgInhjaGdiICViMCwlMSIKICAgICAg
ICAgICAgICAgIDoiPXEiIChvbGR2YWwpLCAiPW0iIChsb2NrLT5sb2NrKQogICAgICAgICAgICAg
ICAgOiIwIiAoMCkgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIG9sZHZhbCA+IDA7Cn0KCnN0
YXRpYyBpbmxpbmUgdm9pZCBzcGluX2xvY2soc3BpbmxvY2tfdCAqbG9jaykKewojIDEzNiAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiXG4xOlx0IiAibG9jayA7IGRlY2IgJTBc
blx0IiAianMgMmZcbiIgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5s
b2NrLiIgInNjaGVkIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAic2NoZWQiICI6XG5cdCIgIi5lbmRp
ZlxuXHQiICIyOlx0IiAiY21wYiAkMCwlMFxuXHQiICJyZXA7bm9wXG5cdCIgImpsZSAyYlxuXHQi
ICJqbXAgMWJcbiIgIi5wcmV2aW91c1xuXHQiCiAgICAgICAgICAgICAgICA6Ij1tIiAobG9jay0+
bG9jaykgOiA6ICJtZW1vcnkiKTsKfQojIDE1MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvYXNtL3NwaW5sb2NrLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2b2xhdGlsZSB1bnNp
Z25lZCBpbnQgbG9jazsKCgoKfSByd2xvY2tfdDsKIyAxODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIgpzdGF0aWMgaW5saW5lIHZvaWQgcmVhZF9sb2NrKHJ3
bG9ja190ICpydykKewoKCgoKICAgICAgICBkbyB7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChy
dykpIGFzbSB2b2xhdGlsZSgibG9jayA7ICIgInN1YmwgJDEsJTBcblx0IiAianMgMmZcbiIgIjE6
XG4iICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJzY2hl
ZCIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNjaGVkIiAiOlxuXHQiICIuZW5kaWZcblx0IiAiMjpc
dHB1c2hsICUlZWF4XG5cdCIgImxlYWwgJTAsJSVlYXhcblx0IiAiY2FsbCAiICJfX3JlYWRfbG9j
a19mYWlsZWQiICJcblx0IiAicG9wbCAlJWVheFxuXHQiICJqbXAgMWJcbiIgIi5wcmV2aW91c1xu
XHQiIDoiPW0iICgqKHZvbGF0aWxlIGludCAqKXJ3KSA6IDogIm1lbW9yeSIpOyBlbHNlIGFzbSB2
b2xhdGlsZSgibG9jayA7ICIgInN1YmwgJDEsKCUwKVxuXHQiICJqcyAyZlxuIiAiMTpcbiIgIi5z
dWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNjaGVkIiAiXG5c
dCIgIi50ZXh0LmxvY2suIiAic2NoZWQiICI6XG5cdCIgIi5lbmRpZlxuXHQiICIyOlx0Y2FsbCAi
ICJfX3JlYWRfbG9ja19mYWlsZWQiICJcblx0IiAiam1wIDFiXG4iICIucHJldmlvdXNcblx0IiA6
OiJhIiAocncpIDogIm1lbW9yeSIpOyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lk
IHdyaXRlX2xvY2socndsb2NrX3QgKnJ3KQp7CgoKCgogICAgICAgIGRvIHsgaWYgKF9fYnVpbHRp
bl9jb25zdGFudF9wKHJ3KSkgYXNtIHZvbGF0aWxlKCJsb2NrIDsgIiAic3VibCAkIiAiMHgwMTAw
MDAwMCIgIiwoJTApXG5cdCIgImpueiAyZlxuIiAiMTpcbiIgIi5zdWJzZWN0aW9uIDFcblx0IiAi
IiAiLmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNjaGVkIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAi
c2NoZWQiICI6XG5cdCIgIi5lbmRpZlxuXHQiICIyOlx0cHVzaGwgJSVlYXhcblx0IiAibGVhbCAl
MCwlJWVheFxuXHQiICJjYWxsICIgIl9fd3JpdGVfbG9ja19mYWlsZWQiICJcblx0IiAicG9wbCAl
JWVheFxuXHQiICJqbXAgMWJcbiIgIi5wcmV2aW91c1xuXHQiIDoiPW0iICgqKHZvbGF0aWxlIGlu
dCAqKXJ3KSA6IDogIm1lbW9yeSIpOyBlbHNlIGFzbSB2b2xhdGlsZSgibG9jayA7ICIgInN1Ymwg
JCIgIjB4MDEwMDAwMDAiICIsKCUwKVxuXHQiICJqbnogMmZcbiIgIjE6XG4iICIuc3Vic2VjdGlv
biAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJzY2hlZCIgIlxuXHQiICIudGV4
dC5sb2NrLiIgInNjaGVkIiAiOlxuXHQiICIuZW5kaWZcblx0IiAiMjpcdGNhbGwgIiAiX193cml0
ZV9sb2NrX2ZhaWxlZCIgIlxuXHQiICJqbXAgMWJcbiIgIi5wcmV2aW91c1xuXHQiIDo6ImEiIChy
dykgOiAibWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CgoKCgpzdGF0aWMgaW5saW5lIGludCB3cml0
ZV90cnlsb2NrKHJ3bG9ja190ICpsb2NrKQp7CiAgICAgICAgYXRvbWljX3QgKmNvdW50ID0gKGF0
b21pY190ICopbG9jazsKICAgICAgICBpZiAoYXRvbWljX3N1Yl9hbmRfdGVzdCgweDAxMDAwMDAw
LCBjb3VudCkpCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICBhdG9taWNfYWRkKDB4
MDEwMDAwMDAsIGNvdW50KTsKICAgICAgICByZXR1cm4gMDsKfQojIDU3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCiMgMTU3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgpleHRlcm4gaW50IGF0b21pY19kZWNf
YW5kX2xvY2soYXRvbWljX3QgKmF0b21pYywgc3BpbmxvY2tfdCAqbG9jayk7CgoKCgoKdHlwZWRl
ZiB1bmlvbiB7CiAgICBzcGlubG9ja190IGxvY2s7CiAgICBjaGFyIGZpbGxfdXBbKCgxIDw8ICgo
NSkpKSldOwp9IHNwaW5sb2NrX2NhY2hlbGluZV90IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKCgx
IDw8ICgoNSkpKSkpKTsKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
d2FpdC5oIiAyCiMgMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3dhaXQu
aCIKc3RydWN0IF9fd2FpdF9xdWV1ZSB7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwoKICAg
ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiB0YXNrOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
dGFza19saXN0OwoKCgoKfTsKdHlwZWRlZiBzdHJ1Y3QgX193YWl0X3F1ZXVlIHdhaXRfcXVldWVf
dDsKIyA3NyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvd2FpdC5oIgpzdHJ1
Y3QgX193YWl0X3F1ZXVlX2hlYWQgewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIHRhc2tfbGlzdDsKCgoKCn07CnR5cGVkZWYgc3RydWN0IF9fd2FpdF9x
dWV1ZV9oZWFkIHdhaXRfcXVldWVfaGVhZF90OwojIDE1NSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvd2FpdC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF93YWl0cXVldWVf
aGVhZCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSkKewoKCgoKICAgICAgICBxLT5sb2NrID0gKHNwaW5s
b2NrX3QpIHsgMSB9OwogICAgICAgIGRvIHsgKCZxLT50YXNrX2xpc3QpLT5uZXh0ID0gKCZxLT50
YXNrX2xpc3QpOyAoJnEtPnRhc2tfbGlzdCktPnByZXYgPSAoJnEtPnRhc2tfbGlzdCk7IH0gd2hp
bGUgKDApOwoKCgoKfQoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfd2FpdHF1ZXVlX2VudHJ5KHdh
aXRfcXVldWVfdCAqcSwgc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CgoKCgogICAgICAgIHEtPmZs
YWdzID0gMDsKICAgICAgICBxLT50YXNrID0gcDsKCgoKfQoKc3RhdGljIGlubGluZSBpbnQgd2Fp
dHF1ZXVlX2FjdGl2ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSkKewoKCgoKCgogICAgICAgIHJldHVy
biAhbGlzdF9lbXB0eSgmcS0+dGFza19saXN0KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIF9fYWRk
X3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFkX3QgKmhlYWQsIHdhaXRfcXVldWVfdCAqbmV3KQp7
CiMgMjAzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC93YWl0LmgiCiAgICAg
ICAgbGlzdF9hZGQoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoKCgoKc3Rh
dGljIGlubGluZSB2b2lkIF9fYWRkX3dhaXRfcXVldWVfdGFpbCh3YWl0X3F1ZXVlX2hlYWRfdCAq
aGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fp
dF9xdWV1ZV90ICpuZXcpCnsKIyAyMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3dhaXQuaCIKICAgICAgICBsaXN0X2FkZF90YWlsKCZuZXctPnRhc2tfbGlzdCwgJmhlYWQt
PnRhc2tfbGlzdCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV93YWl0X3F1ZXVlKHdh
aXRfcXVldWVfaGVhZF90ICpoZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdhaXRfcXVldWVfdCAqb2xkKQp7CgoKCgoKICAgICAgICBs
aXN0X2RlbCgmb2xkLT50YXNrX2xpc3QpOwp9CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvdmZzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20v
c3RhdGZzLmgiIDEKCgoKCgoKCnR5cGVkZWYgX19rZXJuZWxfZnNpZF90IGZzaWRfdDsKCgoKc3Ry
dWN0IHN0YXRmcyB7CiAgICAgICAgbG9uZyBmX3R5cGU7CiAgICAgICAgbG9uZyBmX2JzaXplOwog
ICAgICAgIGxvbmcgZl9ibG9ja3M7CiAgICAgICAgbG9uZyBmX2JmcmVlOwogICAgICAgIGxvbmcg
Zl9iYXZhaWw7CiAgICAgICAgbG9uZyBmX2ZpbGVzOwogICAgICAgIGxvbmcgZl9mZnJlZTsKICAg
ICAgICBfX2tlcm5lbF9mc2lkX3QgZl9mc2lkOwogICAgICAgIGxvbmcgZl9uYW1lbGVuOwogICAg
ICAgIGxvbmcgZl9zcGFyZVs2XTsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC92ZnMuaCIgMgojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmV0Lmgi
IDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmV0LmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDEKCgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zb2NraW9zLmgiIDEKIyA1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc29ja2V0LmgiIDIKIyA3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvdWlvLmgiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvdWlvLmgiCnN0cnVjdCBpb3ZlYwp7CiAgICAgICAgdm9pZCAqaW92X2Jhc2U7CiAgICAg
ICAgX19rZXJuZWxfc2l6ZV90IGlvdl9sZW47Cn07CiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDIKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHNhX2Zh
bWlseV90OwoKCgoKCnN0cnVjdCBzb2NrYWRkciB7CiAgICAgICAgc2FfZmFtaWx5X3Qgc2FfZmFt
aWx5OwogICAgICAgIGNoYXIgc2FfZGF0YVsxNF07Cn07CgpzdHJ1Y3QgbGluZ2VyIHsKICAgICAg
ICBpbnQgbF9vbm9mZjsKICAgICAgICBpbnQgbF9saW5nZXI7Cn07CiMgMzQgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIgpzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFn
ZSB7CiAgICAgICAgc2FfZmFtaWx5X3Qgc3NfZmFtaWx5OwoKICAgICAgICBjaGFyIF9fZGF0YVsx
MjggLSBzaXplb2Yoc2FfZmFtaWx5X3QpXTsKCgp9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKChf
X2FsaWdub2ZfXyAoc3RydWN0IHNvY2thZGRyICopKSkpKTsKCgoKCgoKCnN0cnVjdCBtc2doZHIg
ewogICAgICAgIHZvaWQgKiBtc2dfbmFtZTsKICAgICAgICBpbnQgbXNnX25hbWVsZW47CiAgICAg
ICAgc3RydWN0IGlvdmVjICogbXNnX2lvdjsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgbXNnX2lv
dmxlbjsKICAgICAgICB2b2lkICogbXNnX2NvbnRyb2w7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90
IG1zZ19jb250cm9sbGVuOwogICAgICAgIHVuc2lnbmVkIG1zZ19mbGFnczsKfTsKCgoKCgoKCnN0
cnVjdCBjbXNnaGRyIHsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgY21zZ19sZW47CiAgICAgICAg
aW50IGNtc2dfbGV2ZWw7CiAgICAgICAgaW50IGNtc2dfdHlwZTsKfTsKIyAxMTcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIgpzdGF0aWMgaW5saW5lIHN0cnVj
dCBjbXNnaGRyICogX19jbXNnX254dGhkcih2b2lkICpfX2N0bCwgX19rZXJuZWxfc2l6ZV90IF9f
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAgICAgc3RydWN0IGNtc2doZHIgKiBfX3B0cjsKCiAg
ICAgICAgX19wdHIgPSAoc3RydWN0IGNtc2doZHIqKSgoKHVuc2lnbmVkIGNoYXIgKikgX19jbXNn
KSArICggKChfX2Ntc2ctPmNtc2dfbGVuKStzaXplb2YobG9uZyktMSkgJiB+KHNpemVvZihsb25n
KS0xKSApKTsKICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpKChjaGFyKikoX19wdHIrMSkgLSAo
Y2hhciAqKSBfX2N0bCkgPiBfX3NpemUpCiAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnVjdCBj
bXNnaGRyICopMDsKCiAgICAgICAgcmV0dXJuIF9fcHRyOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVj
dCBjbXNnaGRyICogY21zZ19ueHRoZHIgKHN0cnVjdCBtc2doZHIgKl9fbXNnLCBzdHJ1Y3QgY21z
Z2hkciAqX19jbXNnKQp7CiAgICAgICAgcmV0dXJuIF9fY21zZ19ueHRoZHIoX19tc2ctPm1zZ19j
b250cm9sLCBfX21zZy0+bXNnX2NvbnRyb2xsZW4sIF9fY21zZyk7Cn0KCgoKCgoKCnN0cnVjdCB1
Y3JlZCB7CiAgICAgICAgX191MzIgcGlkOwogICAgICAgIF9fdTMyIHVpZDsKICAgICAgICBfX3Uz
MiBnaWQ7Cn07CiMgMjY0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zb2Nr
ZXQuaCIKZXh0ZXJuIGludCBtZW1jcHlfZnJvbWlvdmVjKHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBz
dHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGxlbik7CmV4dGVybiBpbnQgbWVtY3B5X2Zyb21pb3ZlY2Vu
ZCh1bnNpZ25lZCBjaGFyICprZGF0YSwgc3RydWN0IGlvdmVjICppb3YsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCwgaW50IGxlbik7CmV4dGVybiBpbnQgY3N1bV9w
YXJ0aWFsX2NvcHlfZnJvbWlvdmVjZW5kKHVuc2lnbmVkIGNoYXIgKmtkYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbiwgaW50ICpj
c3VtcCk7CgpleHRlcm4gaW50IHZlcmlmeV9pb3ZlYyhzdHJ1Y3QgbXNnaGRyICptLCBzdHJ1Y3Qg
aW92ZWMgKmlvdiwgY2hhciAqYWRkcmVzcywgaW50IG1vZGUpOwpleHRlcm4gaW50IG1lbWNweV90
b2lvdmVjKHN0cnVjdCBpb3ZlYyAqdiwgdW5zaWduZWQgY2hhciAqa2RhdGEsIGludCBsZW4pOwpl
eHRlcm4gdm9pZCBtZW1jcHlfdG9rZXJuZWxpb3ZlYyhzdHJ1Y3QgaW92ZWMgKmlvdiwgdW5zaWdu
ZWQgY2hhciAqa2RhdGEsIGludCBsZW4pOwpleHRlcm4gaW50IG1vdmVfYWRkcl90b191c2VyKHZv
aWQgKmthZGRyLCBpbnQga2xlbiwgdm9pZCAqdWFkZHIsIGludCAqdWxlbik7CmV4dGVybiBpbnQg
bW92ZV9hZGRyX3RvX2tlcm5lbCh2b2lkICp1YWRkciwgaW50IHVsZW4sIHZvaWQgKmthZGRyKTsK
ZXh0ZXJuIGludCBwdXRfY21zZyhzdHJ1Y3QgbXNnaGRyKiwgaW50IGxldmVsLCBpbnQgdHlwZSwg
aW50IGxlbiwgdm9pZCAqZGF0YSk7CiMgMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L25ldC5oIiAyCgoKc3RydWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDQ5ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZXQuaCIKdHlwZWRlZiBlbnVtIHsKICBTU19G
UkVFID0gMCwKICBTU19VTkNPTk5FQ1RFRCwKICBTU19DT05ORUNUSU5HLAogIFNTX0NPTk5FQ1RF
RCwKICBTU19ESVNDT05ORUNUSU5HCn0gc29ja2V0X3N0YXRlOwojIDY1ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZXQuaCIKc3RydWN0IHNvY2tldAp7CiAgICAgICAgc29j
a2V0X3N0YXRlIHN0YXRlOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHN0
cnVjdCBwcm90b19vcHMgKm9wczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOwogICAgICAg
IHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYXN5bmNfbGlzdDsKICAgICAgICBzdHJ1Y3QgZmlsZSAq
ZmlsZTsKICAgICAgICBzdHJ1Y3Qgc29jayAqc2s7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qg
d2FpdDsKCiAgICAgICAgc2hvcnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhc3NjcmVk
Owp9OwoKCgpzdHJ1Y3Qgc2NtX2Nvb2tpZTsKc3RydWN0IHZtX2FyZWFfc3RydWN0OwpzdHJ1Y3Qg
cGFnZTsKCnN0cnVjdCBwcm90b19vcHMgewogIGludCBmYW1pbHk7CgogIGludCAoKnJlbGVhc2Up
IChzdHJ1Y3Qgc29ja2V0ICpzb2NrKTsKICBpbnQgKCpiaW5kKSAoc3RydWN0IHNvY2tldCAqc29j
aywgc3RydWN0IHNvY2thZGRyICp1bXlhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHNvY2thZGRyX2xlbik7CiAgaW50ICgqY29ubmVjdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0
cnVjdCBzb2NrYWRkciAqdXNlcnZhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNv
Y2thZGRyX2xlbiwgaW50IGZsYWdzKTsKICBpbnQgKCpzb2NrZXRwYWlyKSAoc3RydWN0IHNvY2tl
dCAqc29jazEsIHN0cnVjdCBzb2NrZXQgKnNvY2syKTsKICBpbnQgKCphY2NlcHQpIChzdHJ1Y3Qg
c29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLAogICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGZsYWdzKTsKICBpbnQgKCpnZXRuYW1lKSAoc3RydWN0IHNvY2tldCAqc29jaywg
c3RydWN0IHNvY2thZGRyICp1YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdXNv
Y2thZGRyX2xlbiwgaW50IHBlZXIpOwogIHVuc2lnbmVkIGludCAoKnBvbGwpIChzdHJ1Y3QgZmls
ZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICp3
YWl0KTsKICBpbnQgKCppb2N0bCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHVuc2lnbmVkIGludCBj
bWQsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFyZyk7CiAgaW50ICgq
bGlzdGVuKSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxlbik7CiAgaW50ICgqc2h1dGRvd24p
IChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZmxhZ3MpOwogIGludCAoKnNldHNvY2tvcHQpIChz
dHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgb3B0bGVuKTsKICBpbnQgKCpnZXRzb2Nrb3B0
KSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKm9wdHZhbCwgaW50ICpvcHRsZW4pOwogIGludCAoKnNlbmRt
c2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxfbGVu
LCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQgKCpyZWN2bXNnKSAoc3RydWN0IHNvY2tl
dCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgaW50IHRvdGFsX2xlbiwgaW50IGZsYWdzLCBzdHJ1
Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQgKCptbWFwKSAoc3RydWN0IGZpbGUgKmZpbGUsIHN0
cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSk7CiAgc3NpemVf
dCAoKnNlbmRwYWdlKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHBhZ2UgKnBhZ2UsIGlu
dCBvZmZzZXQsIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpOwp9OwoKc3RydWN0IG5ldF9wcm90b19m
YW1pbHkKewogICAgICAgIGludCBmYW1pbHk7CiAgICAgICAgaW50ICgqY3JlYXRlKShzdHJ1Y3Qg
c29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wpOwoKCiAgICAgICAgc2hvcnQgYXV0aGVudGljYXRp
b247CiAgICAgICAgc2hvcnQgZW5jcnlwdGlvbjsKICAgICAgICBzaG9ydCBlbmNyeXB0X25ldDsK
fTsKCnN0cnVjdCBuZXRfcHJvdG8KewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAg
dm9pZCAoKmluaXRfZnVuYykoc3RydWN0IG5ldF9wcm90byAqKTsKfTsKCmV4dGVybiBpbnQgc29j
a193YWtlX2FzeW5jKHN0cnVjdCBzb2NrZXQgKnNrLCBpbnQgaG93LCBpbnQgYmFuZCk7CmV4dGVy
biBpbnQgc29ja19yZWdpc3RlcihzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseSAqZmFtKTsKZXh0ZXJu
IGludCBzb2NrX3VucmVnaXN0ZXIoaW50IGZhbWlseSk7CmV4dGVybiBzdHJ1Y3Qgc29ja2V0ICpz
b2NrX2FsbG9jKHZvaWQpOwpleHRlcm4gaW50IHNvY2tfY3JlYXRlKGludCBmYW1pbHksIGludCB0
eXBlLCBpbnQgcHJvdG8sIHN0cnVjdCBzb2NrZXQgKiopOwpleHRlcm4gdm9pZCBzb2NrX3JlbGVh
c2Uoc3RydWN0IHNvY2tldCAqKTsKZXh0ZXJuIGludCBzb2NrX3NlbmRtc2coc3RydWN0IHNvY2tl
dCAqLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgbGVuKTsKZXh0ZXJuIGludCBzb2NrX3JlY3Ztc2co
c3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgbGVuLCBpbnQgZmxhZ3MpOwpl
eHRlcm4gaW50IHNvY2tfcmVhZHZfd3JpdGV2KGludCB0eXBlLCBzdHJ1Y3QgaW5vZGUgKiBpbm9k
ZSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RydWN0IGlvdmVjICogaW92LCBsb25nIGNvdW50LCBsb25nIHNpemUpOwoKZXh0ZXJu
IGludCBuZXRfcmF0ZWxpbWl0KHZvaWQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBuZXRfcmFuZG9t
KHZvaWQpOwpleHRlcm4gdm9pZCBuZXRfc3JhbmRvbSh1bnNpZ25lZCBsb25nKTsKIyAxNiAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAxCiMgNjcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGtk
ZXZfdDsKIyA3NiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgva2Rldl90Lmgi
CmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWUoa2Rldl90KTsKIyA5MiAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgva2Rldl90LmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
aW50IGtkZXZfdF90b19ucihrZGV2X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVk
IGludCkgKChkZXYpID4+IDgpKTw8OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8
PCA4KSAtIDEpKSk7Cn0KCnN0YXRpYyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2KQp7
CiAgICAgICAgaW50IG1ham9yLCBtaW5vcjsKIyAxMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2tkZXZfdC5oIgogICAgICAgIG1ham9yID0gKGRldiA+PiA4KTsKICAgICAg
ICBtaW5vciA9IChkZXYgJiAweGZmKTsKCiAgICAgICAgcmV0dXJuICgoKG1ham9yKSA8PCA4KSB8
IChtaW5vcikpOwp9CiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pb2N0bC5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2lvY3RsLmgiIDEKIyA1
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pb2N0bC5oIiAyCiMgMTggIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiIDEKCgoKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tb3VudC5oIiAxCiMgMTkgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21vdW50LmgiCnN0cnVjdCB2ZnNtb3VudAp7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfaGFzaDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1u
dF9wYXJlbnQ7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqbW50X21vdW50cG9pbnQ7CiAgICAgICAg
c3RydWN0IGRlbnRyeSAqbW50X3Jvb3Q7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICptbnRf
c2I7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfbW91bnRzOwogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgbW50X2NoaWxkOwogICAgICAgIGF0b21pY190IG1udF9jb3VudDsKICAgICAgICBp
bnQgbW50X2ZsYWdzOwogICAgICAgIGNoYXIgKm1udF9kZXZuYW1lOwogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgbW50X2xpc3Q7Cn07CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB2ZnNtb3VudCAqbW50
Z2V0KHN0cnVjdCB2ZnNtb3VudCAqbW50KQp7CiAgICAgICAgaWYgKG1udCkKICAgICAgICAgICAg
ICAgIGF0b21pY19pbmMoJm1udC0+bW50X2NvdW50KTsKICAgICAgICByZXR1cm4gbW50Owp9Cgpl
eHRlcm4gdm9pZCBfX21udHB1dChzdHJ1Y3QgdmZzbW91bnQgKm1udCk7CgpzdGF0aWMgaW5saW5l
IHZvaWQgbW50cHV0KHN0cnVjdCB2ZnNtb3VudCAqbW50KQp7CiAgICAgICAgaWYgKG1udCkgewog
ICAgICAgICAgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm1udC0+bW50X2NvdW50KSkK
ICAgICAgICAgICAgICAgICAgICAgICAgX19tbnRwdXQobW50KTsKICAgICAgICB9Cn0KIyA4ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIgMgojIDI1ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RydWN0IHFzdHIgewog
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBs
ZW47CiAgICAgICAgdW5zaWduZWQgaW50IGhhc2g7Cn07CgpzdHJ1Y3QgZGVudHJ5X3N0YXRfdCB7
CiAgICAgICAgaW50IG5yX2RlbnRyeTsKICAgICAgICBpbnQgbnJfdW51c2VkOwogICAgICAgIGlu
dCBhZ2VfbGltaXQ7CiAgICAgICAgaW50IHdhbnRfcGFnZXM7CiAgICAgICAgaW50IGR1bW15WzJd
Owp9OwpleHRlcm4gc3RydWN0IGRlbnRyeV9zdGF0X3QgZGVudHJ5X3N0YXQ7CgoKCgoKCnN0YXRp
YyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgcGFydGlhbF9uYW1lX2hhc2godW5zaWduZWQgbG9u
ZyBjLCB1bnNpZ25lZCBsb25nIHByZXZoYXNoKQp7CiAgICAgICAgcmV0dXJuIChwcmV2aGFzaCAr
IChjIDw8IDQpICsgKGMgPj4gNCkpICogMTE7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25l
ZCBsb25nIGVuZF9uYW1lX2hhc2godW5zaWduZWQgbG9uZyBoYXNoKQp7CiAgICAgICAgcmV0dXJu
ICh1bnNpZ25lZCBpbnQpIGhhc2g7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQg
ZnVsbF9uYW1lX2hhc2goY29uc3QgdW5zaWduZWQgY2hhciAqIG5hbWUsIHVuc2lnbmVkIGludCBs
ZW4pCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGhhc2ggPSAwOwogICAgICAgIHdoaWxlIChsZW4t
LSkKICAgICAgICAgICAgICAgIGhhc2ggPSBwYXJ0aWFsX25hbWVfaGFzaCgqbmFtZSsrLCBoYXNo
KTsKICAgICAgICByZXR1cm4gZW5kX25hbWVfaGFzaChoYXNoKTsKfQoKCgpzdHJ1Y3QgZGVudHJ5
IHsKICAgICAgICBhdG9taWNfdCBkX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBkX2ZsYWdz
OwogICAgICAgIHN0cnVjdCBpbm9kZSAqIGRfaW5vZGU7CiAgICAgICAgc3RydWN0IGRlbnRyeSAq
IGRfcGFyZW50OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9oYXNoOwogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgZF9scnU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkX2NoaWxkOwogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9zdWJkaXJzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
ZF9hbGlhczsKICAgICAgICBpbnQgZF9tb3VudGVkOwogICAgICAgIHN0cnVjdCBxc3RyIGRfbmFt
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfdGltZTsKICAgICAgICBzdHJ1Y3QgZGVudHJ5X29w
ZXJhdGlvbnMgKmRfb3A7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICogZF9zYjsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGRfdmZzX2ZsYWdzOwogICAgICAgIHZvaWQgKiBkX2ZzZGF0YTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIGRfaW5hbWVbMTZdOwp9OwoKc3RydWN0IGRlbnRyeV9vcGVyYXRp
b25zIHsKICAgICAgICBpbnQgKCpkX3JldmFsaWRhdGUpKHN0cnVjdCBkZW50cnkgKiwgaW50KTsK
ICAgICAgICBpbnQgKCpkX2hhc2gpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICopOwog
ICAgICAgIGludCAoKmRfY29tcGFyZSkgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKiwg
c3RydWN0IHFzdHIgKik7CiAgICAgICAgaW50ICgqZF9kZWxldGUpKHN0cnVjdCBkZW50cnkgKik7
CiAgICAgICAgdm9pZCAoKmRfcmVsZWFzZSkoc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICB2b2lk
ICgqZF9pcHV0KShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKfTsKIyAxMjggIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpleHRlcm4gc3Bpbmxv
Y2tfdCBkY2FjaGVfbG9jazsKIyAxNDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGRfZHJvcChzdHJ1Y3QgZGVudHJ5
ICogZGVudHJ5KQp7CiAgICAgICAgc3Bpbl9sb2NrKCZkY2FjaGVfbG9jayk7CiAgICAgICAgbGlz
dF9kZWwoJmRlbnRyeS0+ZF9oYXNoKTsKICAgICAgICBkbyB7ICgmZGVudHJ5LT5kX2hhc2gpLT5u
ZXh0ID0gKCZkZW50cnktPmRfaGFzaCk7ICgmZGVudHJ5LT5kX2hhc2gpLT5wcmV2ID0gKCZkZW50
cnktPmRfaGFzaCk7IH0gd2hpbGUgKDApOwogICAgICAgIHNwaW5fdW5sb2NrKCZkY2FjaGVfbG9j
ayk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBkbmFtZV9leHRlcm5hbChzdHJ1Y3QgZGVudHJ5
ICpkKQp7CiAgICAgICAgcmV0dXJuIGQtPmRfbmFtZS5uYW1lICE9IGQtPmRfaW5hbWU7Cn0KCgoK
CmV4dGVybiB2b2lkIGRfaW5zdGFudGlhdGUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUg
Kik7CmV4dGVybiB2b2lkIGRfZGVsZXRlKHN0cnVjdCBkZW50cnkgKik7CgoKZXh0ZXJuIHN0cnVj
dCBkZW50cnkgKiBkX2FsbG9jKHN0cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKik7
CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRl
cm4gdm9pZCBzaHJpbmtfZGNhY2hlX3BhcmVudChzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50
IGRfaW52YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICopOwoKCnN0cnVjdCB6b25lX3N0cnVjdDsKCmV4
dGVybiBpbnQgc2hyaW5rX2RjYWNoZV9tZW1vcnkoaW50LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4g
dm9pZCBwcnVuZV9kY2FjaGUoaW50KTsKCgpleHRlcm4gaW50IHNocmlua19pY2FjaGVfbWVtb3J5
KGludCwgaW50KTsKZXh0ZXJuIHZvaWQgcHJ1bmVfaWNhY2hlKGludCk7CgoKZXh0ZXJuIGludCBz
aHJpbmtfZHFjYWNoZV9tZW1vcnkoaW50LCB1bnNpZ25lZCBpbnQpOwoKCmV4dGVybiBzdHJ1Y3Qg
ZGVudHJ5ICogZF9hbGxvY19yb290KHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gdm9pZCBkX2dl
bm9jaWRlKHN0cnVjdCBkZW50cnkgKik7CgpleHRlcm4gc3RydWN0IGRlbnRyeSAqZF9maW5kX2Fs
aWFzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9wcnVuZV9hbGlhc2VzKHN0cnVjdCBp
bm9kZSAqKTsKCgpleHRlcm4gaW50IGhhdmVfc3VibW91bnRzKHN0cnVjdCBkZW50cnkgKik7CgoK
CgpleHRlcm4gdm9pZCBkX3JlaGFzaChzdHJ1Y3QgZGVudHJ5ICopOwojIDIxMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9fIHZv
aWQgZF9hZGQoc3RydWN0IGRlbnRyeSAqIGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKiBpbm9kZSkKewog
ICAgICAgIGRfaW5zdGFudGlhdGUoZW50cnksIGlub2RlKTsKICAgICAgICBkX3JlaGFzaChlbnRy
eSk7Cn0KCgpleHRlcm4gdm9pZCBkX21vdmUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5
ICopOwoKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9sb29rdXAoc3RydWN0IGRlbnRyeSAqLCBz
dHJ1Y3QgcXN0ciAqKTsKCgpleHRlcm4gaW50IGRfdmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqLCBz
dHJ1Y3QgZGVudHJ5ICopOwoKZXh0ZXJuIGNoYXIgKiBfX2RfcGF0aChzdHJ1Y3QgZGVudHJ5ICos
IHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICosCiAgICAgICAgc3RydWN0IHZmc21v
dW50ICosIGNoYXIgKiwgaW50KTsKIyAyNDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3QgZGVudHJ5ICogZGdldChz
dHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBpZiAoZGVudHJ5KSB7CiAgICAgICAgICAg
ICAgICBpZiAoISgoJmRlbnRyeS0+ZF9jb3VudCktPmNvdW50ZXIpKQogICAgICAgICAgICAgICAg
ICAgICAgICBfX291dF9vZl9saW5lX2J1ZygyNDgpOwogICAgICAgICAgICAgICAgYXRvbWljX2lu
YygmZGVudHJ5LT5kX2NvdW50KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoK
ZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkZ2V0X2xvY2tlZChzdHJ1Y3QgZGVudHJ5ICopOwojIDI2
MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBf
X2lubGluZV9fIGludCBkX3VuaGFzaGVkKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAg
IHJldHVybiBsaXN0X2VtcHR5KCZkZW50cnktPmRfaGFzaCk7Cn0KCmV4dGVybiB2b2lkIGRwdXQo
c3RydWN0IGRlbnRyeSAqKTsKCnN0YXRpYyBfX2lubGluZV9fIGludCBkX21vdW50cG9pbnQoc3Ry
dWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgcmV0dXJuIGRlbnRyeS0+ZF9tb3VudGVkOwp9
CgpleHRlcm4gc3RydWN0IHZmc21vdW50ICpsb29rdXBfbW50KHN0cnVjdCB2ZnNtb3VudCAqLCBz
dHJ1Y3QgZGVudHJ5ICopOwojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3RhdC5o
IiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3RhdC5oIiAx
CgoKCnN0cnVjdCBfX29sZF9rZXJuZWxfc3RhdCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rf
ZGV2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzdF9tb2RlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHN0X3VpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgc3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210
aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfY3RpbWU7Cn07CgpzdHJ1Y3Qgc3RhdCB7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFk
MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz
dF9tb2RlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHN0X3VpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzdF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxrc2l6
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25n
IHN0X2F0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc3RfbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2Vk
MzsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkNDsKICAgICAgICB1bnNpZ25lZCBsb25n
IF9fdW51c2VkNTsKfTsKCgoKCnN0cnVjdCBzdGF0NjQgewogICAgICAgIHVuc2lnbmVkIHNob3J0
IHN0X2RldjsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9fcGFkMFsxMF07CgoKICAgICAgICB1bnNp
Z25lZCBsb25nIF9fc3RfaW5vOwoKICAgICAgICB1bnNpZ25lZCBpbnQgc3RfbW9kZTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc3Rfbmxpbms7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfdWlkOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfZ2lkOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9y
ZGV2OwogICAgICAgIHVuc2lnbmVkIGNoYXIgX19wYWQzWzEwXTsKCiAgICAgICAgbG9uZyBsb25n
IHN0X3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwoKICAgICAgICB1bnNp
Z25lZCBsb25nIHN0X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNDsKCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNTsK
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9f
cGFkNjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBs
b25nIF9fcGFkNzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0X2lubzsKfTsKIyA3ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zdGF0LmgiIDIKIyAyMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCmV4dGVybiBjaGFyICogX19fc3RydG9rOwpl
eHRlcm4gY2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBj
aGFyICogc3RydG9rKGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cnNlcChj
aGFyICoqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBfX2tlcm5lbF9zaXplX3Qgc3Ryc3BuKGNvbnN0
IGNoYXIgKixjb25zdCBjaGFyICopOwoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL3N0cmluZy5oIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSBjaGFyICogc3RyY3B5KGNoYXIgKiBkZXN0LGNv
bnN0IGNoYXIgKnNyYykKewppbnQgZDAsIGQxLCBkMjsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAg
ICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAidGVzdGIg
JSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiIgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0m
RCIgKGQxKSwgIj0mYSIgKGQyKQogICAgICAgIDoiMCIgKHNyYyksIjEiIChkZXN0KSA6ICJtZW1v
cnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJuY3B5KGNoYXIg
KiBkZXN0LGNvbnN0IGNoYXIgKnNyYyxzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQz
OwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGRlY2wgJTJcblx0IgogICAgICAg
ICJqcyAyZlxuXHQiCiAgICAgICAgImxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAg
ICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJy
ZXBcblx0IgogICAgICAgICJzdG9zYlxuIgogICAgICAgICIyOiIKICAgICAgICA6ICI9JlMiIChk
MCksICI9JkQiIChkMSksICI9JmMiIChkMiksICI9JmEiIChkMykKICAgICAgICA6IjAiIChzcmMp
LCIxIiAoZGVzdCksIjIiIChjb3VudCkgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3Rh
dGljIGlubGluZSBjaGFyICogc3RyY2F0KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKiBzcmMpCnsK
aW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwbmVc
blx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImRlY2wgJTFcbiIKICAgICAgICAiMTpc
dGxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxc
blx0IgogICAgICAgICJqbmUgMWIiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAi
PSZhIiAoZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAiMCIgKHNyYyksICIxIiAoZGVzdCksICIy
IiAoMCksICIzIiAoMHhmZmZmZmZmZik6Im1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRp
YyBpbmxpbmUgY2hhciAqIHN0cm5jYXQoY2hhciAqIGRlc3QsY29uc3QgY2hhciAqIHNyYyxzaXpl
X3QgY291bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAg
ICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImRlY2wgJTFcblx0
IgogICAgICAgICJtb3ZsICU4LCUzXG4iCiAgICAgICAgIjE6XHRkZWNsICUzXG5cdCIKICAgICAg
ICAianMgMmZcblx0IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAg
ICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG4iCiAgICAgICAgIjI6
XHR4b3JsICUyLCUyXG5cdCIKICAgICAgICAic3Rvc2IiCiAgICAgICAgOiAiPSZTIiAoZDApLCAi
PSZEIiAoZDEpLCAiPSZhIiAoZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAiMCIgKHNyYyksIjEi
IChkZXN0KSwiMiIgKDApLCIzIiAoMHhmZmZmZmZmZiksICJnIiAoY291bnQpCiAgICAgICAgOiAi
bWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBpbnQgc3RyY21wKGNvbnN0
IGNoYXIgKiBjcyxjb25zdCBjaGFyICogY3QpCnsKaW50IGQwLCBkMTsKcmVnaXN0ZXIgaW50IF9f
cmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAg
ICAic2Nhc2Jcblx0IgogICAgICAgICJqbmUgMmZcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUl
YWxcblx0IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJ4b3JsICUlZWF4LCUlZWF4XG5c
dCIKICAgICAgICAiam1wIDNmXG4iCiAgICAgICAgIjI6XHRzYmJsICUlZWF4LCUlZWF4XG5cdCIK
ICAgICAgICAib3JiICQxLCUlYWxcbiIKICAgICAgICAiMzoiCiAgICAgICAgOiI9YSIgKF9fcmVz
KSwgIj0mUyIgKGQwKSwgIj0mRCIgKGQxKQogICAgICAgICAgICAgICAgICAgICA6IjEiIChjcyks
IjIiIChjdCkpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGludCBzdHJuY21wKGNv
bnN0IGNoYXIgKiBjcyxjb25zdCBjaGFyICogY3Qsc2l6ZV90IGNvdW50KQp7CnJlZ2lzdGVyIGlu
dCBfX3JlczsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICIx
Olx0ZGVjbCAlM1xuXHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAibG9kc2Jcblx0Igog
ICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImpuZSAzZlxuXHQiCiAgICAgICAgInRlc3RiICUl
YWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIyOlx0eG9ybCAlJWVheCwl
JWVheFxuXHQiCiAgICAgICAgImptcCA0ZlxuIgogICAgICAgICIzOlx0c2JibCAlJWVheCwlJWVh
eFxuXHQiCiAgICAgICAgIm9yYiAkMSwlJWFsXG4iCiAgICAgICAgIjQ6IgogICAgICAgICAgICAg
ICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZjIiAoZDIp
CiAgICAgICAgICAgICAgICAgICAgIDoiMSIgKGNzKSwiMiIgKGN0KSwiMyIgKGNvdW50KSk7CnJl
dHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNocihjb25zdCBjaGFyICog
cywgaW50IGMpCnsKaW50IGQwOwpyZWdpc3RlciBjaGFyICogX19yZXM7Cl9fYXNtX18gX192b2xh
dGlsZV9fKAogICAgICAgICJtb3ZiICUlYWwsJSVhaFxuIgogICAgICAgICIxOlx0bG9kc2Jcblx0
IgogICAgICAgICJjbXBiICUlYWgsJSVhbFxuXHQiCiAgICAgICAgImplIDJmXG5cdCIKICAgICAg
ICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5cdCIKICAgICAgICAibW92
bCAkMSwlMVxuIgogICAgICAgICIyOlx0bW92bCAlMSwlMFxuXHQiCiAgICAgICAgImRlY2wgJTAi
CiAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSA6ICIxIiAocyksIjAiIChjKSk7CnJl
dHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cnJjaHIoY29uc3QgY2hhciAq
IHMsIGludCBjKQp7CmludCBkMCwgZDE7CnJlZ2lzdGVyIGNoYXIgKiBfX3JlczsKX19hc21fXyBf
X3ZvbGF0aWxlX18oCiAgICAgICAgIm1vdmIgJSVhbCwlJWFoXG4iCiAgICAgICAgIjE6XHRsb2Rz
YlxuXHQiCiAgICAgICAgImNtcGIgJSVhaCwlJWFsXG5cdCIKICAgICAgICAiam5lIDJmXG5cdCIK
ICAgICAgICAibGVhbCAtMSglJWVzaSksJTBcbiIKICAgICAgICAiMjpcdHRlc3RiICUlYWwsJSVh
bFxuXHQiCiAgICAgICAgImpuZSAxYiIKICAgICAgICA6Ij1nIiAoX19yZXMpLCAiPSZTIiAoZDAp
LCAiPSZhIiAoZDEpIDoiMCIgKDApLCIxIiAocyksIjIiIChjKSk7CnJldHVybiBfX3JlczsKfQoK
CnN0YXRpYyBpbmxpbmUgc2l6ZV90IHN0cmxlbihjb25zdCBjaGFyICogcykKewppbnQgZDA7CnJl
Z2lzdGVyIGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcG5lXG5c
dCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJub3RsICUwXG5cdCIKICAgICAgICAiZGVj
bCAlMCIKICAgICAgICA6Ij1jIiAoX19yZXMpLCAiPSZEIiAoZDApIDoiMSIgKHMpLCJhIiAoMCks
ICIwIiAoMHhmZmZmZmZmZikpOwpyZXR1cm4gX19yZXM7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCAq
IF9fbWVtY3B5KHZvaWQgKiB0bywgY29uc3Qgdm9pZCAqIGZyb20sIHNpemVfdCBuKQp7CmludCBk
MCwgZDEsIGQyOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwIDsgbW92c2xcblx0
IgogICAgICAgICJ0ZXN0YiAkMiwlYjRcblx0IgogICAgICAgICJqZSAxZlxuXHQiCiAgICAgICAg
Im1vdnN3XG4iCiAgICAgICAgIjE6XHR0ZXN0YiAkMSwlYjRcblx0IgogICAgICAgICJqZSAyZlxu
XHQiCiAgICAgICAgIm1vdnNiXG4iCiAgICAgICAgIjI6IgogICAgICAgIDogIj0mYyIgKGQwKSwg
Ij0mRCIgKGQxKSwgIj0mUyIgKGQyKQogICAgICAgIDoiMCIgKG4vNCksICJxIiAobiksIjEiICgo
bG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pCiAgICAgICAgOiAibWVtb3J5Iik7CnJldHVybiAo
dG8pOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9tZW1jcHkodm9pZCAq
IHRvLCBjb25zdCB2b2lkICogZnJvbSwgc2l6ZV90IG4pCnsKICAgICAgICBzd2l0Y2ggKG4pIHsK
ICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRv
OwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2ln
bmVkIGNoYXIgKil0byA9ICooY29uc3QgdW5zaWduZWQgY2hhciAqKWZyb207CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAg
ICAgICAgICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBz
aG9ydCAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAg
ICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAq
KXRvID0gKihjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb207CiAgICAgICAgICAgICAgICAgICAg
ICAgICooMisodW5zaWduZWQgY2hhciAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgY2hhciAq
KWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAg
ICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0g
Kihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgICAgICAq
KHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAg
ICAgICAgICAgICAgICAgICAgICooMisodW5zaWduZWQgc2hvcnQgKil0bykgPSAqKDIrKGNvbnN0
IHVuc2lnbmVkIHNob3J0ICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
bzsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNp
Z25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAg
ICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2ln
bmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAg
ICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBs
b25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAg
ICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVkIGxv
bmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBsb25nICop
dG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgICAg
ICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICop
ZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0g
KigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICooMisodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZy
b20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDMrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAq
KDMrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAyMDoKICAgICAgICAgICAgICAgICAgICAg
ICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwog
ICAgICAgICAgICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNv
bnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1
bnNpZ25lZCBsb25nICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICooMysodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMysoY29u
c3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDQrKHVu
c2lnbmVkIGxvbmcgKil0bykgPSAqKDQrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgIH0KCgoKCgoKCnsKICAgICAg
ICBpbnQgZDAsIGQxLCBkMjsKICAgICAgICBzd2l0Y2ggKG4gJSA0KSB7CiAgICAgICAgICAgICAg
ICBjYXNlIDA6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICIiIDogIj0mYyIg
KGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25nKSB0byks
IjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAgICAgICAg
ICBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJcblx0bW92c2Ii
IDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChs
b25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAg
ICAgICAgICAgICBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJc
blx0bW92c3ciIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80
KSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4g
dG87CiAgICAgICAgICAgICAgICBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7
IG1vdnNsIiAiXG5cdG1vdnN3XG5cdG1vdnNiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9
JlMiIChkMikgOiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDog
Im1lbW9yeSIpOzsgcmV0dXJuIHRvOwogICAgICAgIH0KfQoKCn0KIyAzMzUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKZXh0ZXJuIHZvaWQgX19zdHJ1Y3RfY3B5
X2J1ZyAodm9pZCk7CiMgMzQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3Ry
aW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbW1vdmUodm9pZCAqIGRlc3QsY29uc3Qgdm9p
ZCAqIHNyYywgc2l6ZV90IG4pCnsKaW50IGQwLCBkMSwgZDI7CmlmIChkZXN0PHNyYykKX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgIm1vdnNiIgogICAgICAg
IDogIj0mYyIgKGQwKSwgIj0mUyIgKGQxKSwgIj0mRCIgKGQyKQogICAgICAgIDoiMCIgKG4pLCIx
IiAoc3JjKSwiMiIgKGRlc3QpCiAgICAgICAgOiAibWVtb3J5Iik7CmVsc2UKX19hc21fXyBfX3Zv
bGF0aWxlX18oCiAgICAgICAgInN0ZFxuXHQiCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgIm1v
dnNiXG5cdCIKICAgICAgICAiY2xkIgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mUyIgKGQxKSwg
Ij0mRCIgKGQyKQogICAgICAgIDoiMCIgKG4pLAogICAgICAgICAiMSIgKG4tMSsoY29uc3QgY2hh
ciAqKXNyYyksCiAgICAgICAgICIyIiAobi0xKyhjaGFyICopZGVzdCkKICAgICAgICA6Im1lbW9y
eSIpOwpyZXR1cm4gZGVzdDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkICogbWVtY2hyKGNvbnN0
IHZvaWQgKiBjcyxpbnQgYyxzaXplX3QgY291bnQpCnsKaW50IGQwOwpyZWdpc3RlciB2b2lkICog
X19yZXM7CmlmICghY291bnQpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwpfX2FzbV9fIF9f
dm9sYXRpbGVfXygKICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAg
ICAgImplIDFmXG5cdCIKICAgICAgICAibW92bCAkMSwlMFxuIgogICAgICAgICIxOlx0ZGVjbCAl
MCIKICAgICAgICA6Ij1EIiAoX19yZXMpLCAiPSZjIiAoZDApIDogImEiIChjKSwiMCIgKGNzKSwi
MSIgKGNvdW50KSk7CnJldHVybiBfX3JlczsKfQoKc3RhdGljIGlubGluZSB2b2lkICogX19tZW1z
ZXRfZ2VuZXJpYyh2b2lkICogcywgY2hhciBjLHNpemVfdCBjb3VudCkKewppbnQgZDAsIGQxOwpf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwXG5cdCIKICAgICAgICAic3Rvc2IiCiAg
ICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICAgOiJhIiAoYyksIjEiIChzKSwi
MCIgKGNvdW50KQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiBzOwp9CiMgNDA4ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAq
IF9fY29uc3RhbnRfY19tZW1zZXQodm9pZCAqIHMsIHVuc2lnbmVkIGxvbmcgYywgc2l6ZV90IGNv
dW50KQp7CmludCBkMCwgZDE7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXAgOyBz
dG9zbFxuXHQiCiAgICAgICAgInRlc3RiICQyLCViM1xuXHQiCiAgICAgICAgImplIDFmXG5cdCIK
ICAgICAgICAic3Rvc3dcbiIKICAgICAgICAiMTpcdHRlc3RiICQxLCViM1xuXHQiCiAgICAgICAg
ImplIDJmXG5cdCIKICAgICAgICAic3Rvc2JcbiIKICAgICAgICAiMjoiCiAgICAgICAgOiAiPSZj
IiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICAgOiJhIiAoYyksICJxIiAoY291bnQpLCAiMCIgKGNv
dW50LzQpLCAiMSIgKChsb25nKSBzKQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiAocyk7Cn0K
CgoKc3RhdGljIGlubGluZSBzaXplX3Qgc3Rybmxlbihjb25zdCBjaGFyICogcywgc2l6ZV90IGNv
dW50KQp7CmludCBkMDsKcmVnaXN0ZXIgaW50IF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygK
ICAgICAgICAibW92bCAlMiwlMFxuXHQiCiAgICAgICAgImptcCAyZlxuIgogICAgICAgICIxOlx0
Y21wYiAkMCwoJTApXG5cdCIKICAgICAgICAiamUgM2Zcblx0IgogICAgICAgICJpbmNsICUwXG4i
CiAgICAgICAgIjI6XHRkZWNsICUxXG5cdCIKICAgICAgICAiY21wbCAkLTEsJTFcblx0IgogICAg
ICAgICJqbmUgMWJcbiIKICAgICAgICAiMzpcdHN1YmwgJTIsJTAiCiAgICAgICAgOiI9YSIgKF9f
cmVzKSwgIj0mZCIgKGQwKQogICAgICAgIDoiYyIgKHMpLCIxIiAoY291bnQpKTsKcmV0dXJuIF9f
cmVzOwp9CgoKCgpleHRlcm4gY2hhciAqc3Ryc3RyKGNvbnN0IGNoYXIgKmNzLCBjb25zdCBjaGFy
ICpjdCk7CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9jX2FuZF9jb3VudF9t
ZW1zZXQodm9pZCAqIHMsIHVuc2lnbmVkIGxvbmcgcGF0dGVybiwgc2l6ZV90IGNvdW50KQp7CiAg
ICAgICAgc3dpdGNoIChjb3VudCkgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAg
ICAgICAgICAgICAgICAgKih1bnNpZ25lZCBjaGFyICopcyA9IHBhdHRlcm47CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAg
ICAgICAgICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopcyA9IHBhdHRlcm47CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAg
ICAgICAgICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopcyA9IHBhdHRlcm47CiAgICAgICAgICAg
ICAgICAgICAgICAgICooMisodW5zaWduZWQgY2hhciAqKXMpID0gcGF0dGVybjsKICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAg
ICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXMgPSBwYXR0ZXJuOwogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICB9CgoKCgoKCgp7CiAgICAgICAgaW50IGQw
LCBkMTsKICAgICAgICBzd2l0Y2ggKGNvdW50ICUgNCkgewogICAgICAgICAgICAgICAgY2FzZSAw
OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiIiA6ICI9JmMiIChkMCksICI9
JkQiIChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAi
bWVtb3J5Iik7IHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAxOiBfX2FzbV9fIF9fdm9s
YXRpbGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3NiIiA6ICI9JmMiIChkMCksICI9JkQiIChk
MSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5
Iik7IHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVf
XyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3N3IiA6ICI9JmMiIChkMCksICI9JkQiIChkMSkgOiAi
YSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5Iik7IHJl
dHVybiBzOwogICAgICAgICAgICAgICAgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxlX18oICJy
ZXAgOyBzdG9zbCIgIlxuXHRzdG9zd1xuXHRzdG9zYiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEp
IDogImEiIChwYXR0ZXJuKSwiMCIgKGNvdW50LzQpLCIxIiAoKGxvbmcpIHMpIDogIm1lbW9yeSIp
OyByZXR1cm4gczsKICAgICAgICB9Cn0KCgp9CiMgNTE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbXNjYW4odm9pZCAq
IGFkZHIsIGludCBjLCBzaXplX3Qgc2l6ZSkKewogICAgICAgIGlmICghc2l6ZSkKICAgICAgICAg
ICAgICAgIHJldHVybiBhZGRyOwogICAgICAgIF9fYXNtX18oInJlcG56OyBzY2FzYlxuXHQiCiAg
ICAgICAgICAgICAgICAiam56IDFmXG5cdCIKICAgICAgICAgICAgICAgICJkZWMgJSVlZGlcbiIK
ICAgICAgICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgIDogIj1EIiAoYWRkciksICI9YyIg
KHNpemUpCiAgICAgICAgICAgICAgICA6ICIwIiAoYWRkciksICIxIiAoc2l6ZSksICJhIiAoYykp
OwogICAgICAgIHJldHVybiBhZGRyOwp9CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L3N0cmluZy5oIiAyCiMgNDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L3N0cmluZy5oIgpleHRlcm4gaW50IHN0cm5pY21wKGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwojIDc3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9zdHJpbmcuaCIKZXh0ZXJuIGludCBfX2J1aWx0aW5fbWVtY21wKGNvbnN0IHZv
aWQgKixjb25zdCB2b2lkICosX19rZXJuZWxfc2l6ZV90KTsKIyAyNCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAxCiMgMzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfYml0KGludCBuciwg
dm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggImxv
Y2sgOyAiCiAgICAgICAgICAgICAgICAiYnRzbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0i
ICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7
Cn0KIyA1MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0
aWMgX19pbmxpbmVfXyB2b2lkIF9fc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRy
KQp7CiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJidHNsICUxLCUwIgogICAgICAg
ICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAg
ICA6IklyIiAobnIpKTsKfQojIDcxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20v
Yml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2xlYXJfYml0KGludCBuciwgdm9sYXRp
bGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggImxvY2sgOyAi
CiAgICAgICAgICAgICAgICAiYnRybCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2
b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyA5
MCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19p
bmxpbmVfXyB2b2lkIF9fY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7
CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiYnRjbCAlMSwl
MCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAg
ICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyAxMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBjaGFuZ2VfYml0KGlu
dCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
XyggImxvY2sgOyAiCiAgICAgICAgICAgICAgICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAg
IDoiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIg
KG5yKSk7Cn0KIyAxMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMu
aCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3RfYW5kX3NldF9iaXQoaW50IG5yLCB2b2xhdGls
ZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKCAibG9jayA7ICIKICAgICAgICAgICAgICAgICJidHNsICUyLCUxXG5cdHNiYmwg
JTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBs
b25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSA6ICJtZW1vcnkiKTsKICAg
ICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTQzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3RfYW5kX3NldF9iaXQo
aW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAg
ICAgIF9fYXNtX18oCiAgICAgICAgICAgICAgICAiYnRzbCAlMiwlMVxuXHRzYmJsICUwLCUwIgog
ICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBh
ZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwogICAgICAgIHJldHVybiBvbGRiaXQ7
Cn0KIyAxNjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3Rh
dGljIF9faW5saW5lX18gaW50IHRlc3RfYW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZv
aWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oICJsb2NrIDsgIgogICAgICAgICAgICAgICAgImJ0cmwgJTIsJTFcblx0c2JibCAlMCwl
MCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcg
KikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAg
IHJldHVybiBvbGRiaXQ7Cn0KIyAxODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2Fz
bS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IF9fdGVzdF9hbmRfY2xlYXJfYml0KGlu
dCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAg
ICBfX2FzbV9fKAogICAgICAgICAgICAgICAgImJ0cmwgJTIsJTFcblx0c2JibCAlMCwlMCIKICAg
ICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRk
cikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9
CgoKc3RhdGljIF9faW5saW5lX18gaW50IF9fdGVzdF9hbmRfY2hhbmdlX2JpdChpbnQgbnIsIHZv
bGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiYnRjbCAlMiwlMVxuXHRzYmJsICUwLCUw
IgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAq
KSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikgOiAibWVtb3J5Iik7CiAgICAgICAg
cmV0dXJuIG9sZGJpdDsKfQojIDIxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNt
L2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfY2hhbmdlX2JpdChpbnQg
bnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oICJsb2NrIDsgIgogICAgICAgICAgICAgICAgImJ0Y2wgJTIs
JTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgq
KHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1l
bW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMzMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGNvbnN0YW50
X3Rlc3RfYml0KGludCBuciwgY29uc3Qgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBy
ZXR1cm4gKCgxVUwgPDwgKG5yICYgMzEpKSAmICgoKGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGlu
dCAqKSBhZGRyKVtuciA+PiA1XSkpICE9IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCB2YXJp
YWJsZV90ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50
IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAi
YnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KQog
ICAgICAgICAgICAgICAgOiJtIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSksIklyIiAobnIp
KTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjYyICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5kX2ZpcnN0X3pl
cm9fYml0KHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBzaXplKQp7CiAgICAgICAgaW50IGQwLCBkMSwg
ZDI7CiAgICAgICAgaW50IHJlczsKCiAgICAgICAgaWYgKCFzaXplKQogICAgICAgICAgICAgICAg
cmV0dXJuIDA7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAg
Im1vdmwgJC0xLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUlZWR4LCUlZWR4XG5c
dCIKICAgICAgICAgICAgICAgICJyZXBlOyBzY2FzbFxuXHQiCiAgICAgICAgICAgICAgICAiamUg
MWZcblx0IgogICAgICAgICAgICAgICAgInhvcmwgLTQoJSVlZGkpLCUlZWF4XG5cdCIKICAgICAg
ICAgICAgICAgICJzdWJsICQ0LCUlZWRpXG5cdCIKICAgICAgICAgICAgICAgICJic2ZsICUlZWF4
LCUlZWR4XG4iCiAgICAgICAgICAgICAgICAiMTpcdHN1YmwgJSVlYngsJSVlZGlcblx0IgogICAg
ICAgICAgICAgICAgInNobGwgJDMsJSVlZGlcblx0IgogICAgICAgICAgICAgICAgImFkZGwgJSVl
ZGksJSVlZHgiCiAgICAgICAgICAgICAgICA6Ij1kIiAocmVzKSwgIj0mYyIgKGQwKSwgIj0mRCIg
KGQxKSwgIj0mYSIgKGQyKQogICAgICAgICAgICAgICAgOiIxIiAoKHNpemUgKyAzMSkgPj4gNSks
ICIyIiAoYWRkciksICJiIiAoYWRkcikpOwogICAgICAgIHJldHVybiByZXM7Cn0KCgoKCgoKCnN0
YXRpYyBfX2lubGluZV9fIGludCBmaW5kX25leHRfemVyb19iaXQgKHZvaWQgKiBhZGRyLCBpbnQg
c2l6ZSwgaW50IG9mZnNldCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgKiBwID0gKCh1bnNpZ25l
ZCBsb25nICopIGFkZHIpICsgKG9mZnNldCA+PiA1KTsKICAgICAgICBpbnQgc2V0ID0gMCwgYml0
ID0gb2Zmc2V0ICYgMzEsIHJlczsKCiAgICAgICAgaWYgKGJpdCkgewoKCgogICAgICAgICAgICAg
ICAgX19hc21fXygiYnNmbCAlMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICJqbmUg
MWZcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAibW92bCAkMzIsICUwXG4iCiAgICAgICAg
ICAgICAgICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgICAgICAgICAgOiAiPXIiIChzZXQp
CiAgICAgICAgICAgICAgICAgICAgICAgIDogInIiICh+KCpwID4+IGJpdCkpKTsKICAgICAgICAg
ICAgICAgIGlmIChzZXQgPCAoMzIgLSBiaXQpKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2V0ICsgb2Zmc2V0OwogICAgICAgICAgICAgICAgc2V0ID0gMzIgLSBiaXQ7CiAgICAgICAg
ICAgICAgICBwKys7CiAgICAgICAgfQoKCgogICAgICAgIHJlcyA9IGZpbmRfZmlyc3RfemVyb19i
aXQgKHAsIHNpemUgLSAzMiAqIChwIC0gKHVuc2lnbmVkIGxvbmcgKikgYWRkcikpOwogICAgICAg
IHJldHVybiAob2Zmc2V0ICsgc2V0ICsgcmVzKTsKfQoKCgoKCgoKc3RhdGljIF9faW5saW5lX18g
dW5zaWduZWQgbG9uZyBmZnoodW5zaWduZWQgbG9uZyB3b3JkKQp7CiAgICAgICAgX19hc21fXygi
YnNmbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiICh3b3JkKQogICAgICAgICAgICAgICAg
OiJyIiAofndvcmQpKTsKICAgICAgICByZXR1cm4gd29yZDsKfQojIDM0OSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZmZz
KGludCB4KQp7CiAgICAgICAgaW50IHI7CgogICAgICAgIF9fYXNtX18oImJzZmwgJTEsJTBcblx0
IgogICAgICAgICAgICAgICAgImpueiAxZlxuXHQiCiAgICAgICAgICAgICAgICAibW92bCAkLTEs
JTBcbiIKICAgICAgICAgICAgICAgICIxOiIgOiAiPXIiIChyKSA6ICJybSIgKHgpKTsKICAgICAg
ICByZXR1cm4gcisxOwp9CiMgMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKCnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA1MCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGZpbGVzX3N0YXRfc3RydWN0IHsKICAg
ICAgICBpbnQgbnJfZmlsZXM7CiAgICAgICAgaW50IG5yX2ZyZWVfZmlsZXM7CiAgICAgICAgaW50
IG1heF9maWxlczsKfTsKZXh0ZXJuIHN0cnVjdCBmaWxlc19zdGF0X3N0cnVjdCBmaWxlc19zdGF0
OwoKc3RydWN0IGlub2Rlc19zdGF0X3QgewogICAgICAgIGludCBucl9pbm9kZXM7CiAgICAgICAg
aW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgZHVtbXlbNV07Cn07CmV4dGVybiBzdHJ1Y3QgaW5v
ZGVzX3N0YXRfdCBpbm9kZXNfc3RhdDsKCmV4dGVybiBpbnQgbGVhc2VzX2VuYWJsZSwgZGlyX25v
dGlmeV9lbmFibGUsIGxlYXNlX2JyZWFrX3RpbWU7CiMgMjAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2FzbS9zZW1hcGhvcmUuaCIgMQojIDM5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vc2VtYXBob3JlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3N5
c3RlbS5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9p
bml0LmgiIDEKIyA0OCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaW5pdC5o
Igp0eXBlZGVmIGludCAoKmluaXRjYWxsX3QpKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCpleGl0Y2Fs
bF90KSh2b2lkKTsKCmV4dGVybiBpbml0Y2FsbF90IF9faW5pdGNhbGxfc3RhcnQsIF9faW5pdGNh
bGxfZW5kOwojIDYxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pbml0Lmgi
CnN0cnVjdCBrZXJuZWxfcGFyYW0gewogICAgICAgIGNvbnN0IGNoYXIgKnN0cjsKICAgICAgICBp
bnQgKCpzZXR1cF9mdW5jKShjaGFyICopOwp9OwoKZXh0ZXJuIHN0cnVjdCBrZXJuZWxfcGFyYW0g
X19zZXR1cF9zdGFydCwgX19zZXR1cF9lbmQ7CiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL3N5c3RlbS5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2JpdG9wcy5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L2JpdG9wcy5oIgpzdGF0aWMgaW5saW5lIGludCBnZW5lcmljX2ZmcyhpbnQgeCkKewogICAg
ICAgIGludCByID0gMTsKCiAgICAgICAgaWYgKCF4KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgaWYgKCEoeCAmIDB4ZmZmZikpIHsKICAgICAgICAgICAgICAgIHggPj49IDE2Owog
ICAgICAgICAgICAgICAgciArPSAxNjsKICAgICAgICB9CiAgICAgICAgaWYgKCEoeCAmIDB4ZmYp
KSB7CiAgICAgICAgICAgICAgICB4ID4+PSA4OwogICAgICAgICAgICAgICAgciArPSA4OwogICAg
ICAgIH0KICAgICAgICBpZiAoISh4ICYgMHhmKSkgewogICAgICAgICAgICAgICAgeCA+Pj0gNDsK
ICAgICAgICAgICAgICAgIHIgKz0gNDsKICAgICAgICB9CiAgICAgICAgaWYgKCEoeCAmIDMpKSB7
CiAgICAgICAgICAgICAgICB4ID4+PSAyOwogICAgICAgICAgICAgICAgciArPSAyOwogICAgICAg
IH0KICAgICAgICBpZiAoISh4ICYgMSkpIHsKICAgICAgICAgICAgICAgIHggPj49IDE7CiAgICAg
ICAgICAgICAgICByICs9IDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiByOwp9CgoKCgoKZXh0
ZXJuIF9faW5saW5lX18gaW50IGdlbmVyaWNfZmxzKGludCB4KQp7CiAgICAgICAgaW50IHIgPSAz
MjsKCiAgICAgICAgaWYgKCF4KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYg
KCEoeCAmIDB4ZmZmZjAwMDApKSB7CiAgICAgICAgICAgICAgICB4IDw8PSAxNjsKICAgICAgICAg
ICAgICAgIHIgLT0gMTY7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAweGZmMDAwMDAwKSkg
ewogICAgICAgICAgICAgICAgeCA8PD0gODsKICAgICAgICAgICAgICAgIHIgLT0gODsKICAgICAg
ICB9CiAgICAgICAgaWYgKCEoeCAmIDB4ZjAwMDAwMDApKSB7CiAgICAgICAgICAgICAgICB4IDw8
PSA0OwogICAgICAgICAgICAgICAgciAtPSA0OwogICAgICAgIH0KICAgICAgICBpZiAoISh4ICYg
MHhjMDAwMDAwMCkpIHsKICAgICAgICAgICAgICAgIHggPDw9IDI7CiAgICAgICAgICAgICAgICBy
IC09IDI7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAweDgwMDAwMDAwKSkgewogICAgICAg
ICAgICAgICAgeCA8PD0gMTsKICAgICAgICAgICAgICAgIHIgLT0gMTsKICAgICAgICB9CiAgICAg
ICAgcmV0dXJuIHI7Cn0KCmV4dGVybiBfX2lubGluZV9fIGludCBnZXRfYml0bWFza19vcmRlcih1
bnNpZ25lZCBpbnQgY291bnQpCnsKICAgICAgICBpbnQgb3JkZXI7CgogICAgICAgIG9yZGVyID0g
Z2VuZXJpY19mbHMoY291bnQpOwogICAgICAgIHJldHVybiBvcmRlcjsKfQoKCgoKCgpzdGF0aWMg
aW5saW5lIHVuc2lnbmVkIGludCBnZW5lcmljX2h3ZWlnaHQzMih1bnNpZ25lZCBpbnQgdykKewog
ICAgICAgIHVuc2lnbmVkIGludCByZXMgPSAodyAmIDB4NTU1NTU1NTUpICsgKCh3ID4+IDEpICYg
MHg1NTU1NTU1NSk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MzMzMzMzMzMpICsgKChyZXMgPj4g
MikgJiAweDMzMzMzMzMzKTsKICAgICAgICByZXMgPSAocmVzICYgMHgwRjBGMEYwRikgKyAoKHJl
cyA+PiA0KSAmIDB4MEYwRjBGMEYpOwogICAgICAgIHJlcyA9IChyZXMgJiAweDAwRkYwMEZGKSAr
ICgocmVzID4+IDgpICYgMHgwMEZGMDBGRik7CiAgICAgICAgcmV0dXJuIChyZXMgJiAweDAwMDBG
RkZGKSArICgocmVzID4+IDE2KSAmIDB4MDAwMEZGRkYpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGludCBnZW5lcmljX2h3ZWlnaHQxNih1bnNpZ25lZCBpbnQgdykKewogICAgICAgIHVuc2ln
bmVkIGludCByZXMgPSAodyAmIDB4NTU1NSkgKyAoKHcgPj4gMSkgJiAweDU1NTUpOwogICAgICAg
IHJlcyA9IChyZXMgJiAweDMzMzMpICsgKChyZXMgPj4gMikgJiAweDMzMzMpOwogICAgICAgIHJl
cyA9IChyZXMgJiAweDBGMEYpICsgKChyZXMgPj4gNCkgJiAweDBGMEYpOwogICAgICAgIHJldHVy
biAocmVzICYgMHgwMEZGKSArICgocmVzID4+IDgpICYgMHgwMEZGKTsKfQoKc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19od2VpZ2h0OCh1bnNpZ25lZCBpbnQgdykKewogICAgICAg
IHVuc2lnbmVkIGludCByZXMgPSAodyAmIDB4NTUpICsgKCh3ID4+IDEpICYgMHg1NSk7CiAgICAg
ICAgcmVzID0gKHJlcyAmIDB4MzMpICsgKChyZXMgPj4gMikgJiAweDMzKTsKICAgICAgICByZXR1
cm4gKHJlcyAmIDB4MEYpICsgKChyZXMgPj4gNCkgJiAweDBGKTsKfQojIDkgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMgoKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7
CmV4dGVybiB2b2lkIF9fc3dpdGNoX3RvKHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldiwgc3RydWN0
IHRhc2tfc3RydWN0ICpuZXh0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgNjQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBsb25nIF9nZXRfYmFzZShjaGFyICogYWRkcikKewogICAgICAgIHVuc2lnbmVkIGxv
bmcgX19iYXNlOwogICAgICAgIF9fYXNtX18oIm1vdmIgJTMsJSVkaFxuXHQiCiAgICAgICAgICAg
ICAgICAibW92YiAlMiwlJWRsXG5cdCIKICAgICAgICAgICAgICAgICJzaGxsICQxNiwlJWVkeFxu
XHQiCiAgICAgICAgICAgICAgICAibW92dyAlMSwlJWR4IgogICAgICAgICAgICAgICAgOiI9JmQi
IChfX2Jhc2UpCiAgICAgICAgICAgICAgICA6Im0iICgqKChhZGRyKSsyKSksCiAgICAgICAgICAg
ICAgICAgIm0iICgqKChhZGRyKSs0KSksCiAgICAgICAgICAgICAgICAgIm0iICgqKChhZGRyKSs3
KSkpOwogICAgICAgIHJldHVybiBfX2Jhc2U7Cn0KIyAxMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9s
aW1pdCh1bnNpZ25lZCBsb25nIHNlZ21lbnQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fbGlt
aXQ7CiAgICAgICAgX19hc21fXygibHNsbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChf
X2xpbWl0KToiciIgKHNlZ21lbnQpKTsKICAgICAgICByZXR1cm4gX19saW1pdCsxOwp9CgoKCgoK
CgpzdHJ1Y3QgX194Y2hnX2R1bW15IHsgdW5zaWduZWQgbG9uZyBhWzEwMF07IH07CiMgMTYzICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUg
dm9pZCBfX3NldF82NGJpdCAodW5zaWduZWQgbG9uZyBsb25nICogcHRyLAogICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGxvdywgdW5zaWduZWQgaW50IGhpZ2gpCnsKICAgICAgICBfX2FzbV9f
IF9fdm9sYXRpbGVfXyAoCiAgICAgICAgICAgICAgICAiXG4xOlx0IgogICAgICAgICAgICAgICAg
Im1vdmwgKCUwKSwgJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm1vdmwgNCglMCksICUlZWR4
XG5cdCIKICAgICAgICAgICAgICAgICJsb2NrIGNtcHhjaGc4YiAoJTApXG5cdCIKICAgICAgICAg
ICAgICAgICJqbnogMWIiCiAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICA6ICJEIihw
dHIpLAogICAgICAgICAgICAgICAgICAgICAgICAiYiIobG93KSwKICAgICAgICAgICAgICAgICAg
ICAgICAgImMiKGhpZ2gpCiAgICAgICAgICAgICAgICA6ICJheCIsImR4IiwibWVtb3J5Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdF9jb25zdGFudCAodW5zaWduZWQgbG9uZyBs
b25nICpwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCnsKICAgICAgICBfX3NldF82NGJpdChwdHIsKHVu
c2lnbmVkIGludCkodmFsdWUpLCAodW5zaWduZWQgaW50KSgodmFsdWUpPj4zMlVMTCkpOwp9CgoK
CnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdF92YXIgKHVuc2lnbmVkIGxvbmcgbG9uZyAq
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQp7
CiAgICAgICAgX19zZXRfNjRiaXQocHRyLCooKCh1bnNpZ25lZCBpbnQqKSYodmFsdWUpKSswKSwg
KigoKHVuc2lnbmVkIGludCopJih2YWx1ZSkpKzEpKTsKfQojIDIwOCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcg
X194Y2hnKHVuc2lnbmVkIGxvbmcgeCwgdm9sYXRpbGUgdm9pZCAqIHB0ciwgaW50IHNpemUpCnsK
ICAgICAgICBzd2l0Y2ggKHNpemUpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAg
ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGdiICViMCwlMSIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6Ij1xIiAoeCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6Im0iICgqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiICh4
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAg
ICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ3cgJXcwLCUxIgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDoiPXIiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAiMCIgKHgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Y2hnbCAlMCwlMSIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6Ij1yIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6Im0iICgqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiICh4KQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICByZXR1cm4geDsKfQojIDI0MiAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVk
IGxvbmcgX19jbXB4Y2hnKHZvbGF0aWxlIHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBvbGQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXcsIGlu
dCBzaXplKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcmV2OwogICAgICAgIHN3aXRjaCAoc2l6
ZSkgewogICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KCJsb2NrIDsgIiAiY21weGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihv
bGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAg
ICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKCJsb2NrIDsgIiAiY21weGNoZ3cgJXcxLCUyIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19k
dW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNh
c2UgNDoKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsb2NrIDsgIiAiY21w
eGNoZ2wgJTEsJTIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIo
cHJldikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJt
IigqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0
dXJuIHByZXY7CiAgICAgICAgfQogICAgICAgIHJldHVybiBvbGQ7Cn0KIyAzNDMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKZXh0ZXJuIHZvaWQgX19nbG9iYWxf
Y2xpKHZvaWQpOwpleHRlcm4gdm9pZCBfX2dsb2JhbF9zdGkodm9pZCk7CmV4dGVybiB1bnNpZ25l
ZCBsb25nIF9fZ2xvYmFsX3NhdmVfZmxhZ3Modm9pZCk7CmV4dGVybiB2b2lkIF9fZ2xvYmFsX3Jl
c3RvcmVfZmxhZ3ModW5zaWduZWQgbG9uZyk7CiMgMzY5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vc3lzdGVtLmgiCnZvaWQgZGlzYWJsZV9obHQodm9pZCk7CnZvaWQgZW5hYmxl
X2hsdCh2b2lkKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRtaV9icm9rZW47CmV4dGVybiBpbnQg
aXNfc29ueV92YWlvX2xhcHRvcDsKIyA0MCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
YXNtL3NlbWFwaG9yZS5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9yd3NlbS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L3J3c2VtLmgiCnN0cnVjdCByd19zZW1hcGhvcmU7CgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS9yd3NlbS5oIiAxCiMgNDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9yd3NlbS5oIgpzdHJ1Y3QgcndzZW1fd2FpdGVyOwoKZXh0ZXJuIHN0cnVjdCBy
d19zZW1hcGhvcmUgKnJ3c2VtX2Rvd25fcmVhZF9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAq
c2VtKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBzdHJ1Y3Qgcndfc2VtYXBo
b3JlICpyd3NlbV9kb3duX3dyaXRlX2ZhaWxlZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0cnVjdCByd19zZW1hcGhvcmUgKnJ3
c2VtX3dha2Uoc3RydWN0IHJ3X3NlbWFwaG9yZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CgoKCgpzdHJ1Y3Qgcndfc2VtYXBob3JlIHsKICAgICAgICBzaWduZWQgbG9uZyBjb3VudDsK
CgoKCgoKICAgICAgICBzcGlubG9ja190IHdhaXRfbG9jazsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIHdhaXRfbGlzdDsKCgoKfTsKIyA4NiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
YXNtL3J3c2VtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3J3c2VtKHN0cnVjdCByd19zZW1h
cGhvcmUgKnNlbSkKewogICAgICAgIHNlbS0+Y291bnQgPSAweDAwMDAwMDAwOwogICAgICAgIGRv
IHsgKigmc2VtLT53YWl0X2xvY2spID0gKHNwaW5sb2NrX3QpIHsgMSB9OyB9IHdoaWxlKDApOwog
ICAgICAgIGRvIHsgKCZzZW0tPndhaXRfbGlzdCktPm5leHQgPSAoJnNlbS0+d2FpdF9saXN0KTsg
KCZzZW0tPndhaXRfbGlzdCktPnByZXYgPSAoJnNlbS0+d2FpdF9saXN0KTsgfSB3aGlsZSAoMCk7
CgoKCn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2Rvd25fcmVhZChzdHJ1Y3Qgcndfc2VtYXBo
b3JlICpzZW0pCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAg
ICIjIGJlZ2lubmluZyBkb3duX3JlYWRcblx0IgoibG9jayA7ICIgIiAgaW5jbCAgICAgICglJWVh
eClcblx0IgogICAgICAgICAgICAgICAgIiAganMgICAgICAgIDJmXG5cdCIKICAgICAgICAgICAg
ICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rpb24gMVxuXHQiICIiICIuaWZu
ZGVmICIgIi50ZXh0LmxvY2suIiAic2NoZWQiICJcblx0IiAiLnRleHQubG9jay4iICJzY2hlZCIg
Ijpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAg
ICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAg
ICUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV9kb3duX3JlYWRf
ZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVkeFxuXHQiCiAgICAg
ICAgICAgICAgICAiICBwb3BsICAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1w
ICAgICAgIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAg
ICAgICIjIGVuZGluZyBkb3duX3JlYWRcblx0IgogICAgICAgICAgICAgICAgOiAiK20iKHNlbS0+
Y291bnQpCiAgICAgICAgICAgICAgICA6ICJhIihzZW0pCiAgICAgICAgICAgICAgICA6ICJtZW1v
cnkiLCAiY2MiKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgX19kb3duX3JlYWRfdHJ5bG9jayhz
dHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBfX3MzMiByZXN1bHQsIHRtcDsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBf
X2Rvd25fcmVhZF90cnlsb2NrXG5cdCIKICAgICAgICAgICAgICAgICIgIG1vdmwgICAgICAlMCwl
MVxuXHQiCiAgICAgICAgICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIiAgbW92bAkg
ICAgICUxLCUyXG5cdCIKICAgICAgICAgICAgICAgICIgIGFkZGwgICAgICAlMywlMlxuXHQiCiAg
ICAgICAgICAgICAgICAiICBqbGUJICAgICAyZlxuXHQiCiJsb2NrIDsgIiAiICBjbXB4Y2hnbCAg
JTIsJTBcblx0IgogICAgICAgICAgICAgICAgIiAgam56CSAgICAgMWJcblx0IgogICAgICAgICAg
ICAgICAgIjI6XG5cdCIKICAgICAgICAgICAgICAgICIjIGVuZGluZyBfX2Rvd25fcmVhZF90cnls
b2NrXG5cdCIKICAgICAgICAgICAgICAgIDogIittIihzZW0tPmNvdW50KSwgIj0mYSIocmVzdWx0
KSwgIj0mciIodG1wKQogICAgICAgICAgICAgICAgOiAiaSIoMHgwMDAwMDAwMSkKICAgICAgICAg
ICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwogICAgICAgIHJldHVybiByZXN1bHQ+PTAgPyAxIDog
MDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fZG93bl93cml0ZShzdHJ1Y3Qgcndfc2VtYXBo
b3JlICpzZW0pCnsKICAgICAgICBpbnQgdG1wOwoKICAgICAgICB0bXAgPSAoKC0weDAwMDEwMDAw
KSArIDB4MDAwMDAwMDEpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAg
ICAgICAgIiMgYmVnaW5uaW5nIGRvd25fd3JpdGVcblx0IgoibG9jayA7ICIgIiAgeGFkZCAgICAg
ICUwLCglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAgdGVzdGwgICAgICUwLCUwXG5cdCIK
ICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAiMTpc
blx0IgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIu
dGV4dC5sb2NrLiIgInNjaGVkIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAic2NoZWQiICI6XG5cdCIg
Ii5lbmRpZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcblx0IgogICAgICAgICAgICAgICAgIiAg
cHVzaGwgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV9k
b3duX3dyaXRlX2ZhaWxlZFxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAgICAgJSVlY3hc
blx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4iCiAgICAgICAgICAgICAgICAi
LnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgICIjIGVuZGluZyBkb3duX3dyaXRlIgogICAg
ICAgICAgICAgICAgOiAiK2QiKHRtcCksICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAg
IDogImEiKHNlbSkKICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0
aWMgaW5saW5lIGludCBfX2Rvd25fd3JpdGVfdHJ5bG9jayhzdHJ1Y3Qgcndfc2VtYXBob3JlICpz
ZW0pCnsKICAgICAgICBzaWduZWQgbG9uZyByZXQgPSAoKF9fdHlwZW9mX18oKigmc2VtLT5jb3Vu
dCkpKV9fY21weGNoZygoJnNlbS0+Y291bnQpLCh1bnNpZ25lZCBsb25nKSgweDAwMDAwMDAwKSwg
KHVuc2lnbmVkIGxvbmcpKCgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAwMSkpLHNpemVvZigqKCZz
ZW0tPmNvdW50KSkpKTsKCgogICAgICAgIGlmIChyZXQgPT0gMHgwMDAwMDAwMCkKICAgICAgICAg
ICAgICAgIHJldHVybiAxOwogICAgICAgIHJldHVybiAwOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZv
aWQgX191cF9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fczMyIHRt
cCA9IC0weDAwMDAwMDAxOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAg
ICAgICAgIiMgYmVnaW5uaW5nIF9fdXBfcmVhZFxuXHQiCiJsb2NrIDsgIiAiICB4YWRkICAgICAg
JSVlZHgsKCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAgICAiICBqcyAgICAgICAgMmZcblx0Igog
ICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAgICAgICAgICIuc3Vic2VjdGlvbiAxXG5c
dCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJzY2hlZCIgIlxuXHQiICIudGV4dC5sb2Nr
LiIgInNjaGVkIiAiOlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAgICAgICAgIjI6XG5cdCIK
ICAgICAgICAgICAgICAgICIgIGRlY3cgICAgICAlJWR4XG5cdCIKICAgICAgICAgICAgICAgICIg
IGpueiAgICAgICAxYlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0
IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX3dha2Vcblx0IgogICAgICAgICAg
ICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGptcCAgICAg
ICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91c1xuXHQiCiAgICAgICAgICAgICAgICAi
IyBlbmRpbmcgX191cF9yZWFkXG4iCiAgICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCks
ICIrZCIodG1wKQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAi
bWVtb3J5IiwgImNjIik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3dyaXRlKHN0cnVj
dCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAg
ICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fdXBfd3JpdGVcblx0IgogICAgICAgICAgICAgICAg
IiAgbW92bCAgICAgICUyLCUlZWR4XG5cdCIKImxvY2sgOyAiICIgIHhhZGRsICAgICAlJWVkeCwo
JSVlYXgpXG5cdCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAyZlxuXHQiCiAgICAgICAg
ICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAi
LmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNjaGVkIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAic2No
ZWQiICI6XG5cdCIgIi5lbmRpZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcblx0IgogICAgICAg
ICAgICAgICAgIiAgZGVjdyAgICAgICUlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAg
ICAgIDFiXG5cdCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAg
ICAgICAgICAgICAiICBjYWxsICAgICAgcndzZW1fd2FrZVxuXHQiCiAgICAgICAgICAgICAgICAi
ICBwb3BsICAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4i
CiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgICIjIGVuZGlu
ZyBfX3VwX3dyaXRlXG4iCiAgICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCkKICAgICAg
ICAgICAgICAgIDogImEiKHNlbSksICJpIigtKCgtMHgwMDAxMDAwMCkgKyAweDAwMDAwMDAxKSkK
ICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIsICJlZHgiKTsKfQoKCgoKc3RhdGljIGlu
bGluZSB2b2lkIHJ3c2VtX2F0b21pY19hZGQoaW50IGRlbHRhLCBzdHJ1Y3Qgcndfc2VtYXBob3Jl
ICpzZW0pCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKImxvY2sgOyAiICJhZGRsICUx
LCUwIgogICAgICAgICAgICAgICAgOiI9bSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoi
aXIiKGRlbHRhKSwgIm0iKHNlbS0+Y291bnQpKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgcndz
ZW1fYXRvbWljX3VwZGF0ZShpbnQgZGVsdGEsIHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewog
ICAgICAgIGludCB0bXAgPSBkZWx0YTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiJs
b2NrIDsgIiAieGFkZCAlMCwoJTIpIgogICAgICAgICAgICAgICAgOiAiK3IiKHRtcCksICI9bSIo
c2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogInIiKHNlbSksICJtIihzZW0tPmNvdW50KQog
ICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CgogICAgICAgIHJldHVybiB0bXArZGVsdGE7Cn0K
IyAzMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgojIDQz
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yd3NlbS5oIgpzdGF0aWMgaW5s
aW5lIHZvaWQgZG93bl9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIDsK
ICAgICAgICBfX2Rvd25fcmVhZChzZW0pOwogICAgICAgIDsKfQoKCgoKc3RhdGljIGlubGluZSBp
bnQgZG93bl9yZWFkX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAg
aW50IHJldDsKICAgICAgICA7CiAgICAgICAgcmV0ID0gX19kb3duX3JlYWRfdHJ5bG9jayhzZW0p
OwogICAgICAgIDsKICAgICAgICByZXR1cm4gcmV0Owp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQg
ZG93bl93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICA7CiAgICAgICAg
X19kb3duX3dyaXRlKHNlbSk7CiAgICAgICAgOwp9CgoKCgpzdGF0aWMgaW5saW5lIGludCBkb3du
X3dyaXRlX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgaW50IHJl
dDsKICAgICAgICA7CiAgICAgICAgcmV0ID0gX19kb3duX3dyaXRlX3RyeWxvY2soc2VtKTsKICAg
ICAgICA7CiAgICAgICAgcmV0dXJuIHJldDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIHVwX3Jl
YWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgOwogICAgICAgIF9fdXBfcmVh
ZChzZW0pOwogICAgICAgIDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIHVwX3dyaXRlKHN0cnVj
dCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIDsKICAgICAgICBfX3VwX3dyaXRlKHNlbSk7
CiAgICAgICAgOwp9CiMgNDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zZW1h
cGhvcmUuaCIgMgoKc3RydWN0IHNlbWFwaG9yZSB7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAg
ICAgICAgaW50IHNsZWVwZXJzOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgoKCn07
CiMgNzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIKc3Rh
dGljIGlubGluZSB2b2lkIHNlbWFfaW5pdCAoc3RydWN0IHNlbWFwaG9yZSAqc2VtLCBpbnQgdmFs
KQp7CgoKCgoKCiAgICAgICAgKCgoJnNlbS0+Y291bnQpLT5jb3VudGVyKSA9ICh2YWwpKTsKICAg
ICAgICBzZW0tPnNsZWVwZXJzID0gMDsKICAgICAgICBpbml0X3dhaXRxdWV1ZV9oZWFkKCZzZW0t
PndhaXQpOwoKCgp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9NVVRFWCAoc3RydWN0IHNlbWFw
aG9yZSAqc2VtKQp7CiAgICAgICAgc2VtYV9pbml0KHNlbSwgMSk7Cn0KCnN0YXRpYyBpbmxpbmUg
dm9pZCBpbml0X01VVEVYX0xPQ0tFRCAoc3RydWN0IHNlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAg
c2VtYV9pbml0KHNlbSwgMCk7Cn0KCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBf
X2Rvd25fZmFpbGVkKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19k
b3duX2ZhaWxlZF9pbnRlcnJ1cHRpYmxlKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MCkpKSBpbnQgX19kb3duX2ZhaWxlZF90cnlsb2NrKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMCkpKSB2b2lkIF9fdXBfd2FrZXVwKHZvaWQgKTsKCiBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDApKSkgdm9pZCBfX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CiBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDApKSkgaW50IF9fZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhv
cmUgKiBzZW0pOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBfX2Rvd25fdHJ5bG9j
ayhzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2
b2lkIF9fdXAoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBkb3duKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCnsKCgoKCiAgICAgICAgX19hc21fXyBfX3Zv
bGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9taWMgZG93biBvcGVyYXRpb25cblx0Igog
ICAgICAgICAgICAgICAgImxvY2sgOyAiICJkZWNsICUwXG5cdCIKICAgICAgICAgICAgICAgICJq
cyAyZlxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rp
b24gMVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic2NoZWQiICJcblx0IiAiLnRl
eHQubG9jay4iICJzY2hlZCIgIjpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIy
Olx0Y2FsbCBfX2Rvd25fZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAg
ICAgICAgICAgICAgICIucHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgOiI9bSIgKHNlbS0+
Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9y
eSIpOwp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBz
ZW1hcGhvcmUgKiBzZW0pCnsKICAgICAgICBpbnQgcmVzdWx0OwoKCgoKCiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9taWMgaW50ZXJydXB0aWJsZSBk
b3duIG9wZXJhdGlvblxuXHQiCiAgICAgICAgICAgICAgICAibG9jayA7ICIgImRlY2wgJTFcblx0
IgogICAgICAgICAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUwLCUw
XG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc3Vic2VjdGlvbiAx
XG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJzY2hlZCIgIlxuXHQiICIudGV4dC5s
b2NrLiIgInNjaGVkIiAiOlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAgICAgICAgIjI6XHRj
YWxsIF9fZG93bl9mYWlsZWRfaW50ZXJydXB0aWJsZVxuXHQiCiAgICAgICAgICAgICAgICAiam1w
IDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgIDoi
PWEiIChyZXN1bHQpLCAiPW0iIChzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2Vt
KQogICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoK
CgoKc3RhdGljIGlubGluZSBpbnQgZG93bl90cnlsb2NrKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0p
CnsKICAgICAgICBpbnQgcmVzdWx0OwoKCgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgICAgICAgICAiIyBhdG9taWMgaW50ZXJydXB0aWJsZSBkb3duIG9wZXJhdGlvblxu
XHQiCiAgICAgICAgICAgICAgICAibG9jayA7ICIgImRlY2wgJTFcblx0IgogICAgICAgICAgICAg
ICAgImpzIDJmXG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUwLCUwXG4iCiAgICAgICAgICAg
ICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5k
ZWYgIiAiLnRleHQubG9jay4iICJzY2hlZCIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNjaGVkIiAi
OlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9fZG93bl9mYWls
ZWRfdHJ5bG9ja1xuXHQiCiAgICAgICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAg
ICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgIDoiPWEiIChyZXN1bHQpLCAiPW0iIChz
ZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJt
ZW1vcnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIHZv
aWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgogICAgICAgIF9fYXNtX18gX192b2xh
dGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIHVwIG9wZXJhdGlvblxuXHQiCiAgICAg
ICAgICAgICAgICAibG9jayA7ICIgImluY2wgJTBcblx0IgogICAgICAgICAgICAgICAgImpsZSAy
ZlxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rpb24g
MVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic2NoZWQiICJcblx0IiAiLnRleHQu
bG9jay4iICJzY2hlZCIgIjpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlx0
Y2FsbCBfX3VwX3dha2V1cFxuXHQiCiAgICAgICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAg
ICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgICIuc3Vic2VjdGlvbiAwXG4i
CiAgICAgICAgICAgICAgICA6Ij1tIiAoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiYyIg
KHNlbSkKICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNl
bV9nZXRjb3VudChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCnsKICAgICAgICByZXR1cm4gKCgmc2Vt
LT5jb3VudCktPmNvdW50ZXIpOwp9CiMgMjAyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCgoKZXh0ZXJuIHZvaWQgdXBkYXRlX2F0aW1lIChzdHJ1Y3QgaW5vZGUg
Kik7CgoKZXh0ZXJuIHZvaWQgYnVmZmVyX2luaXQodW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lk
IGlub2RlX2luaXQodW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIG1udF9pbml0KHVuc2lnbmVk
IGxvbmcpOwpleHRlcm4gdm9pZCBmaWxlc19pbml0KHVuc2lnbmVkIGxvbmcgbWVtcGFnZXMpOwoK
CmVudW0gYmhfc3RhdGVfYml0cyB7CiAgICAgICAgQkhfVXB0b2RhdGUsCiAgICAgICAgQkhfRGly
dHksCiAgICAgICAgQkhfTG9jaywKICAgICAgICBCSF9SZXEsCiAgICAgICAgQkhfTWFwcGVkLAog
ICAgICAgIEJIX05ldywKICAgICAgICBCSF9Bc3luYywKICAgICAgICBCSF9XYWl0X0lPLAogICAg
ICAgIEJIX0xhdW5kZXIsCiAgICAgICAgQkhfQXR0YWNoZWQsCiAgICAgICAgQkhfSkJELAoKICAg
ICAgICBCSF9Qcml2YXRlU3RhcnQsCgoKfTsKIyAyNDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiCnN0cnVjdCBidWZmZXJfaGVhZCB7CgogICAgICAgIHN0cnVjdCBi
dWZmZXJfaGVhZCAqYl9uZXh0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9ibG9ja25yOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGJfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBiX2xpc3Q7
CiAgICAgICAga2Rldl90IGJfZGV2OwoKICAgICAgICBhdG9taWNfdCBiX2NvdW50OwogICAgICAg
IGtkZXZfdCBiX3JkZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX3N0YXRlOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgYl9mbHVzaHRpbWU7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9u
ZXh0X2ZyZWU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3ByZXZfZnJlZTsKICAgICAg
ICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfdGhpc19wYWdlOwogICAgICAgIHN0cnVjdCBidWZmZXJf
aGVhZCAqYl9yZXFuZXh0OwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipiX3BwcmV2Owog
ICAgICAgIGNoYXIgKiBiX2RhdGE7CiAgICAgICAgc3RydWN0IHBhZ2UgKmJfcGFnZTsKICAgICAg
ICB2b2lkICgqYl9lbmRfaW8pKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCB1cHRvZGF0ZSk7
CiAgICAgICAgdm9pZCAqYl9wcml2YXRlOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGJfcnNlY3Rv
cjsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBiX3dhaXQ7CgogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgYl9pbm9kZV9idWZmZXJzOwp9OwoKdHlwZWRlZiB2b2lkIChiaF9lbmRfaW9fdCkoc3Ry
dWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IHVwdG9kYXRlKTsKdm9pZCBpbml0X2J1ZmZlcihzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiwgYmhfZW5kX2lvX3QgKiwgdm9pZCAqKTsKIyAyOTAgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiB2b2lkIHNldF9iaF9wYWdl
KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25n
IG9mZnNldCk7CgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Bp
cGVfZnNfaS5oIiAxCgoKCgpzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvIHsKICAgICAgICB3YWl0X3F1
ZXVlX2hlYWRfdCB3YWl0OwogICAgICAgIGNoYXIgKmJhc2U7CiAgICAgICAgdW5zaWduZWQgaW50
IGxlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJl
YWRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHdyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50
IHdhaXRpbmdfcmVhZGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ193cml0ZXJzOwog
ICAgICAgIHVuc2lnbmVkIGludCByX2NvdW50ZXI7CiAgICAgICAgdW5zaWduZWQgaW50IHdfY291
bnRlcjsKfTsKIyA0MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcGlwZV9m
c19pLmgiCnZvaWQgcGlwZV93YWl0KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKCnN0cnVjdCBpbm9k
ZSogcGlwZV9uZXcoc3RydWN0IGlub2RlKiBpbm9kZSk7CiMgMjk2ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvc3VwZXJtb3VudF9mc19pLmgiIDEKCgoKc3RydWN0IHN1cGVybW91bnRfaW5v
ZGVfaW5mbyB7CiAgICAgICAgaW50IGlfc2JfdmVyc2lvbjsKICAgICAgICBzdHJ1Y3QgZGVudHJ5
ICogaV9kZW50cnk7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2ZzOwp9OwojIDI5NyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzX2kuaCIgMQoKCgoKCgpzdHJ1Y3QgbWlu
aXhfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgX191MTYgaTFf
ZGF0YVsxNl07CiAgICAgICAgICAgICAgICBfX3UzMiBpMl9kYXRhWzE2XTsKICAgICAgICB9IHU7
Cn07CiMgMjk4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZXh0Ml9mc19pLmgiIDEKIyAy
MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZXh0Ml9mc19pLmgiCnN0cnVj
dCBleHQyX2lub2RlX2luZm8gewogICAgICAgIF9fdTMyIGlfZGF0YVsxNV07CiAgICAgICAgX191
MzIgaV9mbGFnczsKICAgICAgICBfX3UzMiBpX2ZhZGRyOwogICAgICAgIF9fdTggaV9mcmFnX25v
OwogICAgICAgIF9fdTggaV9mcmFnX3NpemU7CiAgICAgICAgX191MzIgaV9maWxlX2FjbDsKICAg
ICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGltZTsKICAgICAgICBfX3Uz
MiBpX2Jsb2NrX2dyb3VwOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAg
ICBfX3UzMiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAgICBfX3UzMiBpX3ByZWFsbG9jX2Jsb2Nr
OwogICAgICAgIF9fdTMyIGlfcHJlYWxsb2NfY291bnQ7CiAgICAgICAgX191MzIgaV9kaXJfc3Rh
cnRfbG9va3VwOwogICAgICAgIGludCBpX25ld19pbm9kZToxOwp9OwojIDI5OSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfaS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfaS5oIgpzdHJ1Y3QgZXh0M19pbm9kZV9pbmZvIHsK
ICAgICAgICBfX3UzMiBpX2RhdGFbMTVdOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CgoKCgoKCiAg
ICAgICAgX191MzIgaV9maWxlX2FjbDsKICAgICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAg
X191MzIgaV9kdGltZTsKICAgICAgICBfX3UzMiBpX2Jsb2NrX2dyb3VwOwogICAgICAgIF9fdTMy
IGlfc3RhdGU7CiAgICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2Jsb2NrOwogICAgICAgIF9fdTMy
IGlfbmV4dF9hbGxvY19nb2FsOwoKCgoKICAgICAgICBfX3UzMiBpX2Rpcl9zdGFydF9sb29rdXA7
CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9vcnBoYW47CiMgNjMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfaS5oIgogICAgICAgIGxvZmZfdCBpX2Rpc2tz
aXplOwojIDc1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9leHQzX2ZzX2ku
aCIKICAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIHRydW5jYXRlX3NlbTsKfTsKIyAzMDAgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9ocGZzX2ZzX2kuaCIgMQoKCgpzdHJ1Y3QgaHBmc19p
bm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIGlu
b190IGlfcGFyZW50X2RpcjsKICAgICAgICB1bnNpZ25lZCBpX2RubzsKICAgICAgICB1bnNpZ25l
ZCBpX2Rwb3M7CiAgICAgICAgdW5zaWduZWQgaV9kc3ViZG5vOwogICAgICAgIHVuc2lnbmVkIGlf
ZmlsZV9zZWM7CiAgICAgICAgdW5zaWduZWQgaV9kaXNrX3NlYzsKICAgICAgICB1bnNpZ25lZCBp
X25fc2VjczsKICAgICAgICB1bnNpZ25lZCBpX2VhX3NpemU7CiAgICAgICAgdW5zaWduZWQgaV9j
b252IDogMjsKICAgICAgICB1bnNpZ25lZCBpX2VhX21vZGUgOiAxOwogICAgICAgIHVuc2lnbmVk
IGlfZWFfdWlkIDogMTsKICAgICAgICB1bnNpZ25lZCBpX2VhX2dpZCA6IDE7CiAgICAgICAgdW5z
aWduZWQgaV9kaXJ0eSA6IDE7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX3NlbTsKICAgICAg
ICBsb2ZmX3QgKippX3JkZGlyX29mZjsKfTsKIyAzMDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9udGZzX2ZzX2kuaCIgMQoKCgoKCgpzdHJ1Y3QgbnRmc19hdHRyaWJ1dGU7CnN0cnVjdCBu
dGZzX3NiX2luZm87CgoKCgp0eXBlZGVmIHU4IG50ZnNfdTg7CnR5cGVkZWYgdTE2IG50ZnNfdTE2
Owp0eXBlZGVmIHUzMiBudGZzX3UzMjsKdHlwZWRlZiB1NjQgbnRmc191NjQ7CnR5cGVkZWYgczgg
bnRmc19zODsKdHlwZWRlZiBzMTYgbnRmc19zMTY7CnR5cGVkZWYgczMyIG50ZnNfczMyOwp0eXBl
ZGVmIHM2NCBudGZzX3M2NDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG50bW9kZV90OwoK
Cgp0eXBlZGVmIHVpZF90IG50ZnNfdWlkX3Q7CgoKCnR5cGVkZWYgZ2lkX3QgbnRmc19naWRfdDsK
CgoKdHlwZWRlZiBfX2tlcm5lbF9zaXplX3QgbnRmc19zaXplX3Q7CgoKCnR5cGVkZWYgX19rZXJu
ZWxfdGltZV90IG50ZnNfdGltZV90OwoKCgoKCnR5cGVkZWYgdTE2IG50ZnNfd2NoYXJfdDsKCgoK
CnR5cGVkZWYgczY0IG50ZnNfb2Zmc2V0X3Q7CgoKCgp0eXBlZGVmIHU2NCBudGZzX3RpbWU2NF90
OwojIDY5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9udGZzX2ZzX2kuaCIK
dHlwZWRlZiBzMzIgbnRmc19jbHVzdGVyX3Q7CgoKCnN0cnVjdCBudGZzX2lub2RlX2luZm8gewog
ICAgICAgIHN0cnVjdCBudGZzX3NiX2luZm8gKnZvbDsKICAgICAgICB1bnNpZ25lZCBsb25nIGlf
bnVtYmVyOwogICAgICAgIF9fdTE2IHNlcXVlbmNlX251bWJlcjsKICAgICAgICB1bnNpZ25lZCBj
aGFyICphdHRyOwogICAgICAgIGludCBhdHRyX2NvdW50OwogICAgICAgIHN0cnVjdCBudGZzX2F0
dHJpYnV0ZSAqYXR0cnM7CiAgICAgICAgaW50IHJlY29yZF9jb3VudDsKICAgICAgICBpbnQgKnJl
Y29yZHM7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGludCByZWNvcmRzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBp
bnQgY2x1c3RlcnNfcGVyX3JlY29yZDsKICAgICAgICAgICAgICAgIH0gaW5kZXg7CiAgICAgICAg
fSB1Owp9OwojIDMwMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX2kuaCIg
MQoKCgoKCgoKc3RydWN0IG1zZG9zX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcg
bW11X3ByaXZhdGU7CiAgICAgICAgaW50IGlfc3RhcnQ7CiAgICAgICAgaW50IGlfbG9nc3RhcnQ7
CiAgICAgICAgaW50IGlfYXR0cnM7CiAgICAgICAgaW50IGlfY3RpbWVfbXM7CiAgICAgICAgaW50
IGlfbG9jYXRpb247CiAgICAgICAgc3RydWN0IGlub2RlICppX2ZhdF9pbm9kZTsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGlfZmF0X2hhc2g7Cn07CiMgMzAzICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvdW1zZG9zX2ZzX2kuaCIgMQojIDM5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC91bXNkb3NfZnNfaS5oIgpzdHJ1Y3QgZGlyX2xvY2tpbmdfaW5mbyB7CiAgICAg
ICAgd2FpdF9xdWV1ZV9oZWFkX3QgcDsKICAgICAgICBzaG9ydCBpbnQgbG9va2luZzsKICAgICAg
ICBzaG9ydCBpbnQgY3JlYXRpbmc7CgoKCiAgICAgICAgbG9uZyBwaWQ7Cgp9OwoKc3RydWN0IHVt
c2Rvc19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXNkb3NfaW5vZGVfaW5mbyBtc2Rvc19p
bmZvOwogICAgICAgIHN0cnVjdCBkaXJfbG9ja2luZ19pbmZvIGRpcl9pbmZvOwogICAgICAgIGlu
dCBpX3BhdGNoZWQ7CiAgICAgICAgaW50IGlfaXNfaGxpbms7CiAgICAgICAgb2ZmX3QgcG9zOwp9
OwojIDMwNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2lzb19mc19pLmgiIDEKCgoKZW51
bSBpc29mc19maWxlX2Zvcm1hdCB7CiAgICAgICAgaXNvZnNfZmlsZV9ub3JtYWwgPSAwLAogICAg
ICAgIGlzb2ZzX2ZpbGVfc3BhcnNlID0gMSwKICAgICAgICBpc29mc19maWxlX2NvbXByZXNzZWQg
PSAyLAp9OwoKCgoKc3RydWN0IGlzb19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBpbnQg
aV9maXJzdF9leHRlbnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBpX2ZpbGVfZm9ybWF0OwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgaV9mb3JtYXRfcGFybVszXTsKICAgICAgICB1bnNpZ25lZCBsb25n
IGlfbmV4dF9zZWN0aW9uX2lubzsKICAgICAgICBvZmZfdCBpX3NlY3Rpb25fc2l6ZTsKfTsKIyAz
MDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZnNfZnNfaS5oIiAxCgoKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZnMuaCIgMQojIDEwICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZnMuaCIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9zdW5ycGMvbXNnX3Byb3QuaCIgMQojIDE0ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zdW5ycGMvbXNnX3Byb3QuaCIKZW51bSBycGNfYXV0
aF9mbGF2b3IgewogICAgICAgIFJQQ19BVVRIX05VTEwgPSAwLAogICAgICAgIFJQQ19BVVRIX1VO
SVggPSAxLAogICAgICAgIFJQQ19BVVRIX1NIT1JUID0gMiwKICAgICAgICBSUENfQVVUSF9ERVMg
PSAzLAogICAgICAgIFJQQ19BVVRIX0tSQiA9IDQsCn07CgplbnVtIHJwY19tc2dfdHlwZSB7CiAg
ICAgICAgUlBDX0NBTEwgPSAwLAogICAgICAgIFJQQ19SRVBMWSA9IDEKfTsKCmVudW0gcnBjX3Jl
cGx5X3N0YXQgewogICAgICAgIFJQQ19NU0dfQUNDRVBURUQgPSAwLAogICAgICAgIFJQQ19NU0df
REVOSUVEID0gMQp9OwoKZW51bSBycGNfYWNjZXB0X3N0YXQgewogICAgICAgIFJQQ19TVUNDRVNT
ID0gMCwKICAgICAgICBSUENfUFJPR19VTkFWQUlMID0gMSwKICAgICAgICBSUENfUFJPR19NSVNN
QVRDSCA9IDIsCiAgICAgICAgUlBDX1BST0NfVU5BVkFJTCA9IDMsCiAgICAgICAgUlBDX0dBUkJB
R0VfQVJHUyA9IDQsCiAgICAgICAgUlBDX1NZU1RFTV9FUlIgPSA1Cn07CgplbnVtIHJwY19yZWpl
Y3Rfc3RhdCB7CiAgICAgICAgUlBDX01JU01BVENIID0gMCwKICAgICAgICBSUENfQVVUSF9FUlJP
UiA9IDEKfTsKCmVudW0gcnBjX2F1dGhfc3RhdCB7CiAgICAgICAgUlBDX0FVVEhfT0sgPSAwLAog
ICAgICAgIFJQQ19BVVRIX0JBRENSRUQgPSAxLAogICAgICAgIFJQQ19BVVRIX1JFSkVDVEVEQ1JF
RCA9IDIsCiAgICAgICAgUlBDX0FVVEhfQkFEVkVSRiA9IDMsCiAgICAgICAgUlBDX0FVVEhfUkVK
RUNURURWRVJGID0gNCwKICAgICAgICBSUENfQVVUSF9UT09XRUFLID0gNQp9OwojIDExICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZnMuaCIgMgojIDQxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9uZnMuaCIKIGVudW0gbmZzX3N0YXQgewogICAgICAg
IE5GU19PSyA9IDAsCiAgICAgICAgTkZTRVJSX1BFUk0gPSAxLAogICAgICAgIE5GU0VSUl9OT0VO
VCA9IDIsCiAgICAgICAgTkZTRVJSX0lPID0gNSwKICAgICAgICBORlNFUlJfTlhJTyA9IDYsCiAg
ICAgICAgTkZTRVJSX0VBR0FJTiA9IDExLAogICAgICAgIE5GU0VSUl9BQ0NFUyA9IDEzLAogICAg
ICAgIE5GU0VSUl9FWElTVCA9IDE3LAogICAgICAgIE5GU0VSUl9YREVWID0gMTgsCiAgICAgICAg
TkZTRVJSX05PREVWID0gMTksCiAgICAgICAgTkZTRVJSX05PVERJUiA9IDIwLAogICAgICAgIE5G
U0VSUl9JU0RJUiA9IDIxLAogICAgICAgIE5GU0VSUl9JTlZBTCA9IDIyLAogICAgICAgIE5GU0VS
Ul9GQklHID0gMjcsCiAgICAgICAgTkZTRVJSX05PU1BDID0gMjgsCiAgICAgICAgTkZTRVJSX1JP
RlMgPSAzMCwKICAgICAgICBORlNFUlJfTUxJTksgPSAzMSwKICAgICAgICBORlNFUlJfT1BOT1RT
VVBQID0gNDUsCiAgICAgICAgTkZTRVJSX05BTUVUT09MT05HID0gNjMsCiAgICAgICAgTkZTRVJS
X05PVEVNUFRZID0gNjYsCiAgICAgICAgTkZTRVJSX0RRVU9UID0gNjksCiAgICAgICAgTkZTRVJS
X1NUQUxFID0gNzAsCiAgICAgICAgTkZTRVJSX1JFTU9URSA9IDcxLAogICAgICAgIE5GU0VSUl9X
RkxVU0ggPSA5OSwKICAgICAgICBORlNFUlJfQkFESEFORExFID0gMTAwMDEsCiAgICAgICAgTkZT
RVJSX05PVF9TWU5DID0gMTAwMDIsCiAgICAgICAgTkZTRVJSX0JBRF9DT09LSUUgPSAxMDAwMywK
ICAgICAgICBORlNFUlJfTk9UU1VQUCA9IDEwMDA0LAogICAgICAgIE5GU0VSUl9UT09TTUFMTCA9
IDEwMDA1LAogICAgICAgIE5GU0VSUl9TRVJWRVJGQVVMVCA9IDEwMDA2LAogICAgICAgIE5GU0VS
Ul9CQURUWVBFID0gMTAwMDcsCiAgICAgICAgTkZTRVJSX0pVS0VCT1ggPSAxMDAwOAogfTsKCgoK
ZW51bSBuZnNfZnR5cGUgewogICAgICAgIE5GTk9OID0gMCwKICAgICAgICBORlJFRyA9IDEsCiAg
ICAgICAgTkZESVIgPSAyLAogICAgICAgIE5GQkxLID0gMywKICAgICAgICBORkNIUiA9IDQsCiAg
ICAgICAgTkZMTksgPSA1LAogICAgICAgIE5GU09DSyA9IDYsCiAgICAgICAgTkZCQUQgPSA3LAog
ICAgICAgIE5GRklGTyA9IDgKfTsKCgoKCgoKc3RydWN0IG5mc19maCB7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRhdGFbNjRdOwp9OwojIDEwNyAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmZzLmgiCmVudW0gbmZzM19zdGFi
bGVfaG93IHsKICAgICAgICBORlNfVU5TVEFCTEUgPSAwLAogICAgICAgIE5GU19EQVRBX1NZTkMg
PSAxLAogICAgICAgIE5GU19GSUxFX1NZTkMgPSAyCn07CiMgNyAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMgoKCgoKc3RydWN0IG5mc19pbm9kZV9pbmZv
IHsKCgoKICAgICAgICBfX3U2NCBmaWxlaWQ7CgoKCgogICAgICAgIHN0cnVjdCBuZnNfZmggZmg7
CgoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzOwojIDQ0ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9uZnNfZnNfaS5oIgogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVh
ZF9jYWNoZV9qaWZmaWVzOwogICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfY3RpbWU7CiAgICAgICAg
X191NjQgcmVhZF9jYWNoZV9tdGltZTsKICAgICAgICBfX3U2NCByZWFkX2NhY2hlX2lzaXplOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgYXR0cnRpbWVvOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYXR0
cnRpbWVvX3RpbWVzdGFtcDsKCgoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgY2FjaGVfbXRpbWVf
amlmZmllczsKCgoKCgogICAgICAgIF9fdTMyIGNvb2tpZXZlcmZbMl07CgoKCgogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgcmVhZDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5OwogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgY29tbWl0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgd3Jp
dGViYWNrOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnJlYWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmRpcnR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5jb21t
aXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnBhZ2VzOwoKCiAgICAgICAgc3Ry
dWN0IHJwY19jcmVkICptbV9jcmVkOwp9OwojIDkyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9uZnNfZnNfaS5oIgpzdHJ1Y3QgbmZzX2xvY2tfaW5mbyB7CiAgICAgICAgdTMy
IHN0YXRlOwogICAgICAgIHUzMiBmbGFnczsKICAgICAgICBzdHJ1Y3QgbmxtX2hvc3QgKmhvc3Q7
Cn07CiMgMzA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3lzdl9mc19pLmgiIDEKCgoK
CgoKc3RydWN0IHN5c3ZfaW5vZGVfaW5mbyB7CiAgICAgICAgdTMyIGlfZGF0YVsxMCsxKzErMV07
CgoKCgogICAgICAgIHUzMiBpX2Rpcl9zdGFydF9sb29rdXA7Cn07CiMgMzA3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvYWZmc19mc19pLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9hLm91dC5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2FzbS9hLm91dC5oIiAxCgoKCnN0cnVjdCBleGVjCnsKICB1bnNpZ25l
ZCBsb25nIGFfaW5mbzsKICB1bnNpZ25lZCBhX3RleHQ7CiAgdW5zaWduZWQgYV9kYXRhOwogIHVu
c2lnbmVkIGFfYnNzOwogIHVuc2lnbmVkIGFfc3ltczsKICB1bnNpZ25lZCBhX2VudHJ5OwogIHVu
c2lnbmVkIGFfdHJzaXplOwogIHVuc2lnbmVkIGFfZHJzaXplOwp9OwojIDkgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiIDIKCgoKCmVudW0gbWFjaGluZV90eXBl
IHsKCgoKICBNX09MRFNVTjIgPSAwLAoKCgoKICBNXzY4MDEwID0gMSwKCgoKCiAgTV82ODAyMCA9
IDIsCgoKCgogIE1fU1BBUkMgPSAzLAoKCiAgTV8zODYgPSAxMDAsCiAgTV9NSVBTMSA9IDE1MSwK
ICBNX01JUFMyID0gMTUyCn07CiMgMTU3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9hLm91dC5oIgpzdHJ1Y3Qgbmxpc3QgewogIHVuaW9uIHsKICAgIGNoYXIgKm5fbmFtZTsK
ICAgIHN0cnVjdCBubGlzdCAqbl9uZXh0OwogICAgbG9uZyBuX3N0cng7CiAgfSBuX3VuOwogIHVu
c2lnbmVkIGNoYXIgbl90eXBlOwogIGNoYXIgbl9vdGhlcjsKICBzaG9ydCBuX2Rlc2M7CiAgdW5z
aWduZWQgbG9uZyBuX3ZhbHVlOwp9OwojIDIzNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvYS5vdXQuaCIKc3RydWN0IHJlbG9jYXRpb25faW5mbwp7CgogIGludCByX2FkZHJl
c3M7CgogIHVuc2lnbmVkIGludCByX3N5bWJvbG51bToyNDsKCgoKICB1bnNpZ25lZCBpbnQgcl9w
Y3JlbDoxOwoKCiAgdW5zaWduZWQgaW50IHJfbGVuZ3RoOjI7CgoKCgoKCiAgdW5zaWduZWQgaW50
IHJfZXh0ZXJuOjE7CgoKCgoKCgogIHVuc2lnbmVkIGludCByX3BhZDo0OwoKfTsKIyA1ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGltZS5oIiAxCiMgOSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGltZS5oIgpzdHJ1Y3QgdGltZXNwZWMgewogICAg
ICAgIHRpbWVfdCB0dl9zZWM7CiAgICAgICAgbG9uZyB0dl9uc2VjOwp9OwojIDMxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90aW1lLmgiCnN0YXRpYyBfX2lubGluZV9fIHVu
c2lnbmVkIGxvbmcKdGltZXNwZWNfdG9famlmZmllcyhzdHJ1Y3QgdGltZXNwZWMgKnZhbHVlKQp7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZWMgPSB2YWx1ZS0+dHZfc2VjOwogICAgICAgIGxvbmcg
bnNlYyA9IHZhbHVlLT50dl9uc2VjOwoKICAgICAgICBpZiAoc2VjID49ICgoKH4wVUwgPj4gMSkt
MSkgLyAxMDApKQogICAgICAgICAgICAgICAgcmV0dXJuICgofjBVTCA+PiAxKS0xKTsKICAgICAg
ICBuc2VjICs9IDEwMDAwMDAwMDBMIC8gMTAwIC0gMTsKICAgICAgICBuc2VjIC89IDEwMDAwMDAw
MDBMIC8gMTAwOwogICAgICAgIHJldHVybiAxMDAgKiBzZWMgKyBuc2VjOwp9CgpzdGF0aWMgX19p
bmxpbmVfXyB2b2lkCmppZmZpZXNfdG9fdGltZXNwZWModW5zaWduZWQgbG9uZyBqaWZmaWVzLCBz
dHJ1Y3QgdGltZXNwZWMgKnZhbHVlKQp7CiAgICAgICAgdmFsdWUtPnR2X25zZWMgPSAoamlmZmll
cyAlIDEwMCkgKiAoMTAwMDAwMDAwMEwgLyAxMDApOwogICAgICAgIHZhbHVlLT50dl9zZWMgPSBq
aWZmaWVzIC8gMTAwOwp9CiMgNjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L3RpbWUuaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCm1rdGltZSAodW5zaWduZWQgaW50
IHllYXIsIHVuc2lnbmVkIGludCBtb24sCiAgICAgICAgdW5zaWduZWQgaW50IGRheSwgdW5zaWdu
ZWQgaW50IGhvdXIsCiAgICAgICAgdW5zaWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IHNlYykK
ewogICAgICAgIGlmICgwID49IChpbnQpIChtb24gLT0gMikpIHsKICAgICAgICAgICAgICAgIG1v
biArPSAxMjsKICAgICAgICAgICAgICAgIHllYXIgLT0gMTsKICAgICAgICB9CgogICAgICAgIHJl
dHVybiAoKCgKICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSAoeWVhci80IC0geWVhci8x
MDAgKyB5ZWFyLzQwMCArIDM2Nyptb24vMTIgKyBkYXkpICsKICAgICAgICAgICAgICAgICAgICAg
ICAgeWVhciozNjUgLSA3MTk0OTkKICAgICAgICAgICAgKSoyNCArIGhvdXIKICAgICAgICAgICkq
NjAgKyBtaW4KICAgICAgICApKjYwICsgc2VjOwp9CgoKCgpzdHJ1Y3QgdGltZXZhbCB7CiAgICAg
ICAgdGltZV90IHR2X3NlYzsKICAgICAgICBzdXNlY29uZHNfdCB0dl91c2VjOwp9OwoKc3RydWN0
IHRpbWV6b25lIHsKICAgICAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICAgICAgaW50IHR6X2Rz
dHRpbWU7Cn07CgoKCgpleHRlcm4gdm9pZCBkb19nZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwg
KnR2KTsKZXh0ZXJuIHZvaWQgZG9fc2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CiMg
MTE5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90aW1lLmgiCnN0cnVjdCBp
dGltZXJzcGVjIHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAgICAgICAg
c3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9OwoKc3RydWN0IGl0aW1lcnZhbCB7CiAgICAgICAg
c3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfdmFs
dWU7Cn07CiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYWZmc19mc19p
LmgiIDIKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYWZmc19mc19p
LmgiCnN0cnVjdCBhZmZzX2V4dF9rZXkgewogICAgICAgIHUzMiBleHQ7CiAgICAgICAgdTMyIGtl
eTsKfTsKCgoKCnN0cnVjdCBhZmZzX2lub2RlX2luZm8gewogICAgICAgIHUzMiBpX29wZW5jbnQ7
CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX2xpbmtfbG9jazsKICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlIGlfZXh0X2xvY2s7CgogICAgICAgIHUzMiBpX2Jsa2NudDsKICAgICAgICB1MzIgaV9l
eHRjbnQ7CiAgICAgICAgdTMyICppX2xjOwogICAgICAgIHUzMiBpX2xjX3NpemU7CiAgICAgICAg
dTMyIGlfbGNfc2hpZnQ7CiAgICAgICAgdTMyIGlfbGNfbWFzazsKICAgICAgICBzdHJ1Y3QgYWZm
c19leHRfa2V5ICppX2FjOwogICAgICAgIHUzMiBpX2V4dF9sYXN0OwogICAgICAgIHN0cnVjdCBi
dWZmZXJfaGVhZCAqaV9leHRfYmg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsK
ICAgICAgICB1MzIgaV9wcm90ZWN0OwogICAgICAgIHUzMiBpX2xhc3RhbGxvYzsKICAgICAgICBp
bnQgaV9wYV9jbnQ7CiMgNTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2Fm
ZnNfZnNfaS5oIgp9OwojIDMwOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Vmc19mc19p
LmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdWZzX2ZzX2ku
aCIKc3RydWN0IHVmc19pbm9kZV9pbmZvIHsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAg
ICBfX3UzMiBpX2RhdGFbMTVdOwogICAgICAgICAgICAgICAgX191OCBpX3N5bWxpbmtbNCoxNV07
CiAgICAgICAgfSBpX3UxOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9n
ZW47CiAgICAgICAgX191MzIgaV9zaGFkb3c7CiAgICAgICAgX191MzIgaV91bnVzZWQxOwogICAg
ICAgIF9fdTMyIGlfdW51c2VkMjsKICAgICAgICBfX3UzMiBpX29lZnRmbGFnOwogICAgICAgIF9f
dTE2IGlfb3N5bmM7CiAgICAgICAgX191MzIgaV9sYXN0ZnJhZzsKfTsKIyAzMDkgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2Vmc19mc19pLmgiCnR5cGVkZWYgaW50MzJfdCBlZnNfYmxvY2tf
dDsKdHlwZWRlZiB1aW50MzJfdCBlZnNfaW5vX3Q7CgoKCgoKCnR5cGVkZWYgdW5pb24gZXh0ZW50
X3UgewogICAgICAgIHVuc2lnbmVkIGNoYXIgcmF3WzhdOwogICAgICAgIHN0cnVjdCBleHRlbnRf
cyB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfbWFnaWM6ODsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBleF9ibjoyNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBl
eF9sZW5ndGg6ODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9vZmZzZXQ6MjQ7CiAg
ICAgICAgfSBjb29rZWQ7Cn0gZWZzX2V4dGVudDsKCnR5cGVkZWYgc3RydWN0IGVkZXZzIHsKICAg
ICAgICBzaG9ydCBvZGV2OwogICAgICAgIHVuc2lnbmVkIGludCBuZGV2Owp9IGVmc19kZXZzOwoK
CgoKCnN0cnVjdCBlZnNfZGlub2RlIHsKICAgICAgICB1X3Nob3J0IGRpX21vZGU7CiAgICAgICAg
c2hvcnQgZGlfbmxpbms7CiAgICAgICAgdV9zaG9ydCBkaV91aWQ7CiAgICAgICAgdV9zaG9ydCBk
aV9naWQ7CiAgICAgICAgaW50MzJfdCBkaV9zaXplOwogICAgICAgIGludDMyX3QgZGlfYXRpbWU7
CiAgICAgICAgaW50MzJfdCBkaV9tdGltZTsKICAgICAgICBpbnQzMl90IGRpX2N0aW1lOwogICAg
ICAgIHVpbnQzMl90IGRpX2dlbjsKICAgICAgICBzaG9ydCBkaV9udW1leHRlbnRzOwogICAgICAg
IHVfY2hhciBkaV92ZXJzaW9uOwogICAgICAgIHVfY2hhciBkaV9zcGFyZTsKICAgICAgICB1bmlv
biBkaV9hZGRyIHsKICAgICAgICAgICAgICAgIGVmc19leHRlbnQgZGlfZXh0ZW50c1sxMl07CiAg
ICAgICAgICAgICAgICBlZnNfZGV2cyBkaV9kZXY7CiAgICAgICAgfSBkaV91Owp9OwoKCnN0cnVj
dCBlZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgaW50IG51bWV4dGVudHM7CiAgICAgICAgaW50IGxh
c3RleHRlbnQ7CgogICAgICAgIGVmc19leHRlbnQgZXh0ZW50c1sxMl07Cn07CiMgMzEwICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvY29kYS5oIiAxCiMgMTA5ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9jb2RhLmgiCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVfcXVh
ZF90OwojIDE2NCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYS5oIgpz
dHJ1Y3QgdmVudXNfZGlyZW50IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfZmlsZW5vOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGRfcmVjbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF90eXBl
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF9uYW1sZW47CiAgICAgICAgY2hhciBkX25hbWVbMjU1
ICsgMV07Cn07CiMgMTk4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jb2Rh
LmgiCnR5cGVkZWYgdV9sb25nIFZvbHVtZUlkOwp0eXBlZGVmIHVfbG9uZyBWbm9kZUlkOwp0eXBl
ZGVmIHVfbG9uZyBVbmlxdWVfdDsKdHlwZWRlZiB1X2xvbmcgRmlsZVZlcnNpb247CgoKCgp0eXBl
ZGVmIHN0cnVjdCBWaWNlRmlkIHsKICAgIFZvbHVtZUlkIFZvbHVtZTsKICAgIFZub2RlSWQgVm5v
ZGU7CiAgICBVbmlxdWVfdCBVbmlxdWU7Cn0gVmljZUZpZDsKCgoKCnN0YXRpYyBfX2lubGluZV9f
IGlub190IGNvZGFfZjJpKHN0cnVjdCBWaWNlRmlkICpmaWQpCnsKICAgICAgICBpZiAoICEgZmlk
ICkKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGlmIChmaWQtPlZub2RlID09IDB4
ZmZmZmZmZmUgfHwgZmlkLT5Wbm9kZSA9PSAweGZmZmZmZmZmKQogICAgICAgICAgICAgICAgcmV0
dXJuICgoZmlkLT5Wb2x1bWUgPDwgMjApIHwgKGZpZC0+VW5pcXVlICYgMHhmZmZmZikpOwogICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiAoZmlkLT5VbmlxdWUgKyAoZmlkLT5Wbm9k
ZTw8MTApICsgKGZpZC0+Vm9sdW1lPDwyMCkpOwp9CiMgMjMzICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9jb2RhLmgiCnR5cGVkZWYgdV9pbnQzMl90IHZ1aWRfdDsKdHlwZWRl
ZiB1X2ludDMyX3QgdmdpZF90OwoKCgoKc3RydWN0IGNvZGFfY3JlZCB7CiAgICB2dWlkX3QgY3Jf
dWlkLCBjcl9ldWlkLCBjcl9zdWlkLCBjcl9mc3VpZDsKICAgIHZnaWRfdCBjcl9ncm91cGlkLCBj
cl9lZ2lkLCBjcl9zZ2lkLCBjcl9mc2dpZDsKfTsKCgoKCgoKCmVudW0gY29kYV92dHlwZSB7IENf
Vk5PTiwgQ19WUkVHLCBDX1ZESVIsIENfVkJMSywgQ19WQ0hSLCBDX1ZMTkssIENfVlNPQ0ssIENf
VkZJRk8sIENfVkJBRCB9OwoKc3RydWN0IGNvZGFfdmF0dHIgewogICAgICAgIGxvbmcgdmFfdHlw
ZTsKICAgICAgICB1X3Nob3J0IHZhX21vZGU7CiAgICAgICAgc2hvcnQgdmFfbmxpbms7CiAgICAg
ICAgdnVpZF90IHZhX3VpZDsKICAgICAgICB2Z2lkX3QgdmFfZ2lkOwogICAgICAgIGxvbmcgdmFf
ZmlsZWlkOwogICAgICAgIHVfcXVhZF90IHZhX3NpemU7CiAgICAgICAgbG9uZyB2YV9ibG9ja3Np
emU7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHZhX2F0aW1lOwogICAgICAgIHN0cnVjdCB0aW1l
c3BlYyB2YV9tdGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfY3RpbWU7CiAgICAgICAg
dV9sb25nIHZhX2dlbjsKICAgICAgICB1X2xvbmcgdmFfZmxhZ3M7CiAgICAgICAgdV9xdWFkX3Qg
dmFfcmRldjsKICAgICAgICB1X3F1YWRfdCB2YV9ieXRlczsKICAgICAgICB1X3F1YWRfdCB2YV9m
aWxlcmV2Owp9OwoKCgoKc3RydWN0IGNvZGFfc3RhdGZzIHsKICAgIGludDMyX3QgZl9ibG9ja3M7
CiAgICBpbnQzMl90IGZfYmZyZWU7CiAgICBpbnQzMl90IGZfYmF2YWlsOwogICAgaW50MzJfdCBm
X2ZpbGVzOwogICAgaW50MzJfdCBmX2ZmcmVlOwp9OwojIDMzNyAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgY29kYV9pbl9oZHIgewogICAgdW5zaWdu
ZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBsb25nIHVuaXF1ZTsKICAgIHVfc2hvcnQgcGlk
OwogICAgdV9zaG9ydCBwZ2lkOwogICAgdV9zaG9ydCBzaWQ7CiAgICBzdHJ1Y3QgY29kYV9jcmVk
IGNyZWQ7Cn07CgoKc3RydWN0IGNvZGFfb3V0X2hkciB7CiAgICB1bnNpZ25lZCBsb25nIG9wY29k
ZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVlOwogICAgdW5zaWduZWQgbG9uZyByZXN1bHQ7Cn07
CgoKc3RydWN0IGNvZGFfcm9vdF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAg
IFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3Jvb3RfaW4gewogICAgc3RydWN0IGNvZGFf
aW5faGRyIGluOwp9OwoKCnN0cnVjdCBjb2RhX29wZW5faW4gewogICAgc3RydWN0IGNvZGFfaW5f
aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFf
b3Blbl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHVfcXVhZF90IGRldjsK
ICAgIGlub190IGlub2RlOwp9OwoKCgpzdHJ1Y3QgY29kYV9zdG9yZV9pbiB7CiAgICBzdHJ1Y3Qg
Y29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1
Y3QgY29kYV9zdG9yZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3Ry
dWN0IGNvZGFfcmVsZWFzZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl
RmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9yZWxlYXNlX291dCB7CiAg
ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9jbG9zZV9pbiB7CiAg
ICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7
Cn07CgpzdHJ1Y3QgY29kYV9jbG9zZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7
Cn07CgoKc3RydWN0IGNvZGFfaW9jdGxfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwog
ICAgVmljZUZpZCBWRmlkOwogICAgaW50IGNtZDsKICAgIGludCBsZW47CiAgICBpbnQgcndmbGFn
OwogICAgY2hhciAqZGF0YTsKfTsKCnN0cnVjdCBjb2RhX2lvY3RsX291dCB7CiAgICBzdHJ1Y3Qg
Y29kYV9vdXRfaGRyIG9oOwogICAgaW50IGxlbjsKICAgIGNhZGRyX3QgZGF0YTsKfTsKCgoKc3Ry
dWN0IGNvZGFfZ2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl
RmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9nZXRhdHRyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9v
dXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFf
c2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7
CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKc3RydWN0IGNvZGFfc2V0YXR0cl9vdXQg
ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfYWNjZXNzX2lu
IHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBm
bGFnczsKfTsKCnN0cnVjdCBjb2RhX2FjY2Vzc19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hk
ciBvdXQ7Cn07CgoKCgoKCgpzdHJ1Y3QgY29kYV9sb29rdXBfaW4gewogICAgc3RydWN0IGNvZGFf
aW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IG5hbWU7CiAgICBpbnQgZmxhZ3M7
Cn07CgpzdHJ1Y3QgY29kYV9sb29rdXBfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7
CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CgoKCnN0cnVjdCBjb2RhX2NyZWF0
ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBz
dHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IGV4Y2w7CiAgICBpbnQgbW9kZTsKICAgIGlu
dCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfY3JlYXRlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRf
aGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsK
CgoKc3RydWN0IGNvZGFfcmVtb3ZlX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAg
IFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcmVtb3ZlX291dCB7
CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9saW5rX2luIHsK
ICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgc291cmNlRmlkOwogICAgVmlj
ZUZpZCBkZXN0RmlkOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0IGNvZGFfbGlua19vdXQgewog
ICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCnN0cnVjdCBjb2RhX3JlbmFtZV9pbiB7
CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIHNvdXJjZUZpZDsKICAgIGlu
dCBzcmNuYW1lOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IGRlc3RuYW1lOwp9OwoKc3Ry
dWN0IGNvZGFfcmVuYW1lX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpz
dHJ1Y3QgY29kYV9ta2Rpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl
RmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IG5hbWU7Cn07Cgpz
dHJ1Y3QgY29kYV9ta2Rpcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZp
Y2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07CgoKCnN0cnVjdCBjb2Rh
X3JtZGlyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsK
ICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcm1kaXJfb3V0IHsKICAgIHN0cnVjdCBjb2Rh
X291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3N5bWxpbmtfaW4gewogICAgc3RydWN0IGNv
ZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IHNyY25hbWU7CiAgICBzdHJ1
Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0IGNvZGFfc3ltbGlu
a19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfcmVh
ZGxpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwp9
OwoKc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7
CiAgICBpbnQgY291bnQ7CiAgICBjYWRkcl90IGRhdGE7Cn07CgoKCnN0cnVjdCBjb2RhX2ZzeW5j
X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0
cnVjdCBjb2RhX2ZzeW5jX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpz
dHJ1Y3QgY29kYV92Z2V0X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG
aWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3ZnZXRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9o
ZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CiMgNjE2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCBjb2RhX3B1cmdldXNl
cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX2NyZWQg
Y3JlZDsKfTsKCgoKc3RydWN0IGNvZGFfemFwZmlsZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0
X2hkciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfemFwZGlyX291
dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlkOwp9OwoK
CgpzdHJ1Y3QgY29kYV96YXB2bm9kZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsK
ICAgIHN0cnVjdCBjb2RhX2NyZWQgY3JlZDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCgoKc3RydWN0
IGNvZGFfcHVyZ2VmaWRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNl
RmlkIENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IHsKICAgIHN0cnVjdCBj
b2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIE5ld0ZpZDsKICAgIFZpY2VGaWQgT2xkRmlkOwp9
OwoKCnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGlo
OwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9i
eV9mZF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIGludCBmZDsKCgogICAg
c3RydWN0IGZpbGUgKmZoOwoKfTsKCgpzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfaW4gewogICAg
c3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9
OwoKc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRy
IG9oOwogICAgICAgIGludCBwYXRoOwp9OwoKCnN0cnVjdCBjb2RhX3N0YXRmc19pbiB7CiAgICBz
dHJ1Y3QgY29kYV9pbl9oZHIgaW47Cn07CgpzdHJ1Y3QgY29kYV9zdGF0ZnNfb3V0IHsKICAgIHN0
cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnMgc3RhdDsKfTsKIyA3
MDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKdW5pb24gaW5w
dXRBcmdzIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIHN0cnVjdCBjb2RhX29wZW5f
aW4gY29kYV9vcGVuOwogICAgc3RydWN0IGNvZGFfc3RvcmVfaW4gY29kYV9zdG9yZTsKICAgIHN0
cnVjdCBjb2RhX3JlbGVhc2VfaW4gY29kYV9yZWxlYXNlOwogICAgc3RydWN0IGNvZGFfY2xvc2Vf
aW4gY29kYV9jbG9zZTsKICAgIHN0cnVjdCBjb2RhX2lvY3RsX2luIGNvZGFfaW9jdGw7CiAgICBz
dHJ1Y3QgY29kYV9nZXRhdHRyX2luIGNvZGFfZ2V0YXR0cjsKICAgIHN0cnVjdCBjb2RhX3NldGF0
dHJfaW4gY29kYV9zZXRhdHRyOwogICAgc3RydWN0IGNvZGFfYWNjZXNzX2luIGNvZGFfYWNjZXNz
OwogICAgc3RydWN0IGNvZGFfbG9va3VwX2luIGNvZGFfbG9va3VwOwogICAgc3RydWN0IGNvZGFf
Y3JlYXRlX2luIGNvZGFfY3JlYXRlOwogICAgc3RydWN0IGNvZGFfcmVtb3ZlX2luIGNvZGFfcmVt
b3ZlOwogICAgc3RydWN0IGNvZGFfbGlua19pbiBjb2RhX2xpbms7CiAgICBzdHJ1Y3QgY29kYV9y
ZW5hbWVfaW4gY29kYV9yZW5hbWU7CiAgICBzdHJ1Y3QgY29kYV9ta2Rpcl9pbiBjb2RhX21rZGly
OwogICAgc3RydWN0IGNvZGFfcm1kaXJfaW4gY29kYV9ybWRpcjsKICAgIHN0cnVjdCBjb2RhX3N5
bWxpbmtfaW4gY29kYV9zeW1saW5rOwogICAgc3RydWN0IGNvZGFfcmVhZGxpbmtfaW4gY29kYV9y
ZWFkbGluazsKICAgIHN0cnVjdCBjb2RhX2ZzeW5jX2luIGNvZGFfZnN5bmM7CiAgICBzdHJ1Y3Qg
Y29kYV92Z2V0X2luIGNvZGFfdmdldDsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfZmRfaW4gY29k
YV9vcGVuX2J5X2ZkOwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX2luIGNvZGFfb3Blbl9i
eV9wYXRoOwogICAgc3RydWN0IGNvZGFfc3RhdGZzX2luIGNvZGFfc3RhdGZzOwp9OwoKdW5pb24g
b3V0cHV0QXJncyB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFf
cm9vdF9vdXQgY29kYV9yb290OwogICAgc3RydWN0IGNvZGFfb3Blbl9vdXQgY29kYV9vcGVuOwog
ICAgc3RydWN0IGNvZGFfaW9jdGxfb3V0IGNvZGFfaW9jdGw7CiAgICBzdHJ1Y3QgY29kYV9nZXRh
dHRyX291dCBjb2RhX2dldGF0dHI7CiAgICBzdHJ1Y3QgY29kYV9sb29rdXBfb3V0IGNvZGFfbG9v
a3VwOwogICAgc3RydWN0IGNvZGFfY3JlYXRlX291dCBjb2RhX2NyZWF0ZTsKICAgIHN0cnVjdCBj
b2RhX21rZGlyX291dCBjb2RhX21rZGlyOwogICAgc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0IGNv
ZGFfcmVhZGxpbms7CiAgICBzdHJ1Y3QgY29kYV92Z2V0X291dCBjb2RhX3ZnZXQ7CiAgICBzdHJ1
Y3QgY29kYV9wdXJnZXVzZXJfb3V0IGNvZGFfcHVyZ2V1c2VyOwogICAgc3RydWN0IGNvZGFfemFw
ZmlsZV9vdXQgY29kYV96YXBmaWxlOwogICAgc3RydWN0IGNvZGFfemFwZGlyX291dCBjb2RhX3ph
cGRpcjsKICAgIHN0cnVjdCBjb2RhX3phcHZub2RlX291dCBjb2RhX3phcHZub2RlOwogICAgc3Ry
dWN0IGNvZGFfcHVyZ2VmaWRfb3V0IGNvZGFfcHVyZ2VmaWQ7CiAgICBzdHJ1Y3QgY29kYV9yZXBs
YWNlX291dCBjb2RhX3JlcGxhY2U7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X2ZkX291dCBjb2Rh
X29wZW5fYnlfZmQ7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfb3V0IGNvZGFfb3Blbl9i
eV9wYXRoOwogICAgc3RydWN0IGNvZGFfc3RhdGZzX291dCBjb2RhX3N0YXRmczsKfTsKCnVuaW9u
IGNvZGFfZG93bmNhbGxzIHsKCgogICAgc3RydWN0IGNvZGFfcHVyZ2V1c2VyX291dCBwdXJnZXVz
ZXI7CiAgICBzdHJ1Y3QgY29kYV96YXBmaWxlX291dCB6YXBmaWxlOwogICAgc3RydWN0IGNvZGFf
emFwZGlyX291dCB6YXBkaXI7CiAgICBzdHJ1Y3QgY29kYV96YXB2bm9kZV9vdXQgemFwdm5vZGU7
CiAgICBzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgcHVyZ2VmaWQ7CiAgICBzdHJ1Y3QgY29kYV9y
ZXBsYWNlX291dCByZXBsYWNlOwp9OwoKCgoKCgoKc3RydWN0IFZpY2VJb2N0bCB7CiAgICAgICAg
Y2FkZHJfdCBpbiwgb3V0OwogICAgICAgIHNob3J0IGluX3NpemU7CiAgICAgICAgc2hvcnQgb3V0
X3NpemU7Cn07CgpzdHJ1Y3QgUGlvY3RsRGF0YSB7CiAgICAgICAgY29uc3QgY2hhciAqcGF0aDsK
ICAgICAgICBpbnQgZm9sbG93OwogICAgICAgIHN0cnVjdCBWaWNlSW9jdGwgdmk7Cn07CiMgNzk3
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCBjb2Rh
X21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIGludCBmZDsKfTsKIyAx
NSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiIDIKCgoK
CnN0cnVjdCBjb2RhX2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCBWaWNlRmlkIGNfZmlkOwog
ICAgICAgIHVfc2hvcnQgY19mbGFnczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNfY2lsaXN0
OwogICAgICAgIGludCBjX21hcGNvdW50OwogICAgICAgIHN0cnVjdCBjb2RhX2NyZWQgY19jYWNo
ZWRfY3JlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgY19jYWNoZWRfcGVybTsKfTsKCgoKCgpzdHJ1
Y3QgY29kYV9maWxlX2luZm8gewogICAgICAgIGludCBjZmlfbWFnaWM7CiAgICAgICAgaW50IGNm
aV9tYXBjb3VudDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqY2ZpX2NvbnRhaW5lcjsKICAgICAgICBz
dHJ1Y3QgY29kYV9jcmVkIGNmaV9jcmVkOwp9OwojIDQ3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIKaW50IGNvZGFfY25vZGVfbWFrZShzdHJ1Y3QgaW5v
ZGUgKiosIHN0cnVjdCBWaWNlRmlkICosIHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKc3RydWN0IGlu
b2RlICpjb2RhX2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IFZpY2VGaWQgKmZp
ZCwgc3RydWN0IGNvZGFfdmF0dHIgKmF0dHIpOwppbnQgY29kYV9jbm9kZV9tYWtlY3RsKHN0cnVj
dCBpbm9kZSAqKmlub2RlLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKc3RydWN0IGlub2RlICpj
b2RhX2ZpZF90b19pbm9kZShWaWNlRmlkICpmaWQsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwp2
b2lkIGNvZGFfcmVwbGFjZV9maWQoc3RydWN0IGlub2RlICosIFZpY2VGaWQgKiwgVmljZUZpZCAq
KTsKIyAzMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yb21mc19mc19pLmgiIDEKCgoK
CgpzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX21ldGFz
aXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kYXRhb2Zmc2V0Owp9OwojIDMxMiAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NobWVtX2ZzLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvc2htZW1fZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg
IHVuc2lnbmVkIGxvbmcgdmFsOwp9IHN3cF9lbnRyeV90OwoKZXh0ZXJuIGF0b21pY190IHNobWVt
X25ycGFnZXM7CgpzdHJ1Y3Qgc2htZW1faW5vZGVfaW5mbyB7CiAgICAgICAgc3BpbmxvY2tfdCBs
b2NrOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
bmV4dF9pbmRleDsKICAgICAgICBzd3BfZW50cnlfdCBpX2RpcmVjdFsxNl07CiAgICAgICAgdm9p
ZCAqKmlfaW5kaXJlY3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzd2FwcGVkOwogICAgICAgIGlu
dCBsb2NrZWQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICAgIHN0cnVjdCBp
bm9kZSAqaW5vZGU7Cn07CgpzdHJ1Y3Qgc2htZW1fc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBtYXhfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9ibG9ja3M7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBtYXhfaW5vZGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9p
bm9kZXM7CiAgICAgICAgc3BpbmxvY2tfdCBzdGF0X2xvY2s7Cn07CiMgMzEzICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvc21iX2ZzX2kuaCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9zbWJfZnNfaS5oIgpzdHJ1Y3Qgc21iX2lub2RlX2luZm8gewoKCgoK
CiAgICAgICAgdW5zaWduZWQgaW50IG9wZW47CiAgICAgICAgX191MTYgZmlsZWlkOwogICAgICAg
IF9fdTE2IGF0dHI7CgogICAgICAgIF9fdTE2IGFjY2VzczsKICAgICAgICBfX3UxNiBmbGFnczsK
ICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG10aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY2xv
c2VkOwogICAgICAgIHVuc2lnbmVkIG9wZW5lcnM7Cn07CiMgMzE0ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvaGZzX2ZzX2kuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9oZnNfZnNfaS5oIgpzdHJ1Y3QgaGZzX2lub2RlX2luZm8gewogICAgICAgIGlu
dCBtYWdpYzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICBzdHJ1
Y3QgaGZzX2NhdF9lbnRyeSAqZW50cnk7CgoKICAgICAgICBzdHJ1Y3QgaGZzX2ZvcmsgKmZvcms7
CiAgICAgICAgaW50IGNvbnZlcnQ7CgoKICAgICAgICBpbm9fdCBmaWxlX3R5cGU7CiAgICAgICAg
Y2hhciBkaXJfc2l6ZTsKCgogICAgICAgIGNvbnN0IHN0cnVjdCBoZnNfaGRyX2xheW91dCAqZGVm
YXVsdF9sYXlvdXQ7CiAgICAgICAgc3RydWN0IGhmc19oZHJfbGF5b3V0ICpsYXlvdXQ7CgoKICAg
ICAgICBpbnQgdHpfc2Vjb25kc3dlc3Q7CgoKICAgICAgICB2b2lkICgqZF9kcm9wX29wKShzdHJ1
Y3QgZGVudHJ5ICosIGNvbnN0IGlub190KTsKfTsKIyAzMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9hZGZzX2ZzX2kuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9hZGZzX2ZzX2kuaCIKc3RydWN0IGFkZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9pZDsK
ICAgICAgICBfX3UzMiBsb2FkYWRkcjsKICAgICAgICBfX3UzMiBleGVjYWRkcjsKICAgICAgICB1
bnNpZ25lZCBpbnQgZmlsZXR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IGF0dHI7CiAgICAgICAg
aW50IHN0YW1wZWQ6MTsKfTsKIyAzMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbng0
X2ZzX2kuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbng0
X2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbnh0eXBl
cy5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3FueHR5cGVz
LmgiCnR5cGVkZWYgX191MTYgcW54NF9ueHRudF90Owp0eXBlZGVmIF9fdTggcW54NF9mdHlwZV90
OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIF9fdTMyIHh0bnRfYmxrOwogICAgICAgIF9fdTMy
IHh0bnRfc2l6ZTsKfSBxbng0X3h0bnRfdDsKCnR5cGVkZWYgX191MTYgcW54NF9tb2RlX3Q7CnR5
cGVkZWYgX191MTYgcW54NF9tdWlkX3Q7CnR5cGVkZWYgX191MTYgcW54NF9tZ2lkX3Q7CnR5cGVk
ZWYgX191MzIgcW54NF9vZmZfdDsKdHlwZWRlZiBfX3UxNiBxbng0X25saW5rX3Q7CiMgMTUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAyCgoKCgpzdHJ1
Y3QgcW54NF9pbm9kZV9pbmZvIHsKICAgICAgICBjaGFyIGlfcmVzZXJ2ZWRbMTZdOwogICAgICAg
IHFueDRfb2ZmX3QgaV9zaXplOwogICAgICAgIHFueDRfeHRudF90IGlfZmlyc3RfeHRudDsKICAg
ICAgICBfX3UzMiBpX3hibGs7CiAgICAgICAgX19zMzIgaV9mdGltZTsKICAgICAgICBfX3MzMiBp
X210aW1lOwogICAgICAgIF9fczMyIGlfYXRpbWU7CiAgICAgICAgX19zMzIgaV9jdGltZTsKICAg
ICAgICBxbng0X254dG50X3QgaV9udW1feHRudHM7CiAgICAgICAgcW54NF9tb2RlX3QgaV9tb2Rl
OwogICAgICAgIHFueDRfbXVpZF90IGlfdWlkOwogICAgICAgIHFueDRfbWdpZF90IGlfZ2lkOwog
ICAgICAgIHFueDRfbmxpbmtfdCBpX25saW5rOwogICAgICAgIF9fdTggaV96ZXJvWzRdOwogICAg
ICAgIHFueDRfZnR5cGVfdCBpX3R5cGU7CiAgICAgICAgX191OCBpX3N0YXR1czsKICAgICAgICB1
bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwp9OwojIDMxNyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L3JlaXNlcmZzX2ZzX2kuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9yZWlzZXJmc19mc19pLmgiCnR5cGVkZWYgZW51bSB7CgoKCiAgICBpX2l0ZW1f
a2V5X3ZlcnNpb25fbWFzayA9IDB4MDAwMSwKCgogICAgaV9zdGF0X2RhdGFfdmVyc2lvbl9tYXNr
ID0gMHgwMDAyLAoKICAgIGlfcGFja19vbl9jbG9zZV9tYXNrID0gMHgwMDA0LAoKICAgIGlfbm9w
YWNrX21hc2sgPSAweDAwMDgsCgoKCiAgICBpX2xpbmtfc2F2ZWRfdW5saW5rX21hc2sgPSAweDAw
MTAsCiAgICBpX2xpbmtfc2F2ZWRfdHJ1bmNhdGVfbWFzayA9IDB4MDAyMAp9IHJlaXNlcmZzX2lu
b2RlX2ZsYWdzOwoKCnN0cnVjdCByZWlzZXJmc19pbm9kZV9pbmZvIHsKICAgIF9fdTMyIGlfa2V5
IFs0XTsKCgoKICAgIF9fdTMyIGlfZmxhZ3M7CgogICAgX191MzIgaV9maXJzdF9kaXJlY3RfYnl0
ZTsKCgogICAgX191MzIgaV9hdHRyczsKCiAgICBpbnQgaV9wcmVhbGxvY19ibG9jazsKICAgIGlu
dCBpX3ByZWFsbG9jX2NvdW50OwogICAgc3RydWN0IGxpc3RfaGVhZCBpX3ByZWFsbG9jX2xpc3Q7
CgoKICAgIGludCBuZXdfcGFja2luZ19sb2NhbGl0eToxOwoKCgoKCgogICAgdW5zaWduZWQgbG9u
ZyBpX3RyYW5zX2lkIDsKICAgIHVuc2lnbmVkIGxvbmcgaV90cmFuc19pbmRleCA7Cn07CiMgMzE4
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYmZzX2ZzX2kuaCIgMQojIDEyICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIgpzdHJ1Y3QgYmZzX2lub2Rl
X2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kc2tfaW5vOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgaV9zYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2VibG9jazsKfTsKIyAzMTkg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC91ZGZfZnNfaS5oIiAxCiMgMjQgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiCnR5cGVkZWYgc3RydWN0CnsK
ICAgICAgICBfX3UzMiBsb2dpY2FsQmxvY2tOdW07CiAgICAgICAgX191MTYgcGFydGl0aW9uUmVm
ZXJlbmNlTnVtOwp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBsYl9hZGRyOwoKCnN0cnVjdCB1
ZGZfaW5vZGVfaW5mbwp7CiAgICAgICAgbG9uZyBpX3VtdGltZTsKICAgICAgICBsb25nIGlfdWN0
aW1lOwogICAgICAgIGxvbmcgaV9jcnRpbWU7CiAgICAgICAgbG9uZyBpX3VjcnRpbWU7CgogICAg
ICAgIGxiX2FkZHIgaV9sb2NhdGlvbjsKICAgICAgICBfX3U2NCBpX3VuaXF1ZTsKICAgICAgICBf
X3UzMiBpX2xlbkVBdHRyOwogICAgICAgIF9fdTMyIGlfbGVuQWxsb2M7CiAgICAgICAgX191NjQg
aV9sZW5FeHRlbnRzOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBf
X3UzMiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAgICB1bnNpZ25lZCBpX2FsbG9jX3R5cGUgOiAz
OwogICAgICAgIHVuc2lnbmVkIGlfZXh0ZW5kZWRfZmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlf
c3RyYXRfNDA5NiA6IDE7CiAgICAgICAgdW5zaWduZWQgaV9uZXdfaW5vZGUgOiAxOwogICAgICAg
IHVuc2lnbmVkIHJlc2VydmVkIDogMjY7Cn07CiMgMzIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvbmNwX2ZzX2kuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9uY3BfZnNfaS5oIgpzdHJ1Y3QgbmNwX2lub2RlX2luZm8gewogICAgICAgIF9fdTMyIGRp
ckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBEb3NEaXJOdW0g
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgdm9sTnVtYmVyIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG53YXR0cjsKICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlIG9wZW5fc2VtOwogICAgICAgIGF0b21pY190IG9wZW5lZDsKICAgICAgICBpbnQgYWNj
ZXNzOwogICAgICAgIF9fdTMyIHNlcnZlcl9maWxlX2hhbmRsZSBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKTsKICAgICAgICBfX3U4IG9wZW5fY3JlYXRlX2FjdGlvbiBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKTsKICAgICAgICBfX3U4IGZpbGVfaGFuZGxlWzZdIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
Owp9OwojIDMyMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Byb2NfZnNfaS5oIiAxCnN0
cnVjdCBwcm9jX2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsK
ICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgKCpw
cm9jX2dldF9saW5rKShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKiwgc3RydWN0IHZm
c21vdW50ICoqKTsKICAgICAgICAgICAgICAgIGludCAoKnByb2NfcmVhZCkoc3RydWN0IHRhc2tf
c3RydWN0ICp0YXNrLCBjaGFyICpwYWdlKTsKICAgICAgICB9IG9wOwogICAgICAgIHN0cnVjdCBm
aWxlICpmaWxlOwp9OwojIDMyMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3VzYmRldl9m
c19pLmgiIDEKc3RydWN0IHVzYl9kZXZpY2U7CnN0cnVjdCB1c2JfYnVzOwoKc3RydWN0IHVzYmRl
dl9pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRsaXN0OwogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3Ry
dWN0IHVzYl9kZXZpY2UgKmRldjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JfYnVzICpidXM7
CiAgICAgICAgfSBwOwp9OwojIDMyMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2pmZnMy
X2ZzX2kuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9qZmZz
Ml9mc19pLmgiCnN0cnVjdCBqZmZzMl9pbm9kZV9pbmZvIHsKIyAyNiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvamZmczJfZnNfaS5oIgogICAgICAgIHN0cnVjdCBzZW1hcGhv
cmUgc2VtOwoKCiAgICAgICAgX191MzIgaGlnaGVzdF92ZXJzaW9uOwoKCiAgICAgICAgc3RydWN0
IGpmZnMyX25vZGVfZnJhZyAqZnJhZ2xpc3Q7CgoKCgoKCiAgICAgICAgc3RydWN0IGpmZnMyX2Z1
bGxfZG5vZGUgKm1ldGFkYXRhOwoKCiAgICAgICAgc3RydWN0IGpmZnMyX2Z1bGxfZGlyZW50ICpk
ZW50czsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9pbm9kZV9jYWNoZSAqaW5vY2FjaGU7CgoKCgoK
ICAgICAgICBfX3UxNiBmbGFnczsKICAgICAgICBfX3U4IHVzZXJjb21wcjsKfTsKIyAzMjQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jcmFtZnNfZnNfc2IuaCIgMQoKCgoKCgpzdHJ1Y3Qg
Y3JhbWZzX3NiX2luZm8gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1h
Z2ljOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemU7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmxvY2tzOwogICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIGZpbGVzOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGZsYWdzOwp9OwojIDMyNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDM1MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMu
aCIKc3RydWN0IGlhdHRyIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7CiAgICAgICAg
dW1vZGVfdCBpYV9tb2RlOwogICAgICAgIHVpZF90IGlhX3VpZDsKICAgICAgICBnaWRfdCBpYV9n
aWQ7CiAgICAgICAgbG9mZl90IGlhX3NpemU7CiAgICAgICAgdGltZV90IGlhX2F0aW1lOwogICAg
ICAgIHRpbWVfdCBpYV9tdGltZTsKICAgICAgICB0aW1lX3QgaWFfY3RpbWU7CiAgICAgICAgdW5z
aWduZWQgaW50IGlhX2F0dHJfZmxhZ3M7Cn07CiMgMzc1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3F1b3RhLmgiIDEKIyA0MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
cXVvdGEuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9lcnJuby5o
IiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEK
IyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9lcnJuby5oIiAyCiMgNDMg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiIDIKIyAxMDkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBkcWJsayB7
CiAgICAgICAgX191MzIgZHFiX2JoYXJkbGltaXQ7CiAgICAgICAgX191MzIgZHFiX2Jzb2Z0bGlt
aXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmJsb2NrczsKICAgICAgICBfX3UzMiBkcWJfaWhhcmRs
aW1pdDsKICAgICAgICBfX3UzMiBkcWJfaXNvZnRsaW1pdDsKICAgICAgICBfX3UzMiBkcWJfY3Vy
aW5vZGVzOwogICAgICAgIHRpbWVfdCBkcWJfYnRpbWU7CiAgICAgICAgdGltZV90IGRxYl9pdGlt
ZTsKfTsKIyAxMzQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgi
CnN0cnVjdCBkcXN0YXRzIHsKICAgICAgICBfX3UzMiBsb29rdXBzOwogICAgICAgIF9fdTMyIGRy
b3BzOwogICAgICAgIF9fdTMyIHJlYWRzOwogICAgICAgIF9fdTMyIHdyaXRlczsKICAgICAgICBf
X3UzMiBjYWNoZV9oaXRzOwogICAgICAgIF9fdTMyIGFsbG9jYXRlZF9kcXVvdHM7CiAgICAgICAg
X191MzIgZnJlZV9kcXVvdHM7CiAgICAgICAgX191MzIgc3luY3M7Cn07CgoKCmV4dGVybiBpbnQg
bnJfZHF1b3RzLCBucl9mcmVlX2RxdW90czsKZXh0ZXJuIGludCBkcXVvdF9yb290X3NxdWFzaDsK
IyAxNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVj
dCBkcXVvdCB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkcV9oYXNoOwogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgZHFfaW51c2U7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkcV9mcmVlOwog
ICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGRxX3dhaXRfbG9jazsKICAgICAgICB3YWl0X3F1ZXVl
X2hlYWRfdCBkcV93YWl0X2ZyZWU7CiAgICAgICAgaW50IGRxX2NvdW50OwoKCiAgICAgICAgc3Ry
dWN0IHN1cGVyX2Jsb2NrICpkcV9zYjsKICAgICAgICB1bnNpZ25lZCBpbnQgZHFfaWQ7CiAgICAg
ICAga2Rldl90IGRxX2RldjsKICAgICAgICBzaG9ydCBkcV90eXBlOwogICAgICAgIHNob3J0IGRx
X2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZHFfcmVmZXJlbmNlZDsKCiAgICAgICAgc3Ry
dWN0IGRxYmxrIGRxX2RxYjsKfTsKIyAzNzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDIKCgoKCgpzdHJ1Y3QgcGFnZTsKc3RydWN0IGFkZHJlc3Nfc3BhY2U7CnN0
cnVjdCBraW9idWY7CgpzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHsKICAgICAgICBp
bnQgKCp3cml0ZXBhZ2UpKHN0cnVjdCBwYWdlICopOwogICAgICAgIGludCAoKnJlYWRwYWdlKShz
dHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqKTsKICAgICAgICBpbnQgKCpzeW5jX3BhZ2UpKHN0
cnVjdCBwYWdlICopOwoKCgoKICAgICAgICBpbnQgKCpwcmVwYXJlX3dyaXRlKShzdHJ1Y3QgZmls
ZSAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwogICAgICAgIGludCAoKmNv
bW1pdF93cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2ln
bmVkKTsKCiAgICAgICAgaW50ICgqYm1hcCkoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9uZyk7
CiAgICAgICAgaW50ICgqZmx1c2hwYWdlKSAoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZyk7
CiAgICAgICAgaW50ICgqcmVsZWFzZXBhZ2UpIChzdHJ1Y3QgcGFnZSAqLCBpbnQpOwoKICAgICAg
ICBpbnQgKCpkaXJlY3RfSU8pKGludCwgc3RydWN0IGlub2RlICosIHN0cnVjdCBraW9idWYgKiwg
dW5zaWduZWQgbG9uZywgaW50KTsKICAgICAgICB2b2lkICgqcmVtb3ZlcGFnZSkoc3RydWN0IHBh
Z2UgKik7Cn07CgpzdHJ1Y3QgYWRkcmVzc19zcGFjZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBjbGVhbl9wYWdlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X3BhZ2VzOwogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgbG9ja2VkX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
bnJwYWdlczsKICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zICphX29wczsK
ICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhvc3Q7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0
ICppX21tYXA7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXBfc2hhcmVkOwog
ICAgICAgIHNwaW5sb2NrX3QgaV9zaGFyZWRfbG9jazsKICAgICAgICBpbnQgZ2ZwX21hc2s7Cn07
CgpzdHJ1Y3QgY2hhcl9kZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaGFzaDsKICAg
ICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAgYXRvbWljX3Qg
b3BlbmVyczsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKfTsKCnN0cnVjdCBibG9ja19k
ZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmRfaGFzaDsKICAgICAgICBhdG9taWNf
dCBiZF9jb3VudDsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBiZF9pbm9kZTsKICAgICAgICBkZXZf
dCBiZF9kZXY7CiAgICAgICAgaW50IGJkX29wZW5lcnM7CiAgICAgICAgY29uc3Qgc3RydWN0IGJs
b2NrX2RldmljZV9vcGVyYXRpb25zICpiZF9vcDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGJk
X3NlbTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2lub2RlczsKfTsKCnN0cnVjdCBpbm9k
ZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2hhc2g7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBpX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RlbnRyeTsKCiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2J1ZmZlcnM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBpX2RpcnR5X2RhdGFfYnVmZmVyczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2lubzsKICAg
ICAgICBhdG9taWNfdCBpX2NvdW50OwogICAgICAgIGtkZXZfdCBpX2RldjsKICAgICAgICB1bW9k
ZV90IGlfbW9kZTsKICAgICAgICBubGlua190IGlfbmxpbms7CiAgICAgICAgdWlkX3QgaV91aWQ7
CiAgICAgICAgZ2lkX3QgaV9naWQ7CiAgICAgICAga2Rldl90IGlfcmRldjsKICAgICAgICBsb2Zm
X3QgaV9zaXplOwogICAgICAgIHRpbWVfdCBpX2F0aW1lOwogICAgICAgIHRpbWVfdCBpX210aW1l
OwogICAgICAgIHRpbWVfdCBpX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBpX2Jsa2JpdHM7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Jsa3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBp
X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfdmVyc2lvbjsKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIGlfc2VtOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV96b21iaWU7CiAgICAg
ICAgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgKmlfb3A7CiAgICAgICAgc3RydWN0IGZpbGVfb3Bl
cmF0aW9ucyAqaV9mb3A7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICppX3NiOwogICAgICAg
IHdhaXRfcXVldWVfaGVhZF90IGlfd2FpdDsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2NrICppX2Zs
b2NrOwogICAgICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICppX21hcHBpbmc7CiAgICAgICAgc3Ry
dWN0IGFkZHJlc3Nfc3BhY2UgaV9kYXRhOwogICAgICAgIHN0cnVjdCBkcXVvdCAqaV9kcXVvdFsy
XTsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RldmljZXM7CiAgICAgICAgc3RydWN0IHBp
cGVfaW5vZGVfaW5mbyAqaV9waXBlOwogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKmlfYmRl
djsKICAgICAgICBzdHJ1Y3QgY2hhcl9kZXZpY2UgKmlfY2RldjsKCiAgICAgICAgdW5zaWduZWQg
bG9uZyBpX2Rub3RpZnlfbWFzazsKICAgICAgICBzdHJ1Y3QgZG5vdGlmeV9zdHJ1Y3QgKmlfZG5v
dGlmeTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX3N0YXRlOwoKICAgICAgICB1bnNpZ25lZCBp
bnQgaV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlfc29jazsKCiAgICAgICAgYXRvbWlj
X3QgaV93cml0ZWNvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBpX2F0dHJfZmxhZ3M7CiAgICAg
ICAgX191MzIgaV9nZW5lcmF0aW9uOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0
cnVjdCBtaW5peF9pbm9kZV9pbmZvIG1pbml4X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0
Ml9pbm9kZV9pbmZvIGV4dDJfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQzX2lub2RlX2lu
Zm8gZXh0M19pOwogICAgICAgICAgICAgICAgc3RydWN0IGhwZnNfaW5vZGVfaW5mbyBocGZzX2k7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvIG50ZnNfaTsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBtc2Rvc19pbm9kZV9pbmZvIG1zZG9zX2k7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgdW1zZG9zX2lub2RlX2luZm8gdW1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
aXNvX2lub2RlX2luZm8gaXNvZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfaW5vZGVf
aW5mbyBuZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBzeXN2X2lub2RlX2luZm8gc3lzdl9p
OwogICAgICAgICAgICAgICAgc3RydWN0IGFmZnNfaW5vZGVfaW5mbyBhZmZzX2k7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgdWZzX2lub2RlX2luZm8gdWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgZWZzX2lub2RlX2luZm8gZWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgcm9tZnNfaW5v
ZGVfaW5mbyByb21mc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHNobWVtX2lub2RlX2luZm8g
c2htZW1faTsKICAgICAgICAgICAgICAgIHN0cnVjdCBjb2RhX2lub2RlX2luZm8gY29kYV9pOwog
ICAgICAgICAgICAgICAgc3RydWN0IHNtYl9pbm9kZV9pbmZvIHNtYmZzX2k7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgaGZzX2lub2RlX2luZm8gaGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
YWRmc19pbm9kZV9pbmZvIGFkZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0X2lub2Rl
X2luZm8gcW54NF9pOwogICAgICAgICAgICAgICAgc3RydWN0IHJlaXNlcmZzX2lub2RlX2luZm8g
cmVpc2VyZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBiZnNfaW5vZGVfaW5mbyBiZnNfaTsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfaW5vZGVfaW5mbyB1ZGZfaTsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBuY3BfaW5vZGVfaW5mbyBuY3Bmc19pOwogICAgICAgICAgICAgICAgc3RydWN0
IHByb2NfaW5vZGVfaW5mbyBwcm9jX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2V0IHNv
Y2tldF9pOwogICAgICAgICAgICAgICAgc3RydWN0IHVzYmRldl9pbm9kZV9pbmZvIHVzYmRldl9p
OwogICAgICAgICAgICAgICAgc3RydWN0IGpmZnMyX2lub2RlX2luZm8gamZmczJfaTsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBzdXBlcm1vdW50X2lub2RlX2luZm8gc3VwZXJtb3VudF9pOwogICAg
ICAgICAgICAgICAgdm9pZCAqZ2VuZXJpY19pcDsKICAgICAgICB9IHU7Cn07CgpzdHJ1Y3QgZm93
bl9zdHJ1Y3QgewogICAgICAgIGludCBwaWQ7CiAgICAgICAgdWlkX3QgdWlkLCBldWlkOwogICAg
ICAgIGludCBzaWdudW07Cn07CgpzdHJ1Y3QgZmlsZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBmX2xpc3Q7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZl9kZW50cnk7CiAgICAgICAgc3RydWN0
IHZmc21vdW50ICpmX3Zmc21udDsKICAgICAgICBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmX29w
OwogICAgICAgIGF0b21pY190IGZfY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGZfZmxhZ3M7
CiAgICAgICAgbW9kZV90IGZfbW9kZTsKICAgICAgICBsb2ZmX3QgZl9wb3M7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBmX3JlYWRhLCBmX3JhbWF4LCBmX3JhZW5kLCBmX3JhbGVuLCBmX3Jhd2luOwog
ICAgICAgIHN0cnVjdCBmb3duX3N0cnVjdCBmX293bmVyOwogICAgICAgIHVuc2lnbmVkIGludCBm
X3VpZCwgZl9naWQ7CiAgICAgICAgaW50IGZfZXJyb3I7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
Zl92ZXJzaW9uOwoKCiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwoKCiAgICAgICAgc3RydWN0
IGtpb2J1ZiAqZl9pb2J1ZjsKICAgICAgICBsb25nIGZfaW9idWZfbG9jazsKfTsKZXh0ZXJuIHNw
aW5sb2NrX3QgZmlsZXNfbG9jazsKCgoKCgoKZXh0ZXJuIGludCBpbml0X3ByaXZhdGVfZmlsZShz
dHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CiMgNTgzICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgp0eXBlZGVmIHN0cnVjdCBmaWxlc19zdHJ1Y3Qg
KmZsX293bmVyX3Q7CgpzdHJ1Y3QgZmlsZV9sb2NrIHsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2Nr
ICpmbF9uZXh0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZmxfbGluazsKICAgICAgICBzdHJ1
Y3QgbGlzdF9oZWFkIGZsX2Jsb2NrOwogICAgICAgIGZsX293bmVyX3QgZmxfb3duZXI7CiAgICAg
ICAgdW5zaWduZWQgaW50IGZsX3BpZDsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBmbF93YWl0
OwogICAgICAgIHN0cnVjdCBmaWxlICpmbF9maWxlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmxf
ZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbF90eXBlOwogICAgICAgIGxvZmZfdCBmbF9z
dGFydDsKICAgICAgICBsb2ZmX3QgZmxfZW5kOwoKICAgICAgICB2b2lkICgqZmxfbm90aWZ5KShz
dHJ1Y3QgZmlsZV9sb2NrICopOwogICAgICAgIHZvaWQgKCpmbF9pbnNlcnQpKHN0cnVjdCBmaWxl
X2xvY2sgKik7CiAgICAgICAgdm9pZCAoKmZsX3JlbW92ZSkoc3RydWN0IGZpbGVfbG9jayAqKTsK
CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiBmbF9mYXN5bmM7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmbF9icmVha190aW1lOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgbmZzX2xvY2tfaW5mbyBuZnNfZmw7CiAgICAgICAgfSBmbF91Owp9OwojIDYxNyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHN0cnVjdCBsaXN0
X2hlYWQgZmlsZV9sb2NrX2xpc3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2ZjbnRsLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vZmNudGwuaCIgMQojIDY5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vZmNu
dGwuaCIKc3RydWN0IGZsb2NrIHsKICAgICAgICBzaG9ydCBsX3R5cGU7CiAgICAgICAgc2hvcnQg
bF93aGVuY2U7CiAgICAgICAgb2ZmX3QgbF9zdGFydDsKICAgICAgICBvZmZfdCBsX2xlbjsKICAg
ICAgICBwaWRfdCBsX3BpZDsKfTsKCnN0cnVjdCBmbG9jazY0IHsKICAgICAgICBzaG9ydCBsX3R5
cGU7CiAgICAgICAgc2hvcnQgbF93aGVuY2U7CiAgICAgICAgbG9mZl90IGxfc3RhcnQ7CiAgICAg
ICAgbG9mZl90IGxfbGVuOwogICAgICAgIHBpZF90IGxfcGlkOwp9OwojIDUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZjbnRsLmgiIDIKIyA2MjAgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGsodW5z
aWduZWQgaW50LCBzdHJ1Y3QgZmxvY2sgKik7CmV4dGVybiBpbnQgZmNudGxfc2V0bGsodW5zaWdu
ZWQgaW50LCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jayAqKTsKCmV4dGVybiBpbnQgZmNudGxf
Z2V0bGs2NCh1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwpleHRlcm4gaW50IGZjbnRs
X3NldGxrNjQodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwoK
CmV4dGVybiB2b2lkIGxvY2tzX2luaXRfbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4g
dm9pZCBsb2Nrc19jb3B5X2xvY2soc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2Nr
ICopOwpleHRlcm4gdm9pZCBsb2Nrc19yZW1vdmVfcG9zaXgoc3RydWN0IGZpbGUgKiwgZmxfb3du
ZXJfdCk7CmV4dGVybiB2b2lkIGxvY2tzX3JlbW92ZV9mbG9jayhzdHJ1Y3QgZmlsZSAqKTsKZXh0
ZXJuIHN0cnVjdCBmaWxlX2xvY2sgKnBvc2l4X3Rlc3RfbG9jayhzdHJ1Y3QgZmlsZSAqLCBzdHJ1
Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IHBvc2l4X2xvY2tfZmlsZShzdHJ1Y3QgZmlsZSAq
LCBzdHJ1Y3QgZmlsZV9sb2NrICosIHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIHBvc2l4X2Js
b2NrX2xvY2soc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4g
dm9pZCBwb3NpeF91bmJsb2NrX2xvY2soc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBw
b3NpeF9sb2Nrc19kZWFkbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xvY2sg
Kik7CmV4dGVybiBpbnQgX19nZXRfbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQg
aW50IGZsYWdzKTsKZXh0ZXJuIHRpbWVfdCBsZWFzZV9nZXRfbXRpbWUoc3RydWN0IGlub2RlICop
OwpleHRlcm4gaW50IGxvY2tfbWF5X3JlYWQoc3RydWN0IGlub2RlICosIGxvZmZfdCBzdGFydCwg
dW5zaWduZWQgbG9uZyBjb3VudCk7CmV4dGVybiBpbnQgbG9ja19tYXlfd3JpdGUoc3RydWN0IGlu
b2RlICosIGxvZmZfdCBzdGFydCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CgpzdHJ1Y3QgZmFzeW5j
X3N0cnVjdCB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIGludCBmYV9mZDsKICAgICAgICBz
dHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFfbmV4dDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmFfZmls
ZTsKfTsKCgoKCmV4dGVybiBpbnQgZmFzeW5jX2hlbHBlcihpbnQsIHN0cnVjdCBmaWxlICosIGlu
dCwgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiopOwoKZXh0ZXJuIHZvaWQga2lsbF9mYXN5bmMoc3Ry
dWN0IGZhc3luY19zdHJ1Y3QgKiosIGludCwgaW50KTsKCmV4dGVybiB2b2lkIF9fa2lsbF9mYXN5
bmMoc3RydWN0IGZhc3luY19zdHJ1Y3QgKiwgaW50LCBpbnQpOwoKc3RydWN0IG5hbWVpZGF0YSB7
CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAq
bW50OwogICAgICAgIHN0cnVjdCBxc3RyIGxhc3Q7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdz
OwogICAgICAgIGludCBsYXN0X3R5cGU7Cn07CgoKCgpzdHJ1Y3QgcXVvdGFfbW91bnRfb3B0aW9u
cwp7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
ZHFpb19zZW07CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBkcW9mZl9zZW07CiAgICAgICAgc3Ry
dWN0IGZpbGUgKmZpbGVzWzJdOwogICAgICAgIHRpbWVfdCBpbm9kZV9leHBpcmVbMl07CiAgICAg
ICAgdGltZV90IGJsb2NrX2V4cGlyZVsyXTsKICAgICAgICBjaGFyIHJzcXVhc2hbMl07Cn07CiMg
Njg3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzX3NiLmgiIDEKCgoKCgoKc3Ry
dWN0IG1pbml4X3NiX2luZm8gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IHNfbmlub2RlczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX256b25l
czsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ltYXBfYmxvY2tzOwog
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfem1hcF9ibG9ja3M7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOwogICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgc19kaXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19uYW1l
bGVuOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19saW5rX21heDsKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfaW1hcDsKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfem1hcDsKICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBtaW5peF9zdXBlcl9ibG9jayAqIHNfbXM7CiAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHNob3J0IHNfdmVyc2lvbjsKfTsKIyA2ODggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9leHQyX2ZzX3NiLmgiIDEKIyAzMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvZXh0Ml9mc19zYi5oIgpzdHJ1Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfZnJhZ19zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxv
Y2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzX2ZyYWdzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxv
Y2tzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfaXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNfZ2RiX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZm
ZXJfaGVhZCAqIHNfc2JoOwogICAgICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsK
ICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNfbG9hZGVkX2lub2RlX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c19sb2FkZWRfYmxvY2tfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0
bWFwX251bWJlcls4XTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2lub2RlX2JpdG1h
cFs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tfYml0bWFwX251bWJlcls4XTsKICAg
ICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2Jsb2NrX2JpdG1hcFs4XTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNfbW91bnRfb3B0OwogICAgICAgIHVpZF90IHNfcmVzdWlkOwogICAgICAgIGdp
ZF90IHNfcmVzZ2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgc19wYWQ7CiAgICAgICAgaW50IHNfYWRkcl9wZXJfYmxvY2tfYml0
czsKICAgICAgICBpbnQgc19kZXNjX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2lub2Rl
X3NpemU7CiAgICAgICAgaW50IHNfZmlyc3RfaW5vOwp9OwojIDY4OSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2V4dDNfZnNfc2IuaCIgMQojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvdGltZXIuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC90aW1lci5oIgpzdHJ1Y3QgdGltZXJfbGlzdCB7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBsaXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXhwaXJlczsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGRhdGE7CiAgICAgICAgdm9pZCAoKmZ1bmN0aW9uKSh1bnNpZ25lZCBsb25nKTsKfTsK
CmV4dGVybiB2b2lkIGFkZF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKTsKZXh0ZXJu
IGludCBkZWxfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CgoKZXh0ZXJuIGludCBk
ZWxfdGltZXJfc3luYyhzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKTsKZXh0ZXJuIHZvaWQgc3lu
Y190aW1lcnModm9pZCk7CiMgNDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L3RpbWVyLmgiCmludCBtb2RfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25l
ZCBsb25nIGV4cGlyZXMpOwoKZXh0ZXJuIHZvaWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsK
CnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIp
CnsKICAgICAgICB0aW1lci0+bGlzdC5uZXh0ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAq
KTApOwp9CgpzdGF0aWMgaW5saW5lIGludCB0aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGlt
ZXJfbGlzdCAqIHRpbWVyKQp7CiAgICAgICAgcmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2
b2lkICopMCk7Cn0KIyAyMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZXh0
M19mc19zYi5oIiAyCiMgMzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2V4
dDNfZnNfc2IuaCIKc3RydWN0IGV4dDNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
X2ZyYWdfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ3NfcGVyX2Jsb2NrOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc19mcmFnc19wZXJfZ3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Jsb2Nrc19wZXJf
Z3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2lub2Rlc19wZXJfZ3JvdXA7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzX2l0Yl9wZXJfZ3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2dk
Yl9jb3VudDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZGVzY19wZXJfYmxvY2s7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzX2dyb3Vwc19jb3VudDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiBzX3NiaDsKICAgICAgICBzdHJ1Y3QgZXh0M19zdXBlcl9ibG9jayAqIHNfZXM7CiAgICAgICAg
c3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfZ3JvdXBfZGVzYzsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzX2xvYWRlZF9pbm9kZV9iaXRtYXBzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9hZGVk
X2Jsb2NrX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2lub2RlX2JpdG1hcF9udW1i
ZXJbOF07CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19pbm9kZV9iaXRtYXBbOF07CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzX2Jsb2NrX2JpdG1hcF9udW1iZXJbOF07CiAgICAgICAgc3Ry
dWN0IGJ1ZmZlcl9oZWFkICogc19ibG9ja19iaXRtYXBbOF07CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX21vdW50X29wdDsKICAgICAgICB1aWRfdCBzX3Jlc3VpZDsKICAgICAgICBnaWRfdCBzX3Jl
c2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNfcGFkOwogICAgICAgIGludCBzX2FkZHJfcGVyX2Jsb2NrX2JpdHM7CiAgICAg
ICAgaW50IHNfZGVzY19wZXJfYmxvY2tfYml0czsKICAgICAgICBpbnQgc19pbm9kZV9zaXplOwog
ICAgICAgIGludCBzX2ZpcnN0X2lubzsKICAgICAgICB1MzIgc19uZXh0X2dlbmVyYXRpb247CgoK
ICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBzX2pvdXJuYWxfaW5vZGU7CiAgICAgICAgc3RydWN0IGpv
dXJuYWxfcyAqIHNfam91cm5hbDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19jb21taXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IGJs
b2NrX2RldmljZSAqam91cm5hbF9iZGV2OwoKCgoKfTsKIyA2OTAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9ocGZzX2ZzX3NiLmgiIDEKCgoKc3RydWN0IGhwZnNfc2JfaW5mbyB7CiAgICAg
ICAgaW5vX3Qgc2Jfcm9vdDsKICAgICAgICB1bnNpZ25lZCBzYl9mc19zaXplOwogICAgICAgIHVu
c2lnbmVkIHNiX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2JfZGlyYmFuZF9zdGFydDsKICAg
ICAgICB1bnNpZ25lZCBzYl9kaXJiYW5kX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2JfZG1hcDsK
ICAgICAgICB1bnNpZ25lZCBzYl9uX2ZyZWU7CiAgICAgICAgdW5zaWduZWQgc2Jfbl9mcmVlX2Ru
b2RlczsKICAgICAgICB1aWRfdCBzYl91aWQ7CiAgICAgICAgZ2lkX3Qgc2JfZ2lkOwogICAgICAg
IHVtb2RlX3Qgc2JfbW9kZTsKICAgICAgICB1bnNpZ25lZCBzYl9jb252IDogMjsKICAgICAgICB1
bnNpZ25lZCBzYl9lYXMgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2VyciA6IDI7CiAgICAgICAg
dW5zaWduZWQgc2JfY2hrIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9sb3dlcmNhc2UgOiAxOwog
ICAgICAgIHVuc2lnbmVkIHNiX3dhc19lcnJvciA6IDE7CiAgICAgICAgdW5zaWduZWQgc2JfY2hr
ZHNrIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9yZF9mbm9kZSA6IDI7CiAgICAgICAgdW5zaWdu
ZWQgc2JfcmRfaW5vZGUgOiAyOwoKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc2JfaWdldF9x
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgKnNiX2NwX3RhYmxlOwoKCiAgICAgICAgdW5zaWduZWQg
KnNiX2JtcF9kaXI7CiAgICAgICAgdW5zaWduZWQgc2JfY19iaXRtYXA7CiAgICAgICAgd2FpdF9x
dWV1ZV9oZWFkX3Qgc2JfY3JlYXRpb25fZGU7CgogICAgICAgIHVuc2lnbmVkIHNiX2NyZWF0aW9u
X2RlX2xvY2sgOiAxOwoKICAgICAgICBpbnQgc2JfdGltZXNoaWZ0Owp9OwojIDY5MSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfc2IuaCIgMQoKCgoKCnN0cnVjdCBudGZzX3Ni
X2luZm97CgogICAgICAgIG50ZnNfdWlkX3QgdWlkOwogICAgICAgIG50ZnNfZ2lkX3QgZ2lkOwog
ICAgICAgIG50bW9kZV90IHVtYXNrOwogICAgICAgIHZvaWQgKm5sc19tYXA7CiAgICAgICAgdW5z
aWduZWQgaW50IG5ndDsKICAgICAgICBjaGFyIG1mdF96b25lX211bHRpcGxpZXI7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBtZnRfZGF0YV9wb3M7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X3pv
bmVfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25lX3N0YXJ0OwogICAgICAgIG50
ZnNfY2x1c3Rlcl90IG1mdF96b25lX2VuZDsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBkYXRhMV96
b25lX3BvczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBkYXRhMl96b25lX3BvczsKCgogICAgICAg
IG50ZnNfc2l6ZV90IHBhcnRpdGlvbl9iaWFzOwoKICAgICAgICBudGZzX3UzMiBhdF9zdGFuZGFy
ZF9pbmZvcm1hdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9hdHRyaWJ1dGVfbGlzdDsKICAgICAg
ICBudGZzX3UzMiBhdF9maWxlX25hbWU7CiAgICAgICAgbnRmc191MzIgYXRfdm9sdW1lX3ZlcnNp
b247CiAgICAgICAgbnRmc191MzIgYXRfc2VjdXJpdHlfZGVzY3JpcHRvcjsKICAgICAgICBudGZz
X3UzMiBhdF92b2x1bWVfbmFtZTsKICAgICAgICBudGZzX3UzMiBhdF92b2x1bWVfaW5mb3JtYXRp
b247CiAgICAgICAgbnRmc191MzIgYXRfZGF0YTsKICAgICAgICBudGZzX3UzMiBhdF9pbmRleF9y
b290OwogICAgICAgIG50ZnNfdTMyIGF0X2luZGV4X2FsbG9jYXRpb247CiAgICAgICAgbnRmc191
MzIgYXRfYml0bWFwOwogICAgICAgIG50ZnNfdTMyIGF0X3N5bWxpbms7CgogICAgICAgIGludCBz
ZWN0b3Jfc2l6ZTsKICAgICAgICBpbnQgY2x1c3Rlcl9zaXplOwogICAgICAgIGludCBjbHVzdGVy
X3NpemVfYml0czsKICAgICAgICBpbnQgbWZ0X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAgICAgICAg
aW50IG1mdF9yZWNvcmRfc2l6ZTsKICAgICAgICBpbnQgbWZ0X3JlY29yZF9zaXplX2JpdHM7CiAg
ICAgICAgaW50IGluZGV4X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAgICAgICAgaW50IGluZGV4X3Jl
Y29yZF9zaXplOwogICAgICAgIGludCBpbmRleF9yZWNvcmRfc2l6ZV9iaXRzOwogICAgICAgIG50
ZnNfY2x1c3Rlcl90IG5yX2NsdXN0ZXJzOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF9sY247
CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X21pcnJfbGNuOwoKICAgICAgICB1bnNpZ25lZCBj
aGFyICptZnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKnVwY2FzZTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgdXBjYXNlX2xlbmd0aDsKCiAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyAqbWZ0
X2lubzsKICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvICptZnRtaXJyOwogICAgICAgIHN0
cnVjdCBudGZzX2lub2RlX2luZm8gKmJpdG1hcDsKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KnNiOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaW5vX2ZsYWdzOwp9OwojIDY5MiAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX3NiLmgiIDEKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZhdF9jdmYuaCIgMQoKCgoKCnN0cnVjdCBjdmZfZm9ybWF0
CnsgaW50IGN2Zl92ZXJzaW9uOwogIGNoYXIqIGN2Zl92ZXJzaW9uX3RleHQ7CiAgdW5zaWduZWQg
bG9uZyBmbGFnczsKICBpbnQgKCpkZXRlY3RfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsK
ICBpbnQgKCptb3VudF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsY2hhcipvcHRpb25zKTsK
ICBpbnQgKCp1bm1vdW50X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYik7CiAgc3RydWN0IGJ1
ZmZlcl9oZWFkKiAoKmN2Zl9icmVhZCkgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixpbnQgYmxvY2sp
OwogIHN0cnVjdCBidWZmZXJfaGVhZCogKCpjdmZfZ2V0YmxrKSAoc3RydWN0IHN1cGVyX2Jsb2Nr
KnNiLGludCBibG9jayk7CiAgdm9pZCAoKmN2Zl9icmVsc2UpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KnNiLHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfbWFya19idWZmZXJfZGly
dHkpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKICB2b2lkICgqY3ZmX3NldF91cHRvZGF0ZSkgKHN0
cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKmJoLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbCk7CiAgaW50ICgq
Y3ZmX2lzX3VwdG9kYXRlKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJoKTsKICB2b2lkICgqY3ZmX2xsX3J3X2Jsb2NrKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpz
YiwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wciwKICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IG5icmVxLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg
KmJoWzMyXSk7CiAgaW50ICgqZmF0X2FjY2VzcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsaW50
IG5yLGludCBuZXdfdmFsdWUpOwogIGludCAoKmN2Zl9zdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKnNiLHN0cnVjdCBzdGF0ZnMgKmJ1ZiwgaW50IGJ1ZnNpeik7CiAgaW50ICgqY3ZmX2JtYXAp
IChzdHJ1Y3QgaW5vZGUgKmlub2RlLGludCBibG9jayk7CiAgc3NpemVfdCAoKmN2Zl9maWxlX3Jl
YWQpICggc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBzc2l6ZV90
ICgqY3ZmX2ZpbGVfd3JpdGUpICggc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3Qs
IGxvZmZfdCAqKTsKICBpbnQgKCpjdmZfbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9h
cmVhX3N0cnVjdCAqKTsKICBpbnQgKCpjdmZfcmVhZHBhZ2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3Ry
dWN0IHBhZ2UgKik7CiAgaW50ICgqY3ZmX3dyaXRlcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgcGFnZSAqKTsKICBpbnQgKCpjdmZfZGlyX2lvY3RsKSAoc3RydWN0IGlub2RlICogaW5vZGUs
IHN0cnVjdCBmaWxlICogZmlscCwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogIHZvaWQgKCp6ZXJvX291dF9jbHVzdGVyKSAoc3Ry
dWN0IGlub2RlKiwgaW50IGNsdXN0ZXJucik7Cn07CgppbnQgcmVnaXN0ZXJfY3ZmX2Zvcm1hdChz
dHJ1Y3QgY3ZmX2Zvcm1hdCpjdmZfZm9ybWF0KTsKaW50IHVucmVnaXN0ZXJfY3ZmX2Zvcm1hdChz
dHJ1Y3QgY3ZmX2Zvcm1hdCpjdmZfZm9ybWF0KTsKdm9pZCBkZWNfY3ZmX2Zvcm1hdF91c2VfY291
bnRfYnlfdmVyc2lvbihpbnQgdmVyc2lvbik7CmludCBkZXRlY3RfY3ZmKHN0cnVjdCBzdXBlcl9i
bG9jaypzYixjaGFyKmZvcmNlKTsKCmV4dGVybiBzdHJ1Y3QgY3ZmX2Zvcm1hdCAqY3ZmX2Zvcm1h
dHNbXTsKZXh0ZXJuIGludCBjdmZfZm9ybWF0X3VzZV9jb3VudFtdOwojIDQgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3QgZmF0
X21vdW50X29wdGlvbnMgewogICAgICAgIHVpZF90IGZzX3VpZDsKICAgICAgICBnaWRfdCBmc19n
aWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnNfdW1hc2s7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgY29kZXBhZ2U7CiAgICAgICAgY2hhciAqaW9jaGFyc2V0OwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHNob3J0bmFtZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG5hbWVfY2hlY2s7CiAgICAgICAg
dW5zaWduZWQgY2hhciBjb252ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIHF1aWV0OjEsCiAgICAg
ICAgICAgICAgICAgc2hvd2V4ZWM6MSwKICAgICAgICAgICAgICAgICBzeXNfaW1tdXRhYmxlOjEs
CiAgICAgICAgICAgICAgICAgZG90c09LOjEsCiAgICAgICAgICAgICAgICAgaXN2ZmF0OjEsCiAg
ICAgICAgICAgICAgICAgdXRmODoxLAogICAgICAgICAgICAgICAgIHVuaWNvZGVfeGxhdGU6MSwK
ICAgICAgICAgICAgICAgICBwb3NpeGZzOjEsCiAgICAgICAgICAgICAgICAgbnVtdGFpbDoxLAog
ICAgICAgICAgICAgICAgIGF0YXJpOjEsCiAgICAgICAgICAgICAgICAgZmF0MzI6MSwKICAgICAg
ICAgICAgICAgICBub2Nhc2U6MTsKfTsKCnN0cnVjdCBtc2Rvc19zYl9pbmZvIHsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBjbHVzdGVyX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY2x1c3Rl
cl9iaXRzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmF0cyxmYXRfYml0czsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBmYXRfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmYXRfbGVuZ3RoOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZGlyX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRp
cl9lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YV9zdGFydDsKICAgICAgICB1bnNp
Z25lZCBsb25nIGNsdXN0ZXJzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcm9vdF9jbHVzdGVyOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZnNpbmZvX3NlY3RvcjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo
b3JlIGZhdF9sb2NrOwogICAgICAgIGludCBwcmV2X2ZyZWU7CiAgICAgICAgaW50IGZyZWVfY2x1
c3RlcnM7CiAgICAgICAgc3RydWN0IGZhdF9tb3VudF9vcHRpb25zIG9wdGlvbnM7CiAgICAgICAg
c3RydWN0IG5sc190YWJsZSAqbmxzX2Rpc2s7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxz
X2lvOwogICAgICAgIHN0cnVjdCBjdmZfZm9ybWF0KiBjdmZfZm9ybWF0OwogICAgICAgIHZvaWQg
KmRpcl9vcHM7CiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwogICAgICAgIGludCBkaXJfcGVy
X2Jsb2NrOwogICAgICAgIGludCBkaXJfcGVyX2Jsb2NrX2JpdHM7Cn07CiMgNjkzICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvaXNvX2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0IGlzb2ZzX3Ni
X2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19uaW5vZGVzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc19uem9uZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZpcnN0ZGF0YXpvbmU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzX2xvZ196b25lX3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX21heF9zaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfaGlnaF9zaWVycmE7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBzX21hcHBpbmc7CiAgICAgICAgaW50IHNfcm9ja19vZmZzZXQ7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBzX3JvY2s7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2pvbGll
dF9sZXZlbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfdXRmODsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHNfY3J1ZnQ7CgoKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfdW5oaWRlOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgc19ub3N1aWQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX25vZGV2OwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgc19ub2NvbXByZXNzOwoKICAgICAgICBtb2RlX3Qgc19tb2RlOwog
ICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVpZF90IHNfdWlkOwogICAgICAgIHN0cnVjdCBu
bHNfdGFibGUgKnNfbmxzX2lvY2hhcnNldDsKfTsKIyA2OTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9uZnNfZnNfc2IuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L25mc19mc19zYi5oIgpzdHJ1Y3QgbmZzX3NlcnZlciB7CiAgICAgICAgc3RydWN0IHJw
Y19jbG50ICogY2xpZW50OwogICAgICAgIHN0cnVjdCBuZnNfcnBjX29wcyAqIHJwY19vcHM7CiAg
ICAgICAgaW50IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGludCByc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBpbnQgcnBhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCB3c2l6ZTsKICAgICAgICB1bnNp
Z25lZCBpbnQgd3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCBkdHNpemU7CiAgICAgICAgdW5z
aWduZWQgaW50IGJzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBhY3JlZ21pbjsKICAgICAgICB1
bnNpZ25lZCBpbnQgYWNyZWdtYXg7CiAgICAgICAgdW5zaWduZWQgaW50IGFjZGlybWluOwogICAg
ICAgIHVuc2lnbmVkIGludCBhY2Rpcm1heDsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZWxlbjsK
ICAgICAgICBjaGFyICogaG9zdG5hbWU7CiAgICAgICAgc3RydWN0IG5mc19yZXFsaXN0ICogcndf
cmVxdWVzdHM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBscnVfcmVhZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBscnVfZGlydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbHJ1X2NvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscnVfYnVz
eTsKfTsKCgoKCnN0cnVjdCBuZnNfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IG5mc19zZXJ2ZXIg
c19zZXJ2ZXI7Cn07CiMgNjk1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9m
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3lzdl9mc19z
Yi5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNf
c2IuaCIKc3RydWN0IHN5c3Zfc2JfaW5mbyB7CiAgICAgICAgaW50IHNfdHlwZTsKICAgICAgICBj
aGFyIHNfYnl0ZXNleDsKICAgICAgICBjaGFyIHNfdHJ1bmNhdGU7CgogICAgICAgIG5saW5rX3Qg
c19saW5rX21heDsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAg
ICAgIHVuc2lnbmVkIGludCBzX2lub2Rlc19wZXJfYmxvY2tfMTsKICAgICAgICB1bnNpZ25lZCBp
bnQgc19pbm9kZXNfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Bl
cl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrX2JpdHM7CiAgICAg
ICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9ja18yOwogICAgICAgIHVuc2lnbmVkIGludCBz
X3Rvb2JpZ19ibG9jazsKICAgICAgICB1bnNpZ25lZCBpbnQgc19ibG9ja19iYXNlOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHNfZmljX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19mbGNf
c2l6ZTsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX2JoMTsKICAgICAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKnNfYmgyOwoKCiAgICAgICAgY2hhciAqIHNfc2JkMTsKICAgICAgICBjaGFy
ICogc19zYmQyOwogICAgICAgIHUxNiAqc19zYl9maWNfY291bnQ7CiAgICAgICAgdTE2ICpzX3Ni
X2ZpY19pbm9kZXM7CiAgICAgICAgdTE2ICpzX3NiX3RvdGFsX2ZyZWVfaW5vZGVzOwogICAgICAg
IHUxNiAqc19iY2FjaGVfY291bnQ7CiAgICAgICAgdTMyICpzX2JjYWNoZTsKICAgICAgICB1MzIg
KnNfZnJlZV9ibG9ja3M7CiAgICAgICAgdTMyICpzX3NiX3RpbWU7CiAgICAgICAgdTMyICpzX3Ni
X3N0YXRlOwoKCiAgICAgICAgdTMyIHNfZmlyc3Rpbm9kZXpvbmU7CiAgICAgICAgdTMyIHNfZmly
c3RkYXRhem9uZTsKICAgICAgICB1MzIgc19uaW5vZGVzOwogICAgICAgIHUzMiBzX25kYXRhem9u
ZXM7CiAgICAgICAgdTMyIHNfbnpvbmVzOwogICAgICAgIHUxNiBzX25hbWVsZW47Cn07CiMgNjk2
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvYWZmc19mc19zYi5oIiAxCiMgMTEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfc2IuaCIKc3RydWN0IGFmZnNf
Ym1faW5mbyB7CiAgICAgICAgdTMyIGJtX2tleTsKICAgICAgICB1MzIgYm1fZnJlZTsKfTsKCnN0
cnVjdCBhZmZzX3NiX2luZm8gewogICAgICAgIGludCBzX3BhcnRpdGlvbl9zaXplOwogICAgICAg
IGludCBzX3Jlc2VydmVkOwoKICAgICAgICB1MzIgc19kYXRhX2Jsa3NpemU7CiAgICAgICAgdTMy
IHNfcm9vdF9ibG9jazsKICAgICAgICBpbnQgc19oYXNoc2l6ZTsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNfZmxhZ3M7CiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAg
ICAgICAgdW1vZGVfdCBzX21vZGU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX3Jvb3Rf
Ymg7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX2JtbG9jazsKICAgICAgICBzdHJ1Y3QgYWZm
c19ibV9pbmZvICpzX2JpdG1hcDsKICAgICAgICB1MzIgc19ibWFwX2NvdW50OwogICAgICAgIHUz
MiBzX2JtYXBfYml0czsKICAgICAgICB1MzIgc19sYXN0X2JtYXA7CiAgICAgICAgc3RydWN0IGJ1
ZmZlcl9oZWFkICpzX2JtYXBfYmg7CiAgICAgICAgY2hhciAqc19wcmVmaXg7CiAgICAgICAgaW50
IHNfcHJlZml4X2xlbjsKICAgICAgICBjaGFyIHNfdm9sdW1lWzMyXTsKfTsKIyA2OTcgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC91ZnNfZnNfc2IuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC91ZnNfZnNfc2IuaCIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMQojIDIzNyAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiCnN0cnVjdCB1ZnNfdGltZXZhbCB7CiAgICAgICAg
X19zMzIgdHZfc2VjOwogICAgICAgIF9fczMyIHR2X3VzZWM7Cn07CgpzdHJ1Y3QgdWZzX2Rpcl9l
bnRyeSB7CiAgICAgICAgX191MzIgZF9pbm87CiAgICAgICAgX191MTYgZF9yZWNsZW47CiAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgICAgX191MTYgZF9uYW1sZW47CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3U4IGRfdHlwZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191OCBkX25hbWxlbjsKICAgICAgICAgICAgICAgIH0gZF80NDsKICAg
ICAgICB9IGRfdTsKICAgICAgICBfX3U4IGRfbmFtZVsyNTUgKyAxXTsKfTsKCnN0cnVjdCB1ZnNf
Y3N1bSB7CiAgICAgICAgX191MzIgY3NfbmRpcjsKICAgICAgICBfX3UzMiBjc19uYmZyZWU7CiAg
ICAgICAgX191MzIgY3NfbmlmcmVlOwogICAgICAgIF9fdTMyIGNzX25mZnJlZTsKfTsKCgoKCnN0
cnVjdCB1ZnNfc3VwZXJfYmxvY2sgewogICAgICAgIF9fdTMyIGZzX2xpbms7CiAgICAgICAgX191
MzIgZnNfcmxpbms7CiAgICAgICAgX191MzIgZnNfc2Jsa25vOwogICAgICAgIF9fdTMyIGZzX2Ni
bGtubzsKICAgICAgICBfX3UzMiBmc19pYmxrbm87CiAgICAgICAgX191MzIgZnNfZGJsa25vOwog
ICAgICAgIF9fdTMyIGZzX2Nnb2Zmc2V0OwogICAgICAgIF9fdTMyIGZzX2NnbWFzazsKICAgICAg
ICBfX3UzMiBmc190aW1lOwogICAgICAgIF9fdTMyIGZzX3NpemU7CiAgICAgICAgX191MzIgZnNf
ZHNpemU7CiAgICAgICAgX191MzIgZnNfbmNnOwogICAgICAgIF9fdTMyIGZzX2JzaXplOwogICAg
ICAgIF9fdTMyIGZzX2ZzaXplOwogICAgICAgIF9fdTMyIGZzX2ZyYWc7CgogICAgICAgIF9fdTMy
IGZzX21pbmZyZWU7CiAgICAgICAgX191MzIgZnNfcm90ZGVsYXk7CiAgICAgICAgX191MzIgZnNf
cnBzOwoKICAgICAgICBfX3UzMiBmc19ibWFzazsKICAgICAgICBfX3UzMiBmc19mbWFzazsKICAg
ICAgICBfX3UzMiBmc19ic2hpZnQ7CiAgICAgICAgX191MzIgZnNfZnNoaWZ0OwoKICAgICAgICBf
X3UzMiBmc19tYXhjb250aWc7CiAgICAgICAgX191MzIgZnNfbWF4YnBnOwoKICAgICAgICBfX3Uz
MiBmc19mcmFnc2hpZnQ7CiAgICAgICAgX191MzIgZnNfZnNidG9kYjsKICAgICAgICBfX3UzMiBm
c19zYnNpemU7CiAgICAgICAgX191MzIgZnNfY3NtYXNrOwogICAgICAgIF9fdTMyIGZzX2Nzc2hp
ZnQ7CiAgICAgICAgX191MzIgZnNfbmluZGlyOwogICAgICAgIF9fdTMyIGZzX2lub3BiOwogICAg
ICAgIF9fdTMyIGZzX25zcGY7CgogICAgICAgIF9fdTMyIGZzX29wdGltOwoKICAgICAgICB1bmlv
biB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3Uz
MiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAg
ICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgfSBmc191MTsKICAgICAgICBfX3UzMiBmc19pbnRl
cmxlYXZlOwogICAgICAgIF9fdTMyIGZzX3RyYWNrc2tldzsKCgoKCiAgICAgICAgX191MzIgZnNf
aWRbMl07CgogICAgICAgIF9fdTMyIGZzX2NzYWRkcjsKICAgICAgICBfX3UzMiBmc19jc3NpemU7
CiAgICAgICAgX191MzIgZnNfY2dzaXplOwoKICAgICAgICBfX3UzMiBmc19udHJhazsKICAgICAg
ICBfX3UzMiBmc19uc2VjdDsKICAgICAgICBfX3UzMiBmc19zcGM7CgogICAgICAgIF9fdTMyIGZz
X25jeWw7CgogICAgICAgIF9fdTMyIGZzX2NwZzsKICAgICAgICBfX3UzMiBmc19pcGc7CiAgICAg
ICAgX191MzIgZnNfZnBnOwoKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0gZnNfY3N0b3RhbDsKCiAg
ICAgICAgX19zOCBmc19mbW9kOwogICAgICAgIF9fczggZnNfY2xlYW47CiAgICAgICAgX19zOCBm
c19yb25seTsKICAgICAgICBfX3M4IGZzX2ZsYWdzOwogICAgICAgIF9fczggZnNfZnNtbnRbNTEy
XTsKCiAgICAgICAgX191MzIgZnNfY2dyb3RvcjsKICAgICAgICBfX3UzMiBmc19jc3BbMzFdOwog
ICAgICAgIF9fdTMyIGZzX21heGNsdXN0ZXI7CiAgICAgICAgX191MzIgZnNfY3BjOwogICAgICAg
IF9fdTE2IGZzX29wb3N0YmxbMTZdWzhdOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAg
ICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJd
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAg
ICAgICB9IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19z
MzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24y
WzFdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAg
X191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNv
bls1MF07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX2NvbnRpZ3N1bXNpemU7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX21heHN5bWxpbmtsZW47CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fczMyIGZzX2lub2RlZm10OwogICAgICAgICAgICAgICAgICAgICAgICBf
X3UzMiBmc19tYXhmaWxlc2l6ZVsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNf
cWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBm
c180NDsKICAgICAgICB9IGZzX3UyOwogICAgICAgIF9fczMyIGZzX3Bvc3RibGZvcm1hdDsKICAg
ICAgICBfX3MzMiBmc19ucnBvczsKICAgICAgICBfX3MzMiBmc19wb3N0YmxvZmY7CiAgICAgICAg
X19zMzIgZnNfcm90YmxvZmY7CiAgICAgICAgX19zMzIgZnNfbWFnaWM7CiAgICAgICAgX191OCBm
c19zcGFjZVsxXTsKfTsKIyA0MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L3Vmc19mcy5oIgpzdHJ1Y3QgdWZzX2N5bGluZGVyX2dyb3VwIHsKICAgICAgICBfX3UzMiBjZ19s
aW5rOwogICAgICAgIF9fdTMyIGNnX21hZ2ljOwogICAgICAgIF9fdTMyIGNnX3RpbWU7CiAgICAg
ICAgX191MzIgY2dfY2d4OwogICAgICAgIF9fdTE2IGNnX25jeWw7CiAgICAgICAgX191MTYgY2df
bmlibGs7CiAgICAgICAgX191MzIgY2dfbmRibGs7CiAgICAgICAgc3RydWN0IHVmc19jc3VtIGNn
X2NzOwogICAgICAgIF9fdTMyIGNnX3JvdG9yOwogICAgICAgIF9fdTMyIGNnX2Zyb3RvcjsKICAg
ICAgICBfX3UzMiBjZ19pcm90b3I7CiAgICAgICAgX191MzIgY2dfZnJzdW1bKDgxOTIgLyAxMDI0
KV07CiAgICAgICAgX191MzIgY2dfYnRvdG9mZjsKICAgICAgICBfX3UzMiBjZ19ib2ZmOwogICAg
ICAgIF9fdTMyIGNnX2l1c2Vkb2ZmOwogICAgICAgIF9fdTMyIGNnX2ZyZWVvZmY7CiAgICAgICAg
X191MzIgY2dfbmV4dGZyZWVvZmY7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfY2x1c3RlcnN1bW9mZjsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfY2x1c3Rlcm9mZjsKICAgICAgICAgICAgICAg
ICAgICAgICAgX191MzIgY2dfbmNsdXN0ZXJibGtzOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3UzMiBjZ19zcGFyZWNvblsxM107CiAgICAgICAgICAgICAgICB9IGNnXzQ0OwogICAgICAgICAg
ICAgICAgX191MzIgY2dfc3BhcmVjb25bMTZdOwogICAgICAgIH0gY2dfdTsKICAgICAgICBfX3U4
IGNnX3NwYWNlWzFdOwoKfTsKCgoKCnN0cnVjdCB1ZnNfaW5vZGUgewogICAgICAgIF9fdTE2IHVp
X21vZGU7CiAgICAgICAgX191MTYgdWlfbmxpbms7CiAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfc3VpZDsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfc2dpZDsKICAgICAgICAgICAgICAgIH0gb2xk
aWRzOwogICAgICAgICAgICAgICAgX191MzIgdWlfaW51bWJlcjsKICAgICAgICAgICAgICAgIF9f
dTMyIHVpX2F1dGhvcjsKICAgICAgICB9IHVpX3UxOwogICAgICAgIF9fdTY0IHVpX3NpemU7CiAg
ICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX2F0aW1lOwogICAgICAgIHN0cnVjdCB1ZnNfdGlt
ZXZhbCB1aV9tdGltZTsKICAgICAgICBzdHJ1Y3QgdWZzX3RpbWV2YWwgdWlfY3RpbWU7CiAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgX191MzIgdWlfZGJbMTJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9pYlsz
XTsKICAgICAgICAgICAgICAgIH0gdWlfYWRkcjsKICAgICAgICAgICAgICAgIF9fdTggdWlfc3lt
bGlua1s0KigxMiArMyldOwogICAgICAgIH0gdWlfdTI7CiAgICAgICAgX191MzIgdWlfZmxhZ3M7
CiAgICAgICAgX191MzIgdWlfYmxvY2tzOwogICAgICAgIF9fdTMyIHVpX2dlbjsKICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBf
X3UzMiB1aV9zaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3UzMiB1aV9vZWZ0ZmxhZzsKICAgICAgICAgICAgICAgIH0gdWlfc3VuOwogICAgICAgICAg
ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfdWlkOwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7CiAgICAgICAgICAgICAgICAgICAgICAg
IF9fczMyIHVpX3NwYXJlWzJdOwogICAgICAgICAgICAgICAgfSB1aV80NDsKICAgICAgICAgICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAgICAg
ICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3UxNiB1aV9tb2RlaDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfc3BhcmU7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3RyYW5zOwogICAgICAgICAgICAgICAgfSB1
aV9odXJkOwogICAgICAgIH0gdWlfdTM7Cn07CiMgNTE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC91ZnNfZnMuaCIKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfZnJhZ21lbnRzIChz
dHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVf
YmxvY2tzIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHVuc2ln
bmVkIHVmc19uZXdfZnJhZ21lbnRzIChzdHJ1Y3QgaW5vZGUgKiwgdTMyICosIHVuc2lnbmVkLCB1
bnNpZ25lZCwgdW5zaWduZWQsIGludCAqKTsKCgpleHRlcm4gc3RydWN0IHVmc19jZ19wcml2YXRl
X2luZm8gKiB1ZnNfbG9hZF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVk
KTsKZXh0ZXJuIHZvaWQgdWZzX3B1dF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVu
c2lnbmVkKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9v
cGVyYXRpb25zOwpleHRlcm4gaW50IHVmc19jaGVja19kaXJfZW50cnkgKGNvbnN0IGNoYXIgKiwg
c3RydWN0IGlub2RlICosIHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVh
ZCAqLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIGludCB1ZnNfYWRkX2xpbmsgKHN0cnVjdCBkZW50
cnkgKiwgc3RydWN0IGlub2RlICopOwpleHRlcm4gaW5vX3QgdWZzX2lub2RlX2J5X25hbWUoc3Ry
dWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdWZzX21ha2VfZW1wdHko
c3RydWN0IGlub2RlICosIHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCB1ZnNfZGlyX2Vu
dHJ5ICogdWZzX2ZpbmRfZW50cnkgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGJ1ZmZlcl9oZWFk
ICoqKTsKZXh0ZXJuIGludCB1ZnNfZGVsZXRlX2VudHJ5IChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IHVmc19kaXJfZW50cnkgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICopOwpleHRlcm4gaW50IHVmc19l
bXB0eV9kaXIgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICog
dWZzX2RvdGRvdCAoc3RydWN0IGlub2RlICosIHN0cnVjdCBidWZmZXJfaGVhZCAqKik7CmV4dGVy
biB2b2lkIHVmc19zZXRfbGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50cnkg
Kiwgc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gc3RydWN0
IGlub2RlX29wZXJhdGlvbnMgdWZzX2ZpbGVfaW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVj
dCBmaWxlX29wZXJhdGlvbnMgdWZzX2ZpbGVfb3BlcmF0aW9uczsKCmV4dGVybiBzdHJ1Y3QgYWRk
cmVzc19zcGFjZV9vcGVyYXRpb25zIHVmc19hb3BzOwoKCmV4dGVybiB2b2lkIHVmc19mcmVlX2lu
b2RlIChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIHVmc19uZXdf
aW5vZGUgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCBpbnQpOwoKCmV4dGVybiBpbnQgdWZzX2ZyYWdf
bWFwIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIHZvaWQgdWZzX3JlYWRfaW5vZGUgKHN0
cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX3B1dF9pbm9kZSAoc3RydWN0IGlub2RlICop
OwpleHRlcm4gdm9pZCB1ZnNfd3JpdGVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRl
cm4gaW50IHVmc19zeW5jX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHVmc19k
ZWxldGVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAq
IHVmc19nZXRmcmFnIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIGludCwgaW50ICopOwpleHRl
cm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogdWZzX2JyZWFkIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWdu
ZWQsIGludCwgaW50ICopOwoKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHVmc19kaXJf
b3BlcmF0aW9uczsKCgpleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgdWZzX2ZzX3R5cGU7
CmV4dGVybiB2b2lkIHVmc193YXJuaW5nIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAz
LCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNfZXJyb3IgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmlu
dGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc19wYW5pYyAoc3RydWN0IHN1cGVyX2Jsb2NrICos
IGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQg
KHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZzX3dyaXRlX3N1cGVyIChzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKik7CgoKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHVmc19mYXN0X3N5
bWxpbmtfaW5vZGVfb3BlcmF0aW9uczsKCgpleHRlcm4gdm9pZCB1ZnNfdHJ1bmNhdGUgKHN0cnVj
dCBpbm9kZSAqKTsKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdWZz
X2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3QgdWZzX2J1ZmZlcl9oZWFkIHsKICAgICAgICB1bnNpZ25l
ZCBmcmFnbWVudDsKICAgICAgICB1bnNpZ25lZCBjb3VudDsKICAgICAgICBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiBiaFsoODE5MiAvIDEwMjQpXTsKfTsKCnN0cnVjdCB1ZnNfY2dfcHJpdmF0ZV9pbmZv
IHsKICAgICAgICBzdHJ1Y3QgdWZzX2N5bGluZGVyX2dyb3VwIHVjZzsKICAgICAgICBfX3UzMiBj
X2NneDsKICAgICAgICBfX3UxNiBjX25jeWw7CiAgICAgICAgX191MTYgY19uaWJsazsKICAgICAg
ICBfX3UzMiBjX25kYmxrOwogICAgICAgIF9fdTMyIGNfcm90b3I7CiAgICAgICAgX191MzIgY19m
cm90b3I7CiAgICAgICAgX191MzIgY19pcm90b3I7CiAgICAgICAgX191MzIgY19idG90b2ZmOwog
ICAgICAgIF9fdTMyIGNfYm9mZjsKICAgICAgICBfX3UzMiBjX2l1c2Vkb2ZmOwogICAgICAgIF9f
dTMyIGNfZnJlZW9mZjsKICAgICAgICBfX3UzMiBjX25leHRmcmVlb2ZmOwogICAgICAgIF9fdTMy
IGNfY2x1c3RlcnN1bW9mZjsKICAgICAgICBfX3UzMiBjX2NsdXN0ZXJvZmY7CiAgICAgICAgX191
MzIgY19uY2x1c3RlcmJsa3M7Cn07CgpzdHJ1Y3QgdWZzX3NiX3ByaXZhdGVfaW5mbyB7CiAgICAg
ICAgc3RydWN0IHVmc19idWZmZXJfaGVhZCBzX3ViaDsKICAgICAgICBfX3UzMiBzX3NibGtubzsK
ICAgICAgICBfX3UzMiBzX2NibGtubzsKICAgICAgICBfX3UzMiBzX2libGtubzsKICAgICAgICBf
X3UzMiBzX2RibGtubzsKICAgICAgICBfX3UzMiBzX2Nnb2Zmc2V0OwogICAgICAgIF9fdTMyIHNf
Y2dtYXNrOwogICAgICAgIF9fdTMyIHNfc2l6ZTsKICAgICAgICBfX3UzMiBzX2RzaXplOwogICAg
ICAgIF9fdTMyIHNfbmNnOwogICAgICAgIF9fdTMyIHNfYnNpemU7CiAgICAgICAgX191MzIgc19m
c2l6ZTsKICAgICAgICBfX3UzMiBzX2ZwYjsKICAgICAgICBfX3UzMiBzX21pbmZyZWU7CiAgICAg
ICAgX191MzIgc19ibWFzazsKICAgICAgICBfX3UzMiBzX2ZtYXNrOwogICAgICAgIF9fdTMyIHNf
YnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnBic2hpZnQ7
CiAgICAgICAgX191MzIgc19mc2J0b2RiOwogICAgICAgIF9fdTMyIHNfc2JzaXplOwogICAgICAg
IF9fdTMyIHNfY3NtYXNrOwogICAgICAgIF9fdTMyIHNfY3NzaGlmdDsKICAgICAgICBfX3UzMiBz
X25pbmRpcjsKICAgICAgICBfX3UzMiBzX2lub3BiOwogICAgICAgIF9fdTMyIHNfbnNwZjsKICAg
ICAgICBfX3UzMiBzX25wc2VjdDsKICAgICAgICBfX3UzMiBzX2ludGVybGVhdmU7CiAgICAgICAg
X191MzIgc190cmFja3NrZXc7CiAgICAgICAgX191MzIgc19jc2FkZHI7CiAgICAgICAgX191MzIg
c19jc3NpemU7CiAgICAgICAgX191MzIgc19jZ3NpemU7CiAgICAgICAgX191MzIgc19udHJhazsK
ICAgICAgICBfX3UzMiBzX25zZWN0OwogICAgICAgIF9fdTMyIHNfc3BjOwogICAgICAgIF9fdTMy
IHNfaXBnOwogICAgICAgIF9fdTMyIHNfZnBnOwogICAgICAgIF9fdTMyIHNfY3BjOwogICAgICAg
IF9fczMyIHNfY29udGlnc3Vtc2l6ZTsKICAgICAgICBfX3M2NCBzX3FibWFzazsKICAgICAgICBf
X3M2NCBzX3FmbWFzazsKICAgICAgICBfX3MzMiBzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3Mz
MiBzX25ycG9zOwogICAgICAgIF9fczMyIHNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIHNfcm90
YmxvZmY7CgogICAgICAgIF9fdTMyIHNfZnBibWFzazsKICAgICAgICBfX3UzMiBzX2FwYjsKICAg
ICAgICBfX3UzMiBzXzJhcGI7CiAgICAgICAgX191MzIgc18zYXBiOwogICAgICAgIF9fdTMyIHNf
YXBibWFzazsKICAgICAgICBfX3UzMiBzX2FwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfMmFwYnNo
aWZ0OwogICAgICAgIF9fdTMyIHNfM2FwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfbnNwZnNoaWZ0
OwogICAgICAgIF9fdTMyIHNfbnNwYjsKICAgICAgICBfX3UzMiBzX2lub3BmOwogICAgICAgIF9f
dTMyIHNfc2JiYXNlOwogICAgICAgIF9fdTMyIHNfYnBmOwogICAgICAgIF9fdTMyIHNfYnBmc2hp
ZnQ7CiAgICAgICAgX191MzIgc19icGZtYXNrOwoKICAgICAgICBfX3UzMiBzX21heHN5bWxpbmts
ZW47Cn07CgoKCgoKc3RydWN0IHVmc19zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX3NiX3By
aXZhdGVfaW5mbyAqIHNfdXNwaTsKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0gKiBzX2NzcFszMV07
CiAgICAgICAgdW5zaWduZWQgc19ieXRlc2V4OwogICAgICAgIHVuc2lnbmVkIHNfZmxhZ3M7CiAg
ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfdWNnOwogICAgICAgIHN0cnVjdCB1ZnNfY2df
cHJpdmF0ZV9pbmZvICogc191Y3BpWzhdOwogICAgICAgIHVuc2lnbmVkIHNfY2dub1s4XTsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzX2NnX2xvYWRlZDsKICAgICAgICB1bnNpZ25lZCBzX21vdW50
X29wdDsKfTsKCgoKCgoKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2tfZmlyc3QgewogICAgICAgIF9f
dTMyIGZzX2xpbms7CiAgICAgICAgX191MzIgZnNfcmxpbms7CiAgICAgICAgX191MzIgZnNfc2Js
a25vOwogICAgICAgIF9fdTMyIGZzX2NibGtubzsKICAgICAgICBfX3UzMiBmc19pYmxrbm87CiAg
ICAgICAgX191MzIgZnNfZGJsa25vOwogICAgICAgIF9fdTMyIGZzX2Nnb2Zmc2V0OwogICAgICAg
IF9fdTMyIGZzX2NnbWFzazsKICAgICAgICBfX3UzMiBmc190aW1lOwogICAgICAgIF9fdTMyIGZz
X3NpemU7CiAgICAgICAgX191MzIgZnNfZHNpemU7CiAgICAgICAgX191MzIgZnNfbmNnOwogICAg
ICAgIF9fdTMyIGZzX2JzaXplOwogICAgICAgIF9fdTMyIGZzX2ZzaXplOwogICAgICAgIF9fdTMy
IGZzX2ZyYWc7CiAgICAgICAgX191MzIgZnNfbWluZnJlZTsKICAgICAgICBfX3UzMiBmc19yb3Rk
ZWxheTsKICAgICAgICBfX3UzMiBmc19ycHM7CiAgICAgICAgX191MzIgZnNfYm1hc2s7CiAgICAg
ICAgX191MzIgZnNfZm1hc2s7CiAgICAgICAgX191MzIgZnNfYnNoaWZ0OwogICAgICAgIF9fdTMy
IGZzX2ZzaGlmdDsKICAgICAgICBfX3UzMiBmc19tYXhjb250aWc7CiAgICAgICAgX191MzIgZnNf
bWF4YnBnOwogICAgICAgIF9fdTMyIGZzX2ZyYWdzaGlmdDsKICAgICAgICBfX3UzMiBmc19mc2J0
b2RiOwogICAgICAgIF9fdTMyIGZzX3Nic2l6ZTsKICAgICAgICBfX3UzMiBmc19jc21hc2s7CiAg
ICAgICAgX191MzIgZnNfY3NzaGlmdDsKICAgICAgICBfX3UzMiBmc19uaW5kaXI7CiAgICAgICAg
X191MzIgZnNfaW5vcGI7CiAgICAgICAgX191MzIgZnNfbnNwZjsKICAgICAgICBfX3UzMiBmc19v
cHRpbTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZz
X3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgfSBmc191MTsKICAg
ICAgICBfX3UzMiBmc19pbnRlcmxlYXZlOwogICAgICAgIF9fdTMyIGZzX3RyYWNrc2tldzsKICAg
ICAgICBfX3UzMiBmc19pZFsyXTsKICAgICAgICBfX3UzMiBmc19jc2FkZHI7CiAgICAgICAgX191
MzIgZnNfY3NzaXplOwogICAgICAgIF9fdTMyIGZzX2Nnc2l6ZTsKICAgICAgICBfX3UzMiBmc19u
dHJhazsKICAgICAgICBfX3UzMiBmc19uc2VjdDsKICAgICAgICBfX3UzMiBmc19zcGM7CiAgICAg
ICAgX191MzIgZnNfbmN5bDsKICAgICAgICBfX3UzMiBmc19jcGc7CiAgICAgICAgX191MzIgZnNf
aXBnOwogICAgICAgIF9fdTMyIGZzX2ZwZzsKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0gZnNfY3N0
b3RhbDsKICAgICAgICBfX3M4IGZzX2Ztb2Q7CiAgICAgICAgX19zOCBmc19jbGVhbjsKICAgICAg
ICBfX3M4IGZzX3Jvbmx5OwogICAgICAgIF9fczggZnNfZmxhZ3M7CiAgICAgICAgX19zOCBmc19m
c21udFs1MTIgLSAyMTJdOwoKfTsKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2tfc2Vjb25kIHsKICAg
ICAgICBfX3M4IGZzX2ZzbW50WzIxMl07CiAgICAgICAgX191MzIgZnNfY2dyb3RvcjsKICAgICAg
ICBfX3UzMiBmc19jc3BbMzFdOwogICAgICAgIF9fdTMyIGZzX21heGNsdXN0ZXI7CiAgICAgICAg
X191MzIgZnNfY3BjOwogICAgICAgIF9fdTE2IGZzX29wb3N0YmxbODJdOwp9OwoKc3RydWN0IHVm
c19zdXBlcl9ibG9ja190aGlyZCB7CiAgICAgICAgX191MTYgZnNfb3Bvc3RibFs0Nl07CiAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgX19zMzIgZnNfc3BhcmVjb25bNTNdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBm
c19yZWNsYWltOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbjJbMV07
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMy
IGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VuOwogICAgICAgICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTNdOwog
ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19yZWNsYWltOwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3MzMiBmc19zcGFyZWNvbjJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
dTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJd
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAg
ICAgICB9IGZzX3N1bng4NjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUwXTsKICAgICAgICAgICAgICAgICAgICAgICAg
X19zMzIgZnNfY29udGlnc3Vtc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNf
bWF4c3ltbGlua2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfaW5vZGVmbXQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX21heGZpbGVzaXplWzJdOwogICAgICAg
ICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNf
c3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzXzQ0OwogICAgICAgIH0gZnNfdTI7CiAgICAgICAg
X19zMzIgZnNfcG9zdGJsZm9ybWF0OwogICAgICAgIF9fczMyIGZzX25ycG9zOwogICAgICAgIF9f
czMyIGZzX3Bvc3RibG9mZjsKICAgICAgICBfX3MzMiBmc19yb3RibG9mZjsKICAgICAgICBfX3Mz
MiBmc19tYWdpYzsKICAgICAgICBfX3U4IGZzX3NwYWNlWzFdOwp9OwojIDY5OCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2Vmc19mc19zYi5oIiAxCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L2Vmc19mc19zYi5oIgpzdHJ1Y3QgZWZzX3N1cGVyIHsKICAgICAg
ICBpbnQzMl90IGZzX3NpemU7CiAgICAgICAgaW50MzJfdCBmc19maXJzdGNnOwogICAgICAgIGlu
dDMyX3QgZnNfY2dmc2l6ZTsKICAgICAgICBzaG9ydCBmc19jZ2lzaXplOwogICAgICAgIHNob3J0
IGZzX3NlY3RvcnM7CiAgICAgICAgc2hvcnQgZnNfaGVhZHM7CiAgICAgICAgc2hvcnQgZnNfbmNn
OwogICAgICAgIHNob3J0IGZzX2RpcnR5OwogICAgICAgIGludDMyX3QgZnNfdGltZTsKICAgICAg
ICBpbnQzMl90IGZzX21hZ2ljOwogICAgICAgIGNoYXIgZnNfZm5hbWVbNl07CiAgICAgICAgY2hh
ciBmc19mcGFja1s2XTsKICAgICAgICBpbnQzMl90IGZzX2Jtc2l6ZTsKICAgICAgICBpbnQzMl90
IGZzX3RmcmVlOwogICAgICAgIGludDMyX3QgZnNfdGlub2RlOwogICAgICAgIGludDMyX3QgZnNf
Ym1ibG9jazsKICAgICAgICBpbnQzMl90IGZzX3JlcGxzYjsKICAgICAgICBpbnQzMl90IGZzX2xh
c3RpYWxsb2M7CiAgICAgICAgY2hhciBmc19zcGFyZVsyMF07CiAgICAgICAgaW50MzJfdCBmc19j
aGVja3N1bTsKfTsKCgpzdHJ1Y3QgZWZzX3NiX2luZm8gewogICAgICAgIGludDMyX3QgZnNfbWFn
aWM7CiAgICAgICAgaW50MzJfdCBmc19zdGFydDsKICAgICAgICBpbnQzMl90IGZpcnN0X2Jsb2Nr
OwogICAgICAgIGludDMyX3QgdG90YWxfYmxvY2tzOwogICAgICAgIGludDMyX3QgZ3JvdXBfc2l6
ZTsKICAgICAgICBpbnQzMl90IGRhdGFfZnJlZTsKICAgICAgICBpbnQzMl90IGlub2RlX2ZyZWU7
CiAgICAgICAgc2hvcnQgaW5vZGVfYmxvY2tzOwogICAgICAgIHNob3J0IHRvdGFsX2dyb3VwczsK
fTsKIyA2OTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yb21mc19mc19zYi5oIiAxCgoK
CgoKc3RydWN0IHJvbWZzX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tYXhzaXpl
Owp9OwojIDcwMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIiAxCiMg
MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NtYi5oIiAxCiMgMTQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NtYi5oIgplbnVtIHNtYl9wcm90b2NvbCB7
CiAgICAgICAgU01CX1BST1RPQ09MX05PTkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NPUkUsCiAg
ICAgICAgU01CX1BST1RPQ09MX0NPUkVQTFVTLAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5NQU4x
LAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5NQU4yLAogICAgICAgIFNNQl9QUk9UT0NPTF9OVDEK
fTsKCmVudW0gc21iX2Nhc2VfaG5kbCB7CiAgICAgICAgU01CX0NBU0VfREVGQVVMVCwKICAgICAg
ICBTTUJfQ0FTRV9MT1dFUiwKICAgICAgICBTTUJfQ0FTRV9VUFBFUgp9OwoKc3RydWN0IHNtYl9k
c2thdHRyIHsKICAgICAgICBfX3UxNiB0b3RhbDsKICAgICAgICBfX3UxNiBhbGxvY2Jsb2NrczsK
ICAgICAgICBfX3UxNiBibG9ja3NpemU7CiAgICAgICAgX191MTYgZnJlZTsKfTsKCnN0cnVjdCBz
bWJfY29ubl9vcHQgewoKCiAgICAgICAgdW5zaWduZWQgaW50IGZkOwoKICAgICAgICBlbnVtIHNt
Yl9wcm90b2NvbCBwcm90b2NvbDsKICAgICAgICBlbnVtIHNtYl9jYXNlX2huZGwgY2FzZV9oYW5k
bGluZzsKCgoKICAgICAgICBfX3UzMiBtYXhfeG1pdDsKICAgICAgICBfX3UxNiBzZXJ2ZXJfdWlk
OwogICAgICAgIF9fdTE2IHRpZDsKCgogICAgICAgIF9fdTE2IHNlY21vZGU7CiAgICAgICAgX191
MTYgbWF4bXV4OwogICAgICAgIF9fdTE2IG1heHZjczsKICAgICAgICBfX3UxNiByYXdtb2RlOwog
ICAgICAgIF9fdTMyIHNlc3NrZXk7CgoKICAgICAgICBfX3UzMiBtYXhyYXc7CiAgICAgICAgX191
MzIgY2FwYWJpbGl0aWVzOwogICAgICAgIF9fczE2IHNlcnZlcnpvbmU7Cn07CgoKCgpzdHJ1Y3Qg
c21iX25sc19jb2RlcGFnZSB7CiAgICAgICAgY2hhciBsb2NhbF9uYW1lWzIwXTsKICAgICAgICBj
aGFyIHJlbW90ZV9uYW1lWzIwXTsKfTsKIyA3OCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvc21iLmgiCnN0cnVjdCBzbWJfZmF0dHIgewoKICAgICAgICBfX3UxNiBhdHRyOwoK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZfaW5vOwogICAgICAgIHVtb2RlX3QgZl9tb2RlOwogICAg
ICAgIG5saW5rX3QgZl9ubGluazsKICAgICAgICB1aWRfdCBmX3VpZDsKICAgICAgICBnaWRfdCBm
X2dpZDsKICAgICAgICBrZGV2X3QgZl9yZGV2OwogICAgICAgIG9mZl90IGZfc2l6ZTsKICAgICAg
ICB0aW1lX3QgZl9hdGltZTsKICAgICAgICB0aW1lX3QgZl9tdGltZTsKICAgICAgICB0aW1lX3Qg
Zl9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZfYmxrc2l6ZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGZfYmxvY2tzOwp9OwoKZW51bSBzbWJfY29ubl9zdGF0ZSB7CiAgICAgICAgQ09OTl9W
QUxJRCwKICAgICAgICBDT05OX0lOVkFMSUQsCgogICAgICAgIENPTk5fUkVUUklFRCwKICAgICAg
ICBDT05OX1JFVFJZSU5HCn07CiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3NtYl9mc19zYi5oIiAyCgoKCgoKCgpzdHJ1Y3Qgc21iX3NiX2luZm8gewogICAgICAgIGVu
dW0gc21iX2Nvbm5fc3RhdGUgc3RhdGU7CiAgICAgICAgc3RydWN0IGZpbGUgKiBzb2NrX2ZpbGU7
CgogICAgICAgIHN0cnVjdCBzbWJfbW91bnRfZGF0YV9rZXJuZWwgKm1udDsKICAgICAgICB1bnNp
Z25lZCBjaGFyICp0ZW1wX2J1ZjsKCgoKCiAgICAgICAgdW5zaWduZWQgaW50IGdlbmVyYXRpb247
CiAgICAgICAgcGlkX3QgY29ubl9waWQ7CiAgICAgICAgc3RydWN0IHNtYl9jb25uX29wdCBvcHQ7
CgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90
IHdhaXQ7CgogICAgICAgIF9fdTMyIHBhY2tldF9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
KiBwYWNrZXQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcmNsczsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBlcnI7CgoKICAgICAgICB2b2lkICpkYXRhX3JlYWR5OwoKCiAgICAgICAgc3RydWN0IG5s
c190YWJsZSAqcmVtb3RlX25sczsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpsb2NhbF9ubHM7
CgoKCgogICAgICAgIGNoYXIgKm5hbWVfYnVmOwoKICAgICAgICBpbnQgKCpjb252ZXJ0KShjaGFy
ICosIGludCwgY29uc3QgY2hhciAqLCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IG5sc190YWJsZSAqLCBzdHJ1Y3QgbmxzX3RhYmxlICopOwp9OwoKCnN0YXRpYyBpbmxpbmUgdm9p
ZApzbWJfbG9ja19zZXJ2ZXIoc3RydWN0IHNtYl9zYl9pbmZvICpzZXJ2ZXIpCnsKICAgICAgICBk
b3duKCYoc2VydmVyLT5zZW0pKTsKfQoKc3RhdGljIGlubGluZSB2b2lkCnNtYl91bmxvY2tfc2Vy
dmVyKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyKQp7CiAgICAgICAgdXAoJihzZXJ2ZXItPnNl
bSkpOwp9CiMgNzAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaGZzX2ZzX3NiLmgiIDEK
IyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaGZzX2ZzX3NiLmgiCnN0
cnVjdCBoZnNfbmFtZTsKCnR5cGVkZWYgaW50ICgqaGZzX25hbWVpbl9mbikgKGNoYXIgKiwgY29u
c3Qgc3RydWN0IGhmc19uYW1lICopOwp0eXBlZGVmIHZvaWQgKCpoZnNfbmFtZW91dF9mbikgKHN0
cnVjdCBoZnNfbmFtZSAqLCBjb25zdCBjaGFyICosIGludCk7CnR5cGVkZWYgdm9pZCAoKmhmc19p
ZmlsbF9mbikgKHN0cnVjdCBpbm9kZSAqLCBpbm9fdCwgY29uc3QgaW50KTsKCgoKCgoKc3RydWN0
IGhmc19zYl9pbmZvIHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgc3RydWN0IGhmc19tZGIg
KnNfbWRiOwogICAgICAgIGludCBzX3F1aWV0OwoKICAgICAgICBpbnQgc19sb3dlcmNhc2U7CiAg
ICAgICAgaW50IHNfYWZwZDsKICAgICAgICBpbnQgc192ZXJzaW9uOwogICAgICAgIGhmc19uYW1l
aW5fZm4gc19uYW1laW47CgoKICAgICAgICBoZnNfbmFtZW91dF9mbiBzX25hbWVvdXQ7CgoKICAg
ICAgICBoZnNfaWZpbGxfZm4gc19pZmlsbDsKCiAgICAgICAgY29uc3Qgc3RydWN0IGhmc19uYW1l
ICpzX3Jlc2VydmVkMTsKICAgICAgICBjb25zdCBzdHJ1Y3QgaGZzX25hbWUgKnNfcmVzZXJ2ZWQy
OwogICAgICAgIF9fdTMyIHNfdHlwZTsKICAgICAgICBfX3UzMiBzX2NyZWF0b3I7CiAgICAgICAg
dW1vZGVfdCBzX3VtYXNrOwoKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dp
ZDsKICAgICAgICBjaGFyIHNfY29udjsKfTsKIyA3MDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9hZGZzX2ZzX3NiLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvYWRmc19mc19zYi5oIgpzdHJ1Y3QgYWRmc19kaXNjbWFwOwpzdHJ1Y3QgYWRmc19kaXJf
b3BzOwoKCgoKc3RydWN0IGFkZnNfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IGFkZnNfZGlzY21h
cCAqc19tYXA7CiAgICAgICAgc3RydWN0IGFkZnNfZGlyX29wcyAqc19kaXI7CgogICAgICAgIHVp
ZF90IHNfdWlkOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVtb2RlX3Qgc19vd25lcl9t
YXNrOwogICAgICAgIHVtb2RlX3Qgc19vdGhlcl9tYXNrOwoKICAgICAgICBfX3UzMiBzX2lkc19w
ZXJfem9uZTsKICAgICAgICBfX3UzMiBzX2lkbGVuOwogICAgICAgIF9fdTMyIHNfbWFwX3NpemU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX3NpemU7CiAgICAgICAgc2lnbmVkIGludCBzX21hcDJi
bGs7CiAgICAgICAgdW5zaWduZWQgaW50IHNfbG9nMnNoYXJlc2l6ZTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc192ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBzX25hbWVsZW47Cn07CiMgNzAz
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcW54NF9mc19zYi5oIiAxCiMgMTQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiIDEKIyA0NSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcW54NF9mcy5oIgpzdHJ1Y3QgcW54NF9pbm9kZV9l
bnRyeSB7CiAgICAgICAgY2hhciBkaV9mbmFtZVsxNl07CiAgICAgICAgcW54NF9vZmZfdCBkaV9z
aXplOwogICAgICAgIHFueDRfeHRudF90IGRpX2ZpcnN0X3h0bnQ7CiAgICAgICAgX191MzIgZGlf
eGJsazsKICAgICAgICBfX3MzMiBkaV9mdGltZTsKICAgICAgICBfX3MzMiBkaV9tdGltZTsKICAg
ICAgICBfX3MzMiBkaV9hdGltZTsKICAgICAgICBfX3MzMiBkaV9jdGltZTsKICAgICAgICBxbng0
X254dG50X3QgZGlfbnVtX3h0bnRzOwogICAgICAgIHFueDRfbW9kZV90IGRpX21vZGU7CiAgICAg
ICAgcW54NF9tdWlkX3QgZGlfdWlkOwogICAgICAgIHFueDRfbWdpZF90IGRpX2dpZDsKICAgICAg
ICBxbng0X25saW5rX3QgZGlfbmxpbms7CiAgICAgICAgX191OCBkaV96ZXJvWzRdOwogICAgICAg
IHFueDRfZnR5cGVfdCBkaV90eXBlOwogICAgICAgIF9fdTggZGlfc3RhdHVzOwp9OwoKc3RydWN0
IHFueDRfbGlua19pbmZvIHsKICAgICAgICBjaGFyIGRsX2ZuYW1lWzQ4XTsKICAgICAgICBfX3Uz
MiBkbF9pbm9kZV9ibGs7CiAgICAgICAgX191OCBkbF9pbm9kZV9uZHg7CiAgICAgICAgX191OCBk
bF9zcGFyZVsxMF07CiAgICAgICAgX191OCBkbF9zdGF0dXM7Cn07CgpzdHJ1Y3QgcW54NF94Ymxr
IHsKICAgICAgICBfX3UzMiB4YmxrX25leHRfeGJsazsKICAgICAgICBfX3UzMiB4YmxrX3ByZXZf
eGJsazsKICAgICAgICBfX3U4IHhibGtfbnVtX3h0bnRzOwogICAgICAgIF9fdTggeGJsa19zcGFy
ZVszXTsKICAgICAgICBfX3MzMiB4YmxrX251bV9ibG9ja3M7CiAgICAgICAgcW54NF94dG50X3Qg
eGJsa194dG50c1s2MF07CiAgICAgICAgY2hhciB4YmxrX3NpZ25hdHVyZVs4XTsKICAgICAgICBx
bng0X3h0bnRfdCB4YmxrX2ZpcnN0X3h0bnQ7Cn07CgpzdHJ1Y3QgcW54NF9zdXBlcl9ibG9jayB7
CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgUm9vdERpcjsKICAgICAgICBzdHJ1Y3Qg
cW54NF9pbm9kZV9lbnRyeSBJbm9kZTsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBC
b290OwogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IEFsdEJvb3Q7Cn07CiMgMTAwICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiCmV4dGVybiBzdHJ1
Y3QgZGVudHJ5ICpxbng0X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAq
ZGVudHJ5KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcW54NF9jb3VudF9mcmVlX2Jsb2NrcyhzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcW54NF9ibG9ja19tYXAo
c3RydWN0IGlub2RlICppbm9kZSwgbG9uZyBpYmxvY2spOwoKZXh0ZXJuIHN0cnVjdCBidWZmZXJf
aGVhZCAqcW54NF9nZXRibGsoc3RydWN0IGlub2RlICosIGludCwgaW50KTsKZXh0ZXJuIHN0cnVj
dCBidWZmZXJfaGVhZCAqcW54NF9icmVhZChzdHJ1Y3QgaW5vZGUgKiwgaW50LCBpbnQpOwoKZXh0
ZXJuIGludCBxbng0X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVu
dHJ5LCBpbnQgbW9kZSk7CmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBxbng0X2ZpbGVf
aW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHFueDRfZGly
X2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHFueDRfZmls
ZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBxbng0X2Rpcl9vcGVy
YXRpb25zOwpleHRlcm4gaW50IHFueDRfaXNfZnJlZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBs
b25nIGJsb2NrKTsKZXh0ZXJuIGludCBxbng0X3NldF9iaXRtYXAoc3RydWN0IHN1cGVyX2Jsb2Nr
ICpzYiwgbG9uZyBibG9jaywgaW50IGJ1c3kpOwpleHRlcm4gaW50IHFueDRfY3JlYXRlKHN0cnVj
dCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4g
dm9pZCBxbng0X3RydW5jYXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gdm9pZCBxbng0
X2ZyZWVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF91bmxpbmso
c3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiBpbnQgcW54
NF9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKZXh0ZXJu
IGludCBxbng0X3N5bmNfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRlbnRyeSAqZGVu
dHJ5LCBpbnQpOwpleHRlcm4gaW50IHFueDRfc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2Rl
KTsKZXh0ZXJuIGludCBxbng0X2dldF9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIGli
bG9jaywgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IGNyZWF0ZSk7CiMgMTUgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCBx
bng0X3NiX2luZm8gewogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc2JfYnVmOwogICAgICAg
IHN0cnVjdCBxbng0X3N1cGVyX2Jsb2NrICpzYjsKICAgICAgICB1bnNpZ25lZCBpbnQgVmVyc2lv
bjsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSAqQml0TWFwOwp9OwojIDcwNCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiIDEKCgoKCgoKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDEKIyAzOCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiCnN0cnVjdCB0cV9zdHJ1
Y3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25n
IHN5bmM7CiAgICAgICAgdm9pZCAoKnJvdXRpbmUpKHZvaWQgKik7CiAgICAgICAgdm9pZCAqZGF0
YTsKfTsKIyA2NCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgi
CnR5cGVkZWYgc3RydWN0IGxpc3RfaGVhZCB0YXNrX3F1ZXVlOwoKCgoKZXh0ZXJuIHRhc2tfcXVl
dWUgdHFfdGltZXIsIHRxX2ltbWVkaWF0ZSwgdHFfZGlzazsKIyA5NCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiCmV4dGVybiBzcGlubG9ja190IHRxdWV1ZV9s
b2NrOwoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IHF1ZXVlX3Rhc2soc3RydWN0IHRxX3N0cnVjdCAq
YmhfcG9pbnRlciwgdGFza19xdWV1ZSAqYmhfbGlzdCkKewogICAgICAgIGludCByZXQgPSAwOwog
ICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdCgwLCZiaF9wb2ludGVyLT5zeW5jKSkgewogICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICAgICAgICAgIGRvIHsgZG8g
eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCI6Ij1nIiAoZmxhZ3MpOiAp
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlKDApOzsg
c3Bpbl9sb2NrKCZ0cXVldWVfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgbGlz
dF9hZGRfdGFpbCgmYmhfcG9pbnRlci0+bGlzdCwgYmhfbGlzdCk7CiAgICAgICAgICAgICAgICBk
byB7IHNwaW5fdW5sb2NrKCZ0cXVldWVfbG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNo
bCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7
CiAgICAgICAgICAgICAgICByZXQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0Owp9
CgoKCgoKZXh0ZXJuIHZvaWQgX19ydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KTsKCnN0
YXRpYyBpbmxpbmUgdm9pZCBydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KQp7CiAgICAg
ICAgaWYgKCghbGlzdF9lbXB0eSgmKmxpc3QpKSkKICAgICAgICAgICAgICAgIF9fcnVuX3Rhc2tf
cXVldWUobGlzdCk7Cn0KIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9y
ZWlzZXJmc19mc19zYi5oIiAyCiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jawp7CiAgX191
MzIgc19ibG9ja19jb3VudDsKICBfX3UzMiBzX2ZyZWVfYmxvY2tzOwogIF9fdTMyIHNfcm9vdF9i
bG9jazsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2RldjsKIyA0
MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIK
ICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOwogIF9fdTMyIHNfam91cm5hbF90cmFuc19tYXgg
OwogIF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3VudCA7CiAgX191MzIgc19qb3VybmFsX21heF9i
YXRjaCA7CiAgX191MzIgc19qb3VybmFsX21heF9jb21taXRfYWdlIDsKICBfX3UzMiBzX2pvdXJu
YWxfbWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19ibG9ja3NpemU7CiAgX191MTYgc19vaWRfbWF4
c2l6ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwogIF9fdTE2IHNfc3RhdGU7CiAgY2hhciBzX21h
Z2ljWzEyXTsKICBfX3UzMiBzX2hhc2hfZnVuY3Rpb25fY29kZTsKICBfX3UxNiBzX3RyZWVfaGVp
Z2h0OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UxNiBzX3ZlcnNpb247CgoKCgogIF9fdTE2IHNf
cmVzZXJ2ZWQ7CiAgX191MzIgc19pbm9kZV9nZW5lcmF0aW9uOwogIF9fdTMyIHNfZmxhZ3M7CiAg
dW5zaWduZWQgY2hhciBzX3V1aWRbMTZdOwogIHVuc2lnbmVkIGNoYXIgc19sYWJlbFsxNl07CiAg
Y2hhciBzX3VudXNlZFs4OF0gOwoKCgp9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7Cgp0
eXBlZGVmIGVudW0gewogIHJlaXNlcmZzX2F0dHJzX2NsZWFyZWQgPSAweDAwMDAwMDAxLAp9IHJl
aXNlcmZzX3N1cGVyX2Jsb2NrX2ZsYWdzOwojIDEzMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Jsb2Nr
X3YxCnsKICBfX3UzMiBzX2Jsb2NrX2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAgX191
MzIgc19yb290X2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pvdXJu
YWxfZGV2OwogIF9fdTMyIHNfb3JpZ19qb3VybmFsX3NpemU7CiAgX191MzIgc19qb3VybmFsX3Ry
YW5zX21heCA7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrX2NvdW50IDsKICBfX3UzMiBzX2pvdXJu
YWxfbWF4X2JhdGNoIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2NvbW1pdF9hZ2UgOwogIF9fdTMy
IHNfam91cm5hbF9tYXhfdHJhbnNfYWdlIDsKICBfX3UxNiBzX2Jsb2Nrc2l6ZTsKICBfX3UxNiBz
X29pZF9tYXhzaXplOwogIF9fdTE2IHNfb2lkX2N1cnNpemU7CiAgX191MTYgc19zdGF0ZTsKICBj
aGFyIHNfbWFnaWNbMTZdOwogIF9fdTE2IHNfdHJlZV9oZWlnaHQ7CiAgX191MTYgc19ibWFwX25y
OwogIF9fdTMyIHNfcmVzZXJ2ZWQ7Cn0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18pKTsKIyAy
MTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgi
CnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlIHsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo
IDsKICBrZGV2X3QgZGV2IDsKICB1bnNpZ25lZCBsb25nIGJsb2NrbnIgOwogIGxvbmcgc3RhdGUg
OwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgKmpsaXN0IDsKICBzdHJ1Y3QgcmVpc2Vy
ZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
KnByZXYgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpocHJldiA7CiAgc3RydWN0
IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmhuZXh0IDsKfTsKCnN0cnVjdCByZWlzZXJmc19iaXRt
YXBfbm9kZSB7CiAgaW50IGlkIDsKICBjaGFyICpkYXRhIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGxp
c3QgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCB7CiAgc3RydWN0IHJlaXNlcmZz
X2pvdXJuYWxfbGlzdCAqam91cm5hbF9saXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfYml0bWFwX25v
ZGUgKipiaXRtYXBzIDsKfSA7CgoKCgpzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxl
IHsKCiAgY2hhciAqdF9jYWxsZXIgOwogIGludCB0X2Jsb2Nrc19sb2dnZWQgOwogIGludCB0X2Js
b2Nrc19hbGxvY2F0ZWQgOwogIHVuc2lnbmVkIGxvbmcgdF90cmFuc19pZCA7CiAgc3RydWN0IHN1
cGVyX2Jsb2NrICp0X3N1cGVyIDsKCiAgaW50IGRpc3BsYWNlX25ld19ibG9ja3M6MTsKCn0gOwoK
CgoKCgoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCB7CiAgdW5zaWduZWQgbG9uZyBqX3N0
YXJ0IDsKICB1bnNpZ25lZCBsb25nIGpfbGVuIDsKICBhdG9taWNfdCBqX25vbnplcm9sZW4gOwog
IGF0b21pY190IGpfY29tbWl0X2xlZnQgOwogIGF0b21pY190IGpfZmx1c2hpbmcgOwogIGF0b21p
Y190IGpfY29tbWl0X2ZsdXNoaW5nIDsKICBhdG9taWNfdCBqX29sZGVyX2NvbW1pdHNfZG9uZSA7
CiAgdW5zaWduZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB0aW1lX3Qgal90aW1lc3RhbXAgOwogIHN0
cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCAqal9saXN0X2JpdG1hcCA7CiAgc3RydWN0IGJ1ZmZl
cl9oZWFkICpqX2NvbW1pdF9iaCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpf
cmVhbGJsb2NrIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9mcmVlZGxpc3Qg
OwogIHdhaXRfcXVldWVfaGVhZF90IGpfY29tbWl0X3dhaXQgOwogIHdhaXRfcXVldWVfaGVhZF90
IGpfZmx1c2hfd2FpdCA7Cn0gOwoKc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCA7CgpzdHJ1Y3Qg
cmVpc2VyZnNfam91cm5hbCB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIGpfYXBfYmxvY2tzIDsK
ICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9sYXN0IDsKICBzdHJ1Y3QgcmVpc2Vy
ZnNfam91cm5hbF9jbm9kZSAqal9maXJzdCA7CgogIGxvbmcgal9zdGF0ZSA7CiAgdW5zaWduZWQg
bG9uZyBqX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGpfbW91bnRfaWQgOwogIHVuc2lnbmVk
IGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgdW5zaWduZWQgbG9uZyBq
X2xlbl9hbGxvYyA7CiAgYXRvbWljX3Qgal93Y291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9iY291
bnQgOwogIHVuc2lnbmVkIGxvbmcgal9maXJzdF91bmZsdXNoZWRfb2Zmc2V0IDsKICB1bnNpZ25l
ZCBsb25nIGpfbGFzdF9mbHVzaF90cmFuc19pZCA7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpqX2hl
YWRlcl9iaCA7CgoKCgogIHN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgKmpfZmx1c2hfcGFnZXMg
OwogIHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOwogIHdhaXRfcXVldWVfaGVhZF90IGpfd2Fp
dCA7CiAgYXRvbWljX3Qgal93bG9jayA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal9qb2luX3dhaXQg
OwogIGF0b21pY190IGpfamxvY2sgOwogIGludCBqX2pvdXJuYWxfbGlzdF9pbmRleCA7CiAgaW50
IGpfbGlzdF9iaXRtYXBfaW5kZXggOwogIGludCBqX211c3Rfd2FpdCA7CiAgaW50IGpfbmV4dF9m
dWxsX2ZsdXNoIDsKICBpbnQgal9uZXh0X2FzeW5jX2ZsdXNoIDsKCiAgaW50IGpfY25vZGVfdXNl
ZCA7CiAgaW50IGpfY25vZGVfZnJlZSA7CgogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2Rl
ICpqX2Nub2RlX2ZyZWVfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpf
Y25vZGVfZnJlZV9vcmlnIDsKCiAgaW50IGpfZnJlZV9iaXRtYXBfbm9kZXMgOwogIGludCBqX3Vz
ZWRfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfYml0bWFwX25vZGVzIDsKICBz
dHJ1Y3QgbGlzdF9oZWFkIGpfZGlydHlfYnVmZmVycyA7CiAgc3RydWN0IHJlaXNlcmZzX2xpc3Rf
Yml0bWFwIGpfbGlzdF9iaXRtYXBbNV0gOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3Qg
al9qb3VybmFsX2xpc3RbNjRdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9o
YXNoX3RhYmxlWzgxOTJdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9saXN0
X2hhc2hfdGFibGVbODE5Ml0gOwoKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfcHJlYWxsb2NfbGlzdDsK
fTsKCgoKCnR5cGVkZWYgX191MzIgKCpoYXNoZl90KSAoY29uc3Qgc2lnbmVkIGNoYXIgKiwgaW50
KTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfaW5mbwp7CgogICAgX191MTYgZmlyc3RfemVyb19o
aW50OwogICAgX191MTYgZnJlZV9jb3VudDsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYmg7Cn07
CgpzdHJ1Y3QgcHJvY19kaXJfZW50cnk7CiMgNDA4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgp0eXBlZGVmIHN0cnVjdCByZWlzZXJmc19wcm9j
X2luZm9fZGF0YQp7fSByZWlzZXJmc19wcm9jX2luZm9fZGF0YV90OwoKCgpzdHJ1Y3QgcmVpc2Vy
ZnNfc2JfaW5mbwp7CiAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX3NiaDsKCgogICAgc3RydWN0
IHJlaXNlcmZzX3N1cGVyX2Jsb2NrICogc19yczsKICAgIHN0cnVjdCByZWlzZXJmc19iaXRtYXBf
aW5mbyAqIHNfYXBfYml0bWFwOwogICAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgKnNfam91cm5h
bCA7CiAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwoKCiAgICB2b2lkICgqZW5kX2lv
X2hhbmRsZXIpKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogICAgaGFzaGZfdCBzX2hhc2hf
ZnVuY3Rpb247CgoKICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CgoKCiAgICBzdHJ1Y3Qg
ewogICAgICAgIHVuc2lnbmVkIGxvbmcgYml0czsKICAgICAgICB1bnNpZ25lZCBsb25nIGxhcmdl
X2ZpbGVfc2l6ZTsKICAgICAgICBpbnQgYm9yZGVyOwogICAgICAgIGludCBwcmVhbGxvY21pbjsK
ICAgICAgICBpbnQgcHJlYWxsb2NzaXplOwoKCiAgICB9IHNfYWxsb2Nfb3B0aW9uczsKCgogICAg
d2FpdF9xdWV1ZV9oZWFkX3Qgc193YWl0OwoKICAgIGF0b21pY190IHNfZ2VuZXJhdGlvbl9jb3Vu
dGVyOwoKICAgIHVuc2lnbmVkIGxvbmcgc19wcm9wZXJ0aWVzOwoKCgogICAgaW50IHNfa21hbGxv
Y3M7CiAgICBpbnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNfZGlza193cml0ZXM7CiAgICBpbnQg
c19maXhfbm9kZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwogICAgaW50IHNfdW5uZWVkZWRfbGVm
dF9uZWlnaGJvcjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5X2tleV9yZWFkYTsKICAgIGludCBz
X2JtYXBzOwogICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFyY2g7CiAgICBpbnQgc19kaXJlY3Qy
aW5kaXJlY3Q7CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7CgoKCiAgICBpbnQgc19pc191bmxp
bmtlZF9vazsKICAgIHJlaXNlcmZzX3Byb2NfaW5mb19kYXRhX3Qgc19wcm9jX2luZm9fZGF0YTsK
ICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY2RpcjsKICAgIGludCByZXNlcnZlZF9ibG9j
a3M7Cn07CiMgNTM0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9yZWlzZXJm
c19mc19zYi5oIgp2b2lkIHJlaXNlcmZzX2ZpbGVfYnVmZmVyIChzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiBiaCwgaW50IGxpc3QpOwppbnQgcmVpc2VyZnNfaXNfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2Nr
ICpzKSA7CmludCBqb3VybmFsX21hcmtfZGlydHkoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9u
X2hhbmRsZSAqLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkg
OwppbnQgZmx1c2hfb2xkX2NvbW1pdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBpbnQpIDsKaW50
IHNob3dfcmVpc2VyZnNfbG9ja3Modm9pZCkgOwppbnQgcmVpc2VyZnNfcmVzaXplKHN0cnVjdCBz
dXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nKSA7CiMgNzA1ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvYmZzX2ZzX3NiLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvYmZzX2ZzX3NiLmgiCnN0cnVjdCBiZnNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzaV9ibG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9mcmVlYjsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNpX2ZyZWVpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfaW9m
ZjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX3NibGs7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzaV9sZl9lYmxrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGFzdGk7CiAgICAgICAgY2hh
ciAqIHNpX2ltYXA7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2lfc2JoOwogICAgICAg
IHN0cnVjdCBiZnNfc3VwZXJfYmxvY2sgKiBzaV9iZnNfc2I7Cn07CiMgNzA2ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiCiNwcmFnbWEgcGFjaygxKQojIDMwICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIKc3RydWN0IHVkZl9z
cGFyaW5nX2RhdGEKewogICAgICAgIF9fdTE2IHNfcGFja2V0X2xlbjsKICAgICAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKnNfc3Bhcl9tYXBbNF07Cn07CgpzdHJ1Y3QgdWRmX3ZpcnR1YWxfZGF0YQp7
CiAgICAgICAgX191MzIgc19udW1fZW50cmllczsKICAgICAgICBfX3UxNiBzX3N0YXJ0X29mZnNl
dDsKfTsKCnN0cnVjdCB1ZGZfYml0bWFwCnsKICAgICAgICBfX3UzMiBzX2V4dExlbmd0aDsKICAg
ICAgICBfX3UzMiBzX2V4dFBvc2l0aW9uOwogICAgICAgIF9fdTE2IHNfbnJfZ3JvdXBzOwogICAg
ICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKnNfYmxvY2tfYml0bWFwOwp9OwoKc3RydWN0IHVkZl9w
YXJ0X21hcAp7CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
dWRmX2JpdG1hcCAqc19iaXRtYXA7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNfdGFi
bGU7CiAgICAgICAgfSBzX3VzcGFjZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAg
ICAgICAgIHN0cnVjdCB1ZGZfYml0bWFwICpzX2JpdG1hcDsKICAgICAgICAgICAgICAgIHN0cnVj
dCBpbm9kZSAqc190YWJsZTsKICAgICAgICB9IHNfZnNwYWNlOwogICAgICAgIF9fdTMyIHNfcGFy
dGl0aW9uX3Jvb3Q7CiAgICAgICAgX191MzIgc19wYXJ0aXRpb25fbGVuOwogICAgICAgIF9fdTE2
IHNfcGFydGl0aW9uX3R5cGU7CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25fbnVtOwogICAgICAg
IHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9zcGFyaW5nX2RhdGEg
c19zcGFyaW5nOwogICAgICAgICAgICAgICAgc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEgc192aXJ0
dWFsOwogICAgICAgIH0gc190eXBlX3NwZWNpZmljOwogICAgICAgIF9fdTMyICgqc19wYXJ0aXRp
b25fZnVuYykoc3RydWN0IHN1cGVyX2Jsb2NrICosIF9fdTMyLCBfX3UxNiwgX191MzIpOwogICAg
ICAgIF9fdTE2IHNfdm9sdW1lc2VxbnVtOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uX2ZsYWdz
Owp9OwoKI3ByYWdtYSBwYWNrKCkKCnN0cnVjdCB1ZGZfc2JfaW5mbwp7CiAgICAgICAgc3RydWN0
IHVkZl9wYXJ0X21hcCAqc19wYXJ0bWFwczsKICAgICAgICBfX3U4IHNfdm9saWRlbnRbMzJdOwoK
CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25zOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uOwoK
CiAgICAgICAgX19zMzIgc19zZXNzaW9uOwogICAgICAgIF9fdTMyIHNfYW5jaG9yWzRdOwogICAg
ICAgIF9fdTMyIHNfbGFzdGJsb2NrOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfbHZp
ZGJoOwoKCiAgICAgICAgbW9kZV90IHNfdW1hc2s7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAg
ICAgdWlkX3Qgc191aWQ7CgoKICAgICAgICB0aW1lX3Qgc19yZWNvcmR0aW1lOwoKCiAgICAgICAg
X191MTYgc19zZXJpYWxudW07CgoKICAgICAgICBfX3UxNiBzX3VkZnJldjsKCgogICAgICAgIF9f
dTMyIHNfZmxhZ3M7CgoKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpzX25sc19tYXA7CgoKICAg
ICAgICBzdHJ1Y3QgaW5vZGUgKnNfdmF0Owp9OwojIDcwNyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L25jcF9mc19zYi5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L25jcF9mc19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L25jcF9tb3VudC5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L25jcF9tb3VudC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L25jcC5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcC5o
IgpzdHJ1Y3QgbmNwX3JlcXVlc3RfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25u
X2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBmdW5jdGlvbiBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7Cn07CgoKCgpzdHJ1Y3QgbmNwX3JlcGx5X2hlYWRlciB7CiAgICAgICAgX191MTYg
dHlwZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IHNlcXVlbmNlIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubl9sb3cgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191OCB0YXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTggY29ubl9oaWdoIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTgg
Y29tcGxldGlvbl9jb2RlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29u
bmVjdGlvbl9zdGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFb
MF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoKCnN0cnVjdCBuY3Bfdm9sdW1lX2luZm8g
ewogICAgICAgIF9fdTMyIHRvdGFsX2Jsb2NrczsKICAgICAgICBfX3UzMiBmcmVlX2Jsb2NrczsK
ICAgICAgICBfX3UzMiBwdXJnZWFibGVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5vdF95ZXRfcHVy
Z2VhYmxlX2Jsb2NrczsKICAgICAgICBfX3UzMiB0b3RhbF9kaXJfZW50cmllczsKICAgICAgICBf
X3UzMiBhdmFpbGFibGVfZGlyX2VudHJpZXM7CiAgICAgICAgX191OCBzZWN0b3JzX3Blcl9ibG9j
azsKICAgICAgICBjaGFyIHZvbHVtZV9uYW1lWygxNikgKyAxXTsKfTsKIyAxMTIgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbndfaW5mb19zdHJ1Y3Qg
ewogICAgICAgIF9fdTMyIHNwYWNlQWxsb2MgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg
ICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3Ux
NiBmbGFncyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkYXRhU3RyZWFt
U2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiB0b3RhbFN0cmVhbVNp
emUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbnVtYmVyT2ZTdHJlYW1z
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uVGltZSBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191MTYgbW9kaWZ5RGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
ICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2
IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFy
Y2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVE
YXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVySUQgX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGVkUmlnaHRzTWFzayBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkaXJFbnROdW0gX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRG9zRGlyTnVtIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTMyIHZvbE51bWJlciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3UzMiBFQURhdGFTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTMyIEVBS2V5Q291bnQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIg
RUFLZXlTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIE5TQ3JlYXRv
ciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IG5hbWVMZW4gX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBlbnRyeU5hbWVbMjU2XSBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKfTsKIyAxNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L25jcC5oIgpzdHJ1Y3QgbndfbW9kaWZ5X2Rvc19pbmZvIHsKICAgICAgICBfX3UzMiBhdHRyaWJ1
dGVzIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uRGF0ZSBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvblRpbWUgX19hdHRy
aWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeURhdGUgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgbW9kaWZ5VGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f
dTE2IGFyY2hpdmVEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFy
Y2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVy
SUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUg
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VHcmFudE1h
c2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VSZXZv
a2VNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG1heGltdW1TcGFj
ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKCnN0cnVjdCBud19zZWFyY2hfc2VxdWVuY2Ug
ewogICAgICAgIF9fdTggdm9sTnVtYmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTMyIGRpckJhc2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgc2Vx
dWVuY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAyCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIgpzdHJ1Y3QgbmNwX21vdW50X2RhdGEgewog
ICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAg
X19rZXJuZWxfdWlkX3QgbW91bnRlZF91aWQ7CiAgICAgICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19w
aWQ7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92b2xbKDE2KSArIDFdOwogICAgICAg
IHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2NvdW50
OwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlk
OwogICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZmls
ZV9tb2RlOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBkaXJfbW9kZTsKfTsKCgoKc3RydWN0IG5j
cF9tb3VudF9kYXRhX3Y0IHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBs
b25nIGZsYWdzOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtb3VudGVkX3VpZDsKCiAgICAgICAg
bG9uZyB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICB1bnNp
Z25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2lnbmVkIGludCByZXRyeV9jb3VudDsKCgoK
ICAgICAgICB1bnNpZ25lZCBsb25nIHVpZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGdpZDsKCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBmaWxlX21vZGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkaXJf
bW9kZTsKfTsKCgoKc3RydWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgaW50X2ZsYWdzOwoKICAgICAgICBf
X2tlcm5lbF91aWQzMl90IG1vdW50ZWRfdWlkOwogICAgICAgIF9fa2VybmVsX3BpZF90IHdkb2df
cGlkOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRp
bWVfb3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCB1
aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90
IGZpbGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZGlyX21vZGU7Cn07CiMgMTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5oIiAyCgoKCgoKc3Ry
dWN0IG5jcF9zZXJ2ZXIgewoKICAgICAgICBzdHJ1Y3QgbmNwX21vdW50X2RhdGFfa2VybmVsIG07
CgoKCiAgICAgICAgX191OCBuYW1lX3NwYWNlWyg2NCkgKyAyXTsKCiAgICAgICAgc3RydWN0IGZp
bGUgKm5jcF9maWxwOwoKICAgICAgICB1OCBzZXF1ZW5jZTsKICAgICAgICB1OCB0YXNrOwogICAg
ICAgIHUxNiBjb25uZWN0aW9uOwoKICAgICAgICB1OCBjb21wbGV0aW9uOwogICAgICAgIHU4IGNv
bm5fc3RhdHVzOwoKCgogICAgICAgIGludCBidWZmZXJfc2l6ZTsKCiAgICAgICAgaW50IHJlcGx5
X3NpemU7CgogICAgICAgIGludCBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpw
YWNrZXQ7CgoKICAgICAgICBpbnQgbG9jazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsK
CiAgICAgICAgaW50IGN1cnJlbnRfc2l6ZTsKICAgICAgICBpbnQgaGFzX3N1YmZ1bmN0aW9uOwog
ICAgICAgIGludCBuY3BfcmVwbHlfc2l6ZTsKCiAgICAgICAgaW50IHJvb3Rfc2V0dXBlZDsKCgog
ICAgICAgIGludCBzaWduX3dhbnRlZDsKICAgICAgICBpbnQgc2lnbl9hY3RpdmU7CiAgICAgICAg
Y2hhciBzaWduX3Jvb3RbOF07CiAgICAgICAgY2hhciBzaWduX2xhc3RbMTZdOwoKCiAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgIGludCBhdXRoX3R5cGU7CiAgICAgICAgICAgICAgICBz
aXplX3Qgb2JqZWN0X25hbWVfbGVuOwogICAgICAgICAgICAgICAgdm9pZCogb2JqZWN0X25hbWU7
CiAgICAgICAgICAgICAgICBpbnQgb2JqZWN0X3R5cGU7CiAgICAgICAgfSBhdXRoOwoKICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgIHZv
aWQqIGRhdGE7CiAgICAgICAgfSBwcml2OwoKCiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxz
X3ZvbDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfaW87CgoKICAgICAgICBpbnQgZGVu
dHJ5X3R0bDsKCgogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKfTsKIyA5MiAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiCnN0YXRpYyBpbmxpbmUgaW50
IG5jcF9jb25uX3ZhbGlkKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICByZXR1
cm4gKChzZXJ2ZXItPmNvbm5fc3RhdHVzICYgMHgxMSkgPT0gMCk7Cn0KCnN0YXRpYyBpbmxpbmUg
dm9pZCBuY3BfaW52YWxpZGF0ZV9jb25uKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAg
ICAgICBzZXJ2ZXItPmNvbm5fc3RhdHVzIHw9IDB4MDE7Cn0KIyA3MDggIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC91c2JkZXZfZnNfc2IuaCIgMQpzdHJ1Y3QgdXNiZGV2X3NiX2luZm8gewog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBp
bGlzdDsKICAgICAgICB1aWRfdCBkZXZ1aWQ7CiAgICAgICAgZ2lkX3QgZGV2Z2lkOwogICAgICAg
IHVtb2RlX3QgZGV2bW9kZTsKICAgICAgICB1aWRfdCBidXN1aWQ7CiAgICAgICAgZ2lkX3QgYnVz
Z2lkOwogICAgICAgIHVtb2RlX3QgYnVzbW9kZTsKICAgICAgICB1aWRfdCBsaXN0dWlkOwogICAg
ICAgIGdpZF90IGxpc3RnaWQ7CiAgICAgICAgdW1vZGVfdCBsaXN0bW9kZTsKfTsKIyA3MDkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMQoKCgoKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDEKIyAxMyAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIgpzdHJ1Y3Qg
Y29tcGxldGlvbiB7CiAgICAgICAgdW5zaWduZWQgaW50IGRvbmU7CiAgICAgICAgd2FpdF9xdWV1
ZV9oZWFkX3Qgd2FpdDsKfTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2NvbXBsZXRp
b24oc3RydWN0IGNvbXBsZXRpb24gKngpCnsKICAgICAgICB4LT5kb25lID0gMDsKICAgICAgICBp
bml0X3dhaXRxdWV1ZV9oZWFkKCZ4LT53YWl0KTsKfQoKZXh0ZXJuIHZvaWQgd2FpdF9mb3JfY29t
cGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CmV4dGVybiB2b2lkIGNvbXBsZXRlKHN0cnVjdCBjb21wbGV0aW9uICopIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9q
ZmZzMl9mc19zYi5oIiAyCiMgMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXRk
X2luZm8gKm10ZDsKCiAgICAgICAgX191MzIgaGlnaGVzdF9pbm87CiAgICAgICAgdW5zaWduZWQg
aW50IGZsYWdzOwogICAgICAgIHNwaW5sb2NrX3Qgbm9kZWxpc3RfbG9jazsKCgogICAgICAgIHN0
cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFzazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGdjX3Ro
cmVhZF9zdGFydDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiBnY190aHJlYWRfZXhpdDsKCgoK
ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGFsbG9jX3NlbTsKCgoKCiAgICAgICAgX191MzIgZmxh
c2hfc2l6ZTsKICAgICAgICBfX3UzMiB1c2VkX3NpemU7CiAgICAgICAgX191MzIgZGlydHlfc2l6
ZTsKICAgICAgICBfX3UzMiBmcmVlX3NpemU7CiAgICAgICAgX191MzIgZXJhc2luZ19zaXplOwog
ICAgICAgIF9fdTMyIGJhZF9zaXplOwogICAgICAgIF9fdTMyIHNlY3Rvcl9zaXplOwoKCgogICAg
ICAgIF9fdTMyIG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5yX2VyYXNpbmdfYmxvY2tz
OwoKICAgICAgICBfX3UzMiBucl9ibG9ja3M7CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxv
Y2sgKmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKm5leHRibG9jazsK
CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxvY2s7CgogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X2xp
c3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBl
cmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0Owog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVyYXNlX2NvbXBsZXRpb25fbG9j
azsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2FpdDsKICAgICAgICBzdHJ1Y3Qg
amZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlX2xpc3RbMV07CiAgICAgICAgc3BpbmxvY2tfdCBp
bm9jYWNoZV9sb2NrOwp9OwojIDcxMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgc3VwZXJfYmxvY2tzOwpleHRlcm4g
c3BpbmxvY2tfdCBzYl9sb2NrOwoKCgpzdHJ1Y3Qgc3VwZXJfYmxvY2sgewogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgc19saXN0OwogICAgICAgIGtkZXZfdCBzX2RldjsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfYmxvY2tzaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ibG9ja3NpemVfYml0
czsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfZGlydDsKICAgICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgc19tYXhieXRlczsKICAgICAgICBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqc190eXBlOwog
ICAgICAgIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zICpzX29wOwogICAgICAgIHN0cnVjdCBkcXVv
dF9vcGVyYXRpb25zICpkcV9vcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZmxhZ3M7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzX21hZ2ljOwogICAgICAgIHN0cnVjdCBkZW50cnkgKnNfcm9vdDsK
ICAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIHNfdW1vdW50OwogICAgICAgIHN0cnVjdCBzZW1h
cGhvcmUgc19sb2NrOwogICAgICAgIGludCBzX2NvdW50OwogICAgICAgIGF0b21pY190IHNfYWN0
aXZlOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZGlydHk7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBzX2xvY2tlZF9pbm9kZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2ZpbGVz
OwoKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpzX2JkZXY7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBzX2luc3RhbmNlczsKICAgICAgICBzdHJ1Y3QgcXVvdGFfbW91bnRfb3B0aW9ucyBz
X2RxdW90OwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbWluaXhfc2Jf
aW5mbyBtaW5peF9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQyX3NiX2luZm8gZXh0Ml9z
YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQzX3NiX2luZm8gZXh0M19zYjsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBocGZzX3NiX2luZm8gaHBmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVj
dCBudGZzX3NiX2luZm8gbnRmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rvc19zYl9p
bmZvIG1zZG9zX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGlzb2ZzX3NiX2luZm8gaXNvZnNf
c2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX3NiX2luZm8gbmZzX3NiOwogICAgICAgICAg
ICAgICAgc3RydWN0IHN5c3Zfc2JfaW5mbyBzeXN2X3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IGFmZnNfc2JfaW5mbyBhZmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHVmc19zYl9pbmZv
IHVmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBlZnNfc2JfaW5mbyBlZnNfc2I7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc2htZW1fc2JfaW5mbyBzaG1lbV9zYjsKICAgICAgICAgICAgICAg
IHN0cnVjdCByb21mc19zYl9pbmZvIHJvbWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHNt
Yl9zYl9pbmZvIHNtYmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGhmc19zYl9pbmZvIGhm
c19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZGZzX3NiX2luZm8gYWRmc19zYjsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBxbng0X3NiX2luZm8gcW54NF9zYjsKICAgICAgICAgICAgICAgIHN0
cnVjdCByZWlzZXJmc19zYl9pbmZvIHJlaXNlcmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IGJmc19zYl9pbmZvIGJmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfc2JfaW5mbyB1
ZGZfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmNwX3NlcnZlciBuY3Bmc19zYjsKICAgICAg
ICAgICAgICAgIHN0cnVjdCB1c2JkZXZfc2JfaW5mbyB1c2JkZXZmc19zYjsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBqZmZzMl9zYl9pbmZvIGpmZnMyX3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IGNyYW1mc19zYl9pbmZvIGNyYW1mc19zYjsKICAgICAgICAgICAgICAgIHZvaWQgKmdlbmVyaWNf
c2JwOwogICAgICAgIH0gdTsKCgoKCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX3Zmc19yZW5h
bWVfc2VtOwojIDc4NCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIK
ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbmZzZF9mcmVlX3BhdGhfc2VtOwoKICAgICAgICBp
bnQgc19tZWRpYV9jaGFuZ2VkOwoKfTsKCgoKCmV4dGVybiBpbnQgdmZzX2NyZWF0ZShzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IHZmc19ta2RpcihzdHJ1
Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IHZmc19ta25vZChz
dHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQsIGRldl90KTsKZXh0ZXJuIGludCB2
ZnNfc3ltbGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBjb25zdCBjaGFyICop
OwpleHRlcm4gaW50IHZmc19saW5rKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICosIHN0
cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3JtZGlyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IHZmc191bmxpbmsoc3RydWN0IGlub2RlICosIHN0cnVj
dCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKCnN0cnVjdCBrc3Rh
dCB7CiAgICAgICAgaW5vX3QgaW5vOwogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIGRl
dl90IGRldjsKICAgICAgICB1bW9kZV90IG1vZGU7CiAgICAgICAgbmxpbmtfdCBubGluazsKICAg
ICAgICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkOwogICAgICAgIGRldl90IHJkZXY7CiAg
ICAgICAgbG9mZl90IHNpemU7CiAgICAgICAgdGltZV90IGF0aW1lOwogICAgICAgIHRpbWVfdCBt
dGltZTsKICAgICAgICB0aW1lX3QgY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBibGtzaXpl
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYmxvY2tzOwp9OwojIDgzOCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvZnMuaCIKdHlwZWRlZiBpbnQgKCpmaWxsZGlyX3QpKHZvaWQg
KiwgY29uc3QgY2hhciAqLCBpbnQsIGxvZmZfdCwgaW5vX3QsIHVuc2lnbmVkKTsKCnN0cnVjdCBi
bG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9k
ZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2Rl
ICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICos
IHN0cnVjdCBmaWxlICosIHVuc2lnbmVkLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBpbnQgKCpj
aGVja19tZWRpYV9jaGFuZ2UpIChrZGV2X3QpOwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChr
ZGV2X3QpOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIGludCAoKm1lZGlh
Y3RsKSAoa2Rldl90IGRldiwgaW50IG9wLCBpbnQgb3B0YXJnKTsKfTsKCgoKCgplbnVtIHsKICAg
ICAgICBNRURJQV9MT0NLID0gMTIzNCwKICAgICAgICBNRURJQV9VTkxPQ0sKfTsKCgoKCgoKc3Ry
dWN0IGZpbGVfb3BlcmF0aW9ucyB7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXI7CiAgICAg
ICAgbG9mZl90ICgqbGxzZWVrKSAoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQpOwogICAgICAg
IHNzaXplX3QgKCpyZWFkKSAoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAq
KTsKICAgICAgICBzc2l6ZV90ICgqd3JpdGUpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICos
IHNpemVfdCwgbG9mZl90ICopOwogICAgICAgIGludCAoKnJlYWRkaXIpIChzdHJ1Y3QgZmlsZSAq
LCB2b2lkICosIGZpbGxkaXJfdCk7CiAgICAgICAgdW5zaWduZWQgaW50ICgqcG9sbCkgKHN0cnVj
dCBmaWxlICosIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqKTsKICAgICAgICBpbnQgKCppb2N0
bCkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVk
IGxvbmcpOwogICAgICAgIGludCAoKm1tYXApIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qgdm1fYXJl
YV9zdHJ1Y3QgKik7CiAgICAgICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
ZmlsZSAqKTsKICAgICAgICBpbnQgKCpmbHVzaCkgKHN0cnVjdCBmaWxlICopOwogICAgICAgIGlu
dCAoKnJlbGVhc2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50
ICgqZnN5bmMpIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCBkYXRhc3luYyk7
CiAgICAgICAgaW50ICgqZmFzeW5jKSAoaW50LCBzdHJ1Y3QgZmlsZSAqLCBpbnQpOwogICAgICAg
IGludCAoKmxvY2spIChzdHJ1Y3QgZmlsZSAqLCBpbnQsIHN0cnVjdCBmaWxlX2xvY2sgKik7CiAg
ICAgICAgc3NpemVfdCAoKnJlYWR2KSAoc3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IGlvdmVj
ICosIHVuc2lnbmVkIGxvbmcsIGxvZmZfdCAqKTsKICAgICAgICBzc2l6ZV90ICgqd3JpdGV2KSAo
c3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IGlvdmVjICosIHVuc2lnbmVkIGxvbmcsIGxvZmZf
dCAqKTsKICAgICAgICBzc2l6ZV90ICgqc2VuZHBhZ2UpIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qg
cGFnZSAqLCBpbnQsIHNpemVfdCwgbG9mZl90ICosIGludCk7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyAoKmdldF91bm1hcHBlZF9hcmVhKShzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKfTsKCnN0cnVjdCBpbm9k
ZV9vcGVyYXRpb25zIHsKICAgICAgICBpbnQgKCpjcmVhdGUpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1
Y3QgZGVudHJ5ICosaW50KTsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogKCpsb29rdXApIChzdHJ1
Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKmxpbmspIChzdHJ1Y3Qg
ZGVudHJ5ICosc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICBpbnQgKCp1
bmxpbmspIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnN5
bWxpbmspIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosY29uc3QgY2hhciAqKTsKICAg
ICAgICBpbnQgKCpta2RpcikgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQpOwog
ICAgICAgIGludCAoKnJtZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqKTsKICAg
ICAgICBpbnQgKCpta25vZCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQsaW50
KTsKICAgICAgICBpbnQgKCpyZW5hbWUpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAq
LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAq
KTsKICAgICAgICBpbnQgKCpyZWFkbGluaykgKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLGludCk7
CiAgICAgICAgaW50ICgqZm9sbG93X2xpbmspIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBuYW1l
aWRhdGEgKik7CiAgICAgICAgdm9pZCAoKnRydW5jYXRlKSAoc3RydWN0IGlub2RlICopOwogICAg
ICAgIGludCAoKnBlcm1pc3Npb24pIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKICAgICAgICBpbnQg
KCpyZXZhbGlkYXRlKSAoc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICBpbnQgKCpzZXRhdHRyKSAo
c3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7CiAgICAgICAgaW50ICgqZ2V0YXR0cikg
KHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBrc3RhdCAqKTsKICAg
ICAgICBpbnQgKCpzZXR4YXR0cikgKHN0cnVjdCBkZW50cnkgKiwgY29uc3QgY2hhciAqLCB2b2lk
ICosIHNpemVfdCwgaW50KTsKICAgICAgICBzc2l6ZV90ICgqZ2V0eGF0dHIpIChzdHJ1Y3QgZGVu
dHJ5ICosIGNvbnN0IGNoYXIgKiwgdm9pZCAqLCBzaXplX3QpOwogICAgICAgIHNzaXplX3QgKCps
aXN0eGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgc2l6ZV90KTsKICAgICAgICBpbnQg
KCpyZW1vdmV4YXR0cikgKHN0cnVjdCBkZW50cnkgKiwgY29uc3QgY2hhciAqKTsKfTsKCnN0cnVj
dCBzZXFfZmlsZTsKCgoKCgpzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyB7CiAgICAgICAgc3RydWN0
IGlub2RlICooKmFsbG9jX2lub2RlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKICAgICAgICB2
b2lkICgqZGVzdHJveV9pbm9kZSkoc3RydWN0IGlub2RlICopOwoKICAgICAgICB2b2lkICgqcmVh
ZF9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKCgoKCgoKCiAgICAgICAgdm9pZCAoKnJlYWRfaW5v
ZGUyKSAoc3RydWN0IGlub2RlICosIHZvaWQgKikgOwogICAgICAgIHZvaWQgKCpkaXJ0eV9pbm9k
ZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfaW5vZGUpIChzdHJ1Y3Qg
aW5vZGUgKiwgaW50KTsKICAgICAgICB2b2lkICgqcHV0X2lub2RlKSAoc3RydWN0IGlub2RlICop
OwogICAgICAgIHZvaWQgKCpkZWxldGVfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAg
dm9pZCAoKnB1dF9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgq
d3JpdGVfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiAgICAgICAgaW50ICgqc3luY19m
cykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9j
a2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp1bmxvY2tmcykgKHN0
cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICBpbnQgKCpzdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKiwgc3RydWN0IHN0YXRmcyAqKTsKICAgICAgICBpbnQgKCpyZW1vdW50X2ZzKSAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICosIGludCAqLCBjaGFyICopOwogICAgICAgIHZvaWQgKCpjbGVhcl9p
bm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqdW1vdW50X2JlZ2luKSAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICopOwojIDk2NCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvZnMuaCIKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogKCpmaF90b19kZW50cnkpKHN0cnVj
dCBzdXBlcl9ibG9jayAqc2IsIF9fdTMyICpmaCwgaW50IGxlbiwgaW50IGZodHlwZSwgaW50IHBh
cmVudCk7CiAgICAgICAgaW50ICgqZGVudHJ5X3RvX2ZoKShzdHJ1Y3QgZGVudHJ5ICosIF9fdTMy
ICpmaCwgaW50ICpsZW5wLCBpbnQgbmVlZF9wYXJlbnQpOwogICAgICAgIGludCAoKnNob3dfb3B0
aW9ucykoc3RydWN0IHNlcV9maWxlICosIHN0cnVjdCB2ZnNtb3VudCAqKTsKfTsKIyA5NzkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiB2b2lkIF9fbWFy
a19pbm9kZV9kaXJ0eShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKc3RhdGljIGlubGluZSB2b2lkIG1h
cmtfaW5vZGVfZGlydHkoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19pbm9k
ZV9kaXJ0eShpbm9kZSwgKDEgfCAyIHwgNCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19p
bm9kZV9kaXJ0eV9zeW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5v
ZGVfZGlydHkoaW5vZGUsIDEpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19pbm9kZV9kaXJ0
eV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lub2RlX2RpcnR5
KGlub2RlLCA0KTsKfQoKc3RydWN0IGRxdW90X29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCpp
bml0aWFsaXplKSAoc3RydWN0IGlub2RlICosIHNob3J0KTsKICAgICAgICB2b2lkICgqZHJvcCkg
KHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICBpbnQgKCphbGxvY19ibG9jaykgKHN0cnVjdCBpbm9k
ZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyKTsKICAgICAgICBpbnQgKCphbGxvY19pbm9kZSkgKGNv
bnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICB2b2lkICgqZnJlZV9i
bG9jaykgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICB2b2lkICgqZnJl
ZV9pbm9kZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBp
bnQgKCp0cmFuc2ZlcikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgpzdHJ1
Y3QgZmlsZV9zeXN0ZW1fdHlwZSB7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICBp
bnQgZnNfZmxhZ3M7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICooKnJlYWRfc3VwZXIpIChz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdm9pZCAqLCBpbnQpOwogICAgICAgIHN0cnVjdCBtb2R1bGUg
Km93bmVyOwogICAgICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICogbmV4dDsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGZzX3N1cGVyczsKfTsKIyAxMDM3ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gaW50IHJlZ2lzdGVyX2ZpbGVzeXN0ZW0oc3Ry
dWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9maWxlc3lzdGVt
KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50ICprZXJu
X21vdW50KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gaW50IG1heV91bW91bnQo
c3RydWN0IHZmc21vdW50ICopOwpleHRlcm4gbG9uZyBkb19tb3VudChjaGFyICosIGNoYXIgKiwg
Y2hhciAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50ICpk
b19rZXJuX21vdW50KGNvbnN0IGNoYXIgKnR5cGUsIGludCBmbGFncywgY2hhciAqbmFtZSwgdm9p
ZCAqZGF0YSk7CmV4dGVybiBpbnQgZG9fcmVtb3VudF9zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi
LCBpbnQgZmxhZ3MsIHZvaWQgKiBkYXRhKTsKCgoKZXh0ZXJuIGludCB2ZnNfc3RhdGZzKHN0cnVj
dCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qgc3RhdGZzICopOwojIDEwNTcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5X2xv
Y2tlZChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5X2FyZWEoaW50
LCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgbG9mZl90LCBzaXplX3QpOwojIDEwNjcg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUg
aW50IGxvY2tzX3ZlcmlmeV9sb2NrZWQoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIGlm
ICgoKChpbm9kZSktPmlfc2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYg
KDAwMDIwMDAgfCAwMDAxMCkpID09IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxv
Y2tzX21hbmRhdG9yeV9sb2NrZWQoaW5vZGUpOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMg
aW5saW5lIGludCBsb2Nrc192ZXJpZnlfYXJlYShpbnQgcmVhZF93cml0ZSwgc3RydWN0IGlub2Rl
ICppbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZpbGUg
KmZpbHAsIGxvZmZfdCBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBjb3VudCkKewogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoKChpbm9kZSkt
Pmlfc2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAw
MDAxMCkpID09IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9y
eV9hcmVhKHJlYWRfd3JpdGUsIGlub2RlLCBmaWxwLCBvZmZzZXQsIGNvdW50KTsKICAgICAgICBy
ZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3NfdmVyaWZ5X3RydW5jYXRlKHN0cnVj
dCBpbm9kZSAqaW5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBmaWxlICpmaWxwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2ZmX3Qg
c2l6ZSkKewogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoKChpbm9kZSktPmlfc2ItPnNf
ZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAxMCkpID09
IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9hcmVhKAog
ICAgICAgICAgICAgICAgICAgICAgICAyLCBpbm9kZSwgZmlscCwKICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZSA8IGlub2RlLT5pX3NpemUgPyBzaXplIDogaW5vZGUtPmlfc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgKHNpemUgPCBpbm9kZS0+aV9zaXplID8gaW5vZGUtPmlfc2l6ZSAt
IHNpemUKICAgICAgICAgICAgICAgICAgICAgICAgIDogc2l6ZSAtIGlub2RlLT5pX3NpemUpCiAg
ICAgICAgICAgICAgICApOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBn
ZXRfbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgaW50IG1vZGUpCnsKICAgICAg
ICBpZiAoaW5vZGUtPmlfZmxvY2spCiAgICAgICAgICAgICAgICByZXR1cm4gX19nZXRfbGVhc2Uo
aW5vZGUsIG1vZGUpOwogICAgICAgIHJldHVybiAwOwp9CgoKCiBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDApKSkgbG9uZyBzeXNfb3Blbihjb25zdCBjaGFyICosIGludCwgaW50KTsKIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19jbG9zZSh1bnNpZ25lZCBpbnQpOwpleHRlcm4g
aW50IGRvX3RydW5jYXRlKHN0cnVjdCBkZW50cnkgKiwgbG9mZl90IHN0YXJ0KTsKCmV4dGVybiBz
dHJ1Y3QgZmlsZSAqZmlscF9vcGVuKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwpleHRlcm4gc3Ry
dWN0IGZpbGUgKiBkZW50cnlfb3BlbihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAq
LCBpbnQpOwpleHRlcm4gaW50IGZpbHBfY2xvc2Uoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCBp
ZCk7CmV4dGVybiBjaGFyICogZ2V0bmFtZShjb25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lkIHZm
c19jYWNoZXNfaW5pdCh1bnNpZ25lZCBsb25nKTsKCgoKCmVudW0ge0JERVZfRklMRSwgQkRFVl9T
V0FQLCBCREVWX0ZTLCBCREVWX1JBV307CmV4dGVybiBpbnQgcmVnaXN0ZXJfYmxrZGV2KHVuc2ln
bmVkIGludCwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgKik7
CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICop
OwpleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRnZXQoZGV2X3QpOwpleHRlcm4gaW50IGJk
X2FjcXVpcmUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiB2b2lkIGJkX2ZvcmdldChzdHJ1
Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZvaWQgYmRwdXQoc3RydWN0IGJsb2NrX2RldmljZSAq
KTsKZXh0ZXJuIHN0cnVjdCBjaGFyX2RldmljZSAqY2RnZXQoZGV2X3QpOwpleHRlcm4gdm9pZCBj
ZHB1dChzdHJ1Y3QgY2hhcl9kZXZpY2UgKik7CmV4dGVybiBpbnQgYmxrZGV2X29wZW4oc3RydWN0
IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gaW50IGJsa2Rldl9jbG9zZShzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRl
Zl9ibGtfZm9wczsKZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgZGVmX2Js
a19hb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfZmlmb19mb3BzOwpleHRl
cm4gaW50IGlvY3RsX2J5X2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAqLCB1bnNpZ25lZCwgdW5z
aWduZWQgbG9uZyk7CmV4dGVybiBpbnQgYmxrZGV2X2dldChzdHJ1Y3QgYmxvY2tfZGV2aWNlICos
IG1vZGVfdCwgdW5zaWduZWQsIGludCk7CmV4dGVybiBpbnQgYmxrZGV2X3B1dChzdHJ1Y3QgYmxv
Y2tfZGV2aWNlICosIGludCk7CgoKZXh0ZXJuIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3Bl
cmF0aW9ucyAqZ2V0X2Jsa2ZvcHModW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCByZWdpc3Rlcl9j
aHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg
Kik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFy
ICopOwpleHRlcm4gaW50IGNocmRldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAq
KTsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBiZGV2bmFtZShrZGV2X3QpOwpleHRlcm4gY29uc3QgY2hh
ciAqIGNkZXZuYW1lKGtkZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWUoa2Rldl90
KTsKZXh0ZXJuIHZvaWQgaW5pdF9zcGVjaWFsX2lub2RlKHN0cnVjdCBpbm9kZSAqLCB1bW9kZV90
LCBpbnQpOwoKCmV4dGVybiB2b2lkIG1ha2VfYmFkX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKZXh0
ZXJuIGludCBpc19iYWRfaW5vZGUoc3RydWN0IGlub2RlICopOwoKZXh0ZXJuIHN0cnVjdCBmaWxl
X29wZXJhdGlvbnMgcmVhZF9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z
IHdyaXRlX2ZpZm9fZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmR3cl9maWZv
X2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfcGlwZV9mb3BzOwpleHRl
cm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9waXBlX2ZvcHM7CmV4dGVybiBzdHJ1Y3Qg
ZmlsZV9vcGVyYXRpb25zIHJkd3JfcGlwZV9mb3BzOwoKZXh0ZXJuIGludCBmc19tYXlfcmVtb3Vu
dF9ybyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CgpleHRlcm4gaW50IHRyeV90b19mcmVlX2J1ZmZl
cnMoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgaW50KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CmV4dGVybiB2b2lkIHJlZmlsZV9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICogYnVmKTsK
ZXh0ZXJuIHZvaWQgY3JlYXRlX2VtcHR5X2J1ZmZlcnMoc3RydWN0IHBhZ2UgKiwga2Rldl90LCB1
bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgZW5kX2J1ZmZlcl9pb19zeW5jKHN0cnVjdCBidWZm
ZXJfaGVhZCAqYmgsIGludCB1cHRvZGF0ZSk7CgoKZXh0ZXJuIHZvaWQgc2V0X2J1ZmZlcl9hc3lu
Y19pbyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSA7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBn
ZXRfYmgoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBhdG9taWNfaW5jKCYoYmgp
LT5iX2NvdW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHB1dF9iaChzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJoKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsK
ICAgICAgICBhdG9taWNfZGVjKCZiaC0+Yl9jb3VudCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBtYXJrX2J1ZmZlcl91cHRvZGF0ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50IG9uKQp7
CiAgICAgICAgaWYgKG9uKQogICAgICAgICAgICAgICAgc2V0X2JpdChCSF9VcHRvZGF0ZSwgJmJo
LT5iX3N0YXRlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQoQkhfVXB0
b2RhdGUsICZiaC0+Yl9zdGF0ZSk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9fbWFya19idWZm
ZXJfY2xlYW4oc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIHJlZmlsZV9idWZmZXIo
YmgpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfY2xlYW4oc3RydWN0IGJ1ZmZl
cl9oZWFkICogYmgpCnsKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJIX0RpcnR5LCAm
KGJoKS0+Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX2NsZWFuKGJoKTsK
fQoKZXh0ZXJuIHZvaWQgX19tYXJrX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX19tYXJrX2J1ZmZlcl9kaXJ0eShz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVy
biB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIGJ1ZmZlcl9pbnNlcnRfbGlzdChzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGxpc3RfaGVhZCAqKSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CgpzdGF0aWMgaW5saW5lIHZvaWQgYnVmZmVyX2luc2VydF9pbm9kZV9xdWV1ZShz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgYnVm
ZmVyX2luc2VydF9saXN0KGJoLCAmaW5vZGUtPmlfZGlydHlfYnVmZmVycyk7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCBidWZmZXJfaW5zZXJ0X2lub2RlX2RhdGFfcXVldWUoc3RydWN0IGJ1ZmZlcl9o
ZWFkICpiaCwgc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIGJ1ZmZlcl9pbnNlcnRfbGlz
dChiaCwgJmlub2RlLT5pX2RpcnR5X2RhdGFfYnVmZmVycyk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50
IGF0b21pY19zZXRfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAg
ICByZXR1cm4gdGVzdF9hbmRfc2V0X2JpdChCSF9EaXJ0eSwgJmJoLT5iX3N0YXRlKTsKfQoKc3Rh
dGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX2FzeW5jKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJo
LCBpbnQgb24pCnsKICAgICAgICBpZiAob24pCiAgICAgICAgICAgICAgICBzZXRfYml0KEJIX0Fz
eW5jLCAmYmgtPmJfc3RhdGUpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGNsZWFyX2Jp
dChCSF9Bc3luYywgJmJoLT5iX3N0YXRlKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNldF9idWZm
ZXJfYXR0YWNoZWQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIHNldF9iaXQoQkhf
QXR0YWNoZWQsICZiaC0+Yl9zdGF0ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9idWZm
ZXJfYXR0YWNoZWQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIGNsZWFyX2JpdChC
SF9BdHRhY2hlZCwgJmJoLT5iX3N0YXRlKTsKfQoKc3RhdGljIGlubGluZSBpbnQgYnVmZmVyX2F0
dGFjaGVkKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICByZXR1cm4gKF9fYnVpbHRp
bl9jb25zdGFudF9wKEJIX0F0dGFjaGVkKSA/IGNvbnN0YW50X3Rlc3RfYml0KChCSF9BdHRhY2hl
ZCksKCZiaC0+Yl9zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKEJIX0F0dGFjaGVkKSwoJmJo
LT5iX3N0YXRlKSkpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgYnVmZmVyX0lPX2Vycm9y
KHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7CiAgICAgICAgbWFya19idWZmZXJfY2xlYW4oYmgp
OwoKCgogICAgICAgIGJoLT5iX2VuZF9pbyhiaCwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBt
YXJrX2J1ZmZlcl9kaXJ0eV9pbm9kZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBzdHJ1Y3QgaW5v
ZGUgKmlub2RlKQp7CiAgICAgICAgbWFya19idWZmZXJfZGlydHkoYmgpOwogICAgICAgIGJ1ZmZl
cl9pbnNlcnRfaW5vZGVfcXVldWUoYmgsIGlub2RlKTsKfQoKZXh0ZXJuIHZvaWQgc2V0X2J1ZmZl
cl9mbHVzaHRpbWUoc3RydWN0IGJ1ZmZlcl9oZWFkICopOwpleHRlcm4gdm9pZCBiYWxhbmNlX2Rp
cnR5KHZvaWQpOwpleHRlcm4gaW50IGNoZWNrX2Rpc2tfY2hhbmdlKGtkZXZfdCk7CmV4dGVybiBp
bnQgcXVlcnlfZGlza19jaGFuZ2Uoa2Rldl90IGRldik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVf
bWVkaWEoa2Rldl90IGRldik7CmV4dGVybiBpbnQgaW52YWxpZGF0ZV9pbm9kZXMoc3RydWN0IHN1
cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IGludmFsaWRhdGVfZGV2aWNlKGtkZXZfdCwgaW50KTsK
ZXh0ZXJuIGludCBkZXN0cm95X2RldmljZShrZGV2X3QpOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRl
X2lub2RlX3BhZ2VzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9pbm9k
ZV9wYWdlczIoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVf
aW5vZGVfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9i
ZGV2KHN0cnVjdCBibG9ja19kZXZpY2UgKiwgaW50KTsKZXh0ZXJuIHZvaWQgX19pbnZhbGlkYXRl
X2J1ZmZlcnMoa2Rldl90IGRldiwgaW50KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXMoa2Rldl90
KTsKZXh0ZXJuIHZvaWQgc3luY191bmxvY2tlZF9pbm9kZXModm9pZCk7CmV4dGVybiB2b2lkIHdy
aXRlX2lub2RlX25vdyhzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBzeW5jX2J1ZmZl
cnMoa2Rldl90LCBpbnQpOwpleHRlcm4gdm9pZCBzeW5jX2RldihrZGV2X3QpOwpleHRlcm4gaW50
IGZzeW5jX2RldihrZGV2X3QpOwpleHRlcm4gaW50IGZzeW5jX3N1cGVyKHN0cnVjdCBzdXBlcl9i
bG9jayAqKTsKZXh0ZXJuIGludCBmc3luY19ub19zdXBlcihrZGV2X3QpOwpleHRlcm4gdm9pZCBz
eW5jX2lub2Rlc19zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiBpbnQgZnN5bmNfYnVm
ZmVyc19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKik7CnN0YXRpYyBpbmxpbmUgaW50IGZzeW5jX2lu
b2RlX2J1ZmZlcnMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIHJldHVybiBmc3luY19i
dWZmZXJzX2xpc3QoJmlub2RlLT5pX2RpcnR5X2J1ZmZlcnMpOwp9CnN0YXRpYyBpbmxpbmUgaW50
IGZzeW5jX2lub2RlX2RhdGFfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAg
cmV0dXJuIGZzeW5jX2J1ZmZlcnNfbGlzdCgmaW5vZGUtPmlfZGlydHlfZGF0YV9idWZmZXJzKTsK
fQpleHRlcm4gaW50IGlub2RlX2hhc19idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlu
dCBmaWxlbWFwX2ZkYXRhc3luYyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKZXh0ZXJuIGludCBm
aWxlbWFwX2ZkYXRhd2FpdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKZXh0ZXJuIHZvaWQgc3lu
Y19zdXBlcnMoa2Rldl90IGRldiwgaW50IHdhaXQpOwpleHRlcm4gaW50IGJtYXAoc3RydWN0IGlu
b2RlICosIGludCk7CmV4dGVybiBpbnQgbm90aWZ5X2NoYW5nZShzdHJ1Y3QgZGVudHJ5ICosIHN0
cnVjdCBpYXR0ciAqKTsKZXh0ZXJuIGludCBwZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqLCBpbnQp
OwpleHRlcm4gaW50IHZmc19wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4g
aW50IGdldF93cml0ZV9hY2Nlc3Moc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGRlbnlfd3Jp
dGVfYWNjZXNzKHN0cnVjdCBmaWxlICopOwpzdGF0aWMgaW5saW5lIHZvaWQgcHV0X3dyaXRlX2Fj
Y2VzcyhzdHJ1Y3QgaW5vZGUgKiBpbm9kZSkKewogICAgICAgIGF0b21pY19kZWMoJmlub2RlLT5p
X3dyaXRlY291bnQpOwp9CnN0YXRpYyBpbmxpbmUgdm9pZCBhbGxvd193cml0ZV9hY2Nlc3Moc3Ry
dWN0IGZpbGUgKmZpbGUpCnsKICAgICAgICBpZiAoZmlsZSkKICAgICAgICAgICAgICAgIGF0b21p
Y19pbmMoJmZpbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5pX3dyaXRlY291bnQpOwp9CmV4dGVybiBp
bnQgZG9fcGlwZShpbnQgKik7CgpleHRlcm4gaW50IG9wZW5fbmFtZWkoY29uc3QgY2hhciAqLCBp
bnQsIGludCwgc3RydWN0IG5hbWVpZGF0YSAqKTsKCmV4dGVybiBpbnQga2VybmVsX3JlYWQoc3Ry
dWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywgY2hhciAqLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJu
IHN0cnVjdCBmaWxlICogb3Blbl9leGVjKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGludCBpc19z
dWJkaXIoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW5vX3QgZmlu
ZF9pbm9kZV9udW1iZXIoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKIyAxMzQ2ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIHZv
aWQgKkVSUl9QVFIobG9uZyBlcnJvcikKewogICAgICAgIHJldHVybiAodm9pZCAqKSBlcnJvcjsK
fQoKc3RhdGljIGlubGluZSBsb25nIFBUUl9FUlIoY29uc3Qgdm9pZCAqcHRyKQp7CiAgICAgICAg
cmV0dXJuIChsb25nKSBwdHI7Cn0KCnN0YXRpYyBpbmxpbmUgbG9uZyBJU19FUlIoY29uc3Qgdm9p
ZCAqcHRyKQp7CiAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKXB0ciA+ICh1bnNpZ25lZCBs
b25nKS0xMDAwTDsKfQojIDEzNzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L2ZzLmgiCmVudW0ge0xBU1RfTk9STSwgTEFTVF9ST09ULCBMQVNUX0RPVCwgTEFTVF9ET1RET1Qs
IExBU1RfQklORH07CiMgMTM4OCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
ZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHNpemVfdCB3cml0dGVuOwogICAgICAgIHNp
emVfdCBjb3VudDsKICAgICAgICBjaGFyICogYnVmOwogICAgICAgIGludCBlcnJvcjsKfSByZWFk
X2Rlc2NyaXB0b3JfdDsKCnR5cGVkZWYgaW50ICgqcmVhZF9hY3Rvcl90KShyZWFkX2Rlc2NyaXB0
b3JfdCAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKCgpl
eHRlcm4gbG9mZl90IGRlZmF1bHRfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zm
c2V0LCBpbnQgb3JpZ2luKTsKCmV4dGVybiBpbnQgX191c2VyX3dhbGsoY29uc3QgY2hhciAqLCB1
bnNpZ25lZCwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CmV4dGVybiBpbnQgcGF0aF9pbml0KGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1l
aWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gaW50IHBhdGhfd2Fs
ayhjb25zdCBjaGFyICosIHN0cnVjdCBuYW1laWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFy
bSgzKSkpOwpleHRlcm4gaW50IHBhdGhfbG9va3VwKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0
cnVjdCBuYW1laWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gaW50
IGxpbmtfcGF0aF93YWxrKGNvbnN0IGNoYXIgKiwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHBhdGhfcmVsZWFzZShzdHJ1Y3QgbmFt
ZWlkYXRhICopOwpleHRlcm4gaW50IGZvbGxvd19kb3duKHN0cnVjdCB2ZnNtb3VudCAqKiwgc3Ry
dWN0IGRlbnRyeSAqKik7CmV4dGVybiBpbnQgZm9sbG93X3VwKHN0cnVjdCB2ZnNtb3VudCAqKiwg
c3RydWN0IGRlbnRyeSAqKik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogbG9va3VwX29uZV9sZW4o
Y29uc3QgY2hhciAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5
ICogbG9va3VwX2hhc2goc3RydWN0IHFzdHIgKiwgc3RydWN0IGRlbnRyeSAqKTsKCgoKZXh0ZXJu
IHZvaWQgaW5vZGVfaW5pdF9vbmNlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgaXB1dChz
dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGZvcmNlX2RlbGV0ZShzdHJ1Y3QgaW5vZGUgKik7
CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBpZ3JhYihzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9f
dCBpdW5pcXVlKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbm9fdCk7Cgp0eXBlZGVmIGludCAoKmZp
bmRfaW5vZGVfdCkoc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CmV4dGVy
biBzdHJ1Y3QgaW5vZGUgKiBpZ2V0NChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQgbG9u
ZywgZmluZF9pbm9kZV90LCB2b2lkICopOwpzdGF0aWMgaW5saW5lIHN0cnVjdCBpbm9kZSAqaWdl
dChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubykKewogICAgICAgIHJl
dHVybiBpZ2V0NChzYiwgaW5vLCAoKHZvaWQgKikwKSwgKCh2b2lkICopMCkpOwp9CgpleHRlcm4g
dm9pZCBjbGVhcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKm5l
d19pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX3N1aWQo
c3RydWN0IGlub2RlICppbm9kZSk7CgpleHRlcm4gdm9pZCBpbnNlcnRfaW5vZGVfaGFzaChzdHJ1
Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHJlbW92ZV9pbm9kZV9oYXNoKHN0cnVjdCBpbm9kZSAq
KTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogZ2V0X2VtcHR5X2ZpbHAodm9pZCk7CmV4dGVybiB2b2lk
IGZpbGVfbW92ZShzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7CmV4dGVy
biBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBnZXRfaGFzaF90YWJsZShrZGV2X3QsIGludCwgaW50KTsK
ZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIGdldGJsayhrZGV2X3QsIGludCwgaW50KTsKZXh0
ZXJuIHZvaWQgbGxfcndfYmxvY2soaW50LCBpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoW10p
OwpleHRlcm4gdm9pZCBzdWJtaXRfYmgoaW50LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CmV4dGVy
biBpbnQgaXNfcmVhZF9vbmx5KGtkZXZfdCk7CmV4dGVybiB2b2lkIF9fYnJlbHNlKHN0cnVjdCBi
dWZmZXJfaGVhZCAqKTsKc3RhdGljIGlubGluZSB2b2lkIGJyZWxzZShzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJ1ZikKewogICAgICAgIGlmIChidWYpCiAgICAgICAgICAgICAgICBfX2JyZWxzZShidWYp
Owp9CmV4dGVybiB2b2lkIF9fYmZvcmdldChzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CnN0YXRpYyBp
bmxpbmUgdm9pZCBiZm9yZ2V0KHN0cnVjdCBidWZmZXJfaGVhZCAqYnVmKQp7CiAgICAgICAgaWYg
KGJ1ZikKICAgICAgICAgICAgICAgIF9fYmZvcmdldChidWYpOwp9CmV4dGVybiBpbnQgc2V0X2Js
b2Nrc2l6ZShrZGV2X3QsIGludCk7CmV4dGVybiBpbnQgc2Jfc2V0X2Jsb2Nrc2l6ZShzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKiwgaW50KTsKZXh0ZXJuIGludCBzYl9taW5fYmxvY2tzaXplKHN0cnVjdCBz
dXBlcl9ibG9jayAqLCBpbnQpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogYnJlYWQoa2Rl
dl90LCBpbnQsIGludCk7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2JfYnJl
YWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAgICAgcmV0dXJuIGJy
ZWFkKHNiLT5zX2RldiwgYmxvY2ssIHNiLT5zX2Jsb2Nrc2l6ZSk7Cn0Kc3RhdGljIGlubGluZSBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiBzYl9nZXRibGsoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50
IGJsb2NrKQp7CiAgICAgICAgcmV0dXJuIGdldGJsayhzYi0+c19kZXYsIGJsb2NrLCBzYi0+c19i
bG9ja3NpemUpOwp9CnN0YXRpYyBpbmxpbmUgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2JfZ2V0X2hh
c2hfdGFibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAgICAgcmV0
dXJuIGdldF9oYXNoX3RhYmxlKHNiLT5zX2RldiwgYmxvY2ssIHNiLT5zX2Jsb2Nrc2l6ZSk7Cn0K
ZXh0ZXJuIHZvaWQgd2FrZXVwX2JkZmx1c2godm9pZCk7CmV4dGVybiB2b2lkIHB1dF91bnVzZWRf
YnVmZmVyX2hlYWQoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpOwpleHRlcm4gc3RydWN0IGJ1ZmZl
cl9oZWFkICogZ2V0X3VudXNlZF9idWZmZXJfaGVhZChpbnQgYXN5bmMpOwoKZXh0ZXJuIGludCBi
cndfcGFnZShpbnQsIHN0cnVjdCBwYWdlICosIGtkZXZfdCwgaW50IFtdLCBpbnQpOwoKdHlwZWRl
ZiBpbnQgKGdldF9ibG9ja190KShzdHJ1Y3QgaW5vZGUqLGxvbmcsc3RydWN0IGJ1ZmZlcl9oZWFk
KixpbnQpOwoKCmV4dGVybiBpbnQgdHJ5X3RvX3JlbGVhc2VfcGFnZShzdHJ1Y3QgcGFnZSAqIHBh
Z2UsIGludCBnZnBfbWFzayk7CmV4dGVybiBpbnQgZGlzY2FyZF9iaF9wYWdlKHN0cnVjdCBwYWdl
ICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgoKZXh0ZXJuIGludCBibG9ja19zeW1saW5rKHN0cnVj
dCBpbm9kZSAqLCBjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgYmxvY2tfd3JpdGVfZnVs
bF9wYWdlKHN0cnVjdCBwYWdlKiwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBibG9ja19yZWFk
X2Z1bGxfcGFnZShzdHJ1Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxvY2tf
cHJlcGFyZV93cml0ZShzdHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNpZ25lZCwgZ2V0X2Jsb2Nr
X3QqKTsKZXh0ZXJuIGludCBjb250X3ByZXBhcmVfd3JpdGUoc3RydWN0IHBhZ2UqLCB1bnNpZ25l
ZCwgdW5zaWduZWQsIGdldF9ibG9ja190KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nICopOwpleHRlcm4gaW50IGdlbmVyaWNfY29udF9leHBhbmQoc3RydWN0
IGlub2RlICppbm9kZSwgbG9mZl90IHNpemUpIDsKZXh0ZXJuIGludCBibG9ja19jb21taXRfd3Jp
dGUoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKTsKZXh0ZXJu
IGludCBibG9ja19zeW5jX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgppbnQgZ2VuZXJpY19ibG9ja19i
bWFwKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvbmcsIGdldF9ibG9ja190ICopOwppbnQgZ2Vu
ZXJpY19jb21taXRfd3JpdGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQs
IHVuc2lnbmVkKTsKaW50IGJsb2NrX3RydW5jYXRlX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2Ug
KiwgbG9mZl90LCBnZXRfYmxvY2tfdCAqKTsKZXh0ZXJuIGludCBnZW5lcmljX2RpcmVjdF9JTyhp
bnQsIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2lnbmVkIGxvbmcsIGludCwg
Z2V0X2Jsb2NrX3QgKik7CmV4dGVybiBpbnQgd2FpdGZvcl9vbmVfcGFnZShzdHJ1Y3QgcGFnZSAq
KTsKZXh0ZXJuIGludCB3cml0ZW91dF9vbmVfcGFnZShzdHJ1Y3QgcGFnZSAqKTsKCmV4dGVybiBp
bnQgZ2VuZXJpY19maWxlX21tYXAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0
ICopOwpleHRlcm4gaW50IGZpbGVfcmVhZF9hY3RvcihyZWFkX2Rlc2NyaXB0b3JfdCAqIGRlc2Ms
IHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBz
aXplKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hh
ciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3dyaXRl
KHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiB2
b2lkIGRvX2dlbmVyaWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGxvZmZfdCAqLCByZWFkX2Rl
c2NyaXB0b3JfdCAqLCByZWFkX2FjdG9yX3QpOwpleHRlcm4gbG9mZl90IG5vX2xsc2VlayhzdHJ1
Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVybiBsb2ZmX3Qg
Z2VuZXJpY19maWxlX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50
IG9yaWdpbik7CmV4dGVybiBsb2ZmX3QgdmZzX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9m
Zl90IGxvZmZzZXQsIGludCBvcmlnaW4pOwpleHRlcm4gc3NpemVfdCBnZW5lcmljX3JlYWRfZGly
KHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBpbnQgZ2Vu
ZXJpY19maWxlX29wZW4oc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxlICogZmlscCk7
CgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBnZW5lcmljX3JvX2ZvcHM7CgpleHRlcm4g
aW50IHZmc19yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50LCBjb25zdCBjaGFy
ICopOwpleHRlcm4gaW50IHZmc19yZWFkbGlua19yZWFsKHN0cnVjdCBkZW50cnkgKiwgY2hhciAq
LCBpbnQpOwpleHRlcm4gaW50IHZmc19mb2xsb3dfbGluayhzdHJ1Y3QgbmFtZWlkYXRhICosIGNv
bnN0IGNoYXIgKik7CmV4dGVybiBpbnQgcGFnZV9yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICosIGNo
YXIgKiwgaW50KTsKZXh0ZXJuIGludCBwYWdlX2ZvbGxvd19saW5rKHN0cnVjdCBkZW50cnkgKiwg
c3RydWN0IG5hbWVpZGF0YSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHBhZ2Vf
c3ltbGlua19pbm9kZV9vcGVyYXRpb25zOwoKZXh0ZXJuIGludCB2ZnNfcmVhZGRpcihzdHJ1Y3Qg
ZmlsZSAqLCBmaWxsZGlyX3QsIHZvaWQgKik7CmV4dGVybiBpbnQgZGNhY2hlX2Rpcl9vcGVuKHN0
cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGludCBkY2FjaGVfZGlyX2Nsb3Nl
KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGxvZmZfdCBkY2FjaGVfZGly
X2xzZWVrKHN0cnVjdCBmaWxlICosIGxvZmZfdCwgaW50KTsKZXh0ZXJuIGludCBkY2FjaGVfZGly
X2ZzeW5jKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCBk
Y2FjaGVfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZpbGxkaXJfdCk7CmV4dGVybiBz
dHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRjYWNoZV9kaXJfb3BzOwoKaW50IGdldGF0dHJfZnVsbChz
dHJ1Y3QgdmZzbW91bnQgKm1udCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXQg
KnN0YXQpOwppbnQgZ2V0YXR0cl9taW5peChzdHJ1Y3QgdmZzbW91bnQgKm1udCwgc3RydWN0IGRl
bnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXQgKnN0YXQpOwoKZXh0ZXJuIGludCB2ZnNfc3RhdChj
aGFyICosIHN0cnVjdCBrc3RhdCAqKTsKZXh0ZXJuIGludCB2ZnNfbHN0YXQoY2hhciAqLCBzdHJ1
Y3Qga3N0YXQgKik7CmV4dGVybiBpbnQgdmZzX2ZzdGF0KGludCwgc3RydWN0IGtzdGF0ICopOwoK
ZXh0ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpnZXRfZnNfdHlwZShjb25zdCBjaGFyICpu
YW1lKTsKZXh0ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyKGtkZXZfdCk7CmV4dGVy
biB2b2lkIGRyb3Bfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnN0YXRpYyBpbmxpbmUg
aW50IGlzX21vdW50ZWQoa2Rldl90IGRldikKewogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAq
c2IgPSBnZXRfc3VwZXIoZGV2KTsKICAgICAgICBpZiAoc2IpIHsKICAgICAgICAgICAgICAgIGRy
b3Bfc3VwZXIoc2IpOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAg
IHJldHVybiAwOwp9CnVuc2lnbmVkIGxvbmcgZ2VuZXJhdGVfY2x1c3RlcihrZGV2X3QsIGludCBi
W10sIGludCk7CnVuc2lnbmVkIGxvbmcgZ2VuZXJhdGVfY2x1c3Rlcl9zd2FiMzIoa2Rldl90LCBp
bnQgYltdLCBpbnQpOwpleHRlcm4ga2Rldl90IFJPT1RfREVWOwpleHRlcm4gY2hhciByb290X2Rl
dmljZV9uYW1lW107CgoKZXh0ZXJuIHZvaWQgc2hvd19idWZmZXJzKHZvaWQpOwoKCgoKCmV4dGVy
biBzc2l6ZV90IGNoYXJfcmVhZChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90
ICopOwpleHRlcm4gc3NpemVfdCBibG9ja19yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6
ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBpbnQgcmVhZF9haGVhZFtdOwoKZXh0ZXJuIHNzaXplX3Qg
Y2hhcl93cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICop
OwpleHRlcm4gc3NpemVfdCBibG9ja193cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICos
IHNpemVfdCwgbG9mZl90ICopOwoKZXh0ZXJuIGludCBmaWxlX2ZzeW5jKHN0cnVjdCBmaWxlICos
IHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCBnZW5lcmljX2J1ZmZlcl9mZGF0YXN5
bmMoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBzdGFydF9pZHgsIHVuc2lnbmVk
IGxvbmcgZW5kX2lkeCk7CmV4dGVybiBpbnQgZ2VuZXJpY19vc3luY19pbm9kZShzdHJ1Y3QgaW5v
ZGUgKiwgaW50KTsKCgoKCmV4dGVybiBpbnQgaW5vZGVfY2hhbmdlX29rKHN0cnVjdCBpbm9kZSAq
LCBzdHJ1Y3QgaWF0dHIgKik7CmV4dGVybiBpbnQgaW5vZGVfc2V0YXR0cihzdHJ1Y3QgaW5vZGUg
Kiwgc3RydWN0IGlhdHRyICopOwojIDE1OTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqbG9ja19wYXJlbnQoc3Ry
dWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZGlyID0gZGdldChk
ZW50cnktPmRfcGFyZW50KTsKCiAgICAgICAgZG93bigmZGlyLT5kX2lub2RlLT5pX3NlbSk7CiAg
ICAgICAgcmV0dXJuIGRpcjsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgZGVudHJ5ICpnZXRfcGFy
ZW50KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBkZ2V0KGRlbnRyeS0+
ZF9wYXJlbnQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrX2RpcihzdHJ1Y3QgZGVudHJ5
ICpkaXIpCnsKICAgICAgICB1cCgmZGlyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dChk
aXIpOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV9kb3duKHN0cnVjdCBzZW1hcGhv
cmUgKnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikKewogICAgICAgIGlmIChzMSAhPSBzMikgewog
ICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBz
MikgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMjsK
ICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICBkb3duKHMxKTsKICAgICAgICB9CiAgICAgICAgZG93bihzMik7
Cn0KIyAxNjM2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0
aWMgaW5saW5lIHZvaWQgdHJpcGxlX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICpzMiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgaWYgKHMx
ICE9IHMyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2ln
bmVkIGxvbmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9u
ZykgczEgPCAodW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzMyA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxv
bmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9y
ZSAqdG1wID0gczI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEg
PSB0bXA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWdu
ZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMx
OyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvd24o
czEpOwogICAgICAgIH0gZWxzZSBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxv
bmcpIHMzKSB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAg
ICAgICAgICAgICAgIHMzID0gczI7IHMyID0gdG1wOwogICAgICAgIH0KICAgICAgICBkb3duKHMy
KTsKICAgICAgICBkb3duKHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91cChzdHJ1
Y3Qgc2VtYXBob3JlICpzMSwgc3RydWN0IHNlbWFwaG9yZSAqczIpCnsKICAgICAgICB1cChzMSk7
CiAgICAgICAgaWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwp9CgpzdGF0aWMg
aW5saW5lIHZvaWQgdHJpcGxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgdXAoczEpOwogICAgICAg
IGlmIChzMSAhPSBzMikKICAgICAgICAgICAgICAgIHVwKHMyKTsKICAgICAgICB1cChzMyk7Cn0K
CnN0YXRpYyBpbmxpbmUgdm9pZCBkb3VibGVfbG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0
IGRlbnRyeSAqZDIpCnsKICAgICAgICBkb3VibGVfZG93bigmZDEtPmRfaW5vZGUtPmlfc2VtLCAm
ZDItPmRfaW5vZGUtPmlfc2VtKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91bmxvY2so
c3RydWN0IGRlbnRyeSAqZDEsIHN0cnVjdCBkZW50cnkgKmQyKQp7CiAgICAgICAgZG91YmxlX3Vw
KCZkMS0+ZF9pbm9kZS0+aV9zZW0sJmQyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dChk
MSk7CiAgICAgICAgZHB1dChkMik7Cn0KIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAyCiMgMzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKdHlwZWRlZiBzdHJ1Y3QgX191c2VyX2NhcF9oZWFkZXJf
c3RydWN0IHsKICAgICAgICBfX3UzMiB2ZXJzaW9uOwogICAgICAgIGludCBwaWQ7Cn0gKmNhcF91
c2VyX2hlYWRlcl90OwoKdHlwZWRlZiBzdHJ1Y3QgX191c2VyX2NhcF9kYXRhX3N0cnVjdCB7CiAg
ICAgICAgX191MzIgZWZmZWN0aXZlOwogICAgICAgIF9fdTMyIHBlcm1pdHRlZDsKICAgICAgICBf
X3UzMiBpbmhlcml0YWJsZTsKfSAqY2FwX3VzZXJfZGF0YV90OwojIDU1ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCnR5cGVkZWYgX191MzIga2VybmVs
X2NhcF90OwojIDI4NiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvY2FwYWJp
bGl0eS5oIgpleHRlcm4ga2VybmVsX2NhcF90IGNhcF9ic2V0OwojIDMxNCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgpzdGF0aWMgaW5saW5lIGtlcm5l
bF9jYXBfdCBjYXBfY29tYmluZShrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90IGIpCnsKICAg
ICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgfCAoYik7CiAgICAgcmV0dXJu
IGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9pbnRlcnNlY3Qoa2VybmVs
X2NhcF90IGEsIGtlcm5lbF9jYXBfdCBiKQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAg
KGRlc3QpID0gKGEpICYgKGIpOwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtl
cm5lbF9jYXBfdCBjYXBfZHJvcChrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90IGRyb3ApCnsK
ICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgJiB+KGRyb3ApOwogICAg
IHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfaW52ZXJ0KGtl
cm5lbF9jYXBfdCBjKQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gfihj
KTsKICAgICByZXR1cm4gZGVzdDsKfQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L2JpbmZtdHMuaCIgMgojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9iaW5mbXRzLmgiCnN0cnVjdCBsaW51eF9iaW5wcm17CiAgICAgICAgY2hhciBidWZbMTI4
XTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZVszMl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBw
OwogICAgICAgIGludCBzaF9iYW5nOwogICAgICAgIHN0cnVjdCBmaWxlICogZmlsZTsKICAgICAg
ICBpbnQgZV91aWQsIGVfZ2lkOwogICAgICAgIGtlcm5lbF9jYXBfdCBjYXBfaW5oZXJpdGFibGUs
IGNhcF9wZXJtaXR0ZWQsIGNhcF9lZmZlY3RpdmU7CiAgICAgICAgaW50IGFyZ2MsIGVudmM7CiAg
ICAgICAgY2hhciAqIGZpbGVuYW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9hZGVyLCBleGVj
Owp9OwoKCgoKCnN0cnVjdCBsaW51eF9iaW5mbXQgewogICAgICAgIHN0cnVjdCBsaW51eF9iaW5m
bXQgKiBuZXh0OwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZTsKICAgICAgICBpbnQgKCps
b2FkX2JpbmFyeSkoc3RydWN0IGxpbnV4X2JpbnBybSAqLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3Mp
OwogICAgICAgIGludCAoKmxvYWRfc2hsaWIpKHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAo
KmNvcmVfZHVtcCkobG9uZyBzaWduciwgc3RydWN0IHB0X3JlZ3MgKiByZWdzLCBzdHJ1Y3QgZmls
ZSAqIGZpbGUpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWluX2NvcmVkdW1wOwp9OwoKZXh0ZXJu
IGludCByZWdpc3Rlcl9iaW5mbXQoc3RydWN0IGxpbnV4X2JpbmZtdCAqKTsKZXh0ZXJuIGludCB1
bnJlZ2lzdGVyX2JpbmZtdChzdHJ1Y3QgbGludXhfYmluZm10ICopOwoKZXh0ZXJuIGludCBwcmVw
YXJlX2JpbnBybShzdHJ1Y3QgbGludXhfYmlucHJtICopOwpleHRlcm4gdm9pZCByZW1vdmVfYXJn
X3plcm8oc3RydWN0IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJuIGludCBzZWFyY2hfYmluYXJ5X2hh
bmRsZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqLHN0cnVjdCBwdF9yZWdzICopOwpleHRlcm4gaW50
IGZsdXNoX29sZF9leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTsKZXh0ZXJuIGludCBz
ZXR1cF9hcmdfcGFnZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pOwpleHRlcm4gaW50IGNv
cHlfc3RyaW5ncyhpbnQgYXJnYyxjaGFyICoqIGFyZ3Ysc3RydWN0IGxpbnV4X2JpbnBybSAqYnBy
bSk7CmV4dGVybiBpbnQgY29weV9zdHJpbmdzX2tlcm5lbChpbnQgYXJnYyxjaGFyICoqIGFyZ3Ys
c3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSk7CmV4dGVybiB2b2lkIGNvbXB1dGVfY3JlZHMoc3Ry
dWN0IGxpbnV4X2JpbnBybSAqYmlucHJtKTsKZXh0ZXJuIGludCBkb19jb3JlZHVtcChsb25nIHNp
Z25yLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpOwpleHRlcm4gdm9pZCBzZXRfYmluZm10KHN0cnVj
dCBsaW51eF9iaW5mbXQgKm5ldyk7CiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L3NjaGVkLmgiIDIKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC90aW1lcy5oIiAxCgoKCnN0cnVjdCB0bXMgewogICAgICAgIGNsb2NrX3QgdG1zX3V0aW1l
OwogICAgICAgIGNsb2NrX3QgdG1zX3N0aW1lOwogICAgICAgIGNsb2NrX3QgdG1zX2N1dGltZTsK
ICAgICAgICBjbG9ja190IHRtc19jc3RpbWU7Cn07CiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC90aW1leC5oIiAxCiMgMTUyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC90aW1leC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS90
aW1leC5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS90aW1leC5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tc3IuaCIgMQojIDExICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdGltZXguaCIgMgojIDM3ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdGltZXguaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGxvbmcgY3ljbGVzX3Q7CgpleHRlcm4gY3ljbGVzX3QgY2FjaGVmbHVzaF90aW1lOwoKc3RhdGlj
IGlubGluZSBjeWNsZXNfdCBnZXRfY3ljbGVzICh2b2lkKQp7CgoKCiAgICAgICAgdW5zaWduZWQg
bG9uZyBsb25nIHJldDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9
QSIgKHJldCkpOwogICAgICAgIHJldHVybiByZXQ7Cgp9CgpleHRlcm4gdW5zaWduZWQgbG9uZyBj
cHVfa2h6OwojIDE1MyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGltZXgu
aCIgMgojIDE2MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdGltZXguaCIK
c3RydWN0IHRpbWV4IHsKICAgICAgICB1bnNpZ25lZCBpbnQgbW9kZXM7CiAgICAgICAgbG9uZyBv
ZmZzZXQ7CiAgICAgICAgbG9uZyBmcmVxOwogICAgICAgIGxvbmcgbWF4ZXJyb3I7CiAgICAgICAg
bG9uZyBlc3RlcnJvcjsKICAgICAgICBpbnQgc3RhdHVzOwogICAgICAgIGxvbmcgY29uc3RhbnQ7
CiAgICAgICAgbG9uZyBwcmVjaXNpb247CiAgICAgICAgbG9uZyB0b2xlcmFuY2U7CgoKICAgICAg
ICBzdHJ1Y3QgdGltZXZhbCB0aW1lOwogICAgICAgIGxvbmcgdGljazsKCiAgICAgICAgbG9uZyBw
cHNmcmVxOwogICAgICAgIGxvbmcgaml0dGVyOwogICAgICAgIGludCBzaGlmdDsKICAgICAgICBs
b25nIHN0YWJpbDsKICAgICAgICBsb25nIGppdGNudDsKICAgICAgICBsb25nIGNhbGNudDsKICAg
ICAgICBsb25nIGVycmNudDsKICAgICAgICBsb25nIHN0YmNudDsKCiAgICAgICAgaW50IDozMjsg
aW50IDozMjsgaW50IDozMjsgaW50IDozMjsKICAgICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQg
OjMyOyBpbnQgOjMyOwogICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7
Cn07CiMgMjUzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90aW1leC5oIgpl
eHRlcm4gbG9uZyB0aWNrOwpleHRlcm4gaW50IHRpY2thZGo7CgoKCgpleHRlcm4gaW50IHRpbWVf
c3RhdGU7CmV4dGVybiBpbnQgdGltZV9zdGF0dXM7CmV4dGVybiBsb25nIHRpbWVfb2Zmc2V0Owpl
eHRlcm4gbG9uZyB0aW1lX2NvbnN0YW50OwpleHRlcm4gbG9uZyB0aW1lX3RvbGVyYW5jZTsKZXh0
ZXJuIGxvbmcgdGltZV9wcmVjaXNpb247CmV4dGVybiBsb25nIHRpbWVfbWF4ZXJyb3I7CmV4dGVy
biBsb25nIHRpbWVfZXN0ZXJyb3I7CgpleHRlcm4gbG9uZyB0aW1lX3BoYXNlOwpleHRlcm4gbG9u
ZyB0aW1lX2ZyZXE7CmV4dGVybiBsb25nIHRpbWVfYWRqOwpleHRlcm4gbG9uZyB0aW1lX3JlZnRp
bWU7CgpleHRlcm4gbG9uZyB0aW1lX2FkanVzdDsKCgpleHRlcm4gbG9uZyBwcHNfb2Zmc2V0Owpl
eHRlcm4gbG9uZyBwcHNfaml0dGVyOwpleHRlcm4gbG9uZyBwcHNfZnJlcTsKZXh0ZXJuIGxvbmcg
cHBzX3N0YWJpbDsKZXh0ZXJuIGxvbmcgcHBzX3ZhbGlkOwoKCmV4dGVybiBpbnQgcHBzX3NoaWZ0
OwpleHRlcm4gbG9uZyBwcHNfaml0Y250OwpleHRlcm4gbG9uZyBwcHNfY2FsY250OwpleHRlcm4g
bG9uZyBwcHNfZXJyY250OwpleHRlcm4gbG9uZyBwcHNfc3RiY250OwojIDE1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvcmJ0cmVlLmgiIDEKIyAxMDAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIgp0eXBlZGVmIHN0cnVjdCByYl9ub2RlX3MKewog
ICAgICAgIHN0cnVjdCByYl9ub2RlX3MgKiByYl9wYXJlbnQ7CiAgICAgICAgaW50IHJiX2NvbG9y
OwoKCiAgICAgICAgc3RydWN0IHJiX25vZGVfcyAqIHJiX3JpZ2h0OwogICAgICAgIHN0cnVjdCBy
Yl9ub2RlX3MgKiByYl9sZWZ0Owp9CnJiX25vZGVfdDsKCnR5cGVkZWYgc3RydWN0IHJiX3Jvb3Rf
cwp7CiAgICAgICAgc3RydWN0IHJiX25vZGVfcyAqIHJiX25vZGU7Cn0KcmJfcm9vdF90OwoKCgoK
CmV4dGVybiB2b2lkIHJiX2luc2VydF9jb2xvcihyYl9ub2RlX3QgKiwgcmJfcm9vdF90ICopOwpl
eHRlcm4gdm9pZCByYl9lcmFzZShyYl9ub2RlX3QgKiwgcmJfcm9vdF90ICopOwoKc3RhdGljIGlu
bGluZSB2b2lkIHJiX2xpbmtfbm9kZShyYl9ub2RlX3QgKiBub2RlLCByYl9ub2RlX3QgKiBwYXJl
bnQsIHJiX25vZGVfdCAqKiByYl9saW5rKQp7CiAgICAgICAgbm9kZS0+cmJfcGFyZW50ID0gcGFy
ZW50OwogICAgICAgIG5vZGUtPnJiX2NvbG9yID0gMDsKICAgICAgICBub2RlLT5yYl9sZWZ0ID0g
bm9kZS0+cmJfcmlnaHQgPSAoKHZvaWQgKikwKTsKCiAgICAgICAgKnJiX2xpbmsgPSBub2RlOwp9
CiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCgoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tbXUuaCIgMQoKCgoKCgoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHZvaWQgKnNlZ21lbnRzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgY3B1dmFsaWQ7Cn0gbW1fY29udGV4dF90OwojIDIyICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2xpbnV4L3NtcC5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2xpbnV4L3NtcC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zbXAu
aCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc21wLmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAxCiMgMTggIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9maXhtYXAuaCIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9hc20vYWNwaS5oIiAxCiMgMTE0ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9hc20vYWNwaS5oIgpleHRlcm4gaW50IGFjcGlfbGFwaWM7CgoKCgpleHRlcm4g
aW50IGFjcGlfaW9hcGljOwojIDEzMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNt
L2FjcGkuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2F2ZWRfZWlwOwpleHRlcm4gdW5zaWduZWQg
bG9uZyBzYXZlZF9lc3A7CmV4dGVybiB1bnNpZ25lZCBsb25nIHNhdmVkX2VicDsKZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgc2F2ZWRfZWJ4OwpleHRlcm4gdW5zaWduZWQgbG9uZyBzYXZlZF9lc2k7CmV4
dGVybiB1bnNpZ25lZCBsb25nIHNhdmVkX2VkaTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBhY3BpX3Nh
dmVfcmVnaXN0ZXJfc3RhdGUodW5zaWduZWQgbG9uZyByZXR1cm5fcG9pbnQpCnsKICAgICAgICBz
YXZlZF9laXAgPSByZXR1cm5fcG9pbnQ7CiAgICAgICAgYXNtIHZvbGF0aWxlICgibW92bCAlJWVz
cCwoJTApIiA6ICI9bSIgKHNhdmVkX2VzcCkpOwogICAgICAgIGFzbSB2b2xhdGlsZSAoIm1vdmwg
JSVlYnAsKCUwKSIgOiAiPW0iIChzYXZlZF9lYnApKTsKICAgICAgICBhc20gdm9sYXRpbGUgKCJt
b3ZsICUlZWJ4LCglMCkiIDogIj1tIiAoc2F2ZWRfZWJ4KSk7CiAgICAgICAgYXNtIHZvbGF0aWxl
ICgibW92bCAlJWVkaSwoJTApIiA6ICI9bSIgKHNhdmVkX2VkaSkpOwogICAgICAgIGFzbSB2b2xh
dGlsZSAoIm1vdmwgJSVlc2ksKCUwKSIgOiAiPW0iIChzYXZlZF9lc2kpKTsKfQoKCgoKCmV4dGVy
biBpbnQgYWNwaV9zYXZlX3N0YXRlX21lbSh2b2lkKTsKZXh0ZXJuIGludCBhY3BpX3NhdmVfc3Rh
dGVfZGlzayh2b2lkKTsKZXh0ZXJuIHZvaWQgYWNwaV9yZXN0b3JlX3N0YXRlX21lbSh2b2lkKTsK
CmV4dGVybiB1bnNpZ25lZCBsb25nIGFjcGlfd2FrZXVwX2FkZHJlc3M7CgpleHRlcm4gdm9pZCBk
b19zdXNwZW5kX2xvd2xldmVsX3M0YmlvcyhpbnQgcmVzdW1lKTsKCgpleHRlcm4gdm9pZCBhY3Bp
X3Jlc2VydmVfYm9vdG1lbSh2b2lkKTsKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNt
L2FwaWNkZWYuaCIgMQojIDEzNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2Fw
aWNkZWYuaCIKc3RydWN0IGxvY2FsX2FwaWMgewoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzAxOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNp
Z25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzAyOwoKICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAogICAgICAg
ICAgICAgICAgICAgICAgICBwaHlzX2FwaWNfaWQgOiA0LAogICAgICAgICAgICAgICAgICAgICAg
ICBfX3Jlc2VydmVkXzIgOiA0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2
ZWRbM107CiAgICAgICAgfSBpZDsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlcnNpb24gOiA4LAogICAgICAgICAgICAgICAgICAg
ICAgICBfX3Jlc2VydmVkXzEgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBtYXhfbHZ0IDog
OCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogODsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gdmVyc2lvbjsKCiAgICAg
ICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wMzsK
CiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZl
ZF8wNDsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y
ZXNlcnZlZF8wNTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07
IH0gX19yZXNlcnZlZF8wNjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBwcmlvcml0eSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRf
MSA6IDI0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAg
ICAgICB9IHRwcjsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHByaW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXNlcnZlZF8xIDogMjQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8y
WzNdOwogICAgICAgIH0gYXByOwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgcHJpb3JpdHkgOiA4LAogICAgICAgICAgICAgICAgICAg
ICAgICBfX3Jlc2VydmVkXzEgOiAyNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jl
c2VydmVkXzJbM107CiAgICAgICAgfSBwcHI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgZW9pOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVz
ZXJ2ZWRbM107CiAgICAgICAgfSBlb2k7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf
X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDc7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ2ljYWxfZGVzdCA6IDg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZF8yWzNdOwogICAgICAgIH0gbGRyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI4LAogICAgICAgICAgICAgICAgICAg
ICAgICBtb2RlbCA6IDQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8y
WzNdOwogICAgICAgIH0gZGZyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHNwdXJpb3VzX3ZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGFw
aWNfZW5hYmxlZCA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzX2NwdSA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDIyOwogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICB9IHN2cjsKCiAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gaXNyIFs4XTsKCiAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gdG1yIFs4XTsK
CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gaXJy
IFs4XTsKCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNlbmRfY3NfZXJyb3IgOiAxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVfY3NfZXJyb3IgOiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbmRfYWNjZXB0X2Vycm9yIDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWNlaXZlX2FjY2VwdF9lcnJvciA6IDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZW5kX2lsbGVnYWxfdmVjdG9yIDogMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWNlaXZlX2lsbGVnYWxfdmVjdG9yIDogMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbGxlZ2FsX3JlZ2lzdGVyX2FkZHJlc3MgOiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDI0OwogICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgICAgICAgICAgfSBlcnJv
cl9iaXRzOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGVycm9yczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICAgICAgICAgIH0gYWxsX2Vycm9yczsKICAgICAgICB9
IGVzcjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y
ZXNlcnZlZF8wODsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07
IH0gX19yZXNlcnZlZF8wOTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2
ZWRbNF07IH0gX19yZXNlcnZlZF8xMDsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9f
cmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQg
aW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMjsKCiAgICAgICAgc3RydWN0IHsgdW5z
aWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMzsKCiAgICAgICAgc3RydWN0
IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNDsKCiAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICAgICAg
ICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywKICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdGluYXRpb25fbW9kZSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5
X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGxldmVsIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg
dHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZCA6IDIsCiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fcmVzZXJ2ZWRfMyA6IDEyOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVz
ZXJ2ZWRfNFszXTsKICAgICAgICB9IGljcjE7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2Vy
dmVkXzEgOiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaHlzX2Rlc3QgOiA0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDQ7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzMgOiAyNCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX2Rlc3QgOiA4OwogICAgICAgICAgICAg
ICAgfSBkZXN0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsK
ICAgICAgICB9IGljcjI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDog
NCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAg
ICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMywKICAgICAgICAgICAgICAgICAgICAgICAg
bWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyX21vZGUgOiAxLAogICAgICAg
ICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzMgOiAxNDsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX3Jlc2VydmVkXzRbM107CiAgICAgICAgfSBsdnRfdGltZXI7CgogICAgICAgIHN0
cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTU7CgogICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAg
ICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5
X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAg
ICAgICAgICAgICAgICAgICAgICAgIG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBf
X3Jlc2VydmVkXzMgOiAxNTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVk
XzRbM107CiAgICAgICAgfSBsdnRfcGM7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZl
cnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgIHBvbGFyaXR5IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2ly
ciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgOiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICBtYXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8y
IDogMTU7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAg
ICAgIH0gbHZ0X2xpbnQwOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUg
OiAzLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAg
ICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAg
ICBwb2xhcml0eSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9pcnIgOiAxLAog
ICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgbWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDE1Owog
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICB9IGx2
dF9saW50MTsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2
ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiA0LAogICAg
ICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAg
ICAgICAgICBfX3Jlc2VydmVkXzIgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDog
MSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8zIDogMTU7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0gbHZ0X2Vycm9yOwoK
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGluaXRpYWxfY291
bnQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAg
IH0gdGltZXJfaWNyOwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgY3Vycl9jb3VudDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0aW1lcl9jY3I7CgogICAgICAgIHN0cnVjdCB7
IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTY7CgogICAgICAgIHN0
cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTc7CgogICAg
ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTg7
CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2
ZWRfMTk7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGl2
aXNvciA6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDI4OwogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IHRpbWVy
X2RjcjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y
ZXNlcnZlZF8yMDsKCn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwojIDIwICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIKIyA1MSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgplbnVtIGZpeGVkX2FkZHJlc3NlcyB7CgogICAg
ICAgIEZJWF9BUElDX0JBU0UsCgoKICAgICAgICBGSVhfSU9fQVBJQ19CQVNFXzAsCiAgICAgICAg
RklYX0lPX0FQSUNfQkFTRV9FTkQgPSBGSVhfSU9fQVBJQ19CQVNFXzAgKyA4IC0xLAojIDc2ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vZml4bWFwLmgiCiAgICAgICAgRklYX0FD
UElfQkVHSU4sCiAgICAgICAgRklYX0FDUElfRU5EID0gRklYX0FDUElfQkVHSU4gKyA0IC0gMSwK
CiAgICAgICAgX19lbmRfb2ZfcGVybWFuZW50X2ZpeGVkX2FkZHJlc3NlcywKCgogICAgICAgIEZJ
WF9CVE1BUF9FTkQgPSBfX2VuZF9vZl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2VzLAogICAgICAg
IEZJWF9CVE1BUF9CRUdJTiA9IEZJWF9CVE1BUF9FTkQgKyAxNiAtIDEsCiAgICAgICAgX19lbmRf
b2ZfZml4ZWRfYWRkcmVzc2VzCn07CgpleHRlcm4gdm9pZCBfX3NldF9maXhtYXAgKGVudW0gZml4
ZWRfYWRkcmVzc2VzIGlkeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgcGh5cywgcGdwcm90X3QgZmxhZ3MpOwojIDExMCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgpleHRlcm4gdm9pZCBfX3RoaXNfZml4bWFw
X2RvZXNfbm90X2V4aXN0KHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcg
Zml4X3RvX3ZpcnQoY29uc3QgdW5zaWduZWQgaW50IGlkeCkKewojIDEyOCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgogICAgICAgIGlmIChpZHggPj0gX19lbmRf
b2ZfZml4ZWRfYWRkcmVzc2VzKQogICAgICAgICAgICAgICAgX190aGlzX2ZpeG1hcF9kb2VzX25v
dF9leGlzdCgpOwoKICAgICAgICByZXR1cm4gKCgweGZmZmZlMDAwVUwpIC0gKChpZHgpIDw8IDEy
KSk7Cn0KIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NtcC5oIiAyCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tcHNwZWMuaCIgMQojIDI4ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vbXBzcGVjLmgiCnN0cnVjdCBpbnRlbF9t
cF9mbG9hdGluZwp7CiAgICAgICAgY2hhciBtcGZfc2lnbmF0dXJlWzRdOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgbXBmX3BoeXNwdHI7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGZfbGVuZ3RoOwog
ICAgICAgIHVuc2lnbmVkIGNoYXIgbXBmX3NwZWNpZmljYXRpb247CiAgICAgICAgdW5zaWduZWQg
Y2hhciBtcGZfY2hlY2tzdW07CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGZfZmVhdHVyZTE7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBtcGZfZmVhdHVyZTI7CiAgICAgICAgdW5zaWduZWQgY2hhciBt
cGZfZmVhdHVyZTM7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGZfZmVhdHVyZTQ7CiAgICAgICAg
dW5zaWduZWQgY2hhciBtcGZfZmVhdHVyZTU7Cn07CgpzdHJ1Y3QgbXBfY29uZmlnX3RhYmxlCnsK
ICAgICAgICBjaGFyIG1wY19zaWduYXR1cmVbNF07CgogICAgICAgIHVuc2lnbmVkIHNob3J0IG1w
Y19sZW5ndGg7CiAgICAgICAgY2hhciBtcGNfc3BlYzsKICAgICAgICBjaGFyIG1wY19jaGVja3N1
bTsKICAgICAgICBjaGFyIG1wY19vZW1bOF07CiAgICAgICAgY2hhciBtcGNfcHJvZHVjdGlkWzEy
XTsKICAgICAgICB1bnNpZ25lZCBsb25nIG1wY19vZW1wdHI7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgbXBjX29lbXNpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbXBjX29lbWNvdW50OwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgbXBjX2xhcGljOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVzZXJ2
ZWQ7Cn07CiMgNjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tcHNwZWMuaCIK
c3RydWN0IG1wY19jb25maWdfcHJvY2Vzc29yCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY190
eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2FwaWNpZDsKICAgICAgICB1bnNpZ25lZCBj
aGFyIG1wY19hcGljdmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2NwdWZsYWc7CgoKICAg
ICAgICB1bnNpZ25lZCBsb25nIG1wY19jcHVmZWF0dXJlOwoKCgogICAgICAgIHVuc2lnbmVkIGxv
bmcgbXBjX2ZlYXR1cmVmbGFnOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbXBjX3Jlc2VydmVkWzJd
Owp9OwoKc3RydWN0IG1wY19jb25maWdfYnVzCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY190
eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2J1c2lkOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgbXBjX2J1c3R5cGVbNl0gX19hdHRyaWJ1dGUoKHBhY2tlZCkpOwp9OwojIDExMCAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL21wc3BlYy5oIgpzdHJ1Y3QgbXBjX2NvbmZpZ19p
b2FwaWMKewogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3R5cGU7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBtcGNfYXBpY2lkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2FwaWN2ZXI7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBtcGNfZmxhZ3M7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgbXBjX2Fw
aWNhZGRyOwp9OwoKc3RydWN0IG1wY19jb25maWdfaW50c3JjCnsKICAgICAgICB1bnNpZ25lZCBj
aGFyIG1wY190eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2lycXR5cGU7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgbXBjX2lycWZsYWc7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfc3Jj
YnVzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3NyY2J1c2lycTsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIG1wY19kc3RhcGljOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2RzdGlycTsKfTsK
CmVudW0gbXBfaXJxX3NvdXJjZV90eXBlcyB7CiAgICAgICAgbXBfSU5UID0gMCwKICAgICAgICBt
cF9OTUkgPSAxLAogICAgICAgIG1wX1NNSSA9IDIsCiAgICAgICAgbXBfRXh0SU5UID0gMwp9OwoK
CgoKCgpzdHJ1Y3QgbXBjX2NvbmZpZ19saW50c3JjCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1w
Y190eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2lycXR5cGU7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgbXBjX2lycWZsYWc7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfc3JjYnVzaWQ7
CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfc3JjYnVzaXJxOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgbXBjX2Rlc3RhcGljOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19kZXN0YXBpY2xpbnQ7
Cn07CgpzdHJ1Y3QgbXBfY29uZmlnX29lbXRhYmxlCnsKICAgICAgICBjaGFyIG9lbV9zaWduYXR1
cmVbNF07CgogICAgICAgIHVuc2lnbmVkIHNob3J0IG9lbV9sZW5ndGg7CiAgICAgICAgY2hhciBv
ZW1fcmV2OwogICAgICAgIGNoYXIgb2VtX2NoZWNrc3VtOwogICAgICAgIGNoYXIgbXBjX29lbVs4
XTsKfTsKCnN0cnVjdCBtcGNfY29uZmlnX3RyYW5zbGF0aW9uCnsKICAgICAgICB1bnNpZ25lZCBj
aGFyIG1wY190eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdHJhbnNfbGVuOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgdHJhbnNfdHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRyYW5zX3F1YWQ7
CiAgICAgICAgdW5zaWduZWQgY2hhciB0cmFuc19nbG9iYWw7CiAgICAgICAgdW5zaWduZWQgY2hh
ciB0cmFuc19sb2NhbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0cmFuc19yZXNlcnZlZDsKfTsK
IyAxOTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tcHNwZWMuaCIKZW51bSBt
cF9idXN0eXBlIHsKICAgICAgICBNUF9CVVNfSVNBID0gMSwKICAgICAgICBNUF9CVVNfRUlTQSwK
ICAgICAgICBNUF9CVVNfUENJLAogICAgICAgIE1QX0JVU19NQ0EKfTsKZXh0ZXJuIGludCAqbXBf
YnVzX2lkX3RvX3R5cGU7CmV4dGVybiBpbnQgKm1wX2J1c19pZF90b19ub2RlOwpleHRlcm4gaW50
ICptcF9idXNfaWRfdG9fbG9jYWw7CmV4dGVybiBpbnQgKm1wX2J1c19pZF90b19wY2lfYnVzOwpl
eHRlcm4gaW50IHF1YWRfbG9jYWxfdG9fbXBfYnVzX2lkIFszMi80XVs0XTsKCmV4dGVybiB1bnNp
Z25lZCBpbnQgYm9vdF9jcHVfcGh5c2ljYWxfYXBpY2lkOwpleHRlcm4gdW5zaWduZWQgbG9uZyBw
aHlzX2NwdV9wcmVzZW50X21hcDsKZXh0ZXJuIGludCBzbXBfZm91bmRfY29uZmlnOwpleHRlcm4g
dm9pZCBmaW5kX3NtcF9jb25maWcgKHZvaWQpOwpleHRlcm4gdm9pZCBnZXRfc21wX2NvbmZpZyAo
dm9pZCk7CmV4dGVybiBpbnQgbnJfaW9hcGljczsKZXh0ZXJuIGludCBhcGljX3ZlcnNpb24gWzE2
XTsKZXh0ZXJuIGludCBtcF9pcnFfZW50cmllczsKZXh0ZXJuIHN0cnVjdCBtcGNfY29uZmlnX2lu
dHNyYyAqbXBfaXJxczsKZXh0ZXJuIGludCBtcGNfZGVmYXVsdF90eXBlOwpleHRlcm4gaW50IG1w
X2N1cnJlbnRfcGNpX2lkOwpleHRlcm4gdW5zaWduZWQgbG9uZyBtcF9sYXBpY19hZGRyOwpleHRl
cm4gaW50IHBpY19tb2RlOwpleHRlcm4gaW50IHVzaW5nX2FwaWNfdGltZXI7CgoKZXh0ZXJuIHZv
aWQgbXBfcmVnaXN0ZXJfbGFwaWMgKHU4IGlkLCB1OCBlbmFibGVkKTsKZXh0ZXJuIHZvaWQgbXBf
cmVnaXN0ZXJfbGFwaWNfYWRkcmVzcyAodTY0IGFkZHJlc3MpOwoKCmV4dGVybiB2b2lkIG1wX3Jl
Z2lzdGVyX2lvYXBpYyAodTggaWQsIHUzMiBhZGRyZXNzLCB1MzIgaXJxX2Jhc2UpOwpleHRlcm4g
dm9pZCBtcF9vdmVycmlkZV9sZWdhY3lfaXJxICh1OCBidXNfaXJxLCB1OCBwb2xhcml0eSwgdTgg
dHJpZ2dlciwgdTMyIGdsb2JhbF9pcnEpOwpleHRlcm4gdm9pZCBtcF9jb25maWdfYWNwaV9sZWdh
Y3lfaXJxcyAodm9pZCk7CmV4dGVybiB2b2lkIG1wX2NvbmZpZ19pb2FwaWNfZm9yX3NjaShpbnQg
aXJxKTsKZXh0ZXJuIHZvaWQgbXBfcGFyc2VfcHJ0ICh2b2lkKTsKIyAxOCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL3NtcC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9pb19hcGljLmgiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL2lvX2FwaWMuaCIKc3RydWN0IElPX0FQSUNfcmVnXzAwIHsKICAgICAgICBfX3Uz
MiBfX3Jlc2VydmVkXzIgOiAxNCwKICAgICAgICAgICAgICAgIExUUyA6IDEsCiAgICAgICAgICAg
ICAgICBkZWxpdmVyeV90eXBlIDogMSwKICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDgs
CiAgICAgICAgICAgICAgICBJRCA6IDQsCiAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzAgOiA0
Owp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKCnN0cnVjdCBJT19BUElDX3JlZ18wMSB7CiAg
ICAgICAgX191MzIgdmVyc2lvbiA6IDgsCiAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiA3
LAogICAgICAgICAgICAgICAgUFJRIDogMSwKICAgICAgICAgICAgICAgIGVudHJpZXMgOiA4LAog
ICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogODsKfSBfX2F0dHJpYnV0ZV9fICgocGFja2Vk
KSk7CgpzdHJ1Y3QgSU9fQVBJQ19yZWdfMDIgewogICAgICAgIF9fdTMyIF9fcmVzZXJ2ZWRfMiA6
IDI0LAogICAgICAgICAgICAgICAgYXJiaXRyYXRpb24gOiA0LAogICAgICAgICAgICAgICAgX19y
ZXNlcnZlZF8xIDogNDsKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CgoKCgpleHRlcm4gaW50
IG5yX2lvYXBpY3M7CmV4dGVybiBpbnQgbnJfaW9hcGljX3JlZ2lzdGVyc1s4XTsKCmVudW0gaW9h
cGljX2lycV9kZXN0aW5hdGlvbl90eXBlcyB7CiAgICAgICAgZGVzdF9GaXhlZCA9IDAsCiAgICAg
ICAgZGVzdF9Mb3dlc3RQcmlvID0gMSwKICAgICAgICBkZXN0X1NNSSA9IDIsCiAgICAgICAgZGVz
dF9fcmVzZXJ2ZWRfMSA9IDMsCiAgICAgICAgZGVzdF9OTUkgPSA0LAogICAgICAgIGRlc3RfSU5J
VCA9IDUsCiAgICAgICAgZGVzdF9fcmVzZXJ2ZWRfMiA9IDYsCiAgICAgICAgZGVzdF9FeHRJTlQg
PSA3Cn07CgpzdHJ1Y3QgSU9fQVBJQ19yb3V0ZV9lbnRyeSB7CiAgICAgICAgX191MzIgdmVjdG9y
IDogOCwKICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAoKCgogICAgICAgICAgICAg
ICAgZGVzdF9tb2RlIDogMSwKICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAg
ICAgICAgICAgICAgICBwb2xhcml0eSA6IDEsCiAgICAgICAgICAgICAgICBpcnIgOiAxLAogICAg
ICAgICAgICAgICAgdHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICBtYXNrIDogMSwKICAgICAg
ICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDE1OwoKICAgICAgICB1bmlvbiB7IHN0cnVjdCB7IF9f
dTMyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEg
OiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoeXNpY2FsX2Rl
c3QgOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZl
ZF8yIDogNDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBwaHlzaWNhbDsKCiAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCB7IF9fdTMyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ2ljYWxfZGVzdCA6IDg7CiAgICAgICAgICAgICAgICAgICAgICAgIH0g
bG9naWNhbDsKICAgICAgICB9IGRlc3Q7Cgp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKCgoK
CgoKZXh0ZXJuIHN0cnVjdCBtcGNfY29uZmlnX2lvYXBpYyBtcF9pb2FwaWNzWzhdOwoKCmV4dGVy
biBpbnQgbXBfaXJxX2VudHJpZXM7CgoKZXh0ZXJuIHN0cnVjdCBtcGNfY29uZmlnX2ludHNyYyAq
bXBfaXJxczsKCgpleHRlcm4gaW50IG1wY19kZWZhdWx0X3R5cGU7CgpzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGludCBpb19hcGljX3JlYWQodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCBy
ZWcpCnsKICAgICAgICAqKCh2b2xhdGlsZSBpbnQgKikoKCgweGZmZmZlMDAwVUwpIC0gKChGSVhf
SU9fQVBJQ19CQVNFXzAgKyBhcGljKSA8PCAxMikpICsgKG1wX2lvYXBpY3NbYXBpY10ubXBjX2Fw
aWNhZGRyICYgfih+KCgxVUwgPDwgMTIpLTEpKSkpKSA9IHJlZzsKICAgICAgICByZXR1cm4gKigo
KHZvbGF0aWxlIGludCAqKSgoKDB4ZmZmZmUwMDBVTCkgLSAoKEZJWF9JT19BUElDX0JBU0VfMCAr
IGFwaWMpIDw8IDEyKSkgKyAobXBfaW9hcGljc1thcGljXS5tcGNfYXBpY2FkZHIgJiB+KH4oKDFV
TCA8PCAxMiktMSkpKSkpKzQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW9fYXBpY193cml0ZSh1
bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50IHZhbHVlKQp7
CiAgICAgICAgKigodm9sYXRpbGUgaW50ICopKCgoMHhmZmZmZTAwMFVMKSAtICgoRklYX0lPX0FQ
SUNfQkFTRV8wICsgYXBpYykgPDwgMTIpKSArIChtcF9pb2FwaWNzW2FwaWNdLm1wY19hcGljYWRk
ciAmIH4ofigoMVVMIDw8IDEyKS0xKSkpKSkgPSByZWc7CiAgICAgICAgKigoKHZvbGF0aWxlIGlu
dCAqKSgoKDB4ZmZmZmUwMDBVTCkgLSAoKEZJWF9JT19BUElDX0JBU0VfMCArIGFwaWMpIDw8IDEy
KSkgKyAobXBfaW9hcGljc1thcGljXS5tcGNfYXBpY2FkZHIgJiB+KH4oKDFVTCA8PCAxMiktMSkp
KSkpKzQpID0gdmFsdWU7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgaW9fYXBpY19tb2RpZnko
dW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCB2YWx1ZSkKewogICAgICAgICooKCh2b2xh
dGlsZSBpbnQgKikoKCgweGZmZmZlMDAwVUwpIC0gKChGSVhfSU9fQVBJQ19CQVNFXzAgKyBhcGlj
KSA8PCAxMikpICsgKG1wX2lvYXBpY3NbYXBpY10ubXBjX2FwaWNhZGRyICYgfih+KCgxVUwgPDwg
MTIpLTEpKSkpKSs0KSA9IHZhbHVlOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGlvX2FwaWNf
c3luYyh1bnNpZ25lZCBpbnQgYXBpYykKewogICAgICAgICh2b2lkKSAqKCgodm9sYXRpbGUgaW50
ICopKCgoMHhmZmZmZTAwMFVMKSAtICgoRklYX0lPX0FQSUNfQkFTRV8wICsgYXBpYykgPDwgMTIp
KSArIChtcF9pb2FwaWNzW2FwaWNdLm1wY19hcGljYWRkciAmIH4ofigoMVVMIDw8IDEyKS0xKSkp
KSkrNCk7Cn0KCgpleHRlcm4gaW50IHNraXBfaW9hcGljX3NldHVwOwojIDE0OCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2lvX2FwaWMuaCIKZXh0ZXJuIGludCBpb19hcGljX2dl
dF91bmlxdWVfaWQgKGludCBpb2FwaWMsIGludCBhcGljX2lkKTsKZXh0ZXJuIGludCBpb19hcGlj
X2dldF92ZXJzaW9uIChpbnQgaW9hcGljKTsKZXh0ZXJuIGludCBpb19hcGljX2dldF9yZWRpcl9l
bnRyaWVzIChpbnQgaW9hcGljKTsKZXh0ZXJuIGludCBpb19hcGljX3NldF9wY2lfcm91dGluZyAo
aW50IGlvYXBpYywgaW50IHBpbiwgaW50IGlycSk7CiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9zbXAuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9hc20vYXBpYy5oIiAxCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3BtLmgiIDEKIyAzMiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvcG0u
aCIKZW51bQp7CiAgICAgICAgUE1fU1VTUEVORCwKICAgICAgICBQTV9SRVNVTUUsCgogICAgICAg
IFBNX1NBVkVfU1RBVEUsCgoKICAgICAgICBQTV9TRVRfV0FLRVVQLAoKCiAgICAgICAgUE1fR0VU
X1JFU09VUkNFUywKICAgICAgICBQTV9TRVRfUkVTT1VSQ0VTLAoKCiAgICAgICAgUE1fRUpFQ1Qs
CiAgICAgICAgUE1fTE9DSywKfTsKCnR5cGVkZWYgaW50IHBtX3JlcXVlc3RfdDsKCgoKCmVudW0K
ewogICAgICAgIFBNX1VOS05PV05fREVWID0gMCwKICAgICAgICBQTV9TWVNfREVWLAogICAgICAg
IFBNX1BDSV9ERVYsCiAgICAgICAgUE1fVVNCX0RFViwKICAgICAgICBQTV9TQ1NJX0RFViwKICAg
ICAgICBQTV9JU0FfREVWLAogICAgICAgIFBNX01URF9ERVYsCn07Cgp0eXBlZGVmIGludCBwbV9k
ZXZfdDsKCgoKCmVudW0KewogICAgICAgIFBNX1NZU19VTktOT1dOID0gMHgwMDAwMDAwMCwKICAg
ICAgICBQTV9TWVNfS0JDID0gMHg0MWQwMDMwMywKICAgICAgICBQTV9TWVNfQ09NID0gMHg0MWQw
MDUwMCwKICAgICAgICBQTV9TWVNfSVJEQSA9IDB4NDFkMDA1MTAsCiAgICAgICAgUE1fU1lTX0ZE
QyA9IDB4NDFkMDA3MDAsCiAgICAgICAgUE1fU1lTX1ZHQSA9IDB4NDFkMDA5MDAsCiAgICAgICAg
UE1fU1lTX1BDTUNJQSA9IDB4NDFkMDBlMDAsCn07CiMgOTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L3BtLmgiCnN0cnVjdCBwbV9kZXY7Cgp0eXBlZGVmIGludCAoKnBtX2Nh
bGxiYWNrKShzdHJ1Y3QgcG1fZGV2ICpkZXYsIHBtX3JlcXVlc3RfdCBycXN0LCB2b2lkICpkYXRh
KTsKCgoKCnN0cnVjdCBwbV9kZXYKewogICAgICAgIHBtX2Rldl90IHR5cGU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBpZDsKICAgICAgICBwbV9jYWxsYmFjayBjYWxsYmFjazsKICAgICAgICB2b2lk
ICpkYXRhOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcmV2X3N0YXRlOwoKICAgICAgICBzdHJ1
Y3QgbGlzdF9oZWFkIGVudHJ5Owp9OwoKCgpleHRlcm4gaW50IHBtX2FjdGl2ZTsKCgoKCgoKc3Ry
dWN0IHBtX2RldiAqcG1fcmVnaXN0ZXIocG1fZGV2X3QgdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcG1f
Y2FsbGJhY2sgY2FsbGJhY2spOwoKCgoKdm9pZCBwbV91bnJlZ2lzdGVyKHN0cnVjdCBwbV9kZXYg
KmRldik7CgoKCgp2b2lkIHBtX3VucmVnaXN0ZXJfYWxsKHBtX2NhbGxiYWNrIGNhbGxiYWNrKTsK
CgoKCmludCBwbV9zZW5kKHN0cnVjdCBwbV9kZXYgKmRldiwgcG1fcmVxdWVzdF90IHJxc3QsIHZv
aWQgKmRhdGEpOwoKCgoKaW50IHBtX3NlbmRfYWxsKHBtX3JlcXVlc3RfdCBycXN0LCB2b2lkICpk
YXRhKTsKCgoKCnN0cnVjdCBwbV9kZXYgKnBtX2ZpbmQocG1fZGV2X3QgdHlwZSwgc3RydWN0IHBt
X2RldiAqZnJvbSk7CgpzdGF0aWMgaW5saW5lIHZvaWQgcG1fYWNjZXNzKHN0cnVjdCBwbV9kZXYg
KmRldikge30Kc3RhdGljIGlubGluZSB2b2lkIHBtX2Rldl9pZGxlKHN0cnVjdCBwbV9kZXYgKmRl
dikge30KIyAxODggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3BtLmgiCmV4
dGVybiB2b2lkICgqcG1faWRsZSkodm9pZCk7CmV4dGVybiB2b2lkICgqcG1fcG93ZXJfb2ZmKSh2
b2lkKTsKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vYXBpYy5oIiAyCiMg
MjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hcGljLmgiCnN0YXRpYyBfX2lu
bGluZSB2b2lkIGFwaWNfd3JpdGUodW5zaWduZWQgbG9uZyByZWcsIHVuc2lnbmVkIGxvbmcgdikK
ewogICAgICAgICooKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoKGZpeF90b192aXJ0KEZJWF9B
UElDX0JBU0UpKStyZWcpKSA9IHY7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIGFwaWNfd3JpdGVf
YXRvbWljKHVuc2lnbmVkIGxvbmcgcmVnLCB1bnNpZ25lZCBsb25nIHYpCnsKICAgICAgICAoKF9f
dHlwZW9mX18oKigodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKSgoZml4X3RvX3ZpcnQoRklYX0FQ
SUNfQkFTRSkpK3JlZykpKSlfX3hjaGcoKHVuc2lnbmVkIGxvbmcpKHYpLCgodm9sYXRpbGUgdW5z
aWduZWQgbG9uZyAqKSgoZml4X3RvX3ZpcnQoRklYX0FQSUNfQkFTRSkpK3JlZykpLHNpemVvZigq
KCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKChmaXhfdG9fdmlydChGSVhfQVBJQ19CQVNFKSkr
cmVnKSkpKSk7Cn0KCnN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBsb25nIGFwaWNfcmVhZCh1bnNp
Z25lZCBsb25nIHJlZykKewogICAgICAgIHJldHVybiAqKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25n
ICopKChmaXhfdG9fdmlydChGSVhfQVBJQ19CQVNFKSkrcmVnKSk7Cn0KCnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgYXBpY193YWl0X2ljcl9pZGxlKHZvaWQpCnsKICAgICAgICBkbyB7IH0gd2hpbGUg
KCBhcGljX3JlYWQoIDB4MzAwICkgJiAweDAxMDAwICk7Cn0KIyA1MyAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL2FwaWMuaCIKc3RhdGljIGlubGluZSB2b2lkIGFja19BUElDX2ly
cSh2b2lkKQp7CiMgNjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9hcGljLmgi
CiAgICAgICAgYXBpY193cml0ZSgoMHhCMCksKDApKTsKfQoKZXh0ZXJuIGludCBnZXRfbWF4bHZ0
KHZvaWQpOwpleHRlcm4gdm9pZCBjbGVhcl9sb2NhbF9BUElDKHZvaWQpOwpleHRlcm4gdm9pZCBj
b25uZWN0X2JzcF9BUElDICh2b2lkKTsKZXh0ZXJuIHZvaWQgZGlzY29ubmVjdF9ic3BfQVBJQyAo
dm9pZCk7CmV4dGVybiB2b2lkIGRpc2FibGVfbG9jYWxfQVBJQyAodm9pZCk7CmV4dGVybiBpbnQg
dmVyaWZ5X2xvY2FsX0FQSUMgKHZvaWQpOwpleHRlcm4gdm9pZCBjYWNoZV9BUElDX3JlZ2lzdGVy
cyAodm9pZCk7CmV4dGVybiB2b2lkIHN5bmNfQXJiX0lEcyAodm9pZCk7CmV4dGVybiB2b2lkIGlu
aXRfYnNwX0FQSUMgKHZvaWQpOwpleHRlcm4gdm9pZCBzZXR1cF9sb2NhbF9BUElDICh2b2lkKTsK
ZXh0ZXJuIHZvaWQgaW5pdF9hcGljX21hcHBpbmdzICh2b2lkKTsKZXh0ZXJuIHZvaWQgc21wX2xv
Y2FsX3RpbWVyX2ludGVycnVwdCAoc3RydWN0IHB0X3JlZ3MgKiByZWdzKTsKZXh0ZXJuIHZvaWQg
c2V0dXBfQVBJQ19jbG9ja3MgKHZvaWQpOwpleHRlcm4gdm9pZCBzZXR1cF9hcGljX25taV93YXRj
aGRvZyAodm9pZCk7CmV4dGVybiBpbmxpbmUgdm9pZCBubWlfd2F0Y2hkb2dfdGljayAoc3RydWN0
IHB0X3JlZ3MgKiByZWdzKTsKZXh0ZXJuIGludCBBUElDX2luaXRfdW5pcHJvY2Vzc29yICh2b2lk
KTsKZXh0ZXJuIHZvaWQgZGlzYWJsZV9BUElDX3RpbWVyKHZvaWQpOwpleHRlcm4gdm9pZCBlbmFi
bGVfQVBJQ190aW1lcih2b2lkKTsKCmV4dGVybiBzdHJ1Y3QgcG1fZGV2ICphcGljX3BtX3JlZ2lz
dGVyKHBtX2Rldl90LCB1bnNpZ25lZCBsb25nLCBwbV9jYWxsYmFjayk7CmV4dGVybiB2b2lkIGFw
aWNfcG1fdW5yZWdpc3RlcihzdHJ1Y3QgcG1fZGV2Kik7CgpleHRlcm4gdW5zaWduZWQgaW50IGFw
aWNfdGltZXJfaXJxcyBbMzJdOwpleHRlcm4gaW50IGNoZWNrX25taV93YXRjaGRvZyAodm9pZCk7
CgpleHRlcm4gdW5zaWduZWQgaW50IG5taV93YXRjaGRvZzsKIyAyMiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3NtcC5oIiAyCiMgMzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9zbXAuaCIKZXh0ZXJuIHZvaWQgc21wX2FsbG9jX21lbW9yeSh2b2lkKTsKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgcGh5c19jcHVfcHJlc2VudF9tYXA7CmV4dGVybiB1bnNpZ25lZCBs
b25nIGNwdV9vbmxpbmVfbWFwOwpleHRlcm4gdm9sYXRpbGUgdW5zaWduZWQgbG9uZyBzbXBfaW52
YWxpZGF0ZV9uZWVkZWQ7CmV4dGVybiBpbnQgcGljX21vZGU7CmV4dGVybiBpbnQgc21wX251bV9z
aWJsaW5nczsKZXh0ZXJuIGludCBjcHVfc2libGluZ19tYXBbXTsKCmV4dGVybiB2b2lkIHNtcF9m
bHVzaF90bGIodm9pZCk7CmV4dGVybiB2b2lkIHNtcF9tZXNzYWdlX2lycShpbnQgY3BsLCB2b2lk
ICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKZXh0ZXJuIHZvaWQgc21wX3NlbmRfcmVz
Y2hlZHVsZShpbnQgY3B1KTsKZXh0ZXJuIHZvaWQgc21wX2ludmFsaWRhdGVfcmN2KHZvaWQpOwpl
eHRlcm4gdm9pZCAoKm10cnJfaG9vaykgKHZvaWQpOwpleHRlcm4gdm9pZCB6YXBfbG93X21hcHBp
bmdzICh2b2lkKTsKCgoKCgoKc3RhdGljIGlubGluZSBpbnQgY3B1X2xvZ2ljYWxfbWFwKGludCBj
cHUpCnsKICAgICAgICByZXR1cm4gY3B1Owp9CnN0YXRpYyBpbmxpbmUgaW50IGNwdV9udW1iZXJf
bWFwKGludCBjcHUpCnsKICAgICAgICByZXR1cm4gY3B1Owp9CgoKCgoKCmV4dGVybiB2b2xhdGls
ZSBpbnQgY3B1X3RvX3BoeXNpY2FsX2FwaWNpZFszMl07CmV4dGVybiB2b2xhdGlsZSBpbnQgcGh5
c2ljYWxfYXBpY2lkX3RvX2NwdVsyNTZdOwpleHRlcm4gdm9sYXRpbGUgaW50IGNwdV90b19sb2dp
Y2FsX2FwaWNpZFszMl07CmV4dGVybiB2b2xhdGlsZSBpbnQgbG9naWNhbF9hcGljaWRfdG9fY3B1
WzI1Nl07CgoKCgoKZXh0ZXJuIHZvaWQgc21wX2Jvb3RfY3B1cyh2b2lkKTsKZXh0ZXJuIHZvaWQg
c21wX3N0b3JlX2NwdV9pbmZvKGludCBpZCk7CiMgODYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9zbXAuaCIKc3RhdGljIF9faW5saW5lIGludCBoYXJkX3NtcF9wcm9jZXNzb3Jf
aWQodm9pZCkKewoKICAgICAgICByZXR1cm4gKCgoKih1bnNpZ25lZCBsb25nICopKChmaXhfdG9f
dmlydChGSVhfQVBJQ19CQVNFKSkrMHgyMCkpPj4yNCkmMHgwRik7Cn0KCnN0YXRpYyBfX2lubGlu
ZSBpbnQgbG9naWNhbF9zbXBfcHJvY2Vzc29yX2lkKHZvaWQpCnsKCiAgICAgICAgcmV0dXJuICgo
KCoodW5zaWduZWQgbG9uZyAqKSgoZml4X3RvX3ZpcnQoRklYX0FQSUNfQkFTRSkpKzB4RDApKT4+
MjQpJjB4RkYpOwp9CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Nt
cC5oIiAyCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NtcC5oIgpl
eHRlcm4gdm9pZCBzbXBfc2VuZF9zdG9wKHZvaWQpOwoKCgoKZXh0ZXJuIHZvaWQgc21wX3NlbmRf
cmVzY2hlZHVsZShpbnQgY3B1KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgoKCgoKZXh0
ZXJuIHZvaWQgc21wX2Jvb3RfY3B1cyh2b2lkKTsKCgoKCmV4dGVybiB2b2lkIHNtcF9jYWxsaW4o
dm9pZCk7CgoKCgpleHRlcm4gdm9pZCBzbXBfY29tbWVuY2Uodm9pZCk7CgoKCgpleHRlcm4gaW50
IHNtcF9jYWxsX2Z1bmN0aW9uICh2b2lkICgqZnVuYykgKHZvaWQgKmluZm8pLCB2b2lkICppbmZv
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0cnksIGludCB3YWl0KTsKCgoK
CmV4dGVybiBpbnQgc21wX3RocmVhZHNfcmVhZHk7CgpleHRlcm4gaW50IHNtcF9udW1fY3B1czsK
CmV4dGVybiB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIHNtcF9tc2dfZGF0YTsKZXh0ZXJuIHZvbGF0
aWxlIGludCBzbXBfc3JjX2NwdTsKZXh0ZXJuIHZvbGF0aWxlIGludCBzbXBfbXNnX2lkOwojIDI0
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiIDEKIyAyMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvbWFqb3IuaCIgMQojIDE4MCAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvbWFqb3IuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHNjc2lfYmxrX21h
am9yKGludCBtKSB7CiAgICAgICAgcmV0dXJuICgoKG0pID09IDggfHwgKChtKSA+PSA2NSAmJiAo
bSkgPD0gNzEpKSB8fCAobSkgPT0gMTEpOwp9CiMgMTkzICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9tYWpvci5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgaWRlX2Jsa19tYWpv
cihpbnQgbSkKewogICAgICAgIHJldHVybiAoKG0pID09IDMgfHwgKG0pID09IDIyIHx8IChtKSA9
PSAzMyB8fCAobSkgPT0gMzQgfHwgKG0pID09IDU2IHx8IChtKSA9PSA1NyB8fCAobSkgPT0gODgg
fHwgKG0pID09IDg5IHx8IChtKSA9PSA5MCB8fCAobSkgPT0gOTEpOwp9CiMgMjIgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvdGVybWlvcy5oIiAxCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9hc20vdGVybWJpdHMuaCIgMQoKCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hh
ciBjY190Owp0eXBlZGVmIHVuc2lnbmVkIGludCBzcGVlZF90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCB0Y2ZsYWdfdDsKCgpzdHJ1Y3QgdGVybWlvcyB7CiAgICAgICAgdGNmbGFnX3QgY19pZmxhZzsK
ICAgICAgICB0Y2ZsYWdfdCBjX29mbGFnOwogICAgICAgIHRjZmxhZ190IGNfY2ZsYWc7CiAgICAg
ICAgdGNmbGFnX3QgY19sZmxhZzsKICAgICAgICBjY190IGNfbGluZTsKICAgICAgICBjY190IGNf
Y2NbMTldOwp9OwojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS90ZXJtaW9z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDEK
IyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdGVybWlvcy5oIiAyCgpzdHJ1
Y3Qgd2luc2l6ZSB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3Nfcm93OwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHdzX2NvbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c194cGl4ZWw7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgd3NfeXBpeGVsOwp9OwoKCnN0cnVjdCB0ZXJtaW8gewogICAgICAg
IHVuc2lnbmVkIHNob3J0IGNfaWZsYWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY19vZmxhZzsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX2NmbGFnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNf
bGZsYWc7CiAgICAgICAgdW5zaWduZWQgY2hhciBjX2xpbmU7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBjX2NjWzhdOwp9OwojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Rl
cm1pb3MuaCIgMgojIDIzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90dHku
aCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90dHlfZHJpdmVy
LmgiIDEKIyAxMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3R0eV9kcml2
ZXIuaCIKc3RydWN0IHR0eV9kcml2ZXIgewogICAgICAgIGludCBtYWdpYzsKICAgICAgICBjb25z
dCBjaGFyICpkcml2ZXJfbmFtZTsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIGlu
dCBuYW1lX2Jhc2U7CiAgICAgICAgc2hvcnQgbWFqb3I7CiAgICAgICAgc2hvcnQgbWlub3Jfc3Rh
cnQ7CiAgICAgICAgc2hvcnQgbnVtOwogICAgICAgIHNob3J0IHR5cGU7CiAgICAgICAgc2hvcnQg
c3VidHlwZTsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyBpbml0X3Rlcm1pb3M7CiAgICAgICAgaW50
IGZsYWdzOwogICAgICAgIGludCAqcmVmY291bnQ7CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2Vu
dHJ5ICpwcm9jX2VudHJ5OwogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyICpvdGhlcjsKCgoKCiAg
ICAgICAgc3RydWN0IHR0eV9zdHJ1Y3QgKip0YWJsZTsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAq
KnRlcm1pb3M7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgKip0ZXJtaW9zX2xvY2tlZDsKICAgICAg
ICB2b2lkICpkcml2ZXJfc3RhdGU7CgoKCgoKICAgICAgICBpbnQgKCpvcGVuKShzdHJ1Y3QgdHR5
X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKICAgICAgICB2b2lkICgqY2xvc2Up
KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwogICAgICAgIGlu
dCAoKndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgaW50IGZyb21fdXNlciwKICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGNvdW50KTsKICAg
ICAgICB2b2lkICgqcHV0X2NoYXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHVuc2lnbmVkIGNo
YXIgY2gpOwogICAgICAgIHZvaWQgKCpmbHVzaF9jaGFycykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0
eSk7CiAgICAgICAgaW50ICgqd3JpdGVfcm9vbSkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAg
ICAgICAgaW50ICgqY2hhcnNfaW5fYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAg
ICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBm
aWxlLAogICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg
YXJnKTsKICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHks
IHN0cnVjdCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB2b2lkICgqdGhyb3R0bGUpKHN0cnVjdCB0
dHlfc3RydWN0ICogdHR5KTsKICAgICAgICB2b2lkICgqdW50aHJvdHRsZSkoc3RydWN0IHR0eV9z
dHJ1Y3QgKiB0dHkpOwogICAgICAgIHZvaWQgKCpzdG9wKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5
KTsKICAgICAgICB2b2lkICgqc3RhcnQpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAg
IHZvaWQgKCpoYW5ndXApKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZvaWQgKCpi
cmVha19jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBzdGF0ZSk7CiAgICAgICAgdm9p
ZCAoKmZsdXNoX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAo
KnNldF9sZGlzYykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKndhaXRf
dW50aWxfc2VudCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IHRpbWVvdXQpOwogICAgICAg
IHZvaWQgKCpzZW5kX3hjaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBjaGFyIGNoKTsKICAg
ICAgICBpbnQgKCpyZWFkX3Byb2MpKGNoYXIgKnBhZ2UsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2Zm
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgaW50ICplb2YsIHZvaWQgKmRh
dGEpOwogICAgICAgIGludCAoKndyaXRlX3Byb2MpKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBj
aGFyICpidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3Vu
dCwgdm9pZCAqZGF0YSk7CgoKCgogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyICpuZXh0OwogICAg
ICAgIHN0cnVjdCB0dHlfZHJpdmVyICpwcmV2Owp9OwojIDI1ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L3R0eV9sZGlzYy5oIiAxCiMgMTAzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC90dHlfbGRpc2MuaCIKc3RydWN0IHR0eV9sZGlzYyB7CiAgICAgICAgaW50IG1h
Z2ljOwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgaW50IG51bTsKICAgICAgICBpbnQgZmxh
Z3M7CgoKCiAgICAgICAgaW50ICgqb3Blbikoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAgICAgICAg
dm9pZCAoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAgICAgICB2b2lkICgqZmx1c2hf
YnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBzc2l6ZV90ICgqY2hhcnNf
aW5fYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBzc2l6ZV90ICgqcmVh
ZCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIGJ1Ziwgc2l6ZV90IG5yKTsKICAgICAgICBz
c2l6ZV90ICgqd3JpdGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZp
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICogYnVmLCBz
aXplX3QgbnIpOwogICAgICAgIGludCAoKmlvY3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwg
c3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogICAgICAgIHZvaWQgKCpzZXRfdGVybWlvcykoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHRlcm1pb3MgKiBvbGQpOwogICAgICAgIHVuc2ln
bmVkIGludCAoKnBvbGwpKHN0cnVjdCB0dHlfc3RydWN0ICosIHN0cnVjdCBmaWxlICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwoKCgoK
ICAgICAgICB2b2lkICgqcmVjZWl2ZV9idWYpKHN0cnVjdCB0dHlfc3RydWN0ICosIGNvbnN0IHVu
c2lnbmVkIGNoYXIgKmNwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZnAs
IGludCBjb3VudCk7CiAgICAgICAgaW50ICgqcmVjZWl2ZV9yb29tKShzdHJ1Y3QgdHR5X3N0cnVj
dCAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfd2FrZXVwKShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsK
fTsKIyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyA1
OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCBzY3Jl
ZW5faW5mbyB7CiAgICAgICAgdTggb3JpZ194OwogICAgICAgIHU4IG9yaWdfeTsKICAgICAgICB1
MTYgZG9udHVzZTE7CiAgICAgICAgdTE2IG9yaWdfdmlkZW9fcGFnZTsKICAgICAgICB1OCBvcmln
X3ZpZGVvX21vZGU7CiAgICAgICAgdTggb3JpZ192aWRlb19jb2xzOwogICAgICAgIHUxNiB1bnVz
ZWQyOwogICAgICAgIHUxNiBvcmlnX3ZpZGVvX2VnYV9ieDsKICAgICAgICB1MTYgdW51c2VkMzsK
ICAgICAgICB1OCBvcmlnX3ZpZGVvX2xpbmVzOwogICAgICAgIHU4IG9yaWdfdmlkZW9faXNWR0E7
CiAgICAgICAgdTE2IG9yaWdfdmlkZW9fcG9pbnRzOwoKCiAgICAgICAgdTE2IGxmYl93aWR0aDsK
ICAgICAgICB1MTYgbGZiX2hlaWdodDsKICAgICAgICB1MTYgbGZiX2RlcHRoOwogICAgICAgIHUz
MiBsZmJfYmFzZTsKICAgICAgICB1MzIgbGZiX3NpemU7CiAgICAgICAgdTE2IGRvbnR1c2UyLCBk
b250dXNlMzsKICAgICAgICB1MTYgbGZiX2xpbmVsZW5ndGg7CiAgICAgICAgdTggcmVkX3NpemU7
CiAgICAgICAgdTggcmVkX3BvczsKICAgICAgICB1OCBncmVlbl9zaXplOwogICAgICAgIHU4IGdy
ZWVuX3BvczsKICAgICAgICB1OCBibHVlX3NpemU7CiAgICAgICAgdTggYmx1ZV9wb3M7CiAgICAg
ICAgdTggcnN2ZF9zaXplOwogICAgICAgIHU4IHJzdmRfcG9zOwogICAgICAgIHUxNiB2ZXNhcG1f
c2VnOwogICAgICAgIHUxNiB2ZXNhcG1fb2ZmOwogICAgICAgIHUxNiBwYWdlczsKCn07CgpleHRl
cm4gc3RydWN0IHNjcmVlbl9pbmZvIHNjcmVlbl9pbmZvOwojIDEzOSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCB0dHlfZmxpcF9idWZmZXIgewogICAg
ICAgIHN0cnVjdCB0cV9zdHJ1Y3QgdHF1ZXVlOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgcHR5
X3NlbTsKICAgICAgICBjaGFyICpjaGFyX2J1Zl9wdHI7CiAgICAgICAgdW5zaWduZWQgY2hhciAq
ZmxhZ19idWZfcHRyOwogICAgICAgIGludCBjb3VudDsKICAgICAgICBpbnQgYnVmX251bTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIGNoYXJfYnVmWzIqNTEyXTsKICAgICAgICBjaGFyIGZsYWdfYnVm
WzIqNTEyXTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNsb3BbNF07Cn07CiMgMjU5ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90dHkuaCIKc3RydWN0IHR0eV9zdHJ1Y3Qgewog
ICAgICAgIGludCBtYWdpYzsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciBkcml2ZXI7CiAgICAg
ICAgc3RydWN0IHR0eV9sZGlzYyBsZGlzYzsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAqdGVybWlv
cywgKnRlcm1pb3NfbG9ja2VkOwogICAgICAgIGludCBwZ3JwOwogICAgICAgIGludCBzZXNzaW9u
OwogICAgICAgIGtkZXZfdCBkZXZpY2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAg
ICAgICBpbnQgY291bnQ7CiAgICAgICAgc3RydWN0IHdpbnNpemUgd2luc2l6ZTsKICAgICAgICB1
bnNpZ25lZCBjaGFyIHN0b3BwZWQ6MSwgaHdfc3RvcHBlZDoxLCBmbG93X3N0b3BwZWQ6MSwgcGFj
a2V0OjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBsb3dfbGF0ZW5jeToxLCB3YXJuZWQ6MTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIGN0cmxfc3RhdHVzOwoKICAgICAgICBzdHJ1Y3QgdHR5X3N0cnVj
dCAqbGluazsKICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFzeW5jOwogICAgICAgIHN0
cnVjdCB0dHlfZmxpcF9idWZmZXIgZmxpcDsKICAgICAgICBpbnQgbWF4X2ZsaXBfY250OwogICAg
ICAgIGludCBhbHRfc3BlZWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd3JpdGVfd2FpdDsK
ICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCByZWFkX3dhaXQ7CiAgICAgICAgc3RydWN0IHRxX3N0
cnVjdCB0cV9oYW5ndXA7CiAgICAgICAgdm9pZCAqZGlzY19kYXRhOwogICAgICAgIHZvaWQgKmRy
aXZlcl9kYXRhOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdHR5X2ZpbGVzOwoKCgoKCgoKICAg
ICAgICB1bnNpZ25lZCBpbnQgY29sdW1uOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG5leHQ6MSwg
ZXJhc2luZzoxLCByYXc6MSwgcmVhbF9yYXc6MSwgaWNhbm9uOjE7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBjbG9zaW5nOjE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbWluaW11bV90b193YWtlOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgb3ZlcnJ1bl90aW1lOwogICAgICAgIGludCBudW1fb3ZlcnJ1
bjsKICAgICAgICB1bnNpZ25lZCBsb25nIHByb2Nlc3NfY2hhcl9tYXBbMjU2Lyg4KnNpemVvZih1
bnNpZ25lZCBsb25nKSldOwogICAgICAgIGNoYXIgKnJlYWRfYnVmOwogICAgICAgIGludCByZWFk
X2hlYWQ7CiAgICAgICAgaW50IHJlYWRfdGFpbDsKICAgICAgICBpbnQgcmVhZF9jbnQ7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyByZWFkX2ZsYWdzWzQwOTYvKDgqc2l6ZW9mKHVuc2lnbmVkIGxvbmcp
KV07CiAgICAgICAgaW50IGNhbm9uX2RhdGE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjYW5vbl9o
ZWFkOwogICAgICAgIHVuc2lnbmVkIGludCBjYW5vbl9jb2x1bW47CiAgICAgICAgc3RydWN0IHNl
bWFwaG9yZSBhdG9taWNfcmVhZDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGF0b21pY193cml0
ZTsKICAgICAgICBzcGlubG9ja190IHJlYWRfbG9jazsKCiAgICAgICAgc3RydWN0IHRxX3N0cnVj
dCBTQUtfdHE7Cn07CiMgMzQxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC90
dHkuaCIKZXh0ZXJuIHZvaWQgdHR5X3dyaXRlX2ZsdXNoKHN0cnVjdCB0dHlfc3RydWN0ICopOwoK
ZXh0ZXJuIHN0cnVjdCB0ZXJtaW9zIHR0eV9zdGRfdGVybWlvczsKZXh0ZXJuIHN0cnVjdCB0dHlf
c3RydWN0ICogcmVkaXJlY3Q7CmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIGxkaXNjc1tdOwpleHRl
cm4gaW50IGZnX2NvbnNvbGUsIGxhc3RfY29uc29sZSwgd2FudF9jb25zb2xlOwoKZXh0ZXJuIGlu
dCBrbXNnX3JlZGlyZWN0OwoKZXh0ZXJuIHZvaWQgY29uX2luaXQodm9pZCk7CmV4dGVybiB2b2lk
IGNvbnNvbGVfaW5pdCh2b2lkKTsKCmV4dGVybiBpbnQgbHBfaW5pdCh2b2lkKTsKZXh0ZXJuIGlu
dCBwdHlfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgdHR5X2luaXQodm9pZCk7CmV4dGVybiBpbnQg
bXhzZXJfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBtb3hhX2luaXQodm9pZCk7CmV4dGVybiBpbnQg
aXAyX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcGN4ZV9pbml0KHZvaWQpOwpleHRlcm4gaW50IHBj
X2luaXQodm9pZCk7CmV4dGVybiBpbnQgdmNzX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcnBfaW5p
dCh2b2lkKTsKZXh0ZXJuIGludCBjeV9pbml0KHZvaWQpOwpleHRlcm4gaW50IHN0bF9pbml0KHZv
aWQpOwpleHRlcm4gaW50IHN0bGlfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzcGVjaWFsaXhfaW5p
dCh2b2lkKTsKZXh0ZXJuIGludCBlc3BzZXJpYWxfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBtYWNz
ZXJpYWxfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBhMjIzMmJvYXJkX2luaXQodm9pZCk7CgpleHRl
cm4gaW50IHR0eV9wYXJhbm9pYV9jaGVjayhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBrZGV2X3Qg
ZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyb3V0aW5l
KTsKZXh0ZXJuIGNoYXIgKnR0eV9uYW1lKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgKmJ1
Zik7CmV4dGVybiB2b2lkIHR0eV93YWl0X3VudGlsX3NlbnQoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0
dHksIGxvbmcgdGltZW91dCk7CmV4dGVybiBpbnQgdHR5X2NoZWNrX2NoYW5nZShzdHJ1Y3QgdHR5
X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHN0b3BfdHR5KHN0cnVjdCB0dHlfc3RydWN0ICog
dHR5KTsKZXh0ZXJuIHZvaWQgc3RhcnRfdHR5KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0
ZXJuIGludCB0dHlfcmVnaXN0ZXJfbGRpc2MoaW50IGRpc2MsIHN0cnVjdCB0dHlfbGRpc2MgKm5l
d19sZGlzYyk7CmV4dGVybiBpbnQgdHR5X3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdHR5X2RyaXZl
ciAqZHJpdmVyKTsKZXh0ZXJuIGludCB0dHlfdW5yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR0eV9k
cml2ZXIgKmRyaXZlcik7CmV4dGVybiB2b2lkIHR0eV9yZWdpc3Rlcl9kZXZmcyAoc3RydWN0IHR0
eV9kcml2ZXIgKmRyaXZlciwgdW5zaWduZWQgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIG1pbm9yKTsKZXh0ZXJuIHZvaWQgdHR5X3VucmVnaXN0ZXJf
ZGV2ZnMgKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHVuc2lnbmVkIG1pbm9yKTsKZXh0ZXJu
IGludCB0dHlfcmVhZF9yYXdfZGF0YShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCB1bnNpZ25lZCBj
aGFyICpidWZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZsZW4pOwpleHRl
cm4gdm9pZCB0dHlfd3JpdGVfbWVzc2FnZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBjaGFyICpt
c2cpOwoKZXh0ZXJuIGludCBpc19vcnBoYW5lZF9wZ3JwKGludCBwZ3JwKTsKZXh0ZXJuIGludCBp
c19pZ25vcmVkKGludCBzaWcpOwpleHRlcm4gaW50IHR0eV9zaWduYWwoaW50IHNpZywgc3RydWN0
IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiB2b2lkIHR0eV9oYW5ndXAoc3RydWN0IHR0eV9zdHJ1
Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCB0dHlfdmhhbmd1cChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0
eSk7CmV4dGVybiB2b2lkIHR0eV91bmhhbmd1cChzdHJ1Y3QgZmlsZSAqZmlscCk7CmV4dGVybiBp
bnQgdHR5X2h1bmdfdXBfcChzdHJ1Y3QgZmlsZSAqIGZpbHApOwpleHRlcm4gdm9pZCBkb19TQUso
c3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiB2b2lkIGRpc2Fzc29jaWF0ZV9jdHR5KGlu
dCBwcml2KTsKZXh0ZXJuIHZvaWQgdHR5X2ZsaXBfYnVmZmVyX3B1c2goc3RydWN0IHR0eV9zdHJ1
Y3QgKnR0eSk7CmV4dGVybiBpbnQgdHR5X2dldF9iYXVkX3JhdGUoc3RydWN0IHR0eV9zdHJ1Y3Qg
KnR0eSk7CgoKZXh0ZXJuIHN0cnVjdCB0dHlfbGRpc2MgdHR5X2xkaXNjX05fVFRZOwoKCmV4dGVy
biBpbnQgbl90dHlfaW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICog
ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs
b25nIGFyZyk7CgoKCmV4dGVybiB2b2lkIHNlcmlhbF9jb25zb2xlX2luaXQodm9pZCk7CgoKCmV4
dGVybiBpbnQgcGN4ZV9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpm
aWxwKTsKCgoKZXh0ZXJuIHZvaWQgY29uc29sZV9wcmludChjb25zdCBjaGFyICopOwoKCgpleHRl
cm4gaW50IHZ0X2lvY3RsKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICogZmls
ZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFy
Zyk7CiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zZW0uaCIgMQoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2lwYy5oIiAxCiMgOSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaXBjLmgiCnN0cnVjdCBpcGNfcGVybQp7CiAg
ICAgICAgX19rZXJuZWxfa2V5X3Qga2V5OwogICAgICAgIF9fa2VybmVsX3VpZF90IHVpZDsKICAg
ICAgICBfX2tlcm5lbF9naWRfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfdWlkX3QgY3VpZDsKICAg
ICAgICBfX2tlcm5lbF9naWRfdCBjZ2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBtb2RlOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHNlcTsKfTsKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9pcGNidWYuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9hc20vaXBjYnVmLmgiCnN0cnVjdCBpcGM2NF9wZXJtCnsKICAgICAgICBfX2tlcm5lbF9r
ZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxf
Z2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCBjdWlkOwogICAgICAgIF9fa2Vy
bmVsX2dpZDMyX3QgY2dpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgbW9kZTsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBfX3BhZDE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VxOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IF9fcGFkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKfTsKIyAyMiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvaXBjLmgiIDIKIyA1NyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvaXBjLmgiCnN0cnVjdCBrZXJuX2lwY19wZXJtCnsKICAgICAgICBrZXlf
dCBrZXk7CiAgICAgICAgdWlkX3QgdWlkOwogICAgICAgIGdpZF90IGdpZDsKICAgICAgICB1aWRf
dCBjdWlkOwogICAgICAgIGdpZF90IGNnaWQ7CiAgICAgICAgbW9kZV90IG1vZGU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzZXE7Cn07CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUv
bGludXgvc2VtLmgiIDIKIyAyMyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
c2VtLmgiCnN0cnVjdCBzZW1pZF9kcyB7CiAgICAgICAgc3RydWN0IGlwY19wZXJtIHNlbV9wZXJt
OwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgX19rZXJuZWxfdGlt
ZV90IHNlbV9jdGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBzdHJ1
Y3Qgc2VtX3F1ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoqc2Vt
X3BlbmRpbmdfbGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc2VtX25zZW1zOwp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2lu
Y2x1ZGUvYXNtL3NlbWJ1Zi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRl
L2FzbS9zZW1idWYuaCIKc3RydWN0IHNlbWlkNjRfZHMgewogICAgICAgIHN0cnVjdCBpcGM2NF9w
ZXJtIHNlbV9wZXJtOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9jdGlt
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNlbV9uc2VtczsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAgICAgICB1bnNp
Z25lZCBsb25nIF9fdW51c2VkNDsKfTsKIyAzNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvc2VtLmgiIDIKCgpzdHJ1Y3Qgc2VtYnVmIHsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzZW1fbnVtOwogICAgICAgIHNob3J0IHNlbV9vcDsKICAgICAgICBzaG9ydCBzZW1fZmxnOwp9
OwoKCnVuaW9uIHNlbXVuIHsKICAgICAgICBpbnQgdmFsOwogICAgICAgIHN0cnVjdCBzZW1pZF9k
cyAqYnVmOwogICAgICAgIHVuc2lnbmVkIHNob3J0ICphcnJheTsKICAgICAgICBzdHJ1Y3Qgc2Vt
aW5mbyAqX19idWY7CiAgICAgICAgdm9pZCAqX19wYWQ7Cn07CgpzdHJ1Y3Qgc2VtaW5mbyB7CiAg
ICAgICAgaW50IHNlbW1hcDsKICAgICAgICBpbnQgc2VtbW5pOwogICAgICAgIGludCBzZW1tbnM7
CiAgICAgICAgaW50IHNlbW1udTsKICAgICAgICBpbnQgc2VtbXNsOwogICAgICAgIGludCBzZW1v
cG07CiAgICAgICAgaW50IHNlbXVtZTsKICAgICAgICBpbnQgc2VtdXN6OwogICAgICAgIGludCBz
ZW12bXg7CiAgICAgICAgaW50IHNlbWFlbTsKfTsKIyA4MiAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvc2VtLmgiCnN0cnVjdCBzZW0gewogICAgICAgIGludCBzZW12YWw7CiAg
ICAgICAgaW50IHNlbXBpZDsKfTsKCgpzdHJ1Y3Qgc2VtX2FycmF5IHsKICAgICAgICBzdHJ1Y3Qg
a2Vybl9pcGNfcGVybSBzZW1fcGVybTsKICAgICAgICB0aW1lX3Qgc2VtX290aW1lOwogICAgICAg
IHRpbWVfdCBzZW1fY3RpbWU7CiAgICAgICAgc3RydWN0IHNlbSAqc2VtX2Jhc2U7CiAgICAgICAg
c3RydWN0IHNlbV9xdWV1ZSAqc2VtX3BlbmRpbmc7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAq
KnNlbV9wZW5kaW5nX2xhc3Q7CiAgICAgICAgc3RydWN0IHNlbV91bmRvICp1bmRvOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc2VtX25zZW1zOwp9OwoKCnN0cnVjdCBzZW1fcXVldWUgewogICAgICAg
IHN0cnVjdCBzZW1fcXVldWUgKiBuZXh0OwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKiogcHJl
djsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QqIHNsZWVwZXI7CiAgICAgICAgc3RydWN0IHNl
bV91bmRvICogdW5kbzsKICAgICAgICBpbnQgcGlkOwogICAgICAgIGludCBzdGF0dXM7CiAgICAg
ICAgc3RydWN0IHNlbV9hcnJheSAqIHNtYTsKICAgICAgICBpbnQgaWQ7CiAgICAgICAgc3RydWN0
IHNlbWJ1ZiAqIHNvcHM7CiAgICAgICAgaW50IG5zb3BzOwogICAgICAgIGludCBhbHRlcjsKfTsK
CgoKCnN0cnVjdCBzZW1fdW5kbyB7CiAgICAgICAgc3RydWN0IHNlbV91bmRvICogcHJvY19uZXh0
OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqIGlkX25leHQ7CiAgICAgICAgaW50IHNlbWlkOwog
ICAgICAgIHNob3J0ICogc2VtYWRqOwp9OwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs
b25nIHN5c19zZW1nZXQgKGtleV90IGtleSwgaW50IG5zZW1zLCBpbnQgc2VtZmxnKTsKIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZW1vcCAoaW50IHNlbWlkLCBzdHJ1Y3Qg
c2VtYnVmICpzb3BzLCB1bnNpZ25lZCBuc29wcyk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDAp
KSkgbG9uZyBzeXNfc2VtY3RsIChpbnQgc2VtaWQsIGludCBzZW1udW0sIGludCBjbWQsIHVuaW9u
IHNlbXVuIGFyZyk7CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zaWduYWwu
aCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zaWduYWwuaCIg
MQoKCgoKCgpzdHJ1Y3Qgc2lnaW5mbzsKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvYXNtL3NpZ25hbC5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgb2xkX3NpZ3NldF90OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lnWyg2NCAvIDMyKV07Cn0gc2ln
c2V0X3Q7CiMgMTI5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc2lnbmFsLmgi
CnR5cGVkZWYgdm9pZCAoKl9fc2lnaGFuZGxlcl90KShpbnQpOwoKCgoKCgpzdHJ1Y3Qgb2xkX3Np
Z2FjdGlvbiB7CiAgICAgICAgX19zaWdoYW5kbGVyX3Qgc2FfaGFuZGxlcjsKICAgICAgICBvbGRf
c2lnc2V0X3Qgc2FfbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwogICAgICAg
IHZvaWQgKCpzYV9yZXN0b3Jlcikodm9pZCk7Cn07CgpzdHJ1Y3Qgc2lnYWN0aW9uIHsKICAgICAg
ICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5kbGVyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FfZmxh
Z3M7CiAgICAgICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSh2b2lkKTsKICAgICAgICBzaWdzZXRfdCBz
YV9tYXNrOwp9OwoKc3RydWN0IGtfc2lnYWN0aW9uIHsKICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9u
IHNhOwp9OwojIDE3MSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NpZ25hbC5o
Igp0eXBlZGVmIHN0cnVjdCBzaWdhbHRzdGFjayB7CiAgICAgICAgdm9pZCAqc3Nfc3A7CiAgICAg
ICAgaW50IHNzX2ZsYWdzOwogICAgICAgIHNpemVfdCBzc19zaXplOwp9IHN0YWNrX3Q7CgoKCgoK
CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2lnYWRkc2V0KHNpZ3NldF90ICpzZXQsIGludCBfc2ln
KQp7CiAgICAgICAgX19hc21fXygiYnRzbCAlMSwlMCIgOiAiPW0iKCpzZXQpIDogIklyIihfc2ln
IC0gMSkgOiAiY2MiKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBzaWdkZWxzZXQoc2lnc2V0
X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBfX2FzbV9fKCJidHJsICUxLCUwIiA6ICI9bSIo
KnNldCkgOiAiSXIiKF9zaWcgLSAxKSA6ICJjYyIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQg
X19jb25zdF9zaWdpc21lbWJlcihzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIHVu
c2lnbmVkIGxvbmcgc2lnID0gX3NpZyAtIDE7CiAgICAgICAgcmV0dXJuIDEgJiAoc2V0LT5zaWdb
c2lnIC8gMzJdID4+IChzaWcgJSAzMikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19nZW5f
c2lnaXNtZW1iZXIoc2lnc2V0X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBpbnQgcmV0Owog
ICAgICAgIF9fYXNtX18oImJ0bCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAg
OiAiPXIiKHJldCkgOiAibSIoKnNldCksICJJciIoX3NpZy0xKSA6ICJjYyIpOwogICAgICAgIHJl
dHVybiByZXQ7Cn0KIyAyMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zaWdu
YWwuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHNpZ2ZpbmRpbndvcmQodW5zaWduZWQgbG9uZyB3
b3JkKQp7CiAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMCIgOiAiPXIiKHdvcmQpIDogInJtIih3
b3JkKSA6ICJjYyIpOwogICAgICAgIHJldHVybiB3b3JkOwp9CiMgNSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9hc20vc2lnaW5mby5oIiAxCgoKCgoKCgp0eXBlZGVmIHVuaW9uIHNpZ3ZhbCB7
CiAgICAgICAgaW50IHNpdmFsX2ludDsKICAgICAgICB2b2lkICpzaXZhbF9wdHI7Cn0gc2lndmFs
X3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBzaWdpbmZvIHsKICAgICAgICBpbnQgc2lfc2lnbm87CiAg
ICAgICAgaW50IHNpX2Vycm5vOwogICAgICAgIGludCBzaV9jb2RlOwoKICAgICAgICB1bmlvbiB7
CiAgICAgICAgICAgICAgICBpbnQgX3BhZFsoKDEyOC9zaXplb2YoaW50KSkgLSAzKV07CgoKICAg
ICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICB9IF9r
aWxsOwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgX3RpbWVyMTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IF90aW1lcjI7CiAgICAgICAgICAgICAgICB9IF90aW1lcjsKCgogICAgICAgICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX3BpZDsKICAgICAgICAgICAgICAg
ICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgc2lndmFsX3QgX3Np
Z3ZhbDsKICAgICAgICAgICAgICAgIH0gX3J0OwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3Qgewog
ICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAgICAgICAgICAgICAgICAgICAg
ICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX3N0YXR1czsKICAgICAg
ICAgICAgICAgICAgICAgICAgY2xvY2tfdCBfdXRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAg
IGNsb2NrX3QgX3N0aW1lOwogICAgICAgICAgICAgICAgfSBfc2lnY2hsZDsKCgogICAgICAgICAg
ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX2FkZHI7CiAgICAg
ICAgICAgICAgICB9IF9zaWdmYXVsdDsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IF9iYW5kOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQg
X2ZkOwogICAgICAgICAgICAgICAgfSBfc2lncG9sbDsKICAgICAgICB9IF9zaWZpZWxkczsKfSBz
aWdpbmZvX3Q7CiMgMjAwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc2lnaW5m
by5oIgp0eXBlZGVmIHN0cnVjdCBzaWdldmVudCB7CiAgICAgICAgc2lndmFsX3Qgc2lnZXZfdmFs
dWU7CiAgICAgICAgaW50IHNpZ2V2X3NpZ25vOwogICAgICAgIGludCBzaWdldl9ub3RpZnk7CiAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgaW50IF9wYWRbKCg2NC9zaXplb2YoaW50KSkg
LSAzKV07CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAoKl9mdW5jdGlvbikoc2lndmFsX3QpOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpfYXR0cmlidXRlOwogICAgICAgICAgICAgICAgfSBfc2lnZXZfdGhyZWFkOwogICAgICAgIH0g
X3NpZ2V2X3VuOwp9IHNpZ2V2ZW50X3Q7CgoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgY29weV9z
aWdpbmZvKHNpZ2luZm9fdCAqdG8sIHNpZ2luZm9fdCAqZnJvbSkKewogICAgICAgIGlmIChmcm9t
LT5zaV9jb2RlIDwgMCkKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXpl
b2Yoc2lnaW5mb190KSkgPyBfX2NvbnN0YW50X21lbWNweSgodG8pLChmcm9tKSwoc2l6ZW9mKHNp
Z2luZm9fdCkpKSA6IF9fbWVtY3B5KCh0byksKGZyb20pLChzaXplb2Yoc2lnaW5mb190KSkpKTsK
ICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDMqc2l6
ZW9mKGludCkgKyBzaXplb2YoZnJvbS0+X3NpZmllbGRzLl9zaWdjaGxkKSkgPyBfX2NvbnN0YW50
X21lbWNweSgodG8pLChmcm9tKSwoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVs
ZHMuX3NpZ2NobGQpKSkgOiBfX21lbWNweSgodG8pLChmcm9tKSwoMypzaXplb2YoaW50KSArIHNp
emVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKSkpOwp9CgpleHRlcm4gaW50IGNvcHlfc2ln
aW5mb190b191c2VyKHNpZ2luZm9fdCAqdG8sIHNpZ2luZm9fdCAqZnJvbSk7CiMgNiAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKCgoKCgoKc3RydWN0IHNp
Z3F1ZXVlIHsKICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKm5leHQ7CiAgICAgICAgc2lnaW5mb190
IGluZm87Cn07CgpzdHJ1Y3Qgc2lncGVuZGluZyB7CiAgICAgICAgc3RydWN0IHNpZ3F1ZXVlICpo
ZWFkLCAqKnRhaWw7CiAgICAgICAgc2lnc2V0X3Qgc2lnbmFsOwp9OwojIDEwOCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBz
aWdvcnNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90ICphLCBjb25zdCBzaWdzZXRfdCAq
YikgeyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEsIGIyLCBiMzsgdW5zaWdu
ZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBhMCA9IGEtPnNp
Z1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBhMyA9IGEt
PnNpZ1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9
IGItPnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsgci0+c2lnWzQqaSswXSA9ICgoYTAp
IHwgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyByLT5zaWdbNCppKzJdID0g
KChhMikgfCAoYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMpIHwgKGIzKSk7IH0gc3dpdGNoICgo
NjQgLyAzMikgJSA0KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0
KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNp
Z1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIw
KSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikg
fCAoYjIpKTsgYnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0
KmkrMV07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyByLT5zaWdbNCpp
KzBdID0gKChhMCkgfCAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpIHwgKGIxKSk7IGJyZWFr
OyBjYXNlIDE6IGEwID0gYS0+c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdbNCppKzBdOyByLT5zaWdb
NCppKzBdID0gKChhMCkgfCAoYjApKTsgYnJlYWs7IH0gfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBz
aWdhbmRzZXRzKHNpZ3NldF90ICpyLCBjb25zdCBzaWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3Qg
KmIpIHsgdW5zaWduZWQgbG9uZyBhMCwgYTEsIGEyLCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2ln
bmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5z
aWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBh
LT5zaWdbNCppKzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIg
PSBiLT5zaWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEw
KSAmIChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsgci0+c2lnWzQqaSsyXSA9
ICgoYTIpICYgKGIyKSk7IHItPnNpZ1s0KmkrM10gPSAoKGEzKSAmIChiMykpOyB9IHN3aXRjaCAo
KDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdb
NCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5z
aWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChi
MCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIp
ICYgKGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdb
NCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgci0+c2lnWzQq
aSswXSA9ICgoYTApICYgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIChiMSkpOyBicmVh
azsgY2FzZSAxOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+c2ln
WzQqaSswXSA9ICgoYTApICYgKGIwKSk7IGJyZWFrOyB9IH0KCgpzdGF0aWMgaW5saW5lIHZvaWQg
c2lnbmFuZHNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90ICphLCBjb25zdCBzaWdzZXRf
dCAqYikgeyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEsIGIyLCBiMzsgdW5z
aWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBhMCA9IGEt
PnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBhMyA9
IGEtPnNpZ1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBi
MiA9IGItPnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsgci0+c2lnWzQqaSswXSA9ICgo
YTApICYgfihiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiB+KGIxKSk7IHItPnNpZ1s0Kmkr
Ml0gPSAoKGEyKSAmIH4oYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMpICYgfihiMykpOyB9IHN3
aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBh
LT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEg
PSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNpZ1s0KmkrMF0gPSAoKGEw
KSAmIH4oYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyByLT5zaWdbNCppKzJd
ID0gKChhMikgJiB+KGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEg
PSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsg
ci0+c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiB+
KGIxKSk7IGJyZWFrOyBjYXNlIDE6IGEwID0gYS0+c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdbNCpp
KzBdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IGJyZWFrOyB9IH0KIyAxNDAgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIgpzdGF0aWMgaW5saW5l
IHZvaWQgc2lnbm90c2V0KHNpZ3NldF90ICpzZXQpIHsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkg
PSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNp
Z1s0KmkrMF0pKTsgc2V0LT5zaWdbNCppKzFdID0gKH4oc2V0LT5zaWdbNCppKzFdKSk7IHNldC0+
c2lnWzQqaSsyXSA9ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBzZXQtPnNpZ1s0KmkrM10gPSAofihz
ZXQtPnNpZ1s0KmkrM10pKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBzZXQt
PnNpZ1s0KmkrMl0gPSAofihzZXQtPnNpZ1s0KmkrMl0pKTsgY2FzZSAyOiBzZXQtPnNpZ1s0Kmkr
MV0gPSAofihzZXQtPnNpZ1s0KmkrMV0pKTsgY2FzZSAxOiBzZXQtPnNpZ1s0KmkrMF0gPSAofihz
ZXQtPnNpZ1s0KmkrMF0pKTsgfSB9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZW1wdHlzZXQo
c2lnc2V0X3QgKnNldCkKewogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0
aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3Vu
dF9tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNp
emVvZihzaWdzZXRfdCkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEw
MTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IChfX2J1
aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19tZW1zZXRfZ2VuZXJpYygo
KChzZXQpKSksKCgoMCkpKSwoKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVy
aWMoKChzZXQpKSwoKDApKSwoKHNpemVvZihzaWdzZXRfdCkpKSkpKTsKICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTog
c2V0LT5zaWdbMF0gPSAwOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgc2lnZmlsbHNldChzaWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNo
ICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRp
bl9jb25zdGFudF9wKC0xKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90
KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFV
TCoodW5zaWduZWQgY2hhcikoLTEpKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpIDogX19jb25zdGFu
dF9jX21lbXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwo
KHNpemVvZihzaWdzZXRfdCkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2ln
c2V0X3QpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKHNldCkpKSwoKCgtMSkpKSwoKChzaXplb2Yo
c2lnc2V0X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChzZXQpKSwoKC0xKSksKChzaXplb2Yo
c2lnc2V0X3QpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNl
dC0+c2lnWzFdID0gLTE7CiAgICAgICAgY2FzZSAxOiBzZXQtPnNpZ1swXSA9IC0xOwogICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgpleHRlcm4gY2hhciAqIHJlbmRlcl9zaWdzZXRf
dChzaWdzZXRfdCAqc2V0LCBjaGFyICpidWZmZXIpOwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2ln
YWRkc2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBz
ZXQtPnNpZ1swXSB8PSBtYXNrOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZGVsc2V0bWFzayhz
aWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSAm
PSB+bWFzazsKfQoKc3RhdGljIGlubGluZSBpbnQgc2lndGVzdHNldG1hc2soc2lnc2V0X3QgKnNl
dCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgcmV0dXJuIChzZXQtPnNpZ1swXSAmIG1h
c2spICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0KHNpZ3NldF90ICpzZXQs
IHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdID0gbWFzazsKICAgICAg
ICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAo
X19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihs
b25nKSooKDY0IC8gMzIpLTEpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCZz
ZXQtPnNpZ1sxXSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9m
KGxvbmcpKigoNjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoJnNldC0+c2ln
WzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YobG9uZykq
KCg2NCAvIDMyKS0xKSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSoo
KDY0IC8gMzIpLTEpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKCZzZXQtPnNpZ1sxXSkpKSwoKCgw
KSkpLCgoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMo
KCgmc2V0LT5zaWdbMV0pKSwoKDApKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSk7
CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gMDsK
ICAgICAgICBjYXNlIDE6IDsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0
c2V0aW52KHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+
c2lnWzBdID0gfm1hc2s7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKC0xKSA/IChfX2J1aWx0
aW5fY29uc3RhbnRfcCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSA/IF9fY29uc3RhbnRf
Y19hbmRfY291bnRfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2ln
bmVkIGNoYXIpKC0xKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0
YW50X2NfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNo
YXIpKC0xKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8gX19tZW1zZXRfZ2VuZXJp
YygoKCgmc2V0LT5zaWdbMV0pKSksKCgoLTEpKSksKCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMikt
MSkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKCZzZXQtPnNpZ1sxXSkpLCgoLTEpKSwoKHNpemVv
Zihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICBjYXNlIDI6IHNldC0+c2lnWzFdID0gLTE7CiAgICAgICAgY2FzZSAxOiA7CiAgICAgICAgfQp9
CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NpZ3BlbmRpbmcoc3RydWN0IHNpZ3BlbmRpbmcg
KnNpZykKewogICAgICAgIHNpZ2VtcHR5c2V0KCZzaWctPnNpZ25hbCk7CiAgICAgICAgc2lnLT5o
ZWFkID0gKCh2b2lkICopMCk7CiAgICAgICAgc2lnLT50YWlsID0gJnNpZy0+aGVhZDsKfQoKZXh0
ZXJuIGxvbmcgZG9fc2lncGVuZGluZyh2b2lkICosIHVuc2lnbmVkIGxvbmcpOwojIDI3ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2VjdXJlYml0cy5oIiAxCgoKCgoKZXh0ZXJuIHVu
c2lnbmVkIHNlY3VyZWJpdHM7CiMgMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9m
c19zdHJ1Y3QuaCIgMQoKCgoKc3RydWN0IGZzX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgY291
bnQ7CiAgICAgICAgcndsb2NrX3QgbG9jazsKICAgICAgICBpbnQgdW1hc2s7CiAgICAgICAgc3Ry
dWN0IGRlbnRyeSAqIHJvb3QsICogcHdkLCAqIGFsdHJvb3Q7CiAgICAgICAgc3RydWN0IHZmc21v
dW50ICogcm9vdG1udCwgKiBwd2RtbnQsICogYWx0cm9vdG1udDsKfTsKIyAyMCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvZnNfc3RydWN0LmgiCmV4dGVybiB2b2lkIGV4aXRf
ZnMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBzZXRfZnNfYWx0cm9vdCh2b2lk
KTsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHNldF9mc19yb290KHN0cnVjdCBmc19zdHJ1Y3Qg
KmZzLAogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50LAogICAgICAgIHN0cnVjdCBkZW50cnkg
KmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9yb290OwogICAgICAgIHN0cnVj
dCB2ZnNtb3VudCAqb2xkX3Jvb3RtbnQ7CiAgICAgICAgd3JpdGVfbG9jaygmZnMtPmxvY2spOwog
ICAgICAgIG9sZF9yb290ID0gZnMtPnJvb3Q7CiAgICAgICAgb2xkX3Jvb3RtbnQgPSBmcy0+cm9v
dG1udDsKICAgICAgICBmcy0+cm9vdG1udCA9IG1udGdldChtbnQpOwogICAgICAgIGZzLT5yb290
ID0gZGdldChkZW50cnkpOwogICAgICAgIGFzbSB2b2xhdGlsZSgibG9jayA7IGFkZGwgJCIgIjB4
MDEwMDAwMDAiICIsJTAiOiI9bSIgKCgmZnMtPmxvY2spLT5sb2NrKSA6IDogIm1lbW9yeSIpOwog
ICAgICAgIGlmIChvbGRfcm9vdCkgewogICAgICAgICAgICAgICAgZHB1dChvbGRfcm9vdCk7CiAg
ICAgICAgICAgICAgICBtbnRwdXQob2xkX3Jvb3RtbnQpOwogICAgICAgIH0KfQoKCgoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3B3ZChzdHJ1Y3QgZnNfc3RydWN0ICpmcywKICAgICAgICBz
dHJ1Y3QgdmZzbW91bnQgKm1udCwKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAg
ICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcHdkOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqb2xk
X3B3ZG1udDsKICAgICAgICB3cml0ZV9sb2NrKCZmcy0+bG9jayk7CiAgICAgICAgb2xkX3B3ZCA9
IGZzLT5wd2Q7CiAgICAgICAgb2xkX3B3ZG1udCA9IGZzLT5wd2RtbnQ7CiAgICAgICAgZnMtPnB3
ZG1udCA9IG1udGdldChtbnQpOwogICAgICAgIGZzLT5wd2QgPSBkZ2V0KGRlbnRyeSk7CiAgICAg
ICAgYXNtIHZvbGF0aWxlKCJsb2NrIDsgYWRkbCAkIiAiMHgwMTAwMDAwMCIgIiwlMCI6Ij1tIiAo
KCZmcy0+bG9jayktPmxvY2spIDogOiAibWVtb3J5Iik7CiAgICAgICAgaWYgKG9sZF9wd2QpIHsK
ICAgICAgICAgICAgICAgIGRwdXQob2xkX3B3ZCk7CiAgICAgICAgICAgICAgICBtbnRwdXQob2xk
X3B3ZG1udCk7CiAgICAgICAgfQp9CgpzdHJ1Y3QgZnNfc3RydWN0ICpjb3B5X2ZzX3N0cnVjdChz
dHJ1Y3QgZnNfc3RydWN0ICpvbGQpOwp2b2lkIHB1dF9mc19zdHJ1Y3Qoc3RydWN0IGZzX3N0cnVj
dCAqZnMpOwojIDI5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5o
IiAyCgpzdHJ1Y3QgZXhlY19kb21haW47CiMgNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGF2ZW5ydW5bXTsKIyA3NiAi
L3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIGludCBu
cl9ydW5uaW5nLCBucl90aHJlYWRzOwpleHRlcm4gaW50IGxhc3RfcGlkOwoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3BhcmFtLmgiIDEKIyA4MiAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIKc3RydWN0IHJ1c2FnZSB7CiAgICAgICAg
c3RydWN0IHRpbWV2YWwgcnVfdXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgcnVfc3RpbWU7
CiAgICAgICAgbG9uZyBydV9tYXhyc3M7CiAgICAgICAgbG9uZyBydV9peHJzczsKICAgICAgICBs
b25nIHJ1X2lkcnNzOwogICAgICAgIGxvbmcgcnVfaXNyc3M7CiAgICAgICAgbG9uZyBydV9taW5m
bHQ7CiAgICAgICAgbG9uZyBydV9tYWpmbHQ7CiAgICAgICAgbG9uZyBydV9uc3dhcDsKICAgICAg
ICBsb25nIHJ1X2luYmxvY2s7CiAgICAgICAgbG9uZyBydV9vdWJsb2NrOwogICAgICAgIGxvbmcg
cnVfbXNnc25kOwogICAgICAgIGxvbmcgcnVfbXNncmN2OwogICAgICAgIGxvbmcgcnVfbnNpZ25h
bHM7CiAgICAgICAgbG9uZyBydV9udmNzdzsKICAgICAgICBsb25nIHJ1X25pdmNzdzsKfTsKCnN0
cnVjdCBybGltaXQgewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9jdXI7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBybGltX21heDsKfTsKIyA1NiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvcmVzb3VyY2UuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vcmVzb3VyY2UuaCIgMQojIDU3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51
eC9yZXNvdXJjZS5oIiAyCiMgODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiIDIKIyAxMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgiCnN0cnVjdCBzY2hlZF9wYXJhbSB7CiAgICAgICAgaW50IHNjaGVkX3ByaW9yaXR5Owp9
OwoKc3RydWN0IGNvbXBsZXRpb247CiMgMTQ0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9saW51eC9zY2hlZC5oIgpleHRlcm4gcndsb2NrX3QgdGFza2xpc3RfbG9jazsKZXh0ZXJuIHNw
aW5sb2NrX3QgcnVucXVldWVfbG9jazsKZXh0ZXJuIHNwaW5sb2NrX3QgbW1saXN0X2xvY2s7Cgpl
eHRlcm4gdm9pZCBzY2hlZF9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X2lkbGUodm9pZCk7
CmV4dGVybiB2b2lkIHNob3dfc3RhdGUodm9pZCk7CmV4dGVybiB2b2lkIGNwdV9pbml0ICh2b2lk
KTsKZXh0ZXJuIHZvaWQgdHJhcF9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCB1cGRhdGVfcHJvY2Vz
c190aW1lcyhpbnQgdXNlcik7CmV4dGVybiB2b2lkIHVwZGF0ZV9vbmVfcHJvY2VzcyhzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnAsIHVuc2lnbmVkIGxvbmcgdXNlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3lzdGVtLCBpbnQgY3B1KTsKCgpleHRlcm4gc2lnbmVk
IGxvbmcgc2NoZWR1bGVfdGltZW91dChzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDMpKSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBzY2hlZHVs
ZSh2b2lkKTsKCmV4dGVybiBpbnQgc2NoZWR1bGVfdGFzayhzdHJ1Y3QgdHFfc3RydWN0ICp0YXNr
KTsKZXh0ZXJuIHZvaWQgZmx1c2hfc2NoZWR1bGVkX3Rhc2tzKHZvaWQpOwpleHRlcm4gaW50IHN0
YXJ0X2NvbnRleHRfdGhyZWFkKHZvaWQpOwpleHRlcm4gaW50IGN1cnJlbnRfaXNfa2V2ZW50ZCh2
b2lkKTsKCgpleHRlcm4gdm9pZCBzZXRfY3B1c19hbGxvd2VkKHN0cnVjdCB0YXNrX3N0cnVjdCAq
cCwgdW5zaWduZWQgbG9uZyBuZXdfbWFzayk7CiMgMTc4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdHJ1Y3QgbmFtZXNwYWNlOwoKCgpzdHJ1Y3QgZmlsZXNf
c3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICByd2xvY2tfdCBmaWxlX2xv
Y2s7CiAgICAgICAgaW50IG1heF9mZHM7CiAgICAgICAgaW50IG1heF9mZHNldDsKICAgICAgICBp
bnQgbmV4dF9mZDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqKiBmZDsKICAgICAgICBmZF9zZXQgKmNs
b3NlX29uX2V4ZWM7CiAgICAgICAgZmRfc2V0ICpvcGVuX2ZkczsKICAgICAgICBmZF9zZXQgY2xv
c2Vfb25fZXhlY19pbml0OwogICAgICAgIGZkX3NldCBvcGVuX2Zkc19pbml0OwogICAgICAgIHN0
cnVjdCBmaWxlICogZmRfYXJyYXlbMzJdOwp9OwojIDIxNCAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIGludCBtYXhfbWFwX2NvdW50OwoKc3RydWN0
IG1tX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcDsKICAgICAg
ICByYl9yb290X3QgbW1fcmI7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcF9j
YWNoZTsKICAgICAgICBwZ2RfdCAqIHBnZDsKICAgICAgICBhdG9taWNfdCBtbV91c2VyczsKICAg
ICAgICBhdG9taWNfdCBtbV9jb3VudDsKICAgICAgICBpbnQgbWFwX2NvdW50OwogICAgICAgIHN0
cnVjdCByd19zZW1hcGhvcmUgbW1hcF9zZW07CiAgICAgICAgc3BpbmxvY2tfdCBwYWdlX3RhYmxl
X2xvY2s7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW1saXN0OwoKCgoKICAgICAgICB1bnNp
Z25lZCBsb25nIHN0YXJ0X2NvZGUsIGVuZF9jb2RlLCBzdGFydF9kYXRhLCBlbmRfZGF0YTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2JyaywgYnJrLCBzdGFydF9zdGFjazsKICAgICAgICB1
bnNpZ25lZCBsb25nIGFyZ19zdGFydCwgYXJnX2VuZCwgZW52X3N0YXJ0LCBlbnZfZW5kOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgcnNzLCB0b3RhbF92bSwgbG9ja2VkX3ZtOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZGVmX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3ZtX21hc2s7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzd2FwX2FkZHJlc3M7CgogICAgICAgIHVuc2lnbmVkIGR1bXBh
YmxlOjE7CgoKICAgICAgICBtbV9jb250ZXh0X3QgY29udGV4dDsKfTsKCmV4dGVybiBpbnQgbW1s
aXN0X25yOwojIDI1OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc2NoZWQu
aCIKc3RydWN0IHNpZ25hbF9zdHJ1Y3QgewogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAg
IHN0cnVjdCBrX3NpZ2FjdGlvbiBhY3Rpb25bNjRdOwogICAgICAgIHNwaW5sb2NrX3Qgc2lnbG9j
azsKfTsKIyAyNzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi
CnN0cnVjdCB1c2VyX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgX19jb3VudDsKICAgICAgICBh
dG9taWNfdCBwcm9jZXNzZXM7CiAgICAgICAgYXRvbWljX3QgZmlsZXM7CgoKICAgICAgICBzdHJ1
Y3QgdXNlcl9zdHJ1Y3QgKm5leHQsICoqcHByZXY7CiAgICAgICAgdWlkX3QgdWlkOwp9OwoKCgoK
CgpleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0IHJvb3RfdXNlcjsKCgpzdHJ1Y3QgdGFza19zdHJ1
Y3QgewoKCgogICAgICAgIHZvbGF0aWxlIGxvbmcgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBmbGFnczsKICAgICAgICBpbnQgc2lncGVuZGluZzsKICAgICAgICBtbV9zZWdtZW50X3QgYWRk
cl9saW1pdDsKCgoKICAgICAgICBzdHJ1Y3QgZXhlY19kb21haW4gKmV4ZWNfZG9tYWluOwogICAg
ICAgIHZvbGF0aWxlIGxvbmcgbmVlZF9yZXNjaGVkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHRy
YWNlOwoKICAgICAgICBpbnQgbG9ja19kZXB0aDsKCgoKCgoKICAgICAgICBsb25nIGNvdW50ZXI7
CiAgICAgICAgbG9uZyBuaWNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcG9saWN5OwogICAgICAg
IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tOwogICAgICAgIGludCBwcm9jZXNzb3I7CiMgMzI4ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgogICAgICAgIHVuc2lnbmVk
IGxvbmcgY3B1c19ydW5uYWJsZSwgY3B1c19hbGxvd2VkOwoKCgoKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIHJ1bl9saXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2xlZXBfdGltZTsKCiAgICAg
ICAgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0X3Rhc2ssICpwcmV2X3Rhc2s7CiAgICAgICAgc3Ry
dWN0IG1tX3N0cnVjdCAqYWN0aXZlX21tOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbG9jYWxf
cGFnZXM7CiAgICAgICAgdW5zaWduZWQgaW50IGFsbG9jYXRpb25fb3JkZXIsIG5yX2xvY2FsX3Bh
Z2VzOwoKCiAgICAgICAgc3RydWN0IGxpbnV4X2JpbmZtdCAqYmluZm10OwogICAgICAgIGludCBl
eGl0X2NvZGUsIGV4aXRfc2lnbmFsOwogICAgICAgIGludCBwZGVhdGhfc2lnbmFsOwoKICAgICAg
ICB1bnNpZ25lZCBsb25nIHBlcnNvbmFsaXR5OwogICAgICAgIGludCBkaWRfZXhlYzoxOwogICAg
ICAgIHVuc2lnbmVkIHRhc2tfZHVtcGFibGU6MTsKICAgICAgICBwaWRfdCBwaWQ7CiAgICAgICAg
cGlkX3QgcGdycDsKICAgICAgICBwaWRfdCB0dHlfb2xkX3BncnA7CiAgICAgICAgcGlkX3Qgc2Vz
c2lvbjsKICAgICAgICBwaWRfdCB0Z2lkOwoKICAgICAgICBpbnQgbGVhZGVyOwoKCgoKCiAgICAg
ICAgc3RydWN0IHRhc2tfc3RydWN0ICpwX29wcHRyLCAqcF9wcHRyLCAqcF9jcHRyLCAqcF95c3B0
ciwgKnBfb3NwdHI7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0aHJlYWRfZ3JvdXA7CgoKICAg
ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpZGhhc2hfbmV4dDsKICAgICAgICBzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKipwaWRoYXNoX3BwcmV2OwoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0
X2NobGRleGl0OwogICAgICAgIHN0cnVjdCBjb21wbGV0aW9uICp2Zm9ya19kb25lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgcnRfcHJpb3JpdHk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpdF9yZWFs
X3ZhbHVlLCBpdF9wcm9mX3ZhbHVlLCBpdF92aXJ0X3ZhbHVlOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgaXRfcmVhbF9pbmNyLCBpdF9wcm9mX2luY3IsIGl0X3ZpcnRfaW5jcjsKICAgICAgICBzdHJ1
Y3QgdGltZXJfbGlzdCByZWFsX3RpbWVyOwogICAgICAgIHN0cnVjdCB0bXMgdGltZXM7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzdGFydF90aW1lOwogICAgICAgIGxvbmcgcGVyX2NwdV91dGltZVsz
Ml0sIHBlcl9jcHVfc3RpbWVbMzJdOwoKICAgICAgICB1bnNpZ25lZCBsb25nIG1pbl9mbHQsIG1h
al9mbHQsIG5zd2FwLCBjbWluX2ZsdCwgY21hal9mbHQsIGNuc3dhcDsKICAgICAgICBpbnQgc3dh
cHBhYmxlOjE7CgogICAgICAgIHVpZF90IHVpZCxldWlkLHN1aWQsZnN1aWQ7CiAgICAgICAgZ2lk
X3QgZ2lkLGVnaWQsc2dpZCxmc2dpZDsKICAgICAgICBpbnQgbmdyb3VwczsKICAgICAgICBnaWRf
dCBncm91cHNbMzJdOwogICAgICAgIGtlcm5lbF9jYXBfdCBjYXBfZWZmZWN0aXZlLCBjYXBfaW5o
ZXJpdGFibGUsIGNhcF9wZXJtaXR0ZWQ7CiAgICAgICAgaW50IGtlZXBfY2FwYWJpbGl0aWVzOjE7
CiAgICAgICAgc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyOwoKICAgICAgICBzdHJ1Y3QgcmxpbWl0
IHJsaW1bMTFdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVzZWRfbWF0aDsKICAgICAgICBjaGFy
IGNvbW1bMTZdOwoKICAgICAgICBpbnQgbGlua19jb3VudCwgdG90YWxfbGlua19jb3VudDsKICAg
ICAgICBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5OwogICAgICAgIHVuc2lnbmVkIGludCBsb2NrczsK
CiAgICAgICAgc3RydWN0IHNlbV91bmRvICpzZW11bmRvOwogICAgICAgIHN0cnVjdCBzZW1fcXVl
dWUgKnNlbXNsZWVwaW5nOwoKICAgICAgICBzdHJ1Y3QgdGhyZWFkX3N0cnVjdCB0aHJlYWQ7Cgog
ICAgICAgIHN0cnVjdCBmc19zdHJ1Y3QgKmZzOwoKICAgICAgICBzdHJ1Y3QgZmlsZXNfc3RydWN0
ICpmaWxlczsKCiAgICAgICAgc3RydWN0IG5hbWVzcGFjZSAqbmFtZXNwYWNlOwoKICAgICAgICBz
cGlubG9ja190IHNpZ21hc2tfbG9jazsKICAgICAgICBzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCAqc2ln
OwoKICAgICAgICBzaWdzZXRfdCBibG9ja2VkOwogICAgICAgIHN0cnVjdCBzaWdwZW5kaW5nIHBl
bmRpbmc7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FzX3NzX3NwOwogICAgICAgIHNpemVfdCBz
YXNfc3Nfc2l6ZTsKICAgICAgICBpbnQgKCpub3RpZmllcikodm9pZCAqcHJpdik7CiAgICAgICAg
dm9pZCAqbm90aWZpZXJfZGF0YTsKICAgICAgICBzaWdzZXRfdCAqbm90aWZpZXJfbWFzazsKCgog
ICAgICAgIHUzMiBwYXJlbnRfZXhlY19pZDsKICAgICAgICB1MzIgc2VsZl9leGVjX2lkOwoKICAg
ICAgICBzcGlubG9ja190IGFsbG9jX2xvY2s7CgoKICAgICAgICB2b2lkICpqb3VybmFsX2luZm87
Cn07CiMgNDc0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpl
eHRlcm4gdm9pZCB5aWVsZCh2b2lkKTsKCgoKCmV4dGVybiBzdHJ1Y3QgZXhlY19kb21haW4gZGVm
YXVsdF9leGVjX2RvbWFpbjsKIyA1MzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiCnVuaW9uIHRhc2tfdW5pb24gewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVj
dCB0YXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhY2tbMjA0OCpzaXplb2YobG9uZykvc2l6
ZW9mKGxvbmcpXTsKfTsKCmV4dGVybiB1bmlvbiB0YXNrX3VuaW9uIGluaXRfdGFza191bmlvbjsK
CmV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0IGluaXRfbW07CmV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1
Y3QgKmluaXRfdGFza3NbMzJdOwoKCgpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpwaWRoYXNo
Wyg0MDk2ID4+IDIpXTsKCgoKc3RhdGljIGlubGluZSB2b2lkIGhhc2hfcGlkKHN0cnVjdCB0YXNr
X3N0cnVjdCAqcCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqKmh0YWJsZSA9ICZwaWRo
YXNoWygoKChwLT5waWQpID4+IDgpIF4gKHAtPnBpZCkpICYgKCg0MDk2ID4+IDIpIC0gMSkpXTsK
CiAgICAgICAgaWYoKHAtPnBpZGhhc2hfbmV4dCA9ICpodGFibGUpICE9ICgodm9pZCAqKTApKQog
ICAgICAgICAgICAgICAgKCpodGFibGUpLT5waWRoYXNoX3BwcmV2ID0gJnAtPnBpZGhhc2hfbmV4
dDsKICAgICAgICAqaHRhYmxlID0gcDsKICAgICAgICBwLT5waWRoYXNoX3BwcmV2ID0gaHRhYmxl
Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5oYXNoX3BpZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAp
CnsKICAgICAgICBpZihwLT5waWRoYXNoX25leHQpCiAgICAgICAgICAgICAgICBwLT5waWRoYXNo
X25leHQtPnBpZGhhc2hfcHByZXYgPSBwLT5waWRoYXNoX3BwcmV2OwogICAgICAgICpwLT5waWRo
YXNoX3BwcmV2ID0gcC0+cGlkaGFzaF9uZXh0Owp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNr
X3N0cnVjdCAqZmluZF90YXNrX2J5X3BpZChpbnQgcGlkKQp7CiAgICAgICAgc3RydWN0IHRhc2tf
c3RydWN0ICpwLCAqKmh0YWJsZSA9ICZwaWRoYXNoWygoKChwaWQpID4+IDgpIF4gKHBpZCkpICYg
KCg0MDk2ID4+IDIpIC0gMSkpXTsKCiAgICAgICAgZm9yKHAgPSAqaHRhYmxlOyBwICYmIHAtPnBp
ZCAhPSBwaWQ7IHAgPSBwLT5waWRoYXNoX25leHQpCiAgICAgICAgICAgICAgICA7CgogICAgICAg
IHJldHVybiBwOwp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX3NldF9jcHUoc3RydWN0IHRh
c2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGludCBjcHUpCnsKICAgICAgICB0c2stPnByb2Nlc3Nv
ciA9IGNwdTsKICAgICAgICB0c2stPmNwdXNfcnVubmFibGUgPSAxVUwgPDwgY3B1Owp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgdGFza19yZWxlYXNlX2NwdShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykK
ewogICAgICAgIHRzay0+Y3B1c19ydW5uYWJsZSA9IH4wVUw7Cn0KCgpleHRlcm4gc3RydWN0IHVz
ZXJfc3RydWN0ICogYWxsb2NfdWlkKHVpZF90KTsKZXh0ZXJuIHZvaWQgZnJlZV91aWQoc3RydWN0
IHVzZXJfc3RydWN0ICopOwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20v
Y3VycmVudC5oIiAxCgoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKCnN0YXRpYyBpbmxpbmUgc3RydWN0
IHRhc2tfc3RydWN0ICogZ2V0X2N1cnJlbnQodm9pZCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0
cnVjdCAqY3VycmVudDsKICAgICAgICBfX2FzbV9fKCJhbmRsICUlZXNwLCUwOyAiOiI9ciIgKGN1
cnJlbnQpIDogIjAiICh+ODE5MVVMKSk7CiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiB9CiMgNTk0
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgpleHRlcm4g
dW5zaWduZWQgbG9uZyB2b2xhdGlsZSBqaWZmaWVzOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpdGlt
ZXJfdGlja3M7CmV4dGVybiB1bnNpZ25lZCBsb25nIGl0aW1lcl9uZXh0OwpleHRlcm4gc3RydWN0
IHRpbWV2YWwgeHRpbWU7CmV4dGVybiB2b2lkIGRvX3RpbWVyKHN0cnVjdCBwdF9yZWdzICopOwoK
ZXh0ZXJuIHVuc2lnbmVkIGludCAqIHByb2ZfYnVmZmVyOwpleHRlcm4gdW5zaWduZWQgbG9uZyBw
cm9mX2xlbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9zaGlmdDsKCgoKZXh0ZXJuIHZvaWQg
X193YWtlX3VwKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5y
KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIF9fd2FrZV91cF9zeW5j
KHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHNsZWVwX29uKHdhaXRfcXVldWVfaGVh
ZF90ICpxKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBsb25nIHNsZWVwX29u
X3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHNpZ25lZCBsb25nIHRpbWVvdXQpIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIGludGVycnVwdGlibGVfc2xlZXBf
b24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0
ZXJuIGxvbmcgaW50ZXJydXB0aWJsZV9zbGVlcF9vbl90aW1lb3V0KHdhaXRfcXVldWVfaGVhZF90
ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7Cgpl
eHRlcm4gaW50IHdha2VfdXBfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKiB0c2spIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA2MjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNf
d2FpdDQocGlkX3QgcGlkLHVuc2lnbmVkIGludCAqIHN0YXRfYWRkciwgaW50IG9wdGlvbnMsIHN0
cnVjdCBydXNhZ2UgKiBydSk7CgpleHRlcm4gaW50IGluX2dyb3VwX3AoZ2lkX3QpOwpleHRlcm4g
aW50IGluX2Vncm91cF9wKGdpZF90KTsKCmV4dGVybiB2b2lkIHByb2NfY2FjaGVzX2luaXQodm9p
ZCk7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbHMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl
cm4gdm9pZCBmbHVzaF9zaWduYWxfaGFuZGxlcnMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl
cm4gdm9pZCBzaWdfZXhpdChpbnQsIGludCwgc3RydWN0IHNpZ2luZm8gKik7CmV4dGVybiBpbnQg
ZGVxdWV1ZV9zaWduYWwoc2lnc2V0X3QgKiwgc2lnaW5mb190ICopOwpleHRlcm4gdm9pZCBibG9j
a19hbGxfc2lnbmFscyhpbnQgKCpub3RpZmllcikodm9pZCAqcHJpdiksIHZvaWQgKnByaXYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ3NldF90ICptYXNrKTsKZXh0ZXJuIHZvaWQg
dW5ibG9ja19hbGxfc2lnbmFscyh2b2lkKTsKZXh0ZXJuIGludCBzZW5kX3NpZ19pbmZvKGludCwg
c3RydWN0IHNpZ2luZm8gKiwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IGZvcmNl
X3NpZ19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpl
eHRlcm4gaW50IGtpbGxfcGdfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHBpZF90KTsKZXh0
ZXJuIGludCBraWxsX3NsX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVy
biBpbnQga2lsbF9wcm9jX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVy
biB2b2lkIG5vdGlmeV9wYXJlbnQoc3RydWN0IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiB2
b2lkIGRvX25vdGlmeV9wYXJlbnQoc3RydWN0IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiB2
b2lkIGZvcmNlX3NpZyhpbnQsIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBzZW5k
X3NpZyhpbnQsIHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQpOwpleHRlcm4gaW50IGtpbGxfcGco
cGlkX3QsIGludCwgaW50KTsKZXh0ZXJuIGludCBraWxsX3NsKHBpZF90LCBpbnQsIGludCk7CmV4
dGVybiBpbnQga2lsbF9wcm9jKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQgZG9fc2lnYWN0
aW9uKGludCwgY29uc3Qgc3RydWN0IGtfc2lnYWN0aW9uICosIHN0cnVjdCBrX3NpZ2FjdGlvbiAq
KTsKZXh0ZXJuIGludCBkb19zaWdhbHRzdGFjayhjb25zdCBzdGFja190ICosIHN0YWNrX3QgKiwg
dW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIGludCBzaWduYWxfcGVuZGluZyhzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1cm4gKHAtPnNpZ3BlbmRpbmcgIT0gMCk7Cn0K
CgoKCgpzdGF0aWMgaW5saW5lIGludCBoYXNfcGVuZGluZ19zaWduYWxzKHNpZ3NldF90ICpzaWdu
YWwsIHNpZ3NldF90ICpibG9ja2VkKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZWFkeTsKICAg
ICAgICBsb25nIGk7CgogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgIGZvciAoaSA9ICg2NCAvIDMyKSwgcmVhZHkgPSAwOyAtLWkgPj0g
MCA7KQogICAgICAgICAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1tpXSAmfiBi
bG9ja2VkLT5zaWdbaV07CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA0OiBy
ZWFkeSA9IHNpZ25hbC0+c2lnWzNdICZ+IGJsb2NrZWQtPnNpZ1szXTsKICAgICAgICAgICAgICAg
IHJlYWR5IHw9IHNpZ25hbC0+c2lnWzJdICZ+IGJsb2NrZWQtPnNpZ1syXTsKICAgICAgICAgICAg
ICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzFdICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAg
ICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAg
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDI6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMV0g
Jn4gYmxvY2tlZC0+c2lnWzFdOwogICAgICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdb
MF0gJn4gYmxvY2tlZC0+c2lnWzBdOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgMTogcmVhZHkgPSBzaWduYWwtPnNpZ1swXSAmfiBibG9ja2VkLT5zaWdbMF07CiAgICAgICAg
fQogICAgICAgIHJldHVybiByZWFkeSAhPSAwOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHJl
Y2FsY19zaWdwZW5kaW5nKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkKewogICAgICAgIHQtPnNpZ3Bl
bmRpbmcgPSBoYXNfcGVuZGluZ19zaWduYWxzKCZ0LT5wZW5kaW5nLnNpZ25hbCwgJnQtPmJsb2Nr
ZWQpOwp9CgoKCnN0YXRpYyBpbmxpbmUgaW50IG9uX3NpZ19zdGFjayh1bnNpZ25lZCBsb25nIHNw
KQp7CiAgICAgICAgcmV0dXJuIChzcCAtIGdldF9jdXJyZW50KCktPnNhc19zc19zcCA8IGdldF9j
dXJyZW50KCktPnNhc19zc19zaXplKTsKfQoKc3RhdGljIGlubGluZSBpbnQgc2FzX3NzX2ZsYWdz
KHVuc2lnbmVkIGxvbmcgc3ApCnsKICAgICAgICByZXR1cm4gKGdldF9jdXJyZW50KCktPnNhc19z
c19zaXplID09IDAgPyAyCiAgICAgICAgICAgICAgICA6IG9uX3NpZ19zdGFjayhzcCkgPyAxIDog
MCk7Cn0KCmV4dGVybiBpbnQgcmVxdWVzdF9pcnEodW5zaWduZWQgaW50LAogICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKCpoYW5kbGVyKShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiks
CiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZywgY29uc3QgY2hhciAqLCB2b2lk
ICopOwpleHRlcm4gdm9pZCBmcmVlX2lycSh1bnNpZ25lZCBpbnQsIHZvaWQgKik7CiMgNzMxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5l
IGludCBzdXNlcih2b2lkKQp7CiAgICAgICAgaWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAw
MDAwID8gKDEgPDwgKDApKSAmIDB4MDAwMDAwMDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0cyAp
ICYmIGdldF9jdXJyZW50KCktPmV1aWQgPT0gMCkgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJl
bnQoKS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAg
ICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgZnN1c2VyKHZvaWQp
CnsKICAgICAgICBpZiAoISggKDEgPDwgKDAgKzEpKSAmIDB4MDAwMDAwMDAgPyAoMSA8PCAoMCkp
ICYgMHgwMDAwMDAwMCA6ICgxIDw8ICgwKSkgJiBzZWN1cmViaXRzICkgJiYgZ2V0X2N1cnJlbnQo
KS0+ZnN1aWQgPT0gMCkgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0g
MHgwMDAwMDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICBy
ZXR1cm4gMDsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBpbnQgY2FwYWJsZShpbnQgY2FwKQp7Cgog
ICAgICAgIGlmICgoKGdldF9jdXJyZW50KCktPmNhcF9lZmZlY3RpdmUpICYgKDEgPDwgKGNhcCkp
KSkKCgoKICAgICAgICB7CiAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5mbGFncyB8PSAw
eDAwMDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJl
dHVybiAwOwp9CgoKCgpleHRlcm4gc3RydWN0IG1tX3N0cnVjdCAqIG1tX2FsbG9jKHZvaWQpOwoK
ZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKiBzdGFydF9sYXp5X3RsYih2b2lkKTsKZXh0ZXJuIHZv
aWQgZW5kX2xhenlfdGxiKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsKCgpleHRlcm4gaW5saW5lIHZv
aWQgX19tbWRyb3Aoc3RydWN0IG1tX3N0cnVjdCAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CnN0YXRpYyBpbmxpbmUgdm9pZCBtbWRyb3Aoc3RydWN0IG1tX3N0cnVjdCAqIG1tKQp7CiAg
ICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm1tLT5tbV9jb3VudCkpCiAgICAgICAgICAg
ICAgICBfX21tZHJvcChtbSk7Cn0KCgpleHRlcm4gdm9pZCBtbXB1dChzdHJ1Y3QgbW1fc3RydWN0
ICopOwoKZXh0ZXJuIHZvaWQgbW1fcmVsZWFzZSh2b2lkKTsKCgoKCmV4dGVybiBzdHJ1Y3QgZmls
ZSAqKiBhbGxvY19mZF9hcnJheShpbnQpOwpleHRlcm4gaW50IGV4cGFuZF9mZF9hcnJheShzdHJ1
Y3QgZmlsZXNfc3RydWN0ICosIGludCBucik7CmV4dGVybiB2b2lkIGZyZWVfZmRfYXJyYXkoc3Ry
dWN0IGZpbGUgKiosIGludCk7CgpleHRlcm4gZmRfc2V0ICphbGxvY19mZHNldChpbnQpOwpleHRl
cm4gaW50IGV4cGFuZF9mZHNldChzdHJ1Y3QgZmlsZXNfc3RydWN0ICosIGludCBucik7CmV4dGVy
biB2b2lkIGZyZWVfZmRzZXQoZmRfc2V0ICosIGludCk7CgpleHRlcm4gaW50IGNvcHlfdGhyZWFk
KGludCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgc3RydWN0
IHRhc2tfc3RydWN0ICosIHN0cnVjdCBwdF9yZWdzICopOwpleHRlcm4gdm9pZCBmbHVzaF90aHJl
YWQodm9pZCk7CmV4dGVybiB2b2lkIGV4aXRfdGhyZWFkKHZvaWQpOwoKZXh0ZXJuIHZvaWQgZXhp
dF9tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGV4aXRfZmlsZXMoc3RydWN0
IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBleGl0X3NpZ2hhbmQoc3RydWN0IHRhc2tfc3Ry
dWN0ICopOwoKZXh0ZXJuIHZvaWQgcmVwYXJlbnRfdG9faW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQg
ZGFlbW9uaXplKHZvaWQpOwoKZXh0ZXJuIGludCBkb19leGVjdmUoY2hhciAqLCBjaGFyICoqLCBj
aGFyICoqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIGludCBkb19mb3JrKHVuc2lnbmVkIGxv
bmcsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCBwdF9yZWdzICosIHVuc2lnbmVkIGxvbmcpOwoKZXh0
ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHdhaXRfcXVldWVf
dCAqIHdhaXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYWRkX3dh
aXRfcXVldWVfZXhjbHVzaXZlKHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3
YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHJlbW92ZV93YWl0
X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CgpleHRlcm4gbG9uZyBrZXJuZWxfdGhyZWFkKGludCAoKmZu
KSh2b2lkICopLCB2b2lkICogYXJnLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKIyA5MDYgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0YXRpYyBpbmxpbmUgdm9p
ZCBkZWxfZnJvbV9ydW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwKQp7CiAgICAgICAgbnJf
cnVubmluZy0tOwogICAgICAgIHAtPnNsZWVwX3RpbWUgPSBqaWZmaWVzOwogICAgICAgIGxpc3Rf
ZGVsKCZwLT5ydW5fbGlzdCk7CiAgICAgICAgcC0+cnVuX2xpc3QubmV4dCA9ICgodm9pZCAqKTAp
Owp9CgpzdGF0aWMgaW5saW5lIGludCB0YXNrX29uX3J1bnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVj
dCAqcCkKewogICAgICAgIHJldHVybiAocC0+cnVuX2xpc3QubmV4dCAhPSAoKHZvaWQgKikwKSk7
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhhc2hfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnApCnsKICAgICAgICBpZiAodGFza19vbl9ydW5xdWV1ZShwKSkKICAgICAgICAgICAgICAgIF9f
b3V0X29mX2xpbmVfYnVnKDkyMik7CiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
Y2xpIjogOiA6Im1lbW9yeSIpOyB3cml0ZV9sb2NrKCZ0YXNrbGlzdF9sb2NrKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgbnJfdGhyZWFkcy0tOwogICAgICAgIHVuaGFzaF9waWQocCk7CiAgICAgICAg
ZG8geyAocCktPm5leHRfdGFzay0+cHJldl90YXNrID0gKHApLT5wcmV2X3Rhc2s7IChwKS0+cHJl
dl90YXNrLT5uZXh0X3Rhc2sgPSAocCktPm5leHRfdGFzazsgaWYgKChwKS0+cF9vc3B0cikgKHAp
LT5wX29zcHRyLT5wX3lzcHRyID0gKHApLT5wX3lzcHRyOyBpZiAoKHApLT5wX3lzcHRyKSAocCkt
PnBfeXNwdHItPnBfb3NwdHIgPSAocCktPnBfb3NwdHI7IGVsc2UgKHApLT5wX3BwdHItPnBfY3B0
ciA9IChwKS0+cF9vc3B0cjsgfSB3aGlsZSAoMCk7CiAgICAgICAgbGlzdF9kZWwoJnAtPnRocmVh
ZF9ncm91cCk7CiAgICAgICAgZG8geyBhc20gdm9sYXRpbGUoImxvY2sgOyBhZGRsICQiICIweDAx
MDAwMDAwIiAiLCUwIjoiPW0iICgoJnRhc2tsaXN0X2xvY2spLT5sb2NrKSA6IDogIm1lbW9yeSIp
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsK
fQoKCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX2xvY2soc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7
CiAgICAgICAgc3Bpbl9sb2NrKCZwLT5hbGxvY19sb2NrKTsKfQoKc3RhdGljIGlubGluZSB2b2lk
IHRhc2tfdW5sb2NrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHNwaW5fdW5sb2Nr
KCZwLT5hbGxvY19sb2NrKTsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIGRfcGF0aChzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnksIHN0cnVjdCB2ZnNtb3VudCAqdmZzbW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwgaW50IGJ1ZmxlbikKewogICAgICAgIGNoYXIgKnJl
czsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKnJvb3RtbnQ7CiAgICAgICAgc3RydWN0IGRlbnRy
eSAqcm9vdDsKICAgICAgICByZWFkX2xvY2soJmdldF9jdXJyZW50KCktPmZzLT5sb2NrKTsKICAg
ICAgICByb290bW50ID0gbW50Z2V0KGdldF9jdXJyZW50KCktPmZzLT5yb290bW50KTsKICAgICAg
ICByb290ID0gZGdldChnZXRfY3VycmVudCgpLT5mcy0+cm9vdCk7CiAgICAgICAgYXNtIHZvbGF0
aWxlKCJsb2NrIDsgaW5jbCAlMCIgOiI9bSIgKCgmZ2V0X2N1cnJlbnQoKS0+ZnMtPmxvY2spLT5s
b2NrKSA6IDogIm1lbW9yeSIpOwogICAgICAgIHNwaW5fbG9jaygmZGNhY2hlX2xvY2spOwogICAg
ICAgIHJlcyA9IF9fZF9wYXRoKGRlbnRyeSwgdmZzbW50LCByb290LCByb290bW50LCBidWYsIGJ1
Zmxlbik7CiAgICAgICAgc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsKICAgICAgICBkcHV0KHJv
b3QpOwogICAgICAgIG1udHB1dChyb290bW50KTsKICAgICAgICByZXR1cm4gcmVzOwp9CgpzdGF0
aWMgaW5saW5lIGludCBuZWVkX3Jlc2NoZWQodm9pZCkKewogICAgICAgIHJldHVybiAoX19idWls
dGluX2V4cGVjdCgoZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkKSwwKSk7Cn0KCmV4dGVybiB2
b2lkIF9fY29uZF9yZXNjaGVkKHZvaWQpOwpzdGF0aWMgaW5saW5lIHZvaWQgY29uZF9yZXNjaGVk
KHZvaWQpCnsKICAgICAgICBpZiAobmVlZF9yZXNjaGVkKCkpCiAgICAgICAgICAgICAgICBfX2Nv
bmRfcmVzY2hlZCgpOwp9CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgv
bW0uaCIgMgoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9t
bXpvbmUuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tbXpv
bmUuaCIKdHlwZWRlZiBzdHJ1Y3QgZnJlZV9hcmVhX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBmcmVlX2xpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqbWFwOwp9IGZyZWVfYXJl
YV90OwoKc3RydWN0IHBnbGlzdF9kYXRhOwojIDM3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5j
bHVkZS9saW51eC9tbXpvbmUuaCIKdHlwZWRlZiBzdHJ1Y3Qgem9uZV9zdHJ1Y3QgewoKCgogICAg
ICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfcGFnZXM7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBwYWdlc19taW4sIHBhZ2VzX2xvdywgcGFnZXNfaGlnaDsKICAg
ICAgICBpbnQgbmVlZF9iYWxhbmNlOwoKCgoKICAgICAgICBmcmVlX2FyZWFfdCBmcmVlX2FyZWFb
MTBdOwojIDc2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIK
ICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCAqIHdhaXRfdGFibGU7CiAgICAgICAgdW5zaWduZWQg
bG9uZyB3YWl0X3RhYmxlX3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyB3YWl0X3RhYmxlX3No
aWZ0OwoKCgoKICAgICAgICBzdHJ1Y3QgcGdsaXN0X2RhdGEgKnpvbmVfcGdkYXQ7CiAgICAgICAg
c3RydWN0IHBhZ2UgKnpvbmVfbWVtX21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHpvbmVfc3Rh
cnRfcGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X21hcG5yOwoKCgoKICAg
ICAgICBjaGFyICpuYW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKfSB6b25lX3Q7CiMg
MTExICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKdHlwZWRl
ZiBzdHJ1Y3Qgem9uZWxpc3Rfc3RydWN0IHsKICAgICAgICB6b25lX3QgKiB6b25lcyBbMyArMV07
Cn0gem9uZWxpc3RfdDsKIyAxMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4
L21tem9uZS5oIgpzdHJ1Y3QgYm9vdG1lbV9kYXRhOwp0eXBlZGVmIHN0cnVjdCBwZ2xpc3RfZGF0
YSB7CiAgICAgICAgem9uZV90IG5vZGVfem9uZXNbM107CiAgICAgICAgem9uZWxpc3RfdCBub2Rl
X3pvbmVsaXN0c1sweDBmICsxXTsKICAgICAgICBpbnQgbnJfem9uZXM7CiAgICAgICAgc3RydWN0
IHBhZ2UgKm5vZGVfbWVtX21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nICp2YWxpZF9hZGRyX2Jp
dG1hcDsKICAgICAgICBzdHJ1Y3QgYm9vdG1lbV9kYXRhICpiZGF0YTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIG5vZGVfc3RhcnRfcGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0
X21hcG5yOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbm9kZV9zaXplOwogICAgICAgIGludCBub2Rl
X2lkOwogICAgICAgIHN0cnVjdCBwZ2xpc3RfZGF0YSAqbm9kZV9uZXh0Owp9IHBnX2RhdGFfdDsK
CmV4dGVybiBpbnQgbnVtbm9kZXM7CmV4dGVybiBwZ19kYXRhX3QgKnBnZGF0X2xpc3Q7CiMgMTUz
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RydWN0IHBh
Z2U7CmV4dGVybiB2b2lkIHNob3dfZnJlZV9hcmVhc19jb3JlKHBnX2RhdGFfdCAqcGdkYXQpOwpl
eHRlcm4gdm9pZCBmcmVlX2FyZWFfaW5pdF9jb3JlKGludCBuaWQsIHBnX2RhdGFfdCAqcGdkYXQs
IHN0cnVjdCBwYWdlICoqZ21hcCwKICB1bnNpZ25lZCBsb25nICp6b25lc19zaXplLCB1bnNpZ25l
ZCBsb25nIHBhZGRyLCB1bnNpZ25lZCBsb25nICp6aG9sZXNfc2l6ZSwKICBzdHJ1Y3QgcGFnZSAq
cG1hcCk7CgpleHRlcm4gcGdfZGF0YV90IGNvbnRpZ19wYWdlX2RhdGE7CiMgMTgwICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RhdGljIGlubGluZSB6b25l
X3QgKm5leHRfem9uZSh6b25lX3QgKnpvbmUpCnsKICAgICAgICBwZ19kYXRhX3QgKnBnZGF0ID0g
em9uZS0+em9uZV9wZ2RhdDsKCiAgICAgICAgaWYgKHpvbmUgLSBwZ2RhdC0+bm9kZV96b25lcyA8
IDMgLSAxKQogICAgICAgICAgICAgICAgem9uZSsrOwoKICAgICAgICBlbHNlIGlmIChwZ2RhdC0+
bm9kZV9uZXh0KSB7CiAgICAgICAgICAgICAgICBwZ2RhdCA9IHBnZGF0LT5ub2RlX25leHQ7CiAg
ICAgICAgICAgICAgICB6b25lID0gcGdkYXQtPm5vZGVfem9uZXM7CiAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICB6b25lID0gKCh2b2lkICopMCk7CgogICAgICAgIHJldHVybiB6b25lOwp9
CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zd2FwLmgiIDEKIyAyNSAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc3dhcC5oIgp1bmlvbiBzd2FwX2hlYWRlciB7
CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgICAgICAgY2hhciByZXNlcnZlZFso
MVVMIDw8IDEyKSAtIDEwXTsKICAgICAgICAgICAgICAgIGNoYXIgbWFnaWNbMTBdOwogICAgICAg
IH0gbWFnaWM7CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgICAgICAgY2hhciBi
b290Yml0c1sxMDI0XTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOwogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGxhc3RfcGFnZTsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBucl9iYWRwYWdlczsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWRkaW5n
WzEyNV07CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmFkcGFnZXNbMV07CiAgICAgICAg
fSBpbmZvOwp9OwojIDY0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zd2Fw
LmgiCnN0cnVjdCBzd2FwX2luZm9fc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7
CiAgICAgICAga2Rldl90IHN3YXBfZGV2aWNlOwogICAgICAgIHNwaW5sb2NrX3Qgc2Rldl9sb2Nr
OwogICAgICAgIHN0cnVjdCBkZW50cnkgKiBzd2FwX2ZpbGU7CiAgICAgICAgc3RydWN0IHZmc21v
dW50ICpzd2FwX3Zmc21udDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqIHN3YXBfbWFwOwogICAg
ICAgIHVuc2lnbmVkIGludCBsb3dlc3RfYml0OwogICAgICAgIHVuc2lnbmVkIGludCBoaWdoZXN0
X2JpdDsKICAgICAgICB1bnNpZ25lZCBpbnQgY2x1c3Rlcl9uZXh0OwogICAgICAgIHVuc2lnbmVk
IGludCBjbHVzdGVyX25yOwogICAgICAgIGludCBwcmlvOwogICAgICAgIGludCBwYWdlczsKICAg
ICAgICB1bnNpZ25lZCBsb25nIG1heDsKICAgICAgICBpbnQgbmV4dDsKfTsKCmV4dGVybiBpbnQg
bnJfc3dhcF9wYWdlczsKCgoKCmV4dGVybiB1bnNpZ25lZCBpbnQgbnJfZnJlZV9wYWdlcyh2b2lk
KTsKZXh0ZXJuIHVuc2lnbmVkIGludCBucl9mcmVlX2J1ZmZlcl9wYWdlcyh2b2lkKTsKZXh0ZXJu
IGludCBucl9hY3RpdmVfcGFnZXM7CmV4dGVybiBpbnQgbnJfaW5hY3RpdmVfcGFnZXM7CmV4dGVy
biBhdG9taWNfdCBwYWdlX2NhY2hlX3NpemU7CmV4dGVybiBhdG9taWNfdCBidWZmZXJtZW1fcGFn
ZXM7CgpleHRlcm4gc3BpbmxvY2tfY2FjaGVsaW5lX3QgcGFnZWNhY2hlX2xvY2tfY2FjaGVsaW5l
OwoKCmV4dGVybiB2b2lkIF9fcmVtb3ZlX2lub2RlX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgoKc3Ry
dWN0IHRhc2tfc3RydWN0OwpzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7CnN0cnVjdCBzeXNpbmZvOwoK
c3RydWN0IHpvbmVfdDsKCgpleHRlcm4gdm9pZCBscnVfY2FjaGVfYWRkKHN0cnVjdCBwYWdlICop
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX19scnVfY2FjaGVfZGVs
KHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQg
bHJ1X2NhY2hlX2RlbChzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CgpleHRlcm4gdm9pZCBhY3RpdmF0ZV9wYWdlKHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIHN3YXBfc2V0dXAodm9pZCk7CgoKZXh0ZXJuIHdh
aXRfcXVldWVfaGVhZF90IGtzd2FwZF93YWl0OwpleHRlcm4gaW50IHRyeV90b19mcmVlX3BhZ2Vz
X3pvbmUoem9uZV90ICosIHVuc2lnbmVkIGludCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwpleHRlcm4gaW50IHRyeV90b19mcmVlX3BhZ2VzKHVuc2lnbmVkIGludCkgX19hdHRyaWJ1dGVf
XygocmVncGFybSgzKSkpOwoKCmV4dGVybiB2b2lkIHJ3X3N3YXBfcGFnZShpbnQsIHN0cnVjdCBw
YWdlICopOwpleHRlcm4gdm9pZCBfX3J3X3N3YXBfcGFnZV9ub2xvY2soaW50LCBzd3BfZW50cnlf
dCwgY2hhciAqLCBpbnQpOwojIDEzMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvc3dhcC5oIgpleHRlcm4gdm9pZCBzaG93X3N3YXBfY2FjaGVfaW5mbyh2b2lkKTsKCmV4dGVy
biBpbnQgYWRkX3RvX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKiwgc3dwX2VudHJ5X3QpOwpleHRl
cm4gdm9pZCBfX2RlbGV0ZV9mcm9tX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKnBhZ2UpOwpleHRl
cm4gdm9pZCBkZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJu
IHZvaWQgZnJlZV9wYWdlX2FuZF9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJu
IHN0cnVjdCBwYWdlICogbG9va3VwX3N3YXBfY2FjaGUoc3dwX2VudHJ5X3QpOwpleHRlcm4gc3Ry
dWN0IHBhZ2UgKiByZWFkX3N3YXBfY2FjaGVfYXN5bmMoc3dwX2VudHJ5X3QpOwoKCmV4dGVybiB2
b2lkIG91dF9vZl9tZW1vcnkodm9pZCk7CgoKZXh0ZXJuIGludCB0b3RhbF9zd2FwX3BhZ2VzOwpl
eHRlcm4gdW5zaWduZWQgaW50IG5yX3N3YXBmaWxlczsKZXh0ZXJuIHN0cnVjdCBzd2FwX2luZm9f
c3RydWN0IHN3YXBfaW5mb1tdOwpleHRlcm4gaW50IGlzX3N3YXBfcGFydGl0aW9uKGtkZXZfdCk7
CmV4dGVybiB2b2lkIHNpX3N3YXBpbmZvKHN0cnVjdCBzeXNpbmZvICopOwpleHRlcm4gc3dwX2Vu
dHJ5X3QgZ2V0X3N3YXBfcGFnZSh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2V0X3N3YXBoYW5kbGVfaW5m
byhzd3BfZW50cnlfdCwgdW5zaWduZWQgbG9uZyAqLCBrZGV2X3QgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqKik7CmV4dGVybiBpbnQgc3dh
cF9kdXBsaWNhdGUoc3dwX2VudHJ5X3QpOwpleHRlcm4gaW50IHZhbGlkX3N3YXBoYW5kbGVzKHN3
cF9lbnRyeV90LCB1bnNpZ25lZCBsb25nICopOwpleHRlcm4gdm9pZCBzd2FwX2ZyZWUoc3dwX2Vu
dHJ5X3QpOwpleHRlcm4gdm9pZCBmcmVlX3N3YXBfYW5kX2NhY2hlKHN3cF9lbnRyeV90KTsKc3Ry
dWN0IHN3YXBfbGlzdF90IHsKICAgICAgICBpbnQgaGVhZDsKICAgICAgICBpbnQgbmV4dDsKfTsK
ZXh0ZXJuIHN0cnVjdCBzd2FwX2xpc3RfdCBzd2FwX2xpc3Q7CiBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDApKSkgbG9uZyBzeXNfc3dhcG9mZihjb25zdCBjaGFyICopOwogX19hdHRyaWJ1dGVfXygo
cmVncGFybSgwKSkpIGxvbmcgc3lzX3N3YXBvbihjb25zdCBjaGFyICosIGludCk7CgpleHRlcm4g
c3BpbmxvY2tfY2FjaGVsaW5lX3QgcGFnZW1hcF9scnVfbG9ja19jYWNoZWxpbmU7CgoKZXh0ZXJu
IHZvaWQgbWFya19wYWdlX2FjY2Vzc2VkKHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMykpKTsKIyAyMDggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3N3
YXAuaCIKZXh0ZXJuIHNwaW5sb2NrX3Qgc3dhcGxvY2s7CgoKCgoKCmV4dGVybiB2b2lkIHNobWVt
X3VudXNlKHN3cF9lbnRyeV90IGVudHJ5LCBzdHJ1Y3QgcGFnZSAqcGFnZSk7CiMgMTQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKCgpleHRlcm4gdW5zaWduZWQg
bG9uZyBtYXhfbWFwbnI7CmV4dGVybiB1bnNpZ25lZCBsb25nIG51bV9waHlzcGFnZXM7CmV4dGVy
biB1bnNpZ25lZCBsb25nIG51bV9tYXBwZWRwYWdlczsKZXh0ZXJuIHZvaWQgKiBoaWdoX21lbW9y
eTsKZXh0ZXJuIGludCBwYWdlX2NsdXN0ZXI7CgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBhY3Rp
dmVfbGlzdDsKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgaW5hY3RpdmVfbGlzdDsKCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDEKIyAyNCAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKZXh0ZXJuIHBnZF90IHN3YXBw
ZXJfcGdfZGlyWzEwMjRdOwpleHRlcm4gdm9pZCBwYWdpbmdfaW5pdCh2b2lkKTsKIyA2OCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgcGdrZXJuX21hc2s7CiMgMTA0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vcGd0YWJsZS5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBlbXB0eV96ZXJvX3BhZ2VbMTAyNF07
CiMgMTI0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vcGd0YWJsZS5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5oIiAxCiMg
MzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5oIgpz
dGF0aWMgaW5saW5lIGludCBwZ2Rfbm9uZShwZ2RfdCBwZ2QpIHsgcmV0dXJuIDA7IH0Kc3RhdGlj
IGlubGluZSBpbnQgcGdkX2JhZChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDA7IH0Kc3RhdGljIGlubGlu
ZSBpbnQgcGdkX3ByZXNlbnQocGdkX3QgcGdkKSB7IHJldHVybiAxOyB9CiMgNTUgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5oIgpzdGF0aWMgaW5saW5l
IHBtZF90ICogcG1kX29mZnNldChwZ2RfdCAqIGRpciwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7
CiAgICAgICAgcmV0dXJuIChwbWRfdCAqKSBkaXI7Cn0KIyAxMjUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDIKIyAyNjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIHBnMFsxMDI0XTsK
IyAyODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCnN0YXRp
YyBpbmxpbmUgaW50IHB0ZV9yZWFkKHB0ZV90IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAm
IDB4MDA0OyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0ZV9leGVjKHB0ZV90IHB0ZSkgeyByZXR1cm4g
KHB0ZSkucHRlX2xvdyAmIDB4MDA0OyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0ZV9kaXJ0eShwdGVf
dCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDA0MDsgfQpzdGF0aWMgaW5saW5lIGlu
dCBwdGVfeW91bmcocHRlX3QgcHRlKSB7IHJldHVybiAocHRlKS5wdGVfbG93ICYgMHgwMjA7IH0K
c3RhdGljIGlubGluZSBpbnQgcHRlX3dyaXRlKHB0ZV90IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRl
X2xvdyAmIDB4MDAyOyB9CgpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9yZHByb3RlY3QocHRlX3Qg
cHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDA0OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxp
bmUgcHRlX3QgcHRlX2V4cHJvdGVjdChwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgw
MDQ7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtjbGVhbihwdGVfdCBw
dGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwNDA7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGlu
ZSBwdGVfdCBwdGVfbWtvbGQocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDIwOyBy
ZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX3dycHJvdGVjdChwdGVfdCBwdGUp
IHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwMDI7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBw
dGVfdCBwdGVfbWtyZWFkKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9IDB4MDA0OyByZXR1
cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rZXhlYyhwdGVfdCBwdGUpIHsgKHB0
ZSkucHRlX2xvdyB8PSAweDAwNDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0
ZV9ta2RpcnR5KHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9IDB4MDQwOyByZXR1cm4gcHRl
OyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21reW91bmcocHRlX3QgcHRlKSB7IChwdGUpLnB0
ZV9sb3cgfD0gMHgwMjA7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWt3
cml0ZShwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyB8PSAweDAwMjsgcmV0dXJuIHB0ZTsgfQoK
c3RhdGljIGlubGluZSBpbnQgcHRlcF90ZXN0X2FuZF9jbGVhcl9kaXJ0eShwdGVfdCAqcHRlcCkg
eyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KDYsIHB0ZXApOyB9CnN0YXRpYyBpbmxpbmUgaW50
IHB0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmcocHRlX3QgKnB0ZXApIHsgcmV0dXJuIHRlc3RfYW5k
X2NsZWFyX2JpdCg1LCBwdGVwKTsgfQpzdGF0aWMgaW5saW5lIHZvaWQgcHRlcF9zZXRfd3Jwcm90
ZWN0KHB0ZV90ICpwdGVwKSB7IGNsZWFyX2JpdCgxLCBwdGVwKTsgfQpzdGF0aWMgaW5saW5lIHZv
aWQgcHRlcF9ta2RpcnR5KHB0ZV90ICpwdGVwKSB7IHNldF9iaXQoNiwgcHRlcCk7IH0KIyAzMTQg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCnN0YXRpYyBpbmxp
bmUgcHRlX3QgcHRlX21vZGlmeShwdGVfdCBwdGUsIHBncHJvdF90IG5ld3Byb3QpCnsKICAgICAg
ICBwdGUucHRlX2xvdyAmPSAoKH4oKDFVTCA8PCAxMiktMSkpIHwgMHgwMjAgfCAweDA0MCk7CiAg
ICAgICAgcHRlLnB0ZV9sb3cgfD0gKChuZXdwcm90KS5wZ3Byb3QpOwogICAgICAgIHJldHVybiBw
dGU7Cn0KIyAzNTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgi
CnN0cnVjdCBwYWdlOwppbnQgY2hhbmdlX3BhZ2VfYXR0cihzdHJ1Y3QgcGFnZSAqLCBpbnQsIHBn
cHJvdF90IHByb3QpOwojIDI3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9t
bS5oIiAyCiMgNDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L21tLmgiCnN0
cnVjdCB2bV9hcmVhX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqIHZtX21tOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgdm1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9l
bmQ7CgoKCiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bV9uZXh0OwoKICAgICAgICBw
Z3Byb3RfdCB2bV9wYWdlX3Byb3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9mbGFnczsKCiAg
ICAgICAgcmJfbm9kZV90IHZtX3JiOwoKCgoKCgogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVj
dCAqdm1fbmV4dF9zaGFyZTsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bV9wcHJl
dl9zaGFyZTsKCgogICAgICAgIHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCAqIHZtX29wczsK
CgogICAgICAgIHVuc2lnbmVkIGxvbmcgdm1fcGdvZmY7CgogICAgICAgIHN0cnVjdCBmaWxlICog
dm1fZmlsZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX3JhZW5kOwogICAgICAgIHZvaWQgKiB2
bV9wcml2YXRlX2RhdGE7Cn07CiMgMTE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9s
aW51eC9tbS5oIgpleHRlcm4gaW50IHZtX21pbl9yZWFkYWhlYWQ7CmV4dGVybiBpbnQgdm1fbWF4
X3JlYWRhaGVhZDsKCgoKCgpleHRlcm4gcGdwcm90X3QgcHJvdGVjdGlvbl9tYXBbMTZdOwoKCgoK
CgoKc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IHsKICAgICAgICB2b2lkICgqb3Blbikoc3Ry
dWN0IHZtX2FyZWFfc3RydWN0ICogYXJlYSk7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKiBhcmVhKTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqICgqbm9wYWdlKShz
dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBhcmVhLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB1
bnVzZWQpOwp9OwojIDE1MiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbW0u
aCIKdHlwZWRlZiBzdHJ1Y3QgcGFnZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0Owog
ICAgICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgaW5kZXg7CiAgICAgICAgc3RydWN0IHBhZ2UgKm5leHRfaGFzaDsKCiAgICAgICAgYXRvbWlj
X3QgY291bnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBscnU7CgogICAgICAgIHN0cnVjdCBwYWdlICoqcHByZXZfaGFzaDsKICAgICAgICBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiBidWZmZXJzOwojIDE4MCAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvbW0uaCIKfSBtZW1fbWFwX3Q7CiMgMzMwICIvdXNyL3NyYy9saW51eC0y
LjQuMjAvaW5jbHVkZS9saW51eC9tbS5oIgpzdHJ1Y3Qgem9uZV9zdHJ1Y3Q7CmV4dGVybiBzdHJ1
Y3Qgem9uZV9zdHJ1Y3QgKnpvbmVfdGFibGVbXTsKCnN0YXRpYyBpbmxpbmUgem9uZV90ICpwYWdl
X3pvbmUoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKICAgICAgICByZXR1cm4gem9uZV90YWJsZVtwYWdl
LT5mbGFncyA+PiAoMzIgLSA4KV07Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGFnZV96b25l
KHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIHpvbmVfbnVtKQp7CiAgICAgICAgcGFn
ZS0+ZmxhZ3MgJj0gfih+MFVMIDw8ICgzMiAtIDgpKTsKICAgICAgICBwYWdlLT5mbGFncyB8PSB6
b25lX251bSA8PCAoMzIgLSA4KTsKfQojIDM3NyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvbW0uaCIKZXh0ZXJuIHZvaWQgc2V0X3BhZ2VfZGlydHkoc3RydWN0IHBhZ2UgKikg
X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDQyNyAiL3Vzci9zcmMvbGludXgtMi40LjIw
L2luY2x1ZGUvbGludXgvbW0uaCIKZXh0ZXJuIG1lbV9tYXBfdCAqIG1lbV9tYXA7CgoKCgoKCgpl
eHRlcm4gc3RydWN0IHBhZ2UgKiBfYWxsb2NfcGFnZXModW5zaWduZWQgaW50IGdmcF9tYXNrLCB1
bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0
cnVjdCBwYWdlICogX19hbGxvY19wYWdlcyh1bnNpZ25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVk
IGludCBvcmRlciwgem9uZWxpc3RfdCAqem9uZWxpc3QpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKTsKZXh0ZXJuIHN0cnVjdCBwYWdlICogYWxsb2NfcGFnZXNfbm9kZShpbnQgbmlkLCB1bnNp
Z25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcik7CgpzdGF0aWMgaW5saW5lIHN0
cnVjdCBwYWdlICogYWxsb2NfcGFnZXModW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBp
bnQgb3JkZXIpCnsKCgoKICAgICAgICBpZiAob3JkZXIgPj0gMTApCiAgICAgICAgICAgICAgICBy
ZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgcmV0dXJuIF9hbGxvY19wYWdlcyhnZnBfbWFzaywg
b3JkZXIpOwp9CgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIF9fZ2V0X2ZyZWVfcGFnZXModW5zaWdu
ZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMykpKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZ2V0X3plcm9lZF9wYWdlKHVuc2lnbmVkIGlu
dCBnZnBfbWFzaykgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDQ2OCAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbW0uaCIKZXh0ZXJuIHZvaWQgX19mcmVlX3BhZ2Vz
KHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIGFkZHIsIHVu
c2lnbmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKCgoKZXh0ZXJu
IHZvaWQgc2hvd19mcmVlX2FyZWFzKHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X2ZyZWVfYXJlYXNf
bm9kZShwZ19kYXRhX3QgKnBnZGF0KTsKCmV4dGVybiB2b2lkIGNsZWFyX3BhZ2VfdGFibGVzKHN0
cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZywgaW50KTsKCmV4dGVybiBpbnQgZmFpbF93
cml0ZXBhZ2Uoc3RydWN0IHBhZ2UgKik7CnN0cnVjdCBwYWdlICogc2htZW1fbm9wYWdlKHN0cnVj
dCB2bV9hcmVhX3N0cnVjdCAqIHZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgdW51c2Vk
KTsKc3RydWN0IGZpbGUgKnNobWVtX2ZpbGVfc2V0dXAoY2hhciAqIG5hbWUsIGxvZmZfdCBzaXpl
KTsKZXh0ZXJuIHZvaWQgc2htZW1fbG9jayhzdHJ1Y3QgZmlsZSAqIGZpbGUsIGludCBsb2NrKTsK
ZXh0ZXJuIGludCBzaG1lbV96ZXJvX3NldHVwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKCmV4
dGVybiB2b2lkIHphcF9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBs
b25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBpbnQgY29weV9wYWdlX3Jh
bmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVjdCAqc3JjLCBzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CmV4dGVybiBpbnQgcmVtYXBfcGFnZV9yYW5nZSh1bnNpZ25l
ZCBsb25nIGZyb20sIHVuc2lnbmVkIGxvbmcgdG8sIHVuc2lnbmVkIGxvbmcgc2l6ZSwgcGdwcm90
X3QgcHJvdCk7CmV4dGVybiBpbnQgemVyb21hcF9wYWdlX3JhbmdlKHVuc2lnbmVkIGxvbmcgZnJv
bSwgdW5zaWduZWQgbG9uZyBzaXplLCBwZ3Byb3RfdCBwcm90KTsKCmV4dGVybiBpbnQgdm10cnVu
Y2F0ZShzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgbG9mZl90IG9mZnNldCk7CmV4dGVybiBwbWRfdCAq
X19wbWRfYWxsb2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxv
bmcgYWRkcmVzcykgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gcHRlX3QgKnB0
ZV9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBh
ZGRyZXNzKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgaGFuZGxlX21t
X2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1
bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB3cml0ZV9hY2Nlc3MpOwpleHRlcm4gaW50IG1ha2Vf
cGFnZXNfcHJlc2VudCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kKTsKZXh0
ZXJuIGludCBhY2Nlc3NfcHJvY2Vzc192bShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWdu
ZWQgbG9uZyBhZGRyLCB2b2lkICpidWYsIGludCBsZW4sIGludCB3cml0ZSk7CmV4dGVybiBpbnQg
cHRyYWNlX3JlYWRkYXRhKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nIHNy
YywgY2hhciAqZHN0LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBwdHJhY2Vfd3JpdGVkYXRhKHN0cnVj
dCB0YXNrX3N0cnVjdCAqdHNrLCBjaGFyICogc3JjLCB1bnNpZ25lZCBsb25nIGRzdCwgaW50IGxl
bik7CmV4dGVybiBpbnQgcHRyYWNlX2F0dGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CmV4
dGVybiBpbnQgcHRyYWNlX2RldGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdW5zaWduZWQgaW50
KTsKZXh0ZXJuIHZvaWQgcHRyYWNlX2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl
cm4gaW50IHB0cmFjZV9jaGVja19hdHRhY2goc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBpbnQg
a2lsbCk7CgppbnQgZ2V0X3VzZXJfcGFnZXMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVj
dCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LAogICAgICAgICAgICAgICAgaW50
IGxlbiwgaW50IHdyaXRlLCBpbnQgZm9yY2UsIHN0cnVjdCBwYWdlICoqcGFnZXMsIHN0cnVjdCB2
bV9hcmVhX3N0cnVjdCAqKnZtYXMpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHBtZF90ICpwbWRfYWxs
b2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVz
cykKewogICAgICAgIGlmIChwZ2Rfbm9uZSgqcGdkKSkKICAgICAgICAgICAgICAgIHJldHVybiBf
X3BtZF9hbGxvYyhtbSwgcGdkLCBhZGRyZXNzKTsKICAgICAgICByZXR1cm4gcG1kX29mZnNldChw
Z2QsIGFkZHJlc3MpOwp9CgpleHRlcm4gaW50IHBndF9jYWNoZV93YXRlclsyXTsKZXh0ZXJuIGlu
dCBjaGVja19wZ3RfY2FjaGUodm9pZCk7CgpleHRlcm4gdm9pZCBmcmVlX2FyZWFfaW5pdCh1bnNp
Z25lZCBsb25nICogem9uZXNfc2l6ZSk7CmV4dGVybiB2b2lkIGZyZWVfYXJlYV9pbml0X25vZGUo
aW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKnBtYXAsCiAgICAgICAgdW5z
aWduZWQgbG9uZyAqIHpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgem9uZV9zdGFydF9wYWRkciwK
ICAgICAgICB1bnNpZ25lZCBsb25nICp6aG9sZXNfc2l6ZSk7CmV4dGVybiB2b2lkIG1lbV9pbml0
KHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X21lbSh2b2lkKTsKZXh0ZXJuIHZvaWQgc2lfbWVtaW5m
byhzdHJ1Y3Qgc3lzaW5mbyAqIHZhbCk7CmV4dGVybiB2b2lkIHN3YXBpbl9yZWFkYWhlYWQoc3dw
X2VudHJ5X3QpOwoKZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlIHN3YXBwZXJfc3BhY2U7CgoK
c3RhdGljIGlubGluZSBpbnQgaXNfcGFnZV9jYWNoZV9mcmVlYWJsZShzdHJ1Y3QgcGFnZSAqIHBh
Z2UpCnsKICAgICAgICByZXR1cm4gKCgmKHBhZ2UpLT5jb3VudCktPmNvdW50ZXIpIC0gISFwYWdl
LT5idWZmZXJzID09IDE7Cn0KCmV4dGVybiBpbnQgY2FuX3NoYXJlX3N3YXBfcGFnZShzdHJ1Y3Qg
cGFnZSAqKTsKZXh0ZXJuIGludCByZW1vdmVfZXhjbHVzaXZlX3N3YXBfcGFnZShzdHJ1Y3QgcGFn
ZSAqKTsKCmV4dGVybiB2b2lkIF9fZnJlZV9wdGUocHRlX3QpOwoKCmV4dGVybiB2b2lkIGxvY2tf
dm1hX21hcHBpbmdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgdW5sb2Nr
X3ZtYV9tYXBwaW5ncyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGluc2Vy
dF92bV9zdHJ1Y3Qoc3RydWN0IG1tX3N0cnVjdCAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7
CmV4dGVybiB2b2lkIF9faW5zZXJ0X3ZtX3N0cnVjdChzdHJ1Y3QgbW1fc3RydWN0ICosIHN0cnVj
dCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgYnVpbGRfbW1hcF9yYihzdHJ1Y3QgbW1f
c3RydWN0ICopOwpleHRlcm4gdm9pZCBleGl0X21tYXAoc3RydWN0IG1tX3N0cnVjdCAqKTsKCmV4
dGVybiB1bnNpZ25lZCBsb25nIGdldF91bm1hcHBlZF9hcmVhKHN0cnVjdCBmaWxlICosIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9fbW1hcF9wZ29mZihzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5z
aWduZWQgbG9uZyBhZGRyLAogICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBsb25n
IHByb3QsCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnLCB1bnNpZ25lZCBsb25nIHBnb2ZmKTsK
CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCB1
bnNpZ25lZCBsb25nIGFkZHIsCiAgICAgICAgdW5zaWduZWQgbG9uZyBsZW4sIHVuc2lnbmVkIGxv
bmcgcHJvdCwKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWcsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0
KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZXQgPSAtMjI7CiAgICAgICAgaWYgKChvZmZzZXQg
KyAoKChsZW4pKygxVUwgPDwgMTIpLTEpJih+KCgxVUwgPDwgMTIpLTEpKSkpIDwgb2Zmc2V0KQog
ICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgaWYgKCEob2Zmc2V0ICYgfih+KCgxVUwg
PDwgMTIpLTEpKSkpCiAgICAgICAgICAgICAgICByZXQgPSBkb19tbWFwX3Bnb2ZmKGZpbGUsIGFk
ZHIsIGxlbiwgcHJvdCwgZmxhZywgb2Zmc2V0ID4+IDEyKTsKb3V0OgogICAgICAgIHJldHVybiBy
ZXQ7Cn0KCmV4dGVybiBpbnQgZG9fbXVubWFwKHN0cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQg
bG9uZywgc2l6ZV90KTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRvX2Jyayh1bnNpZ25lZCBsb25n
LCB1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3ZtYV91bmxpbmsoc3RydWN0
IG1tX3N0cnVjdCAqIG1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHN0cnVjdCB2bV9h
cmVhX3N0cnVjdCAqIHByZXYpCnsKICAgICAgICBwcmV2LT52bV9uZXh0ID0gdm1hLT52bV9uZXh0
OwogICAgICAgIHJiX2VyYXNlKCZ2bWEtPnZtX3JiLCAmbW0tPm1tX3JiKTsKICAgICAgICBpZiAo
bW0tPm1tYXBfY2FjaGUgPT0gdm1hKQogICAgICAgICAgICAgICAgbW0tPm1tYXBfY2FjaGUgPSBw
cmV2Owp9CgpzdGF0aWMgaW5saW5lIGludCBjYW5fdm1hX21lcmdlKHN0cnVjdCB2bV9hcmVhX3N0
cnVjdCAqIHZtYSwgdW5zaWduZWQgbG9uZyB2bV9mbGFncykKewogICAgICAgIGlmICghdm1hLT52
bV9maWxlICYmIHZtYS0+dm1fZmxhZ3MgPT0gdm1fZmxhZ3MpCiAgICAgICAgICAgICAgICByZXR1
cm4gMTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKfQoKc3RydWN0IHpv
bmVfdDsKCmV4dGVybiB2b2lkIHJlbW92ZV9pbm9kZV9wYWdlKHN0cnVjdCBwYWdlICopOwpleHRl
cm4gdW5zaWduZWQgbG9uZyBwYWdlX3VudXNlKHN0cnVjdCBwYWdlICopOwpleHRlcm4gdm9pZCB0
cnVuY2F0ZV9pbm9kZV9wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3QpOwoKCmV4
dGVybiBpbnQgZmlsZW1hcF9zeW5jKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqLCB1bnNpZ25lZCBs
b25nLCBzaXplX3QsIHVuc2lnbmVkIGludCk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqZmlsZW1hcF9u
b3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIGludCk7CiMgNjMx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9tbS5oIgpzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGludCBwZl9nZnBfbWFzayh1bnNpZ25lZCBpbnQgZ2ZwX21hc2spCnsKCiAgICAg
ICAgaWYgKGdldF9jdXJyZW50KCktPmZsYWdzICYgMHgwMDAwNDAwMCkKICAgICAgICAgICAgICAg
IGdmcF9tYXNrICY9IH4oMHg0MCB8IDB4ODAgfCAweDEwMCk7CgogICAgICAgIHJldHVybiBnZnBf
bWFzazsKfQoKCgpzdGF0aWMgaW5saW5lIGludCBleHBhbmRfc3RhY2soc3RydWN0IHZtX2FyZWFf
c3RydWN0ICogdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpCnsKICAgICAgICB1bnNpZ25lZCBs
b25nIGdyb3c7CgoKCgoKCiAgICAgICAgYWRkcmVzcyAmPSAofigoMVVMIDw8IDEyKS0xKSk7CiAg
ICAgICAgc3Bpbl9sb2NrKCZ2bWEtPnZtX21tLT5wYWdlX3RhYmxlX2xvY2spOwogICAgICAgIGdy
b3cgPSAodm1hLT52bV9zdGFydCAtIGFkZHJlc3MpID4+IDEyOwogICAgICAgIGlmICh2bWEtPnZt
X2VuZCAtIGFkZHJlc3MgPiBnZXRfY3VycmVudCgpLT5ybGltWzNdLnJsaW1fY3VyIHx8CiAgICAg
ICAgICAgICgodm1hLT52bV9tbS0+dG90YWxfdm0gKyBncm93KSA8PCAxMikgPiBnZXRfY3VycmVu
dCgpLT5ybGltWzldLnJsaW1fY3VyKSB7CiAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmdm1h
LT52bV9tbS0+cGFnZV90YWJsZV9sb2NrKTsKICAgICAgICAgICAgICAgIHJldHVybiAtMTI7CiAg
ICAgICAgfQogICAgICAgIHZtYS0+dm1fc3RhcnQgPSBhZGRyZXNzOwogICAgICAgIHZtYS0+dm1f
cGdvZmYgLT0gZ3JvdzsKICAgICAgICB2bWEtPnZtX21tLT50b3RhbF92bSArPSBncm93OwogICAg
ICAgIGlmICh2bWEtPnZtX2ZsYWdzICYgMHgwMDAwMjAwMCkKICAgICAgICAgICAgICAgIHZtYS0+
dm1fbW0tPmxvY2tlZF92bSArPSBncm93OwogICAgICAgIHNwaW5fdW5sb2NrKCZ2bWEtPnZtX21t
LT5wYWdlX3RhYmxlX2xvY2spOwogICAgICAgIHJldHVybiAwOwp9CgoKZXh0ZXJuIHN0cnVjdCB2
bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgdW5zaWduZWQg
bG9uZyBhZGRyKTsKZXh0ZXJuIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hX3ByZXYo
c3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnBw
cmV2KTsKCgoKc3RhdGljIGlubGluZSBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBmaW5kX3ZtYV9p
bnRlcnNlY3Rpb24oc3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2Fk
ZHIsIHVuc2lnbmVkIGxvbmcgZW5kX2FkZHIpCnsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1
Y3QgKiB2bWEgPSBmaW5kX3ZtYShtbSxzdGFydF9hZGRyKTsKCiAgICAgICAgaWYgKHZtYSAmJiBl
bmRfYWRkciA8PSB2bWEtPnZtX3N0YXJ0KQogICAgICAgICAgICAgICAgdm1hID0gKCh2b2lkICop
MCk7CiAgICAgICAgcmV0dXJuIHZtYTsKfQoKZXh0ZXJuIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq
ZmluZF9leHRlbmRfdm1hKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIp
OwoKZXh0ZXJuIHN0cnVjdCBwYWdlICogdm1hbGxvY190b19wYWdlKHZvaWQgKmFkZHIpOwojIDI0
ICJzY2hlZC5jIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L3Nt
cF9sb2NrLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvc21w
X2xvY2suaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc21wbG9jay5o
IiAxCiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3NtcGxvY2suaCIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMQojIDE1
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKc3RydWN0
IGlycWFjdGlvbiB7CiAgICAgICAgdm9pZCAoKmhhbmRsZXIpKGludCwgdm9pZCAqLCBzdHJ1Y3Qg
cHRfcmVncyAqKTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgbWFzazsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIHZvaWQgKmRldl9p
ZDsKICAgICAgICBzdHJ1Y3QgaXJxYWN0aW9uICpuZXh0Owp9OwoKCgoKCmVudW0gewogICAgICAg
IFRJTUVSX0JIID0gMCwKICAgICAgICBUUVVFVUVfQkgsCiAgICAgICAgRElHSV9CSCwKICAgICAg
ICBTRVJJQUxfQkgsCiAgICAgICAgUklTQ09NOF9CSCwKICAgICAgICBTUEVDSUFMSVhfQkgsCiAg
ICAgICAgQVVST1JBX0JILAogICAgICAgIEVTUF9CSCwKICAgICAgICBTQ1NJX0JILAogICAgICAg
IElNTUVESUFURV9CSCwKICAgICAgICBDWUNMQURFU19CSCwKICAgICAgICBDTTIwNl9CSCwKICAg
ICAgICBKU19CSCwKICAgICAgICBNQUNTRVJJQUxfQkgsCiAgICAgICAgSVNJQ09NX0JICn07Cgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiIDEKCgoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2lycS5oIiAxCiMgMTkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2lycS5oIgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9pcnEuaCIgMQojIDMyICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9hc20vaXJxLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBpcnFfY2Fubm9uaWNh
bGl6ZShpbnQgaXJxKQp7CiAgICAgICAgcmV0dXJuICgoaXJxID09IDIpID8gOSA6IGlycSk7Cn0K
CmV4dGVybiB2b2lkIGRpc2FibGVfaXJxKHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIGRpc2Fi
bGVfaXJxX25vc3luYyh1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBlbmFibGVfaXJxKHVuc2ln
bmVkIGludCk7CmV4dGVybiB2b2lkIHJlbGVhc2VfeDg2X2lycXMoc3RydWN0IHRhc2tfc3RydWN0
ICopOwojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pcnEuaCIgMgoj
IDM5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pcnEuaCIKc3RydWN0IGh3
X2ludGVycnVwdF90eXBlIHsKICAgICAgICBjb25zdCBjaGFyICogdHlwZW5hbWU7CiAgICAgICAg
dW5zaWduZWQgaW50ICgqc3RhcnR1cCkodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAo
KnNodXRkb3duKSh1bnNpZ25lZCBpbnQgaXJxKTsKICAgICAgICB2b2lkICgqZW5hYmxlKSh1bnNp
Z25lZCBpbnQgaXJxKTsKICAgICAgICB2b2lkICgqZGlzYWJsZSkodW5zaWduZWQgaW50IGlycSk7
CiAgICAgICAgdm9pZCAoKmFjaykodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKmVu
ZCkodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKnNldF9hZmZpbml0eSkodW5zaWdu
ZWQgaW50IGlycSwgdW5zaWduZWQgbG9uZyBtYXNrKTsKfTsKCnR5cGVkZWYgc3RydWN0IGh3X2lu
dGVycnVwdF90eXBlIGh3X2lycV9jb250cm9sbGVyOwojIDU5ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9pcnEuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVk
IGludCBzdGF0dXM7CiAgICAgICAgaHdfaXJxX2NvbnRyb2xsZXIgKmhhbmRsZXI7CiAgICAgICAg
c3RydWN0IGlycWFjdGlvbiAqYWN0aW9uOwogICAgICAgIHVuc2lnbmVkIGludCBkZXB0aDsKICAg
ICAgICBzcGlubG9ja190IGxvY2s7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwg
KCg1KSkpKSkpIGlycV9kZXNjX3Q7CgpleHRlcm4gaXJxX2Rlc2NfdCBpcnFfZGVzYyBbMjI0XTsK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2h3X2lycS5oIiAxCiMgNjEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9od19pcnEuaCIKZXh0ZXJuIGludCBp
cnFfdmVjdG9yWzIyNF07CiMgNzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9o
d19pcnEuaCIKZXh0ZXJuIHZvaWQgbWFza19pcnEodW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2
b2lkIHVubWFza19pcnEodW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIGRpc2FibGVfODI1
OUFfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4gdm9pZCBlbmFibGVfODI1OUFfaXJxKHVu
c2lnbmVkIGludCBpcnEpOwpleHRlcm4gaW50IGk4MjU5QV9pcnFfcGVuZGluZyh1bnNpZ25lZCBp
bnQgaXJxKTsKZXh0ZXJuIHZvaWQgbWFrZV84MjU5QV9pcnEodW5zaWduZWQgaW50IGlycSk7CmV4
dGVybiB2b2lkIGluaXRfODI1OUEoaW50IGFlb2kpOwpleHRlcm4gdm9pZCBzZW5kX0lQSV9zZWxm
KGludCB2ZWN0b3IpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgaW5p
dF9WSVNXU19BUElDX2lycXModm9pZCk7CmV4dGVybiB2b2lkIHNldHVwX0lPX0FQSUModm9pZCk7
CmV4dGVybiB2b2lkIGRpc2FibGVfSU9fQVBJQyh2b2lkKTsKZXh0ZXJuIHZvaWQgcHJpbnRfSU9f
QVBJQyh2b2lkKTsKZXh0ZXJuIGludCBJT19BUElDX2dldF9QQ0lfaXJxX3ZlY3RvcihpbnQgYnVz
LCBpbnQgc2xvdCwgaW50IGZuKTsKZXh0ZXJuIHZvaWQgc2VuZF9JUEkoaW50IGRlc3QsIGludCB2
ZWN0b3IpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW9fYXBpY19pcnFzOwoKZXh0ZXJuIGF0b21p
Y190IGlycV9lcnJfY291bnQ7CmV4dGVybiBhdG9taWNfdCBpcnFfbWlzX2NvdW50OwoKZXh0ZXJu
IGNoYXIgX3N0ZXh0LCBfZXRleHQ7CiMgMTgzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVk
ZS9hc20vaHdfaXJxLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2ZfY3B1X21hc2s7CmV4dGVy
biB1bnNpZ25lZCBpbnQgKiBwcm9mX2J1ZmZlcjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9s
ZW47CmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2Zfc2hpZnQ7CgoKCgoKc3RhdGljIGlubGluZSB2
b2lkIHg4Nl9kb19wcm9maWxlICh1bnNpZ25lZCBsb25nIGVpcCkKewogICAgICAgIGlmICghcHJv
Zl9idWZmZXIpCiAgICAgICAgICAgICAgICByZXR1cm47CgoKCgoKICAgICAgICBpZiAoISgoMTw8
KGdldF9jdXJyZW50KCktPnByb2Nlc3NvcikpICYgcHJvZl9jcHVfbWFzaykpCiAgICAgICAgICAg
ICAgICByZXR1cm47CgogICAgICAgIGVpcCAtPSAodW5zaWduZWQgbG9uZykgJl9zdGV4dDsKICAg
ICAgICBlaXAgPj49IHByb2Zfc2hpZnQ7CgoKCgoKICAgICAgICBpZiAoZWlwID4gcHJvZl9sZW4t
MSkKICAgICAgICAgICAgICAgIGVpcCA9IHByb2ZfbGVuLTE7CiAgICAgICAgYXRvbWljX2luYygo
YXRvbWljX3QgKikmcHJvZl9idWZmZXJbZWlwXSk7Cn0KCgpzdGF0aWMgaW5saW5lIHZvaWQgaHdf
cmVzZW5kX2lycShzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgKmgsIHVuc2lnbmVkIGludCBpKSB7
CiAgICAgICAgaWYgKCgoKGkpID49IDE2KSB8fCAoKDE8PChpKSkgJiBpb19hcGljX2lycXMpKSkK
ICAgICAgICAgICAgICAgIHNlbmRfSVBJX3NlbGYoaXJxX3ZlY3RvcltpXSk7Cn0KIyA3MCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaXJxLmgiIDIKCmV4dGVybiBpbnQgaGFu
ZGxlX0lSUV9ldmVudCh1bnNpZ25lZCBpbnQsIHN0cnVjdCBwdF9yZWdzICosIHN0cnVjdCBpcnFh
Y3Rpb24gKik7CmV4dGVybiBpbnQgc2V0dXBfaXJxKHVuc2lnbmVkIGludCAsIHN0cnVjdCBpcnFh
Y3Rpb24gKiApOwoKZXh0ZXJuIGh3X2lycV9jb250cm9sbGVyIG5vX2lycV90eXBlOwpleHRlcm4g
dm9pZCBub19hY3Rpb24oaW50IGNwbCwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVn
cyk7CiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMgoK
CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBpbnQgX19zb2Z0aXJxX3BlbmRpbmc7
CiAgICAgICAgdW5zaWduZWQgaW50IF9fbG9jYWxfaXJxX2NvdW50OwogICAgICAgIHVuc2lnbmVk
IGludCBfX2xvY2FsX2JoX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBfX3N5c2NhbGxfY291
bnQ7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICogX19rc29mdGlycWRfdGFzazsKICAgICAg
ICB1bnNpZ25lZCBpbnQgX19ubWlfY291bnQ7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18o
KDEgPDwgKCg1KSkpKSkpIGlycV9jcHVzdGF0X3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2lycV9jcHVzdGF0LmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgvaXJxX2NwdXN0YXQuaCIKZXh0ZXJuIGlycV9jcHVzdGF0X3QgaXJx
X3N0YXRbXTsKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2hhcmRpcnEu
aCIgMgojIDQ0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vaGFyZGlycS5oIgpl
eHRlcm4gdW5zaWduZWQgY2hhciBnbG9iYWxfaXJxX2hvbGRlcjsKZXh0ZXJuIHVuc2lnbmVkIHZv
bGF0aWxlIGxvbmcgZ2xvYmFsX2lycV9sb2NrOwoKc3RhdGljIGlubGluZSBpbnQgaXJxc19ydW5u
aW5nICh2b2lkKQp7CiAgICAgICAgaW50IGk7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBzbXBf
bnVtX2NwdXM7IGkrKykKICAgICAgICAgICAgICAgIGlmICgoaXJxX3N0YXRbKGkpXS5fX2xvY2Fs
X2lycV9jb3VudCkpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIHJl
dHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcmVsZWFzZV9pcnFsb2NrKGludCBjcHUpCnsK
CiAgICAgICAgaWYgKGdsb2JhbF9pcnFfaG9sZGVyID09ICh1bnNpZ25lZCBjaGFyKSBjcHUpIHsK
ICAgICAgICAgICAgICAgIGdsb2JhbF9pcnFfaG9sZGVyID0gMHhGRjsKICAgICAgICAgICAgICAg
IGNsZWFyX2JpdCgwLCZnbG9iYWxfaXJxX2xvY2spOwogICAgICAgIH0KfQoKc3RhdGljIGlubGlu
ZSB2b2lkIGlycV9lbnRlcihpbnQgY3B1LCBpbnQgaXJxKQp7CiAgICAgICAgKysoaXJxX3N0YXRb
KGNwdSldLl9fbG9jYWxfaXJxX2NvdW50KTsKCiAgICAgICAgd2hpbGUgKChfX2J1aWx0aW5fY29u
c3RhbnRfcCgwKSA/IGNvbnN0YW50X3Rlc3RfYml0KCgwKSwoJmdsb2JhbF9pcnFfbG9jaykpIDog
dmFyaWFibGVfdGVzdF9iaXQoKDApLCgmZ2xvYmFsX2lycV9sb2NrKSkpKSB7CiAgICAgICAgICAg
ICAgICByZXBfbm9wKCk7CiAgICAgICAgfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaXJxX2V4aXQo
aW50IGNwdSwgaW50IGlycSkKewogICAgICAgIC0tKGlycV9zdGF0WyhjcHUpXS5fX2xvY2FsX2ly
cV9jb3VudCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGhhcmRpcnFfdHJ5bG9jayhpbnQgY3B1KQp7
CiAgICAgICAgcmV0dXJuICEoaXJxX3N0YXRbKGNwdSldLl9fbG9jYWxfaXJxX2NvdW50KSAmJiAh
KF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gY29uc3RhbnRfdGVzdF9iaXQoKDApLCgmZ2xvYmFs
X2lycV9sb2NrKSkgOiB2YXJpYWJsZV90ZXN0X2JpdCgoMCksKCZnbG9iYWxfaXJxX2xvY2spKSk7
Cn0KCgoKZXh0ZXJuIHZvaWQgc3luY2hyb25pemVfaXJxKHZvaWQpOwojIDQ3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9zb2Z0aXJxLmgiIDEKIyA0OCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyA1NyAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCmVudW0KewogICAgICAgIEhJX1NPRlRJ
UlE9MCwKICAgICAgICBORVRfVFhfU09GVElSUSwKICAgICAgICBORVRfUlhfU09GVElSUSwKICAg
ICAgICBUQVNLTEVUX1NPRlRJUlEKfTsKCgoKCgpzdHJ1Y3Qgc29mdGlycV9hY3Rpb24KewogICAg
ICAgIHZvaWQgKCphY3Rpb24pKHN0cnVjdCBzb2Z0aXJxX2FjdGlvbiAqKTsKICAgICAgICB2b2lk
ICpkYXRhOwp9OwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIGRvX3NvZnRpcnEo
dm9pZCk7CmV4dGVybiB2b2lkIG9wZW5fc29mdGlycShpbnQgbnIsIHZvaWQgKCphY3Rpb24pKHN0
cnVjdCBzb2Z0aXJxX2FjdGlvbiopLCB2b2lkICpkYXRhKTsKZXh0ZXJuIHZvaWQgc29mdGlycV9p
bml0KHZvaWQpOwoKZXh0ZXJuIHZvaWQgY3B1X3JhaXNlX3NvZnRpcnEodW5zaWduZWQgaW50IGNw
dSwgdW5zaWduZWQgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2
b2lkIHJhaXNlX3NvZnRpcnEodW5zaWduZWQgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDMpKSk7CiMgMTA0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9pbnRlcnJ1
cHQuaCIKc3RydWN0IHRhc2tsZXRfc3RydWN0CnsKICAgICAgICBzdHJ1Y3QgdGFza2xldF9zdHJ1
Y3QgKm5leHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGF0ZTsKICAgICAgICBhdG9taWNfdCBj
b3VudDsKICAgICAgICB2b2lkICgqZnVuYykodW5zaWduZWQgbG9uZyk7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBkYXRhOwp9OwojIDEyMCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGlu
dXgvaW50ZXJydXB0LmgiCmVudW0KewogICAgICAgIFRBU0tMRVRfU1RBVEVfU0NIRUQsCiAgICAg
ICAgVEFTS0xFVF9TVEFURV9SVU4KfTsKCnN0cnVjdCB0YXNrbGV0X2hlYWQKewogICAgICAgIHN0
cnVjdCB0YXNrbGV0X3N0cnVjdCAqbGlzdDsKfSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18o
KDEgPDwgKCg1KSkpKSkpOwoKZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X2hlYWQgdGFza2xldF92ZWNb
MzJdOwpleHRlcm4gc3RydWN0IHRhc2tsZXRfaGVhZCB0YXNrbGV0X2hpX3ZlY1szMl07CgoKc3Rh
dGljIGlubGluZSBpbnQgdGFza2xldF90cnlsb2NrKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkK
ewogICAgICAgIHJldHVybiAhdGVzdF9hbmRfc2V0X2JpdChUQVNLTEVUX1NUQVRFX1JVTiwgJih0
KS0+c3RhdGUpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza2xldF91bmxvY2soc3RydWN0IHRh
c2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt
ZW1vcnkiKTsKICAgICAgICBjbGVhcl9iaXQoVEFTS0xFVF9TVEFURV9SVU4sICYodCktPnN0YXRl
KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfdW5sb2NrX3dhaXQoc3RydWN0IHRhc2ts
ZXRfc3RydWN0ICp0KQp7CiAgICAgICAgd2hpbGUgKChfX2J1aWx0aW5fY29uc3RhbnRfcChUQVNL
TEVUX1NUQVRFX1JVTikgPyBjb25zdGFudF90ZXN0X2JpdCgoVEFTS0xFVF9TVEFURV9SVU4pLCgm
KHQpLT5zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKFRBU0tMRVRfU1RBVEVfUlVOKSwoJih0
KS0+c3RhdGUpKSkpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfQp9
CgoKCgoKCmV4dGVybiB2b2lkIF9fdGFza2xldF9zY2hlZHVsZShzdHJ1Y3QgdGFza2xldF9zdHJ1
Y3QgKnQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCB0
YXNrbGV0X3NjaGVkdWxlKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIGlmICgh
dGVzdF9hbmRfc2V0X2JpdChUQVNLTEVUX1NUQVRFX1NDSEVELCAmdC0+c3RhdGUpKQogICAgICAg
ICAgICAgICAgX190YXNrbGV0X3NjaGVkdWxlKHQpOwp9CgpleHRlcm4gdm9pZCBfX3Rhc2tsZXRf
aGlfc2NoZWR1bGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza2xldF9oaV9zY2hlZHVsZShzdHJ1Y3Qg
dGFza2xldF9zdHJ1Y3QgKnQpCnsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoVEFTS0xF
VF9TVEFURV9TQ0hFRCwgJnQtPnN0YXRlKSkKICAgICAgICAgICAgICAgIF9fdGFza2xldF9oaV9z
Y2hlZHVsZSh0KTsKfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2Rpc2FibGVfbm9zeW5j
KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIGF0b21pY19pbmMoJnQtPmNvdW50
KTsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgdGFza2xldF9kaXNhYmxlKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkK
ewogICAgICAgIHRhc2tsZXRfZGlzYWJsZV9ub3N5bmModCk7CiAgICAgICAgdGFza2xldF91bmxv
Y2tfd2FpdCh0KTsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAs
MCglJWVzcCkiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2Vu
YWJsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGF0b21pY19kZWMoJnQtPmNvdW50KTsKfQoK
c3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfaGlfZW5hYmxlKHN0cnVjdCB0YXNrbGV0X3N0cnVj
dCAqdCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiAg
ICAgICAgYXRvbWljX2RlYygmdC0+Y291bnQpOwp9CgpleHRlcm4gdm9pZCB0YXNrbGV0X2tpbGwo
c3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KTsKZXh0ZXJuIHZvaWQgdGFza2xldF9pbml0KHN0cnVj
dCB0YXNrbGV0X3N0cnVjdCAqdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpmdW5j
KSh1bnNpZ25lZCBsb25nKSwgdW5zaWduZWQgbG9uZyBkYXRhKTsKIyAyMjMgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIgpleHRlcm4gc3RydWN0IHRhc2ts
ZXRfc3RydWN0IGJoX3Rhc2tfdmVjW107CgoKZXh0ZXJuIHNwaW5sb2NrX3QgZ2xvYmFsX2JoX2xv
Y2s7CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19iaChpbnQgbnIpCnsKICAgICAgICB0YXNrbGV0
X2hpX3NjaGVkdWxlKGJoX3Rhc2tfdmVjK25yKTsKfQoKZXh0ZXJuIHZvaWQgaW5pdF9iaChpbnQg
bnIsIHZvaWQgKCpyb3V0aW5lKSh2b2lkKSk7CmV4dGVybiB2b2lkIHJlbW92ZV9iaChpbnQgbnIp
OwojIDI2NCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0Lmgi
CmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2JlX2lycV9vbih2b2lkKTsKZXh0ZXJuIGludCBwcm9i
ZV9pcnFfb2ZmKHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdW5zaWduZWQgaW50IHByb2JlX2lycV9t
YXNrKHVuc2lnbmVkIGxvbmcpOwojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vc21wbG9jay5oIiAyCgoKCgpleHRlcm4gc3BpbmxvY2tfY2FjaGVsaW5lX3Qga2VybmVsX2Zs
YWdfY2FjaGVsaW5lOwojIDQ3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vc21w
bG9jay5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxvY2tfa2VybmVsKHZvaWQpCnsKCiAgICAg
ICAgaWYgKCErK2dldF9jdXJyZW50KCktPmxvY2tfZGVwdGgpCiAgICAgICAgICAgICAgICBzcGlu
X2xvY2soJmtlcm5lbF9mbGFnX2NhY2hlbGluZS5sb2NrKTsKIyA2MSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3NtcGxvY2suaCIKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCB1
bmxvY2tfa2VybmVsKHZvaWQpCnsKICAgICAgICBpZiAoZ2V0X2N1cnJlbnQoKS0+bG9ja19kZXB0
aCA8IDApCiAgICAgICAgICAgICAgICBfX291dF9vZl9saW5lX2J1Zyg2Nik7CgogICAgICAgIGlm
ICgtLWdldF9jdXJyZW50KCktPmxvY2tfZGVwdGggPCAwKQogICAgICAgICAgICAgICAgc3Bpbl91
bmxvY2soJmtlcm5lbF9mbGFnX2NhY2hlbGluZS5sb2NrKTsKIyA3OSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwL2luY2x1ZGUvYXNtL3NtcGxvY2suaCIKfQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9saW51eC9zbXBfbG9jay5oIiAyCiMgMjYgInNjaGVkLmMiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9ubWkuaCIgMQojIDE3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9ubWkuaCIKZXh0ZXJuIHZvaWQgdG91Y2hfbm1pX3dh
dGNoZG9nKHZvaWQpOwojIDI3ICJzY2hlZC5jIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2xpbnV4L2tlcm5lbF9zdGF0LmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40
LjIwL2luY2x1ZGUvbGludXgva2VybmVsX3N0YXQuaCIKc3RydWN0IGtlcm5lbF9zdGF0IHsKICAg
ICAgICB1bnNpZ25lZCBpbnQgcGVyX2NwdV91c2VyWzMyXSwKICAgICAgICAgICAgICAgICAgICAg
cGVyX2NwdV9uaWNlWzMyXSwKICAgICAgICAgICAgICAgICAgICAgcGVyX2NwdV9zeXN0ZW1bMzJd
OwogICAgICAgIHVuc2lnbmVkIGludCBka19kcml2ZVsxNl1bMTZdOwogICAgICAgIHVuc2lnbmVk
IGludCBka19kcml2ZV9yaW9bMTZdWzE2XTsKICAgICAgICB1bnNpZ25lZCBpbnQgZGtfZHJpdmVf
d2lvWzE2XVsxNl07CiAgICAgICAgdW5zaWduZWQgaW50IGRrX2RyaXZlX3JibGtbMTZdWzE2XTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZGtfZHJpdmVfd2Jsa1sxNl1bMTZdOwogICAgICAgIHVuc2ln
bmVkIGludCBwZ3BnaW4sIHBncGdvdXQ7CiAgICAgICAgdW5zaWduZWQgaW50IHBzd3BpbiwgcHN3
cG91dDsKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgaXJxc1szMl1bMjI0XTsKCiAgICAgICAgdW5z
aWduZWQgaW50IGNvbnRleHRfc3d0Y2g7Cn07CgpleHRlcm4gc3RydWN0IGtlcm5lbF9zdGF0IGtz
dGF0OwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbnJfY29udGV4dF9zd2l0Y2hlcyh2b2lkKTsKIyA1
OCAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvbGludXgva2VybmVsX3N0YXQuaCIKZXh0
ZXJuIGlubGluZSBpbnQga3N0YXRfaXJxcyAoaW50IGlycSkKewogICAgICAgIGludCBpLCBzdW09
MDsKCiAgICAgICAgZm9yIChpID0gMCA7IGkgPCBzbXBfbnVtX2NwdXMgOyBpKyspCiAgICAgICAg
ICAgICAgICBzdW0gKz0ga3N0YXQuaXJxc1tjcHVfbG9naWNhbF9tYXAoaSldW2lycV07CgogICAg
ICAgIHJldHVybiBzdW07Cn0KIyAyOSAic2NoZWQuYyIgMgoKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9saW51eC9zdXNwZW5kLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIgMQojIDE0ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAvaW5jbHVkZS9saW51eC9ub3RpZmllci5oIgpzdHJ1Y3Qgbm90aWZpZXJfYmxv
Y2sKewogICAgICAgIGludCAoKm5vdGlmaWVyX2NhbGwpKHN0cnVjdCBub3RpZmllcl9ibG9jayAq
c2VsZiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKICAgICAgICBzdHJ1Y3Qgbm90aWZpZXJfYmxv
Y2sgKm5leHQ7CiAgICAgICAgaW50IHByaW9yaXR5Owp9OwoKCgoKZXh0ZXJuIGludCBub3RpZmll
cl9jaGFpbl9yZWdpc3RlcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKipsaXN0LCBzdHJ1Y3Qgbm90
aWZpZXJfYmxvY2sgKm4pOwpleHRlcm4gaW50IG5vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3Ry
dWN0IG5vdGlmaWVyX2Jsb2NrICoqbmwsIHN0cnVjdCBub3RpZmllcl9ibG9jayAqbik7CmV4dGVy
biBpbnQgbm90aWZpZXJfY2FsbF9jaGFpbihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKipuLCB1bnNp
Z25lZCBsb25nIHZhbCwgdm9pZCAqdik7CiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1
ZGUvbGludXgvc3VzcGVuZC5oIiAyCgoKCmV4dGVybiB1bnNpZ25lZCBjaGFyIHNvZnR3YXJlX3N1
c3BlbmRfZW5hYmxlZDsKCgoKCgpleHRlcm4gaW50IHN3c3VzcF9zdGF0ZVs1XTsKCgp0eXBlZGVm
IHN0cnVjdCBwYmUgewogICAgICAgIHN0cnVjdCBwYWdlICogb3JpZ2FkZHJlc3M7CiAgICAgICAg
c3RydWN0IHBhZ2UgKiBhZGRyZXNzOwogICAgICAgIHN3cF9lbnRyeV90IHN3YXBfYWRkcmVzczsK
CgoKCiAgICAgICAgc3dwX2VudHJ5X3QgZHVtbXk7CgoKCn0gc3VzcGVuZF9wYmVfdDsKCnR5cGVk
ZWYgc3RydWN0IHBhZ2VkaXIgewogICAgICAgIGludCBwYWdlc2V0X3NpemU7CiAgICAgICAgaW50
IHBhZ2VkaXJfc2l6ZTsKICAgICAgICBpbnQgYWxsb2NfZnJvbTsKICAgICAgICBzdHJ1Y3QgcGJl
ICpkYXRhOwogICAgICAgIHN0cnVjdCBwYmUgKmZpcnN0X2FsbG9jYXRlZDsKCn0gc3VzcGVuZF9w
YWdlZGlyX3Q7CgpzdHJ1Y3QgcGJlbGluayB7CiAgICAgICAgY2hhciBkdW1teVtzaXplb2Yoc3Ry
dWN0IHBiZSkgLSBzaXplb2Yoc3RydWN0IHBiZSAqKV07CiAgICAgICAgc3RydWN0IHBiZSAqIG5l
eHQ7Cn07CgoKCnN0cnVjdCBzdXNwZW5kX2hlYWRlciB7CiAgICAgICAgX191MzIgdmVyc2lvbl9j
b2RlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbnVtX3BoeXNwYWdlczsKICAgICAgICBjaGFyIG1h
Y2hpbmVbNjVdOwogICAgICAgIGNoYXIgdmVyc2lvbls2NV07CiAgICAgICAgaW50IG51bV9jcHVz
OwogICAgICAgIGludCBwYWdlX3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiYXNlX21lbV9m
cmVlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcGZvcmltYWdlOwogICAgICAgIHVuc2lnbmVk
IGludCBleHBlY3RlZF9zaXplMTsKICAgICAgICB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRfc2l6ZTI7
CiAgICAgICAgc3RydWN0IHBhZ2VkaXIgcGFnZWRpcjsKICAgICAgICBpbnQgcGFyYW0wOwogICAg
ICAgIGludCBwYXJhbTE7CiAgICAgICAgaW50IHBhcmFtMjsKICAgICAgICBpbnQgcGFyYW0zOwog
ICAgICAgIGludCBwYXJhbTQ7CiAgICAgICAgaW50IHByb2dyZXNzMDsKICAgICAgICBpbnQgcHJv
Z3Jlc3MxOwogICAgICAgIGludCBwcm9ncmVzczI7CiAgICAgICAgaW50IHByb2dyZXNzMzsKICAg
ICAgICBpbnQgcHJvZ3Jlc3M0OwogICAgICAgIGtkZXZfdCBrZGV2c1szMl07CiAgICAgICAgc3Ry
dWN0IHN3YXBfbG9jYXRpb24gewogICAgICAgICAgICAgICAgY2hhciBmaWxlbmFtZVszMl07CiAg
ICAgICAgfSBzd2FwX2xvY2F0aW9uWzMyXTsKfTsKCgoKCgoKZXh0ZXJuIHN0cnVjdCB0cV9zdHJ1
Y3Qgc3VzcGVuZF90cTsKCgpleHRlcm4gaW50IHNocmlua19tZW0odm9pZCk7CgoKZXh0ZXJuIHZv
aWQgc29mdHdhcmVfc3VzcGVuZF9wZW5kaW5nKHZvaWQpOwpleHRlcm4gdm9pZCBzb2Z0d2FyZV9y
ZXN1bWUodm9pZCk7CgpleHRlcm4gaW50IHJlZ2lzdGVyX3N1c3BlbmRfbm90aWZpZXIoc3RydWN0
IG5vdGlmaWVyX2Jsb2NrICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfc3VzcGVuZF9ub3RpZmll
cihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKik7CmV4dGVybiB2b2lkIHJlZnJpZ2VyYXRvcih1bnNp
Z25lZCBsb25nKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIHN1c3BlbmRfc3dhcF9iaDsK
CmV4dGVybiBzdHJ1Y3QgcGFnZSAqIGxhc3Rfc3VzcGVuZF9jYWNoZV9wYWdlOwpleHRlcm4gdW5z
aWduZWQgaW50IHN1c3BlbmRfdGFzazsKIyAzNCAic2NoZWQuYyIgMgoKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIgMQojIDM1ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpleHRlcm4gaW50IF9fdmVyaWZ5X3dyaXRl
KGNvbnN0IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CiMgNjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0YXRpYyBpbmxpbmUgaW50IHZlcmlmeV9hcmVhKGlu
dCB0eXBlLCBjb25zdCB2b2lkICogYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAg
cmV0dXJuICgoeyB1bnNpZ25lZCBsb25nIGZsYWcsc3VtOyBhc20oImFkZGwgJTMsJTEgOyBzYmJs
ICUwLCUwOyBjbXBsICUxLCU0OyBzYmJsICQwLCUwIiA6Ij0mciIgKGZsYWcpLCAiPXIiIChzdW0p
IDoiMSIgKGFkZHIpLCJnIiAoKGludCkoc2l6ZSkpLCJnIiAoZ2V0X2N1cnJlbnQoKS0+YWRkcl9s
aW1pdC5zZWcpKTsgZmxhZzsgfSkgPT0gMCkgPyAwIDogLTE0Owp9CiMgODEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0cnVjdCBleGNlcHRpb25fdGFibGVf
ZW50cnkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgaW5zbiwgZml4dXA7Cn07CgoKZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgc2VhcmNoX2V4Y2VwdGlvbl90YWJsZSh1bnNpZ25lZCBsb25nKTsKIyAxMDUg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCmV4dGVybiB2b2lk
IF9fZ2V0X3VzZXJfMSh2b2lkKTsKZXh0ZXJuIHZvaWQgX19nZXRfdXNlcl8yKHZvaWQpOwpleHRl
cm4gdm9pZCBfX2dldF91c2VyXzQodm9pZCk7CiMgMTI3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAv
aW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpleHRlcm4gdm9pZCBfX3B1dF91c2VyXzEodm9pZCk7CmV4
dGVybiB2b2lkIF9fcHV0X3VzZXJfMih2b2lkKTsKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl80KHZv
aWQpOwpleHRlcm4gdm9pZCBfX3B1dF91c2VyXzgodm9pZCk7CgpleHRlcm4gdm9pZCBfX3B1dF91
c2VyX2JhZCh2b2lkKTsKIyAxODggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91
YWNjZXNzLmgiCnN0cnVjdCBfX2xhcmdlX3N0cnVjdCB7IHVuc2lnbmVkIGxvbmcgYnVmWzEwMF07
IH07CiMgMjIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpl
eHRlcm4gbG9uZyBfX2dldF91c2VyX2JhZCh2b2lkKTsKIyAzMDggIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpf
X2dlbmVyaWNfY29weV9mcm9tX3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJv
bSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgX19hc21f
XyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIJbW92bCAlMywlMFxuIiAiMToJcmVw
OyBtb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CWxlYSAwKCUz
LCUwLDQpLCUwXG4iICI0OglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVh
eCwlJWVheFxuIiAiCXJlcDsgc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAi
CWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJ
LmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMi
IDogIj0mYyIobiksICI9JkQiIChfX2QwKSwgIj0mUyIgKF9fZDEpIDogInIiKG4gJiAzKSwgIjAi
KG4gLyA0KSwgIjEiKHRvKSwgIjIiKGZyb20pIDogIm1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAg
ICAgICByZXR1cm4gbjsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCl9fZ2VuZXJpY19j
b3B5X3RvX3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQg
bG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgX19hc21fXyBfX3ZvbGF0aWxl
X18oICIwOglyZXA7IG1vdnNsXG4iICIJbW92bCAlMywlMFxuIiAiMToJcmVwOyBtb3ZzYlxuIiAi
MjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CWxlYSAwKCUzLCUwLDQpLCUwXG4i
ICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIg
IgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsMmJcbiIgIi5wcmV2aW91
cyIgOiAiPSZjIihuKSwgIj0mRCIgKF9fZDApLCAiPSZTIiAoX19kMSkgOiAiciIobiAmIDMpLCAi
MCIobiAvIDQpLCAiMSIodG8pLCAiMiIoZnJvbSkgOiAibWVtb3J5Iik7IH0gd2hpbGUgKDApOwog
ICAgICAgIHJldHVybiBuOwp9CiMgNTQzICIvdXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9h
c20vdWFjY2Vzcy5oIgp1bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIodm9pZCAq
LCBjb25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwp1bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19j
b3B5X2Zyb21fdXNlcih2b2lkICosIGNvbnN0IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CgpzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X3RvX3VzZXIodm9pZCAqdG8s
IGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIHByZWZldGNoKGZy
b20pOwogICAgICAgIGlmICgoKHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUz
LCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFnKSwg
Ij1yIiAoc3VtKSA6IjEiICh0byksImciICgoaW50KShuKSksImciIChnZXRfY3VycmVudCgpLT5h
ZGRyX2xpbWl0LnNlZykpOyBmbGFnOyB9KSA9PSAwKSkKICAgICAgICAgICAgICAgIGRvIHsgaW50
IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxl
X18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAi
MjoJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhf
dGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDJiXG4iICIucHJldmlvdXMi
IDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0
byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZp
eHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUwXG4iICI0OglpbmNsICUwXG4iICIJam1wIDJiXG4i
ICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxu
IiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4p
LCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4v
NCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJ
cmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwi
XG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWFkZGwgJDIsJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2
aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxv
bmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMi
IChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJt
ZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1v
dnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6XG4iICIuc2VjdGlvbiAuZml4dXAs
XCJheFwiXG4iICI0OglzaGwgJDIsJTBcbiIgIjU6CWFkZGwgJDIsJTBcbiIgIjY6CWluY2wgJTBc
biIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxu
IiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIgIgkubG9uZyAxYiw1YlxuIiAiCS5sb25n
IDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19k
MSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgfSB9
IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBs
b25nCl9fY29uc3RhbnRfY29weV9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20s
IHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIGlmICgoKHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1
bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIg
OiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiIChmcm9tKSwiZyIgKChpbnQpKG4pKSwiZyIg
KGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7IGZsYWc7IH0pID09IDApKQogICAgICAg
ICAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0OiBf
X2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAu
Zml4dXAsXCJheFwiXG4iICIyOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAl
JWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxu
IiAiCXNobCAkMiwlMFxuIiAiCWptcCAxYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4
X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3Vz
IiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIo
dG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0
aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5m
aXh1cCxcImF4XCJcbiIgIjM6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUl
ZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAi
CXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICI0Oglw
dXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVl
YXhcbiIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9f
ZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcg
MWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2Qx
KSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNl
IDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIg
IjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglwdXNobCAlMFxuIiAiCXB1c2hs
ICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xu
IiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRkbCAkMiwl
MFxuIiAiCWptcCAyYlxuIiAiNDoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4i
ICIJc3Rvc3dcbiIgIglwb3BsICUlZWF4XG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAi
LnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIg
IgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwg
Ij0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQp
IDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJl
cDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5m
aXh1cCxcImF4XCJcbiIgIjQ6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUl
ZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3Bs
ICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWFkZGwgJDMsJTBcbiIgIglq
bXAgMmJcbiIgIjU6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3N3
XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxu
IiAiNjoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglw
b3BsICUlZWF4XG4iICIJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2Vj
dGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAi
CS5sb25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAi
PSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkg
OiAibWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
bikpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCh0bykpLCgoMHgwMTAxMDEwMVVM
Kih1bnNpZ25lZCBjaGFyKSgwKSkpLCgobikpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCh0bykp
LCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgobikpKSkgOiAoX19idWlsdGlu
X2NvbnN0YW50X3AoKG4pKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgodG8pKSksKCgoMCkpKSwoKChu
KSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCh0bykpLCgoMCkpLCgobikpKSkpOwogICAgICAgIHJl
dHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X3Rv
X3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBu
KQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0
OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlv
biAuZml4dXAsXCJheFwiXG4iICIyOglzaGwgJDIsJTBcbiIgIglqbXAgMWJcbiIgIi5wcmV2aW91
c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcg
MGIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2Qx
KSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNl
IDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c2JcbiIg
IjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWlu
Y2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxc
ImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAi
LnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZy
b20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21f
XyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5z
ZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXNobCAkMiwlMFxuIiAiNDoJYWRkbCAkMiwlMFxu
IiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4i
ICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlv
dXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIy
Iih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9s
YXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpc
biIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXNobCAkMiwlMFxuIiAiNToJYWRkbCAk
MiwlMFxuIiAiNjoJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlv
biBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5s
b25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZT
IiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAi
bWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcl9ub2NoZWNr
KHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBk
byB7IGludCBfX2QwLCBfX2QxOyBzd2l0Y2ggKG4gJiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192
b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4
XCJcbiIgIjI6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4
XG4iICIJcmVwOyBzdG9zbFxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQy
LCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJh
XCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDJiXG4iICIucHJldmlvdXMiIDogIj1jIihu
KSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihu
LzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6
CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhc
IlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhc
biIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxu
IiAiCXNobCAkMiwlMFxuIiAiCWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4
XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWlu
Y2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxc
ImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAi
LnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZy
b20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21f
XyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5z
ZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIg
Igl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3N3XG4iICIJcG9wbCAl
JWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglhZGRsICQyLCUwXG4iICIJam1w
IDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zd1xu
IiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNc
biIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBi
LDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19k
MCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5
Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxu
IiAiMToJbW92c3dcbiIgIjI6CW1vdnNiXG4iICIzOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhc
IlxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhc
biIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIg
Iglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAi
NToJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglzdG9z
YlxuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQzLCUwXG4iICIJam1wIDJiXG4iICI2OglwdXNo
bCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhc
biIgIglpbmNsICUwXG4iICIJam1wIDNiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhf
dGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDRiXG4iICIJLmxvbmcgMWIs
NWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2Qw
KSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnki
KTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG47Cn0KIyA1OTkgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCmxvbmcgc3RybmNweV9mcm9t
X3VzZXIoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIGxvbmcgY291bnQpOwpsb25nIF9fc3Ry
bmNweV9mcm9tX3VzZXIoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIGxvbmcgY291bnQpOwoK
bG9uZyBzdHJubGVuX3VzZXIoY29uc3QgY2hhciAqc3RyLCBsb25nIG4pOwp1bnNpZ25lZCBsb25n
IGNsZWFyX3VzZXIodm9pZCAqbWVtLCB1bnNpZ25lZCBsb25nIGxlbik7CnVuc2lnbmVkIGxvbmcg
X19jbGVhcl91c2VyKHZvaWQgKm1lbSwgdW5zaWduZWQgbG9uZyBsZW4pOwojIDM3ICJzY2hlZC5j
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0Lmgi
IDEKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL2Rlc2MuaCIgMQoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9sZHQuaCIgMQojIDE1ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAvaW5jbHVkZS9hc20vbGR0LmgiCnN0cnVjdCBtb2RpZnlfbGR0
X2xkdF9zIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZW50cnlfbnVtYmVyOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgYmFzZV9hZGRyOwogICAgICAgIHVuc2lnbmVkIGludCBsaW1pdDsKICAgICAgICB1
bnNpZ25lZCBpbnQgc2VnXzMyYml0OjE7CiAgICAgICAgdW5zaWduZWQgaW50IGNvbnRlbnRzOjI7
CiAgICAgICAgdW5zaWduZWQgaW50IHJlYWRfZXhlY19vbmx5OjE7CiAgICAgICAgdW5zaWduZWQg
aW50IGxpbWl0X2luX3BhZ2VzOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHNlZ19ub3RfcHJlc2Vu
dDoxOwogICAgICAgIHVuc2lnbmVkIGludCB1c2VhYmxlOjE7Cn07CiMgNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwL2luY2x1ZGUvYXNtL2Rlc2MuaCIgMgojIDQ0ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAvaW5jbHVkZS9hc20vZGVzYy5oIgpzdHJ1Y3QgZGVzY19zdHJ1Y3QgewogICAgICAgIHVuc2ln
bmVkIGxvbmcgYSxiOwp9OwoKZXh0ZXJuIHN0cnVjdCBkZXNjX3N0cnVjdCBnZHRfdGFibGVbXTsK
ZXh0ZXJuIHN0cnVjdCBkZXNjX3N0cnVjdCAqaWR0LCAqZ2R0OwoKc3RydWN0IFhndF9kZXNjX3N0
cnVjdCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25n
IGFkZHJlc3MgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMgNjcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC9pbmNsdWRlL2FzbS9kZXNjLmgiCmV4dGVybiBzdHJ1Y3QgZGVzY19zdHJ1Y3QgZGVm
YXVsdF9sZHRbXTsKZXh0ZXJuIHZvaWQgc2V0X2ludHJfZ2F0ZSh1bnNpZ25lZCBpbnQgaXJxLCB2
b2lkICogYWRkcik7CmV4dGVybiB2b2lkIHNldF9sZHRfZGVzYyh1bnNpZ25lZCBpbnQgbiwgdm9p
ZCAqYWRkciwgdW5zaWduZWQgaW50IHNpemUpOwpleHRlcm4gdm9pZCBzZXRfdHNzX2Rlc2ModW5z
aWduZWQgaW50IG4sIHZvaWQgKmFkZHIpOwoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX0xEVCh2
b2lkKQp7CiAgICAgICAgaW50IGNwdSA9IChnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpOwogICAg
ICAgIHNldF9sZHRfZGVzYyhjcHUsICZkZWZhdWx0X2xkdFswXSwgNSk7CiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oImxsZHQgJSVheCI6OiJhIiAoKCgoY3B1KTw8MikgKyAoMTIgKzEpKTw8
MykpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgbG9hZF9MRFQgKHN0cnVjdCBtbV9zdHJ1Y3Qg
Km1tKQp7CiAgICAgICAgaW50IGNwdSA9IChnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpOwogICAg
ICAgIHZvaWQgKnNlZ21lbnRzID0gbW0tPmNvbnRleHQuc2VnbWVudHM7CiAgICAgICAgaW50IGNv
dW50ID0gODE5MjsKCiAgICAgICAgaWYgKCFzZWdtZW50cykgewogICAgICAgICAgICAgICAgc2Vn
bWVudHMgPSAmZGVmYXVsdF9sZHRbMF07CiAgICAgICAgICAgICAgICBjb3VudCA9IDU7CiAgICAg
ICAgfQoKICAgICAgICBzZXRfbGR0X2Rlc2MoY3B1LCBzZWdtZW50cywgY291bnQpOwogICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKCJsbGR0ICUlYXgiOjoiYSIgKCgoKGNwdSk8PDIpICsgKDEy
ICsxKSk8PDMpKTsKfQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9tbXVf
Y29udGV4dC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ2Fs
bG9jLmgiIDEKIyA1OSAiL3Vzci9zcmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL3BnYWxsb2Mu
aCIKc3RhdGljIGlubGluZSBwZ2RfdCAqZ2V0X3BnZF9zbG93KHZvaWQpCnsKICAgICAgICBwZ2Rf
dCAqcGdkID0gKHBnZF90ICopX19nZXRfZnJlZV9wYWdlcygoKDB4MjAgfCAweDEwIHwgMHg0MCB8
IDB4ODAgfCAweDEwMCkpLDApOwoKICAgICAgICBpZiAocGdkKSB7CiAgICAgICAgICAgICAgICAo
X19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKCgoKCh1bnNp
Z25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSAqIHNpemVvZihwZ2RfdCkpKSA/
IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgocGdkKSksKCgweDAxMDEwMTAxVUwqKHVu
c2lnbmVkIGNoYXIpKDApKSksKCgoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVM
IDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKHBnZCkp
LCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoKCgoKHVuc2lnbmVkIGxvbmcp
KDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpICogc2l6ZW9mKHBnZF90KSkpKSkgOiAoX19idWls
dGluX2NvbnN0YW50X3AoKCgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwg
MjIpKSAqIHNpemVvZihwZ2RfdCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgocGdkKSkpLCgoKDAp
KSksKCgoKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpICogc2l6
ZW9mKHBnZF90KSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgocGdkKSksKCgwKSksKCgoKCgodW5z
aWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKSkp
KSk7CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoKDEwMjQgLSAoKCgodW5z
aWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpICogc2l6ZW9mKHBnZF90KSkg
PyBfX2NvbnN0YW50X21lbWNweSgocGdkICsgKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDAp
KSkvKDFVTCA8PCAyMikpKSwoc3dhcHBlcl9wZ19kaXIgKyAoKCgodW5zaWduZWQgbG9uZykoMHhD
MDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpLCgoMTAyNCAtICgoKCh1bnNpZ25lZCBsb25nKSgweEMw
MDAwMDAwKSkpLygxVUwgPDwgMjIpKSkgKiBzaXplb2YocGdkX3QpKSkgOiBfX21lbWNweSgocGdk
ICsgKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpKSwoc3dhcHBl
cl9wZ19kaXIgKyAoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkp
LCgoMTAyNCAtICgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSkg
KiBzaXplb2YocGdkX3QpKSkpOwoKCiAgICAgICAgfQogICAgICAgIHJldHVybiBwZ2Q7Cn0KCgoK
c3RhdGljIGlubGluZSBwZ2RfdCAqZ2V0X3BnZF9mYXN0KHZvaWQpCnsKICAgICAgICB1bnNpZ25l
ZCBsb25nICpyZXQ7CgogICAgICAgIGlmICgocmV0ID0gKGNwdV9kYXRhWyhnZXRfY3VycmVudCgp
LT5wcm9jZXNzb3IpXS5wZ2RfcXVpY2spKSAhPSAoKHZvaWQgKikwKSkgewogICAgICAgICAgICAg
ICAgKGNwdV9kYXRhWyhnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpXS5wZ2RfcXVpY2spID0gKHVu
c2lnbmVkIGxvbmcgKikoKnJldCk7CiAgICAgICAgICAgICAgICByZXRbMF0gPSAwOwogICAgICAg
ICAgICAgICAgKGNwdV9kYXRhWyhnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpXS5wZ3RhYmxlX2Nh
Y2hlX3N6KS0tOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgcmV0ID0gKHVuc2lnbmVk
IGxvbmcgKilnZXRfcGdkX3Nsb3coKTsKICAgICAgICByZXR1cm4gKHBnZF90ICopcmV0Owp9Cgpz
dGF0aWMgaW5saW5lIHZvaWQgZnJlZV9wZ2RfZmFzdChwZ2RfdCAqcGdkKQp7CiAgICAgICAgKih1
bnNpZ25lZCBsb25nICopcGdkID0gKHVuc2lnbmVkIGxvbmcpIChjcHVfZGF0YVsoZ2V0X2N1cnJl
bnQoKS0+cHJvY2Vzc29yKV0ucGdkX3F1aWNrKTsKICAgICAgICAoY3B1X2RhdGFbKGdldF9jdXJy
ZW50KCktPnByb2Nlc3NvcildLnBnZF9xdWljaykgPSAodW5zaWduZWQgbG9uZyAqKSBwZ2Q7CiAg
ICAgICAgKGNwdV9kYXRhWyhnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpXS5wZ3RhYmxlX2NhY2hl
X3N6KSsrOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV9wZ2Rfc2xvdyhwZ2RfdCAqcGdkKQp7
CgoKCgoKCgogICAgICAgIGZyZWVfcGFnZXMoKCh1bnNpZ25lZCBsb25nKXBnZCksMCk7Cgp9Cgpz
dGF0aWMgaW5saW5lIHB0ZV90ICpwdGVfYWxsb2Nfb25lKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1
bnNpZ25lZCBsb25nIGFkZHJlc3MpCnsKICAgICAgICBwdGVfdCAqcHRlOwoKICAgICAgICBwdGUg
PSAocHRlX3QgKikgX19nZXRfZnJlZV9wYWdlcygoKDB4MjAgfCAweDEwIHwgMHg0MCB8IDB4ODAg
fCAweDEwMCkpLDApOwogICAgICAgIGlmIChwdGUpCiAgICAgICAgICAgICAgICAoX19idWlsdGlu
X2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKCgxVUwgPDwgMTIpKSkgPyBf
X2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCh2b2lkICopKHB0ZSkpKSwoKDB4MDEwMTAx
MDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKCgxVUwgPDwgMTIpKSkpIDogX19jb25zdGFudF9j
X21lbXNldCgoKCh2b2lkICopKHB0ZSkpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhciko
MCkpKSwoKCgxVUwgPDwgMTIpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoKDFVTCA8PCAx
MikpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoKHZvaWQgKikocHRlKSkpKSwoKCgwKSkpLCgoKCgx
VUwgPDwgMTIpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgodm9pZCAqKShwdGUpKSksKCgwKSks
KCgoMVVMIDw8IDEyKSkpKSkpOwogICAgICAgIHJldHVybiBwdGU7Cn0KCnN0YXRpYyBpbmxpbmUg
cHRlX3QgKnB0ZV9hbGxvY19vbmVfZmFzdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgKnJldDsKCiAgICAgICAgaWYgKChyZXQgPSAodW5zaWduZWQg
bG9uZyAqKShjcHVfZGF0YVsoZ2V0X2N1cnJlbnQoKS0+cHJvY2Vzc29yKV0ucHRlX3F1aWNrKSkg
IT0gKCh2b2lkICopMCkpIHsKICAgICAgICAgICAgICAgIChjcHVfZGF0YVsoZ2V0X2N1cnJlbnQo
KS0+cHJvY2Vzc29yKV0ucHRlX3F1aWNrKSA9ICh1bnNpZ25lZCBsb25nICopKCpyZXQpOwogICAg
ICAgICAgICAgICAgcmV0WzBdID0gcmV0WzFdOwogICAgICAgICAgICAgICAgKGNwdV9kYXRhWyhn
ZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpXS5wZ3RhYmxlX2NhY2hlX3N6KS0tOwogICAgICAgIH0K
ICAgICAgICByZXR1cm4gKHB0ZV90ICopcmV0Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcHRlX2Zy
ZWVfZmFzdChwdGVfdCAqcHRlKQp7CiAgICAgICAgKih1bnNpZ25lZCBsb25nICopcHRlID0gKHVu
c2lnbmVkIGxvbmcpIChjcHVfZGF0YVsoZ2V0X2N1cnJlbnQoKS0+cHJvY2Vzc29yKV0ucHRlX3F1
aWNrKTsKICAgICAgICAoY3B1X2RhdGFbKGdldF9jdXJyZW50KCktPnByb2Nlc3NvcildLnB0ZV9x
dWljaykgPSAodW5zaWduZWQgbG9uZyAqKSBwdGU7CiAgICAgICAgKGNwdV9kYXRhWyhnZXRfY3Vy
cmVudCgpLT5wcm9jZXNzb3IpXS5wZ3RhYmxlX2NhY2hlX3N6KSsrOwp9CgpzdGF0aWMgX19pbmxp
bmVfXyB2b2lkIHB0ZV9mcmVlX3Nsb3cocHRlX3QgKnB0ZSkKewogICAgICAgIGZyZWVfcGFnZXMo
KCh1bnNpZ25lZCBsb25nKXB0ZSksMCk7Cn0KIyAxNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9p
bmNsdWRlL2FzbS9wZ2FsbG9jLmgiCmV4dGVybiBpbnQgZG9fY2hlY2tfcGd0X2NhY2hlKGludCwg
aW50KTsKIyAyMDggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgi
CmV4dGVybiB2b2lkIGZsdXNoX3RsYl9hbGwodm9pZCk7CmV4dGVybiB2b2lkIGZsdXNoX3RsYl9j
dXJyZW50X3Rhc2sodm9pZCk7CmV4dGVybiB2b2lkIGZsdXNoX3RsYl9tbShzdHJ1Y3QgbW1fc3Ry
dWN0ICopOwpleHRlcm4gdm9pZCBmbHVzaF90bGJfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg
KiwgdW5zaWduZWQgbG9uZyk7CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfcmFuZ2Uo
c3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25n
IGVuZCkKewogICAgICAgIGZsdXNoX3RsYl9tbShtbSk7Cn0KCgoKCnN0cnVjdCB0bGJfc3RhdGUK
ewogICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKmFjdGl2ZV9tbTsKICAgICAgICBpbnQgc3RhdGU7
Cn07CmV4dGVybiBzdHJ1Y3QgdGxiX3N0YXRlIGNwdV90bGJzdGF0ZVszMl07CgoKCnN0YXRpYyBp
bmxpbmUgdm9pZCBmbHVzaF90bGJfcGd0YWJsZXMoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5z
aWduZWQgbG9uZyBlbmQpCnsKICAgICAgICBmbHVzaF90bGJfbW0obW0pOwp9CiMgOCAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgiIDIKIyAxNyAiL3Vzci9z
cmMvbGludXgtMi40LjIwL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgiCnN0YXRpYyBpbmxpbmUg
dm9pZCBlbnRlcl9sYXp5X3RsYihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IHRhc2tfc3Ry
dWN0ICp0c2ssIHVuc2lnbmVkIGNwdSkKewogICAgICAgIGlmKGNwdV90bGJzdGF0ZVtjcHVdLnN0
YXRlID09IDEpCiAgICAgICAgICAgICAgICBjcHVfdGxic3RhdGVbY3B1XS5zdGF0ZSA9IDI7Cn0K
CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHN3aXRjaF9tbShzdHJ1Y3QgbW1fc3RydWN0ICpwcmV2
LCBzdHJ1Y3QgbW1fc3RydWN0ICpuZXh0LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWdu
ZWQgY3B1KQp7CiAgICAgICAgaWYgKHByZXYgIT0gbmV4dCkgewoKICAgICAgICAgICAgICAgIGNs
ZWFyX2JpdChjcHUsICZwcmV2LT5jcHVfdm1fbWFzayk7CgoKCiAgICAgICAgICAgICAgICBpZiAo
cHJldi0+Y29udGV4dC5zZWdtZW50cyAhPSBuZXh0LT5jb250ZXh0LnNlZ21lbnRzKQogICAgICAg
ICAgICAgICAgICAgICAgICBsb2FkX0xEVChuZXh0KTsKCiAgICAgICAgICAgICAgICBjcHVfdGxi
c3RhdGVbY3B1XS5zdGF0ZSA9IDE7CiAgICAgICAgICAgICAgICBjcHVfdGxic3RhdGVbY3B1XS5h
Y3RpdmVfbW0gPSBuZXh0OwoKICAgICAgICAgICAgICAgIHNldF9iaXQoY3B1LCAmbmV4dC0+Y3B1
X3ZtX21hc2spOwogICAgICAgICAgICAgICAgc2V0X2JpdChjcHUsICZuZXh0LT5jb250ZXh0LmNw
dXZhbGlkKTsKCiAgICAgICAgICAgICAgICBhc20gdm9sYXRpbGUoIm1vdmwgJTAsJSVjcjMiOiA6
InIiICgoKHVuc2lnbmVkIGxvbmcpKG5leHQtPnBnZCktKCh1bnNpZ25lZCBsb25nKSgweEMwMDAw
MDAwKSkpKSk7OwogICAgICAgIH0KCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBjcHVf
dGxic3RhdGVbY3B1XS5zdGF0ZSA9IDE7CiAgICAgICAgICAgICAgICBpZihjcHVfdGxic3RhdGVb
Y3B1XS5hY3RpdmVfbW0gIT0gbmV4dCkKICAgICAgICAgICAgICAgICAgICAgICAgX19vdXRfb2Zf
bGluZV9idWcoNTEpOwogICAgICAgICAgICAgICAgaWYoIXRlc3RfYW5kX3NldF9iaXQoY3B1LCAm
bmV4dC0+Y3B1X3ZtX21hc2spKSB7CgoKCiAgICAgICAgICAgICAgICAgICAgICAgIGFzbSB2b2xh
dGlsZSgibW92bCAlMCwlJWNyMyI6IDoiciIgKCgodW5zaWduZWQgbG9uZykobmV4dC0+cGdkKS0o
KHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkpKTs7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoY3B1LCAmbmV4dC0+Y29udGV4dC5jcHV2
YWxpZCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRfTERUKG5leHQpOwogICAgICAgIH0K
Cn0KIyAzOCAic2NoZWQuYyIgMgoKZXh0ZXJuIHZvaWQgdGltZXJfYmgodm9pZCk7CmV4dGVybiB2
b2lkIHRxdWV1ZV9iaCh2b2lkKTsKZXh0ZXJuIHZvaWQgaW1tZWRpYXRlX2JoKHZvaWQpOwoKCgoK
CnVuc2lnbmVkIHNlY3VyZWJpdHMgPSAweDAwMDAwMDAwOwoKZXh0ZXJuIHZvaWQgbWVtX3VzZSh2
b2lkKTsKIyA4MiAic2NoZWQuYyIKc3RydWN0IHRhc2tfc3RydWN0ICogaW5pdF90YXNrc1szMl0g
PSB7Jihpbml0X3Rhc2tfdW5pb24udGFzayksIH07CiMgOTUgInNjaGVkLmMiCnNwaW5sb2NrX3Qg
cnVucXVldWVfbG9jayBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoKDUpKSkpLCBf
X3NlY3Rpb25fXygiLmRhdGEuY2FjaGVsaW5lX2FsaWduZWQiKSkpID0gKHNwaW5sb2NrX3QpIHsg
MSB9Owpyd2xvY2tfdCB0YXNrbGlzdF9sb2NrIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgx
IDw8ICgoNSkpKSksIF9fc2VjdGlvbl9fKCIuZGF0YS5jYWNoZWxpbmVfYWxpZ25lZCIpKSkgPSAo
cndsb2NrX3QpIHsgMHgwMTAwMDAwMCB9OwoKc3RhdGljIHN0cnVjdCBsaXN0X2hlYWQgcnVucXVl
dWVfaGVhZCA9IHsgJihydW5xdWV1ZV9oZWFkKSwgJihydW5xdWV1ZV9oZWFkKSB9OwoKCgoKCnN0
YXRpYyB1bmlvbiB7CiAgICAgICAgc3RydWN0IHNjaGVkdWxlX2RhdGEgewogICAgICAgICAgICAg
ICAgc3RydWN0IHRhc2tfc3RydWN0ICogY3VycjsKICAgICAgICAgICAgICAgIGN5Y2xlc190IGxh
c3Rfc2NoZWR1bGU7CiAgICAgICAgfSBzY2hlZHVsZV9kYXRhOwogICAgICAgIGNoYXIgX19wYWQg
WygxIDw8ICgoNSkpKV07Cn0gYWxpZ25lZF9kYXRhIFszMl0gX19hdHRyaWJ1dGVfXygoX19hbGln
bmVkX18oKDEgPDwgKCg1KSkpKSwgX19zZWN0aW9uX18oIi5kYXRhLmNhY2hlbGluZV9hbGlnbmVk
IikpKSA9IHsge3smKGluaXRfdGFza191bmlvbi50YXNrKSwwfX19OwoKCgoKc3RydWN0IGtlcm5l
bF9zdGF0IGtzdGF0OwpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZF9yZWFwZXI7CiMg
MTMxICJzY2hlZC5jIgp2b2lkIHNjaGVkdWxpbmdfZnVuY3Rpb25zX3N0YXJ0X2hlcmUodm9pZCkg
eyB9CiMgMTQ3ICJzY2hlZC5jIgpzdGF0aWMgaW5saW5lIGludCBnb29kbmVzcyhzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKiBwLCBpbnQgdGhpc19jcHUsIHN0cnVjdCBtbV9zdHJ1Y3QgKnRoaXNfbW0pCnsK
ICAgICAgICBpbnQgd2VpZ2h0OwoKCgoKCgogICAgICAgIHdlaWdodCA9IC0xOwogICAgICAgIGlm
IChwLT5wb2xpY3kgJiAweDEwKQogICAgICAgICAgICAgICAgZ290byBvdXQ7CgoKCgogICAgICAg
IGlmIChwLT5wb2xpY3kgPT0gMCkgewoKCgoKCgoKICAgICAgICAgICAgICAgIHdlaWdodCA9IHAt
PmNvdW50ZXI7CiAgICAgICAgICAgICAgICBpZiAoIXdlaWdodCkKICAgICAgICAgICAgICAgICAg
ICAgICAgZ290byBvdXQ7CgoKCgogICAgICAgICAgICAgICAgaWYgKHAtPnByb2Nlc3NvciA9PSB0
aGlzX2NwdSkKICAgICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0ICs9IDE1OwoKCgogICAgICAg
ICAgICAgICAgaWYgKHAtPm1tID09IHRoaXNfbW0gfHwgIXAtPm1tKQogICAgICAgICAgICAgICAg
ICAgICAgICB3ZWlnaHQgKz0gMTsKICAgICAgICAgICAgICAgIHdlaWdodCArPSAyMCAtIHAtPm5p
Y2U7CiAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICB9CgoKCgoKCiAgICAgICAgd2Vp
Z2h0ID0gMTAwMCArIHAtPnJ0X3ByaW9yaXR5OwpvdXQ6CiAgICAgICAgcmV0dXJuIHdlaWdodDsK
fQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IHByZWVtcHRpb25fZ29vZG5lc3Moc3RydWN0IHRhc2tf
c3RydWN0ICogcHJldiwgc3RydWN0IHRhc2tfc3RydWN0ICogcCwgaW50IGNwdSkKewogICAgICAg
IHJldHVybiBnb29kbmVzcyhwLCBjcHUsIHByZXYtPmFjdGl2ZV9tbSkgLSBnb29kbmVzcyhwcmV2
LCBjcHUsIHByZXYtPmFjdGl2ZV9tbSk7Cn0KCgoKCgoKc3RhdGljIHZvaWQgcmVzY2hlZHVsZV9p
ZGxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHApIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsK
CnN0YXRpYyB2b2lkIHJlc2NoZWR1bGVfaWRsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwKQp7Cgog
ICAgICAgIGludCB0aGlzX2NwdSA9IChnZXRfY3VycmVudCgpLT5wcm9jZXNzb3IpOwogICAgICAg
IHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCAqdGFyZ2V0X3RzazsKICAgICAgICBpbnQgY3B1LCBi
ZXN0X2NwdSwgaSwgbWF4X3ByaW87CiAgICAgICAgY3ljbGVzX3Qgb2xkZXN0X2lkbGU7CgoKCgoK
ICAgICAgICBiZXN0X2NwdSA9IHAtPnByb2Nlc3NvcjsKICAgICAgICBpZiAoKCghKChzdXNwZW5k
X3Rhc2sgPiAwKSAmJiAoKHAtPmZsYWdzICYgMHgwMDAyMDAwMCkgPT0gMCkgJiYgKCghKHAtPmZs
YWdzICYgMHgwMDA0MDAwMCkpIHx8IChwLT5mbGFncyAmIDB4MDAwMDgwMDApKSAmJiAocC0+cGlk
ICE9IHN1c3BlbmRfdGFzaykgJiYgKHAtPnN0YXRlICE9IDQpICYmIChzdHJjbXAocC0+Y29tbSwg
InN3YXBwZXIiKSAhPSAwKSkpICYmICgocCktPmNwdXNfcnVubmFibGUgJiAocCktPmNwdXNfYWxs
b3dlZCAmICgxVUwgPDwgYmVzdF9jcHUpKSkpIHsKICAgICAgICAgICAgICAgIHRzayA9IChpbml0
X3Rhc2tzW2NwdV9udW1iZXJfbWFwKGJlc3RfY3B1KV0pOwogICAgICAgICAgICAgICAgaWYgKGFs
aWduZWRfZGF0YVsoYmVzdF9jcHUpXS5zY2hlZHVsZV9kYXRhLmN1cnIgPT0gdHNrKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBuZWVkX3Jlc2NoZWQ7CnNlbmRfbm93X2lkbGU6CgoKCgoK
ICAgICAgICAgICAgICAgICAgICAgICAgbmVlZF9yZXNjaGVkID0gdHNrLT5uZWVkX3Jlc2NoZWQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIHRzay0+bmVlZF9yZXNjaGVkID0gMTsKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKChiZXN0X2NwdSAhPSB0aGlzX2NwdSkgJiYgIW5lZWRfcmVzY2hl
ZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXBfc2VuZF9yZXNjaGVkdWxlKGJl
c3RfY3B1KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
fQogICAgICAgIH0KIyAyNTMgInNjaGVkLmMiCiAgICAgICAgb2xkZXN0X2lkbGUgPSAoY3ljbGVz
X3QpIC0xOwogICAgICAgIHRhcmdldF90c2sgPSAoKHZvaWQgKikwKTsKICAgICAgICBtYXhfcHJp
byA9IDA7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBzbXBfbnVtX2NwdXM7IGkrKykgewogICAg
ICAgICAgICAgICAgY3B1ID0gY3B1X2xvZ2ljYWxfbWFwKGkpOwogICAgICAgICAgICAgICAgaWYg
KCEoKCEoKHN1c3BlbmRfdGFzayA+IDApICYmICgocC0+ZmxhZ3MgJiAweDAwMDIwMDAwKSA9PSAw
KSAmJiAoKCEocC0+ZmxhZ3MgJiAweDAwMDQwMDAwKSkgfHwgKHAtPmZsYWdzICYgMHgwMDAwODAw
MCkpICYmIChwLT5waWQgIT0gc3VzcGVuZF90YXNrKSAmJiAocC0+c3RhdGUgIT0gNCkgJiYgKHN0
cmNtcChwLT5jb21tLCAic3dhcHBlciIpICE9IDApKSkgJiYgKChwKS0+Y3B1c19ydW5uYWJsZSAm
IChwKS0+Y3B1c19hbGxvd2VkICYgKDFVTCA8PCBjcHUpKSkpCiAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgdHNrID0gYWxpZ25lZF9kYXRhWyhjcHUpXS5z
Y2hlZHVsZV9kYXRhLmN1cnI7CgoKCgoKICAgICAgICAgICAgICAgIGlmICh0c2sgPT0gKGluaXRf
dGFza3NbY3B1X251bWJlcl9tYXAoY3B1KV0pKSB7CgoKCgoKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHNtcF9udW1fc2libGluZ3MgPT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChhbGlnbmVkX2RhdGFbKGNwdV9zaWJsaW5nX21hcFtjcHVdKV0uc2NoZWR1bGVf
ZGF0YS5jdXJyID09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbml0X3Rh
c2tzW2NwdV9udW1iZXJfbWFwKGNwdV9zaWJsaW5nX21hcFtjcHVdKV0pKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRlc3RfaWRsZSA9IGFsaWduZWRfZGF0YVso
Y3B1KV0uc2NoZWR1bGVfZGF0YS5sYXN0X3NjaGVkdWxlOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0X3RzayA9IHRzazsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChhbGlnbmVkX2RhdGFbKGNwdSldLnNjaGVkdWxlX2RhdGEubGFzdF9zY2hlZHVsZSA8IG9sZGVz
dF9pZGxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkZXN0X2lkbGUgPSBh
bGlnbmVkX2RhdGFbKGNwdSldLnNjaGVkdWxlX2RhdGEubGFzdF9zY2hlZHVsZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdHNrID0gdHNrOwogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAob2xkZXN0X2lkbGUgPT0gLTFVTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgcHJpbyA9IHByZWVtcHRpb25fZ29vZG5lc3ModHNrLCBwLCBjcHUpOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJpbyA+IG1heF9wcmlvKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfcHJpbyA9IHByaW87CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdHNrID0gdHNrOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0c2sgPSB0YXJnZXRfdHNrOwogICAgICAg
IGlmICh0c2spIHsKICAgICAgICAgICAgICAgIGlmIChvbGRlc3RfaWRsZSAhPSAtMVVMTCkgewog
ICAgICAgICAgICAgICAgICAgICAgICBiZXN0X2NwdSA9IHRzay0+cHJvY2Vzc29yOwogICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIHNlbmRfbm93X2lkbGU7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICB0c2stPm5lZWRfcmVzY2hlZCA9IDE7CiAgICAgICAgICAgICAgICBpZiAo
dHNrLT5wcm9jZXNzb3IgIT0gdGhpc19jcHUpCiAgICAgICAgICAgICAgICAgICAgICAgIHNtcF9z
ZW5kX3Jlc2NoZWR1bGUodHNrLT5wcm9jZXNzb3IpOwogICAgICAgIH0KICAgICAgICByZXR1cm47
CiMgMzE5ICJzY2hlZC5jIgp9CiMgMzMyICJzY2hlZC5jIgpzdGF0aWMgaW5saW5lIHZvaWQgYWRk
X3RvX3J1bnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHApCnsKICAgICAgICBsaXN0X2FkZF90
YWlsKCZwLT5ydW5fbGlzdCwgJnJ1bnF1ZXVlX2hlYWQpOwogICAgICAgIG5yX3J1bm5pbmcrKzsK
fQoKc3RhdGljIGlubGluZSB2b2lkIG1vdmVfbGFzdF9ydW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1
Y3QgKiBwKQp7CiAgICAgICAgbGlzdF9kZWwoJnAtPnJ1bl9saXN0KTsKICAgICAgICBsaXN0X2Fk
ZF90YWlsKCZwLT5ydW5fbGlzdCwgJnJ1bnF1ZXVlX2hlYWQpOwp9CiMgMzUyICJzY2hlZC5jIgpz
dGF0aWMgaW5saW5lIGludCB0cnlfdG9fd2FrZV91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwLCBp
bnQgc3luY2hyb25vdXMpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIGlu
dCBzdWNjZXNzID0gMDsKCgoKCiAgICAgICAgZG8geyBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9f
KCJwdXNoZmwgOyBwb3BsICUwIjoiPWciIChmbGFncyk6ICk7IF9fYXNtX18gX192b2xhdGlsZV9f
KCJjbGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUoMCk7OyBzcGluX2xvY2soJnJ1bnF1ZXVlX2xv
Y2spOyB9IHdoaWxlICgwKTsKICAgICAgICBwLT5zdGF0ZSA9IDA7CiAgICAgICAgaWYgKHRhc2tf
b25fcnVucXVldWUocCkpCiAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICBhZGRfdG9f
cnVucXVldWUocCk7CiAgICAgICAgaWYgKCFzeW5jaHJvbm91cyB8fCAhKHAtPmNwdXNfYWxsb3dl
ZCAmICgxVUwgPDwgKGdldF9jdXJyZW50KCktPnByb2Nlc3NvcikpKSkKICAgICAgICAgICAgICAg
IHJlc2NoZWR1bGVfaWRsZShwKTsKICAgICAgICBzdWNjZXNzID0gMTsKb3V0OgogICAgICAgIGRv
IHsgc3Bpbl91bmxvY2soJnJ1bnF1ZXVlX2xvY2spOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVz
aGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDAp
OwogICAgICAgIHJldHVybiBzdWNjZXNzOwp9CgppbmxpbmUgaW50IHdha2VfdXBfcHJvY2Vzcyhz
dHJ1Y3QgdGFza19zdHJ1Y3QgKiBwKQp7CiAgICAgICAgcmV0dXJuIHRyeV90b193YWtlX3VwKHAs
IDApOwp9CgpzdGF0aWMgdm9pZCBwcm9jZXNzX3RpbWVvdXQodW5zaWduZWQgbG9uZyBfX2RhdGEp
CnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwID0gKHN0cnVjdCB0YXNrX3N0cnVjdCAq
KSBfX2RhdGE7CgogICAgICAgIHdha2VfdXBfcHJvY2VzcyhwKTsKfQojIDQxMSAic2NoZWQuYyIK
c2lnbmVkIGxvbmcgc2NoZWR1bGVfdGltZW91dChzaWduZWQgbG9uZyB0aW1lb3V0KQp7CiAgICAg
ICAgc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBleHBpcmU7
CgogICAgICAgIHN3aXRjaCAodGltZW91dCkKICAgICAgICB7CiAgICAgICAgY2FzZSAoKGxvbmcp
KH4wVUw+PjEpKToKCgoKCgoKCiAgICAgICAgICAgICAgICBzY2hlZHVsZSgpOwogICAgICAgICAg
ICAgICAgZ290byBvdXQ7CiAgICAgICAgZGVmYXVsdDoKCgoKCgoKCiAgICAgICAgICAgICAgICBp
ZiAodGltZW91dCA8IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHByaW50aygiPDM+IiAic2NoZWR1bGVfdGltZW91dDogd3JvbmcgdGltZW91dCAiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUgJWx4IGZyb20gJXBcbiIsIHRpbWVvdXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCkp
OwogICAgICAgICAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5zdGF0ZSA9IDA7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgfQogICAgICAgIH0K
CiAgICAgICAgZXhwaXJlID0gdGltZW91dCArIGppZmZpZXM7CgogICAgICAgIGluaXRfdGltZXIo
JnRpbWVyKTsKICAgICAgICB0aW1lci5leHBpcmVzID0gZXhwaXJlOwogICAgICAgIHRpbWVyLmRh
dGEgPSAodW5zaWduZWQgbG9uZykgZ2V0X2N1cnJlbnQoKTsKICAgICAgICB0aW1lci5mdW5jdGlv
biA9IHByb2Nlc3NfdGltZW91dDsKCiAgICAgICAgYWRkX3RpbWVyKCZ0aW1lcik7CiAgICAgICAg
c2NoZWR1bGUoKTsKICAgICAgICBkZWxfdGltZXJfc3luYygmdGltZXIpOwoKICAgICAgICB0aW1l
b3V0ID0gZXhwaXJlIC0gamlmZmllczsKCiBvdXQ6CiAgICAgICAgcmV0dXJuIHRpbWVvdXQgPCAw
ID8gMCA6IHRpbWVvdXQ7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fc2NoZWR1bGVfdGFp
bChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYpCnsKCiAgICAgICAgaW50IHBvbGljeTsKIyA0ODMg
InNjaGVkLmMiCiAgICAgICAgcG9saWN5ID0gcHJldi0+cG9saWN5OwogICAgICAgIHByZXYtPnBv
bGljeSA9IHBvbGljeSAmIH4weDEwOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIjog
OiA6Im1lbW9yeSIpOwoKCgoKCgogICAgICAgIHRhc2tfbG9jayhwcmV2KTsKICAgICAgICB0YXNr
X3JlbGVhc2VfY3B1KHByZXYpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibG9jazsg
YWRkbCAkMCwwKCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKICAgICAgICBpZiAocHJldi0+c3RhdGUg
PT0gMCkKICAgICAgICAgICAgICAgIGdvdG8gbmVlZHNfcmVzY2hlZDsKCm91dF91bmxvY2s6CiAg
ICAgICAgdGFza191bmxvY2socHJldik7CiAgICAgICAgcmV0dXJuOwojIDUxMiAic2NoZWQuYyIK
bmVlZHNfcmVzY2hlZDoKICAgICAgICB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZs
YWdzOwoKCgoKCiAgICAgICAgICAgICAgICBpZiAoKHByZXYgPT0gKGluaXRfdGFza3NbY3B1X251
bWJlcl9tYXAoKGdldF9jdXJyZW50KCktPnByb2Nlc3NvcikpXSkpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2xpY3kgJiAweDEwKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOwoKICAgICAgICAgICAgICAgIGRvIHsg
ZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCI6Ij1nIiAoZmxhZ3Mp
OiApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlKDAp
Ozsgc3Bpbl9sb2NrKCZydW5xdWV1ZV9sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAg
ICBpZiAoKHByZXYtPnN0YXRlID09IDApICYmICEoKHByZXYpLT5jcHVzX3J1bm5hYmxlICE9IH4w
VUwpKQogICAgICAgICAgICAgICAgICAgICAgICByZXNjaGVkdWxlX2lkbGUocHJldik7CiAgICAg
ICAgICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZydW5xdWV1ZV9sb2NrKTsgX19hc21fXyBfX3Zv
bGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIp
OyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKICAgICAgICB9
CgoKCn0KCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBzY2hlZHVsZV90YWlsKHN0
cnVjdCB0YXNrX3N0cnVjdCAqcHJldikKewogICAgICAgIF9fc2NoZWR1bGVfdGFpbChwcmV2KTsK
fQojIDU1MCAic2NoZWQuYyIKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIHNjaGVk
dWxlKHZvaWQpCnsKICAgICAgICBzdHJ1Y3Qgc2NoZWR1bGVfZGF0YSAqIHNjaGVkX2RhdGE7CiAg
ICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCAqbmV4dCwgKnA7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCAqdG1wOwogICAgICAgIGludCB0aGlzX2NwdSwgYzsKCgogICAgICAgIHByZWZl
dGNodygmcnVucXVldWVfbG9jayk7CgogICAgICAgIGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3Qo
KCghZ2V0X2N1cnJlbnQoKS0+YWN0aXZlX21tKSE9MCksMCkpIF9fYXNtX18gX192b2xhdGlsZV9f
KCAidWQyXG4iICJcdC53b3JkICVjMFxuIiAiXHQubG9uZyAlYzFcbiIgOiA6ICJpIiAoNTYwKSwg
ImkiICgic2NoZWQuYyIpKTsgfSB3aGlsZSgwKTsKbmVlZF9yZXNjaGVkX2JhY2s6CiAgICAgICAg
cHJldiA9IGdldF9jdXJyZW50KCk7CiAgICAgICAgdGhpc19jcHUgPSBwcmV2LT5wcm9jZXNzb3I7
CgogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCgoeyBpbnQgX19jcHUgPSAoZ2V0X2N1cnJl
bnQoKS0+cHJvY2Vzc29yKTsgKChpcnFfc3RhdFsoX19jcHUpXS5fX2xvY2FsX2lycV9jb3VudCkg
KyAoaXJxX3N0YXRbKF9fY3B1KV0uX19sb2NhbF9iaF9jb3VudCkgIT0gMCk7IH0pKSwwKSkgewog
ICAgICAgICAgICAgICAgcHJpbnRrKCJTY2hlZHVsaW5nIGluIGludGVycnVwdFxuIik7CiAgICAg
ICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInVkMlxuIiAiXHQud29yZCAlYzBcbiIg
Ilx0LmxvbmcgJWMxXG4iIDogOiAiaSIgKDU2NyksICJpIiAoInNjaGVkLmMiKSk7CiAgICAgICAg
fQoKICAgICAgICBkbyB7IGlmIChwcmV2LT5sb2NrX2RlcHRoID49IDApIHNwaW5fdW5sb2NrKCZr
ZXJuZWxfZmxhZ19jYWNoZWxpbmUubG9jayk7IHJlbGVhc2VfaXJxbG9jayh0aGlzX2NwdSk7IF9f
YXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwoKCgoK
CiAgICAgICAgc2NoZWRfZGF0YSA9ICYgYWxpZ25lZF9kYXRhW3RoaXNfY3B1XS5zY2hlZHVsZV9k
YXRhOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5
Iik7IHNwaW5fbG9jaygmcnVucXVldWVfbG9jayk7IH0gd2hpbGUgKDApOwoKCiAgICAgICAgaWYg
KF9fYnVpbHRpbl9leHBlY3QoKHByZXYtPnBvbGljeSA9PSAyKSwwKSkKICAgICAgICAgICAgICAg
IGlmICghcHJldi0+Y291bnRlcikgewogICAgICAgICAgICAgICAgICAgICAgICBwcmV2LT5jb3Vu
dGVyID0gKCgoMjAtKHByZXYtPm5pY2UpKSA+PiAyKSsxKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgbW92ZV9sYXN0X3J1bnF1ZXVlKHByZXYpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICBz
d2l0Y2ggKHByZXYtPnN0YXRlKSB7CiAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzaWduYWxfcGVuZGluZyhwcmV2KSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByZXYtPnN0YXRlID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgZGVsX2Zyb21fcnVucXVldWUocHJldik7
CiAgICAgICAgICAgICAgICBjYXNlIDA6OwogICAgICAgIH0KICAgICAgICBwcmV2LT5uZWVkX3Jl
c2NoZWQgPSAwOwoKCgoKCnJlcGVhdF9zY2hlZHVsZToKCgoKICAgICAgICBuZXh0ID0gKGluaXRf
dGFza3NbY3B1X251bWJlcl9tYXAodGhpc19jcHUpXSk7CiAgICAgICAgYyA9IC0xMDAwOwogICAg
ICAgIGZvciAodG1wID0gKCZydW5xdWV1ZV9oZWFkKS0+bmV4dCwgcHJlZmV0Y2godG1wLT5uZXh0
KTsgdG1wICE9ICgmcnVucXVldWVfaGVhZCk7IHRtcCA9IHRtcC0+bmV4dCwgcHJlZmV0Y2godG1w
LT5uZXh0KSkgewogICAgICAgICAgICAgICAgcCA9ICgoc3RydWN0IHRhc2tfc3RydWN0ICopKChj
aGFyICopKHRtcCktKHVuc2lnbmVkIGxvbmcpKCYoKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTApLT5y
dW5fbGlzdCkpKTsKICAgICAgICAgICAgICAgIGlmICgoKCEoKHN1c3BlbmRfdGFzayA+IDApICYm
ICgocC0+ZmxhZ3MgJiAweDAwMDIwMDAwKSA9PSAwKSAmJiAoKCEocC0+ZmxhZ3MgJiAweDAwMDQw
MDAwKSkgfHwgKHAtPmZsYWdzICYgMHgwMDAwODAwMCkpICYmIChwLT5waWQgIT0gc3VzcGVuZF90
YXNrKSAmJiAocC0+c3RhdGUgIT0gNCkgJiYgKHN0cmNtcChwLT5jb21tLCAic3dhcHBlciIpICE9
IDApKSkgJiYgKChwKS0+Y3B1c19ydW5uYWJsZSAmIChwKS0+Y3B1c19hbGxvd2VkICYgKDFVTCA8
PCB0aGlzX2NwdSkpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2VpZ2h0ID0gZ29v
ZG5lc3MocCwgdGhpc19jcHUsIHByZXYtPmFjdGl2ZV9tbSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh3ZWlnaHQgPiBjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB3
ZWlnaHQsIG5leHQgPSBwOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgIGlm
IChfX2J1aWx0aW5fZXhwZWN0KCghYyksMCkpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB0YXNr
X3N0cnVjdCAqcDsKCiAgICAgICAgICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZydW5xdWV1ZV9s
b2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgICAgICAgICByZWFkX2xvY2soJnRhc2tsaXN0X2xvY2spOwogICAgICAgICAg
ICAgICAgZm9yIChwID0gJihpbml0X3Rhc2tfdW5pb24udGFzaykgOyAocCA9IHAtPm5leHRfdGFz
aykgIT0gJihpbml0X3Rhc2tfdW5pb24udGFzaykgOyApCiAgICAgICAgICAgICAgICAgICAgICAg
IHAtPmNvdW50ZXIgPSAocC0+Y291bnRlciA+PiAxKSArICgoKDIwLShwLT5uaWNlKSkgPj4gMikr
MSk7CiAgICAgICAgICAgICAgICBhc20gdm9sYXRpbGUoImxvY2sgOyBpbmNsICUwIiA6Ij1tIiAo
KCZ0YXNrbGlzdF9sb2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIGRv
IHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZy
dW5xdWV1ZV9sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBnb3RvIHJlcGVhdF9z
Y2hlZHVsZTsKICAgICAgICB9CgoKCgoKCiAgICAgICAgc2NoZWRfZGF0YS0+Y3VyciA9IG5leHQ7
CiAgICAgICAgdGFza19zZXRfY3B1KG5leHQsIHRoaXNfY3B1KTsKICAgICAgICBkbyB7IHNwaW5f
dW5sb2NrKCZydW5xdWV1ZV9sb2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJt
ZW1vcnkiKTsgfSB3aGlsZSAoMCk7CgogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCgoKHN1
c3BlbmRfdGFzayA+IDApICYmICgobmV4dC0+ZmxhZ3MgJiAweDAwMDIwMDAwKSA9PSAwKSAmJiAo
KCEobmV4dC0+ZmxhZ3MgJiAweDAwMDQwMDAwKSkgfHwgKG5leHQtPmZsYWdzICYgMHgwMDAwODAw
MCkpICYmIChuZXh0LT5waWQgIT0gc3VzcGVuZF90YXNrKSAmJiAobmV4dC0+c3RhdGUgIT0gNCkg
JiYgKHN0cmNtcChuZXh0LT5jb21tLCAic3dhcHBlciIpICE9IDApKSksMCkpCiAgICAgICAgICAg
ICAgICBwcmludGsoIlNjaGVkdWxpbmcgc3VzcGVuZGVkIHRhc2sgJXMhXG4iLCBuZXh0LT5jb21t
KTsKCiAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoKHByZXYgPT0gbmV4dCksMCkpIHsKCiAg
ICAgICAgICAgICAgICBwcmV2LT5wb2xpY3kgJj0gfjB4MTA7CiAgICAgICAgICAgICAgICBnb3Rv
IHNhbWVfcHJvY2VzczsKICAgICAgICB9CiMgNjU3ICJzY2hlZC5jIgogICAgICAgIHNjaGVkX2Rh
dGEtPmxhc3Rfc2NoZWR1bGUgPSBnZXRfY3ljbGVzKCk7CiMgNjY3ICJzY2hlZC5jIgogICAgICAg
IGtzdGF0LmNvbnRleHRfc3d0Y2grKzsKIyA2NzcgInNjaGVkLmMiCiAgICAgICAgZG8geyB9IHdo
aWxlKDApOwogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0g
bmV4dC0+bW07CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICpvbGRtbSA9IHByZXYt
PmFjdGl2ZV9tbTsKICAgICAgICAgICAgICAgIGlmICghbW0pIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCgoKG5leHQtPmFjdGl2ZV9tbSkhPTApLDAp
KSBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInVkMlxuIiAiXHQud29yZCAlYzBcbiIgIlx0Lmxvbmcg
JWMxXG4iIDogOiAiaSIgKDY4MiksICJpIiAoInNjaGVkLmMiKSk7IH0gd2hpbGUoMCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIG5leHQtPmFjdGl2ZV9tbSA9IG9sZG1tOwogICAgICAgICAgICAg
ICAgICAgICAgICBhdG9taWNfaW5jKCZvbGRtbS0+bW1fY291bnQpOwogICAgICAgICAgICAgICAg
ICAgICAgICBlbnRlcl9sYXp5X3RsYihvbGRtbSwgbmV4dCwgdGhpc19jcHUpOwogICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBpZiAoX19idWlsdGlu
X2V4cGVjdCgoKG5leHQtPmFjdGl2ZV9tbSAhPSBtbSkhPTApLDApKSBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggInVkMlxuIiAiXHQud29yZCAlYzBcbiIgIlx0LmxvbmcgJWMxXG4iIDogOiAiaSIgKDY4
NyksICJpIiAoInNjaGVkLmMiKSk7IH0gd2hpbGUoMCk7CiAgICAgICAgICAgICAgICAgICAgICAg
IHN3aXRjaF9tbShvbGRtbSwgbW0sIG5leHQsIHRoaXNfY3B1KTsKICAgICAgICAgICAgICAgIH0K
CiAgICAgICAgICAgICAgICBpZiAoIXByZXYtPm1tKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHByZXYtPmFjdGl2ZV9tbSA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgICAgICAgICBt
bWRyb3Aob2xkbW0pOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCgoKCgogICAgICAgIGRv
IHsgYXNtIHZvbGF0aWxlKCJwdXNobCAlJWVzaVxuXHQiICJwdXNobCAlJWVkaVxuXHQiICJwdXNo
bCAlJWVicFxuXHQiICJtb3ZsICUlZXNwLCUwXG5cdCIgIm1vdmwgJTMsJSVlc3Bcblx0IiAibW92
bCAkMWYsJTFcblx0IiAicHVzaGwgJTRcblx0IiAiam1wIF9fc3dpdGNoX3RvXG4iICIxOlx0IiAi
cG9wbCAlJWVicFxuXHQiICJwb3BsICUlZWRpXG5cdCIgInBvcGwgJSVlc2lcblx0IiA6Ij1tIiAo
cHJldi0+dGhyZWFkLmVzcCksIj1tIiAocHJldi0+dGhyZWFkLmVpcCksICI9YiIgKHByZXYpIDoi
bSIgKG5leHQtPnRocmVhZC5lc3ApLCJtIiAobmV4dC0+dGhyZWFkLmVpcCksICJhIiAocHJldiks
ICJkIiAobmV4dCksICJiIiAocHJldikpOyB9IHdoaWxlICgwKTsKICAgICAgICBfX3NjaGVkdWxl
X3RhaWwocHJldik7CgpzYW1lX3Byb2Nlc3M6CiAgICAgICAgZG8geyBpZiAoZ2V0X2N1cnJlbnQo
KS0+bG9ja19kZXB0aCA+PSAwKSBzcGluX2xvY2soJmtlcm5lbF9mbGFnX2NhY2hlbGluZS5sb2Nr
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgaWYgKGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkK
ICAgICAgICAgICAgICAgIGdvdG8gbmVlZF9yZXNjaGVkX2JhY2s7CiAgICAgICAgcmV0dXJuOwp9
CiMgNzIwICJzY2hlZC5jIgpzdGF0aWMgaW5saW5lIHZvaWQgX193YWtlX3VwX2NvbW1vbiAod2Fp
dF9xdWV1ZV9oZWFkX3QgKnEsIHVuc2lnbmVkIGludCBtb2RlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IG5yX2V4Y2x1c2l2ZSwgY29uc3QgaW50IHN5bmMpCnsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICp0bXA7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpw
OwoKICAgICAgICA7CiAgICAgICAgOwoKICAgICAgICBmb3IgKHRtcCA9ICgmcS0+dGFza19saXN0
KS0+bmV4dCwgcHJlZmV0Y2godG1wLT5uZXh0KTsgdG1wICE9ICgmcS0+dGFza19saXN0KTsgdG1w
ID0gdG1wLT5uZXh0LCBwcmVmZXRjaCh0bXAtPm5leHQpKSB7CiAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgc3RhdGU7CiAgICAgICAgICAgICAgICB3YWl0X3F1ZXVlX3QgKmN1cnIgPSAoKHdh
aXRfcXVldWVfdCAqKSgoY2hhciAqKSh0bXApLSh1bnNpZ25lZCBsb25nKSgmKCh3YWl0X3F1ZXVl
X3QgKikwKS0+dGFza19saXN0KSkpOwoKICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAg
IHAgPSBjdXJyLT50YXNrOwogICAgICAgICAgICAgICAgc3RhdGUgPSBwLT5zdGF0ZTsKICAgICAg
ICAgICAgICAgIGlmIChzdGF0ZSAmIG1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgOwog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJ5X3RvX3dha2VfdXAocCwgc3luYykgJiYgKGN1
cnItPmZsYWdzJjB4MDEpICYmICEtLW5yX2V4Y2x1c2l2ZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9Cn0KCnZvaWQgX193
YWtlX3VwKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKQp7
CiAgICAgICAgaWYgKHEpIHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAg
ICAgICAgICAgICAgICBkbyB7IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBv
cGwgJTAiOiI9ZyIgKGZsYWdzKTogKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJt
ZW1vcnkiKTsgfSB3aGlsZSgwKTs7IHNwaW5fbG9jaygmcS0+bG9jayk7IH0gd2hpbGUgKDApOwog
ICAgICAgICAgICAgICAgX193YWtlX3VwX2NvbW1vbihxLCBtb2RlLCBuciwgMCk7CiAgICAgICAg
ICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZxLT5sb2NrKTsgX19hc21fXyBfX3ZvbGF0aWxlX18o
InB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxl
ICgwKTsKICAgICAgICB9Cn0KCnZvaWQgX193YWtlX3VwX3N5bmMod2FpdF9xdWV1ZV9oZWFkX3Qg
KnEsIHVuc2lnbmVkIGludCBtb2RlLCBpbnQgbnIpCnsKICAgICAgICBpZiAocSkgewogICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICAgICAgICAgIGRvIHsgZG8geyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCI6Ij1nIiAoZmxhZ3MpOiApOyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlKDApOzsgc3Bp
bl9sb2NrKCZxLT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBfX3dha2VfdXBf
Y29tbW9uKHEsIG1vZGUsIG5yLCAxKTsKICAgICAgICAgICAgICAgIGRvIHsgc3Bpbl91bmxvY2so
JnEtPmxvY2spOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIg
KGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwogICAgICAgIH0KfQoKdm9pZCBj
b21wbGV0ZShzdHJ1Y3QgY29tcGxldGlvbiAqeCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxh
Z3M7CgogICAgICAgIGRvIHsgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9w
bCAlMCI6Ij1nIiAoZmxhZ3MpOiApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1l
bW9yeSIpOyB9IHdoaWxlKDApOzsgc3Bpbl9sb2NrKCZ4LT53YWl0LmxvY2spOyB9IHdoaWxlICgw
KTsKICAgICAgICB4LT5kb25lKys7CiAgICAgICAgX193YWtlX3VwX2NvbW1vbigmeC0+d2FpdCwg
MiB8IDEsIDEsIDApOwogICAgICAgIGRvIHsgc3Bpbl91bmxvY2soJngtPndhaXQubG9jayk7IF9f
YXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1v
cnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7Cn0KCnZvaWQgd2FpdF9mb3JfY29tcGxldGlvbihzdHJ1
Y3QgY29tcGxldGlvbiAqeCkKewogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNs
aSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZ4LT53YWl0LmxvY2spOyB9IHdoaWxlICgwKTsK
ICAgICAgICBpZiAoIXgtPmRvbmUpIHsKICAgICAgICAgICAgICAgIHdhaXRfcXVldWVfdCB3YWl0
ID0geyB0YXNrOiBnZXRfY3VycmVudCgpLCB0YXNrX2xpc3Q6IHsgKCh2b2lkICopMCksICgodm9p
ZCAqKTApIH0sIH07CgogICAgICAgICAgICAgICAgd2FpdC5mbGFncyB8PSAweDAxOwogICAgICAg
ICAgICAgICAgX19hZGRfd2FpdF9xdWV1ZV90YWlsKCZ4LT53YWl0LCAmd2FpdCk7CiAgICAgICAg
ICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgZ2V0X2N1cnJlbnQoKS0+
c3RhdGUgPSAoMik7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICBkbyB7IHNw
aW5fdW5sb2NrKCZ4LT53YWl0LmxvY2spOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RpIjogOiA6
Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGUo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xp
IjogOiA6Im1lbW9yeSIpOyBzcGluX2xvY2soJngtPndhaXQubG9jayk7IH0gd2hpbGUgKDApOwog
ICAgICAgICAgICAgICAgfSB3aGlsZSAoIXgtPmRvbmUpOwogICAgICAgICAgICAgICAgX19yZW1v
dmVfd2FpdF9xdWV1ZSgmeC0+d2FpdCwgJndhaXQpOwogICAgICAgIH0KICAgICAgICB4LT5kb25l
LS07CiAgICAgICAgZG8geyBzcGluX3VubG9jaygmeC0+d2FpdC5sb2NrKTsgX19hc21fXyBfX3Zv
bGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cn0KIyA4MDkgInNjaGVk
LmMiCnZvaWQgaW50ZXJydXB0aWJsZV9zbGVlcF9vbih3YWl0X3F1ZXVlX2hlYWRfdCAqcSkKewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7IHdhaXRfcXVldWVfdCB3YWl0OyBpbml0X3dhaXRx
dWV1ZV9lbnRyeSgmd2FpdCwgZ2V0X2N1cnJlbnQoKSk7CgogICAgICAgIGdldF9jdXJyZW50KCkt
PnN0YXRlID0gMTsKCiAgICAgICAgZG8geyBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNo
ZmwgOyBwb3BsICUwIjoiPWciIChmbGFncyk6ICk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGki
OiA6IDoibWVtb3J5Iik7IH0gd2hpbGUoMCk7OyBzcGluX2xvY2soJnEtPmxvY2spOyB9IHdoaWxl
ICgwKTsgX19hZGRfd2FpdF9xdWV1ZShxLCAmd2FpdCk7IHNwaW5fdW5sb2NrKCZxLT5sb2NrKTsK
ICAgICAgICBzY2hlZHVsZSgpOwogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNs
aSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZxLT5sb2NrKTsgfSB3aGlsZSAoMCk7IF9fcmVt
b3ZlX3dhaXRfcXVldWUocSwgJndhaXQpOyBkbyB7IHNwaW5fdW5sb2NrKCZxLT5sb2NrKTsgX19h
c21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9y
eSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQoKbG9uZyBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3Rp
bWVvdXQod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIGxvbmcgdGltZW91dCkKewogICAgICAgIHVuc2ln
bmVkIGxvbmcgZmxhZ3M7IHdhaXRfcXVldWVfdCB3YWl0OyBpbml0X3dhaXRxdWV1ZV9lbnRyeSgm
d2FpdCwgZ2V0X2N1cnJlbnQoKSk7CgogICAgICAgIGdldF9jdXJyZW50KCktPnN0YXRlID0gMTsK
CiAgICAgICAgZG8geyBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUw
IjoiPWciIChmbGFncyk6ICk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5
Iik7IH0gd2hpbGUoMCk7OyBzcGluX2xvY2soJnEtPmxvY2spOyB9IHdoaWxlICgwKTsgX19hZGRf
d2FpdF9xdWV1ZShxLCAmd2FpdCk7IHNwaW5fdW5sb2NrKCZxLT5sb2NrKTsKICAgICAgICB0aW1l
b3V0ID0gc2NoZWR1bGVfdGltZW91dCh0aW1lb3V0KTsKICAgICAgICBkbyB7IF9fYXNtX18gX192
b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7IHNwaW5fbG9jaygmcS0+bG9jayk7IH0gd2hp
bGUgKDApOyBfX3JlbW92ZV93YWl0X3F1ZXVlKHEsICZ3YWl0KTsgZG8geyBzcGluX3VubG9jaygm
cS0+bG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAo
ZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CgogICAgICAgIHJldHVybiB0aW1l
b3V0Owp9Cgp2b2lkIHNsZWVwX29uKHdhaXRfcXVldWVfaGVhZF90ICpxKQp7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBmbGFnczsgd2FpdF9xdWV1ZV90IHdhaXQ7IGluaXRfd2FpdHF1ZXVlX2VudHJ5
KCZ3YWl0LCBnZXRfY3VycmVudCgpKTsKCiAgICAgICAgZ2V0X2N1cnJlbnQoKS0+c3RhdGUgPSAy
OwoKICAgICAgICBkbyB7IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwg
JTAiOiI9ZyIgKGZsYWdzKTogKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1v
cnkiKTsgfSB3aGlsZSgwKTs7IHNwaW5fbG9jaygmcS0+bG9jayk7IH0gd2hpbGUgKDApOyBfX2Fk
ZF93YWl0X3F1ZXVlKHEsICZ3YWl0KTsgc3Bpbl91bmxvY2soJnEtPmxvY2spOwogICAgICAgIHNj
aGVkdWxlKCk7CiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1l
bW9yeSIpOyBzcGluX2xvY2soJnEtPmxvY2spOyB9IHdoaWxlICgwKTsgX19yZW1vdmVfd2FpdF9x
dWV1ZShxLCAmd2FpdCk7IGRvIHsgc3Bpbl91bmxvY2soJnEtPmxvY2spOyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7
IH0gd2hpbGUgKDApOwp9Cgpsb25nIHNsZWVwX29uX3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3Qg
KnEsIGxvbmcgdGltZW91dCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7IHdhaXRfcXVl
dWVfdCB3YWl0OyBpbml0X3dhaXRxdWV1ZV9lbnRyeSgmd2FpdCwgZ2V0X2N1cnJlbnQoKSk7Cgog
ICAgICAgIGdldF9jdXJyZW50KCktPnN0YXRlID0gMjsKCiAgICAgICAgZG8geyBkbyB7IF9fYXNt
X18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIjoiPWciIChmbGFncyk6ICk7IF9fYXNt
X18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUoMCk7OyBzcGluX2xv
Y2soJnEtPmxvY2spOyB9IHdoaWxlICgwKTsgX19hZGRfd2FpdF9xdWV1ZShxLCAmd2FpdCk7IHNw
aW5fdW5sb2NrKCZxLT5sb2NrKTsKICAgICAgICB0aW1lb3V0ID0gc2NoZWR1bGVfdGltZW91dCh0
aW1lb3V0KTsKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVt
b3J5Iik7IHNwaW5fbG9jaygmcS0+bG9jayk7IH0gd2hpbGUgKDApOyBfX3JlbW92ZV93YWl0X3F1
ZXVlKHEsICZ3YWl0KTsgZG8geyBzcGluX3VubG9jaygmcS0+bG9jayk7IF9fYXNtX18gX192b2xh
dGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsg
fSB3aGlsZSAoMCk7CgogICAgICAgIHJldHVybiB0aW1lb3V0Owp9Cgp2b2lkIHNjaGVkdWxpbmdf
ZnVuY3Rpb25zX2VuZF9oZXJlKHZvaWQpIHsgfQojIDg2OSAic2NoZWQuYyIKdm9pZCBzZXRfY3B1
c19hbGxvd2VkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdW5zaWduZWQgbG9uZyBuZXdfbWFzaykK
ewogICAgICAgIG5ld19tYXNrICY9IGNwdV9vbmxpbmVfbWFwOwogICAgICAgIGRvIHsgaWYgKF9f
YnVpbHRpbl9leHBlY3QoKCghbmV3X21hc2spIT0wKSwwKSkgX19hc21fXyBfX3ZvbGF0aWxlX18o
ICJ1ZDJcbiIgIlx0LndvcmQgJWMwXG4iICJcdC5sb25nICVjMVxuIiA6IDogImkiICg4NzIpLCAi
aSIgKCJzY2hlZC5jIikpOyB9IHdoaWxlKDApOwoKICAgICAgICBwLT5jcHVzX2FsbG93ZWQgPSBu
ZXdfbWFzazsKCgoKCgoKICAgICAgICBpZiAoIShwLT5jcHVzX3J1bm5hYmxlICYgcC0+Y3B1c19h
bGxvd2VkKSkgewogICAgICAgICAgICAgICAgaWYgKHAgIT0gZ2V0X2N1cnJlbnQoKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICBwLT5uZWVkX3Jlc2NoZWQgPSAxOwogICAgICAgICAgICAgICAg
ICAgICAgICBzbXBfc2VuZF9yZXNjaGVkdWxlKHAtPnByb2Nlc3Nvcik7CiAgICAgICAgICAgICAg
ICB9CgoKCgoKICAgICAgICAgICAgICAgIHdoaWxlICghKHAtPmNwdXNfcnVubmFibGUgJiBwLT5j
cHVzX2FsbG93ZWQpKQogICAgICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZSgpOwogICAgICAg
IH0KfQojIDkwNSAic2NoZWQuYyIKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5
c19uaWNlKGludCBpbmNyZW1lbnQpCnsKICAgICAgICBsb25nIG5ld3ByaW87CgoKCgoKCiAgICAg
ICAgaWYgKGluY3JlbWVudCA8IDApIHsKICAgICAgICAgICAgICAgIGlmICghY2FwYWJsZSgyMykp
CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgIGlmIChp
bmNyZW1lbnQgPCAtNDApCiAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudCA9IC00MDsK
ICAgICAgICB9CiAgICAgICAgaWYgKGluY3JlbWVudCA+IDQwKQogICAgICAgICAgICAgICAgaW5j
cmVtZW50ID0gNDA7CgogICAgICAgIG5ld3ByaW8gPSBnZXRfY3VycmVudCgpLT5uaWNlICsgaW5j
cmVtZW50OwogICAgICAgIGlmIChuZXdwcmlvIDwgLTIwKQogICAgICAgICAgICAgICAgbmV3cHJp
byA9IC0yMDsKICAgICAgICBpZiAobmV3cHJpbyA+IDE5KQogICAgICAgICAgICAgICAgbmV3cHJp
byA9IDE5OwogICAgICAgIGdldF9jdXJyZW50KCktPm5pY2UgPSBuZXdwcmlvOwogICAgICAgIHJl
dHVybiAwOwp9CgoKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICpmaW5kX3Byb2Nl
c3NfYnlfcGlkKHBpZF90IHBpZCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0g
Z2V0X2N1cnJlbnQoKTsKCiAgICAgICAgaWYgKHBpZCkKICAgICAgICAgICAgICAgIHRzayA9IGZp
bmRfdGFza19ieV9waWQocGlkKTsKICAgICAgICByZXR1cm4gdHNrOwp9CgpzdGF0aWMgaW50IHNl
dHNjaGVkdWxlcihwaWRfdCBwaWQsIGludCBwb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pCnsKICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0g
bHA7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwOwogICAgICAgIGludCByZXR2YWw7Cgog
ICAgICAgIHJldHZhbCA9IC0yMjsKICAgICAgICBpZiAoIXBhcmFtIHx8IHBpZCA8IDApCiAgICAg
ICAgICAgICAgICBnb3RvIG91dF9ub3VubG9jazsKCiAgICAgICAgcmV0dmFsID0gLTE0OwogICAg
ICAgIGlmICgoX19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9mKHN0cnVjdCBzY2hlZF9wYXJhbSkp
ID8gX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcigoJmxwKSwocGFyYW0pLChzaXplb2Yoc3RydWN0
IHNjaGVkX3BhcmFtKSkpIDogX19nZW5lcmljX2NvcHlfZnJvbV91c2VyKCgmbHApLChwYXJhbSks
KHNpemVvZihzdHJ1Y3Qgc2NoZWRfcGFyYW0pKSkpKQogICAgICAgICAgICAgICAgZ290byBvdXRf
bm91bmxvY2s7CgoKCgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDog
OiJtZW1vcnkiKTsgcmVhZF9sb2NrKCZ0YXNrbGlzdF9sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgc3Bpbl9sb2NrKCZydW5xdWV1ZV9sb2NrKTsKCiAgICAgICAgcCA9IGZpbmRfcHJvY2Vzc19i
eV9waWQocGlkKTsKCiAgICAgICAgcmV0dmFsID0gLTM7CiAgICAgICAgaWYgKCFwKQogICAgICAg
ICAgICAgICAgZ290byBvdXRfdW5sb2NrOwoKICAgICAgICBpZiAocG9saWN5IDwgMCkKICAgICAg
ICAgICAgICAgIHBvbGljeSA9IHAtPnBvbGljeTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgIHJldHZhbCA9IC0yMjsKICAgICAgICAgICAgICAgIGlmIChwb2xpY3kgIT0gMSAmJiBwb2xp
Y3kgIT0gMiAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeSAhPSAwKQog
ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7CiAgICAgICAgfQoKCgoKCiAg
ICAgICAgcmV0dmFsID0gLTIyOwogICAgICAgIGlmIChscC5zY2hlZF9wcmlvcml0eSA8IDAgfHwg
bHAuc2NoZWRfcHJpb3JpdHkgPiA5OSkKICAgICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsK
ICAgICAgICBpZiAoKHBvbGljeSA9PSAwKSAhPSAobHAuc2NoZWRfcHJpb3JpdHkgPT0gMCkpCiAg
ICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7CgogICAgICAgIHJldHZhbCA9IC0xOwogICAg
ICAgIGlmICgocG9saWN5ID09IDEgfHwgcG9saWN5ID09IDIpICYmCiAgICAgICAgICAgICFjYXBh
YmxlKDIzKSkKICAgICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKICAgICAgICBpZiAoKGdl
dF9jdXJyZW50KCktPmV1aWQgIT0gcC0+ZXVpZCkgJiYgKGdldF9jdXJyZW50KCktPmV1aWQgIT0g
cC0+dWlkKSAmJgogICAgICAgICAgICAhY2FwYWJsZSgyMykpCiAgICAgICAgICAgICAgICBnb3Rv
IG91dF91bmxvY2s7CgogICAgICAgIHJldHZhbCA9IDA7CiAgICAgICAgcC0+cG9saWN5ID0gcG9s
aWN5OwogICAgICAgIHAtPnJ0X3ByaW9yaXR5ID0gbHAuc2NoZWRfcHJpb3JpdHk7CgogICAgICAg
IGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCA9IDE7CgpvdXRfdW5sb2NrOgogICAgICAgIHNw
aW5fdW5sb2NrKCZydW5xdWV1ZV9sb2NrKTsKICAgICAgICBkbyB7IGFzbSB2b2xhdGlsZSgibG9j
ayA7IGluY2wgJTAiIDoiPW0iICgoJnRhc2tsaXN0X2xvY2spLT5sb2NrKSA6IDogIm1lbW9yeSIp
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsK
Cm91dF9ub3VubG9jazoKICAgICAgICByZXR1cm4gcmV0dmFsOwp9CgogX19hdHRyaWJ1dGVfXygo
cmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX3NldHNjaGVkdWxlcihwaWRfdCBwaWQsIGludCBw
b2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjaGVk
X3BhcmFtICpwYXJhbSkKewogICAgICAgIHJldHVybiBzZXRzY2hlZHVsZXIocGlkLCBwb2xpY3ks
IHBhcmFtKTsKfQoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF9z
ZXRwYXJhbShwaWRfdCBwaWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pCnsKICAgICAgICBy
ZXR1cm4gc2V0c2NoZWR1bGVyKHBpZCwgLTEsIHBhcmFtKTsKfQoKIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF9nZXRzY2hlZHVsZXIocGlkX3QgcGlkKQp7CiAgICAg
ICAgc3RydWN0IHRhc2tfc3RydWN0ICpwOwogICAgICAgIGludCByZXR2YWw7CgogICAgICAgIHJl
dHZhbCA9IC0yMjsKICAgICAgICBpZiAocGlkIDwgMCkKICAgICAgICAgICAgICAgIGdvdG8gb3V0
X25vdW5sb2NrOwoKICAgICAgICByZXR2YWwgPSAtMzsKICAgICAgICByZWFkX2xvY2soJnRhc2ts
aXN0X2xvY2spOwogICAgICAgIHAgPSBmaW5kX3Byb2Nlc3NfYnlfcGlkKHBpZCk7CiAgICAgICAg
aWYgKHApCiAgICAgICAgICAgICAgICByZXR2YWwgPSBwLT5wb2xpY3kgJiB+MHgxMDsKICAgICAg
ICBhc20gdm9sYXRpbGUoImxvY2sgOyBpbmNsICUwIiA6Ij1tIiAoKCZ0YXNrbGlzdF9sb2NrKS0+
bG9jaykgOiA6ICJtZW1vcnkiKTsKCm91dF9ub3VubG9jazoKICAgICAgICByZXR1cm4gcmV0dmFs
Owp9CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX2dldHBhcmFt
KHBpZF90IHBpZCwgc3RydWN0IHNjaGVkX3BhcmFtICpwYXJhbSkKewogICAgICAgIHN0cnVjdCB0
YXNrX3N0cnVjdCAqcDsKICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gbHA7CiAgICAgICAgaW50
IHJldHZhbDsKCiAgICAgICAgcmV0dmFsID0gLTIyOwogICAgICAgIGlmICghcGFyYW0gfHwgcGlk
IDwgMCkKICAgICAgICAgICAgICAgIGdvdG8gb3V0X25vdW5sb2NrOwoKICAgICAgICByZWFkX2xv
Y2soJnRhc2tsaXN0X2xvY2spOwogICAgICAgIHAgPSBmaW5kX3Byb2Nlc3NfYnlfcGlkKHBpZCk7
CiAgICAgICAgcmV0dmFsID0gLTM7CiAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgZ290
byBvdXRfdW5sb2NrOwogICAgICAgIGxwLnNjaGVkX3ByaW9yaXR5ID0gcC0+cnRfcHJpb3JpdHk7
CiAgICAgICAgYXNtIHZvbGF0aWxlKCJsb2NrIDsgaW5jbCAlMCIgOiI9bSIgKCgmdGFza2xpc3Rf
bG9jayktPmxvY2spIDogOiAibWVtb3J5Iik7CgoKCgogICAgICAgIHJldHZhbCA9IChfX2J1aWx0
aW5fY29uc3RhbnRfcChzaXplb2YoKnBhcmFtKSkgPyBfX2NvbnN0YW50X2NvcHlfdG9fdXNlcigo
cGFyYW0pLCgmbHApLChzaXplb2YoKnBhcmFtKSkpIDogX19nZW5lcmljX2NvcHlfdG9fdXNlcigo
cGFyYW0pLCgmbHApLChzaXplb2YoKnBhcmFtKSkpKSA/IC0xNCA6IDA7CgpvdXRfbm91bmxvY2s6
CiAgICAgICAgcmV0dXJuIHJldHZhbDsKCm91dF91bmxvY2s6CiAgICAgICAgYXNtIHZvbGF0aWxl
KCJsb2NrIDsgaW5jbCAlMCIgOiI9bSIgKCgmdGFza2xpc3RfbG9jayktPmxvY2spIDogOiAibWVt
b3J5Iik7CiAgICAgICAgcmV0dXJuIHJldHZhbDsKfQoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MCkpKSBsb25nIHN5c19zY2hlZF95aWVsZCh2b2lkKQp7CiMgMTA4MyAic2NoZWQuYyIKICAgICAg
ICBpbnQgbnJfcGVuZGluZyA9IG5yX3J1bm5pbmc7CgoKICAgICAgICBpbnQgaTsKCgogICAgICAg
IGZvciAoaSA9IDA7IGkgPCBzbXBfbnVtX2NwdXM7IGkrKykgewogICAgICAgICAgICAgICAgaW50
IGNwdSA9IGNwdV9sb2dpY2FsX21hcChpKTsKICAgICAgICAgICAgICAgIGlmIChhbGlnbmVkX2Rh
dGFbY3B1XS5zY2hlZHVsZV9kYXRhLmN1cnIgIT0gKGluaXRfdGFza3NbY3B1X251bWJlcl9tYXAo
Y3B1KV0pKQogICAgICAgICAgICAgICAgICAgICAgICBucl9wZW5kaW5nLS07CiAgICAgICAgfQoK
CgoKICAgICAgICBpZiAobnJfcGVuZGluZykgewoKCgoKICAgICAgICAgICAgICAgIGlmIChnZXRf
Y3VycmVudCgpLT5wb2xpY3kgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2N1cnJl
bnQoKS0+cG9saWN5IHw9IDB4MTA7CiAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5uZWVk
X3Jlc2NoZWQgPSAxOwoKICAgICAgICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18o
ImNsaSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZydW5xdWV1ZV9sb2NrKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgICAgICAgICBtb3ZlX2xhc3RfcnVucXVldWUoZ2V0X2N1cnJlbnQoKSk7CiAg
ICAgICAgICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZydW5xdWV1ZV9sb2NrKTsgX19hc21fXyBf
X3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgfQog
ICAgICAgIHJldHVybiAwOwp9CgoKCgoKCgp2b2lkIHlpZWxkKHZvaWQpCnsKICAgICAgICBkbyB7
ICgoX190eXBlb2ZfXygqKCZnZXRfY3VycmVudCgpLT5zdGF0ZSkpKV9feGNoZygodW5zaWduZWQg
bG9uZykoKDApKSwoJmdldF9jdXJyZW50KCktPnN0YXRlKSxzaXplb2YoKigmZ2V0X2N1cnJlbnQo
KS0+c3RhdGUpKSkpOyB9IHdoaWxlICgwKTsKICAgICAgICBzeXNfc2NoZWRfeWllbGQoKTsKICAg
ICAgICBzY2hlZHVsZSgpOwp9Cgp2b2lkIF9fY29uZF9yZXNjaGVkKHZvaWQpCnsKICAgICAgICBk
byB7ICgoX190eXBlb2ZfXygqKCZnZXRfY3VycmVudCgpLT5zdGF0ZSkpKV9feGNoZygodW5zaWdu
ZWQgbG9uZykoKDApKSwoJmdldF9jdXJyZW50KCktPnN0YXRlKSxzaXplb2YoKigmZ2V0X2N1cnJl
bnQoKS0+c3RhdGUpKSkpOyB9IHdoaWxlICgwKTsKICAgICAgICBzY2hlZHVsZSgpOwp9CgogX19h
dHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX2dldF9wcmlvcml0eV9tYXgo
aW50IHBvbGljeSkKewogICAgICAgIGludCByZXQgPSAtMjI7CgogICAgICAgIHN3aXRjaCAocG9s
aWN5KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIHJl
dCA9IDk5OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAg
ICAgICAgcmV0ID0gMDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBy
ZXR1cm4gcmV0Owp9CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVk
X2dldF9wcmlvcml0eV9taW4oaW50IHBvbGljeSkKewogICAgICAgIGludCByZXQgPSAtMjI7Cgog
ICAgICAgIHN3aXRjaCAocG9saWN5KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgIGNhc2UgMjoK
ICAgICAgICAgICAgICAgIHJldCA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBj
YXNlIDA6CiAgICAgICAgICAgICAgICByZXQgPSAwOwogICAgICAgIH0KICAgICAgICByZXR1cm4g
cmV0Owp9CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX3JyX2dl
dF9pbnRlcnZhbChwaWRfdCBwaWQsIHN0cnVjdCB0aW1lc3BlYyAqaW50ZXJ2YWwpCnsKICAgICAg
ICBzdHJ1Y3QgdGltZXNwZWMgdDsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnA7CiAgICAg
ICAgaW50IHJldHZhbCA9IC0yMjsKCiAgICAgICAgaWYgKHBpZCA8IDApCiAgICAgICAgICAgICAg
ICBnb3RvIG91dF9ub3VubG9jazsKCiAgICAgICAgcmV0dmFsID0gLTM7CiAgICAgICAgcmVhZF9s
b2NrKCZ0YXNrbGlzdF9sb2NrKTsKICAgICAgICBwID0gZmluZF9wcm9jZXNzX2J5X3BpZChwaWQp
OwogICAgICAgIGlmIChwKQogICAgICAgICAgICAgICAgamlmZmllc190b190aW1lc3BlYyhwLT5w
b2xpY3kgJiAxID8gMCA6ICgoKDIwLShwLT5uaWNlKSkgPj4gMikrMSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZ0KTsKICAgICAgICBhc20gdm9sYXRpbGUoImxvY2sgOyBp
bmNsICUwIiA6Ij1tIiAoKCZ0YXNrbGlzdF9sb2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsKICAg
ICAgICBpZiAocCkKICAgICAgICAgICAgICAgIHJldHZhbCA9IChfX2J1aWx0aW5fY29uc3RhbnRf
cChzaXplb2YodCkpID8gX19jb25zdGFudF9jb3B5X3RvX3VzZXIoKGludGVydmFsKSwoJnQpLChz
aXplb2YodCkpKSA6IF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIoKGludGVydmFsKSwoJnQpLChzaXpl
b2YodCkpKSkgPyAtMTQgOiAwOwpvdXRfbm91bmxvY2s6CiAgICAgICAgcmV0dXJuIHJldHZhbDsK
fQoKc3RhdGljIHZvaWQgc2hvd190YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHApCnsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGZyZWUgPSAwOwogICAgICAgIGludCBzdGF0ZTsKICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciAqIHN0YXRfbmFtW10gPSB7ICJSIiwgIlMiLCAiRCIsICJaIiwgIlQiLCAi
VyIgfTsKCiAgICAgICAgcHJpbnRrKCIlLTEzLjEzcyAiLCBwLT5jb21tKTsKICAgICAgICBzdGF0
ZSA9IHAtPnN0YXRlID8gZmZ6KH5wLT5zdGF0ZSkgKyAxIDogMDsKICAgICAgICBpZiAoKCh1bnNp
Z25lZCkgc3RhdGUpIDwgc2l6ZW9mKHN0YXRfbmFtKS9zaXplb2YoY2hhciAqKSkKICAgICAgICAg
ICAgICAgIHByaW50ayhzdGF0X25hbVtzdGF0ZV0pOwogICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgIHByaW50aygiICIpOwoKICAgICAgICBpZiAocCA9PSBnZXRfY3VycmVudCgpKQogICAgICAg
ICAgICAgICAgcHJpbnRrKCIgY3VycmVudCAgIik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgcHJpbnRrKCIgJTA4bFggIiwgdGhyZWFkX3NhdmVkX3BjKCZwLT50aHJlYWQpKTsKCgoKCgoK
ICAgICAgICB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICogbiA9ICh1bnNpZ25lZCBs
b25nICopIChwKzEpOwogICAgICAgICAgICAgICAgd2hpbGUgKCEqbikKICAgICAgICAgICAgICAg
ICAgICAgICAgbisrOwogICAgICAgICAgICAgICAgZnJlZSA9ICh1bnNpZ25lZCBsb25nKSBuIC0g
KHVuc2lnbmVkIGxvbmcpKHArMSk7CiAgICAgICAgfQogICAgICAgIHByaW50aygiJTVsdSAlNWQg
JTZkICIsIGZyZWUsIHAtPnBpZCwgcC0+cF9wcHRyLT5waWQpOwogICAgICAgIGlmIChwLT5wX2Nw
dHIpCiAgICAgICAgICAgICAgICBwcmludGsoIiU1ZCAiLCBwLT5wX2NwdHItPnBpZCk7CiAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRrKCIgICAgICAiKTsKICAgICAgICBpZiAocC0+
cF95c3B0cikKICAgICAgICAgICAgICAgIHByaW50aygiJTdkIiwgcC0+cF95c3B0ci0+cGlkKTsK
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBwcmludGsoIiAgICAgICAiKTsKICAgICAgICBp
ZiAocC0+cF9vc3B0cikKICAgICAgICAgICAgICAgIHByaW50aygiICU1ZCIsIHAtPnBfb3NwdHIt
PnBpZCk7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRrKCIgICAgICAiKTsKICAg
ICAgICBpZiAoIXAtPm1tKQogICAgICAgICAgICAgICAgcHJpbnRrKCIgKEwtVExCKVxuIik7CiAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRrKCIgKE5PVExCKVxuIik7CgogICAgICAg
IHsKICAgICAgICAgICAgICAgIGV4dGVybiB2b2lkIHNob3dfdHJhY2VfdGFzayhzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKnRzayk7CiAgICAgICAgICAgICAgICBzaG93X3RyYWNlX3Rhc2socCk7CiAgICAg
ICAgfQp9CgpjaGFyICogcmVuZGVyX3NpZ3NldF90KHNpZ3NldF90ICpzZXQsIGNoYXIgKmJ1ZmZl
cikKewogICAgICAgIGludCBpID0gNjQsIHg7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAg
aSAtPSA0LCB4ID0gMDsKICAgICAgICAgICAgICAgIGlmICgoX19idWlsdGluX2NvbnN0YW50X3Ao
aSsxKSA/IF9fY29uc3Rfc2lnaXNtZW1iZXIoKHNldCksKGkrMSkpIDogX19nZW5fc2lnaXNtZW1i
ZXIoKHNldCksKGkrMSkpKSkgeCB8PSAxOwogICAgICAgICAgICAgICAgaWYgKChfX2J1aWx0aW5f
Y29uc3RhbnRfcChpKzIpID8gX19jb25zdF9zaWdpc21lbWJlcigoc2V0KSwoaSsyKSkgOiBfX2dl
bl9zaWdpc21lbWJlcigoc2V0KSwoaSsyKSkpKSB4IHw9IDI7CiAgICAgICAgICAgICAgICBpZiAo
KF9fYnVpbHRpbl9jb25zdGFudF9wKGkrMykgPyBfX2NvbnN0X3NpZ2lzbWVtYmVyKChzZXQpLChp
KzMpKSA6IF9fZ2VuX3NpZ2lzbWVtYmVyKChzZXQpLChpKzMpKSkpIHggfD0gNDsKICAgICAgICAg
ICAgICAgIGlmICgoX19idWlsdGluX2NvbnN0YW50X3AoaSs0KSA/IF9fY29uc3Rfc2lnaXNtZW1i
ZXIoKHNldCksKGkrNCkpIDogX19nZW5fc2lnaXNtZW1iZXIoKHNldCksKGkrNCkpKSkgeCB8PSA4
OwogICAgICAgICAgICAgICAgKmJ1ZmZlcisrID0gKHggPCAxMCA/ICcwJyA6ICdhJyAtIDEwKSAr
IHg7CiAgICAgICAgfSB3aGlsZSAoaSA+PSA0KTsKICAgICAgICAqYnVmZmVyID0gMDsKICAgICAg
ICByZXR1cm4gYnVmZmVyOwp9Cgp2b2lkIHNob3dfc3RhdGUodm9pZCkKewogICAgICAgIHN0cnVj
dCB0YXNrX3N0cnVjdCAqcDsKCgogICAgICAgIHByaW50aygiXG4iCiAgICAgICAgICAgICAgICIg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxp
bmdcbiIpOwogICAgICAgIHByaW50aygiICB0YXNrICAgICAgICAgICAgIFBDICAgIHN0YWNrICAg
cGlkIGZhdGhlciBjaGlsZCB5b3VuZ2VyIG9sZGVyXG4iKTsKCgoKCgogICAgICAgIHJlYWRfbG9j
aygmdGFza2xpc3RfbG9jayk7CiAgICAgICAgZm9yIChwID0gJihpbml0X3Rhc2tfdW5pb24udGFz
aykgOyAocCA9IHAtPm5leHRfdGFzaykgIT0gJihpbml0X3Rhc2tfdW5pb24udGFzaykgOyApIHsK
CgoKCiAgICAgICAgICAgICAgICB0b3VjaF9ubWlfd2F0Y2hkb2coKTsKICAgICAgICAgICAgICAg
IHNob3dfdGFzayhwKTsKICAgICAgICB9CiAgICAgICAgYXNtIHZvbGF0aWxlKCJsb2NrIDsgaW5j
bCAlMCIgOiI9bSIgKCgmdGFza2xpc3RfbG9jayktPmxvY2spIDogOiAibWVtb3J5Iik7Cn0KIyAx
MjkxICJzY2hlZC5jIgp2b2lkIHJlcGFyZW50X3RvX2luaXQodm9pZCkKewogICAgICAgIHN0cnVj
dCB0YXNrX3N0cnVjdCAqdGhpc190YXNrID0gZ2V0X2N1cnJlbnQoKTsKCiAgICAgICAgZG8geyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyB3cml0ZV9sb2NrKCZ0YXNr
bGlzdF9sb2NrKTsgfSB3aGlsZSAoMCk7CgoKICAgICAgICBkbyB7ICh0aGlzX3Rhc2spLT5uZXh0
X3Rhc2stPnByZXZfdGFzayA9ICh0aGlzX3Rhc2spLT5wcmV2X3Rhc2s7ICh0aGlzX3Rhc2spLT5w
cmV2X3Rhc2stPm5leHRfdGFzayA9ICh0aGlzX3Rhc2spLT5uZXh0X3Rhc2s7IGlmICgodGhpc190
YXNrKS0+cF9vc3B0cikgKHRoaXNfdGFzayktPnBfb3NwdHItPnBfeXNwdHIgPSAodGhpc190YXNr
KS0+cF95c3B0cjsgaWYgKCh0aGlzX3Rhc2spLT5wX3lzcHRyKSAodGhpc190YXNrKS0+cF95c3B0
ci0+cF9vc3B0ciA9ICh0aGlzX3Rhc2spLT5wX29zcHRyOyBlbHNlICh0aGlzX3Rhc2spLT5wX3Bw
dHItPnBfY3B0ciA9ICh0aGlzX3Rhc2spLT5wX29zcHRyOyB9IHdoaWxlICgwKTsKICAgICAgICB0
aGlzX3Rhc2stPnBfcHB0ciA9IGNoaWxkX3JlYXBlcjsKICAgICAgICB0aGlzX3Rhc2stPnBfb3Bw
dHIgPSBjaGlsZF9yZWFwZXI7CiAgICAgICAgZG8geyAodGhpc190YXNrKS0+bmV4dF90YXNrID0g
Jihpbml0X3Rhc2tfdW5pb24udGFzayk7ICh0aGlzX3Rhc2spLT5wcmV2X3Rhc2sgPSAoaW5pdF90
YXNrX3VuaW9uLnRhc2spLnByZXZfdGFzazsgKGluaXRfdGFza191bmlvbi50YXNrKS5wcmV2X3Rh
c2stPm5leHRfdGFzayA9ICh0aGlzX3Rhc2spOyAoaW5pdF90YXNrX3VuaW9uLnRhc2spLnByZXZf
dGFzayA9ICh0aGlzX3Rhc2spOyAodGhpc190YXNrKS0+cF95c3B0ciA9ICgodm9pZCAqKTApOyBp
ZiAoKCh0aGlzX3Rhc2spLT5wX29zcHRyID0gKHRoaXNfdGFzayktPnBfcHB0ci0+cF9jcHRyKSAh
PSAoKHZvaWQgKikwKSkgKHRoaXNfdGFzayktPnBfb3NwdHItPnBfeXNwdHIgPSB0aGlzX3Rhc2s7
ICh0aGlzX3Rhc2spLT5wX3BwdHItPnBfY3B0ciA9IHRoaXNfdGFzazsgfSB3aGlsZSAoMCk7CgoK
ICAgICAgICB0aGlzX3Rhc2stPmV4aXRfc2lnbmFsID0gMTc7CgoKCiAgICAgICAgc3Bpbl9sb2Nr
KCZydW5xdWV1ZV9sb2NrKTsKCiAgICAgICAgdGhpc190YXNrLT5wdHJhY2UgPSAwOwogICAgICAg
IHRoaXNfdGFzay0+bmljZSA9ICgwKTsKICAgICAgICB0aGlzX3Rhc2stPnBvbGljeSA9IDA7CgoK
CiAgICAgICAgdGhpc190YXNrLT5jYXBfZWZmZWN0aXZlID0gKH4wICYgfigxIDw8ICg4KSkpOwog
ICAgICAgIHRoaXNfdGFzay0+Y2FwX2luaGVyaXRhYmxlID0gKDApOwogICAgICAgIHRoaXNfdGFz
ay0+Y2FwX3Blcm1pdHRlZCA9ICh+MCk7CiAgICAgICAgdGhpc190YXNrLT5rZWVwX2NhcGFiaWxp
dGllcyA9IDA7CiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemVvZigqKHRoaXNfdGFz
ay0+cmxpbSkpKSA/IF9fY29uc3RhbnRfbWVtY3B5KCh0aGlzX3Rhc2stPnJsaW0pLCgoaW5pdF90
YXNrX3VuaW9uLnRhc2spLnJsaW0pLChzaXplb2YoKih0aGlzX3Rhc2stPnJsaW0pKSkpIDogX19t
ZW1jcHkoKHRoaXNfdGFzay0+cmxpbSksKChpbml0X3Rhc2tfdW5pb24udGFzaykucmxpbSksKHNp
emVvZigqKHRoaXNfdGFzay0+cmxpbSkpKSkpOwogICAgICAgIHRoaXNfdGFzay0+dXNlciA9ICgm
cm9vdF91c2VyKTsKCiAgICAgICAgc3Bpbl91bmxvY2soJnJ1bnF1ZXVlX2xvY2spOwogICAgICAg
IGRvIHsgYXNtIHZvbGF0aWxlKCJsb2NrIDsgYWRkbCAkIiAiMHgwMTAwMDAwMCIgIiwlMCI6Ij1t
IiAoKCZ0YXNrbGlzdF9sb2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsgX19hc21fXyBfX3ZvbGF0
aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cn0KCgoKCgoKdm9pZCBkYWVt
b25pemUodm9pZCkKewogICAgICAgIHN0cnVjdCBmc19zdHJ1Y3QgKmZzOwoKCgoKCgoKICAgICAg
ICBleGl0X21tKGdldF9jdXJyZW50KCkpOwoKICAgICAgICBnZXRfY3VycmVudCgpLT5zZXNzaW9u
ID0gMTsKICAgICAgICBnZXRfY3VycmVudCgpLT5wZ3JwID0gMTsKICAgICAgICBnZXRfY3VycmVu
dCgpLT50dHkgPSAoKHZvaWQgKikwKTsKCgoKICAgICAgICBleGl0X2ZzKGdldF9jdXJyZW50KCkp
OwogICAgICAgIGZzID0gKGluaXRfdGFza191bmlvbi50YXNrKS5mczsKICAgICAgICBnZXRfY3Vy
cmVudCgpLT5mcyA9IGZzOwogICAgICAgIGF0b21pY19pbmMoJmZzLT5jb3VudCk7CiAgICAgICAg
ZXhpdF9maWxlcyhnZXRfY3VycmVudCgpKTsKICAgICAgICBnZXRfY3VycmVudCgpLT5maWxlcyA9
IChpbml0X3Rhc2tfdW5pb24udGFzaykuZmlsZXM7CiAgICAgICAgYXRvbWljX2luYygmZ2V0X2N1
cnJlbnQoKS0+ZmlsZXMtPmNvdW50KTsKfQoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgd2FpdF9pbml0
X2lkbGU7Cgp2b2lkIF9fYXR0cmlidXRlX18gKChfX3NlY3Rpb25fXyAoIi50ZXh0LmluaXQiKSkp
IGluaXRfaWRsZSh2b2lkKQp7CiAgICAgICAgc3RydWN0IHNjaGVkdWxlX2RhdGEgKiBzY2hlZF9k
YXRhOwogICAgICAgIHNjaGVkX2RhdGEgPSAmYWxpZ25lZF9kYXRhWyhnZXRfY3VycmVudCgpLT5w
cm9jZXNzb3IpXS5zY2hlZHVsZV9kYXRhOwoKICAgICAgICBpZiAoZ2V0X2N1cnJlbnQoKSAhPSAm
KGluaXRfdGFza191bmlvbi50YXNrKSAmJiB0YXNrX29uX3J1bnF1ZXVlKGdldF9jdXJyZW50KCkp
KSB7CiAgICAgICAgICAgICAgICBwcmludGsoIlVHSCEgKCVkOiVkKSB3YXMgb24gdGhlIHJ1bnF1
ZXVlLCByZW1vdmluZy5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIChnZXRfY3VycmVudCgp
LT5wcm9jZXNzb3IpLCBnZXRfY3VycmVudCgpLT5waWQpOwogICAgICAgICAgICAgICAgZGVsX2Zy
b21fcnVucXVldWUoZ2V0X2N1cnJlbnQoKSk7CiAgICAgICAgfQogICAgICAgIHNjaGVkX2RhdGEt
PmN1cnIgPSBnZXRfY3VycmVudCgpOwogICAgICAgIHNjaGVkX2RhdGEtPmxhc3Rfc2NoZWR1bGUg
PSBnZXRfY3ljbGVzKCk7CiAgICAgICAgY2xlYXJfYml0KGdldF9jdXJyZW50KCktPnByb2Nlc3Nv
ciwgJndhaXRfaW5pdF9pZGxlKTsKfQoKZXh0ZXJuIHZvaWQgaW5pdF90aW1lcnZlY3MgKHZvaWQp
OwoKdm9pZCBfX2F0dHJpYnV0ZV9fICgoX19zZWN0aW9uX18gKCIudGV4dC5pbml0IikpKSBzY2hl
ZF9pbml0KHZvaWQpCnsKCgoKCiAgICAgICAgaW50IGNwdSA9IChnZXRfY3VycmVudCgpLT5wcm9j
ZXNzb3IpOwogICAgICAgIGludCBucjsKCiAgICAgICAgKGluaXRfdGFza191bmlvbi50YXNrKS5w
cm9jZXNzb3IgPSBjcHU7CgogICAgICAgIGZvcihuciA9IDA7IG5yIDwgKDQwOTYgPj4gMik7IG5y
KyspCiAgICAgICAgICAgICAgICBwaWRoYXNoW25yXSA9ICgodm9pZCAqKTApOwoKICAgICAgICBp
bml0X3RpbWVydmVjcygpOwoKICAgICAgICBpbml0X2JoKFRJTUVSX0JILCB0aW1lcl9iaCk7CiAg
ICAgICAgaW5pdF9iaChUUVVFVUVfQkgsIHRxdWV1ZV9iaCk7CiAgICAgICAgaW5pdF9iaChJTU1F
RElBVEVfQkgsIGltbWVkaWF0ZV9iaCk7CgoKCgogICAgICAgIGF0b21pY19pbmMoJmluaXRfbW0u
bW1fY291bnQpOwogICAgICAgIGVudGVyX2xhenlfdGxiKCZpbml0X21tLCBnZXRfY3VycmVudCgp
LCBjcHUpOwp9Cg==


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-05-20 21:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-20 21:56 other/10890: internal compiler error: in merge_assigned_reloads, at reload1.c:6134 rfreund

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).