This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

optimization/7878: GCC 3.2 Internal compiler error in simplify_subreg


>Number:         7878
>Category:       optimization
>Synopsis:       GCC 3.2 Internal compiler error in simplify_subreg
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Tue Sep 10 02:56:02 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Claude Boulade - BULL S.A.
>Release:        3.1.1 / 3.2
>Organization:
>Environment:
cygwin 1.3.12.4 under Windows 98 SE
GCC (GCC) 3.2 20020818 (prerelease)
>Description:
GCC issues the message
Internal compiler error in simplify_subreg, at simplify-rtx.c:2452
while compiling tc-ppc.c with -O2
Compilation is OK with -O0

gcc --version
GCC (GCC) 3.2 20020818 (prerelease)
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

gcc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.2/specs
Configured with: /netrel/src/gcc-3.2-1/configure --enable-languages=c,c++,f77,java --enable-libgcj --enable-threads=posix --with-system-zlib --enable-nls --without-included-gettext --enable-interpreter --disable-sjlj-exceptions --disable-version-specific-runtime-libs --enable-shared --build=i686-pc-linux --host=i686-pc-cygwin --target=i686-pc-cygwin --enable-haifa --prefix=/usr --exec-prefix=/usr--sysconfdir=/etc --libdir=/usr/lib --includedir=/nonexistent/include --libexecdir=/usr/sbin
Thread model: posix
>How-To-Repeat:
Compile the attached file with -O2
>Fix:
Compile the attached file with -O0
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="tc-ppc.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="tc-ppc.c"

IyAxICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMuYyIKIyAxICI8YnVpbHQt
aW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29u
ZmlnL3RjLXBwYy5jIgojIDIzICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMu
YyIKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL19hbnNpLmgiIDEgMwojIDE1ICIvdXNyL2luY2x1ZGUv
X2Fuc2kuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9uZXdsaWIuaCIgMSAzCiMgMTYgIi91c3IvaW5j
bHVkZS9fYW5zaS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NvbmZpZy5oIiAxIDMKCgoK
IyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9pZWVlZnAuaCIgMSAzCiMgNSAiL3Vzci9pbmNsdWRl
L3N5cy9jb25maWcuaCIgMiAzCiMgMTcgIi91c3IvaW5jbHVkZS9fYW5zaS5oIiAyIDMKIyAzMCAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
cGMtY3lnd2luLzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMDMgIi91c3IvbGliL2djYy1s
aWIvaTY4Ni1wYy1jeWd3aW4vMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgc2l6ZV90OwojIDM1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKIyAxICIvdXNy
L2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuMi9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0
NCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjIvaW5jbHVkZS9zdGRhcmcuaCIg
Mwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDM4ICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIg
MSAzCiMgMTQgIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9z
eXMvX3R5cGVzLmgiIDEgMwojIDEyICIvdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIiAzCnR5cGVk
ZWYgbG9uZyBfb2ZmX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgX29mZjY0X3Q7
CgoKdHlwZWRlZiBpbnQgX3NzaXplX3Q7CgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
cGMtY3lnd2luLzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMjMgIi91c3IvbGliL2djYy1s
aWIvaTY4Ni1wYy1jeWd3aW4vMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgd2ludF90OwojIDIzICIvdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIiAyIDMKCgoKCnR5
cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlvbgogIHsKICAgIHdpbnRfdCBfX3dj
aDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1ZTsKfSBfbWJzdGF0ZV90OwoKCgoKCnR5
cGVkZWYgX21ic3RhdGVfdCBtYnN0YXRlX3Q7CgoKCgp0eXBlZGVmIGludCBfZmxvY2tfdDsKIyAx
NSAiL3Vzci9pbmNsdWRlL3N5cy9yZWVudC5oIiAyIDMKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBfX1VMb25nOwojIDQwICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDMKc3RydWN0IF9CaWdp
bnQKewogIHN0cnVjdCBfQmlnaW50ICpfbmV4dDsKICBpbnQgX2ssIF9tYXh3ZHMsIF9zaWduLCBf
d2RzOwogIF9fVUxvbmcgX3hbMV07Cn07CgoKc3RydWN0IF9fdG0KewogIGludCBfX3RtX3NlYzsK
ICBpbnQgX190bV9taW47CiAgaW50IF9fdG1faG91cjsKICBpbnQgX190bV9tZGF5OwogIGludCBf
X3RtX21vbjsKICBpbnQgX190bV95ZWFyOwogIGludCBfX3RtX3dkYXk7CiAgaW50IF9fdG1feWRh
eTsKICBpbnQgX190bV9pc2RzdDsKfTsKIyA2OCAiL3Vzci9pbmNsdWRlL3N5cy9yZWVudC5oIiAz
CnN0cnVjdCBfYXRleGl0IHsKICAgICAgICBzdHJ1Y3QgX2F0ZXhpdCAqX25leHQ7CiAgICAgICAg
aW50IF9pbmQ7CiAgICAgICAgdm9pZCAoKl9mbnNbMzJdKSh2b2lkKTsKICAgICAgICB2b2lkICpf
Zm5hcmdzWzMyXTsKICAgICAgICBfX1VMb25nIF9mbnR5cGVzOwp9OwojIDkxICIvdXNyL2luY2x1
ZGUvc3lzL3JlZW50LmgiIDMKc3RydWN0IF9fc2J1ZiB7CiAgICAgICAgdW5zaWduZWQgY2hhciAq
X2Jhc2U7CiAgICAgICAgaW50IF9zaXplOwp9OwoKCgoKCgp0eXBlZGVmIGxvbmcgX2Zwb3NfdDsK
IyAxNTYgIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMwpzdHJ1Y3QgX19zRklMRSB7CiAgdW5z
aWduZWQgY2hhciAqX3A7CiAgaW50IF9yOwogIGludCBfdzsKICBzaG9ydCBfZmxhZ3M7CiAgc2hv
cnQgX2ZpbGU7CiAgc3RydWN0IF9fc2J1ZiBfYmY7CiAgaW50IF9sYmZzaXplOwoKCgoKCgogIHZv
aWQgKiBfY29va2llOwoKICBfc3NpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSAoKl9y
ZWFkKSAodm9pZCAqIF9jb29raWUsIGNoYXIgKl9idWYsIGludCBfbik7CiAgX3NzaXplX3QgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgKCpfd3JpdGUpICh2b2lkICogX2Nvb2tpZSwgY29uc3Qg
Y2hhciAqX2J1ZiwgaW50IF9uKTsKCiAgX2Zwb3NfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSAoKl9zZWVrKSAodm9pZCAqIF9jb29raWUsIF9mcG9zX3QgX29mZnNldCwgaW50IF93aGVuY2Up
OwogIGludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSAoKl9jbG9zZSkgKHZvaWQgKiBfY29v
a2llKTsKCgogIHN0cnVjdCBfX3NidWYgX3ViOwogIHVuc2lnbmVkIGNoYXIgKl91cDsKICBpbnQg
X3VyOwoKCiAgdW5zaWduZWQgY2hhciBfdWJ1ZlszXTsKICB1bnNpZ25lZCBjaGFyIF9uYnVmWzFd
OwoKCiAgc3RydWN0IF9fc2J1ZiBfbGI7CgoKICBpbnQgX2Jsa3NpemU7CiAgaW50IF9vZmZzZXQ7
CgoKICBzdHJ1Y3QgX3JlZW50ICpfZGF0YTsKCgoKICBfZmxvY2tfdCBfbG9jazsKCn07CiMgMjQ5
ICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX19zRklMRSBfX0ZJ
TEU7CgoKc3RydWN0IF9nbHVlCnsKICBzdHJ1Y3QgX2dsdWUgKl9uZXh0OwogIGludCBfbmlvYnM7
CiAgX19GSUxFICpfaW9iczsKfTsKIyAyODAgIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMwpz
dHJ1Y3QgX3JhbmQ0OCB7CiAgdW5zaWduZWQgc2hvcnQgX3NlZWRbM107CiAgdW5zaWduZWQgc2hv
cnQgX211bHRbM107CiAgdW5zaWduZWQgc2hvcnQgX2FkZDsKCgoKCn07CiMgNTEyICIvdXNyL2lu
Y2x1ZGUvc3lzL3JlZW50LmgiIDMKc3RydWN0IF9yZWVudAp7CiAgaW50IF9lcnJubzsKCgoKCiAg
X19GSUxFICpfc3RkaW4sICpfc3Rkb3V0LCAqX3N0ZGVycjsKCiAgaW50IF9pbmM7CiAgY2hhciBf
ZW1lcmdlbmN5WzI1XTsKCiAgaW50IF9jdXJyZW50X2NhdGVnb3J5OwogIGNvbnN0IGNoYXIgKl9j
dXJyZW50X2xvY2FsZTsKCiAgaW50IF9fc2RpZGluaXQ7CgogIHZvaWQgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgKCpfX2NsZWFudXApIChzdHJ1Y3QgX3JlZW50ICopOwoKCiAgc3RydWN0IF9C
aWdpbnQgKl9yZXN1bHQ7CiAgaW50IF9yZXN1bHRfazsKICBzdHJ1Y3QgX0JpZ2ludCAqX3A1czsK
ICBzdHJ1Y3QgX0JpZ2ludCAqKl9mcmVlbGlzdDsKCgogIGludCBfY3Z0bGVuOwogIGNoYXIgKl9j
dnRidWY7CgogIHVuaW9uCiAgICB7CiAgICAgIHN0cnVjdAogICAgICAgIHsKICAgICAgICAgIHVu
c2lnbmVkIGludCBfdW51c2VkX3JhbmQ7CiAgICAgICAgICBjaGFyICogX3N0cnRva19sYXN0Owog
ICAgICAgICAgY2hhciBfYXNjdGltZV9idWZbMjZdOwogICAgICAgICAgc3RydWN0IF9fdG0gX2xv
Y2FsdGltZV9idWY7CiAgICAgICAgICBpbnQgX2dhbW1hX3NpZ25nYW07CiAgICAgICAgICBfX2V4
dGVuc2lvbl9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfcmFuZF9uZXh0OwogICAgICAgICAgc3RydWN0
IF9yYW5kNDggX3I0ODsKICAgICAgICAgIF9tYnN0YXRlX3QgX21ibGVuX3N0YXRlOwogICAgICAg
ICAgX21ic3RhdGVfdCBfbWJ0b3djX3N0YXRlOwogICAgICAgICAgX21ic3RhdGVfdCBfd2N0b21i
X3N0YXRlOwogICAgICAgICAgY2hhciBfbDY0YV9idWZbOF07CiAgICAgICAgICBjaGFyIF9zaWdu
YWxfYnVmWzI0XTsKICAgICAgICAgIGludCBfZ2V0ZGF0ZV9lcnI7CiAgICAgICAgfSBfcmVlbnQ7
CgoKCiAgICAgIHN0cnVjdAogICAgICAgIHsKCiAgICAgICAgICB1bnNpZ25lZCBjaGFyICogX25l
eHRmWzMwXTsKICAgICAgICAgIHVuc2lnbmVkIGludCBfbm1hbGxvY1szMF07CiAgICAgICAgfSBf
dW51c2VkOwogICAgfSBfbmV3OwoKCiAgc3RydWN0IF9hdGV4aXQgKl9hdGV4aXQ7CiAgc3RydWN0
IF9hdGV4aXQgX2F0ZXhpdDA7CgoKICB2b2lkICgqKihfc2lnX2Z1bmMpKShpbnQpOwoKCgoKICBz
dHJ1Y3QgX2dsdWUgX19zZ2x1ZTsKICBfX0ZJTEUgX19zZlszXTsKfTsKIyA2ODggIi91c3IvaW5j
bHVkZS9zeXMvcmVlbnQuaCIgMwpleHRlcm4gc3RydWN0IF9yZWVudCAqX2ltcHVyZV9wdHIgOwoK
dm9pZCBfcmVjbGFpbV9yZWVudCAoc3RydWN0IF9yZWVudCAqKTsKIyA0NiAiL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjQgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIHNob3J0IGludCBfX2ludDE2X3Q7CnR5
cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CgoKCgoKdHlwZWRlZiBpbnQgX19p
bnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKCgoKCgpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgbG9uZyBsb25nIF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgbG9uZyBfX3VpbnQ2NF90OwojIDU5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzMuMi9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMKIyAxNDkgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy4yL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwojIDI5NiAiL3Vzci9saWIv
Z2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIHNo
b3J0IHVuc2lnbmVkIGludCB3Y2hhcl90OwojIDYwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDIgMwojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVzLmgiIDEgMwojIDEwICIvdXNyL2lu
Y2x1ZGUvbWFjaGluZS90eXBlcy5oIiAzCnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRl
ZiBpbnQgX19waWRfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fbG9m
Zl90OwojIDYxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDgyICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsKdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDsKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7
CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBjbG9j
a190OwoKCgoKdHlwZWRlZiBsb25nIHRpbWVfdDsKCgoKCnN0cnVjdCB0aW1lc3BlYyB7CiAgdGlt
ZV90IHR2X3NlYzsKICBsb25nIHR2X25zZWM7Cn07CgpzdHJ1Y3QgaXRpbWVyc3BlYyB7CiAgc3Ry
dWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKfTsK
Cgp0eXBlZGVmIGxvbmcgZGFkZHJfdDsKdHlwZWRlZiBjaGFyICogY2FkZHJfdDsKCgp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgaW5vX3Q7CiMgMTMwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIHZtX29mZnNldF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
dm1fc2l6ZV90OwoKCgp0eXBlZGVmIGNoYXIgaW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
dV9pbnQ4X3Q7CnR5cGVkZWYgc2hvcnQgaW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1
X2ludDE2X3Q7CnR5cGVkZWYgaW50IGludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50
MzJfdDsKdHlwZWRlZiBsb25nIGxvbmcgaW50NjRfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgdV9pbnQ2NF90Owp0eXBlZGVmIGludDMyX3QgcmVnaXN0ZXJfdDsKIyAxNjkgIi91c3IvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBwaWRfdDsKdHlwZWRlZiBsb25nIGtleV90
Owp0eXBlZGVmIF9zc2l6ZV90IHNzaXplX3Q7CgoKdHlwZWRlZiBjaGFyICogYWRkcl90Owp0eXBl
ZGVmIGludCBtb2RlX3Q7CiMgMTg4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBubGlua190OwojIDIxMCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAzCnR5cGVkZWYgbG9uZyBmZF9tYXNrOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3R5cGVzX2Zk
X3NldCB7CiAgICAgICAgZmRfbWFzayBmZHNfYml0c1soKCg2NCkrKCgoc2l6ZW9mIChmZF9tYXNr
KSAqIDgpKS0xKSkvKChzaXplb2YgKGZkX21hc2spICogOCkpKV07Cn0gX3R5cGVzX2ZkX3NldDsK
IyAyNDYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
Y2xvY2tpZF90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHRpbWVyX3Q7CgoKCgp0eXBlZGVm
IGxvbmcgdXNlY29uZHNfdDsKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXMuaCIgMSAz
CiMgMjYwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDM2NCAiL3Vzci9pbmNsdWRl
L3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2N5Z3dpbi90eXBlcy5oIiAxIDMKIyAy
MCAiL3Vzci9pbmNsdWRlL2N5Z3dpbi90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9z
eXNtYWNyb3MuaCIgMSAzCiMgMjEgIi91c3IvaW5jbHVkZS9jeWd3aW4vdHlwZXMuaCIgMiAzCgp0
eXBlZGVmIHN0cnVjdCB0aW1lc3BlYyB0aW1lc3BlY190LCB0aW1lc3RydWNfdDsKCnR5cGVkZWYg
bG9uZyBfX29mZjMyX3Q7CnR5cGVkZWYgbG9uZyBsb25nIF9fb2ZmNjRfdDsKCgoKdHlwZWRlZiBf
X29mZjMyX3Qgb2ZmX3Q7CgoKdHlwZWRlZiBzaG9ydCBfX2RldjE2X3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBfX2RldjMyX3Q7CgoKCnR5cGVkZWYgX19kZXYxNl90IGRldl90OwoKCnR5cGVkZWYg
bG9uZyBibGtzaXplX3Q7Cgp0eXBlZGVmIGxvbmcgX19ibGtjbnQzMl90Owp0eXBlZGVmIGxvbmcg
bG9uZyBfX2Jsa2NudDY0X3Q7CgoKCnR5cGVkZWYgX19ibGtjbnQzMl90IGJsa2NudF90OwoKCnR5
cGVkZWYgdW5zaWduZWQgc2hvcnQgX191aWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9f
Z2lkMTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdWlkMzJfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIF9fZ2lkMzJfdDsKCgoKCnR5cGVkZWYgX191aWQxNl90IHVpZF90Owp0eXBlZGVmIF9f
Z2lkMTZfdCBnaWRfdDsKCgoKCnR5cGVkZWYgdm9pZCAqcHRocmVhZF90Owp0eXBlZGVmIHZvaWQg
KnB0aHJlYWRfbXV0ZXhfdDsKCnR5cGVkZWYgdm9pZCAqcHRocmVhZF9rZXlfdDsKdHlwZWRlZiB2
b2lkICpwdGhyZWFkX2F0dHJfdDsKdHlwZWRlZiB2b2lkICpwdGhyZWFkX211dGV4YXR0cl90Owp0
eXBlZGVmIHZvaWQgKnB0aHJlYWRfY29uZGF0dHJfdDsKdHlwZWRlZiB2b2lkICpwdGhyZWFkX2Nv
bmRfdDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgcHRocmVhZF9tdXRleF90IG11dGV4OwogIGludCBz
dGF0ZTsKfQpwdGhyZWFkX29uY2VfdDsKdHlwZWRlZiB2b2lkICpwdGhyZWFkX3J3bG9ja190Owp0
eXBlZGVmIHZvaWQgKnB0aHJlYWRfcndsb2NrYXR0cl90OwojIDM2NSAiL3Vzci9pbmNsdWRlL3N5
cy90eXBlcy5oIiAyIDMKIyA0NyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgp0eXBlZGVm
IF9mcG9zX3QgZnBvc190Owp0eXBlZGVmIF9fRklMRSBGSUxFOwoKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL3N5cy9zdGRpby5oIiAxIDMKIyA1OCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDE2
MiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKRklMRSAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIHRtcGZpbGUgKHZvaWQpOwpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgdG1w
bmFtIChjaGFyICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZmNsb3NlIChGSUxF
ICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZmZsdXNoIChGSUxFICopOwpGSUxF
ICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZnJlb3BlbiAoY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICosIEZJTEUgKik7CnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc2V0YnVm
IChGSUxFICosIGNoYXIgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzZXR2YnVm
IChGSUxFICosIGNoYXIgKiwgaW50LCBzaXplX3QpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgZnByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBfX2F0dHJpYnV0
ZV9fKChfX2NkZWNsX18pKSBmc2NhbmYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcHJpbnRmIChjb25zdCBjaGFyICosIC4uLik7Cmlu
dCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzY2FuZiAoY29uc3QgY2hhciAqLCAuLi4pOwpp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3NjYW5mIChjb25zdCBjaGFyICosIGNvbnN0
IGNoYXIgKiwgLi4uKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHZmcHJpbnRmIChG
SUxFICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwppbnQgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgdnByaW50ZiAoY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB2c3ByaW50ZiAoY2hhciAqLCBjb25zdCBjaGFyICos
IF9fZ251Y192YV9saXN0KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZnZXRjIChG
SUxFICopOwpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZmdldHMgKGNoYXIgKiwg
aW50LCBGSUxFICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZnB1dGMgKGludCwg
RklMRSAqKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZwdXRzIChjb25zdCBjaGFy
ICosIEZJTEUgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBnZXRjIChGSUxFICop
OwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0Y2hhciAodm9pZCk7CmNoYXIgKiBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBnZXRzIChjaGFyICopOwppbnQgX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgcHV0YyAoaW50LCBGSUxFICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgcHV0Y2hhciAoaW50KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHB1
dHMgKGNvbnN0IGNoYXIgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB1bmdldGMg
KGludCwgRklMRSAqKTsKc2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZyZWFkICh2
b2lkICosIHNpemVfdCBfc2l6ZSwgc2l6ZV90IF9uLCBGSUxFICopOwpzaXplX3QgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgZndyaXRlIChjb25zdCB2b2lkICogLCBzaXplX3QgX3NpemUsIHNp
emVfdCBfbiwgRklMRSAqKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZnZXRwb3Mg
KEZJTEUgKiwgZnBvc190ICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZnNlZWsg
KEZJTEUgKiwgbG9uZywgaW50KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZzZXRw
b3MgKEZJTEUgKiwgY29uc3QgZnBvc190ICopOwpsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIGZ0ZWxsICggRklMRSAqKTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSByZXdp
bmQgKEZJTEUgKik7CnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgY2xlYXJlcnIgKEZJ
TEUgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBmZW9mIChGSUxFICopOwppbnQg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZmVycm9yIChGSUxFICopOwp2b2lkIF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIHBlcnJvciAoY29uc3QgY2hhciAqKTsKCkZJTEUgKiBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBmb3BlbiAoY29uc3QgY2hhciAqX25hbWUsIGNvbnN0IGNoYXIg
Kl90eXBlKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHNwcmludGYgKGNoYXIgKiwg
Y29uc3QgY2hhciAqLCAuLi4pOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcmVtb3Zl
IChjb25zdCBjaGFyICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcmVuYW1lIChj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIGFzcHJpbnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBfX2F0dHJpYnV0
ZV9fKChfX2NkZWNsX18pKSBmc2Vla28gKEZJTEUgKiwgb2ZmX3QsIGludCk7Cm9mZl90IF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIGZ0ZWxsbyAoIEZJTEUgKik7CmludCBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSB2ZmlwcmludGYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFf
bGlzdCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBpcHJpbnRmIChjb25zdCBjaGFy
ICosIC4uLik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBmaXByaW50ZiAoRklMRSAq
LCBjb25zdCBjaGFyICosIC4uLik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzaXBy
aW50ZiAoY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSB0ZW1wbmFtIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB2YXNwcmludGYgKGNoYXIgKiosIGNvbnN0IGNoYXIgKiwg
X19nbnVjX3ZhX2xpc3QpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgdnNucHJpbnRm
IChjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB2ZnNjYW5mIChGSUxFICosIGNvbnN0IGNoYXIgKiwgX19n
bnVjX3ZhX2xpc3QpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgdnNjYW5mIChjb25z
dCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IHZzc2NhbmYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7Cgpp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZmNsb3NlYWxsICh2b2lkKTsKaW50IF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIHNucHJpbnRmIChjaGFyICosIHNpemVfdCwgY29uc3QgY2hh
ciAqLCAuLi4pOwojIDIzMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKRklMRSAqIF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIGZkb3BlbiAoaW50LCBjb25zdCBjaGFyICopOwoKaW50IF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIGZpbGVubyAoRklMRSAqKTsKaW50IF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIGdldHcgKEZJTEUgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBwY2xvc2UgKEZJTEUgKik7CkZJTEUgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBwb3Bl
biAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgcHV0dyAoaW50LCBGSUxFICopOwp2b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IHNldGJ1ZmZlciAoRklMRSAqLCBjaGFyICosIGludCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2Nk
ZWNsX18pKSBzZXRsaW5lYnVmIChGSUxFICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgZ2V0Y191bmxvY2tlZCAoRklMRSAqKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpOwp2b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IGZsb2NrZmlsZSAoRklMRSAqKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZ0cnls
b2NrZmlsZSAoRklMRSAqKTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBmdW5sb2Nr
ZmlsZSAoRklMRSAqKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHB1dGNfdW5sb2Nr
ZWQgKGludCwgRklMRSAqKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHB1dGNoYXJf
dW5sb2NrZWQgKGludCk7CgoKCgoKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfYXNw
cmludGZfciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLik7Cmlu
dCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfZmNsb3NlYWxsX3IgKHN0cnVjdCBfcmVlbnQg
Kik7CkZJTEUgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfZmRvcGVuX3IgKHN0cnVjdCBf
cmVlbnQgKiwgaW50LCBjb25zdCBjaGFyICopOwpGSUxFICogX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgX2ZvcGVuX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2ZzY2FuZl9yIChzdHJ1Y3QgX3Jl
ZW50ICosIEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgX2dldGNoYXJfciAoc3RydWN0IF9yZWVudCAqKTsKY2hhciAqIF9fYXR0cmlidXRl
X18oKF9fY2RlY2xfXykpIF9nZXRzX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqKTsKaW50IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9pcHJpbnRmX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29u
c3QgY2hhciAqLCAuLi4pOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX21rc3RlbXBf
ciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICopOwpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgX21rdGVtcF9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKik7CnZvaWQgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgX3BlcnJvcl9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIg
Kik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfcHJpbnRmX3IgKHN0cnVjdCBfcmVl
bnQgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
X3B1dGNoYXJfciAoc3RydWN0IF9yZWVudCAqLCBpbnQpOwppbnQgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgX3B1dHNfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICopOwppbnQgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3JlbW92ZV9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0
IGNoYXIgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfcmVuYW1lX3IgKHN0cnVj
dCBfcmVlbnQgKiwgY29uc3QgY2hhciAqX29sZCwgY29uc3QgY2hhciAqX25ldyk7CgppbnQgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3NjYW5mX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3Qg
Y2hhciAqLCAuLi4pOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3NwcmludGZfciAo
c3RydWN0IF9yZWVudCAqLCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIF9zbnByaW50Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiwg
c2l6ZV90LCBjb25zdCBjaGFyICosIC4uLik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBfc3NjYW5mX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICos
IC4uLik7CmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfdGVtcG5hbV9yIChzdHJ1
Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKRklMRSAqIF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIF90bXBmaWxlX3IgKHN0cnVjdCBfcmVlbnQgKik7CmNoYXIgKiBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfdG1wbmFtX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hh
ciAqKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF92YXNwcmludGZfciAoc3RydWN0
IF9yZWVudCAqLCBjaGFyICoqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKaW50IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF92ZnByaW50Zl9yIChzdHJ1Y3QgX3JlZW50ICosIEZJ
TEUgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBfdnByaW50Zl9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKiwgX19n
bnVjX3ZhX2xpc3QpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3ZzcHJpbnRmX3Ig
KHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsK
aW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF92c25wcmludGZfciAoc3RydWN0IF9yZWVu
dCAqLCBjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfdmZzY2FuZl9yIChzdHJ1Y3QgX3JlZW50ICosIEZJ
TEUgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmludCBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBfdnNjYW5mX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCBfX2du
dWNfdmFfbGlzdCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfdnNzY2FuZl9yIChz
dHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlz
dCk7Cgpzc2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9fZ2V0ZGVsaW0gKGNoYXIg
KiosIHNpemVfdCAqLCBpbnQsIEZJTEUgKik7CnNzaXplX3QgX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgX19nZXRsaW5lIChjaGFyICoqLCBzaXplX3QgKiwgRklMRSAqKTsKIyAzMDkgIi91c3Iv
aW5jbHVkZS9zdGRpby5oIiAzCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfX3NyZ2V0
IChGSUxFICopOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX19zd2J1ZiAoaW50LCBG
SUxFICopOwoKCgoKCgpGSUxFICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBmdW5vcGVuIChj
b25zdCB2b2lkICogX2Nvb2tpZSwgaW50ICgqcmVhZGZuKSh2b2lkICogX2Nvb2tpZSwgY2hhciAq
X2J1ZiwgaW50IF9uKSwgaW50ICgqd3JpdGVmbikodm9pZCAqIF9jb29raWUsIGNvbnN0IGNoYXIg
Kl9idWYsIGludCBfbiksIGZwb3NfdCAoKnNlZWtmbikodm9pZCAqIF9jb29raWUsIGZwb3NfdCBf
b2ZmLCBpbnQgX3doZW5jZSksIGludCAoKmNsb3NlZm4pKHZvaWQgKiBfY29va2llKSk7CiMgMzM0
ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19zZ2V0YyhG
SUxFICpfX3ApCiAgewogICAgaW50IF9fYyA9ICgtLShfX3ApLT5fciA8IDAgPyBfX3NyZ2V0KF9f
cCkgOiAoaW50KSgqKF9fcCktPl9wKyspKTsKICAgIGlmICgoX19wLT5fZmxhZ3MgJiAweDQwMDAp
ICYmIChfX2MgPT0gJ1xyJykpCiAgICAgIHsKICAgICAgaW50IF9fYzIgPSAoLS0oX19wKS0+X3Ig
PCAwID8gX19zcmdldChfX3ApIDogKGludCkoKihfX3ApLT5fcCsrKSk7CiAgICAgIGlmIChfX2My
ID09ICdcbicpCiAgICAgICAgX19jID0gX19jMjsKICAgICAgZWxzZQogICAgICAgIHVuZ2V0Yyhf
X2MyLCBfX3ApOwogICAgICB9CiAgICByZXR1cm4gX19jOwogIH0KIyA0MTYgIi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAzCgojIDI0ICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMu
YyIgMgojIDEgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvYXMuaCIgMQojIDQwICIvc3JjL2JpbnV0
aWxzLTIuMTMvZ2FzL2FzLmgiCiMgMSAiY29uZmlnLmgiIDEKIyA0MSAiL3NyYy9iaW51dGlscy0y
LjEzL2dhcy9hcy5oIiAyCiMgMSAiL3NyYy9iaW51dGlscy0yLjEzL2luY2x1ZGUvYmluLWJ1Z3Mu
aCIgMQojIDQyICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2FzLmgiIDIKIyA3NyAiL3NyYy9iaW51
dGlscy0yLjEzL2dhcy9hcy5oIgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMTQg
Ii91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1j
eWd3aW4vMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE1ICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDIgMwoKCgoKCgoKdm9pZCAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIG1lbWNociAo
Y29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBtZW1jbXAgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkICogX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbWVtY3B5ICh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6
ZV90KTsKdm9pZCAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIG1lbW1vdmUgKHZvaWQgKiwg
Y29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
bWVtc2V0ICh2b2lkICosIGludCwgc2l6ZV90KTsKY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgc3RyY2F0IChjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKl9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIHN0cmNociAoY29uc3QgY2hhciAqLCBpbnQpOwppbnQgX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgc3RyY21wIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJjb2xsIChjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKik7CmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cmNweSAoY2hhciAqLCBj
b25zdCBjaGFyICopOwpzaXplX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RyY3NwbiAo
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBzdHJlcnJvciAoaW50KTsKc2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0
cmxlbiAoY29uc3QgY2hhciAqKTsKY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3Ry
bmNhdCAoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmludCBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBzdHJuY21wIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsK
Y2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RybmNweSAoY2hhciAqLCBjb25zdCBj
aGFyICosIHNpemVfdCk7CmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cnBicmsg
KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgc3RycmNociAoY29uc3QgY2hhciAqLCBpbnQpOwpzaXplX3QgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgc3Ryc3BuIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKl9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cnN0ciAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICopOwoKCmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cnRvayAoY2hhciAqLCBj
b25zdCBjaGFyICopOwoKCnNpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzdHJ4ZnJt
IChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKCgpjaGFyICpfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBzdHJ0b2tfciAoY2hhciAqLCBjb25zdCBjaGFyICosIGNoYXIgKiopOwoKaW50
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGJjbXAgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9p
ZCAqLCBzaXplX3QpOwp2b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGJjb3B5IChjb25z
dCB2b2lkICosIHZvaWQgKiwgc2l6ZV90KTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBiemVybyAodm9pZCAqLCBzaXplX3QpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
ZmZzIChpbnQpOwpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBpbmRleCAoY29uc3Qg
Y2hhciAqLCBpbnQpOwp2b2lkICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbWVtY2NweSAo
dm9pZCAqLCBjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKdm9pZCAqIF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIG1lbXBjcHkgKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwpjaGFy
ICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSByaW5kZXggKGNvbnN0IGNoYXIgKiwgaW50KTsK
aW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cmNhc2VjbXAgKGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqKTsKY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RyZHVwIChj
b25zdCBjaGFyICopOwpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfc3RyZHVwX3Ig
KHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgc3RybmR1cCAoY29uc3QgY2hhciAqLCBzaXplX3QpOwpjaGFyICpfX2F0dHJpYnV0
ZV9fKChfX2NkZWNsX18pKSBfc3RybmR1cF9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIg
Kiwgc2l6ZV90KTsKY2hhciAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RyZXJyb3JfciAo
aW50LCBjaGFyICosIHNpemVfdCk7CnNpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBz
dHJsY2F0IChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKc2l6ZV90IF9fYXR0cmlidXRl
X18oKF9fY2RlY2xfXykpIHN0cmxjcHkgKGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RybmNhc2VjbXAgKGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqLCBzaXplX3QpOwpzaXplX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
c3RybmxlbiAoY29uc3QgY2hhciAqLCBzaXplX3QpOwpjaGFyICpfX2F0dHJpYnV0ZV9fKChfX2Nk
ZWNsX18pKSBzdHJzZXAgKGNoYXIgKiosIGNvbnN0IGNoYXIgKik7CmNoYXIgKl9fYXR0cmlidXRl
X18oKF9fY2RlY2xfXykpIHN0cmx3ciAoY2hhciAqKTsKY2hhciAqX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgc3RydXByIChjaGFyICopOwoKCmNvbnN0IGNoYXIgKl9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIHN0cnNpZ25hbCAoaW50IF9fc2lnbm8pOwoKaW50IF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIHN0cnRvc2lnbm8gKGNvbnN0IGNoYXIgKl9fbmFtZSk7CiMgOTggIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMwoKIyA3OCAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9hcy5oIiAyCgoK
CgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyAxNCAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjIvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCiMgMTUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKIyAxICIv
dXNyL2luY2x1ZGUvbWFjaGluZS9zdGRsaWIuaCIgMSAzCiMgMTggIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMSAzCiMgMjAgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMiAzCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IHF1b3Q7CiAgaW50
IHJlbTsKfSBkaXZfdDsKCnR5cGVkZWYgc3RydWN0CnsKICBsb25nIHF1b3Q7CiAgbG9uZyByZW07
Cn0gbGRpdl90OwojIDQ1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIF9fYXR0cmli
dXRlX18oKGRsbGltcG9ydCkpIGludCBfX21iX2N1cl9tYXg7CgoKCnZvaWQgX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgYWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChub3JldHVybikpOwpp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgYWJzIChpbnQpOwppbnQgX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgYXRleGl0ICh2b2lkICgqX19mdW5jKSh2b2lkKSk7CmRvdWJsZSBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBhdG9mIChjb25zdCBjaGFyICpfX25wdHIpOwoKZmxvYXQg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgYXRvZmYgKGNvbnN0IGNoYXIgKl9fbnB0cik7Cgpp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgYXRvaSAoY29uc3QgY2hhciAqX19ucHRyKTsK
bG9uZyBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBhdG9sIChjb25zdCBjaGFyICpfX25wdHIp
Owp2b2lkICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgYnNlYXJjaCAoY29uc3Qgdm9pZCAq
IF9fa2V5LCBjb25zdCB2b2lkICogX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6
ZSwgaW50ICgqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9jb21wYXIpIChjb25zdCB2b2lk
ICosIGNvbnN0IHZvaWQgKikpOwoKCgoKdm9pZCAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IGNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpOwpkaXZfdCBfX2F0dHJpYnV0
ZV9fKChfX2NkZWNsX18pKSBkaXYgKGludCBfX251bWVyLCBpbnQgX19kZW5vbSk7CnZvaWQgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9f
ICgobm9yZXR1cm4pKTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBmcmVlICh2b2lk
ICopOwpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0ZW52IChjb25zdCBjaGFy
ICpfX3N0cmluZyk7CmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfZ2V0ZW52X3Ig
KHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqX19zdHJpbmcpOwpjaGFyICogX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgX2ZpbmRlbnYgKGNvbnN0IGNoYXIgKiwgaW50ICopOwpjaGFyICog
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2ZpbmRlbnZfciAoc3RydWN0IF9yZWVudCAqLCBj
b25zdCBjaGFyICosIGludCAqKTsKbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBsYWJz
IChsb25nKTsKbGRpdl90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGxkaXYgKGxvbmcgX19u
dW1lciwgbG9uZyBfX2Rlbm9tKTsKdm9pZCAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIG1h
bGxvYyAoc2l6ZV90IF9fc2l6ZSk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBtYmxl
biAoY29uc3QgY2hhciAqLCBzaXplX3QpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
X21ibGVuX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIF9tYnN0YXRl
X3QgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBtYnRvd2MgKHdjaGFyX3QgKiwg
Y29uc3QgY2hhciAqLCBzaXplX3QpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX21i
dG93Y19yIChzdHJ1Y3QgX3JlZW50ICosIHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3Qs
IF9tYnN0YXRlX3QgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB3Y3RvbWIgKGNo
YXIgKiwgd2NoYXJfdCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfd2N0b21iX3Ig
KHN0cnVjdCBfcmVlbnQgKiwgY2hhciAqLCB3Y2hhcl90LCBfbWJzdGF0ZV90ICopOwpzaXplX3Qg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbWJzdG93Y3MgKHdjaGFyX3QgKiwgY29uc3QgY2hh
ciAqLCBzaXplX3QpOwpzaXplX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX21ic3Rvd2Nz
X3IgKHN0cnVjdCBfcmVlbnQgKiwgd2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgX21i
c3RhdGVfdCAqKTsKc2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHdjc3RvbWJzIChj
aGFyICosIGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKc2l6ZV90IF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIF93Y3N0b21ic19yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKiwgY29uc3Qgd2No
YXJfdCAqLCBzaXplX3QsIF9tYnN0YXRlX3QgKik7CgoKaW50IF9fYXR0cmlidXRlX18oKF9fY2Rl
Y2xfXykpIG1rc3RlbXAgKGNoYXIgKik7CmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBta3RlbXAgKGNoYXIgKik7CgoKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBxc29y
dCAodm9pZCAqIF9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIGludCgqX2Nv
bXBhcikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKaW50IF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIHJhbmQgKHZvaWQpOwp2b2lkICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
cmVhbGxvYyAodm9pZCAqIF9fciwgc2l6ZV90IF9fc2l6ZSk7CnZvaWQgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgc3JhbmQgKHVuc2lnbmVkIF9fc2VlZCk7CmRvdWJsZSBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBzdHJ0b2QgKGNvbnN0IGNoYXIgKl9fbiwgY2hhciAqKl9fZW5kX1BUUik7
CmRvdWJsZSBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfc3RydG9kX3IgKHN0cnVjdCBfcmVl
bnQgKixjb25zdCBjaGFyICpfX24sIGNoYXIgKipfX2VuZF9QVFIpOwoKZmxvYXQgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgc3RydG9kZiAoY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRf
UFRSKTsKCmxvbmcgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RydG9sIChjb25zdCBjaGFy
ICpfX24sIGNoYXIgKipfX2VuZF9QVFIsIGludCBfX2Jhc2UpOwpsb25nIF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIF9zdHJ0b2xfciAoc3RydWN0IF9yZWVudCAqLGNvbnN0IGNoYXIgKl9fbiwg
Y2hhciAqKl9fZW5kX1BUUiwgaW50IF9fYmFzZSk7CnVuc2lnbmVkIGxvbmcgX19hdHRyaWJ1dGVf
XygoX19jZGVjbF9fKSkgc3RydG91bCAoY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRS
LCBpbnQgX19iYXNlKTsKdW5zaWduZWQgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBf
c3RydG91bF9yIChzdHJ1Y3QgX3JlZW50ICosY29uc3QgY2hhciAqX19uLCBjaGFyICoqX19lbmRf
UFRSLCBpbnQgX19iYXNlKTsKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzeXN0ZW0g
KGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsKCgpsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IGE2NGwgKGNvbnN0IGNoYXIgKl9faW5wdXQpOwpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgbDY0YSAobG9uZyBfX2lucHV0KTsKY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIF9sNjRhX3IgKHN0cnVjdCBfcmVlbnQgKixsb25nIF9faW5wdXQpOwppbnQgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgb25fZXhpdCAodm9pZCAoKl9fZnVuYykoaW50LCB2b2lkICopLHZv
aWQgKiBfX2FyZyk7CnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX0V4aXQgKGludCBf
X3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7CmludCBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBwdXRlbnYgKGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsKaW50IF9fYXR0cmlidXRl
X18oKF9fY2RlY2xfXykpIF9wdXRlbnZfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICpf
X3N0cmluZyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzZXRlbnYgKGNvbnN0IGNo
YXIgKl9fc3RyaW5nLCBjb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQgX19vdmVyd3JpdGUpOwppbnQg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3NldGVudl9yIChzdHJ1Y3QgX3JlZW50ICosIGNv
bnN0IGNoYXIgKl9fc3RyaW5nLCBjb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQgX19vdmVyd3JpdGUp
OwoKY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdjdnQgKGRvdWJsZSxpbnQsY2hh
ciAqKTsKY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdjdnRmIChmbG9hdCxpbnQs
Y2hhciAqKTsKY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZjdnQgKGRvdWJsZSxp
bnQsaW50ICosaW50ICopOwpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZmN2dGYg
KGZsb2F0LGludCxpbnQgKixpbnQgKik7CmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBlY3Z0IChkb3VibGUsaW50LGludCAqLGludCAqKTsKY2hhciAqIF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIGVjdnRidWYgKGRvdWJsZSwgaW50LCBpbnQqLCBpbnQqLCBjaGFyICopOwpjaGFy
ICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZmN2dGJ1ZiAoZG91YmxlLCBpbnQsIGludCos
IGludCosIGNoYXIgKik7CmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBlY3Z0ZiAo
ZmxvYXQsaW50LGludCAqLGludCAqKTsKY2hhciAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IGR0b2EgKGRvdWJsZSwgaW50LCBpbnQsIGludCAqLCBpbnQqLCBjaGFyKiopOwppbnQgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgcmFuZF9yICh1bnNpZ25lZCAqX19zZWVkKTsKCmRvdWJsZSBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBkcmFuZDQ4ICh2b2lkKTsKZG91YmxlIF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIF9kcmFuZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKik7CmRvdWJsZSBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwpk
b3VibGUgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2VyYW5kNDhfciAoc3RydWN0IF9yZWVu
dCAqLCB1bnNpZ25lZCBzaG9ydCBbM10pOwpsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IFszXSk7CmxvbmcgX19hdHRyaWJ1dGVfXygoX19jZGVj
bF9fKSkgX2pyYW5kNDhfciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBbM10pOwp2
b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IFs3
XSk7CnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2xjb25nNDhfciAoc3RydWN0IF9y
ZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBbN10pOwpsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIGxyYW5kNDggKHZvaWQpOwpsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9scmFu
ZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKik7CmxvbmcgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
bXJhbmQ0OCAodm9pZCk7CmxvbmcgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX21yYW5kNDhf
ciAoc3RydWN0IF9yZWVudCAqKTsKbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBucmFu
ZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwpsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IF9ucmFuZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKiwgdW5zaWduZWQgc2hvcnQgWzNdKTsKdW5zaWdu
ZWQgc2hvcnQgKgogICAgICAgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc2VlZDQ4ICh1bnNp
Z25lZCBzaG9ydCBbM10pOwp1bnNpZ25lZCBzaG9ydCAqCiAgICAgICBfX2F0dHJpYnV0ZV9fKChf
X2NkZWNsX18pKSBfc2VlZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKiwgdW5zaWduZWQgc2hvcnQgWzNd
KTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzcmFuZDQ4IChsb25nKTsKdm9pZCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfc3JhbmQ0OF9yIChzdHJ1Y3QgX3JlZW50ICosIGxv
bmcpOwpsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3RydG9sbCAoY29uc3Qg
Y2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKbG9uZyBsb25nIF9fYXR0
cmlidXRlX18oKF9fY2RlY2xfXykpIF9zdHJ0b2xsX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3Qg
Y2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKdW5zaWduZWQgbG9uZyBs
b25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN0cnRvdWxsIChjb25zdCBjaGFyICpfX24s
IGNoYXIgKipfX2VuZF9QVFIsIGludCBfX2Jhc2UpOwp1bnNpZ25lZCBsb25nIGxvbmcgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgX3N0cnRvdWxsX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3Qg
Y2hhciAqX19uLCBjaGFyICoqX19lbmRfUFRSLCBpbnQgX19iYXNlKTsKCgoKCmNoYXIgKiBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSByZWFscGF0aCAoY29uc3QgY2hhciAqLCBjaGFyICopOwp2
b2lkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHVuc2V0ZW52IChjb25zdCBjaGFyICpfX3N0
cmluZyk7CnZvaWQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX3Vuc2V0ZW52X3IgKHN0cnVj
dCBfcmVlbnQgKiwgY29uc3QgY2hhciAqX19zdHJpbmcpOwppbnQgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgcmFuZG9tICh2b2lkKTsKbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBz
cmFuZG9tICh1bnNpZ25lZCBfX3NlZWQpOwpjaGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgcHRzbmFtZSAoaW50KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdyYW50cHQg
KGludCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB1bmxvY2twdCAoaW50KTsKCgoK
CmNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfZHRvYV9yIChzdHJ1Y3QgX3JlZW50
ICosIGRvdWJsZSwgaW50LCBpbnQsIGludCAqLCBpbnQqLCBjaGFyKiopOwoKCgoKCgoKaW50IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9zeXN0ZW1fciAoc3RydWN0IF9yZWVudCAqLCBjb25z
dCBjaGFyICopOwoKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfX2VwcmludGYgKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKik7CiMg
MjA5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCiMgODUgIi9zcmMvYmludXRpbHMtMi4xMy9n
YXMvYXMuaCIgMgoKCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKCgoKCgojIDEgIi91
c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDEgMwojIDEzICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0
ZC5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8zLjIvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCiMgMTQgIi91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDIgMwoKZXh0ZXJu
IGNoYXIgKiplbnZpcm9uOwoKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfZXhpdCAo
aW50IF9fc3RhdHVzICkgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7CgppbnQgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgYWNjZXNzIChjb25zdCBjaGFyICpfX3BhdGgsIGludCBfX2Ftb2Rl
ICk7CnVuc2lnbmVkIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGFsYXJtICh1bnNpZ25lZCBf
X3NlY3MgKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGNoZGlyIChjb25zdCBjaGFy
ICpfX3BhdGggKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGNobW9kIChjb25zdCBj
aGFyICpfX3BhdGgsIG1vZGVfdCBfX21vZGUgKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIGNob3duIChjb25zdCBjaGFyICpfX3BhdGgsIHVpZF90IF9fb3duZXIsIGdpZF90IF9fZ3Jv
dXAgKTsKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBjaHJvb3QgKGNvbnN0IGNoYXIg
Kl9fcGF0aCApOwoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGNsb3NlIChpbnQgX19m
aWxkZXMgKTsKY2hhciBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSAqY3Rlcm1pZCAoY2hhciAq
X19zICk7CmNoYXIgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgKmN1c2VyaWQgKGNoYXIgKl9f
cyApOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZHVwIChpbnQgX19maWxkZXMgKTsK
aW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGR1cDIgKGludCBfX2ZpbGRlcywgaW50IF9f
ZmlsZGVzMiApOwoKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBlbmR1c2Vyc2hlbGwg
KHZvaWQpOwoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGV4ZWNsIChjb25zdCBjaGFy
ICpfX3BhdGgsIGNvbnN0IGNoYXIgKiwgLi4uICk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBleGVjbGUgKGNvbnN0IGNoYXIgKl9fcGF0aCwgY29uc3QgY2hhciAqLCAuLi4gKTsKaW50
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGV4ZWNscCAoY29uc3QgY2hhciAqX19maWxlLCBj
b25zdCBjaGFyICosIC4uLiApOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZXhlY3Yg
KGNvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqIGNvbnN0IF9fYXJndltdICk7CmludCBfX2F0dHJp
YnV0ZV9fKChfX2NkZWNsX18pKSBleGVjdmUgKGNvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqIGNv
bnN0IF9fYXJndltdLCBjaGFyICogY29uc3QgX19lbnZwW10gKTsKaW50IF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIGV4ZWN2cCAoY29uc3QgY2hhciAqX19maWxlLCBjaGFyICogY29uc3QgX19h
cmd2W10gKTsKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBmY2hkaXIgKGludCBfX2Zp
bGRlcyk7CgppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZmNobW9kIChpbnQgX19maWxk
ZXMsIG1vZGVfdCBfX21vZGUgKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZjaG93
biAoaW50IF9fZmlsZGVzLCB1aWRfdCBfX293bmVyLCBnaWRfdCBfX2dyb3VwICk7CnBpZF90IF9f
YXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGZvcmsgKHZvaWQgKTsKbG9uZyBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBmcGF0aGNvbmYgKGludCBfX2ZkLCBpbnQgX19uYW1lICk7CmludCBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBmc3luYyAoaW50IF9fZmQpOwpjaGFyIF9fYXR0cmlidXRl
X18oKF9fY2RlY2xfXykpICpnZXRjd2QgKGNoYXIgKl9fYnVmLCBzaXplX3QgX19zaXplICk7Cgpp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0ZG9tYWlubmFtZSAoY2hhciAqX19uYW1l
LCBzaXplX3QgX19sZW4pOwoKZ2lkX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0ZWdp
ZCAodm9pZCApOwp1aWRfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBnZXRldWlkICh2b2lk
ICk7CmdpZF90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdldGdpZCAodm9pZCApOwppbnQg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0Z3JvdXBzIChpbnQgX19naWRzZXRzaXplLCBn
aWRfdCBfX2dyb3VwbGlzdFtdICk7CmNoYXIgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgKmdl
dGxvZ2luICh2b2lkICk7CgppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0bG9naW5f
ciAoY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVzaXplKTsKCmNoYXIgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgKmdldHBhc3MgKF9fY29uc3QgY2hhciAqX19wcm9tcHQpOwpzaXplX3QgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0cGFnZXNpemUgKHZvaWQpOwpwaWRfdCBfX2F0dHJpYnV0
ZV9fKChfX2NkZWNsX18pKSBnZXRwZ2lkIChwaWRfdCk7CnBpZF90IF9fYXR0cmlidXRlX18oKF9f
Y2RlY2xfXykpIGdldHBncnAgKHZvaWQgKTsKcGlkX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgZ2V0cGlkICh2b2lkICk7CnBpZF90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdldHBw
aWQgKHZvaWQgKTsKCnBpZF90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGdldHNpZCAocGlk
X3QpOwoKdWlkX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0dWlkICh2b2lkICk7Cgpj
aGFyICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0dXNlcnNoZWxsICh2b2lkKTsKY2hh
ciBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSAqZ2V0d2QgKGNoYXIgKl9fYnVmICk7CmludCBf
X2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBpcnVzZXJvayAodW5zaWduZWQgbG9uZyByYWRkciwg
aW50IHN1cGVydXNlciwgY29uc3QgY2hhciAqcnVzZXIsIGNvbnN0IGNoYXIgKmx1c2VyKTsKCmlu
dCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBpc2F0dHkgKGludCBfX2ZpbGRlcyApOwppbnQg
X19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbGNob3duIChjb25zdCBjaGFyICpfX3BhdGgsIHVp
ZF90IF9fb3duZXIsIGdpZF90IF9fZ3JvdXAgKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xf
XykpIGxpbmsgKGNvbnN0IGNoYXIgKl9fcGF0aDEsIGNvbnN0IGNoYXIgKl9fcGF0aDIgKTsKaW50
IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIG5pY2UgKGludCBfX25pY2VfdmFsdWUgKTsKb2Zm
X3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgbHNlZWsgKGludCBfX2ZpbGRlcywgb2ZmX3Qg
X19vZmZzZXQsIGludCBfX3doZW5jZSApOwpsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykp
IHBhdGhjb25mIChjb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUgKTsKaW50IF9fYXR0cmli
dXRlX18oKF9fY2RlY2xfXykpIHBhdXNlICh2b2lkICk7CgppbnQgX19hdHRyaWJ1dGVfXygoX19j
ZGVjbF9fKSkgcHRocmVhZF9hdGZvcmsgKHZvaWQgKCopKHZvaWQpLCB2b2lkICgqKSh2b2lkKSwg
dm9pZCAoKikodm9pZCkpOwoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHBpcGUgKGlu
dCBfX2ZpbGRlc1syXSApOwpzc2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHByZWFk
IChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcywgb2ZmX3QgX19vZmZzZXQp
Owpzc2l6ZV90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHB3cml0ZSAoaW50IF9fZmQsIGNv
bnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsIG9mZl90IF9fb2Zmc2V0KTsKX3NzaXpl
X3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVm
LCBzaXplX3QgX19uYnl0ZSApOwoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHJldm9r
ZSAoY2hhciAqcGF0aCk7CgppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgcm1kaXIgKGNv
bnN0IGNoYXIgKl9fcGF0aCApOwoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHJ1c2Vy
b2sgKGNvbnN0IGNoYXIgKnJob3N0LCBpbnQgc3VwZXJ1c2VyLCBjb25zdCBjaGFyICpydXNlciwg
Y29uc3QgY2hhciAqbHVzZXIpOwoKdm9pZCAqIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHNi
cmsgKHB0cmRpZmZfdCBfX2luY3IpOwoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHNl
dGVnaWQgKGdpZF90IF9fZ2lkICk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzZXRl
dWlkICh1aWRfdCBfX3VpZCApOwoKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHNldGdp
ZCAoZ2lkX3QgX19naWQgKTsKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzZXRncm91
cHMgKGludCBuZ3JvdXBzLCBjb25zdCBnaWRfdCAqZ3JvdXBsaXN0ICk7CgppbnQgX19hdHRyaWJ1
dGVfXygoX19jZGVjbF9fKSkgc2V0cGdpZCAocGlkX3QgX19waWQsIHBpZF90IF9fcGdpZCApOwpp
bnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc2V0cGdycCAodm9pZCApOwpwaWRfdCBfX2F0
dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBzZXRzaWQgKHZvaWQgKTsKaW50IF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIHNldHVpZCAodWlkX3QgX191aWQgKTsKCnZvaWQgX19hdHRyaWJ1dGVfXygo
X19jZGVjbF9fKSkgc2V0dXNlcnNoZWxsICh2b2lkKTsKCnVuc2lnbmVkIF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIHNsZWVwICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzICk7CnZvaWQgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgc3dhYiAoY29uc3Qgdm9pZCAqLCB2b2lkICosIHNzaXplX3Qp
Owpsb25nIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHN5c2NvbmYgKGludCBfX25hbWUgKTsK
cGlkX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgdGNnZXRwZ3JwIChpbnQgX19maWxkZXMg
KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHRjc2V0cGdycCAoaW50IF9fZmlsZGVz
LCBwaWRfdCBfX3BncnBfaWQgKTsKY2hhciBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSAqdHR5
bmFtZSAoaW50IF9fZmlsZGVzICk7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB1bmxp
bmsgKGNvbnN0IGNoYXIgKl9fcGF0aCApOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkg
dmhhbmd1cCAodm9pZCApOwpfc3NpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSB3cml0
ZSAoaW50IF9fZmQsIGNvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZSApOwoKZXh0ZXJu
IGNoYXIgKm9wdGFyZzsKZXh0ZXJuIGludCBvcHRpbmQsIG9wdGVyciwgb3B0b3B0OwppbnQgZ2V0
b3B0KGludCwgY2hhciAqIGNvbnN0IFtdLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IG9wdHJl
c2V0OwoKCnBpZF90IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHZmb3JrICh2b2lkICk7Cgpl
eHRlcm4gY2hhciAqc3Vib3B0YXJnOwppbnQgZ2V0c3Vib3B0KGNoYXIgKiosIGNoYXIgKiBjb25z
dCAqLCBjaGFyICoqKTsKCgoKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfY2xvc2Ug
KGludCBfX2ZpbGRlcyApOwpwaWRfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfZm9yayAo
dm9pZCApOwpwaWRfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfZ2V0cGlkICh2b2lkICk7
CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfbGluayAoY29uc3QgY2hhciAqX19wYXRo
MSwgY29uc3QgY2hhciAqX19wYXRoMiApOwpvZmZfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18p
KSBfbHNlZWsgKGludCBfX2ZpbGRlcywgb2ZmX3QgX19vZmZzZXQsIGludCBfX3doZW5jZSApOwpf
c3NpemVfdCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBfcmVhZCAoaW50IF9fZmQsIHZvaWQg
Kl9fYnVmLCBzaXplX3QgX19uYnl0ZSApOwp2b2lkICogX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgX3NicmsgKHB0cmRpZmZfdCBfX2luY3IpOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9f
KSkgX3VubGluayAoY29uc3QgY2hhciAqX19wYXRoICk7Cl9zc2l6ZV90IF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIF93cml0ZSAoaW50IF9fZmQsIGNvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3Qg
X19uYnl0ZSApOwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2V4ZWN2ZSAoY29uc3Qg
Y2hhciAqX19wYXRoLCBjaGFyICogY29uc3QgX19hcmd2W10sIGNoYXIgKiBjb25zdCBfX2VudnBb
XSApOwoKCmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNsX18pKSBnZXRkdGFibGVzaXplICh2b2lk
KTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHNldGR0YWJsZXNpemUgKGludCk7CnVz
ZWNvbmRzX3QgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgdWFsYXJtICh1c2Vjb25kc190IF9f
dXNlY29uZHMsIHVzZWNvbmRzX3QgX19pbnRlcnZhbCk7CnVuc2lnbmVkIF9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIHVzbGVlcCAodW5zaWduZWQgaW50IF9fdXNlY29uZHMpOwppbnQgX19hdHRy
aWJ1dGVfXygoX19jZGVjbF9fKSkgZnRydW5jYXRlIChpbnQgX19mZCwgb2ZmX3QgX19sZW5ndGgp
OwppbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgdHJ1bmNhdGUgKGNvbnN0IGNoYXIgKiwg
b2ZmX3QgX19sZW5ndGgpOwoKCiBpbnQgX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgZ2V0aG9z
dG5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKTsKCmNoYXIgKiBfX2F0dHJpYnV0ZV9f
KChfX2NkZWNsX18pKSBta3RlbXAgKGNoYXIgKik7CmludCBfX2F0dHJpYnV0ZV9fKChfX2NkZWNs
X18pKSBzeW5jICh2b2lkKTsKaW50IF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIHJlYWRsaW5r
IChjb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKl9fYnVmLCBpbnQgX19idWZsZW4pOwppbnQgX19h
dHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgc3ltbGluayAoY29uc3QgY2hhciAqX19uYW1lMSwgY29u
c3QgY2hhciAqX19uYW1lMik7CiMgNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCiMgMSAi
L3NyYy9iaW51dGlscy0yLjEzL2luY2x1ZGUvZ2V0b3B0LmgiIDEgMwojIDM2ICIvc3JjL2JpbnV0
aWxzLTIuMTMvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gY2hhciAqb3B0YXJnOwojIDUwICIv
c3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IG9wdGluZDsK
CgoKCmV4dGVybiBpbnQgb3B0ZXJyOwoKCgpleHRlcm4gaW50IG9wdG9wdDsKIyA4MiAiL3NyYy9i
aW51dGlscy0yLjEzL2luY2x1ZGUvZ2V0b3B0LmgiIDMKc3RydWN0IG9wdGlvbgp7CgogIGNvbnN0
IGNoYXIgKm5hbWU7CgoKCgoKICBpbnQgaGFzX2FyZzsKICBpbnQgKmZsYWc7CiAgaW50IHZhbDsK
fTsKIyAxMTUgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBp
bnQgZ2V0b3B0ICgpOwoKCgpleHRlcm4gaW50IGdldG9wdF9sb25nIChpbnQgYXJnYywgY2hhciAq
Y29uc3QgKmFyZ3YsIGNvbnN0IGNoYXIgKnNob3J0b3B0cywKICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqbG9uZ29wdHMsIGludCAqbG9uZ2luZCk7CmV4dGVybiBp
bnQgZ2V0b3B0X2xvbmdfb25seSAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0b3B0cywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpsb25nb3B0cywgaW50ICpsb25n
aW5kKTsKCgpleHRlcm4gaW50IF9nZXRvcHRfaW50ZXJuYWwgKGludCBhcmdjLCBjaGFyICpjb25z
dCAqYXJndiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzaG9ydG9w
dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqbG9u
Z29wdHMsIGludCAqbG9uZ2luZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbG9u
Z19vbmx5KTsKIyA5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwojIDg4ICIvc3JjL2JpbnV0
aWxzLTIuMTMvZ2FzL2FzLmgiIDIKIyAxMzAgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvYXMuaCIK
IyAxICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9hbnNpZGVjbC5oIiAxCiMgMTMxICIvc3Jj
L2JpbnV0aWxzLTIuMTMvZ2FzL2FzLmgiIDIKCiMgMSAiLi4vYmZkL2JmZC5oIiAxCiMgMzcgIi4u
L2JmZC9iZmQuaCIKIyAxICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9zeW1jYXQuaCIgMQoj
IDM4ICIuLi9iZmQvYmZkLmgiIDIKIyA4MSAiLi4vYmZkL2JmZC5oIgp0eXBlZGVmIHN0cnVjdCBf
YmZkIGJmZDsKIyAxMTQgIi4uL2JmZC9iZmQuaCIKdHlwZWRlZiBlbnVtIGJmZF9ib29sZWFuIHtm
YWxzZSwgdHJ1ZX0gYm9vbGVhbjsKIyAxNzEgIi4uL2JmZC9iZmQuaCIKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGJmZF92bWE7CgoKCgoKdHlwZWRlZiBsb25nIGJmZF9zaWduZWRfdm1hOwoKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIHN5bXZhbHVlOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgYmZkX3NpemVf
dHlwZTsKIyAxOTYgIi4uL2JmZC9iZmQuaCIKdHlwZWRlZiBiZmRfc2lnbmVkX3ZtYSBmaWxlX3B0
cjsKdHlwZWRlZiBiZmRfdm1hIHVmaWxlX3B0cjsKCmV4dGVybiB2b2lkIGJmZF9zcHJpbnRmX3Zt
YSAoYmZkICosIGNoYXIgKiwgYmZkX3ZtYSk7CmV4dGVybiB2b2lkIGJmZF9mcHJpbnRmX3ZtYSAo
YmZkICosIHZvaWQgKiwgYmZkX3ZtYSk7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBmbGFnd29y
ZDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGJmZF9ieXRlOwoKCgp0eXBlZGVmIGVudW0gYmZkX2Zv
cm1hdAp7CiAgYmZkX3Vua25vd24gPSAwLAogIGJmZF9vYmplY3QsCiAgYmZkX2FyY2hpdmUsCiAg
YmZkX2NvcmUsCiAgYmZkX3R5cGVfZW5kCn0KYmZkX2Zvcm1hdDsKIyAyODAgIi4uL2JmZC9iZmQu
aCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHN5bWluZGV4OwoKCnR5cGVkZWYgY29uc3Qgc3RydWN0
IHJlbG9jX2hvd3RvX3N0cnVjdCByZWxvY19ob3d0b190eXBlOwojIDMwMiAiLi4vYmZkL2JmZC5o
Igp0eXBlZGVmIHN0cnVjdCBjYXJzeW0KewogIGNoYXIgKm5hbWU7CiAgZmlsZV9wdHIgZmlsZV9v
ZmZzZXQ7Cn0KY2Fyc3ltOwoKCgpzdHJ1Y3Qgb3JsCnsKICBjaGFyICoqbmFtZTsKICB1bmlvbgog
IHsKICAgIGZpbGVfcHRyIHBvczsKICAgIGJmZCAqYWJmZDsKICB9IHU7CiAgaW50IG5hbWlkeDsK
fTsKCgp0eXBlZGVmIHN0cnVjdCBsaW5lbm9fY2FjaGVfZW50cnkKewogIHVuc2lnbmVkIGludCBs
aW5lX251bWJlcjsKICB1bmlvbgogIHsKICAgIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKnN5
bTsKICAgIGJmZF92bWEgb2Zmc2V0OwogIH0gdTsKfQphbGVudDsKCgoKCgoKdHlwZWRlZiBzdHJ1
Y3Qgc2VjICpzZWNfcHRyOwojIDM1OSAiLi4vYmZkL2JmZC5oIgp0eXBlZGVmIHN0cnVjdCBzdGF0
IHN0YXRfdHlwZTsKCnR5cGVkZWYgZW51bSBiZmRfcHJpbnRfc3ltYm9sCnsKICBiZmRfcHJpbnRf
c3ltYm9sX25hbWUsCiAgYmZkX3ByaW50X3N5bWJvbF9tb3JlLAogIGJmZF9wcmludF9zeW1ib2xf
YWxsCn0gYmZkX3ByaW50X3N5bWJvbF90eXBlOwoKCgp0eXBlZGVmIHN0cnVjdCBfc3ltYm9sX2lu
Zm8KewogIHN5bXZhbHVlIHZhbHVlOwogIGNoYXIgdHlwZTsKICBjb25zdCBjaGFyICpuYW1lOwog
IHVuc2lnbmVkIGNoYXIgc3RhYl90eXBlOwogIGNoYXIgc3RhYl9vdGhlcjsKICBzaG9ydCBzdGFi
X2Rlc2M7CiAgY29uc3QgY2hhciAqc3RhYl9uYW1lOwp9IHN5bWJvbF9pbmZvOwoKCgpleHRlcm4g
Y29uc3QgY2hhciAqYmZkX2dldF9zdGFiX25hbWUgKGludCk7CgoKCgoKCnN0cnVjdCBiZmRfaGFz
aF9lbnRyeQp7CgogIHN0cnVjdCBiZmRfaGFzaF9lbnRyeSAqbmV4dDsKCiAgY29uc3QgY2hhciAq
c3RyaW5nOwoKCiAgdW5zaWduZWQgbG9uZyBoYXNoOwp9OwoKCgpzdHJ1Y3QgYmZkX2hhc2hfdGFi
bGUKewoKICBzdHJ1Y3QgYmZkX2hhc2hfZW50cnkgKip0YWJsZTsKCiAgdW5zaWduZWQgaW50IHNp
emU7CgoKCgoKCgogIHN0cnVjdCBiZmRfaGFzaF9lbnRyeSAqKCpuZXdmdW5jKSAoc3RydWN0IGJm
ZF9oYXNoX2VudHJ5ICosIHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBjb25zdCBjaGFyICopOwoK
CgoKICB2b2lkICogbWVtb3J5Owp9OwoKCmV4dGVybiBib29sZWFuIGJmZF9oYXNoX3RhYmxlX2lu
aXQKICAoc3RydWN0IGJmZF9oYXNoX3RhYmxlICosIHN0cnVjdCBiZmRfaGFzaF9lbnRyeSAqKCop
IChzdHJ1Y3QgYmZkX2hhc2hfZW50cnkgKiwgc3RydWN0IGJmZF9oYXNoX3RhYmxlICosIGNvbnN0
IGNoYXIgKikpOwoKCgoKCmV4dGVybiBib29sZWFuIGJmZF9oYXNoX3RhYmxlX2luaXRfbgogIChz
dHJ1Y3QgYmZkX2hhc2hfdGFibGUgKiwgc3RydWN0IGJmZF9oYXNoX2VudHJ5ICooKikgKHN0cnVj
dCBiZmRfaGFzaF9lbnRyeSAqLCBzdHJ1Y3QgYmZkX2hhc2hfdGFibGUgKiwgY29uc3QgY2hhciAq
KSwgdW5zaWduZWQgaW50IHNpemUpOwoKCgoKCgpleHRlcm4gdm9pZCBiZmRfaGFzaF90YWJsZV9m
cmVlIChzdHJ1Y3QgYmZkX2hhc2hfdGFibGUgKik7CgoKCgoKZXh0ZXJuIHN0cnVjdCBiZmRfaGFz
aF9lbnRyeSAqYmZkX2hhc2hfbG9va3VwCiAgKHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBjb25z
dCBjaGFyICosIGJvb2xlYW4gY3JlYXRlLCBib29sZWFuIGNvcHkpOwoKCgpleHRlcm4gdm9pZCBi
ZmRfaGFzaF9yZXBsYWNlCiAgKHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBzdHJ1Y3QgYmZkX2hh
c2hfZW50cnkgKm9sZCwgc3RydWN0IGJmZF9oYXNoX2VudHJ5ICpudyk7CgoKCmV4dGVybiBzdHJ1
Y3QgYmZkX2hhc2hfZW50cnkgKmJmZF9oYXNoX25ld2Z1bmMKICAoc3RydWN0IGJmZF9oYXNoX2Vu
dHJ5ICosIHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBjb25zdCBjaGFyICopOwoKCgpleHRlcm4g
dm9pZCAqIGJmZF9oYXNoX2FsbG9jYXRlIChzdHJ1Y3QgYmZkX2hhc2hfdGFibGUgKiwgdW5zaWdu
ZWQgaW50KTsKCgoKCgpleHRlcm4gdm9pZCBiZmRfaGFzaF90cmF2ZXJzZSAoc3RydWN0IGJmZF9o
YXNoX3RhYmxlICosIGJvb2xlYW4gKCopIChzdHJ1Y3QgYmZkX2hhc2hfZW50cnkgKiwgdm9pZCAq
KSwgdm9pZCAqIGluZm8pOwojIDQ3OSAiLi4vYmZkL2JmZC5oIgpleHRlcm4gYmZkX3NpemVfdHlw
ZSBiZmRfYnJlYWQgKHZvaWQgKiwgYmZkX3NpemVfdHlwZSwgYmZkICopOwpleHRlcm4gYmZkX3Np
emVfdHlwZSBiZmRfYndyaXRlIChjb25zdCB2b2lkICosIGJmZF9zaXplX3R5cGUsIGJmZCAqKTsK
ZXh0ZXJuIGludCBiZmRfc2VlayAoYmZkICosIGZpbGVfcHRyLCBpbnQpOwpleHRlcm4gdWZpbGVf
cHRyIGJmZF90ZWxsIChiZmQgKik7CmV4dGVybiBpbnQgYmZkX2ZsdXNoIChiZmQgKik7CmV4dGVy
biBpbnQgYmZkX3N0YXQgKGJmZCAqLCBzdHJ1Y3Qgc3RhdCAqKTsKIyA1MDIgIi4uL2JmZC9iZmQu
aCIKZXh0ZXJuIHZvaWQgd2Fybl9kZXByZWNhdGVkCiAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CiMgNTM5ICIuLi9iZmQvYmZkLmgiCmV4dGVybiBib29s
ZWFuIGJmZF9jYWNoZV9jbG9zZSAoYmZkICphYmZkKTsKCgpleHRlcm4gYm9vbGVhbiBiZmRfcmVj
b3JkX3BoZHIKICAoYmZkICosIHVuc2lnbmVkIGxvbmcsIGJvb2xlYW4sIGZsYWd3b3JkLCBib29s
ZWFuLCBiZmRfdm1hLCBib29sZWFuLCBib29sZWFuLCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBzZWMg
KiopOwoKCgoKYmZkX3ZtYSBiZmRfZ2V0YjY0IChjb25zdCB1bnNpZ25lZCBjaGFyICopOwpiZmRf
dm1hIGJmZF9nZXRsNjQgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKik7CmJmZF9zaWduZWRfdm1hIGJm
ZF9nZXRiX3NpZ25lZF82NCAoY29uc3QgdW5zaWduZWQgY2hhciAqKTsKYmZkX3NpZ25lZF92bWEg
YmZkX2dldGxfc2lnbmVkXzY0IChjb25zdCB1bnNpZ25lZCBjaGFyICopOwpiZmRfdm1hIGJmZF9n
ZXRiMzIgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKik7CmJmZF92bWEgYmZkX2dldGwzMiAoY29uc3Qg
dW5zaWduZWQgY2hhciAqKTsKYmZkX3NpZ25lZF92bWEgYmZkX2dldGJfc2lnbmVkXzMyIChjb25z
dCB1bnNpZ25lZCBjaGFyICopOwpiZmRfc2lnbmVkX3ZtYSBiZmRfZ2V0bF9zaWduZWRfMzIgKGNv
bnN0IHVuc2lnbmVkIGNoYXIgKik7CmJmZF92bWEgYmZkX2dldGIxNiAoY29uc3QgdW5zaWduZWQg
Y2hhciAqKTsKYmZkX3ZtYSBiZmRfZ2V0bDE2IChjb25zdCB1bnNpZ25lZCBjaGFyICopOwpiZmRf
c2lnbmVkX3ZtYSBiZmRfZ2V0Yl9zaWduZWRfMTYgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKik7CmJm
ZF9zaWduZWRfdm1hIGJmZF9nZXRsX3NpZ25lZF8xNiAoY29uc3QgdW5zaWduZWQgY2hhciAqKTsK
dm9pZCBiZmRfcHV0YjY0IChiZmRfdm1hLCB1bnNpZ25lZCBjaGFyICopOwp2b2lkIGJmZF9wdXRs
NjQgKGJmZF92bWEsIHVuc2lnbmVkIGNoYXIgKik7CnZvaWQgYmZkX3B1dGIzMiAoYmZkX3ZtYSwg
dW5zaWduZWQgY2hhciAqKTsKdm9pZCBiZmRfcHV0bDMyIChiZmRfdm1hLCB1bnNpZ25lZCBjaGFy
ICopOwp2b2lkIGJmZF9wdXRiMTYgKGJmZF92bWEsIHVuc2lnbmVkIGNoYXIgKik7CnZvaWQgYmZk
X3B1dGwxNiAoYmZkX3ZtYSwgdW5zaWduZWQgY2hhciAqKTsKCgoKYmZkX3ZtYSBiZmRfZ2V0X2Jp
dHMgKGJmZF9ieXRlICosIGludCwgYm9vbGVhbik7CnZvaWQgYmZkX3B1dF9iaXRzIChiZmRfdm1h
LCBiZmRfYnl0ZSAqLCBpbnQsIGJvb2xlYW4pOwoKCgoKc3RydWN0IGVjb2ZmX2RlYnVnX2luZm87
CnN0cnVjdCBlY29mZl9kZWJ1Z19zd2FwOwpzdHJ1Y3QgZWNvZmZfZXh0cjsKc3RydWN0IHN5bWJv
bF9jYWNoZV9lbnRyeTsKc3RydWN0IGJmZF9saW5rX2luZm87CnN0cnVjdCBiZmRfbGlua19oYXNo
X2VudHJ5OwpzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX3RyZWU7CgpleHRlcm4gYmZkX3ZtYSBiZmRf
ZWNvZmZfZ2V0X2dwX3ZhbHVlIChiZmQgKiBhYmZkKTsKZXh0ZXJuIGJvb2xlYW4gYmZkX2Vjb2Zm
X3NldF9ncF92YWx1ZSAoYmZkICphYmZkLCBiZmRfdm1hIGdwX3ZhbHVlKTsKZXh0ZXJuIGJvb2xl
YW4gYmZkX2Vjb2ZmX3NldF9yZWdtYXNrcwogIChiZmQgKmFiZmQsIHVuc2lnbmVkIGxvbmcgZ3By
bWFzaywgdW5zaWduZWQgbG9uZyBmcHJtYXNrLCB1bnNpZ25lZCBsb25nICpjcHJtYXNrKTsKCmV4
dGVybiB2b2lkICogYmZkX2Vjb2ZmX2RlYnVnX2luaXQKICAoYmZkICpvdXRwdXRfYmZkLCBzdHJ1
Y3QgZWNvZmZfZGVidWdfaW5mbyAqb3V0cHV0X2RlYnVnLCBjb25zdCBzdHJ1Y3QgZWNvZmZfZGVi
dWdfc3dhcCAqb3V0cHV0X3N3YXAsIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCmV4dGVybiB2
b2lkIGJmZF9lY29mZl9kZWJ1Z19mcmVlCiAgKHZvaWQgKiBoYW5kbGUsIGJmZCAqb3V0cHV0X2Jm
ZCwgc3RydWN0IGVjb2ZmX2RlYnVnX2luZm8gKm91dHB1dF9kZWJ1ZywgY29uc3Qgc3RydWN0IGVj
b2ZmX2RlYnVnX3N3YXAgKm91dHB1dF9zd2FwLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgpl
eHRlcm4gYm9vbGVhbiBiZmRfZWNvZmZfZGVidWdfYWNjdW11bGF0ZQogICh2b2lkICogaGFuZGxl
LCBiZmQgKm91dHB1dF9iZmQsIHN0cnVjdCBlY29mZl9kZWJ1Z19pbmZvICpvdXRwdXRfZGVidWcs
IGNvbnN0IHN0cnVjdCBlY29mZl9kZWJ1Z19zd2FwICpvdXRwdXRfc3dhcCwgYmZkICppbnB1dF9i
ZmQsIHN0cnVjdCBlY29mZl9kZWJ1Z19pbmZvICppbnB1dF9kZWJ1ZywgY29uc3Qgc3RydWN0IGVj
b2ZmX2RlYnVnX3N3YXAgKmlucHV0X3N3YXAsIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCgoK
ZXh0ZXJuIGJvb2xlYW4gYmZkX2Vjb2ZmX2RlYnVnX2FjY3VtdWxhdGVfb3RoZXIKICAodm9pZCAq
IGhhbmRsZSwgYmZkICpvdXRwdXRfYmZkLCBzdHJ1Y3QgZWNvZmZfZGVidWdfaW5mbyAqb3V0cHV0
X2RlYnVnLCBjb25zdCBzdHJ1Y3QgZWNvZmZfZGVidWdfc3dhcCAqb3V0cHV0X3N3YXAsIGJmZCAq
aW5wdXRfYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgpleHRlcm4gYm9vbGVhbiBiZmRf
ZWNvZmZfZGVidWdfZXh0ZXJuYWxzCiAgKGJmZCAqYWJmZCwgc3RydWN0IGVjb2ZmX2RlYnVnX2lu
Zm8gKmRlYnVnLCBjb25zdCBzdHJ1Y3QgZWNvZmZfZGVidWdfc3dhcCAqc3dhcCwgYm9vbGVhbiBy
ZWxvY2F0ZWFibGUsIGJvb2xlYW4gKCpnZXRfZXh0cikgKHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50
cnkgKiwgc3RydWN0IGVjb2ZmX2V4dHIgKiksIHZvaWQgKCpzZXRfaW5kZXgpIChzdHJ1Y3Qgc3lt
Ym9sX2NhY2hlX2VudHJ5ICosIGJmZF9zaXplX3R5cGUpKTsKCgoKCgoKZXh0ZXJuIGJvb2xlYW4g
YmZkX2Vjb2ZmX2RlYnVnX29uZV9leHRlcm5hbAogIChiZmQgKmFiZmQsIHN0cnVjdCBlY29mZl9k
ZWJ1Z19pbmZvICpkZWJ1ZywgY29uc3Qgc3RydWN0IGVjb2ZmX2RlYnVnX3N3YXAgKnN3YXAsIGNv
bnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBlY29mZl9leHRyICplc3ltKTsKCgpleHRlcm4gYmZkX3Np
emVfdHlwZSBiZmRfZWNvZmZfZGVidWdfc2l6ZQogIChiZmQgKmFiZmQsIHN0cnVjdCBlY29mZl9k
ZWJ1Z19pbmZvICpkZWJ1ZywgY29uc3Qgc3RydWN0IGVjb2ZmX2RlYnVnX3N3YXAgKnN3YXApOwoK
ZXh0ZXJuIGJvb2xlYW4gYmZkX2Vjb2ZmX3dyaXRlX2RlYnVnCiAgKGJmZCAqYWJmZCwgc3RydWN0
IGVjb2ZmX2RlYnVnX2luZm8gKmRlYnVnLCBjb25zdCBzdHJ1Y3QgZWNvZmZfZGVidWdfc3dhcCAq
c3dhcCwgZmlsZV9wdHIgd2hlcmUpOwoKZXh0ZXJuIGJvb2xlYW4gYmZkX2Vjb2ZmX3dyaXRlX2Fj
Y3VtdWxhdGVkX2RlYnVnCiAgKHZvaWQgKiBoYW5kbGUsIGJmZCAqYWJmZCwgc3RydWN0IGVjb2Zm
X2RlYnVnX2luZm8gKmRlYnVnLCBjb25zdCBzdHJ1Y3QgZWNvZmZfZGVidWdfc3dhcCAqc3dhcCwg
c3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sIGZpbGVfcHRyIHdoZXJlKTsKCgpleHRlcm4gYm9v
bGVhbiBiZmRfbWlwc19lY29mZl9jcmVhdGVfZW1iZWRkZWRfcmVsb2NzCiAgKGJmZCAqLCBzdHJ1
Y3QgYmZkX2xpbmtfaW5mbyAqLCBzdHJ1Y3Qgc2VjICosIHN0cnVjdCBzZWMgKiwgY2hhciAqKik7
CgoKCgpzdHJ1Y3QgYmZkX2xpbmtfbmVlZGVkX2xpc3QKewogIHN0cnVjdCBiZmRfbGlua19uZWVk
ZWRfbGlzdCAqbmV4dDsKICBiZmQgKmJ5OwogIGNvbnN0IGNoYXIgKm5hbWU7Cn07CgpleHRlcm4g
Ym9vbGVhbiBiZmRfZWxmMzJfcmVjb3JkX2xpbmtfYXNzaWdubWVudAogIChiZmQgKiwgc3RydWN0
IGJmZF9saW5rX2luZm8gKiwgY29uc3QgY2hhciAqLCBib29sZWFuKTsKZXh0ZXJuIGJvb2xlYW4g
YmZkX2VsZjY0X3JlY29yZF9saW5rX2Fzc2lnbm1lbnQKICAoYmZkICosIHN0cnVjdCBiZmRfbGlu
a19pbmZvICosIGNvbnN0IGNoYXIgKiwgYm9vbGVhbik7CmV4dGVybiBzdHJ1Y3QgYmZkX2xpbmtf
bmVlZGVkX2xpc3QgKmJmZF9lbGZfZ2V0X25lZWRlZF9saXN0CiAgKGJmZCAqLCBzdHJ1Y3QgYmZk
X2xpbmtfaW5mbyAqKTsKZXh0ZXJuIGJvb2xlYW4gYmZkX2VsZl9nZXRfYmZkX25lZWRlZF9saXN0
CiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfbmVlZGVkX2xpc3QgKiopOwpleHRlcm4gYm9vbGVh
biBiZmRfZWxmMzJfc2l6ZV9keW5hbWljX3NlY3Rpb25zCiAgKGJmZCAqLCBjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogY29uc3QgKiwgc3RydWN0
IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IHNlYyAqKiwgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90
cmVlICopOwoKCmV4dGVybiBib29sZWFuIGJmZF9lbGY2NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMK
ICAoYmZkICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0
IGNoYXIgKiBjb25zdCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBzdHJ1Y3Qgc2VjICoqLCBz
dHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX3RyZWUgKik7CgoKZXh0ZXJuIHZvaWQgYmZkX2VsZl9zZXRf
ZHRfbmVlZGVkX25hbWUgKGJmZCAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBiZmRfZWxm
X3NldF9kdF9uZWVkZWRfc29uYW1lIChiZmQgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNvbnN0
IGNoYXIgKmJmZF9lbGZfZ2V0X2R0X3NvbmFtZSAoYmZkICopOwpleHRlcm4gc3RydWN0IGJmZF9s
aW5rX25lZWRlZF9saXN0ICpiZmRfZWxmX2dldF9ydW5wYXRoX2xpc3QKICAoYmZkICosIHN0cnVj
dCBiZmRfbGlua19pbmZvICopOwpleHRlcm4gYm9vbGVhbiBiZmRfZWxmMzJfZGlzY2FyZF9pbmZv
CiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKZXh0ZXJuIGJvb2xlYW4gYmZkX2Vs
ZjY0X2Rpc2NhcmRfaW5mbwogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CgoKCgpl
eHRlcm4gbG9uZyBiZmRfZ2V0X2VsZl9waGRyX3VwcGVyX2JvdW5kIChiZmQgKmFiZmQpOwojIDY3
OSAiLi4vYmZkL2JmZC5oIgpleHRlcm4gaW50IGJmZF9nZXRfZWxmX3BoZHJzIChiZmQgKmFiZmQs
IHZvaWQgKnBoZHJzKTsKCgpleHRlcm4gaW50IGJmZF9nZXRfYXJjaF9zaXplIChiZmQgKik7CgoK
ZXh0ZXJuIGludCBiZmRfZ2V0X3NpZ25fZXh0ZW5kX3ZtYSAoYmZkICopOwoKZXh0ZXJuIGJvb2xl
YW4gYmZkX202OGtfZWxmMzJfY3JlYXRlX2VtYmVkZGVkX3JlbG9jcwogIChiZmQgKiwgc3RydWN0
IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IHNlYyAqLCBzdHJ1Y3Qgc2VjICosIGNoYXIgKiopOwoK
ZXh0ZXJuIGJvb2xlYW4gYmZkX21pcHNfZWxmMzJfY3JlYXRlX2VtYmVkZGVkX3JlbG9jcwogIChi
ZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IHNlYyAqLCBzdHJ1Y3Qgc2VjICos
IGNoYXIgKiopOwoKCgoKZXh0ZXJuIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqYmZkX3N1
bm9zX2dldF9uZWVkZWRfbGlzdAogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CmV4
dGVybiBib29sZWFuIGJmZF9zdW5vc19yZWNvcmRfbGlua19hc3NpZ25tZW50CiAgKGJmZCAqLCBz
dHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gYm9vbGVhbiBiZmRf
c3Vub3Nfc2l6ZV9keW5hbWljX3NlY3Rpb25zCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5m
byAqLCBzdHJ1Y3Qgc2VjICoqLCBzdHJ1Y3Qgc2VjICoqLCBzdHJ1Y3Qgc2VjICoqKTsKCgoKCmV4
dGVybiBib29sZWFuIGJmZF9pMzg2bGludXhfc2l6ZV9keW5hbWljX3NlY3Rpb25zCiAgKGJmZCAq
LCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKZXh0ZXJuIGJvb2xlYW4gYmZkX202OGtsaW51eF9z
aXplX2R5bmFtaWNfc2VjdGlvbnMKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwpl
eHRlcm4gYm9vbGVhbiBiZmRfc3BhcmNsaW51eF9zaXplX2R5bmFtaWNfc2VjdGlvbnMKICAoYmZk
ICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCgpzdHJ1Y3QgX2JmZF93aW5kb3dfaW50ZXJu
YWw7CnR5cGVkZWYgc3RydWN0IF9iZmRfd2luZG93X2ludGVybmFsIGJmZF93aW5kb3dfaW50ZXJu
YWw7Cgp0eXBlZGVmIHN0cnVjdCBfYmZkX3dpbmRvdwp7CgogIHZvaWQgKiBkYXRhOwogIGJmZF9z
aXplX3R5cGUgc2l6ZTsKCgoKCgoKICBzdHJ1Y3QgX2JmZF93aW5kb3dfaW50ZXJuYWwgKmk7Cn0K
YmZkX3dpbmRvdzsKCmV4dGVybiB2b2lkIGJmZF9pbml0X3dpbmRvdyAoYmZkX3dpbmRvdyAqKTsK
ZXh0ZXJuIHZvaWQgYmZkX2ZyZWVfd2luZG93IChiZmRfd2luZG93ICopOwpleHRlcm4gYm9vbGVh
biBiZmRfZ2V0X2ZpbGVfd2luZG93CiAgKGJmZCAqLCBmaWxlX3B0ciwgYmZkX3NpemVfdHlwZSwg
YmZkX3dpbmRvdyAqLCBib29sZWFuKTsKCgoKZXh0ZXJuIGJvb2xlYW4gYmZkX3hjb2ZmX2xpbmtf
cmVjb3JkX3NldAogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IGJmZF9s
aW5rX2hhc2hfZW50cnkgKiwgYmZkX3NpemVfdHlwZSk7CgpleHRlcm4gYm9vbGVhbiBiZmRfeGNv
ZmZfaW1wb3J0X3N5bWJvbAogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0
IGJmZF9saW5rX2hhc2hfZW50cnkgKiwgYmZkX3ZtYSwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50KTsKCmV4dGVybiBib29sZWFuIGJmZF94Y29m
Zl9leHBvcnRfc3ltYm9sCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBzdHJ1Y3Qg
YmZkX2xpbmtfaGFzaF9lbnRyeSAqKTsKZXh0ZXJuIGJvb2xlYW4gYmZkX3hjb2ZmX2xpbmtfY291
bnRfcmVsb2MKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNvbnN0IGNoYXIgKik7
CmV4dGVybiBib29sZWFuIGJmZF94Y29mZl9yZWNvcmRfbGlua19hc3NpZ25tZW50CiAgKGJmZCAq
LCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gYm9vbGVhbiBi
ZmRfeGNvZmZfc2l6ZV9keW5hbWljX3NlY3Rpb25zCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtf
aW5mbyAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgbG9uZywgdW5zaWdu
ZWQgbG9uZywgdW5zaWduZWQgbG9uZywgYm9vbGVhbiwgaW50LCBib29sZWFuLCBib29sZWFuLCBz
dHJ1Y3Qgc2VjICoqLCBib29sZWFuKTsKCgpleHRlcm4gYm9vbGVhbiBiZmRfeGNvZmZfbGlua19n
ZW5lcmF0ZV9ydGluaXQKICAoYmZkICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBib29s
ZWFuKTsKCgpleHRlcm4gYm9vbGVhbiBiZmRfeGNvZmZfYXJfYXJjaGl2ZV9zZXRfbWFnaWMgKGJm
ZCAqLCBjaGFyICopOwoKCgoKc3RydWN0IGludGVybmFsX3N5bWVudDsKdW5pb24gaW50ZXJuYWxf
YXV4ZW50OwoKCmV4dGVybiBib29sZWFuIGJmZF9jb2ZmX2dldF9zeW1lbnQKICAoYmZkICosIHN0
cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKiwgc3RydWN0IGludGVybmFsX3N5bWVudCAqKTsKCmV4
dGVybiBib29sZWFuIGJmZF9jb2ZmX2dldF9hdXhlbnQKICAoYmZkICosIHN0cnVjdCBzeW1ib2xf
Y2FjaGVfZW50cnkgKiwgaW50LCB1bmlvbiBpbnRlcm5hbF9hdXhlbnQgKik7CgpleHRlcm4gYm9v
bGVhbiBiZmRfY29mZl9zZXRfc3ltYm9sX2NsYXNzCiAgKGJmZCAqLCBzdHJ1Y3Qgc3ltYm9sX2Nh
Y2hlX2VudHJ5ICosIHVuc2lnbmVkIGludCk7CgpleHRlcm4gYm9vbGVhbiBiZmRfbTY4a19jb2Zm
X2NyZWF0ZV9lbWJlZGRlZF9yZWxvY3MKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICos
IHN0cnVjdCBzZWMgKiwgc3RydWN0IHNlYyAqLCBjaGFyICoqKTsKCgoKZXh0ZXJuIGJvb2xlYW4g
YmZkX2FybV9hbGxvY2F0ZV9pbnRlcndvcmtpbmdfc2VjdGlvbnMKICAoc3RydWN0IGJmZF9saW5r
X2luZm8gKik7CgpleHRlcm4gYm9vbGVhbiBiZmRfYXJtX3Byb2Nlc3NfYmVmb3JlX2FsbG9jYXRp
b24KICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGludCk7CgpleHRlcm4gYm9vbGVh
biBiZmRfYXJtX2dldF9iZmRfZm9yX2ludGVyd29ya2luZwogIChiZmQgKiwgc3RydWN0IGJmZF9s
aW5rX2luZm8gKik7CgoKZXh0ZXJuIGJvb2xlYW4gYmZkX2FybV9wZV9hbGxvY2F0ZV9pbnRlcndv
cmtpbmdfc2VjdGlvbnMKICAoc3RydWN0IGJmZF9saW5rX2luZm8gKik7CgpleHRlcm4gYm9vbGVh
biBiZmRfYXJtX3BlX3Byb2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24KICAoYmZkICosIHN0cnVjdCBi
ZmRfbGlua19pbmZvICosIGludCk7CgpleHRlcm4gYm9vbGVhbiBiZmRfYXJtX3BlX2dldF9iZmRf
Zm9yX2ludGVyd29ya2luZwogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CgoKZXh0
ZXJuIGJvb2xlYW4gYmZkX2VsZjMyX2FybV9hbGxvY2F0ZV9pbnRlcndvcmtpbmdfc2VjdGlvbnMK
ICAoc3RydWN0IGJmZF9saW5rX2luZm8gKik7CgpleHRlcm4gYm9vbGVhbiBiZmRfZWxmMzJfYXJt
X3Byb2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24KICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZv
ICosIGludCk7CgpleHRlcm4gYm9vbGVhbiBiZmRfZWxmMzJfYXJtX2dldF9iZmRfZm9yX2ludGVy
d29ya2luZwogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CgpleHRlcm4gYm9vbGVh
biBiZmRfZWxmMzJfYXJtX2FkZF9nbHVlX3NlY3Rpb25zX3RvX2JmZAogIChiZmQgKiwgc3RydWN0
IGJmZF9saW5rX2luZm8gKik7CgoKZXh0ZXJuIHZvaWQgYmZkX3RpY29mZl9zZXRfc2VjdGlvbl9s
b2FkX3BhZ2UKICAoc3RydWN0IHNlYyAqLCBpbnQpOwoKZXh0ZXJuIGludCBiZmRfdGljb2ZmX2dl
dF9zZWN0aW9uX2xvYWRfcGFnZQogIChzdHJ1Y3Qgc2VjICopOwoKCnZvaWQKYmZkX2luaXQgKHZv
aWQpOwoKCmJmZCAqCmJmZF9vcGVuciAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIg
KnRhcmdldCk7CgpiZmQgKgpiZmRfZmRvcGVuciAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0
IGNoYXIgKnRhcmdldCwgaW50IGZkKTsKCmJmZCAqCmJmZF9vcGVuc3RyZWFtciAoY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICosIHZvaWQgKik7CgpiZmQgKgpiZmRfb3BlbncgKGNvbnN0IGNoYXIg
KmZpbGVuYW1lLCBjb25zdCBjaGFyICp0YXJnZXQpOwoKYm9vbGVhbgpiZmRfY2xvc2UgKGJmZCAq
YWJmZCk7Cgpib29sZWFuCmJmZF9jbG9zZV9hbGxfZG9uZSAoYmZkICopOwoKYmZkICoKYmZkX2Ny
ZWF0ZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGJmZCAqdGVtcGwpOwoKYm9vbGVhbgpiZmRfbWFr
ZV93cml0YWJsZSAoYmZkICphYmZkKTsKCmJvb2xlYW4KYmZkX21ha2VfcmVhZGFibGUgKGJmZCAq
YWJmZCk7CiMgMTAwMSAiLi4vYmZkL2JmZC5oIgpzdHJ1Y3QgYmZkX2NvbWRhdF9pbmZvCnsKCiAg
Y29uc3QgY2hhciAqbmFtZTsKCgoKCgogIGxvbmcgc3ltYm9sOwp9OwoKdHlwZWRlZiBzdHJ1Y3Qg
c2VjCnsKCgogIGNvbnN0IGNoYXIgKm5hbWU7CgoKICBpbnQgaWQ7CgoKICBpbnQgaW5kZXg7CgoK
ICBzdHJ1Y3Qgc2VjICpuZXh0OwoKCgoKICBmbGFnd29yZCBmbGFnczsKIyAxMjA5ICIuLi9iZmQv
YmZkLmgiCiAgdW5zaWduZWQgaW50IHVzZXJfc2V0X3ZtYSA6IDE7CgoKICB1bnNpZ25lZCBpbnQg
cmVsb2NfZG9uZSA6IDE7CgoKICB1bnNpZ25lZCBpbnQgbGlua2VyX21hcmsgOiAxOwoKCgogIHVu
c2lnbmVkIGludCBsaW5rZXJfaGFzX2lucHV0IDogMTsKCgogIHVuc2lnbmVkIGludCBnY19tYXJr
IDogMTsKCgoKICB1bnNpZ25lZCBpbnQgc2VnbWVudF9tYXJrIDogMTsKIyAxMjM2ICIuLi9iZmQv
YmZkLmgiCiAgYmZkX3ZtYSB2bWE7CgoKCgogIGJmZF92bWEgbG1hOwoKCgoKICBiZmRfc2l6ZV90
eXBlIF9jb29rZWRfc2l6ZTsKCgoKCiAgYmZkX3NpemVfdHlwZSBfcmF3X3NpemU7CiMgMTI2MCAi
Li4vYmZkL2JmZC5oIgogIGJmZF92bWEgb3V0cHV0X29mZnNldDsKCgogIHN0cnVjdCBzZWMgKm91
dHB1dF9zZWN0aW9uOwoKCgogIHVuc2lnbmVkIGludCBhbGlnbm1lbnRfcG93ZXI7CgoKCiAgc3Ry
dWN0IHJlbG9jX2NhY2hlX2VudHJ5ICpyZWxvY2F0aW9uOwoKCgogIHN0cnVjdCByZWxvY19jYWNo
ZV9lbnRyeSAqKm9yZWxvY2F0aW9uOwoKCiAgdW5zaWduZWQgcmVsb2NfY291bnQ7CgoKCgoKICBm
aWxlX3B0ciBmaWxlcG9zOwoKCiAgZmlsZV9wdHIgcmVsX2ZpbGVwb3M7CgoKICBmaWxlX3B0ciBs
aW5lX2ZpbGVwb3M7CgoKICB2b2lkICogdXNlcmRhdGE7CgoKCiAgdW5zaWduZWQgY2hhciAqY29u
dGVudHM7CgoKICBhbGVudCAqbGluZW5vOwoKCiAgdW5zaWduZWQgaW50IGxpbmVub19jb3VudDsK
CgogIHVuc2lnbmVkIGludCBlbnRzaXplOwoKCiAgc3RydWN0IGJmZF9jb21kYXRfaW5mbyAqY29t
ZGF0OwoKCgogIGZpbGVfcHRyIG1vdmluZ19saW5lX2ZpbGVwb3M7CgoKICBpbnQgdGFyZ2V0X2lu
ZGV4OwoKICB2b2lkICogdXNlZF9ieV9iZmQ7CgoKCiAgc3RydWN0IHJlbGVudF9jaGFpbiAqY29u
c3RydWN0b3JfY2hhaW47CgoKICBiZmQgKm93bmVyOwoKCiAgc3RydWN0IHN5bWJvbF9jYWNoZV9l
bnRyeSAqc3ltYm9sOwogIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKipzeW1ib2xfcHRyX3B0
cjsKCiAgc3RydWN0IGJmZF9saW5rX29yZGVyICpsaW5rX29yZGVyX2hlYWQ7CiAgc3RydWN0IGJm
ZF9saW5rX29yZGVyICpsaW5rX29yZGVyX3RhaWw7Cn0gYXNlY3Rpb247CiMgMTM0NiAiLi4vYmZk
L2JmZC5oIgpleHRlcm4gY29uc3QgYXNlY3Rpb24gYmZkX2Fic19zZWN0aW9uOwoKCgpleHRlcm4g
Y29uc3QgYXNlY3Rpb24gYmZkX3VuZF9zZWN0aW9uOwoKCgpleHRlcm4gY29uc3QgYXNlY3Rpb24g
YmZkX2NvbV9zZWN0aW9uOwoKCmV4dGVybiBjb25zdCBhc2VjdGlvbiBiZmRfaW5kX3NlY3Rpb247
CiMgMTM2NyAiLi4vYmZkL2JmZC5oIgpleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jYWNoZV9l
bnRyeSAqIGNvbnN0IGJmZF9hYnNfc3ltYm9sOwpleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9j
YWNoZV9lbnRyeSAqIGNvbnN0IGJmZF9jb21fc3ltYm9sOwpleHRlcm4gY29uc3Qgc3RydWN0IHN5
bWJvbF9jYWNoZV9lbnRyeSAqIGNvbnN0IGJmZF91bmRfc3ltYm9sOwpleHRlcm4gY29uc3Qgc3Ry
dWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqIGNvbnN0IGJmZF9pbmRfc3ltYm9sOwojIDE0MDMgIi4u
L2JmZC9iZmQuaCIKdm9pZApiZmRfc2VjdGlvbl9saXN0X2NsZWFyIChiZmQgKik7Cgphc2VjdGlv
biAqCmJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChiZmQgKmFiZmQsIGNvbnN0IGNoYXIgKm5hbWUp
OwoKY2hhciAqCmJmZF9nZXRfdW5pcXVlX3NlY3Rpb25fbmFtZSAoYmZkICphYmZkLCBjb25zdCBj
aGFyICp0ZW1wbGF0LCBpbnQgKmNvdW50KTsKCgoKYXNlY3Rpb24gKgpiZmRfbWFrZV9zZWN0aW9u
X29sZF93YXkgKGJmZCAqYWJmZCwgY29uc3QgY2hhciAqbmFtZSk7Cgphc2VjdGlvbiAqCmJmZF9t
YWtlX3NlY3Rpb25fYW55d2F5IChiZmQgKmFiZmQsIGNvbnN0IGNoYXIgKm5hbWUpOwoKYXNlY3Rp
b24gKgpiZmRfbWFrZV9zZWN0aW9uIChiZmQgKiwgY29uc3QgY2hhciAqbmFtZSk7Cgpib29sZWFu
CmJmZF9zZXRfc2VjdGlvbl9mbGFncyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjLCBmbGFnd29y
ZCBmbGFncyk7Cgp2b2lkCmJmZF9tYXBfb3Zlcl9zZWN0aW9ucyAoYmZkICphYmZkLCB2b2lkICgq
ZnVuYykgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3QsIHZvaWQgKiBvYmopLCB2b2lkICogb2Jq
KTsKCgoKCgpib29sZWFuCmJmZF9zZXRfc2VjdGlvbl9zaXplIChiZmQgKmFiZmQsIGFzZWN0aW9u
ICpzZWMsIGJmZF9zaXplX3R5cGUgdmFsKTsKCmJvb2xlYW4KYmZkX3NldF9zZWN0aW9uX2NvbnRl
bnRzIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0aW9uLCB2b2lkICogZGF0YSwgZmlsZV9wdHIg
b2Zmc2V0LCBiZmRfc2l6ZV90eXBlIGNvdW50KTsKCgoKYm9vbGVhbgpiZmRfZ2V0X3NlY3Rpb25f
Y29udGVudHMgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3Rpb24sIHZvaWQgKiBsb2NhdGlvbiwg
ZmlsZV9wdHIgb2Zmc2V0LCBiZmRfc2l6ZV90eXBlIGNvdW50KTsKCgoKYm9vbGVhbgpiZmRfY29w
eV9wcml2YXRlX3NlY3Rpb25fZGF0YSAoYmZkICppYmZkLCBhc2VjdGlvbiAqaXNlYywgYmZkICpv
YmZkLCBhc2VjdGlvbiAqb3NlYyk7CgoKCgoKdm9pZApfYmZkX3N0cmlwX3NlY3Rpb25fZnJvbV9v
dXRwdXQgKHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLCBhc2VjdGlvbiAqc2VjdGlvbik7Cgpi
b29sZWFuCmJmZF9nZW5lcmljX2Rpc2NhcmRfZ3JvdXAgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKmdy
b3VwKTsKCgplbnVtIGJmZF9hcmNoaXRlY3R1cmUKewogIGJmZF9hcmNoX3Vua25vd24sCiAgYmZk
X2FyY2hfb2JzY3VyZSwKICBiZmRfYXJjaF9tNjhrLAojIDE0NzcgIi4uL2JmZC9iZmQuaCIKICBi
ZmRfYXJjaF92YXgsCiAgYmZkX2FyY2hfaTk2MCwKIyAxNDk2ICIuLi9iZmQvYmZkLmgiCiAgYmZk
X2FyY2hfb3IzMiwKCiAgYmZkX2FyY2hfYTI5aywKICBiZmRfYXJjaF9zcGFyYywKIyAxNTE1ICIu
Li9iZmQvYmZkLmgiCiAgYmZkX2FyY2hfbWlwcywKIyAxNTM2ICIuLi9iZmQvYmZkLmgiCiAgYmZk
X2FyY2hfaTM4NiwKCgoKCgogIGJmZF9hcmNoX3dlMzJrLAogIGJmZF9hcmNoX3RhaG9lLAogIGJm
ZF9hcmNoX2k4NjAsCiAgYmZkX2FyY2hfaTM3MCwKICBiZmRfYXJjaF9yb21wLAogIGJmZF9hcmNo
X2FsbGlhbnQsCiAgYmZkX2FyY2hfY29udmV4LAogIGJmZF9hcmNoX204OGssCiAgYmZkX2FyY2hf
cHlyYW1pZCwKICBiZmRfYXJjaF9oODMwMCwKCgoKICBiZmRfYXJjaF9wZHAxMSwKICBiZmRfYXJj
aF9wb3dlcnBjLAojIDE1NzUgIi4uL2JmZC9iZmQuaCIKICBiZmRfYXJjaF9yczYwMDAsCgoKCgog
IGJmZF9hcmNoX2hwcGEsCiAgYmZkX2FyY2hfZDEwdiwKCgoKICBiZmRfYXJjaF9kMzB2LAogIGJm
ZF9hcmNoX2RseCwKICBiZmRfYXJjaF9tNjhoYzExLAogIGJmZF9hcmNoX202OGhjMTIsCiAgYmZk
X2FyY2hfejhrLAoKCiAgYmZkX2FyY2hfaDg1MDAsCiAgYmZkX2FyY2hfc2gsCiMgMTYwMiAiLi4v
YmZkL2JmZC5oIgogIGJmZF9hcmNoX2FscGhhLAoKCgogIGJmZF9hcmNoX2FybSwKIyAxNjE3ICIu
Li9iZmQvYmZkLmgiCiAgYmZkX2FyY2hfbnMzMmssCiAgYmZkX2FyY2hfdzY1LAogIGJmZF9hcmNo
X3RpYzMwLAogIGJmZF9hcmNoX3RpYzU0eCwKICBiZmRfYXJjaF90aWM4MCwKICBiZmRfYXJjaF92
ODUwLAoKCgogIGJmZF9hcmNoX2FyYywKCgoKCiAgYmZkX2FyY2hfbTMyciwKCgogIGJmZF9hcmNo
X21uMTAyMDAsCiAgYmZkX2FyY2hfbW4xMDMwMCwKCgogIGJmZF9hcmNoX2ZyMzAsCgogIGJmZF9h
cmNoX2ZydiwKCgoKCgoKICBiZmRfYXJjaF9tY29yZSwKICBiZmRfYXJjaF9pYTY0LAoKCiAgYmZk
X2FyY2hfcGosCiAgYmZkX2FyY2hfYXZyLAoKCgoKCiAgYmZkX2FyY2hfY3JpcywKICBiZmRfYXJj
aF9zMzkwLAoKCiAgYmZkX2FyY2hfb3BlbnJpc2MsCiAgYmZkX2FyY2hfbW1peCwKICBiZmRfYXJj
aF94c3Rvcm15MTYsCgogIGJmZF9hcmNoX2xhc3QKICB9OwoKdHlwZWRlZiBzdHJ1Y3QgYmZkX2Fy
Y2hfaW5mbwp7CiAgaW50IGJpdHNfcGVyX3dvcmQ7CiAgaW50IGJpdHNfcGVyX2FkZHJlc3M7CiAg
aW50IGJpdHNfcGVyX2J5dGU7CiAgZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2g7CiAgdW5zaWdu
ZWQgbG9uZyBtYWNoOwogIGNvbnN0IGNoYXIgKmFyY2hfbmFtZTsKICBjb25zdCBjaGFyICpwcmlu
dGFibGVfbmFtZTsKICB1bnNpZ25lZCBpbnQgc2VjdGlvbl9hbGlnbl9wb3dlcjsKCgoKICBib29s
ZWFuIHRoZV9kZWZhdWx0OwogIGNvbnN0IHN0cnVjdCBiZmRfYXJjaF9pbmZvICogKCpjb21wYXRp
YmxlKQogICAgICAgKGNvbnN0IHN0cnVjdCBiZmRfYXJjaF9pbmZvICphLCBjb25zdCBzdHJ1Y3Qg
YmZkX2FyY2hfaW5mbyAqYik7CgoKICBib29sZWFuICgqc2NhbikgKGNvbnN0IHN0cnVjdCBiZmRf
YXJjaF9pbmZvICosIGNvbnN0IGNoYXIgKik7CgogIGNvbnN0IHN0cnVjdCBiZmRfYXJjaF9pbmZv
ICpuZXh0Owp9CmJmZF9hcmNoX2luZm9fdHlwZTsKCmNvbnN0IGNoYXIgKgpiZmRfcHJpbnRhYmxl
X25hbWUgKGJmZCAqYWJmZCk7Cgpjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgKgpiZmRfc2Nhbl9h
cmNoIChjb25zdCBjaGFyICpzdHJpbmcpOwoKY29uc3QgY2hhciAqKgpiZmRfYXJjaF9saXN0ICh2
b2lkKTsKCmNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSAqCmJmZF9hcmNoX2dldF9jb21wYXRpYmxl
ICggY29uc3QgYmZkICphYmZkLCBjb25zdCBiZmQgKmJiZmQpOwoKCgp2b2lkCmJmZF9zZXRfYXJj
aF9pbmZvIChiZmQgKmFiZmQsIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSAqYXJnKTsKCmVudW0g
YmZkX2FyY2hpdGVjdHVyZQpiZmRfZ2V0X2FyY2ggKGJmZCAqYWJmZCk7Cgp1bnNpZ25lZCBsb25n
CmJmZF9nZXRfbWFjaCAoYmZkICphYmZkKTsKCnVuc2lnbmVkIGludApiZmRfYXJjaF9iaXRzX3Bl
cl9ieXRlIChiZmQgKmFiZmQpOwoKdW5zaWduZWQgaW50CmJmZF9hcmNoX2JpdHNfcGVyX2FkZHJl
c3MgKGJmZCAqYWJmZCk7Cgpjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgKgpiZmRfZ2V0X2FyY2hf
aW5mbyAoYmZkICphYmZkKTsKCmNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSAqCmJmZF9sb29rdXBf
YXJjaCAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2gsIHVuc2lnbmVkIGxvbmcgbWFjaGluZSk7
CgoKCmNvbnN0IGNoYXIgKgpiZmRfcHJpbnRhYmxlX2FyY2hfbWFjaCAoZW51bSBiZmRfYXJjaGl0
ZWN0dXJlIGFyY2gsIHVuc2lnbmVkIGxvbmcgbWFjaGluZSk7Cgp1bnNpZ25lZCBpbnQKYmZkX29j
dGV0c19wZXJfYnl0ZSAoYmZkICphYmZkKTsKCnVuc2lnbmVkIGludApiZmRfYXJjaF9tYWNoX29j
dGV0c19wZXJfYnl0ZSAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2gsIHVuc2lnbmVkIGxvbmcg
bWFjaGluZSk7CgoKCnR5cGVkZWYgZW51bSBiZmRfcmVsb2Nfc3RhdHVzCnsKCiAgYmZkX3JlbG9j
X29rLAoKCiAgYmZkX3JlbG9jX292ZXJmbG93LAoKCiAgYmZkX3JlbG9jX291dG9mcmFuZ2UsCgoK
ICBiZmRfcmVsb2NfY29udGludWUsCgoKICBiZmRfcmVsb2Nfbm90c3VwcG9ydGVkLAoKCiAgYmZk
X3JlbG9jX290aGVyLAoKCiAgYmZkX3JlbG9jX3VuZGVmaW5lZCwKCgoKCgogIGJmZF9yZWxvY19k
YW5nZXJvdXMKIH0KIGJmZF9yZWxvY19zdGF0dXNfdHlwZTsKCgp0eXBlZGVmIHN0cnVjdCByZWxv
Y19jYWNoZV9lbnRyeQp7CgogIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKipzeW1fcHRyX3B0
cjsKCgogIGJmZF9zaXplX3R5cGUgYWRkcmVzczsKCgogIGJmZF92bWEgYWRkZW5kOwoKCiAgcmVs
b2NfaG93dG9fdHlwZSAqaG93dG87Cgp9CmFyZWxlbnQ7CgplbnVtIGNvbXBsYWluX292ZXJmbG93
CnsKCiAgY29tcGxhaW5fb3ZlcmZsb3dfZG9udCwKCgoKICBjb21wbGFpbl9vdmVyZmxvd19iaXRm
aWVsZCwKCgoKICBjb21wbGFpbl9vdmVyZmxvd19zaWduZWQsCgoKCiAgY29tcGxhaW5fb3ZlcmZs
b3dfdW5zaWduZWQKfTsKCnN0cnVjdCByZWxvY19ob3d0b19zdHJ1Y3QKewoKCgoKCgogIHVuc2ln
bmVkIGludCB0eXBlOwoKCgogIHVuc2lnbmVkIGludCByaWdodHNoaWZ0OwoKCgoKICBpbnQgc2l6
ZTsKCgoKICB1bnNpZ25lZCBpbnQgYml0c2l6ZTsKCgoKCgogIGJvb2xlYW4gcGNfcmVsYXRpdmU7
CgoKCiAgdW5zaWduZWQgaW50IGJpdHBvczsKCgoKICBlbnVtIGNvbXBsYWluX292ZXJmbG93IGNv
bXBsYWluX29uX292ZXJmbG93OwoKCgoKCiAgYmZkX3JlbG9jX3N0YXR1c190eXBlICgqc3BlY2lh
bF9mdW5jdGlvbikKICAgIChiZmQgKiwgYXJlbGVudCAqLCBzdHJ1Y3Qgc3ltYm9sX2NhY2hlX2Vu
dHJ5ICosIHZvaWQgKiwgYXNlY3Rpb24gKiwgYmZkICosIGNoYXIgKiopOwoKCgogIGNoYXIgKm5h
bWU7CiMgMTg3MSAiLi4vYmZkL2JmZC5oIgogIGJvb2xlYW4gcGFydGlhbF9pbnBsYWNlOwojIDE4
ODAgIi4uL2JmZC9iZmQuaCIKICBiZmRfdm1hIHNyY19tYXNrOwoKCgoKCiAgYmZkX3ZtYSBkc3Rf
bWFzazsKCgoKCgoKCiAgYm9vbGVhbiBwY3JlbF9vZmZzZXQ7Cn07CiMgMTkyMiAiLi4vYmZkL2Jm
ZC5oIgp1bnNpZ25lZCBpbnQKYmZkX2dldF9yZWxvY19zaXplIChyZWxvY19ob3d0b190eXBlICop
OwoKdHlwZWRlZiBzdHJ1Y3QgcmVsZW50X2NoYWluCnsKICBhcmVsZW50IHJlbGVudDsKICBzdHJ1
Y3QgcmVsZW50X2NoYWluICpuZXh0Owp9CmFyZWxlbnRfY2hhaW47CgpiZmRfcmVsb2Nfc3RhdHVz
X3R5cGUKYmZkX2NoZWNrX292ZXJmbG93IChlbnVtIGNvbXBsYWluX292ZXJmbG93IGhvdywgdW5z
aWduZWQgaW50IGJpdHNpemUsIHVuc2lnbmVkIGludCByaWdodHNoaWZ0LCB1bnNpZ25lZCBpbnQg
YWRkcnNpemUsIGJmZF92bWEgcmVsb2NhdGlvbik7CgoKCgoKYmZkX3JlbG9jX3N0YXR1c190eXBl
CmJmZF9wZXJmb3JtX3JlbG9jYXRpb24gKGJmZCAqYWJmZCwgYXJlbGVudCAqcmVsb2NfZW50cnks
IHZvaWQgKiBkYXRhLCBhc2VjdGlvbiAqaW5wdXRfc2VjdGlvbiwgYmZkICpvdXRwdXRfYmZkLCBj
aGFyICoqZXJyb3JfbWVzc2FnZSk7CgoKCgoKCmJmZF9yZWxvY19zdGF0dXNfdHlwZQpiZmRfaW5z
dGFsbF9yZWxvY2F0aW9uIChiZmQgKmFiZmQsIGFyZWxlbnQgKnJlbG9jX2VudHJ5LCB2b2lkICog
ZGF0YSwgYmZkX3ZtYSBkYXRhX3N0YXJ0LCBhc2VjdGlvbiAqaW5wdXRfc2VjdGlvbiwgY2hhciAq
KmVycm9yX21lc3NhZ2UpOwoKCgoKCmVudW0gYmZkX3JlbG9jX2NvZGVfcmVhbCB7CiAgX2R1bW15
X2ZpcnN0X2JmZF9yZWxvY19jb2RlX3JlYWwsCgoKCiAgQkZEX1JFTE9DXzY0LAogIEJGRF9SRUxP
Q18zMiwKICBCRkRfUkVMT0NfMjYsCiAgQkZEX1JFTE9DXzI0LAogIEJGRF9SRUxPQ18xNiwKICBC
RkRfUkVMT0NfMTQsCiAgQkZEX1JFTE9DXzgsCgoKCgoKCiAgQkZEX1JFTE9DXzY0X1BDUkVMLAog
IEJGRF9SRUxPQ18zMl9QQ1JFTCwKICBCRkRfUkVMT0NfMjRfUENSRUwsCiAgQkZEX1JFTE9DXzE2
X1BDUkVMLAogIEJGRF9SRUxPQ18xMl9QQ1JFTCwKICBCRkRfUkVMT0NfOF9QQ1JFTCwKCgogIEJG
RF9SRUxPQ18zMl9HT1RfUENSRUwsCiAgQkZEX1JFTE9DXzE2X0dPVF9QQ1JFTCwKICBCRkRfUkVM
T0NfOF9HT1RfUENSRUwsCiAgQkZEX1JFTE9DXzMyX0dPVE9GRiwKICBCRkRfUkVMT0NfMTZfR09U
T0ZGLAogIEJGRF9SRUxPQ19MTzE2X0dPVE9GRiwKICBCRkRfUkVMT0NfSEkxNl9HT1RPRkYsCiAg
QkZEX1JFTE9DX0hJMTZfU19HT1RPRkYsCiAgQkZEX1JFTE9DXzhfR09UT0ZGLAogIEJGRF9SRUxP
Q182NF9QTFRfUENSRUwsCiAgQkZEX1JFTE9DXzMyX1BMVF9QQ1JFTCwKICBCRkRfUkVMT0NfMjRf
UExUX1BDUkVMLAogIEJGRF9SRUxPQ18xNl9QTFRfUENSRUwsCiAgQkZEX1JFTE9DXzhfUExUX1BD
UkVMLAogIEJGRF9SRUxPQ182NF9QTFRPRkYsCiAgQkZEX1JFTE9DXzMyX1BMVE9GRiwKICBCRkRf
UkVMT0NfMTZfUExUT0ZGLAogIEJGRF9SRUxPQ19MTzE2X1BMVE9GRiwKICBCRkRfUkVMT0NfSEkx
Nl9QTFRPRkYsCiAgQkZEX1JFTE9DX0hJMTZfU19QTFRPRkYsCiAgQkZEX1JFTE9DXzhfUExUT0ZG
LAoKCiAgQkZEX1JFTE9DXzY4S19HTE9CX0RBVCwKICBCRkRfUkVMT0NfNjhLX0pNUF9TTE9ULAog
IEJGRF9SRUxPQ182OEtfUkVMQVRJVkUsCgoKICBCRkRfUkVMT0NfMzJfQkFTRVJFTCwKICBCRkRf
UkVMT0NfMTZfQkFTRVJFTCwKICBCRkRfUkVMT0NfTE8xNl9CQVNFUkVMLAogIEJGRF9SRUxPQ19I
STE2X0JBU0VSRUwsCiAgQkZEX1JFTE9DX0hJMTZfU19CQVNFUkVMLAogIEJGRF9SRUxPQ184X0JB
U0VSRUwsCiAgQkZEX1JFTE9DX1JWQSwKCgogIEJGRF9SRUxPQ184X0ZGbm4sCgoKCgoKCgogIEJG
RF9SRUxPQ18zMl9QQ1JFTF9TMiwKICBCRkRfUkVMT0NfMTZfUENSRUxfUzIsCiAgQkZEX1JFTE9D
XzIzX1BDUkVMX1MyLAoKCgogIEJGRF9SRUxPQ19ISTIyLAogIEJGRF9SRUxPQ19MTzEwLAoKCgoK
CiAgQkZEX1JFTE9DX0dQUkVMMTYsCiAgQkZEX1JFTE9DX0dQUkVMMzIsCgoKICBCRkRfUkVMT0Nf
STk2MF9DQUxMSiwKCgoKICBCRkRfUkVMT0NfTk9ORSwKICBCRkRfUkVMT0NfU1BBUkNfV0RJU1Ay
MiwKICBCRkRfUkVMT0NfU1BBUkMyMiwKICBCRkRfUkVMT0NfU1BBUkMxMywKICBCRkRfUkVMT0Nf
U1BBUkNfR09UMTAsCiAgQkZEX1JFTE9DX1NQQVJDX0dPVDEzLAogIEJGRF9SRUxPQ19TUEFSQ19H
T1QyMiwKICBCRkRfUkVMT0NfU1BBUkNfUEMxMCwKICBCRkRfUkVMT0NfU1BBUkNfUEMyMiwKICBC
RkRfUkVMT0NfU1BBUkNfV1BMVDMwLAogIEJGRF9SRUxPQ19TUEFSQ19DT1BZLAogIEJGRF9SRUxP
Q19TUEFSQ19HTE9CX0RBVCwKICBCRkRfUkVMT0NfU1BBUkNfSk1QX1NMT1QsCiAgQkZEX1JFTE9D
X1NQQVJDX1JFTEFUSVZFLAogIEJGRF9SRUxPQ19TUEFSQ19VQTE2LAogIEJGRF9SRUxPQ19TUEFS
Q19VQTMyLAogIEJGRF9SRUxPQ19TUEFSQ19VQTY0LAoKCiAgQkZEX1JFTE9DX1NQQVJDX0JBU0Ux
MywKICBCRkRfUkVMT0NfU1BBUkNfQkFTRTIyLAoKCgogIEJGRF9SRUxPQ19TUEFSQ18xMCwKICBC
RkRfUkVMT0NfU1BBUkNfMTEsCiAgQkZEX1JFTE9DX1NQQVJDX09MTzEwLAogIEJGRF9SRUxPQ19T
UEFSQ19ISDIyLAogIEJGRF9SRUxPQ19TUEFSQ19ITTEwLAogIEJGRF9SRUxPQ19TUEFSQ19MTTIy
LAogIEJGRF9SRUxPQ19TUEFSQ19QQ19ISDIyLAogIEJGRF9SRUxPQ19TUEFSQ19QQ19ITTEwLAog
IEJGRF9SRUxPQ19TUEFSQ19QQ19MTTIyLAogIEJGRF9SRUxPQ19TUEFSQ19XRElTUDE2LAogIEJG
RF9SRUxPQ19TUEFSQ19XRElTUDE5LAogIEJGRF9SRUxPQ19TUEFSQ183LAogIEJGRF9SRUxPQ19T
UEFSQ182LAogIEJGRF9SRUxPQ19TUEFSQ181LAoKICBCRkRfUkVMT0NfU1BBUkNfUExUMzIsCiAg
QkZEX1JFTE9DX1NQQVJDX1BMVDY0LAogIEJGRF9SRUxPQ19TUEFSQ19ISVgyMiwKICBCRkRfUkVM
T0NfU1BBUkNfTE9YMTAsCiAgQkZEX1JFTE9DX1NQQVJDX0g0NCwKICBCRkRfUkVMT0NfU1BBUkNf
TTQ0LAogIEJGRF9SRUxPQ19TUEFSQ19MNDQsCiAgQkZEX1JFTE9DX1NQQVJDX1JFR0lTVEVSLAoK
CiAgQkZEX1JFTE9DX1NQQVJDX1JFVjMyLAoKCgoKCgoKICBCRkRfUkVMT0NfQUxQSEFfR1BESVNQ
X0hJMTYsCgoKCgoKICBCRkRfUkVMT0NfQUxQSEFfR1BESVNQX0xPMTYsCgoKCgogIEJGRF9SRUxP
Q19BTFBIQV9HUERJU1AsCiMgMjEzOSAiLi4vYmZkL2JmZC5oIgogIEJGRF9SRUxPQ19BTFBIQV9M
SVRFUkFMLAogIEJGRF9SRUxPQ19BTFBIQV9FTEZfTElURVJBTCwKICBCRkRfUkVMT0NfQUxQSEFf
TElUVVNFLAoKCgoKICBCRkRfUkVMT0NfQUxQSEFfSElOVCwKCgoKICBCRkRfUkVMT0NfQUxQSEFf
TElOS0FHRSwKCgoKICBCRkRfUkVMT0NfQUxQSEFfQ09ERUFERFIsCgoKCiAgQkZEX1JFTE9DX0FM
UEhBX0dQUkVMX0hJMTYsCiAgQkZEX1JFTE9DX0FMUEhBX0dQUkVMX0xPMTYsCgoKCgogIEJGRF9S
RUxPQ19BTFBIQV9CUlNHUCwKCgogIEJGRF9SRUxPQ19BTFBIQV9UTFNHRCwKICBCRkRfUkVMT0Nf
QUxQSEFfVExTTERNLAogIEJGRF9SRUxPQ19BTFBIQV9EVFBNT0Q2NCwKICBCRkRfUkVMT0NfQUxQ
SEFfR09URFRQUkVMMTYsCiAgQkZEX1JFTE9DX0FMUEhBX0RUUFJFTDY0LAogIEJGRF9SRUxPQ19B
TFBIQV9EVFBSRUxfSEkxNiwKICBCRkRfUkVMT0NfQUxQSEFfRFRQUkVMX0xPMTYsCiAgQkZEX1JF
TE9DX0FMUEhBX0RUUFJFTDE2LAogIEJGRF9SRUxPQ19BTFBIQV9HT1RUUFJFTDE2LAogIEJGRF9S
RUxPQ19BTFBIQV9UUFJFTDY0LAogIEJGRF9SRUxPQ19BTFBIQV9UUFJFTF9ISTE2LAogIEJGRF9S
RUxPQ19BTFBIQV9UUFJFTF9MTzE2LAogIEJGRF9SRUxPQ19BTFBIQV9UUFJFTDE2LAoKCgogIEJG
RF9SRUxPQ19NSVBTX0pNUCwKCgogIEJGRF9SRUxPQ19NSVBTMTZfSk1QLAoKCiAgQkZEX1JFTE9D
X01JUFMxNl9HUFJFTCwKCgogIEJGRF9SRUxPQ19ISTE2LAoKCgoKCiAgQkZEX1JFTE9DX0hJMTZf
UywKCgogIEJGRF9SRUxPQ19MTzE2LAoKCiAgQkZEX1JFTE9DX1BDUkVMX0hJMTZfUywKCgogIEJG
RF9SRUxPQ19QQ1JFTF9MTzE2LAoKCiAgQkZEX1JFTE9DX01JUFNfTElURVJBTCwKCgogIEJGRF9S
RUxPQ19NSVBTX0dPVDE2LAogIEJGRF9SRUxPQ19NSVBTX0NBTEwxNiwKICBCRkRfUkVMT0NfTUlQ
U19HT1RfSEkxNiwKICBCRkRfUkVMT0NfTUlQU19HT1RfTE8xNiwKICBCRkRfUkVMT0NfTUlQU19D
QUxMX0hJMTYsCiAgQkZEX1JFTE9DX01JUFNfQ0FMTF9MTzE2LAogIEJGRF9SRUxPQ19NSVBTX1NV
QiwKICBCRkRfUkVMT0NfTUlQU19HT1RfUEFHRSwKICBCRkRfUkVMT0NfTUlQU19HT1RfT0ZTVCwK
ICBCRkRfUkVMT0NfTUlQU19HT1RfRElTUCwKICBCRkRfUkVMT0NfTUlQU19TSElGVDUsCiAgQkZE
X1JFTE9DX01JUFNfU0hJRlQ2LAogIEJGRF9SRUxPQ19NSVBTX0lOU0VSVF9BLAogIEJGRF9SRUxP
Q19NSVBTX0lOU0VSVF9CLAogIEJGRF9SRUxPQ19NSVBTX0RFTEVURSwKICBCRkRfUkVMT0NfTUlQ
U19ISUdIRVNULAogIEJGRF9SRUxPQ19NSVBTX0hJR0hFUiwKICBCRkRfUkVMT0NfTUlQU19TQ05f
RElTUCwKICBCRkRfUkVMT0NfTUlQU19SRUwxNiwKICBCRkRfUkVMT0NfTUlQU19SRUxHT1QsCiAg
QkZEX1JFTE9DX01JUFNfSkFMUiwKCgogIEJGRF9SRUxPQ19GUlZfTEFCRUwxNiwKICBCRkRfUkVM
T0NfRlJWX0xBQkVMMjQsCiAgQkZEX1JFTE9DX0ZSVl9MTzE2LAogIEJGRF9SRUxPQ19GUlZfSEkx
NiwKICBCRkRfUkVMT0NfRlJWX0dQUkVMMTIsCiAgQkZEX1JFTE9DX0ZSVl9HUFJFTFUxMiwKICBC
RkRfUkVMT0NfRlJWX0dQUkVMMzIsCiAgQkZEX1JFTE9DX0ZSVl9HUFJFTEhJLAogIEJGRF9SRUxP
Q19GUlZfR1BSRUxMTywKCgoKICBCRkRfUkVMT0NfMzg2X0dPVDMyLAogIEJGRF9SRUxPQ18zODZf
UExUMzIsCiAgQkZEX1JFTE9DXzM4Nl9DT1BZLAogIEJGRF9SRUxPQ18zODZfR0xPQl9EQVQsCiAg
QkZEX1JFTE9DXzM4Nl9KVU1QX1NMT1QsCiAgQkZEX1JFTE9DXzM4Nl9SRUxBVElWRSwKICBCRkRf
UkVMT0NfMzg2X0dPVE9GRiwKICBCRkRfUkVMT0NfMzg2X0dPVFBDLAogIEJGRF9SRUxPQ18zODZf
VExTX0xFLAogIEJGRF9SRUxPQ18zODZfVExTX0dELAogIEJGRF9SRUxPQ18zODZfVExTX0xETSwK
ICBCRkRfUkVMT0NfMzg2X1RMU19MRE9fMzIsCiAgQkZEX1JFTE9DXzM4Nl9UTFNfSUVfMzIsCiAg
QkZEX1JFTE9DXzM4Nl9UTFNfTEVfMzIsCiAgQkZEX1JFTE9DXzM4Nl9UTFNfRFRQTU9EMzIsCiAg
QkZEX1JFTE9DXzM4Nl9UTFNfRFRQT0ZGMzIsCiAgQkZEX1JFTE9DXzM4Nl9UTFNfVFBPRkYzMiwK
CgogIEJGRF9SRUxPQ19YODZfNjRfR09UMzIsCiAgQkZEX1JFTE9DX1g4Nl82NF9QTFQzMiwKICBC
RkRfUkVMT0NfWDg2XzY0X0NPUFksCiAgQkZEX1JFTE9DX1g4Nl82NF9HTE9CX0RBVCwKICBCRkRf
UkVMT0NfWDg2XzY0X0pVTVBfU0xPVCwKICBCRkRfUkVMT0NfWDg2XzY0X1JFTEFUSVZFLAogIEJG
RF9SRUxPQ19YODZfNjRfR09UUENSRUwsCiAgQkZEX1JFTE9DX1g4Nl82NF8zMlMsCgoKICBCRkRf
UkVMT0NfTlMzMktfSU1NXzgsCiAgQkZEX1JFTE9DX05TMzJLX0lNTV8xNiwKICBCRkRfUkVMT0Nf
TlMzMktfSU1NXzMyLAogIEJGRF9SRUxPQ19OUzMyS19JTU1fOF9QQ1JFTCwKICBCRkRfUkVMT0Nf
TlMzMktfSU1NXzE2X1BDUkVMLAogIEJGRF9SRUxPQ19OUzMyS19JTU1fMzJfUENSRUwsCiAgQkZE
X1JFTE9DX05TMzJLX0RJU1BfOCwKICBCRkRfUkVMT0NfTlMzMktfRElTUF8xNiwKICBCRkRfUkVM
T0NfTlMzMktfRElTUF8zMiwKICBCRkRfUkVMT0NfTlMzMktfRElTUF84X1BDUkVMLAogIEJGRF9S
RUxPQ19OUzMyS19ESVNQXzE2X1BDUkVMLAogIEJGRF9SRUxPQ19OUzMyS19ESVNQXzMyX1BDUkVM
LAoKCiAgQkZEX1JFTE9DX1BEUDExX0RJU1BfOF9QQ1JFTCwKICBCRkRfUkVMT0NfUERQMTFfRElT
UF82X1BDUkVMLAoKCiAgQkZEX1JFTE9DX1BKX0NPREVfSEkxNiwKICBCRkRfUkVMT0NfUEpfQ09E
RV9MTzE2LAogIEJGRF9SRUxPQ19QSl9DT0RFX0RJUjE2LAogIEJGRF9SRUxPQ19QSl9DT0RFX0RJ
UjMyLAogIEJGRF9SRUxPQ19QSl9DT0RFX1JFTDE2LAogIEJGRF9SRUxPQ19QSl9DT0RFX1JFTDMy
LAoKCiAgQkZEX1JFTE9DX1BQQ19CMjYsCiAgQkZEX1JFTE9DX1BQQ19CQTI2LAogIEJGRF9SRUxP
Q19QUENfVE9DMTYsCiAgQkZEX1JFTE9DX1BQQ19CMTYsCiAgQkZEX1JFTE9DX1BQQ19CMTZfQlJU
QUtFTiwKICBCRkRfUkVMT0NfUFBDX0IxNl9CUk5UQUtFTiwKICBCRkRfUkVMT0NfUFBDX0JBMTYs
CiAgQkZEX1JFTE9DX1BQQ19CQTE2X0JSVEFLRU4sCiAgQkZEX1JFTE9DX1BQQ19CQTE2X0JSTlRB
S0VOLAogIEJGRF9SRUxPQ19QUENfQ09QWSwKICBCRkRfUkVMT0NfUFBDX0dMT0JfREFULAogIEJG
RF9SRUxPQ19QUENfSk1QX1NMT1QsCiAgQkZEX1JFTE9DX1BQQ19SRUxBVElWRSwKICBCRkRfUkVM
T0NfUFBDX0xPQ0FMMjRQQywKICBCRkRfUkVMT0NfUFBDX0VNQl9OQUREUjMyLAogIEJGRF9SRUxP
Q19QUENfRU1CX05BRERSMTYsCiAgQkZEX1JFTE9DX1BQQ19FTUJfTkFERFIxNl9MTywKICBCRkRf
UkVMT0NfUFBDX0VNQl9OQUREUjE2X0hJLAogIEJGRF9SRUxPQ19QUENfRU1CX05BRERSMTZfSEEs
CiAgQkZEX1JFTE9DX1BQQ19FTUJfU0RBSTE2LAogIEJGRF9SRUxPQ19QUENfRU1CX1NEQTJJMTYs
CiAgQkZEX1JFTE9DX1BQQ19FTUJfU0RBMlJFTCwKICBCRkRfUkVMT0NfUFBDX0VNQl9TREEyMSwK
ICBCRkRfUkVMT0NfUFBDX0VNQl9NUktSRUYsCiAgQkZEX1JFTE9DX1BQQ19FTUJfUkVMU0VDMTYs
CiAgQkZEX1JFTE9DX1BQQ19FTUJfUkVMU1RfTE8sCiAgQkZEX1JFTE9DX1BQQ19FTUJfUkVMU1Rf
SEksCiAgQkZEX1JFTE9DX1BQQ19FTUJfUkVMU1RfSEEsCiAgQkZEX1JFTE9DX1BQQ19FTUJfQklU
X0ZMRCwKICBCRkRfUkVMT0NfUFBDX0VNQl9SRUxTREEsCiAgQkZEX1JFTE9DX1BQQzY0X0hJR0hF
UiwKICBCRkRfUkVMT0NfUFBDNjRfSElHSEVSX1MsCiAgQkZEX1JFTE9DX1BQQzY0X0hJR0hFU1Qs
CiAgQkZEX1JFTE9DX1BQQzY0X0hJR0hFU1RfUywKICBCRkRfUkVMT0NfUFBDNjRfVE9DMTZfTE8s
CiAgQkZEX1JFTE9DX1BQQzY0X1RPQzE2X0hJLAogIEJGRF9SRUxPQ19QUEM2NF9UT0MxNl9IQSwK
ICBCRkRfUkVMT0NfUFBDNjRfVE9DLAogIEJGRF9SRUxPQ19QUEM2NF9QTFRHT1QxNiwKICBCRkRf
UkVMT0NfUFBDNjRfUExUR09UMTZfTE8sCiAgQkZEX1JFTE9DX1BQQzY0X1BMVEdPVDE2X0hJLAog
IEJGRF9SRUxPQ19QUEM2NF9QTFRHT1QxNl9IQSwKICBCRkRfUkVMT0NfUFBDNjRfQUREUjE2X0RT
LAogIEJGRF9SRUxPQ19QUEM2NF9BRERSMTZfTE9fRFMsCiAgQkZEX1JFTE9DX1BQQzY0X0dPVDE2
X0RTLAogIEJGRF9SRUxPQ19QUEM2NF9HT1QxNl9MT19EUywKICBCRkRfUkVMT0NfUFBDNjRfUExU
MTZfTE9fRFMsCiAgQkZEX1JFTE9DX1BQQzY0X1NFQ1RPRkZfRFMsCiAgQkZEX1JFTE9DX1BQQzY0
X1NFQ1RPRkZfTE9fRFMsCiAgQkZEX1JFTE9DX1BQQzY0X1RPQzE2X0RTLAogIEJGRF9SRUxPQ19Q
UEM2NF9UT0MxNl9MT19EUywKICBCRkRfUkVMT0NfUFBDNjRfUExUR09UMTZfRFMsCiAgQkZEX1JF
TE9DX1BQQzY0X1BMVEdPVDE2X0xPX0RTLAoKCiAgQkZEX1JFTE9DX0kzNzBfRDEyLAoKCgoKICBC
RkRfUkVMT0NfQ1RPUiwKCgoKICBCRkRfUkVMT0NfQVJNX1BDUkVMX0JSQU5DSCwKCgoKCiAgQkZE
X1JFTE9DX0FSTV9QQ1JFTF9CTFgsCgoKCgogIEJGRF9SRUxPQ19USFVNQl9QQ1JFTF9CTFgsCgoK
CiAgQkZEX1JFTE9DX0FSTV9JTU1FRElBVEUsCiAgQkZEX1JFTE9DX0FSTV9BRFJMX0lNTUVESUFU
RSwKICBCRkRfUkVMT0NfQVJNX09GRlNFVF9JTU0sCiAgQkZEX1JFTE9DX0FSTV9TSElGVF9JTU0s
CiAgQkZEX1JFTE9DX0FSTV9TV0ksCiAgQkZEX1JFTE9DX0FSTV9NVUxUSSwKICBCRkRfUkVMT0Nf
QVJNX0NQX09GRl9JTU0sCiAgQkZEX1JFTE9DX0FSTV9BRFJfSU1NLAogIEJGRF9SRUxPQ19BUk1f
TERSX0lNTSwKICBCRkRfUkVMT0NfQVJNX0xJVEVSQUwsCiAgQkZEX1JFTE9DX0FSTV9JTl9QT09M
LAogIEJGRF9SRUxPQ19BUk1fT0ZGU0VUX0lNTTgsCiAgQkZEX1JFTE9DX0FSTV9IV0xJVEVSQUws
CiAgQkZEX1JFTE9DX0FSTV9USFVNQl9BREQsCiAgQkZEX1JFTE9DX0FSTV9USFVNQl9JTU0sCiAg
QkZEX1JFTE9DX0FSTV9USFVNQl9TSElGVCwKICBCRkRfUkVMT0NfQVJNX1RIVU1CX09GRlNFVCwK
ICBCRkRfUkVMT0NfQVJNX0dPVDEyLAogIEJGRF9SRUxPQ19BUk1fR09UMzIsCiAgQkZEX1JFTE9D
X0FSTV9KVU1QX1NMT1QsCiAgQkZEX1JFTE9DX0FSTV9DT1BZLAogIEJGRF9SRUxPQ19BUk1fR0xP
Ql9EQVQsCiAgQkZEX1JFTE9DX0FSTV9QTFQzMiwKICBCRkRfUkVMT0NfQVJNX1JFTEFUSVZFLAog
IEJGRF9SRUxPQ19BUk1fR09UT0ZGLAogIEJGRF9SRUxPQ19BUk1fR09UUEMsCgoKICBCRkRfUkVM
T0NfU0hfUENESVNQOEJZMiwKICBCRkRfUkVMT0NfU0hfUENESVNQMTJCWTIsCiAgQkZEX1JFTE9D
X1NIX0lNTTQsCiAgQkZEX1JFTE9DX1NIX0lNTTRCWTIsCiAgQkZEX1JFTE9DX1NIX0lNTTRCWTQs
CiAgQkZEX1JFTE9DX1NIX0lNTTgsCiAgQkZEX1JFTE9DX1NIX0lNTThCWTIsCiAgQkZEX1JFTE9D
X1NIX0lNTThCWTQsCiAgQkZEX1JFTE9DX1NIX1BDUkVMSU1NOEJZMiwKICBCRkRfUkVMT0NfU0hf
UENSRUxJTU04Qlk0LAogIEJGRF9SRUxPQ19TSF9TV0lUQ0gxNiwKICBCRkRfUkVMT0NfU0hfU1dJ
VENIMzIsCiAgQkZEX1JFTE9DX1NIX1VTRVMsCiAgQkZEX1JFTE9DX1NIX0NPVU5ULAogIEJGRF9S
RUxPQ19TSF9BTElHTiwKICBCRkRfUkVMT0NfU0hfQ09ERSwKICBCRkRfUkVMT0NfU0hfREFUQSwK
ICBCRkRfUkVMT0NfU0hfTEFCRUwsCiAgQkZEX1JFTE9DX1NIX0xPT1BfU1RBUlQsCiAgQkZEX1JF
TE9DX1NIX0xPT1BfRU5ELAogIEJGRF9SRUxPQ19TSF9DT1BZLAogIEJGRF9SRUxPQ19TSF9HTE9C
X0RBVCwKICBCRkRfUkVMT0NfU0hfSk1QX1NMT1QsCiAgQkZEX1JFTE9DX1NIX1JFTEFUSVZFLAog
IEJGRF9SRUxPQ19TSF9HT1RQQywKICBCRkRfUkVMT0NfU0hfR09UX0xPVzE2LAogIEJGRF9SRUxP
Q19TSF9HT1RfTUVETE9XMTYsCiAgQkZEX1JFTE9DX1NIX0dPVF9NRURISTE2LAogIEJGRF9SRUxP
Q19TSF9HT1RfSEkxNiwKICBCRkRfUkVMT0NfU0hfR09UUExUX0xPVzE2LAogIEJGRF9SRUxPQ19T
SF9HT1RQTFRfTUVETE9XMTYsCiAgQkZEX1JFTE9DX1NIX0dPVFBMVF9NRURISTE2LAogIEJGRF9S
RUxPQ19TSF9HT1RQTFRfSEkxNiwKICBCRkRfUkVMT0NfU0hfUExUX0xPVzE2LAogIEJGRF9SRUxP
Q19TSF9QTFRfTUVETE9XMTYsCiAgQkZEX1JFTE9DX1NIX1BMVF9NRURISTE2LAogIEJGRF9SRUxP
Q19TSF9QTFRfSEkxNiwKICBCRkRfUkVMT0NfU0hfR09UT0ZGX0xPVzE2LAogIEJGRF9SRUxPQ19T
SF9HT1RPRkZfTUVETE9XMTYsCiAgQkZEX1JFTE9DX1NIX0dPVE9GRl9NRURISTE2LAogIEJGRF9S
RUxPQ19TSF9HT1RPRkZfSEkxNiwKICBCRkRfUkVMT0NfU0hfR09UUENfTE9XMTYsCiAgQkZEX1JF
TE9DX1NIX0dPVFBDX01FRExPVzE2LAogIEJGRF9SRUxPQ19TSF9HT1RQQ19NRURISTE2LAogIEJG
RF9SRUxPQ19TSF9HT1RQQ19ISTE2LAogIEJGRF9SRUxPQ19TSF9DT1BZNjQsCiAgQkZEX1JFTE9D
X1NIX0dMT0JfREFUNjQsCiAgQkZEX1JFTE9DX1NIX0pNUF9TTE9UNjQsCiAgQkZEX1JFTE9DX1NI
X1JFTEFUSVZFNjQsCiAgQkZEX1JFTE9DX1NIX0dPVDEwQlk0LAogIEJGRF9SRUxPQ19TSF9HT1Qx
MEJZOCwKICBCRkRfUkVMT0NfU0hfR09UUExUMTBCWTQsCiAgQkZEX1JFTE9DX1NIX0dPVFBMVDEw
Qlk4LAogIEJGRF9SRUxPQ19TSF9HT1RQTFQzMiwKICBCRkRfUkVMT0NfU0hfU0hNRURJQV9DT0RF
LAogIEJGRF9SRUxPQ19TSF9JTU1VNSwKICBCRkRfUkVMT0NfU0hfSU1NUzYsCiAgQkZEX1JFTE9D
X1NIX0lNTVM2QlkzMiwKICBCRkRfUkVMT0NfU0hfSU1NVTYsCiAgQkZEX1JFTE9DX1NIX0lNTVMx
MCwKICBCRkRfUkVMT0NfU0hfSU1NUzEwQlkyLAogIEJGRF9SRUxPQ19TSF9JTU1TMTBCWTQsCiAg
QkZEX1JFTE9DX1NIX0lNTVMxMEJZOCwKICBCRkRfUkVMT0NfU0hfSU1NUzE2LAogIEJGRF9SRUxP
Q19TSF9JTU1VMTYsCiAgQkZEX1JFTE9DX1NIX0lNTV9MT1cxNiwKICBCRkRfUkVMT0NfU0hfSU1N
X0xPVzE2X1BDUkVMLAogIEJGRF9SRUxPQ19TSF9JTU1fTUVETE9XMTYsCiAgQkZEX1JFTE9DX1NI
X0lNTV9NRURMT1cxNl9QQ1JFTCwKICBCRkRfUkVMT0NfU0hfSU1NX01FREhJMTYsCiAgQkZEX1JF
TE9DX1NIX0lNTV9NRURISTE2X1BDUkVMLAogIEJGRF9SRUxPQ19TSF9JTU1fSEkxNiwKICBCRkRf
UkVMT0NfU0hfSU1NX0hJMTZfUENSRUwsCiAgQkZEX1JFTE9DX1NIX1BUXzE2LAoKCgogIEJGRF9S
RUxPQ19USFVNQl9QQ1JFTF9CUkFOQ0g5LAogIEJGRF9SRUxPQ19USFVNQl9QQ1JFTF9CUkFOQ0gx
MiwKICBCRkRfUkVMT0NfVEhVTUJfUENSRUxfQlJBTkNIMjMsCgoKCgoKICBCRkRfUkVMT0NfQVJD
X0IyMl9QQ1JFTCwKCgoKCiAgQkZEX1JFTE9DX0FSQ19CMjYsCgoKCgogIEJGRF9SRUxPQ19EMTBW
XzEwX1BDUkVMX1IsCgoKCgoKCiAgQkZEX1JFTE9DX0QxMFZfMTBfUENSRUxfTCwKCgoKICBCRkRf
UkVMT0NfRDEwVl8xOCwKCgoKICBCRkRfUkVMT0NfRDEwVl8xOF9QQ1JFTCwKCgoKICBCRkRfUkVM
T0NfRDMwVl82LAoKCgogIEJGRF9SRUxPQ19EMzBWXzlfUENSRUwsCgoKCgoKICBCRkRfUkVMT0Nf
RDMwVl85X1BDUkVMX1IsCgoKCiAgQkZEX1JFTE9DX0QzMFZfMTUsCgoKCiAgQkZEX1JFTE9DX0Qz
MFZfMTVfUENSRUwsCgoKCgoKICBCRkRfUkVMT0NfRDMwVl8xNV9QQ1JFTF9SLAoKCgogIEJGRF9S
RUxPQ19EMzBWXzIxLAoKCgogIEJGRF9SRUxPQ19EMzBWXzIxX1BDUkVMLAoKCgoKCiAgQkZEX1JF
TE9DX0QzMFZfMjFfUENSRUxfUiwKCgogIEJGRF9SRUxPQ19EMzBWXzMyLAoKCiAgQkZEX1JFTE9D
X0QzMFZfMzJfUENSRUwsCgoKICBCRkRfUkVMT0NfRExYX0hJMTZfUywKCgogIEJGRF9SRUxPQ19E
TFhfTE8xNiwKCgogIEJGRF9SRUxPQ19ETFhfSk1QMjYsCgoKCiAgQkZEX1JFTE9DX00zMlJfMjQs
CgoKICBCRkRfUkVMT0NfTTMyUl8xMF9QQ1JFTCwKCgogIEJGRF9SRUxPQ19NMzJSXzE4X1BDUkVM
LAoKCiAgQkZEX1JFTE9DX00zMlJfMjZfUENSRUwsCgoKCiAgQkZEX1JFTE9DX00zMlJfSEkxNl9V
TE8sCgoKCiAgQkZEX1JFTE9DX00zMlJfSEkxNl9TTE8sCgoKICBCRkRfUkVMT0NfTTMyUl9MTzE2
LAoKCgogIEJGRF9SRUxPQ19NMzJSX1NEQTE2LAoKCiAgQkZEX1JFTE9DX1Y4NTBfOV9QQ1JFTCwK
CgogIEJGRF9SRUxPQ19WODUwXzIyX1BDUkVMLAoKCiAgQkZEX1JFTE9DX1Y4NTBfU0RBXzE2XzE2
X09GRlNFVCwKCgoKICBCRkRfUkVMT0NfVjg1MF9TREFfMTVfMTZfT0ZGU0VULAoKCiAgQkZEX1JF
TE9DX1Y4NTBfWkRBXzE2XzE2X09GRlNFVCwKCgoKICBCRkRfUkVMT0NfVjg1MF9aREFfMTVfMTZf
T0ZGU0VULAoKCgogIEJGRF9SRUxPQ19WODUwX1REQV82XzhfT0ZGU0VULAoKCgogIEJGRF9SRUxP
Q19WODUwX1REQV83XzhfT0ZGU0VULAoKCiAgQkZEX1JFTE9DX1Y4NTBfVERBXzdfN19PRkZTRVQs
CgoKICBCRkRfUkVMT0NfVjg1MF9UREFfMTZfMTZfT0ZGU0VULAoKCgogIEJGRF9SRUxPQ19WODUw
X1REQV80XzVfT0ZGU0VULAoKCiAgQkZEX1JFTE9DX1Y4NTBfVERBXzRfNF9PRkZTRVQsCgoKCiAg
QkZEX1JFTE9DX1Y4NTBfU0RBXzE2XzE2X1NQTElUX09GRlNFVCwKCgoKICBCRkRfUkVMT0NfVjg1
MF9aREFfMTZfMTZfU1BMSVRfT0ZGU0VULAoKCiAgQkZEX1JFTE9DX1Y4NTBfQ0FMTFRfNl83X09G
RlNFVCwKCgogIEJGRF9SRUxPQ19WODUwX0NBTExUXzE2XzE2X09GRlNFVCwKCgoKCiAgQkZEX1JF
TE9DX01OMTAzMDBfMzJfUENSRUwsCgoKCiAgQkZEX1JFTE9DX01OMTAzMDBfMTZfUENSRUwsCgoK
CgogIEJGRF9SRUxPQ19USUMzMF9MRFAsCgoKCgogIEJGRF9SRUxPQ19USUM1NFhfUEFSVExTNywK
CgoKCiAgQkZEX1JFTE9DX1RJQzU0WF9QQVJUTVM5LAoKCiAgQkZEX1JFTE9DX1RJQzU0WF8yMywK
CgoKCiAgQkZEX1JFTE9DX1RJQzU0WF8xNl9PRl8yMywKCgoKCiAgQkZEX1JFTE9DX1RJQzU0WF9N
UzdfT0ZfMjMsCgoKICBCRkRfUkVMT0NfRlIzMF80OCwKCgoKICBCRkRfUkVMT0NfRlIzMF8yMCwK
CgoKICBCRkRfUkVMT0NfRlIzMF82X0lOXzQsCgoKCiAgQkZEX1JFTE9DX0ZSMzBfOF9JTl84LAoK
CgogIEJGRF9SRUxPQ19GUjMwXzlfSU5fOCwKCgoKICBCRkRfUkVMT0NfRlIzMF8xMF9JTl84LAoK
CgogIEJGRF9SRUxPQ19GUjMwXzlfUENSRUwsCgoKCiAgQkZEX1JFTE9DX0ZSMzBfMTJfUENSRUws
CgoKICBCRkRfUkVMT0NfTUNPUkVfUENSRUxfSU1NOEJZNCwKICBCRkRfUkVMT0NfTUNPUkVfUENS
RUxfSU1NMTFCWTIsCiAgQkZEX1JFTE9DX01DT1JFX1BDUkVMX0lNTTRCWTIsCiAgQkZEX1JFTE9D
X01DT1JFX1BDUkVMXzMyLAogIEJGRF9SRUxPQ19NQ09SRV9QQ1JFTF9KU1JfSU1NMTFCWTIsCiAg
QkZEX1JFTE9DX01DT1JFX1JWQSwKCgogIEJGRF9SRUxPQ19NTUlYX0dFVEEsCiAgQkZEX1JFTE9D
X01NSVhfR0VUQV8xLAogIEJGRF9SRUxPQ19NTUlYX0dFVEFfMiwKICBCRkRfUkVMT0NfTU1JWF9H
RVRBXzMsCgoKICBCRkRfUkVMT0NfTU1JWF9DQlJBTkNILAogIEJGRF9SRUxPQ19NTUlYX0NCUkFO
Q0hfSiwKICBCRkRfUkVMT0NfTU1JWF9DQlJBTkNIXzEsCiAgQkZEX1JFTE9DX01NSVhfQ0JSQU5D
SF8yLAogIEJGRF9SRUxPQ19NTUlYX0NCUkFOQ0hfMywKCgogIEJGRF9SRUxPQ19NTUlYX1BVU0hK
LAogIEJGRF9SRUxPQ19NTUlYX1BVU0hKXzEsCiAgQkZEX1JFTE9DX01NSVhfUFVTSEpfMiwKICBC
RkRfUkVMT0NfTU1JWF9QVVNISl8zLAoKCiAgQkZEX1JFTE9DX01NSVhfSk1QLAogIEJGRF9SRUxP
Q19NTUlYX0pNUF8xLAogIEJGRF9SRUxPQ19NTUlYX0pNUF8yLAogIEJGRF9SRUxPQ19NTUlYX0pN
UF8zLAoKCgogIEJGRF9SRUxPQ19NTUlYX0FERFIxOSwKCgogIEJGRF9SRUxPQ19NTUlYX0FERFIy
NywKCgoKICBCRkRfUkVMT0NfTU1JWF9SRUdfT1JfQllURSwKCgoKICBCRkRfUkVMT0NfTU1JWF9S
RUcsCgoKCiAgQkZEX1JFTE9DX01NSVhfQkFTRV9QTFVTX09GRlNFVCwKCgoKICBCRkRfUkVMT0Nf
TU1JWF9MT0NBTCwKCgoKICBCRkRfUkVMT0NfQVZSXzdfUENSRUwsCgoKCiAgQkZEX1JFTE9DX0FW
Ul8xM19QQ1JFTCwKCgoKICBCRkRfUkVMT0NfQVZSXzE2X1BNLAoKCgogIEJGRF9SRUxPQ19BVlJf
TE84X0xESSwKCgoKICBCRkRfUkVMT0NfQVZSX0hJOF9MREksCgoKCiAgQkZEX1JFTE9DX0FWUl9I
SDhfTERJLAoKCgogIEJGRF9SRUxPQ19BVlJfTE84X0xESV9ORUcsCgoKCgogIEJGRF9SRUxPQ19B
VlJfSEk4X0xESV9ORUcsCgoKCgogIEJGRF9SRUxPQ19BVlJfSEg4X0xESV9ORUcsCgoKCiAgQkZE
X1JFTE9DX0FWUl9MTzhfTERJX1BNLAoKCgogIEJGRF9SRUxPQ19BVlJfSEk4X0xESV9QTSwKCgoK
ICBCRkRfUkVMT0NfQVZSX0hIOF9MRElfUE0sCgoKCiAgQkZEX1JFTE9DX0FWUl9MTzhfTERJX1BN
X05FRywKCgoKCiAgQkZEX1JFTE9DX0FWUl9ISThfTERJX1BNX05FRywKCgoKCiAgQkZEX1JFTE9D
X0FWUl9ISDhfTERJX1BNX05FRywKCgoKICBCRkRfUkVMT0NfQVZSX0NBTEwsCgoKICBCRkRfUkVM
T0NfMzkwXzEyLAoKCiAgQkZEX1JFTE9DXzM5MF9HT1QxMiwKCgogIEJGRF9SRUxPQ18zOTBfUExU
MzIsCgoKICBCRkRfUkVMT0NfMzkwX0NPUFksCgoKICBCRkRfUkVMT0NfMzkwX0dMT0JfREFULAoK
CiAgQkZEX1JFTE9DXzM5MF9KTVBfU0xPVCwKCgogIEJGRF9SRUxPQ18zOTBfUkVMQVRJVkUsCgoK
ICBCRkRfUkVMT0NfMzkwX0dPVFBDLAoKCiAgQkZEX1JFTE9DXzM5MF9HT1QxNiwKCgogIEJGRF9S
RUxPQ18zOTBfUEMxNkRCTCwKCgogIEJGRF9SRUxPQ18zOTBfUExUMTZEQkwsCgoKICBCRkRfUkVM
T0NfMzkwX1BDMzJEQkwsCgoKICBCRkRfUkVMT0NfMzkwX1BMVDMyREJMLAoKCiAgQkZEX1JFTE9D
XzM5MF9HT1RQQ0RCTCwKCgogIEJGRF9SRUxPQ18zOTBfR09UNjQsCgoKICBCRkRfUkVMT0NfMzkw
X1BMVDY0LAoKCiAgQkZEX1JFTE9DXzM5MF9HT1RFTlQsCiMgMjkyMSAiLi4vYmZkL2JmZC5oIgog
IEJGRF9SRUxPQ19WVEFCTEVfSU5IRVJJVCwKICBCRkRfUkVMT0NfVlRBQkxFX0VOVFJZLAoKCiAg
QkZEX1JFTE9DX0lBNjRfSU1NMTQsCiAgQkZEX1JFTE9DX0lBNjRfSU1NMjIsCiAgQkZEX1JFTE9D
X0lBNjRfSU1NNjQsCiAgQkZEX1JFTE9DX0lBNjRfRElSMzJNU0IsCiAgQkZEX1JFTE9DX0lBNjRf
RElSMzJMU0IsCiAgQkZEX1JFTE9DX0lBNjRfRElSNjRNU0IsCiAgQkZEX1JFTE9DX0lBNjRfRElS
NjRMU0IsCiAgQkZEX1JFTE9DX0lBNjRfR1BSRUwyMiwKICBCRkRfUkVMT0NfSUE2NF9HUFJFTDY0
SSwKICBCRkRfUkVMT0NfSUE2NF9HUFJFTDMyTVNCLAogIEJGRF9SRUxPQ19JQTY0X0dQUkVMMzJM
U0IsCiAgQkZEX1JFTE9DX0lBNjRfR1BSRUw2NE1TQiwKICBCRkRfUkVMT0NfSUE2NF9HUFJFTDY0
TFNCLAogIEJGRF9SRUxPQ19JQTY0X0xUT0ZGMjIsCiAgQkZEX1JFTE9DX0lBNjRfTFRPRkY2NEks
CiAgQkZEX1JFTE9DX0lBNjRfUExUT0ZGMjIsCiAgQkZEX1JFTE9DX0lBNjRfUExUT0ZGNjRJLAog
IEJGRF9SRUxPQ19JQTY0X1BMVE9GRjY0TVNCLAogIEJGRF9SRUxPQ19JQTY0X1BMVE9GRjY0TFNC
LAogIEJGRF9SRUxPQ19JQTY0X0ZQVFI2NEksCiAgQkZEX1JFTE9DX0lBNjRfRlBUUjMyTVNCLAog
IEJGRF9SRUxPQ19JQTY0X0ZQVFIzMkxTQiwKICBCRkRfUkVMT0NfSUE2NF9GUFRSNjRNU0IsCiAg
QkZEX1JFTE9DX0lBNjRfRlBUUjY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVMMjFCLAogIEJG
RF9SRUxPQ19JQTY0X1BDUkVMMjFCSSwKICBCRkRfUkVMT0NfSUE2NF9QQ1JFTDIxTSwKICBCRkRf
UkVMT0NfSUE2NF9QQ1JFTDIxRiwKICBCRkRfUkVMT0NfSUE2NF9QQ1JFTDIyLAogIEJGRF9SRUxP
Q19JQTY0X1BDUkVMNjBCLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVMNjRJLAogIEJGRF9SRUxPQ19J
QTY0X1BDUkVMMzJNU0IsCiAgQkZEX1JFTE9DX0lBNjRfUENSRUwzMkxTQiwKICBCRkRfUkVMT0Nf
SUE2NF9QQ1JFTDY0TVNCLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVMNjRMU0IsCiAgQkZEX1JFTE9D
X0lBNjRfTFRPRkZfRlBUUjIyLAogIEJGRF9SRUxPQ19JQTY0X0xUT0ZGX0ZQVFI2NEksCiAgQkZE
X1JFTE9DX0lBNjRfTFRPRkZfRlBUUjMyTVNCLAogIEJGRF9SRUxPQ19JQTY0X0xUT0ZGX0ZQVFIz
MkxTQiwKICBCRkRfUkVMT0NfSUE2NF9MVE9GRl9GUFRSNjRNU0IsCiAgQkZEX1JFTE9DX0lBNjRf
TFRPRkZfRlBUUjY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X1NFR1JFTDMyTVNCLAogIEJGRF9SRUxP
Q19JQTY0X1NFR1JFTDMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X1NFR1JFTDY0TVNCLAogIEJGRF9S
RUxPQ19JQTY0X1NFR1JFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X1NFQ1JFTDMyTVNCLAogIEJG
RF9SRUxPQ19JQTY0X1NFQ1JFTDMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X1NFQ1JFTDY0TVNCLAog
IEJGRF9SRUxPQ19JQTY0X1NFQ1JFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X1JFTDMyTVNCLAog
IEJGRF9SRUxPQ19JQTY0X1JFTDMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X1JFTDY0TVNCLAogIEJG
RF9SRUxPQ19JQTY0X1JFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X0xUVjMyTVNCLAogIEJGRF9S
RUxPQ19JQTY0X0xUVjMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X0xUVjY0TVNCLAogIEJGRF9SRUxP
Q19JQTY0X0xUVjY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X0lQTFRNU0IsCiAgQkZEX1JFTE9DX0lB
NjRfSVBMVExTQiwKICBCRkRfUkVMT0NfSUE2NF9DT1BZLAogIEJGRF9SRUxPQ19JQTY0X0xUT0ZG
MjJYLAogIEJGRF9SRUxPQ19JQTY0X0xEWE1PViwKICBCRkRfUkVMT0NfSUE2NF9UUFJFTDE0LAog
IEJGRF9SRUxPQ19JQTY0X1RQUkVMMjIsCiAgQkZEX1JFTE9DX0lBNjRfVFBSRUw2NEksCiAgQkZE
X1JFTE9DX0lBNjRfVFBSRUw2NE1TQiwKICBCRkRfUkVMT0NfSUE2NF9UUFJFTDY0TFNCLAogIEJG
RF9SRUxPQ19JQTY0X0xUT0ZGX1RQUkVMMjIsCiAgQkZEX1JFTE9DX0lBNjRfRFRQTU9ENjRNU0Is
CiAgQkZEX1JFTE9DX0lBNjRfRFRQTU9ENjRMU0IsCiAgQkZEX1JFTE9DX0lBNjRfTFRPRkZfRFRQ
TU9EMjIsCiAgQkZEX1JFTE9DX0lBNjRfRFRQUkVMMTQsCiAgQkZEX1JFTE9DX0lBNjRfRFRQUkVM
MjIsCiAgQkZEX1JFTE9DX0lBNjRfRFRQUkVMNjRJLAogIEJGRF9SRUxPQ19JQTY0X0RUUFJFTDMy
TVNCLAogIEJGRF9SRUxPQ19JQTY0X0RUUFJFTDMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X0RUUFJF
TDY0TVNCLAogIEJGRF9SRUxPQ19JQTY0X0RUUFJFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X0xU
T0ZGX0RUUFJFTDIyLAoKCgogIEJGRF9SRUxPQ19NNjhIQzExX0hJOCwKCgoKICBCRkRfUkVMT0Nf
TTY4SEMxMV9MTzgsCgoKCiAgQkZEX1JFTE9DX002OEhDMTFfM0IsCgoKCiAgQkZEX1JFTE9DX0NS
SVNfQkRJU1A4LAogIEJGRF9SRUxPQ19DUklTX1VOU0lHTkVEXzUsCiAgQkZEX1JFTE9DX0NSSVNf
U0lHTkVEXzYsCiAgQkZEX1JFTE9DX0NSSVNfVU5TSUdORURfNiwKICBCRkRfUkVMT0NfQ1JJU19V
TlNJR05FRF80LAoKCiAgQkZEX1JFTE9DX0NSSVNfQ09QWSwKICBCRkRfUkVMT0NfQ1JJU19HTE9C
X0RBVCwKICBCRkRfUkVMT0NfQ1JJU19KVU1QX1NMT1QsCiAgQkZEX1JFTE9DX0NSSVNfUkVMQVRJ
VkUsCgoKICBCRkRfUkVMT0NfQ1JJU18zMl9HT1QsCgoKICBCRkRfUkVMT0NfQ1JJU18xNl9HT1Qs
CgoKICBCRkRfUkVMT0NfQ1JJU18zMl9HT1RQTFQsCgoKICBCRkRfUkVMT0NfQ1JJU18xNl9HT1RQ
TFQsCgoKICBCRkRfUkVMT0NfQ1JJU18zMl9HT1RSRUwsCgoKICBCRkRfUkVMT0NfQ1JJU18zMl9Q
TFRfR09UUkVMLAoKCiAgQkZEX1JFTE9DX0NSSVNfMzJfUExUX1BDUkVMLAoKCiAgQkZEX1JFTE9D
Xzg2MF9DT1BZLAogIEJGRF9SRUxPQ184NjBfR0xPQl9EQVQsCiAgQkZEX1JFTE9DXzg2MF9KVU1Q
X1NMT1QsCiAgQkZEX1JFTE9DXzg2MF9SRUxBVElWRSwKICBCRkRfUkVMT0NfODYwX1BDMjYsCiAg
QkZEX1JFTE9DXzg2MF9QTFQyNiwKICBCRkRfUkVMT0NfODYwX1BDMTYsCiAgQkZEX1JFTE9DXzg2
MF9MT1cwLAogIEJGRF9SRUxPQ184NjBfU1BMSVQwLAogIEJGRF9SRUxPQ184NjBfTE9XMSwKICBC
RkRfUkVMT0NfODYwX1NQTElUMSwKICBCRkRfUkVMT0NfODYwX0xPVzIsCiAgQkZEX1JFTE9DXzg2
MF9TUExJVDIsCiAgQkZEX1JFTE9DXzg2MF9MT1czLAogIEJGRF9SRUxPQ184NjBfTE9HT1QwLAog
IEJGRF9SRUxPQ184NjBfU1BHT1QwLAogIEJGRF9SRUxPQ184NjBfTE9HT1QxLAogIEJGRF9SRUxP
Q184NjBfU1BHT1QxLAogIEJGRF9SRUxPQ184NjBfTE9HT1RPRkYwLAogIEJGRF9SRUxPQ184NjBf
U1BHT1RPRkYwLAogIEJGRF9SRUxPQ184NjBfTE9HT1RPRkYxLAogIEJGRF9SRUxPQ184NjBfU1BH
T1RPRkYxLAogIEJGRF9SRUxPQ184NjBfTE9HT1RPRkYyLAogIEJGRF9SRUxPQ184NjBfTE9HT1RP
RkYzLAogIEJGRF9SRUxPQ184NjBfTE9QQywKICBCRkRfUkVMT0NfODYwX0hJR0hBREosCiAgQkZE
X1JFTE9DXzg2MF9IQUdPVCwKICBCRkRfUkVMT0NfODYwX0hBR09UT0ZGLAogIEJGRF9SRUxPQ184
NjBfSEFQQywKICBCRkRfUkVMT0NfODYwX0hJR0gsCiAgQkZEX1JFTE9DXzg2MF9ISUdPVCwKICBC
RkRfUkVMT0NfODYwX0hJR09UT0ZGLAoKCiAgQkZEX1JFTE9DX09QRU5SSVNDX0FCU18yNiwKICBC
RkRfUkVMT0NfT1BFTlJJU0NfUkVMXzI2LAoKCiAgQkZEX1JFTE9DX0g4X0RJUjE2QTgsCiAgQkZE
X1JFTE9DX0g4X0RJUjE2UjgsCiAgQkZEX1JFTE9DX0g4X0RJUjI0QTgsCiAgQkZEX1JFTE9DX0g4
X0RJUjI0UjgsCiAgQkZEX1JFTE9DX0g4X0RJUjMyQTE2LAoKCiAgQkZEX1JFTE9DX1hTVE9STVkx
Nl9SRUxfMTIsCiAgQkZEX1JFTE9DX1hTVE9STVkxNl8yNCwKICBCRkRfUkVMT0NfWFNUT1JNWTE2
X0ZQVFIxNiwKCgogIEJGRF9SRUxPQ19WQVhfR0xPQl9EQVQsCiAgQkZEX1JFTE9DX1ZBWF9KTVBf
U0xPVCwKICBCRkRfUkVMT0NfVkFYX1JFTEFUSVZFLAogIEJGRF9SRUxPQ19VTlVTRUQgfTsKdHlw
ZWRlZiBlbnVtIGJmZF9yZWxvY19jb2RlX3JlYWwgYmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlOwpy
ZWxvY19ob3d0b190eXBlICoKYmZkX3JlbG9jX3R5cGVfbG9va3VwIChiZmQgKmFiZmQsIGJmZF9y
ZWxvY19jb2RlX3JlYWxfdHlwZSBjb2RlKTsKCmNvbnN0IGNoYXIgKgpiZmRfZ2V0X3JlbG9jX2Nv
ZGVfbmFtZSAoYmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlIGNvZGUpOwoKCgp0eXBlZGVmIHN0cnVj
dCBzeW1ib2xfY2FjaGVfZW50cnkKewojIDMxMjcgIi4uL2JmZC9iZmQuaCIKICBzdHJ1Y3QgX2Jm
ZCAqdGhlX2JmZDsKCgoKICBjb25zdCBjaGFyICpuYW1lOwoKCgoKICBzeW12YWx1ZSB2YWx1ZTsK
IyAzMjIzICIuLi9iZmQvYmZkLmgiCiAgZmxhZ3dvcmQgZmxhZ3M7CgoKCgogIHN0cnVjdCBzZWMg
KnNlY3Rpb247CgoKICB1bmlvbgogICAgewogICAgICB2b2lkICogcDsKICAgICAgYmZkX3ZtYSBp
OwogICAgfQogIHVkYXRhOwp9CmFzeW1ib2w7CgoKCgpib29sZWFuCmJmZF9pc19sb2NhbF9sYWJl
bCAoYmZkICphYmZkLCBhc3ltYm9sICpzeW0pOwoKYm9vbGVhbgpiZmRfaXNfbG9jYWxfbGFiZWxf
bmFtZSAoYmZkICphYmZkLCBjb25zdCBjaGFyICpuYW1lKTsKIyAzMjU2ICIuLi9iZmQvYmZkLmgi
CmJvb2xlYW4KYmZkX3NldF9zeW10YWIgKGJmZCAqYWJmZCwgYXN5bWJvbCAqKmxvY2F0aW9uLCB1
bnNpZ25lZCBpbnQgY291bnQpOwoKdm9pZApiZmRfcHJpbnRfc3ltYm9sX3ZhbmRmIChiZmQgKmFi
ZmQsIHZvaWQgKiBmaWxlLCBhc3ltYm9sICpzeW1ib2wpOwoKCgoKYXN5bWJvbCAqCl9iZmRfZ2Vu
ZXJpY19tYWtlX2VtcHR5X3N5bWJvbCAoYmZkICopOwoKCgoKaW50CmJmZF9kZWNvZGVfc3ltY2xh
c3MgKGFzeW1ib2wgKnN5bWJvbCk7Cgpib29sZWFuCmJmZF9pc191bmRlZmluZWRfc3ltY2xhc3Mg
KGludCBzeW1jbGFzcyk7Cgp2b2lkCmJmZF9zeW1ib2xfaW5mbyAoYXN5bWJvbCAqc3ltYm9sLCBz
eW1ib2xfaW5mbyAqcmV0KTsKCmJvb2xlYW4KYmZkX2NvcHlfcHJpdmF0ZV9zeW1ib2xfZGF0YSAo
YmZkICppYmZkLCBhc3ltYm9sICppc3ltLCBiZmQgKm9iZmQsIGFzeW1ib2wgKm9zeW0pOwoKCgoK
CgpzdHJ1Y3QgX2JmZAp7CgogIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwoKCiAgY29uc3Qgc3RydWN0
IGJmZF90YXJnZXQgKnh2ZWM7CiMgMzMwMyAiLi4vYmZkL2JmZC5oIgogIHZvaWQgKiBpb3N0cmVh
bTsKCgoKICBib29sZWFuIGNhY2hlYWJsZTsKCgoKCiAgYm9vbGVhbiB0YXJnZXRfZGVmYXVsdGVk
OwoKCgogIHN0cnVjdCBfYmZkICpscnVfcHJldiwgKmxydV9uZXh0OwoKCgogIHVmaWxlX3B0ciB3
aGVyZTsKCgogIGJvb2xlYW4gb3BlbmVkX29uY2U7CgoKCiAgYm9vbGVhbiBtdGltZV9zZXQ7CgoK
ICBsb25nIG10aW1lOwoKCiAgaW50IGlmZDsKCgogIGJmZF9mb3JtYXQgZm9ybWF0OwoKCiAgZW51
bSBiZmRfZGlyZWN0aW9uCiAgICB7CiAgICAgIG5vX2RpcmVjdGlvbiA9IDAsCiAgICAgIHJlYWRf
ZGlyZWN0aW9uID0gMSwKICAgICAgd3JpdGVfZGlyZWN0aW9uID0gMiwKICAgICAgYm90aF9kaXJl
Y3Rpb24gPSAzCiAgICB9CiAgZGlyZWN0aW9uOwoKCiAgZmxhZ3dvcmQgZmxhZ3M7CgoKCgogIHVm
aWxlX3B0ciBvcmlnaW47CgoKCiAgYm9vbGVhbiBvdXRwdXRfaGFzX2JlZ3VuOwoKCiAgc3RydWN0
IGJmZF9oYXNoX3RhYmxlIHNlY3Rpb25faHRhYjsKCgogIHN0cnVjdCBzZWMgKnNlY3Rpb25zOwoK
CiAgc3RydWN0IHNlYyAqKnNlY3Rpb25fdGFpbDsKCgogIHVuc2lnbmVkIGludCBzZWN0aW9uX2Nv
dW50OwoKCgogIGJmZF92bWEgc3RhcnRfYWRkcmVzczsKCgogIHVuc2lnbmVkIGludCBzeW1jb3Vu
dDsKCgogIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKipvdXRzeW1ib2xzOwoKCiAgY29uc3Qg
c3RydWN0IGJmZF9hcmNoX2luZm8gKmFyY2hfaW5mbzsKCgogIHZvaWQgKiBhcmVsdF9kYXRhOwog
IHN0cnVjdCBfYmZkICpteV9hcmNoaXZlOwogIHN0cnVjdCBfYmZkICpuZXh0OwogIHN0cnVjdCBf
YmZkICphcmNoaXZlX2hlYWQ7CiAgYm9vbGVhbiBoYXNfYXJtYXA7CgoKICBzdHJ1Y3QgX2JmZCAq
bGlua19uZXh0OwoKCgogIGludCBhcmNoaXZlX3Bhc3M7CgoKICB1bmlvbgogICAgewogICAgICBz
dHJ1Y3QgYW91dF9kYXRhX3N0cnVjdCAqYW91dF9kYXRhOwogICAgICBzdHJ1Y3QgYXJ0ZGF0YSAq
YW91dF9hcl9kYXRhOwogICAgICBzdHJ1Y3QgX29hc3lzX2RhdGEgKm9hc3lzX29ial9kYXRhOwog
ICAgICBzdHJ1Y3QgX29hc3lzX2FyX2RhdGEgKm9hc3lzX2FyX2RhdGE7CiAgICAgIHN0cnVjdCBj
b2ZmX3RkYXRhICpjb2ZmX29ial9kYXRhOwogICAgICBzdHJ1Y3QgcGVfdGRhdGEgKnBlX29ial9k
YXRhOwogICAgICBzdHJ1Y3QgeGNvZmZfdGRhdGEgKnhjb2ZmX29ial9kYXRhOwogICAgICBzdHJ1
Y3QgZWNvZmZfdGRhdGEgKmVjb2ZmX29ial9kYXRhOwogICAgICBzdHJ1Y3QgaWVlZV9kYXRhX3N0
cnVjdCAqaWVlZV9kYXRhOwogICAgICBzdHJ1Y3QgaWVlZV9hcl9kYXRhX3N0cnVjdCAqaWVlZV9h
cl9kYXRhOwogICAgICBzdHJ1Y3Qgc3JlY19kYXRhX3N0cnVjdCAqc3JlY19kYXRhOwogICAgICBz
dHJ1Y3QgaWhleF9kYXRhX3N0cnVjdCAqaWhleF9kYXRhOwogICAgICBzdHJ1Y3QgdGVraGV4X2Rh
dGFfc3RydWN0ICp0ZWtoZXhfZGF0YTsKICAgICAgc3RydWN0IGVsZl9vYmpfdGRhdGEgKmVsZl9v
YmpfZGF0YTsKICAgICAgc3RydWN0IG5sbV9vYmpfdGRhdGEgKm5sbV9vYmpfZGF0YTsKICAgICAg
c3RydWN0IGJvdXRfZGF0YV9zdHJ1Y3QgKmJvdXRfZGF0YTsKICAgICAgc3RydWN0IG1tb19kYXRh
X3N0cnVjdCAqbW1vX2RhdGE7CiAgICAgIHN0cnVjdCBzdW5fY29yZV9zdHJ1Y3QgKnN1bl9jb3Jl
X2RhdGE7CiAgICAgIHN0cnVjdCBzY281X2NvcmVfc3RydWN0ICpzY281X2NvcmVfZGF0YTsKICAg
ICAgc3RydWN0IHRyYWRfY29yZV9zdHJ1Y3QgKnRyYWRfY29yZV9kYXRhOwogICAgICBzdHJ1Y3Qg
c29tX2RhdGFfc3RydWN0ICpzb21fZGF0YTsKICAgICAgc3RydWN0IGhwdXhfY29yZV9zdHJ1Y3Qg
KmhwdXhfY29yZV9kYXRhOwogICAgICBzdHJ1Y3QgaHBwYWJzZF9jb3JlX3N0cnVjdCAqaHBwYWJz
ZF9jb3JlX2RhdGE7CiAgICAgIHN0cnVjdCBzZ2lfY29yZV9zdHJ1Y3QgKnNnaV9jb3JlX2RhdGE7
CiAgICAgIHN0cnVjdCBseW54X2NvcmVfc3RydWN0ICpseW54X2NvcmVfZGF0YTsKICAgICAgc3Ry
dWN0IG9zZl9jb3JlX3N0cnVjdCAqb3NmX2NvcmVfZGF0YTsKICAgICAgc3RydWN0IGNpc2NvX2Nv
cmVfc3RydWN0ICpjaXNjb19jb3JlX2RhdGE7CiAgICAgIHN0cnVjdCB2ZXJzYWRvc19kYXRhX3N0
cnVjdCAqdmVyc2Fkb3NfZGF0YTsKICAgICAgc3RydWN0IG5ldGJzZF9jb3JlX3N0cnVjdCAqbmV0
YnNkX2NvcmVfZGF0YTsKICAgICAgdm9pZCAqIGFueTsKICAgIH0KICB0ZGF0YTsKCgogIHZvaWQg
KiB1c3JkYXRhOwoKCgoKICB2b2lkICogbWVtb3J5Owp9OwoKdHlwZWRlZiBlbnVtIGJmZF9lcnJv
cgp7CiAgYmZkX2Vycm9yX25vX2Vycm9yID0gMCwKICBiZmRfZXJyb3Jfc3lzdGVtX2NhbGwsCiAg
YmZkX2Vycm9yX2ludmFsaWRfdGFyZ2V0LAogIGJmZF9lcnJvcl93cm9uZ19mb3JtYXQsCiAgYmZk
X2Vycm9yX3dyb25nX29iamVjdF9mb3JtYXQsCiAgYmZkX2Vycm9yX2ludmFsaWRfb3BlcmF0aW9u
LAogIGJmZF9lcnJvcl9ub19tZW1vcnksCiAgYmZkX2Vycm9yX25vX3N5bWJvbHMsCiAgYmZkX2Vy
cm9yX25vX2FybWFwLAogIGJmZF9lcnJvcl9ub19tb3JlX2FyY2hpdmVkX2ZpbGVzLAogIGJmZF9l
cnJvcl9tYWxmb3JtZWRfYXJjaGl2ZSwKICBiZmRfZXJyb3JfZmlsZV9ub3RfcmVjb2duaXplZCwK
ICBiZmRfZXJyb3JfZmlsZV9hbWJpZ3VvdXNseV9yZWNvZ25pemVkLAogIGJmZF9lcnJvcl9ub19j
b250ZW50cywKICBiZmRfZXJyb3Jfbm9ucmVwcmVzZW50YWJsZV9zZWN0aW9uLAogIGJmZF9lcnJv
cl9ub19kZWJ1Z19zZWN0aW9uLAogIGJmZF9lcnJvcl9iYWRfdmFsdWUsCiAgYmZkX2Vycm9yX2Zp
bGVfdHJ1bmNhdGVkLAogIGJmZF9lcnJvcl9maWxlX3Rvb19iaWcsCiAgYmZkX2Vycm9yX2ludmFs
aWRfZXJyb3JfY29kZQp9CmJmZF9lcnJvcl90eXBlOwoKYmZkX2Vycm9yX3R5cGUKYmZkX2dldF9l
cnJvciAodm9pZCk7Cgp2b2lkCmJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl90eXBlIGVycm9yX3Rh
Zyk7Cgpjb25zdCBjaGFyICoKYmZkX2Vycm1zZyAoYmZkX2Vycm9yX3R5cGUgZXJyb3JfdGFnKTsK
CnZvaWQKYmZkX3BlcnJvciAoY29uc3QgY2hhciAqbWVzc2FnZSk7Cgp0eXBlZGVmIHZvaWQgKCpi
ZmRfZXJyb3JfaGFuZGxlcl90eXBlKSAoY29uc3QgY2hhciAqLCAuLi4pOwoKYmZkX2Vycm9yX2hh
bmRsZXJfdHlwZQpiZmRfc2V0X2Vycm9yX2hhbmRsZXIgKGJmZF9lcnJvcl9oYW5kbGVyX3R5cGUp
OwoKdm9pZApiZmRfc2V0X2Vycm9yX3Byb2dyYW1fbmFtZSAoY29uc3QgY2hhciAqKTsKCmJmZF9l
cnJvcl9oYW5kbGVyX3R5cGUKYmZkX2dldF9lcnJvcl9oYW5kbGVyICh2b2lkKTsKCmNvbnN0IGNo
YXIgKgpiZmRfYXJjaGl2ZV9maWxlbmFtZSAoYmZkICopOwoKbG9uZwpiZmRfZ2V0X3JlbG9jX3Vw
cGVyX2JvdW5kIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0KTsKCmxvbmcKYmZkX2Nhbm9uaWNh
bGl6ZV9yZWxvYyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjLCBhcmVsZW50ICoqbG9jLCBhc3lt
Ym9sICoqc3ltcyk7CgoKCgp2b2lkCmJmZF9zZXRfcmVsb2MgKGJmZCAqYWJmZCwgYXNlY3Rpb24g
KnNlYywgYXJlbGVudCAqKnJlbCwgdW5zaWduZWQgaW50IGNvdW50KTsKCmJvb2xlYW4KYmZkX3Nl
dF9maWxlX2ZsYWdzIChiZmQgKmFiZmQsIGZsYWd3b3JkIGZsYWdzKTsKCmludApiZmRfZ2V0X2Fy
Y2hfc2l6ZSAoYmZkICphYmZkKTsKCmludApiZmRfZ2V0X3NpZ25fZXh0ZW5kX3ZtYSAoYmZkICph
YmZkKTsKCmJvb2xlYW4KYmZkX3NldF9zdGFydF9hZGRyZXNzIChiZmQgKmFiZmQsIGJmZF92bWEg
dm1hKTsKCmxvbmcKYmZkX2dldF9tdGltZSAoYmZkICphYmZkKTsKCmxvbmcKYmZkX2dldF9zaXpl
IChiZmQgKmFiZmQpOwoKdW5zaWduZWQgaW50CmJmZF9nZXRfZ3Bfc2l6ZSAoYmZkICphYmZkKTsK
CnZvaWQKYmZkX3NldF9ncF9zaXplIChiZmQgKmFiZmQsIHVuc2lnbmVkIGludCBpKTsKCmJmZF92
bWEKYmZkX3NjYW5fdm1hIChjb25zdCBjaGFyICpzdHJpbmcsIGNvbnN0IGNoYXIgKiplbmQsIGlu
dCBiYXNlKTsKCmJvb2xlYW4KYmZkX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YSAoYmZkICppYmZkLCBi
ZmQgKm9iZmQpOwoKCgoKYm9vbGVhbgpiZmRfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSAoYmZkICpp
YmZkLCBiZmQgKm9iZmQpOwoKCgoKYm9vbGVhbgpiZmRfc2V0X3ByaXZhdGVfZmxhZ3MgKGJmZCAq
YWJmZCwgZmxhZ3dvcmQgZmxhZ3MpOwojIDM2MjMgIi4uL2JmZC9iZmQuaCIKZXh0ZXJuIGJmZF9i
eXRlICpiZmRfZ2V0X3JlbG9jYXRlZF9zZWN0aW9uX2NvbnRlbnRzCiAgICAgICAoYmZkICosIHN0
cnVjdCBiZmRfbGlua19pbmZvICosIHN0cnVjdCBiZmRfbGlua19vcmRlciAqLCBiZmRfYnl0ZSAq
LCBib29sZWFuLCBhc3ltYm9sICoqKTsKCgoKYm9vbGVhbgpiZmRfYWx0X21hY2hfY29kZSAoYmZk
ICphYmZkLCBpbnQgaW5kZXgpOwoKCnN5bWluZGV4CmJmZF9nZXRfbmV4dF9tYXBlbnQgKGJmZCAq
YWJmZCwgc3ltaW5kZXggcHJldmlvdXMsIGNhcnN5bSAqKnN5bSk7Cgpib29sZWFuCmJmZF9zZXRf
YXJjaGl2ZV9oZWFkIChiZmQgKm91dHB1dCwgYmZkICpuZXdfaGVhZCk7CgpiZmQgKgpiZmRfb3Bl
bnJfbmV4dF9hcmNoaXZlZF9maWxlIChiZmQgKmFyY2hpdmUsIGJmZCAqcHJldmlvdXMpOwoKCmNv
bnN0IGNoYXIgKgpiZmRfY29yZV9maWxlX2ZhaWxpbmdfY29tbWFuZCAoYmZkICphYmZkKTsKCmlu
dApiZmRfY29yZV9maWxlX2ZhaWxpbmdfc2lnbmFsIChiZmQgKmFiZmQpOwoKYm9vbGVhbgpjb3Jl
X2ZpbGVfbWF0Y2hlc19leGVjdXRhYmxlX3AgKGJmZCAqY29yZV9iZmQsIGJmZCAqZXhlY19iZmQp
OwojIDM2NzMgIi4uL2JmZC9iZmQuaCIKZW51bSBiZmRfZmxhdm91cgp7CiAgYmZkX3RhcmdldF91
bmtub3duX2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9hb3V0X2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9j
b2ZmX2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9lY29mZl9mbGF2b3VyLAogIGJmZF90YXJnZXRfeGNv
ZmZfZmxhdm91ciwKICBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyLAogIGJmZF90YXJnZXRfaWVlZV9m
bGF2b3VyLAogIGJmZF90YXJnZXRfbmxtX2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9vYXN5c19mbGF2
b3VyLAogIGJmZF90YXJnZXRfdGVraGV4X2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9zcmVjX2ZsYXZv
dXIsCiAgYmZkX3RhcmdldF9paGV4X2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9zb21fZmxhdm91ciwK
ICBiZmRfdGFyZ2V0X29zOWtfZmxhdm91ciwKICBiZmRfdGFyZ2V0X3ZlcnNhZG9zX2ZsYXZvdXIs
CiAgYmZkX3RhcmdldF9tc2Rvc19mbGF2b3VyLAogIGJmZF90YXJnZXRfb3ZheF9mbGF2b3VyLAog
IGJmZF90YXJnZXRfZXZheF9mbGF2b3VyLAogIGJmZF90YXJnZXRfbW1vX2ZsYXZvdXIKfTsKCmVu
dW0gYmZkX2VuZGlhbiB7IEJGRF9FTkRJQU5fQklHLCBCRkRfRU5ESUFOX0xJVFRMRSwgQkZEX0VO
RElBTl9VTktOT1dOIH07CgoKdHlwZWRlZiBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyBfYmZkX2xpbmtf
aW5mbzsKCnR5cGVkZWYgc3RydWN0IGJmZF90YXJnZXQKewoKICBjaGFyICpuYW1lOwoKCgogIGVu
dW0gYmZkX2ZsYXZvdXIgZmxhdm91cjsKCgogIGVudW0gYmZkX2VuZGlhbiBieXRlb3JkZXI7CgoK
ICBlbnVtIGJmZF9lbmRpYW4gaGVhZGVyX2J5dGVvcmRlcjsKCgoKICBmbGFnd29yZCBvYmplY3Rf
ZmxhZ3M7CgoKCiAgZmxhZ3dvcmQgc2VjdGlvbl9mbGFnczsKCgoKICBjaGFyIHN5bWJvbF9sZWFk
aW5nX2NoYXI7CgoKICBjaGFyIGFyX3BhZF9jaGFyOwoKCiAgdW5zaWduZWQgc2hvcnQgYXJfbWF4
X25hbWVsZW47CgoKCgogIGJmZF92bWEgKCpiZmRfZ2V0eDY0KSAoY29uc3QgYmZkX2J5dGUgKik7
CiAgYmZkX3NpZ25lZF92bWEgKCpiZmRfZ2V0eF9zaWduZWRfNjQpIChjb25zdCBiZmRfYnl0ZSAq
KTsKICB2b2lkICgqYmZkX3B1dHg2NCkgKGJmZF92bWEsIGJmZF9ieXRlICopOwogIGJmZF92bWEg
KCpiZmRfZ2V0eDMyKSAoY29uc3QgYmZkX2J5dGUgKik7CiAgYmZkX3NpZ25lZF92bWEgKCpiZmRf
Z2V0eF9zaWduZWRfMzIpIChjb25zdCBiZmRfYnl0ZSAqKTsKICB2b2lkICgqYmZkX3B1dHgzMikg
KGJmZF92bWEsIGJmZF9ieXRlICopOwogIGJmZF92bWEgKCpiZmRfZ2V0eDE2KSAoY29uc3QgYmZk
X2J5dGUgKik7CiAgYmZkX3NpZ25lZF92bWEgKCpiZmRfZ2V0eF9zaWduZWRfMTYpIChjb25zdCBi
ZmRfYnl0ZSAqKTsKICB2b2lkICgqYmZkX3B1dHgxNikgKGJmZF92bWEsIGJmZF9ieXRlICopOwoK
CiAgYmZkX3ZtYSAoKmJmZF9oX2dldHg2NCkgKGNvbnN0IGJmZF9ieXRlICopOwogIGJmZF9zaWdu
ZWRfdm1hICgqYmZkX2hfZ2V0eF9zaWduZWRfNjQpIChjb25zdCBiZmRfYnl0ZSAqKTsKICB2b2lk
ICgqYmZkX2hfcHV0eDY0KSAoYmZkX3ZtYSwgYmZkX2J5dGUgKik7CiAgYmZkX3ZtYSAoKmJmZF9o
X2dldHgzMikgKGNvbnN0IGJmZF9ieXRlICopOwogIGJmZF9zaWduZWRfdm1hICgqYmZkX2hfZ2V0
eF9zaWduZWRfMzIpIChjb25zdCBiZmRfYnl0ZSAqKTsKICB2b2lkICgqYmZkX2hfcHV0eDMyKSAo
YmZkX3ZtYSwgYmZkX2J5dGUgKik7CiAgYmZkX3ZtYSAoKmJmZF9oX2dldHgxNikgKGNvbnN0IGJm
ZF9ieXRlICopOwogIGJmZF9zaWduZWRfdm1hICgqYmZkX2hfZ2V0eF9zaWduZWRfMTYpIChjb25z
dCBiZmRfYnl0ZSAqKTsKICB2b2lkICgqYmZkX2hfcHV0eDE2KSAoYmZkX3ZtYSwgYmZkX2J5dGUg
Kik7CgoKCgoKICBjb25zdCBzdHJ1Y3QgYmZkX3RhcmdldCAqKCpfYmZkX2NoZWNrX2Zvcm1hdFti
ZmRfdHlwZV9lbmRdKSAoYmZkICopOwoKCiAgYm9vbGVhbiAoKl9iZmRfc2V0X2Zvcm1hdFtiZmRf
dHlwZV9lbmRdKSAoYmZkICopOwoKCiAgYm9vbGVhbiAoKl9iZmRfd3JpdGVfY29udGVudHNbYmZk
X3R5cGVfZW5kXSkgKGJmZCAqKTsKIyAzNzgwICIuLi9iZmQvYmZkLmgiCiAgYm9vbGVhbiAoKl9j
bG9zZV9hbmRfY2xlYW51cCkgKGJmZCAqKTsKCiAgYm9vbGVhbiAoKl9iZmRfZnJlZV9jYWNoZWRf
aW5mbykgKGJmZCAqKTsKCiAgYm9vbGVhbiAoKl9uZXdfc2VjdGlvbl9ob29rKSAoYmZkICosIHNl
Y19wdHIpOwoKICBib29sZWFuICgqX2JmZF9nZXRfc2VjdGlvbl9jb250ZW50cykgKGJmZCAqLCBz
ZWNfcHRyLCB2b2lkICosIGZpbGVfcHRyLCBiZmRfc2l6ZV90eXBlKTsKCiAgYm9vbGVhbiAoKl9i
ZmRfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luZG93KQogICAgKGJmZCAqLCBzZWNfcHRyLCBi
ZmRfd2luZG93ICosIGZpbGVfcHRyLCBiZmRfc2l6ZV90eXBlKTsKIyAzODAxICIuLi9iZmQvYmZk
LmgiCiAgYm9vbGVhbiAoKl9iZmRfY29weV9wcml2YXRlX2JmZF9kYXRhKSAoYmZkICosIGJmZCAq
KTsKCgogIGJvb2xlYW4gKCpfYmZkX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpIChiZmQgKiwgYmZk
ICopOwoKCiAgYm9vbGVhbiAoKl9iZmRfY29weV9wcml2YXRlX3NlY3Rpb25fZGF0YSkgKGJmZCAq
LCBzZWNfcHRyLCBiZmQgKiwgc2VjX3B0cik7CgoKCiAgYm9vbGVhbiAoKl9iZmRfY29weV9wcml2
YXRlX3N5bWJvbF9kYXRhKSAoYmZkICosIGFzeW1ib2wgKiwgYmZkICosIGFzeW1ib2wgKik7CgoK
ICBib29sZWFuICgqX2JmZF9zZXRfcHJpdmF0ZV9mbGFncykgKGJmZCAqLCBmbGFnd29yZCk7CgoK
ICBib29sZWFuICgqX2JmZF9wcmludF9wcml2YXRlX2JmZF9kYXRhKSAoYmZkICosIHZvaWQgKik7
CgoKCgoKCiAgY2hhciAqICgqX2NvcmVfZmlsZV9mYWlsaW5nX2NvbW1hbmQpIChiZmQgKik7CiAg
aW50ICgqX2NvcmVfZmlsZV9mYWlsaW5nX3NpZ25hbCkgKGJmZCAqKTsKICBib29sZWFuICgqX2Nv
cmVfZmlsZV9tYXRjaGVzX2V4ZWN1dGFibGVfcCkgKGJmZCAqLCBiZmQgKik7CiMgMzg0MCAiLi4v
YmZkL2JmZC5oIgogIGJvb2xlYW4gKCpfYmZkX3NsdXJwX2FybWFwKSAoYmZkICopOwogIGJvb2xl
YW4gKCpfYmZkX3NsdXJwX2V4dGVuZGVkX25hbWVfdGFibGUpIChiZmQgKik7CiAgYm9vbGVhbiAo
Kl9iZmRfY29uc3RydWN0X2V4dGVuZGVkX25hbWVfdGFibGUpCiAgICAoYmZkICosIGNoYXIgKios
IGJmZF9zaXplX3R5cGUgKiwgY29uc3QgY2hhciAqKik7CiAgdm9pZCAoKl9iZmRfdHJ1bmNhdGVf
YXJuYW1lKSAoYmZkICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKICBib29sZWFuICgqd3JpdGVf
YXJtYXApCiAgICAoYmZkICosIHVuc2lnbmVkIGludCwgc3RydWN0IG9ybCAqLCB1bnNpZ25lZCBp
bnQsIGludCk7CiAgdm9pZCAqICgqX2JmZF9yZWFkX2FyX2hkcl9mbikgKGJmZCAqKTsKICBiZmQg
KiAoKm9wZW5yX25leHRfYXJjaGl2ZWRfZmlsZSkgKGJmZCAqLCBiZmQgKik7CgogIGJmZCAqICgq
X2JmZF9nZXRfZWx0X2F0X2luZGV4KSAoYmZkICosIHN5bWluZGV4KTsKICBpbnQgKCpfYmZkX3N0
YXRfYXJjaF9lbHQpIChiZmQgKiwgc3RydWN0IHN0YXQgKik7CiAgYm9vbGVhbiAoKl9iZmRfdXBk
YXRlX2FybWFwX3RpbWVzdGFtcCkgKGJmZCAqKTsKIyAzODY3ICIuLi9iZmQvYmZkLmgiCiAgbG9u
ZyAoKl9iZmRfZ2V0X3N5bXRhYl91cHBlcl9ib3VuZCkgKGJmZCAqKTsKICBsb25nICgqX2JmZF9j
YW5vbmljYWxpemVfc3ltdGFiKSAoYmZkICosIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKiop
OwoKICBzdHJ1Y3Qgc3ltYm9sX2NhY2hlX2VudHJ5ICoKICAgICAgICAgICAoKl9iZmRfbWFrZV9l
bXB0eV9zeW1ib2wpIChiZmQgKik7CiAgdm9pZCAoKl9iZmRfcHJpbnRfc3ltYm9sKSAoYmZkICos
IHZvaWQgKiwgc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqLCBiZmRfcHJpbnRfc3ltYm9sX3R5
cGUpOwoKCgogIHZvaWQgKCpfYmZkX2dldF9zeW1ib2xfaW5mbykgKGJmZCAqLCBzdHJ1Y3Qgc3lt
Ym9sX2NhY2hlX2VudHJ5ICosIHN5bWJvbF9pbmZvICopOwoKCgogIGJvb2xlYW4gKCpfYmZkX2lz
X2xvY2FsX2xhYmVsX25hbWUpIChiZmQgKiwgY29uc3QgY2hhciAqKTsKCiAgYWxlbnQgKiAoKl9n
ZXRfbGluZW5vKSAoYmZkICosIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKik7CiAgYm9vbGVh
biAoKl9iZmRfZmluZF9uZWFyZXN0X2xpbmUpCiAgICAoYmZkICosIHN0cnVjdCBzZWMgKiwgc3Ry
dWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqKiwgYmZkX3ZtYSwgY29uc3QgY2hhciAqKiwgY29uc3Qg
Y2hhciAqKiwgdW5zaWduZWQgaW50ICopOwoKCgoKICBhc3ltYm9sICooKl9iZmRfbWFrZV9kZWJ1
Z19zeW1ib2wpIChiZmQgKiwgdm9pZCAqLCB1bnNpZ25lZCBsb25nIHNpemUpOwoKCgogIGxvbmcg
KCpfcmVhZF9taW5pc3ltYm9scykgKGJmZCAqLCBib29sZWFuLCB2b2lkICogKiwgdW5zaWduZWQg
aW50ICopOwoKCgogIGFzeW1ib2wgKigqX21pbmlzeW1ib2xfdG9fc3ltYm9sKSAoYmZkICosIGJv
b2xlYW4sIGNvbnN0IHZvaWQgKiwgYXN5bWJvbCAqKTsKCgoKCgoKCiAgbG9uZyAoKl9nZXRfcmVs
b2NfdXBwZXJfYm91bmQpIChiZmQgKiwgc2VjX3B0cik7CiAgbG9uZyAoKl9iZmRfY2Fub25pY2Fs
aXplX3JlbG9jKSAoYmZkICosIHNlY19wdHIsIGFyZWxlbnQgKiosIHN0cnVjdCBzeW1ib2xfY2Fj
aGVfZW50cnkgKiopOwoKCiAgcmVsb2NfaG93dG9fdHlwZSAqCiAgICAgICAgICAgKCpyZWxvY190
eXBlX2xvb2t1cCkgKGJmZCAqLCBiZmRfcmVsb2NfY29kZV9yZWFsX3R5cGUpOwoKCgoKCiAgYm9v
bGVhbiAoKl9iZmRfc2V0X2FyY2hfbWFjaCkgKGJmZCAqLCBlbnVtIGJmZF9hcmNoaXRlY3R1cmUs
IHVuc2lnbmVkIGxvbmcpOwoKICBib29sZWFuICgqX2JmZF9zZXRfc2VjdGlvbl9jb250ZW50cykg
KGJmZCAqLCBzZWNfcHRyLCB2b2lkICosIGZpbGVfcHRyLCBiZmRfc2l6ZV90eXBlKTsKIyAzOTM1
ICIuLi9iZmQvYmZkLmgiCiAgaW50ICgqX2JmZF9zaXplb2ZfaGVhZGVycykgKGJmZCAqLCBib29s
ZWFuKTsKICBiZmRfYnl0ZSAqKCpfYmZkX2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW50cykK
ICAgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IGJmZF9saW5rX29yZGVy
ICosIGJmZF9ieXRlICosIGJvb2xlYW4sIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKiopOwoK
CiAgYm9vbGVhbiAoKl9iZmRfcmVsYXhfc2VjdGlvbikKICAgIChiZmQgKiwgc3RydWN0IHNlYyAq
LCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBib29sZWFuICopOwoKCgogIHN0cnVjdCBiZmRfbGlu
a19oYXNoX3RhYmxlICooKl9iZmRfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSkgKGJmZCAqKTsKCgog
IHZvaWQgKCpfYmZkX2xpbmtfaGFzaF90YWJsZV9mcmVlKSAoc3RydWN0IGJmZF9saW5rX2hhc2hf
dGFibGUgKik7CgoKICBib29sZWFuICgqX2JmZF9saW5rX2FkZF9zeW1ib2xzKSAoYmZkICosIHN0
cnVjdCBiZmRfbGlua19pbmZvICopOwoKCiAgdm9pZCAoKl9iZmRfbGlua19qdXN0X3N5bXMpIChh
c2VjdGlvbiAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgoKICBib29sZWFuICgqX2JmZF9m
aW5hbF9saW5rKSAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCiAgYm9vbGVhbiAo
Kl9iZmRfbGlua19zcGxpdF9zZWN0aW9uKSAoYmZkICosIHN0cnVjdCBzZWMgKik7CgoKICBib29s
ZWFuICgqX2JmZF9nY19zZWN0aW9ucykgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsK
CgogIGJvb2xlYW4gKCpfYmZkX21lcmdlX3NlY3Rpb25zKSAoYmZkICosIHN0cnVjdCBiZmRfbGlu
a19pbmZvICopOwoKCiAgYm9vbGVhbiAoKl9iZmRfZGlzY2FyZF9ncm91cCkgKGJmZCAqLCBzdHJ1
Y3Qgc2VjICopOwojIDM5NzkgIi4uL2JmZC9iZmQuaCIKICBsb25nICgqX2JmZF9nZXRfZHluYW1p
Y19zeW10YWJfdXBwZXJfYm91bmQpIChiZmQgKik7CgogIGxvbmcgKCpfYmZkX2Nhbm9uaWNhbGl6
ZV9keW5hbWljX3N5bXRhYikKICAgIChiZmQgKiwgc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAq
Kik7CgogIGxvbmcgKCpfYmZkX2dldF9keW5hbWljX3JlbG9jX3VwcGVyX2JvdW5kKSAoYmZkICop
OwoKICBsb25nICgqX2JmZF9jYW5vbmljYWxpemVfZHluYW1pY19yZWxvYykKICAgIChiZmQgKiwg
YXJlbGVudCAqKiwgc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqKik7CgoKICBjb25zdCBzdHJ1
Y3QgYmZkX3RhcmdldCAqIGFsdGVybmF0aXZlX3RhcmdldDsKCgoKICB2b2lkICogYmFja2VuZF9k
YXRhOwoKfSBiZmRfdGFyZ2V0OwoKYm9vbGVhbgpiZmRfc2V0X2RlZmF1bHRfdGFyZ2V0IChjb25z
dCBjaGFyICpuYW1lKTsKCmNvbnN0IGJmZF90YXJnZXQgKgpiZmRfZmluZF90YXJnZXQgKGNvbnN0
IGNoYXIgKnRhcmdldF9uYW1lLCBiZmQgKmFiZmQpOwoKY29uc3QgY2hhciAqKgpiZmRfdGFyZ2V0
X2xpc3QgKHZvaWQpOwoKY29uc3QgYmZkX3RhcmdldCAqCmJmZF9zZWFyY2hfZm9yX3RhcmdldCAo
aW50ICgqIHNlYXJjaF9mdW5jKSAoY29uc3QgYmZkX3RhcmdldCAqLCB2b2lkICopLCB2b2lkICop
OwoKCmJvb2xlYW4KYmZkX2NoZWNrX2Zvcm1hdCAoYmZkICphYmZkLCBiZmRfZm9ybWF0IGZvcm1h
dCk7Cgpib29sZWFuCmJmZF9jaGVja19mb3JtYXRfbWF0Y2hlcyAoYmZkICphYmZkLCBiZmRfZm9y
bWF0IGZvcm1hdCwgY2hhciAqKiptYXRjaGluZyk7Cgpib29sZWFuCmJmZF9zZXRfZm9ybWF0IChi
ZmQgKmFiZmQsIGJmZF9mb3JtYXQgZm9ybWF0KTsKCmNvbnN0IGNoYXIgKgpiZmRfZm9ybWF0X3N0
cmluZyAoYmZkX2Zvcm1hdCBmb3JtYXQpOwojIDEzMyAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9h
cy5oIiAyCgojIDEgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2xpYmliZXJ0eS5oIiAxCiMg
NDYgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2xpYmliZXJ0eS5oIgojIDEgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ3ICIv
c3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9saWJpYmVydHkuaCIgMgoKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k2ODYtcGMtY3lnd2luLzMuMi9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyAxMTEgIi91
c3IvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMy4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlw
ZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDQ5ICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5j
bHVkZS9saWJpYmVydHkuaCIgMgoKCgoKCmV4dGVybiBjaGFyICoqYnVpbGRhcmd2IChjb25zdCBj
aGFyICopIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4dGVybiB2b2lkIGZyZWVh
cmd2IChjaGFyICoqKTsKCgoKCmV4dGVybiBjaGFyICoqZHVwYXJndiAoY2hhciAqKikgX19hdHRy
aWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyA3OCAiL3NyYy9iaW51dGlscy0yLjEzL2luY2x1ZGUv
bGliaWJlcnR5LmgiCmV4dGVybiBjaGFyICpiYXNlbmFtZSAoY29uc3QgY2hhciAqKTsKCgoKCgoK
CmV4dGVybiBjb25zdCBjaGFyICpsYmFzZW5hbWUgKGNvbnN0IGNoYXIgKik7CgoKCgoKZXh0ZXJu
IGNoYXIgKmNvbmNhdCAoY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChfX21hbGxv
Y19fKSk7CiMgMTAxICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9saWJpYmVydHkuaCIKZXh0
ZXJuIGNoYXIgKnJlY29uY2F0IChjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGNvbmNhdF9sZW5n
dGggKGNvbnN0IGNoYXIgKiwgLi4uKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNvbmNhdF9jb3B5IChj
aGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNvbmNhdF9jb3B5
MiAoY29uc3QgY2hhciAqLCAuLi4pOwoKCgpleHRlcm4gY2hhciAqbGliaWJlcnR5X2NvbmNhdF9w
dHI7CiMgMTM3ICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9saWJpYmVydHkuaCIKZXh0ZXJu
IGludCBmZG1hdGNoIChpbnQgZmQxLCBpbnQgZmQyKTsKCgoKCmV4dGVybiBjaGFyICogZ2V0cHdk
ICh2b2lkKTsKCgoKZXh0ZXJuIGxvbmcgZ2V0X3J1bl90aW1lICh2b2lkKTsKCgoKZXh0ZXJuIGNo
YXIgKmNob29zZV90ZW1wX2Jhc2UgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7
CgoKCmV4dGVybiBjaGFyICptYWtlX3RlbXBfZmlsZSAoY29uc3QgY2hhciAqKSBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gY29uc3QgY2hhciAqc3BhY2VzIChpbnQgY291
bnQpOwoKCgoKZXh0ZXJuIGludCBlcnJub19tYXggKHZvaWQpOwoKCgoKZXh0ZXJuIGNvbnN0IGNo
YXIgKnN0cmVycm5vIChpbnQpOwoKCgpleHRlcm4gaW50IHN0cnRvZXJybm8gKGNvbnN0IGNoYXIg
Kik7CgoKCmV4dGVybiBjaGFyICp4c3RyZXJyb3IgKGludCk7CgoKCgpleHRlcm4gaW50IHNpZ25v
X21heCAodm9pZCk7CiMgMTkzICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9saWJpYmVydHku
aCIKZXh0ZXJuIGNvbnN0IGNoYXIgKnN0cnNpZ25vIChpbnQpOwoKCgpleHRlcm4gaW50IHN0cnRv
c2lnbm8gKGNvbnN0IGNoYXIgKik7CgoKCmV4dGVybiBpbnQgeGF0ZXhpdCAodm9pZCAoKmZuKSAo
dm9pZCkpOwoKCgpleHRlcm4gdm9pZCB4ZXhpdCAoaW50IHN0YXR1cykgX19hdHRyaWJ1dGVfXyAo
KF9fbm9yZXR1cm5fXykpOwoKCgpleHRlcm4gdm9pZCB4bWFsbG9jX3NldF9wcm9ncmFtX25hbWUg
KGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIHZvaWQgeG1hbGxvY19mYWlsZWQgKHNpemVfdCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCmV4dGVybiB2b2lkICogeG1hbGxvYyAo
c2l6ZV90KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKCmV4dGVybiB2b2lkICog
eHJlYWxsb2MgKHZvaWQgKiwgc2l6ZV90KTsKCgoKCmV4dGVybiB2b2lkICogeGNhbGxvYyAoc2l6
ZV90LCBzaXplX3QpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4dGVybiBjaGFy
ICp4c3RyZHVwIChjb25zdCBjaGFyICopIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoK
CmV4dGVybiB2b2lkICogeG1lbWR1cCAoY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCkgX19h
dHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gY29uc3QgY2hhciBfaGV4X3Zh
bHVlWzI1Nl07CmV4dGVybiB2b2lkIGhleF9pbml0ICh2b2lkKTsKIyAyNjAgIi9zcmMvYmludXRp
bHMtMi4xMy9pbmNsdWRlL2xpYmliZXJ0eS5oIgpleHRlcm4gaW50IHBleGVjdXRlIChjb25zdCBj
aGFyICosIGNoYXIgKiBjb25zdCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY2hhciAq
KiwgY2hhciAqKiwgaW50KTsKCgoKCmV4dGVybiBpbnQgcHdhaXQgKGludCwgaW50ICosIGludCk7
CgoKCgpleHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLikgX19h
dHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgpleHRlcm4g
aW50IHZhc3ByaW50ZiAoY2hhciAqKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KQogIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwojIDI4NiAiL3NyYy9iaW51
dGlscy0yLjEzL2luY2x1ZGUvbGliaWJlcnR5LmgiCmV4dGVybiB2b2lkICogQ19hbGxvY2EgKHNp
emVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxMzUgIi9zcmMvYmludXRpbHMt
Mi4xMy9nYXMvYXMuaCIgMgoKCiMgMSAiL3NyYy9iaW51dGlscy0yLjEzL2luY2x1ZGUvcHJvZ3Jl
c3MuaCIgMQojIDEzOCAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9hcy5oIiAyCiMgMTk0ICIvc3Jj
L2JpbnV0aWxzLTIuMTMvZ2FzL2FzLmgiCiMgMSAiL3NyYy9iaW51dGlscy0yLjEzL2luY2x1ZGUv
Zm9wZW4tc2FtZS5oIiAxCiMgMTk1ICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2FzLmgiIDIKIyAy
MTIgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvYXMuaCIKIyAxICIvc3JjL2JpbnV0aWxzLTIuMTMv
Z2FzL2FzaW50bC5oIiAxCiMgMjQgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvYXNpbnRsLmgiCiMg
MSAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRlL2xvY2FsZS5o
IiAzCgoKc3RydWN0IGxjb252CnsKICBjaGFyICpkZWNpbWFsX3BvaW50OwogIGNoYXIgKnRob3Vz
YW5kc19zZXA7CiAgY2hhciAqZ3JvdXBpbmc7CiAgY2hhciAqaW50X2N1cnJfc3ltYm9sOwogIGNo
YXIgKmN1cnJlbmN5X3N5bWJvbDsKICBjaGFyICptb25fZGVjaW1hbF9wb2ludDsKICBjaGFyICpt
b25fdGhvdXNhbmRzX3NlcDsKICBjaGFyICptb25fZ3JvdXBpbmc7CiAgY2hhciAqcG9zaXRpdmVf
c2lnbjsKICBjaGFyICpuZWdhdGl2ZV9zaWduOwogIGNoYXIgaW50X2ZyYWNfZGlnaXRzOwogIGNo
YXIgZnJhY19kaWdpdHM7CiAgY2hhciBwX2NzX3ByZWNlZGVzOwogIGNoYXIgcF9zZXBfYnlfc3Bh
Y2U7CiAgY2hhciBuX2NzX3ByZWNlZGVzOwogIGNoYXIgbl9zZXBfYnlfc3BhY2U7CiAgY2hhciBw
X3NpZ25fcG9zbjsKICBjaGFyIG5fc2lnbl9wb3NuOwp9OwoKCmNoYXIgKl9fYXR0cmlidXRlX18o
KF9fY2RlY2xfXykpIHNldGxvY2FsZSAoaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpsb2NhbGUp
OwpzdHJ1Y3QgbGNvbnYgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIGxvY2FsZWNvbnYgKHZv
aWQpOwoKCnN0cnVjdCBfcmVlbnQ7CmNoYXIgKl9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIF9z
ZXRsb2NhbGVfciAoc3RydWN0IF9yZWVudCAqLCBpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxv
Y2FsZSk7CnN0cnVjdCBsY29udiAqX19hdHRyaWJ1dGVfXygoX19jZGVjbF9fKSkgX2xvY2FsZWNv
bnZfciAoc3RydWN0IF9yZWVudCAqKTsKCgojIDI1ICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2Fz
aW50bC5oIiAyCgoKCiMgMSAiLi4vaW50bC9saWJpbnRsLmgiIDEKIyA3MiAiLi4vaW50bC9saWJp
bnRsLmgiCnN0cnVjdCBfbXNnX2VudAp7CiAgY29uc3QgY2hhciAqX21zZzsKICBpbnQgX21zZ19u
dW1iZXI7Cn07CiMgOTQgIi4uL2ludGwvbGliaW50bC5oIgpleHRlcm4gY2hhciAqZ2V0dGV4dCAo
Y29uc3QgY2hhciAqX19tc2dpZCk7CmV4dGVybiBjaGFyICpnZXR0ZXh0X18gKGNvbnN0IGNoYXIg
Kl9fbXNnaWQpOwoKCgpleHRlcm4gY2hhciAqZGdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlu
bmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCk7CmV4dGVybiBjaGFyICpkZ2V0dGV4dF9fIChjb25z
dCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQpOwoKCgoKZXh0ZXJuIGNo
YXIgKmRjZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21z
Z2lkLCBpbnQgX19jYXRlZ29yeSk7CgpleHRlcm4gY2hhciAqZGNnZXR0ZXh0X18gKGNvbnN0IGNo
YXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCwgaW50IF9fY2F0ZWdvcnkpOwoK
CgoKCgpleHRlcm4gY2hhciAqdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lKTsK
ZXh0ZXJuIGNoYXIgKnRleHRkb21haW5fXyAoY29uc3QgY2hhciAqX19kb21haW5uYW1lKTsKCgoK
ZXh0ZXJuIGNoYXIgKmJpbmR0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNv
bnN0IGNoYXIgKl9fZGlybmFtZSk7CgpleHRlcm4gY2hhciAqYmluZHRleHRkb21haW5fXyAoY29u
c3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX2Rpcm5hbWUpOwojIDI5ICIvc3Jj
L2JpbnV0aWxzLTIuMTMvZ2FzL2FzaW50bC5oIiAyCiMgMjEzICIvc3JjL2JpbnV0aWxzLTIuMTMv
Z2FzL2FzLmgiIDIKCgoKCgoKCiMgMSAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9mbG9udW0uaCIg
MQojIDM1ICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2Zsb251bS5oIgojIDEgIi9zcmMvYmludXRp
bHMtMi4xMy9nYXMvYmlnbnVtLmgiIDEKIyA0MSAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9iaWdu
dW0uaCIKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBMSVRUTEVOVU1fVFlQRTsKCgoKCgoKCmludCBi
aWdudW1fY29weSAoTElUVExFTlVNX1RZUEUgKiBpbiwgaW50IGluX2xlbmd0aCwgTElUVExFTlVN
X1RZUEUgKiBvdXQsIGludCBvdXRfbGVuZ3RoKTsKIyAzNiAiL3NyYy9iaW51dGlscy0yLjEzL2dh
cy9mbG9udW0uaCIgMgojIDUyICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2Zsb251bS5oIgpzdHJ1
Y3QgRkxPTlVNX1NUUlVDVCB7CiAgTElUVExFTlVNX1RZUEUgKmxvdzsKICBMSVRUTEVOVU1fVFlQ
RSAqaGlnaDsKICBMSVRUTEVOVU1fVFlQRSAqbGVhZGVyOwoKICBsb25nIGV4cG9uZW50OwogIGNo
YXIgc2lnbjsKfTsKCnR5cGVkZWYgc3RydWN0IEZMT05VTV9TVFJVQ1QgRkxPTlVNX1RZUEU7CiMg
NzUgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvZmxvbnVtLmgiCmV4dGVybiBjb25zdCBGTE9OVU1f
VFlQRSBmbG9udW1fcG9zaXRpdmVfcG93ZXJzX29mX3RlbltdOwpleHRlcm4gY29uc3QgRkxPTlVN
X1RZUEUgZmxvbnVtX25lZ2F0aXZlX3Bvd2Vyc19vZl90ZW5bXTsKZXh0ZXJuIGNvbnN0IGludCB0
YWJsZV9zaXplX29mX2Zsb251bV9wb3dlcnNfb2ZfdGVuOwojIDg3ICIvc3JjL2JpbnV0aWxzLTIu
MTMvZ2FzL2Zsb251bS5oIgppbnQgYXRvZl9nZW5lcmljIChjaGFyICoqYWRkcmVzc19vZl9zdHJp
bmdfcG9pbnRlciwgY29uc3QgY2hhciAqc3RyaW5nX29mX2RlY2ltYWxfbWFya3MsIGNvbnN0IGNo
YXIgKnN0cmluZ19vZl9kZWNpbWFsX2V4cG9uZW50X21hcmtzLCBGTE9OVU1fVFlQRSAqIGFkZHJl
c3Nfb2ZfZ2VuZXJpY19mbG9hdGluZ19wb2ludF9udW1iZXIpOwoKCgoKdm9pZCBmbG9udW1fY29w
eSAoRkxPTlVNX1RZUEUgKiBpbiwgRkxPTlVNX1RZUEUgKiBvdXQpOwp2b2lkIGZsb251bV9tdWx0
aXAgKGNvbnN0IEZMT05VTV9UWVBFICogYSwgY29uc3QgRkxPTlVNX1RZUEUgKiBiLCBGTE9OVU1f
VFlQRSAqIHByb2R1Y3QpOwojIDIyMSAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9hcy5oIiAyCgoK
CgpleHRlcm4gYmZkICpzdGRvdXRwdXQ7CnR5cGVkZWYgYmZkX3ZtYSBhZGRyZXNzVDsKdHlwZWRl
ZiBiZmRfc2lnbmVkX3ZtYSBvZmZzZXRUOwoKCgoKCgp0eXBlZGVmIGFkZHJlc3NUIHZhbHVlVDsK
IyAyOTYgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvYXMuaCIKdHlwZWRlZiBhc2VjdGlvbiAqc2Vn
VDsKCgoKCgp0eXBlZGVmIGludCBzdWJzZWdUOwoKCmV4dGVybiBzdWJzZWdUIG5vd19zdWJzZWc7
CgoKZXh0ZXJuIHNlZ1Qgbm93X3NlZzsKIyAzMjIgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvYXMu
aCIKZXh0ZXJuIHNlZ1QgcmVnX3NlY3Rpb24sIGV4cHJfc2VjdGlvbjsKCmV4dGVybiBzZWdUIHRl
eHRfc2VjdGlvbiwgZGF0YV9zZWN0aW9uLCBic3Nfc2VjdGlvbjsKIyAzMzkgIi9zcmMvYmludXRp
bHMtMi4xMy9nYXMvYXMuaCIKZW51bSBfcmVsYXhfc3RhdGUgewoKCgogIHJzX2ZpbGwgPSAxLAoK
CgoKCiAgcnNfYWxpZ24sCgoKCgoKCiAgcnNfYWxpZ25fY29kZSwKCgoKICByc19hbGlnbl90ZXN0
LAoKCgogIHJzX29yZywKCgoKICByc19icm9rZW5fd29yZCwKCgoKICByc19tYWNoaW5lX2RlcGVu
ZGVudCwKCgoKCgogIHJzX3NwYWNlLAoKCgogIHJzX2xlYjEyOCwKCgogIHJzX2NmYSwKCgogIHJz
X2R3YXJmMmRiZwp9OwoKdHlwZWRlZiBlbnVtIF9yZWxheF9zdGF0ZSByZWxheF9zdGF0ZVQ7CgoK
CnR5cGVkZWYgdW5zaWduZWQgaW50IHJlbGF4X3N1YnN0YXRlVDsKCgoKdHlwZWRlZiBhZGRyZXNz
VCByZWxheF9hZGRyZXNzVDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgZmxhZ19ub19jb21tZW50
czsKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgZmxhZ19kZWJ1ZzsKZXh0ZXJuIHVuc2lnbmVkIGNoYXIg
ZmxhZ19zaWduZWRfb3ZlcmZsb3dfb2s7CgpleHRlcm4gdW5zaWduZWQgY2hhciBmbGFnX3dhcm5f
ZGlzcGxhY2VtZW50OwoKCgpleHRlcm4gaW50IGZsYWdfa2VlcF9sb2NhbHM7CgoKZXh0ZXJuIGlu
dCBmbGFnX21yaTsKCgoKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgZmxhZ19yZWFkb25seV9kYXRhX2lu
X3RleHQ7CgoKZXh0ZXJuIGludCBmbGFnX25vX3dhcm5pbmdzOwoKCmV4dGVybiBpbnQgZmxhZ19m
YXRhbF93YXJuaW5nczsKCgoKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgZmxhZ19hbHdheXNfZ2VuZXJh
dGVfb3V0cHV0OwoKCmV4dGVybiB1bnNpZ25lZCBjaGFyIGZsYWdfcHJpbnRfc3RhdGlzdGljczsK
CgpleHRlcm4gaW50IGZsYWdfc3RyaXBfbG9jYWxfYWJzb2x1dGU7CgoKZXh0ZXJuIGludCBmbGFn
X3RyYWRpdGlvbmFsX2Zvcm1hdDsKCgpleHRlcm4gY2hhciAqb3V0X2ZpbGVfbmFtZTsKCgpleHRl
cm4gY2hhciAqaW5zdHRibF9maWxlX25hbWU7CgoKZXh0ZXJuIGludCBuZWVkX3Bhc3NfMjsKCgoK
ZXh0ZXJuIGludCBsaW5rcmVsYXg7CgoKZXh0ZXJuIGludCBsaXN0aW5nOwojIDQ2MyAiL3NyYy9i
aW51dGlscy0yLjEzL2dhcy9hcy5oIgplbnVtIGRlYnVnX2luZm9fdHlwZSB7CiAgREVCVUdfVU5T
UEVDSUZJRUQsCiAgREVCVUdfTk9ORSwKICBERUJVR19TVEFCUywKICBERUJVR19FQ09GRiwKICBE
RUJVR19EV0FSRiwKICBERUJVR19EV0FSRjIKfTsKCmV4dGVybiBlbnVtIGRlYnVnX2luZm9fdHlw
ZSBkZWJ1Z190eXBlOwoKCmV4dGVybiBpbnQgbWF4X21hY3JvX25lc3Q7CgoKCmV4dGVybiBpbnQg
Y2h1bmtzaXplOwoKc3RydWN0IF9wc2V1ZG9fdHlwZSB7CgogIGNvbnN0IGNoYXIgKnBvY19uYW1l
OwoKICB2b2lkICgqcG9jX2hhbmRsZXIpIChpbnQpOwoKICBpbnQgcG9jX3ZhbDsKfTsKCnR5cGVk
ZWYgc3RydWN0IF9wc2V1ZG9fdHlwZSBwc2V1ZG9fdHlwZVM7CiMgNTM5ICIvc3JjL2JpbnV0aWxz
LTIuMTMvZ2FzL2FzLmgiCnZvaWQgYXNfYmFkIChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikgX19h
dHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDEsIDIpKSk7CnZvaWQgYXNfZmF0
YWwgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAo
X19wcmludGZfXywgMSwgMikpKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CnZvaWQg
YXNfdHNrdHNrIChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikgX19hdHRyaWJ1dGVfXyAoKF9fZm9y
bWF0X18gKF9fcHJpbnRmX18sIDEsIDIpKSk7CnZvaWQgYXNfd2FybiAoY29uc3QgY2hhciAqZm9y
bWF0LCAuLi4pIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAxLCAyKSkp
Owp2b2lkIGFzX2JhZF93aGVyZSAoY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUsIGNvbnN0
IGNoYXIgKmZvcm1hdCwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZf
XywgMywgNCkpKTsKdm9pZCBhc193YXJuX3doZXJlIChjaGFyICpmaWxlLCB1bnNpZ25lZCBpbnQg
bGluZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9f
IChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKdm9pZCBhc19hc3NlcnQgKGNvbnN0IGNoYXIgKiwgaW50
LCBjb25zdCBjaGFyICopOwp2b2lkIGFzX2Fib3J0IChjb25zdCBjaGFyICosIGludCwgY29uc3Qg
Y2hhciAqKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7Cgp2b2lkIGZwcmludF92YWx1
ZSAoRklMRSAqZmlsZSwgYWRkcmVzc1QgdmFsdWUpOwp2b2lkIHNwcmludF92YWx1ZSAoY2hhciAq
YnVmLCBhZGRyZXNzVCB2YWx1ZSk7CgppbnQgaGFkX2Vycm9ycyAodm9pZCk7CmludCBoYWRfd2Fy
bmluZ3MgKHZvaWQpOwoKdm9pZCBwcmludF92ZXJzaW9uX2lkICh2b2lkKTsKY2hhciAqYXBwX3B1
c2ggKHZvaWQpOwpjaGFyICphdG9mX2llZWUgKGNoYXIgKnN0ciwgaW50IHdoYXRfa2luZCwgTElU
VExFTlVNX1RZUEUgKiB3b3Jkcyk7CmNoYXIgKmlucHV0X3NjcnViX2luY2x1ZGVfZmlsZSAoY2hh
ciAqZmlsZW5hbWUsIGNoYXIgKnBvc2l0aW9uKTsKZXh0ZXJuIHZvaWQgaW5wdXRfc2NydWJfaW5z
ZXJ0X2xpbmUgKGNvbnN0IGNoYXIgKmxpbmUpOwpleHRlcm4gdm9pZCBpbnB1dF9zY3J1Yl9pbnNl
cnRfZmlsZSAoY2hhciAqcGF0aCk7CmNoYXIgKmlucHV0X3NjcnViX25ld19maWxlIChjaGFyICpm
aWxlbmFtZSk7CmNoYXIgKmlucHV0X3NjcnViX25leHRfYnVmZmVyIChjaGFyICoqYnVmcCk7Cmlu
dCBkb19zY3J1Yl9jaGFycyAoaW50ICgqZ2V0KSAoY2hhciAqLCBpbnQpLCBjaGFyICp0bywgaW50
IHRvbGVuKTsKaW50IGdlbl90b193b3JkcyAoTElUVExFTlVNX1RZUEUgKiB3b3JkcywgaW50IHBy
ZWNpc2lvbiwgbG9uZyBleHBvbmVudF9iaXRzKTsKCmludCBoYWRfZXJyICh2b2lkKTsKaW50IGln
bm9yZV9pbnB1dCAodm9pZCk7CnZvaWQgY29uZF9maW5pc2hfY2hlY2sgKGludCk7CnZvaWQgY29u
ZF9leGl0X21hY3JvIChpbnQpOwppbnQgc2Vlbl9hdF9sZWFzdF8xX2ZpbGUgKHZvaWQpOwp2b2lk
IGFwcF9wb3AgKGNoYXIgKmFyZyk7CnZvaWQgYXNfaG93bXVjaCAoRklMRSAqIHN0cmVhbSk7CnZv
aWQgYXNfcGVycm9yIChjb25zdCBjaGFyICpncmlwZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpOwp2
b2lkIGFzX3doZXJlIChjaGFyICoqbmFtZXAsIHVuc2lnbmVkIGludCAqbGluZXApOwp2b2lkIGJ1
bXBfbGluZV9jb3VudGVycyAodm9pZCk7CnZvaWQgZG9fc2NydWJfYmVnaW4gKGludCk7CnZvaWQg
aW5wdXRfc2NydWJfYmVnaW4gKHZvaWQpOwp2b2lkIGlucHV0X3NjcnViX2Nsb3NlICh2b2lkKTsK
dm9pZCBpbnB1dF9zY3J1Yl9lbmQgKHZvaWQpOwppbnQgbmV3X2xvZ2ljYWxfbGluZSAoY2hhciAq
Zm5hbWUsIGludCBsaW5lX251bWJlcik7CnZvaWQgc3Vic2Vnc19iZWdpbiAodm9pZCk7CnZvaWQg
c3Vic2VnX2NoYW5nZSAoc2VnVCBzZWcsIGludCBzdWJzZWcpOwpzZWdUIHN1YnNlZ19uZXcgKGNv
bnN0IGNoYXIgKm5hbWUsIHN1YnNlZ1Qgc3Vic2VnKTsKc2VnVCBzdWJzZWdfZm9yY2VfbmV3IChj
b25zdCBjaGFyICpuYW1lLCBzdWJzZWdUIHN1YnNlZyk7CnZvaWQgc3Vic2VnX3NldCAoc2VnVCBz
ZWcsIHN1YnNlZ1Qgc3Vic2VnKTsKCnNlZ1Qgc3Vic2VnX2dldCAoY29uc3QgY2hhciAqLCBpbnQp
OwoKaW50IHN1YnNlZ190ZXh0X3AgKHNlZ1QpOwoKdm9pZCBzdGFydF9kZXBlbmRlbmNpZXMgKGNo
YXIgKik7CnZvaWQgcmVnaXN0ZXJfZGVwZW5kZW5jeSAoY2hhciAqKTsKdm9pZCBwcmludF9kZXBl
bmRlbmNpZXMgKHZvaWQpOwoKc3RydWN0IGV4cHJlc3Npb25TOwpzdHJ1Y3QgZml4Owp0eXBlZGVm
IHN0cnVjdCBzeW1ib2wgc3ltYm9sUzsKc3RydWN0IHJlbGF4X3R5cGU7CnR5cGVkZWYgc3RydWN0
IGZyYWcgZnJhZ1M7CgoKCnZhbHVlVCBhZGRfdG9fbGl0ZXJhbF9wb29sIChzeW1ib2xTICosIHZh
bHVlVCwgc2VnVCwgaW50KTsKCgppbnQgY2hlY2tfZWhfZnJhbWUgKHN0cnVjdCBleHByZXNzaW9u
UyAqLCB1bnNpZ25lZCBpbnQgKik7CmludCBlaF9mcmFtZV9lc3RpbWF0ZV9zaXplX2JlZm9yZV9y
ZWxheCAoZnJhZ1MgKik7CmludCBlaF9mcmFtZV9yZWxheF9mcmFnIChmcmFnUyAqKTsKdm9pZCBl
aF9mcmFtZV9jb252ZXJ0X2ZyYWcgKGZyYWdTICopOwoKIyAxICIvc3JjL2JpbnV0aWxzLTIuMTMv
Z2FzL2V4cHIuaCIgMQojIDQzICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2V4cHIuaCIKdHlwZWRl
ZiBlbnVtIHsKCiAgT19pbGxlZ2FsLAoKICBPX2Fic2VudCwKCiAgT19jb25zdGFudCwKCiAgT19z
eW1ib2wsCgogIE9fc3ltYm9sX3J2YSwKCiAgT19yZWdpc3RlciwKCgoKCiAgT19iaWcsCgogIE9f
dW1pbnVzLAoKICBPX2JpdF9ub3QsCgogIE9fbG9naWNhbF9ub3QsCgogIE9fbXVsdGlwbHksCgog
IE9fZGl2aWRlLAoKICBPX21vZHVsdXMsCgogIE9fbGVmdF9zaGlmdCwKCiAgT19yaWdodF9zaGlm
dCwKCiAgT19iaXRfaW5jbHVzaXZlX29yLAoKICBPX2JpdF9vcl9ub3QsCgogIE9fYml0X2V4Y2x1
c2l2ZV9vciwKCiAgT19iaXRfYW5kLAoKICBPX2FkZCwKCiAgT19zdWJ0cmFjdCwKCiAgT19lcSwK
CiAgT19uZSwKCiAgT19sdCwKCiAgT19sZSwKCiAgT19nZSwKCiAgT19ndCwKCiAgT19sb2dpY2Fs
X2FuZCwKCiAgT19sb2dpY2FsX29yLAoKICBPX2luZGV4LAoKICBPX21kMSwgT19tZDIsIE9fbWQz
LCBPX21kNCwgT19tZDUsIE9fbWQ2LCBPX21kNywgT19tZDgsCiAgT19tZDksIE9fbWQxMCwgT19t
ZDExLCBPX21kMTIsIE9fbWQxMywgT19tZDE0LCBPX21kMTUsIE9fbWQxNiwKICBPX21kMTcsIE9f
bWQxOCwgT19tZDE5LCBPX21kMjAsIE9fbWQyMSwgT19tZDIyLCBPX21kMjMsIE9fbWQyNCwKICBP
X21kMjUsIE9fbWQyNiwgT19tZDI3LCBPX21kMjgsIE9fbWQyOSwgT19tZDMwLCBPX21kMzEsIE9f
bWQzMiwKCiAgT19tYXgKfSBvcGVyYXRvclQ7Cgp0eXBlZGVmIHN0cnVjdCBleHByZXNzaW9uUyB7
CgogIHN5bWJvbFMgKlhfYWRkX3N5bWJvbDsKCiAgc3ltYm9sUyAqWF9vcF9zeW1ib2w7CgogIG9m
ZnNldFQgWF9hZGRfbnVtYmVyOwoKCgoKCiAgb3BlcmF0b3JUIFhfb3AgOiA4OwojIDEzOCAiL3Ny
Yy9iaW51dGlscy0yLjEzL2dhcy9leHByLmgiCiAgdW5zaWduZWQgaW50IFhfdW5zaWduZWQgOiAx
OwoKCgoKICB1bnNpZ25lZCBzaG9ydCBYX21kOwp9IGV4cHJlc3Npb25TOwoKCgoKCgoKZXh0ZXJu
IEZMT05VTV9UWVBFIGdlbmVyaWNfZmxvYXRpbmdfcG9pbnRfbnVtYmVyOwoKZXh0ZXJuIExJVFRM
RU5VTV9UWVBFIGdlbmVyaWNfYmlnbnVtW107CgoKCnR5cGVkZWYgY2hhciBvcGVyYXRvcl9yYW5r
VDsKCmV4dGVybiBjaGFyIGdldF9zeW1ib2xfZW5kICh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhwcl9i
ZWdpbiAodm9pZCk7CmV4dGVybiB2b2lkIGV4cHJfc2V0X3ByZWNlZGVuY2UgKHZvaWQpOwpleHRl
cm4gc2VnVCBleHByIChpbnQgcmFuaywgZXhwcmVzc2lvblMgKiByZXN1bHRQKTsKZXh0ZXJuIHVu
c2lnbmVkIGludCBnZXRfc2luZ2xlX251bWJlciAodm9pZCk7CmV4dGVybiBzeW1ib2xTICptYWtl
X2V4cHJfc3ltYm9sIChleHByZXNzaW9uUyAqIGV4cHJlc3Npb25QKTsKZXh0ZXJuIGludCBleHBy
X3N5bWJvbF93aGVyZQogIChzeW1ib2xTICosIGNoYXIgKiosIHVuc2lnbmVkIGludCAqKTsKCmV4
dGVybiBzeW1ib2xTICpleHByX2J1aWxkX3Vjb25zdGFudCAob2Zmc2V0VCk7CmV4dGVybiBzeW1i
b2xTICpleHByX2J1aWxkX3VuYXJ5IChvcGVyYXRvclQsIHN5bWJvbFMgKik7CmV4dGVybiBzeW1i
b2xTICpleHByX2J1aWxkX2JpbmFyeSAob3BlcmF0b3JULCBzeW1ib2xTICosIHN5bWJvbFMgKik7
CmV4dGVybiBzeW1ib2xTICpleHByX2J1aWxkX2RvdCAodm9pZCk7CiMgNjEyICIvc3JjL2JpbnV0
aWxzLTIuMTMvZ2FzL2FzLmgiIDIKCgojIDEgInRhcmctZW52LmgiIDEKIyAxICIvc3JjL2JpbnV0
aWxzLTIuMTMvZ2FzL2NvbmZpZy90ZS1nZW5lcmljLmgiIDEKIyAxOSAiL3NyYy9iaW51dGlscy0y
LjEzL2dhcy9jb25maWcvdGUtZ2VuZXJpYy5oIgojIDEgIm9iai1mb3JtYXQuaCIgMQojIDEgIi9z
cmMvYmludXRpbHMtMi4xMy9nYXMvY29uZmlnL29iai1lbGYuaCIgMQojIDQwICIvc3JjL2JpbnV0
aWxzLTIuMTMvZ2FzL2NvbmZpZy9vYmotZWxmLmgiCiMgMSAiL3NyYy9iaW51dGlscy0yLjEzL2Jm
ZC9lbGYtYmZkLmgiIDEKIyAyNSAiL3NyYy9iaW51dGlscy0yLjEzL2JmZC9lbGYtYmZkLmgiCiMg
MSAiL3NyYy9iaW51dGlscy0yLjEzL2luY2x1ZGUvZWxmL2NvbW1vbi5oIiAxCiMgMjYgIi9zcmMv
YmludXRpbHMtMi4xMy9iZmQvZWxmLWJmZC5oIiAyCiMgMSAiL3NyYy9iaW51dGlscy0yLjEzL2lu
Y2x1ZGUvZWxmL2ludGVybmFsLmgiIDEKIyA0NCAiL3NyYy9iaW51dGlscy0yLjEzL2luY2x1ZGUv
ZWxmL2ludGVybmFsLmgiCnR5cGVkZWYgc3RydWN0IGVsZl9pbnRlcm5hbF9laGRyIHsKICB1bnNp
Z25lZCBjaGFyIGVfaWRlbnRbMTZdOwogIGJmZF92bWEgZV9lbnRyeTsKICBiZmRfc2l6ZV90eXBl
IGVfcGhvZmY7CiAgYmZkX3NpemVfdHlwZSBlX3Nob2ZmOwogIHVuc2lnbmVkIGxvbmcgZV92ZXJz
aW9uOwogIHVuc2lnbmVkIGxvbmcgZV9mbGFnczsKICB1bnNpZ25lZCBzaG9ydCBlX3R5cGU7CiAg
dW5zaWduZWQgc2hvcnQgZV9tYWNoaW5lOwogIHVuc2lnbmVkIGludCBlX2Voc2l6ZTsKICB1bnNp
Z25lZCBpbnQgZV9waGVudHNpemU7CiAgdW5zaWduZWQgaW50IGVfcGhudW07CiAgdW5zaWduZWQg
aW50IGVfc2hlbnRzaXplOwogIHVuc2lnbmVkIGludCBlX3NobnVtOwogIHVuc2lnbmVkIGludCBl
X3Noc3RybmR4Owp9IEVsZl9JbnRlcm5hbF9FaGRyOwojIDY4ICIvc3JjL2JpbnV0aWxzLTIuMTMv
aW5jbHVkZS9lbGYvaW50ZXJuYWwuaCIKc3RydWN0IGVsZl9pbnRlcm5hbF9waGRyIHsKICB1bnNp
Z25lZCBsb25nIHBfdHlwZTsKICB1bnNpZ25lZCBsb25nIHBfZmxhZ3M7CiAgYmZkX3ZtYSBwX29m
ZnNldDsKICBiZmRfdm1hIHBfdmFkZHI7CiAgYmZkX3ZtYSBwX3BhZGRyOwogIGJmZF92bWEgcF9m
aWxlc3o7CiAgYmZkX3ZtYSBwX21lbXN6OwogIGJmZF92bWEgcF9hbGlnbjsKfTsKCnR5cGVkZWYg
c3RydWN0IGVsZl9pbnRlcm5hbF9waGRyIEVsZl9JbnRlcm5hbF9QaGRyOwoKCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgZWxmX2ludGVybmFsX3NoZHIgewogIHVuc2lnbmVkIGludCBzaF9uYW1lOwogIHVu
c2lnbmVkIGludCBzaF90eXBlOwogIGJmZF92bWEgc2hfZmxhZ3M7CiAgYmZkX3ZtYSBzaF9hZGRy
OwogIGJmZF9zaXplX3R5cGUgc2hfc2l6ZTsKICBiZmRfc2l6ZV90eXBlIHNoX2VudHNpemU7CiAg
dW5zaWduZWQgbG9uZyBzaF9saW5rOwogIHVuc2lnbmVkIGxvbmcgc2hfaW5mbzsKICBmaWxlX3B0
ciBzaF9vZmZzZXQ7CiAgdW5zaWduZWQgaW50IHNoX2FkZHJhbGlnbjsKCgogIGFzZWN0aW9uICog
YmZkX3NlY3Rpb247CiAgdW5zaWduZWQgY2hhciAqY29udGVudHM7Cn0gRWxmX0ludGVybmFsX1No
ZHI7CiMgMTExICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9lbGYvaW50ZXJuYWwuaCIKc3Ry
dWN0IGVsZl9pbnRlcm5hbF9zeW0gewogIGJmZF92bWEgc3RfdmFsdWU7CiAgYmZkX3ZtYSBzdF9z
aXplOwogIHVuc2lnbmVkIGxvbmcgc3RfbmFtZTsKICB1bnNpZ25lZCBjaGFyIHN0X2luZm87CiAg
dW5zaWduZWQgY2hhciBzdF9vdGhlcjsKICB1bnNpZ25lZCBpbnQgc3Rfc2huZHg7Cn07Cgp0eXBl
ZGVmIHN0cnVjdCBlbGZfaW50ZXJuYWxfc3ltIEVsZl9JbnRlcm5hbF9TeW07CiMgMTI5ICIvc3Jj
L2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9lbGYvaW50ZXJuYWwuaCIKdHlwZWRlZiBzdHJ1Y3QgZWxm
X2ludGVybmFsX25vdGUgewogIHVuc2lnbmVkIGxvbmcgbmFtZXN6OwogIHVuc2lnbmVkIGxvbmcg
ZGVzY3N6OwogIHVuc2lnbmVkIGxvbmcgdHlwZTsKICBjaGFyICogbmFtZWRhdGE7CiAgY2hhciAq
IGRlc2NkYXRhOwogIGJmZF92bWEgZGVzY3BvczsKfSBFbGZfSW50ZXJuYWxfTm90ZTsKCgoKCgp0
eXBlZGVmIHN0cnVjdCBlbGZfaW50ZXJuYWxfcmVsIHsKICBiZmRfdm1hIHJfb2Zmc2V0OwoKICBi
ZmRfdm1hIHJfaW5mbzsKfSBFbGZfSW50ZXJuYWxfUmVsOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBl
bGZfaW50ZXJuYWxfcmVsYSB7CiAgYmZkX3ZtYSByX29mZnNldDsKICBiZmRfdm1hIHJfaW5mbzsK
ICBiZmRfdm1hIHJfYWRkZW5kOwp9IEVsZl9JbnRlcm5hbF9SZWxhOwojIDE2NiAiL3NyYy9iaW51
dGlscy0yLjEzL2luY2x1ZGUvZWxmL2ludGVybmFsLmgiCnR5cGVkZWYgc3RydWN0IGVsZl9pbnRl
cm5hbF9keW4gewoKICBiZmRfdm1hIGRfdGFnOwogIHVuaW9uIHsKCiAgICBiZmRfdm1hIGRfdmFs
OwogICAgYmZkX3ZtYSBkX3B0cjsKICB9IGRfdW47Cn0gRWxmX0ludGVybmFsX0R5bjsKIyAxODMg
Ii9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2VsZi9pbnRlcm5hbC5oIgp0eXBlZGVmIHN0cnVj
dCBlbGZfaW50ZXJuYWxfdmVyZGVmIHsKICB1bnNpZ25lZCBzaG9ydCB2ZF92ZXJzaW9uOwogIHVu
c2lnbmVkIHNob3J0IHZkX2ZsYWdzOwogIHVuc2lnbmVkIHNob3J0IHZkX25keDsKICB1bnNpZ25l
ZCBzaG9ydCB2ZF9jbnQ7CiAgdW5zaWduZWQgbG9uZyB2ZF9oYXNoOwogIHVuc2lnbmVkIGxvbmcg
dmRfYXV4OwogIHVuc2lnbmVkIGxvbmcgdmRfbmV4dDsKCgoKICBiZmQgKnZkX2JmZDsKICBjb25z
dCBjaGFyICp2ZF9ub2RlbmFtZTsKICBzdHJ1Y3QgZWxmX2ludGVybmFsX3ZlcmRlZiAqdmRfbmV4
dGRlZjsKICBzdHJ1Y3QgZWxmX2ludGVybmFsX3ZlcmRhdXggKnZkX2F1eHB0cjsKICB1bnNpZ25l
ZCBpbnQgdmRfZXhwX3JlZm5vOwp9IEVsZl9JbnRlcm5hbF9WZXJkZWY7CgoKCnR5cGVkZWYgc3Ry
dWN0IGVsZl9pbnRlcm5hbF92ZXJkYXV4IHsKICB1bnNpZ25lZCBsb25nIHZkYV9uYW1lOwogIHVu
c2lnbmVkIGxvbmcgdmRhX25leHQ7CgoKCiAgY29uc3QgY2hhciAqdmRhX25vZGVuYW1lOwogIHN0
cnVjdCBlbGZfaW50ZXJuYWxfdmVyZGF1eCAqdmRhX25leHRwdHI7Cn0gRWxmX0ludGVybmFsX1Zl
cmRhdXg7CgoKCnR5cGVkZWYgc3RydWN0IGVsZl9pbnRlcm5hbF92ZXJuZWVkIHsKICB1bnNpZ25l
ZCBzaG9ydCB2bl92ZXJzaW9uOwogIHVuc2lnbmVkIHNob3J0IHZuX2NudDsKICB1bnNpZ25lZCBs
b25nIHZuX2ZpbGU7CiAgdW5zaWduZWQgbG9uZyB2bl9hdXg7CiAgdW5zaWduZWQgbG9uZyB2bl9u
ZXh0OwoKCgogIGJmZCAqdm5fYmZkOwogIGNvbnN0IGNoYXIgKnZuX2ZpbGVuYW1lOwogIHN0cnVj
dCBlbGZfaW50ZXJuYWxfdmVybmF1eCAqdm5fYXV4cHRyOwogIHN0cnVjdCBlbGZfaW50ZXJuYWxf
dmVybmVlZCAqdm5fbmV4dHJlZjsKfSBFbGZfSW50ZXJuYWxfVmVybmVlZDsKCgoKdHlwZWRlZiBz
dHJ1Y3QgZWxmX2ludGVybmFsX3Zlcm5hdXggewogIHVuc2lnbmVkIGxvbmcgdm5hX2hhc2g7CiAg
dW5zaWduZWQgc2hvcnQgdm5hX2ZsYWdzOwogIHVuc2lnbmVkIHNob3J0IHZuYV9vdGhlcjsKICB1
bnNpZ25lZCBsb25nIHZuYV9uYW1lOwogIHVuc2lnbmVkIGxvbmcgdm5hX25leHQ7CgoKCiAgY29u
c3QgY2hhciAqdm5hX25vZGVuYW1lOwogIHN0cnVjdCBlbGZfaW50ZXJuYWxfdmVybmF1eCAqdm5h
X25leHRwdHI7Cn0gRWxmX0ludGVybmFsX1Zlcm5hdXg7CgoKCgp0eXBlZGVmIHN0cnVjdCBlbGZf
aW50ZXJuYWxfdmVyc3ltIHsKICB1bnNpZ25lZCBzaG9ydCB2c192ZXJzOwp9IEVsZl9JbnRlcm5h
bF9WZXJzeW07CgoKdHlwZWRlZiBzdHJ1Y3QKewogIHVuc2lnbmVkIHNob3J0IGludCBzaV9ib3Vu
ZHRvOwogIHVuc2lnbmVkIHNob3J0IGludCBzaV9mbGFnczsKfSBFbGZfSW50ZXJuYWxfU3ltaW5m
bzsKIyAyODcgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2VsZi9pbnRlcm5hbC5oIgpzdHJ1
Y3QgZWxmX3NlZ21lbnRfbWFwCnsKCiAgc3RydWN0IGVsZl9zZWdtZW50X21hcCAqbmV4dDsKCiAg
dW5zaWduZWQgbG9uZyBwX3R5cGU7CgogIHVuc2lnbmVkIGxvbmcgcF9mbGFnczsKCiAgYmZkX3Zt
YSBwX3BhZGRyOwoKCiAgdW5zaWduZWQgaW50IHBfZmxhZ3NfdmFsaWQgOiAxOwoKCiAgdW5zaWdu
ZWQgaW50IHBfcGFkZHJfdmFsaWQgOiAxOwoKICB1bnNpZ25lZCBpbnQgaW5jbHVkZXNfZmlsZWhk
ciA6IDE7CgogIHVuc2lnbmVkIGludCBpbmNsdWRlc19waGRycyA6IDE7CgogIHVuc2lnbmVkIGlu
dCBjb3VudDsKCiAgYXNlY3Rpb24gKnNlY3Rpb25zWzFdOwp9OwojIDI3ICIvc3JjL2JpbnV0aWxz
LTIuMTMvYmZkL2VsZi1iZmQuaCIgMgojIDEgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2Vs
Zi9leHRlcm5hbC5oIiAxCiMgNDAgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2VsZi9leHRl
cm5hbC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciBlX2lkZW50WzE2XTsKICB1
bnNpZ25lZCBjaGFyIGVfdHlwZVsyXTsKICB1bnNpZ25lZCBjaGFyIGVfbWFjaGluZVsyXTsKICB1
bnNpZ25lZCBjaGFyIGVfdmVyc2lvbls0XTsKICB1bnNpZ25lZCBjaGFyIGVfZW50cnlbNF07CiAg
dW5zaWduZWQgY2hhciBlX3Bob2ZmWzRdOwogIHVuc2lnbmVkIGNoYXIgZV9zaG9mZls0XTsKICB1
bnNpZ25lZCBjaGFyIGVfZmxhZ3NbNF07CiAgdW5zaWduZWQgY2hhciBlX2Voc2l6ZVsyXTsKICB1
bnNpZ25lZCBjaGFyIGVfcGhlbnRzaXplWzJdOwogIHVuc2lnbmVkIGNoYXIgZV9waG51bVsyXTsK
ICB1bnNpZ25lZCBjaGFyIGVfc2hlbnRzaXplWzJdOwogIHVuc2lnbmVkIGNoYXIgZV9zaG51bVsy
XTsKICB1bnNpZ25lZCBjaGFyIGVfc2hzdHJuZHhbMl07Cn0gRWxmMzJfRXh0ZXJuYWxfRWhkcjsK
CnR5cGVkZWYgc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIGVfaWRlbnRbMTZdOwogIHVuc2lnbmVk
IGNoYXIgZV90eXBlWzJdOwogIHVuc2lnbmVkIGNoYXIgZV9tYWNoaW5lWzJdOwogIHVuc2lnbmVk
IGNoYXIgZV92ZXJzaW9uWzRdOwogIHVuc2lnbmVkIGNoYXIgZV9lbnRyeVs4XTsKICB1bnNpZ25l
ZCBjaGFyIGVfcGhvZmZbOF07CiAgdW5zaWduZWQgY2hhciBlX3Nob2ZmWzhdOwogIHVuc2lnbmVk
IGNoYXIgZV9mbGFnc1s0XTsKICB1bnNpZ25lZCBjaGFyIGVfZWhzaXplWzJdOwogIHVuc2lnbmVk
IGNoYXIgZV9waGVudHNpemVbMl07CiAgdW5zaWduZWQgY2hhciBlX3BobnVtWzJdOwogIHVuc2ln
bmVkIGNoYXIgZV9zaGVudHNpemVbMl07CiAgdW5zaWduZWQgY2hhciBlX3NobnVtWzJdOwogIHVu
c2lnbmVkIGNoYXIgZV9zaHN0cm5keFsyXTsKfSBFbGY2NF9FeHRlcm5hbF9FaGRyOwoKCgp0eXBl
ZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciBwX3R5cGVbNF07CiAgdW5zaWduZWQgY2hhciBw
X29mZnNldFs0XTsKICB1bnNpZ25lZCBjaGFyIHBfdmFkZHJbNF07CiAgdW5zaWduZWQgY2hhciBw
X3BhZGRyWzRdOwogIHVuc2lnbmVkIGNoYXIgcF9maWxlc3pbNF07CiAgdW5zaWduZWQgY2hhciBw
X21lbXN6WzRdOwogIHVuc2lnbmVkIGNoYXIgcF9mbGFnc1s0XTsKICB1bnNpZ25lZCBjaGFyIHBf
YWxpZ25bNF07Cn0gRWxmMzJfRXh0ZXJuYWxfUGhkcjsKCnR5cGVkZWYgc3RydWN0IHsKICB1bnNp
Z25lZCBjaGFyIHBfdHlwZVs0XTsKICB1bnNpZ25lZCBjaGFyIHBfZmxhZ3NbNF07CiAgdW5zaWdu
ZWQgY2hhciBwX29mZnNldFs4XTsKICB1bnNpZ25lZCBjaGFyIHBfdmFkZHJbOF07CiAgdW5zaWdu
ZWQgY2hhciBwX3BhZGRyWzhdOwogIHVuc2lnbmVkIGNoYXIgcF9maWxlc3pbOF07CiAgdW5zaWdu
ZWQgY2hhciBwX21lbXN6WzhdOwogIHVuc2lnbmVkIGNoYXIgcF9hbGlnbls4XTsKfSBFbGY2NF9F
eHRlcm5hbF9QaGRyOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciBzaF9uYW1l
WzRdOwogIHVuc2lnbmVkIGNoYXIgc2hfdHlwZVs0XTsKICB1bnNpZ25lZCBjaGFyIHNoX2ZsYWdz
WzRdOwogIHVuc2lnbmVkIGNoYXIgc2hfYWRkcls0XTsKICB1bnNpZ25lZCBjaGFyIHNoX29mZnNl
dFs0XTsKICB1bnNpZ25lZCBjaGFyIHNoX3NpemVbNF07CiAgdW5zaWduZWQgY2hhciBzaF9saW5r
WzRdOwogIHVuc2lnbmVkIGNoYXIgc2hfaW5mb1s0XTsKICB1bnNpZ25lZCBjaGFyIHNoX2FkZHJh
bGlnbls0XTsKICB1bnNpZ25lZCBjaGFyIHNoX2VudHNpemVbNF07Cn0gRWxmMzJfRXh0ZXJuYWxf
U2hkcjsKCnR5cGVkZWYgc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIHNoX25hbWVbNF07CiAgdW5z
aWduZWQgY2hhciBzaF90eXBlWzRdOwogIHVuc2lnbmVkIGNoYXIgc2hfZmxhZ3NbOF07CiAgdW5z
aWduZWQgY2hhciBzaF9hZGRyWzhdOwogIHVuc2lnbmVkIGNoYXIgc2hfb2Zmc2V0WzhdOwogIHVu
c2lnbmVkIGNoYXIgc2hfc2l6ZVs4XTsKICB1bnNpZ25lZCBjaGFyIHNoX2xpbmtbNF07CiAgdW5z
aWduZWQgY2hhciBzaF9pbmZvWzRdOwogIHVuc2lnbmVkIGNoYXIgc2hfYWRkcmFsaWduWzhdOwog
IHVuc2lnbmVkIGNoYXIgc2hfZW50c2l6ZVs4XTsKfSBFbGY2NF9FeHRlcm5hbF9TaGRyOwoKCgp0
eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciBzdF9uYW1lWzRdOwogIHVuc2lnbmVkIGNo
YXIgc3RfdmFsdWVbNF07CiAgdW5zaWduZWQgY2hhciBzdF9zaXplWzRdOwogIHVuc2lnbmVkIGNo
YXIgc3RfaW5mb1sxXTsKICB1bnNpZ25lZCBjaGFyIHN0X290aGVyWzFdOwogIHVuc2lnbmVkIGNo
YXIgc3Rfc2huZHhbMl07Cn0gRWxmMzJfRXh0ZXJuYWxfU3ltOwoKdHlwZWRlZiBzdHJ1Y3Qgewog
IHVuc2lnbmVkIGNoYXIgc3RfbmFtZVs0XTsKICB1bnNpZ25lZCBjaGFyIHN0X2luZm9bMV07CiAg
dW5zaWduZWQgY2hhciBzdF9vdGhlclsxXTsKICB1bnNpZ25lZCBjaGFyIHN0X3NobmR4WzJdOwog
IHVuc2lnbmVkIGNoYXIgc3RfdmFsdWVbOF07CiAgdW5zaWduZWQgY2hhciBzdF9zaXplWzhdOwp9
IEVsZjY0X0V4dGVybmFsX1N5bTsKCnR5cGVkZWYgc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIGVz
dF9zaG5keFs0XTsKfSBFbGZfRXh0ZXJuYWxfU3ltX1NobmR4OwoKCgp0eXBlZGVmIHN0cnVjdCB7
CiAgdW5zaWduZWQgY2hhciBuYW1lc3pbNF07CiAgdW5zaWduZWQgY2hhciBkZXNjc3pbNF07CiAg
dW5zaWduZWQgY2hhciB0eXBlWzRdOwogIGNoYXIgbmFtZVsxXTsKfSBFbGZfRXh0ZXJuYWxfTm90
ZTsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciByX29mZnNldFs0XTsKICB1bnNp
Z25lZCBjaGFyIHJfaW5mb1s0XTsKfSBFbGYzMl9FeHRlcm5hbF9SZWw7Cgp0eXBlZGVmIHN0cnVj
dCB7CiAgdW5zaWduZWQgY2hhciByX29mZnNldFs0XTsKICB1bnNpZ25lZCBjaGFyIHJfaW5mb1s0
XTsKICB1bnNpZ25lZCBjaGFyIHJfYWRkZW5kWzRdOwp9IEVsZjMyX0V4dGVybmFsX1JlbGE7Cgp0
eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciByX29mZnNldFs4XTsKICB1bnNpZ25lZCBj
aGFyIHJfaW5mb1s4XTsKfSBFbGY2NF9FeHRlcm5hbF9SZWw7Cgp0eXBlZGVmIHN0cnVjdCB7CiAg
dW5zaWduZWQgY2hhciByX29mZnNldFs4XTsKICB1bnNpZ25lZCBjaGFyIHJfaW5mb1s4XTsKICB1
bnNpZ25lZCBjaGFyIHJfYWRkZW5kWzhdOwp9IEVsZjY0X0V4dGVybmFsX1JlbGE7CgoKCnR5cGVk
ZWYgc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIGRfdGFnWzRdOwogIHVuaW9uIHsKICAgIHVuc2ln
bmVkIGNoYXIgZF92YWxbNF07CiAgICB1bnNpZ25lZCBjaGFyIGRfcHRyWzRdOwogIH0gZF91bjsK
fSBFbGYzMl9FeHRlcm5hbF9EeW47Cgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciBk
X3RhZ1s4XTsKICB1bmlvbiB7CiAgICB1bnNpZ25lZCBjaGFyIGRfdmFsWzhdOwogICAgdW5zaWdu
ZWQgY2hhciBkX3B0cls4XTsKICB9IGRfdW47Cn0gRWxmNjRfRXh0ZXJuYWxfRHluOwoKCgoKCgoK
dHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgdmRfdmVyc2lvblsyXTsKICB1bnNpZ25l
ZCBjaGFyIHZkX2ZsYWdzWzJdOwogIHVuc2lnbmVkIGNoYXIgdmRfbmR4WzJdOwogIHVuc2lnbmVk
IGNoYXIgdmRfY250WzJdOwogIHVuc2lnbmVkIGNoYXIgdmRfaGFzaFs0XTsKICB1bnNpZ25lZCBj
aGFyIHZkX2F1eFs0XTsKICB1bnNpZ25lZCBjaGFyIHZkX25leHRbNF07Cn0gRWxmX0V4dGVybmFs
X1ZlcmRlZjsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgdmRhX25hbWVbNF07
CiAgdW5zaWduZWQgY2hhciB2ZGFfbmV4dFs0XTsKfSBFbGZfRXh0ZXJuYWxfVmVyZGF1eDsKCgoK
dHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgdm5fdmVyc2lvblsyXTsKICB1bnNpZ25l
ZCBjaGFyIHZuX2NudFsyXTsKICB1bnNpZ25lZCBjaGFyIHZuX2ZpbGVbNF07CiAgdW5zaWduZWQg
Y2hhciB2bl9hdXhbNF07CiAgdW5zaWduZWQgY2hhciB2bl9uZXh0WzRdOwp9IEVsZl9FeHRlcm5h
bF9WZXJuZWVkOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciB2bmFfaGFzaFs0
XTsKICB1bnNpZ25lZCBjaGFyIHZuYV9mbGFnc1syXTsKICB1bnNpZ25lZCBjaGFyIHZuYV9vdGhl
clsyXTsKICB1bnNpZ25lZCBjaGFyIHZuYV9uYW1lWzRdOwogIHVuc2lnbmVkIGNoYXIgdm5hX25l
eHRbNF07Cn0gRWxmX0V4dGVybmFsX1Zlcm5hdXg7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5z
aWduZWQgY2hhciB2c192ZXJzWzJdOwp9CgogIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKQoKICBF
bGZfRXh0ZXJuYWxfVmVyc3ltOwoKCnR5cGVkZWYgc3RydWN0CnsKICB1bnNpZ25lZCBjaGFyIHNp
X2JvdW5kdG9bMl07CiAgdW5zaWduZWQgY2hhciBzaV9mbGFnc1syXTsKfSBFbGZfRXh0ZXJuYWxf
U3ltaW5mbzsKIyAyOCAiL3NyYy9iaW51dGlscy0yLjEzL2JmZC9lbGYtYmZkLmgiIDIKIyAxICIv
c3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9iZmRsaW5rLmgiIDEKIyAyNiAiL3NyYy9iaW51dGls
cy0yLjEzL2luY2x1ZGUvYmZkbGluay5oIgplbnVtIGJmZF9saW5rX3N0cmlwCnsKICBzdHJpcF9u
b25lLAogIHN0cmlwX2RlYnVnZ2VyLAogIHN0cmlwX3NvbWUsCiAgc3RyaXBfYWxsCn07CgoKCmVu
dW0gYmZkX2xpbmtfZGlzY2FyZAp7CiAgZGlzY2FyZF9zZWNfbWVyZ2UsCgogIGRpc2NhcmRfbm9u
ZSwKICBkaXNjYXJkX2wsCiAgZGlzY2FyZF9hbGwKfTsKCgoKCmVudW0gYmZkX2xpbmtfaGFzaF90
YWJsZV90eXBlCiAgewogICAgYmZkX2xpbmtfZ2VuZXJpY19oYXNoX3RhYmxlLAogICAgYmZkX2xp
bmtfZWxmX2hhc2hfdGFibGUKICB9OwoKCgoKZW51bSBiZmRfbGlua19oYXNoX3R5cGUKewogIGJm
ZF9saW5rX2hhc2hfbmV3LAogIGJmZF9saW5rX2hhc2hfdW5kZWZpbmVkLAogIGJmZF9saW5rX2hh
c2hfdW5kZWZ3ZWFrLAogIGJmZF9saW5rX2hhc2hfZGVmaW5lZCwKICBiZmRfbGlua19oYXNoX2Rl
ZndlYWssCiAgYmZkX2xpbmtfaGFzaF9jb21tb24sCiAgYmZkX2xpbmtfaGFzaF9pbmRpcmVjdCwK
ICBiZmRfbGlua19oYXNoX3dhcm5pbmcKfTsKCgoKCnN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5
CnsKCiAgc3RydWN0IGJmZF9oYXNoX2VudHJ5IHJvb3Q7CgogIGVudW0gYmZkX2xpbmtfaGFzaF90
eXBlIHR5cGU7CiMgOTcgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2JmZGxpbmsuaCIKICBz
dHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSAqbmV4dDsKCiAgdW5pb24KICAgIHsKCgogICAgICBz
dHJ1Y3QKICAgICAgICB7CiAgICAgICAgICBiZmQgKmFiZmQ7CiAgICAgICAgfSB1bmRlZjsKCiAg
ICAgIHN0cnVjdAogICAgICAgIHsKICAgICAgICAgIGJmZF92bWEgdmFsdWU7CiAgICAgICAgICBh
c2VjdGlvbiAqc2VjdGlvbjsKICAgICAgICB9IGRlZjsKCiAgICAgIHN0cnVjdAogICAgICAgIHsK
ICAgICAgICAgIHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5ICpsaW5rOwogICAgICAgICAgY29u
c3QgY2hhciAqd2FybmluZzsKICAgICAgICB9IGk7CgogICAgICBzdHJ1Y3QKICAgICAgICB7CiMg
MTMxICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9iZmRsaW5rLmgiCiAgICAgICAgICBiZmRf
c2l6ZV90eXBlIHNpemU7CiAgICAgICAgICBzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9jb21tb25fZW50
cnkKICAgICAgICAgICAgewogICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhbGlnbm1lbnRfcG93
ZXI7CiAgICAgICAgICAgICAgYXNlY3Rpb24gKnNlY3Rpb247CiAgICAgICAgICAgIH0gKnA7CiAg
ICAgICAgfSBjOwogICAgfSB1Owp9OwoKCgoKc3RydWN0IGJmZF9saW5rX2hhc2hfdGFibGUKewoK
ICBzdHJ1Y3QgYmZkX2hhc2hfdGFibGUgdGFibGU7CgoKCgogIGNvbnN0IGJmZF90YXJnZXQgKmNy
ZWF0b3I7CgoKICBzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSAqdW5kZWZzOwoKICBzdHJ1Y3Qg
YmZkX2xpbmtfaGFzaF9lbnRyeSAqdW5kZWZzX3RhaWw7CgogIGVudW0gYmZkX2xpbmtfaGFzaF90
YWJsZV90eXBlIHR5cGU7Cn07CgoKCgpleHRlcm4gc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkg
KmJmZF9saW5rX2hhc2hfbG9va3VwCiAgKHN0cnVjdCBiZmRfbGlua19oYXNoX3RhYmxlICosIGNv
bnN0IGNoYXIgKiwgYm9vbGVhbiBjcmVhdGUsIGJvb2xlYW4gY29weSwgYm9vbGVhbiBmb2xsb3cp
OwoKCgoKCgpleHRlcm4gc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkgKmJmZF93cmFwcGVkX2xp
bmtfaGFzaF9sb29rdXAKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNvbnN0IGNo
YXIgKiwgYm9vbGVhbiwgYm9vbGVhbiwgYm9vbGVhbik7CgoKCmV4dGVybiB2b2lkIGJmZF9saW5r
X2hhc2hfdHJhdmVyc2UKICAoc3RydWN0IGJmZF9saW5rX2hhc2hfdGFibGUgKiwgYm9vbGVhbiAo
KikgKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5ICosIHZvaWQgKiksIHZvaWQgKik7CgoKCgpl
eHRlcm4gdm9pZCBiZmRfbGlua19hZGRfdW5kZWYKICAoc3RydWN0IGJmZF9saW5rX2hhc2hfdGFi
bGUgKiwgc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkgKik7CgpzdHJ1Y3QgYmZkX3N5bV9jaGFp
bgp7CiAgc3RydWN0IGJmZF9zeW1fY2hhaW4gKm5leHQ7CiAgY29uc3QgY2hhciAqbmFtZTsKfTsK
CgoKCnN0cnVjdCBiZmRfbGlua19pbmZvCnsKCiAgY29uc3Qgc3RydWN0IGJmZF9saW5rX2NhbGxi
YWNrcyAqY2FsbGJhY2tzOwoKCiAgYm9vbGVhbiByZWxvY2F0ZWFibGU7CgoKCiAgYm9vbGVhbiBl
bWl0cmVsb2NhdGlvbnM7CgoKCgogIGJvb2xlYW4gdGFza19saW5rOwoKCiAgYm9vbGVhbiBzaGFy
ZWQ7CgoKICBib29sZWFuIHN5bWJvbGljOwoKCgogIGJvb2xlYW4gZXhwb3J0X2R5bmFtaWM7CgoK
ICBib29sZWFuIHN0YXRpY19saW5rOwoKCgoKCiAgYm9vbGVhbiB0cmFkaXRpb25hbF9mb3JtYXQ7
CgoKCiAgYm9vbGVhbiBvcHRpbWl6ZTsKCgoKICBib29sZWFuIG5vX3VuZGVmaW5lZDsKIyAyNTIg
Ii9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2JmZGxpbmsuaCIKICBib29sZWFuIGFsbG93X3No
bGliX3VuZGVmaW5lZDsKCgogIGJvb2xlYW4gYWxsb3dfbXVsdGlwbGVfZGVmaW5pdGlvbjsKCgog
IGVudW0gYmZkX2xpbmtfc3RyaXAgc3RyaXA7CgoKICBlbnVtIGJmZF9saW5rX2Rpc2NhcmQgZGlz
Y2FyZDsKCgoKICBib29sZWFuIGtlZXBfbWVtb3J5OwoKCgogIGJmZCAqaW5wdXRfYmZkczsKCgoK
CgoKICBhc2VjdGlvbiAqY3JlYXRlX29iamVjdF9zeW1ib2xzX3NlY3Rpb247CgoKCiAgc3RydWN0
IGJmZF9zeW1fY2hhaW4gKmdjX3N5bV9saXN0OwoKCiAgc3RydWN0IGJmZF9saW5rX2hhc2hfdGFi
bGUgKmhhc2g7CgoKCiAgc3RydWN0IGJmZF9oYXNoX3RhYmxlICprZWVwX2hhc2g7CgoKCiAgYm9v
bGVhbiBub3RpY2VfYWxsOwoKCgoKICBzdHJ1Y3QgYmZkX2hhc2hfdGFibGUgKm5vdGljZV9oYXNo
OwoKCgogIHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqd3JhcF9oYXNoOwoKCiAgdm9pZCAqIGJhc2Vf
ZmlsZTsKCgoKCiAgaW50IG1wYzg2MGMwOwoKCgogIGNvbnN0IGNoYXIgKmluaXRfZnVuY3Rpb247
CgoKCiAgY29uc3QgY2hhciAqZmluaV9mdW5jdGlvbjsKCgogIGJvb2xlYW4gbmV3X2R0YWdzOwoK
CiAgYmZkX3ZtYSBmbGFnczsKCgogIGJmZF92bWEgZmxhZ3NfMTsKCgoKCiAgaW50IHBlaTM4Nl9h
dXRvX2ltcG9ydDsKCgoKICBib29sZWFuIGNvbWJyZWxvYzsKCgoKICBib29sZWFuIG5vY29weXJl
bG9jOwoKCgogIGJvb2xlYW4gZWhfZnJhbWVfaGRyOwoKCiAgdW5zaWduZWQgaW50IHNwYXJlX2R5
bmFtaWNfdGFnczsKfTsKIyAzNTUgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2JmZGxpbmsu
aCIKc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcwp7CgoKCgogIGJvb2xlYW4gKCphZGRfYXJjaGl2
ZV9lbGVtZW50KSAoc3RydWN0IGJmZF9saW5rX2luZm8gKiwgYmZkICphYmZkLCBjb25zdCBjaGFy
ICpuYW1lKTsKIyAzNzAgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2JmZGxpbmsuaCIKICBi
b29sZWFuICgqbXVsdGlwbGVfZGVmaW5pdGlvbikgKHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNv
bnN0IGNoYXIgKm5hbWUsIGJmZCAqb2JmZCwgYXNlY3Rpb24gKm9zZWMsIGJmZF92bWEgb3ZhbCwg
YmZkICpuYmZkLCBhc2VjdGlvbiAqbnNlYywgYmZkX3ZtYSBudmFsKTsKIyAzODkgIi9zcmMvYmlu
dXRpbHMtMi4xMy9pbmNsdWRlL2JmZGxpbmsuaCIKICBib29sZWFuICgqbXVsdGlwbGVfY29tbW9u
KSAoc3RydWN0IGJmZF9saW5rX2luZm8gKiwgY29uc3QgY2hhciAqbmFtZSwgYmZkICpvYmZkLCBl
bnVtIGJmZF9saW5rX2hhc2hfdHlwZSBvdHlwZSwgYmZkX3ZtYSBvc2l6ZSwgYmZkICpuYmZkLCBl
bnVtIGJmZF9saW5rX2hhc2hfdHlwZSBudHlwZSwgYmZkX3ZtYSBuc2l6ZSk7CiMgNDAzICIvc3Jj
L2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9iZmRsaW5rLmgiCiAgYm9vbGVhbiAoKmFkZF90b19zZXQp
IChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSAqZW50
cnksIGJmZF9yZWxvY19jb2RlX3JlYWxfdHlwZSByZWxvYywgYmZkICphYmZkLCBhc2VjdGlvbiAq
c2VjLCBiZmRfdm1hIHZhbHVlKTsKIyA0MTMgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2Jm
ZGxpbmsuaCIKICBib29sZWFuICgqY29uc3RydWN0b3IpIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAq
LCBib29sZWFuIGNvbnN0cnVjdG9yLCBjb25zdCBjaGFyICpuYW1lLCBiZmQgKmFiZmQsIGFzZWN0
aW9uICpzZWMsIGJmZF92bWEgdmFsdWUpOwojIDQyNCAiL3NyYy9iaW51dGlscy0yLjEzL2luY2x1
ZGUvYmZkbGluay5oIgogIGJvb2xlYW4gKCp3YXJuaW5nKSAoc3RydWN0IGJmZF9saW5rX2luZm8g
KiwgY29uc3QgY2hhciAqd2FybmluZywgY29uc3QgY2hhciAqc3ltYm9sLCBiZmQgKmFiZmQsIGFz
ZWN0aW9uICpzZWN0aW9uLCBiZmRfdm1hIGFkZHJlc3MpOwojIDQzMyAiL3NyYy9iaW51dGlscy0y
LjEzL2luY2x1ZGUvYmZkbGluay5oIgogIGJvb2xlYW4gKCp1bmRlZmluZWRfc3ltYm9sKSAoc3Ry
dWN0IGJmZF9saW5rX2luZm8gKiwgY29uc3QgY2hhciAqbmFtZSwgYmZkICphYmZkLCBhc2VjdGlv
biAqc2VjdGlvbiwgYmZkX3ZtYSBhZGRyZXNzLCBib29sZWFuIGZhdGFsKTsKIyA0NDUgIi9zcmMv
YmludXRpbHMtMi4xMy9pbmNsdWRlL2JmZGxpbmsuaCIKICBib29sZWFuICgqcmVsb2Nfb3ZlcmZs
b3cpIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFy
ICpyZWxvY19uYW1lLCBiZmRfdm1hIGFkZGVuZCwgYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdGlv
biwgYmZkX3ZtYSBhZGRyZXNzKTsKIyA0NTcgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2Jm
ZGxpbmsuaCIKICBib29sZWFuICgqcmVsb2NfZGFuZ2Vyb3VzKSAoc3RydWN0IGJmZF9saW5rX2lu
Zm8gKiwgY29uc3QgY2hhciAqbWVzc2FnZSwgYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdGlvbiwg
YmZkX3ZtYSBhZGRyZXNzKTsKIyA0NjcgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL2JmZGxp
bmsuaCIKICBib29sZWFuICgqdW5hdHRhY2hlZF9yZWxvYykgKHN0cnVjdCBiZmRfbGlua19pbmZv
ICosIGNvbnN0IGNoYXIgKm5hbWUsIGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3Rpb24sIGJmZF92
bWEgYWRkcmVzcyk7CgoKCgoKCgogIGJvb2xlYW4gKCpub3RpY2UpIChzdHJ1Y3QgYmZkX2xpbmtf
aW5mbyAqLCBjb25zdCBjaGFyICpuYW1lLCBiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0aW9uLCBi
ZmRfdm1hIGFkZHJlc3MpOwoKfTsKCgoKCgoKZW51bSBiZmRfbGlua19vcmRlcl90eXBlCnsKICBi
ZmRfdW5kZWZpbmVkX2xpbmtfb3JkZXIsCiAgYmZkX2luZGlyZWN0X2xpbmtfb3JkZXIsCiAgYmZk
X2RhdGFfbGlua19vcmRlciwKICBiZmRfc2VjdGlvbl9yZWxvY19saW5rX29yZGVyLAogIGJmZF9z
eW1ib2xfcmVsb2NfbGlua19vcmRlcgp9OwoKCgoKc3RydWN0IGJmZF9saW5rX29yZGVyCnsKCiAg
c3RydWN0IGJmZF9saW5rX29yZGVyICpuZXh0OwoKICBlbnVtIGJmZF9saW5rX29yZGVyX3R5cGUg
dHlwZTsKCiAgYmZkX3ZtYSBvZmZzZXQ7CgogIGJmZF9zaXplX3R5cGUgc2l6ZTsKCiAgdW5pb24K
ICAgIHsKICAgICAgc3RydWN0CiAgICAgICAgewoKCgoKCgogICAgICAgICAgYXNlY3Rpb24gKnNl
Y3Rpb247CiAgICAgICAgfSBpbmRpcmVjdDsKICAgICAgc3RydWN0CiAgICAgICAgewoKCgoKICAg
ICAgICAgIHVuc2lnbmVkIGludCBzaXplOwoKICAgICAgICAgIGJmZF9ieXRlICpjb250ZW50czsK
ICAgICAgICB9IGRhdGE7CiAgICAgIHN0cnVjdAogICAgICAgIHsKCgoKICAgICAgICAgIHN0cnVj
dCBiZmRfbGlua19vcmRlcl9yZWxvYyAqcDsKICAgICAgICB9IHJlbG9jOwogICAgfSB1Owp9Owoj
IDU1MSAiL3NyYy9iaW51dGlscy0yLjEzL2luY2x1ZGUvYmZkbGluay5oIgpzdHJ1Y3QgYmZkX2xp
bmtfb3JkZXJfcmVsb2MKewoKICBiZmRfcmVsb2NfY29kZV9yZWFsX3R5cGUgcmVsb2M7CgogIHVu
aW9uCiAgICB7CgoKCiAgICAgIGFzZWN0aW9uICpzZWN0aW9uOwoKCiAgICAgIGNvbnN0IGNoYXIg
Km5hbWU7CiAgICB9IHU7CgoKCgoKCiAgYmZkX3ZtYSBhZGRlbmQ7Cn07CgoKZXh0ZXJuIHN0cnVj
dCBiZmRfbGlua19vcmRlciAqYmZkX25ld19saW5rX29yZGVyIChiZmQgKiwgYXNlY3Rpb24gKik7
CiMgNTg1ICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9iZmRsaW5rLmgiCnN0cnVjdCBiZmRf
ZWxmX3ZlcnNpb25fZXhwcgp7CgogIHN0cnVjdCBiZmRfZWxmX3ZlcnNpb25fZXhwciAqbmV4dDsK
CiAgY29uc3QgY2hhciAqcGF0dGVybjsKCiAgaW50ICgqbWF0Y2gpIChzdHJ1Y3QgYmZkX2VsZl92
ZXJzaW9uX2V4cHIgKiwgY29uc3QgY2hhciAqKTsKfTsKCgoKc3RydWN0IGJmZF9lbGZfdmVyc2lv
bl9kZXBzCnsKCiAgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl9kZXBzICpuZXh0OwoKICBzdHJ1Y3Qg
YmZkX2VsZl92ZXJzaW9uX3RyZWUgKnZlcnNpb25fbmVlZGVkOwp9OwoKCgpzdHJ1Y3QgYmZkX2Vs
Zl92ZXJzaW9uX3RyZWUKewoKICBzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX3RyZWUgKm5leHQ7Cgog
IGNvbnN0IGNoYXIgKm5hbWU7CgogIHVuc2lnbmVkIGludCB2ZXJudW07CgogIHN0cnVjdCBiZmRf
ZWxmX3ZlcnNpb25fZXhwciAqZ2xvYmFsczsKCiAgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl9leHBy
ICpsb2NhbHM7CgogIHN0cnVjdCBiZmRfZWxmX3ZlcnNpb25fZGVwcyAqZGVwczsKCiAgdW5zaWdu
ZWQgaW50IG5hbWVfaW5keDsKCiAgaW50IHVzZWQ7Cn07CiMgMjkgIi9zcmMvYmludXRpbHMtMi4x
My9iZmQvZWxmLWJmZC5oIiAyCiMgNjAgIi9zcmMvYmludXRpbHMtMi4xMy9iZmQvZWxmLWJmZC5o
Igp0eXBlZGVmIHN0cnVjdAp7CgogIGFzeW1ib2wgc3ltYm9sOwoKICBFbGZfSW50ZXJuYWxfU3lt
IGludGVybmFsX2VsZl9zeW07CgogIHVuaW9uCiAgICB7CiAgICAgIHVuc2lnbmVkIGludCBocHBh
X2FyZ19yZWxvYzsKICAgICAgdm9pZCAqIG1pcHNfZXh0cjsKICAgICAgdm9pZCAqIGFueTsKICAg
IH0KICB0Y19kYXRhOwoKCgoKICB1bnNpZ25lZCBzaG9ydCB2ZXJzaW9uOwoKfSBlbGZfc3ltYm9s
X3R5cGU7CgpzdHJ1Y3QgZWxmX3N0cnRhYl9oYXNoOwoKCgpzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9l
bnRyeQp7CiAgc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkgcm9vdDsKCgoKICBsb25nIGluZHg7
CiMgMTA2ICIvc3JjL2JpbnV0aWxzLTIuMTMvYmZkL2VsZi1iZmQuaCIKICBsb25nIGR5bmluZHg7
CgoKICB1bnNpZ25lZCBsb25nIGR5bnN0cl9pbmRleDsKCgogIHVuc2lnbmVkIGxvbmcgZWxmX2hh
c2hfdmFsdWU7CgoKCgogIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICp3ZWFrZGVmOwoKCgoK
ICBzdHJ1Y3QgZWxmX2xpbmtlcl9zZWN0aW9uX3BvaW50ZXJzICpsaW5rZXJfc2VjdGlvbl9wb2lu
dGVyOwoKCiAgdW5pb24KICB7CgoKCiAgICBFbGZfSW50ZXJuYWxfVmVyZGVmICp2ZXJkZWY7CgoK
CiAgICBzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX3RyZWUgKnZlcnRyZWU7CiAgfSB2ZXJpbmZvOwoK
CgoKCiAgc2l6ZV90IHZ0YWJsZV9lbnRyaWVzX3NpemU7CiAgYm9vbGVhbiAqdnRhYmxlX2VudHJp
ZXNfdXNlZDsKCgogIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICp2dGFibGVfcGFyZW50Owoj
IDE1NCAiL3NyYy9iaW51dGlscy0yLjEzL2JmZC9lbGYtYmZkLmgiCiAgdW5pb24KICAgIHsKICAg
ICAgYmZkX3NpZ25lZF92bWEgcmVmY291bnQ7CiAgICAgIGJmZF92bWEgb2Zmc2V0OwogICAgfSBn
b3Q7CgoKICB1bmlvbgogICAgewogICAgICBiZmRfc2lnbmVkX3ZtYSByZWZjb3VudDsKICAgICAg
YmZkX3ZtYSBvZmZzZXQ7CiAgICB9IHBsdDsKCgogIGJmZF9zaXplX3R5cGUgc2l6ZTsKCgogIGNo
YXIgdHlwZTsKCgogIHVuc2lnbmVkIGNoYXIgb3RoZXI7CgoKICB1bnNpZ25lZCBzaG9ydCBlbGZf
bGlua19oYXNoX2ZsYWdzOwojIDIwNSAiL3NyYy9iaW51dGlscy0yLjEzL2JmZC9lbGYtYmZkLmgi
Cn07CgoKCnN0cnVjdCBlbGZfbGlua19sb2NhbF9keW5hbWljX2VudHJ5CnsKICBzdHJ1Y3QgZWxm
X2xpbmtfbG9jYWxfZHluYW1pY19lbnRyeSAqbmV4dDsKCgogIGJmZCAqaW5wdXRfYmZkOwoKCiAg
bG9uZyBpbnB1dF9pbmR4OwoKCiAgbG9uZyBkeW5pbmR4OwoKCiAgRWxmX0ludGVybmFsX1N5bSBp
c3ltOwp9OwoKc3RydWN0IGVsZl9saW5rX2xvYWRlZF9saXN0CnsKICBzdHJ1Y3QgZWxmX2xpbmtf
bG9hZGVkX2xpc3QgKm5leHQ7CiAgYmZkICphYmZkOwp9OwoKZW51bSBlbGZfbGlua19pbmZvX3R5
cGUKewogIEVMRl9JTkZPX1RZUEVfTk9ORSwKICBFTEZfSU5GT19UWVBFX1NUQUJTLAogIEVMRl9J
TkZPX1RZUEVfTUVSR0UsCiAgRUxGX0lORk9fVFlQRV9FSF9GUkFNRSwKICBFTEZfSU5GT19UWVBF
X0VIX0ZSQU1FX0hEUiwKICBFTEZfSU5GT19UWVBFX0pVU1RfU1lNUywKICBFTEZfSU5GT19UWVBF
X0xBU1QKfTsKCgpzdHJ1Y3QgZWxmX2xpbmtfdGxzX3NlZ21lbnQKewogIGJmZF92bWEgc3RhcnQ7
CiAgYmZkX3NpemVfdHlwZSBzaXplOwogIHVuc2lnbmVkIGludCBhbGlnbjsKfTsKCgoKc3RydWN0
IGVsZl9saW5rX2hhc2hfdGFibGUKewogIHN0cnVjdCBiZmRfbGlua19oYXNoX3RhYmxlIHJvb3Q7
CgoKCiAgYm9vbGVhbiBkeW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQ7CgoKCgogIGJmZCAqZHlub2Jq
OwoKCgoKCiAgYmZkX3NpZ25lZF92bWEgaW5pdF9yZWZjb3VudDsKCgoKICBiZmRfc2l6ZV90eXBl
IGR5bnN5bWNvdW50OwoKCgogIHN0cnVjdCBlbGZfc3RydGFiX2hhc2ggKmR5bnN0cjsKCgoKICBi
ZmRfc2l6ZV90eXBlIGJ1Y2tldGNvdW50OwoKCgogIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlz
dCAqbmVlZGVkOwoKCiAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmhnb3Q7CgoKICB2b2lk
ICogc3RhYl9pbmZvOwoKCiAgdm9pZCAqIG1lcmdlX2luZm87CgoKICBzdHJ1Y3QgZWxmX2xpbmtf
bG9jYWxfZHluYW1pY19lbnRyeSAqZHlubG9jYWw7CgoKCiAgc3RydWN0IGJmZF9saW5rX25lZWRl
ZF9saXN0ICpydW5wYXRoOwoKCiAgc3RydWN0IGVsZl9saW5rX3Rsc19zZWdtZW50ICp0bHNfc2Vn
bWVudDsKCgogIHN0cnVjdCBlbGZfbGlua19sb2FkZWRfbGlzdCAqbG9hZGVkOwp9OwojIDMzNyAi
L3NyYy9iaW51dGlscy0yLjEzL2JmZC9lbGYtYmZkLmgiCnN0cnVjdCBzeW1fc2VjX2NhY2hlCnsK
ICBiZmQgKmFiZmQ7CiAgdW5zaWduZWQgbG9uZyBpbmR4WzMyXTsKICBhc2VjdGlvbiAqc2VjWzMy
XTsKfTsKCgoKc3RydWN0IGVsZl9zaXplX2luZm8gewogIHVuc2lnbmVkIGNoYXIgc2l6ZW9mX2Vo
ZHIsIHNpemVvZl9waGRyLCBzaXplb2Zfc2hkcjsKICB1bnNpZ25lZCBjaGFyIHNpemVvZl9yZWws
IHNpemVvZl9yZWxhLCBzaXplb2Zfc3ltLCBzaXplb2ZfZHluLCBzaXplb2Zfbm90ZTsKCgogIHVu
c2lnbmVkIGNoYXIgc2l6ZW9mX2hhc2hfZW50cnk7CgoKCiAgdW5zaWduZWQgY2hhciBpbnRfcmVs
c19wZXJfZXh0X3JlbDsKCiAgdW5zaWduZWQgY2hhciBhcmNoX3NpemUsIGZpbGVfYWxpZ247CiAg
dW5zaWduZWQgY2hhciBlbGZjbGFzcywgZXZfY3VycmVudDsKICBpbnQgKCp3cml0ZV9vdXRfcGhk
cnMpCiAgICAoYmZkICosIGNvbnN0IEVsZl9JbnRlcm5hbF9QaGRyICosIHVuc2lnbmVkIGludCk7
CiAgYm9vbGVhbiAoKndyaXRlX3NoZHJzX2FuZF9laGRyKQogICAgKGJmZCAqKTsKICB2b2lkICgq
d3JpdGVfcmVsb2NzKQogICAgKGJmZCAqLCBhc2VjdGlvbiAqLCB2b2lkICopOwogIHZvaWQgKCpz
d2FwX3N5bWJvbF9pbikKICAgIChiZmQgKiwgY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIEVs
Zl9JbnRlcm5hbF9TeW0gKik7CiAgdm9pZCAoKnN3YXBfc3ltYm9sX291dCkKICAgIChiZmQgKiwg
Y29uc3QgRWxmX0ludGVybmFsX1N5bSAqLCB2b2lkICosIHZvaWQgKik7CiAgYm9vbGVhbiAoKnNs
dXJwX3JlbG9jX3RhYmxlKQogICAgKGJmZCAqLCBhc2VjdGlvbiAqLCBhc3ltYm9sICoqLCBib29s
ZWFuKTsKICBsb25nICgqc2x1cnBfc3ltYm9sX3RhYmxlKQogICAgKGJmZCAqLCBhc3ltYm9sICoq
LCBib29sZWFuKTsKICB2b2lkICgqc3dhcF9keW5faW4pCiAgICAoYmZkICosIGNvbnN0IHZvaWQg
KiwgRWxmX0ludGVybmFsX0R5biAqKTsKICB2b2lkICgqc3dhcF9keW5fb3V0KQogICAgKGJmZCAq
LCBjb25zdCBFbGZfSW50ZXJuYWxfRHluICosIHZvaWQgKik7CgoKCgoKICB2b2lkICgqc3dhcF9y
ZWxvY19pbikKICAgIChiZmQgKiwgY29uc3QgYmZkX2J5dGUgKiwgRWxmX0ludGVybmFsX1JlbCAq
KTsKCgoKICB2b2lkICgqc3dhcF9yZWxvY19vdXQpCiAgICAoYmZkICosIGNvbnN0IEVsZl9JbnRl
cm5hbF9SZWwgKiwgYmZkX2J5dGUgKik7CgoKCgoKICB2b2lkICgqc3dhcF9yZWxvY2FfaW4pCiAg
ICAoYmZkICosIGNvbnN0IGJmZF9ieXRlICosIEVsZl9JbnRlcm5hbF9SZWxhICopOwoKCgogIHZv
aWQgKCpzd2FwX3JlbG9jYV9vdXQpCiAgICAoYmZkICosIGNvbnN0IEVsZl9JbnRlcm5hbF9SZWxh
ICosIGJmZF9ieXRlICopOwoKfTsKCgoKCgoKCmVudW0gZWxmX3JlbG9jX3R5cGVfY2xhc3Mgewog
IHJlbG9jX2NsYXNzX25vcm1hbCwKICByZWxvY19jbGFzc19yZWxhdGl2ZSwKICByZWxvY19jbGFz
c19wbHQsCiAgcmVsb2NfY2xhc3NfY29weQp9OwoKc3RydWN0IGVsZl9yZWxvY19jb29raWUKewog
IEVsZl9JbnRlcm5hbF9SZWxhICpyZWxzLCAqcmVsLCAqcmVsZW5kOwogIEVsZl9JbnRlcm5hbF9T
eW0gKmxvY3N5bXM7CiAgYmZkICphYmZkOwogIHNpemVfdCBsb2NzeW1jb3VudDsKICBzaXplX3Qg
ZXh0c3ltb2ZmOwogIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICoqc3ltX2hhc2hlczsKICBi
b29sZWFuIGJhZF9zeW10YWI7Cn07CgoKCnR5cGVkZWYgZW51bSB7CiAgaWN0X25vbmUsCiAgaWN0
X2lyaXg1LAogIGljdF9pcml4Ngp9IGlyaXhfY29tcGF0X3Q7CgpzdHJ1Y3QgZWxmX2JhY2tlbmRf
ZGF0YQp7CgogIGVudW0gYmZkX2FyY2hpdGVjdHVyZSBhcmNoOwoKCiAgaW50IGVsZl9tYWNoaW5l
X2NvZGU7CgoKICBiZmRfdm1hIG1heHBhZ2VzaXplOwoKCgogIHZvaWQgKCplbGZfaW5mb190b19o
b3d0bykKICAgIChiZmQgKiwgYXJlbGVudCAqLCBFbGZfSW50ZXJuYWxfUmVsYSAqKTsKCgoKICB2
b2lkICgqZWxmX2luZm9fdG9faG93dG9fcmVsKQogICAgKGJmZCAqLCBhcmVsZW50ICosIEVsZl9J
bnRlcm5hbF9SZWwgKik7CgoKCgoKCiAgYm9vbGVhbiAoKmVsZl9iYWNrZW5kX3N5bV9pc19nbG9i
YWwpCiAgICAoYmZkICosIGFzeW1ib2wgKik7CiMgNDc0ICIvc3JjL2JpbnV0aWxzLTIuMTMvYmZk
L2VsZi1iZmQuaCIKICBib29sZWFuICgqZWxmX2JhY2tlbmRfb2JqZWN0X3ApCiAgICAoYmZkICop
OwoKCgoKICB2b2lkICgqZWxmX2JhY2tlbmRfc3ltYm9sX3Byb2Nlc3NpbmcpCiAgICAoYmZkICos
IGFzeW1ib2wgKik7CgoKCiAgYm9vbGVhbiAoKmVsZl9iYWNrZW5kX3N5bWJvbF90YWJsZV9wcm9j
ZXNzaW5nKQogICAgKGJmZCAqLCBlbGZfc3ltYm9sX3R5cGUgKiwgdW5zaWduZWQgaW50KTsKCgoK
ICBpbnQgKCplbGZfYmFja2VuZF9nZXRfc3ltYm9sX3R5cGUpCiAgICAoIEVsZl9JbnRlcm5hbF9T
eW0gKiwgaW50KTsKCgoKCgogIGJvb2xlYW4gKCplbGZfYmFja2VuZF9zZWN0aW9uX3Byb2Nlc3Np
bmcpCiAgICAoYmZkICosIEVsZl9JbnRlcm5hbF9TaGRyICopOwoKCgogIGJvb2xlYW4gKCplbGZf
YmFja2VuZF9zZWN0aW9uX2Zyb21fc2hkcikKICAgIChiZmQgKiwgRWxmX0ludGVybmFsX1NoZHIg
KiwgY29uc3QgY2hhciAqKTsKCgoKICBib29sZWFuICgqZWxmX2JhY2tlbmRfc2VjdGlvbl9mbGFn
cykKICAgIChmbGFnd29yZCAqLCBFbGZfSW50ZXJuYWxfU2hkciAqKTsKCgoKICBib29sZWFuICgq
ZWxmX2JhY2tlbmRfc2VjdGlvbl9mcm9tX3BoZHIpCiAgICAoYmZkICosIEVsZl9JbnRlcm5hbF9Q
aGRyICosIGludCk7CgoKCgogIGJvb2xlYW4gKCplbGZfYmFja2VuZF9mYWtlX3NlY3Rpb25zKQog
ICAgKGJmZCAqLCBFbGZfSW50ZXJuYWxfU2hkciAqLCBhc2VjdGlvbiAqKTsKCgoKCgogIGJvb2xl
YW4gKCplbGZfYmFja2VuZF9zZWN0aW9uX2Zyb21fYmZkX3NlY3Rpb24pCiAgICAoYmZkICosIGFz
ZWN0aW9uICosIGludCAqcmV0dmFsKTsKIyA1MzYgIi9zcmMvYmludXRpbHMtMi4xMy9iZmQvZWxm
LWJmZC5oIgogIGJvb2xlYW4gKCplbGZfYWRkX3N5bWJvbF9ob29rKQogICAgKGJmZCAqYWJmZCwg
c3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sIGNvbnN0IEVsZl9JbnRlcm5hbF9TeW0gKiwgY29u
c3QgY2hhciAqKm5hbWUsIGZsYWd3b3JkICpmbGFncywgYXNlY3Rpb24gKipzZWMsIGJmZF92bWEg
KnZhbHVlKTsKCgoKCgogIGJvb2xlYW4gKCplbGZfYmFja2VuZF9saW5rX291dHB1dF9zeW1ib2xf
aG9vaykKICAgIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8sIGNvbnN0IGNoYXIg
KiwgRWxmX0ludGVybmFsX1N5bSAqLCBhc2VjdGlvbiAqKTsKIyA1NTUgIi9zcmMvYmludXRpbHMt
Mi4xMy9iZmQvZWxmLWJmZC5oIgogIGJvb2xlYW4gKCplbGZfYmFja2VuZF9jcmVhdGVfZHluYW1p
Y19zZWN0aW9ucykKICAgIChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvKTsK
IyA1NjggIi9zcmMvYmludXRpbHMtMi4xMy9iZmQvZWxmLWJmZC5oIgogIGJvb2xlYW4gKCpjaGVj
a19yZWxvY3MpCiAgICAoYmZkICphYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywgYXNl
Y3Rpb24gKm8sIGNvbnN0IEVsZl9JbnRlcm5hbF9SZWxhICpyZWxvY3MpOwojIDU4NCAiL3NyYy9i
aW51dGlscy0yLjEzL2JmZC9lbGYtYmZkLmgiCiAgYm9vbGVhbiAoKmVsZl9iYWNrZW5kX2FkanVz
dF9keW5hbWljX3N5bWJvbCkKICAgIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywgc3RydWN0
IGVsZl9saW5rX2hhc2hfZW50cnkgKmgpOwoKCgoKCiAgYm9vbGVhbiAoKmVsZl9iYWNrZW5kX2Fs
d2F5c19zaXplX3NlY3Rpb25zKQogICAgKGJmZCAqb3V0cHV0X2JmZCwgc3RydWN0IGJmZF9saW5r
X2luZm8gKmluZm8pOwojIDYwNCAiL3NyYy9iaW51dGlscy0yLjEzL2JmZC9lbGYtYmZkLmgiCiAg
Ym9vbGVhbiAoKmVsZl9iYWNrZW5kX3NpemVfZHluYW1pY19zZWN0aW9ucykKICAgIChiZmQgKm91
dHB1dF9iZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvKTsKIyA2MzUgIi9zcmMvYmludXRp
bHMtMi4xMy9iZmQvZWxmLWJmZC5oIgogIGJvb2xlYW4gKCplbGZfYmFja2VuZF9yZWxvY2F0ZV9z
ZWN0aW9uKQogICAgKGJmZCAqb3V0cHV0X2JmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8s
IGJmZCAqaW5wdXRfYmZkLCBhc2VjdGlvbiAqaW5wdXRfc2VjdGlvbiwgYmZkX2J5dGUgKmNvbnRl
bnRzLCBFbGZfSW50ZXJuYWxfUmVsYSAqcmVsb2NzLCBFbGZfSW50ZXJuYWxfU3ltICpsb2NhbF9z
eW1zLCBhc2VjdGlvbiAqKmxvY2FsX3NlY3Rpb25zKTsKIyA2NDggIi9zcmMvYmludXRpbHMtMi4x
My9iZmQvZWxmLWJmZC5oIgogIGJvb2xlYW4gKCplbGZfYmFja2VuZF9maW5pc2hfZHluYW1pY19z
eW1ib2wpCiAgICAoYmZkICpvdXRwdXRfYmZkLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywg
c3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgsIEVsZl9JbnRlcm5hbF9TeW0gKnN5bSk7CgoK
CgoKCiAgYm9vbGVhbiAoKmVsZl9iYWNrZW5kX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKQogICAg
KGJmZCAqb3V0cHV0X2JmZCwgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pOwoKCgogIHZvaWQg
KCplbGZfYmFja2VuZF9iZWdpbl93cml0ZV9wcm9jZXNzaW5nKQogICAgKGJmZCAqLCBzdHJ1Y3Qg
YmZkX2xpbmtfaW5mbyAqKTsKCgoKCiAgdm9pZCAoKmVsZl9iYWNrZW5kX2ZpbmFsX3dyaXRlX3By
b2Nlc3NpbmcpCiAgICAoYmZkICosIGJvb2xlYW4gbGlua2VyKTsKCgoKCiAgaW50ICgqZWxmX2Jh
Y2tlbmRfYWRkaXRpb25hbF9wcm9ncmFtX2hlYWRlcnMpCiAgICAoYmZkICopOwoKCgogIGJvb2xl
YW4gKCplbGZfYmFja2VuZF9tb2RpZnlfc2VnbWVudF9tYXApCiAgICAoYmZkICopOwoKCgogIGFz
ZWN0aW9uICogKCpnY19tYXJrX2hvb2spCiAgICAoYXNlY3Rpb24gKnNlYywgc3RydWN0IGJmZF9s
aW5rX2luZm8gKiwgRWxmX0ludGVybmFsX1JlbGEgKiwgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50
cnkgKmgsIEVsZl9JbnRlcm5hbF9TeW0gKik7CgoKCgoKICBib29sZWFuICgqZ2Nfc3dlZXBfaG9v
aykKICAgIChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLCBhc2VjdGlvbiAq
bywgY29uc3QgRWxmX0ludGVybmFsX1JlbGEgKnJlbG9jcyk7CgoKCgoKICB2b2lkICgqZWxmX2Jh
Y2tlbmRfcG9zdF9wcm9jZXNzX2hlYWRlcnMpCiAgICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19p
bmZvICopOwoKCgoKICBjb25zdCBjaGFyICooKmVsZl9iYWNrZW5kX3ByaW50X3N5bWJvbF9hbGwp
CiAgICAoYmZkICosIHZvaWQgKiwgYXN5bWJvbCAqKTsKCgoKCgogIGJvb2xlYW4gKCplbGZfYmFj
a2VuZF9vdXRwdXRfYXJjaF9zeW1zKQogICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAq
LCB2b2lkICosIGJvb2xlYW4gKCopICh2b2lkICosIGNvbnN0IGNoYXIgKiwgRWxmX0ludGVybmFs
X1N5bSAqLCBhc2VjdGlvbiAqKSk7CgoKCgoKCgogIHZvaWQgKCplbGZfYmFja2VuZF9jb3B5X2lu
ZGlyZWN0X3N5bWJvbCkKICAgIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCBzdHJ1Y3Qg
ZWxmX2xpbmtfaGFzaF9lbnRyeSAqKTsKCgoKICB2b2lkICgqZWxmX2JhY2tlbmRfaGlkZV9zeW1i
b2wpCiAgICAoc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50
cnkgKiwgYm9vbGVhbik7CgoKCiAgYm9vbGVhbiAoKmVsZl9iYWNrZW5kX2VtaXRfcmVsb2NzKQog
ICAgKGJmZCAqLCBhc2VjdGlvbiAqLCBFbGZfSW50ZXJuYWxfU2hkciAqLCBFbGZfSW50ZXJuYWxf
UmVsYSAqKTsKCgoKICB1bnNpZ25lZCBpbnQgKCplbGZfYmFja2VuZF9jb3VudF9yZWxvY3MpCiAg
ICAoYXNlY3Rpb24gKiwgRWxmX0ludGVybmFsX1JlbGEgKik7CgoKCiAgYm9vbGVhbiAoKmVsZl9i
YWNrZW5kX2dyb2tfcHJzdGF0dXMpCiAgICAoYmZkICosIEVsZl9JbnRlcm5hbF9Ob3RlICopOwoK
CgogIGJvb2xlYW4gKCplbGZfYmFja2VuZF9ncm9rX3BzaW5mbykKICAgIChiZmQgKiwgRWxmX0lu
dGVybmFsX05vdGUgKik7CgoKICB2b2lkICgqIGVsZl9iYWNrZW5kX3NwcmludGZfdm1hKQogICAg
KGJmZCAqLCBjaGFyICosIGJmZF92bWEpOwogIHZvaWQgKCogZWxmX2JhY2tlbmRfZnByaW50Zl92
bWEpCiAgICAoYmZkICosIHZvaWQgKiwgYmZkX3ZtYSk7CgoKICBlbnVtIGVsZl9yZWxvY190eXBl
X2NsYXNzICgqZWxmX2JhY2tlbmRfcmVsb2NfdHlwZV9jbGFzcykKICAgIChjb25zdCBFbGZfSW50
ZXJuYWxfUmVsYSAqKTsKCgoKICBib29sZWFuICgqZWxmX2JhY2tlbmRfZGlzY2FyZF9pbmZvKQog
ICAgKGJmZCAqLCBzdHJ1Y3QgZWxmX3JlbG9jX2Nvb2tpZSAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5m
byAqKTsKCgoKICBib29sZWFuICgqZWxmX2JhY2tlbmRfaWdub3JlX2Rpc2NhcmRlZF9yZWxvY3Mp
CiAgICAoYXNlY3Rpb24gKik7CgoKCiAgYm9vbGVhbiAoKmVsZl9iYWNrZW5kX3dyaXRlX3NlY3Rp
b24pCiAgICAoYmZkICosIGFzZWN0aW9uICosIGJmZF9ieXRlICopOwoKCgogIHZvaWQgKCpzZXRf
bm9ubG9hZGFibGVfZmlsZXBvcykKICAgIChiZmQgKiwgRWxmX0ludGVybmFsX1BoZHIgKik7CgoK
CiAgYm9vbGVhbiAoKmlzX2NvbnRhaW5lZF9ieV9maWxlcG9zKQogICAgKGFzZWN0aW9uICosIEVs
Zl9JbnRlcm5hbF9QaGRyICopOwoKCgoKICBib29sZWFuICgqY29weV9wcml2YXRlX2JmZF9kYXRh
X3ApCiAgICAoYmZkICosIGFzZWN0aW9uICosIGJmZCAqLCBhc2VjdGlvbiAqKTsKCgoKICBpcml4
X2NvbXBhdF90ICgqZWxmX2JhY2tlbmRfbWlwc19pcml4X2NvbXBhdCkKICAgIChiZmQgKik7Cgog
IHJlbG9jX2hvd3RvX3R5cGUgKigqZWxmX2JhY2tlbmRfbWlwc19ydHlwZV90b19ob3d0bykKICAg
ICh1bnNpZ25lZCBpbnQsIGJvb2xlYW4pOwoKCgogIGNvbnN0IHN0cnVjdCBlY29mZl9kZWJ1Z19z
d2FwICplbGZfYmFja2VuZF9lY29mZl9kZWJ1Z19zd2FwOwoKCiAgaW50IGVsZl9tYWNoaW5lX2Fs
dDE7CiAgaW50IGVsZl9tYWNoaW5lX2FsdDI7CgogIGNvbnN0IHN0cnVjdCBlbGZfc2l6ZV9pbmZv
ICpzOwoKCgogIGJmZF92bWEgZ290X3N5bWJvbF9vZmZzZXQ7CgoKCiAgYmZkX3ZtYSBnb3RfaGVh
ZGVyX3NpemU7CiAgYmZkX3ZtYSBwbHRfaGVhZGVyX3NpemU7CgoKCgoKICB1bnNpZ25lZCBjb2xs
ZWN0IDogMTsKCgoKCgogIHVuc2lnbmVkIHR5cGVfY2hhbmdlX29rIDogMTsKCgoKCiAgdW5zaWdu
ZWQgbWF5X3VzZV9yZWxfcCA6IDE7CgoKCgogIHVuc2lnbmVkIG1heV91c2VfcmVsYV9wIDogMTsK
CgoKCgoKICB1bnNpZ25lZCBkZWZhdWx0X3VzZV9yZWxhX3AgOiAxOwoKCgoKICB1bnNpZ25lZCBy
ZWxhX25vcm1hbCA6IDE7CgoKCiAgdW5zaWduZWQgc2lnbl9leHRlbmRfdm1hIDogMTsKCiAgdW5z
aWduZWQgd2FudF9nb3RfcGx0IDogMTsKICB1bnNpZ25lZCBwbHRfcmVhZG9ubHkgOiAxOwogIHVu
c2lnbmVkIHdhbnRfcGx0X3N5bSA6IDE7CiAgdW5zaWduZWQgcGx0X25vdF9sb2FkZWQgOiAxOwog
IHVuc2lnbmVkIHBsdF9hbGlnbm1lbnQgOiA0OwogIHVuc2lnbmVkIGNhbl9nY19zZWN0aW9ucyA6
IDE7CiAgdW5zaWduZWQgY2FuX3JlZmNvdW50IDogMTsKICB1bnNpZ25lZCB3YW50X2dvdF9zeW0g
OiAxOwogIHVuc2lnbmVkIHdhbnRfZHluYnNzIDogMTsKCgoKICB1bnNpZ25lZCB3YW50X3BfcGFk
ZHJfc2V0X3RvX3plcm8gOiAxOwp9OwoKCgoKc3RydWN0IGJmZF9lbGZfc2VjdGlvbl9kYXRhCnsK
CiAgRWxmX0ludGVybmFsX1NoZHIgdGhpc19oZHI7CgoKCiAgRWxmX0ludGVybmFsX1NoZHIgcmVs
X2hkcjsKCgoKICBFbGZfSW50ZXJuYWxfU2hkciAqcmVsX2hkcjI7CgoKICB1bnNpZ25lZCBpbnQg
cmVsX2NvdW50OwoKCiAgdW5zaWduZWQgaW50IHJlbF9jb3VudDI7CgoKCiAgdm9pZCAqIGxvY2Fs
X2R5bnJlbDsKCgogIGFzZWN0aW9uICpzcmVsb2M7CgoKCiAgaW50IHRoaXNfaWR4OwoKCgogIGlu
dCByZWxfaWR4OwoKCgogIGludCByZWxfaWR4MjsKCgoKICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9l
bnRyeSAqKnJlbF9oYXNoZXM7CgoKCgogIEVsZl9JbnRlcm5hbF9SZWxhICpyZWxvY3M7CgoKCgoK
ICBsb25nIGR5bmluZHg7CgoKICB2b2lkICogc2VjX2luZm87CgoKICBlbnVtIGVsZl9saW5rX2lu
Zm9fdHlwZSBzZWNfaW5mb190eXBlOwoKICB1bmlvbiB7CgogICAgY29uc3QgY2hhciAqbmFtZTsK
CgogICAgc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqaWQ7CiAgfSBncm91cDsKCgoKICBhc2Vj
dGlvbiAqbmV4dF9pbl9ncm91cDsKCgogIHZvaWQgKiB0ZGF0YTsKCgogIHVuc2lnbmVkIGludCB1
c2VfcmVsYV9wOjE7CgoKICB1bnNpZ25lZCBpbnQgbGlua29uY2VfcDoxOwp9OwojIDk2OSAiL3Ny
Yy9iaW51dGlscy0yLjEzL2JmZC9lbGYtYmZkLmgiCnR5cGVkZWYgZW51bSBlbGZfbGlua2VyX3Nl
Y3Rpb25fZW51bQp7CiAgTElOS0VSX1NFQ1RJT05fVU5LTk9XTiwKICBMSU5LRVJfU0VDVElPTl9H
T1QsCiAgTElOS0VSX1NFQ1RJT05fUExULAogIExJTktFUl9TRUNUSU9OX1NEQVRBLAogIExJTktF
Ul9TRUNUSU9OX1NEQVRBMiwKICBMSU5LRVJfU0VDVElPTl9NQVgKfSBlbGZfbGlua2VyX3NlY3Rp
b25fZW51bV90OwoKCgp0eXBlZGVmIHN0cnVjdCBlbGZfbGlua2VyX3NlY3Rpb24KewogIGNoYXIg
Km5hbWU7CiAgY2hhciAqcmVsX25hbWU7CiAgY2hhciAqYnNzX25hbWU7CiAgY2hhciAqc3ltX25h
bWU7CiAgYXNlY3Rpb24gKnNlY3Rpb247CiAgYXNlY3Rpb24gKmJzc19zZWN0aW9uOwogIGFzZWN0
aW9uICpyZWxfc2VjdGlvbjsKICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqc3ltX2hhc2g7
CiAgYmZkX3ZtYSBpbml0aWFsX3NpemU7CiAgYmZkX3ZtYSBzeW1fb2Zmc2V0OwogIGJmZF92bWEg
aG9sZV9zaXplOwogIGJmZF92bWEgaG9sZV9vZmZzZXQ7CiAgYmZkX3ZtYSBtYXhfaG9sZV9vZmZz
ZXQ7CiAgZWxmX2xpbmtlcl9zZWN0aW9uX2VudW1fdCB3aGljaDsKICBib29sZWFuIGhvbGVfd3Jp
dHRlbl9wOwogIHVuc2lnbmVkIGludCBhbGlnbm1lbnQ7CiAgZmxhZ3dvcmQgZmxhZ3M7Cn0gZWxm
X2xpbmtlcl9zZWN0aW9uX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBlbGZfbGlua2VyX3NlY3Rpb25f
cG9pbnRlcnMKewogIHN0cnVjdCBlbGZfbGlua2VyX3NlY3Rpb25fcG9pbnRlcnMgKm5leHQ7CiAg
YmZkX3ZtYSBvZmZzZXQ7CiAgYmZkX3ZtYSBhZGRlbmQ7CiAgZWxmX2xpbmtlcl9zZWN0aW9uX2Vu
dW1fdCB3aGljaDsKICBib29sZWFuIHdyaXR0ZW5fYWRkcmVzc19wOwp9IGVsZl9saW5rZXJfc2Vj
dGlvbl9wb2ludGVyc190OwoKCgoKc3RydWN0IGVsZl9vYmpfdGRhdGEKewogIEVsZl9JbnRlcm5h
bF9FaGRyIGVsZl9oZWFkZXJbMV07CiAgRWxmX0ludGVybmFsX1NoZHIgKiplbGZfc2VjdF9wdHI7
CiAgRWxmX0ludGVybmFsX1BoZHIgKnBoZHI7CiAgc3RydWN0IGVsZl9zZWdtZW50X21hcCAqc2Vn
bWVudF9tYXA7CiAgc3RydWN0IGVsZl9zdHJ0YWJfaGFzaCAqc3RydGFiX3B0cjsKICBpbnQgbnVt
X2xvY2FsczsKICBpbnQgbnVtX2dsb2JhbHM7CiAgdW5zaWduZWQgaW50IG51bV9lbGZfc2VjdGlv
bnM7CiAgaW50IG51bV9zZWN0aW9uX3N5bXM7CiAgYXN5bWJvbCAqKnNlY3Rpb25fc3ltczsKICBF
bGZfSW50ZXJuYWxfU2hkciBzeW10YWJfaGRyOwogIEVsZl9JbnRlcm5hbF9TaGRyIHNoc3RydGFi
X2hkcjsKICBFbGZfSW50ZXJuYWxfU2hkciBzdHJ0YWJfaGRyOwogIEVsZl9JbnRlcm5hbF9TaGRy
IGR5bnN5bXRhYl9oZHI7CiAgRWxmX0ludGVybmFsX1NoZHIgZHluc3RydGFiX2hkcjsKICBFbGZf
SW50ZXJuYWxfU2hkciBkeW52ZXJzeW1faGRyOwogIEVsZl9JbnRlcm5hbF9TaGRyIGR5bnZlcnJl
Zl9oZHI7CiAgRWxmX0ludGVybmFsX1NoZHIgZHludmVyZGVmX2hkcjsKICBFbGZfSW50ZXJuYWxf
U2hkciBzeW10YWJfc2huZHhfaGRyOwogIHVuc2lnbmVkIGludCBzeW10YWJfc2VjdGlvbiwgc2hz
dHJ0YWJfc2VjdGlvbjsKICB1bnNpZ25lZCBpbnQgc3RydGFiX3NlY3Rpb24sIGR5bnN5bXRhYl9z
ZWN0aW9uOwogIHVuc2lnbmVkIGludCBzeW10YWJfc2huZHhfc2VjdGlvbjsKICB1bnNpZ25lZCBp
bnQgZHludmVyc3ltX3NlY3Rpb24sIGR5bnZlcmRlZl9zZWN0aW9uLCBkeW52ZXJyZWZfc2VjdGlv
bjsKICBmaWxlX3B0ciBuZXh0X2ZpbGVfcG9zOwoKCgoKCgogIGJmZF92bWEgZ3A7CiAgdW5zaWdu
ZWQgaW50IGdwX3NpemU7CgogIEVsZl9JbnRlcm5hbF9TaGRyICoqZ3JvdXBfc2VjdF9wdHI7CiAg
aW50IG51bV9ncm91cDsKCgogIGludCBjb3JlX3NpZ25hbDsKICBpbnQgY29yZV9waWQ7CiAgaW50
IGNvcmVfbHdwaWQ7CiAgY2hhciogY29yZV9wcm9ncmFtOwogIGNoYXIqIGNvcmVfY29tbWFuZDsK
CgoKICBib29sZWFuIGxpbmtlcjsKCgoKCiAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKipz
eW1faGFzaGVzOwojIDEwNzggIi9zcmMvYmludXRpbHMtMi4xMy9iZmQvZWxmLWJmZC5oIgogIHVu
aW9uCiAgICB7CiAgICAgIGJmZF9zaWduZWRfdm1hICpyZWZjb3VudHM7CiAgICAgIGJmZF92bWEg
Km9mZnNldHM7CiAgICB9IGxvY2FsX2dvdDsKCgoKICBlbGZfbGlua2VyX3NlY3Rpb25fcG9pbnRl
cnNfdCAqKmxpbmtlcl9zZWN0aW9uX3BvaW50ZXJzOwojIDEwOTYgIi9zcmMvYmludXRpbHMtMi4x
My9iZmQvZWxmLWJmZC5oIgogIGNvbnN0IGNoYXIgKmR0X25hbWU7CgoKCgoKCgogIGNvbnN0IGNo
YXIgKmR0X3NvbmFtZTsKCgoKCgoKICBib29sZWFuIGJhZF9zeW10YWI7CgoKICBiZmRfc2l6ZV90
eXBlIHByb2dyYW1faGVhZGVyX3NpemU7CgoKICB2b2lkICogbGluZV9pbmZvOwoKCgoKCiAgc3Ry
dWN0IG1pcHNfZWxmX2ZpbmRfbGluZSAqZmluZF9saW5lX2luZm87CgoKICBzdHJ1Y3QgZHdhcmYx
X2RlYnVnICpkd2FyZjFfZmluZF9saW5lX2luZm87CgoKICB2b2lkICogZHdhcmYyX2ZpbmRfbGlu
ZV9pbmZvOwoKCgoKICBhc2VjdGlvbiAqKmxvY2FsX3N0dWJzOwoKCiAgYm9vbGVhbiBmbGFnc19p
bml0OwoKCgogIGJvb2xlYW4gZWhfZnJhbWVfaGRyOwoKCiAgdW5zaWduZWQgaW50IGN2ZXJkZWZz
OwoKCiAgdW5zaWduZWQgaW50IGN2ZXJyZWZzOwoKCiAgRWxmX0ludGVybmFsX1ZlcmRlZiAqdmVy
ZGVmOwoKCiAgRWxmX0ludGVybmFsX1Zlcm5lZWQgKnZlcnJlZjsKCgogIHN0cnVjdCBlbGZfbGlu
a2VyX3NlY3Rpb24gKmxpbmtlcl9zZWN0aW9uWyAoaW50KUxJTktFUl9TRUNUSU9OX01BWCBdOwoK
CgogIGFzeW1ib2wgKmVsZl9kYXRhX3N5bWJvbDsKICBhc3ltYm9sICplbGZfdGV4dF9zeW1ib2w7
CiAgYXNlY3Rpb24gKmVsZl9kYXRhX3NlY3Rpb247CiAgYXNlY3Rpb24gKmVsZl90ZXh0X3NlY3Rp
b247Cn07CiMgMTE5NSAiL3NyYy9iaW51dGlscy0yLjEzL2JmZC9lbGYtYmZkLmgiCmV4dGVybiB2
b2lkIF9iZmRfZWxmX3N3YXBfdmVyZGVmX2luCiAgKGJmZCAqLCBjb25zdCBFbGZfRXh0ZXJuYWxf
VmVyZGVmICosIEVsZl9JbnRlcm5hbF9WZXJkZWYgKik7CmV4dGVybiB2b2lkIF9iZmRfZWxmX3N3
YXBfdmVyZGVmX291dAogIChiZmQgKiwgY29uc3QgRWxmX0ludGVybmFsX1ZlcmRlZiAqLCBFbGZf
RXh0ZXJuYWxfVmVyZGVmICopOwpleHRlcm4gdm9pZCBfYmZkX2VsZl9zd2FwX3ZlcmRhdXhfaW4K
ICAoYmZkICosIGNvbnN0IEVsZl9FeHRlcm5hbF9WZXJkYXV4ICosIEVsZl9JbnRlcm5hbF9WZXJk
YXV4ICopOwpleHRlcm4gdm9pZCBfYmZkX2VsZl9zd2FwX3ZlcmRhdXhfb3V0CiAgKGJmZCAqLCBj
b25zdCBFbGZfSW50ZXJuYWxfVmVyZGF1eCAqLCBFbGZfRXh0ZXJuYWxfVmVyZGF1eCAqKTsKZXh0
ZXJuIHZvaWQgX2JmZF9lbGZfc3dhcF92ZXJuZWVkX2luCiAgKGJmZCAqLCBjb25zdCBFbGZfRXh0
ZXJuYWxfVmVybmVlZCAqLCBFbGZfSW50ZXJuYWxfVmVybmVlZCAqKTsKZXh0ZXJuIHZvaWQgX2Jm
ZF9lbGZfc3dhcF92ZXJuZWVkX291dAogIChiZmQgKiwgY29uc3QgRWxmX0ludGVybmFsX1Zlcm5l
ZWQgKiwgRWxmX0V4dGVybmFsX1Zlcm5lZWQgKik7CmV4dGVybiB2b2lkIF9iZmRfZWxmX3N3YXBf
dmVybmF1eF9pbgogIChiZmQgKiwgY29uc3QgRWxmX0V4dGVybmFsX1Zlcm5hdXggKiwgRWxmX0lu
dGVybmFsX1Zlcm5hdXggKik7CmV4dGVybiB2b2lkIF9iZmRfZWxmX3N3YXBfdmVybmF1eF9vdXQK
ICAoYmZkICosIGNvbnN0IEVsZl9JbnRlcm5hbF9WZXJuYXV4ICosIEVsZl9FeHRlcm5hbF9WZXJu
YXV4ICopOwpleHRlcm4gdm9pZCBfYmZkX2VsZl9zd2FwX3ZlcnN5bV9pbgogIChiZmQgKiwgY29u
c3QgRWxmX0V4dGVybmFsX1ZlcnN5bSAqLCBFbGZfSW50ZXJuYWxfVmVyc3ltICopOwpleHRlcm4g
dm9pZCBfYmZkX2VsZl9zd2FwX3ZlcnN5bV9vdXQKICAoYmZkICosIGNvbnN0IEVsZl9JbnRlcm5h
bF9WZXJzeW0gKiwgRWxmX0V4dGVybmFsX1ZlcnN5bSAqKTsKCmV4dGVybiBpbnQgX2JmZF9lbGZf
c2VjdGlvbl9mcm9tX2JmZF9zZWN0aW9uCiAgKGJmZCAqLCBhc2VjdGlvbiAqKTsKZXh0ZXJuIGNo
YXIgKmJmZF9lbGZfc3RyaW5nX2Zyb21fZWxmX3NlY3Rpb24KICAoYmZkICosIHVuc2lnbmVkLCB1
bnNpZ25lZCk7CmV4dGVybiBjaGFyICpiZmRfZWxmX2dldF9zdHJfc2VjdGlvbgogIChiZmQgKiwg
dW5zaWduZWQpOwpleHRlcm4gRWxmX0ludGVybmFsX1N5bSAqYmZkX2VsZl9nZXRfZWxmX3N5bXMK
ICAoYmZkICosIEVsZl9JbnRlcm5hbF9TaGRyICosIHNpemVfdCwgc2l6ZV90LCBFbGZfSW50ZXJu
YWxfU3ltICosIHZvaWQgKiwgRWxmX0V4dGVybmFsX1N5bV9TaG5keCAqKTsKCgpleHRlcm4gYm9v
bGVhbiBfYmZkX2VsZl9jb3B5X3ByaXZhdGVfYmZkX2RhdGEKICAoYmZkICosIGJmZCAqKTsKZXh0
ZXJuIGJvb2xlYW4gX2JmZF9lbGZfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YQogIChiZmQgKiwgdm9p
ZCAqKTsKZXh0ZXJuIHZvaWQgYmZkX2VsZl9wcmludF9zeW1ib2wKICAoYmZkICosIHZvaWQgKiwg
YXN5bWJvbCAqLCBiZmRfcHJpbnRfc3ltYm9sX3R5cGUpOwojIDEyNDAgIi9zcmMvYmludXRpbHMt
Mi4xMy9iZmQvZWxmLWJmZC5oIgpleHRlcm4gdm9pZCBfYmZkX2VsZl9zcHJpbnRmX3ZtYQogIChi
ZmQgKiwgY2hhciAqLCBiZmRfdm1hKTsKZXh0ZXJuIHZvaWQgX2JmZF9lbGZfZnByaW50Zl92bWEK
ICAoYmZkICosIHZvaWQgKiwgYmZkX3ZtYSk7CgpleHRlcm4gZW51bSBlbGZfcmVsb2NfdHlwZV9j
bGFzcyBfYmZkX2VsZl9yZWxvY190eXBlX2NsYXNzCiAgKGNvbnN0IEVsZl9JbnRlcm5hbF9SZWxh
ICopOwpleHRlcm4gYmZkX3ZtYSBfYmZkX2VsZl9yZWxhX2xvY2FsX3N5bQogIChiZmQgKiwgRWxm
X0ludGVybmFsX1N5bSAqLCBhc2VjdGlvbiAqLCBFbGZfSW50ZXJuYWxfUmVsYSAqKTsKZXh0ZXJu
IGJmZF92bWEgX2JmZF9lbGZfcmVsX2xvY2FsX3N5bQogIChiZmQgKiwgRWxmX0ludGVybmFsX1N5
bSAqLCBhc2VjdGlvbiAqKiwgYmZkX3ZtYSk7CmV4dGVybiBiZmRfdm1hIF9iZmRfZWxmX3NlY3Rp
b25fb2Zmc2V0CiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBhc2VjdGlvbiAqLCBi
ZmRfdm1hKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGJmZF9lbGZfaGFzaAogIChjb25zdCBjaGFy
ICopOwoKZXh0ZXJuIGJmZF9yZWxvY19zdGF0dXNfdHlwZSBiZmRfZWxmX2dlbmVyaWNfcmVsb2MK
ICAoYmZkICosIGFyZWxlbnQgKiwgYXN5bWJvbCAqLCB2b2lkICosIGFzZWN0aW9uICosIGJmZCAq
LCBjaGFyICoqKTsKZXh0ZXJuIGJvb2xlYW4gYmZkX2VsZl9ta29iamVjdAogIChiZmQgKik7CmV4
dGVybiBib29sZWFuIGJmZF9lbGZfbWtjb3JlZmlsZQogIChiZmQgKik7CmV4dGVybiBFbGZfSW50
ZXJuYWxfU2hkciAqYmZkX2VsZl9maW5kX3NlY3Rpb24KICAoYmZkICosIGNoYXIgKik7CmV4dGVy
biBib29sZWFuIF9iZmRfZWxmX21ha2Vfc2VjdGlvbl9mcm9tX3NoZHIKICAoYmZkICosIEVsZl9J
bnRlcm5hbF9TaGRyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBib29sZWFuIF9iZmRfZWxmX21h
a2Vfc2VjdGlvbl9mcm9tX3BoZHIKICAoYmZkICosIEVsZl9JbnRlcm5hbF9QaGRyICosIGludCwg
Y29uc3QgY2hhciAqKTsKZXh0ZXJuIHN0cnVjdCBiZmRfaGFzaF9lbnRyeSAqX2JmZF9lbGZfbGlu
a19oYXNoX25ld2Z1bmMKICAoc3RydWN0IGJmZF9oYXNoX2VudHJ5ICosIHN0cnVjdCBiZmRfaGFz
aF90YWJsZSAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gc3RydWN0IGJmZF9saW5rX2hhc2hfdGFi
bGUgKl9iZmRfZWxmX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUKICAoYmZkICopOwpleHRlcm4gdm9p
ZCBfYmZkX2VsZl9saW5rX2hhc2hfY29weV9pbmRpcmVjdAogIChzdHJ1Y3QgZWxmX2xpbmtfaGFz
aF9lbnRyeSAqLCBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKTsKZXh0ZXJuIHZvaWQgX2Jm
ZF9lbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sCiAgKHN0cnVjdCBiZmRfbGlua19pbmZvICosIHN0
cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICosIGJvb2xlYW4pOwpleHRlcm4gYm9vbGVhbiBfYmZk
X2VsZl9saW5rX2hhc2hfdGFibGVfaW5pdAogIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF90YWJsZSAq
LCBiZmQgKiwgc3RydWN0IGJmZF9oYXNoX2VudHJ5ICooKikgKHN0cnVjdCBiZmRfaGFzaF9lbnRy
eSAqLCBzdHJ1Y3QgYmZkX2hhc2hfdGFibGUgKiwgY29uc3QgY2hhciAqKSk7CgoKCmV4dGVybiBi
b29sZWFuIF9iZmRfZWxmX3NsdXJwX3ZlcnNpb25fdGFibGVzCiAgKGJmZCAqKTsKZXh0ZXJuIGJv
b2xlYW4gX2JmZF9lbGZfbWVyZ2Vfc2VjdGlvbnMKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19p
bmZvICopOwpleHRlcm4gYm9vbGVhbiBiZmRfZWxmX2Rpc2NhcmRfZ3JvdXAKICAoYmZkICosIHN0
cnVjdCBzZWMgKik7CmV4dGVybiB2b2lkIGJmZF9lbGZfc2V0X2dyb3VwX2NvbnRlbnRzCiAgKGJm
ZCAqLCBhc2VjdGlvbiAqLCB2b2lkICopOwpleHRlcm4gdm9pZCBfYmZkX2VsZl9saW5rX2p1c3Rf
c3ltcwogIChhc2VjdGlvbiAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKZXh0ZXJuIGJvb2xl
YW4gX2JmZF9lbGZfY29weV9wcml2YXRlX3N5bWJvbF9kYXRhCiAgKGJmZCAqLCBhc3ltYm9sICos
IGJmZCAqLCBhc3ltYm9sICopOwpleHRlcm4gYm9vbGVhbiBfYmZkX2VsZl9jb3B5X3ByaXZhdGVf
c2VjdGlvbl9kYXRhCiAgKGJmZCAqLCBhc2VjdGlvbiAqLCBiZmQgKiwgYXNlY3Rpb24gKik7CmV4
dGVybiBib29sZWFuIF9iZmRfZWxmX3dyaXRlX29iamVjdF9jb250ZW50cwogIChiZmQgKik7CmV4
dGVybiBib29sZWFuIF9iZmRfZWxmX3dyaXRlX2NvcmVmaWxlX2NvbnRlbnRzCiAgKGJmZCAqKTsK
ZXh0ZXJuIGJvb2xlYW4gX2JmZF9lbGZfc2V0X3NlY3Rpb25fY29udGVudHMKICAoYmZkICosIHNl
Y19wdHIsIHZvaWQgKiwgZmlsZV9wdHIsIGJmZF9zaXplX3R5cGUpOwpleHRlcm4gbG9uZyBfYmZk
X2VsZl9nZXRfc3ltdGFiX3VwcGVyX2JvdW5kCiAgKGJmZCAqKTsKZXh0ZXJuIGxvbmcgX2JmZF9l
bGZfZ2V0X3N5bXRhYgogIChiZmQgKiwgYXN5bWJvbCAqKik7CmV4dGVybiBsb25nIF9iZmRfZWxm
X2dldF9keW5hbWljX3N5bXRhYl91cHBlcl9ib3VuZAogIChiZmQgKik7CmV4dGVybiBsb25nIF9i
ZmRfZWxmX2Nhbm9uaWNhbGl6ZV9keW5hbWljX3N5bXRhYgogIChiZmQgKiwgYXN5bWJvbCAqKik7
CmV4dGVybiBsb25nIF9iZmRfZWxmX2dldF9yZWxvY191cHBlcl9ib3VuZAogIChiZmQgKiwgc2Vj
X3B0cik7CmV4dGVybiBsb25nIF9iZmRfZWxmX2Nhbm9uaWNhbGl6ZV9yZWxvYwogIChiZmQgKiwg
c2VjX3B0ciwgYXJlbGVudCAqKiwgYXN5bWJvbCAqKik7CmV4dGVybiBsb25nIF9iZmRfZWxmX2dl
dF9keW5hbWljX3JlbG9jX3VwcGVyX2JvdW5kCiAgKGJmZCAqKTsKZXh0ZXJuIGxvbmcgX2JmZF9l
bGZfY2Fub25pY2FsaXplX2R5bmFtaWNfcmVsb2MKICAoYmZkICosIGFyZWxlbnQgKiosIGFzeW1i
b2wgKiopOwpleHRlcm4gYXN5bWJvbCAqX2JmZF9lbGZfbWFrZV9lbXB0eV9zeW1ib2wKICAoYmZk
ICopOwpleHRlcm4gdm9pZCBfYmZkX2VsZl9nZXRfc3ltYm9sX2luZm8KICAoYmZkICosIGFzeW1i
b2wgKiwgc3ltYm9sX2luZm8gKik7CmV4dGVybiBib29sZWFuIF9iZmRfZWxmX2lzX2xvY2FsX2xh
YmVsX25hbWUKICAoYmZkICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBhbGVudCAqX2JmZF9lbGZf
Z2V0X2xpbmVubwogIChiZmQgKiwgYXN5bWJvbCAqKTsKZXh0ZXJuIGJvb2xlYW4gX2JmZF9lbGZf
c2V0X2FyY2hfbWFjaAogIChiZmQgKiwgZW51bSBiZmRfYXJjaGl0ZWN0dXJlLCB1bnNpZ25lZCBs
b25nKTsKZXh0ZXJuIGJvb2xlYW4gX2JmZF9lbGZfZmluZF9uZWFyZXN0X2xpbmUKICAoYmZkICos
IGFzZWN0aW9uICosIGFzeW1ib2wgKiosIGJmZF92bWEsIGNvbnN0IGNoYXIgKiosIGNvbnN0IGNo
YXIgKiosIHVuc2lnbmVkIGludCAqKTsKCgoKZXh0ZXJuIGludCBfYmZkX2VsZl9zaXplb2ZfaGVh
ZGVycwogIChiZmQgKiwgYm9vbGVhbik7CmV4dGVybiBib29sZWFuIF9iZmRfZWxmX25ld19zZWN0
aW9uX2hvb2sKICAoYmZkICosIGFzZWN0aW9uICopOwpleHRlcm4gYm9vbGVhbiBfYmZkX2VsZl9p
bml0X3JlbG9jX3NoZHIKICAoYmZkICosIEVsZl9JbnRlcm5hbF9TaGRyICosIGFzZWN0aW9uICos
IGJvb2xlYW4pOwoKCmV4dGVybiB2b2lkIF9iZmRfZWxmX25vX2luZm9fdG9faG93dG8KICAoYmZk
ICosIGFyZWxlbnQgKiwgRWxmX0ludGVybmFsX1JlbGEgKik7CgpleHRlcm4gYm9vbGVhbiBiZmRf
c2VjdGlvbl9mcm9tX3NoZHIKICAoYmZkICosIHVuc2lnbmVkIGludCBzaGluZGV4KTsKZXh0ZXJu
IGJvb2xlYW4gYmZkX3NlY3Rpb25fZnJvbV9waGRyCiAgKGJmZCAqLCBFbGZfSW50ZXJuYWxfUGhk
ciAqLCBpbnQpOwoKZXh0ZXJuIGludCBfYmZkX2VsZl9zeW1ib2xfZnJvbV9iZmRfc3ltYm9sCiAg
KGJmZCAqLCBhc3ltYm9sICoqKTsKCmV4dGVybiBhc2VjdGlvbiAqYmZkX3NlY3Rpb25fZnJvbV9y
X3N5bW5keAogIChiZmQgKiwgc3RydWN0IHN5bV9zZWNfY2FjaGUgKiwgYXNlY3Rpb24gKiwgdW5z
aWduZWQgbG9uZyk7CmV4dGVybiBhc2VjdGlvbiAqYmZkX3NlY3Rpb25fZnJvbV9lbGZfaW5kZXgK
ICAoYmZkICosIHVuc2lnbmVkIGludCk7CmV4dGVybiBib29sZWFuIF9iZmRfZWxmX2NyZWF0ZV9k
eW5hbWljX3NlY3Rpb25zCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKZXh0ZXJu
IHN0cnVjdCBiZmRfc3RydGFiX2hhc2ggKl9iZmRfZWxmX3N0cmluZ3RhYl9pbml0CiAgKHZvaWQp
OwoKZXh0ZXJuIHN0cnVjdCBlbGZfc3RydGFiX2hhc2ggKiBfYmZkX2VsZl9zdHJ0YWJfaW5pdAog
ICh2b2lkKTsKZXh0ZXJuIHZvaWQgX2JmZF9lbGZfc3RydGFiX2ZyZWUKICAoc3RydWN0IGVsZl9z
dHJ0YWJfaGFzaCAqKTsKZXh0ZXJuIGJmZF9zaXplX3R5cGUgX2JmZF9lbGZfc3RydGFiX2FkZAog
IChzdHJ1Y3QgZWxmX3N0cnRhYl9oYXNoICosIGNvbnN0IGNoYXIgKiwgYm9vbGVhbik7CmV4dGVy
biB2b2lkIF9iZmRfZWxmX3N0cnRhYl9hZGRyZWYKICAoc3RydWN0IGVsZl9zdHJ0YWJfaGFzaCAq
LCBiZmRfc2l6ZV90eXBlKTsKZXh0ZXJuIHZvaWQgX2JmZF9lbGZfc3RydGFiX2RlbHJlZgogIChz
dHJ1Y3QgZWxmX3N0cnRhYl9oYXNoICosIGJmZF9zaXplX3R5cGUpOwpleHRlcm4gdm9pZCBfYmZk
X2VsZl9zdHJ0YWJfY2xlYXJfYWxsX3JlZnMKICAoc3RydWN0IGVsZl9zdHJ0YWJfaGFzaCAqKTsK
ZXh0ZXJuIGJmZF9zaXplX3R5cGUgX2JmZF9lbGZfc3RydGFiX3NpemUKICAoc3RydWN0IGVsZl9z
dHJ0YWJfaGFzaCAqKTsKZXh0ZXJuIGJmZF9zaXplX3R5cGUgX2JmZF9lbGZfc3RydGFiX29mZnNl
dAogIChzdHJ1Y3QgZWxmX3N0cnRhYl9oYXNoICosIGJmZF9zaXplX3R5cGUpOwpleHRlcm4gYm9v
bGVhbiBfYmZkX2VsZl9zdHJ0YWJfZW1pdAogIChiZmQgKiwgc3RydWN0IGVsZl9zdHJ0YWJfaGFz
aCAqKTsKZXh0ZXJuIHZvaWQgX2JmZF9lbGZfc3RydGFiX2ZpbmFsaXplCiAgKHN0cnVjdCBlbGZf
c3RydGFiX2hhc2ggKik7CgpleHRlcm4gYm9vbGVhbiBfYmZkX2VsZl9kaXNjYXJkX3NlY3Rpb25f
ZWhfZnJhbWUKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGFzZWN0aW9uICosIGFz
ZWN0aW9uICosIGJvb2xlYW4gKCopIChiZmRfdm1hLCB2b2lkICopLCBzdHJ1Y3QgZWxmX3JlbG9j
X2Nvb2tpZSAqKTsKCmV4dGVybiBib29sZWFuIF9iZmRfZWxmX2Rpc2NhcmRfc2VjdGlvbl9laF9m
cmFtZV9oZHIKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGFzZWN0aW9uICopOwpl
eHRlcm4gYmZkX3ZtYSBfYmZkX2VsZl9laF9mcmFtZV9zZWN0aW9uX29mZnNldAogIChiZmQgKiwg
YXNlY3Rpb24gKiwgYmZkX3ZtYSk7CmV4dGVybiBib29sZWFuIF9iZmRfZWxmX3dyaXRlX3NlY3Rp
b25fZWhfZnJhbWUKICAoYmZkICosIGFzZWN0aW9uICosIGFzZWN0aW9uICosIGJmZF9ieXRlICop
OwpleHRlcm4gYm9vbGVhbiBfYmZkX2VsZl93cml0ZV9zZWN0aW9uX2VoX2ZyYW1lX2hkcgogIChi
ZmQgKiwgYXNlY3Rpb24gKik7CmV4dGVybiBib29sZWFuIF9iZmRfZWxmX21heWJlX3N0cmlwX2Vo
X2ZyYW1lX2hkcgogIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCmV4dGVybiBib29sZWFuIF9i
ZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sCiAgKHN0cnVjdCBiZmRfbGlua19pbmZv
ICosIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopOwpleHRlcm4gbG9uZyBfYmZkX2VsZl9s
aW5rX2xvb2t1cF9sb2NhbF9keW5pbmR4CiAgKHN0cnVjdCBiZmRfbGlua19pbmZvICosIGJmZCAq
LCBsb25nKTsKZXh0ZXJuIGJvb2xlYW4gX2JmZF9lbGZfY29tcHV0ZV9zZWN0aW9uX2ZpbGVfcG9z
aXRpb25zCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKZXh0ZXJuIHZvaWQgX2Jm
ZF9lbGZfYXNzaWduX2ZpbGVfcG9zaXRpb25zX2Zvcl9yZWxvY3MKICAoYmZkICopOwpleHRlcm4g
ZmlsZV9wdHIgX2JmZF9lbGZfYXNzaWduX2ZpbGVfcG9zaXRpb25fZm9yX3NlY3Rpb24KICAoRWxm
X0ludGVybmFsX1NoZHIgKiwgZmlsZV9wdHIsIGJvb2xlYW4pOwoKZXh0ZXJuIGJvb2xlYW4gX2Jm
ZF9lbGZfdmFsaWRhdGVfcmVsb2MKICAoYmZkICosIGFyZWxlbnQgKik7CgpleHRlcm4gYm9vbGVh
biBfYmZkX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucwogIChiZmQgKiwgc3RydWN0IGJmZF9s
aW5rX2luZm8gKik7CmV4dGVybiBib29sZWFuIF9iZmRfZWxmX2NyZWF0ZV9nb3Rfc2VjdGlvbgog
IChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIF9i
ZmRfZWxmX2xpbmtfcmVudW1iZXJfZHluc3ltcwogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2lu
Zm8gKik7CgpleHRlcm4gYm9vbGVhbiBfYmZkX2VsZmNvcmVfbWFrZV9wc2V1ZG9zZWN0aW9uCiAg
KGJmZCAqLCBjaGFyICosIHNpemVfdCwgdWZpbGVfcHRyKTsKZXh0ZXJuIGNoYXIgKl9iZmRfZWxm
Y29yZV9zdHJuZHVwCiAgKGJmZCAqLCBjaGFyICosIHNpemVfdCk7CgpleHRlcm4gZWxmX2xpbmtl
cl9zZWN0aW9uX3QgKl9iZmRfZWxmX2NyZWF0ZV9saW5rZXJfc2VjdGlvbgogIChiZmQgKiwgc3Ry
dWN0IGJmZF9saW5rX2luZm8gKiwgZW51bSBlbGZfbGlua2VyX3NlY3Rpb25fZW51bSwgZWxmX2xp
bmtlcl9zZWN0aW9uX3QgKik7CgoKZXh0ZXJuIGVsZl9saW5rZXJfc2VjdGlvbl9wb2ludGVyc190
ICpfYmZkX2VsZl9maW5kX3BvaW50ZXJfbGlua2VyX3NlY3Rpb24KICAoZWxmX2xpbmtlcl9zZWN0
aW9uX3BvaW50ZXJzX3QgKiwgYmZkX3ZtYSwgZWxmX2xpbmtlcl9zZWN0aW9uX2VudW1fdCk7CgoK
ZXh0ZXJuIGJvb2xlYW4gYmZkX2VsZjMyX2NyZWF0ZV9wb2ludGVyX2xpbmtlcl9zZWN0aW9uCiAg
KGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBlbGZfbGlua2VyX3NlY3Rpb25fdCAqLCBz
dHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCBjb25zdCBFbGZfSW50ZXJuYWxfUmVsYSAqKTsK
CgpleHRlcm4gYmZkX3ZtYSBiZmRfZWxmMzJfZmluaXNoX3BvaW50ZXJfbGlua2VyX3NlY3Rpb24K
ICAoYmZkICosIGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBlbGZfbGlua2VyX3NlY3Rp
b25fdCAqLCBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCBiZmRfdm1hLCBjb25zdCBFbGZf
SW50ZXJuYWxfUmVsYSAqLCBpbnQpOwoKCgpleHRlcm4gYm9vbGVhbiBiZmRfZWxmNjRfY3JlYXRl
X3BvaW50ZXJfbGlua2VyX3NlY3Rpb24KICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICos
IGVsZl9saW5rZXJfc2VjdGlvbl90ICosIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICosIGNv
bnN0IEVsZl9JbnRlcm5hbF9SZWxhICopOwoKCmV4dGVybiBiZmRfdm1hIGJmZF9lbGY2NF9maW5p
c2hfcG9pbnRlcl9saW5rZXJfc2VjdGlvbgogIChiZmQgKiwgYmZkICosIHN0cnVjdCBiZmRfbGlu
a19pbmZvICosIGVsZl9saW5rZXJfc2VjdGlvbl90ICosIHN0cnVjdCBlbGZfbGlua19oYXNoX2Vu
dHJ5ICosIGJmZF92bWEsIGNvbnN0IEVsZl9JbnRlcm5hbF9SZWxhICosIGludCk7CgoKCmV4dGVy
biBib29sZWFuIF9iZmRfZWxmX21ha2VfbGlua2VyX3NlY3Rpb25fcmVsYQogIChiZmQgKiwgZWxm
X2xpbmtlcl9zZWN0aW9uX3QgKiwgaW50KTsKCmV4dGVybiBjb25zdCBiZmRfdGFyZ2V0ICpiZmRf
ZWxmMzJfb2JqZWN0X3AKICAoYmZkICopOwpleHRlcm4gY29uc3QgYmZkX3RhcmdldCAqYmZkX2Vs
ZjMyX2NvcmVfZmlsZV9wCiAgKGJmZCAqKTsKZXh0ZXJuIGNoYXIgKmJmZF9lbGYzMl9jb3JlX2Zp
bGVfZmFpbGluZ19jb21tYW5kCiAgKGJmZCAqKTsKZXh0ZXJuIGludCBiZmRfZWxmMzJfY29yZV9m
aWxlX2ZhaWxpbmdfc2lnbmFsCiAgKGJmZCAqKTsKZXh0ZXJuIGJvb2xlYW4gYmZkX2VsZjMyX2Nv
cmVfZmlsZV9tYXRjaGVzX2V4ZWN1dGFibGVfcAogIChiZmQgKiwgYmZkICopOwoKZXh0ZXJuIGJv
b2xlYW4gYmZkX2VsZjMyX2JmZF9saW5rX2FkZF9zeW1ib2xzCiAgKGJmZCAqLCBzdHJ1Y3QgYmZk
X2xpbmtfaW5mbyAqKTsKZXh0ZXJuIGJvb2xlYW4gYmZkX2VsZjMyX2JmZF9maW5hbF9saW5rCiAg
KGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCmV4dGVybiB2b2lkIGJmZF9lbGYzMl9z
d2FwX3N5bWJvbF9pbgogIChiZmQgKiwgY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIEVsZl9J
bnRlcm5hbF9TeW0gKik7CmV4dGVybiB2b2lkIGJmZF9lbGYzMl9zd2FwX3N5bWJvbF9vdXQKICAo
YmZkICosIGNvbnN0IEVsZl9JbnRlcm5hbF9TeW0gKiwgdm9pZCAqLCB2b2lkICopOwpleHRlcm4g
dm9pZCBiZmRfZWxmMzJfc3dhcF9yZWxvY19pbgogIChiZmQgKiwgY29uc3QgRWxmMzJfRXh0ZXJu
YWxfUmVsICosIEVsZl9JbnRlcm5hbF9SZWwgKik7CmV4dGVybiB2b2lkIGJmZF9lbGYzMl9zd2Fw
X3JlbG9jX291dAogIChiZmQgKiwgY29uc3QgRWxmX0ludGVybmFsX1JlbCAqLCBFbGYzMl9FeHRl
cm5hbF9SZWwgKik7CmV4dGVybiB2b2lkIGJmZF9lbGYzMl9zd2FwX3JlbG9jYV9pbgogIChiZmQg
KiwgY29uc3QgRWxmMzJfRXh0ZXJuYWxfUmVsYSAqLCBFbGZfSW50ZXJuYWxfUmVsYSAqKTsKZXh0
ZXJuIHZvaWQgYmZkX2VsZjMyX3N3YXBfcmVsb2NhX291dAogIChiZmQgKiwgY29uc3QgRWxmX0lu
dGVybmFsX1JlbGEgKiwgRWxmMzJfRXh0ZXJuYWxfUmVsYSAqKTsKZXh0ZXJuIHZvaWQgYmZkX2Vs
ZjMyX3N3YXBfcGhkcl9pbgogIChiZmQgKiwgY29uc3QgRWxmMzJfRXh0ZXJuYWxfUGhkciAqLCBF
bGZfSW50ZXJuYWxfUGhkciAqKTsKZXh0ZXJuIHZvaWQgYmZkX2VsZjMyX3N3YXBfcGhkcl9vdXQK
ICAoYmZkICosIGNvbnN0IEVsZl9JbnRlcm5hbF9QaGRyICosIEVsZjMyX0V4dGVybmFsX1BoZHIg
Kik7CmV4dGVybiB2b2lkIGJmZF9lbGYzMl9zd2FwX2R5bl9pbgogIChiZmQgKiwgY29uc3Qgdm9p
ZCAqLCBFbGZfSW50ZXJuYWxfRHluICopOwpleHRlcm4gdm9pZCBiZmRfZWxmMzJfc3dhcF9keW5f
b3V0CiAgKGJmZCAqLCBjb25zdCBFbGZfSW50ZXJuYWxfRHluICosIHZvaWQgKik7CmV4dGVybiBs
b25nIGJmZF9lbGYzMl9zbHVycF9zeW1ib2xfdGFibGUKICAoYmZkICosIGFzeW1ib2wgKiosIGJv
b2xlYW4pOwpleHRlcm4gYm9vbGVhbiBiZmRfZWxmMzJfd3JpdGVfc2hkcnNfYW5kX2VoZHIKICAo
YmZkICopOwpleHRlcm4gaW50IGJmZF9lbGYzMl93cml0ZV9vdXRfcGhkcnMKICAoYmZkICosIGNv
bnN0IEVsZl9JbnRlcm5hbF9QaGRyICosIHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIGJmZF9l
bGYzMl93cml0ZV9yZWxvY3MKICAoYmZkICosIGFzZWN0aW9uICosIHZvaWQgKik7CmV4dGVybiBi
b29sZWFuIGJmZF9lbGYzMl9zbHVycF9yZWxvY190YWJsZQogIChiZmQgKiwgYXNlY3Rpb24gKiwg
YXN5bWJvbCAqKiwgYm9vbGVhbik7CmV4dGVybiBib29sZWFuIGJmZF9lbGYzMl9hZGRfZHluYW1p
Y19lbnRyeQogIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBiZmRfdm1hLCBiZmRfdm1hKTsKZXh0
ZXJuIGJvb2xlYW4gYmZkX2VsZjMyX2xpbmtfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMKICAoYmZk
ICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwpleHRlcm4gRWxmX0ludGVybmFsX1JlbGEgKl9i
ZmRfZWxmMzJfbGlua19yZWFkX3JlbG9jcwogIChiZmQgKiwgYXNlY3Rpb24gKiwgdm9pZCAqLCBF
bGZfSW50ZXJuYWxfUmVsYSAqLCBib29sZWFuKTsKCmV4dGVybiBjb25zdCBiZmRfdGFyZ2V0ICpi
ZmRfZWxmNjRfb2JqZWN0X3AKICAoYmZkICopOwpleHRlcm4gY29uc3QgYmZkX3RhcmdldCAqYmZk
X2VsZjY0X2NvcmVfZmlsZV9wCiAgKGJmZCAqKTsKZXh0ZXJuIGNoYXIgKmJmZF9lbGY2NF9jb3Jl
X2ZpbGVfZmFpbGluZ19jb21tYW5kCiAgKGJmZCAqKTsKZXh0ZXJuIGludCBiZmRfZWxmNjRfY29y
ZV9maWxlX2ZhaWxpbmdfc2lnbmFsCiAgKGJmZCAqKTsKZXh0ZXJuIGJvb2xlYW4gYmZkX2VsZjY0
X2NvcmVfZmlsZV9tYXRjaGVzX2V4ZWN1dGFibGVfcAogIChiZmQgKiwgYmZkICopOwpleHRlcm4g
Ym9vbGVhbiBiZmRfZWxmNjRfYmZkX2xpbmtfYWRkX3N5bWJvbHMKICAoYmZkICosIHN0cnVjdCBi
ZmRfbGlua19pbmZvICopOwpleHRlcm4gYm9vbGVhbiBiZmRfZWxmNjRfYmZkX2ZpbmFsX2xpbmsK
ICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKZXh0ZXJuIHZvaWQgYmZkX2VsZjY0
X3N3YXBfc3ltYm9sX2luCiAgKGJmZCAqLCBjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgRWxm
X0ludGVybmFsX1N5bSAqKTsKZXh0ZXJuIHZvaWQgYmZkX2VsZjY0X3N3YXBfc3ltYm9sX291dAog
IChiZmQgKiwgY29uc3QgRWxmX0ludGVybmFsX1N5bSAqLCB2b2lkICosIHZvaWQgKik7CmV4dGVy
biB2b2lkIGJmZF9lbGY2NF9zd2FwX3JlbG9jX2luCiAgKGJmZCAqLCBjb25zdCBFbGY2NF9FeHRl
cm5hbF9SZWwgKiwgRWxmX0ludGVybmFsX1JlbCAqKTsKZXh0ZXJuIHZvaWQgYmZkX2VsZjY0X3N3
YXBfcmVsb2Nfb3V0CiAgKGJmZCAqLCBjb25zdCBFbGZfSW50ZXJuYWxfUmVsICosIEVsZjY0X0V4
dGVybmFsX1JlbCAqKTsKZXh0ZXJuIHZvaWQgYmZkX2VsZjY0X3N3YXBfcmVsb2NhX2luCiAgKGJm
ZCAqLCBjb25zdCBFbGY2NF9FeHRlcm5hbF9SZWxhICosIEVsZl9JbnRlcm5hbF9SZWxhICopOwpl
eHRlcm4gdm9pZCBiZmRfZWxmNjRfc3dhcF9yZWxvY2Ffb3V0CiAgKGJmZCAqLCBjb25zdCBFbGZf
SW50ZXJuYWxfUmVsYSAqLCBFbGY2NF9FeHRlcm5hbF9SZWxhICopOwpleHRlcm4gdm9pZCBiZmRf
ZWxmNjRfc3dhcF9waGRyX2luCiAgKGJmZCAqLCBjb25zdCBFbGY2NF9FeHRlcm5hbF9QaGRyICos
IEVsZl9JbnRlcm5hbF9QaGRyICopOwpleHRlcm4gdm9pZCBiZmRfZWxmNjRfc3dhcF9waGRyX291
dAogIChiZmQgKiwgY29uc3QgRWxmX0ludGVybmFsX1BoZHIgKiwgRWxmNjRfRXh0ZXJuYWxfUGhk
ciAqKTsKZXh0ZXJuIHZvaWQgYmZkX2VsZjY0X3N3YXBfZHluX2luCiAgKGJmZCAqLCBjb25zdCB2
b2lkICosIEVsZl9JbnRlcm5hbF9EeW4gKik7CmV4dGVybiB2b2lkIGJmZF9lbGY2NF9zd2FwX2R5
bl9vdXQKICAoYmZkICosIGNvbnN0IEVsZl9JbnRlcm5hbF9EeW4gKiwgdm9pZCAqKTsKZXh0ZXJu
IGxvbmcgYmZkX2VsZjY0X3NsdXJwX3N5bWJvbF90YWJsZQogIChiZmQgKiwgYXN5bWJvbCAqKiwg
Ym9vbGVhbik7CmV4dGVybiBib29sZWFuIGJmZF9lbGY2NF93cml0ZV9zaGRyc19hbmRfZWhkcgog
IChiZmQgKik7CmV4dGVybiBpbnQgYmZkX2VsZjY0X3dyaXRlX291dF9waGRycwogIChiZmQgKiwg
Y29uc3QgRWxmX0ludGVybmFsX1BoZHIgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgYmZk
X2VsZjY0X3dyaXRlX3JlbG9jcwogIChiZmQgKiwgYXNlY3Rpb24gKiwgdm9pZCAqKTsKZXh0ZXJu
IGJvb2xlYW4gYmZkX2VsZjY0X3NsdXJwX3JlbG9jX3RhYmxlCiAgKGJmZCAqLCBhc2VjdGlvbiAq
LCBhc3ltYm9sICoqLCBib29sZWFuKTsKZXh0ZXJuIGJvb2xlYW4gYmZkX2VsZjY0X2FkZF9keW5h
bWljX2VudHJ5CiAgKHN0cnVjdCBiZmRfbGlua19pbmZvICosIGJmZF92bWEsIGJmZF92bWEpOwpl
eHRlcm4gYm9vbGVhbiBiZmRfZWxmNjRfbGlua19jcmVhdGVfZHluYW1pY19zZWN0aW9ucwogIChi
ZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CmV4dGVybiBFbGZfSW50ZXJuYWxfUmVsYSAq
X2JmZF9lbGY2NF9saW5rX3JlYWRfcmVsb2NzCiAgKGJmZCAqLCBhc2VjdGlvbiAqLCB2b2lkICos
IEVsZl9JbnRlcm5hbF9SZWxhICosIGJvb2xlYW4pOwoKCgoKCgpleHRlcm4gaW50IGVsZl9saW5r
X3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbAogIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBi
ZmQgKiwgbG9uZyk7CgoKCgoKZXh0ZXJuIGJvb2xlYW4gX2JmZF9lbGZfY2xvc2VfYW5kX2NsZWFu
dXAKICAoYmZkICopOwpleHRlcm4gYmZkX3JlbG9jX3N0YXR1c190eXBlIF9iZmRfZWxmX3JlbF92
dGFibGVfcmVsb2NfZm4KICAoYmZkICosIGFyZWxlbnQgKiwgc3RydWN0IHN5bWJvbF9jYWNoZV9l
bnRyeSAqLCB2b2lkICosIGFzZWN0aW9uICosIGJmZCAqLCBjaGFyICoqKTsKCgpleHRlcm4gYm9v
bGVhbiBfYmZkX2VsZjMyX2djX3NlY3Rpb25zCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5m
byAqKTsKZXh0ZXJuIGJvb2xlYW4gX2JmZF9lbGYzMl9nY19jb21tb25fZmluYWxpemVfZ290X29m
ZnNldHMKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwpleHRlcm4gYm9vbGVhbiBf
YmZkX2VsZjMyX2djX2NvbW1vbl9maW5hbF9saW5rCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtf
aW5mbyAqKTsKZXh0ZXJuIGJvb2xlYW4gX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRpbmhlcml0CiAg
KGJmZCAqLCBhc2VjdGlvbiAqLCBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCBiZmRfdm1h
KTsKZXh0ZXJuIGJvb2xlYW4gX2JmZF9lbGYzMl9nY19yZWNvcmRfdnRlbnRyeQogIChiZmQgKiwg
YXNlY3Rpb24gKiwgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKiwgYmZkX3ZtYSk7CgpleHRl
cm4gYm9vbGVhbiBfYmZkX2VsZjY0X2djX3NlY3Rpb25zCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xp
bmtfaW5mbyAqKTsKZXh0ZXJuIGJvb2xlYW4gX2JmZF9lbGY2NF9nY19jb21tb25fZmluYWxpemVf
Z290X29mZnNldHMKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwpleHRlcm4gYm9v
bGVhbiBfYmZkX2VsZjY0X2djX2NvbW1vbl9maW5hbF9saW5rCiAgKGJmZCAqLCBzdHJ1Y3QgYmZk
X2xpbmtfaW5mbyAqKTsKZXh0ZXJuIGJvb2xlYW4gX2JmZF9lbGY2NF9nY19yZWNvcmRfdnRpbmhl
cml0CiAgKGJmZCAqLCBhc2VjdGlvbiAqLCBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqLCBi
ZmRfdm1hKTsKZXh0ZXJuIGJvb2xlYW4gX2JmZF9lbGY2NF9nY19yZWNvcmRfdnRlbnRyeQogIChi
ZmQgKiwgYXNlY3Rpb24gKiwgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKiwgYmZkX3ZtYSk7
CgpleHRlcm4gYm9vbGVhbiBfYmZkX2VsZjMyX3JlbG9jX3N5bWJvbF9kZWxldGVkX3AKICAoYmZk
X3ZtYSwgdm9pZCAqKTsKZXh0ZXJuIGJvb2xlYW4gX2JmZF9lbGY2NF9yZWxvY19zeW1ib2xfZGVs
ZXRlZF9wCiAgKGJmZF92bWEsIHZvaWQgKik7CgoKZXh0ZXJuIGNoYXIgKmVsZmNvcmVfd3JpdGVf
bm90ZQogIChiZmQgKiwgY2hhciAqLCBpbnQgKiwgY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IHZv
aWQgKiwgaW50KTsKZXh0ZXJuIGNoYXIgKmVsZmNvcmVfd3JpdGVfcHJwc2luZm8KICAoYmZkICos
IGNoYXIgKiwgaW50ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIg
KmVsZmNvcmVfd3JpdGVfcHJzdGF0dXMKICAoYmZkICosIGNoYXIgKiwgaW50ICosIGxvbmcsIGlu
dCwgY29uc3Qgdm9pZCAqKTsKZXh0ZXJuIGNoYXIgKiBlbGZjb3JlX3dyaXRlX3BzdGF0dXMKICAo
YmZkICosIGNoYXIgKiwgaW50ICosIGxvbmcsIGludCwgY29uc3Qgdm9pZCAqKTsKZXh0ZXJuIGNo
YXIgKmVsZmNvcmVfd3JpdGVfcHJmcHJlZwogIChiZmQgKiwgY2hhciAqLCBpbnQgKiwgY29uc3Qg
dm9pZCAqLCBpbnQpOwpleHRlcm4gY2hhciAqZWxmY29yZV93cml0ZV9wcnhmcHJlZwogIChiZmQg
KiwgY2hhciAqLCBpbnQgKiwgY29uc3Qgdm9pZCAqLCBpbnQpOwpleHRlcm4gY2hhciAqZWxmY29y
ZV93cml0ZV9sd3BzdGF0dXMKICAoYmZkICosIGNoYXIgKiwgaW50ICosIGxvbmcsIGludCwgY29u
c3Qgdm9pZCAqKTsKCgoKZXh0ZXJuIGJvb2xlYW4gX3NoX2VsZl9zZXRfbWFjaF9mcm9tX2ZsYWdz
CiAgKGJmZCAqKTsKIyA0MSAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvb2JqLWVsZi5o
IiAyCgojIDEgInRhcmctY3B1LmgiIDEKIyAxICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZp
Zy90Yy1wcGMuaCIgMQojIDI2ICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMu
aCIKc3RydWN0IGZpeDsKIyA1MSAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBj
LmgiCmV4dGVybiBlbnVtIGJmZF9hcmNoaXRlY3R1cmUgcHBjX2FyY2ggKHZvaWQpOwpleHRlcm4g
dW5zaWduZWQgbG9uZyBwcGNfbWFjaCAodm9pZCk7CgoKZXh0ZXJuIGludCB0YXJnZXRfYmlnX2Vu
ZGlhbjsKCgoKZXh0ZXJuIGNoYXIgKnBwY190YXJnZXRfZm9ybWF0ICh2b2lkKTsKIyAyMzIgIi9z
cmMvYmludXRpbHMtMi4xMy9nYXMvY29uZmlnL3RjLXBwYy5oIgpleHRlcm4gaW50IHBwY19zZWN0
aW9uX2xldHRlciAoaW50LCBjaGFyICoqKTsKZXh0ZXJuIGludCBwcGNfc2VjdGlvbl90eXBlIChj
aGFyICosIHNpemVfdCk7CmV4dGVybiBpbnQgcHBjX3NlY3Rpb25fd29yZCAoY2hhciAqLCBzaXpl
X3QpOwpleHRlcm4gaW50IHBwY19zZWN0aW9uX2ZsYWdzIChpbnQsIGludCwgaW50KTsKIyAyNTgg
Ii9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29uZmlnL3RjLXBwYy5oIgpleHRlcm4gY29uc3QgY2hh
ciAqcHBjX2NvbW1lbnRfY2hhcnM7CgoKCmV4dGVybiBpbnQgcHBjX2ZpeF9hZGp1c3RhYmxlIChz
dHJ1Y3QgZml4ICopOwojIDI3NSAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBj
LmgiCmV4dGVybiB2b2lkIHBwY19mcm9iX2ZpbGVfYmVmb3JlX2FkanVzdCAodm9pZCk7CgoKCgoK
CmV4dGVybiBsb25nIG1kX3BjcmVsX2Zyb21fc2VjdGlvbiAoc3RydWN0IGZpeCAqLCBzZWdUKTsK
CgpleHRlcm4gaW50IHBwY19wYXJzZV9uYW1lIChjb25zdCBjaGFyICosIHN0cnVjdCBleHByZXNz
aW9uUyAqKTsKIyAyICJ0YXJnLWNwdS5oIiAyCiMgNDMgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMv
Y29uZmlnL29iai1lbGYuaCIgMgojIDYyICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy9v
YmotZWxmLmgiCnN0cnVjdCBlbGZfb2JqX3N5CnsKCiAgaW50IGxvY2FsOwoKCgogIGV4cHJlc3Np
b25TICpzaXplOwoKCiAgY2hhciAqdmVyc2lvbmVkX25hbWU7CiMgODEgIi9zcmMvYmludXRpbHMt
Mi4xMy9nYXMvY29uZmlnL29iai1lbGYuaCIKfTsKIyAxMDMgIi9zcmMvYmludXRpbHMtMi4xMy9n
YXMvY29uZmlnL29iai1lbGYuaCIKZXh0ZXJuIHZvaWQgZWxmX2JlZ2luICh2b2lkKTsKIyAxMjYg
Ii9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29uZmlnL29iai1lbGYuaCIKaW50IGVsZl9zX2dldF9v
dGhlciAoc3ltYm9sUyAqKTsKIyAxMzUgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29uZmlnL29i
ai1lbGYuaCIKZXh0ZXJuIGFzZWN0aW9uICpnZGJfc2VjdGlvbjsKCgoKCmV4dGVybiB2b2lkIGVs
Zl9mcm9iX2ZpbGUgKHZvaWQpOwoKCgoKZXh0ZXJuIHZvaWQgZWxmX2Zyb2JfZmlsZV9iZWZvcmVf
YWRqdXN0ICh2b2lkKTsKCgoKCmV4dGVybiB2b2lkIGVsZl9mcm9iX2ZpbGVfYWZ0ZXJfcmVsb2Nz
ICh2b2lkKTsKCgoKCmV4dGVybiB2b2lkIGVsZl9maWxlX3N5bWJvbCAoY29uc3QgY2hhciAqKTsK
CmV4dGVybiB2b2lkIG9ial9lbGZfc2VjdGlvbl9jaGFuZ2VfaG9vayAodm9pZCk7CgpleHRlcm4g
dm9pZCBvYmpfZWxmX3NlY3Rpb24gKGludCk7CmV4dGVybiB2b2lkIG9ial9lbGZfcHJldmlvdXMg
KGludCk7CmV4dGVybiB2b2lkIG9ial9lbGZfdmVyc2lvbiAoaW50KTsKZXh0ZXJuIHZvaWQgb2Jq
X2VsZl9jb21tb24gKGludCk7CmV4dGVybiB2b2lkIG9ial9lbGZfZGF0YSAoaW50KTsKZXh0ZXJu
IHZvaWQgb2JqX2VsZl90ZXh0IChpbnQpOwpleHRlcm4gc3RydWN0IGZpeCAqb2JqX2VsZl92dGFi
bGVfaW5oZXJpdCAoaW50KTsKZXh0ZXJuIHN0cnVjdCBmaXggKm9ial9lbGZfdnRhYmxlX2VudHJ5
IChpbnQpOwoKCgoKCgoKdm9pZCBlbGZfb2JqX3JlYWRfYmVnaW5faG9vayAodm9pZCk7CgoKCgp2
b2lkIGVsZl9vYmpfc3ltYm9sX25ld19ob29rIChzeW1ib2xTICopOwoKCgoKdm9pZCBlbGZfY29w
eV9zeW1ib2xfYXR0cmlidXRlcyAoc3ltYm9sUyAqLCBzeW1ib2xTICopOwojIDIwMSAiL3NyYy9i
aW51dGlscy0yLjEzL2dhcy9jb25maWcvb2JqLWVsZi5oIgpleHRlcm4gdm9pZCBvYmpfZWxmX2lu
aXRfc3RhYl9zZWN0aW9uIChzZWdUKTsKIyAyMjMgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29u
ZmlnL29iai1lbGYuaCIKZXh0ZXJuIHZvaWQgZWxmX2Zyb2Jfc3ltYm9sIChzeW1ib2xTICosIGlu
dCAqKTsKCgoKCmV4dGVybiB2b2lkIGVsZl9wb3BfaW5zZXJ0ICh2b2lkKTsKCgoKCgoKCnN0cnVj
dCBlY29mZl9leHRyOwoKZXh0ZXJuIHZvaWQgZWxmX2Vjb2ZmX3NldF9leHQgKHN5bWJvbFMgKiwg
c3RydWN0IGVjb2ZmX2V4dHIgKik7CiMgMiAib2JqLWZvcm1hdC5oIiAyCiMgMjAgIi9zcmMvYmlu
dXRpbHMtMi4xMy9nYXMvY29uZmlnL3RlLWdlbmVyaWMuaCIgMgojIDIgInRhcmctZW52LmgiIDIK
IyA2MTUgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvYXMuaCIgMgoKCgoKCiMgMSAiL3NyYy9iaW51
dGlscy0yLjEzL2dhcy93cml0ZS5oIiAxCiMgNDUgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvd3Jp
dGUuaCIKIyAxICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2JpdF9maXguaCIgMQojIDM2ICIvc3Jj
L2JpbnV0aWxzLTIuMTMvZ2FzL2JpdF9maXguaCIKc3RydWN0IGJpdF9maXggewogIGludCBmeF9i
aXRfc2l6ZTsKICBpbnQgZnhfYml0X29mZnNldDsKICBsb25nIGZ4X2JpdF9iYXNlOwoKICBsb25n
IGZ4X2JpdF9iYXNlX2FkajsKICBsb25nIGZ4X2JpdF9tYXg7CiAgbG9uZyBmeF9iaXRfbWluOwog
IGxvbmcgZnhfYml0X2FkZDsKfTsKdHlwZWRlZiBzdHJ1Y3QgYml0X2ZpeCBiaXRfZml4UzsKIyA0
NiAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy93cml0ZS5oIiAyCgoKCgoKc3RydWN0IGZpeAp7CgoK
CgogIGNoYXIgZnhfcGNyZWxfYWRqdXN0OwoKCiAgdW5zaWduZWQgY2hhciBmeF9zaXplOwoKCiAg
dW5zaWduZWQgZnhfcGNyZWwgOiAxOwoKCgoKCgogIHVuc2lnbmVkIGZ4X3BsdCA6IDE7CgoKCiAg
dW5zaWduZWQgZnhfaW1fZGlzcCA6IDI7CgoKCiAgdW5zaWduZWQgZnhfdGNiaXQgOiAxOwoKCiAg
dW5zaWduZWQgZnhfZG9uZSA6IDE7CgoKCgoKCiAgdW5zaWduZWQgZnhfbm9fb3ZlcmZsb3cgOiAx
OwoKCiAgdW5zaWduZWQgZnhfc2lnbmVkIDogMTsKCgogIGZyYWdTICpmeF9mcmFnOwoKCiAgbG9u
ZyBmeF93aGVyZTsKCgogIHN5bWJvbFMgKmZ4X2FkZHN5OwoKCiAgc3ltYm9sUyAqZnhfc3Vic3k7
CgoKICB2YWx1ZVQgZnhfb2Zmc2V0OwoKCiAgc3RydWN0IGZpeCAqZnhfbmV4dDsKCgoKCgoKICBi
aXRfZml4UyAqZnhfYml0X2ZpeFA7CgoKICBiZmRfcmVsb2NfY29kZV9yZWFsX3R5cGUgZnhfcl90
eXBlOwojIDEzNSAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy93cml0ZS5oIgogIHZhbHVlVCBmeF9h
ZGRudW1iZXI7CgoKCiAgY2hhciAqZnhfZmlsZTsKICB1bnNpZ25lZCBmeF9saW5lOwojIDE1NiAi
L3NyYy9iaW51dGlscy0yLjEzL2dhcy93cml0ZS5oIgp9OwoKdHlwZWRlZiBzdHJ1Y3QgZml4IGZp
eFM7CgpleHRlcm4gaW50IGZpbmFsaXplX3N5bXM7CiMgMTc1ICIvc3JjL2JpbnV0aWxzLTIuMTMv
Z2FzL3dyaXRlLmgiCmV4dGVybiBsb25nIHN0cmluZ19ieXRlX2NvdW50OwpleHRlcm4gaW50IHNl
Y3Rpb25fYWxpZ25tZW50W107CgpleHRlcm4gYml0X2ZpeFMgKmJpdF9maXhfbmV3CiAgKGludCBz
aXplLCBpbnQgb2Zmc2V0LCBsb25nIGJhc2VfdHlwZSwgbG9uZyBiYXNlX2FkaiwgbG9uZyBtaW4s
IGxvbmcgbWF4LCBsb25nIGFkZCk7CgpleHRlcm4gdm9pZCBhcHBlbmQgKGNoYXIgKipjaGFyUFAs
IGNoYXIgKmZyb21QLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CmV4dGVybiB2b2lkIHJlY29yZF9h
bGlnbm1lbnQgKHNlZ1Qgc2VnLCBpbnQgYWxpZ24pOwpleHRlcm4gaW50IGdldF9yZWNvcmRlZF9h
bGlnbm1lbnQgKHNlZ1Qgc2VnKTsKZXh0ZXJuIHZvaWQgc3Vic2Vnc19maW5pc2ggKHZvaWQpOwpl
eHRlcm4gdm9pZCB3cml0ZV9vYmplY3RfZmlsZSAodm9pZCk7CmV4dGVybiBsb25nIHJlbGF4X2Zy
YWcgKHNlZ1QsIGZyYWdTICosIGxvbmcpOwpleHRlcm4gaW50IHJlbGF4X3NlZ21lbnQKICAoc3Ry
dWN0IGZyYWcgKiBzZWdfZnJhZ19yb290LCBzZWdUIHNlZ190eXBlKTsKCmV4dGVybiB2b2lkIG51
bWJlcl90b19jaGFyc19saXR0bGVlbmRpYW4gKGNoYXIgKiwgdmFsdWVULCBpbnQpOwpleHRlcm4g
dm9pZCBudW1iZXJfdG9fY2hhcnNfYmlnZW5kaWFuIChjaGFyICosIHZhbHVlVCwgaW50KTsKCgpl
eHRlcm4gZml4UyAqZml4X25ldwogIChmcmFnUyAqIGZyYWcsIGludCB3aGVyZSwgaW50IHNpemUs
IHN5bWJvbFMgKiBhZGRfc3ltYm9sLCBvZmZzZXRUIG9mZnNldCwgaW50IHBjcmVsLCBiZmRfcmVs
b2NfY29kZV9yZWFsX3R5cGUgcl90eXBlKTsKCmV4dGVybiBmaXhTICpmaXhfbmV3X2V4cAogIChm
cmFnUyAqIGZyYWcsIGludCB3aGVyZSwgaW50IHNpemUsIGV4cHJlc3Npb25TICpleHAsIGludCBw
Y3JlbCwgYmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlIHJfdHlwZSk7CiMgMjA5ICIvc3JjL2JpbnV0
aWxzLTIuMTMvZ2FzL3dyaXRlLmgiCmV4dGVybiB2b2lkIHdyaXRlX3ByaW50X3N0YXRpc3RpY3Mg
KEZJTEUgKik7CiMgNjIxICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2FzLmgiIDIKIyAxICIvc3Jj
L2JpbnV0aWxzLTIuMTMvZ2FzL2ZyYWdzLmgiIDEKIyAyNiAiL3NyYy9iaW51dGlscy0yLjEzL2dh
cy9mcmFncy5oIgpzdHJ1Y3Qgb2JzdGFjazsKIyA0MyAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9m
cmFncy5oIgpzdHJ1Y3QgZnJhZyB7CgogIGFkZHJlc3NUIGZyX2FkZHJlc3M7CgoKICBhZGRyZXNz
VCBsYXN0X2ZyX2FkZHJlc3M7CgoKICBvZmZzZXRUIGZyX2ZpeDsKCgogIG9mZnNldFQgZnJfdmFy
OwoKICBvZmZzZXRUIGZyX29mZnNldDsKCiAgc3ltYm9sUyAqZnJfc3ltYm9sOwoKICBjaGFyICpm
cl9vcGNvZGU7CgoKICBzdHJ1Y3QgZnJhZyAqZnJfbmV4dDsKCgogIGNoYXIgKmZyX2ZpbGU7CiAg
dW5zaWduZWQgaW50IGZyX2xpbmU7CgoKICBzdHJ1Y3QgbGlzdF9pbmZvX3N0cnVjdCAqbGluZTsK
CgoKCiAgdW5zaWduZWQgaW50IHJlbGF4X21hcmtlcjoxOwoKCiAgcmVsYXhfc3RhdGVUIGZyX3R5
cGU7CiAgcmVsYXhfc3Vic3RhdGVUIGZyX3N1YnR5cGU7CiMgOTggIi9zcmMvYmludXRpbHMtMi4x
My9nYXMvZnJhZ3MuaCIKICBjaGFyIGZyX2xpdGVyYWxbMV07Cn07CiMgMTA4ICIvc3JjL2JpbnV0
aWxzLTIuMTMvZ2FzL2ZyYWdzLmgiCmV4dGVybiBmcmFnUyAqZnJhZ19ub3c7CmV4dGVybiBhZGRy
ZXNzVCBmcmFnX25vd19maXggKHZvaWQpOwpleHRlcm4gYWRkcmVzc1QgZnJhZ19ub3dfZml4X29j
dGV0cyAodm9pZCk7CgoKZXh0ZXJuIGZyYWdTIHplcm9fYWRkcmVzc19mcmFnOwoKZXh0ZXJuIGZy
YWdTIGJzc19hZGRyZXNzX2ZyYWc7CiMgMTMwICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2ZyYWdz
LmgiCmV4dGVybiB2b2lkIGZyYWdfYXBwZW5kXzFfY2hhciAoaW50KTsKCgoKdm9pZCBmcmFnX2lu
aXQgKHZvaWQpOwpmcmFnUyAqZnJhZ19hbGxvYyAoc3RydWN0IG9ic3RhY2sgKik7CnZvaWQgZnJh
Z19ncm93ICh1bnNpZ25lZCBpbnQgbmNoYXJzKTsKY2hhciAqZnJhZ19tb3JlIChpbnQgbmNoYXJz
KTsKdm9pZCBmcmFnX2FsaWduIChpbnQgYWxpZ25tZW50LCBpbnQgZmlsbF9jaGFyYWN0ZXIsIGlu
dCBtYXgpOwp2b2lkIGZyYWdfYWxpZ25fcGF0dGVybiAoaW50IGFsaWdubWVudCwgY29uc3QgY2hh
ciAqZmlsbF9wYXR0ZXJuLCBpbnQgbl9maWxsLCBpbnQgbWF4KTsKCgoKdm9pZCBmcmFnX2FsaWdu
X2NvZGUgKGludCBhbGlnbm1lbnQsIGludCBtYXgpOwp2b2lkIGZyYWdfbmV3IChpbnQgb2xkX2Zy
YWdzX3Zhcl9tYXhfc2l6ZSk7CnZvaWQgZnJhZ193YW5lIChmcmFnUyAqIGZyYWdQKTsKCmNoYXIg
KmZyYWdfdmFyaWFudCAocmVsYXhfc3RhdGVUIHR5cGUsIGludCBtYXhfY2hhcnMsIGludCB2YXIs
IHJlbGF4X3N1YnN0YXRlVCBzdWJ0eXBlLCBzeW1ib2xTICogc3ltYm9sLCBvZmZzZXRUIG9mZnNl
dCwgY2hhciAqb3Bjb2RlKTsKCgoKCgoKCmNoYXIgKmZyYWdfdmFyIChyZWxheF9zdGF0ZVQgdHlw
ZSwgaW50IG1heF9jaGFycywgaW50IHZhciwgcmVsYXhfc3Vic3RhdGVUIHN1YnR5cGUsIHN5bWJv
bFMgKiBzeW1ib2wsIG9mZnNldFQgb2Zmc2V0LCBjaGFyICpvcGNvZGUpOwojIDYyMiAiL3NyYy9i
aW51dGlscy0yLjEzL2dhcy9hcy5oIiAyCiMgMSAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9oYXNo
LmgiIDEKIyAyNCAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9oYXNoLmgiCnN0cnVjdCBoYXNoX2Nv
bnRyb2w7CgoKCmV4dGVybiBzdHJ1Y3QgaGFzaF9jb250cm9sICpoYXNoX25ldyAodm9pZCk7CgoK
CmV4dGVybiB2b2lkIGhhc2hfZGllIChzdHJ1Y3QgaGFzaF9jb250cm9sICopOwoKCgoKCgpleHRl
cm4gY29uc3QgY2hhciAqaGFzaF9pbnNlcnQgKHN0cnVjdCBoYXNoX2NvbnRyb2wgKiwgY29uc3Qg
Y2hhciAqa2V5LCB2b2lkICogdmFsdWUpOwoKCgoKCgpleHRlcm4gY29uc3QgY2hhciAqaGFzaF9q
YW0gKHN0cnVjdCBoYXNoX2NvbnRyb2wgKiwgY29uc3QgY2hhciAqa2V5LCB2b2lkICogdmFsdWUp
OwoKCgoKCgpleHRlcm4gdm9pZCAqIGhhc2hfcmVwbGFjZSAoc3RydWN0IGhhc2hfY29udHJvbCAq
LCBjb25zdCBjaGFyICprZXksIHZvaWQgKiB2YWx1ZSk7CgoKCgoKZXh0ZXJuIHZvaWQgKiBoYXNo
X2ZpbmQgKHN0cnVjdCBoYXNoX2NvbnRyb2wgKiwgY29uc3QgY2hhciAqa2V5KTsKCgoKCmV4dGVy
biB2b2lkICogaGFzaF9kZWxldGUgKHN0cnVjdCBoYXNoX2NvbnRyb2wgKiwgY29uc3QgY2hhciAq
a2V5KTsKCgoKCmV4dGVybiB2b2lkIGhhc2hfdHJhdmVyc2UgKHN0cnVjdCBoYXNoX2NvbnRyb2wg
Kiwgdm9pZCAoKnBmbikgKGNvbnN0IGNoYXIgKmtleSwgdm9pZCAqIHZhbHVlKSk7CgoKCgoKZXh0
ZXJuIHZvaWQgaGFzaF9wcmludF9zdGF0aXN0aWNzIChGSUxFICosIGNvbnN0IGNoYXIgKm5hbWUs
IHN0cnVjdCBoYXNoX2NvbnRyb2wgKik7CiMgNjIzICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2Fz
LmgiIDIKIyAxICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL3JlYWQuaCIgMQojIDIzICIvc3JjL2Jp
bnV0aWxzLTIuMTMvZ2FzL3JlYWQuaCIKZXh0ZXJuIGNoYXIgKmlucHV0X2xpbmVfcG9pbnRlcjsK
IyA1OCAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9yZWFkLmgiCmV4dGVybiBjaGFyIGxleF90eXBl
W107CmV4dGVybiBjaGFyIGlzX2VuZF9vZl9saW5lW107CgpleHRlcm4gaW50IGlzX2l0X2VuZF9v
Zl9zdGF0ZW1lbnQgKHZvaWQpOwoKZXh0ZXJuIGludCB0YXJnZXRfYmlnX2VuZGlhbjsKCgpleHRl
cm4gY29uc3QgY2hhciBjb21tZW50X2NoYXJzW107CmV4dGVybiBjb25zdCBjaGFyIGxpbmVfY29t
bWVudF9jaGFyc1tdOwpleHRlcm4gY29uc3QgY2hhciBsaW5lX3NlcGFyYXRvcl9jaGFyc1tdOwoK
CmV4dGVybiBjaGFyICoqaW5jbHVkZV9kaXJzOwpleHRlcm4gaW50IGluY2x1ZGVfZGlyX2NvdW50
OwpleHRlcm4gaW50IGluY2x1ZGVfZGlyX21heGxlbjsKCgpleHRlcm4gYWRkcmVzc1QgYWJzX3Nl
Y3Rpb25fb2Zmc2V0OwoKCmV4dGVybiBzeW1ib2xTICpsaW5lX2xhYmVsOwoKCmV4dGVybiBzeW1i
b2xTICptcmlfY29tbW9uX3N5bWJvbDsKCgpleHRlcm4gaW50IG91dHB1dHRpbmdfc3RhYnNfbGlu
ZV9kZWJ1ZzsKCgplbnVtIGxpbmtvbmNlX3R5cGUgewogIExJTktPTkNFX1VOU0VUID0gMCwKICBM
SU5LT05DRV9ESVNDQVJELAogIExJTktPTkNFX09ORV9PTkxZLAogIExJTktPTkNFX1NBTUVfU0la
RSwKICBMSU5LT05DRV9TQU1FX0NPTlRFTlRTCn07CgoKCmV4dGVybiBjaGFyIG9yaWdpbmFsX2Nh
c2Vfc3RyaW5nW107CgoKZXh0ZXJuIHZvaWQgcG9wX2luc2VydCAoY29uc3QgcHNldWRvX3R5cGVT
ICopOwpleHRlcm4gdW5zaWduZWQgaW50IGdldF9zdGFiX3N0cmluZ19vZmZzZXQKICAoY29uc3Qg
Y2hhciAqc3RyaW5nLCBjb25zdCBjaGFyICpzdGFic3RyX3NlY25hbWUpOwpleHRlcm4gdm9pZCBh
b3V0X3Byb2Nlc3Nfc3RhYiAoaW50LCBjb25zdCBjaGFyICosIGludCwgaW50LCBpbnQpOwpleHRl
cm4gY2hhciAqZGVtYW5kX2NvcHlfQ19zdHJpbmcgKGludCAqbGVuX3BvaW50ZXIpOwpleHRlcm4g
Y2hhciBnZXRfYWJzb2x1dGVfZXhwcmVzc2lvbl9hbmRfdGVybWluYXRvcgogIChsb25nICp2YWxf
cG9pbnRlcik7CmV4dGVybiBvZmZzZXRUIGdldF9hYnNvbHV0ZV9leHByZXNzaW9uICh2b2lkKTsK
ZXh0ZXJuIHVuc2lnbmVkIGludCBuZXh0X2NoYXJfb2Zfc3RyaW5nICh2b2lkKTsKZXh0ZXJuIHZv
aWQgc19tcmlfc2VjdCAoY2hhciAqKTsKZXh0ZXJuIGNoYXIgKm1yaV9jb21tZW50X2ZpZWxkIChj
aGFyICopOwpleHRlcm4gdm9pZCBtcmlfY29tbWVudF9lbmQgKGNoYXIgKiwgaW50KTsKZXh0ZXJu
IHZvaWQgYWRkX2luY2x1ZGVfZGlyIChjaGFyICpwYXRoKTsKZXh0ZXJuIHZvaWQgY29ucyAoaW50
IG5ieXRlcyk7CmV4dGVybiB2b2lkIGRlbWFuZF9lbXB0eV9yZXN0X29mX2xpbmUgKHZvaWQpOwpl
eHRlcm4gdm9pZCBlbWl0X2V4cHIgKGV4cHJlc3Npb25TICpleHAsIHVuc2lnbmVkIGludCBuYnl0
ZXMpOwpleHRlcm4gdm9pZCBlbWl0X2xlYjEyOF9leHByIChleHByZXNzaW9uUyAqLCBpbnQpOwpl
eHRlcm4gdm9pZCBlcXVhbHMgKGNoYXIgKnN5bV9uYW1lLCBpbnQgcmVhc3NpZ24pOwpleHRlcm4g
dm9pZCBmbG9hdF9jb25zIChpbnQgZmxvYXRfdHlwZSk7CmV4dGVybiB2b2lkIGlnbm9yZV9yZXN0
X29mX2xpbmUgKHZvaWQpOwpleHRlcm4gdm9pZCBkaXNjYXJkX3Jlc3Rfb2ZfbGluZSAodm9pZCk7
CmV4dGVybiBpbnQgb3V0cHV0X2xlYjEyOCAoY2hhciAqLCB2YWx1ZVQsIGludCBzaWduKTsKZXh0
ZXJuIHZvaWQgcHNldWRvX3NldCAoc3ltYm9sUyAqIHN5bWJvbFApOwpleHRlcm4gdm9pZCByZWFk
X2Ffc291cmNlX2ZpbGUgKGNoYXIgKm5hbWUpOwpleHRlcm4gdm9pZCByZWFkX2JlZ2luICh2b2lk
KTsKZXh0ZXJuIHZvaWQgcmVhZF9wcmludF9zdGF0aXN0aWNzIChGSUxFICopOwpleHRlcm4gaW50
IHNpemVvZl9sZWIxMjggKHZhbHVlVCwgaW50IHNpZ24pOwpleHRlcm4gdm9pZCBzdGFic19nZW5l
cmF0ZV9hc21fZmlsZSAodm9pZCk7CmV4dGVybiB2b2lkIHN0YWJzX2dlbmVyYXRlX2FzbV9saW5l
bm8gKHZvaWQpOwpleHRlcm4gdm9pZCBzdGFic19nZW5lcmF0ZV9hc21fZnVuYyAoY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBzdGFic19nZW5lcmF0ZV9hc21fZW5kZnVu
YyAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBkb19yZXBlYXQgKGlu
dCxjb25zdCBjaGFyICosY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgZW5kX3JlcGVhdCAoaW50
KTsKCmV4dGVybiB2b2lkIGdlbmVyYXRlX2xpbmVub19kZWJ1ZyAodm9pZCk7CgpleHRlcm4gdm9p
ZCBzX2Fib3J0IChpbnQpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKZXh0ZXJuIHZv
aWQgc19hbGlnbl9ieXRlcyAoaW50IGFyZyk7CmV4dGVybiB2b2lkIHNfYWxpZ25fcHR3byAoaW50
KTsKZXh0ZXJuIHZvaWQgc19hcHBfZmlsZV9zdHJpbmcgKGNoYXIgKik7CmV4dGVybiB2b2lkIHNf
YXBwX2ZpbGUgKGludCk7CmV4dGVybiB2b2lkIHNfYXBwX2xpbmUgKGludCk7CmV4dGVybiB2b2lk
IHNfYmFkX2VuZHIgKGludCk7CmV4dGVybiB2b2lkIHNfY29tbSAoaW50KTsKZXh0ZXJuIHZvaWQg
c19kYXRhIChpbnQpOwpleHRlcm4gdm9pZCBzX2Rlc2MgKGludCk7CmV4dGVybiB2b2lkIHNfZWxz
ZSAoaW50IGFyZyk7CmV4dGVybiB2b2lkIHNfZWxzZWlmIChpbnQgYXJnKTsKZXh0ZXJuIHZvaWQg
c19lbmQgKGludCBhcmcpOwpleHRlcm4gdm9pZCBzX2VuZGlmIChpbnQgYXJnKTsKZXh0ZXJuIHZv
aWQgc19lcnIgKGludCk7CmV4dGVybiB2b2lkIHNfZmFpbCAoaW50KTsKZXh0ZXJuIHZvaWQgc19m
aWxsIChpbnQpOwpleHRlcm4gdm9pZCBzX2Zsb2F0X3NwYWNlIChpbnQgbXVsdCk7CmV4dGVybiB2
b2lkIHNfZnVuYyAoaW50KTsKZXh0ZXJuIHZvaWQgZG9fc19mdW5jIChpbnQsIGNvbnN0IGNoYXIg
Kik7CmV4dGVybiB2b2lkIHNfZ2xvYmwgKGludCBhcmcpOwpleHRlcm4gdm9pZCBzX2lmIChpbnQg
YXJnKTsKZXh0ZXJuIHZvaWQgc19pZmMgKGludCBhcmcpOwpleHRlcm4gdm9pZCBzX2lmZGVmIChp
bnQgYXJnKTsKZXh0ZXJuIHZvaWQgc19pZmVxcyAoaW50IGFyZyk7CmV4dGVybiB2b2lkIHNfaWdu
b3JlIChpbnQgYXJnKTsKZXh0ZXJuIHZvaWQgc19pbmNsdWRlIChpbnQgYXJnKTsKZXh0ZXJuIHZv
aWQgc19pcnAgKGludCBhcmcpOwpleHRlcm4gdm9pZCBzX2xjb21tIChpbnQgbmVlZHNfYWxpZ24p
OwpleHRlcm4gdm9pZCBzX2xjb21tX2J5dGVzIChpbnQgbmVlZHNfYWxpZ24pOwpleHRlcm4gdm9p
ZCBzX2xlYjEyOCAoaW50IHNpZ24pOwpleHRlcm4gdm9pZCBzX2xpbmtvbmNlIChpbnQpOwpleHRl
cm4gdm9pZCBzX2xzeW0gKGludCk7CmV4dGVybiB2b2lkIHNfbWFjcm8gKGludCk7CmV4dGVybiB2
b2lkIHNfbWV4aXQgKGludCk7CmV4dGVybiB2b2lkIHNfbXJpIChpbnQpOwpleHRlcm4gdm9pZCBz
X21yaV9jb21tb24gKGludCk7CmV4dGVybiB2b2lkIHNfb3JnIChpbnQpOwpleHRlcm4gdm9pZCBz
X3ByaW50IChpbnQpOwpleHRlcm4gdm9pZCBzX3B1cmdlbSAoaW50KTsKZXh0ZXJuIHZvaWQgc19y
ZXB0IChpbnQpOwpleHRlcm4gdm9pZCBzX3NldCAoaW50KTsKZXh0ZXJuIHZvaWQgc19zcGFjZSAo
aW50IG11bHQpOwpleHRlcm4gdm9pZCBzX3N0YWIgKGludCB3aGF0KTsKZXh0ZXJuIHZvaWQgc19z
dHJ1Y3QgKGludCk7CmV4dGVybiB2b2lkIHNfdGV4dCAoaW50KTsKZXh0ZXJuIHZvaWQgc3RyaW5n
ZXIgKGludCBhcHBlbmRfemVybyk7CmV4dGVybiB2b2lkIHNfeHN0YWIgKGludCB3aGF0KTsKZXh0
ZXJuIHZvaWQgc19ydmEgKGludCk7CmV4dGVybiB2b2lkIHNfaW5jYmluIChpbnQpOwojIDYyNCAi
L3NyYy9iaW51dGlscy0yLjEzL2dhcy9hcy5oIiAyCiMgMSAiL3NyYy9iaW51dGlscy0yLjEzL2dh
cy9zeW1ib2xzLmgiIDEKIyAzNCAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9zeW1ib2xzLmgiCmV4
dGVybiBzdHJ1Y3Qgb2JzdGFjayBub3RlczsKCmV4dGVybiBzdHJ1Y3Qgb2JzdGFjayBjb25kX29i
c3RhY2s7CgoKZXh0ZXJuIHN5bWJvbFMgKnN5bWJvbF9yb290UDsKZXh0ZXJuIHN5bWJvbFMgKnN5
bWJvbF9sYXN0UDsKCmV4dGVybiBzeW1ib2xTIGFic19zeW1ib2w7CgpleHRlcm4gaW50IHN5bWJv
bF90YWJsZV9mcm96ZW47CgoKCmV4dGVybiBpbnQgc3ltYm9sc19jYXNlX3NlbnNpdGl2ZTsKCmNo
YXIgKmRlY29kZV9sb2NhbF9sYWJlbF9uYW1lIChjaGFyICpzKTsKc3ltYm9sUyAqc3ltYm9sX2Zp
bmQgKGNvbnN0IGNoYXIgKm5hbWUpOwpzeW1ib2xTICpzeW1ib2xfZmluZF9leGFjdCAoY29uc3Qg
Y2hhciAqbmFtZSk7CnN5bWJvbFMgKnN5bWJvbF9maW5kX2Jhc2UgKGNvbnN0IGNoYXIgKm5hbWUs
IGludCBzdHJpcF91bmRlcnNjb3JlKTsKc3ltYm9sUyAqc3ltYm9sX2ZpbmRfb3JfbWFrZSAoY29u
c3QgY2hhciAqbmFtZSk7CnN5bWJvbFMgKnN5bWJvbF9tYWtlIChjb25zdCBjaGFyICpuYW1lKTsK
c3ltYm9sUyAqc3ltYm9sX25ldyAoY29uc3QgY2hhciAqbmFtZSwgc2VnVCBzZWdtZW50LCB2YWx1
ZVQgdmFsdWUsIGZyYWdTICogZnJhZyk7CgpzeW1ib2xTICpzeW1ib2xfY3JlYXRlIChjb25zdCBj
aGFyICpuYW1lLCBzZWdUIHNlZ21lbnQsIHZhbHVlVCB2YWx1ZSwgZnJhZ1MgKiBmcmFnKTsKCnN5
bWJvbFMgKmNvbG9uIChjb25zdCBjaGFyICpzeW1fbmFtZSk7CnZvaWQgbG9jYWxfY29sb24gKGlu
dCBuKTsKdm9pZCBzeW1ib2xfYmVnaW4gKHZvaWQpOwp2b2lkIHN5bWJvbF9wcmludF9zdGF0aXN0
aWNzIChGSUxFICopOwp2b2lkIHN5bWJvbF90YWJsZV9pbnNlcnQgKHN5bWJvbFMgKiBzeW1ib2xQ
KTsKdmFsdWVUIHJlc29sdmVfc3ltYm9sX3ZhbHVlIChzeW1ib2xTICopOwp2b2lkIHJlc29sdmVf
bG9jYWxfc3ltYm9sX3ZhbHVlcyAodm9pZCk7Cgp2b2lkIHByaW50X3N5bWJvbF92YWx1ZSAoc3lt
Ym9sUyAqKTsKdm9pZCBwcmludF9leHByIChleHByZXNzaW9uUyAqKTsKdm9pZCBwcmludF9leHBy
XzEgKEZJTEUgKiwgZXhwcmVzc2lvblMgKik7CnZvaWQgcHJpbnRfc3ltYm9sX3ZhbHVlXzEgKEZJ
TEUgKiwgc3ltYm9sUyAqKTsKCmludCBkb2xsYXJfbGFiZWxfZGVmaW5lZCAobG9uZyBsKTsKdm9p
ZCBkb2xsYXJfbGFiZWxfY2xlYXIgKHZvaWQpOwp2b2lkIGRlZmluZV9kb2xsYXJfbGFiZWwgKGxv
bmcgbCk7CmNoYXIgKmRvbGxhcl9sYWJlbF9uYW1lIChsb25nIGwsIGludCBhdWdlbmQpOwoKdm9p
ZCBmYl9sYWJlbF9pbnN0YW5jZV9pbmMgKGxvbmcgbGFiZWwpOwpjaGFyICpmYl9sYWJlbF9uYW1l
IChsb25nIG4sIGxvbmcgYXVnZW5kKTsKCmV4dGVybiB2b2lkIGNvcHlfc3ltYm9sX2F0dHJpYnV0
ZXMgKHN5bWJvbFMgKiwgc3ltYm9sUyAqKTsKCgpleHRlcm4gdmFsdWVUIFNfR0VUX1ZBTFVFIChz
eW1ib2xTICopOwpleHRlcm4gdm9pZCBTX1NFVF9WQUxVRSAoc3ltYm9sUyAqLCB2YWx1ZVQpOwoK
CmV4dGVybiBpbnQgU19JU19GVU5DVElPTiAoc3ltYm9sUyAqKTsKZXh0ZXJuIGludCBTX0lTX0VY
VEVSTkFMIChzeW1ib2xTICopOwpleHRlcm4gaW50IFNfSVNfV0VBSyAoc3ltYm9sUyAqKTsKZXh0
ZXJuIGludCBTX0lTX0NPTU1PTiAoc3ltYm9sUyAqKTsKZXh0ZXJuIGludCBTX0lTX0RFRklORUQg
KHN5bWJvbFMgKik7CmV4dGVybiBpbnQgU19JU19ERUJVRyAoc3ltYm9sUyAqKTsKZXh0ZXJuIGlu
dCBTX0lTX0xPQ0FMIChzeW1ib2xTICopOwpleHRlcm4gaW50IFNfSVNfRVhURVJOIChzeW1ib2xT
ICopOwpleHRlcm4gaW50IFNfSVNfU1RBQkQgKHN5bWJvbFMgKik7CmV4dGVybiBjb25zdCBjaGFy
ICpTX0dFVF9OQU1FIChzeW1ib2xTICopOwpleHRlcm4gc2VnVCBTX0dFVF9TRUdNRU5UIChzeW1i
b2xTICopOwpleHRlcm4gdm9pZCBTX1NFVF9TRUdNRU5UIChzeW1ib2xTICosIHNlZ1QpOwpleHRl
cm4gdm9pZCBTX1NFVF9FWFRFUk5BTCAoc3ltYm9sUyAqKTsKZXh0ZXJuIHZvaWQgU19TRVRfTkFN
RSAoc3ltYm9sUyAqLCBjaGFyICopOwpleHRlcm4gdm9pZCBTX0NMRUFSX0VYVEVSTkFMIChzeW1i
b2xTICopOwpleHRlcm4gdm9pZCBTX1NFVF9XRUFLIChzeW1ib2xTICopOwojIDE0MCAiL3NyYy9i
aW51dGlscy0yLjEzL2dhcy9zeW1ib2xzLmgiCmV4dGVybiBjb25zdCBzZWdUIE5fVFlQRV9zZWdb
XTsKCgpleHRlcm4gY29uc3Qgc2hvcnQgc2VnX05fVFlQRVtdOwoKCgp2b2lkIHN5bWJvbF9jbGVh
cl9saXN0X3BvaW50ZXJzIChzeW1ib2xTICogc3ltYm9sUCk7CgoKCnZvaWQgc3ltYm9sX2luc2Vy
dCAoc3ltYm9sUyAqIGFkZG1lLCBzeW1ib2xTICogdGFyZ2V0LCBzeW1ib2xTICoqIHJvb3RQLCBz
eW1ib2xTICoqIGxhc3RQKTsKCnZvaWQgc3ltYm9sX3JlbW92ZSAoc3ltYm9sUyAqIHN5bWJvbFAs
IHN5bWJvbFMgKiogcm9vdFAsIHN5bWJvbFMgKiogbGFzdFApOwoKCmV4dGVybiBzeW1ib2xTICpz
eW1ib2xfcHJldmlvdXMgKHN5bWJvbFMgKik7CgoKCnZvaWQgdmVyaWZ5X3N5bWJvbF9jaGFpbiAo
c3ltYm9sUyAqIHJvb3RQLCBzeW1ib2xTICogbGFzdFApOwp2b2lkIHZlcmlmeV9zeW1ib2xfY2hh
aW5fMiAoc3ltYm9sUyAqIHN5bVApOwoKdm9pZCBzeW1ib2xfYXBwZW5kIChzeW1ib2xTICogYWRk
bWUsIHN5bWJvbFMgKiB0YXJnZXQsIHN5bWJvbFMgKiogcm9vdFAsIHN5bWJvbFMgKiogbGFzdFAp
OwoKCmV4dGVybiBzeW1ib2xTICpzeW1ib2xfbmV4dCAoc3ltYm9sUyAqKTsKCmV4dGVybiBleHBy
ZXNzaW9uUyAqc3ltYm9sX2dldF92YWx1ZV9leHByZXNzaW9uIChzeW1ib2xTICopOwpleHRlcm4g
dm9pZCBzeW1ib2xfc2V0X3ZhbHVlX2V4cHJlc3Npb24gKHN5bWJvbFMgKiwgY29uc3QgZXhwcmVz
c2lvblMgKik7CgpleHRlcm4gdm9pZCBzeW1ib2xfc2V0X2ZyYWcgKHN5bWJvbFMgKiwgZnJhZ1Mg
Kik7CmV4dGVybiBmcmFnUyAqc3ltYm9sX2dldF9mcmFnIChzeW1ib2xTICopOwpleHRlcm4gdm9p
ZCBzeW1ib2xfbWFya191c2VkIChzeW1ib2xTICopOwpleHRlcm4gdm9pZCBzeW1ib2xfY2xlYXJf
dXNlZCAoc3ltYm9sUyAqKTsKZXh0ZXJuIGludCBzeW1ib2xfdXNlZF9wIChzeW1ib2xTICopOwpl
eHRlcm4gdm9pZCBzeW1ib2xfbWFya191c2VkX2luX3JlbG9jIChzeW1ib2xTICopOwpleHRlcm4g
dm9pZCBzeW1ib2xfY2xlYXJfdXNlZF9pbl9yZWxvYyAoc3ltYm9sUyAqKTsKZXh0ZXJuIGludCBz
eW1ib2xfdXNlZF9pbl9yZWxvY19wIChzeW1ib2xTICopOwpleHRlcm4gdm9pZCBzeW1ib2xfbWFy
a19tcmlfY29tbW9uIChzeW1ib2xTICopOwpleHRlcm4gdm9pZCBzeW1ib2xfY2xlYXJfbXJpX2Nv
bW1vbiAoc3ltYm9sUyAqKTsKZXh0ZXJuIGludCBzeW1ib2xfbXJpX2NvbW1vbl9wIChzeW1ib2xT
ICopOwpleHRlcm4gdm9pZCBzeW1ib2xfbWFya193cml0dGVuIChzeW1ib2xTICopOwpleHRlcm4g
dm9pZCBzeW1ib2xfY2xlYXJfd3JpdHRlbiAoc3ltYm9sUyAqKTsKZXh0ZXJuIGludCBzeW1ib2xf
d3JpdHRlbl9wIChzeW1ib2xTICopOwpleHRlcm4gdm9pZCBzeW1ib2xfbWFya19yZXNvbHZlZCAo
c3ltYm9sUyAqKTsKZXh0ZXJuIGludCBzeW1ib2xfcmVzb2x2ZWRfcCAoc3ltYm9sUyAqKTsKZXh0
ZXJuIGludCBzeW1ib2xfc2VjdGlvbl9wIChzeW1ib2xTICopOwpleHRlcm4gaW50IHN5bWJvbF9l
cXVhdGVkX3AgKHN5bWJvbFMgKik7CmV4dGVybiBpbnQgc3ltYm9sX2VxdWF0ZWRfcmVsb2NfcCAo
c3ltYm9sUyAqKTsKZXh0ZXJuIGludCBzeW1ib2xfY29uc3RhbnRfcCAoc3ltYm9sUyAqKTsKCgpl
eHRlcm4gYXN5bWJvbCAqc3ltYm9sX2dldF9iZmRzeW0gKHN5bWJvbFMgKik7CmV4dGVybiB2b2lk
IHN5bWJvbF9zZXRfYmZkc3ltIChzeW1ib2xTICosIGFzeW1ib2wgKik7CgoKCnN0cnVjdCBlbGZf
b2JqX3N5ICpzeW1ib2xfZ2V0X29iaiAoc3ltYm9sUyAqKTsKdm9pZCBzeW1ib2xfc2V0X29iaiAo
c3ltYm9sUyAqLCBzdHJ1Y3QgZWxmX29ial9zeSAqKTsKIyA2MjUgIi9zcmMvYmludXRpbHMtMi4x
My9nYXMvYXMuaCIgMgoKIyAxICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL3RjLmgiIDEKIyAyNSAi
L3NyYy9iaW51dGlscy0yLjEzL2dhcy90Yy5oIgpleHRlcm4gY29uc3QgcHNldWRvX3R5cGVTIG1k
X3BzZXVkb190YWJsZVtdOwoKCgoKc3RydWN0IHJlbGF4X3R5cGUKewoKICBsb25nIHJseF9mb3J3
YXJkOwoKICBsb25nIHJseF9iYWNrd2FyZDsKCgogIHVuc2lnbmVkIGNoYXIgcmx4X2xlbmd0aDsK
CgogIHJlbGF4X3N1YnN0YXRlVCBybHhfbW9yZTsKfTsKCnR5cGVkZWYgc3RydWN0IHJlbGF4X3R5
cGUgcmVsYXhfdHlwZVM7CgpleHRlcm4gY29uc3QgaW50IG1kX3JlbG9jX3NpemU7CgpjaGFyICpt
ZF9hdG9mIChpbnQgd2hhdF9zdGF0ZW1lbnRfdHlwZSwgY2hhciAqbGl0ZXJhbFAsIGludCAqc2l6
ZVApOwoKaW50IG1kX2VzdGltYXRlX3NpemVfYmVmb3JlX3JlbGF4IChmcmFnUyAqIGZyYWdQLCBz
ZWdUIHNlZ21lbnQpOwoKaW50IG1kX3BhcnNlX29wdGlvbiAoaW50IGMsIGNoYXIgKmFyZyk7CnZv
aWQgbWRfc2hvd191c2FnZSAoRklMRSAqKTsKbG9uZyBtZF9wY3JlbF9mcm9tIChmaXhTICogZml4
UCk7CnNob3J0IHRjX2NvZmZfZml4MnJ0eXBlIChmaXhTICogZml4UCk7CnZvaWQgbWRfYXNzZW1i
bGUgKGNoYXIgKnN0cik7CnZvaWQgbWRfYmVnaW4gKHZvaWQpOwoKdm9pZCBtZF9jcmVhdGVfbG9u
Z19qdW1wIChjaGFyICpwdHIsIGFkZHJlc3NUIGZyb21fYWRkciwgYWRkcmVzc1QgdG9fYWRkciwg
ZnJhZ1MgKiBmcmFnLCBzeW1ib2xTICogdG9fc3ltYm9sKTsKCgoKCnZvaWQgbWRfY3JlYXRlX3No
b3J0X2p1bXAgKGNoYXIgKnB0ciwgYWRkcmVzc1QgZnJvbV9hZGRyLCBhZGRyZXNzVCB0b19hZGRy
LCBmcmFnUyAqIGZyYWcsIHN5bWJvbFMgKiB0b19zeW1ib2wpOwoKCgp2b2lkIG1kX251bWJlcl90
b19jaGFycyAoY2hhciAqYnVmLCB2YWx1ZVQgdmFsLCBpbnQgbik7CgoKCgoKdm9pZCBtZF9hcHBs
eV9maXgzIChmaXhTICosIHZhbHVlVCAqLCBzZWdUKTsKCgoKdm9pZCBtZF9jb252ZXJ0X2ZyYWcg
KGJmZCAqIGhlYWRlcnMsIHNlZ1Qgc2VjLCBmcmFnUyAqIGZyYWdQKTsKCgp2b2lkIHRjX2hlYWRl
cnNfaG9vayAoc2VnVCAqLCBmaXhTICopOwoKCmV4dGVybiBhcmVsZW50ICp0Y19nZW5fcmVsb2Mg
KGFzZWN0aW9uICosIGZpeFMgKik7CiMgMTAzICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL3RjLmgi
CnZhbHVlVCBtZF9zZWN0aW9uX2FsaWduIChzZWdUIHNlZywgdmFsdWVUIHNpemUpOwoKCgpzeW1i
b2xTICptZF91bmRlZmluZWRfc3ltYm9sIChjaGFyICpuYW1lKTsKIyA2MjcgIi9zcmMvYmludXRp
bHMtMi4xMy9nYXMvYXMuaCIgMgojIDEgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvb2JqLmgiIDEK
IyAyNCAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9vYmouaCIKY2hhciAqb2JqX2RlZmF1bHRfb3V0
cHV0X2ZpbGVfbmFtZSAodm9pZCk7CnZvaWQgb2JqX2VtaXRfcmVsb2NhdGlvbnMgKGNoYXIgKip3
aGVyZSwgZml4UyAqIGZpeFAsIHJlbGF4X2FkZHJlc3NUIHNlZ21lbnRfYWRkcmVzc19pbl9maWxl
KTsKCnZvaWQgb2JqX2VtaXRfc3RyaW5ncyAoY2hhciAqKndoZXJlKTsKdm9pZCBvYmpfZW1pdF9z
eW1ib2xzIChjaGFyICoqd2hlcmUsIHN5bWJvbFMgKiBzeW1ib2xzKTsKIyA0NCAiL3NyYy9iaW51
dGlscy0yLjEzL2dhcy9vYmouaCIKdm9pZCBvYmpfc3ltYm9sX3RvX2NoYXJzIChjaGFyICoqd2hl
cmUsIHN5bWJvbFMgKiBzeW1ib2xQKTsKCmV4dGVybiBjb25zdCBwc2V1ZG9fdHlwZVMgb2JqX3Bz
ZXVkb190YWJsZVtdOwoKCnN0cnVjdCBmb3JtYXRfb3BzIHsKICBpbnQgZmxhdm9yOwogIHVuc2ln
bmVkIGRmbF9sZWFkaW5nX3VuZGVyc2NvcmUgOiAxOwogIHVuc2lnbmVkIGVtaXRfc2VjdGlvbl9z
eW1ib2xzIDogMTsKICB2b2lkICgqYmVnaW4pICh2b2lkKTsKICB2b2lkICgqYXBwX2ZpbGUpIChj
b25zdCBjaGFyICopOwogIHZvaWQgKCpmcm9iX3N5bWJvbCkgKHN5bWJvbFMgKiwgaW50ICopOwog
IHZvaWQgKCpmcm9iX2ZpbGUpICh2b2lkKTsKICB2b2lkICgqZnJvYl9maWxlX2JlZm9yZV9hZGp1
c3QpICh2b2lkKTsKICB2b2lkICgqZnJvYl9maWxlX2FmdGVyX3JlbG9jcykgKHZvaWQpOwogIGJm
ZF92bWEgKCpzX2dldF9zaXplKSAoc3ltYm9sUyAqKTsKICB2b2lkICgqc19zZXRfc2l6ZSkgKHN5
bWJvbFMgKiwgYmZkX3ZtYSk7CiAgYmZkX3ZtYSAoKnNfZ2V0X2FsaWduKSAoc3ltYm9sUyAqKTsK
ICB2b2lkICgqc19zZXRfYWxpZ24pIChzeW1ib2xTICosIGJmZF92bWEpOwogIGludCAoKnNfZ2V0
X290aGVyKSAoc3ltYm9sUyAqKTsKICB2b2lkICgqc19zZXRfb3RoZXIpIChzeW1ib2xTICosIGlu
dCk7CiAgaW50ICgqc19nZXRfZGVzYykgKHN5bWJvbFMgKik7CiAgdm9pZCAoKnNfc2V0X2Rlc2Mp
IChzeW1ib2xTICosIGludCk7CiAgaW50ICgqc19nZXRfdHlwZSkgKHN5bWJvbFMgKik7CiAgdm9p
ZCAoKnNfc2V0X3R5cGUpIChzeW1ib2xTICosIGludCk7CiAgdm9pZCAoKmNvcHlfc3ltYm9sX2F0
dHJpYnV0ZXMpIChzeW1ib2xTICosIHN5bWJvbFMgKik7CiAgdm9pZCAoKmdlbmVyYXRlX2FzbV9s
aW5lbm8pICh2b2lkKTsKICB2b2lkICgqcHJvY2Vzc19zdGFiKSAoc2VnVCwgaW50LCBjb25zdCBj
aGFyICosIGludCwgaW50LCBpbnQpOwogIGludCAoKnNlcGFyYXRlX3N0YWJfc2VjdGlvbnMpICh2
b2lkKTsKICB2b2lkICgqaW5pdF9zdGFiX3NlY3Rpb24pIChzZWdUKTsKICBpbnQgKCpzZWNfc3lt
X29rX2Zvcl9yZWxvYykgKGFzZWN0aW9uICopOwogIHZvaWQgKCpwb3BfaW5zZXJ0KSAodm9pZCk7
CgogIHZvaWQgKCplY29mZl9zZXRfZXh0KSAoc3ltYm9sUyAqLCBzdHJ1Y3QgZWNvZmZfZXh0ciAq
KTsKCiAgdm9pZCAoKnJlYWRfYmVnaW5faG9vaykgKHZvaWQpOwogIHZvaWQgKCpzeW1ib2xfbmV3
X2hvb2spIChzeW1ib2xTICopOwp9OwoKZXh0ZXJuIGNvbnN0IHN0cnVjdCBmb3JtYXRfb3BzIGVs
Zl9mb3JtYXRfb3BzOwpleHRlcm4gY29uc3Qgc3RydWN0IGZvcm1hdF9vcHMgZWNvZmZfZm9ybWF0
X29wczsKZXh0ZXJuIGNvbnN0IHN0cnVjdCBmb3JtYXRfb3BzIGNvZmZfZm9ybWF0X29wczsKZXh0
ZXJuIGNvbnN0IHN0cnVjdCBmb3JtYXRfb3BzIGFvdXRfZm9ybWF0X29wczsKCgpleHRlcm4gY29u
c3Qgc3RydWN0IGZvcm1hdF9vcHMgKnRoaXNfZm9ybWF0OwojIDYyOCAiL3NyYy9iaW51dGlscy0y
LjEzL2dhcy9hcy5oIiAyCgoKCgojIDEgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvbGlzdGluZy5o
IiAxCiMgNDQgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvbGlzdGluZy5oIgp2b2lkIGxpc3Rpbmdf
ZWplY3QgKGludCk7CnZvaWQgbGlzdGluZ19lcnJvciAoY29uc3QgY2hhciAqbWVzc2FnZSk7CnZv
aWQgbGlzdGluZ19maWxlIChjb25zdCBjaGFyICpuYW1lKTsKdm9pZCBsaXN0aW5nX2ZsYWdzIChp
bnQpOwp2b2lkIGxpc3RpbmdfbGlzdCAoaW50IG9uKTsKdm9pZCBsaXN0aW5nX25ld2xpbmUgKGNo
YXIgKnBzKTsKdm9pZCBsaXN0aW5nX3ByZXZfbGluZSAodm9pZCk7CnZvaWQgbGlzdGluZ19wcmlu
dCAoY2hhciAqbmFtZSk7CnZvaWQgbGlzdGluZ19wc2l6ZSAoaW50KTsKdm9pZCBsaXN0aW5nX25v
cGFnZSAoaW50KTsKdm9pZCBsaXN0aW5nX3NvdXJjZV9maWxlIChjb25zdCBjaGFyICopOwp2b2lk
IGxpc3Rpbmdfc291cmNlX2xpbmUgKHVuc2lnbmVkIGludCk7CnZvaWQgbGlzdGluZ190aXRsZSAo
aW50IGRlcHRoKTsKdm9pZCBsaXN0aW5nX3dhcm5pbmcgKGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwp2
b2lkIGxpc3Rpbmdfd2lkdGggKHVuc2lnbmVkIGludCB4KTsKCmV4dGVybiBpbnQgbGlzdGluZ19s
aHNfd2lkdGg7CmV4dGVybiBpbnQgbGlzdGluZ19saHNfd2lkdGhfc2Vjb25kOwpleHRlcm4gaW50
IGxpc3RpbmdfbGhzX2NvbnRfbGluZXM7CmV4dGVybiBpbnQgbGlzdGluZ19yaHNfd2lkdGg7CiMg
NjMzICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2FzLmgiIDIKIyAyNSAiL3NyYy9iaW51dGlscy0y
LjEzL2dhcy9jb25maWcvdGMtcHBjLmMiIDIKIyAxICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVk
ZS9zYWZlLWN0eXBlLmgiIDEKIyA0NCAiL3NyYy9iaW51dGlscy0yLjEzL2luY2x1ZGUvc2FmZS1j
dHlwZS5oIgplbnVtIHsKCiAgX3NjaF9pc2JsYW5rID0gMHgwMDAxLAogIF9zY2hfaXNjbnRybCA9
IDB4MDAwMiwKICBfc2NoX2lzZGlnaXQgPSAweDAwMDQsCiAgX3NjaF9pc2xvd2VyID0gMHgwMDA4
LAogIF9zY2hfaXNwcmludCA9IDB4MDAxMCwKICBfc2NoX2lzcHVuY3QgPSAweDAwMjAsCiAgX3Nj
aF9pc3NwYWNlID0gMHgwMDQwLAogIF9zY2hfaXN1cHBlciA9IDB4MDA4MCwKICBfc2NoX2lzeGRp
Z2l0ID0gMHgwMTAwLAoKCiAgX3NjaF9pc2lkc3QgPSAweDAyMDAsCiAgX3NjaF9pc3ZzcCA9IDB4
MDQwMCwKICBfc2NoX2lzbnZzcCA9IDB4MDgwMCwKCgogIF9zY2hfaXNhbHBoYSA9IF9zY2hfaXN1
cHBlcnxfc2NoX2lzbG93ZXIsCiAgX3NjaF9pc2FsbnVtID0gX3NjaF9pc2FscGhhfF9zY2hfaXNk
aWdpdCwKICBfc2NoX2lzaWRudW0gPSBfc2NoX2lzaWRzdHxfc2NoX2lzZGlnaXQsCiAgX3NjaF9p
c2dyYXBoID0gX3NjaF9pc2FsbnVtfF9zY2hfaXNwdW5jdCwKICBfc2NoX2lzY3Bwc3AgPSBfc2No
X2lzdnNwfF9zY2hfaXNudnNwLAogIF9zY2hfaXNiYXNpYyA9IF9zY2hfaXNwcmludHxfc2NoX2lz
Y3Bwc3AKCn07CgoKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIHNob3J0IF9zY2hfaXN0YWJsZVsyNTZd
OwojIDk3ICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9zYWZlLWN0eXBlLmgiCmV4dGVybiBj
b25zdCB1bnNpZ25lZCBjaGFyIF9zY2hfdG91cHBlclsyNTZdOwpleHRlcm4gY29uc3QgdW5zaWdu
ZWQgY2hhciBfc2NoX3RvbG93ZXJbMjU2XTsKIyAyNiAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9j
b25maWcvdGMtcHBjLmMiIDIKIyAxICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL3N1YnNlZ3MuaCIg
MQojIDQxICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL3N1YnNlZ3MuaCIKIyAxICIvc3JjL2JpbnV0
aWxzLTIuMTMvaW5jbHVkZS9vYnN0YWNrLmgiIDEKIyAxNjEgIi9zcmMvYmludXRpbHMtMi4xMy9p
bmNsdWRlL29ic3RhY2suaCIKc3RydWN0IF9vYnN0YWNrX2NodW5rCnsKICBjaGFyICpsaW1pdDsK
ICBzdHJ1Y3QgX29ic3RhY2tfY2h1bmsgKnByZXY7CiAgY2hhciBjb250ZW50c1s0XTsKfTsKCnN0
cnVjdCBvYnN0YWNrCnsKICBsb25nIGNodW5rX3NpemU7CiAgc3RydWN0IF9vYnN0YWNrX2NodW5r
ICpjaHVuazsKICBjaGFyICpvYmplY3RfYmFzZTsKICBjaGFyICpuZXh0X2ZyZWU7CiAgY2hhciAq
Y2h1bmtfbGltaXQ7CiAgaW50IHRlbXA7CiAgaW50IGFsaWdubWVudF9tYXNrOwoKCgoKICBzdHJ1
Y3QgX29ic3RhY2tfY2h1bmsgKigqY2h1bmtmdW4pICh2b2lkICosIGxvbmcpOwogIHZvaWQgKCpm
cmVlZnVuKSAodm9pZCAqLCBzdHJ1Y3QgX29ic3RhY2tfY2h1bmsgKik7CiAgdm9pZCAqZXh0cmFf
YXJnOwoKCgoKCiAgdW5zaWduZWQgdXNlX2V4dHJhX2FyZzoxOwogIHVuc2lnbmVkIG1heWJlX2Vt
cHR5X29iamVjdDoxOwoKCgogIHVuc2lnbmVkIGFsbG9jX2ZhaWxlZDoxOwoKCn07CgoKCgpleHRl
cm4gdm9pZCBfb2JzdGFja19uZXdjaHVuayAoc3RydWN0IG9ic3RhY2sgKiwgaW50KTsKZXh0ZXJu
IHZvaWQgX29ic3RhY2tfZnJlZSAoc3RydWN0IG9ic3RhY2sgKiwgdm9pZCAqKTsKZXh0ZXJuIGlu
dCBfb2JzdGFja19iZWdpbiAoc3RydWN0IG9ic3RhY2sgKiwgaW50LCBpbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2b2lkICooKikgKGxvbmcpLCB2b2lkICgqKSAodm9pZCAqKSk7CmV4
dGVybiBpbnQgX29ic3RhY2tfYmVnaW5fMSAoc3RydWN0IG9ic3RhY2sgKiwgaW50LCBpbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKCopICh2b2lkICosIGxvbmcpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCopICh2b2lkICosIHZvaWQgKiksIHZvaWQg
Kik7CmV4dGVybiBpbnQgX29ic3RhY2tfbWVtb3J5X3VzZWQgKHN0cnVjdCBvYnN0YWNrICopOwoj
IDIyMyAiL3NyYy9iaW51dGlscy0yLjEzL2luY2x1ZGUvb2JzdGFjay5oIgp2b2lkIG9ic3RhY2tf
aW5pdCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwoKdm9pZCAqIG9ic3RhY2tfYWxsb2MgKHN0
cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBpbnQgc2l6ZSk7Cgp2b2lkICogb2JzdGFja19jb3B5IChz
dHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgdm9pZCAqYWRkcmVzcywgaW50IHNpemUpOwp2b2lkICog
b2JzdGFja19jb3B5MCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHZvaWQgKmFkZHJlc3MsIGlu
dCBzaXplKTsKCnZvaWQgb2JzdGFja19mcmVlIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgdm9p
ZCAqYmxvY2spOwoKdm9pZCBvYnN0YWNrX2JsYW5rIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywg
aW50IHNpemUpOwoKdm9pZCBvYnN0YWNrX2dyb3cgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCB2
b2lkICpkYXRhLCBpbnQgc2l6ZSk7CnZvaWQgb2JzdGFja19ncm93MCAoc3RydWN0IG9ic3RhY2sg
Km9ic3RhY2ssIHZvaWQgKmRhdGEsIGludCBzaXplKTsKCnZvaWQgb2JzdGFja18xZ3JvdyAoc3Ry
dWN0IG9ic3RhY2sgKm9ic3RhY2ssIGludCBkYXRhX2NoYXIpOwp2b2lkIG9ic3RhY2tfcHRyX2dy
b3cgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCB2b2lkICpkYXRhKTsKdm9pZCBvYnN0YWNrX2lu
dF9ncm93IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgaW50IGRhdGEpOwoKdm9pZCAqIG9ic3Rh
Y2tfZmluaXNoIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayk7CgppbnQgb2JzdGFja19vYmplY3Rf
c2l6ZSAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwoKaW50IG9ic3RhY2tfcm9vbSAoc3RydWN0
IG9ic3RhY2sgKm9ic3RhY2spOwp2b2lkIG9ic3RhY2tfbWFrZV9yb29tIChzdHJ1Y3Qgb2JzdGFj
ayAqb2JzdGFjaywgaW50IHNpemUpOwp2b2lkIG9ic3RhY2tfMWdyb3dfZmFzdCAoc3RydWN0IG9i
c3RhY2sgKm9ic3RhY2ssIGludCBkYXRhX2NoYXIpOwp2b2lkIG9ic3RhY2tfcHRyX2dyb3dfZmFz
dCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHZvaWQgKmRhdGEpOwp2b2lkIG9ic3RhY2tfaW50
X2dyb3dfZmFzdCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIGludCBkYXRhKTsKdm9pZCBvYnN0
YWNrX2JsYW5rX2Zhc3QgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBpbnQgc2l6ZSk7Cgp2b2lk
ICogb2JzdGFja19iYXNlIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayk7CnZvaWQgKiBvYnN0YWNr
X25leHRfZnJlZSAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwppbnQgb2JzdGFja19hbGlnbm1l
bnRfbWFzayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwppbnQgb2JzdGFja19jaHVua19zaXpl
IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayk7CmludCBvYnN0YWNrX21lbW9yeV91c2VkIChzdHJ1
Y3Qgb2JzdGFjayAqb2JzdGFjayk7CiMgMjY3ICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9v
YnN0YWNrLmgiCmV4dGVybiB2b2lkICgqb2JzdGFja19hbGxvY19mYWlsZWRfaGFuZGxlcikgKHZv
aWQpOwoKCgoKCmV4dGVybiBpbnQgb2JzdGFja19leGl0X2ZhaWx1cmU7CiMgNDIgIi9zcmMvYmlu
dXRpbHMtMi4xMy9nYXMvc3Vic2Vncy5oIiAyCgpzdHJ1Y3QgZnJjaGFpbgp7CiAgc3RydWN0IGZy
YWcgKmZyY2hfcm9vdDsKICBzdHJ1Y3QgZnJhZyAqZnJjaF9sYXN0OwogIHN0cnVjdCBmcmNoYWlu
ICpmcmNoX25leHQ7CiAgc2VnVCBmcmNoX3NlZzsKICBzdWJzZWdUIGZyY2hfc3Vic2VnOwoKICBm
aXhTICpmaXhfcm9vdDsKICBmaXhTICpmaXhfdGFpbDsKCiAgc3RydWN0IG9ic3RhY2sgZnJjaF9v
YnN0YWNrOwogIGZyYWdTICpmcmNoX2ZyYWdfbm93Owp9OwoKdHlwZWRlZiBzdHJ1Y3QgZnJjaGFp
biBmcmNoYWluUzsKCgpleHRlcm4gZnJjaGFpblMgKmZyY2hhaW5fcm9vdDsKCgoKZXh0ZXJuIGZy
Y2hhaW5TICpmcmNoYWluX25vdzsKCnR5cGVkZWYgc3RydWN0IHNlZ21lbnRfaW5mb19zdHJ1Y3Qg
ewogIGZyY2hhaW5TICpmcmNoYWluUDsKICB1bnNpZ25lZCBpbnQgaGFkb25lIDogMTsKCgoKCgoK
ICB1bnNpZ25lZCBpbnQgYnNzIDogMTsKCiAgaW50IHVzZXJfc3R1ZmY7CgoKCiAgZml4UyAqZml4
X3Jvb3Q7CiAgZml4UyAqZml4X3RhaWw7CgoKCgoKCgogIHN5bWJvbFMgKmRvdDsKCiAgc3RydWN0
IGxpbmVub19saXN0ICpsaW5lbm9fbGlzdF9oZWFkOwogIHN0cnVjdCBsaW5lbm9fbGlzdCAqbGlu
ZW5vX2xpc3RfdGFpbDsKCgoKICBhc2VjdGlvbiAqYmZkX3NlY3Rpb247CgoKCiAgc3ltYm9sUyAq
c3ltOwoKCiAgdW5pb24gewoKICAgIHVuc2lnbmVkIGxvbmcgc3RhYl9zdHJpbmdfc2l6ZTsKCiAg
ICBjaGFyICpwOwogIH0KICBzdGFidTsKIyAxMjAgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvc3Vi
c2Vncy5oIgp9IHNlZ21lbnRfaW5mb190eXBlOwoKCgpleHRlcm4gc2VnbWVudF9pbmZvX3R5cGUg
KnNlZ19pbmZvIChzZWdUKTsKZXh0ZXJuIHN5bWJvbFMgKnNlY3Rpb25fc3ltYm9sIChzZWdUKTsK
IyAxNTUgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvc3Vic2Vncy5oIgpleHRlcm4gdm9pZCBzdWJz
ZWdzX3ByaW50X3N0YXRpc3RpY3MgKEZJTEUgKik7CiMgMjcgIi9zcmMvYmludXRpbHMtMi4xMy9n
YXMvY29uZmlnL3RjLXBwYy5jIiAyCgojIDEgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL29w
Y29kZS9wcGMuaCIgMQojIDI3ICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9vcGNvZGUvcHBj
LmgiCnN0cnVjdCBwb3dlcnBjX29wY29kZQp7CgogIGNvbnN0IGNoYXIgKm5hbWU7CgoKCiAgdW5z
aWduZWQgbG9uZyBvcGNvZGU7CgoKCgoKICB1bnNpZ25lZCBsb25nIG1hc2s7CgoKCgogIHVuc2ln
bmVkIGxvbmcgZmxhZ3M7CgoKCgogIHVuc2lnbmVkIGNoYXIgb3BlcmFuZHNbOF07Cn07CgoKCgpl
eHRlcm4gY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdOwpleHRl
cm4gY29uc3QgaW50IHBvd2VycGNfbnVtX29wY29kZXM7CiMgMTE1ICIvc3JjL2JpbnV0aWxzLTIu
MTMvaW5jbHVkZS9vcGNvZGUvcHBjLmgiCnN0cnVjdCBwb3dlcnBjX29wZXJhbmQKewoKICBpbnQg
Yml0czsKCgogIGludCBzaGlmdDsKIyAxMzkgIi9zcmMvYmludXRpbHMtMi4xMy9pbmNsdWRlL29w
Y29kZS9wcGMuaCIKICB1bnNpZ25lZCBsb25nICgqaW5zZXJ0KSAodW5zaWduZWQgbG9uZyBpbnN0
cnVjdGlvbiwgbG9uZyBvcCwgaW50IGRpYWxlY3QsIGNvbnN0IGNoYXIgKiplcnJtc2cpOwojIDE2
MCAiL3NyYy9iaW51dGlscy0yLjEzL2luY2x1ZGUvb3Bjb2RlL3BwYy5oIgogIGxvbmcgKCpleHRy
YWN0KSAodW5zaWduZWQgbG9uZyBpbnN0cnVjdGlvbiwgaW50IGRpYWxlY3QsIGludCAqaW52YWxp
ZCk7CgoKCiAgdW5zaWduZWQgbG9uZyBmbGFnczsKfTsKCgoKCmV4dGVybiBjb25zdCBzdHJ1Y3Qg
cG93ZXJwY19vcGVyYW5kIHBvd2VycGNfb3BlcmFuZHNbXTsKIyAyNTcgIi9zcmMvYmludXRpbHMt
Mi4xMy9pbmNsdWRlL29wY29kZS9wcGMuaCIKc3RydWN0IHBvd2VycGNfbWFjcm8KewoKICBjb25z
dCBjaGFyICpuYW1lOwoKCiAgdW5zaWduZWQgaW50IG9wZXJhbmRzOwoKCgoKICB1bnNpZ25lZCBs
b25nIGZsYWdzOwoKCgoKICBjb25zdCBjaGFyICpmb3JtYXQ7Cn07CgpleHRlcm4gY29uc3Qgc3Ry
dWN0IHBvd2VycGNfbWFjcm8gcG93ZXJwY19tYWNyb3NbXTsKZXh0ZXJuIGNvbnN0IGludCBwb3dl
cnBjX251bV9tYWNyb3M7CiMgMjkgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29uZmlnL3RjLXBw
Yy5jIiAyCgoKIyAxICIvc3JjL2JpbnV0aWxzLTIuMTMvaW5jbHVkZS9lbGYvcHBjLmgiIDEKIyAz
MCAiL3NyYy9iaW51dGlscy0yLjEzL2luY2x1ZGUvZWxmL3BwYy5oIgojIDEgIi9zcmMvYmludXRp
bHMtMi4xMy9pbmNsdWRlL2VsZi9yZWxvYy1tYWNyb3MuaCIgMQojIDMxICIvc3JjL2JpbnV0aWxz
LTIuMTMvaW5jbHVkZS9lbGYvcHBjLmgiIDIKCgplbnVtIGVsZl9wcGNfcmVsb2NfdHlwZSB7CiAg
Ul9QUENfTk9ORSA9IDAsCiAgUl9QUENfQUREUjMyID0gMSwKICBSX1BQQ19BRERSMjQgPSAyLAog
IFJfUFBDX0FERFIxNiA9IDMsCiAgUl9QUENfQUREUjE2X0xPID0gNCwKICBSX1BQQ19BRERSMTZf
SEkgPSA1LAogIFJfUFBDX0FERFIxNl9IQSA9IDYsCiAgUl9QUENfQUREUjE0ID0gNywKICBSX1BQ
Q19BRERSMTRfQlJUQUtFTiA9IDgsCiAgUl9QUENfQUREUjE0X0JSTlRBS0VOID0gOSwKICBSX1BQ
Q19SRUwyNCA9IDEwLAogIFJfUFBDX1JFTDE0ID0gMTEsCiAgUl9QUENfUkVMMTRfQlJUQUtFTiA9
IDEyLAogIFJfUFBDX1JFTDE0X0JSTlRBS0VOID0gMTMsCiAgUl9QUENfR09UMTYgPSAxNCwKICBS
X1BQQ19HT1QxNl9MTyA9IDE1LAogIFJfUFBDX0dPVDE2X0hJID0gMTYsCiAgUl9QUENfR09UMTZf
SEEgPSAxNywKICBSX1BQQ19QTFRSRUwyNCA9IDE4LAogIFJfUFBDX0NPUFkgPSAxOSwKICBSX1BQ
Q19HTE9CX0RBVCA9IDIwLAogIFJfUFBDX0pNUF9TTE9UID0gMjEsCiAgUl9QUENfUkVMQVRJVkUg
PSAyMiwKICBSX1BQQ19MT0NBTDI0UEMgPSAyMywKICBSX1BQQ19VQUREUjMyID0gMjQsCiAgUl9Q
UENfVUFERFIxNiA9IDI1LAogIFJfUFBDX1JFTDMyID0gMjYsCiAgUl9QUENfUExUMzIgPSAyNywK
ICBSX1BQQ19QTFRSRUwzMiA9IDI4LAogIFJfUFBDX1BMVDE2X0xPID0gMjksCiAgUl9QUENfUExU
MTZfSEkgPSAzMCwKICBSX1BQQ19QTFQxNl9IQSA9IDMxLAogIFJfUFBDX1NEQVJFTDE2ID0gMzIs
CiAgUl9QUENfU0VDVE9GRiA9IDMzLAogIFJfUFBDX1NFQ1RPRkZfTE8gPSAzNCwKICBSX1BQQ19T
RUNUT0ZGX0hJID0gMzUsCiAgUl9QUENfU0VDVE9GRl9IQSA9IDM2LAogIFJfUFBDX0FERFIzMCA9
IDM3LAoKCiAgUl9QUEM2NF9BRERSNjQgPSAzOCwKICBSX1BQQzY0X0FERFIxNl9ISUdIRVIgPSAz
OSwKICBSX1BQQzY0X0FERFIxNl9ISUdIRVJBID0gNDAsCiAgUl9QUEM2NF9BRERSMTZfSElHSEVT
VCA9IDQxLAogIFJfUFBDNjRfQUREUjE2X0hJR0hFU1RBID0gNDIsCiAgUl9QUEM2NF9VQUREUjY0
ID0gNDMsCiAgUl9QUEM2NF9SRUw2NCA9IDQ0LAogIFJfUFBDNjRfUExUNjQgPSA0NSwKICBSX1BQ
QzY0X1BMVFJFTDY0ID0gNDYsCiAgUl9QUEM2NF9UT0MxNiA9IDQ3LAogIFJfUFBDNjRfVE9DMTZf
TE8gPSA0OCwKICBSX1BQQzY0X1RPQzE2X0hJID0gNDksCiAgUl9QUEM2NF9UT0MxNl9IQSA9IDUw
LAogIFJfUFBDNjRfVE9DID0gNTEsCiAgUl9QUEM2NF9QTFRHT1QxNiA9IDUyLAogIFJfUFBDNjRf
UExUR09UMTZfTE8gPSA1MywKICBSX1BQQzY0X1BMVEdPVDE2X0hJID0gNTQsCiAgUl9QUEM2NF9Q
TFRHT1QxNl9IQSA9IDU1LAoKCiAgUl9QUEM2NF9BRERSMTZfRFMgPSA1NiwKICBSX1BQQzY0X0FE
RFIxNl9MT19EUyA9IDU3LAogIFJfUFBDNjRfR09UMTZfRFMgPSA1OCwKICBSX1BQQzY0X0dPVDE2
X0xPX0RTID0gNTksCiAgUl9QUEM2NF9QTFQxNl9MT19EUyA9IDYwLAogIFJfUFBDNjRfU0VDVE9G
Rl9EUyA9IDYxLAogIFJfUFBDNjRfU0VDVE9GRl9MT19EUyA9IDYyLAogIFJfUFBDNjRfVE9DMTZf
RFMgPSA2MywKICBSX1BQQzY0X1RPQzE2X0xPX0RTID0gNjQsCiAgUl9QUEM2NF9QTFRHT1QxNl9E
UyA9IDY1LAogIFJfUFBDNjRfUExUR09UMTZfTE9fRFMgPSA2NiwKCgoKICBSX1BQQ19FTUJfTkFE
RFIzMiA9IDEwMSwKICBSX1BQQ19FTUJfTkFERFIxNiA9IDEwMiwKICBSX1BQQ19FTUJfTkFERFIx
Nl9MTyA9IDEwMywKICBSX1BQQ19FTUJfTkFERFIxNl9ISSA9IDEwNCwKICBSX1BQQ19FTUJfTkFE
RFIxNl9IQSA9IDEwNSwKICBSX1BQQ19FTUJfU0RBSTE2ID0gMTA2LAogIFJfUFBDX0VNQl9TREEy
STE2ID0gMTA3LAogIFJfUFBDX0VNQl9TREEyUkVMID0gMTA4LAogIFJfUFBDX0VNQl9TREEyMSA9
IDEwOSwKICBSX1BQQ19FTUJfTVJLUkVGID0gMTEwLAogIFJfUFBDX0VNQl9SRUxTRUMxNiA9IDEx
MSwKICBSX1BQQ19FTUJfUkVMU1RfTE8gPSAxMTIsCiAgUl9QUENfRU1CX1JFTFNUX0hJID0gMTEz
LAogIFJfUFBDX0VNQl9SRUxTVF9IQSA9IDExNCwKICBSX1BQQ19FTUJfQklUX0ZMRCA9IDExNSwK
ICBSX1BQQ19FTUJfUkVMU0RBID0gMTE2LAoKCiAgUl9QUENfR05VX1ZUSU5IRVJJVCA9IDI1MywK
ICBSX1BQQ19HTlVfVlRFTlRSWSA9IDI1NCwKCgoKICBSX1BQQ19UT0MxNiA9IDI1NSwKClJfUFBD
X21heCB9OwojIDMyICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMuYyIgMgoj
IDEgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvZHdhcmYyZGJnLmgiIDEKIyAyOSAiL3NyYy9iaW51
dGlscy0yLjEzL2dhcy9kd2FyZjJkYmcuaCIKc3RydWN0IGR3YXJmMl9saW5lX2luZm8gewogIHVu
c2lnbmVkIGludCBmaWxlbnVtOwogIHVuc2lnbmVkIGludCBsaW5lOwogIHVuc2lnbmVkIGludCBj
b2x1bW47CiAgdW5zaWduZWQgaW50IGZsYWdzOwp9OwoKCgoKZXh0ZXJuIGNoYXIgKmR3YXJmMl9k
aXJlY3RpdmVfZmlsZSAoaW50IGR1bW15KTsKCgoKCgoKCmV4dGVybiB2b2lkIGR3YXJmMl9kaXJl
Y3RpdmVfbG9jIChpbnQgZHVtbXkpOwoKCgoKCmV4dGVybiB2b2lkIGR3YXJmMl93aGVyZSAoc3Ry
dWN0IGR3YXJmMl9saW5lX2luZm8gKmwpOwoKCgoKCgpleHRlcm4gdm9pZCBkd2FyZjJfZ2VuX2xp
bmVfaW5mbyAoYWRkcmVzc1QgYWRkciwgc3RydWN0IGR3YXJmMl9saW5lX2luZm8gKmwpOwoKCgpl
eHRlcm4gdm9pZCBkd2FyZjJfZW1pdF9pbnNuIChpbnQpOwoKZXh0ZXJuIHZvaWQgZHdhcmYyX2Zp
bmlzaCAodm9pZCk7CgpleHRlcm4gaW50IGR3YXJmMmRiZ19lc3RpbWF0ZV9zaXplX2JlZm9yZV9y
ZWxheCAoZnJhZ1MgKik7CmV4dGVybiBpbnQgZHdhcmYyZGJnX3JlbGF4X2ZyYWcgKGZyYWdTICop
OwpleHRlcm4gdm9pZCBkd2FyZjJkYmdfY29udmVydF9mcmFnIChmcmFnUyAqKTsKIyAzMyAiL3Ny
Yy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiIDIKIyA0MiAiL3NyYy9iaW51dGls
cy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiCmV4dGVybiBpbnQgdGFyZ2V0X2JpZ19lbmRpYW47
CgoKc3RhdGljIGludCBzZXRfdGFyZ2V0X2VuZGlhbiA9IDA7CiMgODYgIi9zcmMvYmludXRpbHMt
Mi4xMy9nYXMvY29uZmlnL3RjLXBwYy5jIgpzdGF0aWMgYm9vbGVhbiByZWdfbmFtZXNfcCA9IGZh
bHNlOwoKc3RhdGljIGJvb2xlYW4gcmVnaXN0ZXJfbmFtZSAoZXhwcmVzc2lvblMgKik7CnN0YXRp
YyB2b2lkIHBwY19zZXRfY3B1ICh2b2lkKTsKc3RhdGljIHVuc2lnbmVkIGxvbmcgcHBjX2luc2Vy
dF9vcGVyYW5kCiAgKHVuc2lnbmVkIGxvbmcgaW5zbiwgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bl
cmFuZCAqb3BlcmFuZCwgb2Zmc2V0VCB2YWwsIGNoYXIgKmZpbGUsIHVuc2lnbmVkIGludCBsaW5l
KTsKCnN0YXRpYyB2b2lkIHBwY19tYWNybyAoY2hhciAqc3RyLCBjb25zdCBzdHJ1Y3QgcG93ZXJw
Y19tYWNybyAqbWFjcm8pOwpzdGF0aWMgdm9pZCBwcGNfYnl0ZSAoaW50KTsKCgpzdGF0aWMgaW50
IHBwY19pc190b2Nfc3ltIChzeW1ib2xTICpzeW0pOwpzdGF0aWMgdm9pZCBwcGNfdGMgKGludCk7
CnN0YXRpYyB2b2lkIHBwY19tYWNoaW5lIChpbnQpOwojIDEyOCAiL3NyYy9iaW51dGlscy0yLjEz
L2dhcy9jb25maWcvdGMtcHBjLmMiCnN0YXRpYyBiZmRfcmVsb2NfY29kZV9yZWFsX3R5cGUgcHBj
X2VsZl9zdWZmaXggKGNoYXIgKiosIGV4cHJlc3Npb25TICopOwpzdGF0aWMgdm9pZCBwcGNfZWxm
X2NvbnMgKGludCk7CnN0YXRpYyB2b2lkIHBwY19lbGZfcmRhdGEgKGludCk7CnN0YXRpYyB2b2lk
IHBwY19lbGZfbGNvbW0gKGludCk7CnN0YXRpYyB2b2lkIHBwY19lbGZfdmFsaWRhdGVfZml4IChm
aXhTICosIHNlZ1QpOwojIDE1OCAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBj
LmMiCnN0YXRpYyBjb25zdCBjaGFyIHBwY19zb2xhcmlzX2NvbW1lbnRfY2hhcnNbXSA9ICIjISI7
CnN0YXRpYyBjb25zdCBjaGFyIHBwY19lYWJpX2NvbW1lbnRfY2hhcnNbXSA9ICIjIjsKCgoKCmNv
bnN0IGNoYXIgKnBwY19jb21tZW50X2NoYXJzID0gcHBjX2VhYmlfY29tbWVudF9jaGFyczsKCgoK
CgoKY29uc3QgY2hhciBsaW5lX2NvbW1lbnRfY2hhcnNbXSA9ICIjIjsKCgoKY29uc3QgY2hhciBs
aW5lX3NlcGFyYXRvcl9jaGFyc1tdID0gIjsiOwoKCgpjb25zdCBjaGFyIEVYUF9DSEFSU1tdID0g
ImVFIjsKCgoKY29uc3QgY2hhciBGTFRfQ0hBUlNbXSA9ICJkRCI7CgoKCmNvbnN0IHBzZXVkb190
eXBlUyBtZF9wc2V1ZG9fdGFibGVbXSA9CnsKCiAgeyAiYnl0ZSIsIHBwY19ieXRlLCAwIH0sCiMg
MjI3ICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMuYyIKICB7ICJsbG9uZyIs
IHBwY19lbGZfY29ucywgOCB9LAogIHsgInF1YWQiLCBwcGNfZWxmX2NvbnMsIDggfSwKICB7ICJs
b25nIiwgcHBjX2VsZl9jb25zLCA0IH0sCiAgeyAid29yZCIsIHBwY19lbGZfY29ucywgMiB9LAog
IHsgInNob3J0IiwgcHBjX2VsZl9jb25zLCAyIH0sCiAgeyAicmRhdGEiLCBwcGNfZWxmX3JkYXRh
LCAwIH0sCiAgeyAicm9kYXRhIiwgcHBjX2VsZl9yZGF0YSwgMCB9LAogIHsgImxjb21tIiwgcHBj
X2VsZl9sY29tbSwgMCB9LAogIHsgImZpbGUiLCAodm9pZCAoKikgKGludCkpIGR3YXJmMl9kaXJl
Y3RpdmVfZmlsZSwgMCB9LAogIHsgImxvYyIsIGR3YXJmMl9kaXJlY3RpdmVfbG9jLCAwIH0sCiMg
MjU2ICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMuYyIKICB7ICJ0YyIsIHBw
Y190YywgMCB9LAogIHsgIm1hY2hpbmUiLCBwcGNfbWFjaGluZSwgMCB9LAoKCiAgeyAoKHZvaWQg
KikwKSwgKCh2b2lkICopMCksIDAgfQp9OwoKCgoKCgoKc3RydWN0IHBkX3JlZwogIHsKICAgIGNo
YXIgKm5hbWU7CiAgICBpbnQgdmFsdWU7CiAgfTsKIyAzMTAgIi9zcmMvYmludXRpbHMtMi4xMy9n
YXMvY29uZmlnL3RjLXBwYy5jIgpzdGF0aWMgY29uc3Qgc3RydWN0IHBkX3JlZyBwcmVfZGVmaW5l
ZF9yZWdpc3RlcnNbXSA9CnsKICB7ICJjci4wIiwgMCB9LAogIHsgImNyLjEiLCAxIH0sCiAgeyAi
Y3IuMiIsIDIgfSwKICB7ICJjci4zIiwgMyB9LAogIHsgImNyLjQiLCA0IH0sCiAgeyAiY3IuNSIs
IDUgfSwKICB7ICJjci42IiwgNiB9LAogIHsgImNyLjciLCA3IH0sCgogIHsgImNyMCIsIDAgfSwK
ICB7ICJjcjEiLCAxIH0sCiAgeyAiY3IyIiwgMiB9LAogIHsgImNyMyIsIDMgfSwKICB7ICJjcjQi
LCA0IH0sCiAgeyAiY3I1IiwgNSB9LAogIHsgImNyNiIsIDYgfSwKICB7ICJjcjciLCA3IH0sCgog
IHsgImN0ciIsIDkgfSwKCiAgeyAiZGFyIiwgMTkgfSwKICB7ICJkZWMiLCAyMiB9LAogIHsgImRz
aXNyIiwgMTggfSwKCiAgeyAiZi4wIiwgMCB9LAogIHsgImYuMSIsIDEgfSwKICB7ICJmLjEwIiwg
MTAgfSwKICB7ICJmLjExIiwgMTEgfSwKICB7ICJmLjEyIiwgMTIgfSwKICB7ICJmLjEzIiwgMTMg
fSwKICB7ICJmLjE0IiwgMTQgfSwKICB7ICJmLjE1IiwgMTUgfSwKICB7ICJmLjE2IiwgMTYgfSwK
ICB7ICJmLjE3IiwgMTcgfSwKICB7ICJmLjE4IiwgMTggfSwKICB7ICJmLjE5IiwgMTkgfSwKICB7
ICJmLjIiLCAyIH0sCiAgeyAiZi4yMCIsIDIwIH0sCiAgeyAiZi4yMSIsIDIxIH0sCiAgeyAiZi4y
MiIsIDIyIH0sCiAgeyAiZi4yMyIsIDIzIH0sCiAgeyAiZi4yNCIsIDI0IH0sCiAgeyAiZi4yNSIs
IDI1IH0sCiAgeyAiZi4yNiIsIDI2IH0sCiAgeyAiZi4yNyIsIDI3IH0sCiAgeyAiZi4yOCIsIDI4
IH0sCiAgeyAiZi4yOSIsIDI5IH0sCiAgeyAiZi4zIiwgMyB9LAogIHsgImYuMzAiLCAzMCB9LAog
IHsgImYuMzEiLCAzMSB9LAogIHsgImYuNCIsIDQgfSwKICB7ICJmLjUiLCA1IH0sCiAgeyAiZi42
IiwgNiB9LAogIHsgImYuNyIsIDcgfSwKICB7ICJmLjgiLCA4IH0sCiAgeyAiZi45IiwgOSB9LAoK
ICB7ICJmMCIsIDAgfSwKICB7ICJmMSIsIDEgfSwKICB7ICJmMTAiLCAxMCB9LAogIHsgImYxMSIs
IDExIH0sCiAgeyAiZjEyIiwgMTIgfSwKICB7ICJmMTMiLCAxMyB9LAogIHsgImYxNCIsIDE0IH0s
CiAgeyAiZjE1IiwgMTUgfSwKICB7ICJmMTYiLCAxNiB9LAogIHsgImYxNyIsIDE3IH0sCiAgeyAi
ZjE4IiwgMTggfSwKICB7ICJmMTkiLCAxOSB9LAogIHsgImYyIiwgMiB9LAogIHsgImYyMCIsIDIw
IH0sCiAgeyAiZjIxIiwgMjEgfSwKICB7ICJmMjIiLCAyMiB9LAogIHsgImYyMyIsIDIzIH0sCiAg
eyAiZjI0IiwgMjQgfSwKICB7ICJmMjUiLCAyNSB9LAogIHsgImYyNiIsIDI2IH0sCiAgeyAiZjI3
IiwgMjcgfSwKICB7ICJmMjgiLCAyOCB9LAogIHsgImYyOSIsIDI5IH0sCiAgeyAiZjMiLCAzIH0s
CiAgeyAiZjMwIiwgMzAgfSwKICB7ICJmMzEiLCAzMSB9LAogIHsgImY0IiwgNCB9LAogIHsgImY1
IiwgNSB9LAogIHsgImY2IiwgNiB9LAogIHsgImY3IiwgNyB9LAogIHsgImY4IiwgOCB9LAogIHsg
ImY5IiwgOSB9LAoKICB7ICJmcHNjciIsIDAgfSwKCiAgeyAibHIiLCA4IH0sCgogIHsgInBtciIs
IDAgfSwKCiAgeyAici4wIiwgMCB9LAogIHsgInIuMSIsIDEgfSwKICB7ICJyLjEwIiwgMTAgfSwK
ICB7ICJyLjExIiwgMTEgfSwKICB7ICJyLjEyIiwgMTIgfSwKICB7ICJyLjEzIiwgMTMgfSwKICB7
ICJyLjE0IiwgMTQgfSwKICB7ICJyLjE1IiwgMTUgfSwKICB7ICJyLjE2IiwgMTYgfSwKICB7ICJy
LjE3IiwgMTcgfSwKICB7ICJyLjE4IiwgMTggfSwKICB7ICJyLjE5IiwgMTkgfSwKICB7ICJyLjIi
LCAyIH0sCiAgeyAici4yMCIsIDIwIH0sCiAgeyAici4yMSIsIDIxIH0sCiAgeyAici4yMiIsIDIy
IH0sCiAgeyAici4yMyIsIDIzIH0sCiAgeyAici4yNCIsIDI0IH0sCiAgeyAici4yNSIsIDI1IH0s
CiAgeyAici4yNiIsIDI2IH0sCiAgeyAici4yNyIsIDI3IH0sCiAgeyAici4yOCIsIDI4IH0sCiAg
eyAici4yOSIsIDI5IH0sCiAgeyAici4zIiwgMyB9LAogIHsgInIuMzAiLCAzMCB9LAogIHsgInIu
MzEiLCAzMSB9LAogIHsgInIuNCIsIDQgfSwKICB7ICJyLjUiLCA1IH0sCiAgeyAici42IiwgNiB9
LAogIHsgInIuNyIsIDcgfSwKICB7ICJyLjgiLCA4IH0sCiAgeyAici45IiwgOSB9LAoKICB7ICJy
LnNwIiwgMSB9LAoKICB7ICJyLnRvYyIsIDIgfSwKCiAgeyAicjAiLCAwIH0sCiAgeyAicjEiLCAx
IH0sCiAgeyAicjEwIiwgMTAgfSwKICB7ICJyMTEiLCAxMSB9LAogIHsgInIxMiIsIDEyIH0sCiAg
eyAicjEzIiwgMTMgfSwKICB7ICJyMTQiLCAxNCB9LAogIHsgInIxNSIsIDE1IH0sCiAgeyAicjE2
IiwgMTYgfSwKICB7ICJyMTciLCAxNyB9LAogIHsgInIxOCIsIDE4IH0sCiAgeyAicjE5IiwgMTkg
fSwKICB7ICJyMiIsIDIgfSwKICB7ICJyMjAiLCAyMCB9LAogIHsgInIyMSIsIDIxIH0sCiAgeyAi
cjIyIiwgMjIgfSwKICB7ICJyMjMiLCAyMyB9LAogIHsgInIyNCIsIDI0IH0sCiAgeyAicjI1Iiwg
MjUgfSwKICB7ICJyMjYiLCAyNiB9LAogIHsgInIyNyIsIDI3IH0sCiAgeyAicjI4IiwgMjggfSwK
ICB7ICJyMjkiLCAyOSB9LAogIHsgInIzIiwgMyB9LAogIHsgInIzMCIsIDMwIH0sCiAgeyAicjMx
IiwgMzEgfSwKICB7ICJyNCIsIDQgfSwKICB7ICJyNSIsIDUgfSwKICB7ICJyNiIsIDYgfSwKICB7
ICJyNyIsIDcgfSwKICB7ICJyOCIsIDggfSwKICB7ICJyOSIsIDkgfSwKCiAgeyAicnRvYyIsIDIg
fSwKCiAgeyAic2RyMSIsIDI1IH0sCgogIHsgInNwIiwgMSB9LAoKICB7ICJzcnIwIiwgMjYgfSwK
ICB7ICJzcnIxIiwgMjcgfSwKCiAgeyAidi4wIiwgMCB9LAogIHsgInYuMSIsIDEgfSwKICB7ICJ2
LjEwIiwgMTAgfSwKICB7ICJ2LjExIiwgMTEgfSwKICB7ICJ2LjEyIiwgMTIgfSwKICB7ICJ2LjEz
IiwgMTMgfSwKICB7ICJ2LjE0IiwgMTQgfSwKICB7ICJ2LjE1IiwgMTUgfSwKICB7ICJ2LjE2Iiwg
MTYgfSwKICB7ICJ2LjE3IiwgMTcgfSwKICB7ICJ2LjE4IiwgMTggfSwKICB7ICJ2LjE5IiwgMTkg
fSwKICB7ICJ2LjIiLCAyIH0sCiAgeyAidi4yMCIsIDIwIH0sCiAgeyAidi4yMSIsIDIxIH0sCiAg
eyAidi4yMiIsIDIyIH0sCiAgeyAidi4yMyIsIDIzIH0sCiAgeyAidi4yNCIsIDI0IH0sCiAgeyAi
di4yNSIsIDI1IH0sCiAgeyAidi4yNiIsIDI2IH0sCiAgeyAidi4yNyIsIDI3IH0sCiAgeyAidi4y
OCIsIDI4IH0sCiAgeyAidi4yOSIsIDI5IH0sCiAgeyAidi4zIiwgMyB9LAogIHsgInYuMzAiLCAz
MCB9LAogIHsgInYuMzEiLCAzMSB9LAogIHsgInYuNCIsIDQgfSwKICB7ICJ2LjUiLCA1IH0sCiAg
eyAidi42IiwgNiB9LAogIHsgInYuNyIsIDcgfSwKICB7ICJ2LjgiLCA4IH0sCiAgeyAidi45Iiwg
OSB9LAoKICB7ICJ2MCIsIDAgfSwKICB7ICJ2MSIsIDEgfSwKICB7ICJ2MTAiLCAxMCB9LAogIHsg
InYxMSIsIDExIH0sCiAgeyAidjEyIiwgMTIgfSwKICB7ICJ2MTMiLCAxMyB9LAogIHsgInYxNCIs
IDE0IH0sCiAgeyAidjE1IiwgMTUgfSwKICB7ICJ2MTYiLCAxNiB9LAogIHsgInYxNyIsIDE3IH0s
CiAgeyAidjE4IiwgMTggfSwKICB7ICJ2MTkiLCAxOSB9LAogIHsgInYyIiwgMiB9LAogIHsgInYy
MCIsIDIwIH0sCiAgeyAidjIxIiwgMjEgfSwKICB7ICJ2MjIiLCAyMiB9LAogIHsgInYyMyIsIDIz
IH0sCiAgeyAidjI0IiwgMjQgfSwKICB7ICJ2MjUiLCAyNSB9LAogIHsgInYyNiIsIDI2IH0sCiAg
eyAidjI3IiwgMjcgfSwKICB7ICJ2MjgiLCAyOCB9LAogIHsgInYyOSIsIDI5IH0sCiAgeyAidjMi
LCAzIH0sCiAgeyAidjMwIiwgMzAgfSwKICB7ICJ2MzEiLCAzMSB9LAogIHsgInY0IiwgNCB9LAog
IHsgInY1IiwgNSB9LAogIHsgInY2IiwgNiB9LAogIHsgInY3IiwgNyB9LAogIHsgInY4IiwgOCB9
LAogIHsgInY5IiwgOSB9LAoKICB7ICJ4ZXIiLCAxIH0sCgp9OwoKCgoKCgpzdGF0aWMgaW50IHJl
Z19uYW1lX3NlYXJjaAogIChjb25zdCBzdHJ1Y3QgcGRfcmVnICosIGludCwgY29uc3QgY2hhciAq
IG5hbWUpOwoKc3RhdGljIGludApyZWdfbmFtZV9zZWFyY2ggKHJlZ3MsIHJlZ2NvdW50LCBuYW1l
KQogICAgIGNvbnN0IHN0cnVjdCBwZF9yZWcgKnJlZ3M7CiAgICAgaW50IHJlZ2NvdW50OwogICAg
IGNvbnN0IGNoYXIgKm5hbWU7CnsKICBpbnQgbWlkZGxlLCBsb3csIGhpZ2g7CiAgaW50IGNtcDsK
CiAgbG93ID0gMDsKICBoaWdoID0gcmVnY291bnQgLSAxOwoKICBkbwogICAgewogICAgICBtaWRk
bGUgPSAobG93ICsgaGlnaCkgLyAyOwogICAgICBjbXAgPSBzdHJjYXNlY21wIChuYW1lLCByZWdz
W21pZGRsZV0ubmFtZSk7CiAgICAgIGlmIChjbXAgPCAwKQogICAgICAgIGhpZ2ggPSBtaWRkbGUg
LSAxOwogICAgICBlbHNlIGlmIChjbXAgPiAwKQogICAgICAgIGxvdyA9IG1pZGRsZSArIDE7CiAg
ICAgIGVsc2UKICAgICAgICByZXR1cm4gcmVnc1ttaWRkbGVdLnZhbHVlOwogICAgfQogIHdoaWxl
IChsb3cgPD0gaGlnaCk7CgogIHJldHVybiAtMTsKfQojIDYwNSAiL3NyYy9iaW51dGlscy0yLjEz
L2dhcy9jb25maWcvdGMtcHBjLmMiCnN0YXRpYyBib29sZWFuCnJlZ2lzdGVyX25hbWUgKGV4cHJl
c3Npb25QKQogICAgIGV4cHJlc3Npb25TICpleHByZXNzaW9uUDsKewogIGludCByZWdfbnVtYmVy
OwogIGNoYXIgKm5hbWU7CiAgY2hhciAqc3RhcnQ7CiAgY2hhciBjOwoKCiAgc3RhcnQgPSBuYW1l
ID0gaW5wdXRfbGluZV9wb2ludGVyOwogIGlmIChuYW1lWzBdID09ICclJyAmJiAoX3NjaF9pc3Rh
YmxlWyhuYW1lWzFdKSAmIDB4ZmZdICYgKHVuc2lnbmVkIHNob3J0KShfc2NoX2lzYWxwaGEpKSkK
ICAgIG5hbWUgPSArK2lucHV0X2xpbmVfcG9pbnRlcjsKCiAgZWxzZSBpZiAoIXJlZ19uYW1lc19w
IHx8ICEoX3NjaF9pc3RhYmxlWyhuYW1lWzBdKSAmIDB4ZmZdICYgKHVuc2lnbmVkIHNob3J0KShf
c2NoX2lzYWxwaGEpKSkKICAgIHJldHVybiBmYWxzZTsKCiAgYyA9IGdldF9zeW1ib2xfZW5kICgp
OwogIHJlZ19udW1iZXIgPSByZWdfbmFtZV9zZWFyY2ggKHByZV9kZWZpbmVkX3JlZ2lzdGVycywg
KHNpemVvZiAocHJlX2RlZmluZWRfcmVnaXN0ZXJzKSAvIHNpemVvZiAoc3RydWN0IHBkX3JlZykp
LCBuYW1lKTsKCgogICppbnB1dF9saW5lX3BvaW50ZXIgPSBjOwoKCiAgaWYgKHJlZ19udW1iZXIg
Pj0gMCkKICAgIHsKICAgICAgZXhwcmVzc2lvblAtPlhfb3AgPSBPX3JlZ2lzdGVyOwogICAgICBl
eHByZXNzaW9uUC0+WF9hZGRfbnVtYmVyID0gcmVnX251bWJlcjsKCgogICAgICBleHByZXNzaW9u
UC0+WF9hZGRfc3ltYm9sID0gKCh2b2lkICopMCk7CiAgICAgIGV4cHJlc3Npb25QLT5YX29wX3N5
bWJvbCA9ICgodm9pZCAqKTApOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCgogIGlucHV0X2xp
bmVfcG9pbnRlciA9IHN0YXJ0OwogIHJldHVybiBmYWxzZTsKfQoKCgoKCgpzdGF0aWMgYm9vbGVh
biBjcl9vcGVyYW5kOwoKCnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGRfcmVnIGNyX25hbWVzW10gPQp7
CiAgeyAiY3IwIiwgMCB9LAogIHsgImNyMSIsIDEgfSwKICB7ICJjcjIiLCAyIH0sCiAgeyAiY3Iz
IiwgMyB9LAogIHsgImNyNCIsIDQgfSwKICB7ICJjcjUiLCA1IH0sCiAgeyAiY3I2IiwgNiB9LAog
IHsgImNyNyIsIDcgfSwKICB7ICJlcSIsIDIgfSwKICB7ICJndCIsIDEgfSwKICB7ICJsdCIsIDAg
fSwKICB7ICJzbyIsIDMgfSwKICB7ICJ1biIsIDMgfQp9OwoKCgoKaW50CnBwY19wYXJzZV9uYW1l
IChuYW1lLCBleHByKQogICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgZXhwcmVzc2lvblMgKmV4
cHI7CnsKICBpbnQgdmFsOwoKICBpZiAoISBjcl9vcGVyYW5kKQogICAgcmV0dXJuIDA7CgogIHZh
bCA9IHJlZ19uYW1lX3NlYXJjaCAoY3JfbmFtZXMsIHNpemVvZiBjcl9uYW1lcyAvIHNpemVvZiBj
cl9uYW1lc1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogIGlmICh2YWwgPCAw
KQogICAgcmV0dXJuIDA7CgogIGV4cHItPlhfb3AgPSBPX2NvbnN0YW50OwogIGV4cHItPlhfYWRk
X251bWJlciA9IHZhbDsKCiAgcmV0dXJuIDE7Cn0KCgoKCgpzdGF0aWMgdW5zaWduZWQgbG9uZyBw
cGNfY3B1ID0gMDsKCgpzdGF0aWMgdW5zaWduZWQgaW50IHBwY19vYmo2NCA9IDMyID09IDY0OwoK
CnN0YXRpYyBzdHJ1Y3QgaGFzaF9jb250cm9sICpwcGNfaGFzaDsKCgpzdGF0aWMgc3RydWN0IGhh
c2hfY29udHJvbCAqcHBjX21hY3JvX2hhc2g7CgoKCnN0YXRpYyBlbnVtIHsgU0hMSUJfTk9ORSwg
U0hMSUJfUElDLCBTSExJQl9NUkVMT0NBVEFCTEUgfSBzaGxpYiA9IFNITElCX05PTkU7CgoKc3Rh
dGljIGZsYWd3b3JkIHBwY19mbGFncyA9IDA7CiMgNzIzICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2Fz
L2NvbmZpZy90Yy1wcGMuYyIKc3RhdGljIGJvb2xlYW4gbXNvbGFyaXMgPSBmYWxzZTsKIyA3ODkg
Ii9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29uZmlnL3RjLXBwYy5jIgpzeW1ib2xTICpHT1Rfc3lt
Ym9sOwoKCgpjb25zdCBjaGFyICpjb25zdCBtZF9zaG9ydG9wdHMgPSAiYjpsOnVzbTpLOlZROiI7
CgoKCmNvbnN0IHN0cnVjdCBvcHRpb24gbWRfbG9uZ29wdHNbXSA9IHsKICB7KCh2b2lkICopMCks
IDAsICgodm9pZCAqKTApLCAwfQp9Owpjb25zdCBzaXplX3QgbWRfbG9uZ29wdHNfc2l6ZSA9IHNp
emVvZiAobWRfbG9uZ29wdHMpOwoKaW50Cm1kX3BhcnNlX29wdGlvbiAoYywgYXJnKQogICAgIGlu
dCBjOwogICAgIGNoYXIgKmFyZzsKewogIHN3aXRjaCAoYykKICAgIHsKICAgIGNhc2UgJ3UnOgoK
CiAgICAgIGJyZWFrOwoKCiAgICBjYXNlICdsJzoKCgogICAgICBpZiAoc3RyY21wIChhcmcsICJl
IikgPT0gMCkKICAgICAgICB7CiAgICAgICAgICB0YXJnZXRfYmlnX2VuZGlhbiA9IDA7CiAgICAg
ICAgICBzZXRfdGFyZ2V0X2VuZGlhbiA9IDE7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAg
cmV0dXJuIDA7CgogICAgICBicmVhazsKCiAgICBjYXNlICdiJzoKICAgICAgaWYgKHN0cmNtcCAo
YXJnLCAiZSIpID09IDApCiAgICAgICAgewogICAgICAgICAgdGFyZ2V0X2JpZ19lbmRpYW4gPSAx
OwogICAgICAgICAgc2V0X3RhcmdldF9lbmRpYW4gPSAxOwogICAgICAgIH0KICAgICAgZWxzZQog
ICAgICAgIHJldHVybiAwOwoKICAgICAgYnJlYWs7CgogICAgY2FzZSAnSyc6CgogICAgICBpZiAo
c3RyY21wIChhcmcsICJQSUMiKSA9PSAwIHx8IHN0cmNtcCAoYXJnLCAicGljIikgPT0gMCkKICAg
ICAgICB7CiAgICAgICAgICBzaGxpYiA9IFNITElCX1BJQzsKICAgICAgICAgIHBwY19mbGFncyB8
PSAweDAwMDA4MDAwOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHJldHVybiAwOwoKICAg
ICAgYnJlYWs7CgoKCiAgICBjYXNlICdhJzoKICAgICAgaWYgKHN0cmNtcCAoYXJnLCAiNjQiKSA9
PSAwKQogICAgICAgIHBwY19vYmo2NCA9IDE7CiAgICAgIGVsc2UgaWYgKHN0cmNtcCAoYXJnLCAi
MzIiKSA9PSAwKQogICAgICAgIHBwY19vYmo2NCA9IDA7CiAgICAgIGVsc2UKICAgICAgICByZXR1
cm4gMDsKICAgICAgYnJlYWs7CgogICAgY2FzZSAnbSc6CgoKICAgICAgaWYgKHN0cmNtcCAoYXJn
LCAicHdyeCIpID09IDAgfHwgc3RyY21wIChhcmcsICJwd3IyIikgPT0gMCkKICAgICAgICBwcGNf
Y3B1ID0gKDAyKSB8ICgwNCkgfCAoMDEwKTsKCiAgICAgIGVsc2UgaWYgKHN0cmNtcCAoYXJnLCAi
cHdyIikgPT0gMCkKICAgICAgICBwcGNfY3B1ID0gKDAyKSB8ICgwMTApOwoKCiAgICAgIGVsc2Ug
aWYgKHN0cmNtcCAoYXJnLCAiNjAxIikgPT0gMCkKICAgICAgICBwcGNfY3B1ID0gKDAxKSB8ICgw
NDApIHwgKDAxMCk7CgoKICAgICAgZWxzZSBpZiAoc3RyY21wIChhcmcsICJwcGMiKSA9PSAwCiAg
ICAgICAgICAgICAgIHx8IHN0cmNtcCAoYXJnLCAicHBjMzIiKSA9PSAwCiAgICAgICAgICAgICAg
IHx8IHN0cmNtcCAoYXJnLCAiNjAzIikgPT0gMAogICAgICAgICAgICAgICB8fCBzdHJjbXAgKGFy
ZywgIjYwNCIpID09IDApCiAgICAgICAgcHBjX2NwdSA9ICgwMSkgfCAoMDEwKTsKCiAgICAgIGVs
c2UgaWYgKHN0cmNtcCAoYXJnLCAiNDAzIikgPT0gMAogICAgICAgICAgICAgICB8fCBzdHJjbXAg
KGFyZywgIjQwNSIpID09IDApCiAgICAgICAgcHBjX2NwdSA9ICgwMSkgfCAoMDIwMDApIHwgKDAx
MCk7CiAgICAgIGVsc2UgaWYgKHN0cmNtcCAoYXJnLCAiNzQwMCIpID09IDAKICAgICAgICAgICAg
ICAgfHwgc3RyY21wIChhcmcsICI3NDEwIikgPT0gMAogICAgICAgICAgICAgICB8fCBzdHJjbXAg
KGFyZywgIjc0NTAiKSA9PSAwCiAgICAgICAgICAgICAgIHx8IHN0cmNtcCAoYXJnLCAiNzQ1NSIp
ID09IDApCiAgICAgICAgcHBjX2NwdSA9ICgwMSkgfCAoMDEwMDApIHwgKDAxMCk7CiAgICAgIGVs
c2UgaWYgKHN0cmNtcCAoYXJnLCAiYWx0aXZlYyIpID09IDApCiAgICAgICAgewogICAgICAgICAg
aWYgKHBwY19jcHUgPT0gMCkKICAgICAgICAgICAgcHBjX2NwdSA9ICgwMSkgfCAoMDEwMDApOwog
ICAgICAgICAgZWxzZQogICAgICAgICAgICBwcGNfY3B1IHw9ICgwMTAwMCk7CiAgICAgICAgfQoK
CiAgICAgIGVsc2UgaWYgKHN0cmNtcCAoYXJnLCAicHBjNjQiKSA9PSAwIHx8IHN0cmNtcCAoYXJn
LCAiNjIwIikgPT0gMCkKICAgICAgICB7CiAgICAgICAgICBwcGNfY3B1ID0gKDAxKSB8ICgwMjAp
OwogICAgICAgIH0KICAgICAgZWxzZSBpZiAoc3RyY21wIChhcmcsICJwcGM2NGJyaWRnZSIpID09
IDApCiAgICAgICAgewogICAgICAgICAgcHBjX2NwdSA9ICgwMSkgfCAoMDQwMCkgfCAoMDIwKTsK
ICAgICAgICB9CgogICAgICBlbHNlIGlmIChzdHJjbXAgKGFyZywgImJvb2tlIikgPT0gMCB8fCBz
dHJjbXAgKGFyZywgImJvb2tlMzIiKSA9PSAwKQogICAgICAgIHBwY19jcHUgPSAoMDEpIHwgKDA0
MDAwKSB8ICgwMTApOwoKICAgICAgZWxzZSBpZiAoc3RyY21wIChhcmcsICJib29rZTY0IikgPT0g
MCkKICAgICAgICB7CiAgICAgICAgICBwcGNfY3B1ID0gKDAxKSB8ICgwNDAwMCkgfAogICAgICAg
ICAgICAgICAgICAgICgwMTAwMDApIHwgKDAyMCk7CiAgICAgICAgfQogICAgICBlbHNlIGlmIChz
dHJjbXAgKGFyZywgInBvd2VyNCIpID09IDApCiAgICAgICAgewogICAgICAgICAgcHBjX2NwdSA9
ICgwMSkgfCAoMDIwKSB8ICgwMjAwMDApOwogICAgICAgIH0KCgoKICAgICAgZWxzZSBpZiAoc3Ry
Y21wIChhcmcsICJjb20iKSA9PSAwKQogICAgICAgIHBwY19jcHUgPSAoMDEwMCkgfCAoMDEwKTsK
CiAgICAgIGVsc2UgaWYgKHN0cmNtcCAoYXJnLCAiYW55IikgPT0gMCkKICAgICAgICBwcGNfY3B1
ID0gKDAyMDApIHwgKDAxMCk7CgogICAgICBlbHNlIGlmIChzdHJjbXAgKGFyZywgInJlZ25hbWVz
IikgPT0gMCkKICAgICAgICByZWdfbmFtZXNfcCA9IHRydWU7CgogICAgICBlbHNlIGlmIChzdHJj
bXAgKGFyZywgIm5vLXJlZ25hbWVzIikgPT0gMCkKICAgICAgICByZWdfbmFtZXNfcCA9IGZhbHNl
OwoKCgoKICAgICAgZWxzZSBpZiAoc3RyY21wIChhcmcsICJyZWxvY2F0YWJsZSIpID09IDApCiAg
ICAgICAgewogICAgICAgICAgc2hsaWIgPSBTSExJQl9NUkVMT0NBVEFCTEU7CiAgICAgICAgICBw
cGNfZmxhZ3MgfD0gMHgwMDAxMDAwMDsKICAgICAgICB9CgogICAgICBlbHNlIGlmIChzdHJjbXAg
KGFyZywgInJlbG9jYXRhYmxlLWxpYiIpID09IDApCiAgICAgICAgewogICAgICAgICAgc2hsaWIg
PSBTSExJQl9NUkVMT0NBVEFCTEU7CiAgICAgICAgICBwcGNfZmxhZ3MgfD0gMHgwMDAwODAwMDsK
ICAgICAgICB9CgoKICAgICAgZWxzZSBpZiAoc3RyY21wIChhcmcsICJlbWIiKSA9PSAwKQogICAg
ICAgIHBwY19mbGFncyB8PSAweDgwMDAwMDAwOwoKCiAgICAgIGVsc2UgaWYgKHN0cmNtcCAoYXJn
LCAibGl0dGxlIikgPT0gMAogICAgICAgICAgICAgICB8fCBzdHJjbXAgKGFyZywgImxpdHRsZS1l
bmRpYW4iKSA9PSAwKQogICAgICAgIHsKICAgICAgICAgIHRhcmdldF9iaWdfZW5kaWFuID0gMDsK
ICAgICAgICAgIHNldF90YXJnZXRfZW5kaWFuID0gMTsKICAgICAgICB9CgogICAgICBlbHNlIGlm
IChzdHJjbXAgKGFyZywgImJpZyIpID09IDAgfHwgc3RyY21wIChhcmcsICJiaWctZW5kaWFuIikg
PT0gMCkKICAgICAgICB7CiAgICAgICAgICB0YXJnZXRfYmlnX2VuZGlhbiA9IDE7CiAgICAgICAg
ICBzZXRfdGFyZ2V0X2VuZGlhbiA9IDE7CiAgICAgICAgfQoKICAgICAgZWxzZSBpZiAoc3RyY21w
IChhcmcsICJzb2xhcmlzIikgPT0gMCkKICAgICAgICB7CiAgICAgICAgICBtc29sYXJpcyA9IHRy
dWU7CiAgICAgICAgICBwcGNfY29tbWVudF9jaGFycyA9IHBwY19zb2xhcmlzX2NvbW1lbnRfY2hh
cnM7CiAgICAgICAgfQoKICAgICAgZWxzZSBpZiAoc3RyY21wIChhcmcsICJuby1zb2xhcmlzIikg
PT0gMCkKICAgICAgICB7CiAgICAgICAgICBtc29sYXJpcyA9IGZhbHNlOwogICAgICAgICAgcHBj
X2NvbW1lbnRfY2hhcnMgPSBwcGNfZWFiaV9jb21tZW50X2NoYXJzOwogICAgICAgIH0KCiAgICAg
IGVsc2UKICAgICAgICB7CiAgICAgICAgICBhc19iYWQgKGRjZ2V0dGV4dCAoKCh2b2lkICopMCks
ICJpbnZhbGlkIHN3aXRjaCAtbSVzIiwgNiksIGFyZyk7CiAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICB9CiAgICAgIGJyZWFrOwoKCgogICAgY2FzZSAnVic6CiAgICAgIHByaW50X3ZlcnNpb25f
aWQgKCk7CiAgICAgIGJyZWFrOwoKCgogICAgY2FzZSAnUSc6CiAgICAgIGJyZWFrOwoKCgoKICAg
IGNhc2UgJ3MnOgogICAgICBpZiAoYXJnKQogICAgICAgIHJldHVybiAwOwoKICAgICAgYnJlYWs7
CgoKICAgIGRlZmF1bHQ6CiAgICAgIHJldHVybiAwOwogICAgfQoKICByZXR1cm4gMTsKfQoKdm9p
ZAptZF9zaG93X3VzYWdlIChzdHJlYW0pCiAgICAgRklMRSAqc3RyZWFtOwp7CiAgZnByaW50ZiAo
c3RyZWFtLCBkY2dldHRleHQgKCgodm9pZCAqKTApLCAiUG93ZXJQQyBvcHRpb25zOlxuLXUJCQlp
Z25vcmVkXG4tbXB3cngsIC1tcHdyMgkJZ2VuZXJhdGUgY29kZSBmb3IgUE9XRVIvMiAoUklPUzIp
XG4tbXB3cgkJCWdlbmVyYXRlIGNvZGUgZm9yIFBPV0VSIChSSU9TMSlcbi1tNjAxCQkJZ2VuZXJh
dGUgY29kZSBmb3IgUG93ZXJQQyA2MDFcbi1tcHBjLCAtbXBwYzMyLCAtbTYwMywgLW02MDRcbgkJ
CWdlbmVyYXRlIGNvZGUgZm9yIFBvd2VyUEMgNjAzLzYwNFxuLW00MDMsIC1tNDA1ICAgICAgICAg
ICAgZ2VuZXJhdGUgY29kZSBmb3IgUG93ZXJQQyA0MDMvNDA1XG4tbTc0MDAsIC1tNzQxMCwgLW03
NDUwLCAtbTc0NTVcbgkJCWdlbmVyYXRlIGNvZGUgRm9yIFBvd2VyUEMgNzQwMC83NDEwLzc0NTAv
NzQ1NVxuLW1wcGM2NCwgLW02MjAJCWdlbmVyYXRlIGNvZGUgZm9yIFBvd2VyUEMgNjIwLzYyNS82
MzBcbi1tcHBjNjRicmlkZ2UJCWdlbmVyYXRlIGNvZGUgZm9yIFBvd2VyUEMgNjQsIGluY2x1ZGlu
ZyBicmlkZ2UgaW5zbnNcbi1tYm9va2U2NAkJZ2VuZXJhdGUgY29kZSBmb3IgNjQtYml0IFBvd2Vy
UEMgQm9va0Vcbi1tYm9va2UsIG1ib29rZTMyCWdlbmVyYXRlIGNvZGUgZm9yIDMyLWJpdCBQb3dl
clBDIEJvb2tFXG4tbXBvd2VyNAkJZ2VuZXJhdGUgY29kZSBmb3IgUG93ZXI0IGFyY2hpdGVjdHVy
ZVxuLW1hbHRpdmVjCQlnZW5lcmF0ZSBjb2RlIGZvciBBbHRpVmVjXG4tbWNvbQkJCWdlbmVyYXRl
IGNvZGUgUG93ZXIvUG93ZXJQQyBjb21tb24gaW5zdHJ1Y3Rpb25zXG4tbWFueQkJCWdlbmVyYXRl
IGNvZGUgZm9yIGFueSBhcmNoaXRlY3R1cmUgKFBXUi9QV1JYL1BQQylcbi1tcmVnbmFtZXMJCUFs
bG93IHN5bWJvbGljIG5hbWVzIGZvciByZWdpc3RlcnNcbi1tbm8tcmVnbmFtZXMJCURvIG5vdCBh
bGxvdyBzeW1ib2xpYyBuYW1lcyBmb3IgcmVnaXN0ZXJzXG4iLCA2KSk7CiMgMTA0MSAiL3NyYy9i
aW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiCiAgZnByaW50ZiAoc3RyZWFtLCBkY2dl
dHRleHQgKCgodm9pZCAqKTApLCAiLW1yZWxvY2F0YWJsZQkJc3VwcG9ydCBmb3IgR0NDJ3MgLW1y
ZWxvY2F0YmxlIG9wdGlvblxuLW1yZWxvY2F0YWJsZS1saWIJc3VwcG9ydCBmb3IgR0NDJ3MgLW1y
ZWxvY2F0YmxlLWxpYiBvcHRpb25cbi1tZW1iCQkJc2V0IFBQQ19FTUIgYml0IGluIEVMRiBmbGFn
c1xuLW1saXR0bGUsIC1tbGl0dGxlLWVuZGlhblxuCQkJZ2VuZXJhdGUgY29kZSBmb3IgYSBsaXR0
bGUgZW5kaWFuIG1hY2hpbmVcbi1tYmlnLCAtbWJpZy1lbmRpYW4JZ2VuZXJhdGUgY29kZSBmb3Ig
YSBiaWcgZW5kaWFuIG1hY2hpbmVcbi1tc29sYXJpcwkJZ2VuZXJhdGUgY29kZSBmb3IgU29sYXJp
c1xuLW1uby1zb2xhcmlzCQlkbyBub3QgZ2VuZXJhdGUgY29kZSBmb3IgU29sYXJpc1xuLVYJCQlw
cmludCBhc3NlbWJsZXIgdmVyc2lvbiBudW1iZXJcbi1ReSwgLVFuCQlpZ25vcmVkXG4iLCA2KSk7
CiMgMTA1MyAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiCn0KCgoKc3Rh
dGljIHZvaWQKcHBjX3NldF9jcHUgKCkKewogIGNvbnN0IGNoYXIgKmRlZmF1bHRfb3MgPSAiZWFi
aSI7CiAgY29uc3QgY2hhciAqZGVmYXVsdF9jcHUgPSAicG93ZXJwYyI7CgogIGlmIChwcGNfY3B1
ID09IDApCiAgICB7CiAgICAgIGlmIChzdHJuY21wIChkZWZhdWx0X29zLCAiYWl4IiwgMykgPT0g
MAogICAgICAgICAgJiYgZGVmYXVsdF9vc1szXSA+PSAnNCcgJiYgZGVmYXVsdF9vc1szXSA8PSAn
OScpCiAgICAgICAgcHBjX2NwdSA9ICgwMTAwKSB8ICgwMTApOwogICAgICBlbHNlIGlmIChzdHJu
Y21wIChkZWZhdWx0X29zLCAiYWl4MyIsIDQpID09IDApCiAgICAgICAgcHBjX2NwdSA9ICgwMikg
fCAoMDEwKTsKICAgICAgZWxzZSBpZiAoc3RyY21wIChkZWZhdWx0X2NwdSwgInJzNjAwMCIpID09
IDApCiAgICAgICAgcHBjX2NwdSA9ICgwMikgfCAoMDEwKTsKICAgICAgZWxzZSBpZiAoc3RybmNt
cCAoZGVmYXVsdF9jcHUsICJwb3dlcnBjIiwgNykgPT0gMCkKICAgICAgICB7CiAgICAgICAgICBp
ZiAoZGVmYXVsdF9jcHVbN10gPT0gJzYnICYmIGRlZmF1bHRfY3B1WzhdID09ICc0JykKICAgICAg
ICAgICAgcHBjX2NwdSA9ICgwMSkgfCAoMDIwKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
cHBjX2NwdSA9ICgwMSkgfCAoMDEwKTsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICBhc19m
YXRhbCAoZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgIlVua25vd24gZGVmYXVsdCBjcHUgPSAlcywg
b3MgPSAlcyIsIDYpLAogICAgICAgICAgICAgICAgICBkZWZhdWx0X2NwdSwgZGVmYXVsdF9vcyk7
CiAgICB9Cn0KCgoKZW51bSBiZmRfYXJjaGl0ZWN0dXJlCnBwY19hcmNoICgpCnsKICBjb25zdCBj
aGFyICpkZWZhdWx0X2NwdSA9ICJwb3dlcnBjIjsKICBwcGNfc2V0X2NwdSAoKTsKCiAgaWYgKChw
cGNfY3B1ICYgKDAxKSkgIT0gMCkKICAgIHJldHVybiBiZmRfYXJjaF9wb3dlcnBjOwogIGVsc2Ug
aWYgKChwcGNfY3B1ICYgKDAyKSkgIT0gMCkKICAgIHJldHVybiBiZmRfYXJjaF9yczYwMDA7CiAg
ZWxzZSBpZiAoKHBwY19jcHUgJiAoKDAxMDApIHwgKDAyMDApKSkgIT0gMCkKICAgIHsKICAgICAg
aWYgKHN0cmNtcCAoZGVmYXVsdF9jcHUsICJyczYwMDAiKSA9PSAwKQogICAgICAgIHJldHVybiBi
ZmRfYXJjaF9yczYwMDA7CiAgICAgIGVsc2UgaWYgKHN0cm5jbXAgKGRlZmF1bHRfY3B1LCAicG93
ZXJwYyIsIDcpID09IDApCiAgICAgICAgcmV0dXJuIGJmZF9hcmNoX3Bvd2VycGM7CiAgICB9Cgog
IGFzX2ZhdGFsIChkY2dldHRleHQgKCgodm9pZCAqKTApLCAiTmVpdGhlciBQb3dlciBub3IgUG93
ZXJQQyBvcGNvZGVzIHdlcmUgc2VsZWN0ZWQuIiwgNikpOwogIHJldHVybiBiZmRfYXJjaF91bmtu
b3duOwp9Cgp1bnNpZ25lZCBsb25nCnBwY19tYWNoICgpCnsKICByZXR1cm4gcHBjX29iajY0ID8g
MSA6IDA7Cn0KCmV4dGVybiBjaGFyKgpwcGNfdGFyZ2V0X2Zvcm1hdCAoKQp7CiMgMTEzMiAiL3Ny
Yy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiCiAgcmV0dXJuICh0YXJnZXRfYmln
X2VuZGlhbgogICAgICAgICAgPyAocHBjX29iajY0ID8gImVsZjY0LXBvd2VycGMiIDogImVsZjMy
LXBvd2VycGMiKQogICAgICAgICAgOiAocHBjX29iajY0ID8gImVsZjY0LXBvd2VycGNsZSIgOiAi
ZWxmMzItcG93ZXJwY2xlIikpOwoKfQoKCgoKCnZvaWQKbWRfYmVnaW4gKCkKewogIHJlZ2lzdGVy
IGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSAqb3A7CiAgY29uc3Qgc3RydWN0IHBvd2VycGNf
b3Bjb2RlICpvcF9lbmQ7CiAgY29uc3Qgc3RydWN0IHBvd2VycGNfbWFjcm8gKm1hY3JvOwogIGNv
bnN0IHN0cnVjdCBwb3dlcnBjX21hY3JvICptYWNyb19lbmQ7CiAgYm9vbGVhbiBkdXBfaW5zbiA9
IGZhbHNlOwoKICBwcGNfc2V0X2NwdSAoKTsKCgoKICBpZiAocHBjX2ZsYWdzICYmICFtc29sYXJp
cykKICAgICgoKigoc3Rkb3V0cHV0KS0+eHZlYy0+X2JmZF9zZXRfcHJpdmF0ZV9mbGFncykpIChz
dGRvdXRwdXQsIHBwY19mbGFncykpOwoKCgogIHBwY19oYXNoID0gaGFzaF9uZXcgKCk7CgogIG9w
X2VuZCA9IHBvd2VycGNfb3Bjb2RlcyArIHBvd2VycGNfbnVtX29wY29kZXM7CiAgZm9yIChvcCA9
IHBvd2VycGNfb3Bjb2Rlczsgb3AgPCBvcF9lbmQ7IG9wKyspCiAgICB7CiAgICAgIDsKCiAgICAg
IGlmICgob3AtPmZsYWdzICYgcHBjX2NwdSAmIH4oKDAxMCkgfCAoMDIwKSkpICE9IDAKICAgICAg
ICAgICYmICgob3AtPmZsYWdzICYgKCgwMTApIHwgKDAyMCkpKSA9PSAwCiAgICAgICAgICAgICAg
fHwgKChvcC0+ZmxhZ3MgJiAoKDAxMCkgfCAoMDIwKSkpCiAgICAgICAgICAgICAgICAgID09IChw
cGNfY3B1ICYgKCgwMTApIHwgKDAyMCkpKSkKICAgICAgICAgICAgICB8fCAocHBjX2NwdSAmICgw
NDAwKSkgIT0gMCkKICAgICAgICAgICYmICgob3AtPmZsYWdzICYgKCgwMjAwMDApIHwgKDA0MDAw
MCkpKSA9PSAwCiAgICAgICAgICAgICAgfHwgKChvcC0+ZmxhZ3MgJiAoMDIwMDAwKSkKICAgICAg
ICAgICAgICAgICAgPT0gKHBwY19jcHUgJiAoMDIwMDAwKSkpKSkKICAgICAgICB7CiAgICAgICAg
ICBjb25zdCBjaGFyICpyZXR2YWw7CgogICAgICAgICAgcmV0dmFsID0gaGFzaF9pbnNlcnQgKHBw
Y19oYXNoLCBvcC0+bmFtZSwgKHZvaWQgKikgb3ApOwogICAgICAgICAgaWYgKHJldHZhbCAhPSAo
Y29uc3QgY2hhciAqKSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICBp
ZiAoKHBwY19jcHUgJiAoMDQwKSkgIT0gMAogICAgICAgICAgICAgICAgICAmJiAob3AtPmZsYWdz
ICYgKDAyKSkgIT0gMCkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgICBh
c19iYWQgKGRjZ2V0dGV4dCAoKCh2b2lkICopMCksICJJbnRlcm5hbCBhc3NlbWJsZXIgZXJyb3Ig
Zm9yIGluc3RydWN0aW9uICVzIiwgNiksCiAgICAgICAgICAgICAgICAgICAgICBvcC0+bmFtZSk7
CiAgICAgICAgICAgICAgZHVwX2luc24gPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQog
ICAgfQoKCiAgcHBjX21hY3JvX2hhc2ggPSBoYXNoX25ldyAoKTsKCiAgbWFjcm9fZW5kID0gcG93
ZXJwY19tYWNyb3MgKyBwb3dlcnBjX251bV9tYWNyb3M7CiAgZm9yIChtYWNybyA9IHBvd2VycGNf
bWFjcm9zOyBtYWNybyA8IG1hY3JvX2VuZDsgbWFjcm8rKykKICAgIHsKICAgICAgaWYgKChtYWNy
by0+ZmxhZ3MgJiBwcGNfY3B1KSAhPSAwKQogICAgICAgIHsKICAgICAgICAgIGNvbnN0IGNoYXIg
KnJldHZhbDsKCiAgICAgICAgICByZXR2YWwgPSBoYXNoX2luc2VydCAocHBjX21hY3JvX2hhc2gs
IG1hY3JvLT5uYW1lLCAodm9pZCAqKSBtYWNybyk7CiAgICAgICAgICBpZiAocmV0dmFsICE9IChj
b25zdCBjaGFyICopICgodm9pZCAqKTApKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgYXNf
YmFkIChkY2dldHRleHQgKCgodm9pZCAqKTApLCAiSW50ZXJuYWwgYXNzZW1ibGVyIGVycm9yIGZv
ciBtYWNybyAlcyIsIDYpLCBtYWNyby0+bmFtZSk7CiAgICAgICAgICAgICAgZHVwX2luc24gPSB0
cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICBpZiAoZHVwX2luc24pCiAgICBh
c19hYm9ydCAoIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29uZmlnL3RjLXBwYy5jIiwgMTIxMywg
X19QUkVUVFlfRlVOQ1RJT05fXyk7CgoKCiAgaWYgKCFzZXRfdGFyZ2V0X2VuZGlhbikKICAgIHsK
ICAgICAgc2V0X3RhcmdldF9lbmRpYW4gPSAxOwogICAgICB0YXJnZXRfYmlnX2VuZGlhbiA9IDE7
CiAgICB9CiMgMTI0MSAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiCn0K
CgoKc3RhdGljIHVuc2lnbmVkIGxvbmcKcHBjX2luc2VydF9vcGVyYW5kIChpbnNuLCBvcGVyYW5k
LCB2YWwsIGZpbGUsIGxpbmUpCiAgICAgdW5zaWduZWQgbG9uZyBpbnNuOwogICAgIGNvbnN0IHN0
cnVjdCBwb3dlcnBjX29wZXJhbmQgKm9wZXJhbmQ7CiAgICAgb2Zmc2V0VCB2YWw7CiAgICAgY2hh
ciAqZmlsZTsKICAgICB1bnNpZ25lZCBpbnQgbGluZTsKewogIGlmIChvcGVyYW5kLT5iaXRzICE9
IDMyKQogICAgewogICAgICBsb25nIG1pbiwgbWF4OwogICAgICBvZmZzZXRUIHRlc3Q7CgogICAg
ICBpZiAoKG9wZXJhbmQtPmZsYWdzICYgKDAxKSkgIT0gMCkKICAgICAgICB7CiAgICAgICAgICBp
ZiAoKG9wZXJhbmQtPmZsYWdzICYgKDAyKSkgIT0gMCkKICAgICAgICAgICAgbWF4ID0gKDEgPDwg
b3BlcmFuZC0+Yml0cykgLSAxOwogICAgICAgICAgZWxzZQogICAgICAgICAgICBtYXggPSAoMSA8
PCAob3BlcmFuZC0+Yml0cyAtIDEpKSAtIDE7CiAgICAgICAgICBtaW4gPSAtICgxIDw8IChvcGVy
YW5kLT5iaXRzIC0gMSkpOwoKICAgICAgICAgIGlmICghcHBjX29iajY0KQogICAgICAgICAgICB7
CgoKCgogICAgICAgICAgICAgIGlmICh2YWwgPiAwCiAgICAgICAgICAgICAgICAgICYmICh2YWwg
JiAob2Zmc2V0VCkgMHg4MDAwMDAwMCkgIT0gMAogICAgICAgICAgICAgICAgICAmJiAodmFsICYg
KG9mZnNldFQpIDB4ZmZmZmZmZmYpID09IHZhbCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgdmFsIC09IDB4ODAwMDAwMDA7CiAgICAgICAgICAgICAgICAgIHZhbCAtPSAweDgw
MDAwMDAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICBl
bHNlCiAgICAgICAgewogICAgICAgICAgbWF4ID0gKDEgPDwgb3BlcmFuZC0+Yml0cykgLSAxOwog
ICAgICAgICAgbWluID0gMDsKICAgICAgICB9CgogICAgICBpZiAoKG9wZXJhbmQtPmZsYWdzICYg
KDA0MDAwKSkgIT0gMCkKICAgICAgICB0ZXN0ID0gLSB2YWw7CiAgICAgIGVsc2UKICAgICAgICB0
ZXN0ID0gdmFsOwoKICAgICAgaWYgKHRlc3QgPCAob2Zmc2V0VCkgbWluIHx8IHRlc3QgPiAob2Zm
c2V0VCkgbWF4KQogICAgICAgIHsKICAgICAgICAgIGNvbnN0IGNoYXIgKmVyciA9CiAgICAgICAg
ICAgIGRjZ2V0dGV4dCAoKCh2b2lkICopMCksICJvcGVyYW5kIG91dCBvZiByYW5nZSAoJXMgbm90
IGJldHdlZW4gJWxkIGFuZCAlbGQpIiwgNik7CiAgICAgICAgICBjaGFyIGJ1ZlsxMDBdOwoKICAg
ICAgICAgIHNwcmludF92YWx1ZSAoYnVmLCB0ZXN0KTsKICAgICAgICAgIGFzX2JhZF93aGVyZSAo
ZmlsZSwgbGluZSwgZXJyLCBidWYsIG1pbiwgbWF4KTsKICAgICAgICB9CiAgICB9CgogIGlmIChv
cGVyYW5kLT5pbnNlcnQpCiAgICB7CiAgICAgIGNvbnN0IGNoYXIgKmVycm1zZzsKCiAgICAgIGVy
cm1zZyA9ICgodm9pZCAqKTApOwogICAgICBpbnNuID0gKCpvcGVyYW5kLT5pbnNlcnQpIChpbnNu
LCAobG9uZykgdmFsLCBwcGNfY3B1LCAmZXJybXNnKTsKICAgICAgaWYgKGVycm1zZyAhPSAoY29u
c3QgY2hhciAqKSAoKHZvaWQgKikwKSkKICAgICAgICBhc19iYWRfd2hlcmUgKGZpbGUsIGxpbmUs
IGVycm1zZyk7CiAgICB9CiAgZWxzZQogICAgaW5zbiB8PSAoKChsb25nKSB2YWwgJiAoKDEgPDwg
b3BlcmFuZC0+Yml0cykgLSAxKSkKICAgICAgICAgICAgIDw8IG9wZXJhbmQtPnNoaWZ0KTsKCiAg
cmV0dXJuIGluc247Cn0KCgoKCnN0YXRpYyBiZmRfcmVsb2NfY29kZV9yZWFsX3R5cGUKcHBjX2Vs
Zl9zdWZmaXggKHN0cl9wLCBleHBfcCkKICAgICBjaGFyICoqc3RyX3A7CiAgICAgZXhwcmVzc2lv
blMgKmV4cF9wOwp7CiAgc3RydWN0IG1hcF9iZmQgewogICAgY2hhciAqc3RyaW5nOwogICAgaW50
IGxlbmd0aDsKICAgIGludCByZWxvYzsKICB9OwoKICBjaGFyIGlkZW50WzIwXTsKICBjaGFyICpz
dHIgPSAqc3RyX3A7CiAgY2hhciAqc3RyMjsKICBpbnQgY2g7CiAgaW50IGxlbjsKICBjb25zdCBz
dHJ1Y3QgbWFwX2JmZCAqcHRyOwoKCgogIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFwX2JmZCBtYXBw
aW5nW10gPSB7CiAgICB7ICJsIiwgc2l6ZW9mICgibCIpLTEsIChpbnQpIEJGRF9SRUxPQ19MTzE2
IH0sCiAgICB7ICJoIiwgc2l6ZW9mICgiaCIpLTEsIChpbnQpIEJGRF9SRUxPQ19ISTE2IH0sCiAg
ICB7ICJoYSIsIHNpemVvZiAoImhhIiktMSwgKGludCkgQkZEX1JFTE9DX0hJMTZfUyB9LAogICAg
eyAiYnJ0YWtlbiIsIHNpemVvZiAoImJydGFrZW4iKS0xLCAoaW50KSBCRkRfUkVMT0NfUFBDX0Ix
Nl9CUlRBS0VOIH0sCiAgICB7ICJicm50YWtlbiIsIHNpemVvZiAoImJybnRha2VuIiktMSwgKGlu
dCkgQkZEX1JFTE9DX1BQQ19CMTZfQlJOVEFLRU4gfSwKICAgIHsgImdvdCIsIHNpemVvZiAoImdv
dCIpLTEsIChpbnQpIEJGRF9SRUxPQ18xNl9HT1RPRkYgfSwKICAgIHsgImdvdEBsIiwgc2l6ZW9m
ICgiZ290QGwiKS0xLCAoaW50KSBCRkRfUkVMT0NfTE8xNl9HT1RPRkYgfSwKICAgIHsgImdvdEBo
Iiwgc2l6ZW9mICgiZ290QGgiKS0xLCAoaW50KSBCRkRfUkVMT0NfSEkxNl9HT1RPRkYgfSwKICAg
IHsgImdvdEBoYSIsIHNpemVvZiAoImdvdEBoYSIpLTEsIChpbnQpIEJGRF9SRUxPQ19ISTE2X1Nf
R09UT0ZGIH0sCiAgICB7ICJmaXh1cCIsIHNpemVvZiAoImZpeHVwIiktMSwgKGludCkgQkZEX1JF
TE9DX0NUT1IgfSwKICAgIHsgInBsdCIsIHNpemVvZiAoInBsdCIpLTEsIChpbnQpIEJGRF9SRUxP
Q18yNF9QTFRfUENSRUwgfSwKICAgIHsgInBsdHJlbDI0Iiwgc2l6ZW9mICgicGx0cmVsMjQiKS0x
LCAoaW50KSBCRkRfUkVMT0NfMjRfUExUX1BDUkVMIH0sCiAgICB7ICJjb3B5Iiwgc2l6ZW9mICgi
Y29weSIpLTEsIChpbnQpIEJGRF9SRUxPQ19QUENfQ09QWSB9LAogICAgeyAiZ2xvYmRhdCIsIHNp
emVvZiAoImdsb2JkYXQiKS0xLCAoaW50KSBCRkRfUkVMT0NfUFBDX0dMT0JfREFUIH0sCiAgICB7
ICJsb2NhbDI0cGMiLCBzaXplb2YgKCJsb2NhbDI0cGMiKS0xLCAoaW50KSBCRkRfUkVMT0NfUFBD
X0xPQ0FMMjRQQyB9LAogICAgeyAibG9jYWwiLCBzaXplb2YgKCJsb2NhbCIpLTEsIChpbnQpIEJG
RF9SRUxPQ19QUENfTE9DQUwyNFBDIH0sCiAgICB7ICJwbHRyZWwiLCBzaXplb2YgKCJwbHRyZWwi
KS0xLCAoaW50KSBCRkRfUkVMT0NfMzJfUExUX1BDUkVMIH0sCiAgICB7ICJwbHRAbCIsIHNpemVv
ZiAoInBsdEBsIiktMSwgKGludCkgQkZEX1JFTE9DX0xPMTZfUExUT0ZGIH0sCiAgICB7ICJwbHRA
aCIsIHNpemVvZiAoInBsdEBoIiktMSwgKGludCkgQkZEX1JFTE9DX0hJMTZfUExUT0ZGIH0sCiAg
ICB7ICJwbHRAaGEiLCBzaXplb2YgKCJwbHRAaGEiKS0xLCAoaW50KSBCRkRfUkVMT0NfSEkxNl9T
X1BMVE9GRiB9LAogICAgeyAic2RhcmVsIiwgc2l6ZW9mICgic2RhcmVsIiktMSwgKGludCkgQkZE
X1JFTE9DX0dQUkVMMTYgfSwKICAgIHsgInNlY3RvZmYiLCBzaXplb2YgKCJzZWN0b2ZmIiktMSwg
KGludCkgQkZEX1JFTE9DXzE2X0JBU0VSRUwgfSwKICAgIHsgInNlY3RvZmZAbCIsIHNpemVvZiAo
InNlY3RvZmZAbCIpLTEsIChpbnQpIEJGRF9SRUxPQ19MTzE2X0JBU0VSRUwgfSwKICAgIHsgInNl
Y3RvZmZAaCIsIHNpemVvZiAoInNlY3RvZmZAaCIpLTEsIChpbnQpIEJGRF9SRUxPQ19ISTE2X0JB
U0VSRUwgfSwKICAgIHsgInNlY3RvZmZAaGEiLCBzaXplb2YgKCJzZWN0b2ZmQGhhIiktMSwgKGlu
dCkgQkZEX1JFTE9DX0hJMTZfU19CQVNFUkVMIH0sCiAgICB7ICJuYWRkciIsIHNpemVvZiAoIm5h
ZGRyIiktMSwgKGludCkgQkZEX1JFTE9DX1BQQ19FTUJfTkFERFIzMiB9LAogICAgeyAibmFkZHIx
NiIsIHNpemVvZiAoIm5hZGRyMTYiKS0xLCAoaW50KSBCRkRfUkVMT0NfUFBDX0VNQl9OQUREUjE2
IH0sCiAgICB7ICJuYWRkckBsIiwgc2l6ZW9mICgibmFkZHJAbCIpLTEsIChpbnQpIEJGRF9SRUxP
Q19QUENfRU1CX05BRERSMTZfTE8gfSwKICAgIHsgIm5hZGRyQGgiLCBzaXplb2YgKCJuYWRkckBo
IiktMSwgKGludCkgQkZEX1JFTE9DX1BQQ19FTUJfTkFERFIxNl9ISSB9LAogICAgeyAibmFkZHJA
aGEiLCBzaXplb2YgKCJuYWRkckBoYSIpLTEsIChpbnQpIEJGRF9SRUxPQ19QUENfRU1CX05BRERS
MTZfSEEgfSwKICAgIHsgInNkYWkxNiIsIHNpemVvZiAoInNkYWkxNiIpLTEsIChpbnQpIEJGRF9S
RUxPQ19QUENfRU1CX1NEQUkxNiB9LAogICAgeyAic2RhMnJlbCIsIHNpemVvZiAoInNkYTJyZWwi
KS0xLCAoaW50KSBCRkRfUkVMT0NfUFBDX0VNQl9TREEyUkVMIH0sCiAgICB7ICJzZGEyaTE2Iiwg
c2l6ZW9mICgic2RhMmkxNiIpLTEsIChpbnQpIEJGRF9SRUxPQ19QUENfRU1CX1NEQTJJMTYgfSwK
ICAgIHsgInNkYTIxIiwgc2l6ZW9mICgic2RhMjEiKS0xLCAoaW50KSBCRkRfUkVMT0NfUFBDX0VN
Ql9TREEyMSB9LAogICAgeyAibXJrcmVmIiwgc2l6ZW9mICgibXJrcmVmIiktMSwgKGludCkgQkZE
X1JFTE9DX1BQQ19FTUJfTVJLUkVGIH0sCiAgICB7ICJyZWxzZWN0Iiwgc2l6ZW9mICgicmVsc2Vj
dCIpLTEsIChpbnQpIEJGRF9SRUxPQ19QUENfRU1CX1JFTFNFQzE2IH0sCiAgICB7ICJyZWxzZWN0
QGwiLCBzaXplb2YgKCJyZWxzZWN0QGwiKS0xLCAoaW50KSBCRkRfUkVMT0NfUFBDX0VNQl9SRUxT
VF9MTyB9LAogICAgeyAicmVsc2VjdEBoIiwgc2l6ZW9mICgicmVsc2VjdEBoIiktMSwgKGludCkg
QkZEX1JFTE9DX1BQQ19FTUJfUkVMU1RfSEkgfSwKICAgIHsgInJlbHNlY3RAaGEiLCBzaXplb2Yg
KCJyZWxzZWN0QGhhIiktMSwgKGludCkgQkZEX1JFTE9DX1BQQ19FTUJfUkVMU1RfSEEgfSwKICAg
IHsgImJpdGZsZCIsIHNpemVvZiAoImJpdGZsZCIpLTEsIChpbnQpIEJGRF9SRUxPQ19QUENfRU1C
X0JJVF9GTEQgfSwKICAgIHsgInJlbHNkYSIsIHNpemVvZiAoInJlbHNkYSIpLTEsIChpbnQpIEJG
RF9SRUxPQ19QUENfRU1CX1JFTFNEQSB9LAogICAgeyAieGdvdCIsIHNpemVvZiAoInhnb3QiKS0x
LCAoaW50KSBCRkRfUkVMT0NfUFBDX1RPQzE2IH0sCgoKICAgIHsgImhpZ2hlciIsIHNpemVvZiAo
ImhpZ2hlciIpLTEsIC0gKGludCkgQkZEX1JFTE9DX1BQQzY0X0hJR0hFUiB9LAogICAgeyAiaGln
aGVyYSIsIHNpemVvZiAoImhpZ2hlcmEiKS0xLCAtIChpbnQpIEJGRF9SRUxPQ19QUEM2NF9ISUdI
RVJfUyB9LAogICAgeyAiaGlnaGVzdCIsIHNpemVvZiAoImhpZ2hlc3QiKS0xLCAtIChpbnQpIEJG
RF9SRUxPQ19QUEM2NF9ISUdIRVNUIH0sCiAgICB7ICJoaWdoZXN0YSIsIHNpemVvZiAoImhpZ2hl
c3RhIiktMSwgLSAoaW50KSBCRkRfUkVMT0NfUFBDNjRfSElHSEVTVF9TIH0sCiAgICB7ICJ0b2Ni
YXNlIiwgc2l6ZW9mICgidG9jYmFzZSIpLTEsIC0gKGludCkgQkZEX1JFTE9DX1BQQzY0X1RPQyB9
LAogICAgeyAidG9jIiwgc2l6ZW9mICgidG9jIiktMSwgLSAoaW50KSBCRkRfUkVMT0NfUFBDX1RP
QzE2IH0sCiAgICB7ICJ0b2NAbCIsIHNpemVvZiAoInRvY0BsIiktMSwgLSAoaW50KSBCRkRfUkVM
T0NfUFBDNjRfVE9DMTZfTE8gfSwKICAgIHsgInRvY0BoIiwgc2l6ZW9mICgidG9jQGgiKS0xLCAt
IChpbnQpIEJGRF9SRUxPQ19QUEM2NF9UT0MxNl9ISSB9LAogICAgeyAidG9jQGhhIiwgc2l6ZW9m
ICgidG9jQGhhIiktMSwgLSAoaW50KSBCRkRfUkVMT0NfUFBDNjRfVE9DMTZfSEEgfSwKICAgIHsg
KGNoYXIgKikgMCwgMCwgKGludCkgQkZEX1JFTE9DX1VOVVNFRCB9CiAgfTsKCiAgaWYgKCpzdHIr
KyAhPSAnQCcpCiAgICByZXR1cm4gQkZEX1JFTE9DX1VOVVNFRDsKCiAgZm9yIChjaCA9ICpzdHIs
IHN0cjIgPSBpZGVudDsKICAgICAgIChzdHIyIDwgaWRlbnQgKyBzaXplb2YgKGlkZW50KSAtIDEK
ICAgICAgICAmJiAoKF9zY2hfaXN0YWJsZVsoY2gpICYgMHhmZl0gJiAodW5zaWduZWQgc2hvcnQp
KF9zY2hfaXNhbG51bSkpIHx8IGNoID09ICdAJykpOwogICAgICAgY2ggPSAqKytzdHIpCiAgICB7
CiAgICAgICpzdHIyKysgPSBfc2NoX3RvbG93ZXJbKGNoKSAmIDB4ZmZdOwogICAgfQoKICAqc3Ry
MiA9ICdcMCc7CiAgbGVuID0gc3RyMiAtIGlkZW50OwoKICBjaCA9IGlkZW50WzBdOwogIGZvciAo
cHRyID0gJm1hcHBpbmdbMF07IHB0ci0+bGVuZ3RoID4gMDsgcHRyKyspCiAgICBpZiAoY2ggPT0g
cHRyLT5zdHJpbmdbMF0KICAgICAgICAmJiBsZW4gPT0gcHRyLT5sZW5ndGgKICAgICAgICAmJiBt
ZW1jbXAgKGlkZW50LCBwdHItPnN0cmluZywgcHRyLT5sZW5ndGgpID09IDApCiAgICAgIHsKICAg
ICAgICBpbnQgcmVsb2MgPSBwdHItPnJlbG9jOwoKICAgICAgICBpZiAocmVsb2MgPCAwKQogICAg
ICAgICAgewogICAgICAgICAgICBpZiAoIXBwY19vYmo2NCkKICAgICAgICAgICAgICByZXR1cm4g
QkZEX1JFTE9DX1VOVVNFRDsKICAgICAgICAgICAgcmVsb2MgPSAtcmVsb2M7CiAgICAgICAgICB9
CgogICAgICAgIGlmIChleHBfcC0+WF9hZGRfbnVtYmVyICE9IDAKICAgICAgICAgICAgJiYgKHJl
bG9jID09IChpbnQpIEJGRF9SRUxPQ18xNl9HT1RPRkYKICAgICAgICAgICAgICAgIHx8IHJlbG9j
ID09IChpbnQpIEJGRF9SRUxPQ19MTzE2X0dPVE9GRgogICAgICAgICAgICAgICAgfHwgcmVsb2Mg
PT0gKGludCkgQkZEX1JFTE9DX0hJMTZfR09UT0ZGCiAgICAgICAgICAgICAgICB8fCByZWxvYyA9
PSAoaW50KSBCRkRfUkVMT0NfSEkxNl9TX0dPVE9GRikpCiAgICAgICAgICBhc193YXJuIChkY2dl
dHRleHQgKCgodm9pZCAqKTApLCAiaWRlbnRpZmllcitjb25zdGFudEBnb3QgbWVhbnMgaWRlbnRp
ZmllckBnb3QrY29uc3RhbnQiLCA2KSk7CgoKICAgICAgICBpZiAoKnN0ciA9PSAnLScgfHwgKnN0
ciA9PSAnKycpCiAgICAgICAgICB7CiAgICAgICAgICAgIGNoYXIgKm9yaWdfbGluZSA9IGlucHV0
X2xpbmVfcG9pbnRlcjsKICAgICAgICAgICAgZXhwcmVzc2lvblMgbmV3X2V4cDsKCiAgICAgICAg
ICAgIGlucHV0X2xpbmVfcG9pbnRlciA9IHN0cjsKICAgICAgICAgICAgZXhwciAoMCwgJm5ld19l
eHApOwogICAgICAgICAgICBpZiAobmV3X2V4cC5YX29wID09IE9fY29uc3RhbnQpCiAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgZXhwX3AtPlhfYWRkX251bWJlciArPSBuZXdfZXhwLlhf
YWRkX251bWJlcjsKICAgICAgICAgICAgICAgIHN0ciA9IGlucHV0X2xpbmVfcG9pbnRlcjsKICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJmlucHV0X2xpbmVfcG9pbnRlciAhPSBzdHJf
cCkKICAgICAgICAgICAgICBpbnB1dF9saW5lX3BvaW50ZXIgPSBvcmlnX2xpbmU7CiAgICAgICAg
ICB9CiAgICAgICAgKnN0cl9wID0gc3RyOwoKICAgICAgICBpZiAocmVsb2MgPT0gKGludCkgQkZE
X1JFTE9DX1BQQzY0X1RPQwogICAgICAgICAgICAmJiBleHBfcC0+WF9vcCA9PSBPX3N5bWJvbCkK
ICAgICAgICAgIHsKCgoKICAgICAgICAgICAgZXhwX3AtPlhfYWRkX3N5bWJvbCA9ICZhYnNfc3lt
Ym9sOwogICAgICAgICAgfQoKICAgICAgICByZXR1cm4gKGJmZF9yZWxvY19jb2RlX3JlYWxfdHlw
ZSkgcmVsb2M7CiAgICAgIH0KCiAgcmV0dXJuIEJGRF9SRUxPQ19VTlVTRUQ7Cn0KCgoKc3RhdGlj
IHZvaWQKcHBjX2VsZl9jb25zIChuYnl0ZXMpCiAgICAgcmVnaXN0ZXIgaW50IG5ieXRlczsKewog
IGV4cHJlc3Npb25TIGV4cDsKICBiZmRfcmVsb2NfY29kZV9yZWFsX3R5cGUgcmVsb2M7CgogIGlm
IChpc19pdF9lbmRfb2Zfc3RhdGVtZW50ICgpKQogICAgewogICAgICBkZW1hbmRfZW1wdHlfcmVz
dF9vZl9saW5lICgpOwogICAgICByZXR1cm47CiAgICB9CgogIGRvCiAgICB7CiAgICAgIGV4cHIg
KDAsICZleHApOwogICAgICBpZiAoZXhwLlhfb3AgPT0gT19zeW1ib2wKICAgICAgICAgICYmICpp
bnB1dF9saW5lX3BvaW50ZXIgPT0gJ0AnCiAgICAgICAgICAmJiAocmVsb2MgPSBwcGNfZWxmX3N1
ZmZpeCAoJmlucHV0X2xpbmVfcG9pbnRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmZXhwKSkgIT0gQkZEX1JFTE9DX1VOVVNFRCkKICAgICAgICB7CiAgICAgICAgICBy
ZWxvY19ob3d0b190eXBlICpyZWxvY19ob3d0bzsKICAgICAgICAgIGludCBzaXplOwoKICAgICAg
ICAgIHJlbG9jX2hvd3RvID0gYmZkX3JlbG9jX3R5cGVfbG9va3VwIChzdGRvdXRwdXQsIHJlbG9j
KTsKICAgICAgICAgIHNpemUgPSBiZmRfZ2V0X3JlbG9jX3NpemUgKHJlbG9jX2hvd3RvKTsKCiAg
ICAgICAgICBpZiAoc2l6ZSA+IG5ieXRlcykKICAgICAgICAgICAgewogICAgICAgICAgICAgIGFz
X2JhZCAoZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgIiVzIHJlbG9jYXRpb25zIGRvIG5vdCBmaXQg
aW4gJWQgYnl0ZXNcbiIsIDYpLAogICAgICAgICAgICAgICAgICAgICAgcmVsb2NfaG93dG8tPm5h
bWUsIG5ieXRlcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewog
ICAgICAgICAgICAgIGNoYXIgKnA7CiAgICAgICAgICAgICAgaW50IG9mZnNldDsKCiAgICAgICAg
ICAgICAgcCA9IGZyYWdfbW9yZSAobmJ5dGVzKTsKICAgICAgICAgICAgICBvZmZzZXQgPSAwOwog
ICAgICAgICAgICAgIGlmICh0YXJnZXRfYmlnX2VuZGlhbikKICAgICAgICAgICAgICAgIG9mZnNl
dCA9IG5ieXRlcyAtIHNpemU7CiAgICAgICAgICAgICAgZml4X25ld19leHAgKGZyYWdfbm93LCBw
IC0gZnJhZ19ub3ctPmZyX2xpdGVyYWwgKyBvZmZzZXQsIHNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZleHAsIDAsIHJlbG9jKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAg
ZWxzZQogICAgICAgIGVtaXRfZXhwciAoJmV4cCwgKHVuc2lnbmVkIGludCkgbmJ5dGVzKTsKICAg
IH0KICB3aGlsZSAoKmlucHV0X2xpbmVfcG9pbnRlcisrID09ICcsJyk7CgoKICBpbnB1dF9saW5l
X3BvaW50ZXItLTsKICBkZW1hbmRfZW1wdHlfcmVzdF9vZl9saW5lICgpOwp9CgoKc3RhdGljIHZv
aWQKcHBjX2VsZl9yZGF0YSAoeHh4KQogICAgIGludCB4eHg7CnsKICBjaGFyICpzYXZlX2xpbmUg
PSBpbnB1dF9saW5lX3BvaW50ZXI7CiAgc3RhdGljIGNoYXIgc2VjdGlvbltdID0gIi5yb2RhdGFc
biI7CgoKICBpbnB1dF9saW5lX3BvaW50ZXIgPSBzZWN0aW9uOwogIG9ial9lbGZfc2VjdGlvbiAo
eHh4KTsKCiAgaW5wdXRfbGluZV9wb2ludGVyID0gc2F2ZV9saW5lOwp9CgoKc3RhdGljIHZvaWQK
cHBjX2VsZl9sY29tbSAoeHh4KQogICAgIGludCB4eHggX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKewogIHJlZ2lzdGVyIGNoYXIgKm5hbWU7CiAgcmVnaXN0ZXIgY2hhciBjOwogIHJlZ2lz
dGVyIGNoYXIgKnA7CiAgb2Zmc2V0VCBzaXplOwogIHJlZ2lzdGVyIHN5bWJvbFMgKnN5bWJvbFA7
CiAgb2Zmc2V0VCBhbGlnbjsKICBzZWdUIG9sZF9zZWM7CiAgaW50IG9sZF9zdWJzZWM7CiAgY2hh
ciAqcGZyYWc7CiAgaW50IGFsaWduMjsKCiAgbmFtZSA9IGlucHV0X2xpbmVfcG9pbnRlcjsKICBj
ID0gZ2V0X3N5bWJvbF9lbmQgKCk7CgoKICBwID0gaW5wdXRfbGluZV9wb2ludGVyOwogICpwID0g
YzsKICB7IGlmICgqIGlucHV0X2xpbmVfcG9pbnRlciA9PSAnICcpICsrIGlucHV0X2xpbmVfcG9p
bnRlcjsgfTsKICBpZiAoKmlucHV0X2xpbmVfcG9pbnRlciAhPSAnLCcpCiAgICB7CiAgICAgIGFz
X2JhZCAoZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgIkV4cGVjdGVkIGNvbW1hIGFmdGVyIHN5bWJv
bC1uYW1lOiByZXN0IG9mIGxpbmUgaWdub3JlZC4iLCA2KSk7CiAgICAgIGlnbm9yZV9yZXN0X29m
X2xpbmUgKCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgaW5wdXRfbGluZV9wb2ludGVyKys7CiAg
aWYgKChzaXplID0gZ2V0X2Fic29sdXRlX2V4cHJlc3Npb24gKCkpIDwgMCkKICAgIHsKICAgICAg
YXNfd2FybiAoZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgIi5DT01Nb24gbGVuZ3RoICglbGQuKSA8
MCEgSWdub3JlZC4iLCA2KSwgKGxvbmcpIHNpemUpOwogICAgICBpZ25vcmVfcmVzdF9vZl9saW5l
ICgpOwogICAgICByZXR1cm47CiAgICB9CgoKICBpZiAoKmlucHV0X2xpbmVfcG9pbnRlciAhPSAn
LCcpCiAgICBhbGlnbiA9IDg7CiAgZWxzZQogICAgewogICAgICArK2lucHV0X2xpbmVfcG9pbnRl
cjsKICAgICAgYWxpZ24gPSBnZXRfYWJzb2x1dGVfZXhwcmVzc2lvbiAoKTsKICAgICAgaWYgKGFs
aWduIDw9IDApCiAgICAgICAgewogICAgICAgICAgYXNfd2FybiAoZGNnZXR0ZXh0ICgoKHZvaWQg
KikwKSwgImlnbm9yaW5nIGJhZCBhbGlnbm1lbnQiLCA2KSk7CiAgICAgICAgICBhbGlnbiA9IDg7
CiAgICAgICAgfQogICAgfQoKICAqcCA9IDA7CiAgc3ltYm9sUCA9IHN5bWJvbF9maW5kX29yX21h
a2UgKG5hbWUpOwogICpwID0gYzsKCiAgaWYgKFNfSVNfREVGSU5FRCAoc3ltYm9sUCkgJiYgISBT
X0lTX0NPTU1PTiAoc3ltYm9sUCkpCiAgICB7CiAgICAgIGFzX2JhZCAoZGNnZXR0ZXh0ICgoKHZv
aWQgKikwKSwgIklnbm9yaW5nIGF0dGVtcHQgdG8gcmUtZGVmaW5lIHN5bWJvbCBgJXMnLiIsIDYp
LAogICAgICAgICAgICAgIFNfR0VUX05BTUUgKHN5bWJvbFApKTsKICAgICAgaWdub3JlX3Jlc3Rf
b2ZfbGluZSAoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICBpZiAoU19HRVRfVkFMVUUgKHN5bWJv
bFApICYmIFNfR0VUX1ZBTFVFIChzeW1ib2xQKSAhPSAodmFsdWVUKSBzaXplKQogICAgewogICAg
ICBhc19iYWQgKGRjZ2V0dGV4dCAoKCh2b2lkICopMCksICJMZW5ndGggb2YgLmxjb21tIFwiJXNc
IiBpcyBhbHJlYWR5ICVsZC4gTm90IGNoYW5nZWQgdG8gJWxkLiIsIDYpLAogICAgICAgICAgICAg
IFNfR0VUX05BTUUgKHN5bWJvbFApLAogICAgICAgICAgICAgIChsb25nKSBTX0dFVF9WQUxVRSAo
c3ltYm9sUCksCiAgICAgICAgICAgICAgKGxvbmcpIHNpemUpOwoKICAgICAgaWdub3JlX3Jlc3Rf
b2ZfbGluZSAoKTsKICAgICAgcmV0dXJuOwogICAgfQoKCiAgb2xkX3NlYyA9IG5vd19zZWc7CiAg
b2xkX3N1YnNlYyA9IG5vd19zdWJzZWc7CiAgaWYgKGFsaWduKQogICAgewoKICAgICAgZm9yIChh
bGlnbjIgPSAwOyAoYWxpZ24gJiAxKSA9PSAwOyBhbGlnbiA+Pj0gMSwgKythbGlnbjIpOwogICAg
ICBpZiAoYWxpZ24gIT0gMSkKICAgICAgICB7CiAgICAgICAgICBhc19iYWQgKGRjZ2V0dGV4dCAo
KCh2b2lkICopMCksICJDb21tb24gYWxpZ25tZW50IG5vdCBhIHBvd2VyIG9mIDIiLCA2KSk7CiAg
ICAgICAgICBpZ25vcmVfcmVzdF9vZl9saW5lICgpOwogICAgICAgICAgcmV0dXJuOwogICAgICAg
IH0KICAgIH0KICBlbHNlCiAgICBhbGlnbjIgPSAwOwoKICByZWNvcmRfYWxpZ25tZW50IChic3Nf
c2VjdGlvbiwgYWxpZ24yKTsKICBzdWJzZWdfc2V0IChic3Nfc2VjdGlvbiwgMCk7CiAgaWYgKGFs
aWduMikKICAgIGZyYWdfYWxpZ24gKGFsaWduMiwgMCwgMCk7CiAgaWYgKFNfR0VUX1NFR01FTlQg
KHN5bWJvbFApID09IGJzc19zZWN0aW9uKQogICAgc3ltYm9sX2dldF9mcmFnIChzeW1ib2xQKS0+
ZnJfc3ltYm9sID0gMDsKICBzeW1ib2xfc2V0X2ZyYWcgKHN5bWJvbFAsIGZyYWdfbm93KTsKICBw
ZnJhZyA9IGZyYWdfdmFyIChyc19vcmcsIDEsIDEsIChyZWxheF9zdWJzdGF0ZVQpIDAsIHN5bWJv
bFAsIHNpemUsCiAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgMCk7CiAgKnBmcmFnID0gMDsK
ICAoKChlbGZfc3ltYm9sX3R5cGUgKikgKCYoc3ltYm9sX2dldF9iZmRzeW0gKHN5bWJvbFApKS0+
dGhlX2JmZCkpLT5pbnRlcm5hbF9lbGZfc3ltLnN0X3NpemUgPSAoc2l6ZSkpOwogIFNfU0VUX1NF
R01FTlQgKHN5bWJvbFAsIGJzc19zZWN0aW9uKTsKICBzdWJzZWdfc2V0IChvbGRfc2VjLCBvbGRf
c3Vic2VjKTsKICBkZW1hbmRfZW1wdHlfcmVzdF9vZl9saW5lICgpOwp9CgoKCgpzdGF0aWMgdm9p
ZApwcGNfZWxmX3ZhbGlkYXRlX2ZpeCAoZml4cCwgc2VnKQogICAgIGZpeFMgKmZpeHA7CiAgICAg
c2VnVCBzZWc7CnsKICBpZiAoZml4cC0+ZnhfZG9uZSB8fCBmaXhwLT5meF9wY3JlbCkKICAgIHJl
dHVybjsKCiAgc3dpdGNoIChzaGxpYikKICAgIHsKICAgIGNhc2UgU0hMSUJfTk9ORToKICAgIGNh
c2UgU0hMSUJfUElDOgogICAgICByZXR1cm47CgogICAgY2FzZSBTSExJQl9NUkVMT0NBVEFCTEU6
CiAgICAgIGlmIChmaXhwLT5meF9yX3R5cGUgPD0gQkZEX1JFTE9DX1VOVVNFRAogICAgICAgICAg
JiYgZml4cC0+Znhfcl90eXBlICE9IEJGRF9SRUxPQ18xNl9HT1RPRkYKICAgICAgICAgICYmIGZp
eHAtPmZ4X3JfdHlwZSAhPSBCRkRfUkVMT0NfSEkxNl9HT1RPRkYKICAgICAgICAgICYmIGZpeHAt
PmZ4X3JfdHlwZSAhPSBCRkRfUkVMT0NfTE8xNl9HT1RPRkYKICAgICAgICAgICYmIGZpeHAtPmZ4
X3JfdHlwZSAhPSBCRkRfUkVMT0NfSEkxNl9TX0dPVE9GRgogICAgICAgICAgJiYgZml4cC0+Znhf
cl90eXBlICE9IEJGRF9SRUxPQ18xNl9CQVNFUkVMCiAgICAgICAgICAmJiBmaXhwLT5meF9yX3R5
cGUgIT0gQkZEX1JFTE9DX0xPMTZfQkFTRVJFTAogICAgICAgICAgJiYgZml4cC0+Znhfcl90eXBl
ICE9IEJGRF9SRUxPQ19ISTE2X0JBU0VSRUwKICAgICAgICAgICYmIGZpeHAtPmZ4X3JfdHlwZSAh
PSBCRkRfUkVMT0NfSEkxNl9TX0JBU0VSRUwKICAgICAgICAgICYmIChzZWctPmZsYWdzICYgMHgw
MDIpICE9IDAKICAgICAgICAgICYmIHN0cmNtcCAoKChzZWcpLT5uYW1lICsgMCksICIuZ290MiIp
ICE9IDAKICAgICAgICAgICYmIHN0cmNtcCAoKChzZWcpLT5uYW1lICsgMCksICIuZHRvcnMiKSAh
PSAwCiAgICAgICAgICAmJiBzdHJjbXAgKCgoc2VnKS0+bmFtZSArIDApLCAiLmN0b3JzIikgIT0g
MAogICAgICAgICAgJiYgc3RyY21wICgoKHNlZyktPm5hbWUgKyAwKSwgIi5maXh1cCIpICE9IDAK
ICAgICAgICAgICYmIHN0cmNtcCAoKChzZWcpLT5uYW1lICsgMCksICIuZ2NjX2V4Y2VwdF90YWJs
ZSIpICE9IDAKICAgICAgICAgICYmIHN0cmNtcCAoKChzZWcpLT5uYW1lICsgMCksICIuZWhfZnJh
bWUiKSAhPSAwCiAgICAgICAgICAmJiBzdHJjbXAgKCgoc2VnKS0+bmFtZSArIDApLCAiLmV4X3No
YXJlZCIpICE9IDApCiAgICAgICAgewogICAgICAgICAgaWYgKChzZWctPmZsYWdzICYgKDB4MDEw
IHwgMHgwMjApKSAhPSAwCiAgICAgICAgICAgICAgfHwgZml4cC0+Znhfcl90eXBlICE9IEJGRF9S
RUxPQ19DVE9SKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgYXNfYmFkX3doZXJlIChmaXhw
LT5meF9maWxlLCBmaXhwLT5meF9saW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGNn
ZXR0ZXh0ICgoKHZvaWQgKikwKSwgIlJlbG9jYXRpb24gY2Fubm90IGJlIGRvbmUgd2hlbiB1c2lu
ZyAtbXJlbG9jYXRhYmxlIiwgNikpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICByZXR1
cm47CiAgICB9Cn0KCgoKCnZvaWQKcHBjX2Zyb2JfZmlsZV9iZWZvcmVfYWRqdXN0ICgpCnsKICBz
eW1ib2xTICpzeW1wOwoKICBpZiAoIXBwY19vYmo2NCkKICAgIHJldHVybjsKCiAgZm9yIChzeW1w
ID0gc3ltYm9sX3Jvb3RQOyBzeW1wOyBzeW1wID0gc3ltYm9sX25leHQgKHN5bXApKQogICAgewog
ICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICBjaGFyICpkb3RuYW1lOwogICAgICBzeW1ib2xT
ICpkb3RzeW07CiAgICAgIHNpemVfdCBsZW47CgogICAgICBuYW1lID0gU19HRVRfTkFNRSAoc3lt
cCk7CiAgICAgIGlmIChuYW1lWzBdID09ICcuJykKICAgICAgICBjb250aW51ZTsKCiAgICAgIGlm
ICghIFNfSVNfV0VBSyAoc3ltcCkKICAgICAgICAgIHx8IFNfSVNfREVGSU5FRCAoc3ltcCkpCiAg
ICAgICAgY29udGludWU7CgogICAgICBsZW4gPSBzdHJsZW4gKG5hbWUpICsgMTsKICAgICAgZG90
bmFtZSA9IHhtYWxsb2MgKGxlbiArIDEpOwogICAgICBkb3RuYW1lWzBdID0gJy4nOwogICAgICBt
ZW1jcHkgKGRvdG5hbWUgKyAxLCBuYW1lLCBsZW4pOwogICAgICBkb3RzeW0gPSBzeW1ib2xfZmlu
ZCAoZG90bmFtZSk7CiAgICAgIGZyZWUgKGRvdG5hbWUpOwogICAgICBpZiAoZG90c3ltICE9ICgo
dm9pZCAqKTApICYmIChzeW1ib2xfdXNlZF9wIChkb3RzeW0pCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfHwgc3ltYm9sX3VzZWRfaW5fcmVsb2NfcCAoZG90c3ltKSkpCiAgICAgICAgewog
ICAgICAgICAgc3ltYm9sX21hcmtfdXNlZCAoc3ltcCk7CiAgICAgICAgfQogICAgfQoKCiAgc3lt
cCA9IHN5bWJvbF9maW5kICgiLlRPQy4iKTsKICBpZiAoc3ltcCAhPSAoKHZvaWQgKikwKSkKICAg
IHN5bWJvbF9yZW1vdmUgKHN5bXAsICZzeW1ib2xfcm9vdFAsICZzeW1ib2xfbGFzdFApOwp9CiMg
MTg0NCAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiCnN0cnVjdCBwcGNf
Zml4dXAKewogIGV4cHJlc3Npb25TIGV4cDsKICBpbnQgb3BpbmRleDsKICBiZmRfcmVsb2NfY29k
ZV9yZWFsX3R5cGUgcmVsb2M7Cn07CgoKCgoKdm9pZAptZF9hc3NlbWJsZSAoc3RyKQogICAgIGNo
YXIgKnN0cjsKewogIGNoYXIgKnM7CiAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlICpvcGNv
ZGU7CiAgdW5zaWduZWQgbG9uZyBpbnNuOwogIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm9waW5kZXhf
cHRyOwogIGludCBza2lwX29wdGlvbmFsOwogIGludCBuZWVkX3BhcmVuOwogIGludCBuZXh0X29w
aW5kZXg7CiAgc3RydWN0IHBwY19maXh1cCBmaXh1cHNbKDUpXTsKICBpbnQgZmM7CiAgY2hhciAq
ZjsKICBpbnQgaTsKCiAgYmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlIHJlbG9jOwoKCgogIGZvciAo
cyA9IHN0cjsgKnMgIT0gJ1wwJyAmJiAhIChfc2NoX2lzdGFibGVbKCpzKSAmIDB4ZmZdICYgKHVu
c2lnbmVkIHNob3J0KShfc2NoX2lzc3BhY2UpKTsgcysrKQogICAgOwogIGlmICgqcyAhPSAnXDAn
KQogICAgKnMrKyA9ICdcMCc7CgoKICBvcGNvZGUgPSAoY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bj
b2RlICopIGhhc2hfZmluZCAocHBjX2hhc2gsIHN0cik7CiAgaWYgKG9wY29kZSA9PSAoY29uc3Qg
c3RydWN0IHBvd2VycGNfb3Bjb2RlICopICgodm9pZCAqKTApKQogICAgewogICAgICBjb25zdCBz
dHJ1Y3QgcG93ZXJwY19tYWNybyAqbWFjcm87CgogICAgICBtYWNybyA9IChjb25zdCBzdHJ1Y3Qg
cG93ZXJwY19tYWNybyAqKSBoYXNoX2ZpbmQgKHBwY19tYWNyb19oYXNoLCBzdHIpOwogICAgICBp
ZiAobWFjcm8gPT0gKGNvbnN0IHN0cnVjdCBwb3dlcnBjX21hY3JvICopICgodm9pZCAqKTApKQog
ICAgICAgIGFzX2JhZCAoZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgIlVucmVjb2duaXplZCBvcGNv
ZGU6IGAlcyciLCA2KSwgc3RyKTsKICAgICAgZWxzZQogICAgICAgIHBwY19tYWNybyAocywgbWFj
cm8pOwoKICAgICAgcmV0dXJuOwogICAgfQoKICBpbnNuID0gb3Bjb2RlLT5vcGNvZGU7CgogIHN0
ciA9IHM7CiAgd2hpbGUgKChfc2NoX2lzdGFibGVbKCpzdHIpICYgMHhmZl0gJiAodW5zaWduZWQg
c2hvcnQpKF9zY2hfaXNzcGFjZSkpKQogICAgKytzdHI7CiMgMTkxMCAiL3NyYy9iaW51dGlscy0y
LjEzL2dhcy9jb25maWcvdGMtcHBjLmMiCiAgc2tpcF9vcHRpb25hbCA9IDA7CiAgZm9yIChvcGlu
ZGV4X3B0ciA9IG9wY29kZS0+b3BlcmFuZHM7ICpvcGluZGV4X3B0ciAhPSAwOyBvcGluZGV4X3B0
cisrKQogICAgewogICAgICBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGVyYW5kICpvcGVyYW5kOwoK
ICAgICAgb3BlcmFuZCA9ICZwb3dlcnBjX29wZXJhbmRzWypvcGluZGV4X3B0cl07CiAgICAgIGlm
ICgob3BlcmFuZC0+ZmxhZ3MgJiAoMDEwMDApKSAhPSAwKQogICAgICAgIHsKICAgICAgICAgIHVu
c2lnbmVkIGludCBvcGNvdW50OwoKCgogICAgICAgICAgaWYgKCpzdHIgPT0gJ1wwJykKICAgICAg
ICAgICAgb3Bjb3VudCA9IDA7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICBvcGNvdW50ID0gMTsKICAgICAgICAgICAgICBzID0gc3RyOwogICAgICAgICAgICAgIHdo
aWxlICgocyA9IHN0cmNociAocywgJywnKSkgIT0gKGNoYXIgKikgKCh2b2lkICopMCkpCiAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICsrb3Bjb3VudDsKICAgICAgICAgICAgICAg
ICAgKytzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgoKCgogICAgICAgICAgaWYg
KG9wY291bnQgPCBzdHJsZW4gKG9wY29kZS0+b3BlcmFuZHMpKQogICAgICAgICAgICBza2lwX29w
dGlvbmFsID0gMTsKCiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgoKICBuZWVkX3Bh
cmVuID0gMDsKICBuZXh0X29waW5kZXggPSAwOwogIGZjID0gMDsKICBmb3IgKG9waW5kZXhfcHRy
ID0gb3Bjb2RlLT5vcGVyYW5kczsgKm9waW5kZXhfcHRyICE9IDA7IG9waW5kZXhfcHRyKyspCiAg
ICB7CiAgICAgIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wZXJhbmQgKm9wZXJhbmQ7CiAgICAgIGNv
bnN0IGNoYXIgKmVycm1zZzsKICAgICAgY2hhciAqaG9sZDsKICAgICAgZXhwcmVzc2lvblMgZXg7
CiAgICAgIGNoYXIgZW5kYzsKCiAgICAgIGlmIChuZXh0X29waW5kZXggPT0gMCkKICAgICAgICBv
cGVyYW5kID0gJnBvd2VycGNfb3BlcmFuZHNbKm9waW5kZXhfcHRyXTsKICAgICAgZWxzZQogICAg
ICAgIHsKICAgICAgICAgIG9wZXJhbmQgPSAmcG93ZXJwY19vcGVyYW5kc1tuZXh0X29waW5kZXhd
OwogICAgICAgICAgbmV4dF9vcGluZGV4ID0gMDsKICAgICAgICB9CgogICAgICBlcnJtc2cgPSAo
KHZvaWQgKikwKTsKCgoKICAgICAgaWYgKChvcGVyYW5kLT5mbGFncyAmICgwNCkpICE9IDApCiAg
ICAgICAgewogICAgICAgICAgaW5zbiA9ICgqb3BlcmFuZC0+aW5zZXJ0KSAoaW5zbiwgMEwsIHBw
Y19jcHUsICZlcnJtc2cpOwogICAgICAgICAgaWYgKGVycm1zZyAhPSAoY29uc3QgY2hhciAqKSAo
KHZvaWQgKikwKSkKICAgICAgICAgICAgYXNfYmFkIChlcnJtc2cpOwogICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgfQoKCgogICAgICBpZiAoKG9wZXJhbmQtPmZsYWdzICYgKDAxMDAwKSkgIT0g
MAogICAgICAgICAgJiYgc2tpcF9vcHRpb25hbCkKICAgICAgICB7CiAgICAgICAgICBpZiAob3Bl
cmFuZC0+aW5zZXJ0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaW5zbiA9ICgqb3BlcmFu
ZC0+aW5zZXJ0KSAoaW5zbiwgMEwsIHBwY19jcHUsICZlcnJtc2cpOwogICAgICAgICAgICAgIGlm
IChlcnJtc2cgIT0gKGNvbnN0IGNoYXIgKikgKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICBh
c19iYWQgKGVycm1zZyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIGlmICgob3BlcmFuZC0+Zmxh
Z3MgJiAoMDIwMDApKSAhPSAwKQogICAgICAgICAgICBuZXh0X29waW5kZXggPSAqb3BpbmRleF9w
dHIgKyAxOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKCiAgICAgIGhvbGQgPSBpbnB1
dF9saW5lX3BvaW50ZXI7CiAgICAgIGlucHV0X2xpbmVfcG9pbnRlciA9IHN0cjsKIyAyMTExICIv
c3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMuYyIKICAgICAgICB7CiAgICAgICAg
ICBpZiAoISByZWdpc3Rlcl9uYW1lICgmZXgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAg
aWYgKChvcGVyYW5kLT5mbGFncyAmICgwMjApKSAhPSAwKQogICAgICAgICAgICAgICAgY3Jfb3Bl
cmFuZCA9IHRydWU7CiAgICAgICAgICAgICAgZXhwciAoMCwgJmV4KTsKICAgICAgICAgICAgICBj
cl9vcGVyYW5kID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBzdHIgPSBp
bnB1dF9saW5lX3BvaW50ZXI7CiAgICAgIGlucHV0X2xpbmVfcG9pbnRlciA9IGhvbGQ7CgogICAg
ICBpZiAoZXguWF9vcCA9PSBPX2lsbGVnYWwpCiAgICAgICAgYXNfYmFkIChkY2dldHRleHQgKCgo
dm9pZCAqKTApLCAiaWxsZWdhbCBvcGVyYW5kIiwgNikpOwogICAgICBlbHNlIGlmIChleC5YX29w
ID09IE9fYWJzZW50KQogICAgICAgIGFzX2JhZCAoZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgIm1p
c3Npbmcgb3BlcmFuZCIsIDYpKTsKICAgICAgZWxzZSBpZiAoZXguWF9vcCA9PSBPX3JlZ2lzdGVy
KQogICAgICAgIHsKICAgICAgICAgIGluc24gPSBwcGNfaW5zZXJ0X29wZXJhbmQgKGluc24sIG9w
ZXJhbmQsIGV4LlhfYWRkX251bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChjaGFyICopICgodm9pZCAqKTApLCAwKTsKICAgICAgICB9CiAgICAgIGVsc2UgaWYgKGV4
Llhfb3AgPT0gT19jb25zdGFudCkKICAgICAgICB7CgoKICAgICAgICAgIGNoYXIgKm9yaWdfc3Ry
ID0gc3RyOwoKICAgICAgICAgIGlmICgocmVsb2MgPSBwcGNfZWxmX3N1ZmZpeCAoJnN0ciwgJmV4
KSkgIT0gQkZEX1JFTE9DX1VOVVNFRCkKICAgICAgICAgICAgc3dpdGNoIChyZWxvYykKICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHN0ciA9IG9y
aWdfc3RyOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgIGNhc2UgQkZEX1JF
TE9DX0xPMTY6CgoKCiAgICAgICAgICAgICAgICBpZiAoZXguWF91bnNpZ25lZCAmJiAhIChvcGVy
YW5kLT5mbGFncyAmICgwMSkpKQogICAgICAgICAgICAgICAgICBleC5YX2FkZF9udW1iZXIgJj0g
MHhmZmZmOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICBleC5YX2FkZF9u
dW1iZXIgPSAoKCgoZXguWF9hZGRfbnVtYmVyKSAmIDB4ZmZmZikgXiAweDgwMDApIC0gMHg4MDAw
KTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICBjYXNlIEJGRF9SRUxPQ19I
STE2OgogICAgICAgICAgICAgICAgaWYgKGV4LlhfdW5zaWduZWQgJiYgISAob3BlcmFuZC0+Zmxh
Z3MgJiAoMDEpKSkKICAgICAgICAgICAgICAgICAgZXguWF9hZGRfbnVtYmVyID0gKCgoZXguWF9h
ZGRfbnVtYmVyKSA+PiAxNikgJiAweGZmZmYpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICBleC5YX2FkZF9udW1iZXIgPSAoKCgoKCgoZXguWF9hZGRfbnVtYmVyKSA+PiAx
NikgJiAweGZmZmYpKSAmIDB4ZmZmZikgXiAweDgwMDApIC0gMHg4MDAwKTsKICAgICAgICAgICAg
ICAgIGJyZWFrOwoKICAgICAgICAgICAgICBjYXNlIEJGRF9SRUxPQ19ISTE2X1M6CiAgICAgICAg
ICAgICAgICBpZiAoZXguWF91bnNpZ25lZCAmJiAhIChvcGVyYW5kLT5mbGFncyAmICgwMSkpKQog
ICAgICAgICAgICAgICAgICBleC5YX2FkZF9udW1iZXIgPSAoKCgoZXguWF9hZGRfbnVtYmVyKSAr
IDB4ODAwMCkgPj4gMTYpICYgMHhmZmZmKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgZXguWF9hZGRfbnVtYmVyID0gKCgoKCgoKChleC5YX2FkZF9udW1iZXIpICsgMHg4
MDAwKSA+PiAxNikgJiAweGZmZmYpKSAmIDB4ZmZmZikgXiAweDgwMDApIC0gMHg4MDAwKTsKICAg
ICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUEM2NF9I
SUdIRVI6CiAgICAgICAgICAgICAgICBpZiAoZXguWF91bnNpZ25lZCAmJiAhIChvcGVyYW5kLT5m
bGFncyAmICgwMSkpKQogICAgICAgICAgICAgICAgICBleC5YX2FkZF9udW1iZXIgPSAoKChleC5Y
X2FkZF9udW1iZXIpID4+IDMyKSAmIDB4ZmZmZik7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgIGV4LlhfYWRkX251bWJlciA9ICgoKCgoKChleC5YX2FkZF9udW1iZXIpID4+
IDMyKSAmIDB4ZmZmZikpICYgMHhmZmZmKSBeIDB4ODAwMCkgLSAweDgwMDApOwogICAgICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQzY0X0hJR0hFUl9T
OgogICAgICAgICAgICAgICAgaWYgKGV4LlhfdW5zaWduZWQgJiYgISAob3BlcmFuZC0+ZmxhZ3Mg
JiAoMDEpKSkKICAgICAgICAgICAgICAgICAgZXguWF9hZGRfbnVtYmVyID0gKCgoKGV4LlhfYWRk
X251bWJlcikgKyAweDgwMDApID4+IDMyKSAmIDB4ZmZmZik7CiAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgIGV4LlhfYWRkX251bWJlciA9ICgoKCgoKCgoZXguWF9hZGRfbnVt
YmVyKSArIDB4ODAwMCkgPj4gMzIpICYgMHhmZmZmKSkgJiAweGZmZmYpIF4gMHg4MDAwKSAtIDB4
ODAwMCk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgY2FzZSBCRkRfUkVM
T0NfUFBDNjRfSElHSEVTVDoKICAgICAgICAgICAgICAgIGlmIChleC5YX3Vuc2lnbmVkICYmICEg
KG9wZXJhbmQtPmZsYWdzICYgKDAxKSkpCiAgICAgICAgICAgICAgICAgIGV4LlhfYWRkX251bWJl
ciA9ICgoKGV4LlhfYWRkX251bWJlcikgPj4gNDgpICYgMHhmZmZmKTsKICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgZXguWF9hZGRfbnVtYmVyID0gKCgoKCgoKGV4LlhfYWRk
X251bWJlcikgPj4gNDgpICYgMHhmZmZmKSkgJiAweGZmZmYpIF4gMHg4MDAwKSAtIDB4ODAwMCk7
CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgY2FzZSBCRkRfUkVMT0NfUFBD
NjRfSElHSEVTVF9TOgogICAgICAgICAgICAgICAgaWYgKGV4LlhfdW5zaWduZWQgJiYgISAob3Bl
cmFuZC0+ZmxhZ3MgJiAoMDEpKSkKICAgICAgICAgICAgICAgICAgZXguWF9hZGRfbnVtYmVyID0g
KCgoKGV4LlhfYWRkX251bWJlcikgKyAweDgwMDApID4+IDQ4KSAmIDB4ZmZmZik7CiAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIGV4LlhfYWRkX251bWJlciA9ICgoKCgoKCgo
ZXguWF9hZGRfbnVtYmVyKSArIDB4ODAwMCkgPj4gNDgpICYgMHhmZmZmKSkgJiAweGZmZmYpIF4g
MHg4MDAwKSAtIDB4ODAwMCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9
CgogICAgICAgICAgaW5zbiA9IHBwY19pbnNlcnRfb3BlcmFuZCAoaW5zbiwgb3BlcmFuZCwgZXgu
WF9hZGRfbnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIg
KikgKCh2b2lkICopMCksIDApOwogICAgICAgIH0KCiAgICAgIGVsc2UgaWYgKChyZWxvYyA9IHBw
Y19lbGZfc3VmZml4ICgmc3RyLCAmZXgpKSAhPSBCRkRfUkVMT0NfVU5VU0VEKQogICAgICAgIHsK
CgogICAgICAgICAgaWYgKChvcGVyYW5kLT5mbGFncyAmICgwNDAwKSkgIT0gMCkKICAgICAgICAg
ICAgewogICAgICAgICAgICAgIHN3aXRjaCAocmVsb2MpCiAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUENfQjI2OgogICAgICAgICAgICAgICAgICByZWxv
YyA9IEJGRF9SRUxPQ19QUENfQkEyNjsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUENfQjE2OgogICAgICAgICAgICAgICAgICByZWxvYyA9
IEJGRF9SRUxPQ19QUENfQkExNjsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICBjYXNlIEJGRF9SRUxPQ19QUENfQjE2X0JSVEFLRU46CiAgICAgICAgICAgICAgICAgIHJl
bG9jID0gQkZEX1JFTE9DX1BQQ19CQTE2X0JSVEFLRU47CiAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgY2FzZSBCRkRfUkVMT0NfUFBDX0IxNl9CUk5UQUtFTjoKICAgICAg
ICAgICAgICAgICAgcmVsb2MgPSBCRkRfUkVMT0NfUFBDX0JBMTZfQlJOVEFLRU47CiAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICBpZiAo
cHBjX29iajY0CiAgICAgICAgICAgICAgJiYgKG9wZXJhbmQtPmZsYWdzICYgKDAyMDAwMCkpICE9
IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBzd2l0Y2ggKHJlbG9jKQogICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgY2FzZSBCRkRfUkVMT0NfMTY6CiAgICAgICAgICAgICAg
ICAgIHJlbG9jID0gQkZEX1JFTE9DX1BQQzY0X0FERFIxNl9EUzsKICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIEJGRF9SRUxPQ19MTzE2OgogICAgICAgICAgICAg
ICAgICByZWxvYyA9IEJGRF9SRUxPQ19QUEM2NF9BRERSMTZfTE9fRFM7CiAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSBCRkRfUkVMT0NfMTZfR09UT0ZGOgogICAg
ICAgICAgICAgICAgICByZWxvYyA9IEJGRF9SRUxPQ19QUEM2NF9HT1QxNl9EUzsKICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIEJGRF9SRUxPQ19MTzE2X0dPVE9G
RjoKICAgICAgICAgICAgICAgICAgcmVsb2MgPSBCRkRfUkVMT0NfUFBDNjRfR09UMTZfTE9fRFM7
CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSBCRkRfUkVMT0Nf
TE8xNl9QTFRPRkY6CiAgICAgICAgICAgICAgICAgIHJlbG9jID0gQkZEX1JFTE9DX1BQQzY0X1BM
VDE2X0xPX0RTOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2Ug
QkZEX1JFTE9DXzE2X0JBU0VSRUw6CiAgICAgICAgICAgICAgICAgIHJlbG9jID0gQkZEX1JFTE9D
X1BQQzY0X1NFQ1RPRkZfRFM7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgY2FzZSBCRkRfUkVMT0NfTE8xNl9CQVNFUkVMOgogICAgICAgICAgICAgICAgICByZWxvYyA9
IEJGRF9SRUxPQ19QUEM2NF9TRUNUT0ZGX0xPX0RTOwogICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQ19UT0MxNjoKICAgICAgICAgICAgICAg
ICAgcmVsb2MgPSBCRkRfUkVMT0NfUFBDNjRfVE9DMTZfRFM7CiAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgY2FzZSBCRkRfUkVMT0NfUFBDNjRfVE9DMTZfTE86CiAgICAg
ICAgICAgICAgICAgIHJlbG9jID0gQkZEX1JFTE9DX1BQQzY0X1RPQzE2X0xPX0RTOwogICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQzY0X1BM
VEdPVDE2OgogICAgICAgICAgICAgICAgICByZWxvYyA9IEJGRF9SRUxPQ19QUEM2NF9QTFRHT1Qx
Nl9EUzsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIEJGRF9S
RUxPQ19QUEM2NF9QTFRHT1QxNl9MTzoKICAgICAgICAgICAgICAgICAgcmVsb2MgPSBCRkRfUkVM
T0NfUFBDNjRfUExUR09UMTZfTE9fRFM7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgYXNfYmFkIChkY2dldHRleHQgKCgo
dm9pZCAqKTApLCAidW5zdXBwb3J0ZWQgcmVsb2NhdGlvbiBmb3IgRFMgb2Zmc2V0IGZpZWxkIiwg
NikpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfQoKCiAgICAgICAgICBpZiAoZmMgPj0gKDUpKQogICAgICAgICAgICBhc19mYXRhbCAoZGNn
ZXR0ZXh0ICgoKHZvaWQgKikwKSwgInRvbyBtYW55IGZpeHVwcyIsIDYpKTsKICAgICAgICAgIGZp
eHVwc1tmY10uZXhwID0gZXg7CiAgICAgICAgICBmaXh1cHNbZmNdLm9waW5kZXggPSAwOwogICAg
ICAgICAgZml4dXBzW2ZjXS5yZWxvYyA9IHJlbG9jOwogICAgICAgICAgKytmYzsKICAgICAgICB9
CgoKICAgICAgZWxzZQogICAgICAgIHsKCiAgICAgICAgICBpZiAoZmMgPj0gKDUpKQogICAgICAg
ICAgICBhc19mYXRhbCAoZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgInRvbyBtYW55IGZpeHVwcyIs
IDYpKTsKICAgICAgICAgIGZpeHVwc1tmY10uZXhwID0gZXg7CiAgICAgICAgICBmaXh1cHNbZmNd
Lm9waW5kZXggPSAqb3BpbmRleF9wdHI7CiAgICAgICAgICBmaXh1cHNbZmNdLnJlbG9jID0gQkZE
X1JFTE9DX1VOVVNFRDsKICAgICAgICAgICsrZmM7CiAgICAgICAgfQoKICAgICAgaWYgKG5lZWRf
cGFyZW4pCiAgICAgICAgewogICAgICAgICAgZW5kYyA9ICcpJzsKICAgICAgICAgIG5lZWRfcGFy
ZW4gPSAwOwogICAgICAgIH0KICAgICAgZWxzZSBpZiAoKG9wZXJhbmQtPmZsYWdzICYgKDAxMCkp
ICE9IDApCiAgICAgICAgewogICAgICAgICAgZW5kYyA9ICcoJzsKICAgICAgICAgIG5lZWRfcGFy
ZW4gPSAxOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIGVuZGMgPSAnLCc7CgoKCiAgICAg
IGlmICgqc3RyICE9IGVuZGMKICAgICAgICAgICYmIChlbmRjICE9ICcsJyB8fCAqc3RyICE9ICdc
MCcpKQogICAgICAgIHsKICAgICAgICAgIGFzX2JhZCAoZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwg
InN5bnRheCBlcnJvcjsgZm91bmQgYCVjJyBidXQgZXhwZWN0ZWQgYCVjJyIsIDYpLCAqc3RyLCBl
bmRjKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgIGlmICgqc3RyICE9ICdcMCcp
CiAgICAgICAgKytzdHI7CiAgICB9CgogIHdoaWxlICgoX3NjaF9pc3RhYmxlWygqc3RyKSAmIDB4
ZmZdICYgKHVuc2lnbmVkIHNob3J0KShfc2NoX2lzc3BhY2UpKSkKICAgICsrc3RyOwoKICBpZiAo
KnN0ciAhPSAnXDAnKQogICAgYXNfYmFkIChkY2dldHRleHQgKCgodm9pZCAqKTApLCAianVuayBh
dCBlbmQgb2YgbGluZTogYCVzJyIsIDYpLCBzdHIpOwoKCiAgZiA9IGZyYWdfbW9yZSAoNCk7CiAg
bWRfbnVtYmVyX3RvX2NoYXJzIChmLCBpbnNuLCA0KTsKCgogIGR3YXJmMl9lbWl0X2luc24gKDQp
OwojIDIzMzkgIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29uZmlnL3RjLXBwYy5jIgogIGZvciAo
aSA9IDA7IGkgPCBmYzsgaSsrKQogICAgewogICAgICBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGVy
YW5kICpvcGVyYW5kOwoKICAgICAgb3BlcmFuZCA9ICZwb3dlcnBjX29wZXJhbmRzW2ZpeHVwc1tp
XS5vcGluZGV4XTsKICAgICAgaWYgKGZpeHVwc1tpXS5yZWxvYyAhPSBCRkRfUkVMT0NfVU5VU0VE
KQogICAgICAgIHsKICAgICAgICAgIHJlbG9jX2hvd3RvX3R5cGUgKnJlbG9jX2hvd3RvOwogICAg
ICAgICAgaW50IHNpemU7CiAgICAgICAgICBpbnQgb2Zmc2V0OwogICAgICAgICAgZml4UyAqZml4
UDsKCiAgICAgICAgICByZWxvY19ob3d0byA9IGJmZF9yZWxvY190eXBlX2xvb2t1cCAoc3Rkb3V0
cHV0LCBmaXh1cHNbaV0ucmVsb2MpOwogICAgICAgICAgaWYgKCFyZWxvY19ob3d0bykKICAgICAg
ICAgICAgYXNfYWJvcnQgKCIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMuYyIs
IDIzNTMsIF9fUFJFVFRZX0ZVTkNUSU9OX18pOwoKICAgICAgICAgIHNpemUgPSBiZmRfZ2V0X3Jl
bG9jX3NpemUgKHJlbG9jX2hvd3RvKTsKICAgICAgICAgIG9mZnNldCA9IHRhcmdldF9iaWdfZW5k
aWFuID8gKDQgLSBzaXplKSA6IDA7CgogICAgICAgICAgaWYgKHNpemUgPCAxIHx8IHNpemUgPiA0
KQogICAgICAgICAgICBhc19hYm9ydCAoIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29uZmlnL3Rj
LXBwYy5jIiwgMjM1OSwgX19QUkVUVFlfRlVOQ1RJT05fXyk7CgogICAgICAgICAgZml4UCA9IGZp
eF9uZXdfZXhwIChmcmFnX25vdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAtIGZy
YWdfbm93LT5mcl9saXRlcmFsICsgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZml4dXBzW2ldLmV4cCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsb2NfaG93dG8tPnBjX3JlbGF0aXZlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaXh1cHNbaV0ucmVsb2MpOwoKCgogICAgICAgICAg
c3dpdGNoIChmaXh1cHNbaV0ucmVsb2MpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgY2FzZSBC
RkRfUkVMT0NfMTZfR09UT0ZGOgogICAgICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUENfVE9DMTY6
CiAgICAgICAgICAgIGNhc2UgQkZEX1JFTE9DX0xPMTY6CiAgICAgICAgICAgIGNhc2UgQkZEX1JF
TE9DX0hJMTY6CiAgICAgICAgICAgIGNhc2UgQkZEX1JFTE9DX0hJMTZfUzoKCiAgICAgICAgICAg
IGNhc2UgQkZEX1JFTE9DX1BQQzY0X0hJR0hFUjoKICAgICAgICAgICAgY2FzZSBCRkRfUkVMT0Nf
UFBDNjRfSElHSEVSX1M6CiAgICAgICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQzY0X0hJR0hFU1Q6
CiAgICAgICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQzY0X0hJR0hFU1RfUzoKCiAgICAgICAgICAg
ICAgZml4UC0+Znhfbm9fb3ZlcmZsb3cgPSAxOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgICBlbHNlCiAgICAgICAgZml4X25ld19leHAgKGZyYWdfbm93LAogICAgICAgICAgICAg
ICAgICAgICBmIC0gZnJhZ19ub3ctPmZyX2xpdGVyYWwsCiAgICAgICAgICAgICAgICAgICAgIDQs
CiAgICAgICAgICAgICAgICAgICAgICZmaXh1cHNbaV0uZXhwLAogICAgICAgICAgICAgICAgICAg
ICAob3BlcmFuZC0+ZmxhZ3MgJiAoMDIwMCkpICE9IDAsCiAgICAgICAgICAgICAgICAgICAgICgo
YmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlKQogICAgICAgICAgICAgICAgICAgICAgKGZpeHVwc1tp
XS5vcGluZGV4ICsgKGludCkgQkZEX1JFTE9DX1VOVVNFRCkpKTsKICAgIH0KfQoKCgoKCgpzdGF0
aWMgdm9pZApwcGNfbWFjcm8gKHN0ciwgbWFjcm8pCiAgICAgY2hhciAqc3RyOwogICAgIGNvbnN0
IHN0cnVjdCBwb3dlcnBjX21hY3JvICptYWNybzsKewogIGNoYXIgKm9wZXJhbmRzWzEwXTsKICB1
bnNpZ25lZCBpbnQgY291bnQ7CiAgY2hhciAqczsKICB1bnNpZ25lZCBpbnQgbGVuOwogIGNvbnN0
IGNoYXIgKmZvcm1hdDsKICBpbnQgYXJnOwogIGNoYXIgKnNlbmQ7CiAgY2hhciAqY29tcGxldGU7
CgoKICBjb3VudCA9IDA7CiAgcyA9IHN0cjsKICB3aGlsZSAoMSkKICAgIHsKICAgICAgaWYgKGNv
dW50ID49IHNpemVvZiBvcGVyYW5kcyAvIHNpemVvZiBvcGVyYW5kc1swXSkKICAgICAgICBicmVh
azsKICAgICAgb3BlcmFuZHNbY291bnQrK10gPSBzOwogICAgICBzID0gc3RyY2hyIChzLCAnLCcp
OwogICAgICBpZiAocyA9PSAoY2hhciAqKSAoKHZvaWQgKikwKSkKICAgICAgICBicmVhazsKICAg
ICAgKnMrKyA9ICdcMCc7CiAgICB9CgogIGlmIChjb3VudCAhPSBtYWNyby0+b3BlcmFuZHMpCiAg
ICB7CiAgICAgIGFzX2JhZCAoZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgIndyb25nIG51bWJlciBv
ZiBvcGVyYW5kcyIsIDYpKTsKICAgICAgcmV0dXJuOwogICAgfQoKCgogIGxlbiA9IDA7CiAgZm9y
bWF0ID0gbWFjcm8tPmZvcm1hdDsKICB3aGlsZSAoKmZvcm1hdCAhPSAnXDAnKQogICAgewogICAg
ICBpZiAoKmZvcm1hdCAhPSAnJScpCiAgICAgICAgewogICAgICAgICAgKytsZW47CiAgICAgICAg
ICArK2Zvcm1hdDsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICBhcmcg
PSBzdHJ0b2wgKGZvcm1hdCArIDEsICZzZW5kLCAxMCk7CiAgICAgICAgICA7CiAgICAgICAgICBs
ZW4gKz0gc3RybGVuIChvcGVyYW5kc1thcmddKTsKICAgICAgICAgIGZvcm1hdCA9IHNlbmQ7CiAg
ICAgICAgfQogICAgfQoKCiAgY29tcGxldGUgPSBzID0gKGNoYXIgKikgX19idWlsdGluX2FsbG9j
YShsZW4gKyAxKTsKICBmb3JtYXQgPSBtYWNyby0+Zm9ybWF0OwogIHdoaWxlICgqZm9ybWF0ICE9
ICdcMCcpCiAgICB7CiAgICAgIGlmICgqZm9ybWF0ICE9ICclJykKICAgICAgICAqcysrID0gKmZv
cm1hdCsrOwogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgYXJnID0gc3RydG9sIChmb3Jt
YXQgKyAxLCAmc2VuZCwgMTApOwogICAgICAgICAgc3RyY3B5IChzLCBvcGVyYW5kc1thcmddKTsK
ICAgICAgICAgIHMgKz0gc3RybGVuIChzKTsKICAgICAgICAgIGZvcm1hdCA9IHNlbmQ7CiAgICAg
ICAgfQogICAgfQogICpzID0gJ1wwJzsKCgogIG1kX2Fzc2VtYmxlIChjb21wbGV0ZSk7Cn0KCgoK
CmludApwcGNfc2VjdGlvbl9sZXR0ZXIgKGxldHRlciwgcHRyX21zZykKICAgICBpbnQgbGV0dGVy
OwogICAgIGNoYXIgKipwdHJfbXNnOwp7CiAgaWYgKGxldHRlciA9PSAnZScpCiAgICByZXR1cm4g
MHg4MDAwMDAwMDsKCiAgKnB0cl9tc2cgPSBkY2dldHRleHQgKCgodm9pZCAqKTApLCAiQmFkIC5z
ZWN0aW9uIGRpcmVjdGl2ZTogd2FudCBhLGUsdyx4LE0sUyxHLFQgaW4gc3RyaW5nIiwgNik7CiAg
cmV0dXJuIDA7Cn0KCmludApwcGNfc2VjdGlvbl93b3JkIChzdHIsIGxlbikKICAgICBjaGFyICpz
dHI7CiAgICAgc2l6ZV90IGxlbjsKewogIGlmIChsZW4gPT0gNyAmJiBzdHJuY21wIChzdHIsICJl
eGNsdWRlIiwgNykgPT0gMCkKICAgIHJldHVybiAweDgwMDAwMDAwOwoKICByZXR1cm4gLTE7Cn0K
CmludApwcGNfc2VjdGlvbl90eXBlIChzdHIsIGxlbikKICAgICBjaGFyICpzdHI7CiAgICAgc2l6
ZV90IGxlbjsKewogIGlmIChsZW4gPT0gNyAmJiBzdHJuY21wIChzdHIsICJvcmRlcmVkIiwgNykg
PT0gMCkKICAgIHJldHVybiAweDdGRkZGRkZGOwoKICByZXR1cm4gLTE7Cn0KCmludApwcGNfc2Vj
dGlvbl9mbGFncyAoZmxhZ3MsIGF0dHIsIHR5cGUpCiAgICAgaW50IGZsYWdzOwogICAgIGludCBh
dHRyOwogICAgIGludCB0eXBlOwp7CiAgaWYgKHR5cGUgPT0gMHg3RkZGRkZGRikKICAgIGZsYWdz
IHw9IDB4MDAxIHwgMHgwMDIgfCAweDgwMDAwOwoKICBpZiAoYXR0ciAmIDB4ODAwMDAwMDApCiAg
ICBmbGFncyB8PSAweDQwMDAwOwoKICByZXR1cm4gZmxhZ3M7Cn0KIyAyNTM5ICIvc3JjL2JpbnV0
aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMuYyIKc3RhdGljIHZvaWQKcHBjX2J5dGUgKGlnbm9y
ZSkKICAgICBpbnQgaWdub3JlIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBpZiAo
KmlucHV0X2xpbmVfcG9pbnRlciAhPSAnXCInKQogICAgewogICAgICBjb25zICgxKTsKICAgICAg
cmV0dXJuOwogICAgfQoKCgogICsraW5wdXRfbGluZV9wb2ludGVyOwogIHdoaWxlICgxKQogICAg
ewogICAgICBjaGFyIGM7CgogICAgICBjID0gKmlucHV0X2xpbmVfcG9pbnRlcisrOwoKICAgICAg
aWYgKGMgPT0gJ1wiJykKICAgICAgICB7CiAgICAgICAgICBpZiAoKmlucHV0X2xpbmVfcG9pbnRl
ciAhPSAnXCInKQogICAgICAgICAgICBicmVhazsKICAgICAgICAgICsraW5wdXRfbGluZV9wb2lu
dGVyOwogICAgICAgIH0KCiAgICAgIGZyYWdfYXBwZW5kXzFfY2hhciAoYyk7CiAgICB9CgogIGRl
bWFuZF9lbXB0eV9yZXN0X29mX2xpbmUgKCk7Cn0KIyAzNTk1ICIvc3JjL2JpbnV0aWxzLTIuMTMv
Z2FzL2NvbmZpZy90Yy1wcGMuYyIKc3RhdGljIHZvaWQKcHBjX3RjIChpZ25vcmUpCiAgICAgaW50
IGlnbm9yZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiMgMzY1NSAiL3NyYy9iaW51
dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiCiAgaW50IGFsaWduOwoKCiAgd2hpbGUgKCgg
bGV4X3R5cGVbKHVuc2lnbmVkIGNoYXIpICgqaW5wdXRfbGluZV9wb2ludGVyKV0gJiAoMSkgKQog
ICAgICAgICB8fCAqaW5wdXRfbGluZV9wb2ludGVyID09ICdbJwogICAgICAgICB8fCAqaW5wdXRf
bGluZV9wb2ludGVyID09ICddJwogICAgICAgICB8fCAqaW5wdXRfbGluZV9wb2ludGVyID09ICd7
JwogICAgICAgICB8fCAqaW5wdXRfbGluZV9wb2ludGVyID09ICd9JykKICAgICsraW5wdXRfbGlu
ZV9wb2ludGVyOwoKCiAgYWxpZ24gPSBwcGNfb2JqNjQgPyAzIDogMjsKICBmcmFnX2FsaWduIChh
bGlnbiwgMCwgMCk7CiAgcmVjb3JkX2FsaWdubWVudCAobm93X3NlZywgYWxpZ24pOwoKCiAgaWYg
KCppbnB1dF9saW5lX3BvaW50ZXIgIT0gJywnKQogICAgZGVtYW5kX2VtcHR5X3Jlc3Rfb2ZfbGlu
ZSAoKTsKICBlbHNlCiAgICB7CiAgICAgICsraW5wdXRfbGluZV9wb2ludGVyOwogICAgICBjb25z
IChwcGNfb2JqNjQgPyA4IDogNCk7CiAgICB9Cn0KIyAzNjg4ICIvc3JjL2JpbnV0aWxzLTIuMTMv
Z2FzL2NvbmZpZy90Yy1wcGMuYyIKc3RhdGljIHZvaWQKcHBjX21hY2hpbmUgKGlnbm9yZSkKICAg
ICBpbnQgaWdub3JlIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBkaXNjYXJkX3Jl
c3Rfb2ZfbGluZSAoKTsKfQoKCgpzdGF0aWMgaW50CnBwY19pc190b2Nfc3ltIChzeW0pCiAgICAg
c3ltYm9sUyAqc3ltOwp7CgoKCgogIGNvbnN0IGNoYXIgKnNuYW1lID0gKChTX0dFVF9TRUdNRU5U
IChzeW0pKS0+bmFtZSArIDApOwogIGlmIChwcGNfb2JqNjQpCiAgICByZXR1cm4gc3RyY21wIChz
bmFtZSwgIi50b2MiKSA9PSAwOwogIGVsc2UKICAgIHJldHVybiBzdHJjbXAgKHNuYW1lLCAiLmdv
dCIpID09IDA7Cgp9CiMgNDc5NiAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBj
LmMiCmNoYXIgKgptZF9hdG9mICh0eXBlLCBsaXRwLCBzaXplcCkKICAgICBpbnQgdHlwZTsKICAg
ICBjaGFyICpsaXRwOwogICAgIGludCAqc2l6ZXA7CnsKICBpbnQgcHJlYzsKICBMSVRUTEVOVU1f
VFlQRSB3b3Jkc1s0XTsKICBjaGFyICp0OwogIGludCBpOwoKICBzd2l0Y2ggKHR5cGUpCiAgICB7
CiAgICBjYXNlICdmJzoKICAgICAgcHJlYyA9IDI7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ2Qn
OgogICAgICBwcmVjID0gNDsKICAgICAgYnJlYWs7CgogICAgZGVmYXVsdDoKICAgICAgKnNpemVw
ID0gMDsKICAgICAgcmV0dXJuIGRjZ2V0dGV4dCAoKCh2b2lkICopMCksICJiYWQgY2FsbCB0byBt
ZF9hdG9mIiwgNik7CiAgICB9CgogIHQgPSBhdG9mX2llZWUgKGlucHV0X2xpbmVfcG9pbnRlciwg
dHlwZSwgd29yZHMpOwogIGlmICh0KQogICAgaW5wdXRfbGluZV9wb2ludGVyID0gdDsKCiAgKnNp
emVwID0gcHJlYyAqIDI7CgogIGlmICh0YXJnZXRfYmlnX2VuZGlhbikKICAgIHsKICAgICAgZm9y
IChpID0gMDsgaSA8IHByZWM7IGkrKykKICAgICAgICB7CiAgICAgICAgICBtZF9udW1iZXJfdG9f
Y2hhcnMgKGxpdHAsICh2YWx1ZVQpIHdvcmRzW2ldLCAyKTsKICAgICAgICAgIGxpdHAgKz0gMjsK
ICAgICAgICB9CiAgICB9CiAgZWxzZQogICAgewogICAgICBmb3IgKGkgPSBwcmVjIC0gMTsgaSA+
PSAwOyBpLS0pCiAgICAgICAgewogICAgICAgICAgbWRfbnVtYmVyX3RvX2NoYXJzIChsaXRwLCAo
dmFsdWVUKSB3b3Jkc1tpXSwgMik7CiAgICAgICAgICBsaXRwICs9IDI7CiAgICAgICAgfQogICAg
fQoKICByZXR1cm4gKCh2b2lkICopMCk7Cn0KCgoKCnZvaWQKbWRfbnVtYmVyX3RvX2NoYXJzIChi
dWYsIHZhbCwgbikKICAgICBjaGFyICpidWY7CiAgICAgdmFsdWVUIHZhbDsKICAgICBpbnQgbjsK
ewogIGlmICh0YXJnZXRfYmlnX2VuZGlhbikKICAgIG51bWJlcl90b19jaGFyc19iaWdlbmRpYW4g
KGJ1ZiwgdmFsLCBuKTsKICBlbHNlCiAgICBudW1iZXJfdG9fY2hhcnNfbGl0dGxlZW5kaWFuIChi
dWYsIHZhbCwgbik7Cn0KCgoKdmFsdWVUCm1kX3NlY3Rpb25fYWxpZ24gKHNlZywgYWRkcikKICAg
ICBhc2VjdGlvbiAqc2VnOwogICAgIHZhbHVlVCBhZGRyOwp7CiAgaW50IGFsaWduID0gKChzZWcp
LT5hbGlnbm1lbnRfcG93ZXIgKyAwKTsKCiAgcmV0dXJuICgoYWRkciArICgxIDw8IGFsaWduKSAt
IDEpICYgKC0xIDw8IGFsaWduKSk7Cn0KCgoKaW50Cm1kX2VzdGltYXRlX3NpemVfYmVmb3JlX3Jl
bGF4IChmcmFncCwgc2VnKQogICAgIGZyYWdTICpmcmFncCBfX2F0dHJpYnV0ZV9fICgoX191bnVz
ZWRfXykpOwogICAgIGFzZWN0aW9uICpzZWcgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK
ewogIGFzX2Fib3J0ICgiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiLCA0
ODgyLCBfX1BSRVRUWV9GVU5DVElPTl9fKTsKICByZXR1cm4gMDsKfQoKCgp2b2lkCm1kX2NvbnZl
cnRfZnJhZyAoYWJmZCwgc2VjLCBmcmFncCkKICAgICBiZmQgKmFiZmQgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKICAgICBhc2VjdGlvbiAqc2VjIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgZnJhZ1MgKmZyYWdwIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsK
ICBhc19hYm9ydCAoIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29uZmlnL3RjLXBwYy5jIiwgNDg5
NCwgX19QUkVUVFlfRlVOQ1RJT05fXyk7Cn0KCgoKc3ltYm9sUyAqCm1kX3VuZGVmaW5lZF9zeW1i
b2wgKG5hbWUpCiAgICAgY2hhciAqbmFtZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7
CiAgcmV0dXJuIDA7Cn0KCgoKCgoKbG9uZwptZF9wY3JlbF9mcm9tX3NlY3Rpb24gKGZpeHAsIHNl
YykKICAgICBmaXhTICpmaXhwOwogICAgIHNlZ1Qgc2VjIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CnsKICByZXR1cm4gZml4cC0+ZnhfZnJhZy0+ZnJfYWRkcmVzcyArIGZpeHAtPmZ4X3do
ZXJlOwp9CiMgNTA3NCAiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiCmlu
dApwcGNfZml4X2FkanVzdGFibGUgKGZpeCkKICAgICBmaXhTICpmaXg7CnsKICByZXR1cm4gKGZp
eC0+Znhfcl90eXBlICE9IEJGRF9SRUxPQ18xNl9HT1RPRkYKICAgICAgICAgICYmIGZpeC0+Znhf
cl90eXBlICE9IEJGRF9SRUxPQ19MTzE2X0dPVE9GRgogICAgICAgICAgJiYgZml4LT5meF9yX3R5
cGUgIT0gQkZEX1JFTE9DX0hJMTZfR09UT0ZGCiAgICAgICAgICAmJiBmaXgtPmZ4X3JfdHlwZSAh
PSBCRkRfUkVMT0NfSEkxNl9TX0dPVE9GRgogICAgICAgICAgJiYgZml4LT5meF9yX3R5cGUgIT0g
QkZEX1JFTE9DX0dQUkVMMTYKICAgICAgICAgICYmIGZpeC0+Znhfcl90eXBlICE9IEJGRF9SRUxP
Q19WVEFCTEVfSU5IRVJJVAogICAgICAgICAgJiYgZml4LT5meF9yX3R5cGUgIT0gQkZEX1JFTE9D
X1ZUQUJMRV9FTlRSWQogICAgICAgICAgJiYgISBTX0lTX0VYVEVSTkFMIChmaXgtPmZ4X2FkZHN5
KQogICAgICAgICAgJiYgISBTX0lTX1dFQUsgKGZpeC0+ZnhfYWRkc3kpCiAgICAgICAgICAmJiAo
Zml4LT5meF9wY3JlbAogICAgICAgICAgICAgIHx8IChmaXgtPmZ4X3N1YnN5ICE9ICgodm9pZCAq
KTApCiAgICAgICAgICAgICAgICAgICYmIChTX0dFVF9TRUdNRU5UIChmaXgtPmZ4X3N1YnN5KQog
ICAgICAgICAgICAgICAgICAgICAgPT0gU19HRVRfU0VHTUVOVCAoZml4LT5meF9hZGRzeSkpKQog
ICAgICAgICAgICAgIHx8IFNfSVNfTE9DQUwgKGZpeC0+ZnhfYWRkc3kpKSk7Cn0KIyA1MTA0ICIv
c3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMuYyIKdm9pZAptZF9hcHBseV9maXgz
IChmaXhQLCB2YWxQLCBzZWcpCiAgICAgZml4UyAqZml4UDsKICAgICB2YWx1ZVQgKiB2YWxQOwog
ICAgIHNlZ1Qgc2VnIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICB2YWx1ZVQgdmFs
dWUgPSAqIHZhbFA7CgoKICBpZiAoZml4UC0+ZnhfYWRkc3kgIT0gKCh2b2lkICopMCkpCiAgICB7
CgoKICAgICAgaWYgKHN5bWJvbF91c2VkX2luX3JlbG9jX3AgKGZpeFAtPmZ4X2FkZHN5KQogICAg
ICAgICAgJiYgU19HRVRfU0VHTUVOVCAoZml4UC0+ZnhfYWRkc3kpICE9ICgoYXNlY3Rpb24gKikg
JmJmZF9hYnNfc2VjdGlvbikKICAgICAgICAgICYmIFNfR0VUX1NFR01FTlQgKGZpeFAtPmZ4X2Fk
ZHN5KSAhPSAoKGFzZWN0aW9uICopICZiZmRfdW5kX3NlY3Rpb24pCiAgICAgICAgICAmJiAhICgo
KFNfR0VUX1NFR01FTlQgKGZpeFAtPmZ4X2FkZHN5KSktPmZsYWdzICYgMHg4MDAwKSAhPSAwKSkK
ICAgICAgICB2YWx1ZSAtPSBTX0dFVF9WQUxVRSAoZml4UC0+ZnhfYWRkc3kpOwoKCgoKICAgICAg
aWYgKGZpeFAtPmZ4X3BjcmVsKQogICAgICAgIHZhbHVlICs9IGZpeFAtPmZ4X2ZyYWctPmZyX2Fk
ZHJlc3MgKyBmaXhQLT5meF93aGVyZTsKICAgIH0KICBlbHNlCiAgICBmaXhQLT5meF9kb25lID0g
MTsKIyA1MTY1ICIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMuYyIKICBpZiAo
KGludCkgZml4UC0+Znhfcl90eXBlID49IChpbnQpIEJGRF9SRUxPQ19VTlVTRUQpCiAgICB7CiAg
ICAgIGludCBvcGluZGV4OwogICAgICBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGVyYW5kICpvcGVy
YW5kOwogICAgICBjaGFyICp3aGVyZTsKICAgICAgdW5zaWduZWQgbG9uZyBpbnNuOwoKICAgICAg
b3BpbmRleCA9IChpbnQpIGZpeFAtPmZ4X3JfdHlwZSAtIChpbnQpIEJGRF9SRUxPQ19VTlVTRUQ7
CgogICAgICBvcGVyYW5kID0gJnBvd2VycGNfb3BlcmFuZHNbb3BpbmRleF07CiMgNTE5OCAiL3Ny
Yy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiCiAgICAgIHdoZXJlID0gZml4UC0+
ZnhfZnJhZy0+ZnJfbGl0ZXJhbCArIGZpeFAtPmZ4X3doZXJlOwogICAgICBpZiAodGFyZ2V0X2Jp
Z19lbmRpYW4pCiAgICAgICAgaW5zbiA9IGJmZF9nZXRiMzIgKCh1bnNpZ25lZCBjaGFyICopIHdo
ZXJlKTsKICAgICAgZWxzZQogICAgICAgIGluc24gPSBiZmRfZ2V0bDMyICgodW5zaWduZWQgY2hh
ciAqKSB3aGVyZSk7CiAgICAgIGluc24gPSBwcGNfaW5zZXJ0X29wZXJhbmQgKGluc24sIG9wZXJh
bmQsIChvZmZzZXRUKSB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4
UC0+ZnhfZmlsZSwgZml4UC0+ZnhfbGluZSk7CiAgICAgIGlmICh0YXJnZXRfYmlnX2VuZGlhbikK
ICAgICAgICBiZmRfcHV0YjMyICgoYmZkX3ZtYSkgaW5zbiwgKHVuc2lnbmVkIGNoYXIgKikgd2hl
cmUpOwogICAgICBlbHNlCiAgICAgICAgYmZkX3B1dGwzMiAoKGJmZF92bWEpIGluc24sICh1bnNp
Z25lZCBjaGFyICopIHdoZXJlKTsKCiAgICAgIGlmIChmaXhQLT5meF9kb25lKQoKICAgICAgICBy
ZXR1cm47CgogICAgICAoKGZpeFAtPmZ4X2FkZHN5ICE9ICgodm9pZCAqKTApKSA/IDAgOiAoYXNf
YXNzZXJ0ICgiL3NyYy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiLCA1MjE0LCBf
X1BSRVRUWV9GVU5DVElPTl9fKSwgMCkpOwoKCgoKICAgICAgaWYgKChvcGVyYW5kLT5mbGFncyAm
ICgwMjAwKSkgIT0gMAogICAgICAgICAgJiYgb3BlcmFuZC0+Yml0cyA9PSAyNgogICAgICAgICAg
JiYgb3BlcmFuZC0+c2hpZnQgPT0gMCkKICAgICAgICBmaXhQLT5meF9yX3R5cGUgPSBCRkRfUkVM
T0NfUFBDX0IyNjsKICAgICAgZWxzZSBpZiAoKG9wZXJhbmQtPmZsYWdzICYgKDAyMDApKSAhPSAw
CiAgICAgICAgICAmJiBvcGVyYW5kLT5iaXRzID09IDE2CiAgICAgICAgICAmJiBvcGVyYW5kLT5z
aGlmdCA9PSAwKQogICAgICAgIGZpeFAtPmZ4X3JfdHlwZSA9IEJGRF9SRUxPQ19QUENfQjE2Owog
ICAgICBlbHNlIGlmICgob3BlcmFuZC0+ZmxhZ3MgJiAoMDQwMCkpICE9IDAKICAgICAgICAgICAg
ICAgJiYgb3BlcmFuZC0+Yml0cyA9PSAyNgogICAgICAgICAgICAgICAmJiBvcGVyYW5kLT5zaGlm
dCA9PSAwKQogICAgICAgIGZpeFAtPmZ4X3JfdHlwZSA9IEJGRF9SRUxPQ19QUENfQkEyNjsKICAg
ICAgZWxzZSBpZiAoKG9wZXJhbmQtPmZsYWdzICYgKDA0MDApKSAhPSAwCiAgICAgICAgICAgICAg
ICYmIG9wZXJhbmQtPmJpdHMgPT0gMTYKICAgICAgICAgICAgICAgJiYgb3BlcmFuZC0+c2hpZnQg
PT0gMCkKICAgICAgICBmaXhQLT5meF9yX3R5cGUgPSBCRkRfUkVMT0NfUFBDX0JBMTY7CgogICAg
ICBlbHNlIGlmICgob3BlcmFuZC0+ZmxhZ3MgJiAoMDEwKSkgIT0gMAogICAgICAgICAgICAgICAm
JiBvcGVyYW5kLT5iaXRzID09IDE2CiAgICAgICAgICAgICAgICYmIG9wZXJhbmQtPnNoaWZ0ID09
IDAKICAgICAgICAgICAgICAgJiYgcHBjX2lzX3RvY19zeW0gKGZpeFAtPmZ4X2FkZHN5KSkKICAg
ICAgICB7CiAgICAgICAgICBmaXhQLT5meF9yX3R5cGUgPSBCRkRfUkVMT0NfUFBDX1RPQzE2OwoK
ICAgICAgICAgIGlmIChwcGNfb2JqNjQKICAgICAgICAgICAgICAmJiAob3BlcmFuZC0+ZmxhZ3Mg
JiAoMDIwMDAwKSkgIT0gMCkKICAgICAgICAgICAgZml4UC0+Znhfcl90eXBlID0gQkZEX1JFTE9D
X1BQQzY0X1RPQzE2X0RTOwoKICAgICAgICAgIGZpeFAtPmZ4X3NpemUgPSAyOwogICAgICAgICAg
aWYgKHRhcmdldF9iaWdfZW5kaWFuKQogICAgICAgICAgICBmaXhQLT5meF93aGVyZSArPSAyOwog
ICAgICAgIH0KCiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICBjaGFyICpzZmlsZTsKICAg
ICAgICAgIHVuc2lnbmVkIGludCBzbGluZTsKCgoKICAgICAgICAgIGlmIChleHByX3N5bWJvbF93
aGVyZSAoZml4UC0+ZnhfYWRkc3ksICZzZmlsZSwgJnNsaW5lKSkKICAgICAgICAgICAgYXNfYmFk
X3doZXJlIChmaXhQLT5meF9maWxlLCBmaXhQLT5meF9saW5lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIGRjZ2V0dGV4dCAoKCh2b2lkICopMCksICJ1bnJlc29sdmVkIGV4cHJlc3Npb24gdGhh
dCBtdXN0IGJlIHJlc29sdmVkIiwgNikpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICBhc19i
YWRfd2hlcmUgKGZpeFAtPmZ4X2ZpbGUsIGZpeFAtPmZ4X2xpbmUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgInVuc3VwcG9ydGVkIHJlbG9jYXRpb24g
YWdhaW5zdCAlcyIsIDYpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFNfR0VUX05BTUUgKGZp
eFAtPmZ4X2FkZHN5KSk7CiAgICAgICAgICBmaXhQLT5meF9kb25lID0gMTsKICAgICAgICAgIHJl
dHVybjsKICAgICAgICB9CiAgICB9CiAgZWxzZQogICAgewoKICAgICAgcHBjX2VsZl92YWxpZGF0
ZV9maXggKGZpeFAsIHNlZyk7CgogICAgICBzd2l0Y2ggKGZpeFAtPmZ4X3JfdHlwZSkKICAgICAg
ICB7CiAgICAgICAgY2FzZSBCRkRfUkVMT0NfQ1RPUjoKICAgICAgICAgIGlmIChwcGNfb2JqNjQp
CiAgICAgICAgICAgIGdvdG8gY3RvcjY0OwoKCiAgICAgICAgY2FzZSBCRkRfUkVMT0NfMzI6CiAg
ICAgICAgICBpZiAoZml4UC0+ZnhfcGNyZWwpCiAgICAgICAgICAgIGZpeFAtPmZ4X3JfdHlwZSA9
IEJGRF9SRUxPQ18zMl9QQ1JFTDsKCgogICAgICAgIGNhc2UgQkZEX1JFTE9DX1JWQToKICAgICAg
ICBjYXNlIEJGRF9SRUxPQ18zMl9QQ1JFTDoKICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUENfRU1C
X05BRERSMzI6CiAgICAgICAgICBtZF9udW1iZXJfdG9fY2hhcnMgKGZpeFAtPmZ4X2ZyYWctPmZy
X2xpdGVyYWwgKyBmaXhQLT5meF93aGVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWUsIDQpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgQkZEX1JFTE9DXzY0Ogog
ICAgICAgIGN0b3I2NDoKICAgICAgICAgIGlmIChmaXhQLT5meF9wY3JlbCkKICAgICAgICAgICAg
Zml4UC0+Znhfcl90eXBlID0gQkZEX1JFTE9DXzY0X1BDUkVMOwoKCiAgICAgICAgY2FzZSBCRkRf
UkVMT0NfNjRfUENSRUw6CiAgICAgICAgICBtZF9udW1iZXJfdG9fY2hhcnMgKGZpeFAtPmZ4X2Zy
YWctPmZyX2xpdGVyYWwgKyBmaXhQLT5meF93aGVyZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUsIDgpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgQkZEX1JFTE9D
X0xPMTY6CiAgICAgICAgY2FzZSBCRkRfUkVMT0NfMTY6CiAgICAgICAgY2FzZSBCRkRfUkVMT0Nf
R1BSRUwxNjoKICAgICAgICBjYXNlIEJGRF9SRUxPQ18xNl9HT1RfUENSRUw6CiAgICAgICAgY2Fz
ZSBCRkRfUkVMT0NfMTZfR09UT0ZGOgogICAgICAgIGNhc2UgQkZEX1JFTE9DX0xPMTZfR09UT0ZG
OgogICAgICAgIGNhc2UgQkZEX1JFTE9DX0hJMTZfR09UT0ZGOgogICAgICAgIGNhc2UgQkZEX1JF
TE9DX0hJMTZfU19HT1RPRkY6CiAgICAgICAgY2FzZSBCRkRfUkVMT0NfMTZfQkFTRVJFTDoKICAg
ICAgICBjYXNlIEJGRF9SRUxPQ19MTzE2X0JBU0VSRUw6CiAgICAgICAgY2FzZSBCRkRfUkVMT0Nf
SEkxNl9CQVNFUkVMOgogICAgICAgIGNhc2UgQkZEX1JFTE9DX0hJMTZfU19CQVNFUkVMOgogICAg
ICAgIGNhc2UgQkZEX1JFTE9DX1BQQ19FTUJfTkFERFIxNjoKICAgICAgICBjYXNlIEJGRF9SRUxP
Q19QUENfRU1CX05BRERSMTZfTE86CiAgICAgICAgY2FzZSBCRkRfUkVMT0NfUFBDX0VNQl9OQURE
UjE2X0hJOgogICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQ19FTUJfTkFERFIxNl9IQToKICAgICAg
ICBjYXNlIEJGRF9SRUxPQ19QUENfRU1CX1NEQUkxNjoKICAgICAgICBjYXNlIEJGRF9SRUxPQ19Q
UENfRU1CX1NEQTJSRUw6CiAgICAgICAgY2FzZSBCRkRfUkVMT0NfUFBDX0VNQl9TREEySTE2Ogog
ICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQ19FTUJfUkVMU0VDMTY6CiAgICAgICAgY2FzZSBCRkRf
UkVMT0NfUFBDX0VNQl9SRUxTVF9MTzoKICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUENfRU1CX1JF
TFNUX0hJOgogICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQ19FTUJfUkVMU1RfSEE6CiAgICAgICAg
Y2FzZSBCRkRfUkVMT0NfUFBDX0VNQl9SRUxTREE6CiAgICAgICAgY2FzZSBCRkRfUkVMT0NfUFBD
X1RPQzE2OgoKICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUEM2NF9UT0MxNl9MTzoKICAgICAgICBj
YXNlIEJGRF9SRUxPQ19QUEM2NF9UT0MxNl9ISToKICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUEM2
NF9UT0MxNl9IQToKCiAgICAgICAgICBpZiAoZml4UC0+ZnhfcGNyZWwpCiAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICBpZiAoZml4UC0+ZnhfYWRkc3kgIT0gKCh2b2lkICopMCkpCiAgICAgICAg
ICAgICAgICBhc19iYWRfd2hlcmUgKGZpeFAtPmZ4X2ZpbGUsIGZpeFAtPmZ4X2xpbmUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRjZ2V0dGV4dCAoKCh2b2lkICopMCksICJjYW5ub3Qg
ZW1pdCBQQyByZWxhdGl2ZSAlcyByZWxvY2F0aW9uIGFnYWluc3QgJXMiLCA2KSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmZkX2dldF9yZWxvY19jb2RlX25hbWUgKGZpeFAtPmZ4X3Jf
dHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNfR0VUX05BTUUgKGZpeFAtPmZ4
X2FkZHN5KSk7CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgYXNfYmFkX3doZXJl
IChmaXhQLT5meF9maWxlLCBmaXhQLT5meF9saW5lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkY2dldHRleHQgKCgodm9pZCAqKTApLCAiY2Fubm90IGVtaXQgUEMgcmVsYXRpdmUgJXMg
cmVsb2NhdGlvbiIsIDYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZmRfZ2V0X3Jl
bG9jX2NvZGVfbmFtZSAoZml4UC0+Znhfcl90eXBlKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAg
ICBtZF9udW1iZXJfdG9fY2hhcnMgKGZpeFAtPmZ4X2ZyYWctPmZyX2xpdGVyYWwgKyBmaXhQLT5m
eF93aGVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsIDIpOwogICAgICAg
ICAgYnJlYWs7CgoKCgogICAgICAgIGNhc2UgQkZEX1JFTE9DX0hJMTY6CiAgICAgICAgICBpZiAo
Zml4UC0+ZnhfcGNyZWwpCiAgICAgICAgICAgIGFzX2Fib3J0ICgiL3NyYy9iaW51dGlscy0yLjEz
L2dhcy9jb25maWcvdGMtcHBjLmMiLCA1MzU3LCBfX1BSRVRUWV9GVU5DVElPTl9fKTsKICAgICAg
ICAgIG1kX251bWJlcl90b19jaGFycyAoZml4UC0+ZnhfZnJhZy0+ZnJfbGl0ZXJhbCArIGZpeFAt
PmZ4X3doZXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh2YWx1ZSkgPj4gMTYp
ICYgMHhmZmZmKSwgMik7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBCRkRfUkVMT0Nf
SEkxNl9TOgogICAgICAgICAgaWYgKGZpeFAtPmZ4X3BjcmVsKQogICAgICAgICAgICBhc19hYm9y
dCAoIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29uZmlnL3RjLXBwYy5jIiwgNTM2NCwgX19QUkVU
VFlfRlVOQ1RJT05fXyk7CiAgICAgICAgICBtZF9udW1iZXJfdG9fY2hhcnMgKGZpeFAtPmZ4X2Zy
YWctPmZyX2xpdGVyYWwgKyBmaXhQLT5meF93aGVyZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCgoKHZhbHVlKSArIDB4ODAwMCkgPj4gMTYpICYgMHhmZmZmKSwgMik7CiAgICAgICAg
ICBicmVhazsKCgogICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQzY0X0hJR0hFUjoKICAgICAgICAg
IGlmIChmaXhQLT5meF9wY3JlbCkKICAgICAgICAgICAgYXNfYWJvcnQgKCIvc3JjL2JpbnV0aWxz
LTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMuYyIsIDUzNzIsIF9fUFJFVFRZX0ZVTkNUSU9OX18pOwog
ICAgICAgICAgbWRfbnVtYmVyX3RvX2NoYXJzIChmaXhQLT5meF9mcmFnLT5mcl9saXRlcmFsICsg
Zml4UC0+Znhfd2hlcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHZhbHVlKSA+
PiAzMikgJiAweGZmZmYpLCAyKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIEJGRF9S
RUxPQ19QUEM2NF9ISUdIRVJfUzoKICAgICAgICAgIGlmIChmaXhQLT5meF9wY3JlbCkKICAgICAg
ICAgICAgYXNfYWJvcnQgKCIvc3JjL2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMuYyIs
IDUzNzksIF9fUFJFVFRZX0ZVTkNUSU9OX18pOwogICAgICAgICAgbWRfbnVtYmVyX3RvX2NoYXJz
IChmaXhQLT5meF9mcmFnLT5mcl9saXRlcmFsICsgZml4UC0+Znhfd2hlcmUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgoKCh2YWx1ZSkgKyAweDgwMDApID4+IDMyKSAmIDB4ZmZmZiks
IDIpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQzY0X0hJR0hF
U1Q6CiAgICAgICAgICBpZiAoZml4UC0+ZnhfcGNyZWwpCiAgICAgICAgICAgIGFzX2Fib3J0ICgi
L3NyYy9iaW51dGlscy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiLCA1Mzg2LCBfX1BSRVRUWV9G
VU5DVElPTl9fKTsKICAgICAgICAgIG1kX251bWJlcl90b19jaGFycyAoZml4UC0+ZnhfZnJhZy0+
ZnJfbGl0ZXJhbCArIGZpeFAtPmZ4X3doZXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoKCh2YWx1ZSkgPj4gNDgpICYgMHhmZmZmKSwgMik7CiAgICAgICAgICBicmVhazsKCiAgICAg
ICAgY2FzZSBCRkRfUkVMT0NfUFBDNjRfSElHSEVTVF9TOgogICAgICAgICAgaWYgKGZpeFAtPmZ4
X3BjcmVsKQogICAgICAgICAgICBhc19hYm9ydCAoIi9zcmMvYmludXRpbHMtMi4xMy9nYXMvY29u
ZmlnL3RjLXBwYy5jIiwgNTM5MywgX19QUkVUVFlfRlVOQ1RJT05fXyk7CiAgICAgICAgICBtZF9u
dW1iZXJfdG9fY2hhcnMgKGZpeFAtPmZ4X2ZyYWctPmZyX2xpdGVyYWwgKyBmaXhQLT5meF93aGVy
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKHZhbHVlKSArIDB4ODAwMCkgPj4g
NDgpICYgMHhmZmZmKSwgMik7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBCRkRfUkVM
T0NfUFBDNjRfQUREUjE2X0RTOgogICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQzY0X0FERFIxNl9M
T19EUzoKICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUEM2NF9HT1QxNl9EUzoKICAgICAgICBjYXNl
IEJGRF9SRUxPQ19QUEM2NF9HT1QxNl9MT19EUzoKICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUEM2
NF9QTFQxNl9MT19EUzoKICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUEM2NF9TRUNUT0ZGX0RTOgog
ICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQzY0X1NFQ1RPRkZfTE9fRFM6CiAgICAgICAgY2FzZSBC
RkRfUkVMT0NfUFBDNjRfVE9DMTZfRFM6CiAgICAgICAgY2FzZSBCRkRfUkVMT0NfUFBDNjRfVE9D
MTZfTE9fRFM6CiAgICAgICAgY2FzZSBCRkRfUkVMT0NfUFBDNjRfUExUR09UMTZfRFM6CiAgICAg
ICAgY2FzZSBCRkRfUkVMT0NfUFBDNjRfUExUR09UMTZfTE9fRFM6CiAgICAgICAgICBpZiAoZml4
UC0+ZnhfcGNyZWwpCiAgICAgICAgICAgIGFzX2Fib3J0ICgiL3NyYy9iaW51dGlscy0yLjEzL2dh
cy9jb25maWcvdGMtcHBjLmMiLCA1NDEwLCBfX1BSRVRUWV9GVU5DVElPTl9fKTsKICAgICAgICAg
IHsKICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqd2hlcmUgPSBmaXhQLT5meF9mcmFnLT5mcl9s
aXRlcmFsICsgZml4UC0+Znhfd2hlcmU7CiAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsOwoK
ICAgICAgICAgICAgaWYgKHRhcmdldF9iaWdfZW5kaWFuKQogICAgICAgICAgICAgIHZhbCA9IGJm
ZF9nZXRiMTYgKHdoZXJlKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHZhbCA9IGJm
ZF9nZXRsMTYgKHdoZXJlKTsKICAgICAgICAgICAgdmFsIHw9ICh2YWx1ZSAmIDB4ZmZmYyk7CiAg
ICAgICAgICAgIGlmICh0YXJnZXRfYmlnX2VuZGlhbikKICAgICAgICAgICAgICBiZmRfcHV0YjE2
ICgoYmZkX3ZtYSkgdmFsLCB3aGVyZSk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBi
ZmRfcHV0bDE2ICgoYmZkX3ZtYSkgdmFsLCB3aGVyZSk7CiAgICAgICAgICB9CiAgICAgICAgICBi
cmVhazsKCgoKICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUENfRU1CX1NEQTIxOgogICAgICAgICAg
aWYgKGZpeFAtPmZ4X3BjcmVsKQogICAgICAgICAgICBhc19hYm9ydCAoIi9zcmMvYmludXRpbHMt
Mi4xMy9nYXMvY29uZmlnL3RjLXBwYy5jIiwgNTQzMSwgX19QUkVUVFlfRlVOQ1RJT05fXyk7Cgog
ICAgICAgICAgbWRfbnVtYmVyX3RvX2NoYXJzIChmaXhQLT5meF9mcmFnLT5mcl9saXRlcmFsICsg
Zml4UC0+Znhfd2hlcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoKHRhcmdldF9i
aWdfZW5kaWFuKSA/IDIgOiAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUs
IDIpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgQkZEX1JFTE9DXzg6CiAgICAgICAg
ICBpZiAoZml4UC0+ZnhfcGNyZWwpCiAgICAgICAgICAgIGFzX2Fib3J0ICgiL3NyYy9iaW51dGls
cy0yLjEzL2dhcy9jb25maWcvdGMtcHBjLmMiLCA1NDQwLCBfX1BSRVRUWV9GVU5DVElPTl9fKTsK
CiAgICAgICAgICBtZF9udW1iZXJfdG9fY2hhcnMgKGZpeFAtPmZ4X2ZyYWctPmZyX2xpdGVyYWwg
KyBmaXhQLT5meF93aGVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsIDEp
OwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgQkZEX1JFTE9DXzI0X1BMVF9QQ1JFTDoK
ICAgICAgICBjYXNlIEJGRF9SRUxPQ19QUENfTE9DQUwyNFBDOgogICAgICAgICAgaWYgKCFmaXhQ
LT5meF9wY3JlbCAmJiAhZml4UC0+ZnhfZG9uZSkKICAgICAgICAgICAgYXNfYWJvcnQgKCIvc3Jj
L2JpbnV0aWxzLTIuMTMvZ2FzL2NvbmZpZy90Yy1wcGMuYyIsIDU0NDksIF9fUFJFVFRZX0ZVTkNU
SU9OX18pOwoKICAgICAgICAgIGlmIChmaXhQLT5meF9kb25lKQogICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgY2hhciAqd2hlcmU7CiAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbnNuOwoK
CgogICAgICAgICAgICAgIHdoZXJlID0gZml4UC0+ZnhfZnJhZy0+ZnJfbGl0ZXJhbCArIGZpeFAt
PmZ4X3doZXJlOwogICAgICAgICAgICAgIGlmICh0YXJnZXRfYmlnX2VuZGlhbikKICAgICAgICAg
ICAgICAgIGluc24gPSBiZmRfZ2V0YjMyICgodW5zaWduZWQgY2hhciAqKSB3aGVyZSk7CiAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgaW5zbiA9IGJmZF9nZXRsMzIgKCh1bnNpZ25l
ZCBjaGFyICopIHdoZXJlKTsKICAgICAgICAgICAgICBpZiAoKHZhbHVlICYgMykgIT0gMCkKICAg
ICAgICAgICAgICAgIGFzX2JhZF93aGVyZSAoZml4UC0+ZnhfZmlsZSwgZml4UC0+ZnhfbGluZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgIm11
c3QgYnJhbmNoIHRvIGFuIGFkZHJlc3MgYSBtdWx0aXBsZSBvZiA0IiwgNikpOwogICAgICAgICAg
ICAgIGlmICgob2Zmc2V0VCkgdmFsdWUgPCAtMHg0MDAwMDAwMAogICAgICAgICAgICAgICAgICB8
fCAob2Zmc2V0VCkgdmFsdWUgPj0gMHg0MDAwMDAwMCkKICAgICAgICAgICAgICAgIGFzX2JhZF93
aGVyZSAoZml4UC0+ZnhfZmlsZSwgZml4UC0+ZnhfbGluZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgIkBsb2NhbCBvciBAcGx0IGJyYW5jaCBk
ZXN0aW5hdGlvbiBpcyB0b28gZmFyIGF3YXksICVsZCBieXRlcyIsIDYpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAobG9uZykgdmFsdWUpOwogICAgICAgICAgICAgIGluc24gPSBpbnNu
IHwgKHZhbHVlICYgMHgwM2ZmZmZmYyk7CiAgICAgICAgICAgICAgaWYgKHRhcmdldF9iaWdfZW5k
aWFuKQogICAgICAgICAgICAgICAgYmZkX3B1dGIzMiAoKGJmZF92bWEpIGluc24sICh1bnNpZ25l
ZCBjaGFyICopIHdoZXJlKTsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBiZmRf
cHV0bDMyICgoYmZkX3ZtYSkgaW5zbiwgKHVuc2lnbmVkIGNoYXIgKikgd2hlcmUpOwogICAgICAg
ICAgICB9CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBCRkRfUkVMT0NfVlRBQkxFX0lO
SEVSSVQ6CiAgICAgICAgICBmaXhQLT5meF9kb25lID0gMDsKICAgICAgICAgIGlmIChmaXhQLT5m
eF9hZGRzeQogICAgICAgICAgICAgICYmICFTX0lTX0RFRklORUQgKGZpeFAtPmZ4X2FkZHN5KQog
ICAgICAgICAgICAgICYmICFTX0lTX1dFQUsgKGZpeFAtPmZ4X2FkZHN5KSkKICAgICAgICAgICAg
U19TRVRfV0VBSyAoZml4UC0+ZnhfYWRkc3kpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgQkZEX1JFTE9DX1ZUQUJMRV9FTlRSWToKICAgICAgICAgIGZpeFAtPmZ4X2RvbmUgPSAwOwog
ICAgICAgICAgYnJlYWs7CgoKCgogICAgICAgIGNhc2UgQkZEX1JFTE9DX1BQQzY0X1RPQzoKICAg
ICAgICAgIGZpeFAtPmZ4X2RvbmUgPSAwOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICBmcHJpbnRmICgoX2ltcHVyZV9wdHItPl9zdGRlcnIpLAogICAgICAgICAg
ICAgICAgICAgZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgIkdhcyBmYWlsdXJlLCByZWxvYyB2YWx1
ZSAlZFxuIiwgNiksIGZpeFAtPmZ4X3JfdHlwZSk7CiAgICAgICAgICBmZmx1c2ggKChfaW1wdXJl
X3B0ci0+X3N0ZGVycikpOwogICAgICAgICAgYXNfYWJvcnQgKCIvc3JjL2JpbnV0aWxzLTIuMTMv
Z2FzL2NvbmZpZy90Yy1wcGMuYyIsIDU1MDIsIF9fUFJFVFRZX0ZVTkNUSU9OX18pOwogICAgICAg
IH0KICAgIH0KCgogIGZpeFAtPmZ4X2FkZG51bWJlciA9IHZhbHVlOwojIDU1MjMgIi9zcmMvYmlu
dXRpbHMtMi4xMy9nYXMvY29uZmlnL3RjLXBwYy5jIgp9CgoKCmFyZWxlbnQgKgp0Y19nZW5fcmVs
b2MgKHNlZywgZml4cCkKICAgICBhc2VjdGlvbiAqc2VnIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgZml4UyAqZml4cDsKewogIGFyZWxlbnQgKnJlbG9jOwoKICByZWxvYyA9IChh
cmVsZW50ICopIHhtYWxsb2MgKHNpemVvZiAoYXJlbGVudCkpOwoKICByZWxvYy0+c3ltX3B0cl9w
dHIgPSAoYXN5bWJvbCAqKikgeG1hbGxvYyAoc2l6ZW9mIChhc3ltYm9sICopKTsKICAqcmVsb2Mt
PnN5bV9wdHJfcHRyID0gc3ltYm9sX2dldF9iZmRzeW0gKGZpeHAtPmZ4X2FkZHN5KTsKICByZWxv
Yy0+YWRkcmVzcyA9IGZpeHAtPmZ4X2ZyYWctPmZyX2FkZHJlc3MgKyBmaXhwLT5meF93aGVyZTsK
ICByZWxvYy0+aG93dG8gPSBiZmRfcmVsb2NfdHlwZV9sb29rdXAgKHN0ZG91dHB1dCwgZml4cC0+
Znhfcl90eXBlKTsKICBpZiAocmVsb2MtPmhvd3RvID09IChyZWxvY19ob3d0b190eXBlICopICgo
dm9pZCAqKTApKQogICAgewogICAgICBhc19iYWRfd2hlcmUgKGZpeHAtPmZ4X2ZpbGUsIGZpeHAt
PmZ4X2xpbmUsCiAgICAgICAgICAgICAgICAgICAgZGNnZXR0ZXh0ICgoKHZvaWQgKikwKSwgInJl
bG9jICVkIG5vdCBzdXBwb3J0ZWQgYnkgb2JqZWN0IGZpbGUgZm9ybWF0IiwgNiksCiAgICAgICAg
ICAgICAgICAgICAgKGludCkgZml4cC0+Znhfcl90eXBlKTsKICAgICAgcmV0dXJuICgodm9pZCAq
KTApOwogICAgfQogIHJlbG9jLT5hZGRlbmQgPSBmaXhwLT5meF9hZGRudW1iZXI7CgogIHJldHVy
biByZWxvYzsKfQo=


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]