public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/5228: Internal gcc-3.0.2 compiler error
@ 2001-12-31 22:27 rodrigc
  0 siblings, 0 replies; 2+ messages in thread
From: rodrigc @ 2001-12-31 22:27 UTC (permalink / raw)
  To: arnaud.tisserand, gcc-bugs, gcc-prs, nobody

Synopsis: Internal gcc-3.0.2 compiler error

State-Changed-From-To: open->closed
State-Changed-By: rodrigc
State-Changed-When: Mon Dec 31 22:27:22 2001
State-Changed-Why:
    Duplicate of PR 4821:
    http://gcc.gnu.org/cgi-bin/gnatsweb.pl?pr=4821&cmd=view&database=gcc
    
    Fixed in gcc 3.0.3.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=5228


^ permalink raw reply	[flat|nested] 2+ messages in thread

* c/5228: Internal gcc-3.0.2 compiler error
@ 2001-12-31  4:46 arnaud.tisserand
  0 siblings, 0 replies; 2+ messages in thread
From: arnaud.tisserand @ 2001-12-31  4:46 UTC (permalink / raw)
  To: gcc-gnats


>Number:         5228
>Category:       c
>Synopsis:       Internal gcc-3.0.2 compiler error
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Dec 31 04:46:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Arnaud Tisserand
>Release:        gcc version 3.0.2
>Organization:
>Environment:
uname -a
SunOS sirah 5.8 Generic_108528-12 sun4u sparc SUNW,Sun-Blade-100
>Description:
fits.c: In function `ReadFITSImage':
fits.c:485: Internal compiler error in change_address, at emit-rtl.c:1635
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>How-To-Repeat:
gcc -DHAVE_CONFIG_H -I../ -I. -I. -I../magick -I.. -I../magick -D_REENTRANT -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/local/stow/ImageMagick-5.4.1-2/include -I/usr/openwin/include -I/usr/openwin/include/X11 -g -O2 -Wall -c -o fits.lo -save-temps `test -f fits.c || echo './'`fits.c
>Fix:
unknown
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="fits.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="fits.i"

IyA1NSAiZml0cy5jIgojIDEgIi4uL21hZ2ljay9tYWdpY2suaCIgMQojIDE5ICIuLi9tYWdpY2sv
bWFnaWNrLmgiCiMgMSAiLi4vbWFnaWNrL21hZ2lja19jb25maWcuaCIgMQojIDIwICIuLi9tYWdp
Y2svbWFnaWNrLmgiIDIKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t
c29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDE0ICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3RkaW8uaCIgMwoj
IDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5j
bHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3Vu
LXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92
YV9saXN0IF9fZ251Y192YV9saXN0OwojIDE1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgMzQgIi91c3IvbG9j
YWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zdGRpby5o
IiAzCiNwcmFnbWEgaWRlbnQgIkAoIylzdGRpby5oCTEuNzgJOTkvMTIvMDggU01JIgoKIyAxICIv
dXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2lzby9z
dGRpb19pc28uaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpc3RkaW9faXNvLmgJMS4yCTk5LzEwLzI1
IFNNSSIKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAxMyAi
L3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKWZl
YXR1cmVfdGVzdHMuaAkxLjE4CTk5LzA3LzI2IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9p
c2FfZGVmcy5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDMKI3ByYWdt
YSBpZGVudCAiQCgjKWlzYV9kZWZzLmgJMS4yMAk5OS8wNS8wNCBTTUkiCiMgMTYgIi91c3IvaW5j
bHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAyIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2lzby9zdGRp
b19pc28uaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy92YV9saXN0LmgiIDEgMwojIDkgIi91
c3IvaW5jbHVkZS9zeXMvdmFfbGlzdC5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyl2YV9saXN0LmgJ
MS4xMgk5OS8wNS8wNCBTTUkiCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvdmFfbGlzdC5oIiAzCnR5
cGVkZWYgdm9pZCAqX192YV9saXN0OwojIDM3ICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5o
IiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW9fdGFnLmgiIDEgMwojIDkgIi91c3IvaW5jbHVk
ZS9zdGRpb190YWcuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpc3RkaW9fdGFnLmgJMS4zCTk4LzA0
LzIwIFNNSSIKIyAyMSAiL3Vzci9pbmNsdWRlL3N0ZGlvX3RhZy5oIiAzCnR5cGVkZWYgc3RydWN0
IF9fRklMRSBfX0ZJTEU7CiMgMzggIi91c3IvaW5jbHVkZS9pc28vc3RkaW9faXNvLmgiIDIgMwoj
IDEgIi91c3IvaW5jbHVkZS9zdGRpb19pbXBsLmgiIDEgMwojIDkgIi91c3IvaW5jbHVkZS9zdGRp
b19pbXBsLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKXN0ZGlvX2ltcGwuaAkxLjgJOTkvMDYvMTAg
U01JIgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDEgMwojIDEyICIvdXNyL2lu
Y2x1ZGUvc3RkaW9faW1wbC5oIiAyIDMKIyAyMiAiL3Vzci9pbmNsdWRlL3N0ZGlvX2ltcGwuaCIg
Mwp0eXBlZGVmIGludCBzc2l6ZV90OwojIDM4ICIvdXNyL2luY2x1ZGUvc3RkaW9faW1wbC5oIiAz
CnN0cnVjdCBfX0ZJTEUKewoKCgoKICAgICAgICBzc2l6ZV90IF9jbnQ7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciAqX3B0cjsKCiAgICAgICAgdW5zaWduZWQgY2hhciAqX2Jhc2U7CiAgICAgICAgdW5z
aWduZWQgY2hhciBfZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9maWxlOwogICAgICAgIHVu
c2lnbmVkIF9fb3JpZW50YXRpb246MjsKICAgICAgICB1bnNpZ25lZCBfX2lvbm9sb2NrOjE7CiAg
ICAgICAgdW5zaWduZWQgX19maWxsZXI6NTsKfTsKIyAzOSAiL3Vzci9pbmNsdWRlL2lzby9zdGRp
b19pc28uaCIgMiAzCiMgNTkgIi91c3IvaW5jbHVkZS9pc28vc3RkaW9faXNvLmgiIDMKdHlwZWRl
ZiBsb25nIGxvbmcgX19sb25nbG9uZ190OwojIDc1ICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lz
by5oIiAzCnR5cGVkZWYgX19GSUxFIEZJTEU7CgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBz
aXplX3Q7CgoKCgoKCnR5cGVkZWYgX19sb25nbG9uZ190IGZwb3NfdDsKIyAxNDcgIi91c3IvaW5j
bHVkZS9pc28vc3RkaW9faXNvLmgiIDMKZXh0ZXJuIF9fRklMRSBfX2lvYlsyMF07CiMgMTY0ICIv
dXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAzCmV4dGVybiBpbnQgcmVtb3ZlKGNvbnN0IGNo
YXIgKik7CmV4dGVybiBpbnQgcmVuYW1lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0
ZXJuIEZJTEUgKnRtcGZpbGUodm9pZCk7CmV4dGVybiBjaGFyICp0bXBuYW0oY2hhciAqKTsKZXh0
ZXJuIGludCBmY2xvc2UoRklMRSAqKTsKZXh0ZXJuIGludCBmZmx1c2goRklMRSAqKTsKZXh0ZXJu
IEZJTEUgKmZvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIEZJTEUgKmZy
ZW9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIEZJTEUgKik7CmV4dGVybiB2b2lkIHNl
dGJ1ZihGSUxFICosIGNoYXIgKik7CmV4dGVybiBpbnQgc2V0dmJ1ZihGSUxFICosIGNoYXIgKiwg
aW50LCBzaXplX3QpOwoKZXh0ZXJuIGludCBmcHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCAu
Li4pOwoKZXh0ZXJuIGludCBmc2NhbmYoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7CgpleHRl
cm4gaW50IHByaW50Zihjb25zdCBjaGFyICosIC4uLik7CgpleHRlcm4gaW50IHNjYW5mKGNvbnN0
IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgc3ByaW50ZihjaGFyICosIGNvbnN0IGNoYXIgKiwg
Li4uKTsKCmV4dGVybiBpbnQgc3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4p
OwpleHRlcm4gaW50IHZmcHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOwpl
eHRlcm4gaW50IHZwcmludGYoY29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOwpleHRlcm4gaW50IHZz
cHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOwpleHRlcm4gaW50IGZnZXRj
KEZJTEUgKik7CmV4dGVybiBjaGFyICpmZ2V0cyhjaGFyICosIGludCwgRklMRSAqKTsKZXh0ZXJu
IGludCBmcHV0YyhpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQgZnB1dHMoY29uc3QgY2hhciAqLCBG
SUxFICopOwoKCmV4dGVybiBpbnQgZ2V0YyhGSUxFICopOwpleHRlcm4gaW50IHB1dGMoaW50LCBG
SUxFICopOwoKCgpleHRlcm4gaW50IGdldGNoYXIodm9pZCk7CmV4dGVybiBpbnQgcHV0Y2hhcihp
bnQpOwoKZXh0ZXJuIGNoYXIgKmdldHMoY2hhciAqKTsKZXh0ZXJuIGludCBwdXRzKGNvbnN0IGNo
YXIgKik7CmV4dGVybiBpbnQgdW5nZXRjKGludCwgRklMRSAqKTsKZXh0ZXJuIHNpemVfdCBmcmVh
ZCh2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwpleHRlcm4gc2l6ZV90IGZ3cml0ZShj
b25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwpleHRlcm4gaW50IGZnZXRwb3Mo
RklMRSAqLCBmcG9zX3QgKik7CmV4dGVybiBpbnQgZnNlZWsoRklMRSAqLCBsb25nLCBpbnQpOwpl
eHRlcm4gaW50IGZzZXRwb3MoRklMRSAqLCBjb25zdCBmcG9zX3QgKik7CmV4dGVybiBsb25nIGZ0
ZWxsKEZJTEUgKik7CmV4dGVybiB2b2lkIHJld2luZChGSUxFICopOwoKCmV4dGVybiB2b2lkIGNs
ZWFyZXJyKEZJTEUgKik7CmV4dGVybiBpbnQgZmVvZihGSUxFICopOwpleHRlcm4gaW50IGZlcnJv
cihGSUxFICopOwoKZXh0ZXJuIHZvaWQgcGVycm9yKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGlu
dCBfX2ZpbGJ1ZihGSUxFICopOwpleHRlcm4gaW50IF9fZmxzYnVmKGludCwgRklMRSAqKTsKIyAz
NyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNs
dWRlL3N0ZGlvLmgiIDIgMwojIDEwNyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t
c29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBfX2xvbmdsb25nX3Qg
b2ZmX3Q7CiMgMTM0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44
LzMuMC4yL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIF9fdmFfbGlzdCBfX25vdF92YV9saXN0
X187CiMgMTUxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMu
MC4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdW5zaWduZWQgY2hhciBfc2lidWZbXSwgX3Nv
YnVmW107CiMgMTY4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44
LzMuMC4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZm9wZW42NChjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBGSUxFICpmcmVvcGVuNjQoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICosIEZJTEUgKik7CmV4dGVybiBGSUxFICp0bXBmaWxlNjQodm9pZCk7CmV4dGVy
biBpbnQgZmdldHBvczY0KEZJTEUgKiwgZnBvc190ICopOwpleHRlcm4gaW50IGZzZXRwb3M2NChG
SUxFICosIGNvbnN0IGZwb3NfdCAqKTsKIyAxOTMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB1bnNpZ25l
ZCBjaGFyICpfYnVmZW5kdGFiW107CmV4dGVybiBGSUxFICpfbGFzdGJ1ZjsKIyAyMjUgIi91c3Iv
bG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zdGRp
by5oIiAzCmV4dGVybiBjaGFyICp0bXBuYW1fcihjaGFyICopOwojIDIzNiAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N0ZGlvLmgiIDMK
ZXh0ZXJuIGludCBzbnByaW50ZihjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCAuLi4pOwoK
CgoKZXh0ZXJuIGludCB2c25wcmludGYoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgX19n
bnVjX3ZhX2xpc3QpOwojIDI1MCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOC8zLjAuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZkb3BlbihpbnQs
IGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpjdGVybWlkKGNoYXIgKik7CmV4dGVybiBpbnQg
ZmlsZW5vKEZJTEUgKik7CiMgMjYxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdm9pZCBmbG9ja2ZpbGUo
RklMRSAqKTsKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUoRklMRSAqKTsKZXh0ZXJuIHZvaWQgZnVu
bG9ja2ZpbGUoRklMRSAqKTsKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkKEZJTEUgKik7CmV4dGVy
biBpbnQgZ2V0Y2hhcl91bmxvY2tlZCh2b2lkKTsKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkKGlu
dCwgRklMRSAqKTsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkKGludCk7CiMgMjc2ICIvdXNy
L2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3Rk
aW8uaCIgMwpleHRlcm4gRklMRSAqcG9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpl
eHRlcm4gY2hhciAqY3VzZXJpZChjaGFyICopOwpleHRlcm4gY2hhciAqdGVtcG5hbShjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hhciAqY29uc3Qg
KiwgY29uc3QgY2hhciAqKTsKCgoKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKZXh0ZXJuIGludCBvcHRp
bmQsIG9wdGVyciwgb3B0b3B0OwpleHRlcm4gaW50IGdldHcoRklMRSAqKTsKZXh0ZXJuIGludCBw
dXR3KGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBwY2xvc2UoRklMRSAqKTsKCgoKCgoKCmV4dGVy
biBpbnQgZnNlZWtvNjQoRklMRSAqLCBvZmZfdCwgaW50KTsKZXh0ZXJuIG9mZl90IGZ0ZWxsbzY0
KEZJTEUgKik7CiMgMjUgIi4uL21hZ2ljay9tYWdpY2suaCIgMgojIDEgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMSAzCiMgMTYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojcHJhZ21hIGlkZW50
ICJAKCMpc3RkbGliLmgJMS40Nwk5OS8xMS8wMyBTTUkiCgojIDEgIi91c3IvbG9jYWwvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9pc28vc3RkbGliX2lzby5o
IiAxIDMKIyAzNyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8z
LjAuMi9pbmNsdWRlL2lzby9zdGRsaWJfaXNvLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKXN0ZGxp
Yl9pc28uaAkxLjIJOTkvMTIvMjEgU01JIgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVf
dGVzdHMuaCIgMSAzCiMgNDAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
aXMyLjgvMy4wLjIvaW5jbHVkZS9pc28vc3RkbGliX2lzby5oIiAyIDMKCgoKCgoKZXh0ZXJuIHVu
c2lnbmVkIGNoYXIgX19jdHlwZVtdOwojIDU3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvaXNvL3N0ZGxpYl9pc28uaCIgMwp0eXBlZGVm
IHN0cnVjdCB7CiAgICAgICAgaW50IHF1b3Q7CiAgICAgICAgaW50IHJlbTsKfSBkaXZfdDsKCnR5
cGVkZWYgc3RydWN0IHsKICAgICAgICBsb25nIHF1b3Q7CiAgICAgICAgbG9uZyByZW07Cn0gbGRp
dl90OwojIDk2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMu
MC4yL2luY2x1ZGUvaXNvL3N0ZGxpYl9pc28uaCIgMwp0eXBlZGVmIGxvbmcgd2NoYXJfdDsKCgoK
CgoKZXh0ZXJuIHZvaWQgYWJvcnQodm9pZCk7CmV4dGVybiBpbnQgYWJzKGludCk7CmV4dGVybiBp
bnQgYXRleGl0KHZvaWQgKCopKHZvaWQpKTsKZXh0ZXJuIGRvdWJsZSBhdG9mKGNvbnN0IGNoYXIg
Kik7CmV4dGVybiBpbnQgYXRvaShjb25zdCBjaGFyICopOwpleHRlcm4gbG9uZyBpbnQgYXRvbChj
b25zdCBjaGFyICopOwpleHRlcm4gdm9pZCAqYnNlYXJjaChjb25zdCB2b2lkICosIGNvbnN0IHZv
aWQgKiwgc2l6ZV90LCBzaXplX3QsCiAgICAgICAgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0
IHZvaWQgKikpOwpleHRlcm4gdm9pZCAqY2FsbG9jKHNpemVfdCwgc2l6ZV90KTsKZXh0ZXJuIGRp
dl90IGRpdihpbnQsIGludCk7CmV4dGVybiB2b2lkIGV4aXQoaW50KTsKZXh0ZXJuIHZvaWQgZnJl
ZSh2b2lkICopOwpleHRlcm4gY2hhciAqZ2V0ZW52KGNvbnN0IGNoYXIgKik7CmV4dGVybiBsb25n
IGludCBsYWJzKGxvbmcpOwpleHRlcm4gbGRpdl90IGxkaXYobG9uZywgbG9uZyk7CmV4dGVybiB2
b2lkICptYWxsb2Moc2l6ZV90KTsKZXh0ZXJuIGludCBtYmxlbihjb25zdCBjaGFyICosIHNpemVf
dCk7CmV4dGVybiBzaXplX3QgbWJzdG93Y3Mod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVf
dCk7CmV4dGVybiBpbnQgbWJ0b3djKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpl
eHRlcm4gdm9pZCBxc29ydCh2b2lkICosIHNpemVfdCwgc2l6ZV90LAogICAgICAgIGludCAoKiko
Y29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKZXh0ZXJuIGludCByYW5kKHZvaWQpOwpleHRl
cm4gdm9pZCAqcmVhbGxvYyh2b2lkICosIHNpemVfdCk7CmV4dGVybiB2b2lkIHNyYW5kKHVuc2ln
bmVkIGludCk7CmV4dGVybiBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CmV4
dGVybiBsb25nIGludCBzdHJ0b2woY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4g
dW5zaWduZWQgbG9uZyBpbnQgc3RydG91bChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CmV4
dGVybiBpbnQgc3lzdGVtKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgd2N0b21iKGNoYXIgKiwg
d2NoYXJfdCk7CmV4dGVybiBzaXplX3Qgd2NzdG9tYnMoY2hhciAqLCBjb25zdCB3Y2hhcl90ICos
IHNpemVfdCk7CiMgMTkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy93YWl0LmgiIDEgMwojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwoj
cHJhZ21hIGlkZW50ICJAKCMpd2FpdC5oCTEuMjEJOTcvMDQvMDggU01JIgoKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL2ZlYXR1cmVfdGVzdHMuaCIgMSAzCiMgMTkgIi91c3IvaW5jbHVkZS9zeXMvd2Fp
dC5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIu
OC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiNw
cmFnbWEgaWRlbnQgIkAoIyl0eXBlcy5oCTEuNjYJMDAvMDIvMTQgU01JIgoKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDEgMwojIDI4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3Nw
YXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDEgIi91
c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAyOSAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAy
IDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9tYWNodHlwZXMuaCIgMSAzCiMgMTYgIi91c3Iv
aW5jbHVkZS9zeXMvbWFjaHR5cGVzLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKW1hY2h0eXBlcy5o
CTEuMTMJOTkvMDUvMDQgU01JIgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVzdHMu
aCIgMSAzCiMgMTkgIi91c3IvaW5jbHVkZS9zeXMvbWFjaHR5cGVzLmgiIDIgMwojIDM3ICIvdXNy
L2luY2x1ZGUvc3lzL21hY2h0eXBlcy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgY2hhciBsb2NrX3Q7
CiMgMzQgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCiMgNDUgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvaW50X3R5cGVzLmgiIDEgMwojIDkgIi91c3IvaW5jbHVkZS9zeXMvaW50X3R5
cGVzLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKWludF90eXBlcy5oCTEuNgk5Ny8wOC8yMCBTTUki
CiMgNDIgIi91c3IvaW5jbHVkZS9zeXMvaW50X3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
c3lzL2lzYV9kZWZzLmgiIDEgMwojIDQzICIvdXNyL2luY2x1ZGUvc3lzL2ludF90eXBlcy5oIiAy
IDMKIyA2MiAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfdHlwZXMuaCIgMwp0eXBlZGVmIGNoYXIgaW50
OF90OwoKCgoKCnR5cGVkZWYgc2hvcnQgaW50MTZfdDsKdHlwZWRlZiBpbnQgaW50MzJfdDsKCgoK
CnR5cGVkZWYgbG9uZyBsb25nIGludDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50
OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCB1aW50MzJfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnQ2NF90OwojIDk0
ICIvdXNyL2luY2x1ZGUvc3lzL2ludF90eXBlcy5oIiAzCnR5cGVkZWYgaW50NjRfdCBpbnRtYXhf
dDsKdHlwZWRlZiB1aW50NjRfdCB1aW50bWF4X3Q7CiMgMTEwICIvdXNyL2luY2x1ZGUvc3lzL2lu
dF90eXBlcy5oIiAzCnR5cGVkZWYgaW50IGludHB0cl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1
aW50cHRyX3Q7CgoKCgoKCgp0eXBlZGVmIGNoYXIgaW50X2xlYXN0OF90OwoKCgoKCnR5cGVkZWYg
c2hvcnQgaW50X2xlYXN0MTZfdDsKdHlwZWRlZiBpbnQgaW50X2xlYXN0MzJfdDsKCgoKCnR5cGVk
ZWYgbG9uZyBsb25nIGludF9sZWFzdDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50
X2xlYXN0OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnRfbGVhc3QxNl90Owp0eXBlZGVm
IHVuc2lnbmVkIGludCB1aW50X2xlYXN0MzJfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBs
b25nIHVpbnRfbGVhc3Q2NF90OwojIDQ2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDYyICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDMKdHlwZWRlZiBsb25nIGxvbmcgbG9uZ2xvbmdfdDsKdHlwZWRlZiB1bnNpZ25lZCBs
b25nIGxvbmcgdV9sb25nbG9uZ190OwojIDg1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBsb25n
IHRfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB0X3VzY2FsYXJfdDsKCgoKCgp0eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgdWNoYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnRf
dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWxv
bmdfdDsKCnR5cGVkZWYgY2hhciAqY2FkZHJfdDsKdHlwZWRlZiBsb25nIGRhZGRyX3Q7CnR5cGVk
ZWYgc2hvcnQgY250X3Q7CgoKdHlwZWRlZiB1bG9uZ190IHBhZGRyX3Q7CiMgMTE4ICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDMKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwojIDEyNyAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5
cGVkZWYgdWxvbmdfdCBwZm5fdDsKdHlwZWRlZiB1bG9uZ190IHBnY250X3Q7CnR5cGVkZWYgbG9u
ZyBzcGdjbnRfdDsKCnR5cGVkZWYgdWNoYXJfdCB1c2VfdDsKdHlwZWRlZiBzaG9ydCBzeXNpZF90
Owp0eXBlZGVmIHNob3J0IGluZGV4X3Q7CnR5cGVkZWYgdm9pZCAqdGltZW91dF9pZF90Owp0eXBl
ZGVmIHZvaWQgKmJ1ZmNhbGxfaWRfdDsKIyAxNzAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIHVf
bG9uZ2xvbmdfdCBpbm9fdDsKdHlwZWRlZiBsb25nbG9uZ190IGJsa2NudF90Owp0eXBlZGVmIHVf
bG9uZ2xvbmdfdCBmc2Jsa2NudF90Owp0eXBlZGVmIHVfbG9uZ2xvbmdfdCBmc2ZpbGNudF90Owoj
IDE5MyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgbG9uZyBibGtzaXplX3Q7CgoKCnR5cGVkZWYg
ZW51bSB7IF9CX0ZBTFNFLCBfQl9UUlVFIH0gYm9vbGVhbl90OwojIDIxMCAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5o
IiAzCnR5cGVkZWYgaW50NjRfdCBwYWQ2NF90Owp0eXBlZGVmIHVpbnQ2NF90IHVwYWQ2NF90Owoj
IDIyMyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgbG9uZ2xvbmdfdCBvZmZzZXRfdDsKdHlwZWRl
ZiB1X2xvbmdsb25nX3QgdV9vZmZzZXRfdDsKdHlwZWRlZiB1X2xvbmdsb25nX3QgbGVuX3Q7CnR5
cGVkZWYgbG9uZ2xvbmdfdCBkaXNrYWRkcl90OwojIDI0NCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp
Yi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVk
ZWYgdW5pb24gewogICAgICAgIG9mZnNldF90IF9mOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICBpbnQzMl90IF91OwogICAgICAgICAgICAgICAgaW50MzJfdCBfbDsKICAgICAgICB9
IF9wOwp9IGxsb2ZmX3Q7CiMgMjY0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiB1bmlvbiB7CiAg
ICAgICAgZGlza2FkZHJfdCBfZjsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgaW50
MzJfdCBfdTsKICAgICAgICAgICAgICAgIGludDMyX3QgX2w7CiAgICAgICAgfSBfcDsKfSBsbGRh
ZGRyX3Q7CgoKdHlwZWRlZiB1aW50X3Qga19mbHRzZXRfdDsKIyAyODcgIi91c3IvbG9jYWwvbGli
L2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
Mwp0eXBlZGVmIGxvbmcgaWRfdDsKCgoKCgoKdHlwZWRlZiB1aW50X3QgdXNlY29uZHNfdDsKCgoK
dHlwZWRlZiBsb25nIHN1c2Vjb25kc190OwojIDMwOCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9z
cGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYg
dWxvbmdfdCBtYWpvcl90Owp0eXBlZGVmIHVsb25nX3QgbWlub3JfdDsKCgoKCgp0eXBlZGVmIHNo
b3J0IHByaV90OwojIDMyOCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp
czIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgdXNob3J0X3Qgb19tb2Rl
X3Q7CnR5cGVkZWYgc2hvcnQgb19kZXZfdDsKdHlwZWRlZiB1c2hvcnRfdCBvX3VpZF90Owp0eXBl
ZGVmIG9fdWlkX3Qgb19naWRfdDsKdHlwZWRlZiBzaG9ydCBvX25saW5rX3Q7CnR5cGVkZWYgc2hv
cnQgb19waWRfdDsKdHlwZWRlZiB1c2hvcnRfdCBvX2lub190OwoKCgoKCnR5cGVkZWYgaW50IGtl
eV90OwoKCgp0eXBlZGVmIHVsb25nX3QgbW9kZV90OwoKCgoKCgoKdHlwZWRlZiBsb25nIHVpZF90
OwoKCgp0eXBlZGVmIHVpZF90IGdpZF90OwoKdHlwZWRlZiBpZF90IHRhc2tpZF90Owp0eXBlZGVm
IGlkX3QgcHJvamlkX3Q7CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFk
X211dGV4IHsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdWludDE2X3QgX19wdGhy
ZWFkX211dGV4X2ZsYWcxOwogICAgICAgICAgICAgICAgdWludDhfdCBfX3B0aHJlYWRfbXV0ZXhf
ZmxhZzI7CiAgICAgICAgICAgICAgICB1aW50OF90IF9fcHRocmVhZF9tdXRleF9jZWlsaW5nOwog
ICAgICAgICAgICAgICAgdWludDMyX3QgX19wdGhyZWFkX211dGV4X3R5cGU7CiAgICAgICAgfSBf
X3B0aHJlYWRfbXV0ZXhfZmxhZ3M7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBfX3B0aHJlYWRfbXV0ZXhfcGFk
WzhdOwogICAgICAgICAgICAgICAgfSBfX3B0aHJlYWRfbXV0ZXhfbG9jazY0OwogICAgICAgICAg
ICAgICAgdXBhZDY0X3QgX19wdGhyZWFkX211dGV4X293bmVyNjQ7CiAgICAgICAgfSBfX3B0aHJl
YWRfbXV0ZXhfbG9jazsKICAgICAgICB1cGFkNjRfdCBfX3B0aHJlYWRfbXV0ZXhfZGF0YTsKfSBw
dGhyZWFkX211dGV4X3Q7Cgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9jb25kIHsKICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgdWludDhfdCBfX3B0aHJlYWRfY29uZF9mbGFnWzRdOwog
ICAgICAgICAgICAgICAgdWludDMyX3QgX19wdGhyZWFkX2NvbmRfdHlwZTsKICAgICAgICB9IF9f
cHRocmVhZF9jb25kX2ZsYWdzOwogICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9jb25kX2RhdGE7
Cn0gcHRocmVhZF9jb25kX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9yd2xvY2sgewog
ICAgICAgIGludDMyX3QgX19wdGhyZWFkX3J3bG9ja19yZWFkZXJzOwogICAgICAgIHVpbnQxNl90
IF9fcHRocmVhZF9yd2xvY2tfdHlwZTsKICAgICAgICB1aW50MTZfdCBfX3B0aHJlYWRfcndsb2Nr
X21hZ2ljOwogICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9yd2xvY2tfcGFkMVszXTsKICAgICAg
ICB1cGFkNjRfdCBfX3B0aHJlYWRfcndsb2NrX3BhZDJbMl07CiAgICAgICAgdXBhZDY0X3QgX19w
dGhyZWFkX3J3bG9ja19wYWQzWzJdOwp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKCgp0eXBlZGVmIHN0
cnVjdCBfcHRocmVhZF9hdHRyIHsKICAgICAgICB2b2lkICpfX3B0aHJlYWRfYXR0cnA7Cn0gcHRo
cmVhZF9hdHRyX3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfbXV0ZXhhdHRyIHsKICAg
ICAgICB2b2lkICpfX3B0aHJlYWRfbXV0ZXhhdHRycDsKfSBwdGhyZWFkX211dGV4YXR0cl90OwoK
CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2NvbmRhdHRyIHsKICAgICAgICB2b2lkICpfX3B0
aHJlYWRfY29uZGF0dHJwOwp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgoKCnR5cGVkZWYgc3RydWN0
IF9vbmNlIHsKICAgICAgICB1cGFkNjRfdCBfX3B0aHJlYWRfb25jZV9wYWRbNF07Cn0gcHRocmVh
ZF9vbmNlX3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfcndsb2NrYXR0ciB7CiAgICAg
ICAgdm9pZCAqX19wdGhyZWFkX3J3bG9ja2F0dHJwOwp9IHB0aHJlYWRfcndsb2NrYXR0cl90OwoK
dHlwZWRlZiB1bG9uZ190IGRldl90OwoKCgoKCnR5cGVkZWYgdWxvbmdfdCBubGlua190Owp0eXBl
ZGVmIGxvbmcgcGlkX3Q7CiMgNDgxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBsb25nIHRpbWVf
dDsKCgoKCnR5cGVkZWYgbG9uZyBjbG9ja190OwoKCgoKdHlwZWRlZiBpbnQgY2xvY2tpZF90OwoK
CgoKdHlwZWRlZiBpbnQgdGltZXJfdDsKIyAyMSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDIg
MwoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMSAzCiMgMTYgIi91c3IvaW5j
bHVkZS9zeXMvcmVzb3VyY2UuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpcmVzb3VyY2UuaAkxLjI1
CTk4LzA2LzMwIFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEg
MwojIDE5ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDIgMwoKIyAxICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDEgMwojIDIxICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDIgMwojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvdGltZS5oIiAxIDMKIyAyMiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMK
I3ByYWdtYSBpZGVudCAiQCgjKXRpbWUuaAkyLjY2CTAxLzAxLzE3IFNNSSIKCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL3Rp
bWUuaCIgMiAzCiMgNDkgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCnN0cnVjdCB0aW1ldmFs
IHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwogICAgICAgIHN1c2Vjb25kc190IHR2X3VzZWM7Cn07
CiMgMTAwICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwojIDEgIi91c3IvbG9jYWwvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAz
CiMgMTAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCiMgMTU1ICIvdXNyL2luY2x1ZGUv
c3lzL3RpbWUuaCIgMwpzdHJ1Y3QgaXRpbWVydmFsIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBp
dF9pbnRlcnZhbDsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKfTsKIyAyMDMgIi91
c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCnR5cGVkZWYgbG9uZ2xvbmdfdCBocnRpbWVfdDsKIyAz
MzEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCmludCBnZXRpdGltZXIoaW50LCBzdHJ1Y3Qg
aXRpbWVydmFsICopOwppbnQgdXRpbWVzKGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRpbWV2
YWwgKik7CgppbnQgc2V0aXRpbWVyKGludCwgY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqLCBzdHJ1
Y3QgaXRpbWVydmFsICopOwojIDM4OSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKaW50IGdl
dHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqLCB2b2lkICopOwojIDQyMyAiL3Vzci9pbmNsdWRl
L3N5cy90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMKIyAxMiAi
L3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpc2VsZWN0LmgJ
MS4xNgk5OC8wNC8yNyBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5o
IiAxIDMKIyAxNSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL3RpbWUuaCIgMSAzCiMgMTggIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIg
MwojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCnR5cGVkZWYgbG9uZyBmZHNfbWFz
azsKIyA3NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX2Zk
X3NldCB7CgogICAgICAgIGxvbmcgZmRzX2JpdHNbKCgoMTAyNCkrKCgoc2l6ZW9mIChmZHNfbWFz
aykgKiA4KSktMSkpLygoc2l6ZW9mIChmZHNfbWFzaykgKiA4KSkpXTsKfSBmZF9zZXQ7CiMgOTcg
Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKZXh0ZXJuIGludCBzZWxlY3QoaW50LCBmZF9z
ZXQgKiwgZmRfc2V0ICosIGZkX3NldCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKIyA0MjQgIi91c3Iv
aW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKIyAyMiAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5o
IiAyIDMKIyA3NSAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzCnR5cGVkZWYgdV9sb25n
bG9uZ190IHJsaW1fdDsKIyAxMDIgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwpzdHJ1
Y3QgcmxpbWl0IHsKICAgICAgICBybGltX3QgcmxpbV9jdXI7CiAgICAgICAgcmxpbV90IHJsaW1f
bWF4Owp9OwojIDE0MyAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzCnN0cnVjdCBydXNh
Z2UgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwogICAgICAgIHN0cnVjdCB0aW1l
dmFsIHJ1X3N0aW1lOwogICAgICAgIGxvbmcgcnVfbWF4cnNzOwogICAgICAgIGxvbmcgcnVfaXhy
c3M7CiAgICAgICAgbG9uZyBydV9pZHJzczsKICAgICAgICBsb25nIHJ1X2lzcnNzOwogICAgICAg
IGxvbmcgcnVfbWluZmx0OwogICAgICAgIGxvbmcgcnVfbWFqZmx0OwogICAgICAgIGxvbmcgcnVf
bnN3YXA7CiAgICAgICAgbG9uZyBydV9pbmJsb2NrOwogICAgICAgIGxvbmcgcnVfb3VibG9jazsK
ICAgICAgICBsb25nIHJ1X21zZ3NuZDsKICAgICAgICBsb25nIHJ1X21zZ3JjdjsKICAgICAgICBs
b25nIHJ1X25zaWduYWxzOwogICAgICAgIGxvbmcgcnVfbnZjc3c7CiAgICAgICAgbG9uZyBydV9u
aXZjc3c7Cn07CiMgMTkzICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMKZXh0ZXJuIGlu
dCBzZXRybGltaXQ2NChpbnQsIGNvbnN0IHN0cnVjdCBybGltaXQ2NCAqKTsKZXh0ZXJuIGludCBn
ZXRybGltaXQ2NChpbnQsIHN0cnVjdCBybGltaXQ2NCAqKTsKIyAyMDMgIi91c3IvaW5jbHVkZS9z
eXMvcmVzb3VyY2UuaCIgMwpleHRlcm4gaW50IGdldHByaW9yaXR5KGludCwgaWRfdCk7CmV4dGVy
biBpbnQgc2V0cHJpb3JpdHkoaW50LCBpZF90LCBpbnQpOwpleHRlcm4gaW50IGdldHJ1c2FnZShp
bnQsIHN0cnVjdCBydXNhZ2UgKik7CiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAyIDMK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIgMSAzCiMgMTYgIi91c3IvaW5jbHVkZS9z
eXMvc2lnaW5mby5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylzaWdpbmZvLmgJMS41NAk5OC8wMy8y
NyBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAxOSAi
L3Vzci9pbmNsdWRlL3N5cy9zaWdpbmZvLmgiIDIgMwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1s
aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMg
MjAgIi91c3IvaW5jbHVkZS9zeXMvc2lnaW5mby5oIiAyIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N5
cy9zaWdpbmZvLmgiIDMKdW5pb24gc2lndmFsIHsKICAgICAgICBpbnQgc2l2YWxfaW50OwogICAg
ICAgIHZvaWQgKnNpdmFsX3B0cjsKfTsKIyA2OSAiL3Vzci9pbmNsdWRlL3N5cy9zaWdpbmZvLmgi
IDMKc3RydWN0IHNpZ2V2ZW50IHsKICAgICAgICBpbnQgc2lnZXZfbm90aWZ5OwogICAgICAgIGlu
dCBzaWdldl9zaWdubzsKICAgICAgICB1bmlvbiBzaWd2YWwgc2lnZXZfdmFsdWU7CiAgICAgICAg
dm9pZCAoKnNpZ2V2X25vdGlmeV9mdW5jdGlvbikodW5pb24gc2lndmFsKTsKICAgICAgICBwdGhy
ZWFkX2F0dHJfdCAqc2lnZXZfbm90aWZ5X2F0dHJpYnV0ZXM7CiAgICAgICAgaW50IF9fc2lnZXZf
cGFkMjsKfTsKIyAxMjYgIi91c3IvaW5jbHVkZS9zeXMvc2lnaW5mby5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy9tYWNoc2lnLmgiIDEgMwojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL21hY2hzaWcu
aCIgMwojcHJhZ21hIGlkZW50ICJAKCMpbWFjaHNpZy5oCTEuMTUJOTkvMDgvMTUgU01JIgoKIyAx
ICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVzdHMuaCIgMSAzCiMgMTkgIi91c3IvaW5jbHVk
ZS9zeXMvbWFjaHNpZy5oIiAyIDMKIyAxMjcgIi91c3IvaW5jbHVkZS9zeXMvc2lnaW5mby5oIiAy
IDMKIyAyMDggIi91c3IvaW5jbHVkZS9zeXMvc2lnaW5mby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L3N5cy90aW1lX3N0ZF9pbXBsLmgiIDEgMwojIDE5ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVfc3Rk
X2ltcGwuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpdGltZV9zdGRfaW1wbC5oCTEuMgk5OC8wMi8x
MyBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAyMiAi
L3Vzci9pbmNsdWRlL3N5cy90aW1lX3N0ZF9pbXBsLmgiIDIgMwojIDMyICIvdXNyL2luY2x1ZGUv
c3lzL3RpbWVfc3RkX2ltcGwuaCIgMwp0eXBlZGVmIHN0cnVjdCBfdGltZXNwZWMgewogICAgICAg
IHRpbWVfdCBfX3R2X3NlYzsKICAgICAgICBsb25nIF9fdHZfbnNlYzsKfSBfdGltZXNwZWNfdDsK
CnR5cGVkZWYgc3RydWN0IF90aW1lc3BlYyBfdGltZXN0cnVjX3Q7CiMgMjA5ICIvdXNyL2luY2x1
ZGUvc3lzL3NpZ2luZm8uaCIgMiAzCiMgMjE3ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIg
MwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjE4ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8u
aCIgMiAzCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAgICAgICBpbnQgc2lfc2lnbm87CiAgICAg
ICAgaW50IHNpX2NvZGU7CiAgICAgICAgaW50IHNpX2Vycm5vOwoKCgogICAgICAgIHVuaW9uIHsK
CiAgICAgICAgICAgICAgICBpbnQgX19wYWRbKCgxMjggLyBzaXplb2YgKGludCkpIC0gMyldOwoK
ICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9f
cGlkOwogICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpZF90IF9fdWlkOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmlvbiBzaWd2YWwgX192YWx1ZTsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IF9fa2lsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfdCBfX3V0aW1lOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fc3RhdHVzOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfdCBfX3N0aW1lOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gX19jbGQ7CiAgICAgICAgICAgICAgICAgICAgICAg
IH0gX19wZGF0YTsKICAgICAgICAgICAgICAgIH0gX19wcm9jOwoKICAgICAgICAgICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fYWRkcjsKICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IF9fdHJhcG5vOwogICAgICAgICAgICAgICAgICAgICAgICBjYWRkcl90
IF9fcGM7CiAgICAgICAgICAgICAgICB9IF9fZmF1bHQ7CgogICAgICAgICAgICAgICAgc3RydWN0
IHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2ZkOwogICAgICAgICAgICAgICAgICAg
ICAgICBsb25nIF9fYmFuZDsKICAgICAgICAgICAgICAgIH0gX19maWxlOwoKICAgICAgICAgICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhZGRyX3QgX19mYWRkcjsKCgoK
CiAgICAgICAgICAgICAgICAgICAgICAgIF90aW1lc3RydWNfdCBfX3RzdGFtcDsKCiAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3J0IF9fc3lzY2FsbDsKICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciBfX25zeXNhcmc7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19mYXVsdDsKICAg
ICAgICAgICAgICAgICAgICAgICAgbG9uZyBfX3N5c2FyZ1s4XTsKICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IF9fbXN0YXRlWzEwXTsKICAgICAgICAgICAgICAgIH0gX19wcm9mOwoKICAgICAg
ICB9IF9fZGF0YTsKCn0gc2lnaW5mb190OwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIg
MiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9wcm9jc2V0LmgiIDEgMwojIDE2ICIvdXNyL2luY2x1
ZGUvc3lzL3Byb2NzZXQuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpcHJvY3NldC5oCTEuMjAJMDAv
MDIvMTQgU01JIgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEg
MwojIDIzICIvdXNyL2luY2x1ZGUvc3lzL3Byb2NzZXQuaCIgMiAzCiMgMSAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5o
IiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy9wcm9jc2V0LmgiIDIgMwojIDQxICIvdXNyL2lu
Y2x1ZGUvc3lzL3Byb2NzZXQuaCIgMwp0eXBlZGVmIGVudW0KCgoKICAgICAgICAgICAgICAgIHsK
ICAgICAgICBQX1BJRCwKICAgICAgICBQX1BQSUQsCiAgICAgICAgUF9QR0lELAoKICAgICAgICBQ
X1NJRCwKICAgICAgICBQX0NJRCwKICAgICAgICBQX1VJRCwKICAgICAgICBQX0dJRCwKICAgICAg
ICBQX0FMTCwKICAgICAgICBQX0xXUElELAogICAgICAgIFBfVEFTS0lELAogICAgICAgIFBfUFJP
SklECn0gaWR0eXBlX3Q7CiMgMjcgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAyIDMKIyA4NiAi
L3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMKZXh0ZXJuIHBpZF90IHdhaXQoaW50ICopOwpleHRl
cm4gcGlkX3Qgd2FpdHBpZChwaWRfdCwgaW50ICosIGludCk7CgoKZXh0ZXJuIGludCB3YWl0aWQo
aWR0eXBlX3QsIGlkX3QsIHNpZ2luZm9fdCAqLCBpbnQpOwpleHRlcm4gcGlkX3Qgd2FpdDMoaW50
ICosIGludCwgc3RydWN0IHJ1c2FnZSAqKTsKIyAyMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAy
IDMKIyA2OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAg
ICBsb25nIGxvbmcgcXVvdDsKICAgICAgICBsb25nIGxvbmcgcmVtOwp9IGxsZGl2X3Q7CiMgMTA5
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCByYW5kX3IodW5zaWduZWQgaW50
ICopOwoKCmV4dGVybiB2b2lkIF9leGl0aGFuZGxlKHZvaWQpOwoKCgoKZXh0ZXJuIGRvdWJsZSBk
cmFuZDQ4KHZvaWQpOwpleHRlcm4gZG91YmxlIGVyYW5kNDgodW5zaWduZWQgc2hvcnQgKik7CmV4
dGVybiBsb25nIGpyYW5kNDgodW5zaWduZWQgc2hvcnQgKik7CmV4dGVybiB2b2lkIGxjb25nNDgo
dW5zaWduZWQgc2hvcnQgKik7CmV4dGVybiBsb25nIGxyYW5kNDgodm9pZCk7CmV4dGVybiBsb25n
IG1yYW5kNDgodm9pZCk7CmV4dGVybiBsb25nIG5yYW5kNDgodW5zaWduZWQgc2hvcnQgKik7CmV4
dGVybiB1bnNpZ25lZCBzaG9ydCAqc2VlZDQ4KHVuc2lnbmVkIHNob3J0ICopOwpleHRlcm4gdm9p
ZCBzcmFuZDQ4KGxvbmcpOwpleHRlcm4gaW50IHB1dGVudihjaGFyICopOwpleHRlcm4gdm9pZCBz
ZXRrZXkoY29uc3QgY2hhciAqKTsKIyAxNTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRl
cm4gaW50IG1rc3RlbXA2NChjaGFyICopOwojIDE2MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz
CmV4dGVybiBsb25nIGE2NGwoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmVjdnQoZG91Ymxl
LCBpbnQsIGludCAqLCBpbnQgKik7CmV4dGVybiBjaGFyICpmY3Z0KGRvdWJsZSwgaW50LCBpbnQg
KiwgaW50ICopOwpleHRlcm4gY2hhciAqZ2N2dChkb3VibGUsIGludCwgY2hhciAqKTsKZXh0ZXJu
IGludCBnZXRzdWJvcHQoY2hhciAqKiwgY2hhciAqY29uc3QgKiwgY2hhciAqKik7CmV4dGVybiBp
bnQgZ3JhbnRwdChpbnQpOwpleHRlcm4gY2hhciAqaW5pdHN0YXRlKHVuc2lnbmVkLCBjaGFyICos
IHNpemVfdCk7CmV4dGVybiBjaGFyICpsNjRhKGxvbmcpOwpleHRlcm4gY2hhciAqbWt0ZW1wKGNo
YXIgKik7CmV4dGVybiBjaGFyICpwdHNuYW1lKGludCk7CmV4dGVybiBsb25nIHJhbmRvbSh2b2lk
KTsKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKZXh0ZXJuIGNo
YXIgKnNldHN0YXRlKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIHNyYW5kb20odW5zaWduZWQp
OwpleHRlcm4gaW50IHR0eXNsb3Qodm9pZCk7CmV4dGVybiBpbnQgdW5sb2NrcHQoaW50KTsKZXh0
ZXJuIHZvaWQgKnZhbGxvYyhzaXplX3QpOwojIDI2ICIuLi9tYWdpY2svbWFnaWNrLmgiIDIKIyAx
ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1
ZGUvc3RkYXJnLmgiIDEgMwojIDkwICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlz
dCB2YV9saXN0OwojIDI3ICIuLi9tYWdpY2svbWFnaWNrLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAxIDMKIyAxNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiNwcmFnbWEgaWRl
bnQgIkAoIyl1bmlzdGQuaAkxLjU4CTk5LzExLzExIFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5
cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMwojIDE5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoK
IyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDIxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lz
L3VuaXN0ZC5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyl1bmlzdGQuaAkxLjM3CTk4LzEwLzI4IFNN
SSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMwojIDI4ICIvdXNy
L2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAyIDMKIyAyMiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAy
IDMKIyAxNzEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGFjY2Vzcyhjb25z
dCBjaGFyICosIGludCk7CgoKCgpleHRlcm4gdW5zaWduZWQgYWxhcm0odW5zaWduZWQpOwoKCmV4
dGVybiBpbnQgYnJrKHZvaWQgKik7CgpleHRlcm4gaW50IGNoZGlyKGNvbnN0IGNoYXIgKik7CmV4
dGVybiBpbnQgY2hvd24oY29uc3QgY2hhciAqLCB1aWRfdCwgZ2lkX3QpOwoKCmV4dGVybiBpbnQg
Y2hyb290KGNvbnN0IGNoYXIgKik7CgpleHRlcm4gaW50IGNsb3NlKGludCk7CgoKZXh0ZXJuIHNp
emVfdCBjb25mc3RyKGludCwgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gY2hhciAqY3J5cHQoY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZChjaGFyICop
OwoKCmV4dGVybiBjaGFyICpjdGVybWlkX3IoY2hhciAqKTsKCmV4dGVybiBjaGFyICpjdXNlcmlk
KGNoYXIgKik7CmV4dGVybiBpbnQgZHVwKGludCk7CmV4dGVybiBpbnQgZHVwMihpbnQsIGludCk7
CgoKZXh0ZXJuIHZvaWQgZW5jcnlwdChjaGFyICosIGludCk7CgpleHRlcm4gaW50IGV4ZWNsKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwpleHRlcm4gaW50IGV4ZWNsZShjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBleGVjbHAoY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgZXhlY3YoY29uc3QgY2hhciAqLCBjaGFy
ICpjb25zdCAqKTsKZXh0ZXJuIGludCBleGVjdmUoY29uc3QgY2hhciAqLCBjaGFyICpjb25zdCAq
LCBjaGFyICpjb25zdCAqKTsKZXh0ZXJuIGludCBleGVjdnAoY29uc3QgY2hhciAqLCBjaGFyICpj
b25zdCAqKTsKZXh0ZXJuIHZvaWQgX2V4aXQoaW50KTsKIyAyMjUgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMwpleHRlcm4gaW50IGZjaGRpcihpbnQpOwpleHRlcm4gaW50IGZjaG93bihpbnQsIHVp
ZF90LCBnaWRfdCk7CgoKCgoKCgpleHRlcm4gaW50IGZkYXRhc3luYyhpbnQpOwojIDI0NSAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBwaWRfdCBmb3JrKHZvaWQpOwoKCgoKZXh0ZXJu
IGxvbmcgZnBhdGhjb25mKGludCwgaW50KTsKCgpleHRlcm4gaW50IGZzeW5jKGludCk7CgoKCgpl
eHRlcm4gaW50IGZ0cnVuY2F0ZTY0KGludCwgb2ZmX3QpOwoKZXh0ZXJuIGNoYXIgKmdldGN3ZChj
aGFyICosIHNpemVfdCk7CgoKZXh0ZXJuIGludCBnZXRkdGFibGVzaXplKHZvaWQpOwoKZXh0ZXJu
IGdpZF90IGdldGVnaWQodm9pZCk7CmV4dGVybiB1aWRfdCBnZXRldWlkKHZvaWQpOwpleHRlcm4g
Z2lkX3QgZ2V0Z2lkKHZvaWQpOwpleHRlcm4gaW50IGdldGdyb3VwcyhpbnQsIGdpZF90ICopOwoK
CmV4dGVybiBsb25nIGdldGhvc3RpZCh2b2lkKTsKCgpleHRlcm4gaW50IGdldGhvc3RuYW1lKGNo
YXIgKiwgc2l6ZV90KTsKCgoKCmV4dGVybiBjaGFyICpnZXRsb2dpbih2b2lkKTsKCgpleHRlcm4g
aW50IGdldG9wdChpbnQsIGNoYXIgKmNvbnN0ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFy
ICpvcHRhcmc7CmV4dGVybiBpbnQgb3B0ZXJyLCBvcHRpbmQsIG9wdG9wdDsKZXh0ZXJuIGNoYXIg
KmdldHBhc3MoY29uc3QgY2hhciAqKTsKCgoKZXh0ZXJuIGludCBnZXRwYWdlc2l6ZSh2b2lkKTsK
ZXh0ZXJuIHBpZF90IGdldHBnaWQocGlkX3QpOwoKZXh0ZXJuIHBpZF90IGdldHBpZCh2b2lkKTsK
ZXh0ZXJuIHBpZF90IGdldHBwaWQodm9pZCk7CmV4dGVybiBwaWRfdCBnZXRwZ3JwKHZvaWQpOwoK
CgoKCgpleHRlcm4gcGlkX3QgZ2V0c2lkKHBpZF90KTsKCmV4dGVybiB1aWRfdCBnZXR1aWQodm9p
ZCk7CgoKZXh0ZXJuIGNoYXIgKmdldHdkKGNoYXIgKik7CiMgMzIxICIvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDMKZXh0ZXJuIGludCBpc2F0dHkoaW50KTsKZXh0ZXJuIGludCBsaW5rKGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqKTsKCgpleHRlcm4gaW50IGxjaG93bihjb25zdCBjaGFyICosIHVp
ZF90LCBnaWRfdCk7CgoKCgpleHRlcm4gaW50IGxvY2tmNjQoaW50LCBpbnQsIG9mZl90KTsKCgoK
ZXh0ZXJuIGludCByZWFkbGluayhjb25zdCBjaGFyICosIGNoYXIgKiwgc2l6ZV90KTsKCmV4dGVy
biBvZmZfdCBsc2VlazY0KGludCwgb2ZmX3QsIGludCk7CgoKZXh0ZXJuIGludCBuaWNlKGludCk7
CgpleHRlcm4gbG9uZyBwYXRoY29uZihjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgcGF1
c2Uodm9pZCk7CmV4dGVybiBpbnQgcGlwZShpbnQgKik7CgoKCgoKCgpleHRlcm4gb2ZmX3QgdGVs
bDY0KGludCk7CiMgMzYwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHNzaXplX3Qg
cHJlYWQ2NChpbnQsIHZvaWQgKiwgc2l6ZV90LCBvZmZfdCk7CgoKCgoKCgpleHRlcm4gaW50IHB0
aHJlYWRfYXRmb3JrKHZvaWQgKCopICh2b2lkKSwgdm9pZCAoKikgKHZvaWQpLCB2b2lkICgqKSAo
dm9pZCkpOwojIDM3NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBzc2l6ZV90IHB3
cml0ZTY0KGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIG9mZl90KTsKCmV4dGVybiBzc2l6ZV90
IHJlYWQoaW50LCB2b2lkICosIHNpemVfdCk7CiMgMzg4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDMKZXh0ZXJuIGludCBybWRpcihjb25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lkICpzYnJrKGlu
dHB0cl90KTsKCmV4dGVybiBpbnQgc2V0Z2lkKGdpZF90KTsKIyA0MDIgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMwpleHRlcm4gaW50IHNldHBnaWQocGlkX3QsIHBpZF90KTsKCgpleHRlcm4gcGlk
X3Qgc2V0cGdycCh2b2lkKTsKZXh0ZXJuIGludCBzZXRyZWdpZChnaWRfdCwgZ2lkX3QpOwpleHRl
cm4gaW50IHNldHJldWlkKHVpZF90LCB1aWRfdCk7CgpleHRlcm4gcGlkX3Qgc2V0c2lkKHZvaWQp
OwpleHRlcm4gaW50IHNldHVpZCh1aWRfdCk7CgoKCgpleHRlcm4gdW5zaWduZWQgc2xlZXAodW5z
aWduZWQpOwoKCgoKCgpleHRlcm4gdm9pZCBzd2FiKGNvbnN0IHZvaWQgKiwgdm9pZCAqLCBzc2l6
ZV90KTsKCgoKZXh0ZXJuIGludCBzeW1saW5rKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsK
ZXh0ZXJuIHZvaWQgc3luYyh2b2lkKTsKCmV4dGVybiBsb25nIHN5c2NvbmYoaW50KTsKCgoKCmV4
dGVybiBsb25nIF9fc3lzY29uZl94cGc1KGludCk7CgoKCmV4dGVybiBwaWRfdCB0Y2dldHBncnAo
aW50KTsKZXh0ZXJuIGludCB0Y3NldHBncnAoaW50LCBwaWRfdCk7CgoKCgoKCgpleHRlcm4gaW50
IHRydW5jYXRlNjQoY29uc3QgY2hhciAqLCBvZmZfdCk7CgpleHRlcm4gY2hhciAqdHR5bmFtZShp
bnQpOwoKCmV4dGVybiB1c2Vjb25kc190IHVhbGFybSh1c2Vjb25kc190LCB1c2Vjb25kc190KTsK
CmV4dGVybiBpbnQgdW5saW5rKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGludCB1c2xlZXAodXNl
Y29uZHNfdCk7CgoKCmV4dGVybiBwaWRfdCB2Zm9yayh2b2lkKTsKCgoKCgpleHRlcm4gc3NpemVf
dCB3cml0ZShpbnQsIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKIyA4MzQgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMwpzdGF0aWMgaW50CmdldGxvZ2luX3IoY2hhciAqX19uYW1lLCBpbnQgX19sZW4p
CnsKICAgICAgICBleHRlcm4gaW50IF9fcG9zaXhfZ2V0bG9naW5fcihjaGFyICosIGludCk7CiAg
ICAgICAgcmV0dXJuIChfX3Bvc2l4X2dldGxvZ2luX3IoX19uYW1lLCBfX2xlbikpOwp9CnN0YXRp
YyBpbnQKdHR5bmFtZV9yKGludCBfX2ZpbGRlcywgY2hhciAqX19idWYsIHNpemVfdCBfX3NpemUp
CnsKICAgICAgICBleHRlcm4gaW50IF9fcG9zaXhfdHR5bmFtZV9yKGludCwgY2hhciAqLCBzaXpl
X3QpOwogICAgICAgIHJldHVybiAoX19wb3NpeF90dHluYW1lX3IoX19maWxkZXMsIF9fYnVmLCBf
X3NpemUpKTsKfQojIDI5ICIuLi9tYWdpY2svbWFnaWNrLmgiIDIKIyAzOSAiLi4vbWFnaWNrL21h
Z2ljay5oIgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMTYgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpc3RyaW5nLmgJMS4yNAk5OS8wOC8xMCBT
TUkiCgojIDEgIi91c3IvaW5jbHVkZS9pc28vc3RyaW5nX2lzby5oIiAxIDMKIyAyOCAiL3Vzci9p
bmNsdWRlL2lzby9zdHJpbmdfaXNvLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKXN0cmluZ19pc28u
aAkxLjIJOTkvMTEvMDkgU01JIgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3Rz
LmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvaXNvL3N0cmluZ19pc28uaCIgMiAzCiMgNjAgIi91
c3IvaW5jbHVkZS9pc28vc3RyaW5nX2lzby5oIiAzCmV4dGVybiBpbnQgbWVtY21wKGNvbnN0IHZv
aWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqbWVtY3B5KHZvaWQgKiwg
Y29uc3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqbWVtbW92ZSh2b2lkICosIGNvbnN0
IHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKm1lbXNldCh2b2lkICosIGludCwgc2l6ZV90
KTsKZXh0ZXJuIGNoYXIgKnN0cmNhdChjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQg
c3RyY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnN0cmNweShj
aGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgc3RyY29sbChjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKik7CmV4dGVybiBzaXplX3Qgc3RyY3Nwbihjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKik7CmV4dGVybiBjaGFyICpzdHJlcnJvcihpbnQpOwpleHRlcm4gc2l6ZV90IHN0cmxlbihj
b25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqc3RybmNhdChjaGFyICosIGNvbnN0IGNoYXIgKiwg
c2l6ZV90KTsKZXh0ZXJuIGludCBzdHJuY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBz
aXplX3QpOwpleHRlcm4gY2hhciAqc3RybmNweShjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90
KTsKZXh0ZXJuIHNpemVfdCBzdHJzcG4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRl
cm4gY2hhciAqc3RydG9rKGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHNpemVfdCBzdHJ4
ZnJtKGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwojIDExMiAiL3Vzci9pbmNsdWRlL2lz
by9zdHJpbmdfaXNvLmgiIDMKZXh0ZXJuIHZvaWQgKm1lbWNocihjb25zdCB2b2lkICosIGludCwg
c2l6ZV90KTsKZXh0ZXJuIGNoYXIgKnN0cmNocihjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBj
aGFyICpzdHJwYnJrKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnN0
cnJjaHIoY29uc3QgY2hhciAqLCBpbnQpOwpleHRlcm4gY2hhciAqc3Ryc3RyKGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqKTsKIyAxOSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKIyA1OCAi
L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJ0b2tfcihjaGFyICosIGNv
bnN0IGNoYXIgKiwgY2hhciAqKik7CgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSh2b2lkICosIGNv
bnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwojIDc5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMK
ZXh0ZXJuIGNoYXIgKnN0cmR1cChjb25zdCBjaGFyICopOwojIDQwICIuLi9tYWdpY2svbWFnaWNr
LmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMSAzCiMgMTYgIi91c3IvaW5jbHVkZS9j
dHlwZS5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyljdHlwZS5oCTEuMzMJOTkvMDgvMTAgU01JIgoK
IyAxICIvdXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRl
L2lzby9jdHlwZV9pc28uaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpY3R5cGVfaXNvLmgJMS4xCTk5
LzA4LzA5IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMwoj
IDMxICIvdXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAyIDMKIyA2MyAiL3Vzci9pbmNsdWRl
L2lzby9jdHlwZV9pc28uaCIgMwpleHRlcm4gaW50IGlzYWxudW0oaW50KTsKZXh0ZXJuIGludCBp
c2FscGhhKGludCk7CmV4dGVybiBpbnQgaXNjbnRybChpbnQpOwpleHRlcm4gaW50IGlzZGlnaXQo
aW50KTsKZXh0ZXJuIGludCBpc2dyYXBoKGludCk7CmV4dGVybiBpbnQgaXNsb3dlcihpbnQpOwpl
eHRlcm4gaW50IGlzcHJpbnQoaW50KTsKZXh0ZXJuIGludCBpc3B1bmN0KGludCk7CmV4dGVybiBp
bnQgaXNzcGFjZShpbnQpOwpleHRlcm4gaW50IGlzdXBwZXIoaW50KTsKZXh0ZXJuIGludCBpc3hk
aWdpdChpbnQpOwoKCgoKCgoKZXh0ZXJuIGludCB0b2xvd2VyKGludCk7CmV4dGVybiBpbnQgdG91
cHBlcihpbnQpOwoKCgoKCmV4dGVybiB1bnNpZ25lZCBjaGFyIF9fY3R5cGVbXTsKZXh0ZXJuIHVu
c2lnbmVkIGludCAqX19jdHlwZV9tYXNrOwpleHRlcm4gaW50ICpfX3RyYW5zX3VwcGVyOwpleHRl
cm4gaW50ICpfX3RyYW5zX2xvd2VyOwojIDE5ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAzCiMg
NDkgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQgaXNhc2NpaShpbnQpOwpleHRl
cm4gaW50IHRvYXNjaWkoaW50KTsKZXh0ZXJuIGludCBfdG9sb3dlcihpbnQpOwpleHRlcm4gaW50
IF90b3VwcGVyKGludCk7CiMgNDEgIi4uL21hZ2ljay9tYWdpY2suaCIgMgojIDEgIi91c3IvaW5j
bHVkZS9sb2NhbGUuaCIgMSAzCiMgOSAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAzCiNwcmFnbWEg
aWRlbnQgIkAoIylsb2NhbGUuaAkxLjE5CTk5LzA4LzEwIFNNSSIKIyA0NiAiL3Vzci9pbmNsdWRl
L2xvY2FsZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2lzby9sb2NhbGVfaXNvLmgiIDEgMwojIDQ1
ICIvdXNyL2luY2x1ZGUvaXNvL2xvY2FsZV9pc28uaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpbG9j
YWxlX2lzby5oCTEuMQk5OS8wOC8wOSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVy
ZV90ZXN0cy5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL2lzby9sb2NhbGVfaXNvLmgiIDIgMwoj
IDU3ICIvdXNyL2luY2x1ZGUvaXNvL2xvY2FsZV9pc28uaCIgMwpzdHJ1Y3QgbGNvbnYgewogICAg
ICAgIGNoYXIgKmRlY2ltYWxfcG9pbnQ7CiAgICAgICAgY2hhciAqdGhvdXNhbmRzX3NlcDsKICAg
ICAgICBjaGFyICpncm91cGluZzsKICAgICAgICBjaGFyICppbnRfY3Vycl9zeW1ib2w7CiAgICAg
ICAgY2hhciAqY3VycmVuY3lfc3ltYm9sOwogICAgICAgIGNoYXIgKm1vbl9kZWNpbWFsX3BvaW50
OwogICAgICAgIGNoYXIgKm1vbl90aG91c2FuZHNfc2VwOwogICAgICAgIGNoYXIgKm1vbl9ncm91
cGluZzsKICAgICAgICBjaGFyICpwb3NpdGl2ZV9zaWduOwogICAgICAgIGNoYXIgKm5lZ2F0aXZl
X3NpZ247CiAgICAgICAgY2hhciBpbnRfZnJhY19kaWdpdHM7CiAgICAgICAgY2hhciBmcmFjX2Rp
Z2l0czsKICAgICAgICBjaGFyIHBfY3NfcHJlY2VkZXM7CiAgICAgICAgY2hhciBwX3NlcF9ieV9z
cGFjZTsKICAgICAgICBjaGFyIG5fY3NfcHJlY2VkZXM7CiAgICAgICAgY2hhciBuX3NlcF9ieV9z
cGFjZTsKICAgICAgICBjaGFyIHBfc2lnbl9wb3NuOwogICAgICAgIGNoYXIgbl9zaWduX3Bvc247
Cn07CiMgOTUgIi91c3IvaW5jbHVkZS9pc28vbG9jYWxlX2lzby5oIiAzCmV4dGVybiBjaGFyICpz
ZXRsb2NhbGUoaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gc3RydWN0IGxjb252ICpsb2NhbGVj
b252KHZvaWQpOwojIDQ3ICIvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDIgMwojIDQyICIuLi9tYWdp
Y2svbWFnaWNrLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMSAzCiMgMTcgIi91c3Iv
aW5jbHVkZS9lcnJuby5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyllcnJuby5oCTEuMTYJOTkvMDcv
MjYgU01JIgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9lcnJuby5oIiAxIDMKIyAxMSAiL3Vz
ci9pbmNsdWRlL3N5cy9lcnJuby5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyllcnJuby5oCTEuMjAJ
MDAvMDIvMTQgU01JIgojIDI0ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMiAzCiMgMzggIi91c3Iv
aW5jbHVkZS9lcnJuby5oIiAzCmV4dGVybiBpbnQgKl9fX2Vycm5vKCk7CiMgNDMgIi4uL21hZ2lj
ay9tYWdpY2suaCIgMgojIDEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAxIDMKIyAxNiAiL3Vzci9p
bmNsdWRlL2ZjbnRsLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKWZjbnRsLmgJMS4xNAk5Ny8xMi8w
NSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAxOSAi
L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0Lmgi
IDEgMwojIDE4ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMp
c3RhdC5oCTEuMgk5OS8wNS8xOSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90
ZXN0cy5oIiAxIDMKIyAyMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMwojIDEgIi91c3Iv
bG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKIyA0NCAiL3Vz
ci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVfc3RkX2lt
cGwuaCIgMSAzCiMgNDUgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKIyAyMzQgIi91c3Iv
aW5jbHVkZS9zeXMvc3RhdC5oIiAzCnN0cnVjdCBzdGF0NjQgewogICAgICAgIGRldl90IHN0X2Rl
djsKICAgICAgICBsb25nIHN0X3BhZDFbM107CiAgICAgICAgaW5vX3Qgc3RfaW5vOwogICAgICAg
IG1vZGVfdCBzdF9tb2RlOwogICAgICAgIG5saW5rX3Qgc3Rfbmxpbms7CiAgICAgICAgdWlkX3Qg
c3RfdWlkOwogICAgICAgIGdpZF90IHN0X2dpZDsKICAgICAgICBkZXZfdCBzdF9yZGV2OwogICAg
ICAgIGxvbmcgc3RfcGFkMlsyXTsKICAgICAgICBvZmZfdCBzdF9zaXplOwojIDI1NCAiL3Vzci9p
bmNsdWRlL3N5cy9zdGF0LmgiIDMKICAgICAgICBfdGltZXN0cnVjX3Qgc3RfYXRpbTsKICAgICAg
ICBfdGltZXN0cnVjX3Qgc3RfbXRpbTsKICAgICAgICBfdGltZXN0cnVjX3Qgc3RfY3RpbTsKCiAg
ICAgICAgYmxrc2l6ZV90IHN0X2Jsa3NpemU7CiAgICAgICAgYmxrY250X3Qgc3RfYmxvY2tzOwog
ICAgICAgIGNoYXIgc3RfZnN0eXBlWzE2XTsKICAgICAgICBsb25nIHN0X3BhZDRbOF07Cn07CiMg
NDcwICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IGZjaG1vZChpbnQsIG1v
ZGVfdCk7CgoKZXh0ZXJuIGludCBjaG1vZChjb25zdCBjaGFyICosIG1vZGVfdCk7CmV4dGVybiBp
bnQgbWtkaXIoY29uc3QgY2hhciAqLCBtb2RlX3QpOwpleHRlcm4gaW50IG1rZmlmbyhjb25zdCBj
aGFyICosIG1vZGVfdCk7CmV4dGVybiBtb2RlX3QgdW1hc2sobW9kZV90KTsKIyA1MDkgIi91c3Iv
aW5jbHVkZS9zeXMvc3RhdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0X2ltcGwuaCIg
MSAzCiMgOSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0X2ltcGwuaCIgMwojcHJhZ21hIGlkZW50ICJA
KCMpc3RhdF9pbXBsLmgJMS4xCTk5LzA1LzA0IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9m
ZWF0dXJlX3Rlc3RzLmgiIDEgMwojIDEyICIvdXNyL2luY2x1ZGUvc3lzL3N0YXRfaW1wbC5oIiAy
IDMKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4y
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDEzICIvdXNyL2luY2x1ZGUvc3lzL3N0YXRfaW1w
bC5oIiAyIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0X2ltcGwuaCIgMwpleHRlcm4gaW50
IGZzdGF0NjQoaW50LCBzdHJ1Y3Qgc3RhdDY0ICopOwpleHRlcm4gaW50IHN0YXQ2NChjb25zdCBj
aGFyICosIHN0cnVjdCBzdGF0NjQgKik7CgoKCmV4dGVybiBpbnQgbHN0YXQ2NChjb25zdCBjaGFy
ICosIHN0cnVjdCBzdGF0NjQgKik7CmV4dGVybiBpbnQgbWtub2QoY29uc3QgY2hhciAqLCBtb2Rl
X3QsIGRldl90KTsKIyA1MTAgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKIyAyMiAiL3Vz
ci9pbmNsdWRlL2ZjbnRsLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI0ICIvdXNy
L2luY2x1ZGUvZmNudGwuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAxIDMK
IyAxNiAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylmY250
bC5oCTEuNDUJOTgvMDcvMTcgU01JIgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVz
dHMuaCIgMSAzCiMgMTkgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMiAzCgojIDEgIi91c3Iv
bG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMSAzCiMgMjEgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMiAzCiMgMTY0ICIv
dXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgZmxvY2sgewogICAgICAg
IHNob3J0IGxfdHlwZTsKICAgICAgICBzaG9ydCBsX3doZW5jZTsKICAgICAgICBvZmZfdCBsX3N0
YXJ0OwogICAgICAgIG9mZl90IGxfbGVuOwogICAgICAgIGludCBsX3N5c2lkOwogICAgICAgIHBp
ZF90IGxfcGlkOwogICAgICAgIGxvbmcgbF9wYWRbNF07Cn0gZmxvY2tfdDsKIyAyNSAiL3Vzci9p
bmNsdWRlL2ZjbnRsLmgiIDIgMwojIDcyICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4g
aW50IGZjbnRsKGludCwgaW50LCAuLi4pOwpleHRlcm4gaW50IG9wZW42NChjb25zdCBjaGFyICos
IGludCwgLi4uKTsKZXh0ZXJuIGludCBjcmVhdDY0KGNvbnN0IGNoYXIgKiwgbW9kZV90KTsKIyA0
NCAiLi4vbWFnaWNrL21hZ2ljay5oIiAyCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL21hdGguaCIgMSAzCiMgMjMgIi91c3IvbG9j
YWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9tYXRoLmgi
IDMKI3ByYWdtYSBpZGVudCAiQCgjKW1hdGguaAkyLjEwCTk5LzA3LzI5IFNNSSIKCiMgMSAiL3Vz
ci9pbmNsdWRlL2lzby9tYXRoX2lzby5oIiAxIDMKCgoKCgoKCiNwcmFnbWEgaWRlbnQgIkAoIylt
YXRoX2lzby5oCTEuMQk5OS8wNy8zMCBTTUkiCiMgMjAgIi91c3IvaW5jbHVkZS9pc28vbWF0aF9p
c28uaCIgMwp0eXBlZGVmIHVuaW9uIF9oX3ZhbCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfaVtz
aXplb2YoZG91YmxlKSAvIHNpemVvZih1bnNpZ25lZCBsb25nKV07CiAgICAgICAgZG91YmxlIF9k
Owp9IF9oX3ZhbDsKCgpleHRlcm4gY29uc3QgX2hfdmFsIF9faHVnZV92YWw7CiMgMzcgIi91c3Iv
aW5jbHVkZS9pc28vbWF0aF9pc28uaCIgMwpleHRlcm4gZG91YmxlIGFjb3MgKGRvdWJsZSk7CmV4
dGVybiBkb3VibGUgYXNpbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhdGFuIChkb3VibGUpOwpl
eHRlcm4gZG91YmxlIGF0YW4yIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgY29zIChk
b3VibGUpOwpleHRlcm4gZG91YmxlIHNpbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB0YW4gKGRv
dWJsZSk7CgpleHRlcm4gZG91YmxlIGNvc2ggKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgc2luaCAo
ZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB0YW5oIChkb3VibGUpOwoKZXh0ZXJuIGRvdWJsZSBleHAg
KGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZnJleHAgKGRvdWJsZSwgaW50ICopOwpleHRlcm4gZG91
YmxlIGxkZXhwIChkb3VibGUsIGludCk7CmV4dGVybiBkb3VibGUgbG9nIChkb3VibGUpOwpleHRl
cm4gZG91YmxlIGxvZzEwIChkb3VibGUpOwpleHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSwgZG91
YmxlICopOwoKZXh0ZXJuIGRvdWJsZSBwb3cgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJs
ZSBzcXJ0IChkb3VibGUpOwoKZXh0ZXJuIGRvdWJsZSBjZWlsIChkb3VibGUpOwpleHRlcm4gZG91
YmxlIGZhYnMgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZmxvb3IgKGRvdWJsZSk7CmV4dGVybiBk
b3VibGUgZm1vZCAoZG91YmxlLCBkb3VibGUpOwojIDI2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA4OSAiL3Vz
ci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL21h
dGguaCIgMwpleHRlcm4gaW50IHNpZ25nYW07CiMgMTQ1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBkb3Vi
bGUgZXJmIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGVyZmMgKGRvdWJsZSk7CmV4dGVybiBkb3Vi
bGUgZ2FtbWEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgaHlwb3QgKGRvdWJsZSwgZG91YmxlKTsK
ZXh0ZXJuIGludCBpc25hbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqMCAoZG91YmxlKTsKZXh0
ZXJuIGRvdWJsZSBqMSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpOwpl
eHRlcm4gZG91YmxlIGxnYW1tYSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB5MCAoZG91YmxlKTsK
ZXh0ZXJuIGRvdWJsZSB5MSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB5biAoaW50LCBkb3VibGUp
OwojIDE3MiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAu
Mi9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4gZG91YmxlIGFjb3NoIChkb3VibGUpOwpleHRlcm4g
ZG91YmxlIGFzaW5oIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGF0YW5oIChkb3VibGUpOwpleHRl
cm4gZG91YmxlIGNicnQgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbG9nYiAoZG91YmxlKTsKZXh0
ZXJuIGRvdWJsZSBuZXh0YWZ0ZXIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByZW1h
aW5kZXIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzY2FsYiAoZG91YmxlLCBkb3Vi
bGUpOwojIDE5MiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8z
LjAuMi9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4gZG91YmxlIGV4cG0xIChkb3VibGUpOwpleHRl
cm4gaW50IGlsb2diIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGxvZzFwIChkb3VibGUpOwpleHRl
cm4gZG91YmxlIHJpbnQgKGRvdWJsZSk7CiMgNDUgIi4uL21hZ2ljay9tYWdpY2suaCIgMgojIDEg
Ii91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDE2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiNw
cmFnbWEgaWRlbnQgIkAoIyl0aW1lLmgJMS4zOQk5OS8wOC8xMCBTTUkiCgojIDEgIi91c3IvaW5j
bHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAxOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MiAzCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAu
Mi9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAyMCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRl
L2lzby90aW1lX2lzby5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyl0aW1lX2lzby5oCTEuMQk5OS8w
OC8wOSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAz
MSAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAyIDMKIyA2OSAiL3Vzci9pbmNsdWRlL2lz
by90aW1lX2lzby5oIiAzCnN0cnVjdCB0bSB7CiAgICAgICAgaW50IHRtX3NlYzsKICAgICAgICBp
bnQgdG1fbWluOwogICAgICAgIGludCB0bV9ob3VyOwogICAgICAgIGludCB0bV9tZGF5OwogICAg
ICAgIGludCB0bV9tb247CiAgICAgICAgaW50IHRtX3llYXI7CiAgICAgICAgaW50IHRtX3dkYXk7
CiAgICAgICAgaW50IHRtX3lkYXk7CiAgICAgICAgaW50IHRtX2lzZHN0Owp9OwoKCgoKZXh0ZXJu
IGNoYXIgKmFzY3RpbWUoY29uc3Qgc3RydWN0IHRtICopOwpleHRlcm4gY2xvY2tfdCBjbG9jayh2
b2lkKTsKZXh0ZXJuIGNoYXIgKmN0aW1lKGNvbnN0IHRpbWVfdCAqKTsKZXh0ZXJuIGRvdWJsZSBk
aWZmdGltZSh0aW1lX3QsIHRpbWVfdCk7CmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZShjb25zdCB0
aW1lX3QgKik7CmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZShjb25zdCB0aW1lX3QgKik7CmV4
dGVybiB0aW1lX3QgbWt0aW1lKHN0cnVjdCB0bSAqKTsKZXh0ZXJuIHRpbWVfdCB0aW1lKHRpbWVf
dCAqKTsKZXh0ZXJuIHNpemVfdCBzdHJmdGltZShjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAq
LCBjb25zdCBzdHJ1Y3QgdG0gKik7CiMgMjEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwojIDYw
ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZV9yKGNvbnN0
IHRpbWVfdCAqLCBzdHJ1Y3QgdG0gKik7CmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yKGNv
bnN0IHRpbWVfdCAqLCBzdHJ1Y3QgdG0gKik7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnB0aW1lKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgdG0gKik7CiMgODMgIi91c3IvaW5jbHVk
ZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVfaW1wbC5oIiAxIDMKIyAxNSAi
L3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpdGltZV9p
bXBsLmgJMS41CTk5LzEwLzA1IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rl
c3RzLmgiIDEgMwojIDE4ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVfaW1wbC5oIiAyIDMKIyAzNiAi
L3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMwp0eXBlZGVmIHN0cnVjdCB0aW1lc3BlYyB7
CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBsb25nIHR2X25zZWM7Cn0gdGltZXNwZWNf
dDsKIyA2MCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMwp0eXBlZGVmIHN0cnVjdCB0
aW1lc3BlYyB0aW1lc3RydWNfdDsKIyA3OSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIg
Mwp0eXBlZGVmIHN0cnVjdCBpdGltZXJzcGVjIHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRf
aW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9IGl0aW1lcnNwZWNf
dDsKIyA4NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCiMgMTE2ICIvdXNyL2luY2x1ZGUvdGlt
ZS5oIiAzCmV4dGVybiBpbnQgY2xvY2tfZ2V0cmVzKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVj
ICopOwpleHRlcm4gaW50IGNsb2NrX2dldHRpbWUoY2xvY2tpZF90LCBzdHJ1Y3QgdGltZXNwZWMg
Kik7CmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZShjbG9ja2lkX3QsIGNvbnN0IHN0cnVjdCB0aW1l
c3BlYyAqKTsKZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUoY2xvY2tpZF90LCBzdHJ1Y3Qgc2lnZXZl
bnQgKiwgdGltZXJfdCAqKTsKZXh0ZXJuIGludCB0aW1lcl9kZWxldGUodGltZXJfdCk7CmV4dGVy
biBpbnQgdGltZXJfZ2V0b3ZlcnJ1bih0aW1lcl90KTsKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1l
KHRpbWVyX3QsIHN0cnVjdCBpdGltZXJzcGVjICopOwpleHRlcm4gaW50IHRpbWVyX3NldHRpbWUo
dGltZXJfdCwgaW50LCBjb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYyAqLAogICAgICAgICAgICAgICAg
c3RydWN0IGl0aW1lcnNwZWMgKik7CmV4dGVybiBpbnQgbmFub3NsZWVwKGNvbnN0IHN0cnVjdCB0
aW1lc3BlYyAqLCBzdHJ1Y3QgdGltZXNwZWMgKik7CgoKCgpleHRlcm4gdm9pZCB0enNldCh2b2lk
KTsKCmV4dGVybiBjaGFyICp0em5hbWVbMl07CgoKZXh0ZXJuIGxvbmcgX3N5c2NvbmYoaW50KTsK
CgoKCgoKZXh0ZXJuIGxvbmcgdGltZXpvbmU7CmV4dGVybiBpbnQgZGF5bGlnaHQ7CiMgMTU2ICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBzdHJ1Y3QgdG0gKmdldGRhdGUoY29uc3QgY2hh
ciAqKTsKCgoKCmV4dGVybiBpbnQgKl9nZXRkYXRlX2Vycl9hZGRyKHZvaWQpOwojIDI1NiAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMwpzdGF0aWMgY2hhciAqCmFzY3RpbWVfcihjb25zdCBzdHJ1Y3Qg
dG0gKl9fdG0sIGNoYXIgKl9fYnVmKQp7CiAgICAgICAgZXh0ZXJuIGNoYXIgKl9fcG9zaXhfYXNj
dGltZV9yKGNvbnN0IHN0cnVjdCB0bSAqLCBjaGFyICopOwogICAgICAgIHJldHVybiAoX19wb3Np
eF9hc2N0aW1lX3IoX190bSwgX19idWYpKTsKfQpzdGF0aWMgY2hhciAqCmN0aW1lX3IoY29uc3Qg
dGltZV90ICpfX3RpbWUsIGNoYXIgKl9fYnVmKQp7CiAgICAgICAgZXh0ZXJuIGNoYXIgKl9fcG9z
aXhfY3RpbWVfcihjb25zdCB0aW1lX3QgKiwgY2hhciAqKTsKICAgICAgICByZXR1cm4gKF9fcG9z
aXhfY3RpbWVfcihfX3RpbWUsIF9fYnVmKSk7Cn0KIyA0NiAiLi4vbWFnaWNrL21hZ2ljay5oIiAy
CiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9p
bmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAxMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5c2xpbWl0cy5o
IiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8z
LjAuMi9pbmNsdWRlL3N5c2xpbWl0cy5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylsaW1pdHMuaAkx
LjUxCTk5LzEwLzA4IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgi
IDEgMwojIDI4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMu
MC4yL2luY2x1ZGUvc3lzbGltaXRzLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvaXNhX2Rl
ZnMuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjgvMy4wLjIvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2lzby9s
aW1pdHNfaXNvLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvaXNvL2xpbWl0c19pc28uaCIgMwoj
cHJhZ21hIGlkZW50ICJAKCMpbGltaXRzX2lzby5oCTEuMQk5OS8wOC8wOSBTTUkiCiMgMzAgIi91
c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9z
eXNsaW1pdHMuaCIgMiAzCiMgNDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9z
eXMvaW50X2xpbWl0cy5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvc3lzL2ludF9saW1pdHMuaCIg
MwojcHJhZ21hIGlkZW50ICJAKCMpaW50X2xpbWl0cy5oCTEuNgk5OS8wOC8wNiBTTUkiCiMgNDQg
Ii91c3IvaW5jbHVkZS9zeXMvaW50X2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9p
c2FfZGVmcy5oIiAxIDMKIyA0NSAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfbGltaXRzLmgiIDIgMwoj
IDQyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2lu
Y2x1ZGUvc3lzbGltaXRzLmgiIDIgMwojIDI2OCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5c2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy91bmlzdGQuaCIgMSAzCiMgMjY5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3Nw
YXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzbGltaXRzLmgiIDIgMwojIDI3OSAi
L3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRl
L3N5c2xpbWl0cy5oIiAzCmV4dGVybiBsb25nIF9zeXNjb25mKGludCk7CiMgMTIgIi91c3IvbG9j
YWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9saW1pdHMu
aCIgMiAzCiMgNDcgIi4uL21hZ2ljay9tYWdpY2suaCIgMgojIDEgIi91c3IvaW5jbHVkZS9hc3Nl
cnQuaCIgMSAzCiMgMTEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwojcHJhZ21hIGlkZW50ICJA
KCMpYXNzZXJ0LmgJMS45CTkyLzA3LzE0IFNNSSIKCgoKCgoKZXh0ZXJuIHZvaWQgX19hc3NlcnQo
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CiMgNDggIi4uL21hZ2ljay9tYWdpY2su
aCIgMgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8z
LjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyA1MSAiLi4vbWFnaWNrL21hZ2ljay5oIiAy
CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDEgMwojIDUyICIuLi9tYWdpY2svbWFnaWNr
LmgiIDIKIyA2NiAiLi4vbWFnaWNrL21hZ2ljay5oIgojIDEgIi91c3IvaW5jbHVkZS9kaXJlbnQu
aCIgMSAzCiMgMTYgIi91c3IvaW5jbHVkZS9kaXJlbnQuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMp
ZGlyZW50LmgJMS4yOQk5OS8wMy8xMSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVy
ZV90ZXN0cy5oIiAxIDMKIyAxOSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAyIDMKCiMgMSAiL3Vz
ci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5
cy90eXBlcy5oIiAxIDMKIyAyMSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAyIDMKIyAxICIvdXNy
L2luY2x1ZGUvc3lzL2RpcmVudC5oIiAxIDMKIyAxNiAiL3Vzci9pbmNsdWRlL3N5cy9kaXJlbnQu
aCIgMwojcHJhZ21hIGlkZW50ICJAKCMpZGlyZW50LmgJMS4zMgk5OS8wNS8wNCBTTUkiCgojIDEg
Ii91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAxOSAiL3Vzci9pbmNsdWRl
L3N5cy9kaXJlbnQuaCIgMiAzCiMgMjggIi91c3IvaW5jbHVkZS9zeXMvZGlyZW50LmgiIDMKdHlw
ZWRlZiBzdHJ1Y3QgZGlyZW50IHsKICAgICAgICBpbm9fdCBkX2lubzsKICAgICAgICBvZmZfdCBk
X29mZjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkX3JlY2xlbjsKICAgICAgICBjaGFyIGRfbmFt
ZVsxXTsKfSBkaXJlbnRfdDsKIyAyMiAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAyIDMKIyA0NyAi
L3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgZF9m
ZDsKICAgICAgICBpbnQgZF9sb2M7CiAgICAgICAgaW50IGRfc2l6ZTsKICAgICAgICBjaGFyICpk
X2J1ZjsKfSBESVI7CiMgNzYgIi91c3IvaW5jbHVkZS9kaXJlbnQuaCIgMwpleHRlcm4gRElSICpv
cGVuZGlyKGNvbnN0IGNoYXIgKik7CmV4dGVybiBzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyNjQoRElS
ICopOwoKCmV4dGVybiBsb25nIHRlbGxkaXIoRElSICopOwpleHRlcm4gdm9pZCBzZWVrZGlyKERJ
UiAqLCBsb25nKTsKCmV4dGVybiB2b2lkIHJld2luZGRpcihESVIgKik7CmV4dGVybiBpbnQgY2xv
c2VkaXIoRElSICopOwojIDE3NSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVybiBpbnQg
cmVhZGRpcjY0X3IoRElSICosIHN0cnVjdCBkaXJlbnQgKiwgc3RydWN0IGRpcmVudCAqKik7CiMg
NjcgIi4uL21hZ2ljay9tYWdpY2suaCIgMgoKCiMgMSAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAxIDMK
IyAxNiAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylwd2QuaAkxLjE5
CTk2LzAzLzEyIFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEg
MwojIDE5ICIvdXNyL2luY2x1ZGUvcHdkLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwoj
IDIxICIvdXNyL2luY2x1ZGUvcHdkLmgiIDIgMwojIDMxICIvdXNyL2luY2x1ZGUvcHdkLmgiIDMK
c3RydWN0IHBhc3N3ZCB7CiAgICAgICAgY2hhciAqcHdfbmFtZTsKICAgICAgICBjaGFyICpwd19w
YXNzd2Q7CiAgICAgICAgdWlkX3QgcHdfdWlkOwogICAgICAgIGdpZF90IHB3X2dpZDsKICAgICAg
ICBjaGFyICpwd19hZ2U7CiAgICAgICAgY2hhciAqcHdfY29tbWVudDsKICAgICAgICBjaGFyICpw
d19nZWNvczsKICAgICAgICBjaGFyICpwd19kaXI7CiAgICAgICAgY2hhciAqcHdfc2hlbGw7Cn07
CiMgNTUgIi91c3IvaW5jbHVkZS9wd2QuaCIgMwpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHd1
aWQodWlkX3QpOwpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHduYW0oY29uc3QgY2hhciAqKTsK
IyA2OSAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzCmV4dGVybiB2b2lkIGVuZHB3ZW50KHZvaWQpOwpl
eHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdlbnQodm9pZCk7CmV4dGVybiB2b2lkIHNldHB3ZW50
KHZvaWQpOwojIDE0OCAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzCnN0YXRpYyBpbnQKZ2V0cHd1aWRf
cih1aWRfdCBfX3VpZCwgc3RydWN0IHBhc3N3ZCAqX19wd2QsIGNoYXIgKl9fYnVmLCBpbnQgX19s
ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHBhc3N3ZCAqKl9fcmVzKQp7CiAgICAgICAgZXh0ZXJuIGludCBfX3Bvc2l4X2dl
dHB3dWlkX3IodWlkX3QsIHN0cnVjdCBwYXNzd2QgKiwgY2hhciAqLCBpbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBhc3N3
ZCAqKik7CiAgICAgICAgcmV0dXJuIChfX3Bvc2l4X2dldHB3dWlkX3IoX191aWQsIF9fcHdkLCBf
X2J1ZiwgX19sZW4sIF9fcmVzKSk7Cn0Kc3RhdGljIGludApnZXRwd25hbV9yKGNvbnN0IGNoYXIg
Kl9fY2IsIHN0cnVjdCBwYXNzd2QgKl9fcHdkLCBjaGFyICpfX2J1ZiwgaW50IF9fbGVuLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBwYXNzd2QgKipfX3JlcykKewogICAgICAgIGV4dGVybiBpbnQgX19wb3NpeF9nZXRwd25hbV9y
KGNvbnN0IGNoYXIgKiwgc3RydWN0IHBhc3N3ZCAqLCBjaGFyICosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBzdHJ1Y3QgcGFzc3dk
ICoqKTsKICAgICAgICByZXR1cm4gKF9fcG9zaXhfZ2V0cHduYW1fcihfX2NiLCBfX3B3ZCwgX19i
dWYsIF9fbGVuLCBfX3JlcykpOwp9CiMgNzAgIi4uL21hZ2ljay9tYWdpY2suaCIgMgoKCgoKIyAx
ICIuLi9tYWdpY2svYXBpLmgiIDEKIyA4NCAiLi4vbWFnaWNrL2FwaS5oIgojIDEgIi4uL21hZ2lj
ay9jbGFzc2lmeS5oIiAxCiMgMTQgIi4uL21hZ2ljay9jbGFzc2lmeS5oIgp0eXBlZGVmIGVudW0K
ewogIFVuZGVmaW5lZENhY2hlLAogIE1lbW9yeUNhY2hlLAogIERpc2tDYWNoZSwKICBNZW1vcnlN
YXBwZWRDYWNoZQp9IENhY2hlVHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkQ2hhbm5l
bCwKICBSZWRDaGFubmVsLAogIEN5YW5DaGFubmVsLAogIEdyZWVuQ2hhbm5lbCwKICBNYWdlbnRh
Q2hhbm5lbCwKICBCbHVlQ2hhbm5lbCwKICBZZWxsb3dDaGFubmVsLAogIE9wYWNpdHlDaGFubmVs
LAogIEJsYWNrQ2hhbm5lbCwKICBNYXR0ZUNoYW5uZWwKfSBDaGFubmVsVHlwZTsKCnR5cGVkZWYg
ZW51bQp7CiAgVW5kZWZpbmVkQ2xhc3MsCiAgRGlyZWN0Q2xhc3MsCiAgUHNldWRvQ2xhc3MKfSBD
bGFzc1R5cGU7Cgp0eXBlZGVmIGVudW0KewogIFVzZXJTcGFjZSwKICBVc2VyU3BhY2VPblVzZSwK
ICBPYmplY3RCb3VuZGluZ0JveAp9IENsaXBQYXRoVW5pdHM7Cgp0eXBlZGVmIGVudW0KewogIFVu
ZGVmaW5lZENvbG9yc3BhY2UsCiAgUkdCQ29sb3JzcGFjZSwKICBHUkFZQ29sb3JzcGFjZSwKICBU
cmFuc3BhcmVudENvbG9yc3BhY2UsCiAgT0hUQUNvbG9yc3BhY2UsCiAgWFlaQ29sb3JzcGFjZSwK
ICBZQ2JDckNvbG9yc3BhY2UsCiAgWUNDQ29sb3JzcGFjZSwKICBZSVFDb2xvcnNwYWNlLAogIFlQ
YlByQ29sb3JzcGFjZSwKICBZVVZDb2xvcnNwYWNlLAogIENNWUtDb2xvcnNwYWNlLAogIHNSR0JD
b2xvcnNwYWNlCn0gQ29sb3JzcGFjZVR5cGU7Cgp0eXBlZGVmIGVudW0KewogIEFsbENvbXBsaWFu
Y2UsCiAgU1ZHQ29tcGxpYW5jZSwKICBYMTFDb21wbGlhbmNlCn0gQ29tcGxpYW5jZVR5cGU7Cgp0
eXBlZGVmIGVudW0KewogIFVuZGVmaW5lZENvbXBvc2l0ZU9wID0gMCwKICBPdmVyQ29tcG9zaXRl
T3AsCiAgSW5Db21wb3NpdGVPcCwKICBPdXRDb21wb3NpdGVPcCwKICBBdG9wQ29tcG9zaXRlT3As
CiAgWG9yQ29tcG9zaXRlT3AsCiAgUGx1c0NvbXBvc2l0ZU9wLAogIE1pbnVzQ29tcG9zaXRlT3As
CiAgQWRkQ29tcG9zaXRlT3AsCiAgU3VidHJhY3RDb21wb3NpdGVPcCwKICBEaWZmZXJlbmNlQ29t
cG9zaXRlT3AsCiAgTXVsdGlwbHlDb21wb3NpdGVPcCwKICBCdW1wbWFwQ29tcG9zaXRlT3AsCiAg
Q29weUNvbXBvc2l0ZU9wLAogIENvcHlSZWRDb21wb3NpdGVPcCwKICBDb3B5R3JlZW5Db21wb3Np
dGVPcCwKICBDb3B5Qmx1ZUNvbXBvc2l0ZU9wLAogIENvcHlPcGFjaXR5Q29tcG9zaXRlT3AsCiAg
Q2xlYXJDb21wb3NpdGVPcCwKICBEaXNzb2x2ZUNvbXBvc2l0ZU9wLAogIERpc3BsYWNlQ29tcG9z
aXRlT3AsCiAgTW9kdWxhdGVDb21wb3NpdGVPcCwKICBUaHJlc2hvbGRDb21wb3NpdGVPcAp9IENv
bXBvc2l0ZU9wZXJhdG9yOwoKdHlwZWRlZiBlbnVtCnsKICBVbmRlZmluZWRDb21wcmVzc2lvbiwK
ICBOb0NvbXByZXNzaW9uLAogIEJaaXBDb21wcmVzc2lvbiwKICBGYXhDb21wcmVzc2lvbiwKICBH
cm91cDRDb21wcmVzc2lvbiwKICBKUEVHQ29tcHJlc3Npb24sCiAgTG9zc2xlc3NKUEVHQ29tcHJl
c3Npb24sCiAgTFpXQ29tcHJlc3Npb24sCiAgUnVubGVuZ3RoRW5jb2RlZENvbXByZXNzaW9uLAog
IFppcENvbXByZXNzaW9uCn0gQ29tcHJlc3Npb25UeXBlOwoKdHlwZWRlZiBlbnVtCnsKICBOb0Rl
Y29yYXRpb24sCiAgVW5kZXJsaW5lRGVjb3JhdGlvbiwKICBPdmVybGluZURlY29yYXRpb24sCiAg
TGluZVRocm91Z2hEZWNvcmF0aW9uCn0gRGVjb3JhdGlvblR5cGU7Cgp0eXBlZGVmIGVudW0Kewog
IFVuZGVmaW5lZEV4Y2VwdGlvbiwKICBSZXNvdXJjZUxpbWl0V2FybmluZyA9IDMwMCwKICBYU2Vy
dmVyV2FybmluZyA9IDMwNSwKICBPcHRpb25XYXJuaW5nID0gMzEwLAogIERlbGVnYXRlV2Fybmlu
ZyA9IDMxNSwKICBNaXNzaW5nRGVsZWdhdGVXYXJuaW5nID0gMzIwLAogIENvcnJ1cHRJbWFnZVdh
cm5pbmcgPSAzMjUsCiAgRmlsZU9wZW5XYXJuaW5nID0gMzMwLAogIEJsb2JXYXJuaW5nID0gMzM1
LAogIENhY2hlV2FybmluZyA9IDM0MCwKICBTdHJlYW1XYXJuaW5nID0gMzQ1LAogIFJlZ2lzdHJ5
V2FybmluZyA9IDM1MCwKICBGYXRhbEV4Y2VwdGlvbiA9IDQwMCwKICBSZXNvdXJjZUxpbWl0RXJy
b3IgPSA0MDAsCiAgWFNlcnZlckVycm9yID0gNDA1LAogIE9wdGlvbkVycm9yID0gNDEwLAogIERl
bGVnYXRlRXJyb3IgPSA0MTUsCiAgTWlzc2luZ0RlbGVnYXRlRXJyb3IgPSA0MjAsCiAgQ29ycnVw
dEltYWdlRXJyb3IgPSA0MjUsCiAgRmlsZU9wZW5FcnJvciA9IDQzMCwKICBCbG9iRXJyb3IgPSA0
MzUsCiAgQ2FjaGVFcnJvciA9IDQ0MCwKICBTdHJlYW1FcnJvciA9IDQ0NSwKICBSZWdpc3RyeUVy
cm9yID0gNDUwCn0gRXhjZXB0aW9uVHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkUnVs
ZSwKCiAgRXZlbk9kZFJ1bGUsCiAgTm9uWmVyb1J1bGUKfSBGaWxsUnVsZTsKCnR5cGVkZWYgZW51
bQp7CiAgVW5kZWZpbmVkRmlsdGVyLAogIFBvaW50RmlsdGVyLAogIEJveEZpbHRlciwKICBUcmlh
bmdsZUZpbHRlciwKICBIZXJtaXRlRmlsdGVyLAogIEhhbm5pbmdGaWx0ZXIsCiAgSGFtbWluZ0Zp
bHRlciwKICBCbGFja21hbkZpbHRlciwKICBHYXVzc2lhbkZpbHRlciwKICBRdWFkcmF0aWNGaWx0
ZXIsCiAgQ3ViaWNGaWx0ZXIsCiAgQ2F0cm9tRmlsdGVyLAogIE1pdGNoZWxsRmlsdGVyLAogIExh
bmN6b3NGaWx0ZXIsCiAgQmVzc2VsRmlsdGVyLAogIFNpbmNGaWx0ZXIKfSBGaWx0ZXJUeXBlczsK
CnR5cGVkZWYgZW51bQp7CgogIE5vVmFsdWUgPSAweDAwMDAsCgogIFhWYWx1ZSA9IDB4MDAwMSwK
CiAgWVZhbHVlID0gMHgwMDAyLAoKICBXaWR0aFZhbHVlID0gMHgwMDA0LAoKICBIZWlnaHRWYWx1
ZSA9IDB4MDAwOCwKCiAgQWxsVmFsdWVzID0gMHgwMDBGLAoKICBYTmVnYXRpdmUgPSAweDAwMTAs
CgogIFlOZWdhdGl2ZSA9IDB4MDAyMCwKICBQZXJjZW50VmFsdWUgPSAweDEwMDAsCiAgQXNwZWN0
VmFsdWUgPSAweDIwMDAsCiAgTGVzc1ZhbHVlID0gMHg0MDAwLAogIEdyZWF0ZXJWYWx1ZSA9IDB4
ODAwMCwKICBBcmVhVmFsdWUgPSAweDEwMDAwCn0gR2VvbWV0cnlGbGFnczsKCnR5cGVkZWYgZW51
bQp7CgogIEZvcmdldEdyYXZpdHksCgogIE5vcnRoV2VzdEdyYXZpdHksCgogIE5vcnRoR3Jhdml0
eSwKCiAgTm9ydGhFYXN0R3Jhdml0eSwKCiAgV2VzdEdyYXZpdHksCgogIENlbnRlckdyYXZpdHks
CgogIEVhc3RHcmF2aXR5LAoKICBTb3V0aFdlc3RHcmF2aXR5LAoKICBTb3V0aEdyYXZpdHksCgog
IFNvdXRoRWFzdEdyYXZpdHksCgogIFN0YXRpY0dyYXZpdHkKfSBHcmF2aXR5VHlwZTsKCnR5cGVk
ZWYgZW51bQp7CiAgVW5kZWZpbmVkVHlwZSwKICBCaWxldmVsVHlwZSwKICBHcmF5c2NhbGVUeXBl
LAogIEdyYXlzY2FsZU1hdHRlVHlwZSwKICBQYWxldHRlVHlwZSwKICBQYWxldHRlTWF0dGVUeXBl
LAogIFRydWVDb2xvclR5cGUsCiAgVHJ1ZUNvbG9yTWF0dGVUeXBlLAogIENvbG9yU2VwYXJhdGlv
blR5cGUsCiAgQ29sb3JTZXBhcmF0aW9uTWF0dGVUeXBlLAogIE9wdGltaXplVHlwZQp9IEltYWdl
VHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkSW50ZXJsYWNlLAogIE5vSW50ZXJsYWNl
LAogIExpbmVJbnRlcmxhY2UsCiAgUGxhbmVJbnRlcmxhY2UsCiAgUGFydGl0aW9uSW50ZXJsYWNl
Cn0gSW50ZXJsYWNlVHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkQ2FwLAogIEJ1dHRD
YXAsCiAgUm91bmRDYXAsCiAgU3F1YXJlQ2FwCn0gTGluZUNhcDsKCnR5cGVkZWYgZW51bQp7CiAg
VW5kZWZpbmVkSm9pbiwKICBNaXRlckpvaW4sCiAgUm91bmRKb2luLAogIEJldmVsSm9pbgp9IExp
bmVKb2luOwoKdHlwZWRlZiBlbnVtCnsKICBVbmRlZmluZWRNYWdpY01ldGhvZCwKICBTdHJpbmdN
YWdpY01ldGhvZAp9IE1hZ2ljTWV0aG9kOwoKdHlwZWRlZiBlbnVtCnsKICBSZWFkTW9kZSwKICBX
cml0ZU1vZGUsCiAgSU9Nb2RlCn0gTWFwTW9kZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVk
TW9kZSwKICBGcmFtZU1vZGUsCiAgVW5mcmFtZU1vZGUsCiAgQ29uY2F0ZW5hdGVNb2RlCn0gTW9u
dGFnZU1vZGU7Cgp0eXBlZGVmIGVudW0KewogIFVuaWZvcm1Ob2lzZSwKICBHYXVzc2lhbk5vaXNl
LAogIE11bHRpcGxpY2F0aXZlR2F1c3NpYW5Ob2lzZSwKICBJbXB1bHNlTm9pc2UsCiAgTGFwbGFj
aWFuTm9pc2UsCiAgUG9pc3Nvbk5vaXNlCn0gTm9pc2VUeXBlOwoKdHlwZWRlZiBlbnVtCnsKICBQ
b2ludE1ldGhvZCA9IDAsCiAgUmVwbGFjZU1ldGhvZCwKICBGbG9vZGZpbGxNZXRob2QsCiAgRmls
bFRvQm9yZGVyTWV0aG9kLAogIFJlc2V0TWV0aG9kCn0gUGFpbnRNZXRob2Q7Cgp0eXBlZGVmIGVu
dW0KewogIFJvb3RQYXRoLAogIEhlYWRQYXRoLAogIFRhaWxQYXRoLAogIEJhc2VQYXRoLAogIEV4
dGVuc2lvblBhdGgKfSBQYXRoVHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkUHJvZmls
ZSwKICBJQ01Qcm9maWxlLAogIElQVENQcm9maWxlCn0gUHJvZmlsZVR5cGU7Cgp0eXBlZGVmIGVu
dW0KewogIFVuZGVmaW5lZFByZXZpZXcgPSAwLAogIFJvdGF0ZVByZXZpZXcsCiAgU2hlYXJQcmV2
aWV3LAogIFJvbGxQcmV2aWV3LAogIEh1ZVByZXZpZXcsCiAgU2F0dXJhdGlvblByZXZpZXcsCiAg
QnJpZ2h0bmVzc1ByZXZpZXcsCiAgR2FtbWFQcmV2aWV3LAogIFNwaWZmUHJldmlldywKICBEdWxs
UHJldmlldywKICBHcmF5c2NhbGVQcmV2aWV3LAogIFF1YW50aXplUHJldmlldywKICBEZXNwZWNr
bGVQcmV2aWV3LAogIFJlZHVjZU5vaXNlUHJldmlldywKICBBZGROb2lzZVByZXZpZXcsCiAgU2hh
cnBlblByZXZpZXcsCiAgQmx1clByZXZpZXcsCiAgVGhyZXNob2xkUHJldmlldywKICBFZGdlRGV0
ZWN0UHJldmlldywKICBTcHJlYWRQcmV2aWV3LAogIFNvbGFyaXplUHJldmlldywKICBTaGFkZVBy
ZXZpZXcsCiAgUmFpc2VQcmV2aWV3LAogIFNlZ21lbnRQcmV2aWV3LAogIFN3aXJsUHJldmlldywK
ICBJbXBsb2RlUHJldmlldywKICBXYXZlUHJldmlldywKICBPaWxQYWludFByZXZpZXcsCiAgQ2hh
cmNvYWxEcmF3aW5nUHJldmlldywKICBKUEVHUHJldmlldwp9IFByZXZpZXdUeXBlOwoKdHlwZWRl
ZiBlbnVtCnsKICBVbmRlZmluZWRQcmltaXRpdmUgPSAwLAogIFBvaW50UHJpbWl0aXZlLAogIExp
bmVQcmltaXRpdmUsCiAgUmVjdGFuZ2xlUHJpbWl0aXZlLAogIFJvdW5kUmVjdGFuZ2xlUHJpbWl0
aXZlLAogIEFyY1ByaW1pdGl2ZSwKICBFbGxpcHNlUHJpbWl0aXZlLAogIENpcmNsZVByaW1pdGl2
ZSwKICBQb2x5bGluZVByaW1pdGl2ZSwKICBQb2x5Z29uUHJpbWl0aXZlLAogIEJlemllclByaW1p
dGl2ZSwKICBDb2xvclByaW1pdGl2ZSwKICBNYXR0ZVByaW1pdGl2ZSwKICBUZXh0UHJpbWl0aXZl
LAogIEltYWdlUHJpbWl0aXZlLAogIFBhdGhQcmltaXRpdmUKfSBQcmltaXRpdmVUeXBlOwoKdHlw
ZWRlZiBlbnVtCnsKICBJbmRleFF1YW50dW0sCiAgR3JheVF1YW50dW0sCiAgSW5kZXhBbHBoYVF1
YW50dW0sCiAgR3JheUFscGhhUXVhbnR1bSwKICBSZWRRdWFudHVtLAogIEN5YW5RdWFudHVtLAog
IEdyZWVuUXVhbnR1bSwKICBZZWxsb3dRdWFudHVtLAogIEJsdWVRdWFudHVtLAogIE1hZ2VudGFR
dWFudHVtLAogIEFscGhhUXVhbnR1bSwKICBCbGFja1F1YW50dW0sCiAgUkdCUXVhbnR1bSwKICBS
R0JBUXVhbnR1bSwKICBDTVlLUXVhbnR1bSwKICBDTVlLQVF1YW50dW0KfSBRdWFudHVtVHlwZTsK
CnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkUmVnaXN0cnlUeXBlLAogIEltYWdlUmVnaXN0cnlU
eXBlCn0gUmVnaXN0cnlUeXBlOwoKdHlwZWRlZiBlbnVtCnsKICBVbmRlZmluZWRJbnRlbnQsCiAg
U2F0dXJhdGlvbkludGVudCwKICBQZXJjZXB0dWFsSW50ZW50LAogIEFic29sdXRlSW50ZW50LAog
IFJlbGF0aXZlSW50ZW50Cn0gUmVuZGVyaW5nSW50ZW50OwoKdHlwZWRlZiBlbnVtCnsKICBVbmRl
ZmluZWRSZXNvbHV0aW9uLAogIFBpeGVsc1BlckluY2hSZXNvbHV0aW9uLAogIFBpeGVsc1BlckNl
bnRpbWV0ZXJSZXNvbHV0aW9uCn0gUmVzb2x1dGlvblR5cGU7Cgp0eXBlZGVmIGVudW0KewogIENo
YXJQaXhlbCwKICBTaG9ydFBpeGVsLAogIEludGVnZXJQaXhlbCwKICBMb25nUGl4ZWwsCiAgRmxv
YXRQaXhlbCwKICBEb3VibGVQaXhlbAp9IFN0b3JhZ2VUeXBlOwoKdHlwZWRlZiBlbnVtCnsKICBV
bmRlZmluZWRUaW1lclN0YXRlLAogIFN0b3BwZWRUaW1lclN0YXRlLAogIFJ1bm5pbmdUaW1lclN0
YXRlCn0gVGltZXJTdGF0ZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkVHJhbnNtaXRUeXBl
LAogIEZpbGVUcmFuc21pdFR5cGUsCiAgQmxvYlRyYW5zbWl0VHlwZSwKICBTdHJlYW1UcmFuc21p
dFR5cGUsCiAgSW1hZ2VUcmFuc21pdFR5cGUKfSBUcmFuc21pdFR5cGU7Cgp0eXBlZGVmIGVudW0K
ewogIENvbnRyb2xTdGF0ZSA9IDB4MDAwMSwKICBJbmFjdGl2ZVdpZGdldFN0YXRlID0gMHgwMDA0
LAogIEp1bXBMaXN0U3RhdGUgPSAweDAwMDgsCiAgUmVkcmF3QWN0aW9uU3RhdGUgPSAweDAwMTAs
CiAgUmVkcmF3TGlzdFN0YXRlID0gMHgwMDIwLAogIFJlZHJhd1dpZGdldFN0YXRlID0gMHgwMDQw
LAogIFVwZGF0ZUxpc3RTdGF0ZSA9IDB4MDEwMAp9IFdpZGdldFN0YXRlOwoKdHlwZWRlZiBlbnVt
CnsKCiAgRG9SZWQgPSAweDAwMDEsCgogIERvR3JlZW4gPSAweDAwMDIsCgogIERvQmx1ZSA9IDB4
MDAwNCwKICBEb01hdHRlID0gMHgwMDA4Cn0gWENvbG9yRmxhZ3M7Cgp0eXBlZGVmIGVudW0Kewog
IERlZmF1bHRTdGF0ZSA9IDB4MDAwMCwKICBFc2NhcGVTdGF0ZSA9IDB4MDAwMSwKICBFeGl0U3Rh
dGUgPSAweDAwMDIsCiAgRm9ybWVySW1hZ2VTdGF0ZSA9IDB4MDAwNCwKICBNb2RpZmllclN0YXRl
ID0gMHgwMDA4LAogIE1vbnRhZ2VJbWFnZVN0YXRlID0gMHgwMDEwLAogIE5leHRJbWFnZVN0YXRl
ID0gMHgwMDIwLAogIFJldGFpbkNvbG9yc1N0YXRlID0gMHgwMDQwLAogIFN1c3BlbmRUaW1lID0g
NTAsCiAgVXBkYXRlQ29uZmlndXJhdGlvblN0YXRlID0gMHgwMDgwLAogIFVwZGF0ZVJlZ2lvblN0
YXRlID0gMHgwMTAwCn0gWFN0YXRlOwojIDg1ICIuLi9tYWdpY2svYXBpLmgiIDIKIyAxICIuLi9t
YWdpY2svaW1hZ2UuaCIgMQojIDM1ICIuLi9tYWdpY2svaW1hZ2UuaCIKdHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBRdWFudHVtOwojIDUxICIuLi9tYWdpY2svaW1hZ2UuaCIKdHlwZWRlZiBzdHJ1Y3Qg
X1BvaW50SW5mbwp7CiAgZG91YmxlCiAgICB4LAogICAgeSwKICAgIHo7Cn0gUG9pbnRJbmZvOwoK
dHlwZWRlZiBzdHJ1Y3QgX1BpeGVsUGFja2V0CnsKCiAgUXVhbnR1bQogICAgcmVkLAogICAgZ3Jl
ZW4sCiAgICBibHVlLAogICAgb3BhY2l0eTsKIyA4MiAiLi4vbWFnaWNrL2ltYWdlLmgiCn0gUGl4
ZWxQYWNrZXQ7Cgp0eXBlZGVmIHN0cnVjdCBfUmVjdGFuZ2xlSW5mbwp7CiAgdW5zaWduZWQgbG9u
ZwogICAgd2lkdGgsCiAgICBoZWlnaHQ7CgogIGxvbmcKICAgIHgsCiAgICB5Owp9IFJlY3Rhbmds
ZUluZm87Cgp0eXBlZGVmIHN0cnVjdCBfQXNjaWk4NUluZm8KewogIGxvbmcKICAgIG9mZnNldCwK
ICAgIGxpbmVfYnJlYWs7CgogIHVuc2lnbmVkIGNoYXIKICAgIGJ1ZmZlclsxMF07Cn0gQXNjaWk4
NUluZm87Cgp0eXBlZGVmIHN0cnVjdCBfQmxvYkluZm8KewogIHVuc2lnbmVkIGxvbmcKICAgIHNp
Z25hdHVyZTsKCiAgc2l6ZV90CiAgICBsZW5ndGgsCiAgICBleHRlbnQsCiAgICBxdWFudHVtOwoK
ICB1bnNpZ25lZCBpbnQKICAgIG1hcHBlZCwKICAgIGVvZjsKCiAgdW5zaWduZWQgY2hhcgogICAg
KmRhdGE7CgogIG9mZl90CiAgICBvZmZzZXQsCiAgICBzaXplOwp9IEJsb2JJbmZvOwoKdHlwZWRl
ZiBzdHJ1Y3QgX0Nocm9tYXRpY2l0eUluZm8KewogIFBvaW50SW5mbwogICAgcmVkX3ByaW1hcnks
CiAgICBncmVlbl9wcmltYXJ5LAogICAgYmx1ZV9wcmltYXJ5LAogICAgd2hpdGVfcG9pbnQ7Cn0g
Q2hyb21hdGljaXR5SW5mbzsKCnR5cGVkZWYgc3RydWN0IF9Db2xvckluZm8KewogIHN0cnVjdCBf
Q29sb3JJbmZvCiAgICAqcHJldmlvdXMsCiAgICAqbmV4dDsKCiAgY2hhcgogICAgKmZpbGVuYW1l
LAogICAgKm5hbWU7CgogIENvbXBsaWFuY2VUeXBlCiAgICBjb21wbGlhbmNlOwoKICBQaXhlbFBh
Y2tldAogICAgY29sb3I7Cn0gQ29sb3JJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgX0VsZW1lbnRJbmZv
CnsKICBkb3VibGUKICAgIGN4LAogICAgY3ksCiAgICBtYWpvciwKICAgIG1pbm9yLAogICAgYW5n
bGU7Cn0gRWxlbWVudEluZm87Cgp0eXBlZGVmIHN0cnVjdCBfRXhjZXB0aW9uSW5mbwp7CiAgdW5z
aWduZWQgbG9uZwogICAgc2lnbmF0dXJlOwoKICBjaGFyCiAgICAqcmVhc29uLAogICAgKmRlc2Ny
aXB0aW9uOwoKICBFeGNlcHRpb25UeXBlCiAgICBzZXZlcml0eTsKfSBFeGNlcHRpb25JbmZvOwoK
dHlwZWRlZiBzdHJ1Y3QgX0ZyYW1lSW5mbwp7CiAgdW5zaWduZWQgbG9uZwogICAgd2lkdGgsCiAg
ICBoZWlnaHQ7CgogIGxvbmcKICAgIHgsCiAgICB5LAogICAgaW5uZXJfYmV2ZWwsCiAgICBvdXRl
cl9iZXZlbDsKfSBGcmFtZUluZm87Cgp0eXBlZGVmIHN0cnVjdCBfSW1hZ2VBdHRyaWJ1dGUKewog
IHN0cnVjdCBfSW1hZ2VBdHRyaWJ1dGUKICAgICpwcmV2aW91cywKICAgICpuZXh0OwoKICBjaGFy
CiAgICAqa2V5LAogICAgKnZhbHVlOwoKICB1bnNpZ25lZCBpbnQKICAgIGNvbXByZXNzaW9uOwp9
IEltYWdlQXR0cmlidXRlOwoKdHlwZWRlZiBRdWFudHVtIEluZGV4UGFja2V0OwoKdHlwZWRlZiBz
dHJ1Y3QgX01vbnRhZ2VJbmZvCnsKICB1bnNpZ25lZCBsb25nCiAgICBzaWduYXR1cmU7CgogIGNo
YXIKICAgICpnZW9tZXRyeSwKICAgICp0aWxlLAogICAgKnRpdGxlLAogICAgKmZyYW1lLAogICAg
KnRleHR1cmUsCiAgICAqZm9udDsKCiAgZG91YmxlCiAgICBwb2ludHNpemU7CgogIHVuc2lnbmVk
IGxvbmcKICAgIGJvcmRlcl93aWR0aDsKCiAgR3Jhdml0eVR5cGUKICAgIGdyYXZpdHk7CgogIHVu
c2lnbmVkIGludAogICAgc2hhZG93OwoKICBDb21wb3NpdGVPcGVyYXRvcgogICAgY29tcG9zZTsK
CiAgUGl4ZWxQYWNrZXQKICAgIGZpbGwsCiAgICBzdHJva2UsCiAgICBiYWNrZ3JvdW5kX2NvbG9y
LAogICAgYm9yZGVyX2NvbG9yLAogICAgbWF0dGVfY29sb3I7CgogIGNoYXIKICAgIGZpbGVuYW1l
WzIwNTNdOwp9IE1vbnRhZ2VJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgX1Byb2ZpbGVJbmZvCnsKICBz
aXplX3QKICAgIGxlbmd0aDsKCiAgY2hhcgogICAgKm5hbWU7CgogIHVuc2lnbmVkIGNoYXIKICAg
ICppbmZvOwp9IFByb2ZpbGVJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgX1NlZ21lbnRJbmZvCnsKICBk
b3VibGUKICAgIHgxLAogICAgeTEsCiAgICB4MiwKICAgIHkyOwp9IFNlZ21lbnRJbmZvOwoKc3Ry
dWN0IFNlbWFwaG9yZUluZm87Cgp0eXBlZGVmIHN0cnVjdCBTZW1hcGhvcmVJbmZvCiAgU2VtYXBo
b3JlSW5mbzsKCnR5cGVkZWYgc3RydWN0IF9UaW1lcgp7CiAgZG91YmxlCiAgICBzdGFydCwKICAg
IHN0b3AsCiAgICB0b3RhbDsKfSBUaW1lcjsKCnR5cGVkZWYgc3RydWN0IF9UaW1lckluZm8Kewog
IHVuc2lnbmVkIGxvbmcKICAgIHNpZ25hdHVyZTsKCiAgVGltZXIKICAgIHVzZXIsCiAgICBlbGFw
c2VkOwoKICBUaW1lclN0YXRlCiAgICBzdGF0ZTsKfSBUaW1lckluZm87Cgp0eXBlZGVmIHN0cnVj
dCBfSW1hZ2UKewogIHVuc2lnbmVkIGxvbmcKICAgIHNpZ25hdHVyZTsKCiAgc3RydWN0IF9JbWFn
ZQogICAgKnByZXZpb3VzLAogICAgKmxpc3QsCiAgICAqbmV4dDsKCiAgQ2xhc3NUeXBlCiAgICBj
bGFzczsKCiAgQ29sb3JzcGFjZVR5cGUKICAgIGNvbG9yc3BhY2U7CgogIENvbXByZXNzaW9uVHlw
ZQogICAgY29tcHJlc3Npb247CgogIHVuc2lnbmVkIGludAogICAgb3JwaGFuLAogICAgdGFpbnQs
CiAgICBtYXR0ZTsKCiAgdW5zaWduZWQgbG9uZwogICAgY29sdW1ucywKICAgIHJvd3M7CgogIHVu
c2lnbmVkIGxvbmcKICAgIGRlcHRoLAogICAgY29sb3JzOwoKICBQaXhlbFBhY2tldAogICAgKmNv
bG9ybWFwOwoKICBQaXhlbFBhY2tldAogICAgYmFja2dyb3VuZF9jb2xvciwKICAgIGJvcmRlcl9j
b2xvciwKICAgIG1hdHRlX2NvbG9yOwoKICBkb3VibGUKICAgIGdhbW1hOwoKICBDaHJvbWF0aWNp
dHlJbmZvCiAgICBjaHJvbWF0aWNpdHk7CgogIFByb2ZpbGVJbmZvCiAgICBjb2xvcl9wcm9maWxl
LAogICAgaXB0Y19wcm9maWxlOwoKICB1bnNpZ25lZCBsb25nCiAgICBnZW5lcmljX3Byb2ZpbGVz
OwoKICBQcm9maWxlSW5mbwogICAgKmdlbmVyaWNfcHJvZmlsZTsKCiAgUmVuZGVyaW5nSW50ZW50
CiAgICByZW5kZXJpbmdfaW50ZW50OwoKICBSZXNvbHV0aW9uVHlwZQogICAgdW5pdHM7CgogIGNo
YXIKICAgICptb250YWdlLAogICAgKmRpcmVjdG9yeSwKICAgICpnZW9tZXRyeTsKCiAgbG9uZwog
ICAgb2Zmc2V0OwoKICBkb3VibGUKICAgIHhfcmVzb2x1dGlvbiwKICAgIHlfcmVzb2x1dGlvbjsK
CiAgUmVjdGFuZ2xlSW5mbwogICAgcGFnZTsKCiAgUmVjdGFuZ2xlSW5mbwogICAgdGlsZV9pbmZv
OwoKICBkb3VibGUKICAgIGJsdXIsCiAgICBmdXp6OwoKICBGaWx0ZXJUeXBlcwogICAgZmlsdGVy
OwoKICBJbnRlcmxhY2VUeXBlCiAgICBpbnRlcmxhY2U7CgogIEltYWdlQXR0cmlidXRlCiAgICAq
YXR0cmlidXRlczsKCiAgc3RydWN0IF9JbWFnZQogICAgKmNsaXBfbWFzazsKCiAgdW5zaWduZWQg
bG9uZwogICAgc2NlbmUsCiAgICBkaXNwb3NlLAogICAgZGVsYXksCiAgICBpdGVyYXRpb25zLAog
ICAgdG90YWxfY29sb3JzOwoKICBkb3VibGUKICAgIG1lYW5fZXJyb3JfcGVyX3BpeGVsLAogICAg
bm9ybWFsaXplZF9tZWFuX2Vycm9yLAogICAgbm9ybWFsaXplZF9tYXhpbXVtX2Vycm9yOwoKICBT
ZW1hcGhvcmVJbmZvCiAgICAqc2VtYXBob3JlOwoKICBUaW1lckluZm8KICAgIHRpbWVyOwoKICBF
eGNlcHRpb25JbmZvCiAgICBleGNlcHRpb247CgogIHZvaWQKICAgICpjbGllbnRfZGF0YTsKCiAg
bG9uZwogICAgc3RhcnRfbG9vcDsKCiAgdm9pZAogICAgKmNhY2hlOwoKICBpbnQKICAgICgqZmlm
bykoY29uc3Qgc3RydWN0IF9JbWFnZSAqLGNvbnN0IHZvaWQgKixjb25zdCBzaXplX3QpOwoKICBs
b25nCiAgICByZWZlcmVuY2VfY291bnQ7CgogIEFzY2lpODVJbmZvCiAgICBhc2NpaTg1OwoKICB1
bnNpZ25lZCBpbnQKICAgIGV4ZW1wdCwKICAgIHN0YXR1cywKICAgIHRlbXBvcmFyeSwKICAgIHBp
cGV0OwoKICBGSUxFCiAgICAqZmlsZTsKCiAgQmxvYkluZm8KICAgICpibG9iOwoKICB1bnNpZ25l
ZCBsb25nCiAgICBtYWdpY2tfY29sdW1ucywKICAgIG1hZ2lja19yb3dzOwoKICBjaGFyCiAgICBt
YWdpY2tfZmlsZW5hbWVbMjA1M10sCiAgICBtYWdpY2tbMjA1M10sCiAgICBmaWxlbmFtZVsyMDUz
XTsKfSBJbWFnZTsKCnR5cGVkZWYgc3RydWN0IF9JbWFnZUluZm8KewogIHVuc2lnbmVkIGxvbmcK
ICAgIHNpZ25hdHVyZTsKCiAgQ29tcHJlc3Npb25UeXBlCiAgICBjb21wcmVzc2lvbjsKCiAgdW5z
aWduZWQgaW50CiAgICB0ZW1wb3JhcnksCiAgICBhZGpvaW4sCiAgICBhbnRpYWxpYXM7CgogIHVu
c2lnbmVkIGxvbmcKICAgIHN1YmltYWdlLAogICAgc3VicmFuZ2UsCiAgICBkZXB0aDsKCiAgY2hh
cgogICAgKnNpemUsCiAgICAqdGlsZSwKICAgICpwYWdlOwoKICBJbnRlcmxhY2VUeXBlCiAgICBp
bnRlcmxhY2U7CgogIFJlc29sdXRpb25UeXBlCiAgICB1bml0czsKCiAgdW5zaWduZWQgbG9uZwog
ICAgcXVhbGl0eTsKCiAgY2hhcgogICAgKnNlcnZlcl9uYW1lLAogICAgKmZvbnQsCiAgICAqdGV4
dHVyZSwKICAgICpkZW5zaXR5OwoKICBkb3VibGUKICAgIHBvaW50c2l6ZTsKCiAgZG91YmxlCiAg
ICBmdXp6OwoKICBQaXhlbFBhY2tldAogICAgcGVuLAogICAgYmFja2dyb3VuZF9jb2xvciwKICAg
IGJvcmRlcl9jb2xvciwKICAgIG1hdHRlX2NvbG9yOwoKICB1bnNpZ25lZCBpbnQKICAgIGRpdGhl
ciwKICAgIG1vbm9jaHJvbWU7CgogIENvbG9yc3BhY2VUeXBlCiAgICBjb2xvcnNwYWNlOwoKICBJ
bWFnZVR5cGUKICAgIHR5cGU7CgogIFByZXZpZXdUeXBlCiAgICBwcmV2aWV3X3R5cGU7CgogIGxv
bmcKICAgIGdyb3VwOwoKICB1bnNpZ25lZCBpbnQKICAgIHBpbmcsCiAgICB2ZXJib3NlLAogICAg
ZGVidWc7CgogIGNoYXIKICAgICp2aWV3OwoKICB2b2lkCiAgICAqY2xpZW50X2RhdGE7CgogIGlu
dAogICAgKCpmaWZvKShjb25zdCBJbWFnZSAqLGNvbnN0IHZvaWQgKixjb25zdCBzaXplX3QpOwoK
ICBGSUxFCiAgICAqZmlsZTsKCiAgQmxvYkluZm8KICAgICpibG9iOwoKICBjaGFyCiAgICBtYWdp
Y2tbMjA1M10sCiAgICB1bmlxdWVbMjA1M10sCiAgICB6ZXJvWzIwNTNdLAogICAgZmlsZW5hbWVb
MjA1M107Cn0gSW1hZ2VJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgX01hZ2lja0luZm8KewogIHVuc2ln
bmVkIGxvbmcKICAgIHNpZ25hdHVyZTsKCiAgc3RydWN0IF9NYWdpY2tJbmZvCiAgICAqcHJldmlv
dXMsCiAgICAqbmV4dDsKCiAgY2hhcgogICAgKm5hbWU7CgogIGNoYXIKICAgICpkZXNjcmlwdGlv
biwKICAgICptb2R1bGU7CgogIEltYWdlSW5mbwogICAgKmltYWdlX2luZm87CgogIEltYWdlCiAg
ICAqKCpkZWNvZGVyKShjb25zdCBJbWFnZUluZm8gKixFeGNlcHRpb25JbmZvICopOwoKICB1bnNp
Z25lZCBpbnQKICAgICgqZW5jb2RlcikoY29uc3QgSW1hZ2VJbmZvICosSW1hZ2UgKiksCiAgICAo
Km1hZ2ljaykoY29uc3QgdW5zaWduZWQgY2hhciAqLGNvbnN0IHNpemVfdCk7CgogIHZvaWQKICAg
ICpjbGllbnRfZGF0YTsKCiAgdW5zaWduZWQgaW50CiAgICBhZGpvaW4sCiAgICByYXcsCiAgICBz
dGVhbHRoLAogICAgYmxvYl9zdXBwb3J0LAogICAgdGhyZWFkX3N1cHBvcnQ7Cn0gTWFnaWNrSW5m
bzsKCgoKCmV4dGVybiBjb25zdCBjaGFyCiAgKkFscGhhYmV0LAogICpBcHBlbmRCaW5hcnlUeXBl
LAogICpCYWNrZ3JvdW5kQ29sb3IsCiAgKkJvcmRlckNvbG9yLAogICpEZWZhdWx0UG9pbnRTaXpl
LAogICpEZWZhdWx0VGlsZUZyYW1lLAogICpEZWZhdWx0VGlsZUdlb21ldHJ5LAogICpEZWZhdWx0
VGlsZUxhYmVsLAogICpGb3JlZ3JvdW5kQ29sb3IsCiAgKk1hdHRlQ29sb3IsCiAgKkxvYWRJbWFn
ZVRleHQsCiAgKkxvYWRJbWFnZXNUZXh0LAogICpQU0RlbnNpdHlHZW9tZXRyeSwKICAqUFNQYWdl
R2VvbWV0cnksCiAgKlJlYWRCaW5hcnlUeXBlLAogICpSZWFkQmluYXJ5VW5idWZmZXJlZFR5cGUs
CiAgKlNhdmVJbWFnZVRleHQsCiAgKlNhdmVJbWFnZXNUZXh0LAogICpXcml0ZUJpbmFyeVR5cGU7
CgpleHRlcm4gY29uc3QgdW5zaWduZWQgbG9uZwogIERlZmF1bHRDb21wcmVzc2lvblF1YWxpdHk7
CgoKCgpleHRlcm4gY2hhcgogICoqR2V0Q29sb3JMaXN0KGNvbnN0IGNoYXIgKixpbnQgKiksCiAg
KkdldE1hZ2lja0NvbmZpZ3VyZVBhdGgoY29uc3QgY2hhciAqKTsKCmV4dGVybiBjb25zdCBjaGFy
CiAgKkdldEltYWdlTWFnaWNrKGNvbnN0IHVuc2lnbmVkIGNoYXIgKixjb25zdCBzaXplX3QpLAog
ICpHZXRNYWdpY2tWZXJzaW9uKHVuc2lnbmVkIGludCAqKTsKCmV4dGVybiBjb25zdCBDb2xvcklu
Zm8KICAqR2V0Q29sb3JJbmZvKGNvbnN0IGNoYXIgKixFeGNlcHRpb25JbmZvICopOwoKZXh0ZXJu
IGNvbnN0IE1hZ2lja0luZm8KICAqR2V0TWFnaWNrSW5mbyhjb25zdCBjaGFyICosRXhjZXB0aW9u
SW5mbyAqZXhjZXB0aW9uKTsKCmV4dGVybiBjb25zdCBQaXhlbFBhY2tldAogICpBY3F1aXJlSW1h
Z2VQaXhlbHMoY29uc3QgSW1hZ2UgKixjb25zdCBsb25nLGNvbnN0IGxvbmcsY29uc3QgdW5zaWdu
ZWQgbG9uZywKICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcsRXhjZXB0aW9uSW5mbyAqKTsKCmV4dGVy
biBJbWFnZQogICpBZGROb2lzZUltYWdlKGNvbnN0IEltYWdlICosY29uc3QgTm9pc2VUeXBlLEV4
Y2VwdGlvbkluZm8gKiksCiAgKkFsbG9jYXRlSW1hZ2UoY29uc3QgSW1hZ2VJbmZvICopLAogICpB
cHBlbmRJbWFnZXMoY29uc3QgSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBpbnQsRXhjZXB0aW9uSW5m
byAqKSwKICAqQXZlcmFnZUltYWdlcyhjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAg
KkJsdXJJbWFnZShjb25zdCBJbWFnZSAqLGNvbnN0IGRvdWJsZSxjb25zdCBkb3VibGUsRXhjZXB0
aW9uSW5mbyAqKSwKICAqQm9yZGVySW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCBSZWN0YW5nbGVJ
bmZvICosRXhjZXB0aW9uSW5mbyAqKSwKICAqQ2hhcmNvYWxJbWFnZShjb25zdCBJbWFnZSAqLGNv
bnN0IGRvdWJsZSxjb25zdCBkb3VibGUsRXhjZXB0aW9uSW5mbyAqKSwKICAqQ2hvcEltYWdlKGNv
bnN0IEltYWdlICosY29uc3QgUmVjdGFuZ2xlSW5mbyAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKkNs
b25lSW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBsb25nLGNvbnN0IHVuc2lnbmVk
IGxvbmcsCiAgICBjb25zdCB1bnNpZ25lZCBpbnQsRXhjZXB0aW9uSW5mbyAqKSwKICAqQ29hbGVz
Y2VJbWFnZXMoY29uc3QgSW1hZ2UgKixFeGNlcHRpb25JbmZvICopLAogICpDb2xvcml6ZUltYWdl
KGNvbnN0IEltYWdlICosY29uc3QgY2hhciAqLGNvbnN0IFBpeGVsUGFja2V0LEV4Y2VwdGlvbklu
Zm8gKiksCiAgKkNvbnN0aXR1dGVJbWFnZShjb25zdCB1bnNpZ25lZCBsb25nLGNvbnN0IHVuc2ln
bmVkIGxvbmcsY29uc3QgY2hhciAqLAogICAgY29uc3QgU3RvcmFnZVR5cGUsY29uc3Qgdm9pZCAq
LEV4Y2VwdGlvbkluZm8gKiksCiAgKkNvbnZvbHZlSW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCB1
bnNpZ25lZCBpbnQsY29uc3QgZG91YmxlICosCiAgICBFeGNlcHRpb25JbmZvICopLAogICpDcm9w
SW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCBSZWN0YW5nbGVJbmZvICosRXhjZXB0aW9uSW5mbyAq
KSwKICAqRGVjb25zdHJ1Y3RJbWFnZXMoY29uc3QgSW1hZ2UgKixFeGNlcHRpb25JbmZvICopLAog
ICpEZXNwZWNrbGVJbWFnZShjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKkVkZ2VJ
bWFnZShjb25zdCBJbWFnZSAqLGNvbnN0IGRvdWJsZSxFeGNlcHRpb25JbmZvICopLAogICpFbWJv
c3NJbWFnZShjb25zdCBJbWFnZSAqLGNvbnN0IGRvdWJsZSxjb25zdCBkb3VibGUsRXhjZXB0aW9u
SW5mbyAqKSwKICAqRW5oYW5jZUltYWdlKGNvbnN0IEltYWdlICosRXhjZXB0aW9uSW5mbyAqKSwK
ICAqRmxhdHRlbkltYWdlcyhjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKkZsaXBJ
bWFnZShjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKkZsb3BJbWFnZShjb25zdCBJ
bWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKkZyYW1lSW1hZ2UoY29uc3QgSW1hZ2UgKixjb25z
dCBGcmFtZUluZm8gKixFeGNlcHRpb25JbmZvICopLAogICpHZXROZXh0SW1hZ2UoSW1hZ2UgKiks
CiAgKkdhdXNzaWFuQmx1ckltYWdlKGNvbnN0IEltYWdlICosY29uc3QgZG91YmxlLGNvbnN0IGRv
dWJsZSxFeGNlcHRpb25JbmZvICopLAogICpJbXBsb2RlSW1hZ2UoY29uc3QgSW1hZ2UgKixjb25z
dCBkb3VibGUsRXhjZXB0aW9uSW5mbyAqKSwKICAqKkxpc3RUb0dyb3VwSW1hZ2UoY29uc3QgSW1h
Z2UgKix1bnNpZ25lZCBsb25nICopLAogICpNYWduaWZ5SW1hZ2UoY29uc3QgSW1hZ2UgKixFeGNl
cHRpb25JbmZvICopLAogICpNZWRpYW5GaWx0ZXJJbWFnZShjb25zdCBJbWFnZSAqLGNvbnN0IGRv
dWJsZSxFeGNlcHRpb25JbmZvICopLAogICpNaW5pZnlJbWFnZShjb25zdCBJbWFnZSAqLEV4Y2Vw
dGlvbkluZm8gKiksCiAgKk1vbnRhZ2VJbWFnZXMoY29uc3QgSW1hZ2UgKixjb25zdCBNb250YWdl
SW5mbyAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKk1vcnBoSW1hZ2VzKGNvbnN0IEltYWdlICosY29u
c3QgdW5zaWduZWQgbG9uZyxFeGNlcHRpb25JbmZvICopLAogICpNb3NhaWNJbWFnZXMoY29uc3Qg
SW1hZ2UgKixFeGNlcHRpb25JbmZvICopLAogICpNb3Rpb25CbHVySW1hZ2UoY29uc3QgSW1hZ2Ug
Kixjb25zdCBkb3VibGUsY29uc3QgZG91YmxlLGNvbnN0IGRvdWJsZSwKICAgIEV4Y2VwdGlvbklu
Zm8gKiksCiAgKk9pbFBhaW50SW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCBkb3VibGUsRXhjZXB0
aW9uSW5mbyAqKSwKICAqUGluZ0ltYWdlKGNvbnN0IEltYWdlSW5mbyAqLEV4Y2VwdGlvbkluZm8g
KiksCiAgKlJlYWRJbWFnZShjb25zdCBJbWFnZUluZm8gKixFeGNlcHRpb25JbmZvICopLAogICpS
ZWFkU3RyZWFtKGNvbnN0IEltYWdlSW5mbyAqLAogICAgaW50ICgqKShjb25zdCBJbWFnZSAqLGNv
bnN0IHZvaWQgKixjb25zdCBzaXplX3QpLEV4Y2VwdGlvbkluZm8gKiksCiAgKlJlZHVjZU5vaXNl
SW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCBkb3VibGUsRXhjZXB0aW9uSW5mbyAqKSwKICAqUmVm
ZXJlbmNlSW1hZ2UoSW1hZ2UgKiksCiAgKlJlc2l6ZUltYWdlKGNvbnN0IEltYWdlICosY29uc3Qg
dW5zaWduZWQgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLAogICAgY29uc3QgRmlsdGVyVHlwZXMs
Y29uc3QgZG91YmxlLEV4Y2VwdGlvbkluZm8gKiksCiAgKlJvbGxJbWFnZShjb25zdCBJbWFnZSAq
LGNvbnN0IGxvbmcsY29uc3QgbG9uZyxFeGNlcHRpb25JbmZvICopLAogICpSb3RhdGVJbWFnZShj
b25zdCBJbWFnZSAqLGNvbnN0IGRvdWJsZSxFeGNlcHRpb25JbmZvICopLAogICpTYW1wbGVJbWFn
ZShjb25zdCBJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGxvbmcsY29uc3QgdW5zaWduZWQgbG9uZywK
ICAgIEV4Y2VwdGlvbkluZm8gKiksCiAgKlNjYWxlSW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCB1
bnNpZ25lZCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcsCiAgICBFeGNlcHRpb25JbmZvICopLAog
ICpTaGFkZUltYWdlKGNvbnN0IEltYWdlICosY29uc3QgdW5zaWduZWQgaW50LGRvdWJsZSxkb3Vi
bGUsRXhjZXB0aW9uSW5mbyAqKSwKICAqU2hhcnBlbkltYWdlKGNvbnN0IEltYWdlICosY29uc3Qg
ZG91YmxlLGNvbnN0IGRvdWJsZSxFeGNlcHRpb25JbmZvICopLAogICpTaGF2ZUltYWdlKGNvbnN0
IEltYWdlICosY29uc3QgUmVjdGFuZ2xlSW5mbyAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKlNoZWFy
SW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCBkb3VibGUsY29uc3QgZG91YmxlLEV4Y2VwdGlvbklu
Zm8gKiksCiAgKlNwcmVhZEltYWdlKGNvbnN0IEltYWdlICosY29uc3QgdW5zaWduZWQgaW50LEV4
Y2VwdGlvbkluZm8gKiksCiAgKlN0ZWdhbm9JbWFnZShjb25zdCBJbWFnZSAqLGNvbnN0IEltYWdl
ICosRXhjZXB0aW9uSW5mbyAqKSwKICAqU3RlcmVvSW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCBJ
bWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKlN3aXJsSW1hZ2UoY29uc3QgSW1hZ2UgKixkb3Vi
bGUsRXhjZXB0aW9uSW5mbyAqKSwKICAqVW5zaGFycE1hc2tJbWFnZShjb25zdCBJbWFnZSAqLGNv
bnN0IGRvdWJsZSxjb25zdCBkb3VibGUsY29uc3QgZG91YmxlLAogICAgY29uc3QgZG91YmxlLEV4
Y2VwdGlvbkluZm8gKiksCiAgKldhdmVJbWFnZShjb25zdCBJbWFnZSAqLGNvbnN0IGRvdWJsZSxj
b25zdCBkb3VibGUsRXhjZXB0aW9uSW5mbyAqKSwKICAqWm9vbUltYWdlKGNvbnN0IEltYWdlICos
Y29uc3QgdW5zaWduZWQgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLAogICAgRXhjZXB0aW9uSW5m
byAqKTsKCmV4dGVybiBJbWFnZUluZm8KICAqQ2xvbmVJbWFnZUluZm8oY29uc3QgSW1hZ2VJbmZv
ICopOwoKZXh0ZXJuIEltYWdlVHlwZQogIEdldEltYWdlVHlwZShjb25zdCBJbWFnZSAqLEV4Y2Vw
dGlvbkluZm8gKik7CgpleHRlcm4gSW5kZXhQYWNrZXQKICAqR2V0SW5kZXhlcyhjb25zdCBJbWFn
ZSAqKSwKICBWYWxpZGF0ZUNvbG9ybWFwSW5kZXgoSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBsb25n
KTsKCmV4dGVybiBpbnQKICBQYXJzZUltYWdlR2VvbWV0cnkoY29uc3QgY2hhciAqLGxvbmcgKixs
b25nICosdW5zaWduZWQgbG9uZyAqLAogICAgdW5zaWduZWQgbG9uZyAqKTsKCmV4dGVybiBNYWdp
Y2tJbmZvCiAgKlJlZ2lzdGVyTWFnaWNrSW5mbyhNYWdpY2tJbmZvICopLAogICpTZXRNYWdpY2tJ
bmZvKGNvbnN0IGNoYXIgKik7CgpleHRlcm4gTW9udGFnZUluZm8KICAqQ2xvbmVNb250YWdlSW5m
byhjb25zdCBJbWFnZUluZm8gKixjb25zdCBNb250YWdlSW5mbyAqKTsKCmV4dGVybiBQaXhlbFBh
Y2tldAogIEFjcXVpcmVPbmVQaXhlbChjb25zdCBJbWFnZSAqLGNvbnN0IGxvbmcsY29uc3QgbG9u
ZyxFeGNlcHRpb25JbmZvICopLAogICpHZXRJbWFnZVBpeGVscyhJbWFnZSAqLGNvbnN0IGxvbmcs
Y29uc3QgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLAogICAgY29uc3QgdW5zaWduZWQgbG9uZyks
CiAgR2V0T25lUGl4ZWwoSW1hZ2UgKixjb25zdCBsb25nLGNvbnN0IGxvbmcpLAogICpHZXRQaXhl
bHMoY29uc3QgSW1hZ2UgKiksCiAgKlNldEltYWdlUGl4ZWxzKEltYWdlICosY29uc3QgbG9uZyxj
b25zdCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcsCiAgICBjb25zdCB1bnNpZ25lZCBsb25nKTsK
CmV4dGVybiBSZWN0YW5nbGVJbmZvCiAgR2V0SW1hZ2VCb3VuZGluZ0JveChjb25zdCBJbWFnZSAq
LEV4Y2VwdGlvbkluZm8gKmV4Y2VwdGlvbik7CgpleHRlcm4gdW5zaWduZWQgaW50CiAgQWxsb2Nh
dGVJbWFnZUNvbG9ybWFwKEltYWdlICosY29uc3QgdW5zaWduZWQgbG9uZyksCiAgQW5pbWF0ZUlt
YWdlcyhjb25zdCBJbWFnZUluZm8gKmltYWdlX2luZm8sSW1hZ2UgKmltYWdlKSwKICBDaGFubmVs
SW1hZ2UoSW1hZ2UgKixjb25zdCBDaGFubmVsVHlwZSksCiAgQ29tcG9zaXRlSW1hZ2UoSW1hZ2Ug
Kixjb25zdCBDb21wb3NpdGVPcGVyYXRvcixjb25zdCBJbWFnZSAqLGNvbnN0IGxvbmcsCiAgICBj
b25zdCBsb25nKSwKICBDb250cmFzdEltYWdlKEltYWdlICosY29uc3QgdW5zaWduZWQgaW50KSwK
ICBEaXNwYXRjaEltYWdlKGNvbnN0IEltYWdlICosY29uc3QgbG9uZyxjb25zdCBsb25nLGNvbnN0
IHVuc2lnbmVkIGxvbmcsCiAgICBjb25zdCB1bnNpZ25lZCBsb25nLGNvbnN0IGNoYXIgKixjb25z
dCBTdG9yYWdlVHlwZSx2b2lkICosRXhjZXB0aW9uSW5mbyAqKSwKICBEaXNwbGF5SW1hZ2VzKGNv
bnN0IEltYWdlSW5mbyAqaW1hZ2VfaW5mbyxJbWFnZSAqaW1hZ2UpLAogIEVxdWFsaXplSW1hZ2Uo
SW1hZ2UgKiksCiAgR2FtbWFJbWFnZShJbWFnZSAqLGNvbnN0IGNoYXIgKiksCiAgR2V0TnVtYmVy
U2NlbmVzKGNvbnN0IEltYWdlICopLAogIEdyYWRpZW50SW1hZ2UoSW1hZ2UgKixjb25zdCBQaXhl
bFBhY2tldCAqLGNvbnN0IFBpeGVsUGFja2V0ICopLAogIElzR2VvbWV0cnkoY29uc3QgY2hhciAq
KSwKICBJc0dyYXlJbWFnZShjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgSXNJbWFn
ZXNFcXVhbChJbWFnZSAqLEltYWdlICopLAogIElzVGFpbnRJbWFnZShjb25zdCBJbWFnZSAqKSwK
ICBJc01hZ2lja0NvbmZsaWN0KGNvbnN0IGNoYXIgKiksCiAgSXNNb25vY2hyb21lSW1hZ2UoY29u
c3QgSW1hZ2UgKixFeGNlcHRpb25JbmZvICopLAogIElzT3BhcXVlSW1hZ2UoY29uc3QgSW1hZ2Ug
KixFeGNlcHRpb25JbmZvICopLAogIElzUGFsZXR0ZUltYWdlKGNvbnN0IEltYWdlICosRXhjZXB0
aW9uSW5mbyAqKSwKICBJc1N1YmltYWdlKGNvbnN0IGNoYXIgKixjb25zdCB1bnNpZ25lZCBpbnQp
LAogIExldmVsSW1hZ2UoSW1hZ2UgKixjb25zdCBjaGFyICopLAogIExpc3RDb2xvckluZm8oRklM
RSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgTGlzdE1hZ2lja0luZm8oRklMRSAqLEV4Y2VwdGlvbklu
Zm8gKiksCiAgTW9kdWxhdGVJbWFnZShJbWFnZSAqLGNvbnN0IGNoYXIgKiksCiAgTW9ncmlmeUlt
YWdlKGNvbnN0IEltYWdlSW5mbyAqLGNvbnN0IGludCxjaGFyICoqLEltYWdlICoqKSwKICBNb2dy
aWZ5SW1hZ2VzKGNvbnN0IEltYWdlSW5mbyAqLGNvbnN0IGludCxjaGFyICoqLEltYWdlICoqKSwK
ICBOZWdhdGVJbWFnZShJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGludCksCiAgTm9ybWFsaXplSW1h
Z2UoSW1hZ2UgKiksCiAgT3BhcXVlSW1hZ2UoSW1hZ2UgKixjb25zdCBQaXhlbFBhY2tldCxjb25z
dCBQaXhlbFBhY2tldCksCiAgUGxhc21hSW1hZ2UoSW1hZ2UgKixjb25zdCBTZWdtZW50SW5mbyAq
LGludCxpbnQpLAogIFBvcEltYWdlUGl4ZWxzKGNvbnN0IEltYWdlICosY29uc3QgUXVhbnR1bVR5
cGUsdW5zaWduZWQgY2hhciAqKSwKICBQcm9maWxlSW1hZ2UoSW1hZ2UgKixjb25zdCBjaGFyICos
Y29uc3QgY2hhciAqKSwKICBQdXNoSW1hZ2VQaXhlbHMoSW1hZ2UgKixjb25zdCBRdWFudHVtVHlw
ZSxjb25zdCB1bnNpZ25lZCBjaGFyICopLAogIFF1ZXJ5Q29sb3JEYXRhYmFzZShjb25zdCBjaGFy
ICosUGl4ZWxQYWNrZXQgKiksCiAgUXVlcnlDb2xvcm5hbWUoY29uc3QgSW1hZ2UgKixjb25zdCBQ
aXhlbFBhY2tldCAqLGNvbnN0IENvbXBsaWFuY2VUeXBlLGNoYXIgKiwKICAgIEV4Y2VwdGlvbklu
Zm8gKiksCiAgUmFpc2VJbWFnZShJbWFnZSAqLGNvbnN0IFJlY3RhbmdsZUluZm8gKixjb25zdCBp
bnQpLAogIFJHQlRyYW5zZm9ybUltYWdlKEltYWdlICosY29uc3QgQ29sb3JzcGFjZVR5cGUpLAog
IFNldEltYWdlQ2xpcE1hc2soSW1hZ2UgKixJbWFnZSAqKSwKICBTZXRJbWFnZURlcHRoKEltYWdl
ICosY29uc3QgdW5zaWduZWQgbG9uZyksCiAgU2V0SW1hZ2VJbmZvKEltYWdlSW5mbyAqLGNvbnN0
IHVuc2lnbmVkIGludCxFeGNlcHRpb25JbmZvICopLAogIFNpZ25hdHVyZUltYWdlKEltYWdlICop
LAogIFNvcnRDb2xvcm1hcEJ5SW50ZW5zaXR5KEltYWdlICopLAogIFN5bmNJbWFnZVBpeGVscyhJ
bWFnZSAqKSwKICBUaHJlc2hvbGRJbWFnZShJbWFnZSAqLGNvbnN0IGRvdWJsZSksCiAgVHJhbnNm
b3JtUkdCSW1hZ2UoSW1hZ2UgKixjb25zdCBDb2xvcnNwYWNlVHlwZSksCiAgVHJhbnNwYXJlbnRJ
bWFnZShJbWFnZSAqLGNvbnN0IFBpeGVsUGFja2V0LGNvbnN0IHVuc2lnbmVkIGludCksCiAgVW5y
ZWdpc3Rlck1hZ2lja0luZm8oY29uc3QgY2hhciAqKSwKICBXcml0ZUltYWdlKGNvbnN0IEltYWdl
SW5mbyAqLEltYWdlICopLAogIFdyaXRlU3RyZWFtKGNvbnN0IEltYWdlSW5mbyAqLEltYWdlICos
CiAgICBpbnQgKCopKGNvbnN0IEltYWdlICosY29uc3Qgdm9pZCAqLGNvbnN0IHNpemVfdCkpOwoK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcKICBHZXRJbWFnZURlcHRoKGNvbnN0IEltYWdlICosRXhjZXB0
aW9uSW5mbyAqKSwKICBHZXROdW1iZXJDb2xvcnMoY29uc3QgSW1hZ2UgKixGSUxFICosRXhjZXB0
aW9uSW5mbyAqKTsKCmV4dGVybiB2b2lkCiAgQWxsb2NhdGVOZXh0SW1hZ2UoY29uc3QgSW1hZ2VJ
bmZvICosSW1hZ2UgKiksCiAgQ29tcHJlc3NDb2xvcm1hcChJbWFnZSAqKSwKICBDeWNsZUNvbG9y
bWFwSW1hZ2UoSW1hZ2UgKixjb25zdCBpbnQpLAogIERlc2NyaWJlSW1hZ2UoSW1hZ2UgKixGSUxF
ICosY29uc3QgdW5zaWduZWQgaW50KSwKICBEZXN0cm95Q29sb3JJbmZvKHZvaWQpLAogIERlc3Ry
b3lDb25zdGl0dXRlKHZvaWQpLAogIERlc3Ryb3lJbWFnZShJbWFnZSAqKSwKICBEZXN0cm95SW1h
Z2VJbmZvKEltYWdlSW5mbyAqKSwKICBEZXN0cm95SW1hZ2VQaXhlbHMoSW1hZ2UgKiksCiAgRGVz
dHJveUltYWdlcyhJbWFnZSAqKSwKICBEZXN0cm95TWFnaWNrKHZvaWQpLAogIERlc3Ryb3lNYWdp
Y2tJbmZvKHZvaWQpLAogIERlc3Ryb3lNb250YWdlSW5mbyhNb250YWdlSW5mbyAqKSwKICBHZXRJ
bWFnZUluZm8oSW1hZ2VJbmZvICopLAogIEdldE1vbnRhZ2VJbmZvKGNvbnN0IEltYWdlSW5mbyAq
LE1vbnRhZ2VJbmZvICopLAogIEluaXRpYWxpemVNYWdpY2soY29uc3QgY2hhciAqKSwKICBNb2Rp
ZnlJbWFnZShJbWFnZSAqKixFeGNlcHRpb25JbmZvICopLAogIFJlZ2lzdGVyQVJUSW1hZ2Uodm9p
ZCksCiAgUmVnaXN0ZXJBVklJbWFnZSh2b2lkKSwKICBSZWdpc3RlckFWU0ltYWdlKHZvaWQpLAog
IFJlZ2lzdGVyQklFSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJCTVBJbWFnZSh2b2lkKSwKICBSZWdp
c3RlckNNWUtJbWFnZSh2b2lkKSwKICBSZWdpc3RlckNVVEltYWdlKHZvaWQpLAogIFJlZ2lzdGVy
RENNSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJEQ1hJbWFnZSh2b2lkKSwKICBSZWdpc3RlckRJQklt
YWdlKHZvaWQpLAogIFJlZ2lzdGVyRFBTSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJEUFhJbWFnZSh2
b2lkKSwKICBSZWdpc3RlckVQREZJbWFnZSh2b2lkKSwKICBSZWdpc3RlckVQSUltYWdlKHZvaWQp
LAogIFJlZ2lzdGVyRVBTSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJFUFMySW1hZ2Uodm9pZCksCiAg
UmVnaXN0ZXJFUFNGSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJFUFNJSW1hZ2Uodm9pZCksCiAgUmVn
aXN0ZXJFUFRJbWFnZSh2b2lkKSwKICBSZWdpc3RlckZBWEltYWdlKHZvaWQpLAogIFJlZ2lzdGVy
RklUU0ltYWdlKHZvaWQpLAogIFJlZ2lzdGVyRlBYSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJHM0lt
YWdlKHZvaWQpLAogIFJlZ2lzdGVyR0lGSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJHSUY4N0ltYWdl
KHZvaWQpLAogIFJlZ2lzdGVyR1JBRElFTlRJbWFnZSh2b2lkKSwKICBSZWdpc3RlckdSQU5JVEVJ
bWFnZSh2b2lkKSwKICBSZWdpc3RlckdSQVlJbWFnZSh2b2lkKSwKICBSZWdpc3RlckhJbWFnZSh2
b2lkKSwKICBSZWdpc3RlckhERkltYWdlKHZvaWQpLAogIFJlZ2lzdGVySElTVE9HUkFNSW1hZ2Uo
dm9pZCksCiAgUmVnaXN0ZXJIVE1JbWFnZSh2b2lkKSwKICBSZWdpc3RlckhUTUxJbWFnZSh2b2lk
KSwKICBSZWdpc3RlcklDQkltYWdlKHZvaWQpLAogIFJlZ2lzdGVySUNPTkltYWdlKHZvaWQpLAog
IFJlZ2lzdGVySU1QTElDSVRJbWFnZSh2b2lkKSwKICBSZWdpc3RlckpCR0ltYWdlKHZvaWQpLAog
IFJlZ2lzdGVySkJJR0ltYWdlKHZvaWQpLAogIFJlZ2lzdGVySlBHSW1hZ2Uodm9pZCksCiAgUmVn
aXN0ZXJKUEVHSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJKUDJJbWFnZSh2b2lkKSwKICBSZWdpc3Rl
ckxBQkVMSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJMT0dPSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJN
QVBJbWFnZSh2b2lkKSwKICBSZWdpc3Rlck1FVEFJbWFnZSh2b2lkKSwKICBSZWdpc3Rlck1BVElt
YWdlKHZvaWQpLAogIFJlZ2lzdGVyTUFUVEVJbWFnZSh2b2lkKSwKICBSZWdpc3Rlck1JRkZJbWFn
ZSh2b2lkKSwKICBSZWdpc3Rlck1OR0ltYWdlKHZvaWQpLAogIFJlZ2lzdGVyTU9OT0ltYWdlKHZv
aWQpLAogIFJlZ2lzdGVyTVBDSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJNUEVHSW1hZ2Uodm9pZCks
CiAgUmVnaXN0ZXJNUFJJbWFnZSh2b2lkKSwKICBSZWdpc3Rlck1UVkltYWdlKHZvaWQpLAogIFJl
Z2lzdGVyTVZHSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJORVRTQ0FQRUltYWdlKHZvaWQpLAogIFJl
Z2lzdGVyTlVMTEltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUDdJbWFnZSh2b2lkKSwKICBSZWdpc3Rl
clBCTUltYWdlKHZvaWQpLAogIFJlZ2lzdGVyT1RCSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJQQ0RJ
bWFnZSh2b2lkKSwKICBSZWdpc3RlclBDRFNJbWFnZSh2b2lkKSwKICBSZWdpc3RlclBDTEltYWdl
KHZvaWQpLAogIFJlZ2lzdGVyUENUSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJQQ1hJbWFnZSh2b2lk
KSwKICBSZWdpc3RlclBEQkltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUERGSW1hZ2Uodm9pZCksCiAg
UmVnaXN0ZXJQSUNJbWFnZSh2b2lkKSwKICBSZWdpc3RlclBJQ1RJbWFnZSh2b2lkKSwKICBSZWdp
c3RlclBJWEltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUExBU01BSW1hZ2Uodm9pZCksCiAgUmVnaXN0
ZXJQR01JbWFnZSh2b2lkKSwKICBSZWdpc3RlclBNSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJQTkdJ
bWFnZSh2b2lkKSwKICBSZWdpc3RlclBOTUltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUFBNSW1hZ2Uo
dm9pZCksCiAgUmVnaXN0ZXJQUkVWSUVXSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJQU0ltYWdlKHZv
aWQpLAogIFJlZ2lzdGVyUFMySW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJQUzNJbWFnZSh2b2lkKSwK
ICBSZWdpc3RlclBTREltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUFRJRkltYWdlKHZvaWQpLAogIFJl
Z2lzdGVyUFdQSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJSQVNJbWFnZSh2b2lkKSwKICBSZWdpc3Rl
clJHQkltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUkdCQUltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUkxB
SW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJSTEVJbWFnZSh2b2lkKSwKICBSZWdpc3RlclNDVEltYWdl
KHZvaWQpLAogIFJlZ2lzdGVyU0ZXSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJTR0lJbWFnZSh2b2lk
KSwKICBSZWdpc3RlclNIVE1MSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJTVEVHQU5PSW1hZ2Uodm9p
ZCksCiAgUmVnaXN0ZXJTVU5JbWFnZSh2b2lkKSwKICBSZWdpc3RlclNWR0ltYWdlKHZvaWQpLAog
IFJlZ2lzdGVyVEVYVEltYWdlKHZvaWQpLAogIFJlZ2lzdGVyVEdBSW1hZ2Uodm9pZCksCiAgUmVn
aXN0ZXJUSUZJbWFnZSh2b2lkKSwKICBSZWdpc3RlclRJRkZJbWFnZSh2b2lkKSwKICBSZWdpc3Rl
clRJTEVJbWFnZSh2b2lkKSwKICBSZWdpc3RlclRJTUltYWdlKHZvaWQpLAogIFJlZ2lzdGVyVFRG
SW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJUWFRJbWFnZSh2b2lkKSwKICBSZWdpc3RlclVJTEltYWdl
KHZvaWQpLAogIFJlZ2lzdGVyVVJMSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJVWVZZSW1hZ2Uodm9p
ZCksCiAgUmVnaXN0ZXJWREFJbWFnZSh2b2lkKSwKICBSZWdpc3RlclZJQ0FSSW1hZ2Uodm9pZCks
CiAgUmVnaXN0ZXJWSURJbWFnZSh2b2lkKSwKICBSZWdpc3RlclZJRkZJbWFnZSh2b2lkKSwKICBS
ZWdpc3RlclZTVEltYWdlKHZvaWQpLAogIFJlZ2lzdGVyV0JNUEltYWdlKHZvaWQpLAogIFJlZ2lz
dGVyV01GSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJXUEdJbWFnZSh2b2lkKSwKICBSZWdpc3RlclhJ
bWFnZSh2b2lkKSwKICBSZWdpc3RlclhCTUltYWdlKHZvaWQpLAogIFJlZ2lzdGVyWENJbWFnZSh2
b2lkKSwKICBSZWdpc3RlclhDRkltYWdlKHZvaWQpLAogIFJlZ2lzdGVyWFBNSW1hZ2Uodm9pZCks
CiAgUmVnaXN0ZXJYVkltYWdlKHZvaWQpLAogIFJlZ2lzdGVyWFdESW1hZ2Uodm9pZCksCiAgUmVn
aXN0ZXJZVVZJbWFnZSh2b2lkKSwKICBTZXRJbWFnZShJbWFnZSAqLGNvbnN0IFF1YW50dW0pLAog
IFNldEltYWdlT3BhY2l0eShJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGludCksCiAgU2V0SW1hZ2VU
eXBlKEltYWdlICosY29uc3QgSW1hZ2VUeXBlKSwKICBTb2xhcml6ZUltYWdlKEltYWdlICosY29u
c3QgZG91YmxlKSwKICBTeW5jSW1hZ2UoSW1hZ2UgKiksCiAgVGV4dHVyZUltYWdlKEltYWdlICos
Y29uc3QgSW1hZ2UgKiksCiAgVHJhbnNmb3JtSFNMKGNvbnN0IFF1YW50dW0sY29uc3QgUXVhbnR1
bSxjb25zdCBRdWFudHVtLGRvdWJsZSAqLGRvdWJsZSAqLAogICAgZG91YmxlICopLAogIFRyYW5z
Zm9ybUltYWdlKEltYWdlICoqLGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopLAogIFVucmVnaXN0
ZXJBUlRJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyQVZJSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3Rl
ckFWU0ltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJCSUVJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVy
Qk1QSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckNNWUtJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVy
Q1VUSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckRDTUltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJE
Q1hJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyRElCSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckRQ
U0ltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJEUFhJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyRVBE
RkltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJFUElJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyRVBT
SW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckVQUzJJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyRVBT
RkltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJFUFNJSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckVQ
VEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJGQVhJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyRklU
U0ltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJGUFhJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyRzNJ
bWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyR0lGSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckdJRjg3
SW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckdSQURJRU5USW1hZ2Uodm9pZCksCiAgVW5yZWdpc3Rl
ckdSQU5JVEVJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyR1JBWUltYWdlKHZvaWQpLAogIFVucmVn
aXN0ZXJISW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckhERkltYWdlKHZvaWQpLAogIFVucmVnaXN0
ZXJISVNUT0dSQU1JbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVySFRNSW1hZ2Uodm9pZCksCiAgVW5y
ZWdpc3RlckhUTUxJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVySUNCSW1hZ2Uodm9pZCksCiAgVW5y
ZWdpc3RlcklDT05JbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVySU1QTElDSVRJbWFnZSh2b2lkKSwK
ICBVbnJlZ2lzdGVySkJHSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckpCSUdJbWFnZSh2b2lkKSwK
ICBVbnJlZ2lzdGVySlBHSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckpQRUdJbWFnZSh2b2lkKSwK
ICBVbnJlZ2lzdGVySlAySW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckxBQkVMSW1hZ2Uodm9pZCks
CiAgVW5yZWdpc3RlckxPR09JbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyTUFQSW1hZ2Uodm9pZCks
CiAgVW5yZWdpc3Rlck1BVEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJNQVRURUltYWdlKHZvaWQp
LAogIFVucmVnaXN0ZXJNRVRBSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3Rlck1JRkZJbWFnZSh2b2lk
KSwKICBVbnJlZ2lzdGVyTU5HSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3Rlck1PTk9JbWFnZSh2b2lk
KSwKICBVbnJlZ2lzdGVyTVBDSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3Rlck1QRUdJbWFnZSh2b2lk
KSwKICBVbnJlZ2lzdGVyTVBSSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3Rlck1UVkltYWdlKHZvaWQp
LAogIFVucmVnaXN0ZXJNVkdJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyTkVUU0NBUEVJbWFnZSh2
b2lkKSwKICBVbnJlZ2lzdGVyTlVMTEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQN0ltYWdlKHZv
aWQpLAogIFVucmVnaXN0ZXJQQk1JbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyT1RCSW1hZ2Uodm9p
ZCksCiAgVW5yZWdpc3RlclBDREltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQQ0RTSW1hZ2Uodm9p
ZCksCiAgVW5yZWdpc3RlclBDTEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQQ1RJbWFnZSh2b2lk
KSwKICBVbnJlZ2lzdGVyUENYSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlclBEQkltYWdlKHZvaWQp
LAogIFVucmVnaXN0ZXJQREZJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyUElDSW1hZ2Uodm9pZCks
CiAgVW5yZWdpc3RlclBJQ1RJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyUElYSW1hZ2Uodm9pZCks
CiAgVW5yZWdpc3RlclBMQVNNQUltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQR01JbWFnZSh2b2lk
KSwKICBVbnJlZ2lzdGVyUE1JbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyUE5HSW1hZ2Uodm9pZCks
CiAgVW5yZWdpc3RlclBOTUltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQUE1JbWFnZSh2b2lkKSwK
ICBVbnJlZ2lzdGVyUFJFVklFV0ltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQU0ltYWdlKHZvaWQp
LAogIFVucmVnaXN0ZXJQUzJJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyUFMzSW1hZ2Uodm9pZCks
CiAgVW5yZWdpc3RlclBTREltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQVElGSW1hZ2Uodm9pZCks
CiAgVW5yZWdpc3RlclBXUEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJSQVNJbWFnZSh2b2lkKSwK
ICBVbnJlZ2lzdGVyUkdCSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlclJHQkFJbWFnZSh2b2lkKSwK
ICBVbnJlZ2lzdGVyUkxBSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlclJMRUltYWdlKHZvaWQpLAog
IFVucmVnaXN0ZXJTQ1RJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyU0ZXSW1hZ2Uodm9pZCksCiAg
VW5yZWdpc3RlclNHSUltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJTSFRNTEltYWdlKHZvaWQpLAog
IFVucmVnaXN0ZXJTVEVHQU5PSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlclNVTkltYWdlKHZvaWQp
LAogIFVucmVnaXN0ZXJTVkdJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyVEVYVEltYWdlKHZvaWQp
LAogIFVucmVnaXN0ZXJUR0FJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyVElGSW1hZ2Uodm9pZCks
CiAgVW5yZWdpc3RlclRJRkZJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyVElMRUltYWdlKHZvaWQp
LAogIFVucmVnaXN0ZXJUSU1JbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyVFRGSW1hZ2Uodm9pZCks
CiAgVW5yZWdpc3RlclRYVEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJVSUxJbWFnZSh2b2lkKSwK
ICBVbnJlZ2lzdGVyVVJMSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlclVZVllJbWFnZSh2b2lkKSwK
ICBVbnJlZ2lzdGVyVkRBSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlclZJQ0FSSW1hZ2Uodm9pZCks
CiAgVW5yZWdpc3RlclZJREltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJWSUZGSW1hZ2Uodm9pZCks
CiAgVW5yZWdpc3RlclZTVEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJXQk1QSW1hZ2Uodm9pZCks
CiAgVW5yZWdpc3RlcldNRkltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJXUEdJbWFnZSh2b2lkKSwK
ICBVbnJlZ2lzdGVyWEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJYQk1JbWFnZSh2b2lkKSwKICBV
bnJlZ2lzdGVyWENJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyWENGSW1hZ2Uodm9pZCksCiAgVW5y
ZWdpc3RlclhQTUltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJYVkltYWdlKHZvaWQpLAogIFVucmVn
aXN0ZXJYV0RJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyWVVWSW1hZ2Uodm9pZCk7CiMgODYgIi4u
L21hZ2ljay9hcGkuaCIgMgojIDEgIi4uL21hZ2ljay9kcmF3LmgiIDEKIyAxNCAiLi4vbWFnaWNr
L2RyYXcuaCIKdHlwZWRlZiBzdHJ1Y3QgX0FmZmluZU1hdHJpeAp7CiAgZG91YmxlCiAgICBzeCwK
ICAgIHJ4LAogICAgcnksCiAgICBzeSwKICAgIHR4LAogICAgdHk7Cn0gQWZmaW5lTWF0cml4OwoK
dHlwZWRlZiBzdHJ1Y3QgX0RyYXdJbmZvCnsKICB1bnNpZ25lZCBsb25nCiAgICBzaWduYXR1cmU7
CgogIGNoYXIKICAgICpwcmltaXRpdmUsCiAgICAqdGV4dCwKICAgICpnZW9tZXRyeTsKCiAgSW1h
Z2UKICAgICp0aWxlOwoKICBBZmZpbmVNYXRyaXgKICAgIGFmZmluZTsKCiAgR3Jhdml0eVR5cGUK
ICAgIGdyYXZpdHk7CgogIFBpeGVsUGFja2V0CiAgICBmaWxsLAogICAgc3Ryb2tlOwoKICBJbWFn
ZQogICAgKmZpbGxfcGF0dGVybiwKICAgICpzdHJva2VfcGF0dGVybjsKCiAgdW5zaWduZWQgaW50
CiAgICBzdHJva2VfYW50aWFsaWFzLAogICAgdGV4dF9hbnRpYWxpYXM7CgogIEZpbGxSdWxlCiAg
ICBmaWxsX3J1bGU7CgogIExpbmVDYXAKICAgIGxpbmVjYXA7CgogIExpbmVKb2luCiAgICBsaW5l
am9pbjsKCiAgdW5zaWduZWQgbG9uZwogICAgbWl0ZXJsaW1pdDsKCiAgZG91YmxlCiAgICBkYXNo
X29mZnNldDsKCiAgRGVjb3JhdGlvblR5cGUKICAgIGRlY29yYXRlOwoKICBDb21wb3NpdGVPcGVy
YXRvcgogICAgY29tcG9zZTsKCiAgZG91YmxlCiAgICBwb2ludHNpemU7CgogIGRvdWJsZQogICAg
c3Ryb2tlX3dpZHRoOwoKICBjaGFyCiAgICAqZm9udCwKICAgICpkZW5zaXR5OwoKICBQaXhlbFBh
Y2tldAogICAgYm94LAogICAgYm9yZGVyX2NvbG9yOwoKICBjaGFyCiAgICAqc2VydmVyX25hbWU7
CgogIGRvdWJsZQogICAgKmRhc2hfcGF0dGVybjsKCiAgY2hhcgogICAgKmNsaXBfcGF0aDsKCiAg
U2VnbWVudEluZm8KICAgIGJvdW5kczsKCiAgQ2xpcFBhdGhVbml0cwogICAgY2xpcF91bml0czsK
CiAgdW5zaWduZWQgaW50CiAgICBkZWJ1ZzsKCiAgUXVhbnR1bQogICAgb3BhY2l0eTsKfSBEcmF3
SW5mbzsKCnR5cGVkZWYgc3RydWN0IF9UeXBlSW5mbwp7CiAgY2hhcgogICAgKmZpbGVuYW1lLAog
ICAgKm5hbWUsCiAgICAqZmFtaWx5LAogICAgKmFsaWFzLAogICAgKmRlc2NyaXB0aW9uLAogICAg
KmZvcm1hdCwKICAgICp3ZWlnaHQsCiAgICAqZ2x5cGhzLAogICAgKm1ldHJpY3MsCiAgICAqdmVy
c2lvbjsKCiAgc3RydWN0IF9UeXBlSW5mbwogICAgKnByZXZpb3VzLAogICAgKm5leHQ7Cn0gVHlw
ZUluZm87Cgp0eXBlZGVmIHN0cnVjdCBfUHJpbWl0aXZlSW5mbwp7CiAgUG9pbnRJbmZvCiAgICBw
b2ludDsKCiAgdW5zaWduZWQgbG9uZwogICAgY29vcmRpbmF0ZXM7CgogIFByaW1pdGl2ZVR5cGUK
ICAgIHByaW1pdGl2ZTsKCiAgUGFpbnRNZXRob2QKICAgIG1ldGhvZDsKCiAgY2hhcgogICAgKnRl
eHQ7Cn0gUHJpbWl0aXZlSW5mbzsKCnR5cGVkZWYgc3RydWN0IF9UeXBlTWV0cmljCnsKICBQb2lu
dEluZm8KICAgIHBpeGVsc19wZXJfZW07CgogIGxvbmcKICAgIGFzY2VudCwKICAgIGRlc2NlbnQ7
CgogIHVuc2lnbmVkIGxvbmcKICAgIHdpZHRoLAogICAgaGVpZ2h0LAogICAgbWF4X2FkdmFuY2U7
Cn0gVHlwZU1ldHJpYzsKCgoKCmV4dGVybiBjb25zdCBUeXBlSW5mbwogICpHZXRUeXBlSW5mbyhj
b25zdCBjaGFyICosRXhjZXB0aW9uSW5mbyAqKTsKCmV4dGVybiBEcmF3SW5mbwogICpDbG9uZURy
YXdJbmZvKGNvbnN0IEltYWdlSW5mbyAqLGNvbnN0IERyYXdJbmZvICopOwoKZXh0ZXJuIHVuc2ln
bmVkIGludAogIEFubm90YXRlSW1hZ2UoSW1hZ2UgKixjb25zdCBEcmF3SW5mbyAqKSwKICBDb2xv
ckZsb29kZmlsbEltYWdlKEltYWdlICosY29uc3QgRHJhd0luZm8gKixjb25zdCBQaXhlbFBhY2tl
dCxjb25zdCBsb25nLAogICAgY29uc3QgbG9uZyxjb25zdCBQYWludE1ldGhvZCksCiAgRHJhd0lt
YWdlKEltYWdlICosRHJhd0luZm8gKiksCiAgR2V0VHlwZU1ldHJpY3MoSW1hZ2UgKixjb25zdCBE
cmF3SW5mbyAqLFR5cGVNZXRyaWMgKiksCiAgTGlzdFR5cGVJbmZvKEZJTEUgKixFeGNlcHRpb25J
bmZvICopLAogIE1hdHRlRmxvb2RmaWxsSW1hZ2UoSW1hZ2UgKixjb25zdCBQaXhlbFBhY2tldCxj
b25zdCB1bnNpZ25lZCBpbnQsY29uc3QgbG9uZywKICAgIGNvbnN0IGxvbmcsY29uc3QgUGFpbnRN
ZXRob2QpOwoKZXh0ZXJuIHZvaWQKICBEZXN0cm95RHJhd0luZm8oRHJhd0luZm8gKiksCiAgRGVz
dHJveVR5cGVJbmZvKHZvaWQpLAogIEdldERyYXdJbmZvKGNvbnN0IEltYWdlSW5mbyAqLERyYXdJ
bmZvICopOwojIDg3ICIuLi9tYWdpY2svYXBpLmgiIDIKIyAxICIuLi9tYWdpY2svZ2VtLmgiIDEK
IyAxNCAiLi4vbWFnaWNrL2dlbS5oIgpleHRlcm4gZG91YmxlCiAgRXhwYW5kQWZmaW5lKGNvbnN0
IEFmZmluZU1hdHJpeCAqKSwKICBQZXJtdXRhdGUoY29uc3QgbG9uZyxjb25zdCBsb25nKTsKCmV4
dGVybiBpbnQKICBHZXRPcHRpbWFsS2VybmVsV2lkdGgoY29uc3QgZG91YmxlLGNvbnN0IGRvdWJs
ZSksCiAgR2V0T3B0aW1hbEtlcm5lbFdpZHRoMUQoY29uc3QgZG91YmxlLGNvbnN0IGRvdWJsZSks
CiAgR2V0T3B0aW1hbEtlcm5lbFdpZHRoMkQoY29uc3QgZG91YmxlLGNvbnN0IGRvdWJsZSk7Cgpl
eHRlcm4gUGl4ZWxQYWNrZXQKICBBbHBoYUNvbXBvc2l0ZShjb25zdCBQaXhlbFBhY2tldCAqLGNv
bnN0IGRvdWJsZSxjb25zdCBQaXhlbFBhY2tldCAqLAogICAgY29uc3QgZG91YmxlKSwKICBJbnRl
cnBvbGF0ZUNvbG9yKGNvbnN0IEltYWdlICosY29uc3QgZG91YmxlLGNvbnN0IGRvdWJsZSxFeGNl
cHRpb25JbmZvICopOwoKZXh0ZXJuIFF1YW50dW0KICBHZW5lcmF0ZU5vaXNlKGNvbnN0IFF1YW50
dW0sY29uc3QgTm9pc2VUeXBlKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBDb2xvck1hdGNoKGNv
bnN0IFBpeGVsUGFja2V0ICosY29uc3QgUGl4ZWxQYWNrZXQgKixjb25zdCBkb3VibGUpOwoKZXh0
ZXJuIHZvaWQKICBDb250cmFzdChjb25zdCBpbnQsUXVhbnR1bSAqLFF1YW50dW0gKixRdWFudHVt
ICopLAogIEhTTFRyYW5zZm9ybShjb25zdCBkb3VibGUsY29uc3QgZG91YmxlLGNvbnN0IGRvdWJs
ZSxRdWFudHVtICosUXVhbnR1bSAqLAogICAgUXVhbnR1bSAqKSwKICBIdWxsKGNvbnN0IGxvbmcs
Y29uc3QgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcsUXVhbnR1
bSAqLAogICAgUXVhbnR1bSAqLGNvbnN0IGludCksCiAgSWRlbnRpdHlBZmZpbmUoQWZmaW5lTWF0
cml4ICopLAogIE1vZHVsYXRlKGNvbnN0IGRvdWJsZSxjb25zdCBkb3VibGUsY29uc3QgZG91Ymxl
LFF1YW50dW0gKixRdWFudHVtICosCiAgICBRdWFudHVtICopLAogIFRyYW5zZm9ybUhTTChjb25z
dCBRdWFudHVtLGNvbnN0IFF1YW50dW0sY29uc3QgUXVhbnR1bSxkb3VibGUgKixkb3VibGUgKiwK
ICAgIGRvdWJsZSAqKSwKICBVcHNhbXBsZShjb25zdCB1bnNpZ25lZCBsb25nLGNvbnN0IHVuc2ln
bmVkIGxvbmcsY29uc3QgdW5zaWduZWQgbG9uZywKICAgIHVuc2lnbmVkIGNoYXIgKik7CiMgODgg
Ii4uL21hZ2ljay9hcGkuaCIgMgojIDEgIi4uL21hZ2ljay9xdWFudGl6ZS5oIiAxCiMgMjAgIi4u
L21hZ2ljay9xdWFudGl6ZS5oIgp0eXBlZGVmIHN0cnVjdCBfUXVhbnRpemVJbmZvCnsKICB1bnNp
Z25lZCBsb25nCiAgICBzaWduYXR1cmU7CgogIHVuc2lnbmVkIGxvbmcKICAgIG51bWJlcl9jb2xv
cnM7CgogIHVuc2lnbmVkIGludAogICAgdHJlZV9kZXB0aCwKICAgIGRpdGhlcjsKCiAgQ29sb3Jz
cGFjZVR5cGUKICAgIGNvbG9yc3BhY2U7CgogIHVuc2lnbmVkIGludAogICAgbWVhc3VyZV9lcnJv
cjsKfSBRdWFudGl6ZUluZm87CgoKCgpleHRlcm4gUXVhbnRpemVJbmZvCiAgKkNsb25lUXVhbnRp
emVJbmZvKGNvbnN0IFF1YW50aXplSW5mbyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBNYXBJ
bWFnZShJbWFnZSAqLGNvbnN0IEltYWdlICosY29uc3QgdW5zaWduZWQgaW50KSwKICBNYXBJbWFn
ZXMoSW1hZ2UgKixjb25zdCBJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGludCksCiAgT3JkZXJlZERp
dGhlckltYWdlKEltYWdlICopLAogIFF1YW50aXphdGlvbkVycm9yKEltYWdlICopLAogIFF1YW50
aXplSW1hZ2UoY29uc3QgUXVhbnRpemVJbmZvICosSW1hZ2UgKiksCiAgUXVhbnRpemVJbWFnZXMo
Y29uc3QgUXVhbnRpemVJbmZvICosSW1hZ2UgKiksCiAgU2VnbWVudEltYWdlKEltYWdlICosY29u
c3QgQ29sb3JzcGFjZVR5cGUsY29uc3QgdW5zaWduZWQgaW50LGNvbnN0IGRvdWJsZSwKICAgIGNv
bnN0IGRvdWJsZSk7CgpleHRlcm4gdm9pZAogIENvbXByZXNzQ29sb3JtYXAoSW1hZ2UgKiksCiAg
RGVzdHJveVF1YW50aXplSW5mbyhRdWFudGl6ZUluZm8gKiksCiAgR2V0UXVhbnRpemVJbmZvKFF1
YW50aXplSW5mbyAqKTsKIyA4OSAiLi4vbWFnaWNrL2FwaS5oIiAyCiMgMSAiLi4vbWFnaWNrL2Nv
bXByZXNzLmgiIDEKIyAxMSAiLi4vbWFnaWNrL2NvbXByZXNzLmgiCmV4dGVybiB1bnNpZ25lZCBp
bnQKICBIdWZmbWFuRGVjb2RlSW1hZ2UoSW1hZ2UgKiksCiAgSHVmZm1hbkVuY29kZUltYWdlKGNv
bnN0IEltYWdlSW5mbyAqLEltYWdlICopLAogIExaV0VuY29kZUltYWdlKEltYWdlICosY29uc3Qg
c2l6ZV90LHVuc2lnbmVkIGNoYXIgKiksCiAgUGFja2JpdHNFbmNvZGVJbWFnZShJbWFnZSAqLGNv
bnN0IHNpemVfdCx1bnNpZ25lZCBjaGFyICopOwoKZXh0ZXJuIHZvaWQKICBBc2NpaTg1RW5jb2Rl
KEltYWdlICosY29uc3QgdW5zaWduZWQgbG9uZyksCiAgQXNjaWk4NUZsdXNoKEltYWdlICopLAog
IEFzY2lpODVJbml0aWFsaXplKEltYWdlICopOwojIDkwICIuLi9tYWdpY2svYXBpLmgiIDIKIyAx
ICIuLi9tYWdpY2svYXR0cmlidXRlLmgiIDEKIyAxNCAiLi4vbWFnaWNrL2F0dHJpYnV0ZS5oIgpl
eHRlcm4gY29uc3QgSW1hZ2VBdHRyaWJ1dGUKICAqR2V0SW1hZ2VBdHRyaWJ1dGUoY29uc3QgSW1h
Z2UgKixjb25zdCBjaGFyICopLAogICpHZXRJbWFnZUNsaXBwaW5nUGF0aEF0dHJpYnV0ZShjb25z
dCBJbWFnZSAqKSwKICAqR2V0SW1hZ2VJbmZvQXR0cmlidXRlKGNvbnN0IEltYWdlSW5mbyAqLGNv
bnN0IEltYWdlICosY29uc3QgY2hhciAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBTZXRJbWFn
ZUF0dHJpYnV0ZShJbWFnZSAqLGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwoKZXh0ZXJuIHZv
aWQKICBEZXN0cm95SW1hZ2VBdHRyaWJ1dGVzKEltYWdlICopLAogIFN0b3JlSW1hZ2VBdHRyaWJ1
dGUoSW1hZ2UgKixjaGFyICopOwojIDkxICIuLi9tYWdpY2svYXBpLmgiIDIKIyAxICIuLi9tYWdp
Y2svdXRpbGl0eS5oIiAxCiMgMTUgIi4uL21hZ2ljay91dGlsaXR5LmgiCnR5cGVkZWYgc3RydWN0
IF9Ub2tlbkluZm8KewogIGludAogICAgc3RhdGU7CgogIHVuc2lnbmVkIGludAogICAgZmxhZzsK
CiAgbG9uZwogICAgb2Zmc2V0OwoKICBjaGFyCiAgICBxdW90ZTsKfSBUb2tlbkluZm87CgoKCgpl
eHRlcm4gY2hhcgogICpBbGxvY2F0ZVN0cmluZyhjb25zdCBjaGFyICopLAogICpHZXRFeGVjdXRp
b25QYXRoKGNvbnN0IGNoYXIgKiksCiAgKipMaXN0RmlsZXMoY29uc3QgY2hhciAqLGNvbnN0IGNo
YXIgKixpbnQgKiksCiAgKlBvc3RzY3JpcHRHZW9tZXRyeShjb25zdCBjaGFyICopLAogICpTZXRD
bGllbnROYW1lKGNvbnN0IGNoYXIgKiksCiAgKlNldENsaWVudFBhdGgoY29uc3QgY2hhciAqKSwK
ICAqKlN0cmluZ1RvQXJndihjb25zdCBjaGFyICosaW50ICopLAogICoqU3RyaW5nVG9MaXN0KGNv
bnN0IGNoYXIgKiksCiAgKlRyYW5zbGF0ZVRleHQoY29uc3QgSW1hZ2VJbmZvICosY29uc3QgSW1h
Z2UgKixjb25zdCBjaGFyICopOwoKZXh0ZXJuIGRvdWJsZQogIFN0cmluZ1RvRG91YmxlKGNvbnN0
IGNoYXIgKixjb25zdCBkb3VibGUpOwoKZXh0ZXJuIGludAogIEdldEdlb21ldHJ5KGNvbnN0IGNo
YXIgKixsb25nICosbG9uZyAqLHVuc2lnbmVkIGxvbmcgKix1bnNpZ25lZCBsb25nICopLAogIEds
b2JFeHByZXNzaW9uKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopLAogIExvY2FsZU5Db21wYXJl
KGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICosc2l6ZV90KSwKICBMb2NhbGVDb21wYXJlKGNvbnN0
IGNoYXIgKixjb25zdCBjaGFyICopLAogIFBhcnNlR2VvbWV0cnkoY29uc3QgY2hhciAqLGxvbmcg
Kixsb25nICosdW5zaWduZWQgbG9uZyAqLHVuc2lnbmVkIGxvbmcgKiksCiAgU3lzdGVtQ29tbWFu
ZChjb25zdCB1bnNpZ25lZCBpbnQsY29uc3QgY2hhciAqKSwKICBUb2tlbml6ZXIoVG9rZW5JbmZv
ICosdW5zaWduZWQsY2hhciAqLHNpemVfdCxjaGFyICosY2hhciAqLGNoYXIgKixjaGFyICosCiAg
ICBjaGFyLGNoYXIgKixpbnQgKixjaGFyICopOwoKZXh0ZXJuIHVuc2lnbmVkIGludAogIENsb25l
U3RyaW5nKGNoYXIgKiosY29uc3QgY2hhciAqKSwKICBDb25jYXRlbmF0ZVN0cmluZyhjaGFyICoq
LGNvbnN0IGNoYXIgKiksCiAgRXhwYW5kRmlsZW5hbWVzKGludCAqLGNoYXIgKioqKSwKICBJc0Fj
Y2Vzc2libGUoY29uc3QgY2hhciAqKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nCiAgTXVsdGlsaW5l
Q2Vuc3VzKGNvbnN0IGNoYXIgKik7CgpleHRlcm4gdm9pZAogICpBY3F1aXJlTWVtb3J5KGNvbnN0
IHNpemVfdCksCiAgQXBwZW5kSW1hZ2VGb3JtYXQoY29uc3QgY2hhciAqLGNoYXIgKiksCiAgRXhw
YW5kRmlsZW5hbWUoY2hhciAqKSwKICBHZXRQYXRoQ29tcG9uZW50KGNvbnN0IGNoYXIgKixQYXRo
VHlwZSxjaGFyICopLAogIEdldFRva2VuKGNvbnN0IGNoYXIgKixjaGFyICoqLGNoYXIgKiksCiAg
Rm9ybWF0U3RyaW5nKGNoYXIgKixjb25zdCBjaGFyICosLi4uKSwKICBMaWJlcmF0ZU1lbW9yeSh2
b2lkICoqKSwKICBMb2NhbGVMb3dlcihjaGFyICopLAogIExvY2FsZVVwcGVyKGNoYXIgKiksCiAg
UmVhY3F1aXJlTWVtb3J5KHZvaWQgKiosY29uc3Qgc2l6ZV90KSwKICBTdHJpcChjaGFyICopLAog
IFRlbXBvcmFyeUZpbGVuYW1lKGNoYXIgKik7CiMgOTIgIi4uL21hZ2ljay9hcGkuaCIgMgojIDEg
Ii4uL21hZ2ljay9ibG9iLmgiIDEKIyAxNSAiLi4vbWFnaWNrL2Jsb2IuaCIKZXh0ZXJuIEJsb2JJ
bmZvCiAgKkNsb25lQmxvYkluZm8oY29uc3QgQmxvYkluZm8gKik7CgpleHRlcm4gY2hhcgogICpS
ZWFkQmxvYlN0cmluZyhJbWFnZSAqLGNoYXIgKik7CgpleHRlcm4gSW1hZ2UKICAqQmxvYlRvSW1h
Z2UoY29uc3QgSW1hZ2VJbmZvICosY29uc3Qgdm9pZCAqLGNvbnN0IHNpemVfdCxFeGNlcHRpb25J
bmZvICopLAogICpQaW5nQmxvYihjb25zdCBJbWFnZUluZm8gKixjb25zdCB2b2lkICosY29uc3Qg
c2l6ZV90LEV4Y2VwdGlvbkluZm8gKik7CgpleHRlcm4gaW50CiAgRU9GQmxvYihjb25zdCBJbWFn
ZSAqKSwKICBSZWFkQmxvYkJ5dGUoSW1hZ2UgKiksCiAgU3luY0Jsb2IoSW1hZ2UgKik7CgpleHRl
cm4gb2ZmX3QKICBTZWVrQmxvYihJbWFnZSAqLGNvbnN0IG9mZl90LGNvbnN0IGludCksCiAgU2l6
ZUJsb2IoY29uc3QgSW1hZ2UgKmltYWdlKSwKICBUZWxsQmxvYihjb25zdCBJbWFnZSAqaW1hZ2Up
OwoKZXh0ZXJuIHNpemVfdAogIFJlYWRCbG9iKEltYWdlICosY29uc3Qgc2l6ZV90LHZvaWQgKiks
CiAgUmVhZEJsb2JCbG9jayhJbWFnZSAqLHVuc2lnbmVkIGNoYXIgKiksCiAgV3JpdGVCbG9iKElt
YWdlICosY29uc3Qgc2l6ZV90LGNvbnN0IHZvaWQgKiksCiAgV3JpdGVCbG9iQnl0ZShJbWFnZSAq
LGNvbnN0IGxvbmcpLAogIFdyaXRlQmxvYkxTQkxvbmcoSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBs
b25nKSwKICBXcml0ZUJsb2JMU0JTaG9ydChJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGxvbmcpLAog
IFdyaXRlQmxvYk1TQkxvbmcoSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBsb25nKSwKICBXcml0ZUJs
b2JNU0JTaG9ydChJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGxvbmcpLAogIFdyaXRlQmxvYlN0cmlu
ZyhJbWFnZSAqLGNvbnN0IGNoYXIgKik7CgpleHRlcm4gdW5zaWduZWQgaW50CiAgT3BlbkJsb2Io
Y29uc3QgSW1hZ2VJbmZvICosSW1hZ2UgKixjb25zdCBjaGFyICosRXhjZXB0aW9uSW5mbyAqKSwK
ICBVbm1hcEJsb2Iodm9pZCAqLGNvbnN0IHNpemVfdCk7CgpleHRlcm4gdW5zaWduZWQgbG9uZwog
IFJlYWRCbG9iTFNCTG9uZyhJbWFnZSAqKSwKICBSZWFkQmxvYk1TQkxvbmcoSW1hZ2UgKik7Cgpl
eHRlcm4gdW5zaWduZWQgc2hvcnQKICBSZWFkQmxvYkxTQlNob3J0KEltYWdlICopLAogIFJlYWRC
bG9iTVNCU2hvcnQoSW1hZ2UgKik7CgpleHRlcm4gdm9pZAogIEF0dGFjaEJsb2IoQmxvYkluZm8g
Kixjb25zdCB2b2lkICosY29uc3Qgc2l6ZV90KSwKICBDbG9zZUJsb2IoSW1hZ2UgKiksCiAgRGVz
dHJveUJsb2JJbmZvKEJsb2JJbmZvICopLAogIERldGFjaEJsb2IoQmxvYkluZm8gKiksCiAgKkZp
bGVUb0Jsb2IoY29uc3QgY2hhciAqLHNpemVfdCAqLEV4Y2VwdGlvbkluZm8gKiksCiAgR2V0Qmxv
YkluZm8oQmxvYkluZm8gKiksCiAgKkltYWdlVG9CbG9iKGNvbnN0IEltYWdlSW5mbyAqLEltYWdl
ICosc2l6ZV90ICosRXhjZXB0aW9uSW5mbyAqKSwKICAqTWFwQmxvYihpbnQsY29uc3QgTWFwTW9k
ZSxzaXplX3QgKiksCiAgTVNCT3JkZXJMb25nKGNoYXIgKixjb25zdCBzaXplX3QpLAogIE1TQk9y
ZGVyU2hvcnQoY2hhciAqLGNvbnN0IHNpemVfdCk7CiMgOTMgIi4uL21hZ2ljay9hcGkuaCIgMgoj
IDEgIi4uL21hZ2ljay9jYWNoZS5oIiAxCiMgMTUgIi4uL21hZ2ljay9jYWNoZS5oIgp0eXBlZGVm
IEluZGV4UGFja2V0CiAgKigqR2V0SW5kZXhlc0Zyb21IYW5kbGVyKShjb25zdCBJbWFnZSAqKTsK
CnR5cGVkZWYgc3RydWN0IF9OZXh1c0luZm8KewogIGxvbmcKICAgIHgsCiAgICB5OwoKICBvZmZf
dAogICAgbGVuZ3RoOwoKICBQaXhlbFBhY2tldAogICAgKnN0YWdpbmcsCiAgICAqcGl4ZWxzOwoK
ICBJbmRleFBhY2tldAogICAgKmluZGV4ZXM7CgogIHVuc2lnbmVkIGxvbmcKICAgIGNvbHVtbnMs
CiAgICByb3dzOwoKICB1bnNpZ25lZCBpbnQKICAgIGF2YWlsYWJsZTsKfSBOZXh1c0luZm87Cgp0
eXBlZGVmIHN0cnVjdCBfQ2FjaGVJbmZvCnsKICB1bnNpZ25lZCBsb25nCiAgICBzaWduYXR1cmU7
CgogIFNlbWFwaG9yZUluZm8KICAgICpzZW1hcGhvcmU7CgogIGxvbmcKICAgIHJlZmVyZW5jZV9j
b3VudDsKCiAgTmV4dXNJbmZvCiAgICAqbmV4dXNfaW5mbzsKCiAgQ2xhc3NUeXBlCiAgICBjbGFz
czsKCiAgQ29sb3JzcGFjZVR5cGUKICAgIGNvbG9yc3BhY2U7CgogIENhY2hlVHlwZQogICAgdHlw
ZTsKCiAgdW5zaWduZWQgaW50CiAgICBwZXJzaXN0OwoKICB1bnNpZ25lZCBsb25nCiAgICBjb2x1
bW5zLAogICAgcm93czsKCiAgb2ZmX3QKICAgIGxlbmd0aDsKCiAgUGl4ZWxQYWNrZXQKICAgICpw
aXhlbHM7CgogIEluZGV4UGFja2V0CiAgICAqaW5kZXhlczsKCiAgY2hhcgogICAgY2FjaGVfZmls
ZW5hbWVbMjA1M10sCiAgICBtZXRhX2ZpbGVuYW1lWzIwNTNdOwp9IENhY2hlSW5mbzsKCnR5cGVk
ZWYgY29uc3QgUGl4ZWxQYWNrZXQKICAqKCpBY3F1aXJlUGl4ZWxIYW5kbGVyKShjb25zdCBJbWFn
ZSAqLGNvbnN0IGxvbmcsY29uc3QgbG9uZywKICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcsY29uc3Qg
dW5zaWduZWQgbG9uZyxFeGNlcHRpb25JbmZvICopOwoKdHlwZWRlZiBQaXhlbFBhY2tldAogICgq
QWNxdWlyZU9uZVBpeGVsRnJvbUhhbmRsZXIpKGNvbnN0IEltYWdlICosY29uc3QgbG9uZyxjb25z
dCBsb25nLAogICAgRXhjZXB0aW9uSW5mbyAqKTsKCnR5cGVkZWYgUGl4ZWxQYWNrZXQKICAoKkdl
dE9uZVBpeGVsRnJvbUhhbmRsZXIpKEltYWdlICosY29uc3QgbG9uZyxjb25zdCBsb25nKTsKCnR5
cGVkZWYgUGl4ZWxQYWNrZXQKICAqKCpHZXRQaXhlbEhhbmRsZXIpKEltYWdlICosY29uc3QgbG9u
Zyxjb25zdCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcsCiAgICBjb25zdCB1bnNpZ25lZCBsb25n
KTsKCnR5cGVkZWYgUGl4ZWxQYWNrZXQKICAqKCpHZXRQaXhlbHNGcm9tSGFuZGxlcikoY29uc3Qg
SW1hZ2UgKik7Cgp0eXBlZGVmIFBpeGVsUGFja2V0CiAgKigqU2V0UGl4ZWxIYW5kbGVyKShJbWFn
ZSAqLGNvbnN0IGxvbmcsY29uc3QgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLAogICAgY29uc3Qg
dW5zaWduZWQgbG9uZyk7Cgp0eXBlZGVmIHVuc2lnbmVkIGludAogICgqU3luY1BpeGVsSGFuZGxl
cikoSW1hZ2UgKik7Cgp0eXBlZGVmIHZvaWQKICAqQ2FjaGUsCiAgKCpEZXN0cm95UGl4ZWxIYW5k
bGVyKShJbWFnZSAqKTsKCgoKCmV4dGVybiBDYWNoZQogIFJlZmVyZW5jZUNhY2hlKENhY2hlKTsK
CmV4dGVybiBDbGFzc1R5cGUKICBHZXRDYWNoZUNsYXNzKGNvbnN0IENhY2hlKTsKCmV4dGVybiBD
b2xvcnNwYWNlVHlwZQogIEdldENhY2hlQ29sb3JzcGFjZShjb25zdCBDYWNoZSk7CgpleHRlcm4g
Y29uc3QgUGl4ZWxQYWNrZXQKICAqQWNxdWlyZUNhY2hlTmV4dXMoY29uc3QgSW1hZ2UgKixjb25z
dCBsb25nLGNvbnN0IGxvbmcsY29uc3QgdW5zaWduZWQgbG9uZywKICAgIGNvbnN0IHVuc2lnbmVk
IGxvbmcsY29uc3QgdW5zaWduZWQgbG9uZyxFeGNlcHRpb25JbmZvICopOwoKZXh0ZXJuIEluZGV4
UGFja2V0CiAgKkdldE5leHVzSW5kZXhlcyhjb25zdCBDYWNoZSxjb25zdCB1bnNpZ25lZCBsb25n
KTsKCmV4dGVybiBQaXhlbFBhY2tldAogICpHZXRDYWNoZU5leHVzKEltYWdlICosY29uc3QgbG9u
Zyxjb25zdCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcsCiAgICBjb25zdCB1bnNpZ25lZCBsb25n
LGNvbnN0IHVuc2lnbmVkIGxvbmcpLAogICpHZXROZXh1c1BpeGVscyhjb25zdCBDYWNoZSxjb25z
dCB1bnNpZ25lZCBsb25nKSwKICAqU2V0Q2FjaGVOZXh1cyhJbWFnZSAqLGNvbnN0IGxvbmcsY29u
c3QgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLAogICAgY29uc3QgdW5zaWduZWQgbG9uZyxjb25z
dCB1bnNpZ25lZCBsb25nKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBPcGVuQ2FjaGUoSW1hZ2Ug
KiksCiAgU3luY0NhY2hlTmV4dXMoSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBsb25nKTsKCmV4dGVy
biB1bnNpZ25lZCBsb25nCiAgR2V0TmV4dXMoQ2FjaGUpOwoKZXh0ZXJuIHZvaWQKICBBbGxvY2F0
ZUNhY2hlTmV4dXMoQ2FjaGVJbmZvICopLAogIERlc3Ryb3lDYWNoZSh2b2lkKSwKICBEZXN0cm95
Q2FjaGVOZXh1cyhDYWNoZSxjb25zdCB1bnNpZ25lZCBsb25nKSwKICBHZXRDYWNoZUluZm8oQ2Fj
aGUgKiksCiAgUmVzZXRQaXhlbENhY2hlTWV0aG9kcyh2b2lkKSwKICBTZXRDYWNoZVRocmVzaG9s
ZChjb25zdCBvZmZfdCksCiAgU2V0UGl4ZWxDYWNoZU1ldGhvZHMoQWNxdWlyZVBpeGVsSGFuZGxl
cixHZXRQaXhlbEhhbmRsZXIsU2V0UGl4ZWxIYW5kbGVyLAogICAgU3luY1BpeGVsSGFuZGxlcixH
ZXRQaXhlbHNGcm9tSGFuZGxlcixHZXRJbmRleGVzRnJvbUhhbmRsZXIsCiAgICBBY3F1aXJlT25l
UGl4ZWxGcm9tSGFuZGxlcixHZXRPbmVQaXhlbEZyb21IYW5kbGVyLERlc3Ryb3lQaXhlbEhhbmRs
ZXIpOwojIDk0ICIuLi9tYWdpY2svYXBpLmgiIDIKIyAxICIuLi9tYWdpY2svY2FjaGVfdmlldy5o
IiAxCiMgMTQgIi4uL21hZ2ljay9jYWNoZV92aWV3LmgiCnR5cGVkZWYgc3RydWN0IF9WaWV3SW5m
bwp7CiAgdW5zaWduZWQgbG9uZwogICAgc2lnbmF0dXJlOwoKICBJbWFnZQogICAgKmltYWdlOwoK
ICB1bnNpZ25lZCBsb25nCiAgICBpZDsKfSBWaWV3SW5mbzsKCgoKCmV4dGVybiBjb25zdCBQaXhl
bFBhY2tldAogICpBY3F1aXJlQ2FjaGVWaWV3KGNvbnN0IFZpZXdJbmZvICosY29uc3QgbG9uZyxj
b25zdCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcsCiAgICBjb25zdCB1bnNpZ25lZCBsb25nLEV4
Y2VwdGlvbkluZm8gKik7CgpleHRlcm4gSW5kZXhQYWNrZXQKICAqR2V0Q2FjaGVWaWV3SW5kZXhl
cyhjb25zdCBWaWV3SW5mbyAqKTsKCmV4dGVybiBQaXhlbFBhY2tldAogICpHZXRDYWNoZVZpZXdQ
aXhlbHMoY29uc3QgVmlld0luZm8gKiksCiAgKkdldENhY2hlVmlldyhWaWV3SW5mbyAqLGNvbnN0
IGxvbmcsY29uc3QgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLAogICAgY29uc3QgdW5zaWduZWQg
bG9uZyksCiAgKlNldENhY2hlVmlldyhWaWV3SW5mbyAqLGNvbnN0IGxvbmcsY29uc3QgbG9uZyxj
b25zdCB1bnNpZ25lZCBsb25nLAogICAgY29uc3QgdW5zaWduZWQgbG9uZyk7CgpleHRlcm4gdW5z
aWduZWQgaW50CiAgU3luY0NhY2hlVmlldyhWaWV3SW5mbyAqKTsKCmV4dGVybiBWaWV3SW5mbwog
ICpPcGVuQ2FjaGVWaWV3KEltYWdlICopOwoKZXh0ZXJuIHZvaWQKICBDbG9zZUNhY2hlVmlldyhW
aWV3SW5mbyAqKTsKIyA5NSAiLi4vbWFnaWNrL2FwaS5oIiAyCiMgMSAiLi4vbWFnaWNrL3JlZ2lz
dHJ5LmgiIDEKIyAxNCAiLi4vbWFnaWNrL3JlZ2lzdHJ5LmgiCnR5cGVkZWYgc3RydWN0IF9SZWdp
c3RyeUluZm8KewogIHN0cnVjdCBfUmVnaXN0cnlJbmZvCiAgICAqcHJldmlvdXMsCiAgICAqbmV4
dDsKCiAgbG9uZwogICAgaWQ7CgogIFJlZ2lzdHJ5VHlwZQogICAgdHlwZTsKCiAgdm9pZAogICAg
KmJsb2I7CgogIHNpemVfdAogICAgbGVuZ3RoOwp9IFJlZ2lzdHJ5SW5mbzsKCgoKCmV4dGVybiBj
b25zdCB2b2lkCiAgKkdldE1hZ2lja1JlZ2lzdHJ5KGNvbnN0IGxvbmcsUmVnaXN0cnlUeXBlICos
c2l6ZV90ICopOwoKZXh0ZXJuIGxvbmcKICBTZXRNYWdpY2tSZWdpc3RyeShjb25zdCBSZWdpc3Ry
eVR5cGUsY29uc3Qgdm9pZCAqLGNvbnN0IHNpemVfdCwKICAgIEV4Y2VwdGlvbkluZm8gKik7Cgpl
eHRlcm4gdW5zaWduZWQgaW50CiAgRGVsZXRlTWFnaWNrUmVnaXN0cnkoY29uc3QgbG9uZyk7Cgpl
eHRlcm4gdm9pZAogIERlc3Ryb3lNYWdpY2tSZWdpc3RyeSh2b2lkKTsKIyA5NiAiLi4vbWFnaWNr
L2FwaS5oIiAyCiMgMSAiLi4vbWFnaWNrL21hZ2ljLmgiIDEKIyAxNCAiLi4vbWFnaWNrL21hZ2lj
LmgiCnR5cGVkZWYgc3RydWN0IF9NYWdpY0luZm8KewogIGNoYXIKICAgICpmaWxlbmFtZSwKICAg
ICpuYW1lLAogICAgKnRhcmdldDsKCiAgdW5zaWduZWQgY2hhcgogICAgKm1hZ2ljOwoKICB1bnNp
Z25lZCBsb25nCiAgICBsZW5ndGgsCiAgICBvZmZzZXQ7CgogIHN0cnVjdCBfTWFnaWNJbmZvCiAg
ICAqcHJldmlvdXMsCiAgICAqbmV4dDsKfSBNYWdpY0luZm87CgoKCgpleHRlcm4gY29uc3QgTWFn
aWNJbmZvCiAgKkdldE1hZ2ljSW5mbyhjb25zdCB1bnNpZ25lZCBjaGFyICosY29uc3Qgc2l6ZV90
LEV4Y2VwdGlvbkluZm8gKik7CgpleHRlcm4gdW5zaWduZWQgaW50CiAgTGlzdE1hZ2ljSW5mbyhG
SUxFICosRXhjZXB0aW9uSW5mbyAqKTsKCmV4dGVybiB2b2lkCiAgRGVzdHJveU1hZ2ljSW5mbyh2
b2lkKTsKIyA5NyAiLi4vbWFnaWNrL2FwaS5oIiAyCiMgMSAiLi4vbWFnaWNrL2RlbGVnYXRlLmgi
IDEKIyAxNCAiLi4vbWFnaWNrL2RlbGVnYXRlLmgiCnR5cGVkZWYgc3RydWN0IF9EZWxlZ2F0ZUlu
Zm8KewogIHN0cnVjdCBfRGVsZWdhdGVJbmZvCiAgICAqcHJldmlvdXMsCiAgICAqbmV4dDsKCiAg
Y2hhcgogICAgKmZpbGVuYW1lLAogICAgKmRlY29kZSwKICAgICplbmNvZGUsCiAgICAqY29tbWFu
ZHM7CgogIGludAogICAgbW9kZTsKCiAgdW5zaWduZWQgaW50CiAgICBzdGVhbHRoLAogICAgc3Bh
d247Cn0gRGVsZWdhdGVJbmZvOwoKCgoKZXh0ZXJuIGNoYXIKICAqR2V0RGVsZWdhdGVDb21tYW5k
KGNvbnN0IEltYWdlSW5mbyAqLGNvbnN0IEltYWdlICosY29uc3QgY2hhciAqLGNvbnN0IGNoYXIg
KiwKICAgIEV4Y2VwdGlvbkluZm8gKik7CgpleHRlcm4gY29uc3QgRGVsZWdhdGVJbmZvCiAgKkdl
dERlbGVnYXRlSW5mbyhjb25zdCBjaGFyICosY29uc3QgY2hhciAqLEV4Y2VwdGlvbkluZm8gKmV4
Y2VwdGlvbik7CgpleHRlcm4gRGVsZWdhdGVJbmZvCiAgKlNldERlbGVnYXRlSW5mbyhEZWxlZ2F0
ZUluZm8gKik7CgpleHRlcm4gdW5zaWduZWQgaW50CiAgSW52b2tlRGVsZWdhdGUoSW1hZ2VJbmZv
ICosSW1hZ2UgKixjb25zdCBjaGFyICosY29uc3QgY2hhciAqLEV4Y2VwdGlvbkluZm8gKiksCiAg
TGlzdERlbGVnYXRlSW5mbyhGSUxFICosRXhjZXB0aW9uSW5mbyAqKTsKCmV4dGVybiB2b2lkCiAg
RGVzdHJveURlbGVnYXRlSW5mbyh2b2lkKTsKIyA5OCAiLi4vbWFnaWNrL2FwaS5oIiAyCiMgMSAi
Li4vbWFnaWNrL21vZHVsZS5oIiAxCiMgMTEgIi4uL21hZ2ljay9tb2R1bGUuaCIKdHlwZWRlZiBz
dHJ1Y3QgX01vZHVsZUFsaWFzCnsKICBjaGFyCiAgICAqZmlsZW5hbWUsCiAgICAqbmFtZSwKICAg
ICphbGlhczsKCiAgc3RydWN0IF9Nb2R1bGVBbGlhcwogICAgKnByZXZpb3VzLAogICAgKm5leHQ7
Cn0gTW9kdWxlQWxpYXM7Cgp0eXBlZGVmIHN0cnVjdCBfTW9kdWxlSW5mbwp7CiAgdW5zaWduZWQg
bG9uZwogICAgc2lnbmF0dXJlOwoKICBzdHJ1Y3QgX01vZHVsZUluZm8KICAgICpwcmV2aW91cywK
ICAgICpuZXh0OwoKICBjaGFyCiAgICAqdGFnOwoKICB2b2lkCiAgICAqaGFuZGxlOwoKICB0aW1l
X3QKICAgIGxvYWRfdGltZTsKfSBNb2R1bGVJbmZvOwoKCgoKZXh0ZXJuIGNvbnN0IE1vZHVsZUFs
aWFzCiAgKkdldE1vZHVsZUFsaWFzKGNvbnN0IGNoYXIgKixFeGNlcHRpb25JbmZvICopOwoKZXh0
ZXJuIGNvbnN0IE1vZHVsZUluZm8KICAqR2V0TW9kdWxlSW5mbyhjb25zdCBjaGFyICosRXhjZXB0
aW9uSW5mbyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBFeGVjdXRlTW9kdWxlUHJvY2Vzcyhj
b25zdCBjaGFyICosSW1hZ2UgKixjb25zdCBpbnQsY2hhciAqKiksCiAgTGlzdE1vZHVsZUFsaWFz
ZXMoRklMRSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgT3Blbk1vZHVsZShjb25zdCBjaGFyICosRXhj
ZXB0aW9uSW5mbyAqKSwKICBPcGVuTW9kdWxlcyhFeGNlcHRpb25JbmZvICopOwoKZXh0ZXJuIHZv
aWQKICBEZXN0cm95TW9kdWxlSW5mbyh2b2lkKTsKCmV4dGVybiB2b2lkCiAgT3BlblN0YXRpY01v
ZHVsZXModm9pZCk7CiMgOTkgIi4uL21hZ2ljay9hcGkuaCIgMgojIDEgIi4uL21hZ2ljay90aW1l
ci5oIiAxCiMgMTQgIi4uL21hZ2ljay90aW1lci5oIgpleHRlcm4gZG91YmxlCiAgR2V0RWxhcHNl
ZFRpbWUoVGltZXJJbmZvICopLAogIEdldFVzZXJUaW1lKFRpbWVySW5mbyAqKTsKCmV4dGVybiB1
bnNpZ25lZCBpbnQKICBDb250aW51ZVRpbWVyKFRpbWVySW5mbyAqKTsKCmV4dGVybiB2b2lkCiAg
R2V0VGltZXJJbmZvKFRpbWVySW5mbyAqKSwKICBSZXNldFRpbWVyKFRpbWVySW5mbyAqKTsKIyAx
MDAgIi4uL21hZ2ljay9hcGkuaCIgMgojIDEgIi4uL21hZ2ljay9zZW1hcGhvcmUuaCIgMQojIDE0
ICIuLi9tYWdpY2svc2VtYXBob3JlLmgiCmV4dGVybiBTZW1hcGhvcmVJbmZvCiAgKkFsbG9jYXRl
U2VtYXBob3JlSW5mbyh2b2lkKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBMb2NrU2VtYXBob3Jl
SW5mbyhTZW1hcGhvcmVJbmZvICopLAogIFVubG9ja1NlbWFwaG9yZUluZm8oU2VtYXBob3JlSW5m
byAqKTsKCmV4dGVybiB2b2lkCiAgQWNxdWlyZVNlbWFwaG9yZUluZm8oU2VtYXBob3JlSW5mbyAq
KiksCiAgRGVzdHJveVNlbWFwaG9yZSh2b2lkKSwKICBEZXN0cm95U2VtYXBob3JlSW5mbyhTZW1h
cGhvcmVJbmZvICopLAogIEluaXRpYWxpemVTZW1hcGhvcmUodm9pZCksCiAgTGliZXJhdGVTZW1h
cGhvcmVJbmZvKFNlbWFwaG9yZUluZm8gKiopOwojIDEwMSAiLi4vbWFnaWNrL2FwaS5oIiAyCiMg
MSAiLi4vbWFnaWNrL21vbml0b3IuaCIgMQojIDE0ICIuLi9tYWdpY2svbW9uaXRvci5oIgp0eXBl
ZGVmIHZvaWQKICAoKk1vbml0b3JIYW5kbGVyKShjb25zdCBjaGFyICosY29uc3Qgb2ZmX3QsY29u
c3Qgb2ZmX3QpOwoKCgoKZXh0ZXJuIE1vbml0b3JIYW5kbGVyCiAgU2V0TW9uaXRvckhhbmRsZXIo
TW9uaXRvckhhbmRsZXIpOwoKZXh0ZXJuIHZvaWQKICBNYWdpY2tNb25pdG9yKGNvbnN0IGNoYXIg
Kixjb25zdCBvZmZfdCxjb25zdCBvZmZfdCk7CiMgMTAyICIuLi9tYWdpY2svYXBpLmgiIDIKIyAx
ICIuLi9tYWdpY2svZXJyb3IuaCIgMQojIDUwICIuLi9tYWdpY2svZXJyb3IuaCIKdHlwZWRlZiB2
b2lkCiAgKCpFcnJvckhhbmRsZXIpKGNvbnN0IEV4Y2VwdGlvblR5cGUsY29uc3QgY2hhciAqLGNv
bnN0IGNoYXIgKik7Cgp0eXBlZGVmIHZvaWQKICAoKldhcm5pbmdIYW5kbGVyKShjb25zdCBFeGNl
cHRpb25UeXBlLGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwoKCgoKZXh0ZXJuIEVycm9ySGFu
ZGxlcgogIFNldEVycm9ySGFuZGxlcihFcnJvckhhbmRsZXIpOwoKZXh0ZXJuIHZvaWQKICBDYXRj
aEltYWdlRXhjZXB0aW9uKEltYWdlICopLAogIERlc3Ryb3lFeGNlcHRpb25JbmZvKEV4Y2VwdGlv
bkluZm8gKiksCiAgR2V0SW1hZ2VFeGNlcHRpb24oSW1hZ2UgKixFeGNlcHRpb25JbmZvICopLAog
IEdldEV4Y2VwdGlvbkluZm8oRXhjZXB0aW9uSW5mbyAqKSwKICBNYWdpY2tFcnJvcihjb25zdCBF
eGNlcHRpb25UeXBlLGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopLAogIE1hZ2lja1dhcm5pbmco
Y29uc3QgRXhjZXB0aW9uVHlwZSxjb25zdCBjaGFyICosY29uc3QgY2hhciAqKSwKICBUaHJvd0V4
Y2VwdGlvbihFeGNlcHRpb25JbmZvICosY29uc3QgRXhjZXB0aW9uVHlwZSxjb25zdCBjaGFyICos
Y29uc3QgY2hhciAqKTsKCmV4dGVybiBXYXJuaW5nSGFuZGxlcgogIFNldFdhcm5pbmdIYW5kbGVy
KFdhcm5pbmdIYW5kbGVyKTsKIyAxMDMgIi4uL21hZ2ljay9hcGkuaCIgMgojIDEgIi4uL21hZ2lj
ay92ZXJzaW9uLmgiIDEKIyAxMDQgIi4uL21hZ2ljay9hcGkuaCIgMgojIDc1ICIuLi9tYWdpY2sv
bWFnaWNrLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDEgMwojIDc3ICIuLi9t
YWdpY2svbWFnaWNrLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVzLmgiIDEgMwojIDEx
ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVzLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKXRpbWVzLmgJ
MS4xMAk5Ny8wOC8xMiBTTUkiCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3Vu
LXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMTQgIi91c3IvaW5j
bHVkZS9zeXMvdGltZXMuaCIgMiAzCiMgMjIgIi91c3IvaW5jbHVkZS9zeXMvdGltZXMuaCIgMwpz
dHJ1Y3QgdG1zIHsKICAgICAgICBjbG9ja190IHRtc191dGltZTsKICAgICAgICBjbG9ja190IHRt
c19zdGltZTsKICAgICAgICBjbG9ja190IHRtc19jdXRpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNf
Y3N0aW1lOwp9OwojIDQ0ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVzLmgiIDMKY2xvY2tfdCB0aW1l
cyhzdHJ1Y3QgdG1zICopOwojIDc4ICIuLi9tYWdpY2svbWFnaWNrLmgiIDIKIyAxMDAgIi4uL21h
Z2ljay9tYWdpY2suaCIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL21tYW4uaCIgMSAzCiMgMzQgIi91
c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyltbWFuLmgJMS4zOAk5
OS8wNS8xOSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMK
IyAzNyAiL3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDIgMwojIDEwNiAiL3Vzci9pbmNsdWRlL3N5
cy9tbWFuLmgiIDMKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDEwNyAiL3Vzci9pbmNsdWRlL3N5
cy9tbWFuLmgiIDIgMwojIDEzNyAiL3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDMKZXh0ZXJuIHZv
aWQgKm1tYXA2NCh2b2lkICosIHNpemVfdCwgaW50LCBpbnQsIGludCwgb2ZmX3QpOwpleHRlcm4g
aW50IG11bm1hcCh2b2lkICosIHNpemVfdCk7CmV4dGVybiBpbnQgbXByb3RlY3Qodm9pZCAqLCBz
aXplX3QsIGludCk7CmV4dGVybiBpbnQgbXN5bmModm9pZCAqLCBzaXplX3QsIGludCk7CgpleHRl
cm4gaW50IG1sb2NrKGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIGludCBtdW5sb2NrKGNv
bnN0IHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIGludCBzaG1fb3Blbihjb25zdCBjaGFyICosIGlu
dCwgbW9kZV90KTsKZXh0ZXJuIGludCBzaG1fdW5saW5rKGNvbnN0IGNoYXIgKik7CiMgMTY5ICIv
dXNyL2luY2x1ZGUvc3lzL21tYW4uaCIgMwpleHRlcm4gaW50IG1sb2NrYWxsKGludCk7CmV4dGVy
biBpbnQgbXVubG9ja2FsbCh2b2lkKTsKIyAxMDEgIi4uL21hZ2ljay9tYWdpY2suaCIgMgoKCiMg
MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNs
dWRlL3B0aHJlYWQuaCIgMSAzCiMgMTggIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3Vu
LXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9wdGhyZWFkLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgj
KXB0aHJlYWQuaAkxLjI4CTk5LzExLzE1IFNNSSIKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1s
aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMg
MjIgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5j
bHVkZS9wdGhyZWFkLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDIzICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUv
cHRocmVhZC5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIgMSAzCiMgMTEgIi91c3Iv
aW5jbHVkZS9zY2hlZC5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylzY2hlZC5oCTEuOQk5OC8wMS8x
NiBTTUkiCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgv
My4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMTQgIi91c3IvaW5jbHVkZS9zY2hlZC5o
IiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAxNSAiL3Vzci9pbmNsdWRlL3Nj
aGVkLmgiIDIgMwoKCgoKCnN0cnVjdCBzY2hlZF9wYXJhbSB7CiAgICAgICAgaW50IHNjaGVkX3By
aW9yaXR5OwogICAgICAgIGludCBzY2hlZF9uaWNlbGltOwogICAgICAgIGludCBzY2hlZF9uaWNl
OwogICAgICAgIGludCBzY2hlZF9wYWRbNl07CgoKCn07CiMgNDQgIi91c3IvaW5jbHVkZS9zY2hl
ZC5oIiAzCmludCBzY2hlZF9nZXRwYXJhbShwaWRfdCBwaWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAq
cGFyYW0pOwppbnQgc2NoZWRfc2V0cGFyYW0ocGlkX3QgcGlkLCBjb25zdCBzdHJ1Y3Qgc2NoZWRf
cGFyYW0gKnBhcmFtKTsKaW50IHNjaGVkX2dldHNjaGVkdWxlcihwaWRfdCBwaWQpOwppbnQgc2No
ZWRfc2V0c2NoZWR1bGVyKHBpZF90IHBpZCwgaW50IHBvbGljeSwKICAgICAgICAgICAgICAgIGNv
bnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pOwppbnQgc2NoZWRfeWllbGQodm9pZCk7Cmlu
dCBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KGludCBwb2xpY3kpOwppbnQgc2NoZWRfZ2V0X3ByaW9y
aXR5X21pbihpbnQgcG9saWN5KTsKaW50IHNjaGVkX3JyX2dldF9pbnRlcnZhbChwaWRfdCBwaWQs
IHN0cnVjdCB0aW1lc3BlYyAqaW50ZXJ2YWwpOwojIDI0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKIyAxMjUg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVk
ZS9wdGhyZWFkLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX2NsZWFudXAgewogICAgICAgIHVpbnRwdHJf
dCBwdGhyZWFkX2NsZWFudXBfcGFkWzRdOwp9IF9jbGVhbnVwX3Q7CgoKCnZvaWQgX19wdGhyZWFk
X2NsZWFudXBfcHVzaCh2b2lkICgqcm91dGluZSkodm9pZCAqKSwgdm9pZCAqYXJncywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGRyX3QgZnAsIF9jbGVhbnVwX3Qg
KmluZm8pOwp2b2lkIF9fcHRocmVhZF9jbGVhbnVwX3BvcChpbnQgZXgsIF9jbGVhbnVwX3QgKmlu
Zm8pOwpjYWRkcl90IF9nZXRmcCh2b2lkKTsKIyAxNTkgIi91c3IvbG9jYWwvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9wdGhyZWFkLmgiIDMKZXh0ZXJuIGlu
dCBwdGhyZWFkX2F0dHJfaW5pdChwdGhyZWFkX2F0dHJfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFk
X2F0dHJfZGVzdHJveShwdGhyZWFkX2F0dHJfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJf
c2V0c3RhY2tzaXplKHB0aHJlYWRfYXR0cl90ICosIHNpemVfdCk7CmV4dGVybiBpbnQgcHRocmVh
ZF9hdHRyX2dldHN0YWNrc2l6ZShjb25zdCBwdGhyZWFkX2F0dHJfdCAqLCBzaXplX3QgKik7CmV4
dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHN0YWNrYWRkcihwdGhyZWFkX2F0dHJfdCAqLCB2b2lk
ICopOwpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzdGFja2FkZHIoY29uc3QgcHRocmVhZF9h
dHRyX3QgKiwgdm9pZCAqKik7CmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRl
KHB0aHJlYWRfYXR0cl90ICosIGludCk7CmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldGRldGFj
aHN0YXRlKGNvbnN0IHB0aHJlYWRfYXR0cl90ICosIGludCAqKTsKZXh0ZXJuIGludCBwdGhyZWFk
X2F0dHJfc2V0c2NvcGUocHRocmVhZF9hdHRyX3QgKiwgaW50KTsKZXh0ZXJuIGludCBwdGhyZWFk
X2F0dHJfZ2V0c2NvcGUoY29uc3QgcHRocmVhZF9hdHRyX3QgKiwgaW50ICopOwpleHRlcm4gaW50
IHB0aHJlYWRfYXR0cl9zZXRpbmhlcml0c2NoZWQocHRocmVhZF9hdHRyX3QgKiwgaW50KTsKZXh0
ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0aW5oZXJpdHNjaGVkKGNvbnN0IHB0aHJlYWRfYXR0cl90
ICosIGludCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2NoZWRwb2xpY3kocHRocmVh
ZF9hdHRyX3QgKiwgaW50KTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c2NoZWRwb2xpY3ko
Y29uc3QgcHRocmVhZF9hdHRyX3QgKiwgaW50ICopOwpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9z
ZXRzY2hlZHBhcmFtKHB0aHJlYWRfYXR0cl90ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKik7CmV4dGVybiBpbnQgcHRo
cmVhZF9hdHRyX2dldHNjaGVkcGFyYW0oY29uc3QgcHRocmVhZF9hdHRyX3QgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsKZXh0
ZXJuIGludCBwdGhyZWFkX2NyZWF0ZShwdGhyZWFkX3QgKiwgY29uc3QgcHRocmVhZF9hdHRyX3Qg
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICogKCopKHZvaWQgKiksIHZv
aWQgKik7CmV4dGVybiBpbnQgcHRocmVhZF9vbmNlKHB0aHJlYWRfb25jZV90ICosIHZvaWQgKCop
KHZvaWQpKTsKZXh0ZXJuIGludCBwdGhyZWFkX2pvaW4ocHRocmVhZF90LCB2b2lkICoqKTsKZXh0
ZXJuIGludCBwdGhyZWFkX2RldGFjaChwdGhyZWFkX3QpOwpleHRlcm4gdm9pZCBwdGhyZWFkX2V4
aXQodm9pZCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2NhbmNlbChwdGhyZWFkX3QpOwpleHRlcm4g
aW50IHB0aHJlYWRfc2V0c2NoZWRwYXJhbShwdGhyZWFkX3QsIGludCwgY29uc3Qgc3RydWN0IHNj
aGVkX3BhcmFtICopOwpleHRlcm4gaW50IHB0aHJlYWRfZ2V0c2NoZWRwYXJhbShwdGhyZWFkX3Qs
IGludCAqLCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKik7CmV4dGVybiBpbnQgcHRocmVhZF9zZXRjYW5j
ZWxzdGF0ZShpbnQsIGludCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX3NldGNhbmNlbHR5cGUoaW50
LCBpbnQgKik7CmV4dGVybiB2b2lkIHB0aHJlYWRfdGVzdGNhbmNlbCh2b2lkKTsKZXh0ZXJuIGlu
dCBwdGhyZWFkX2VxdWFsKHB0aHJlYWRfdCwgcHRocmVhZF90KTsKZXh0ZXJuIGludCBwdGhyZWFk
X2tleV9jcmVhdGUocHRocmVhZF9rZXlfdCAqLCB2b2lkICgqKSh2b2lkICopKTsKZXh0ZXJuIGlu
dCBwdGhyZWFkX2tleV9kZWxldGUocHRocmVhZF9rZXlfdCk7CmV4dGVybiBpbnQgcHRocmVhZF9z
ZXRzcGVjaWZpYyhwdGhyZWFkX2tleV90LCBjb25zdCB2b2lkICopOwpleHRlcm4gdm9pZCAqcHRo
cmVhZF9nZXRzcGVjaWZpYyhwdGhyZWFkX2tleV90KTsKZXh0ZXJuIHB0aHJlYWRfdCBwdGhyZWFk
X3NlbGYodm9pZCk7CgoKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQocHRocmVh
ZF9tdXRleGF0dHJfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95KHB0
aHJlYWRfbXV0ZXhhdHRyX3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0cHNo
YXJlZChwdGhyZWFkX211dGV4YXR0cl90ICosIGludCk7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRl
eGF0dHJfZ2V0cHNoYXJlZChjb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICosIGludCAqKTsKZXh0
ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9zZXRwcm90b2NvbChwdGhyZWFkX211dGV4YXR0cl90
ICosIGludCk7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfZ2V0cHJvdG9jb2woY29uc3Qg
cHRocmVhZF9tdXRleGF0dHJfdCAqLCBpbnQgKik7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0
dHJfc2V0cHJpb2NlaWxpbmcocHRocmVhZF9tdXRleGF0dHJfdCAqLCBpbnQpOwpleHRlcm4gaW50
IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHByaW9jZWlsaW5nKGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRy
X3QgKiwgaW50ICopOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHJvYnVzdF9ucChw
dGhyZWFkX211dGV4YXR0cl90ICosIGludCk7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJf
Z2V0cm9idXN0X25wKGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKiwgaW50ICopOwpleHRlcm4g
aW50IHB0aHJlYWRfbXV0ZXhfaW5pdChwdGhyZWFkX211dGV4X3QgKiwgY29uc3QgcHRocmVhZF9t
dXRleGF0dHJfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X2NvbnNpc3RlbnRfbnAocHRo
cmVhZF9tdXRleF90ICopOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfZGVzdHJveShwdGhyZWFk
X211dGV4X3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9sb2NrKHB0aHJlYWRfbXV0ZXhf
dCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X3VubG9jayhwdGhyZWFkX211dGV4X3QgKik7
CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF90cnlsb2NrKHB0aHJlYWRfbXV0ZXhfdCAqKTsKZXh0
ZXJuIGludCBwdGhyZWFkX211dGV4X3NldHByaW9jZWlsaW5nKHB0aHJlYWRfbXV0ZXhfdCAqLCBp
bnQsIGludCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X2dldHByaW9jZWlsaW5nKGNvbnN0
IHB0aHJlYWRfbXV0ZXhfdCAqLCBpbnQgKik7CmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9p
bml0KHB0aHJlYWRfY29uZGF0dHJfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2Rl
c3Ryb3kocHRocmVhZF9jb25kYXR0cl90ICopOwpleHRlcm4gaW50IHB0aHJlYWRfY29uZGF0dHJf
c2V0cHNoYXJlZChwdGhyZWFkX2NvbmRhdHRyX3QgKiwgaW50KTsKZXh0ZXJuIGludCBwdGhyZWFk
X2NvbmRhdHRyX2dldHBzaGFyZWQoY29uc3QgcHRocmVhZF9jb25kYXR0cl90ICosIGludCAqKTsK
ZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfaW5pdChwdGhyZWFkX2NvbmRfdCAqLCBjb25zdCBwdGhy
ZWFkX2NvbmRhdHRyX3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Rlc3Ryb3kocHRocmVh
ZF9jb25kX3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Jyb2FkY2FzdChwdGhyZWFkX2Nv
bmRfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfc2lnbmFsKHB0aHJlYWRfY29uZF90ICop
OwpleHRlcm4gaW50IHB0aHJlYWRfY29uZF93YWl0KHB0aHJlYWRfY29uZF90ICosIHB0aHJlYWRf
bXV0ZXhfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfdGltZWR3YWl0KHB0aHJlYWRfY29u
ZF90ICosIHB0aHJlYWRfbXV0ZXhfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICopOwpleHRlcm4gaW50IHB0aHJlYWRfYXR0
cl9nZXRndWFyZHNpemUoY29uc3QgcHRocmVhZF9hdHRyX3QgKiwgc2l6ZV90ICopOwpleHRlcm4g
aW50IHB0aHJlYWRfYXR0cl9zZXRndWFyZHNpemUocHRocmVhZF9hdHRyX3QgKiwgc2l6ZV90KTsK
ZXh0ZXJuIGludCBwdGhyZWFkX2dldGNvbmN1cnJlbmN5KHZvaWQpOwpleHRlcm4gaW50IHB0aHJl
YWRfc2V0Y29uY3VycmVuY3koaW50IG5ld3ZhbCk7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0
dHJfc2V0dHlwZShwdGhyZWFkX211dGV4YXR0cl90ICosIGludCk7CmV4dGVybiBpbnQgcHRocmVh
ZF9tdXRleGF0dHJfZ2V0dHlwZShjb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICosIGludCAqKTsK
ZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja19pbml0KHB0aHJlYWRfcndsb2NrX3QgKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqKTsK
ZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja19kZXN0cm95KHB0aHJlYWRfcndsb2NrX3QgKik7CmV4
dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfcmRsb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmV4dGVy
biBpbnQgcHRocmVhZF9yd2xvY2tfdHJ5cmRsb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmV4dGVy
biBpbnQgcHRocmVhZF9yd2xvY2tfd3Jsb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmV4dGVybiBp
bnQgcHRocmVhZF9yd2xvY2tfdHJ5d3Jsb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmV4dGVybiBp
bnQgcHRocmVhZF9yd2xvY2tfdW5sb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmV4dGVybiBpbnQg
cHRocmVhZF9yd2xvY2thdHRyX2luaXQocHRocmVhZF9yd2xvY2thdHRyX3QgKik7CmV4dGVybiBp
bnQgcHRocmVhZF9yd2xvY2thdHRyX2Rlc3Ryb3kocHRocmVhZF9yd2xvY2thdHRyX3QgKik7CmV4
dGVybiBpbnQgcHRocmVhZF9yd2xvY2thdHRyX2dldHBzaGFyZWQoY29uc3QgcHRocmVhZF9yd2xv
Y2thdHRyX3QgKiwgaW50ICopOwpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9zZXRwc2hh
cmVkKHB0aHJlYWRfcndsb2NrYXR0cl90ICosIGludCk7CiMgMTA0ICIuLi9tYWdpY2svbWFnaWNr
LmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvcG9sbC5oIiAxIDMKIyAxNiAiL3Vzci9pbmNs
dWRlL3N5cy9wb2xsLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKXBvbGwuaAkxLjI4CTk4LzExLzIz
IFNNSSIKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9wb2xsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgcG9s
bGZkIHsKICAgICAgICBpbnQgZmQ7CiAgICAgICAgc2hvcnQgZXZlbnRzOwogICAgICAgIHNob3J0
IHJldmVudHM7Cn0gcG9sbGZkX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbmZkc190OwojIDEy
NCAiL3Vzci9pbmNsdWRlL3N5cy9wb2xsLmgiIDMKaW50IHBvbGwoc3RydWN0IHBvbGxmZCAqLCBu
ZmRzX3QsIGludCk7CiMgMTA3ICIuLi9tYWdpY2svbWFnaWNrLmgiIDIKIyA1NiAiZml0cy5jIiAy
CiMgMSAiLi4vbWFnaWNrL2RlZmluZS5oIiAxCiMgNTcgImZpdHMuYyIgMgoKCgoKc3RhdGljIHVu
c2lnbmVkIGludAogIFdyaXRlRklUU0ltYWdlKGNvbnN0IEltYWdlSW5mbyAqLEltYWdlICopOwoj
IDkzICJmaXRzLmMiCnN0YXRpYyB1bnNpZ25lZCBpbnQgSXNGSVRTKGNvbnN0IHVuc2lnbmVkIGNo
YXIgKm1hZ2ljayxjb25zdCBzaXplX3QgbGVuZ3RoKQp7CiAgaWYgKGxlbmd0aCA8IDYpCiAgICBy
ZXR1cm4oMCk7CiAgaWYgKExvY2FsZU5Db21wYXJlKChjaGFyICopIG1hZ2ljaywiSVQwIiwzKSA9
PSAwKQogICAgcmV0dXJuKDEpOwogIGlmIChMb2NhbGVOQ29tcGFyZSgoY2hhciAqKSBtYWdpY2ss
IlNJTVBMRSIsNikgPT0gMCkKICAgIHJldHVybigxKTsKICByZXR1cm4oMCk7Cn0KIyAxMzYgImZp
dHMuYyIKc3RhdGljIEltYWdlICpSZWFkRklUU0ltYWdlKGNvbnN0IEltYWdlSW5mbyAqaW1hZ2Vf
aW5mbywKICBFeGNlcHRpb25JbmZvICpleGNlcHRpb24pCnsKICB0eXBlZGVmIHN0cnVjdCBfRklU
U0luZm8KICB7CiAgICBpbnQKICAgICAgc2ltcGxlLAogICAgICBiaXRzX3Blcl9waXhlbCwKICAg
ICAgY29sdW1ucywKICAgICAgcm93cywKICAgICAgbnVtYmVyX2F4ZXMsCiAgICAgIG51bWJlcl9z
Y2VuZXM7CgogICAgZG91YmxlCiAgICAgIG1pbl9kYXRhLAogICAgICBtYXhfZGF0YSwKICAgICAg
emVybywKICAgICAgc2NhbGU7CiAgfSBGSVRTSW5mbzsKCiAgY2hhcgogICAgbG9uZ19xdWFudHVt
WzhdLAogICAga2V5d29yZFsyMDUzXSwKICAgIHZhbHVlWzIwNTNdOwoKICBkb3VibGUKICAgIHBp
eGVsLAogICAgc2NhbGUsCiAgICBzY2FsZWRfcGl4ZWw7CgogIEZJVFNJbmZvCiAgICBmaXRzX2lu
Zm87CgogIEltYWdlCiAgICAqaW1hZ2U7CgogIEluZGV4UGFja2V0CiAgICBpbmRleDsKCiAgaW50
CiAgICBjLAogICAgaiwKICAgIHBhY2tldF9zaXplOwoKICBsb25nCiAgICBxdWFudHVtLAogICAg
c2NlbmUsCiAgICB5OwoKICByZWdpc3RlciBJbmRleFBhY2tldAogICAgKmluZGV4ZXM7CgogIHJl
Z2lzdGVyIGxvbmcKICAgIHg7CgogIHJlZ2lzdGVyIFBpeGVsUGFja2V0CiAgICAqcTsKCiAgcmVn
aXN0ZXIgbG9uZwogICAgaTsKCiAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhcgogICAgKnA7CgogIHNp
emVfdAogICAgY291bnQ7CgogIHVuc2lnbmVkIGNoYXIKICAgICpmaXRzX3BpeGVsczsKCiAgdW5z
aWduZWQgaW50CiAgICBzdGF0dXMsCiAgICB2YWx1ZV9leHBlY3RlZDsKCiAgdW5zaWduZWQgbG9u
ZwogICAgbnVtYmVyX3BpeGVsczsKCgoKCiAgKHZvaWQpKChpbWFnZV9pbmZvICE9IChjb25zdCBJ
bWFnZUluZm8gKikgMCkgfHwgKF9fYXNzZXJ0KCJpbWFnZV9pbmZvICE9IChjb25zdCBJbWFnZUlu
Zm8gKikgTlVMTCIsICJmaXRzLmMiLCAyMTYpLCAwKSk7CiAgKHZvaWQpKChpbWFnZV9pbmZvLT5z
aWduYXR1cmUgPT0gMHhhYmFjYWRhYikgfHwgKF9fYXNzZXJ0KCJpbWFnZV9pbmZvLT5zaWduYXR1
cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiwgImZpdHMuYyIsIDIxNyksIDApKTsKICAodm9pZCkoKGV4
Y2VwdGlvbiAhPSAoRXhjZXB0aW9uSW5mbyAqKSAwKSB8fCAoX19hc3NlcnQoImV4Y2VwdGlvbiAh
PSAoRXhjZXB0aW9uSW5mbyAqKSBOVUxMIiwgImZpdHMuYyIsIDIxOCksIDApKTsKICAodm9pZCko
KGV4Y2VwdGlvbi0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWIpIHx8IChfX2Fzc2VydCgiZXhjZXB0
aW9uLT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiwgImZpdHMuYyIsIDIxOSksIDApKTsK
ICBpbWFnZT1BbGxvY2F0ZUltYWdlKGltYWdlX2luZm8pOwogIHN0YXR1cz1PcGVuQmxvYihpbWFn
ZV9pbmZvLGltYWdlLFJlYWRCaW5hcnlUeXBlLGV4Y2VwdGlvbik7CiAgaWYgKHN0YXR1cyA9PSAw
KQogICAgeyBpZiAoKGltYWdlKSA9PSAoSW1hZ2UgKikgMCkgVGhyb3dFeGNlcHRpb24oZXhjZXB0
aW9uLEZpbGVPcGVuV2FybmluZywiVW5hYmxlIHRvIG9wZW4gZmlsZSIsKGNoYXIgKikgMCk7IGVs
c2UgeyBUaHJvd0V4Y2VwdGlvbihleGNlcHRpb24sRmlsZU9wZW5XYXJuaW5nLCJVbmFibGUgdG8g
b3BlbiBmaWxlIiwoaW1hZ2UpLT5maWxlbmFtZSk7IERlc3Ryb3lJbWFnZXMoaW1hZ2UpOyB9IHJl
dHVybigoSW1hZ2UgKikgMCk7IH07CgoKCiAgZml0c19pbmZvLnNpbXBsZT0wOwogIGZpdHNfaW5m
by5iaXRzX3Blcl9waXhlbD04OwogIGZpdHNfaW5mby5jb2x1bW5zPTE7CiAgZml0c19pbmZvLnJv
d3M9MTsKICBmaXRzX2luZm8ubnVtYmVyX3NjZW5lcz0xOwogIGZpdHNfaW5mby5taW5fZGF0YT0w
LjA7CiAgZml0c19pbmZvLm1heF9kYXRhPTAuMDsKICBmaXRzX2luZm8uemVybz0wLjA7CiAgZml0
c19pbmZvLnNjYWxlPTEuMDsKCgoKICBjPVJlYWRCbG9iQnl0ZShpbWFnZSk7CiAgY291bnQ9MTsK
ICBpZiAoYyA9PSAoLTEpKQogICAgewogICAgICBEZXN0cm95SW1hZ2UoaW1hZ2UpOwogICAgICBy
ZXR1cm4oKEltYWdlICopIDApOwogICAgfQogIGZvciAoIDsgOyApCiAgewogICAgaWYgKCEoX19j
dHlwZV9tYXNrWyhpbnQpIGNdICYgKDB4MDAwMDQwMDAgfCAweDAwMDAwMDA0KSkpCiAgICAgIHsK
ICAgICAgICBjPVJlYWRCbG9iQnl0ZShpbWFnZSk7CiAgICAgICAgY291bnQrKzsKICAgICAgfQog
ICAgZWxzZQogICAgICB7CiAgICAgICAgcmVnaXN0ZXIgY2hhcgogICAgICAgICAgKnA7CgoKCgog
ICAgICAgIHA9a2V5d29yZDsKICAgICAgICBkbwogICAgICAgIHsKICAgICAgICAgIGlmICgocC1r
ZXl3b3JkKSA8ICgyMDUzIC0xKSkKICAgICAgICAgICAgKnArKz1jOwogICAgICAgICAgYz1SZWFk
QmxvYkJ5dGUoaW1hZ2UpOwogICAgICAgICAgY291bnQrKzsKICAgICAgICB9IHdoaWxlICgoX19j
dHlwZV9tYXNrW2NdICYgKDB4MDAwMDQwMDAgfCAweDAwMDAwMDA0KSkgfHwgKGMgPT0gJ18nKSk7
CiAgICAgICAgKnA9J1wwJzsKICAgICAgICBpZiAoTG9jYWxlQ29tcGFyZShrZXl3b3JkLCJFTkQi
KSA9PSAwKQogICAgICAgICAgYnJlYWs7CiAgICAgICAgdmFsdWVfZXhwZWN0ZWQ9MDsKICAgICAg
ICB3aGlsZSAoKF9fY3R5cGVfbWFza1tjXSAmIDB4MDAwMDAwMDgpIHx8IChjID09ICc9JykpCiAg
ICAgICAgewogICAgICAgICAgaWYgKGMgPT0gJz0nKQogICAgICAgICAgICB2YWx1ZV9leHBlY3Rl
ZD0xOwogICAgICAgICAgYz1SZWFkQmxvYkJ5dGUoaW1hZ2UpOwogICAgICAgICAgY291bnQrKzsK
ICAgICAgICB9CiAgICAgICAgaWYgKHZhbHVlX2V4cGVjdGVkID09IDApCiAgICAgICAgICBjb250
aW51ZTsKICAgICAgICBwPXZhbHVlOwogICAgICAgIHdoaWxlICgoX19jdHlwZV9tYXNrW2NdICYg
KDB4MDAwMDQwMDAgfCAweDAwMDAwMDA0KSkgfHwgKGMgPT0gJy0nKSB8fCAoYyA9PSAnKycpIHx8
IChjID09ICcuJykpCiAgICAgICAgewogICAgICAgICAgaWYgKChwLXZhbHVlKSA8ICgyMDUzIC0x
KSkKICAgICAgICAgICAgKnArKz1jOwogICAgICAgICAgYz1SZWFkQmxvYkJ5dGUoaW1hZ2UpOwog
ICAgICAgICAgY291bnQrKzsKICAgICAgICB9CiAgICAgICAgKnA9J1wwJzsKCgoKICAgICAgICBp
ZiAoTG9jYWxlQ29tcGFyZShrZXl3b3JkLCJTSU1QTEUiKSA9PSAwKQogICAgICAgICAgZml0c19p
bmZvLnNpbXBsZT0oKnZhbHVlID09ICdUJykgfHwgKCp2YWx1ZSA9PSAndCcpOwogICAgICAgIGlm
IChMb2NhbGVDb21wYXJlKGtleXdvcmQsIkJJVFBJWCIpID09IDApCiAgICAgICAgICBmaXRzX2lu
Zm8uYml0c19wZXJfcGl4ZWw9YXRvaSh2YWx1ZSk7CiAgICAgICAgaWYgKExvY2FsZUNvbXBhcmUo
a2V5d29yZCwiTkFYSVMiKSA9PSAwKQogICAgICAgICAgZml0c19pbmZvLm51bWJlcl9heGVzPWF0
b2kodmFsdWUpOwogICAgICAgIGlmIChMb2NhbGVDb21wYXJlKGtleXdvcmQsIk5BWElTMSIpID09
IDApCiAgICAgICAgICBmaXRzX2luZm8uY29sdW1ucz0gYXRvaSh2YWx1ZSk7CiAgICAgICAgaWYg
KExvY2FsZUNvbXBhcmUoa2V5d29yZCwiTkFYSVMyIikgPT0gMCkKICAgICAgICAgIGZpdHNfaW5m
by5yb3dzPSBhdG9pKHZhbHVlKTsKICAgICAgICBpZiAoTG9jYWxlQ29tcGFyZShrZXl3b3JkLCJO
QVhJUzMiKSA9PSAwKQogICAgICAgICAgZml0c19pbmZvLm51bWJlcl9zY2VuZXM9YXRvaSh2YWx1
ZSk7CiAgICAgICAgaWYgKExvY2FsZUNvbXBhcmUoa2V5d29yZCwiREFUQU1BWCIpID09IDApCiAg
ICAgICAgICBmaXRzX2luZm8ubWF4X2RhdGE9YXRvZih2YWx1ZSk7CiAgICAgICAgaWYgKExvY2Fs
ZUNvbXBhcmUoa2V5d29yZCwiREFUQU1JTiIpID09IDApCiAgICAgICAgICBmaXRzX2luZm8ubWlu
X2RhdGE9YXRvZih2YWx1ZSk7CiAgICAgICAgaWYgKExvY2FsZUNvbXBhcmUoa2V5d29yZCwiQlpF
Uk8iKSA9PSAwKQogICAgICAgICAgZml0c19pbmZvLnplcm89YXRvZih2YWx1ZSk7CiAgICAgICAg
aWYgKExvY2FsZUNvbXBhcmUoa2V5d29yZCwiQlNDQUxFIikgPT0gMCkKICAgICAgICAgIGZpdHNf
aW5mby5zY2FsZT1hdG9mKHZhbHVlKTsKICAgICAgfQogICAgd2hpbGUgKChfX2N0eXBlX21hc2tb
Y10gJiAweDAwMDAwMDA4KSkKICAgIHsKICAgICAgYz1SZWFkQmxvYkJ5dGUoaW1hZ2UpOwogICAg
ICBjb3VudCsrOwogICAgfQogIH0KICB3aGlsZSAoY291bnQgPiAyODgwKQogICAgY291bnQtPTI4
ODA7CiAgZm9yICggOyBjb3VudCA8IDI4ODA7IGNvdW50KyspCiAgICAodm9pZCkgUmVhZEJsb2JC
eXRlKGltYWdlKTsKCgoKICBudW1iZXJfcGl4ZWxzPWZpdHNfaW5mby5jb2x1bW5zKmZpdHNfaW5m
by5yb3dzOwogIGlmICgoIWZpdHNfaW5mby5zaW1wbGUpIHx8IChmaXRzX2luZm8ubnVtYmVyX2F4
ZXMgPCAxKSB8fAogICAgICAoZml0c19pbmZvLm51bWJlcl9heGVzID4gNCkgfHwgKG51bWJlcl9w
aXhlbHMgPT0gMCkpCiAgICB7IGlmICgoaW1hZ2UpID09IChJbWFnZSAqKSAwKSBUaHJvd0V4Y2Vw
dGlvbihleGNlcHRpb24sQ29ycnVwdEltYWdlV2FybmluZywiaW1hZ2UgdHlwZSBub3Qgc3VwcG9y
dGVkIiwoY2hhciAqKSAwKTsgZWxzZSB7IFRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbixDb3JydXB0
SW1hZ2VXYXJuaW5nLCJpbWFnZSB0eXBlIG5vdCBzdXBwb3J0ZWQiLChpbWFnZSktPmZpbGVuYW1l
KTsgRGVzdHJveUltYWdlcyhpbWFnZSk7IH0gcmV0dXJuKChJbWFnZSAqKSAwKTsgfTsKICBmb3Ig
KHNjZW5lPTA7IHNjZW5lIDwgKGxvbmcpIGZpdHNfaW5mby5udW1iZXJfc2NlbmVzOyBzY2VuZSsr
KQogIHsKCgoKICAgIGltYWdlLT5jb2x1bW5zPWZpdHNfaW5mby5jb2x1bW5zOwogICAgaW1hZ2Ut
PnJvd3M9Zml0c19pbmZvLnJvd3M7CiAgICBpbWFnZS0+ZGVwdGg9Zml0c19pbmZvLmJpdHNfcGVy
X3BpeGVsIDw9IDggPyA4IDogMTY7CiAgICBpbWFnZS0+Y2xhc3M9UHNldWRvQ2xhc3M7CiAgICBp
bWFnZS0+c2NlbmU9c2NlbmU7CiAgICBpZiAoIUFsbG9jYXRlSW1hZ2VDb2xvcm1hcChpbWFnZSwx
IDw8IGltYWdlLT5kZXB0aCkpCiAgICAgIHsgaWYgKChpbWFnZSkgPT0gKEltYWdlICopIDApIFRo
cm93RXhjZXB0aW9uKGV4Y2VwdGlvbixGaWxlT3Blbldhcm5pbmcsIlVuYWJsZSB0byBvcGVuIGZp
bGUiLChjaGFyICopIDApOyBlbHNlIHsgVGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uLEZpbGVPcGVu
V2FybmluZywiVW5hYmxlIHRvIG9wZW4gZmlsZSIsKGltYWdlKS0+ZmlsZW5hbWUpOyBEZXN0cm95
SW1hZ2VzKGltYWdlKTsgfSByZXR1cm4oKEltYWdlICopIDApOyB9OwogICAgaWYgKGltYWdlX2lu
Zm8tPnBpbmcgJiYgKGltYWdlX2luZm8tPnN1YnJhbmdlICE9IDApKQogICAgICBpZiAoaW1hZ2Ut
PnNjZW5lID49IChpbWFnZV9pbmZvLT5zdWJpbWFnZStpbWFnZV9pbmZvLT5zdWJyYW5nZS0xKSkK
ICAgICAgICBicmVhazsKCgoKICAgIHBhY2tldF9zaXplPWZpdHNfaW5mby5iaXRzX3Blcl9waXhl
bC84OwogICAgaWYgKHBhY2tldF9zaXplIDwgMCkKICAgICAgcGFja2V0X3NpemU9KC1wYWNrZXRf
c2l6ZSk7CiAgICBudW1iZXJfcGl4ZWxzPWltYWdlLT5jb2x1bW5zKmltYWdlLT5yb3dzOwogICAg
Zml0c19waXhlbHM9KHVuc2lnbmVkIGNoYXIgKikgQWNxdWlyZU1lbW9yeShwYWNrZXRfc2l6ZSpu
dW1iZXJfcGl4ZWxzKTsKICAgIGlmIChmaXRzX3BpeGVscyA9PSAodW5zaWduZWQgY2hhciAqKSAw
KQogICAgICB7IGlmICgoaW1hZ2UpID09IChJbWFnZSAqKSAwKSBUaHJvd0V4Y2VwdGlvbihleGNl
cHRpb24sUmVzb3VyY2VMaW1pdFdhcm5pbmcsIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCIsKGNo
YXIgKikgMCk7IGVsc2UgeyBUaHJvd0V4Y2VwdGlvbihleGNlcHRpb24sUmVzb3VyY2VMaW1pdFdh
cm5pbmcsIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCIsKGltYWdlKS0+ZmlsZW5hbWUpOyBEZXN0
cm95SW1hZ2VzKGltYWdlKTsgfSByZXR1cm4oKEltYWdlICopIDApOyB9OwoKCgoKICAgIGNvdW50
PVJlYWRCbG9iKGltYWdlLHBhY2tldF9zaXplKm51bWJlcl9waXhlbHMsZml0c19waXhlbHMpOwog
ICAgaWYgKGNvdW50ID09IDApCiAgICAgIHsgaWYgKChpbWFnZSkgPT0gKEltYWdlICopIDApIFRo
cm93RXhjZXB0aW9uKGV4Y2VwdGlvbixDb3JydXB0SW1hZ2VXYXJuaW5nLCJJbnN1ZmZpY2llbnQg
aW1hZ2UgZGF0YSBpbiBmaWxlIiwoY2hhciAqKSAwKTsgZWxzZSB7IFRocm93RXhjZXB0aW9uKGV4
Y2VwdGlvbixDb3JydXB0SW1hZ2VXYXJuaW5nLCJJbnN1ZmZpY2llbnQgaW1hZ2UgZGF0YSBpbiBm
aWxlIiwoaW1hZ2UpLT5maWxlbmFtZSk7IERlc3Ryb3lJbWFnZXMoaW1hZ2UpOyB9IHJldHVybigo
SW1hZ2UgKikgMCk7IH07CgogICAgaWYgKChmaXRzX2luZm8ubWluX2RhdGEgPT0gMC4wKSAmJiAo
Zml0c19pbmZvLm1heF9kYXRhID09IDAuMCkpCiAgICAgIHsKCgoKICAgICAgICBwPWZpdHNfcGl4
ZWxzOwogICAgICAgIGxvbmdfcXVhbnR1bVswXT0oKnApOwogICAgICAgIHF1YW50dW09KCpwKysp
OwogICAgICAgIGZvciAoaj0wOyBqIDwgKHBhY2tldF9zaXplLTEpOyBqKyspCiAgICAgICAgewog
ICAgICAgICAgbG9uZ19xdWFudHVtW2orMV09KCpwKTsKICAgICAgICAgIHF1YW50dW09KHF1YW50
dW0gPDwgOCkgfCAoKnArKyk7CiAgICAgICAgfQogICAgICAgIHBpeGVsPShkb3VibGUpIHF1YW50
dW07CiAgICAgICAgaWYgKGZpdHNfaW5mby5iaXRzX3Blcl9waXhlbCA9PSAxNikKICAgICAgICAg
IGlmIChwaXhlbCA+IDMyNzY3KQogICAgICAgICAgICBwaXhlbC09NjU1MzY7CiAgICAgICAgaWYg
KGZpdHNfaW5mby5iaXRzX3Blcl9waXhlbCA9PSAtMzIpCiAgICAgICAgICBwaXhlbD0oZG91Ymxl
KSAoKigoZmxvYXQgKikgJnF1YW50dW0pKTsKICAgICAgICBpZiAoZml0c19pbmZvLmJpdHNfcGVy
X3BpeGVsID09IC02NCkKICAgICAgICAgIHBpeGVsPShkb3VibGUpICgqKChkb3VibGUgKikgbG9u
Z19xdWFudHVtKSk7CiAgICAgICAgZml0c19pbmZvLm1pbl9kYXRhPXBpeGVsKmZpdHNfaW5mby5z
Y2FsZS1maXRzX2luZm8uemVybzsKICAgICAgICBmaXRzX2luZm8ubWF4X2RhdGE9cGl4ZWwqZml0
c19pbmZvLnNjYWxlLWZpdHNfaW5mby56ZXJvOwogICAgICAgIGZvciAoaT0xOyBpIDwgKGxvbmcp
IG51bWJlcl9waXhlbHM7IGkrKykKICAgICAgICB7CiAgICAgICAgICBsb25nX3F1YW50dW1bMF09
KCpwKTsKICAgICAgICAgIHF1YW50dW09KCpwKyspOwogICAgICAgICAgZm9yIChqPTA7IGogPCAo
cGFja2V0X3NpemUtMSk7IGorKykKICAgICAgICAgIHsKICAgICAgICAgICAgbG9uZ19xdWFudHVt
W2orMV09KCpwKTsKICAgICAgICAgICAgcXVhbnR1bT0ocXVhbnR1bSA8PCA4KSB8ICgqcCsrKTsK
ICAgICAgICAgIH0KICAgICAgICAgIHBpeGVsPShkb3VibGUpIHF1YW50dW07CiAgICAgICAgICBp
ZiAoZml0c19pbmZvLmJpdHNfcGVyX3BpeGVsID09IDE2KQogICAgICAgICAgICBpZiAocGl4ZWwg
PiAzMjc2NykKICAgICAgICAgICAgICBwaXhlbC09NjU1MzY7CiAgICAgICAgICBpZiAoZml0c19p
bmZvLmJpdHNfcGVyX3BpeGVsID09IC0zMikKICAgICAgICAgICAgcGl4ZWw9KGRvdWJsZSkgKCoo
KGZsb2F0ICopICZxdWFudHVtKSk7CiAgICAgICAgICBpZiAoZml0c19pbmZvLmJpdHNfcGVyX3Bp
eGVsID09IC02NCkKICAgICAgICAgICAgcGl4ZWw9KGRvdWJsZSkgKCooKGRvdWJsZSAqKSBsb25n
X3F1YW50dW0pKTsKICAgICAgICAgIHNjYWxlZF9waXhlbD1waXhlbCpmaXRzX2luZm8uc2NhbGUt
Zml0c19pbmZvLnplcm87CiAgICAgICAgICBpZiAoc2NhbGVkX3BpeGVsIDwgZml0c19pbmZvLm1p
bl9kYXRhKQogICAgICAgICAgICBmaXRzX2luZm8ubWluX2RhdGE9c2NhbGVkX3BpeGVsOwogICAg
ICAgICAgaWYgKHNjYWxlZF9waXhlbCA+IGZpdHNfaW5mby5tYXhfZGF0YSkKICAgICAgICAgICAg
Zml0c19pbmZvLm1heF9kYXRhPXNjYWxlZF9waXhlbDsKICAgICAgICB9CiAgICAgIH0KCgoKICAg
IHNjYWxlPTEuMDsKICAgIGlmICgoKGZpdHNfaW5mby5tYXhfZGF0YS1maXRzX2luZm8ubWluX2Rh
dGEpIDw9IDEuMCkgfHwKICAgICAgICAoKGZpdHNfaW5mby5tYXhfZGF0YS1maXRzX2luZm8ubWlu
X2RhdGEpID4gKCgxIDw8IGltYWdlLT5kZXB0aCktMSkpKQogICAgICBzY2FsZT0oKDEgPDwgaW1h
Z2UtPmRlcHRoKS0xKS8oZml0c19pbmZvLm1heF9kYXRhLWZpdHNfaW5mby5taW5fZGF0YSk7CiAg
ICBwPWZpdHNfcGl4ZWxzOwogICAgZm9yICh5PShsb25nKSBpbWFnZS0+cm93cy0xOyB5ID49IDA7
IHktLSkKICAgIHsKICAgICAgcT1TZXRJbWFnZVBpeGVscyhpbWFnZSwwLHksaW1hZ2UtPmNvbHVt
bnMsMSk7CiAgICAgIGlmIChxID09IChQaXhlbFBhY2tldCAqKSAwKQogICAgICAgIGJyZWFrOwog
ICAgICBpbmRleGVzPUdldEluZGV4ZXMoaW1hZ2UpOwogICAgICBmb3IgKHg9MDsgeCA8IChsb25n
KSBpbWFnZS0+Y29sdW1uczsgeCsrKQogICAgICB7CiAgICAgICAgbG9uZ19xdWFudHVtWzBdPSgq
cCk7CiAgICAgICAgcXVhbnR1bT0oKnArKyk7CiAgICAgICAgZm9yIChqPTA7IGogPCAocGFja2V0
X3NpemUtMSk7IGorKykKICAgICAgICB7CiAgICAgICAgICBsb25nX3F1YW50dW1baisxXT0oKnAp
OwogICAgICAgICAgcXVhbnR1bT0ocXVhbnR1bSA8PCA4KSB8ICgqcCsrKTsKICAgICAgICB9CiAg
ICAgICAgcGl4ZWw9KGRvdWJsZSkgcXVhbnR1bTsKICAgICAgICBpZiAoZml0c19pbmZvLmJpdHNf
cGVyX3BpeGVsID09IDE2KQogICAgICAgICAgaWYgKHBpeGVsID4gMzI3NjcpCiAgICAgICAgICAg
IHBpeGVsLT02NTUzNjsKICAgICAgICBpZiAoZml0c19pbmZvLmJpdHNfcGVyX3BpeGVsID09IC0z
MikKICAgICAgICAgIHBpeGVsPShkb3VibGUpICgqKChmbG9hdCAqKSAmcXVhbnR1bSkpOwogICAg
ICAgIGlmIChmaXRzX2luZm8uYml0c19wZXJfcGl4ZWwgPT0gLTY0KQogICAgICAgICAgcGl4ZWw9
KGRvdWJsZSkgKCooKGRvdWJsZSAqKSBsb25nX3F1YW50dW0pKTsKICAgICAgICBzY2FsZWRfcGl4
ZWw9c2NhbGUqCiAgICAgICAgICAocGl4ZWwqZml0c19pbmZvLnNjYWxlLWZpdHNfaW5mby5taW5f
ZGF0YS1maXRzX2luZm8uemVybyk7CiAgICAgICAgaW5kZXg9KEluZGV4UGFja2V0KSAoKHNjYWxl
ZF9waXhlbCA8IDApID8gMCA6CiAgICAgICAgICAoc2NhbGVkX3BpeGVsID4gKCgxIDw8IGltYWdl
LT5kZXB0aCktMSkpID8gKCgxIDw8IGltYWdlLT5kZXB0aCktMSkgOgogICAgICAgICAgc2NhbGVk
X3BpeGVsKzAuNSk7CiAgICAgICAgaW5kZXg9VmFsaWRhdGVDb2xvcm1hcEluZGV4KGltYWdlLGlu
ZGV4KTsKICAgICAgICBpbmRleGVzW3hdPWluZGV4OwogICAgICAgICpxKys9aW1hZ2UtPmNvbG9y
bWFwW2luZGV4XTsKICAgICAgfQogICAgICBpZiAoIVN5bmNJbWFnZVBpeGVscyhpbWFnZSkpCiAg
ICAgICAgYnJlYWs7CiAgICAgIGlmICgoKCh+KChpbWFnZS0+cm93cykteS0xKSAmICgoaW1hZ2Ut
PnJvd3MpLXktMikpKzEpID09ICgoaW1hZ2UtPnJvd3MpLXktMSkpKQogICAgICAgIE1hZ2lja01v
bml0b3IoTG9hZEltYWdlVGV4dCx5LGltYWdlLT5yb3dzKTsKICAgIH0KICAgIExpYmVyYXRlTWVt
b3J5KCh2b2lkICoqKSAmZml0c19waXhlbHMpOwogICAgaWYgKEVPRkJsb2IoaW1hZ2UpKQogICAg
ICB7IGlmICgoaW1hZ2UpID09IChJbWFnZSAqKSAwKSBUaHJvd0V4Y2VwdGlvbihleGNlcHRpb24s
Q29ycnVwdEltYWdlV2FybmluZywiVW5leHBlY3RlZCBlbmQtb2YtZmlsZSIsKGNoYXIgKikgMCk7
IGVsc2UgeyBUaHJvd0V4Y2VwdGlvbihleGNlcHRpb24sQ29ycnVwdEltYWdlV2FybmluZywiVW5l
eHBlY3RlZCBlbmQtb2YtZmlsZSIsKGltYWdlKS0+ZmlsZW5hbWUpOyBEZXN0cm95SW1hZ2VzKGlt
YWdlKTsgfSByZXR1cm4oKEltYWdlICopIDApOyB9OwoKCgogICAgaWYgKGltYWdlX2luZm8tPnN1
YnJhbmdlICE9IDApCiAgICAgIGlmIChpbWFnZS0+c2NlbmUgPj0gKGltYWdlX2luZm8tPnN1Ymlt
YWdlK2ltYWdlX2luZm8tPnN1YnJhbmdlLTEpKQogICAgICAgIGJyZWFrOwogICAgaWYgKHNjZW5l
IDwgKGxvbmcpIChmaXRzX2luZm8ubnVtYmVyX3NjZW5lcy0xKSkKICAgICAgewoKCgogICAgICAg
IEFsbG9jYXRlTmV4dEltYWdlKGltYWdlX2luZm8saW1hZ2UpOwogICAgICAgIGlmIChpbWFnZS0+
bmV4dCA9PSAoSW1hZ2UgKikgMCkKICAgICAgICAgIHsKICAgICAgICAgICAgRGVzdHJveUltYWdl
cyhpbWFnZSk7CiAgICAgICAgICAgIHJldHVybigoSW1hZ2UgKikgMCk7CiAgICAgICAgICB9CiAg
ICAgICAgaW1hZ2U9aW1hZ2UtPm5leHQ7CiAgICAgICAgTWFnaWNrTW9uaXRvcihMb2FkSW1hZ2Vz
VGV4dCxUZWxsQmxvYihpbWFnZSksU2l6ZUJsb2IoaW1hZ2UpKTsKICAgICAgfQogIH0KICB3aGls
ZSAoaW1hZ2UtPnByZXZpb3VzICE9IChJbWFnZSAqKSAwKQogICAgaW1hZ2U9aW1hZ2UtPnByZXZp
b3VzOwogIENsb3NlQmxvYihpbWFnZSk7CiAgcmV0dXJuKGltYWdlKTsKfQojIDUxMCAiZml0cy5j
IgogICAgICAgICAgICAgdm9pZCBSZWdpc3RlckZJVFNJbWFnZSh2b2lkKQp7CiAgTWFnaWNrSW5m
bwogICAgKmVudHJ5OwoKICBlbnRyeT1TZXRNYWdpY2tJbmZvKCJGSVRTIik7CiAgZW50cnktPmRl
Y29kZXI9UmVhZEZJVFNJbWFnZTsKICBlbnRyeS0+ZW5jb2Rlcj1Xcml0ZUZJVFNJbWFnZTsKICBl
bnRyeS0+bWFnaWNrPUlzRklUUzsKICBlbnRyeS0+YWRqb2luPTA7CiAgZW50cnktPmRlc2NyaXB0
aW9uPUFsbG9jYXRlU3RyaW5nKCJGbGV4aWJsZSBJbWFnZSBUcmFuc3BvcnQgU3lzdGVtIik7CiAg
ZW50cnktPm1vZHVsZT1BbGxvY2F0ZVN0cmluZygiRklUUyIpOwogICh2b2lkKSBSZWdpc3Rlck1h
Z2lja0luZm8oZW50cnkpOwp9CiMgNTQ0ICJmaXRzLmMiCiAgICAgICAgICAgICB2b2lkIFVucmVn
aXN0ZXJGSVRTSW1hZ2Uodm9pZCkKewogICh2b2lkKSBVbnJlZ2lzdGVyTWFnaWNrSW5mbygiRklU
UyIpOwp9CiMgNTc5ICJmaXRzLmMiCnN0YXRpYyB1bnNpZ25lZCBpbnQgV3JpdGVGSVRTSW1hZ2Uo
Y29uc3QgSW1hZ2VJbmZvICppbWFnZV9pbmZvLEltYWdlICppbWFnZSkKewogIGNoYXIKICAgIGJ1
ZmZlcls4MV0sCiAgICAqZml0c19pbmZvOwoKICBsb25nCiAgICB5OwoKICByZWdpc3RlciBjb25z
dCBQaXhlbFBhY2tldAogICAgKnA7CgogIHJlZ2lzdGVyIGludAogICAgaTsKCiAgdW5zaWduZWQg
Y2hhcgogICAgKnBpeGVsczsKCiAgdW5zaWduZWQgaW50CiAgICBwYWNrZXRfc2l6ZSwKICAgIHN0
YXR1czsKCgoKCiAgKHZvaWQpKChpbWFnZV9pbmZvICE9IChjb25zdCBJbWFnZUluZm8gKikgMCkg
fHwgKF9fYXNzZXJ0KCJpbWFnZV9pbmZvICE9IChjb25zdCBJbWFnZUluZm8gKikgTlVMTCIsICJm
aXRzLmMiLCA2MDQpLCAwKSk7CiAgKHZvaWQpKChpbWFnZV9pbmZvLT5zaWduYXR1cmUgPT0gMHhh
YmFjYWRhYikgfHwgKF9fYXNzZXJ0KCJpbWFnZV9pbmZvLT5zaWduYXR1cmUgPT0gTWFnaWNrU2ln
bmF0dXJlIiwgImZpdHMuYyIsIDYwNSksIDApKTsKICAodm9pZCkoKGltYWdlICE9IChJbWFnZSAq
KSAwKSB8fCAoX19hc3NlcnQoImltYWdlICE9IChJbWFnZSAqKSBOVUxMIiwgImZpdHMuYyIsIDYw
NiksIDApKTsKICAodm9pZCkoKGltYWdlLT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYikgfHwgKF9f
YXNzZXJ0KCJpbWFnZS0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIsICJmaXRzLmMiLCA2
MDcpLCAwKSk7CiAgc3RhdHVzPU9wZW5CbG9iKGltYWdlX2luZm8saW1hZ2UsV3JpdGVCaW5hcnlU
eXBlLCZpbWFnZS0+ZXhjZXB0aW9uKTsKICBpZiAoc3RhdHVzID09IDApCiAgICB7ICh2b2lkKSgo
aW1hZ2UgIT0gKEltYWdlICopIDApIHx8IChfX2Fzc2VydCgiaW1hZ2UgIT0gKEltYWdlICopIE5V
TEwiLCAiZml0cy5jIiwgNjEwKSwgMCkpOyBUaHJvd0V4Y2VwdGlvbigmKGltYWdlKS0+ZXhjZXB0
aW9uLEZpbGVPcGVuV2FybmluZywiVW5hYmxlIHRvIG9wZW4gZmlsZSIsKGltYWdlKS0+ZmlsZW5h
bWUpOyBpZiAoaW1hZ2VfaW5mby0+YWRqb2luKSB3aGlsZSAoKGltYWdlKS0+cHJldmlvdXMgIT0g
KEltYWdlICopIDApIChpbWFnZSk9KGltYWdlKS0+cHJldmlvdXM7IENsb3NlQmxvYihpbWFnZSk7
IHJldHVybigwKTsgfTsKICAodm9pZCkgVHJhbnNmb3JtUkdCSW1hZ2UoaW1hZ2UsUkdCQ29sb3Jz
cGFjZSk7CgoKCiAgcGFja2V0X3NpemU9aW1hZ2UtPmRlcHRoID4gOCA/IDIgOiAxOwogIGZpdHNf
aW5mbz0oY2hhciAqKSBBY3F1aXJlTWVtb3J5KDI4ODApOwogIHBpeGVscz0odW5zaWduZWQgY2hh
ciAqKSBBY3F1aXJlTWVtb3J5KHBhY2tldF9zaXplKmltYWdlLT5jb2x1bW5zKTsKICBpZiAoKGZp
dHNfaW5mbyA9PSAoY2hhciAqKSAwKSB8fCAocGl4ZWxzID09ICh1bnNpZ25lZCBjaGFyICopIDAp
KQogICAgeyAodm9pZCkoKGltYWdlICE9IChJbWFnZSAqKSAwKSB8fCAoX19hc3NlcnQoImltYWdl
ICE9IChJbWFnZSAqKSBOVUxMIiwgImZpdHMuYyIsIDYxOSksIDApKTsgVGhyb3dFeGNlcHRpb24o
JihpbWFnZSktPmV4Y2VwdGlvbixSZXNvdXJjZUxpbWl0V2FybmluZywiTWVtb3J5IGFsbG9jYXRp
b24gZmFpbGVkIiwoaW1hZ2UpLT5maWxlbmFtZSk7IGlmIChpbWFnZV9pbmZvLT5hZGpvaW4pIHdo
aWxlICgoaW1hZ2UpLT5wcmV2aW91cyAhPSAoSW1hZ2UgKikgMCkgKGltYWdlKT0oaW1hZ2UpLT5w
cmV2aW91czsgQ2xvc2VCbG9iKGltYWdlKTsgcmV0dXJuKDApOyB9OwoKCgogIGZvciAoaT0wOyBp
IDwgMjg4MDsgaSsrKQogICAgZml0c19pbmZvW2ldPScgJzsKICAodm9pZCkgc3RyY3B5KGJ1ZmZl
ciwiU0lNUExFICA9ICAgICAgICAgICAgICAgICAgICBUIik7CiAgKHZvaWQpIHN0cm5jcHkoZml0
c19pbmZvKzAsYnVmZmVyLHN0cmxlbihidWZmZXIpKTsKICBGb3JtYXRTdHJpbmcoYnVmZmVyLCJC
SVRQSVggID0gICAgICAgICAgICAgICAgICAgICVkIixpbWFnZS0+ZGVwdGgpOwogICh2b2lkKSBz
dHJuY3B5KGZpdHNfaW5mbys4MCxidWZmZXIsc3RybGVuKGJ1ZmZlcikpOwogICh2b2lkKSBzdHJj
cHkoYnVmZmVyLCJOQVhJUyAgID0gICAgICAgICAgICAgICAgICAgIDIiKTsKICAodm9pZCkgc3Ry
bmNweShmaXRzX2luZm8rMTYwLGJ1ZmZlcixzdHJsZW4oYnVmZmVyKSk7CiAgRm9ybWF0U3RyaW5n
KGJ1ZmZlciwiTkFYSVMxICA9ICAgICAgICAgICAlMTBsdSIsaW1hZ2UtPmNvbHVtbnMpOwogICh2
b2lkKSBzdHJuY3B5KGZpdHNfaW5mbysyNDAsYnVmZmVyLHN0cmxlbihidWZmZXIpKTsKICBGb3Jt
YXRTdHJpbmcoYnVmZmVyLCJOQVhJUzIgID0gICAgICAgICAgICUxMGx1IixpbWFnZS0+cm93cyk7
CiAgKHZvaWQpIHN0cm5jcHkoZml0c19pbmZvKzMyMCxidWZmZXIsc3RybGVuKGJ1ZmZlcikpOwog
IEZvcm1hdFN0cmluZyhidWZmZXIsIkRBVEFNSU4gPSAgICAgICAgICAgJTEwbHUiLDApOwogICh2
b2lkKSBzdHJuY3B5KGZpdHNfaW5mbys0MDAsYnVmZmVyLHN0cmxlbihidWZmZXIpKTsKICBGb3Jt
YXRTdHJpbmcoYnVmZmVyLCJEQVRBTUFYID0gICAgICAgICAgICUxMGx1IiwoMSA8PCBpbWFnZS0+
ZGVwdGgpLTEpOwogICh2b2lkKSBzdHJuY3B5KGZpdHNfaW5mbys0ODAsYnVmZmVyLHN0cmxlbihi
dWZmZXIpKTsKICAodm9pZCkgc3RyY3B5KGJ1ZmZlciwiSElTVE9SWSBDcmVhdGVkIGJ5IEltYWdl
TWFnaWNrLiIpOwogICh2b2lkKSBzdHJuY3B5KGZpdHNfaW5mbys1NjAsYnVmZmVyLHN0cmxlbihi
dWZmZXIpKTsKICAodm9pZCkgc3RyY3B5KGJ1ZmZlciwiRU5EIik7CiAgKHZvaWQpIHN0cm5jcHko
Zml0c19pbmZvKzY0MCxidWZmZXIsc3RybGVuKGJ1ZmZlcikpOwogICh2b2lkKSBXcml0ZUJsb2Io
aW1hZ2UsMjg4MCwoY2hhciAqKSBmaXRzX2luZm8pOwogIExpYmVyYXRlTWVtb3J5KCh2b2lkICoq
KSAmZml0c19pbmZvKTsKCgoKICBmb3IgKHk9KGxvbmcpIGltYWdlLT5yb3dzLTE7IHkgPj0gMDsg
eS0tKQogIHsKICAgIHA9QWNxdWlyZUltYWdlUGl4ZWxzKGltYWdlLDAseSxpbWFnZS0+Y29sdW1u
cywxLCZpbWFnZS0+ZXhjZXB0aW9uKTsKICAgIGlmIChwID09IChjb25zdCBQaXhlbFBhY2tldCAq
KSAwKQogICAgICBicmVhazsKICAgICh2b2lkKSBQb3BJbWFnZVBpeGVscyhpbWFnZSxHcmF5UXVh
bnR1bSxwaXhlbHMpOwogICAgKHZvaWQpIFdyaXRlQmxvYihpbWFnZSxwYWNrZXRfc2l6ZSppbWFn
ZS0+Y29sdW1ucyxwaXhlbHMpOwogICAgaWYgKCgoKH4oKGltYWdlLT5yb3dzKS1pbWFnZS0+cm93
cy15LTEgLTEpICYgKChpbWFnZS0+cm93cyktaW1hZ2UtPnJvd3MteS0xIC0yKSkrMSkgPT0gKChp
bWFnZS0+cm93cyktaW1hZ2UtPnJvd3MteS0xIC0xKSkpCiAgICAgIE1hZ2lja01vbml0b3IoU2F2
ZUltYWdlVGV4dCxpbWFnZS0+cm93cy15LTEsaW1hZ2UtPnJvd3MpOwogIH0KICBMaWJlcmF0ZU1l
bW9yeSgodm9pZCAqKikgJnBpeGVscyk7CiAgQ2xvc2VCbG9iKGltYWdlKTsKICByZXR1cm4oMSk7
Cn0K


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-01-01  6:27 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-12-31 22:27 c/5228: Internal gcc-3.0.2 compiler error rodrigc
  -- strict thread matches above, loose matches on Subject: below --
2001-12-31  4:46 arnaud.tisserand

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