This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
optimization/4763: gcc-3.0.2 generates wrong code with -fomit-frame-pointer
- To: gcc-gnats at gcc dot gnu dot org
- Subject: optimization/4763: gcc-3.0.2 generates wrong code with -fomit-frame-pointer
- From: pavenis at latnet dot lv
- Date: 1 Nov 2001 16:42:25 -0000
- Reply-To: pavenis at latnet dot lv
>Number: 4763
>Category: optimization
>Synopsis: gcc-3.0.2 generates wrong code with -fomit-frame-pointer
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Thu Nov 01 08:45:59 PST 2001
>Closed-Date:
>Last-Modified:
>Originator: Andris Pavenis
>Release: gcc-3.0.2, also gcc-3.1 20011029
>Organization:
>Environment:
i586-pc-msdosdjgpp
>Description:
This is example of wrong code generation (gcc-3.0.2 and gcc-3.1 20011029)
for i[3456]86 when option -fomit-frame-pointer is used:
GCC generates code which uses undefined content of register %ebp
without putting anything in it.
6 ustrzcat:
7 0000 55 pushl %ebp
8 0001 57 pushl %edi
9 0002 56 pushl %esi
10 0003 53 pushl %ebx
11 0004 83EC18 subl $24, %esp
Contents of %ebp is undefined in next command (in this case test is done
with gcc-3.0.2).
12 0007 8B6D04 movl 4(%ebp), %ebp
13 000a 8B7D08 movl 8(%ebp), %edi
14 000d 55 pushl %ebp
15 000e E8FCFFFF call ustrsize
Preprocessed source bad.i were generated from bad.c by gcc-3.0.2
Linux-to-DJGPP cross-compiler (I'm geting the same with native
compiler for DJGPP), but wrong code generation can also be tests
with gcc-3.0.2 Linux version
Command line:
gcc -v -O2 -fomit-frame-pointer -Wa,-a bad.i
Preprocessed source attached
>How-To-Repeat:
gcc -v -O2 -fomit-frame-pointer -Wa,-a bad.i
with gcc-3.0.2 (Initially I did that with gcc-3.0.2 built
for target i586-pc-msdosdjgpp, but code generation problem
can be reproduced also with native compiler for Linux
using the same preprocessed source)
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="bad.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="bad.i"
IyAxICJiYWQuYyIKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbXNkb3NkamdwcC8zLjAu
Mi9kamdwcC52ZXIiIDEKIyAxICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9z
eXMvdmVyc2lvbi5oIiAxIDMKIyAyICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbXNkb3Nkamdw
cC8zLjAuMi9kamdwcC52ZXIiIDIKIyAyICJiYWQuYyIgMgojIDEgImJhZC5jIgojIDEgIi91c3Iv
bGliL2djYy1saWIvaTU4Ni1wYy1tc2Rvc2RqZ3BwLzMuMC4yL2luY2x1ZGUvbGltaXRzLmgiIDEg
MwojIDExICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbXNkb3NkamdwcC8zLjAuMi9pbmNsdWRl
L2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLW1zZG9zZGpncHAvMy4w
LjIvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMSAzCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9p
NTg2LXBjLW1zZG9zZGpncHAvMy4wLjIvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMTI1ICIvdXNy
L2xpYi9nY2MtbGliL2k1ODYtcGMtbXNkb3NkamdwcC8zLjAuMi9pbmNsdWRlL2xpbWl0cy5oIiAz
CiMgMSAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvbGltaXRzLmgiIDEgMwoj
IDEyNiAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLW1zZG9zZGpncHAvMy4wLjIvaW5jbHVkZS9s
aW1pdHMuaCIgMiAzCiMgOCAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLW1zZG9zZGpncHAvMy4w
LjIvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzCiMgMTIgIi91c3IvbGliL2djYy1saWIvaTU4Ni1w
Yy1tc2Rvc2RqZ3BwLzMuMC4yL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDIgImJhZC5jIiAyCiMg
MSAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvc3RyaW5nLmgiIDEgMwojIDEz
ICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9zdHJpbmcuaCIgMwojIDEgIi91
c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL3N5cy9kanR5cGVzLmgiIDEgMwojIDE0
ICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCgoK
Cgp0eXBlZGVmIGxvbmcgdW5zaWduZWQgaW50IHNpemVfdDsKCgoKdm9pZCAqIG1lbWNocihjb25z
dCB2b2lkICpfcywgaW50IF9jLCBzaXplX3QgX24pOwppbnQgbWVtY21wKGNvbnN0IHZvaWQgKl9z
MSwgY29uc3Qgdm9pZCAqX3MyLCBzaXplX3QgX24pOwp2b2lkICogbWVtY3B5KHZvaWQgKl9kZXN0
LCBjb25zdCB2b2lkICpfc3JjLCBzaXplX3QgX24pOwp2b2lkICogbWVtbW92ZSh2b2lkICpfczEs
IGNvbnN0IHZvaWQgKl9zMiwgc2l6ZV90IF9uKTsKdm9pZCAqIG1lbXNldCh2b2lkICpfcywgaW50
IF9jLCBzaXplX3QgX24pOwpjaGFyICogc3RyY2F0KGNoYXIgKl9zMSwgY29uc3QgY2hhciAqX3My
KTsKY2hhciAqIHN0cmNocihjb25zdCBjaGFyICpfcywgaW50IF9jKTsKaW50IHN0cmNtcChjb25z
dCBjaGFyICpfczEsIGNvbnN0IGNoYXIgKl9zMik7CmludCBzdHJjb2xsKGNvbnN0IGNoYXIgKl9z
MSwgY29uc3QgY2hhciAqX3MyKTsKY2hhciAqIHN0cmNweShjaGFyICpfczEsIGNvbnN0IGNoYXIg
Kl9zMik7CnNpemVfdCBzdHJjc3BuKGNvbnN0IGNoYXIgKl9zMSwgY29uc3QgY2hhciAqX3MyKTsK
Y2hhciAqIHN0cmVycm9yKGludCBfZXJyY29kZSk7CnNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAq
X3MpOwpjaGFyICogc3RybmNhdChjaGFyICpfczEsIGNvbnN0IGNoYXIgKl9zMiwgc2l6ZV90IF9u
KTsKaW50IHN0cm5jbXAoY29uc3QgY2hhciAqX3MxLCBjb25zdCBjaGFyICpfczIsIHNpemVfdCBf
bik7CmNoYXIgKiBzdHJuY3B5KGNoYXIgKl9zMSwgY29uc3QgY2hhciAqX3MyLCBzaXplX3QgX24p
OwpjaGFyICogc3RycGJyayhjb25zdCBjaGFyICpfczEsIGNvbnN0IGNoYXIgKl9zMik7CmNoYXIg
KiBzdHJyY2hyKGNvbnN0IGNoYXIgKl9zLCBpbnQgX2MpOwpzaXplX3Qgc3Ryc3BuKGNvbnN0IGNo
YXIgKl9zMSwgY29uc3QgY2hhciAqX3MyKTsKY2hhciAqIHN0cnN0cihjb25zdCBjaGFyICpfczEs
IGNvbnN0IGNoYXIgKl9zMik7CmNoYXIgKiBzdHJ0b2soY2hhciAqX3MxLCBjb25zdCBjaGFyICpf
czIpOwpzaXplX3Qgc3RyeGZybShjaGFyICpfczEsIGNvbnN0IGNoYXIgKl9zMiwgc2l6ZV90IF9u
KTsKCgoKCgojIDEgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL3N5cy9tb3Zl
ZGF0YS5oIiAxIDMKIyAxNiAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvc3lz
L21vdmVkYXRhLmgiIDMKIyAxICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9z
eXMvZGp0eXBlcy5oIiAxIDMKIyAxNyAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1
ZGUvc3lzL21vdmVkYXRhLmgiIDIgMwojIDI4ICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMt
aW5jbHVkZS9zeXMvbW92ZWRhdGEuaCIgMwp2b2lkIGRvc21lbWdldCh1bnNpZ25lZCBsb25nIF9v
ZmZzZXQsIHNpemVfdCBfbGVuZ3RoLCB2b2lkICpfYnVmZmVyKTsKdm9pZCBkb3NtZW1wdXQoY29u
c3Qgdm9pZCAqX2J1ZmZlciwgc2l6ZV90IF9sZW5ndGgsIHVuc2lnbmVkIGxvbmcgX29mZnNldCk7
CgoKdm9pZCBfZG9zbWVtZ2V0Yih1bnNpZ25lZCBsb25nIF9vZmZzZXQsIHNpemVfdCBfeGZlcnMs
IHZvaWQgKl9idWZmZXIpOwp2b2lkIF9kb3NtZW1nZXR3KHVuc2lnbmVkIGxvbmcgX29mZnNldCwg
c2l6ZV90IF94ZmVycywgdm9pZCAqX2J1ZmZlcik7CnZvaWQgX2Rvc21lbWdldGwodW5zaWduZWQg
bG9uZyBfb2Zmc2V0LCBzaXplX3QgX3hmZXJzLCB2b2lkICpfYnVmZmVyKTsKdm9pZCBfZG9zbWVt
cHV0Yihjb25zdCB2b2lkICpfYnVmZmVyLCBzaXplX3QgX3hmZXJzLCB1bnNpZ25lZCBsb25nIF9v
ZmZzZXQpOwp2b2lkIF9kb3NtZW1wdXR3KGNvbnN0IHZvaWQgKl9idWZmZXIsIHNpemVfdCBfeGZl
cnMsIHVuc2lnbmVkIGxvbmcgX29mZnNldCk7CnZvaWQgX2Rvc21lbXB1dGwoY29uc3Qgdm9pZCAq
X2J1ZmZlciwgc2l6ZV90IF94ZmVycywgdW5zaWduZWQgbG9uZyBfb2Zmc2V0KTsKCgoKdm9pZCBt
b3ZlZGF0YSh1bnNpZ25lZCBfc291cmNlX3NlbGVjdG9yLCB1bnNpZ25lZCBfc291cmNlX29mZnNl
dCwKICAgICAgICAgICAgICAgdW5zaWduZWQgX2Rlc3Rfc2VsZWN0b3IsIHVuc2lnbmVkIF9kZXN0
X29mZnNldCwKICAgICAgICAgICAgICAgc2l6ZV90IF9sZW5ndGgpOwoKCnZvaWQgX21vdmVkYXRh
Yih1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgc2l6ZV90KTsKdm9pZCBf
bW92ZWRhdGF3KHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCBzaXplX3Qp
Owp2b2lkIF9tb3ZlZGF0YWwodW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQs
IHNpemVfdCk7CiMgNTMgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL3N0cmlu
Zy5oIiAyIDMKCmludCBiY21wKGNvbnN0IHZvaWQgKl9wdHIxLCBjb25zdCB2b2lkICpfcHRyMiwg
aW50IF9sZW5ndGgpOwp2b2lkIGJjb3B5KGNvbnN0IHZvaWQgKl9hLCB2b2lkICpfYiwgc2l6ZV90
IF9sZW4pOwp2b2lkIGJ6ZXJvKHZvaWQgKnB0ciwgc2l6ZV90IF9sZW4pOwppbnQgZmZzKGludCBf
bWFzayk7CmNoYXIgKiBpbmRleChjb25zdCBjaGFyICpfc3RyaW5nLCBpbnQgX2MpOwp2b2lkICog
bWVtY2NweSh2b2lkICpfdG8sIGNvbnN0IHZvaWQgKl9mcm9tLCBpbnQgYywgc2l6ZV90IG4pOwpp
bnQgbWVtaWNtcChjb25zdCB2b2lkICpfczEsIGNvbnN0IHZvaWQgKl9zMiwgc2l6ZV90IF9uKTsK
Y2hhciAqIHJpbmRleChjb25zdCBjaGFyICpfc3RyaW5nLCBpbnQgX2MpOwpjaGFyICogc3RwY3B5
KGNoYXIgKl9kZXN0LCBjb25zdCBjaGFyICpfc3JjKTsKY2hhciAqIHN0cG5jcHkoY2hhciAqX2Rl
c3QsIGNvbnN0IGNoYXIgKl9zcmMsIHNpemVfdCBfbik7CmNoYXIgKiBzdHJkdXAoY29uc3QgY2hh
ciAqX3MpOwpjaGFyICogc3RybHdyKGNoYXIgKl9zKTsKaW50IHN0cmNhc2VjbXAoY29uc3QgY2hh
ciAqX3MxLCBjb25zdCBjaGFyICpfczIpOwppbnQgc3RyaWNtcChjb25zdCBjaGFyICpfczEsIGNv
bnN0IGNoYXIgKl9zMik7CmludCBzdHJuY2FzZWNtcChjb25zdCBjaGFyICpfczEsIGNvbnN0IGNo
YXIgKl9zMiwgc2l6ZV90IF9uKTsKaW50IHN0cm5pY21wKGNvbnN0IGNoYXIgKl9zMSwgY29uc3Qg
Y2hhciAqX3MyLCBzaXplX3QgX24pOwpjaGFyICogc3Ryc2VwKGNoYXIgKipfc3RyaW5ncCwgY29u
c3QgY2hhciAqX2RlbGltKTsKY2hhciAqIHN0cnVwcihjaGFyICpfcyk7CiMgMyAiYmFkLmMiIDIK
IyAxICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAx
NCAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91
c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL3N5cy92ZXJzaW9uLmgiIDEgMwojIDE1
ICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9zdGRpby5oIiAyIDMKIyAxICIv
dXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9zeXMvZGp0eXBlcy5oIiAxIDMKIyAx
NiAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvc3RkaW8uaCIgMiAzCiMgMzcg
Ii91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBf
X2J1aWx0aW5fdmFfbGlzdCB2YV9saXN0OwojIDUwICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9z
eXMtaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICBpbnQgX2NudDsKICBjaGFy
ICpfcHRyOwogIGNoYXIgKl9iYXNlOwogIHNpemVfdCBfYnVmc2l6OwogIGludCBfZmxhZzsKICBp
bnQgX2ZpbGU7CiAgY2hhciAqX25hbWVfdG9fcmVtb3ZlOwogIHNpemVfdCBfZmlsbHNpemU7Cn0g
RklMRTsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBmcG9zX3Q7CgpleHRlcm4gRklMRSBfX2RqX3N0
ZGluLCBfX2RqX3N0ZG91dCwgX19kal9zdGRlcnI7CgoKCgp2b2lkIGNsZWFyZXJyKEZJTEUgKl9z
dHJlYW0pOwppbnQgZmNsb3NlKEZJTEUgKl9zdHJlYW0pOwppbnQgZmVvZihGSUxFICpfc3RyZWFt
KTsKaW50IGZlcnJvcihGSUxFICpfc3RyZWFtKTsKaW50IGZmbHVzaChGSUxFICpfc3RyZWFtKTsK
aW50IGZnZXRjKEZJTEUgKl9zdHJlYW0pOwppbnQgZmdldHBvcyhGSUxFICpfc3RyZWFtLCBmcG9z
X3QgKl9wb3MpOwpjaGFyICogZmdldHMoY2hhciAqX3MsIGludCBfbiwgRklMRSAqX3N0cmVhbSk7
CkZJTEUgKiBmb3Blbihjb25zdCBjaGFyICpfZmlsZW5hbWUsIGNvbnN0IGNoYXIgKl9tb2RlKTsK
aW50IGZwcmludGYoRklMRSAqX3N0cmVhbSwgY29uc3QgY2hhciAqX2Zvcm1hdCwgLi4uKTsKaW50
IGZwdXRjKGludCBfYywgRklMRSAqX3N0cmVhbSk7CmludCBmcHV0cyhjb25zdCBjaGFyICpfcywg
RklMRSAqX3N0cmVhbSk7CnNpemVfdCBmcmVhZCh2b2lkICpfcHRyLCBzaXplX3QgX3NpemUsIHNp
emVfdCBfbmVsZW0sIEZJTEUgKl9zdHJlYW0pOwpGSUxFICogZnJlb3Blbihjb25zdCBjaGFyICpf
ZmlsZW5hbWUsIGNvbnN0IGNoYXIgKl9tb2RlLCBGSUxFICpfc3RyZWFtKTsKaW50IGZzY2FuZihG
SUxFICpfc3RyZWFtLCBjb25zdCBjaGFyICpfZm9ybWF0LCAuLi4pOwppbnQgZnNlZWsoRklMRSAq
X3N0cmVhbSwgbG9uZyBfb2Zmc2V0LCBpbnQgX21vZGUpOwppbnQgZnNldHBvcyhGSUxFICpfc3Ry
ZWFtLCBjb25zdCBmcG9zX3QgKl9wb3MpOwpsb25nIGZ0ZWxsKEZJTEUgKl9zdHJlYW0pOwpzaXpl
X3QgZndyaXRlKGNvbnN0IHZvaWQgKl9wdHIsIHNpemVfdCBfc2l6ZSwgc2l6ZV90IF9uZWxlbSwg
RklMRSAqX3N0cmVhbSk7CmludCBnZXRjKEZJTEUgKl9zdHJlYW0pOwppbnQgZ2V0Y2hhcih2b2lk
KTsKY2hhciAqIGdldHMoY2hhciAqX3MpOwp2b2lkIHBlcnJvcihjb25zdCBjaGFyICpfcyk7Cmlu
dCBwcmludGYoY29uc3QgY2hhciAqX2Zvcm1hdCwgLi4uKTsKaW50IHB1dGMoaW50IF9jLCBGSUxF
ICpfc3RyZWFtKTsKaW50IHB1dGNoYXIoaW50IF9jKTsKaW50IHB1dHMoY29uc3QgY2hhciAqX3Mp
OwppbnQgcmVtb3ZlKGNvbnN0IGNoYXIgKl9maWxlbmFtZSk7CmludCByZW5hbWUoY29uc3QgY2hh
ciAqX29sZCwgY29uc3QgY2hhciAqX25ldyk7CnZvaWQgcmV3aW5kKEZJTEUgKl9zdHJlYW0pOwpp
bnQgc2NhbmYoY29uc3QgY2hhciAqX2Zvcm1hdCwgLi4uKTsKdm9pZCBzZXRidWYoRklMRSAqX3N0
cmVhbSwgY2hhciAqX2J1Zik7CmludCBzZXR2YnVmKEZJTEUgKl9zdHJlYW0sIGNoYXIgKl9idWYs
IGludCBfbW9kZSwgc2l6ZV90IF9zaXplKTsKaW50IHNucHJpbnRmKGNoYXIgKnN0ciwgc2l6ZV90
IG4sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKaW50IHNwcmludGYoY2hhciAqX3MsIGNvbnN0IGNo
YXIgKl9mb3JtYXQsIC4uLik7CmludCBzc2NhbmYoY29uc3QgY2hhciAqX3MsIGNvbnN0IGNoYXIg
Kl9mb3JtYXQsIC4uLik7CkZJTEUgKiB0bXBmaWxlKHZvaWQpOwpjaGFyICogdG1wbmFtKGNoYXIg
Kl9zKTsKaW50IHVuZ2V0YyhpbnQgX2MsIEZJTEUgKl9zdHJlYW0pOwppbnQgdmZwcmludGYoRklM
RSAqX3N0cmVhbSwgY29uc3QgY2hhciAqX2Zvcm1hdCwgdmFfbGlzdCBfYXApOwppbnQgdnByaW50
Zihjb25zdCBjaGFyICpfZm9ybWF0LCB2YV9saXN0IF9hcCk7CmludCB2c25wcmludGYoY2hhciAq
c3RyLCBzaXplX3QgbiwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwKTsKaW50IHZzcHJpbnRm
KGNoYXIgKl9zLCBjb25zdCBjaGFyICpfZm9ybWF0LCB2YV9saXN0IF9hcCk7CgoKCgoKCgppbnQg
ZmlsZW5vKEZJTEUgKl9zdHJlYW0pOwpGSUxFICogZmRvcGVuKGludCBfZmlsZGVzLCBjb25zdCBj
aGFyICpfdHlwZSk7CmludCBta3N0ZW1wKGNoYXIgKl90ZW1wbGF0ZSk7CmludCBwY2xvc2UoRklM
RSAqX3BmKTsKRklMRSAqIHBvcGVuKGNvbnN0IGNoYXIgKl9jb21tYW5kLCBjb25zdCBjaGFyICpf
bW9kZSk7CmNoYXIgKiB0ZW1wbmFtKGNvbnN0IGNoYXIgKl9kaXIsIGNvbnN0IGNoYXIgKl9wcmVm
aXgpOwppbnQgdmZzY2FuZihGSUxFICpfc3RyZWFtLCBjb25zdCBjaGFyICpfZm9ybWF0LCB2YV9s
aXN0IF9hcCk7CmludCB2c2NhbmYoY29uc3QgY2hhciAqX2Zvcm1hdCwgdmFfbGlzdCBfYXApOwpp
bnQgdnNzY2FuZihjb25zdCBjaGFyICpfcywgY29uc3QgY2hhciAqX2Zvcm1hdCwgdmFfbGlzdCBf
YXApOwoKCgpleHRlcm4gRklMRSBfX2RqX3N0ZHBybiwgX19kal9zdGRhdXg7CgoKCgoKdm9pZCBf
ZGpzdGF0X2Rlc2NyaWJlX2xvc3NhZ2UoRklMRSAqX3RvX3doZXJlKTsKaW50IF9kb3BybnQoY29u
c3QgY2hhciAqX2ZtdCwgdmFfbGlzdCBfYXJncywgRklMRSAqX2YpOwppbnQgX2Rvc2NhbihGSUxF
ICpfZiwgY29uc3QgY2hhciAqX2ZtdCwgdm9pZCAqKl9hcmdwKTsKaW50IF9kb3NjYW5fbG93KEZJ
TEUgKiwgaW50ICgqKShGSUxFICpfZ2V0KSwgaW50ICgqX3VuZ2V0KShpbnQsIEZJTEUgKiksIGNv
bnN0IGNoYXIgKl9mbXQsIHZvaWQgKipfYXJncCk7CmludCBmcHVyZ2UoRklMRSAqX2YpOwppbnQg
Z2V0dyhGSUxFICpfZik7CmNoYXIgKiBta3RlbXAoY2hhciAqX3RlbXBsYXRlKTsKaW50IHB1dHco
aW50IF92LCBGSUxFICpfZik7CnZvaWQgc2V0YnVmZmVyKEZJTEUgKl9mLCB2b2lkICpfYnVmLCBp
bnQgX3NpemUpOwp2b2lkIHNldGxpbmVidWYoRklMRSAqX2YpOwppbnQgX3JlbmFtZShjb25zdCBj
aGFyICpfb2xkLCBjb25zdCBjaGFyICpfbmV3KTsKIyA0ICJiYWQuYyIgMgojIDEgIi4uL2luY2x1
ZGUvYWxsZWdyby5oIiAxCiMgMzUgIi4uL2luY2x1ZGUvYWxsZWdyby5oIgojIDEgIi91c3IvaTU4
Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL2Vycm5vLmgiIDEgMwojIDE1ICIvdXNyL2k1ODYt
cGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9lcnJuby5oIiAzCmV4dGVybiBpbnQgZXJybm87CiMg
NjEgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL2Vycm5vLmgiIDMKZXh0ZXJu
IGNoYXIgKiBzeXNfZXJybGlzdFtdOwpleHRlcm4gaW50IHN5c19uZXJyOwpleHRlcm4gY29uc3Qg
Y2hhciAqIF9fc3lzX2Vycmxpc3RbXTsKZXh0ZXJuIGludCBfX3N5c19uZXJyOwpleHRlcm4gaW50
IF9kb3NlcnJubzsKIyAzNiAiLi4vaW5jbHVkZS9hbGxlZ3JvLmgiIDIKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k1ODYtcGMtbXNkb3NkamdwcC8zLjAuMi9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAz
NyAiLi4vaW5jbHVkZS9hbGxlZ3JvLmgiIDIKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMt
bXNkb3NkamdwcC8zLjAuMi9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0MyAiL3Vzci9saWIvZ2Nj
LWxpYi9pNTg2LXBjLW1zZG9zZGpncHAvMy4wLjIvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVm
IF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDM4ICIuLi9pbmNsdWRlL2FsbGVn
cm8uaCIgMgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1tc2Rvc2RqZ3BwLzMuMC4yL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0NyAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLW1zZG9z
ZGpncHAvMy4wLjIvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIGludCBwdHJkaWZmX3Q7CiMg
Mjg3ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbXNkb3NkamdwcC8zLjAuMi9pbmNsdWRlL3N0
ZGRlZi5oIiAzCnR5cGVkZWYgc2hvcnQgdW5zaWduZWQgaW50IHdjaGFyX3Q7CiMgMzkgIi4uL2lu
Y2x1ZGUvYWxsZWdyby5oIiAyCiMgMSAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1
ZGUvc3RkbGliLmgiIDEgMwojIDE0ICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVk
ZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL3N5
cy9kanR5cGVzLmgiIDEgMwojIDE1ICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVk
ZS9zdGRsaWIuaCIgMiAzCiMgMjUgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRl
L3N0ZGxpYi5oIiAzCmV4dGVybiBpbnQgX19kal9tYl9jdXJfbWF4OwoKdHlwZWRlZiBzdHJ1Y3Qg
ewogIGludCBxdW90OwogIGludCByZW07Cn0gZGl2X3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgbG9u
ZyBxdW90OwogIGxvbmcgcmVtOwp9IGxkaXZfdDsKIyA0NyAiL3Vzci9pNTg2LXBjLW1zZG9zZGpn
cHAvc3lzLWluY2x1ZGUvc3RkbGliLmgiIDMKdm9pZCBhYm9ydCh2b2lkKSBfX2F0dHJpYnV0ZV9f
KChub3JldHVybikpOwppbnQgYWJzKGludCBfaSk7CmludCBhdGV4aXQodm9pZCAoKl9mdW5jKSh2
b2lkKSk7CmRvdWJsZSBhdG9mKGNvbnN0IGNoYXIgKl9zKTsKaW50IGF0b2koY29uc3QgY2hhciAq
X3MpOwpsb25nIGF0b2woY29uc3QgY2hhciAqX3MpOwp2b2lkICogYnNlYXJjaChjb25zdCB2b2lk
ICpfa2V5LCBjb25zdCB2b2lkICpfYmFzZSwgc2l6ZV90IF9uZWxlbSwKICAgICAgICAgICAgICAg
IHNpemVfdCBfc2l6ZSwgaW50ICgqX2NtcCkoY29uc3Qgdm9pZCAqX2NrLCBjb25zdCB2b2lkICpf
Y2UpKTsKdm9pZCAqIGNhbGxvYyhzaXplX3QgX25lbGVtLCBzaXplX3QgX3NpemUpOwpkaXZfdCBk
aXYoaW50IF9udW1lciwgaW50IF9kZW5vbSk7CnZvaWQgZXhpdChpbnQgX3N0YXR1cykgX19hdHRy
aWJ1dGVfXygobm9yZXR1cm4pKTsKdm9pZCBmcmVlKHZvaWQgKl9wdHIpOwpjaGFyICogZ2V0ZW52
KGNvbnN0IGNoYXIgKl9uYW1lKTsKbG9uZyBsYWJzKGxvbmcgX2kpOwpsZGl2X3QgbGRpdihsb25n
IF9udW1lciwgbG9uZyBfZGVub20pOwp2b2lkICogbWFsbG9jKHNpemVfdCBfc2l6ZSk7CmludCBt
Ymxlbihjb25zdCBjaGFyICpfcywgc2l6ZV90IF9uKTsKc2l6ZV90IG1ic3Rvd2NzKHdjaGFyX3Qg
Kl93Y3MsIGNvbnN0IGNoYXIgKl9zLCBzaXplX3QgX24pOwppbnQgbWJ0b3djKHdjaGFyX3QgKl9w
d2MsIGNvbnN0IGNoYXIgKl9zLCBzaXplX3QgX24pOwp2b2lkIHFzb3J0KHZvaWQgKl9iYXNlLCBz
aXplX3QgX25lbGVtLCBzaXplX3QgX3NpemUsCiAgICAgICAgICAgICAgaW50ICgqX2NtcCkoY29u
c3Qgdm9pZCAqX2UxLCBjb25zdCB2b2lkICpfZTIpKTsKaW50IHJhbmQodm9pZCk7CnZvaWQgKiBy
ZWFsbG9jKHZvaWQgKl9wdHIsIHNpemVfdCBfc2l6ZSk7CnZvaWQgc3JhbmQodW5zaWduZWQgX3Nl
ZWQpOwpkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIgKl9zLCBjaGFyICoqX2VuZHB0cik7Cmxvbmcg
c3RydG9sKGNvbnN0IGNoYXIgKl9zLCBjaGFyICoqX2VuZHB0ciwgaW50IF9iYXNlKTsKdW5zaWdu
ZWQgbG9uZyBzdHJ0b3VsKGNvbnN0IGNoYXIgKl9zLCBjaGFyICoqX2VuZHB0ciwgaW50IF9iYXNl
KTsKaW50IHN5c3RlbShjb25zdCBjaGFyICpfcyk7CnNpemVfdCB3Y3N0b21icyhjaGFyICpfcywg
Y29uc3Qgd2NoYXJfdCAqX3djcywgc2l6ZV90IF9uKTsKaW50IHdjdG9tYihjaGFyICpfcywgd2No
YXJfdCBfd2NoYXIpOwoKCgpsb25nIGE2NGwoY29uc3QgY2hhciAqX3N0cmluZyk7CmNoYXIgKiBs
NjRhKGxvbmcgX3ZhbHVlKTsKaW50IHB1dGVudihjaGFyICpfdmFsKTsKaW50IHNldGVudihjb25z
dCBjaGFyICpfdmFyLCBjb25zdCBjaGFyICpfdmFsLCBpbnQgX292ZXJ3cml0ZSk7CmludCB1bnNl
dGVudihjb25zdCBjaGFyICpfdmFyKTsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIGxvbmcgbG9uZyBx
dW90OwogIGxvbmcgbG9uZyByZW07Cn0gbGxkaXZfdDsKCnZvaWQgKiBhbGxvY2Eoc2l6ZV90IF9z
aXplKTsKbG9uZyBkb3VibGUgX2F0b2xkKGNvbnN0IGNoYXIgKl9zKTsKbG9uZyBsb25nIGF0b2xs
KGNvbnN0IGNoYXIgKl9zKTsKdm9pZCBjZnJlZSh2b2lkICpfcHRyKTsKZG91YmxlIGRyYW5kNDgo
dm9pZCk7CmNoYXIgKiBlY3Z0YnVmKGRvdWJsZSBfdmFsLCBpbnQgX25kLCBpbnQgKl9kcCwgaW50
ICpfc24sIGNoYXIgKl9iZik7CmNoYXIgKiBlY3Z0KGRvdWJsZSBfdmFsLCBpbnQgX25kLCBpbnQg
Kl9kcCwgaW50ICpfc24pOwpkb3VibGUgZXJhbmQ0OCh1bnNpZ25lZCBzaG9ydCBfc3RhdGVbM10p
OwpjaGFyICogZmN2dGJ1Zihkb3VibGUgX3ZhbCwgaW50IF9uZCwgaW50ICpfZHAsIGludCAqX3Nu
LCBjaGFyICpfYmYpOwpjaGFyICogZmN2dChkb3VibGUgX3ZhbCwgaW50IF9uZCwgaW50ICpfZHAs
IGludCAqX3NuKTsKY2hhciAqIGdjdnQoZG91YmxlIF92YWwsIGludCBfbmQsIGNoYXIgKl9idWYp
OwpjaGFyICogZ2V0cGFzcyhjb25zdCBjaGFyICpfcHJvbXB0KTsKaW50IGdldGxvbmdwYXNzKGNv
bnN0IGNoYXIgKl9wcm9tcHQsIGNoYXIgKl9idWZmZXIsIGludCBfbWF4X2xlbik7CmNoYXIgKiBp
dG9hKGludCBfdmFsdWUsIGNoYXIgKl9idWZmZXIsIGludCBfcmFkaXgpOwpsb25nIGpyYW5kNDgo
dW5zaWduZWQgc2hvcnQgX3N0YXRlWzNdKTsKbG9uZyBsb25nIGxsYWJzKGxvbmcgbG9uZyBfaSk7
CmxsZGl2X3QgbGxkaXYobG9uZyBsb25nIF9udW1lciwgbG9uZyBsb25nIF9kZW5vbSk7CnZvaWQg
bGNvbmc0OCh1bnNpZ25lZCBzaG9ydCBfcGFyYW1bN10pOwp1bnNpZ25lZCBsb25nIGxyYW5kNDgo
dm9pZCk7CnZvaWQgKiBtZW1hbGlnbiAoc2l6ZV90IF9hbXQsIHNpemVfdCBfYWxpZ24pOwpsb25n
IG1yYW5kNDgodm9pZCk7CnVuc2lnbmVkIGxvbmcgbnJhbmQ0OCh1bnNpZ25lZCBzaG9ydCBfc3Rh
dGVbM10pOwp1bnNpZ25lZCBzaG9ydCAqc2VlZDQ4KHVuc2lnbmVkIHNob3J0IF9zdGF0ZV9zZWVk
WzNdKTsKdm9pZCBzcmFuZDQ4KGxvbmcgX3NlZWR2YWwpOwppbnQgc3RhY2thdmFpbCh2b2lkKTsK
bG9uZyBkb3VibGUgX3N0cnRvbGQoY29uc3QgY2hhciAqX3MsIGNoYXIgKipfZW5kcHRyKTsKbG9u
ZyBsb25nIHN0cnRvbGwoY29uc3QgY2hhciAqX3MsIGNoYXIgKipfZW5kcHRyLCBpbnQgX2Jhc2Up
Owp1bnNpZ25lZCBsb25nIGxvbmcgc3RydG91bGwoY29uc3QgY2hhciAqX3MsIGNoYXIgKipfZW5k
cHRyLCBpbnQgX2Jhc2UpOwp2b2lkIHN3YWIoY29uc3Qgdm9pZCAqX2Zyb20sIHZvaWQgKl90bywg
aW50IF9uYnl0ZXMpOwp2b2lkICogdmFsbG9jIChzaXplX3QgX2FtdCk7CgoKCgoKCmNoYXIgKiBp
bml0c3RhdGUgKHVuc2lnbmVkIF9zZWVkLCBjaGFyICpfYXJnX3N0YXRlLCBpbnQgX24pOwpjaGFy
ICogc2V0c3RhdGUoY2hhciAqX2FyZ19zdGF0ZSk7CmxvbmcgcmFuZG9tKHZvaWQpOwppbnQgc3Jh
bmRvbShpbnQgX3NlZWQpOwojIDE1MCAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBfX3N5c3RlbV9mbGFnczsKCmV4dGVybiB2b2lkICgq
X19saWJjX21hbGxvY19ob29rKShzaXplX3QsIHZvaWQgKik7CmV4dGVybiB2b2lkICgqX19saWJj
X21hbGxvY19mYWlsX2hvb2spKHNpemVfdCk7CmV4dGVybiB2b2lkICgqX19saWJjX2ZyZWVfaG9v
aykodm9pZCAqKTsKZXh0ZXJuIHZvaWQgKCpfX2xpYmNfZnJlZV9udWxsX2hvb2spKHZvaWQpOwpl
eHRlcm4gdm9pZCAoKl9fbGliY19yZWFsbG9jX2hvb2spKHZvaWQgKiwgc2l6ZV90KTsKCnN0cnVj
dCBtYWxsaW5mbyB7CiAgaW50IGFyZW5hOwogIGludCBvcmRibGtzOwogIGludCBzbWJsa3M7CiAg
aW50IGhibGtzOwogIGludCBoYmxraGQ7CiAgaW50IHVzbWJsa3M7CiAgaW50IGZzbWJsa3M7CiAg
aW50IHVvcmRibGtzOwogIGludCBmb3JkYmxrczsKICBpbnQga2VlcGNvc3Q7Cn07CgpzdHJ1Y3Qg
bWFsbGluZm8gbWFsbGluZm8odm9pZCk7CgppbnQgbWFsbG9jX3ZlcmlmeSh2b2lkKTsKaW50IG1h
bGxvY19kZWJ1ZyhpbnQpOwp2b2lkIG1hbGxvY21hcCh2b2lkKTsKIyA0MCAiLi4vaW5jbHVkZS9h
bGxlZ3JvLmgiIDIKIyAxICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS90aW1l
LmgiIDEgMwojIDE4ICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS90aW1lLmgi
IDMKIyAxICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9zeXMvZGp0eXBlcy5o
IiAxIDMKIyAxOSAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvdGltZS5oIiAy
IDMKCgoKCgoKdHlwZWRlZiBpbnQgY2xvY2tfdDsKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50
IHRpbWVfdDsKCgoKc3RydWN0IHRtIHsKICBpbnQgdG1fc2VjOwogIGludCB0bV9taW47CiAgaW50
IHRtX2hvdXI7CiAgaW50IHRtX21kYXk7CiAgaW50IHRtX21vbjsKICBpbnQgdG1feWVhcjsKICBp
bnQgdG1fd2RheTsKICBpbnQgdG1feWRheTsKICBpbnQgdG1faXNkc3Q7CiAgY2hhciAqX190bV96
b25lOwogIGludCBfX3RtX2dtdG9mZjsKfTsKCmNoYXIgKiBhc2N0aW1lKGNvbnN0IHN0cnVjdCB0
bSAqX3RwdHIpOwpjbG9ja190IGNsb2NrKHZvaWQpOwpjaGFyICogY3RpbWUoY29uc3QgdGltZV90
ICpfY2FsKTsKZG91YmxlIGRpZmZ0aW1lKHRpbWVfdCBfdDEsIHRpbWVfdCBfdDApOwpzdHJ1Y3Qg
dG0gKiBnbXRpbWUoY29uc3QgdGltZV90ICpfdG9kKTsKc3RydWN0IHRtICogbG9jYWx0aW1lKGNv
bnN0IHRpbWVfdCAqX3RvZCk7CnRpbWVfdCBta3RpbWUoc3RydWN0IHRtICpfdHB0cik7CnNpemVf
dCBzdHJmdGltZShjaGFyICpfcywgc2l6ZV90IF9uLCBjb25zdCBjaGFyICpfZm9ybWF0LCBjb25z
dCBzdHJ1Y3QgdG0gKl90cHRyKTsKdGltZV90IHRpbWUodGltZV90ICpfdG9kKTsKCgoKCgpleHRl
cm4gY2hhciAqdHpuYW1lWzJdOwoKdm9pZCB0enNldCh2b2lkKTsKCgoKCgoKc3RydWN0IHRpbWV2
YWwgewogIHRpbWVfdCB0dl9zZWM7CiAgbG9uZyB0dl91c2VjOwp9OwoKc3RydWN0IHRpbWV6b25l
IHsKICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgaW50IHR6X2RzdHRpbWU7Cn07CgojIDEgIi91c3Iv
aTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAxNSAiL3Vz
ci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNy
L2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9zeXMvZGp0eXBlcy5oIiAxIDMKIyAxNiAi
L3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKdHlw
ZWRlZiBpbnQgZGV2X3Q7CnR5cGVkZWYgaW50IGlub190Owp0eXBlZGVmIGludCBtb2RlX3Q7CnR5
cGVkZWYgaW50IG5saW5rX3Q7CgoKdHlwZWRlZiBpbnQgZ2lkX3Q7CgoKCnR5cGVkZWYgaW50IG9m
Zl90OwoKCgp0eXBlZGVmIGxvbmcgbG9uZyBvZmZzZXRfdDsKCgoKdHlwZWRlZiBpbnQgcGlkX3Q7
CgoKCgoKCgp0eXBlZGVmIGludCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBpbnQgdWlkX3Q7CiMgNTgg
Ii91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVk
ZWYgc3RydWN0IGZkX3NldCB7CiAgdW5zaWduZWQgY2hhciBmZF9iaXRzIFsoKDI1NikgKyA3KSAv
IDhdOwp9IGZkX3NldDsKIyA4NSAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUv
dGltZS5oIiAyIDMKCnR5cGVkZWYgbG9uZyBsb25nIHVjbG9ja190OwoKCmludCBnZXR0aW1lb2Zk
YXkoc3RydWN0IHRpbWV2YWwgKl90cCwgc3RydWN0IHRpbWV6b25lICpfdHpwKTsKdW5zaWduZWQg
bG9uZyByYXdjbG9jayh2b2lkKTsKaW50IHNlbGVjdChpbnQgX25mZHMsIGZkX3NldCAqX3JlYWRm
ZHMsIGZkX3NldCAqX3dyaXRlZmRzLCBmZF9zZXQgKl9leGNlcHRmZHMsIHN0cnVjdCB0aW1ldmFs
ICpfdGltZW91dCk7CmludCBzZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKl90cCwgLi4uKTsK
dm9pZCB0enNldHdhbGwodm9pZCk7CnVjbG9ja190IHVjbG9jayh2b2lkKTsKIyA0MSAiLi4vaW5j
bHVkZS9hbGxlZ3JvLmgiIDIKCgojIDEgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGNvbmZpZy5oIiAx
CiMgMjkgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGNvbmZpZy5oIgojIDEgIi4uL2luY2x1ZGUvYWxs
ZWdyby9hbHBsYXRmLmgiIDEKIyAzMCAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsY29uZmlnLmgiIDIK
CgoKIyAxICIuLi9pbmNsdWRlL2FsbGVncm8vYWxkamdwcC5oIiAxCiMgMjAgIi4uL2luY2x1ZGUv
YWxsZWdyby9hbGRqZ3BwLmgiCiMgMSAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1
ZGUvcGMuaCIgMSAzCiMgMTcgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL3Bj
LmgiIDMKdW5zaWduZWQgY2hhciBpbnBvcnRiICh1bnNpZ25lZCBzaG9ydCBfcG9ydCk7CnVuc2ln
bmVkIHNob3J0IGlucG9ydHcgKHVuc2lnbmVkIHNob3J0IF9wb3J0KTsKdW5zaWduZWQgbG9uZyBp
bnBvcnRsICh1bnNpZ25lZCBzaG9ydCBfcG9ydCk7CnZvaWQgaW5wb3J0c2IgKHVuc2lnbmVkIHNo
b3J0IF9wb3J0LCB1bnNpZ25lZCBjaGFyICpfYnVmLCB1bnNpZ25lZCBfbGVuKTsKdm9pZCBpbnBv
cnRzdyAodW5zaWduZWQgc2hvcnQgX3BvcnQsIHVuc2lnbmVkIHNob3J0ICpfYnVmLCB1bnNpZ25l
ZCBfbGVuKTsKdm9pZCBpbnBvcnRzbCAodW5zaWduZWQgc2hvcnQgX3BvcnQsIHVuc2lnbmVkIGxv
bmcgKl9idWYsIHVuc2lnbmVkIF9sZW4pOwp2b2lkIG91dHBvcnRiICh1bnNpZ25lZCBzaG9ydCBf
cG9ydCwgdW5zaWduZWQgY2hhciBfZGF0YSk7CnZvaWQgb3V0cG9ydHcgKHVuc2lnbmVkIHNob3J0
IF9wb3J0LCB1bnNpZ25lZCBzaG9ydCBfZGF0YSk7CnZvaWQgb3V0cG9ydGwgKHVuc2lnbmVkIHNo
b3J0IF9wb3J0LCB1bnNpZ25lZCBsb25nIF9kYXRhKTsKdm9pZCBvdXRwb3J0c2IodW5zaWduZWQg
c2hvcnQgX3BvcnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9idWYsIHVuc2lnbmVkIF9sZW4pOwp2
b2lkIG91dHBvcnRzdyh1bnNpZ25lZCBzaG9ydCBfcG9ydCwgY29uc3QgdW5zaWduZWQgc2hvcnQg
Kl9idWYsIHVuc2lnbmVkIF9sZW4pOwp2b2lkIG91dHBvcnRzbCh1bnNpZ25lZCBzaG9ydCBfcG9y
dCwgY29uc3QgdW5zaWduZWQgbG9uZyAqX2J1ZiwgdW5zaWduZWQgX2xlbik7Cgp1bnNpZ25lZCBj
aGFyIGlucCh1bnNpZ25lZCBzaG9ydCBfcG9ydCk7CnVuc2lnbmVkIHNob3J0IGlucHcodW5zaWdu
ZWQgc2hvcnQgX3BvcnQpOwp2b2lkIG91dHAodW5zaWduZWQgc2hvcnQgX3BvcnQsIHVuc2lnbmVk
IGNoYXIgX2RhdGEpOwp2b2lkIG91dHB3KHVuc2lnbmVkIHNob3J0IF9wb3J0LCB1bnNpZ25lZCBz
aG9ydCBfZGF0YSk7CgppbnQga2JoaXQodm9pZCk7CgppbnQgZ2V0a2V5KHZvaWQpOwppbnQgZ2V0
eGtleSh2b2lkKTsKY29uc3QgdW5zaWduZWQgY2hhciAqIF9fZ2V0X2V4dGVuZGVkX2tleV9zdHJp
bmcoaW50IF94a2V5X2NvZGUpOwp2b2lkIHNvdW5kKGludCBfZnJlcXVlbmN5KTsKCgoKZXh0ZXJu
IHVuc2lnbmVkIGNoYXIgU2NyZWVuQXR0cmliOwoKCgoKaW50IFNjcmVlbk1vZGUodm9pZCk7Cmlu
dCBTY3JlZW5Sb3dzKHZvaWQpOwppbnQgU2NyZWVuQ29scyh2b2lkKTsKdm9pZCBTY3JlZW5QdXRD
aGFyKGludCBfY2gsIGludCBfYXR0ciwgaW50IF94LCBpbnQgX3kpOwp2b2lkIFNjcmVlbkdldENo
YXIoaW50ICpfY2gsIGludCAqX2F0dHIsIGludCBfeCwgaW50IF95KTsKdm9pZCBTY3JlZW5QdXRT
dHJpbmcoY29uc3QgY2hhciAqX2NoLCBpbnQgX2F0dHIsIGludCBfeCwgaW50IF95KTsKdm9pZCBT
Y3JlZW5TZXRDdXJzb3IoaW50IF9yb3csIGludCBfY29sKTsKdm9pZCBTY3JlZW5HZXRDdXJzb3Io
aW50ICpfcm93LCBpbnQgKl9jb2wpOwp2b2lkIFNjcmVlbkNsZWFyKHZvaWQpOwp2b2lkIFNjcmVl
blVwZGF0ZShjb25zdCB2b2lkICpfdmlydHVhbF9zY3JlZW4pOwp2b2lkIFNjcmVlblVwZGF0ZUxp
bmUoY29uc3Qgdm9pZCAqX3ZpcnR1YWxfc2NyZWVuX2xpbmUsIGludCBfcm93KTsKdm9pZCBTY3Jl
ZW5SZXRyaWV2ZSh2b2lkICpfdmlydHVhbF9zY3JlZW4pOwp2b2lkIFNjcmVlblZpc3VhbEJlbGwo
dm9pZCk7CgoKCgoKCgojIDEgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL2lu
bGluZXMvcGMuaCIgMSAzCiMgMTAgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRl
L2lubGluZXMvcGMuaCIgMwpleHRlcm4gX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyCmlucG9ydGIg
KHVuc2lnbmVkIHNob3J0IF9wb3J0KQp7CiAgdW5zaWduZWQgY2hhciBydjsKICBfX2FzbV9fIF9f
dm9sYXRpbGVfXyAoImluYiAlMSwgJTAiCiAgICAgICAgICA6ICI9YSIgKHJ2KQogICAgICAgICAg
OiAiZE4iIChfcG9ydCkpOwogIHJldHVybiBydjsKfQoKZXh0ZXJuIF9faW5saW5lX18gdW5zaWdu
ZWQgc2hvcnQKaW5wb3J0dyAodW5zaWduZWQgc2hvcnQgX3BvcnQpCnsKICB1bnNpZ25lZCBzaG9y
dCBydjsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImludyAlMSwgJTAiCiAgICAgICAgICA6ICI9
YSIgKHJ2KQogICAgICAgICAgOiAiZE4iIChfcG9ydCkpOwogIHJldHVybiBydjsKfQoKZXh0ZXJu
IF9faW5saW5lX18gdW5zaWduZWQgbG9uZwppbnBvcnRsICh1bnNpZ25lZCBzaG9ydCBfcG9ydCkK
ewogIHVuc2lnbmVkIGxvbmcgcnY7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbmwgJTEsICUw
IgogICAgICAgICAgOiAiPWEiIChydikKICAgICAgICAgIDogImROIiAoX3BvcnQpKTsKICByZXR1
cm4gcnY7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQKb3V0cG9ydGIgKHVuc2lnbmVkIHNob3J0
IF9wb3J0LCB1bnNpZ25lZCBjaGFyIF9kYXRhKQp7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJv
dXRiICUxLCAlMCIKICAgICAgICAgIDoKICAgICAgICAgIDogImROIiAoX3BvcnQpLAogICAgICAg
ICAgICAiYSIgKF9kYXRhKSk7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQKb3V0cG9ydHcgKHVu
c2lnbmVkIHNob3J0IF9wb3J0LCB1bnNpZ25lZCBzaG9ydCBfZGF0YSkKewogIF9fYXNtX18gX192
b2xhdGlsZV9fICgib3V0dyAlMSwgJTAiCiAgICAgICAgICA6CiAgICAgICAgICA6ICJkTiIgKF9w
b3J0KSwKICAgICAgICAgICAgImEiIChfZGF0YSkpOwp9CgpleHRlcm4gX19pbmxpbmVfXyB2b2lk
Cm91dHBvcnRsICh1bnNpZ25lZCBzaG9ydCBfcG9ydCwgdW5zaWduZWQgbG9uZyBfZGF0YSkKewog
IF9fYXNtX18gX192b2xhdGlsZV9fICgib3V0bCAlMSwgJTAiCiAgICAgICAgICA6CiAgICAgICAg
ICA6ICJkTiIgKF9wb3J0KSwKICAgICAgICAgICAgImEiIChfZGF0YSkpOwp9CiMgNzAgIi91c3Iv
aTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL3BjLmgiIDIgMwojIDIxICIuLi9pbmNsdWRl
L2FsbGVncm8vYWxkamdwcC5oIiAyCiMgMSAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWlu
Y2x1ZGUvZGlyLmgiIDEgMwojIDIxICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVk
ZS9kaXIuaCIgMwojcHJhZ21hIHBhY2soMSkKCnN0cnVjdCBmZmJsayB7CiAgY2hhciBsZm5fbWFn
aWNbNl0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgc2hvcnQgbGZuX2hhbmRsZSBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICB1bnNpZ25lZCBzaG9ydCBsZm5fY3RpbWUgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgdW5zaWduZWQgc2hvcnQgbGZuX2NkYXRlIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogIHVuc2lnbmVkIHNob3J0IGxmbl9hdGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKICB1bnNpZ25lZCBzaG9ydCBsZm5fYWRhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAg
Y2hhciBfZmZfcmVzZXJ2ZWRbNV0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgdW5zaWduZWQg
Y2hhciBmZl9hdHRyaWIgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgdW5zaWduZWQgc2hvcnQg
ZmZfZnRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgdW5zaWduZWQgc2hvcnQgZmZfZmRh
dGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgdW5zaWduZWQgbG9uZyBmZl9mc2l6ZSBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICBjaGFyIGZmX25hbWVbMjYwXSBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKfTsKCnN0cnVjdCBmZmJsa2xmbiB7CiAgdW5zaWduZWQgbG9uZyBmZF9hdHRyaWIg
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgdW5zaWduZWQgbG9uZyBsb25nIGZkX2N0aW1lIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwogIHVuc2lnbmVkIGxvbmcgbG9uZyBmZF9hdGltZSBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICB1bnNpZ25lZCBsb25nIGxvbmcgZmRfbXRpbWUgX19hdHRy
aWJ1dGVfXygocGFja2VkKSk7CiAgdW5zaWduZWQgbG9uZyBmZF9zaXplaGkgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgdW5zaWduZWQgbG9uZyBmZF9zaXplIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogIHVuc2lnbmVkIGxvbmcgbG9uZyBmZF9yZXNlcnZlZCBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKTsKICBjaGFyIGZkX2xvbmduYW1lWzI2MF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAg
Y2hhciBmZF9uYW1lWzE0XSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKCiNwcmFnbWEgcGFj
ayg0KQojIDcyICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9kaXIuaCIgMwpp
bnQgX19maWxlX3RyZWVfd2Fsayhjb25zdCBjaGFyICpfZGlyLCBpbnQgKCpfZm4pKGNvbnN0IGNo
YXIgKl9wYXRoLCBjb25zdCBzdHJ1Y3QgZmZibGsgKl9mZikpOwppbnQgZmluZGZpcnN0KGNvbnN0
IGNoYXIgKl9wYXRobmFtZSwgc3RydWN0IGZmYmxrICpfZmZibGssIGludCBfYXR0cmliKTsKaW50
IGZpbmRuZXh0KHN0cnVjdCBmZmJsayAqX2ZmYmxrKTsKdm9pZCBmbm1lcmdlIChjaGFyICpfcGF0
aCwgY29uc3QgY2hhciAqX2RyaXZlLCBjb25zdCBjaGFyICpfZGlyLCBjb25zdCBjaGFyICpfbmFt
ZSwgY29uc3QgY2hhciAqX2V4dCk7CmludCBmbnNwbGl0IChjb25zdCBjaGFyICpfcGF0aCwgY2hh
ciAqX2RyaXZlLCBjaGFyICpfZGlyLCBjaGFyICpfbmFtZSwgY2hhciAqX2V4dCk7CmludCBnZXRk
aXNrKHZvaWQpOwpjaGFyICogc2VhcmNocGF0aChjb25zdCBjaGFyICpfcHJvZ3JhbSk7CmludCBz
ZXRkaXNrKGludCBfZHJpdmUpOwojIDIyICIuLi9pbmNsdWRlL2FsbGVncm8vYWxkamdwcC5oIiAy
CiMgMSAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvZHBtaS5oIiAxIDMKIyAx
NiAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvZHBtaS5oIiAzCmV4dGVybiB1
bnNpZ25lZCBzaG9ydCBfX2RwbWlfZXJyb3I7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQg
c2hvcnQgb2Zmc2V0MTY7CiAgdW5zaWduZWQgc2hvcnQgc2VnbWVudDsKfSBfX2RwbWlfcmFkZHI7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgbG9uZyBvZmZzZXQzMjsKICB1bnNpZ25lZCBz
aG9ydCBzZWxlY3RvcjsKfSBfX2RwbWlfcGFkZHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWdu
ZWQgbG9uZyBoYW5kbGU7CiAgdW5zaWduZWQgbG9uZyBzaXplOwogIHVuc2lnbmVkIGxvbmcgYWRk
cmVzczsKfSBfX2RwbWlfbWVtaW5mbzsKCnR5cGVkZWYgdW5pb24gewogIHN0cnVjdCB7CiAgICB1
bnNpZ25lZCBsb25nIGVkaTsKICAgIHVuc2lnbmVkIGxvbmcgZXNpOwogICAgdW5zaWduZWQgbG9u
ZyBlYnA7CiAgICB1bnNpZ25lZCBsb25nIHJlczsKICAgIHVuc2lnbmVkIGxvbmcgZWJ4OwogICAg
dW5zaWduZWQgbG9uZyBlZHg7CiAgICB1bnNpZ25lZCBsb25nIGVjeDsKICAgIHVuc2lnbmVkIGxv
bmcgZWF4OwogIH0gZDsKICBzdHJ1Y3QgewogICAgdW5zaWduZWQgc2hvcnQgZGksIGRpX2hpOwog
ICAgdW5zaWduZWQgc2hvcnQgc2ksIHNpX2hpOwogICAgdW5zaWduZWQgc2hvcnQgYnAsIGJwX2hp
OwogICAgdW5zaWduZWQgc2hvcnQgcmVzLCByZXNfaGk7CiAgICB1bnNpZ25lZCBzaG9ydCBieCwg
YnhfaGk7CiAgICB1bnNpZ25lZCBzaG9ydCBkeCwgZHhfaGk7CiAgICB1bnNpZ25lZCBzaG9ydCBj
eCwgY3hfaGk7CiAgICB1bnNpZ25lZCBzaG9ydCBheCwgYXhfaGk7CiAgICB1bnNpZ25lZCBzaG9y
dCBmbGFnczsKICAgIHVuc2lnbmVkIHNob3J0IGVzOwogICAgdW5zaWduZWQgc2hvcnQgZHM7CiAg
ICB1bnNpZ25lZCBzaG9ydCBmczsKICAgIHVuc2lnbmVkIHNob3J0IGdzOwogICAgdW5zaWduZWQg
c2hvcnQgaXA7CiAgICB1bnNpZ25lZCBzaG9ydCBjczsKICAgIHVuc2lnbmVkIHNob3J0IHNwOwog
ICAgdW5zaWduZWQgc2hvcnQgc3M7CiAgfSB4OwogIHN0cnVjdCB7CiAgICB1bnNpZ25lZCBjaGFy
IGVkaVs0XTsKICAgIHVuc2lnbmVkIGNoYXIgZXNpWzRdOwogICAgdW5zaWduZWQgY2hhciBlYnBb
NF07CiAgICB1bnNpZ25lZCBjaGFyIHJlc1s0XTsKICAgIHVuc2lnbmVkIGNoYXIgYmwsIGJoLCBl
YnhfYjIsIGVieF9iMzsKICAgIHVuc2lnbmVkIGNoYXIgZGwsIGRoLCBlZHhfYjIsIGVkeF9iMzsK
ICAgIHVuc2lnbmVkIGNoYXIgY2wsIGNoLCBlY3hfYjIsIGVjeF9iMzsKICAgIHVuc2lnbmVkIGNo
YXIgYWwsIGFoLCBlYXhfYjIsIGVheF9iMzsKICB9IGg7Cn0gX19kcG1pX3JlZ3M7Cgp0eXBlZGVm
IHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciBtYWpvcjsKICB1bnNpZ25lZCBjaGFyIG1pbm9yOwog
IHVuc2lnbmVkIHNob3J0IGZsYWdzOwogIHVuc2lnbmVkIGNoYXIgY3B1OwogIHVuc2lnbmVkIGNo
YXIgbWFzdGVyX3BpYzsKICB1bnNpZ25lZCBjaGFyIHNsYXZlX3BpYzsKfSBfX2RwbWlfdmVyc2lv
bl9yZXQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgbG9uZyBsYXJnZXN0X2F2YWlsYWJs
ZV9mcmVlX2Jsb2NrX2luX2J5dGVzOwogIHVuc2lnbmVkIGxvbmcgbWF4aW11bV91bmxvY2tlZF9w
YWdlX2FsbG9jYXRpb25faW5fcGFnZXM7CiAgdW5zaWduZWQgbG9uZyBtYXhpbXVtX2xvY2tlZF9w
YWdlX2FsbG9jYXRpb25faW5fcGFnZXM7CiAgdW5zaWduZWQgbG9uZyBsaW5lYXJfYWRkcmVzc19z
cGFjZV9zaXplX2luX3BhZ2VzOwogIHVuc2lnbmVkIGxvbmcgdG90YWxfbnVtYmVyX29mX3VubG9j
a2VkX3BhZ2VzOwogIHVuc2lnbmVkIGxvbmcgdG90YWxfbnVtYmVyX29mX2ZyZWVfcGFnZXM7CiAg
dW5zaWduZWQgbG9uZyB0b3RhbF9udW1iZXJfb2ZfcGh5c2ljYWxfcGFnZXM7CiAgdW5zaWduZWQg
bG9uZyBmcmVlX2xpbmVhcl9hZGRyZXNzX3NwYWNlX2luX3BhZ2VzOwogIHVuc2lnbmVkIGxvbmcg
c2l6ZV9vZl9wYWdpbmdfZmlsZV9wYXJ0aXRpb25faW5fcGFnZXM7CiAgdW5zaWduZWQgbG9uZyBy
ZXNlcnZlZFszXTsKfSBfX2RwbWlfZnJlZV9tZW1faW5mbzsKCnR5cGVkZWYgc3RydWN0IHsKICB1
bnNpZ25lZCBsb25nIHRvdGFsX2FsbG9jYXRlZF9ieXRlc19vZl9waHlzaWNhbF9tZW1vcnlfaG9z
dDsKICB1bnNpZ25lZCBsb25nIHRvdGFsX2FsbG9jYXRlZF9ieXRlc19vZl92aXJ0dWFsX21lbW9y
eV9ob3N0OwogIHVuc2lnbmVkIGxvbmcgdG90YWxfYXZhaWxhYmxlX2J5dGVzX29mX3ZpcnR1YWxf
bWVtb3J5X2hvc3Q7CiAgdW5zaWduZWQgbG9uZyB0b3RhbF9hbGxvY2F0ZWRfYnl0ZXNfb2Zfdmly
dHVhbF9tZW1vcnlfdmNwdTsKICB1bnNpZ25lZCBsb25nIHRvdGFsX2F2YWlsYWJsZV9ieXRlc19v
Zl92aXJ0dWFsX21lbW9yeV92Y3B1OwogIHVuc2lnbmVkIGxvbmcgdG90YWxfYWxsb2NhdGVkX2J5
dGVzX29mX3ZpcnR1YWxfbWVtb3J5X2NsaWVudDsKICB1bnNpZ25lZCBsb25nIHRvdGFsX2F2YWls
YWJsZV9ieXRlc19vZl92aXJ0dWFsX21lbW9yeV9jbGllbnQ7CiAgdW5zaWduZWQgbG9uZyB0b3Rh
bF9sb2NrZWRfYnl0ZXNfb2ZfbWVtb3J5X2NsaWVudDsKICB1bnNpZ25lZCBsb25nIG1heF9sb2Nr
ZWRfYnl0ZXNfb2ZfbWVtb3J5X2NsaWVudDsKICB1bnNpZ25lZCBsb25nIGhpZ2hlc3RfbGluZWFy
X2FkZHJlc3NfYXZhaWxhYmxlX3RvX2NsaWVudDsKICB1bnNpZ25lZCBsb25nIHNpemVfaW5fYnl0
ZXNfb2ZfbGFyZ2VzdF9mcmVlX21lbW9yeV9ibG9jazsKICB1bnNpZ25lZCBsb25nIHNpemVfb2Zf
bWluaW11bV9hbGxvY2F0aW9uX3VuaXRfaW5fYnl0ZXM7CiAgdW5zaWduZWQgbG9uZyBzaXplX29m
X2FsbG9jYXRpb25fYWxpZ25tZW50X3VuaXRfaW5fYnl0ZXM7CiAgdW5zaWduZWQgbG9uZyByZXNl
cnZlZFsxOV07Cn0gX19kcG1pX21lbW9yeV9pbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2ln
bmVkIGxvbmcgZGF0YTE2WzJdOwogIHVuc2lnbmVkIGxvbmcgY29kZTE2WzJdOwogIHVuc2lnbmVk
IHNob3J0IGlwOwogIHVuc2lnbmVkIHNob3J0IHJlc2VydmVkOwogIHVuc2lnbmVkIGxvbmcgZGF0
YTMyWzJdOwogIHVuc2lnbmVkIGxvbmcgY29kZTMyWzJdOwogIHVuc2lnbmVkIGxvbmcgZWlwOwp9
IF9fZHBtaV9jYWxsYmFja19pbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGxvbmcg
c2l6ZV9yZXF1ZXN0ZWQ7CiAgdW5zaWduZWQgbG9uZyBzaXplOwogIHVuc2lnbmVkIGxvbmcgaGFu
ZGxlOwogIHVuc2lnbmVkIGxvbmcgYWRkcmVzczsKICB1bnNpZ25lZCBsb25nIG5hbWVfb2Zmc2V0
OwogIHVuc2lnbmVkIHNob3J0IG5hbWVfc2VsZWN0b3I7CiAgdW5zaWduZWQgc2hvcnQgcmVzZXJ2
ZWQxOwogIHVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQyOwp9IF9fZHBtaV9zaG1pbmZvOwoKCgp2b2lk
IF9fZHBtaV95aWVsZCh2b2lkKTsKCmludCBfX2RwbWlfYWxsb2NhdGVfbGR0X2Rlc2NyaXB0b3Jz
KGludCBfY291bnQpOwppbnQgX19kcG1pX2ZyZWVfbGR0X2Rlc2NyaXB0b3IoaW50IF9kZXNjcmlw
dG9yKTsKaW50IF9fZHBtaV9zZWdtZW50X3RvX2Rlc2NyaXB0b3IoaW50IF9zZWdtZW50KTsKaW50
IF9fZHBtaV9nZXRfc2VsZWN0b3JfaW5jcmVtZW50X3ZhbHVlKHZvaWQpOwppbnQgX19kcG1pX2dl
dF9zZWdtZW50X2Jhc2VfYWRkcmVzcyhpbnQgX3NlbGVjdG9yLCB1bnNpZ25lZCBsb25nICpfYWRk
cik7CmludCBfX2RwbWlfc2V0X3NlZ21lbnRfYmFzZV9hZGRyZXNzKGludCBfc2VsZWN0b3IsIHVu
c2lnbmVkIGxvbmcgX2FkZHJlc3MpOwp1bnNpZ25lZCBsb25nIF9fZHBtaV9nZXRfc2VnbWVudF9s
aW1pdChpbnQgX3NlbGVjdG9yKTsKaW50IF9fZHBtaV9zZXRfc2VnbWVudF9saW1pdChpbnQgX3Nl
bGVjdG9yLCB1bnNpZ25lZCBsb25nIF9saW1pdCk7CmludCBfX2RwbWlfZ2V0X2Rlc2NyaXB0b3Jf
YWNjZXNzX3JpZ2h0cyhpbnQgX3NlbGVjdG9yKTsKaW50IF9fZHBtaV9zZXRfZGVzY3JpcHRvcl9h
Y2Nlc3NfcmlnaHRzKGludCBfc2VsZWN0b3IsIGludCBfcmlnaHRzKTsKaW50IF9fZHBtaV9jcmVh
dGVfYWxpYXNfZGVzY3JpcHRvcihpbnQgX3NlbGVjdG9yKTsKaW50IF9fZHBtaV9nZXRfZGVzY3Jp
cHRvcihpbnQgX3NlbGVjdG9yLCB2b2lkICpfYnVmZmVyKTsKaW50IF9fZHBtaV9zZXRfZGVzY3Jp
cHRvcihpbnQgX3NlbGVjdG9yLCB2b2lkICpfYnVmZmVyKTsKaW50IF9fZHBtaV9hbGxvY2F0ZV9z
cGVjaWZpY19sZHRfZGVzY3JpcHRvcihpbnQgX3NlbGVjdG9yKTsKCmludCBfX2RwbWlfZ2V0X211
bHRpcGxlX2Rlc2NyaXB0b3JzKGludCBfY291bnQsIHZvaWQgKl9idWZmZXIpOwppbnQgX19kcG1p
X3NldF9tdWx0aXBsZV9kZXNjcmlwdG9ycyhpbnQgX2NvdW50LCB2b2lkICpfYnVmZmVyKTsKCmlu
dCBfX2RwbWlfYWxsb2NhdGVfZG9zX21lbW9yeShpbnQgX3BhcmFncmFwaHMsIGludCAqX3JldF9z
ZWxlY3Rvcl9vcl9tYXgpOwppbnQgX19kcG1pX2ZyZWVfZG9zX21lbW9yeShpbnQgX3NlbGVjdG9y
KTsKaW50IF9fZHBtaV9yZXNpemVfZG9zX21lbW9yeShpbnQgX3NlbGVjdG9yLCBpbnQgX25ld3Bh
cmEsIGludCAqX3JldF9tYXgpOwoKaW50IF9fZHBtaV9nZXRfcmVhbF9tb2RlX2ludGVycnVwdF92
ZWN0b3IoaW50IF92ZWN0b3IsIF9fZHBtaV9yYWRkciAqX2FkZHJlc3MpOwppbnQgX19kcG1pX3Nl
dF9yZWFsX21vZGVfaW50ZXJydXB0X3ZlY3RvcihpbnQgX3ZlY3RvciwgX19kcG1pX3JhZGRyICpf
YWRkcmVzcyk7CmludCBfX2RwbWlfZ2V0X3Byb2Nlc3Nvcl9leGNlcHRpb25faGFuZGxlcl92ZWN0
b3IoaW50IF92ZWN0b3IsIF9fZHBtaV9wYWRkciAqX2FkZHJlc3MpOwppbnQgX19kcG1pX3NldF9w
cm9jZXNzb3JfZXhjZXB0aW9uX2hhbmRsZXJfdmVjdG9yKGludCBfdmVjdG9yLCBfX2RwbWlfcGFk
ZHIgKl9hZGRyZXNzKTsKaW50IF9fZHBtaV9nZXRfcHJvdGVjdGVkX21vZGVfaW50ZXJydXB0X3Zl
Y3RvcihpbnQgX3ZlY3RvciwgX19kcG1pX3BhZGRyICpfYWRkcmVzcyk7CmludCBfX2RwbWlfc2V0
X3Byb3RlY3RlZF9tb2RlX2ludGVycnVwdF92ZWN0b3IoaW50IF92ZWN0b3IsIF9fZHBtaV9wYWRk
ciAqX2FkZHJlc3MpOwoKaW50IF9fZHBtaV9nZXRfZXh0ZW5kZWRfZXhjZXB0aW9uX2hhbmRsZXJf
dmVjdG9yX3BtKGludCBfdmVjdG9yLCBfX2RwbWlfcGFkZHIgKl9hZGRyZXNzKTsKaW50IF9fZHBt
aV9nZXRfZXh0ZW5kZWRfZXhjZXB0aW9uX2hhbmRsZXJfdmVjdG9yX3JtKGludCBfdmVjdG9yLCBf
X2RwbWlfcGFkZHIgKl9hZGRyZXNzKTsKaW50IF9fZHBtaV9zZXRfZXh0ZW5kZWRfZXhjZXB0aW9u
X2hhbmRsZXJfdmVjdG9yX3BtKGludCBfdmVjdG9yLCBfX2RwbWlfcGFkZHIgKl9hZGRyZXNzKTsK
aW50IF9fZHBtaV9zZXRfZXh0ZW5kZWRfZXhjZXB0aW9uX2hhbmRsZXJfdmVjdG9yX3JtKGludCBf
dmVjdG9yLCBfX2RwbWlfcGFkZHIgKl9hZGRyZXNzKTsKCmludCBfX2RwbWlfc2ltdWxhdGVfcmVh
bF9tb2RlX2ludGVycnVwdChpbnQgX3ZlY3RvciwgX19kcG1pX3JlZ3MgKl9yZWdzKTsKaW50IF9f
ZHBtaV9pbnQoaW50IF92ZWN0b3IsIF9fZHBtaV9yZWdzICpfcmVncyk7CmV4dGVybiBzaG9ydCBf
X2RwbWlfaW50X3NzLCBfX2RwbWlfaW50X3NwLCBfX2RwbWlfaW50X2ZsYWdzOwppbnQgX19kcG1p
X3NpbXVsYXRlX3JlYWxfbW9kZV9wcm9jZWR1cmVfcmV0ZihfX2RwbWlfcmVncyAqX3JlZ3MpOwpp
bnQgX19kcG1pX3NpbXVsYXRlX3JlYWxfbW9kZV9wcm9jZWR1cmVfcmV0Zl9zdGFjayhfX2RwbWlf
cmVncyAqX3JlZ3MsIGludCBzdGFja193b3Jkc190b19jb3B5LCBjb25zdCB2b2lkICpzdGFja19k
YXRhKTsKaW50IF9fZHBtaV9zaW11bGF0ZV9yZWFsX21vZGVfcHJvY2VkdXJlX2lyZXQoX19kcG1p
X3JlZ3MgKl9yZWdzKTsKaW50IF9fZHBtaV9hbGxvY2F0ZV9yZWFsX21vZGVfY2FsbGJhY2sodm9p
ZCAoKl9oYW5kbGVyKSh2b2lkKSwgX19kcG1pX3JlZ3MgKl9yZWdzLCBfX2RwbWlfcmFkZHIgKl9y
ZXQpOwppbnQgX19kcG1pX2ZyZWVfcmVhbF9tb2RlX2NhbGxiYWNrKF9fZHBtaV9yYWRkciAqX2Fk
ZHIpOwppbnQgX19kcG1pX2dldF9zdGF0ZV9zYXZlX3Jlc3RvcmVfYWRkcihfX2RwbWlfcmFkZHIg
Kl9ybSwgX19kcG1pX3BhZGRyICpfcG0pOwppbnQgX19kcG1pX2dldF9yYXdfbW9kZV9zd2l0Y2hf
YWRkcihfX2RwbWlfcmFkZHIgKl9ybSwgX19kcG1pX3BhZGRyICpfcG0pOwoKaW50IF9fZHBtaV9n
ZXRfdmVyc2lvbihfX2RwbWlfdmVyc2lvbl9yZXQgKl9yZXQpOwoKaW50IF9fZHBtaV9nZXRfY2Fw
YWJpbGl0aWVzKGludCAqX2ZsYWdzLCBjaGFyICp2ZW5kb3JfaW5mbyk7CgppbnQgX19kcG1pX2dl
dF9mcmVlX21lbW9yeV9pbmZvcm1hdGlvbihfX2RwbWlfZnJlZV9tZW1faW5mbyAqX2luZm8pOwpp
bnQgX19kcG1pX2FsbG9jYXRlX21lbW9yeShfX2RwbWlfbWVtaW5mbyAqX2luZm8pOwppbnQgX19k
cG1pX2ZyZWVfbWVtb3J5KHVuc2lnbmVkIGxvbmcgX2hhbmRsZSk7CmludCBfX2RwbWlfcmVzaXpl
X21lbW9yeShfX2RwbWlfbWVtaW5mbyAqX2luZm8pOwoKaW50IF9fZHBtaV9hbGxvY2F0ZV9saW5l
YXJfbWVtb3J5KF9fZHBtaV9tZW1pbmZvICpfaW5mbywgaW50IF9jb21taXQpOwppbnQgX19kcG1p
X3Jlc2l6ZV9saW5lYXJfbWVtb3J5KF9fZHBtaV9tZW1pbmZvICpfaW5mbywgaW50IF9jb21taXQp
OwppbnQgX19kcG1pX2dldF9wYWdlX2F0dHJpYnV0ZXMoX19kcG1pX21lbWluZm8gKl9pbmZvLCBz
aG9ydCAqX2J1ZmZlcik7CmludCBfX2RwbWlfc2V0X3BhZ2VfYXR0cmlidXRlcyhfX2RwbWlfbWVt
aW5mbyAqX2luZm8sIHNob3J0ICpfYnVmZmVyKTsKaW50IF9fZHBtaV9tYXBfZGV2aWNlX2luX21l
bW9yeV9ibG9jayhfX2RwbWlfbWVtaW5mbyAqX2luZm8sIHVuc2lnbmVkIGxvbmcgX3BoeXNhZGRy
KTsKaW50IF9fZHBtaV9tYXBfY29udmVudGlvbmFsX21lbW9yeV9pbl9tZW1vcnlfYmxvY2soX19k
cG1pX21lbWluZm8gKl9pbmZvLCB1bnNpZ25lZCBsb25nIF9waHlzYWRkcik7CmludCBfX2RwbWlf
Z2V0X21lbW9yeV9ibG9ja19zaXplX2FuZF9iYXNlKF9fZHBtaV9tZW1pbmZvICpfaW5mbyk7Cmlu
dCBfX2RwbWlfZ2V0X21lbW9yeV9pbmZvcm1hdGlvbihfX2RwbWlfbWVtb3J5X2luZm8gKl9idWZm
ZXIpOwoKaW50IF9fZHBtaV9sb2NrX2xpbmVhcl9yZWdpb24oX19kcG1pX21lbWluZm8gKl9pbmZv
KTsKaW50IF9fZHBtaV91bmxvY2tfbGluZWFyX3JlZ2lvbihfX2RwbWlfbWVtaW5mbyAqX2luZm8p
OwppbnQgX19kcG1pX21hcmtfcmVhbF9tb2RlX3JlZ2lvbl9hc19wYWdlYWJsZShfX2RwbWlfbWVt
aW5mbyAqX2luZm8pOwppbnQgX19kcG1pX3JlbG9ja19yZWFsX21vZGVfcmVnaW9uKF9fZHBtaV9t
ZW1pbmZvICpfaW5mbyk7CmludCBfX2RwbWlfZ2V0X3BhZ2Vfc2l6ZSh1bnNpZ25lZCBsb25nICpf
c2l6ZSk7CgppbnQgX19kcG1pX21hcmtfcGFnZV9hc19kZW1hbmRfcGFnaW5nX2NhbmRpZGF0ZShf
X2RwbWlfbWVtaW5mbyAqX2luZm8pOwppbnQgX19kcG1pX2Rpc2NhcmRfcGFnZV9jb250ZW50cyhf
X2RwbWlfbWVtaW5mbyAqX2luZm8pOwoKaW50IF9fZHBtaV9waHlzaWNhbF9hZGRyZXNzX21hcHBp
bmcoX19kcG1pX21lbWluZm8gKl9pbmZvKTsKaW50IF9fZHBtaV9mcmVlX3BoeXNpY2FsX2FkZHJl
c3NfbWFwcGluZyhfX2RwbWlfbWVtaW5mbyAqX2luZm8pOwoKCmludCBfX2RwbWlfZ2V0X2FuZF9k
aXNhYmxlX3ZpcnR1YWxfaW50ZXJydXB0X3N0YXRlKHZvaWQpOwppbnQgX19kcG1pX2dldF9hbmRf
ZW5hYmxlX3ZpcnR1YWxfaW50ZXJydXB0X3N0YXRlKHZvaWQpOwppbnQgX19kcG1pX2dldF9hbmRf
c2V0X3ZpcnR1YWxfaW50ZXJydXB0X3N0YXRlKGludCBfb2xkX3N0YXRlKTsKaW50IF9fZHBtaV9n
ZXRfdmlydHVhbF9pbnRlcnJ1cHRfc3RhdGUodm9pZCk7CgppbnQgX19kcG1pX2dldF92ZW5kb3Jf
c3BlY2lmaWNfYXBpX2VudHJ5X3BvaW50KGNoYXIgKl9pZCwgX19kcG1pX3BhZGRyICpfYXBpKTsK
CmludCBfX2RwbWlfc2V0X2RlYnVnX3dhdGNocG9pbnQoX19kcG1pX21lbWluZm8gKl9pbmZvLCBp
bnQgX3R5cGUpOwppbnQgX19kcG1pX2NsZWFyX2RlYnVnX3dhdGNocG9pbnQodW5zaWduZWQgbG9u
ZyBfaGFuZGxlKTsKaW50IF9fZHBtaV9nZXRfc3RhdGVfb2ZfZGVidWdfd2F0Y2hwb2ludCh1bnNp
Z25lZCBsb25nIF9oYW5kbGUsIGludCAqX3N0YXR1cyk7CmludCBfX2RwbWlfcmVzZXRfZGVidWdf
d2F0Y2hwb2ludCh1bnNpZ25lZCBsb25nIF9oYW5kbGUpOwoKaW50IF9fZHBtaV9pbnN0YWxsX3Jl
c2lkZW50X3NlcnZpY2VfcHJvdmlkZXJfY2FsbGJhY2soX19kcG1pX2NhbGxiYWNrX2luZm8gKl9p
bmZvKTsKaW50IF9fZHBtaV90ZXJtaW5hdGVfYW5kX3N0YXlfcmVzaWRlbnQoaW50IHJldHVybl9j
b2RlLCBpbnQgcGFyYWdyYXBoc190b19rZWVwKTsKCmludCBfX2RwbWlfYWxsb2NhdGVfc2hhcmVk
X21lbW9yeShfX2RwbWlfc2htaW5mbyAqX2luZm8pOwppbnQgX19kcG1pX2ZyZWVfc2hhcmVkX21l
bW9yeSh1bnNpZ25lZCBsb25nIF9oYW5kbGUpOwppbnQgX19kcG1pX3NlcmlhbGl6ZV9vbl9zaGFy
ZWRfbWVtb3J5KHVuc2lnbmVkIGxvbmcgX2hhbmRsZSwgaW50IF9mbGFncyk7CmludCBfX2RwbWlf
ZnJlZV9zZXJpYWxpemF0aW9uX29uX3NoYXJlZF9tZW1vcnkodW5zaWduZWQgbG9uZyBfaGFuZGxl
LCBpbnQgX2ZsYWdzKTsKCmludCBfX2RwbWlfZ2V0X2NvcHJvY2Vzc29yX3N0YXR1cyh2b2lkKTsK
aW50IF9fZHBtaV9zZXRfY29wcm9jZXNzb3JfZW11bGF0aW9uKGludCBfZmxhZ3MpOwoKCgoKCgp0
eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgbG9uZyBhdmFpbGFibGVfbWVtb3J5OwogIHVuc2ln
bmVkIGxvbmcgYXZhaWxhYmxlX3BhZ2VzOwogIHVuc2lnbmVkIGxvbmcgYXZhaWxhYmxlX2xvY2th
YmxlX3BhZ2VzOwogIHVuc2lnbmVkIGxvbmcgbGluZWFyX3NwYWNlOwogIHVuc2lnbmVkIGxvbmcg
dW5sb2NrZWRfcGFnZXM7CiAgdW5zaWduZWQgbG9uZyBhdmFpbGFibGVfcGh5c2ljYWxfcGFnZXM7
CiAgdW5zaWduZWQgbG9uZyB0b3RhbF9waHlzaWNhbF9wYWdlczsKICB1bnNpZ25lZCBsb25nIGZy
ZWVfbGluZWFyX3NwYWNlOwogIHVuc2lnbmVkIGxvbmcgbWF4X3BhZ2VzX2luX3BhZ2luZ19maWxl
OwogIHVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWRbM107Cn0gX2dvMzJfZHBtaV9tZW1pbmZvOwoKCgoK
CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGxvbmcgc2l6ZTsKICB1bnNpZ25lZCBsb25n
IHBtX29mZnNldDsKICB1bnNpZ25lZCBzaG9ydCBwbV9zZWxlY3RvcjsKICB1bnNpZ25lZCBzaG9y
dCBybV9vZmZzZXQ7CiAgdW5zaWduZWQgc2hvcnQgcm1fc2VnbWVudDsKfSBfZ28zMl9kcG1pX3Nl
Z2luZm87CgoKaW50IF9nbzMyX2RwbWlfYWxsb2NhdGVfZG9zX21lbW9yeShfZ28zMl9kcG1pX3Nl
Z2luZm8gKmluZm8pOwoKCgppbnQgX2dvMzJfZHBtaV9mcmVlX2Rvc19tZW1vcnkoX2dvMzJfZHBt
aV9zZWdpbmZvICppbmZvKTsKCgppbnQgX2dvMzJfZHBtaV9yZXNpemVfZG9zX21lbW9yeShfZ28z
Ml9kcG1pX3NlZ2luZm8gKmluZm8pOwoKCgppbnQgX2dvMzJfZHBtaV9nZXRfcmVhbF9tb2RlX2lu
dGVycnVwdF92ZWN0b3IoaW50IHZlY3RvciwgX2dvMzJfZHBtaV9zZWdpbmZvICppbmZvKTsKaW50
IF9nbzMyX2RwbWlfc2V0X3JlYWxfbW9kZV9pbnRlcnJ1cHRfdmVjdG9yKGludCB2ZWN0b3IsIF9n
bzMyX2RwbWlfc2VnaW5mbyAqaW5mbyk7CgoKCgppbnQgX2dvMzJfZHBtaV9nZXRfcHJvdGVjdGVk
X21vZGVfaW50ZXJydXB0X3ZlY3RvcihpbnQgdmVjdG9yLCBfZ28zMl9kcG1pX3NlZ2luZm8gKmlu
Zm8pOwoKaW50IF9nbzMyX2RwbWlfc2V0X3Byb3RlY3RlZF9tb2RlX2ludGVycnVwdF92ZWN0b3Io
aW50IHZlY3RvciwgX2dvMzJfZHBtaV9zZWdpbmZvICppbmZvKTsKCgoKCmludCBfZ28zMl9kcG1p
X2NoYWluX3Byb3RlY3RlZF9tb2RlX2ludGVycnVwdF92ZWN0b3IoaW50IHZlY3RvciwgX2dvMzJf
ZHBtaV9zZWdpbmZvICppbmZvKTsKCgoKCmludCBfZ28zMl9kcG1pX2FsbG9jYXRlX2lyZXRfd3Jh
cHBlcihfZ28zMl9kcG1pX3NlZ2luZm8gKmluZm8pOwoKaW50IF9nbzMyX2RwbWlfZnJlZV9pcmV0
X3dyYXBwZXIoX2dvMzJfZHBtaV9zZWdpbmZvICppbmZvKTsKCgoKCgppbnQgX2dvMzJfZHBtaV9h
bGxvY2F0ZV9yZWFsX21vZGVfY2FsbGJhY2tfcmV0ZihfZ28zMl9kcG1pX3NlZ2luZm8gKmluZm8s
IF9fZHBtaV9yZWdzICpyZWdzKTsKCgoKaW50IF9nbzMyX2RwbWlfYWxsb2NhdGVfcmVhbF9tb2Rl
X2NhbGxiYWNrX2lyZXQoX2dvMzJfZHBtaV9zZWdpbmZvICppbmZvLCBfX2RwbWlfcmVncyAqcmVn
cyk7CgppbnQgX2dvMzJfZHBtaV9mcmVlX3JlYWxfbW9kZV9jYWxsYmFjayhfZ28zMl9kcG1pX3Nl
Z2luZm8gKmluZm8pOwoKCgoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBfZ28zMl9pbnRlcnJ1cHRf
c3RhY2tfc2l6ZTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX2dvMzJfcm1jYl9zdGFja19zaXplOwoK
CnVuc2lnbmVkIGxvbmcgX2dvMzJfZHBtaV9yZW1haW5pbmdfcGh5c2ljYWxfbWVtb3J5KHZvaWQp
Owp1bnNpZ25lZCBsb25nIF9nbzMyX2RwbWlfcmVtYWluaW5nX3ZpcnR1YWxfbWVtb3J5KHZvaWQp
OwoKCmludCBfZ28zMl9kcG1pX2xvY2tfY29kZSggdm9pZCAqX2xvY2thZGRyLCB1bnNpZ25lZCBs
b25nIF9sb2Nrc2l6ZSk7CmludCBfZ28zMl9kcG1pX2xvY2tfZGF0YSggdm9pZCAqX2xvY2thZGRy
LCB1bnNpZ25lZCBsb25nIF9sb2Nrc2l6ZSk7CgppbnQgX19kamdwcF9zZXRfcGFnZV9hdHRyaWJ1
dGVzKHZvaWQgKm91cl9hZGRyLCB1bnNpZ25lZCBsb25nIG51bV9ieXRlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBhdHRyaWJ1dGVzKTsKaW50IF9fZGpn
cHBfbWFwX3BoeXNpY2FsX21lbW9yeSh2b2lkICpvdXJfYWRkciwgdW5zaWduZWQgbG9uZyBudW1f
Ynl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwaHlz
X2FkZHIpOwojIDIzICIuLi9pbmNsdWRlL2FsbGVncm8vYWxkamdwcC5oIiAyCiMgMSAiL3Vzci9p
NTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvZ28zMi5oIiAxIDMKIyAxNiAiL3Vzci9pNTg2
LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvZ28zMi5oIiAzCiMgMSAiL3Vzci9pNTg2LXBjLW1z
ZG9zZGpncHAvc3lzLWluY2x1ZGUvc3lzL3ZlcnNpb24uaCIgMSAzCiMgMTcgIi91c3IvaTU4Ni1w
Yy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL2dvMzIuaCIgMiAzCiMgMSAiL3Vzci9pNTg2LXBjLW1z
ZG9zZGpncHAvc3lzLWluY2x1ZGUvc3lzL2RqdHlwZXMuaCIgMSAzCiMgMTggIi91c3IvaTU4Ni1w
Yy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL2dvMzIuaCIgMiAzCgoKCgoKCnR5cGVkZWYgc3RydWN0
IHsKICB1bnNpZ25lZCBsb25nIHNpemVfb2ZfdGhpc19zdHJ1Y3R1cmVfaW5fYnl0ZXM7CiAgdW5z
aWduZWQgbG9uZyBsaW5lYXJfYWRkcmVzc19vZl9wcmltYXJ5X3NjcmVlbjsKICB1bnNpZ25lZCBs
b25nIGxpbmVhcl9hZGRyZXNzX29mX3NlY29uZGFyeV9zY3JlZW47CiAgdW5zaWduZWQgbG9uZyBs
aW5lYXJfYWRkcmVzc19vZl90cmFuc2Zlcl9idWZmZXI7CiAgdW5zaWduZWQgbG9uZyBzaXplX29m
X3RyYW5zZmVyX2J1ZmZlcjsKICB1bnNpZ25lZCBsb25nIHBpZDsKICB1bnNpZ25lZCBjaGFyIG1h
c3Rlcl9pbnRlcnJ1cHRfY29udHJvbGxlcl9iYXNlOwogIHVuc2lnbmVkIGNoYXIgc2xhdmVfaW50
ZXJydXB0X2NvbnRyb2xsZXJfYmFzZTsKICB1bnNpZ25lZCBzaG9ydCBzZWxlY3Rvcl9mb3JfbGlu
ZWFyX21lbW9yeTsKICB1bnNpZ25lZCBsb25nIGxpbmVhcl9hZGRyZXNzX29mX3N0dWJfaW5mb19z
dHJ1Y3R1cmU7CiAgdW5zaWduZWQgbG9uZyBsaW5lYXJfYWRkcmVzc19vZl9vcmlnaW5hbF9wc3A7
CiAgdW5zaWduZWQgc2hvcnQgcnVuX21vZGU7CiAgdW5zaWduZWQgc2hvcnQgcnVuX21vZGVfaW5m
bzsKfSBfX0dvMzJfSW5mb19CbG9jazsKCmV4dGVybiBfX0dvMzJfSW5mb19CbG9jayBfZ28zMl9p
bmZvX2Jsb2NrOwoKCgoKCgoKIyAxICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVk
ZS9zeXMvbW92ZWRhdGEuaCIgMSAzCiMgNDkgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1p
bmNsdWRlL2dvMzIuaCIgMiAzCiMgMSAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1
ZGUvc3lzL3NlZ21lbnRzLmgiIDEgMwojIDE3ICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMt
aW5jbHVkZS9zeXMvc2VnbWVudHMuaCIgMwpzdGF0aWMgX19pbmxpbmVfXyBpbnQKX215X2NzKHZv
aWQpCnsKICB1bnNpZ25lZCBzaG9ydCByZXN1bHQ7CiAgX19hc21fXygibW92dyAlJWNzLCUwIiA6
ICI9ciIgKHJlc3VsdCkpOwogIHJldHVybiByZXN1bHQ7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGlu
dApfbXlfZHModm9pZCkKewogIHVuc2lnbmVkIHNob3J0IHJlc3VsdDsKICBfX2FzbV9fKCJtb3Z3
ICUlZHMsJTAiIDogIj1yIiAocmVzdWx0KSk7CiAgcmV0dXJuIHJlc3VsdDsKfQoKc3RhdGljIF9f
aW5saW5lX18gaW50Cl9teV9zcyh2b2lkKQp7CiAgdW5zaWduZWQgc2hvcnQgcmVzdWx0OwogIF9f
YXNtX18oIm1vdncgJSVzcywlMCIgOiAiPXIiIChyZXN1bHQpKTsKICByZXR1cm4gcmVzdWx0Owp9
CiMgNTAgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL2dvMzIuaCIgMiAzCiMg
NjAgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL2dvMzIuaCIgMwp1bnNpZ25l
ZCBfZ28zMl93YXNfY3RybF9icmVha19oaXQodm9pZCk7CnZvaWQgX2dvMzJfd2FudF9jdHJsX2Jy
ZWFrKGludCB5ZXMpOwojIDI0ICIuLi9pbmNsdWRlL2FsbGVncm8vYWxkamdwcC5oIiAyCiMgMSAi
L3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvZmNudGwuaCIgMSAzCiMgNDkgIi91
c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL2ZjbnRsLmgiIDMKIyAxICIvdXNyL2k1
ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgNTAgIi91c3Iv
aTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL2ZjbnRsLmgiIDIgMwoKc3RydWN0IGZsb2Nr
IHsKICBvZmZfdCBsX2xlbjsKICBwaWRfdCBsX3BpZDsKICBvZmZfdCBsX3N0YXJ0OwogIHNob3J0
IGxfdHlwZTsKICBzaG9ydCBsX3doZW5jZTsKfTsKCnN0cnVjdCBmbG9jazY0IHsKICBvZmZzZXRf
dCBsX2xlbjsKICBwaWRfdCBsX3BpZDsKICBvZmZzZXRfdCBsX3N0YXJ0OwogIHNob3J0IGxfdHlw
ZTsKICBzaG9ydCBsX3doZW5jZTsKfTsKCmV4dGVybiBpbnQgX2Ztb2RlOwoKaW50IG9wZW4oY29u
c3QgY2hhciAqX3BhdGgsIGludCBfb2ZsYWcsIC4uLik7CmludCBjcmVhdChjb25zdCBjaGFyICpf
cGF0aCwgbW9kZV90IF9tb2RlKTsKaW50IGZjbnRsKGludCBfZmlsZGVzLCBpbnQgX2NtZCwgLi4u
KTsKIyA5NCAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvZmNudGwuaCIgMwpl
eHRlcm4gaW50IF9fZGpncHBfc2hhcmVfZmxhZ3M7CiMgMTI2ICIvdXNyL2k1ODYtcGMtbXNkb3Nk
amdwcC9zeXMtaW5jbHVkZS9mY250bC5oIiAzCnVuc2lnbmVkIF9nZXRfdm9sdW1lX2luZm8gKGNv
bnN0IGNoYXIgKl9wYXRoLCBpbnQgKl9tYXhfZmlsZV9sZW4sIGludCAqX21heF9wYXRoX2xlbiwg
Y2hhciAqX2ZpbGVzeXN0eXBlKTsKY2hhciBfdXNlX2xmbiAoY29uc3QgY2hhciAqX3BhdGgpOwpj
aGFyICpfbGZuX2dlbl9zaG9ydF9mbmFtZSAoY29uc3QgY2hhciAqX2xvbmdfZm5hbWUsIGNoYXIg
Kl9zaG9ydF9mbmFtZSk7CmludCBfaXNfRE9TODMgKGNvbnN0IGNoYXIgKl9mbmFtZSk7CgoKCgp1
bnNpZ25lZCBfbGZuX2dldF9mdGltZSAoaW50IF9oYW5kbGUsIGludCBfd2hpY2gpOwoKY2hhciBf
cHJlc2VydmVfZm5jYXNlICh2b2lkKTsKIyAyNSAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsZGpncHAu
aCIgMgojIDEgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL3VuaXN0ZC5oIiAx
IDMKIyAxNiAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvdW5pc3RkLmgiIDMK
IyAxICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAz
CiMgMTcgIi91c3IvaTU4Ni1wYy1tc2Rvc2RqZ3BwL3N5cy1pbmNsdWRlL3VuaXN0ZC5oIiAyIDMK
IyAxICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS9zeXMvZGp0eXBlcy5oIiAx
IDMKIyAxOCAiL3Vzci9pNTg2LXBjLW1zZG9zZGpncHAvc3lzLWluY2x1ZGUvdW5pc3RkLmgiIDIg
MwojIDkwICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9zeXMtaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gY2hhciAqb3B0YXJnOwpleHRlcm4gaW50IG9wdGluZCwgb3B0ZXJyLCBvcHRvcHQ7Cgp2
b2lkIF9fZXhpdChpbnQgX3N0YXR1cykgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKdm9pZCBf
ZXhpdChpbnQgX3N0YXR1cykgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKaW50IGFjY2Vzcyhj
b25zdCBjaGFyICpfcGF0aCwgaW50IF9hbW9kZSk7CnVuc2lnbmVkIGludCBhbGFybSh1bnNpZ25l
ZCBpbnQgX3NlY29uZHMpOwppbnQgY2hkaXIoY29uc3QgY2hhciAqX3BhdGgpOwppbnQgY2hvd24o
Y29uc3QgY2hhciAqX3BhdGgsIHVpZF90IF9vd25lciwgZ2lkX3QgX2dyb3VwKTsKaW50IGNsb3Nl
KGludCBfZmlsZGVzKTsKc2l6ZV90IGNvbmZzdHIoaW50IF9uYW1lLCBjaGFyICpfYnVmLCBzaXpl
X3QgX2xlbik7CmNoYXIgKiBjdGVybWlkKGNoYXIgKl9zKTsKaW50IGR1cChpbnQgX2ZpbGRlcyk7
CmludCBkdXAyKGludCBfZmlsZGVzLCBpbnQgX2ZpbGRlczIpOwppbnQgZXhlY2woY29uc3QgY2hh
ciAqX3BhdGgsIGNvbnN0IGNoYXIgKl9hcmcsIC4uLik7CmludCBleGVjbGUoY29uc3QgY2hhciAq
X3BhdGgsIGNvbnN0IGNoYXIgKl9hcmcsIC4uLik7CmludCBleGVjbHAoY29uc3QgY2hhciAqX2Zp
bGUsIGNvbnN0IGNoYXIgKl9hcmcsIC4uLik7CmludCBleGVjdihjb25zdCBjaGFyICpfcGF0aCwg
Y2hhciAqY29uc3QgX2FyZ3ZbXSk7CmludCBleGVjdmUoY29uc3QgY2hhciAqX3BhdGgsIGNoYXIg
KmNvbnN0IF9hcmd2W10sIGNoYXIgKmNvbnN0IF9lbnZwW10pOwppbnQgZXhlY3ZwKGNvbnN0IGNo
YXIgKl9maWxlLCBjaGFyICpjb25zdCBfYXJndltdKTsKcGlkX3QgZm9yayh2b2lkKTsKbG9uZyBm
cGF0aGNvbmYoaW50IF9maWxkZXMsIGludCBfbmFtZSk7CmNoYXIgKiBnZXRjd2QoY2hhciAqX2J1
Ziwgc2l6ZV90IF9zaXplKTsKZ2lkX3QgZ2V0ZWdpZCh2b2lkKTsKdWlkX3QgZ2V0ZXVpZCh2b2lk
KTsKZ2lkX3QgZ2V0Z2lkKHZvaWQpOwppbnQgZ2V0Z3JvdXBzKGludCBfZ2lkc2V0c2l6ZSwgZ2lk
X3QgKl9ncm91cGxpc3QpOwpjaGFyICogZ2V0bG9naW4odm9pZCk7CmludCBnZXRvcHQoaW50IF9h
cmdjLCBjaGFyICpjb25zdCBfYXJndltdLCBjb25zdCBjaGFyICpfb3B0c3RyaW5nKTsKcGlkX3Qg
Z2V0cGdycCh2b2lkKTsKcGlkX3QgZ2V0cGlkKHZvaWQpOwpwaWRfdCBnZXRwcGlkKHZvaWQpOwp1
aWRfdCBnZXR1aWQodm9pZCk7CmludCBpc2F0dHkoaW50IF9maWxkZXMpOwppbnQgbGluayhjb25z
dCBjaGFyICpfZXhpc3RpbmcsIGNvbnN0IGNoYXIgKl9uZXcpOwpvZmZfdCBsc2VlayhpbnQgX2Zp
bGRlcywgb2ZmX3QgX29mZnNldCwgaW50IF93aGVuY2UpOwpsb25nIHBhdGhjb25mKGNvbnN0IGNo
YXIgKl9wYXRoLCBpbnQgX25hbWUpOwppbnQgcGF1c2Uodm9pZCk7CmludCBwaXBlKGludCBfZmls
ZGVzWzJdKTsKc3NpemVfdCByZWFkKGludCBfZmlsZGVzLCB2b2lkICpfYnVmLCBzaXplX3QgX25i
eXRlKTsKaW50IHJtZGlyKGNvbnN0IGNoYXIgKl9wYXRoKTsKaW50IHNldGdpZChnaWRfdCBfZ2lk
KTsKaW50IHNldHBnaWQocGlkX3QgX3BpZCwgcGlkX3QgX3BnaWQpOwpwaWRfdCBzZXRzaWQodm9p
ZCk7CmludCBzZXR1aWQodWlkX3QgdWlkKTsKdW5zaWduZWQgaW50IHNsZWVwKHVuc2lnbmVkIGlu
dCBfc2Vjb25kcyk7Cmxvbmcgc3lzY29uZihpbnQgX25hbWUpOwpwaWRfdCB0Y2dldHBncnAoaW50
IF9maWxkZXMpOwppbnQgdGNzZXRwZ3JwKGludCBfZmlsZGVzLCBwaWRfdCBfcGdycF9pZCk7CmNo
YXIgKiB0dHluYW1lKGludCBfZmlsZGVzKTsKaW50IHVubGluayhjb25zdCBjaGFyICpfcGF0aCk7
CnNzaXplX3Qgd3JpdGUoaW50IF9maWxkZXMsIGNvbnN0IHZvaWQgKl9idWYsIHNpemVfdCBfbmJ5
dGUpOwoKCgoKCgpjaGFyICogYmFzZW5hbWUoY29uc3QgY2hhciAqX2ZuKTsKaW50IGJyayh2b2lk
ICpfaGVhcHRvcCk7CmNoYXIgKiBkaXJuYW1lKGNvbnN0IGNoYXIgKl9mbik7CmludCBfX2ZpbGVf
ZXhpc3RzKGNvbnN0IGNoYXIgKl9mbik7CmludCBmc3luYyhpbnQgX2ZkKTsKaW50IGZ0cnVuY2F0
ZShpbnQsIG9mZl90KTsKaW50IGdldGR0YWJsZXNpemUodm9pZCk7CmludCBnZXRob3N0bmFtZShj
aGFyICpidWYsIGludCBzaXplKTsKaW50IGdldHBhZ2VzaXplKHZvaWQpOwpjaGFyICogZ2V0d2Qo
Y2hhciAqX19idWZmZXIpOwppbnQgbGNob3duKGNvbnN0IGNoYXIgKiBmaWxlLCBpbnQgb3duZXIs
IGludCBncm91cCk7CmludCBsb2NrZihpbnQgX2ZpbGRlcywgaW50IF9jbWQsIG9mZl90IF9sZW4p
OwppbnQgbGxvY2tmKGludCBfZmlsZGVzLCBpbnQgX2NtZCwgb2Zmc2V0X3QgX2xlbik7Cm9mZnNl
dF90IGxsc2VlayhpbnQgX2ZpbGRlcywgb2Zmc2V0X3QgX29mZnNldCwgaW50IF93aGVuY2UpOwpp
bnQgbmljZShpbnQgX2luY3JlbWVudCk7CmludCByZWFkbGluayhjb25zdCBjaGFyICogX19maWxl
LCBjaGFyICogX19idWZmZXIsIHNpemVfdCBfX3NpemUpOwp2b2lkICogc2JyayhpbnQgX2RlbHRh
KTsKaW50IHN5bWxpbmsgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IHN5bmModm9p
ZCk7CmludCB0cnVuY2F0ZShjb25zdCBjaGFyKiwgb2ZmX3QpOwp1bnNpZ25lZCBpbnQgdXNsZWVw
KHVuc2lnbmVkIGludCBfdXNlY29uZHMpOwoKcGlkX3QgdmZvcmsodm9pZCk7CiMgMjYgIi4uL2lu
Y2x1ZGUvYWxsZWdyby9hbGRqZ3BwLmgiIDIKIyAxICIvdXNyL2k1ODYtcGMtbXNkb3NkamdwcC9z
eXMtaW5jbHVkZS9zeXMvZmFycHRyLmgiIDEgMwojIDY1ICIvdXNyL2k1ODYtcGMtbXNkb3Nkamdw
cC9zeXMtaW5jbHVkZS9zeXMvZmFycHRyLmgiIDMKdm9pZCBfZmFycG9rZWIodW5zaWduZWQgc2hv
cnQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGNoYXIpOwp2b2lkIF9mYXJwb2tldyh1bnNpZ25l
ZCBzaG9ydCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgc2hvcnQpOwp2b2lkIF9mYXJwb2tlbCh1
bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CnVuc2lnbmVkIGNo
YXIgX2ZhcnBlZWtiKHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgc2hv
cnQgX2ZhcnBlZWt3KHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgbG9u
ZyBfZmFycGVla2wodW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIGxvbmcpOwp2b2lkIF9mYXJzZXRz
ZWwodW5zaWduZWQgc2hvcnQpOwp1bnNpZ25lZCBzaG9ydCBfZmFyZ2V0c2VsKHZvaWQpOwp2b2lk
IF9mYXJuc3Bva2ViKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGNoYXIpOwp2b2lkIF9mYXJuc3Bv
a2V3KHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIHNob3J0KTsKdm9pZCBfZmFybnNwb2tlbCh1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgY2hhciBfZmFybnNwZWVrYih1bnNp
Z25lZCBsb25nKTsKdW5zaWduZWQgc2hvcnQgX2Zhcm5zcGVla3codW5zaWduZWQgbG9uZyk7CnVu
c2lnbmVkIGxvbmcgX2Zhcm5zcGVla2wodW5zaWduZWQgbG9uZyk7CgpleHRlcm4gX19pbmxpbmVf
XyB2b2lkCl9mYXJwb2tlYih1bnNpZ25lZCBzaG9ydCBzZWxlY3RvciwKICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBvZmZzZXQsCiAgICAgICAgIHVuc2lnbmVkIGNoYXIgdmFsdWUpCnsKICBfX2FzbV9f
IF9fdm9sYXRpbGVfXyAoIm1vdncgJXcwLCUlZnNcbiIKICAgICAgIgkuYnl0ZSAweDY0IFxuIgog
ICAgICAiCW1vdmIgJWIxLCglazIpIgogICAgICA6CiAgICAgIDogInJtIiAoc2VsZWN0b3IpLCAi
cWkiICh2YWx1ZSksICJyIiAob2Zmc2V0KSk7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQKX2Zh
cnBva2V3KHVuc2lnbmVkIHNob3J0IHNlbGVjdG9yLAogICAgICAgICB1bnNpZ25lZCBsb25nIG9m
ZnNldCwKICAgICAgICAgdW5zaWduZWQgc2hvcnQgdmFsdWUpCnsKICBfX2FzbV9fIF9fdm9sYXRp
bGVfXyAoIm1vdncgJXcwLCUlZnMgXG4iCiAgICAgICIJLmJ5dGUgMHg2NCBcbiIKICAgICAgIglt
b3Z3ICV3MSwoJWsyKSIKICAgICAgOgogICAgICA6ICJybSIgKHNlbGVjdG9yKSwgInJpIiAodmFs
dWUpLCAiciIgKG9mZnNldCkpOwp9CgpleHRlcm4gX19pbmxpbmVfXyB2b2lkCl9mYXJwb2tlbCh1
bnNpZ25lZCBzaG9ydCBzZWxlY3RvciwKICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsCiAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUpCnsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm1v
dncgJXcwLCUlZnMgXG4iCiAgICAgICIJLmJ5dGUgMHg2NCBcbiIKICAgICAgIgltb3ZsICVrMSwo
JWsyKSIKICAgICAgOgogICAgICA6ICJybSIgKHNlbGVjdG9yKSwgInJpIiAodmFsdWUpLCAiciIg
KG9mZnNldCkpOwp9CgpleHRlcm4gX19pbmxpbmVfXyB1bnNpZ25lZCBjaGFyCl9mYXJwZWVrYih1
bnNpZ25lZCBzaG9ydCBzZWxlY3RvciwKICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQpCnsK
ICB1bnNpZ25lZCBjaGFyIHJlc3VsdDsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm1vdncgJXcx
LCUlZnMgXG4iCiAgICAgICIJLmJ5dGUgMHg2NCBcbiIKICAgICAgIgltb3ZiICglazIpLCViMCIK
ICAgICAgOiAiPXEiIChyZXN1bHQpCiAgICAgIDogInJtIiAoc2VsZWN0b3IpLCAiciIgKG9mZnNl
dCkpOwogIHJldHVybiByZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZV9fIHVuc2lnbmVkIHNob3J0
Cl9mYXJwZWVrdyh1bnNpZ25lZCBzaG9ydCBzZWxlY3RvciwKICAgICAgICAgdW5zaWduZWQgbG9u
ZyBvZmZzZXQpCnsKICB1bnNpZ25lZCBzaG9ydCByZXN1bHQ7CiAgX19hc21fXyBfX3ZvbGF0aWxl
X18gKCJtb3Z3ICV3MSwgJSVmcyBcbiIKICAgICAgIgkuYnl0ZSAweDY0IFxuIgogICAgICAiCW1v
dncgKCVrMiksJXcwIFxuIgogICAgICA6ICI9ciIgKHJlc3VsdCkKICAgICAgOiAicm0iIChzZWxl
Y3RvciksICJyIiAob2Zmc2V0KSk7CiAgcmV0dXJuIHJlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5l
X18gdW5zaWduZWQgbG9uZwpfZmFycGVla2wodW5zaWduZWQgc2hvcnQgc2VsZWN0b3IsCiAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQp7CiAgdW5zaWduZWQgbG9uZyByZXN1bHQ7CiAgX19h
c21fXyBfX3ZvbGF0aWxlX18gKCJtb3Z3ICV3MSwlJWZzXG4iCiAgICAgICIJLmJ5dGUgMHg2NFxu
IgogICAgICAiCW1vdmwgKCVrMiksJWswIgogICAgICA6ICI9ciIgKHJlc3VsdCkKICAgICAgOiAi
cm0iIChzZWxlY3RvciksICJyIiAob2Zmc2V0KSk7CiAgcmV0dXJuIHJlc3VsdDsKfQoKZXh0ZXJu
IF9faW5saW5lX18gdm9pZApfZmFyc2V0c2VsKHVuc2lnbmVkIHNob3J0IHNlbGVjdG9yKQp7CiAg
X19hc21fXyBfX3ZvbGF0aWxlX18gKCJtb3Z3ICV3MCwlJWZzIgogICAgICA6CiAgICAgIDogInJt
IiAoc2VsZWN0b3IpKTsKfQoKZXh0ZXJuIF9faW5saW5lX18gdW5zaWduZWQgc2hvcnQKX2Zhcmdl
dHNlbCh2b2lkKQp7CiAgdW5zaWduZWQgc2hvcnQgc2VsZWN0b3I7CiAgX19hc21fXyBfX3ZvbGF0
aWxlX18gKCJtb3Z3ICUlZnMsJXcwIFxuIgogICAgICA6ICI9ciIgKHNlbGVjdG9yKQogICAgICA6
ICk7CiAgcmV0dXJuIHNlbGVjdG9yOwp9CgpleHRlcm4gX19pbmxpbmVfXyB2b2lkCl9mYXJuc3Bv
a2ViKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LAogICAgICAgICB1bnNpZ25lZCBjaGFyIHZhbHVlKQp7
CiAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIuYnl0ZSAweDY0XG4iCiAgICAgICIJbW92YiAlYjAs
KCVrMSkiCiAgICAgIDoKICAgICAgOiAicWkiICh2YWx1ZSksICJyIiAob2Zmc2V0KSk7Cn0KCmV4
dGVybiBfX2lubGluZV9fIHZvaWQKX2Zhcm5zcG9rZXcodW5zaWduZWQgbG9uZyBvZmZzZXQsCiAg
ICAgICAgIHVuc2lnbmVkIHNob3J0IHZhbHVlKQp7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIu
Ynl0ZSAweDY0XG4iCiAgICAgICIJbW92dyAldzAsKCVrMSkiCiAgICAgIDoKICAgICAgOiAicmki
ICh2YWx1ZSksICJyIiAob2Zmc2V0KSk7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQKX2Zhcm5z
cG9rZWwodW5zaWduZWQgbG9uZyBvZmZzZXQsCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUp
CnsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIi5ieXRlIDB4NjRcbiIKICAgICAgIgltb3ZsICVr
MCwoJWsxKSIKICAgICAgOgogICAgICA6ICJyaSIgKHZhbHVlKSwgInIiIChvZmZzZXQpKTsKfQoK
ZXh0ZXJuIF9faW5saW5lX18gdW5zaWduZWQgY2hhcgpfZmFybnNwZWVrYih1bnNpZ25lZCBsb25n
IG9mZnNldCkKewogIHVuc2lnbmVkIGNoYXIgcmVzdWx0OwogIF9fYXNtX18gX192b2xhdGlsZV9f
ICgiLmJ5dGUgMHg2NFxuIgogICAgICAiCW1vdmIgKCVrMSksJWIwIgogICAgICA6ICI9cSIgKHJl
c3VsdCkKICAgICAgOiAiciIgKG9mZnNldCkpOwogIHJldHVybiByZXN1bHQ7Cn0KCmV4dGVybiBf
X2lubGluZV9fIHVuc2lnbmVkIHNob3J0Cl9mYXJuc3BlZWt3KHVuc2lnbmVkIGxvbmcgb2Zmc2V0
KQp7CiAgdW5zaWduZWQgc2hvcnQgcmVzdWx0OwogIF9fYXNtX18gX192b2xhdGlsZV9fICgiLmJ5
dGUgMHg2NFxuIgogICAgICAiCW1vdncgKCVrMSksJXcwIgogICAgICA6ICI9ciIgKHJlc3VsdCkK
ICAgICAgOiAiciIgKG9mZnNldCkpOwogIHJldHVybiByZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGlu
ZV9fIHVuc2lnbmVkIGxvbmcKX2Zhcm5zcGVla2wodW5zaWduZWQgbG9uZyBvZmZzZXQpCnsKICB1
bnNpZ25lZCBsb25nIHJlc3VsdDsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIi5ieXRlIDB4NjRc
biIKICAgICAgIgltb3ZsICglazEpLCVrMCIKICAgICAgOiAiPXIiIChyZXN1bHQpCiAgICAgIDog
InIiIChvZmZzZXQpKTsKICByZXR1cm4gcmVzdWx0Owp9CiMgMjcgIi4uL2luY2x1ZGUvYWxsZWdy
by9hbGRqZ3BwLmgiIDIKIyAzOSAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsZGpncHAuaCIKdm9pZCBf
dW5sb2NrX2RwbWlfZGF0YSh2b2lkICphZGRyLCBpbnQgc2l6ZSk7CiMgNzcgIi4uL2luY2x1ZGUv
YWxsZWdyby9hbGRqZ3BwLmgiCmV4dGVybiBpbmxpbmUKCnZvaWQgYm1wX3dyaXRlMjQodW5zaWdu
ZWQgbG9uZyBhZGRyLCBpbnQgYykKewogICBfZmFybnNwb2tldyhhZGRyLCBjJjB4RkZGRik7CiAg
IF9mYXJuc3Bva2ViKGFkZHIrMiwgYz4+MTYpOwp9CiMgMzQgIi4uL2luY2x1ZGUvYWxsZWdyby9h
bGNvbmZpZy5oIiAyCiMgNDQgIi4uL2luY2x1ZGUvYWxsZWdyby5oIiAyCiMgNzIgIi4uL2luY2x1
ZGUvYWxsZWdyby5oIgp0eXBlZGVmIGxvbmcgZml4ZWQ7CgpzdHJ1Y3QgUkdCOwpzdHJ1Y3QgQklU
TUFQOwpzdHJ1Y3QgUkxFX1NQUklURTsKc3RydWN0IEZPTlRfR0xZUEg7CnN0cnVjdCBHRlhfVlRB
QkxFOwpzdHJ1Y3QgU0FNUExFOwpzdHJ1Y3QgTUlESTsKCgoKZXh0ZXJuIGNoYXIgYWxsZWdyb19p
ZFtdOwpleHRlcm4gY2hhciBhbGxlZ3JvX2Vycm9yW107CiMgMTA4ICIuLi9pbmNsdWRlL2FsbGVn
cm8uaCIKZXh0ZXJuIGludCBvc190eXBlOwpleHRlcm4gaW50IG9zX3ZlcnNpb247CmV4dGVybiBp
bnQgb3NfcmV2aXNpb247CmV4dGVybiBpbnQgb3NfbXVsdGl0YXNraW5nOwoKZXh0ZXJuIGludCAq
IGFsbGVncm9fZXJybm87CgoKCgppbnQgaW5zdGFsbF9hbGxlZ3JvIChpbnQgc3lzdGVtX2lkLCBp
bnQgKmVycm5vX3B0ciwgaW50ICgqYXRleGl0X3B0cikgKHZvaWQgKCpmdW5jKSAodm9pZCkpKTsK
CnZvaWQgYWxsZWdyb19leGl0ICh2b2lkKTsKCnZvaWQgY2hlY2tfY3B1ICh2b2lkKTsKCmV4dGVy
biBjaGFyIGNwdV92ZW5kb3JbXTsKZXh0ZXJuIGludCBjcHVfZmFtaWx5OwpleHRlcm4gaW50IGNw
dV9tb2RlbDsKZXh0ZXJuIGludCBjcHVfZnB1OwpleHRlcm4gaW50IGNwdV9tbXg7CmV4dGVybiBp
bnQgY3B1X3NzZTsKZXh0ZXJuIGludCBjcHVfM2Rub3c7CmV4dGVybiBpbnQgY3B1X2NwdWlkOwoK
dm9pZCBsb2NrX2JpdG1hcCAoc3RydWN0IEJJVE1BUCAqYm1wKTsKdm9pZCBsb2NrX3NhbXBsZSAo
c3RydWN0IFNBTVBMRSAqc3BsKTsKdm9pZCBsb2NrX21pZGkgKHN0cnVjdCBNSURJICptaWRpKTsK
CnZvaWQgYWxsZWdyb19tZXNzYWdlIChjb25zdCBjaGFyICptc2csIC4uLikgX19hdHRyaWJ1dGVf
XyAoKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwoKdm9pZCBhbF9hc3NlcnQgKGNvbnN0IGNoYXIg
KmZpbGUsIGludCBsaW5lKTsKdm9pZCBhbF90cmFjZSAoY29uc3QgY2hhciAqbXNnLCAuLi4pIF9f
YXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKTsKCnZvaWQgcmVnaXN0ZXJfYXNz
ZXJ0X2hhbmRsZXIgKGludCAoKmhhbmRsZXIpIChjb25zdCBjaGFyICptc2cpKTsKdm9pZCByZWdp
c3Rlcl90cmFjZV9oYW5kbGVyIChpbnQgKCpoYW5kbGVyKSAoY29uc3QgY2hhciAqbXNnKSk7CiMg
MTU1ICIuLi9pbmNsdWRlL2FsbGVncm8uaCIKdHlwZWRlZiBzdHJ1Y3QgX0RSSVZFUl9JTkZPCnsK
ICAgaW50IGlkOwogICB2b2lkICpkcml2ZXI7CiAgIGludCBhdXRvZGV0ZWN0Owp9IF9EUklWRVJf
SU5GTzsKCgp0eXBlZGVmIHN0cnVjdCBTWVNURU1fRFJJVkVSCnsKICAgaW50IGlkOwogICBjb25z
dCBjaGFyICpuYW1lOwogICBjb25zdCBjaGFyICpkZXNjOwogICBjb25zdCBjaGFyICphc2NpaV9u
YW1lOwogICBpbnQgKCppbml0KSAodm9pZCk7CiAgIHZvaWQgKCpleGl0KSAodm9pZCk7CiAgIHZv
aWQgKCpnZXRfZXhlY3V0YWJsZV9uYW1lKSAoY2hhciAqb3V0cHV0LCBpbnQgc2l6ZSk7CiAgIGlu
dCAoKmZpbmRfcmVzb3VyY2UpIChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpyZXNvdXJjZSwgaW50
IHNpemUpOwogICB2b2lkICgqc2V0X3dpbmRvd190aXRsZSkgKGNvbnN0IGNoYXIgKm5hbWUpOwog
ICBpbnQgKCpzZXRfd2luZG93X2Nsb3NlX2J1dHRvbikgKGludCBlbmFibGUpOwogICB2b2lkICgq
c2V0X3dpbmRvd19jbG9zZV9ob29rKSAodm9pZCAoKnByb2MpICh2b2lkKSk7CiAgIHZvaWQgKCpt
ZXNzYWdlKSAoY29uc3QgY2hhciAqbXNnKTsKICAgdm9pZCAoKmFzc2VydCkgKGNvbnN0IGNoYXIg
Km1zZyk7CiAgIHZvaWQgKCpzYXZlX2NvbnNvbGVfc3RhdGUpICh2b2lkKTsKICAgdm9pZCAoKnJl
c3RvcmVfY29uc29sZV9zdGF0ZSkgKHZvaWQpOwogICBzdHJ1Y3QgQklUTUFQICogKCpjcmVhdGVf
Yml0bWFwKSAoaW50IGNvbG9yX2RlcHRoLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICB2b2lk
ICgqY3JlYXRlZF9iaXRtYXApIChzdHJ1Y3QgQklUTUFQICpibXApOwogICBzdHJ1Y3QgQklUTUFQ
ICogKCpjcmVhdGVfc3ViX2JpdG1hcCkgKHN0cnVjdCBCSVRNQVAgKnBhcmVudCwgaW50IHgsIGlu
dCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICB2b2lkICgqY3JlYXRlZF9zdWJfYml0bWFw
KSAoc3RydWN0IEJJVE1BUCAqYm1wLCBzdHJ1Y3QgQklUTUFQICpwYXJlbnQpOwogICBpbnQgKCpk
ZXN0cm95X2JpdG1hcCkgKHN0cnVjdCBCSVRNQVAgKmJpdG1hcCk7CiAgIHZvaWQgKCpyZWFkX2hh
cmR3YXJlX3BhbGV0dGUpICh2b2lkKTsKICAgdm9pZCAoKnNldF9wYWxldHRlX3JhbmdlKSAoY29u
c3Qgc3RydWN0IFJHQiAqcCwgaW50IGZyb20sIGludCB0bywgaW50IHJldHJhY2VzeW5jKTsKICAg
c3RydWN0IEdGWF9WVEFCTEUgKiAoKmdldF92dGFibGUpIChpbnQgY29sb3JfZGVwdGgpOwogICBp
bnQgKCpzZXRfZGlzcGxheV9zd2l0Y2hfbW9kZSkgKGludCBtb2RlKTsKICAgaW50ICgqc2V0X2Rp
c3BsYXlfc3dpdGNoX2NhbGxiYWNrKSAoaW50IGRpciwgdm9pZCAoKmNiKSAodm9pZCkpOwogICB2
b2lkICgqcmVtb3ZlX2Rpc3BsYXlfc3dpdGNoX2NhbGxiYWNrKSAodm9pZCAoKmNiKSAodm9pZCkp
OwogICB2b2lkICgqZGlzcGxheV9zd2l0Y2hfbG9jaykgKGludCBsb2NrLCBpbnQgZm9yZWdyb3Vu
ZCk7CiAgIGludCAoKmRlc2t0b3BfY29sb3JfZGVwdGgpICh2b2lkKTsKICAgaW50ICgqZ2V0X2Rl
c2t0b3BfcmVzb2x1dGlvbikgKGludCAqd2lkdGgsIGludCAqaGVpZ2h0KTsKICAgdm9pZCAoKnlp
ZWxkX3RpbWVzbGljZSkgKHZvaWQpOwogICBfRFJJVkVSX0lORk8gKiAoKmdmeF9kcml2ZXJzKSAo
dm9pZCk7CiAgIF9EUklWRVJfSU5GTyAqICgqZGlnaV9kcml2ZXJzKSAodm9pZCk7CiAgIF9EUklW
RVJfSU5GTyAqICgqbWlkaV9kcml2ZXJzKSAodm9pZCk7CiAgIF9EUklWRVJfSU5GTyAqICgqa2V5
Ym9hcmRfZHJpdmVycykgKHZvaWQpOwogICBfRFJJVkVSX0lORk8gKiAoKm1vdXNlX2RyaXZlcnMp
ICh2b2lkKTsKICAgX0RSSVZFUl9JTkZPICogKCpqb3lzdGlja19kcml2ZXJzKSAodm9pZCk7CiAg
IF9EUklWRVJfSU5GTyAqICgqdGltZXJfZHJpdmVycykgKHZvaWQpOwp9IFNZU1RFTV9EUklWRVI7
CgoKZXh0ZXJuIFNZU1RFTV9EUklWRVIgc3lzdGVtX25vbmU7CmV4dGVybiBTWVNURU1fRFJJVkVS
ICogc3lzdGVtX2RyaXZlcjsKZXh0ZXJuIF9EUklWRVJfSU5GTyBfc3lzdGVtX2RyaXZlcl9saXN0
W107CiMgMjIxICIuLi9pbmNsdWRlL2FsbGVncm8uaCIKdm9pZCBzZXRfdWZvcm1hdCAoaW50IHR5
cGUpOwppbnQgZ2V0X3Vmb3JtYXQgKHZvaWQpOwp2b2lkIHJlZ2lzdGVyX3Vmb3JtYXQgKGludCB0
eXBlLCBpbnQgKCp1X2dldGMpIChjb25zdCBjaGFyICpzKSwgaW50ICgqdV9nZXR4KSAoY2hhciAq
KnMpLCBpbnQgKCp1X3NldGMpIChjaGFyICpzLCBpbnQgYyksIGludCAoKnVfd2lkdGgpIChjb25z
dCBjaGFyICpzKSwgaW50ICgqdV9jd2lkdGgpIChpbnQgYyksIGludCAoKnVfaXNvaykgKGludCBj
KSwgaW50IHVfd2lkdGhfbWF4KTsKdm9pZCBzZXRfdWNvZGVwYWdlIChjb25zdCB1bnNpZ25lZCBz
aG9ydCAqdGFibGUsIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpleHRyYXMpOwoKaW50IG5lZWRfdWNv
bnZlcnQgKGNvbnN0IGNoYXIgKnMsIGludCB0eXBlLCBpbnQgbmV3dHlwZSk7CmludCB1Y29udmVy
dF9zaXplIChjb25zdCBjaGFyICpzLCBpbnQgdHlwZSwgaW50IG5ld3R5cGUpOwp2b2lkIGRvX3Vj
b252ZXJ0IChjb25zdCBjaGFyICpzLCBpbnQgdHlwZSwgY2hhciAqYnVmLCBpbnQgbmV3dHlwZSwg
aW50IHNpemUpOwpjaGFyICogdWNvbnZlcnQgKGNvbnN0IGNoYXIgKnMsIGludCB0eXBlLCBjaGFy
ICpidWYsIGludCBuZXd0eXBlLCBpbnQgc2l6ZSk7CmludCB1d2lkdGhfbWF4IChpbnQgdHlwZSk7
CgoKCgoKCmV4dGVybiBjaGFyIGVtcHR5X3N0cmluZ1tdOwoKZXh0ZXJuIGludCAoKnVnZXRjKSAo
Y29uc3QgY2hhciAqcyk7CmV4dGVybiBpbnQgKCp1Z2V0eCkgKGNoYXIgKipzKTsKZXh0ZXJuIGlu
dCAoKnVnZXR4YykgKGNvbnN0IGNoYXIgKipzKTsKZXh0ZXJuIGludCAoKnVzZXRjKSAoY2hhciAq
cywgaW50IGMpOwpleHRlcm4gaW50ICgqdXdpZHRoKSAoY29uc3QgY2hhciAqcyk7CmV4dGVybiBp
bnQgKCp1Y3dpZHRoKSAoaW50IGMpOwpleHRlcm4gaW50ICgqdWlzb2spIChpbnQgYyk7CmludCB1
b2Zmc2V0IChjb25zdCBjaGFyICpzLCBpbnQgaW5kZXgpOwppbnQgdWdldGF0IChjb25zdCBjaGFy
ICpzLCBpbnQgaW5kZXgpOwppbnQgdXNldGF0IChjaGFyICpzLCBpbnQgaW5kZXgsIGludCBjKTsK
aW50IHVpbnNlcnQgKGNoYXIgKnMsIGludCBpbmRleCwgaW50IGMpOwppbnQgdXJlbW92ZSAoY2hh
ciAqcywgaW50IGluZGV4KTsKaW50IHV0b2xvd2VyIChpbnQgYyk7CmludCB1dG91cHBlciAoaW50
IGMpOwppbnQgdWlzc3BhY2UgKGludCBjKTsKaW50IHVpc2RpZ2l0IChpbnQgYyk7CmludCB1c3Ry
c2l6ZSAoY29uc3QgY2hhciAqcyk7CmludCB1c3Ryc2l6ZXogKGNvbnN0IGNoYXIgKnMpOwpjaGFy
ICogX3VzdHJkdXAgKGNvbnN0IGNoYXIgKnNyYywgdm9pZCAqICgqbWFsbG9jX2Z1bmMpIChzaXpl
X3QpKTsKY2hhciAqIHVzdHJ6Y3B5IChjaGFyICpkZXN0LCBpbnQgc2l6ZSwgY29uc3QgY2hhciAq
c3JjKTsKY2hhciAqIHVzdHJ6Y2F0IChjaGFyICpkZXN0LCBpbnQgc2l6ZSwgY29uc3QgY2hhciAq
c3JjKTsKaW50IHVzdHJsZW4gKGNvbnN0IGNoYXIgKnMpOwppbnQgdXN0cmNtcCAoY29uc3QgY2hh
ciAqczEsIGNvbnN0IGNoYXIgKnMyKTsKY2hhciAqIHVzdHJ6bmNweSAoY2hhciAqZGVzdCwgaW50
IHNpemUsIGNvbnN0IGNoYXIgKnNyYywgaW50IG4pOwpjaGFyICogdXN0cnpuY2F0IChjaGFyICpk
ZXN0LCBpbnQgc2l6ZSwgY29uc3QgY2hhciAqc3JjLCBpbnQgbik7CmludCB1c3RybmNtcCAoY29u
c3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBpbnQgbik7CmludCB1c3RyaWNtcCAoY29uc3Qg
Y2hhciAqczEsIGNvbnN0IGNoYXIgKnMyKTsKY2hhciAqIHVzdHJsd3IgKGNoYXIgKnMpOwpjaGFy
ICogdXN0cnVwciAoY2hhciAqcyk7CmNoYXIgKiB1c3RyY2hyIChjb25zdCBjaGFyICpzLCBpbnQg
Yyk7CmNoYXIgKiB1c3RycmNociAoY29uc3QgY2hhciAqcywgaW50IGMpOwpjaGFyICogdXN0cnN0
ciAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyKTsKY2hhciAqIHVzdHJwYnJrIChjb25z
dCBjaGFyICpzLCBjb25zdCBjaGFyICpzZXQpOwpjaGFyICogdXN0cnRvayAoY2hhciAqcywgY29u
c3QgY2hhciAqc2V0KTsKY2hhciAqIHVzdHJ0b2tfciAoY2hhciAqcywgY29uc3QgY2hhciAqc2V0
LCBjaGFyICoqbGFzdCk7CmRvdWJsZSB1YXRvZiAoY29uc3QgY2hhciAqcyk7CmxvbmcgdXN0cnRv
bCAoY29uc3QgY2hhciAqcywgY2hhciAqKmVuZHAsIGludCBiYXNlKTsKZG91YmxlIHVzdHJ0b2Qg
KGNvbnN0IGNoYXIgKnMsIGNoYXIgKiplbmRwKTsKY29uc3QgY2hhciAqIHVzdHJlcnJvciAoaW50
IGVycik7CmludCB1c3pwcmludGYgKGNoYXIgKmJ1ZiwgaW50IHNpemUsIGNvbnN0IGNoYXIgKmZv
cm1hdCwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDMsIDQpKSk7CmludCB1
dnN6cHJpbnRmIChjaGFyICpidWYsIGludCBzaXplLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xp
c3QgYXJncyk7CmludCB1c3ByaW50ZiAoY2hhciAqYnVmLCBjb25zdCBjaGFyICpmb3JtYXQsIC4u
LikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAyLCAzKSkpOwojIDI5NSAiLi4vaW5j
bHVkZS9hbGxlZ3JvLmgiCnZvaWQgc2V0X2NvbmZpZ19maWxlIChjb25zdCBjaGFyICpmaWxlbmFt
ZSk7CnZvaWQgc2V0X2NvbmZpZ19kYXRhIChjb25zdCBjaGFyICpkYXRhLCBpbnQgbGVuZ3RoKTsK
dm9pZCBvdmVycmlkZV9jb25maWdfZmlsZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwp2b2lkIG92
ZXJyaWRlX2NvbmZpZ19kYXRhIChjb25zdCBjaGFyICpkYXRhLCBpbnQgbGVuZ3RoKTsKdm9pZCBm
bHVzaF9jb25maWdfZmlsZSAodm9pZCk7CnZvaWQgcmVsb2FkX2NvbmZpZ190ZXh0cyAoY29uc3Qg
Y2hhciAqbmV3X2xhbmd1YWdlKTsKCnZvaWQgcHVzaF9jb25maWdfc3RhdGUgKHZvaWQpOwp2b2lk
IHBvcF9jb25maWdfc3RhdGUgKHZvaWQpOwoKdm9pZCBob29rX2NvbmZpZ19zZWN0aW9uIChjb25z
dCBjaGFyICpzZWN0aW9uLCBpbnQgKCppbnRnZXR0ZXIpIChjb25zdCBjaGFyICosIGludCksIGNv
bnN0IGNoYXIgKiAoKnN0cmluZ2dldHRlcikgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSwg
dm9pZCAoKnN0cmluZ3NldHRlcikgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSk7CmludCBj
b25maWdfaXNfaG9va2VkIChjb25zdCBjaGFyICpzZWN0aW9uKTsKCmNvbnN0IGNoYXIgKiBnZXRf
Y29uZmlnX3N0cmluZyAoY29uc3QgY2hhciAqc2VjdGlvbiwgY29uc3QgY2hhciAqbmFtZSwgY29u
c3QgY2hhciAqZGVmKTsKaW50IGdldF9jb25maWdfaW50IChjb25zdCBjaGFyICpzZWN0aW9uLCBj
b25zdCBjaGFyICpuYW1lLCBpbnQgZGVmKTsKaW50IGdldF9jb25maWdfaGV4IChjb25zdCBjaGFy
ICpzZWN0aW9uLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgZGVmKTsKZmxvYXQgZ2V0X2NvbmZpZ19m
bG9hdCAoY29uc3QgY2hhciAqc2VjdGlvbiwgY29uc3QgY2hhciAqbmFtZSwgZmxvYXQgZGVmKTsK
aW50IGdldF9jb25maWdfaWQgKGNvbnN0IGNoYXIgKnNlY3Rpb24sIGNvbnN0IGNoYXIgKm5hbWUs
IGludCBkZWYpOwpjaGFyICoqIGdldF9jb25maWdfYXJndiAoY29uc3QgY2hhciAqc2VjdGlvbiwg
Y29uc3QgY2hhciAqbmFtZSwgaW50ICphcmdjKTsKY29uc3QgY2hhciAqIGdldF9jb25maWdfdGV4
dCAoY29uc3QgY2hhciAqbXNnKTsKCnZvaWQgc2V0X2NvbmZpZ19zdHJpbmcgKGNvbnN0IGNoYXIg
KnNlY3Rpb24sIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbCk7CnZvaWQgc2V0X2Nv
bmZpZ19pbnQgKGNvbnN0IGNoYXIgKnNlY3Rpb24sIGNvbnN0IGNoYXIgKm5hbWUsIGludCB2YWwp
Owp2b2lkIHNldF9jb25maWdfaGV4IChjb25zdCBjaGFyICpzZWN0aW9uLCBjb25zdCBjaGFyICpu
YW1lLCBpbnQgdmFsKTsKdm9pZCBzZXRfY29uZmlnX2Zsb2F0IChjb25zdCBjaGFyICpzZWN0aW9u
LCBjb25zdCBjaGFyICpuYW1lLCBmbG9hdCB2YWwpOwp2b2lkIHNldF9jb25maWdfaWQgKGNvbnN0
IGNoYXIgKnNlY3Rpb24sIGNvbnN0IGNoYXIgKm5hbWUsIGludCB2YWwpOwojIDMzMiAiLi4vaW5j
bHVkZS9hbGxlZ3JvLmgiCnR5cGVkZWYgc3RydWN0IE1PVVNFX0RSSVZFUgp7CiAgIGludCBpZDsK
ICAgY29uc3QgY2hhciAqbmFtZTsKICAgY29uc3QgY2hhciAqZGVzYzsKICAgY29uc3QgY2hhciAq
YXNjaWlfbmFtZTsKICAgaW50ICgqaW5pdCkgKHZvaWQpOwogICB2b2lkICgqZXhpdCkgKHZvaWQp
OwogICB2b2lkICgqcG9sbCkgKHZvaWQpOwogICB2b2lkICgqdGltZXJfcG9sbCkgKHZvaWQpOwog
ICB2b2lkICgqcG9zaXRpb24pIChpbnQgeCwgaW50IHkpOwogICB2b2lkICgqc2V0X3JhbmdlKSAo
aW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyKTsKICAgdm9pZCAoKnNldF9zcGVlZCkgKGlu
dCB4c3BlZWQsIGludCB5c3BlZWQpOwogICB2b2lkICgqZ2V0X21pY2tleXMpIChpbnQgKm1pY2tl
eXgsIGludCAqbWlja2V5eSk7CiAgIGludCAoKmFuYWx5c2VfZGF0YSkgKGNvbnN0IGNoYXIgKmJ1
ZmZlciwgaW50IHNpemUpOwp9IE1PVVNFX0RSSVZFUjsKCgpleHRlcm4gTU9VU0VfRFJJVkVSIG1v
dXNlZHJ2X25vbmU7CmV4dGVybiBNT1VTRV9EUklWRVIgKiBtb3VzZV9kcml2ZXI7CmV4dGVybiBf
RFJJVkVSX0lORk8gX21vdXNlX2RyaXZlcl9saXN0W107CgppbnQgaW5zdGFsbF9tb3VzZSAodm9p
ZCk7CnZvaWQgcmVtb3ZlX21vdXNlICh2b2lkKTsKCmludCBwb2xsX21vdXNlICh2b2lkKTsKaW50
IG1vdXNlX25lZWRzX3BvbGwgKHZvaWQpOwoKZXh0ZXJuIHN0cnVjdCBCSVRNQVAgKiBtb3VzZV9z
cHJpdGU7CmV4dGVybiBpbnQgbW91c2VfeF9mb2N1czsKZXh0ZXJuIGludCBtb3VzZV95X2ZvY3Vz
OwoKZXh0ZXJuIHZvbGF0aWxlIGludCBtb3VzZV94OwpleHRlcm4gdm9sYXRpbGUgaW50IG1vdXNl
X3k7CmV4dGVybiB2b2xhdGlsZSBpbnQgbW91c2VfejsKZXh0ZXJuIHZvbGF0aWxlIGludCBtb3Vz
ZV9iOwpleHRlcm4gdm9sYXRpbGUgaW50IG1vdXNlX3BvczsKCmV4dGVybiB2b2xhdGlsZSBpbnQg
ZnJlZXplX21vdXNlX2ZsYWc7CiMgMzgxICIuLi9pbmNsdWRlL2FsbGVncm8uaCIKZXh0ZXJuIHZv
aWQgKCptb3VzZV9jYWxsYmFjaykgKGludCBmbGFncyk7Cgp2b2lkIHNob3dfbW91c2UgKHN0cnVj
dCBCSVRNQVAgKmJtcCk7CnZvaWQgc2NhcmVfbW91c2UgKHZvaWQpOwp2b2lkIHNjYXJlX21vdXNl
X2FyZWEgKGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKTsKdm9pZCB1bnNjYXJlX21vdXNlICh2
b2lkKTsKdm9pZCBwb3NpdGlvbl9tb3VzZSAoaW50IHgsIGludCB5KTsKdm9pZCBwb3NpdGlvbl9t
b3VzZV96IChpbnQgeik7CnZvaWQgc2V0X21vdXNlX3JhbmdlIChpbnQgeDEsIGludCB5MSwgaW50
IHgyLCBpbnQgeTIpOwp2b2lkIHNldF9tb3VzZV9zcGVlZCAoaW50IHhzcGVlZCwgaW50IHlzcGVl
ZCk7CnZvaWQgc2V0X21vdXNlX3Nwcml0ZSAoc3RydWN0IEJJVE1BUCAqc3ByaXRlKTsKdm9pZCBz
ZXRfbW91c2Vfc3ByaXRlX2ZvY3VzIChpbnQgeCwgaW50IHkpOwp2b2lkIGdldF9tb3VzZV9taWNr
ZXlzIChpbnQgKm1pY2tleXgsIGludCAqbWlja2V5eSk7CiMgNDA4ICIuLi9pbmNsdWRlL2FsbGVn
cm8uaCIKdHlwZWRlZiBzdHJ1Y3QgVElNRVJfRFJJVkVSCnsKICAgaW50IGlkOwogICBjb25zdCBj
aGFyICpuYW1lOwogICBjb25zdCBjaGFyICpkZXNjOwogICBjb25zdCBjaGFyICphc2NpaV9uYW1l
OwogICBpbnQgKCppbml0KSAodm9pZCk7CiAgIHZvaWQgKCpleGl0KSAodm9pZCk7CiAgIGludCAo
Kmluc3RhbGxfaW50KSAodm9pZCAoKnByb2MpICh2b2lkKSwgbG9uZyBzcGVlZCk7CiAgIHZvaWQg
KCpyZW1vdmVfaW50KSAodm9pZCAoKnByb2MpICh2b2lkKSk7CiAgIGludCAoKmluc3RhbGxfcGFy
YW1faW50KSAodm9pZCAoKnByb2MpICh2b2lkICpwYXJhbSksIHZvaWQgKnBhcmFtLCBsb25nIHNw
ZWVkKTsKICAgdm9pZCAoKnJlbW92ZV9wYXJhbV9pbnQpICh2b2lkICgqcHJvYykgKHZvaWQgKnBh
cmFtKSwgdm9pZCAqcGFyYW0pOwogICBpbnQgKCpjYW5fc2ltdWxhdGVfcmV0cmFjZSkgKHZvaWQp
OwogICB2b2lkICgqc2ltdWxhdGVfcmV0cmFjZSkgKGludCBlbmFibGUpOwogICB2b2lkICgqcmVz
dCkgKGxvbmcgdGltZSwgdm9pZCAoKmNhbGxiYWNrKSAodm9pZCkpOwp9IFRJTUVSX0RSSVZFUjsK
CgpleHRlcm4gVElNRVJfRFJJVkVSICogdGltZXJfZHJpdmVyOwpleHRlcm4gX0RSSVZFUl9JTkZP
IF90aW1lcl9kcml2ZXJfbGlzdFtdOwoKaW50IGluc3RhbGxfdGltZXIgKHZvaWQpOwp2b2lkIHJl
bW92ZV90aW1lciAodm9pZCk7CgppbnQgaW5zdGFsbF9pbnRfZXggKHZvaWQgKCpwcm9jKSAodm9p
ZCksIGxvbmcgc3BlZWQpOwppbnQgaW5zdGFsbF9pbnQgKHZvaWQgKCpwcm9jKSAodm9pZCksIGxv
bmcgc3BlZWQpOwp2b2lkIHJlbW92ZV9pbnQgKHZvaWQgKCpwcm9jKSAodm9pZCkpOwoKaW50IGlu
c3RhbGxfcGFyYW1faW50X2V4ICh2b2lkICgqcHJvYykgKHZvaWQgKnBhcmFtKSwgdm9pZCAqcGFy
YW0sIGxvbmcgc3BlZWQpOwppbnQgaW5zdGFsbF9wYXJhbV9pbnQgKHZvaWQgKCpwcm9jKSAodm9p
ZCAqcGFyYW0pLCB2b2lkICpwYXJhbSwgbG9uZyBzcGVlZCk7CnZvaWQgcmVtb3ZlX3BhcmFtX2lu
dCAodm9pZCAoKnByb2MpICh2b2lkICpwYXJhbSksIHZvaWQgKnBhcmFtKTsKCmV4dGVybiB2b2xh
dGlsZSBpbnQgcmV0cmFjZV9jb3VudDsKZXh0ZXJuIHZvaWQgKCpyZXRyYWNlX3Byb2MpICh2b2lk
KTsKCmludCB0aW1lcl9jYW5fc2ltdWxhdGVfcmV0cmFjZSAodm9pZCk7CnZvaWQgdGltZXJfc2lt
dWxhdGVfcmV0cmFjZSAoaW50IGVuYWJsZSk7CmludCB0aW1lcl9pc191c2luZ19yZXRyYWNlICh2
b2lkKTsKCnZvaWQgcmVzdCAobG9uZyB0aW1lKTsKdm9pZCByZXN0X2NhbGxiYWNrIChsb25nIHRp
bWUsIHZvaWQgKCpjYWxsYmFjaykgKHZvaWQpKTsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IEtFWUJP
QVJEX0RSSVZFUgp7CiAgIGludCBpZDsKICAgY29uc3QgY2hhciAqbmFtZTsKICAgY29uc3QgY2hh
ciAqZGVzYzsKICAgY29uc3QgY2hhciAqYXNjaWlfbmFtZTsKICAgaW50IGF1dG9yZXBlYXQ7CiAg
IGludCAoKmluaXQpICh2b2lkKTsKICAgdm9pZCAoKmV4aXQpICh2b2lkKTsKICAgdm9pZCAoKnBv
bGwpICh2b2lkKTsKICAgdm9pZCAoKnNldF9sZWRzKSAoaW50IGxlZHMpOwogICB2b2lkICgqc2V0
X3JhdGUpIChpbnQgZGVsYXksIGludCByYXRlKTsKICAgdm9pZCAoKndhaXRfZm9yX2lucHV0KSAo
dm9pZCk7CiAgIHZvaWQgKCpzdG9wX3dhaXRpbmdfZm9yX2lucHV0KSAodm9pZCk7CiAgIGludCAo
KnNjYW5jb2RlX3RvX2FzY2lpKSAoaW50IHNjYW5jb2RlKTsKfSBLRVlCT0FSRF9EUklWRVI7CgoK
ZXh0ZXJuIEtFWUJPQVJEX0RSSVZFUiAqIGtleWJvYXJkX2RyaXZlcjsKZXh0ZXJuIF9EUklWRVJf
SU5GTyBfa2V5Ym9hcmRfZHJpdmVyX2xpc3RbXTsKCmludCBpbnN0YWxsX2tleWJvYXJkICh2b2lk
KTsKdm9pZCByZW1vdmVfa2V5Ym9hcmQgKHZvaWQpOwoKaW50IHBvbGxfa2V5Ym9hcmQgKHZvaWQp
OwppbnQga2V5Ym9hcmRfbmVlZHNfcG9sbCAodm9pZCk7CgpleHRlcm4gaW50ICgqa2V5Ym9hcmRf
Y2FsbGJhY2spIChpbnQga2V5KTsKZXh0ZXJuIGludCAoKmtleWJvYXJkX3VjYWxsYmFjaykgKGlu
dCBrZXksIGludCAqc2NhbmNvZGUpOwpleHRlcm4gdm9pZCAoKmtleWJvYXJkX2xvd2xldmVsX2Nh
bGxiYWNrKSAoaW50IHNjYW5jb2RlKTsKCnZvaWQgaW5zdGFsbF9rZXlib2FyZF9ob29rcyAoaW50
ICgqa2V5cHJlc3NlZCkgKHZvaWQpLCBpbnQgKCpyZWFka2V5KSAodm9pZCkpOwoKZXh0ZXJuIHZv
bGF0aWxlIGNoYXIga2V5W107CmV4dGVybiB2b2xhdGlsZSBpbnQga2V5X3NoaWZ0czsKCmV4dGVy
biBpbnQgdGhyZWVfZmluZ2VyX2ZsYWc7CmV4dGVybiBpbnQga2V5X2xlZF9mbGFnOwoKaW50IGtl
eXByZXNzZWQgKHZvaWQpOwppbnQgcmVhZGtleSAodm9pZCk7CmludCB1cmVhZGtleSAoaW50ICpz
Y2FuY29kZSk7CnZvaWQgc2ltdWxhdGVfa2V5cHJlc3MgKGludCBrZXljb2RlKTsKdm9pZCBzaW11
bGF0ZV91a2V5cHJlc3MgKGludCBrZXljb2RlLCBpbnQgc2NhbmNvZGUpOwp2b2lkIGNsZWFyX2tl
eWJ1ZiAodm9pZCk7CnZvaWQgc2V0X2xlZHMgKGludCBsZWRzKTsKdm9pZCBzZXRfa2V5Ym9hcmRf
cmF0ZSAoaW50IGRlbGF5LCBpbnQgcmVwZWF0KTsKaW50IHNjYW5jb2RlX3RvX2FzY2lpIChpbnQg
c2NhbmNvZGUpOwojIDY2MSAiLi4vaW5jbHVkZS9hbGxlZ3JvLmgiCnR5cGVkZWYgc3RydWN0IEpP
WVNUSUNLX0FYSVNfSU5GTwp7CiAgIGludCBwb3M7CiAgIGludCBkMSwgZDI7CiAgIGNvbnN0IGNo
YXIgKm5hbWU7Cn0gSk9ZU1RJQ0tfQVhJU19JTkZPOwoKCgp0eXBlZGVmIHN0cnVjdCBKT1lTVElD
S19TVElDS19JTkZPCnsKICAgaW50IGZsYWdzOwogICBpbnQgbnVtX2F4aXM7CiAgIEpPWVNUSUNL
X0FYSVNfSU5GTyBheGlzWzNdOwogICBjb25zdCBjaGFyICpuYW1lOwp9IEpPWVNUSUNLX1NUSUNL
X0lORk87CgoKCnR5cGVkZWYgc3RydWN0IEpPWVNUSUNLX0JVVFRPTl9JTkZPCnsKICAgaW50IGI7
CiAgIGNvbnN0IGNoYXIgKm5hbWU7Cn0gSk9ZU1RJQ0tfQlVUVE9OX0lORk87CgoKCnR5cGVkZWYg
c3RydWN0IEpPWVNUSUNLX0lORk8KewogICBpbnQgZmxhZ3M7CiAgIGludCBudW1fc3RpY2tzOwog
ICBpbnQgbnVtX2J1dHRvbnM7CiAgIEpPWVNUSUNLX1NUSUNLX0lORk8gc3RpY2tbNF07CiAgIEpP
WVNUSUNLX0JVVFRPTl9JTkZPIGJ1dHRvblsxNl07Cn0gSk9ZU1RJQ0tfSU5GTzsKIyA3MTQgIi4u
L2luY2x1ZGUvYWxsZWdyby5oIgpleHRlcm4gSk9ZU1RJQ0tfSU5GTyBqb3lbXTsKZXh0ZXJuIGlu
dCBudW1fam95c3RpY2tzOwoKCnR5cGVkZWYgc3RydWN0IEpPWVNUSUNLX0RSSVZFUgp7CiAgIGlu
dCBpZDsKICAgY29uc3QgY2hhciAqbmFtZTsKICAgY29uc3QgY2hhciAqZGVzYzsKICAgY29uc3Qg
Y2hhciAqYXNjaWlfbmFtZTsKICAgaW50ICgqaW5pdCkgKHZvaWQpOwogICB2b2lkICgqZXhpdCkg
KHZvaWQpOwogICBpbnQgKCpwb2xsKSAodm9pZCk7CiAgIGludCAoKnNhdmVfZGF0YSkgKHZvaWQp
OwogICBpbnQgKCpsb2FkX2RhdGEpICh2b2lkKTsKICAgY29uc3QgY2hhciAqICgqY2FsaWJyYXRl
X25hbWUpIChpbnQgbik7CiAgIGludCAoKmNhbGlicmF0ZSkgKGludCBuKTsKfSBKT1lTVElDS19E
UklWRVI7CgoKZXh0ZXJuIEpPWVNUSUNLX0RSSVZFUiBqb3lzdGlja19ub25lOwpleHRlcm4gSk9Z
U1RJQ0tfRFJJVkVSICogam95c3RpY2tfZHJpdmVyOwpleHRlcm4gX0RSSVZFUl9JTkZPIF9qb3lz
dGlja19kcml2ZXJfbGlzdFtdOwojIDc1MCAiLi4vaW5jbHVkZS9hbGxlZ3JvLmgiCmludCBpbnN0
YWxsX2pveXN0aWNrIChpbnQgdHlwZSk7CnZvaWQgcmVtb3ZlX2pveXN0aWNrICh2b2lkKTsKCmlu
dCBpbml0aWFsaXNlX2pveXN0aWNrICh2b2lkKTsKCmludCBwb2xsX2pveXN0aWNrICh2b2lkKTsK
CmludCBzYXZlX2pveXN0aWNrX2RhdGEgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKaW50IGxvYWRf
am95c3RpY2tfZGF0YSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwoKY29uc3QgY2hhciAqIGNhbGli
cmF0ZV9qb3lzdGlja19uYW1lIChpbnQgbik7CmludCBjYWxpYnJhdGVfam95c3RpY2sgKGludCBu
KTsKIyA3NzYgIi4uL2luY2x1ZGUvYWxsZWdyby5oIgp0eXBlZGVmIHN0cnVjdCBHRlhfTU9ERSB7
CiAgIGludCB3aWR0aCwgaGVpZ2h0LCBicHA7Cn0gR0ZYX01PREU7Cgp0eXBlZGVmIHN0cnVjdCBH
RlhfTU9ERV9MSVNUIHsKICAgaW50IG51bV9tb2RlczsKICAgR0ZYX01PREUgKm1vZGU7Cn0gR0ZY
X01PREVfTElTVDsKCnR5cGVkZWYgc3RydWN0IEdGWF9EUklWRVIKewogICBpbnQgaWQ7CiAgIGNv
bnN0IGNoYXIgKm5hbWU7CiAgIGNvbnN0IGNoYXIgKmRlc2M7CiAgIGNvbnN0IGNoYXIgKmFzY2lp
X25hbWU7CiAgIHN0cnVjdCBCSVRNQVAgKiAoKmluaXQpIChpbnQgdywgaW50IGgsIGludCB2X3cs
IGludCB2X2gsIGludCBjb2xvcl9kZXB0aCk7CiAgIHZvaWQgKCpleGl0KSAoc3RydWN0IEJJVE1B
UCAqYik7CiAgIGludCAoKnNjcm9sbCkgKGludCB4LCBpbnQgeSk7CiAgIHZvaWQgKCp2c3luYykg
KHZvaWQpOwogICB2b2lkICgqc2V0X3BhbGV0dGUpIChjb25zdCBzdHJ1Y3QgUkdCICpwLCBpbnQg
ZnJvbSwgaW50IHRvLCBpbnQgcmV0cmFjZXN5bmMpOwogICBpbnQgKCpyZXF1ZXN0X3Njcm9sbCkg
KGludCB4LCBpbnQgeSk7CiAgIGludCAoKnBvbGxfc2Nyb2xsKSAodm9pZCk7CiAgIHZvaWQgKCpl
bmFibGVfdHJpcGxlX2J1ZmZlcikgKHZvaWQpOwogICBzdHJ1Y3QgQklUTUFQICogKCpjcmVhdGVf
dmlkZW9fYml0bWFwKSAoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgdm9pZCAoKmRlc3Ryb3lf
dmlkZW9fYml0bWFwKSAoc3RydWN0IEJJVE1BUCAqYml0bWFwKTsKICAgaW50ICgqc2hvd192aWRl
b19iaXRtYXApIChzdHJ1Y3QgQklUTUFQICpiaXRtYXApOwogICBpbnQgKCpyZXF1ZXN0X3ZpZGVv
X2JpdG1hcCkgKHN0cnVjdCBCSVRNQVAgKmJpdG1hcCk7CiAgIHN0cnVjdCBCSVRNQVAgKiAoKmNy
ZWF0ZV9zeXN0ZW1fYml0bWFwKSAoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgdm9pZCAoKmRl
c3Ryb3lfc3lzdGVtX2JpdG1hcCkgKHN0cnVjdCBCSVRNQVAgKmJpdG1hcCk7CiAgIGludCAoKnNl
dF9tb3VzZV9zcHJpdGUpIChzdHJ1Y3QgQklUTUFQICpzcHJpdGUsIGludCB4Zm9jdXMsIGludCB5
Zm9jdXMpOwogICBpbnQgKCpzaG93X21vdXNlKSAoc3RydWN0IEJJVE1BUCAqYm1wLCBpbnQgeCwg
aW50IHkpOwogICB2b2lkICgqaGlkZV9tb3VzZSkgKHZvaWQpOwogICB2b2lkICgqbW92ZV9tb3Vz
ZSkgKGludCB4LCBpbnQgeSk7CiAgIHZvaWQgKCpkcmF3aW5nX21vZGUpICh2b2lkKTsKICAgdm9p
ZCAoKnNhdmVfdmlkZW9fc3RhdGUpICh2b2lkKTsKICAgdm9pZCAoKnJlc3RvcmVfdmlkZW9fc3Rh
dGUpICh2b2lkKTsKICAgR0ZYX01PREVfTElTVCAqICgqZmV0Y2hfbW9kZV9saXN0KSAodm9pZCk7
CiAgIGludCB3LCBoOwogICBpbnQgbGluZWFyOwogICBsb25nIGJhbmtfc2l6ZTsKICAgbG9uZyBi
YW5rX2dyYW47CiAgIGxvbmcgdmlkX21lbTsKICAgbG9uZyB2aWRfcGh5c19iYXNlOwogICBpbnQg
d2luZG93ZWQ7Cn0gR0ZYX0RSSVZFUjsKCgpleHRlcm4gR0ZYX0RSSVZFUiAqIGdmeF9kcml2ZXI7
CmV4dGVybiBfRFJJVkVSX0lORk8gX2dmeF9kcml2ZXJfbGlzdFtdOwojIDg2MSAiLi4vaW5jbHVk
ZS9hbGxlZ3JvLmgiCmV4dGVybiBpbnQgZ2Z4X2NhcGFiaWxpdGllczsKCgp0eXBlZGVmIHN0cnVj
dCBHRlhfVlRBQkxFCnsKICAgaW50IGNvbG9yX2RlcHRoOwogICBpbnQgbWFza19jb2xvcjsKICAg
dm9pZCAqdW53cml0ZV9iYW5rOwogICB2b2lkICgqc2V0X2NsaXApIChzdHJ1Y3QgQklUTUFQICpi
bXApOwogICB2b2lkICgqYWNxdWlyZSkgKHN0cnVjdCBCSVRNQVAgKmJtcCk7CiAgIHZvaWQgKCpy
ZWxlYXNlKSAoc3RydWN0IEJJVE1BUCAqYm1wKTsKICAgc3RydWN0IEJJVE1BUCAqICgqY3JlYXRl
X3N1Yl9iaXRtYXApIChzdHJ1Y3QgQklUTUFQICpwYXJlbnQsIGludCB4LCBpbnQgeSwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKICAgdm9pZCAoKmNyZWF0ZWRfc3ViX2JpdG1hcCkgKHN0cnVjdCBC
SVRNQVAgKmJtcCwgc3RydWN0IEJJVE1BUCAqcGFyZW50KTsKICAgaW50ICgqZ2V0cGl4ZWwpIChz
dHJ1Y3QgQklUTUFQICpibXAsIGludCB4LCBpbnQgeSk7CiAgIHZvaWQgKCpwdXRwaXhlbCkgKHN0
cnVjdCBCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpOwogICB2b2lkICgqdmxp
bmUpIChzdHJ1Y3QgQklUTUFQICpibXAsIGludCB4LCBpbnQgeTEsIGludCB5MiwgaW50IGNvbG9y
KTsKICAgdm9pZCAoKmhsaW5lKSAoc3RydWN0IEJJVE1BUCAqYm1wLCBpbnQgeDEsIGludCB5LCBp
bnQgeDIsIGludCBjb2xvcik7CiAgIHZvaWQgKCpoZmlsbCkgKHN0cnVjdCBCSVRNQVAgKmJtcCwg
aW50IHgxLCBpbnQgeSwgaW50IHgyLCBpbnQgY29sb3IpOwogICB2b2lkICgqbGluZSkgKHN0cnVj
dCBCSVRNQVAgKmJtcCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBpbnQgY29sb3Ip
OwogICB2b2lkICgqcmVjdGZpbGwpIChzdHJ1Y3QgQklUTUFQICpibXAsIGludCB4MSwgaW50IHkx
LCBpbnQgeDIsIGludCB5MiwgaW50IGNvbG9yKTsKICAgaW50ICgqdHJpYW5nbGUpIChzdHJ1Y3Qg
QklUTUFQICpibXAsIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwgaW50IHgzLCBpbnQg
eTMsIGludCBjb2xvcik7CiAgIHZvaWQgKCpkcmF3X3Nwcml0ZSkgKHN0cnVjdCBCSVRNQVAgKmJt
cCwgc3RydWN0IEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHkpOwogICB2b2lkICgqZHJhd18y
NTZfc3ByaXRlKSAoc3RydWN0IEJJVE1BUCAqYm1wLCBzdHJ1Y3QgQklUTUFQICpzcHJpdGUsIGlu
dCB4LCBpbnQgeSk7CiAgIHZvaWQgKCpkcmF3X3Nwcml0ZV92X2ZsaXApIChzdHJ1Y3QgQklUTUFQ
ICpibXAsIHN0cnVjdCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5KTsKICAgdm9pZCAoKmRy
YXdfc3ByaXRlX2hfZmxpcCkgKHN0cnVjdCBCSVRNQVAgKmJtcCwgc3RydWN0IEJJVE1BUCAqc3By
aXRlLCBpbnQgeCwgaW50IHkpOwogICB2b2lkICgqZHJhd19zcHJpdGVfdmhfZmxpcCkgKHN0cnVj
dCBCSVRNQVAgKmJtcCwgc3RydWN0IEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHkpOwogICB2
b2lkICgqZHJhd190cmFuc19zcHJpdGUpIChzdHJ1Y3QgQklUTUFQICpibXAsIHN0cnVjdCBCSVRN
QVAgKnNwcml0ZSwgaW50IHgsIGludCB5KTsKICAgdm9pZCAoKmRyYXdfdHJhbnNfcmdiYV9zcHJp
dGUpIChzdHJ1Y3QgQklUTUFQICpibXAsIHN0cnVjdCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGlu
dCB5KTsKICAgdm9pZCAoKmRyYXdfbGl0X3Nwcml0ZSkgKHN0cnVjdCBCSVRNQVAgKmJtcCwgc3Ry
dWN0IEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHksIGludCBjb2xvcik7CiAgIHZvaWQgKCpk
cmF3X3JsZV9zcHJpdGUpIChzdHJ1Y3QgQklUTUFQICpibXAsIGNvbnN0IHN0cnVjdCBSTEVfU1BS
SVRFICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CiAgIHZvaWQgKCpkcmF3X3RyYW5zX3JsZV9zcHJp
dGUpIChzdHJ1Y3QgQklUTUFQICpibXAsIGNvbnN0IHN0cnVjdCBSTEVfU1BSSVRFICpzcHJpdGUs
IGludCB4LCBpbnQgeSk7CiAgIHZvaWQgKCpkcmF3X3RyYW5zX3JnYmFfcmxlX3Nwcml0ZSkgKHN0
cnVjdCBCSVRNQVAgKmJtcCwgY29uc3Qgc3RydWN0IFJMRV9TUFJJVEUgKnNwcml0ZSwgaW50IHgs
IGludCB5KTsKICAgdm9pZCAoKmRyYXdfbGl0X3JsZV9zcHJpdGUpIChzdHJ1Y3QgQklUTUFQICpi
bXAsIGNvbnN0IHN0cnVjdCBSTEVfU1BSSVRFICpzcHJpdGUsIGludCB4LCBpbnQgeSwgaW50IGNv
bG9yKTsKICAgdm9pZCAoKmRyYXdfY2hhcmFjdGVyKSAoc3RydWN0IEJJVE1BUCAqYm1wLCBzdHJ1
Y3QgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSwgaW50IGNvbG9yKTsKICAgdm9pZCAoKmRy
YXdfZ2x5cGgpIChzdHJ1Y3QgQklUTUFQICpibXAsIGNvbnN0IHN0cnVjdCBGT05UX0dMWVBIICpn
bHlwaCwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpOwogICB2b2lkICgqYmxpdF9mcm9tX21lbW9y
eSkgKHN0cnVjdCBCSVRNQVAgKnNvdXJjZSwgc3RydWN0IEJJVE1BUCAqZGVzdCwgaW50IHNvdXJj
ZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwgaW50
IGhlaWdodCk7CiAgIHZvaWQgKCpibGl0X3RvX21lbW9yeSkgKHN0cnVjdCBCSVRNQVAgKnNvdXJj
ZSwgc3RydWN0IEJJVE1BUCAqZGVzdCwgaW50IHNvdXJjZV94LCBpbnQgc291cmNlX3ksIGludCBk
ZXN0X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgIHZvaWQgKCpibGl0
X2Zyb21fc3lzdGVtKSAoc3RydWN0IEJJVE1BUCAqc291cmNlLCBzdHJ1Y3QgQklUTUFQICpkZXN0
LCBpbnQgc291cmNlX3gsIGludCBzb3VyY2VfeSwgaW50IGRlc3RfeCwgaW50IGRlc3RfeSwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgdm9pZCAoKmJsaXRfdG9fc3lzdGVtKSAoc3RydWN0IEJJ
VE1BUCAqc291cmNlLCBzdHJ1Y3QgQklUTUFQICpkZXN0LCBpbnQgc291cmNlX3gsIGludCBzb3Vy
Y2VfeSwgaW50IGRlc3RfeCwgaW50IGRlc3RfeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAg
dm9pZCAoKmJsaXRfdG9fc2VsZikgKHN0cnVjdCBCSVRNQVAgKnNvdXJjZSwgc3RydWN0IEJJVE1B
UCAqZGVzdCwgaW50IHNvdXJjZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0X3gsIGludCBkZXN0
X3ksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgIHZvaWQgKCpibGl0X3RvX3NlbGZfZm9yd2Fy
ZCkgKHN0cnVjdCBCSVRNQVAgKnNvdXJjZSwgc3RydWN0IEJJVE1BUCAqZGVzdCwgaW50IHNvdXJj
ZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwgaW50
IGhlaWdodCk7CiAgIHZvaWQgKCpibGl0X3RvX3NlbGZfYmFja3dhcmQpIChzdHJ1Y3QgQklUTUFQ
ICpzb3VyY2UsIHN0cnVjdCBCSVRNQVAgKmRlc3QsIGludCBzb3VyY2VfeCwgaW50IHNvdXJjZV95
LCBpbnQgZGVzdF94LCBpbnQgZGVzdF95LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICB2b2lk
ICgqbWFza2VkX2JsaXQpIChzdHJ1Y3QgQklUTUFQICpzb3VyY2UsIHN0cnVjdCBCSVRNQVAgKmRl
c3QsIGludCBzb3VyY2VfeCwgaW50IHNvdXJjZV95LCBpbnQgZGVzdF94LCBpbnQgZGVzdF95LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpOwogICB2b2lkICgqY2xlYXJfdG9fY29sb3IpIChzdHJ1Y3Qg
QklUTUFQICpiaXRtYXAsIGludCBjb2xvcik7CiAgIHZvaWQgKCpkcmF3X3Nwcml0ZV9lbmQpICh2
b2lkKTsKICAgdm9pZCAoKmJsaXRfZW5kKSAodm9pZCk7Cn0gR0ZYX1ZUQUJMRTsKCgpleHRlcm4g
R0ZYX1ZUQUJMRSBfX2xpbmVhcl92dGFibGU4OwpleHRlcm4gR0ZYX1ZUQUJMRSBfX2xpbmVhcl92
dGFibGUxNTsKZXh0ZXJuIEdGWF9WVEFCTEUgX19saW5lYXJfdnRhYmxlMTY7CmV4dGVybiBHRlhf
VlRBQkxFIF9fbGluZWFyX3Z0YWJsZTI0OwpleHRlcm4gR0ZYX1ZUQUJMRSBfX2xpbmVhcl92dGFi
bGUzMjsKCgp0eXBlZGVmIHN0cnVjdCBfVlRBQkxFX0lORk8KewogICBpbnQgY29sb3JfZGVwdGg7
CiAgIEdGWF9WVEFCTEUgKnZ0YWJsZTsKfSBfVlRBQkxFX0lORk87CgpleHRlcm4gX1ZUQUJMRV9J
TkZPIF92dGFibGVfbGlzdFtdOwojIDk1MSAiLi4vaW5jbHVkZS9hbGxlZ3JvLmgiCnR5cGVkZWYg
c3RydWN0IEJJVE1BUAp7CiAgIGludCB3LCBoOwogICBpbnQgY2xpcDsKICAgaW50IGNsLCBjciwg
Y3QsIGNiOwogICBHRlhfVlRBQkxFICp2dGFibGU7CiAgIHZvaWQgKndyaXRlX2Jhbms7CiAgIHZv
aWQgKnJlYWRfYmFuazsKICAgdm9pZCAqZGF0OwogICB1bnNpZ25lZCBsb25nIGlkOwogICB2b2lk
ICpleHRyYTsKICAgaW50IHhfb2ZzOwogICBpbnQgeV9vZnM7CiAgIGludCBzZWc7CiAgIHVuc2ln
bmVkIGNoYXIgKmxpbmVbXTsKfSBCSVRNQVA7CiMgOTc5ICIuLi9pbmNsdWRlL2FsbGVncm8uaCIK
ZXh0ZXJuIEJJVE1BUCAqIHNjcmVlbjsKIyAxMDc1ICIuLi9pbmNsdWRlL2FsbGVncm8uaCIKR0ZY
X01PREVfTElTVCAqIGdldF9nZnhfbW9kZV9saXN0IChpbnQgY2FyZCk7CnZvaWQgZGVzdHJveV9n
ZnhfbW9kZV9saXN0IChHRlhfTU9ERV9MSVNUICpnZnhfbW9kZV9saXN0KTsKdm9pZCBzZXRfY29s
b3JfZGVwdGggKGludCBkZXB0aCk7CnZvaWQgc2V0X2NvbG9yX2NvbnZlcnNpb24gKGludCBtb2Rl
KTsKdm9pZCByZXF1ZXN0X3JlZnJlc2hfcmF0ZSAoaW50IHJhdGUpOwppbnQgZ2V0X3JlZnJlc2hf
cmF0ZSAodm9pZCk7CmludCBzZXRfZ2Z4X21vZGUgKGludCBjYXJkLCBpbnQgdywgaW50IGgsIGlu
dCB2X3csIGludCB2X2gpOwppbnQgc2Nyb2xsX3NjcmVlbiAoaW50IHgsIGludCB5KTsKaW50IHJl
cXVlc3Rfc2Nyb2xsIChpbnQgeCwgaW50IHkpOwppbnQgcG9sbF9zY3JvbGwgKHZvaWQpOwppbnQg
c2hvd192aWRlb19iaXRtYXAgKEJJVE1BUCAqYml0bWFwKTsKaW50IHJlcXVlc3RfdmlkZW9fYml0
bWFwIChCSVRNQVAgKmJpdG1hcCk7CmludCBlbmFibGVfdHJpcGxlX2J1ZmZlciAodm9pZCk7CkJJ
VE1BUCAqIGNyZWF0ZV9iaXRtYXAgKGludCB3aWR0aCwgaW50IGhlaWdodCk7CkJJVE1BUCAqIGNy
ZWF0ZV9iaXRtYXBfZXggKGludCBjb2xvcl9kZXB0aCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
QklUTUFQICogY3JlYXRlX3N1Yl9iaXRtYXAgKEJJVE1BUCAqcGFyZW50LCBpbnQgeCwgaW50IHks
IGludCB3aWR0aCwgaW50IGhlaWdodCk7CkJJVE1BUCAqIGNyZWF0ZV92aWRlb19iaXRtYXAgKGlu
dCB3aWR0aCwgaW50IGhlaWdodCk7CkJJVE1BUCAqIGNyZWF0ZV9zeXN0ZW1fYml0bWFwIChpbnQg
d2lkdGgsIGludCBoZWlnaHQpOwp2b2lkIGRlc3Ryb3lfYml0bWFwIChCSVRNQVAgKmJpdG1hcCk7
CiMgMTEwNCAiLi4vaW5jbHVkZS9hbGxlZ3JvLmgiCmludCBzZXRfZGlzcGxheV9zd2l0Y2hfbW9k
ZSAoaW50IG1vZGUpOwppbnQgZ2V0X2Rpc3BsYXlfc3dpdGNoX21vZGUgKHZvaWQpOwppbnQgc2V0
X2Rpc3BsYXlfc3dpdGNoX2NhbGxiYWNrIChpbnQgZGlyLCB2b2lkICgqY2IpICh2b2lkKSk7CnZv
aWQgcmVtb3ZlX2Rpc3BsYXlfc3dpdGNoX2NhbGxiYWNrICh2b2lkICgqY2IpICh2b2lkKSk7CgoK
CgoKCgp0eXBlZGVmIHN0cnVjdCBSR0IKewogICB1bnNpZ25lZCBjaGFyIHIsIGcsIGI7CiAgIHVu
c2lnbmVkIGNoYXIgZmlsbGVyOwp9IFJHQjsKCgoKdHlwZWRlZiBSR0IgUEFMRVRURVsyNTZdOwoK
ZXh0ZXJuIFBBTEVUVEUgYmxhY2tfcGFsZXR0ZTsKZXh0ZXJuIFBBTEVUVEUgZGVza3RvcF9wYWxl
dHRlOwpleHRlcm4gUEFMRVRURSBkZWZhdWx0X3BhbGV0dGU7Cgp0eXBlZGVmIHN0cnVjdCB7CiAg
IHVuc2lnbmVkIGNoYXIgZGF0YVszMl1bMzJdWzMyXTsKfSBSR0JfTUFQOwoKdHlwZWRlZiBzdHJ1
Y3QgewogICB1bnNpZ25lZCBjaGFyIGRhdGFbMjU2XVsyNTZdOwp9IENPTE9SX01BUDsKCmV4dGVy
biBSR0JfTUFQICogcmdiX21hcDsKZXh0ZXJuIENPTE9SX01BUCAqIGNvbG9yX21hcDsKCmV4dGVy
biBQQUxFVFRFIF9jdXJyZW50X3BhbGV0dGU7CgpleHRlcm4gaW50IF9yZ2Jfcl9zaGlmdF8xNTsK
ZXh0ZXJuIGludCBfcmdiX2dfc2hpZnRfMTU7CmV4dGVybiBpbnQgX3JnYl9iX3NoaWZ0XzE1Owpl
eHRlcm4gaW50IF9yZ2Jfcl9zaGlmdF8xNjsKZXh0ZXJuIGludCBfcmdiX2dfc2hpZnRfMTY7CmV4
dGVybiBpbnQgX3JnYl9iX3NoaWZ0XzE2OwpleHRlcm4gaW50IF9yZ2Jfcl9zaGlmdF8yNDsKZXh0
ZXJuIGludCBfcmdiX2dfc2hpZnRfMjQ7CmV4dGVybiBpbnQgX3JnYl9iX3NoaWZ0XzI0OwpleHRl
cm4gaW50IF9yZ2Jfcl9zaGlmdF8zMjsKZXh0ZXJuIGludCBfcmdiX2dfc2hpZnRfMzI7CmV4dGVy
biBpbnQgX3JnYl9iX3NoaWZ0XzMyOwpleHRlcm4gaW50IF9yZ2JfYV9zaGlmdF8zMjsKCmV4dGVy
biBpbnQgX3JnYl9zY2FsZV81W107CmV4dGVybiBpbnQgX3JnYl9zY2FsZV82W107CgoKCgoKCgpl
eHRlcm4gaW50ICogcGFsZXR0ZV9jb2xvcjsKCnZvaWQgdnN5bmMgKHZvaWQpOwoKdm9pZCBzZXRf
Y29sb3IgKGludCBpbmRleCwgY29uc3QgUkdCICpwKTsKdm9pZCBzZXRfcGFsZXR0ZSAoY29uc3Qg
UEFMRVRURSBwKTsKdm9pZCBzZXRfcGFsZXR0ZV9yYW5nZSAoY29uc3QgUEFMRVRURSBwLCBpbnQg
ZnJvbSwgaW50IHRvLCBpbnQgcmV0cmFjZXN5bmMpOwoKdm9pZCBnZXRfY29sb3IgKGludCBpbmRl
eCwgUkdCICpwKTsKdm9pZCBnZXRfcGFsZXR0ZSAoUEFMRVRURSBwKTsKdm9pZCBnZXRfcGFsZXR0
ZV9yYW5nZSAoUEFMRVRURSBwLCBpbnQgZnJvbSwgaW50IHRvKTsKCnZvaWQgZmFkZV9pbnRlcnBv
bGF0ZSAoY29uc3QgUEFMRVRURSBzb3VyY2UsIGNvbnN0IFBBTEVUVEUgZGVzdCwgUEFMRVRURSBv
dXRwdXQsIGludCBwb3MsIGludCBmcm9tLCBpbnQgdG8pOwp2b2lkIGZhZGVfZnJvbV9yYW5nZSAo
Y29uc3QgUEFMRVRURSBzb3VyY2UsIGNvbnN0IFBBTEVUVEUgZGVzdCwgaW50IHNwZWVkLCBpbnQg
ZnJvbSwgaW50IHRvKTsKdm9pZCBmYWRlX2luX3JhbmdlIChjb25zdCBQQUxFVFRFIHAsIGludCBz
cGVlZCwgaW50IGZyb20sIGludCB0byk7CnZvaWQgZmFkZV9vdXRfcmFuZ2UgKGludCBzcGVlZCwg
aW50IGZyb20sIGludCB0byk7CnZvaWQgZmFkZV9mcm9tIChjb25zdCBQQUxFVFRFIHNvdXJjZSwg
Y29uc3QgUEFMRVRURSBkZXN0LCBpbnQgc3BlZWQpOwp2b2lkIGZhZGVfaW4gKGNvbnN0IFBBTEVU
VEUgcCwgaW50IHNwZWVkKTsKdm9pZCBmYWRlX291dCAoaW50IHNwZWVkKTsKCnZvaWQgc2VsZWN0
X3BhbGV0dGUgKGNvbnN0IFBBTEVUVEUgcCk7CnZvaWQgdW5zZWxlY3RfcGFsZXR0ZSAodm9pZCk7
Cgp2b2lkIGdlbmVyYXRlXzMzMl9wYWxldHRlIChQQUxFVFRFIHBhbCk7CmludCBnZW5lcmF0ZV9v
cHRpbWl6ZWRfcGFsZXR0ZSAoQklUTUFQICppbWFnZSwgUEFMRVRURSBwYWwsIGNvbnN0IHNpZ25l
ZCBjaGFyIHJzdmRjb2xzWzI1Nl0pOwoKdm9pZCBjcmVhdGVfcmdiX3RhYmxlIChSR0JfTUFQICp0
YWJsZSwgY29uc3QgUEFMRVRURSBwYWwsIHZvaWQgKCpjYWxsYmFjaykgKGludCBwb3MpKTsKdm9p
ZCBjcmVhdGVfbGlnaHRfdGFibGUgKENPTE9SX01BUCAqdGFibGUsIGNvbnN0IFBBTEVUVEUgcGFs
LCBpbnQgciwgaW50IGcsIGludCBiLCB2b2lkICgqY2FsbGJhY2spIChpbnQgcG9zKSk7CnZvaWQg
Y3JlYXRlX3RyYW5zX3RhYmxlIChDT0xPUl9NQVAgKnRhYmxlLCBjb25zdCBQQUxFVFRFIHBhbCwg
aW50IHIsIGludCBnLCBpbnQgYiwgdm9pZCAoKmNhbGxiYWNrKSAoaW50IHBvcykpOwp2b2lkIGNy
ZWF0ZV9jb2xvcl90YWJsZSAoQ09MT1JfTUFQICp0YWJsZSwgY29uc3QgUEFMRVRURSBwYWwsIHZv
aWQgKCpibGVuZCkgKGNvbnN0IFBBTEVUVEUgcGFsLCBpbnQgeCwgaW50IHksIFJHQiAqcmdiKSwg
dm9pZCAoKmNhbGxiYWNrKSAoaW50IHBvcykpOwp2b2lkIGNyZWF0ZV9ibGVuZGVyX3RhYmxlIChD
T0xPUl9NQVAgKnRhYmxlLCBjb25zdCBQQUxFVFRFIHBhbCwgdm9pZCAoKmNhbGxiYWNrKSAoaW50
IHBvcykpOwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nICgqQkxFTkRFUl9GVU5DKSAodW5zaWduZWQg
bG9uZyB4LCB1bnNpZ25lZCBsb25nIHksIHVuc2lnbmVkIGxvbmcgbik7Cgp2b2lkIHNldF9ibGVu
ZGVyX21vZGUgKEJMRU5ERVJfRlVOQyBiMTUsIEJMRU5ERVJfRlVOQyBiMTYsIEJMRU5ERVJfRlVO
QyBiMjQsIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKdm9pZCBzZXRfYmxlbmRlcl9tb2Rl
X2V4IChCTEVOREVSX0ZVTkMgYjE1LCBCTEVOREVSX0ZVTkMgYjE2LCBCTEVOREVSX0ZVTkMgYjI0
LCBCTEVOREVSX0ZVTkMgYjMyLCBCTEVOREVSX0ZVTkMgYjE1eCwgQkxFTkRFUl9GVU5DIGIxNngs
IEJMRU5ERVJfRlVOQyBiMjR4LCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7Cgp2b2lkIHNl
dF9hbHBoYV9ibGVuZGVyICh2b2lkKTsKdm9pZCBzZXRfd3JpdGVfYWxwaGFfYmxlbmRlciAodm9p
ZCk7CnZvaWQgc2V0X3RyYW5zX2JsZW5kZXIgKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsK
dm9pZCBzZXRfYWRkX2JsZW5kZXIgKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKdm9pZCBz
ZXRfYnVybl9ibGVuZGVyIChpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CnZvaWQgc2V0X2Nv
bG9yX2JsZW5kZXIgKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKdm9pZCBzZXRfZGlmZmVy
ZW5jZV9ibGVuZGVyIChpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CnZvaWQgc2V0X2Rpc3Nv
bHZlX2JsZW5kZXIgKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKdm9pZCBzZXRfZG9kZ2Vf
YmxlbmRlciAoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwp2b2lkIHNldF9odWVfYmxlbmRl
ciAoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwp2b2lkIHNldF9pbnZlcnRfYmxlbmRlciAo
aW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwp2b2lkIHNldF9sdW1pbmFuY2VfYmxlbmRlciAo
aW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwp2b2lkIHNldF9tdWx0aXBseV9ibGVuZGVyIChp
bnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CnZvaWQgc2V0X3NhdHVyYXRpb25fYmxlbmRlciAo
aW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwp2b2lkIHNldF9zY3JlZW5fYmxlbmRlciAoaW50
IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwoKdm9pZCBoc3ZfdG9fcmdiIChmbG9hdCBoLCBmbG9h
dCBzLCBmbG9hdCB2LCBpbnQgKnIsIGludCAqZywgaW50ICpiKTsKdm9pZCByZ2JfdG9faHN2IChp
bnQgciwgaW50IGcsIGludCBiLCBmbG9hdCAqaCwgZmxvYXQgKnMsIGZsb2F0ICp2KTsKCmludCBi
ZXN0Zml0X2NvbG9yIChjb25zdCBQQUxFVFRFIHBhbCwgaW50IHIsIGludCBnLCBpbnQgYik7Cgpp
bnQgbWFrZWNvbCAoaW50IHIsIGludCBnLCBpbnQgYik7CmludCBtYWtlY29sOCAoaW50IHIsIGlu
dCBnLCBpbnQgYik7CmludCBtYWtlY29sX2RlcHRoIChpbnQgY29sb3JfZGVwdGgsIGludCByLCBp
bnQgZywgaW50IGIpOwoKaW50IG1ha2VhY29sIChpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7
CmludCBtYWtlYWNvbF9kZXB0aCAoaW50IGNvbG9yX2RlcHRoLCBpbnQgciwgaW50IGcsIGludCBi
LCBpbnQgYSk7CgppbnQgbWFrZWNvbDE1X2RpdGhlciAoaW50IHIsIGludCBnLCBpbnQgYiwgaW50
IHgsIGludCB5KTsKaW50IG1ha2Vjb2wxNl9kaXRoZXIgKGludCByLCBpbnQgZywgaW50IGIsIGlu
dCB4LCBpbnQgeSk7CgppbnQgZ2V0ciAoaW50IGMpOwppbnQgZ2V0ZyAoaW50IGMpOwppbnQgZ2V0
YiAoaW50IGMpOwppbnQgZ2V0YSAoaW50IGMpOwoKaW50IGdldHJfZGVwdGggKGludCBjb2xvcl9k
ZXB0aCwgaW50IGMpOwppbnQgZ2V0Z19kZXB0aCAoaW50IGNvbG9yX2RlcHRoLCBpbnQgYyk7Cmlu
dCBnZXRiX2RlcHRoIChpbnQgY29sb3JfZGVwdGgsIGludCBjKTsKaW50IGdldGFfZGVwdGggKGlu
dCBjb2xvcl9kZXB0aCwgaW50IGMpOwoKCgoKCgoKdm9pZCBzZXRfY2xpcCAoQklUTUFQICpiaXRt
YXAsIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5Mik7CiMgMTI1OCAiLi4vaW5jbHVkZS9h
bGxlZ3JvLmgiCnZvaWQgZHJhd2luZ19tb2RlIChpbnQgbW9kZSwgQklUTUFQICpwYXR0ZXJuLCBp
bnQgeF9hbmNob3IsIGludCB5X2FuY2hvcik7CnZvaWQgeG9yX21vZGUgKGludCBvbik7CnZvaWQg
c29saWRfbW9kZSAodm9pZCk7CnZvaWQgZG9fbGluZSAoQklUTUFQICpibXAsIGludCB4MSwgaW50
IHkxLCBpbnQgeDIsIGludCB5MiwgaW50IGQsIHZvaWQgKCpwcm9jKSAoQklUTUFQICosIGludCwg
aW50LCBpbnQpKTsKdm9pZCB0cmlhbmdsZSAoQklUTUFQICpibXAsIGludCB4MSwgaW50IHkxLCBp
bnQgeDIsIGludCB5MiwgaW50IHgzLCBpbnQgeTMsIGludCBjb2xvcik7CnZvaWQgcG9seWdvbiAo
QklUTUFQICpibXAsIGludCB2ZXJ0aWNlcywgY29uc3QgaW50ICpwb2ludHMsIGludCBjb2xvcik7
CnZvaWQgcmVjdCAoQklUTUFQICpibXAsIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5Miwg
aW50IGNvbG9yKTsKdm9pZCBkb19jaXJjbGUgKEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHksIGlu
dCByYWRpdXMsIGludCBkLCB2b2lkICgqcHJvYykgKEJJVE1BUCAqLCBpbnQsIGludCwgaW50KSk7
CnZvaWQgY2lyY2xlIChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5LCBpbnQgcmFkaXVzLCBpbnQg
Y29sb3IpOwp2b2lkIGNpcmNsZWZpbGwgKEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHksIGludCBy
YWRpdXMsIGludCBjb2xvcik7CnZvaWQgZG9fZWxsaXBzZSAoQklUTUFQICpibXAsIGludCB4LCBp
bnQgeSwgaW50IHJ4LCBpbnQgcnksIGludCBkLCB2b2lkICgqcHJvYykgKEJJVE1BUCAqLCBpbnQs
IGludCwgaW50KSk7CnZvaWQgZWxsaXBzZSAoQklUTUFQICpibXAsIGludCB4LCBpbnQgeSwgaW50
IHJ4LCBpbnQgcnksIGludCBjb2xvcik7CnZvaWQgZWxsaXBzZWZpbGwgKEJJVE1BUCAqYm1wLCBp
bnQgeCwgaW50IHksIGludCByeCwgaW50IHJ5LCBpbnQgY29sb3IpOwp2b2lkIGRvX2FyYyAoQklU
TUFQICpibXAsIGludCB4LCBpbnQgeSwgZml4ZWQgYW5nMSwgZml4ZWQgYW5nMiwgaW50IHIsIGlu
dCBkLCB2b2lkICgqcHJvYykgKEJJVE1BUCAqLCBpbnQsIGludCwgaW50KSk7CnZvaWQgYXJjIChC
SVRNQVAgKmJtcCwgaW50IHgsIGludCB5LCBmaXhlZCBhbmcxLCBmaXhlZCBhbmcyLCBpbnQgciwg
aW50IGNvbG9yKTsKdm9pZCBjYWxjX3NwbGluZSAoY29uc3QgaW50IHBvaW50c1s4XSwgaW50IG5w
dHMsIGludCAqeCwgaW50ICp5KTsKdm9pZCBzcGxpbmUgKEJJVE1BUCAqYm1wLCBjb25zdCBpbnQg
cG9pbnRzWzhdLCBpbnQgY29sb3IpOwp2b2lkIGZsb29kZmlsbCAoQklUTUFQICpibXAsIGludCB4
LCBpbnQgeSwgaW50IGNvbG9yKTsKdm9pZCBibGl0IChCSVRNQVAgKnNvdXJjZSwgQklUTUFQICpk
ZXN0LCBpbnQgc291cmNlX3gsIGludCBzb3VyY2VfeSwgaW50IGRlc3RfeCwgaW50IGRlc3RfeSwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKdm9pZCBtYXNrZWRfYmxpdCAoQklUTUFQICpzb3VyY2Us
IEJJVE1BUCAqZGVzdCwgaW50IHNvdXJjZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0X3gsIGlu
dCBkZXN0X3ksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CnZvaWQgc3RyZXRjaF9ibGl0IChCSVRN
QVAgKnMsIEJJVE1BUCAqZCwgaW50IHNfeCwgaW50IHNfeSwgaW50IHNfdywgaW50IHNfaCwgaW50
IGRfeCwgaW50IGRfeSwgaW50IGRfdywgaW50IGRfaCk7CnZvaWQgbWFza2VkX3N0cmV0Y2hfYmxp
dCAoQklUTUFQICpzLCBCSVRNQVAgKmQsIGludCBzX3gsIGludCBzX3ksIGludCBzX3csIGludCBz
X2gsIGludCBkX3gsIGludCBkX3ksIGludCBkX3csIGludCBkX2gpOwp2b2lkIHN0cmV0Y2hfc3By
aXRlIChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSwgaW50IHcsIGlu
dCBoKTsKdm9pZCByb3RhdGVfc3ByaXRlIChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGlu
dCB4LCBpbnQgeSwgZml4ZWQgYW5nbGUpOwp2b2lkIHJvdGF0ZV9zY2FsZWRfc3ByaXRlIChCSVRN
QVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSwgZml4ZWQgYW5nbGUsIGZpeGVk
IHNjYWxlKTsKdm9pZCBwaXZvdF9zcHJpdGUgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwg
aW50IHgsIGludCB5LCBpbnQgY3gsIGludCBjeSwgZml4ZWQgYW5nbGUpOwp2b2lkIHBpdm90X3Nj
YWxlZF9zcHJpdGUgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5LCBp
bnQgY3gsIGludCBjeSwgZml4ZWQgYW5nbGUsIGZpeGVkIHNjYWxlKTsKdm9pZCByb3RhdGVfc3By
aXRlX3ZfZmxpcCAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHksIGZp
eGVkIGFuZ2xlKTsKdm9pZCByb3RhdGVfc2NhbGVkX3Nwcml0ZV92X2ZsaXAgKEJJVE1BUCAqYm1w
LCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5LCBmaXhlZCBhbmdsZSwgZml4ZWQgc2NhbGUp
Owp2b2lkIHBpdm90X3Nwcml0ZV92X2ZsaXAgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwg
aW50IHgsIGludCB5LCBpbnQgY3gsIGludCBjeSwgZml4ZWQgYW5nbGUpOwp2b2lkIHBpdm90X3Nj
YWxlZF9zcHJpdGVfdl9mbGlwIChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBp
bnQgeSwgaW50IGN4LCBpbnQgY3ksIGZpeGVkIGFuZ2xlLCBmaXhlZCBzY2FsZSk7CnZvaWQgZHJh
d19nb3VyYXVkX3Nwcml0ZSAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50
IHksIGludCBjMSwgaW50IGMyLCBpbnQgYzMsIGludCBjNCk7CnZvaWQgY2xlYXJfYml0bWFwIChC
SVRNQVAgKmJpdG1hcCk7CgoKdHlwZWRlZiBzdHJ1Y3QgUkxFX1NQUklURQp7CiAgIGludCB3LCBo
OwogICBpbnQgY29sb3JfZGVwdGg7CiAgIGludCBzaXplOwogICBzaWduZWQgY2hhciBkYXRbXTsK
fSBSTEVfU1BSSVRFOwoKClJMRV9TUFJJVEUgKiBnZXRfcmxlX3Nwcml0ZSAoQklUTUFQICpiaXRt
YXApOwp2b2lkIGRlc3Ryb3lfcmxlX3Nwcml0ZSAoUkxFX1NQUklURSAqc3ByaXRlKTsKCgoKCgp0
eXBlZGVmIHN0cnVjdCBDT01QSUxFRF9TUFJJVEUKewogICBzaG9ydCBwbGFuYXI7CiAgIHNob3J0
IGNvbG9yX2RlcHRoOwogICBzaG9ydCB3LCBoOwogICBzdHJ1Y3QgewogICAgICB2b2lkICpkcmF3
OwogICAgICBpbnQgbGVuOwogICB9IHByb2NbNF07Cn0gQ09NUElMRURfU1BSSVRFOwojIDEzMjgg
Ii4uL2luY2x1ZGUvYWxsZWdyby5oIgpDT01QSUxFRF9TUFJJVEUgKiBnZXRfY29tcGlsZWRfc3By
aXRlIChCSVRNQVAgKmJpdG1hcCwgaW50IHBsYW5hcik7CnZvaWQgZGVzdHJveV9jb21waWxlZF9z
cHJpdGUgKENPTVBJTEVEX1NQUklURSAqc3ByaXRlKTsKdm9pZCBkcmF3X2NvbXBpbGVkX3Nwcml0
ZSAoQklUTUFQICpibXAsIGNvbnN0IENPTVBJTEVEX1NQUklURSAqc3ByaXRlLCBpbnQgeCwgaW50
IHkpOwoKCnR5cGVkZWYgc3RydWN0IEZPTlRfR0xZUEgKewogICBzaG9ydCB3LCBoOwogICB1bnNp
Z25lZCBjaGFyIGRhdFtdOwp9IEZPTlRfR0xZUEg7CgoKc3RydWN0IEZPTlRfVlRBQkxFOwoKdHlw
ZWRlZiBzdHJ1Y3QgRk9OVAp7CiAgIHZvaWQgKmRhdGE7CiAgIGludCBoZWlnaHQ7CiAgIHN0cnVj
dCBGT05UX1ZUQUJMRSAqdnRhYmxlOwp9IEZPTlQ7CgpleHRlcm4gRk9OVCAqIGZvbnQ7CgppbnQg
dGV4dF9tb2RlIChpbnQgbW9kZSk7CnZvaWQgdGV4dG91dCAoQklUTUFQICpibXAsIGNvbnN0IEZP
TlQgKmYsIGNvbnN0IGNoYXIgKnN0ciwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpOwp2b2lkIHRl
eHRvdXRfY2VudHJlIChCSVRNQVAgKmJtcCwgY29uc3QgRk9OVCAqZiwgY29uc3QgY2hhciAqc3Ry
LCBpbnQgeCwgaW50IHksIGludCBjb2xvcik7CnZvaWQgdGV4dG91dF9yaWdodCAoQklUTUFQICpi
bXAsIGNvbnN0IEZPTlQgKmYsIGNvbnN0IGNoYXIgKnN0ciwgaW50IHgsIGludCB5LCBpbnQgY29s
b3IpOwp2b2lkIHRleHRvdXRfanVzdGlmeSAoQklUTUFQICpibXAsIGNvbnN0IEZPTlQgKmYsIGNv
bnN0IGNoYXIgKnN0ciwgaW50IHgxLCBpbnQgeDIsIGludCB5LCBpbnQgZGlmZiwgaW50IGNvbG9y
KTsKdm9pZCB0ZXh0cHJpbnRmIChCSVRNQVAgKmJtcCwgY29uc3QgRk9OVCAqZiwgaW50IHgsIGlu
dCB5LCBpbnQgY29sb3IsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKSBfX2F0dHJpYnV0ZV9fICgo
Zm9ybWF0IChwcmludGYsIDYsIDcpKSk7CnZvaWQgdGV4dHByaW50Zl9jZW50cmUgKEJJVE1BUCAq
Ym1wLCBjb25zdCBGT05UICpmLCBpbnQgeCwgaW50IHksIGludCBjb2xvciwgY29uc3QgY2hhciAq
Zm9ybWF0LCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgNiwgNykpKTsKdm9p
ZCB0ZXh0cHJpbnRmX3JpZ2h0IChCSVRNQVAgKmJtcCwgY29uc3QgRk9OVCAqZiwgaW50IHgsIGlu
dCB5LCBpbnQgY29sb3IsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKSBfX2F0dHJpYnV0ZV9fICgo
Zm9ybWF0IChwcmludGYsIDYsIDcpKSk7CnZvaWQgdGV4dHByaW50Zl9qdXN0aWZ5IChCSVRNQVAg
KmJtcCwgY29uc3QgRk9OVCAqZiwgaW50IHgxLCBpbnQgeDIsIGludCB5LCBpbnQgZGlmZiwgaW50
IGNvbG9yLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAo
cHJpbnRmLCA4LCA5KSkpOwppbnQgdGV4dF9sZW5ndGggKGNvbnN0IEZPTlQgKmYsIGNvbnN0IGNo
YXIgKnN0cik7CmludCB0ZXh0X2hlaWdodCAoY29uc3QgRk9OVCAqZik7CnZvaWQgZGVzdHJveV9m
b250IChGT05UICpmKTsKCgp0eXBlZGVmIHN0cnVjdCBWM0QKewogICBmaXhlZCB4LCB5LCB6Owog
ICBmaXhlZCB1LCB2OwogICBpbnQgYzsKfSBWM0Q7CgoKdHlwZWRlZiBzdHJ1Y3QgVjNEX2YKewog
ICBmbG9hdCB4LCB5LCB6OwogICBmbG9hdCB1LCB2OwogICBpbnQgYzsKfSBWM0RfZjsKIyAxMzk5
ICIuLi9pbmNsdWRlL2FsbGVncm8uaCIKZXh0ZXJuIGZsb2F0IHNjZW5lX2dhcDsKCnZvaWQgcG9s
eWdvbjNkIChCSVRNQVAgKmJtcCwgaW50IHR5cGUsIEJJVE1BUCAqdGV4dHVyZSwgaW50IHZjLCBW
M0QgKnZ0eFtdKTsKdm9pZCBwb2x5Z29uM2RfZiAoQklUTUFQICpibXAsIGludCB0eXBlLCBCSVRN
QVAgKnRleHR1cmUsIGludCB2YywgVjNEX2YgKnZ0eFtdKTsKdm9pZCB0cmlhbmdsZTNkIChCSVRN
QVAgKmJtcCwgaW50IHR5cGUsIEJJVE1BUCAqdGV4dHVyZSwgVjNEICp2MSwgVjNEICp2MiwgVjNE
ICp2Myk7CnZvaWQgdHJpYW5nbGUzZF9mIChCSVRNQVAgKmJtcCwgaW50IHR5cGUsIEJJVE1BUCAq
dGV4dHVyZSwgVjNEX2YgKnYxLCBWM0RfZiAqdjIsIFYzRF9mICp2Myk7CnZvaWQgcXVhZDNkIChC
SVRNQVAgKmJtcCwgaW50IHR5cGUsIEJJVE1BUCAqdGV4dHVyZSwgVjNEICp2MSwgVjNEICp2Miwg
VjNEICp2MywgVjNEICp2NCk7CnZvaWQgcXVhZDNkX2YgKEJJVE1BUCAqYm1wLCBpbnQgdHlwZSwg
QklUTUFQICp0ZXh0dXJlLCBWM0RfZiAqdjEsIFYzRF9mICp2MiwgVjNEX2YgKnYzLCBWM0RfZiAq
djQpOwppbnQgY2xpcDNkIChpbnQgdHlwZSwgZml4ZWQgbWluX3osIGZpeGVkIG1heF96LCBpbnQg
dmMsIGNvbnN0IFYzRCAqdnR4W10sIFYzRCAqdm91dFtdLCBWM0QgKnZ0bXBbXSwgaW50IG91dFtd
KTsKaW50IGNsaXAzZF9mIChpbnQgdHlwZSwgZmxvYXQgbWluX3osIGZsb2F0IG1heF96LCBpbnQg
dmMsIGNvbnN0IFYzRF9mICp2dHhbXSwgVjNEX2YgKnZvdXRbXSwgVjNEX2YgKnZ0bXBbXSwgaW50
IG91dFtdKTsKCgoKCgp0eXBlZGVmIEJJVE1BUCBaQlVGRkVSOwoKWkJVRkZFUiAqIGNyZWF0ZV96
YnVmZmVyIChCSVRNQVAgKmJtcCk7ClpCVUZGRVIgKiBjcmVhdGVfc3ViX3pidWZmZXIgKFpCVUZG
RVIgKnBhcmVudCwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwp2b2lkIHNl
dF96YnVmZmVyIChaQlVGRkVSICp6YnVmKTsKdm9pZCBjbGVhcl96YnVmZmVyIChaQlVGRkVSICp6
YnVmLCBmbG9hdCB6KTsKdm9pZCBkZXN0cm95X3pidWZmZXIgKFpCVUZGRVIgKnpidWYpOwoKaW50
IGNyZWF0ZV9zY2VuZSAoaW50IG5lZGdlLCBpbnQgbnBvbHkpOwp2b2lkIGNsZWFyX3NjZW5lIChC
SVRNQVAqIGJtcCk7CnZvaWQgZGVzdHJveV9zY2VuZSAodm9pZCk7CmludCBzY2VuZV9wb2x5Z29u
M2QgKGludCB0eXBlLCBCSVRNQVAgKnRleHR1cmUsIGludCB2eCwgVjNEICp2dHhbXSk7CmludCBz
Y2VuZV9wb2x5Z29uM2RfZiAoaW50IHR5cGUsIEJJVE1BUCAqdGV4dHVyZSwgaW50IHZ4LCBWM0Rf
ZiAqdnR4W10pOwp2b2lkIHJlbmRlcl9zY2VuZSAodm9pZCk7CiMgMTQ0MCAiLi4vaW5jbHVkZS9h
bGxlZ3JvLmgiCmludCBwbGF5X2ZsaSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIEJJVE1BUCAqYm1w
LCBpbnQgbG9vcCwgaW50ICgqY2FsbGJhY2spICh2b2lkKSk7CmludCBwbGF5X21lbW9yeV9mbGkg
KHZvaWQgKmZsaV9kYXRhLCBCSVRNQVAgKmJtcCwgaW50IGxvb3AsIGludCAoKmNhbGxiYWNrKSAo
dm9pZCkpOwoKaW50IG9wZW5fZmxpIChjb25zdCBjaGFyICpmaWxlbmFtZSk7CmludCBvcGVuX21l
bW9yeV9mbGkgKHZvaWQgKmZsaV9kYXRhKTsKdm9pZCBjbG9zZV9mbGkgKHZvaWQpOwppbnQgbmV4
dF9mbGlfZnJhbWUgKGludCBsb29wKTsKdm9pZCByZXNldF9mbGlfdmFyaWFibGVzICh2b2lkKTsK
CmV4dGVybiBCSVRNQVAgKiBmbGlfYml0bWFwOwpleHRlcm4gUEFMRVRURSBmbGlfcGFsZXR0ZTsK
CmV4dGVybiBpbnQgZmxpX2JtcF9kaXJ0eV9mcm9tOwpleHRlcm4gaW50IGZsaV9ibXBfZGlydHlf
dG87CmV4dGVybiBpbnQgZmxpX3BhbF9kaXJ0eV9mcm9tOwpleHRlcm4gaW50IGZsaV9wYWxfZGly
dHlfdG87CgpleHRlcm4gaW50IGZsaV9mcmFtZTsKCmV4dGVybiB2b2xhdGlsZSBpbnQgZmxpX3Rp
bWVyOwojIDE0NzIgIi4uL2luY2x1ZGUvYWxsZWdyby5oIgp0eXBlZGVmIHN0cnVjdCBTQU1QTEUK
ewogICBpbnQgYml0czsKICAgaW50IHN0ZXJlbzsKICAgaW50IGZyZXE7CiAgIGludCBwcmlvcml0
eTsKICAgdW5zaWduZWQgbG9uZyBsZW47CiAgIHVuc2lnbmVkIGxvbmcgbG9vcF9zdGFydDsKICAg
dW5zaWduZWQgbG9uZyBsb29wX2VuZDsKICAgdW5zaWduZWQgbG9uZyBwYXJhbTsKICAgdm9pZCAq
ZGF0YTsKfSBTQU1QTEU7CgoKdHlwZWRlZiBzdHJ1Y3QgTUlESQp7CiAgIGludCBkaXZpc2lvbnM7
CiAgIHN0cnVjdCB7CiAgICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgIGludCBsZW47CiAg
IH0gdHJhY2tbMzJdOwp9IE1JREk7CgoKdHlwZWRlZiBzdHJ1Y3QgQVVESU9TVFJFQU0KewogICBp
bnQgdm9pY2U7CiAgIFNBTVBMRSAqc2FtcDsKICAgaW50IGxlbjsKICAgaW50IGJ1ZmNvdW50Owog
ICBpbnQgYnVmbnVtOwogICBpbnQgYWN0aXZlOwogICB2b2lkICpsb2NrZWQ7Cn0gQVVESU9TVFJF
QU07CiMgMTUxNiAiLi4vaW5jbHVkZS9hbGxlZ3JvLmgiCnR5cGVkZWYgc3RydWN0IERJR0lfRFJJ
VkVSCnsKICAgaW50IGlkOwogICBjb25zdCBjaGFyICpuYW1lOwogICBjb25zdCBjaGFyICpkZXNj
OwogICBjb25zdCBjaGFyICphc2NpaV9uYW1lOwogICBpbnQgdm9pY2VzOwogICBpbnQgYmFzZXZv
aWNlOwogICBpbnQgbWF4X3ZvaWNlczsKICAgaW50IGRlZl92b2ljZXM7CgoKICAgaW50ICgqZGV0
ZWN0KSAoaW50IGlucHV0KTsKICAgaW50ICgqaW5pdCkgKGludCBpbnB1dCwgaW50IHZvaWNlcyk7
CiAgIHZvaWQgKCpleGl0KSAoaW50IGlucHV0KTsKICAgaW50ICgqbWl4ZXJfdm9sdW1lKSAoaW50
IHZvbHVtZSk7CgoKICAgdm9pZCAqICgqbG9ja192b2ljZSkgKGludCB2b2ljZSwgaW50IHN0YXJ0
LCBpbnQgZW5kKTsKICAgdm9pZCAoKnVubG9ja192b2ljZSkgKGludCB2b2ljZSk7CiAgIGludCAo
KmJ1ZmZlcl9zaXplKSAodm9pZCk7CgoKICAgdm9pZCAoKmluaXRfdm9pY2UpIChpbnQgdm9pY2Us
IGNvbnN0IFNBTVBMRSAqc2FtcGxlKTsKICAgdm9pZCAoKnJlbGVhc2Vfdm9pY2UpIChpbnQgdm9p
Y2UpOwogICB2b2lkICgqc3RhcnRfdm9pY2UpIChpbnQgdm9pY2UpOwogICB2b2lkICgqc3RvcF92
b2ljZSkgKGludCB2b2ljZSk7CiAgIHZvaWQgKCpsb29wX3ZvaWNlKSAoaW50IHZvaWNlLCBpbnQg
cGxheW1vZGUpOwoKCiAgIGludCAoKmdldF9wb3NpdGlvbikgKGludCB2b2ljZSk7CiAgIHZvaWQg
KCpzZXRfcG9zaXRpb24pIChpbnQgdm9pY2UsIGludCBwb3NpdGlvbik7CgoKICAgaW50ICgqZ2V0
X3ZvbHVtZSkgKGludCB2b2ljZSk7CiAgIHZvaWQgKCpzZXRfdm9sdW1lKSAoaW50IHZvaWNlLCBp
bnQgdm9sdW1lKTsKICAgdm9pZCAoKnJhbXBfdm9sdW1lKSAoaW50IHZvaWNlLCBpbnQgdGltZSwg
aW50IGVuZHZvbCk7CiAgIHZvaWQgKCpzdG9wX3ZvbHVtZV9yYW1wKSAoaW50IHZvaWNlKTsKCgog
ICBpbnQgKCpnZXRfZnJlcXVlbmN5KSAoaW50IHZvaWNlKTsKICAgdm9pZCAoKnNldF9mcmVxdWVu
Y3kpIChpbnQgdm9pY2UsIGludCBmcmVxdWVuY3kpOwogICB2b2lkICgqc3dlZXBfZnJlcXVlbmN5
KSAoaW50IHZvaWNlLCBpbnQgdGltZSwgaW50IGVuZGZyZXEpOwogICB2b2lkICgqc3RvcF9mcmVx
dWVuY3lfc3dlZXApIChpbnQgdm9pY2UpOwoKCiAgIGludCAoKmdldF9wYW4pIChpbnQgdm9pY2Up
OwogICB2b2lkICgqc2V0X3BhbikgKGludCB2b2ljZSwgaW50IHBhbik7CiAgIHZvaWQgKCpzd2Vl
cF9wYW4pIChpbnQgdm9pY2UsIGludCB0aW1lLCBpbnQgZW5kcGFuKTsKICAgdm9pZCAoKnN0b3Bf
cGFuX3N3ZWVwKSAoaW50IHZvaWNlKTsKCgogICB2b2lkICgqc2V0X2VjaG8pIChpbnQgdm9pY2Us
IGludCBzdHJlbmd0aCwgaW50IGRlbGF5KTsKICAgdm9pZCAoKnNldF90cmVtb2xvKSAoaW50IHZv
aWNlLCBpbnQgcmF0ZSwgaW50IGRlcHRoKTsKICAgdm9pZCAoKnNldF92aWJyYXRvKSAoaW50IHZv
aWNlLCBpbnQgcmF0ZSwgaW50IGRlcHRoKTsKCgogICBpbnQgcmVjX2NhcF9iaXRzOwogICBpbnQg
cmVjX2NhcF9zdGVyZW87CiAgIGludCAoKnJlY19jYXBfcmF0ZSkgKGludCBiaXRzLCBpbnQgc3Rl
cmVvKTsKICAgaW50ICgqcmVjX2NhcF9wYXJtKSAoaW50IHJhdGUsIGludCBiaXRzLCBpbnQgc3Rl
cmVvKTsKICAgaW50ICgqcmVjX3NvdXJjZSkgKGludCBzb3VyY2UpOwogICBpbnQgKCpyZWNfc3Rh
cnQpIChpbnQgcmF0ZSwgaW50IGJpdHMsIGludCBzdGVyZW8pOwogICB2b2lkICgqcmVjX3N0b3Ap
ICh2b2lkKTsKICAgaW50ICgqcmVjX3JlYWQpICh2b2lkICpidWYpOwp9IERJR0lfRFJJVkVSOwoK
CnR5cGVkZWYgc3RydWN0IE1JRElfRFJJVkVSCnsKICAgaW50IGlkOwogICBjb25zdCBjaGFyICpu
YW1lOwogICBjb25zdCBjaGFyICpkZXNjOwogICBjb25zdCBjaGFyICphc2NpaV9uYW1lOwogICBp
bnQgdm9pY2VzOwogICBpbnQgYmFzZXZvaWNlOwogICBpbnQgbWF4X3ZvaWNlczsKICAgaW50IGRl
Zl92b2ljZXM7CiAgIGludCB4bWluLCB4bWF4OwoKCiAgIGludCAoKmRldGVjdCkgKGludCBpbnB1
dCk7CiAgIGludCAoKmluaXQpIChpbnQgaW5wdXQsIGludCB2b2ljZXMpOwogICB2b2lkICgqZXhp
dCkgKGludCBpbnB1dCk7CiAgIGludCAoKm1peGVyX3ZvbHVtZSkgKGludCB2b2x1bWUpOwoKCiAg
IHZvaWQgKCpyYXdfbWlkaSkgKGludCBkYXRhKTsKCgogICBpbnQgKCpsb2FkX3BhdGNoZXMpIChj
b25zdCBjaGFyICpwYXRjaGVzLCBjb25zdCBjaGFyICpkcnVtcyk7CiAgIHZvaWQgKCphZGp1c3Rf
cGF0Y2hlcykgKGNvbnN0IGNoYXIgKnBhdGNoZXMsIGNvbnN0IGNoYXIgKmRydW1zKTsKCgogICB2
b2lkICgqa2V5X29uKSAoaW50IGluc3QsIGludCBub3RlLCBpbnQgYmVuZCwgaW50IHZvbCwgaW50
IHBhbik7CiAgIHZvaWQgKCprZXlfb2ZmKSAoaW50IHZvaWNlKTsKICAgdm9pZCAoKnNldF92b2x1
bWUpIChpbnQgdm9pY2UsIGludCB2b2wpOwogICB2b2lkICgqc2V0X3BpdGNoKSAoaW50IHZvaWNl
LCBpbnQgbm90ZSwgaW50IGJlbmQpOwogICB2b2lkICgqc2V0X3BhbikgKGludCB2b2ljZSwgaW50
IHBhbik7CiAgIHZvaWQgKCpzZXRfdmlicmF0bykgKGludCB2b2ljZSwgaW50IGFtb3VudCk7Cn0g
TUlESV9EUklWRVI7CgoKZXh0ZXJuIE1JRElfRFJJVkVSIG1pZGlfZGlnbWlkOwoKZXh0ZXJuIF9E
UklWRVJfSU5GTyBfZGlnaV9kcml2ZXJfbGlzdFtdOwpleHRlcm4gX0RSSVZFUl9JTkZPIF9taWRp
X2RyaXZlcl9saXN0W107CiMgMTY0NiAiLi4vaW5jbHVkZS9hbGxlZ3JvLmgiCmV4dGVybiBESUdJ
X0RSSVZFUiAqIGRpZ2lfZHJpdmVyOwpleHRlcm4gTUlESV9EUklWRVIgKiBtaWRpX2RyaXZlcjsK
CmV4dGVybiBESUdJX0RSSVZFUiAqIGRpZ2lfaW5wdXRfZHJpdmVyOwpleHRlcm4gTUlESV9EUklW
RVIgKiBtaWRpX2lucHV0X2RyaXZlcjsKCmV4dGVybiBpbnQgZGlnaV9jYXJkOwpleHRlcm4gaW50
IG1pZGlfY2FyZDsKCmV4dGVybiBpbnQgZGlnaV9pbnB1dF9jYXJkOwpleHRlcm4gaW50IG1pZGlf
aW5wdXRfY2FyZDsKCmV4dGVybiB2b2xhdGlsZSBsb25nIG1pZGlfcG9zOwoKZXh0ZXJuIGxvbmcg
bWlkaV9sb29wX3N0YXJ0OwpleHRlcm4gbG9uZyBtaWRpX2xvb3BfZW5kOwoKaW50IGRldGVjdF9k
aWdpX2RyaXZlciAoaW50IGRyaXZlcl9pZCk7CmludCBkZXRlY3RfbWlkaV9kcml2ZXIgKGludCBk
cml2ZXJfaWQpOwoKdm9pZCByZXNlcnZlX3ZvaWNlcyAoaW50IGRpZ2lfdm9pY2VzLCBpbnQgbWlk
aV92b2ljZXMpOwp2b2lkIHNldF92b2x1bWVfcGVyX3ZvaWNlIChpbnQgc2NhbGUpOwoKaW50IGlu
c3RhbGxfc291bmQgKGludCBkaWdpLCBpbnQgbWlkaSwgY29uc3QgY2hhciAqY2ZnX3BhdGgpOwp2
b2lkIHJlbW92ZV9zb3VuZCAodm9pZCk7CgppbnQgaW5zdGFsbF9zb3VuZF9pbnB1dCAoaW50IGRp
Z2ksIGludCBtaWRpKTsKdm9pZCByZW1vdmVfc291bmRfaW5wdXQgKHZvaWQpOwoKdm9pZCBzZXRf
dm9sdW1lIChpbnQgZGlnaV92b2x1bWUsIGludCBtaWRpX3ZvbHVtZSk7CgpTQU1QTEUgKiBsb2Fk
X3NhbXBsZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwpTQU1QTEUgKiBsb2FkX3dhdiAoY29uc3Qg
Y2hhciAqZmlsZW5hbWUpOwpTQU1QTEUgKiBsb2FkX3ZvYyAoY29uc3QgY2hhciAqZmlsZW5hbWUp
OwpTQU1QTEUgKiBjcmVhdGVfc2FtcGxlIChpbnQgYml0cywgaW50IHN0ZXJlbywgaW50IGZyZXEs
IGludCBsZW4pOwp2b2lkIGRlc3Ryb3lfc2FtcGxlIChTQU1QTEUgKnNwbCk7CgppbnQgcGxheV9z
YW1wbGUgKGNvbnN0IFNBTVBMRSAqc3BsLCBpbnQgdm9sLCBpbnQgcGFuLCBpbnQgZnJlcSwgaW50
IGxvb3ApOwp2b2lkIHN0b3Bfc2FtcGxlIChjb25zdCBTQU1QTEUgKnNwbCk7CnZvaWQgYWRqdXN0
X3NhbXBsZSAoY29uc3QgU0FNUExFICpzcGwsIGludCB2b2wsIGludCBwYW4sIGludCBmcmVxLCBp
bnQgbG9vcCk7CgppbnQgYWxsb2NhdGVfdm9pY2UgKGNvbnN0IFNBTVBMRSAqc3BsKTsKdm9pZCBk
ZWFsbG9jYXRlX3ZvaWNlIChpbnQgdm9pY2UpOwp2b2lkIHJlYWxsb2NhdGVfdm9pY2UgKGludCB2
b2ljZSwgY29uc3QgU0FNUExFICpzcGwpOwp2b2lkIHJlbGVhc2Vfdm9pY2UgKGludCB2b2ljZSk7
CnZvaWQgdm9pY2Vfc3RhcnQgKGludCB2b2ljZSk7CnZvaWQgdm9pY2Vfc3RvcCAoaW50IHZvaWNl
KTsKdm9pZCB2b2ljZV9zZXRfcHJpb3JpdHkgKGludCB2b2ljZSwgaW50IHByaW9yaXR5KTsKU0FN
UExFICogdm9pY2VfY2hlY2sgKGludCB2b2ljZSk7CgoKCgoKCgp2b2lkIHZvaWNlX3NldF9wbGF5
bW9kZSAoaW50IHZvaWNlLCBpbnQgcGxheW1vZGUpOwoKaW50IHZvaWNlX2dldF9wb3NpdGlvbiAo
aW50IHZvaWNlKTsKdm9pZCB2b2ljZV9zZXRfcG9zaXRpb24gKGludCB2b2ljZSwgaW50IHBvc2l0
aW9uKTsKCmludCB2b2ljZV9nZXRfdm9sdW1lIChpbnQgdm9pY2UpOwp2b2lkIHZvaWNlX3NldF92
b2x1bWUgKGludCB2b2ljZSwgaW50IHZvbHVtZSk7CnZvaWQgdm9pY2VfcmFtcF92b2x1bWUgKGlu
dCB2b2ljZSwgaW50IHRpbWUsIGludCBlbmR2b2wpOwp2b2lkIHZvaWNlX3N0b3Bfdm9sdW1lcmFt
cCAoaW50IHZvaWNlKTsKCmludCB2b2ljZV9nZXRfZnJlcXVlbmN5IChpbnQgdm9pY2UpOwp2b2lk
IHZvaWNlX3NldF9mcmVxdWVuY3kgKGludCB2b2ljZSwgaW50IGZyZXF1ZW5jeSk7CnZvaWQgdm9p
Y2Vfc3dlZXBfZnJlcXVlbmN5IChpbnQgdm9pY2UsIGludCB0aW1lLCBpbnQgZW5kZnJlcSk7CnZv
aWQgdm9pY2Vfc3RvcF9mcmVxdWVuY3lfc3dlZXAgKGludCB2b2ljZSk7CgppbnQgdm9pY2VfZ2V0
X3BhbiAoaW50IHZvaWNlKTsKdm9pZCB2b2ljZV9zZXRfcGFuIChpbnQgdm9pY2UsIGludCBwYW4p
Owp2b2lkIHZvaWNlX3N3ZWVwX3BhbiAoaW50IHZvaWNlLCBpbnQgdGltZSwgaW50IGVuZHBhbik7
CnZvaWQgdm9pY2Vfc3RvcF9wYW5fc3dlZXAgKGludCB2b2ljZSk7Cgp2b2lkIHZvaWNlX3NldF9l
Y2hvIChpbnQgdm9pY2UsIGludCBzdHJlbmd0aCwgaW50IGRlbGF5KTsKdm9pZCB2b2ljZV9zZXRf
dHJlbW9sbyAoaW50IHZvaWNlLCBpbnQgcmF0ZSwgaW50IGRlcHRoKTsKdm9pZCB2b2ljZV9zZXRf
dmlicmF0byAoaW50IHZvaWNlLCBpbnQgcmF0ZSwgaW50IGRlcHRoKTsKCgoKCgppbnQgZ2V0X3Nv
dW5kX2lucHV0X2NhcF9iaXRzICh2b2lkKTsKaW50IGdldF9zb3VuZF9pbnB1dF9jYXBfc3RlcmVv
ICh2b2lkKTsKaW50IGdldF9zb3VuZF9pbnB1dF9jYXBfcmF0ZSAoaW50IGJpdHMsIGludCBzdGVy
ZW8pOwppbnQgZ2V0X3NvdW5kX2lucHV0X2NhcF9wYXJtIChpbnQgcmF0ZSwgaW50IGJpdHMsIGlu
dCBzdGVyZW8pOwppbnQgc2V0X3NvdW5kX2lucHV0X3NvdXJjZSAoaW50IHNvdXJjZSk7CmludCBz
dGFydF9zb3VuZF9pbnB1dCAoaW50IHJhdGUsIGludCBiaXRzLCBpbnQgc3RlcmVvKTsKdm9pZCBz
dG9wX3NvdW5kX2lucHV0ICh2b2lkKTsKaW50IHJlYWRfc291bmRfaW5wdXQgKHZvaWQgKmJ1ZmZl
cik7CgpleHRlcm4gdm9pZCAoKmRpZ2lfcmVjb3JkZXIpICh2b2lkKTsKCk1JREkgKiBsb2FkX21p
ZGkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKdm9pZCBkZXN0cm95X21pZGkgKE1JREkgKm1pZGkp
OwppbnQgcGxheV9taWRpIChNSURJICptaWRpLCBpbnQgbG9vcCk7CmludCBwbGF5X2xvb3BlZF9t
aWRpIChNSURJICptaWRpLCBpbnQgbG9vcF9zdGFydCwgaW50IGxvb3BfZW5kKTsKdm9pZCBzdG9w
X21pZGkgKHZvaWQpOwp2b2lkIG1pZGlfcGF1c2UgKHZvaWQpOwp2b2lkIG1pZGlfcmVzdW1lICh2
b2lkKTsKaW50IG1pZGlfc2VlayAoaW50IHRhcmdldCk7CnZvaWQgbWlkaV9vdXQgKHVuc2lnbmVk
IGNoYXIgKmRhdGEsIGludCBsZW5ndGgpOwppbnQgbG9hZF9taWRpX3BhdGNoZXMgKHZvaWQpOwoK
ZXh0ZXJuIHZvaWQgKCptaWRpX21zZ19jYWxsYmFjaykgKGludCBtc2csIGludCBieXRlMSwgaW50
IGJ5dGUyKTsKZXh0ZXJuIHZvaWQgKCptaWRpX21ldGFfY2FsbGJhY2spIChpbnQgdHlwZSwgY29u
c3QgdW5zaWduZWQgY2hhciAqZGF0YSwgaW50IGxlbmd0aCk7CmV4dGVybiB2b2lkICgqbWlkaV9z
eXNleF9jYWxsYmFjaykgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIGludCBsZW5ndGgpOwoK
ZXh0ZXJuIHZvaWQgKCptaWRpX3JlY29yZGVyKSAodW5zaWduZWQgY2hhciBkYXRhKTsKCkFVRElP
U1RSRUFNICogcGxheV9hdWRpb19zdHJlYW0gKGludCBsZW4sIGludCBiaXRzLCBpbnQgc3RlcmVv
LCBpbnQgZnJlcSwgaW50IHZvbCwgaW50IHBhbik7CnZvaWQgc3RvcF9hdWRpb19zdHJlYW0gKEFV
RElPU1RSRUFNICpzdHJlYW0pOwp2b2lkICogZ2V0X2F1ZGlvX3N0cmVhbV9idWZmZXIgKEFVRElP
U1RSRUFNICpzdHJlYW0pOwp2b2lkIGZyZWVfYXVkaW9fc3RyZWFtX2J1ZmZlciAoQVVESU9TVFJF
QU0gKnN0cmVhbSk7CgoKCgoKCgpjaGFyICogZml4X2ZpbGVuYW1lX2Nhc2UgKGNoYXIgKnBhdGgp
OwpjaGFyICogZml4X2ZpbGVuYW1lX3NsYXNoZXMgKGNoYXIgKnBhdGgpOwpjaGFyICogZml4X2Zp
bGVuYW1lX3BhdGggKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBzaXplKTsKY2hh
ciAqIHJlcGxhY2VfZmlsZW5hbWUgKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0
IGNoYXIgKmZpbGVuYW1lLCBpbnQgc2l6ZSk7CmNoYXIgKiByZXBsYWNlX2V4dGVuc2lvbiAoY2hh
ciAqZGVzdCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmV4dCwgaW50IHNpemUp
OwpjaGFyICogYXBwZW5kX2ZpbGVuYW1lIChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpwYXRoLCBj
b25zdCBjaGFyICpmaWxlbmFtZSwgaW50IHNpemUpOwpjaGFyICogZ2V0X2ZpbGVuYW1lIChjb25z
dCBjaGFyICpwYXRoKTsKY2hhciAqIGdldF9leHRlbnNpb24gKGNvbnN0IGNoYXIgKmZpbGVuYW1l
KTsKdm9pZCBwdXRfYmFja3NsYXNoIChjaGFyICpmaWxlbmFtZSk7CmludCBmaWxlX2V4aXN0cyAo
Y29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBhdHRyaWIsIGludCAqYXJldCk7CmludCBleGlzdHMg
KGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKbG9uZyBmaWxlX3NpemUgKGNvbnN0IGNoYXIgKmZpbGVu
YW1lKTsKdGltZV90IGZpbGVfdGltZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwppbnQgZGVsZXRl
X2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKaW50IGZvcl9lYWNoX2ZpbGUgKGNvbnN0IGNo
YXIgKm5hbWUsIGludCBhdHRyaWIsIHZvaWQgKCpjYWxsYmFjaykgKGNvbnN0IGNoYXIgKmZpbGVu
YW1lLCBpbnQgYXR0cmliLCBpbnQgcGFyYW0pLCBpbnQgcGFyYW0pOwppbnQgZmluZF9hbGxlZ3Jv
X3Jlc291cmNlIChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpyZXNvdXJjZSwgY29uc3QgY2hhciAq
ZXh0LCBjb25zdCBjaGFyICpkYXRhZmlsZSwgY29uc3QgY2hhciAqb2JqZWN0bmFtZSwgY29uc3Qg
Y2hhciAqZW52dmFyLCBjb25zdCBjaGFyICpzdWJkaXIsIGludCBzaXplKTsKCnN0cnVjdCBhbF9m
ZmJsawp7CiAgIGludCBhdHRyaWI7CiAgIHRpbWVfdCB0aW1lOwogICBsb25nIHNpemU7CiAgIGNo
YXIgbmFtZVs1MTJdOwogICB2b2lkICpmZl9kYXRhOwp9OwoKaW50IGFsX2ZpbmRmaXJzdCAoY29u
c3QgY2hhciAqcGF0dGVybiwgc3RydWN0IGFsX2ZmYmxrICppbmZvLCBpbnQgYXR0cmliKTsKaW50
IGFsX2ZpbmRuZXh0IChzdHJ1Y3QgYWxfZmZibGsgKmluZm8pOwp2b2lkIGFsX2ZpbmRjbG9zZSAo
c3RydWN0IGFsX2ZmYmxrICppbmZvKTsKIyAxODIzICIuLi9pbmNsdWRlL2FsbGVncm8uaCIKdHlw
ZWRlZiBzdHJ1Y3QgUEFDS0ZJTEUKewogICBpbnQgaG5kbDsKICAgaW50IGZsYWdzOwogICB1bnNp
Z25lZCBjaGFyICpidWZfcG9zOwogICBpbnQgYnVmX3NpemU7CiAgIGxvbmcgdG9kbzsKICAgc3Ry
dWN0IFBBQ0tGSUxFICpwYXJlbnQ7CiAgIHZvaWQgKnBhY2tfZGF0YTsKICAgY2hhciAqZmlsZW5h
bWU7CiAgIGNoYXIgKnBhc3NkYXRhOwogICBjaGFyICpwYXNzcG9zOwogICB1bnNpZ25lZCBjaGFy
IGJ1Zls0MDk2XTsKfSBQQUNLRklMRTsKCgp2b2lkIHBhY2tmaWxlX3Bhc3N3b3JkIChjb25zdCBj
aGFyICpwYXNzd29yZCk7ClBBQ0tGSUxFICogcGFja19mb3BlbiAoY29uc3QgY2hhciAqZmlsZW5h
bWUsIGNvbnN0IGNoYXIgKm1vZGUpOwppbnQgcGFja19mY2xvc2UgKFBBQ0tGSUxFICpmKTsKaW50
IHBhY2tfZnNlZWsgKFBBQ0tGSUxFICpmLCBpbnQgb2Zmc2V0KTsKUEFDS0ZJTEUgKiBwYWNrX2Zv
cGVuX2NodW5rIChQQUNLRklMRSAqZiwgaW50IHBhY2spOwpQQUNLRklMRSAqIHBhY2tfZmNsb3Nl
X2NodW5rIChQQUNLRklMRSAqZik7CmludCBwYWNrX2lnZXR3IChQQUNLRklMRSAqZik7Cmxvbmcg
cGFja19pZ2V0bCAoUEFDS0ZJTEUgKmYpOwppbnQgcGFja19pcHV0dyAoaW50IHcsIFBBQ0tGSUxF
ICpmKTsKbG9uZyBwYWNrX2lwdXRsIChsb25nIGwsIFBBQ0tGSUxFICpmKTsKaW50IHBhY2tfbWdl
dHcgKFBBQ0tGSUxFICpmKTsKbG9uZyBwYWNrX21nZXRsIChQQUNLRklMRSAqZik7CmludCBwYWNr
X21wdXR3IChpbnQgdywgUEFDS0ZJTEUgKmYpOwpsb25nIHBhY2tfbXB1dGwgKGxvbmcgbCwgUEFD
S0ZJTEUgKmYpOwpsb25nIHBhY2tfZnJlYWQgKHZvaWQgKnAsIGxvbmcgbiwgUEFDS0ZJTEUgKmYp
Owpsb25nIHBhY2tfZndyaXRlIChjb25zdCB2b2lkICpwLCBsb25nIG4sIFBBQ0tGSUxFICpmKTsK
Y2hhciAqIHBhY2tfZmdldHMgKGNoYXIgKnAsIGludCBtYXgsIFBBQ0tGSUxFICpmKTsKaW50IHBh
Y2tfZnB1dHMgKGNvbnN0IGNoYXIgKnAsIFBBQ0tGSUxFICpmKTsKCmludCBfc29ydF9vdXRfZ2V0
YyAoUEFDS0ZJTEUgKmYpOwppbnQgX3NvcnRfb3V0X3B1dGMgKGludCBjLCBQQUNLRklMRSAqZik7
CiMgMTg4NyAiLi4vaW5jbHVkZS9hbGxlZ3JvLmgiCnR5cGVkZWYgc3RydWN0IERBVEFGSUxFX1BS
T1BFUlRZCnsKICAgY2hhciAqZGF0OwogICBpbnQgdHlwZTsKfSBEQVRBRklMRV9QUk9QRVJUWTsK
Cgp0eXBlZGVmIHN0cnVjdCBEQVRBRklMRQp7CiAgIHZvaWQgKmRhdDsKICAgaW50IHR5cGU7CiAg
IGxvbmcgc2l6ZTsKICAgREFUQUZJTEVfUFJPUEVSVFkgKnByb3A7Cn0gREFUQUZJTEU7CgoKREFU
QUZJTEUgKiBsb2FkX2RhdGFmaWxlIChjb25zdCBjaGFyICpmaWxlbmFtZSk7CkRBVEFGSUxFICog
bG9hZF9kYXRhZmlsZV9jYWxsYmFjayAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHZvaWQgKCpjYWxs
YmFjaykgKERBVEFGSUxFICopKTsKdm9pZCB1bmxvYWRfZGF0YWZpbGUgKERBVEFGSUxFICpkYXQp
OwoKREFUQUZJTEUgKiBsb2FkX2RhdGFmaWxlX29iamVjdCAoY29uc3QgY2hhciAqZmlsZW5hbWUs
IGNvbnN0IGNoYXIgKm9iamVjdG5hbWUpOwp2b2lkIHVubG9hZF9kYXRhZmlsZV9vYmplY3QgKERB
VEFGSUxFICpkYXQpOwoKREFUQUZJTEUgKiBmaW5kX2RhdGFmaWxlX29iamVjdCAoY29uc3QgREFU
QUZJTEUgKmRhdCwgY29uc3QgY2hhciAqb2JqZWN0bmFtZSk7CmNvbnN0IGNoYXIgKiBnZXRfZGF0
YWZpbGVfcHJvcGVydHkgKGNvbnN0IERBVEFGSUxFICpkYXQsIGludCB0eXBlKTsKdm9pZCByZWdp
c3Rlcl9kYXRhZmlsZV9vYmplY3QgKGludCBpZCwgdm9pZCAqICgqbG9hZCkgKFBBQ0tGSUxFICpm
LCBsb25nIHNpemUpLCB2b2lkICgqZGVzdHJveSkgKHZvaWQgKmRhdGEpKTsKCnZvaWQgZml4dXBf
ZGF0YWZpbGUgKERBVEFGSUxFICpkYXRhKTsKCkJJVE1BUCAqIGxvYWRfYml0bWFwIChjb25zdCBj
aGFyICpmaWxlbmFtZSwgUkdCICpwYWwpOwpCSVRNQVAgKiBsb2FkX2JtcCAoY29uc3QgY2hhciAq
ZmlsZW5hbWUsIFJHQiAqcGFsKTsKQklUTUFQICogbG9hZF9sYm0gKGNvbnN0IGNoYXIgKmZpbGVu
YW1lLCBSR0IgKnBhbCk7CkJJVE1BUCAqIGxvYWRfcGN4IChjb25zdCBjaGFyICpmaWxlbmFtZSwg
UkdCICpwYWwpOwpCSVRNQVAgKiBsb2FkX3RnYSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIFJHQiAq
cGFsKTsKCmludCBzYXZlX2JpdG1hcCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIEJJVE1BUCAqYm1w
LCBjb25zdCBSR0IgKnBhbCk7CmludCBzYXZlX2JtcCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIEJJ
VE1BUCAqYm1wLCBjb25zdCBSR0IgKnBhbCk7CmludCBzYXZlX3BjeCAoY29uc3QgY2hhciAqZmls
ZW5hbWUsIEJJVE1BUCAqYm1wLCBjb25zdCBSR0IgKnBhbCk7CmludCBzYXZlX3RnYSAoY29uc3Qg
Y2hhciAqZmlsZW5hbWUsIEJJVE1BUCAqYm1wLCBjb25zdCBSR0IgKnBhbCk7Cgp2b2lkIHJlZ2lz
dGVyX2JpdG1hcF9maWxlX3R5cGUgKGNvbnN0IGNoYXIgKmV4dCwgQklUTUFQICogKCpsb2FkKSAo
Y29uc3QgY2hhciAqZmlsZW5hbWUsIFJHQiAqcGFsKSwgaW50ICgqc2F2ZSkgKGNvbnN0IGNoYXIg
KmZpbGVuYW1lLCBCSVRNQVAgKmJtcCwgY29uc3QgUkdCICpwYWwpKTsKCgoKCgoKCmZpeGVkIGZz
cXJ0IChmaXhlZCB4KTsKZml4ZWQgZmh5cG90IChmaXhlZCB4LCBmaXhlZCB5KTsKZml4ZWQgZmF0
YW4gKGZpeGVkIHgpOwpmaXhlZCBmYXRhbjIgKGZpeGVkIHksIGZpeGVkIHgpOwoKZXh0ZXJuIGZp
eGVkIF9jb3NfdGJsW107CmV4dGVybiBmaXhlZCBfdGFuX3RibFtdOwpleHRlcm4gZml4ZWQgX2Fj
b3NfdGJsW107CgoKdHlwZWRlZiBzdHJ1Y3QgTUFUUklYCnsKICAgZml4ZWQgdlszXVszXTsKICAg
Zml4ZWQgdFszXTsKfSBNQVRSSVg7CgoKdHlwZWRlZiBzdHJ1Y3QgTUFUUklYX2YKewogICBmbG9h
dCB2WzNdWzNdOwogICBmbG9hdCB0WzNdOwp9IE1BVFJJWF9mOwoKCmV4dGVybiBNQVRSSVggaWRl
bnRpdHlfbWF0cml4OwpleHRlcm4gTUFUUklYX2YgaWRlbnRpdHlfbWF0cml4X2Y7Cgp2b2lkIGdl
dF90cmFuc2xhdGlvbl9tYXRyaXggKE1BVFJJWCAqbSwgZml4ZWQgeCwgZml4ZWQgeSwgZml4ZWQg
eik7CnZvaWQgZ2V0X3RyYW5zbGF0aW9uX21hdHJpeF9mIChNQVRSSVhfZiAqbSwgZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgeik7Cgp2b2lkIGdldF9zY2FsaW5nX21hdHJpeCAoTUFUUklYICptLCBm
aXhlZCB4LCBmaXhlZCB5LCBmaXhlZCB6KTsKdm9pZCBnZXRfc2NhbGluZ19tYXRyaXhfZiAoTUFU
UklYX2YgKm0sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwoKdm9pZCBnZXRfeF9yb3RhdGVf
bWF0cml4IChNQVRSSVggKm0sIGZpeGVkIHIpOwp2b2lkIGdldF94X3JvdGF0ZV9tYXRyaXhfZiAo
TUFUUklYX2YgKm0sIGZsb2F0IHIpOwoKdm9pZCBnZXRfeV9yb3RhdGVfbWF0cml4IChNQVRSSVgg
Km0sIGZpeGVkIHIpOwp2b2lkIGdldF95X3JvdGF0ZV9tYXRyaXhfZiAoTUFUUklYX2YgKm0sIGZs
b2F0IHIpOwoKdm9pZCBnZXRfel9yb3RhdGVfbWF0cml4IChNQVRSSVggKm0sIGZpeGVkIHIpOwp2
b2lkIGdldF96X3JvdGF0ZV9tYXRyaXhfZiAoTUFUUklYX2YgKm0sIGZsb2F0IHIpOwoKdm9pZCBn
ZXRfcm90YXRpb25fbWF0cml4IChNQVRSSVggKm0sIGZpeGVkIHgsIGZpeGVkIHksIGZpeGVkIHop
Owp2b2lkIGdldF9yb3RhdGlvbl9tYXRyaXhfZiAoTUFUUklYX2YgKm0sIGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHopOwoKdm9pZCBnZXRfYWxpZ25fbWF0cml4IChNQVRSSVggKm0sIGZpeGVkIHhm
cm9udCwgZml4ZWQgeWZyb250LCBmaXhlZCB6ZnJvbnQsIGZpeGVkIHh1cCwgZml4ZWQgeXVwLCBm
aXhlZCB6dXApOwp2b2lkIGdldF9hbGlnbl9tYXRyaXhfZiAoTUFUUklYX2YgKm0sIGZsb2F0IHhm
cm9udCwgZmxvYXQgeWZyb250LCBmbG9hdCB6ZnJvbnQsIGZsb2F0IHh1cCwgZmxvYXQgeXVwLCBm
bG9hdCB6dXApOwoKdm9pZCBnZXRfdmVjdG9yX3JvdGF0aW9uX21hdHJpeCAoTUFUUklYICptLCBm
aXhlZCB4LCBmaXhlZCB5LCBmaXhlZCB6LCBmaXhlZCBhKTsKdm9pZCBnZXRfdmVjdG9yX3JvdGF0
aW9uX21hdHJpeF9mIChNQVRSSVhfZiAqbSwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxv
YXQgYSk7Cgp2b2lkIGdldF90cmFuc2Zvcm1hdGlvbl9tYXRyaXggKE1BVFJJWCAqbSwgZml4ZWQg
c2NhbGUsIGZpeGVkIHhyb3QsIGZpeGVkIHlyb3QsIGZpeGVkIHpyb3QsIGZpeGVkIHgsIGZpeGVk
IHksIGZpeGVkIHopOwp2b2lkIGdldF90cmFuc2Zvcm1hdGlvbl9tYXRyaXhfZiAoTUFUUklYX2Yg
Km0sIGZsb2F0IHNjYWxlLCBmbG9hdCB4cm90LCBmbG9hdCB5cm90LCBmbG9hdCB6cm90LCBmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKCnZvaWQgZ2V0X2NhbWVyYV9tYXRyaXggKE1BVFJJWCAq
bSwgZml4ZWQgeCwgZml4ZWQgeSwgZml4ZWQgeiwgZml4ZWQgeGZyb250LCBmaXhlZCB5ZnJvbnQs
IGZpeGVkIHpmcm9udCwgZml4ZWQgeHVwLCBmaXhlZCB5dXAsIGZpeGVkIHp1cCwgZml4ZWQgZm92
LCBmaXhlZCBhc3BlY3QpOwp2b2lkIGdldF9jYW1lcmFfbWF0cml4X2YgKE1BVFJJWF9mICptLCBm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB4ZnJvbnQsIGZsb2F0IHlmcm9udCwgZmxv
YXQgemZyb250LCBmbG9hdCB4dXAsIGZsb2F0IHl1cCwgZmxvYXQgenVwLCBmbG9hdCBmb3YsIGZs
b2F0IGFzcGVjdCk7Cgp2b2lkIHF0cmFuc2xhdGVfbWF0cml4IChNQVRSSVggKm0sIGZpeGVkIHgs
IGZpeGVkIHksIGZpeGVkIHopOwp2b2lkIHF0cmFuc2xhdGVfbWF0cml4X2YgKE1BVFJJWF9mICpt
LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKCnZvaWQgcXNjYWxlX21hdHJpeCAoTUFUUklY
ICptLCBmaXhlZCBzY2FsZSk7CnZvaWQgcXNjYWxlX21hdHJpeF9mIChNQVRSSVhfZiAqbSwgZmxv
YXQgc2NhbGUpOwoKdm9pZCBtYXRyaXhfbXVsIChjb25zdCBNQVRSSVggKm0xLCBjb25zdCBNQVRS
SVggKm0yLCBNQVRSSVggKm91dCk7CnZvaWQgbWF0cml4X211bF9mIChjb25zdCBNQVRSSVhfZiAq
bTEsIGNvbnN0IE1BVFJJWF9mICptMiwgTUFUUklYX2YgKm91dCk7CgpmaXhlZCB2ZWN0b3JfbGVu
Z3RoIChmaXhlZCB4LCBmaXhlZCB5LCBmaXhlZCB6KTsKZmxvYXQgdmVjdG9yX2xlbmd0aF9mIChm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKCnZvaWQgbm9ybWFsaXplX3ZlY3RvciAoZml4ZWQg
KngsIGZpeGVkICp5LCBmaXhlZCAqeik7CnZvaWQgbm9ybWFsaXplX3ZlY3Rvcl9mIChmbG9hdCAq
eCwgZmxvYXQgKnksIGZsb2F0ICp6KTsKCnZvaWQgY3Jvc3NfcHJvZHVjdCAoZml4ZWQgeDEsIGZp
eGVkIHkxLCBmaXhlZCB6MSwgZml4ZWQgeDIsIGZpeGVkIHkyLCBmaXhlZCB6MiwgZml4ZWQgKnhv
dXQsIGZpeGVkICp5b3V0LCBmaXhlZCAqem91dCk7CnZvaWQgY3Jvc3NfcHJvZHVjdF9mIChmbG9h
dCB4MSwgZmxvYXQgeTEsIGZsb2F0IHoxLCBmbG9hdCB4MiwgZmxvYXQgeTIsIGZsb2F0IHoyLCBm
bG9hdCAqeG91dCwgZmxvYXQgKnlvdXQsIGZsb2F0ICp6b3V0KTsKCmZpeGVkIHBvbHlnb25fel9u
b3JtYWwgKGNvbnN0IFYzRCAqdjEsIGNvbnN0IFYzRCAqdjIsIGNvbnN0IFYzRCAqdjMpOwpmbG9h
dCBwb2x5Z29uX3pfbm9ybWFsX2YgKGNvbnN0IFYzRF9mICp2MSwgY29uc3QgVjNEX2YgKnYyLCBj
b25zdCBWM0RfZiAqdjMpOwoKdm9pZCBhcHBseV9tYXRyaXhfZiAoY29uc3QgTUFUUklYX2YgKm0s
IGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0ICp4b3V0LCBmbG9hdCAqeW91dCwgZmxv
YXQgKnpvdXQpOwoKZXh0ZXJuIGZpeGVkIF9wZXJzcF94c2NhbGU7CmV4dGVybiBmaXhlZCBfcGVy
c3BfeXNjYWxlOwpleHRlcm4gZml4ZWQgX3BlcnNwX3hvZmZzZXQ7CmV4dGVybiBmaXhlZCBfcGVy
c3BfeW9mZnNldDsKCmV4dGVybiBmbG9hdCBfcGVyc3BfeHNjYWxlX2Y7CmV4dGVybiBmbG9hdCBf
cGVyc3BfeXNjYWxlX2Y7CmV4dGVybiBmbG9hdCBfcGVyc3BfeG9mZnNldF9mOwpleHRlcm4gZmxv
YXQgX3BlcnNwX3lvZmZzZXRfZjsKCnZvaWQgc2V0X3Byb2plY3Rpb25fdmlld3BvcnQgKGludCB4
LCBpbnQgeSwgaW50IHcsIGludCBoKTsKCgp0eXBlZGVmIHN0cnVjdCBRVUFUCnsKICAgZmxvYXQg
dywgeCwgeSwgejsKfSBRVUFUOwoKCmV4dGVybiBRVUFUIGlkZW50aXR5X3F1YXQ7Cgp2b2lkIHF1
YXRfbXVsIChjb25zdCBRVUFUICpwLCBjb25zdCBRVUFUICpxLCBRVUFUICpvdXQpOwp2b2lkIGdl
dF94X3JvdGF0ZV9xdWF0IChRVUFUICpxLCBmbG9hdCByKTsKdm9pZCBnZXRfeV9yb3RhdGVfcXVh
dCAoUVVBVCAqcSwgZmxvYXQgcik7CnZvaWQgZ2V0X3pfcm90YXRlX3F1YXQgKFFVQVQgKnEsIGZs
b2F0IHIpOwp2b2lkIGdldF9yb3RhdGlvbl9xdWF0IChRVUFUICpxLCBmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6KTsKdm9pZCBnZXRfdmVjdG9yX3JvdGF0aW9uX3F1YXQgKFFVQVQgKnEsIGZsb2F0
IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IGEpOwp2b2lkIHF1YXRfdG9fbWF0cml4IChjb25z
dCBRVUFUICpxLCBNQVRSSVhfZiAqbSk7CnZvaWQgbWF0cml4X3RvX3F1YXQgKGNvbnN0IE1BVFJJ
WF9mICptLCBRVUFUICpxKTsKdm9pZCBhcHBseV9xdWF0IChjb25zdCBRVUFUICpxLCBmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCAqeG91dCwgZmxvYXQgKnlvdXQsIGZsb2F0ICp6b3V0
KTsKdm9pZCBxdWF0X3NsZXJwIChjb25zdCBRVUFUICpmcm9tLCBjb25zdCBRVUFUICp0bywgZmxv
YXQgdCwgUVVBVCAqb3V0LCBpbnQgaG93KTsKIyAyMDYxICIuLi9pbmNsdWRlL2FsbGVncm8uaCIK
c3RydWN0IERJQUxPRzsKCnR5cGVkZWYgaW50ICgqRElBTE9HX1BST0MpIChpbnQgbXNnLCBzdHJ1
Y3QgRElBTE9HICpkLCBpbnQgYyk7Cgp0eXBlZGVmIHN0cnVjdCBESUFMT0cKewogICBESUFMT0df
UFJPQyBwcm9jOwogICBpbnQgeCwgeSwgdywgaDsKICAgaW50IGZnLCBiZzsKICAgaW50IGtleTsK
ICAgaW50IGZsYWdzOwogICBpbnQgZDEsIGQyOwogICB2b2lkICpkcCwgKmRwMiwgKmRwMzsKfSBE
SUFMT0c7CgoKCnR5cGVkZWYgc3RydWN0IE1FTlUKewogICBjaGFyICp0ZXh0OwogICBpbnQgKCpw
cm9jKSAodm9pZCk7CiAgIHN0cnVjdCBNRU5VICpjaGlsZDsKICAgaW50IGZsYWdzOwogICB2b2lk
ICpkcDsKfSBNRU5VOwoKCgp0eXBlZGVmIHN0cnVjdCBESUFMT0dfUExBWUVSCnsKICAgaW50IG9i
ajsKICAgaW50IHJlczsKICAgaW50IG1vdXNlX29iajsKICAgaW50IGZvY3VzX29iajsKICAgaW50
IGpveV9vbjsKICAgaW50IGNsaWNrX3dhaXQ7CiAgIGludCBtb3VzZV9veCwgbW91c2Vfb3k7CiAg
IGludCBtb3VzZV9vejsKICAgaW50IG1vdXNlX2I7CiAgIERJQUxPRyAqZGlhbG9nOwp9IERJQUxP
R19QTEFZRVI7CiMgMjE1MyAiLi4vaW5jbHVkZS9hbGxlZ3JvLmgiCmludCBkX3lpZWxkX3Byb2Mg
KGludCBtc2csIERJQUxPRyAqZCwgaW50IGMpOwppbnQgZF9jbGVhcl9wcm9jIChpbnQgbXNnLCBE
SUFMT0cgKmQsIGludCBjKTsKaW50IGRfYm94X3Byb2MgKGludCBtc2csIERJQUxPRyAqZCwgaW50
IGMpOwppbnQgZF9zaGFkb3dfYm94X3Byb2MgKGludCBtc2csIERJQUxPRyAqZCwgaW50IGMpOwpp
bnQgZF9iaXRtYXBfcHJvYyAoaW50IG1zZywgRElBTE9HICpkLCBpbnQgYyk7CmludCBkX3RleHRf
cHJvYyAoaW50IG1zZywgRElBTE9HICpkLCBpbnQgYyk7CmludCBkX2N0ZXh0X3Byb2MgKGludCBt
c2csIERJQUxPRyAqZCwgaW50IGMpOwppbnQgZF9ydGV4dF9wcm9jIChpbnQgbXNnLCBESUFMT0cg
KmQsIGludCBjKTsKaW50IGRfYnV0dG9uX3Byb2MgKGludCBtc2csIERJQUxPRyAqZCwgaW50IGMp
OwppbnQgZF9jaGVja19wcm9jIChpbnQgbXNnLCBESUFMT0cgKmQsIGludCBjKTsKaW50IGRfcmFk
aW9fcHJvYyAoaW50IG1zZywgRElBTE9HICpkLCBpbnQgYyk7CmludCBkX2ljb25fcHJvYyAoaW50
IG1zZywgRElBTE9HICpkLCBpbnQgYyk7CmludCBkX2tleWJvYXJkX3Byb2MgKGludCBtc2csIERJ
QUxPRyAqZCwgaW50IGMpOwppbnQgZF9lZGl0X3Byb2MgKGludCBtc2csIERJQUxPRyAqZCwgaW50
IGMpOwppbnQgZF9saXN0X3Byb2MgKGludCBtc2csIERJQUxPRyAqZCwgaW50IGMpOwppbnQgZF90
ZXh0X2xpc3RfcHJvYyAoaW50IG1zZywgRElBTE9HICpkLCBpbnQgYyk7CmludCBkX3RleHRib3hf
cHJvYyAoaW50IG1zZywgRElBTE9HICpkLCBpbnQgYyk7CmludCBkX3NsaWRlcl9wcm9jIChpbnQg
bXNnLCBESUFMT0cgKmQsIGludCBjKTsKaW50IGRfbWVudV9wcm9jIChpbnQgbXNnLCBESUFMT0cg
KmQsIGludCBjKTsKCmV4dGVybiBESUFMT0dfUFJPQyBndWlfc2hhZG93X2JveF9wcm9jOwpleHRl
cm4gRElBTE9HX1BST0MgZ3VpX2N0ZXh0X3Byb2M7CmV4dGVybiBESUFMT0dfUFJPQyBndWlfYnV0
dG9uX3Byb2M7CmV4dGVybiBESUFMT0dfUFJPQyBndWlfZWRpdF9wcm9jOwpleHRlcm4gRElBTE9H
X1BST0MgZ3VpX2xpc3RfcHJvYzsKZXh0ZXJuIERJQUxPR19QUk9DIGd1aV90ZXh0X2xpc3RfcHJv
YzsKCmV4dGVybiB2b2lkICgqZ3VpX21lbnVfZHJhd19tZW51KSAoaW50IHgsIGludCB5LCBpbnQg
dywgaW50IGgpOwpleHRlcm4gdm9pZCAoKmd1aV9tZW51X2RyYXdfbWVudV9pdGVtKSAoTUVOVSAq
bSwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsIGludCBiYXIsIGludCBzZWwpOwoKZXh0ZXJu
IERJQUxPRyAqIGFjdGl2ZV9kaWFsb2c7CmV4dGVybiBNRU5VICogYWN0aXZlX21lbnU7CgpleHRl
cm4gaW50IGd1aV9tb3VzZV9mb2N1czsKCmV4dGVybiBpbnQgZ3VpX2ZnX2NvbG9yOwpleHRlcm4g
aW50IGd1aV9tZ19jb2xvcjsKZXh0ZXJuIGludCBndWlfYmdfY29sb3I7CgpleHRlcm4gaW50IGd1
aV9mb250X2Jhc2VsaW5lOwoKZXh0ZXJuIGludCAoKmd1aV9tb3VzZV94KSAodm9pZCk7CmV4dGVy
biBpbnQgKCpndWlfbW91c2VfeSkgKHZvaWQpOwpleHRlcm4gaW50ICgqZ3VpX21vdXNlX3opICh2
b2lkKTsKZXh0ZXJuIGludCAoKmd1aV9tb3VzZV9iKSAodm9pZCk7CgppbnQgZ3VpX3RleHRvdXQg
KEJJVE1BUCAqYm1wLCBjb25zdCBjaGFyICpzLCBpbnQgeCwgaW50IHksIGludCBjb2xvciwgaW50
IGNlbnRyZSk7CmludCBndWlfc3RybGVuIChjb25zdCBjaGFyICpzKTsKdm9pZCBwb3NpdGlvbl9k
aWFsb2cgKERJQUxPRyAqZGlhbG9nLCBpbnQgeCwgaW50IHkpOwp2b2lkIGNlbnRyZV9kaWFsb2cg
KERJQUxPRyAqZGlhbG9nKTsKdm9pZCBzZXRfZGlhbG9nX2NvbG9yIChESUFMT0cgKmRpYWxvZywg
aW50IGZnLCBpbnQgYmcpOwppbnQgZmluZF9kaWFsb2dfZm9jdXMgKERJQUxPRyAqZGlhbG9nKTsK
aW50IG9mZmVyX2ZvY3VzIChESUFMT0cgKmQsIGludCBvYmosIGludCAqZm9jdXNfb2JqLCBpbnQg
Zm9yY2UpOwppbnQgZGlhbG9nX21lc3NhZ2UgKERJQUxPRyAqZGlhbG9nLCBpbnQgbXNnLCBpbnQg
YywgaW50ICpvYmopOwppbnQgYnJvYWRjYXN0X2RpYWxvZ19tZXNzYWdlIChpbnQgbXNnLCBpbnQg
Yyk7CmludCBkb19kaWFsb2cgKERJQUxPRyAqZGlhbG9nLCBpbnQgZm9jdXNfb2JqKTsKaW50IHBv
cHVwX2RpYWxvZyAoRElBTE9HICpkaWFsb2csIGludCBmb2N1c19vYmopOwpESUFMT0dfUExBWUVS
ICogaW5pdF9kaWFsb2cgKERJQUxPRyAqZGlhbG9nLCBpbnQgZm9jdXNfb2JqKTsKaW50IHVwZGF0
ZV9kaWFsb2cgKERJQUxPR19QTEFZRVIgKnBsYXllcik7CmludCBzaHV0ZG93bl9kaWFsb2cgKERJ
QUxPR19QTEFZRVIgKnBsYXllcik7CmludCBkb19tZW51IChNRU5VICptZW51LCBpbnQgeCwgaW50
IHkpOwppbnQgYWxlcnQgKGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMiwgY29uc3QgY2hh
ciAqczMsIGNvbnN0IGNoYXIgKmIxLCBjb25zdCBjaGFyICpiMiwgaW50IGMxLCBpbnQgYzIpOwpp
bnQgYWxlcnQzIChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIsIGNvbnN0IGNoYXIgKnMz
LCBjb25zdCBjaGFyICpiMSwgY29uc3QgY2hhciAqYjIsIGNvbnN0IGNoYXIgKmIzLCBpbnQgYzEs
IGludCBjMiwgaW50IGMzKTsKaW50IGZpbGVfc2VsZWN0IChjb25zdCBjaGFyICptZXNzYWdlLCBj
aGFyICpwYXRoLCBjb25zdCBjaGFyICpleHQpOwppbnQgZmlsZV9zZWxlY3RfZXggKGNvbnN0IGNo
YXIgKm1lc3NhZ2UsIGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmV4dCwgaW50IHNpemUsIGludCB3
LCBpbnQgaCk7CmludCBnZnhfbW9kZV9zZWxlY3QgKGludCAqY2FyZCwgaW50ICp3LCBpbnQgKmgp
OwppbnQgZ2Z4X21vZGVfc2VsZWN0X2V4IChpbnQgKmNhcmQsIGludCAqdywgaW50ICpoLCBpbnQg
KmNvbG9yX2RlcHRoKTsKCgoKCgoKCiMgMSAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsaW5saW5lLmgi
IDEKIyAyNCAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsaW5saW5lLmgiCiMgMSAiLi4vaW5jbHVkZS9h
bGxlZ3JvL2FsMzg2Z2NjLmgiIDEKIyAyOCAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsMzg2Z2NjLmgi
CmV4dGVybiBpbmxpbmUgaW50IF9kZWZhdWx0X2RzICh2b2lkKSB7IHNob3J0IHJlc3VsdDsgYXNt
ICggIiAgbW92dyAlJWRzLCAlMCAiIDogIj1yIiAocmVzdWx0KSApOyByZXR1cm4gcmVzdWx0OyB9
CiMgNDYgIi4uL2luY2x1ZGUvYWxsZWdyby9hbDM4NmdjYy5oIgpleHRlcm4gaW5saW5lIHVuc2ln
bmVkIGxvbmcgYm1wX3dyaXRlX2xpbmUgKEJJVE1BUCAqYm1wLCBpbnQgbGluZSkgeyB1bnNpZ25l
ZCBsb25nIHJlc3VsdDsgYXNtIHZvbGF0aWxlICggIiAgY2FsbCAqJTMgIiA6ICI9YSIgKHJlc3Vs
dCkgOiAiZCIgKGJtcCksICIwIiAobGluZSksICJyIiAoYm1wLT53cml0ZV9iYW5rKSApOyByZXR1
cm4gcmVzdWx0OyB9CiMgNjggIi4uL2luY2x1ZGUvYWxsZWdyby9hbDM4NmdjYy5oIgpleHRlcm4g
aW5saW5lIHVuc2lnbmVkIGxvbmcgYm1wX3JlYWRfbGluZSAoQklUTUFQICpibXAsIGludCBsaW5l
KSB7IHVuc2lnbmVkIGxvbmcgcmVzdWx0OyBhc20gdm9sYXRpbGUgKCAiICBjYWxsIColMyAiIDog
Ij1hIiAocmVzdWx0KSA6ICJkIiAoYm1wKSwgIjAiIChsaW5lKSwgInIiIChibXAtPnJlYWRfYmFu
aykgKTsgcmV0dXJuIHJlc3VsdDsgfQojIDkwICIuLi9pbmNsdWRlL2FsbGVncm8vYWwzODZnY2Mu
aCIKZXh0ZXJuIGlubGluZSB2b2lkIGJtcF91bndyaXRlX2xpbmUgKEJJVE1BUCAqYm1wKSB7IGFz
bSB2b2xhdGlsZSAoICIgIGNhbGwgKiUxICIgOiA6ICJkIiAoYm1wKSwgInIiIChibXAtPnZ0YWJs
ZS0+dW53cml0ZV9iYW5rKSApOyB9CiMgMTMwICIuLi9pbmNsdWRlL2FsbGVncm8vYWwzODZnY2Mu
aCIKZXh0ZXJuIGlubGluZSBmaXhlZCBmYWRkIChmaXhlZCB4LCBmaXhlZCB5KSB7IGZpeGVkIHJl
c3VsdDsgaWYoX19idWlsdGluX2NvbnN0YW50X3AoeCkgJiYgX19idWlsdGluX2NvbnN0YW50X3Ao
eSkpIHsgaWYoKHggKyAoZG91YmxlKXkpID4gKGRvdWJsZSkweDdGRkZGRkZGKSB7ICphbGxlZ3Jv
X2Vycm5vID0gMjsgcmV0dXJuIDB4N0ZGRkZGRkY7IH0gZWxzZSBpZigtKHggKyAoZG91YmxlKXkp
ID4gKGRvdWJsZSkweDdGRkZGRkZGKSB7ICphbGxlZ3JvX2Vycm5vID0gMjsgcmV0dXJuIC0weDdG
RkZGRkZGOyB9IGVsc2UgcmV0dXJuIChmaXhlZCkoeCArIChkb3VibGUpeSk7IH0gZWxzZSB7IGFz
bSAoICIgIGFkZGwgJTIsICUwIDsgIiAiICBqbm8gMGYgOyAiICIgIG1vdmwgJTQsICUwIDsgIiAi
ICBtb3ZsICUzLCAoJTApIDsgIiAiICBtb3ZsICQweDdGRkZGRkZGLCAlMCA7ICIgIiAgY21wbCAk
MCwgJTIgOyAiICIgIGpnIDBmIDsgIiAiICBuZWdsICUwIDsgIiAiIDA6ICIgOiAiPXIiIChyZXN1
bHQpIDogIjAiICh4KSwgInJtIiAoeSksICJpIiAoMiksICJtIiAoYWxsZWdyb19lcnJubykgOiAi
JWNjIiwgIm1lbW9yeSIgKTsgcmV0dXJuIHJlc3VsdDsgfSB9CiMgMTY4ICIuLi9pbmNsdWRlL2Fs
bGVncm8vYWwzODZnY2MuaCIKZXh0ZXJuIGlubGluZSBmaXhlZCBmc3ViIChmaXhlZCB4LCBmaXhl
ZCB5KSB7IGZpeGVkIHJlc3VsdDsgaWYoX19idWlsdGluX2NvbnN0YW50X3AoeCkgJiYgX19idWls
dGluX2NvbnN0YW50X3AoeSkpIHsgaWYoKHggLSAoZG91YmxlKXkpID4gKGRvdWJsZSkweDdGRkZG
RkZGKSB7ICphbGxlZ3JvX2Vycm5vID0gMjsgcmV0dXJuIDB4N0ZGRkZGRkY7IH0gZWxzZSBpZigt
KHggLSAoZG91YmxlKXkpID4gKGRvdWJsZSkweDdGRkZGRkZGKSB7ICphbGxlZ3JvX2Vycm5vID0g
MjsgcmV0dXJuIC0weDdGRkZGRkZGOyB9IGVsc2UgcmV0dXJuIChmaXhlZCkoeCAtIChkb3VibGUp
eSk7IH0gZWxzZSB7IGFzbSAoICIgIHN1YmwgJTIsICUwIDsgIiAiICBqbm8gMGYgOyAiICIgIG1v
dmwgJTQsICUwIDsgIiAiICBtb3ZsICUzLCAoJTApIDsgIiAiICBtb3ZsICQweDdGRkZGRkZGLCAl
MCA7ICIgIiAgY21wbCAkMCwgJTIgOyAiICIgIGpsIDBmIDsgIiAiICBuZWdsICUwIDsgIiAiIDA6
ICIgOiAiPXIiIChyZXN1bHQpIDogIjAiICh4KSwgInJtIiAoeSksICJpIiAoMiksICJtIiAoYWxs
ZWdyb19lcnJubykgOiAiJWNjIiwgIm1lbW9yeSIgKTsgcmV0dXJuIHJlc3VsdDsgfSB9CiMgMjA2
ICIuLi9pbmNsdWRlL2FsbGVncm8vYWwzODZnY2MuaCIKZXh0ZXJuIGlubGluZSBmaXhlZCBmbXVs
IChmaXhlZCB4LCBmaXhlZCB5KSB7IGZpeGVkIGVkeCBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOyBmaXhlZCByZXN1bHQ7IGlmKF9fYnVpbHRpbl9jb25zdGFudF9wKHgpICYmIF9fYnVpbHRp
bl9jb25zdGFudF9wKHkpKSB7IGlmKCh4IC8gNjU1MzYuMCAqIHkpID4gKGRvdWJsZSkweDdGRkZG
RkZGKSB7ICphbGxlZ3JvX2Vycm5vID0gMjsgcmV0dXJuIDB4N0ZGRkZGRkY7IH0gZWxzZSBpZigt
KHggLyA2NTUzNi4wICogeSkgPiAoZG91YmxlKTB4N0ZGRkZGRkYpIHsgKmFsbGVncm9fZXJybm8g
PSAyOyByZXR1cm4gLTB4N0ZGRkZGRkY7IH0gZWxzZSByZXR1cm4gKGZpeGVkKSh4IC8gNjU1MzYu
MCAqIHkpOyB9IGVsc2UgeyBhc20gKCAiICBtb3ZsICUyLCAlJWVheCA7ICIgIiAgaW11bGwgJTMg
OyAiICIgIHNocmRsICQxNiwgJSVlZHgsICUlZWF4IDsgIiAiICBzYXJsICQxNSwgJSVlZHggOyAi
ICIgIGp6IDBmIDsgIiAiICBjbXBsICQtMSwgJSVlZHggOyAiICIgIGplIDBmIDsgIiAiICBtb3Zs
ICU1LCAlJWVheCA7ICIgIiAgbW92bCAlNCwgKCUlZWF4KSA7ICIgIiAgbW92bCAkMHg3RkZGRkZG
RiwgJSVlYXggOyAiICIgIGNtcGwgJDAsICUyIDsgIiAiICBqZ2UgMWYgOyAiICIgIG5lZ2wgJSVl
YXggOyAiICIgMTogIiAiICBjbXBsICQwLCAlMyA7ICIgIiAgamdlIDBmIDsgIiAiICBuZWdsICUl
ZWF4IDsgIiAiICAuYmFsaWduIDQsIDB4OTAgOyAiICIgMDogIiA6ICI9JmEiIChyZXN1bHQpLCAi
PSZkIiAoZWR4KSA6ICJtciIgKHgpLCAibXIiICh5KSwgImkiICgyKSwgIm0iIChhbGxlZ3JvX2Vy
cm5vKSA6ICIlY2MiLCAibWVtb3J5IiApOyByZXR1cm4gcmVzdWx0OyB9IH0KIyAyNTggIi4uL2lu
Y2x1ZGUvYWxsZWdyby9hbDM4NmdjYy5oIgpleHRlcm4gaW5saW5lIGZpeGVkIGZkaXYgKGZpeGVk
IHgsIGZpeGVkIHkpIHsgZml4ZWQgZWR4IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7IGZp
eGVkIHJlZyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOyBmaXhlZCByZXN1bHQ7IGlmKF9f
YnVpbHRpbl9jb25zdGFudF9wKHgpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wKHkpKSB7IGlmKCh4
ICogNjU1MzYuMCAvIHkpID4gKGRvdWJsZSkweDdGRkZGRkZGKSB7ICphbGxlZ3JvX2Vycm5vID0g
MjsgcmV0dXJuIDB4N0ZGRkZGRkY7IH0gZWxzZSBpZigtKHggKiA2NTUzNi4wIC8geSkgPiAoZG91
YmxlKTB4N0ZGRkZGRkYpIHsgKmFsbGVncm9fZXJybm8gPSAyOyByZXR1cm4gLTB4N0ZGRkZGRkY7
IH0gZWxzZSByZXR1cm4gKGZpeGVkKSh4ICogNjU1MzYuMCAvIHkpOyB9IGVsc2UgeyBhc20gKCAi
ICB0ZXN0bCAlJWVheCwgJSVlYXggOyAiICIgIGpzIDNmIDsgIiAiICB0ZXN0bCAlMiwgJTIgOyAi
ICIgIGpucyA0ZiA7ICIgIiAgbmVnbCAlMiA7ICIgIiAwOiAiICIgIG1vdmwgJSVlYXgsICUlZWR4
IDsgIiAiICBzaHJsICQxNiwgJSVlZHggOyAiICIgIHNobGwgJDE2LCAlJWVheCA7ICIgIiAgY21w
bCAlMiwgJSVlZHggOyAiICIgIGphZSAxZiA7ICIgIiAgZGl2bCAlMiA7ICIgIiAgdGVzdGwgJSVl
YXgsICUlZWF4IDsgIiAiICBqbnMgMmYgOyAiICIgMTogIiAiICBtb3ZsICU2LCAlJWVheCA7ICIg
IiAgbW92bCAlNSwgKCUlZWF4KSA7ICIgIiAgbW92bCAkMHg3RkZGRkZGRiwgJSVlYXggOyAiICIg
MjogIiAiICBuZWdsICUlZWF4IDsgIiAiICBqbXAgNmYgOyAiICIgIC5iYWxpZ24gNCwgMHg5MCA7
ICIgIiAzOiAiICIgIG5lZ2wgJSVlYXggOyAiICIgIHRlc3RsICUyLCAlMiA7ICIgIiAgam5zIDBi
IDsgIiAiICBuZWdsICUyIDsgIiAiIDQ6ICIgIiAgbW92bCAlJWVheCwgJSVlZHggOyAiICIgIHNo
cmwgJDE2LCAlJWVkeCA7ICIgIiAgc2hsbCAkMTYsICUlZWF4IDsgIiAiICBjbXBsICUyLCAlJWVk
eCA7ICIgIiAgamFlIDVmIDsgIiAiICBkaXZsICUyIDsgIiAiICB0ZXN0bCAlJWVheCwgJSVlYXgg
OyAiICIgIGpucyA2ZiA7ICIgIiA1OiAiICIgIG1vdmwgJTYsICUlZWF4IDsgIiAiICBtb3ZsICU1
LCAoJSVlYXgpIDsgIiAiICBtb3ZsICQweDdGRkZGRkZGLCAlJWVheCA7ICIgIiA2OiAiIDogIj1h
IiAocmVzdWx0KSwgIj0mZCIgKGVkeCksICI9ciIgKHJlZykgOiAiMCIgKHgpLCAiMiIgKHkpLCAi
aSIgKDIpLCAibSIgKGFsbGVncm9fZXJybm8pIDogIiVjYyIsICJtZW1vcnkiICk7IHJldHVybiBy
ZXN1bHQ7IH0gfQojIDM0MiAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsMzg2Z2NjLmgiCmV4dGVybiBp
bmxpbmUgaW50IGZjZWlsIChmaXhlZCB4KSB7IGludCByZXN1bHQ7IGFzbSAoICIgYWRkbCAkMHhG
RkZGLCAlMCA7IiAiIGpucyAwZiA7IiAiIGpvIDFmIDsiICIwOiIgIiBzYXJsICQxNiwgJTAgOyIg
IiBqbXAgMmYgOyIgIjE6IiAiIG1vdmwgJTMsICUwIDsiICIgbW92bCAlMiwgKCUwKSA7IiAiIG1v
dmwgJDB4N0ZGRiwgJTAgOyIgIjI6IiA6ICI9ciIgKHJlc3VsdCkgOiAiMCIgKHgpLCAiaSIgKDIp
LCAibSIgKGFsbGVncm9fZXJybm8pIDogIiVjYyIsICJtZW1vcnkiICk7IHJldHVybiByZXN1bHQ7
IH0KIyAyNSAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsaW5saW5lLmgiIDIKIyA1MiAiLi4vaW5jbHVk
ZS9hbGxlZ3JvL2FsaW5saW5lLmgiCmV4dGVybiBpbmxpbmUgdm9pZCBnZXRfZXhlY3V0YWJsZV9u
YW1lIChjaGFyICpvdXRwdXQsIGludCBzaXplKSB7IDsgaWYgKHN5c3RlbV9kcml2ZXItPmdldF9l
eGVjdXRhYmxlX25hbWUpIHsgc3lzdGVtX2RyaXZlci0+Z2V0X2V4ZWN1dGFibGVfbmFtZShvdXRw
dXQsIHNpemUpOyB9IGVsc2UgeyBvdXRwdXQgKz0gdXNldGMob3V0cHV0LCAnLicpOyBvdXRwdXQg
Kz0gdXNldGMob3V0cHV0LCAnLycpOyB1c2V0YyhvdXRwdXQsIDApOyB9IH0KIyA2NyAiLi4vaW5j
bHVkZS9hbGxlZ3JvL2FsaW5saW5lLmgiCmV4dGVybiBpbmxpbmUgdm9pZCBzZXRfd2luZG93X3Rp
dGxlIChjaGFyICpuYW1lKSB7IDsgaWYgKHN5c3RlbV9kcml2ZXItPnNldF93aW5kb3dfdGl0bGUp
IHN5c3RlbV9kcml2ZXItPnNldF93aW5kb3dfdGl0bGUobmFtZSk7IH0KIyA4MiAiLi4vaW5jbHVk
ZS9hbGxlZ3JvL2FsaW5saW5lLmgiCmV4dGVybiBpbmxpbmUgaW50IHNldF93aW5kb3dfY2xvc2Vf
YnV0dG9uIChpbnQgZW5hYmxlKSB7IDsgaWYgKHN5c3RlbV9kcml2ZXItPnNldF93aW5kb3dfY2xv
c2VfYnV0dG9uKSByZXR1cm4gc3lzdGVtX2RyaXZlci0+c2V0X3dpbmRvd19jbG9zZV9idXR0b24o
ZW5hYmxlKTsgcmV0dXJuIC0xOyB9CiMgOTMgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGlubGluZS5o
IgpleHRlcm4gaW5saW5lIHZvaWQgc2V0X3dpbmRvd19jbG9zZV9ob29rICh2b2lkICgqcHJvYykg
KHZvaWQpKSB7IDsgaWYgKHN5c3RlbV9kcml2ZXItPnNldF93aW5kb3dfY2xvc2VfaG9vaykgc3lz
dGVtX2RyaXZlci0+c2V0X3dpbmRvd19jbG9zZV9ob29rKHByb2MpOyB9CiMgMTAyICIuLi9pbmNs
dWRlL2FsbGVncm8vYWxpbmxpbmUuaCIKZXh0ZXJuIGlubGluZSBpbnQgZGVza3RvcF9jb2xvcl9k
ZXB0aCAodm9pZCkgeyA7IGlmIChzeXN0ZW1fZHJpdmVyLT5kZXNrdG9wX2NvbG9yX2RlcHRoKSBy
ZXR1cm4gc3lzdGVtX2RyaXZlci0+ZGVza3RvcF9jb2xvcl9kZXB0aCgpOyBlbHNlIHJldHVybiAw
OyB9CiMgMTEzICIuLi9pbmNsdWRlL2FsbGVncm8vYWxpbmxpbmUuaCIKZXh0ZXJuIGlubGluZSBp
bnQgZ2V0X2Rlc2t0b3BfcmVzb2x1dGlvbiAoaW50ICp3aWR0aCwgaW50ICpoZWlnaHQpIHsgOyBp
ZiAoc3lzdGVtX2RyaXZlci0+Z2V0X2Rlc2t0b3BfcmVzb2x1dGlvbikgcmV0dXJuIHN5c3RlbV9k
cml2ZXItPmdldF9kZXNrdG9wX3Jlc29sdXRpb24od2lkdGgsIGhlaWdodCk7IGVsc2UgcmV0dXJu
IC0xOyB9CiMgMTI0ICIuLi9pbmNsdWRlL2FsbGVncm8vYWxpbmxpbmUuaCIKZXh0ZXJuIGlubGlu
ZSB2b2lkIHlpZWxkX3RpbWVzbGljZSAodm9pZCkgeyA7IGlmIChzeXN0ZW1fZHJpdmVyLT55aWVs
ZF90aW1lc2xpY2UpIHN5c3RlbV9kcml2ZXItPnlpZWxkX3RpbWVzbGljZSgpOyB9CiMgMTc2ICIu
Li9pbmNsdWRlL2FsbGVncm8vYWxpbmxpbmUuaCIKZXh0ZXJuIGlubGluZSBpbnQgYml0bWFwX2Nv
bG9yX2RlcHRoIChCSVRNQVAgKmJtcCkgeyA7IHJldHVybiBibXAtPnZ0YWJsZS0+Y29sb3JfZGVw
dGg7IH0KCgoKCgoKCmV4dGVybiBpbmxpbmUgaW50IGJpdG1hcF9tYXNrX2NvbG9yIChCSVRNQVAg
KmJtcCkgeyA7IHJldHVybiBibXAtPnZ0YWJsZS0+bWFza19jb2xvcjsgfQoKCgoKCgoKZXh0ZXJu
IGlubGluZSBpbnQgaXNfc2FtZV9iaXRtYXAgKEJJVE1BUCAqYm1wMSwgQklUTUFQICpibXAyKSB7
IHVuc2lnbmVkIGxvbmcgbTE7IHVuc2lnbmVkIGxvbmcgbTI7IGlmICgoIWJtcDEpIHx8ICghYm1w
MikpIHJldHVybiAwOyBpZiAoYm1wMSA9PSBibXAyKSByZXR1cm4gLTE7IG0xID0gYm1wMS0+aWQg
JiAweDAxRkZGRkZGOyBtMiA9IGJtcDItPmlkICYgMHgwMUZGRkZGRjsgcmV0dXJuICgobTEpICYm
IChtMSA9PSBtMikpOyB9CiMgMjEwICIuLi9pbmNsdWRlL2FsbGVncm8vYWxpbmxpbmUuaCIKZXh0
ZXJuIGlubGluZSBpbnQgaXNfbGluZWFyX2JpdG1hcCAoQklUTUFQICpibXApIHsgOyByZXR1cm4g
KGJtcC0+aWQgJiAweDEwMDAwMDAwKSA9PSAwOyB9CgoKCgoKCgpleHRlcm4gaW5saW5lIGludCBp
c19wbGFuYXJfYml0bWFwIChCSVRNQVAgKmJtcCkgeyA7IHJldHVybiAoYm1wLT5pZCAmIDB4MTAw
MDAwMDApICE9IDA7IH0KCgoKCgoKCmV4dGVybiBpbmxpbmUgaW50IGlzX21lbW9yeV9iaXRtYXAg
KEJJVE1BUCAqYm1wKSB7IDsgcmV0dXJuIChibXAtPmlkICYgKDB4ODAwMDAwMDAgfCAweDQwMDAw
MDAwKSkgPT0gMDsgfQoKCgoKCgoKZXh0ZXJuIGlubGluZSBpbnQgaXNfc2NyZWVuX2JpdG1hcCAo
QklUTUFQICpibXApIHsgOyByZXR1cm4gaXNfc2FtZV9iaXRtYXAoYm1wLCBzY3JlZW4pOyB9CgoK
CgoKCgpleHRlcm4gaW5saW5lIGludCBpc192aWRlb19iaXRtYXAgKEJJVE1BUCAqYm1wKSB7IDsg
cmV0dXJuIChibXAtPmlkICYgMHg4MDAwMDAwMCkgIT0gMDsgfQoKCgoKCgoKZXh0ZXJuIGlubGlu
ZSBpbnQgaXNfc3lzdGVtX2JpdG1hcCAoQklUTUFQICpibXApIHsgOyByZXR1cm4gKGJtcC0+aWQg
JiAweDQwMDAwMDAwKSAhPSAwOyB9CgoKCgoKCgpleHRlcm4gaW5saW5lIGludCBpc19zdWJfYml0
bWFwIChCSVRNQVAgKmJtcCkgeyA7IHJldHVybiAoYm1wLT5pZCAmIDB4MjAwMDAwMDApICE9IDA7
IH0KCgoKCgoKCmV4dGVybiBpbmxpbmUgaW50IG1ha2Vjb2wxNSAoaW50IHIsIGludCBnLCBpbnQg
YikgeyByZXR1cm4gKCgociA+PiAzKSA8PCBfcmdiX3Jfc2hpZnRfMTUpIHwgKChnID4+IDMpIDw8
IF9yZ2JfZ19zaGlmdF8xNSkgfCAoKGIgPj4gMykgPDwgX3JnYl9iX3NoaWZ0XzE1KSk7IH0KCgoK
CgoKCmV4dGVybiBpbmxpbmUgaW50IG1ha2Vjb2wxNiAoaW50IHIsIGludCBnLCBpbnQgYikgeyBy
ZXR1cm4gKCgociA+PiAzKSA8PCBfcmdiX3Jfc2hpZnRfMTYpIHwgKChnID4+IDIpIDw8IF9yZ2Jf
Z19zaGlmdF8xNikgfCAoKGIgPj4gMykgPDwgX3JnYl9iX3NoaWZ0XzE2KSk7IH0KCgoKCgoKCmV4
dGVybiBpbmxpbmUgaW50IG1ha2Vjb2wyNCAoaW50IHIsIGludCBnLCBpbnQgYikgeyByZXR1cm4g
KChyIDw8IF9yZ2Jfcl9zaGlmdF8yNCkgfCAoZyA8PCBfcmdiX2dfc2hpZnRfMjQpIHwgKGIgPDwg
X3JnYl9iX3NoaWZ0XzI0KSk7IH0KCgoKCgoKCmV4dGVybiBpbmxpbmUgaW50IG1ha2Vjb2wzMiAo
aW50IHIsIGludCBnLCBpbnQgYikgeyByZXR1cm4gKChyIDw8IF9yZ2Jfcl9zaGlmdF8zMikgfCAo
ZyA8PCBfcmdiX2dfc2hpZnRfMzIpIHwgKGIgPDwgX3JnYl9iX3NoaWZ0XzMyKSk7IH0KCgoKCgoK
CmV4dGVybiBpbmxpbmUgaW50IG1ha2VhY29sMzIgKGludCByLCBpbnQgZywgaW50IGIsIGludCBh
KSB7IHJldHVybiAoKHIgPDwgX3JnYl9yX3NoaWZ0XzMyKSB8IChnIDw8IF9yZ2JfZ19zaGlmdF8z
MikgfCAoYiA8PCBfcmdiX2Jfc2hpZnRfMzIpIHwgKGEgPDwgX3JnYl9hX3NoaWZ0XzMyKSk7IH0K
IyAzMDcgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGlubGluZS5oIgpleHRlcm4gaW5saW5lIGludCBn
ZXRyOCAoaW50IGMpIHsgcmV0dXJuIF9yZ2Jfc2NhbGVfNlsoaW50KV9jdXJyZW50X3BhbGV0dGVb
Y10ucl07IH0KCgoKCgpleHRlcm4gaW5saW5lIGludCBnZXRnOCAoaW50IGMpIHsgcmV0dXJuIF9y
Z2Jfc2NhbGVfNlsoaW50KV9jdXJyZW50X3BhbGV0dGVbY10uZ107IH0KCgoKCgpleHRlcm4gaW5s
aW5lIGludCBnZXRiOCAoaW50IGMpIHsgcmV0dXJuIF9yZ2Jfc2NhbGVfNlsoaW50KV9jdXJyZW50
X3BhbGV0dGVbY10uYl07IH0KCgoKCgpleHRlcm4gaW5saW5lIGludCBnZXRyMTUgKGludCBjKSB7
IHJldHVybiBfcmdiX3NjYWxlXzVbKGMgPj4gX3JnYl9yX3NoaWZ0XzE1KSAmIDB4MUZdOyB9CgoK
CgoKZXh0ZXJuIGlubGluZSBpbnQgZ2V0ZzE1IChpbnQgYykgeyByZXR1cm4gX3JnYl9zY2FsZV81
WyhjID4+IF9yZ2JfZ19zaGlmdF8xNSkgJiAweDFGXTsgfQoKCgoKCmV4dGVybiBpbmxpbmUgaW50
IGdldGIxNSAoaW50IGMpIHsgcmV0dXJuIF9yZ2Jfc2NhbGVfNVsoYyA+PiBfcmdiX2Jfc2hpZnRf
MTUpICYgMHgxRl07IH0KCgoKCgpleHRlcm4gaW5saW5lIGludCBnZXRyMTYgKGludCBjKSB7IHJl
dHVybiBfcmdiX3NjYWxlXzVbKGMgPj4gX3JnYl9yX3NoaWZ0XzE2KSAmIDB4MUZdOyB9CgoKCgoK
ZXh0ZXJuIGlubGluZSBpbnQgZ2V0ZzE2IChpbnQgYykgeyByZXR1cm4gX3JnYl9zY2FsZV82Wyhj
ID4+IF9yZ2JfZ19zaGlmdF8xNikgJiAweDNGXTsgfQoKCgoKCmV4dGVybiBpbmxpbmUgaW50IGdl
dGIxNiAoaW50IGMpIHsgcmV0dXJuIF9yZ2Jfc2NhbGVfNVsoYyA+PiBfcmdiX2Jfc2hpZnRfMTYp
ICYgMHgxRl07IH0KCgoKCgpleHRlcm4gaW5saW5lIGludCBnZXRyMjQgKGludCBjKSB7IHJldHVy
biAoKGMgPj4gX3JnYl9yX3NoaWZ0XzI0KSAmIDB4RkYpOyB9CgoKCgoKZXh0ZXJuIGlubGluZSBp
bnQgZ2V0ZzI0IChpbnQgYykgeyByZXR1cm4gKChjID4+IF9yZ2JfZ19zaGlmdF8yNCkgJiAweEZG
KTsgfQoKCgoKCmV4dGVybiBpbmxpbmUgaW50IGdldGIyNCAoaW50IGMpIHsgcmV0dXJuICgoYyA+
PiBfcmdiX2Jfc2hpZnRfMjQpICYgMHhGRik7IH0KCgoKCgpleHRlcm4gaW5saW5lIGludCBnZXRy
MzIgKGludCBjKSB7IHJldHVybiAoKGMgPj4gX3JnYl9yX3NoaWZ0XzMyKSAmIDB4RkYpOyB9CgoK
CgoKZXh0ZXJuIGlubGluZSBpbnQgZ2V0ZzMyIChpbnQgYykgeyByZXR1cm4gKChjID4+IF9yZ2Jf
Z19zaGlmdF8zMikgJiAweEZGKTsgfQoKCgoKCmV4dGVybiBpbmxpbmUgaW50IGdldGIzMiAoaW50
IGMpIHsgcmV0dXJuICgoYyA+PiBfcmdiX2Jfc2hpZnRfMzIpICYgMHhGRik7IH0KCgoKCgpleHRl
cm4gaW5saW5lIGludCBnZXRhMzIgKGludCBjKSB7IHJldHVybiAoKGMgPj4gX3JnYl9hX3NoaWZ0
XzMyKSAmIDB4RkYpOyB9CiMgNDEyICIuLi9pbmNsdWRlL2FsbGVncm8vYWxpbmxpbmUuaCIKZXh0
ZXJuIGlubGluZSB2b2lkIGFjcXVpcmVfYml0bWFwIChCSVRNQVAgKmJtcCkgeyA7IGlmIChibXAt
PnZ0YWJsZS0+YWNxdWlyZSkgYm1wLT52dGFibGUtPmFjcXVpcmUoYm1wKTsgfQojIDQyMSAiLi4v
aW5jbHVkZS9hbGxlZ3JvL2FsaW5saW5lLmgiCmV4dGVybiBpbmxpbmUgdm9pZCByZWxlYXNlX2Jp
dG1hcCAoQklUTUFQICpibXApIHsgOyBpZiAoYm1wLT52dGFibGUtPnJlbGVhc2UpIGJtcC0+dnRh
YmxlLT5yZWxlYXNlKGJtcCk7IH0KIyA0MzAgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGlubGluZS5o
IgpleHRlcm4gaW5saW5lIHZvaWQgYWNxdWlyZV9zY3JlZW4gKHZvaWQpIHsgYWNxdWlyZV9iaXRt
YXAoc2NyZWVuKTsgfQoKCgoKCmV4dGVybiBpbmxpbmUgdm9pZCByZWxlYXNlX3NjcmVlbiAodm9p
ZCkgeyByZWxlYXNlX2JpdG1hcChzY3JlZW4pOyB9CgoKCgoKCmV4dGVybiBpbmxpbmUgaW50IGdl
dHBpeGVsIChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5KSB7IDsgcmV0dXJuIGJtcC0+dnRhYmxl
LT5nZXRwaXhlbChibXAsIHgsIHkpOyB9CgoKCgoKCgpleHRlcm4gaW5saW5lIHZvaWQgcHV0cGl4
ZWwgKEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHksIGludCBjb2xvcikgeyA7IGJtcC0+dnRhYmxl
LT5wdXRwaXhlbChibXAsIHgsIHksIGNvbG9yKTsgfQoKCgoKCgoKZXh0ZXJuIGlubGluZSB2b2lk
IHZsaW5lIChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5MSwgaW50IHkyLCBpbnQgY29sb3IpIHsg
OyBibXAtPnZ0YWJsZS0+dmxpbmUoYm1wLCB4LCB5MSwgeTIsIGNvbG9yKTsgfQoKCgoKCgoKZXh0
ZXJuIGlubGluZSB2b2lkIGhsaW5lIChCSVRNQVAgKmJtcCwgaW50IHgxLCBpbnQgeSwgaW50IHgy
LCBpbnQgY29sb3IpIHsgOyBibXAtPnZ0YWJsZS0+aGxpbmUoYm1wLCB4MSwgeSwgeDIsIGNvbG9y
KTsgfQoKCgoKCgoKZXh0ZXJuIGlubGluZSB2b2lkIGxpbmUgKEJJVE1BUCAqYm1wLCBpbnQgeDEs
IGludCB5MSwgaW50IHgyLCBpbnQgeTIsIGludCBjb2xvcikgeyA7IGJtcC0+dnRhYmxlLT5saW5l
KGJtcCwgeDEsIHkxLCB4MiwgeTIsIGNvbG9yKTsgfQoKCgoKCgoKZXh0ZXJuIGlubGluZSB2b2lk
IHJlY3RmaWxsIChCSVRNQVAgKmJtcCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBp
bnQgY29sb3IpIHsgOyBibXAtPnZ0YWJsZS0+cmVjdGZpbGwoYm1wLCB4MSwgeTEsIHgyLCB5Miwg
Y29sb3IpOyB9CgoKCgoKCgpleHRlcm4gaW5saW5lIHZvaWQgZHJhd19zcHJpdGUgKEJJVE1BUCAq
Ym1wLCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5KSB7IDsgOyBpZiAoc3ByaXRlLT52dGFi
bGUtPmNvbG9yX2RlcHRoID09IDgpIHsgYm1wLT52dGFibGUtPmRyYXdfMjU2X3Nwcml0ZShibXAs
IHNwcml0ZSwgeCwgeSk7IH0gZWxzZSB7IDsgYm1wLT52dGFibGUtPmRyYXdfc3ByaXRlKGJtcCwg
c3ByaXRlLCB4LCB5KTsgfSB9CiMgNTA2ICIuLi9pbmNsdWRlL2FsbGVncm8vYWxpbmxpbmUuaCIK
ZXh0ZXJuIGlubGluZSB2b2lkIGRyYXdfc3ByaXRlX3ZfZmxpcCAoQklUTUFQICpibXAsIEJJVE1B
UCAqc3ByaXRlLCBpbnQgeCwgaW50IHkpIHsgOyA7IDsgYm1wLT52dGFibGUtPmRyYXdfc3ByaXRl
X3ZfZmxpcChibXAsIHNwcml0ZSwgeCwgeSk7IH0KIyA1MTYgIi4uL2luY2x1ZGUvYWxsZWdyby9h
bGlubGluZS5oIgpleHRlcm4gaW5saW5lIHZvaWQgZHJhd19zcHJpdGVfaF9mbGlwIChCSVRNQVAg
KmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSkgeyA7IDsgOyBibXAtPnZ0YWJsZS0+
ZHJhd19zcHJpdGVfaF9mbGlwKGJtcCwgc3ByaXRlLCB4LCB5KTsgfQojIDUyNiAiLi4vaW5jbHVk
ZS9hbGxlZ3JvL2FsaW5saW5lLmgiCmV4dGVybiBpbmxpbmUgdm9pZCBkcmF3X3Nwcml0ZV92aF9m
bGlwIChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSkgeyA7IDsgOyBi
bXAtPnZ0YWJsZS0+ZHJhd19zcHJpdGVfdmhfZmxpcChibXAsIHNwcml0ZSwgeCwgeSk7IH0KIyA1
MzYgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGlubGluZS5oIgpleHRlcm4gaW5saW5lIHZvaWQgZHJh
d190cmFuc19zcHJpdGUgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5
KSB7IDsgOyBpZiAoc3ByaXRlLT52dGFibGUtPmNvbG9yX2RlcHRoID09IDMyKSB7IDsgYm1wLT52
dGFibGUtPmRyYXdfdHJhbnNfcmdiYV9zcHJpdGUoYm1wLCBzcHJpdGUsIHgsIHkpOyB9IGVsc2Ug
eyA7IGJtcC0+dnRhYmxlLT5kcmF3X3RyYW5zX3Nwcml0ZShibXAsIHNwcml0ZSwgeCwgeSk7IH0g
fQojIDU1NCAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsaW5saW5lLmgiCmV4dGVybiBpbmxpbmUgdm9p
ZCBkcmF3X2xpdF9zcHJpdGUgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGlu
dCB5LCBpbnQgY29sb3IpIHsgOyA7IDsgYm1wLT52dGFibGUtPmRyYXdfbGl0X3Nwcml0ZShibXAs
IHNwcml0ZSwgeCwgeSwgY29sb3IpOyB9CiMgNTY0ICIuLi9pbmNsdWRlL2FsbGVncm8vYWxpbmxp
bmUuaCIKZXh0ZXJuIGlubGluZSB2b2lkIGRyYXdfY2hhcmFjdGVyIChCSVRNQVAgKmJtcCwgQklU
TUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSwgaW50IGNvbG9yKSB7IDsgOyA7IGJtcC0+dnRhYmxl
LT5kcmF3X2NoYXJhY3RlcihibXAsIHNwcml0ZSwgeCwgeSwgY29sb3IpOyB9CiMgNTc0ICIuLi9p
bmNsdWRlL2FsbGVncm8vYWxpbmxpbmUuaCIKZXh0ZXJuIGlubGluZSB2b2lkIGRyYXdfcmxlX3Nw
cml0ZSAoQklUTUFQICpibXAsIGNvbnN0IHN0cnVjdCBSTEVfU1BSSVRFICpzcHJpdGUsIGludCB4
LCBpbnQgeSkgeyA7IDsgOyBibXAtPnZ0YWJsZS0+ZHJhd19ybGVfc3ByaXRlKGJtcCwgc3ByaXRl
LCB4LCB5KTsgfQojIDU4NCAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsaW5saW5lLmgiCmV4dGVybiBp
bmxpbmUgdm9pZCBkcmF3X3RyYW5zX3JsZV9zcHJpdGUgKEJJVE1BUCAqYm1wLCBjb25zdCBzdHJ1
Y3QgUkxFX1NQUklURSAqc3ByaXRlLCBpbnQgeCwgaW50IHkpIHsgOyA7IGlmIChzcHJpdGUtPmNv
bG9yX2RlcHRoID09IDMyKSB7IDsgYm1wLT52dGFibGUtPmRyYXdfdHJhbnNfcmdiYV9ybGVfc3By
aXRlKGJtcCwgc3ByaXRlLCB4LCB5KTsgfSBlbHNlIHsgOyBibXAtPnZ0YWJsZS0+ZHJhd190cmFu
c19ybGVfc3ByaXRlKGJtcCwgc3ByaXRlLCB4LCB5KTsgfSB9CiMgNjAwICIuLi9pbmNsdWRlL2Fs
bGVncm8vYWxpbmxpbmUuaCIKZXh0ZXJuIGlubGluZSB2b2lkIGRyYXdfbGl0X3JsZV9zcHJpdGUg
KEJJVE1BUCAqYm1wLCBjb25zdCBzdHJ1Y3QgUkxFX1NQUklURSAqc3ByaXRlLCBpbnQgeCwgaW50
IHksIGludCBjb2xvcikgeyA7IDsgOyBibXAtPnZ0YWJsZS0+ZHJhd19saXRfcmxlX3Nwcml0ZShi
bXAsIHNwcml0ZSwgeCwgeSwgY29sb3IpOyB9CiMgNjEwICIuLi9pbmNsdWRlL2FsbGVncm8vYWxp
bmxpbmUuaCIKZXh0ZXJuIGlubGluZSB2b2lkIGNsZWFyX3RvX2NvbG9yIChCSVRNQVAgKmJpdG1h
cCwgaW50IGNvbG9yKSB7IDsgYml0bWFwLT52dGFibGUtPmNsZWFyX3RvX2NvbG9yKGJpdG1hcCwg
Y29sb3IpOyB9CiMgNjI4ICIuLi9pbmNsdWRlL2FsbGVncm8vYWxpbmxpbmUuaCIKZXh0ZXJuIGlu
bGluZSB2b2lkIF9wdXRwaXhlbCAoQklUTUFQICpibXAsIGludCB4LCBpbnQgeSwgaW50IGNvbG9y
KSB7IHVuc2lnbmVkIGxvbmcgYWRkcjsgX2ZhcnNldHNlbCgoYm1wKS0+c2VnKTsgYWRkciA9IGJt
cF93cml0ZV9saW5lKGJtcCwgeSk7IF9mYXJuc3Bva2ViKGFkZHIreCwgY29sb3IpOyBibXBfdW53
cml0ZV9saW5lKGJtcCk7IH0KIyA2MzkgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGlubGluZS5oIgpl
eHRlcm4gaW5saW5lIGludCBfZ2V0cGl4ZWwgKEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHkpIHsg
dW5zaWduZWQgbG9uZyBhZGRyOyBpbnQgYzsgX2ZhcnNldHNlbCgoYm1wKS0+c2VnKTsgYWRkciA9
IGJtcF9yZWFkX2xpbmUoYm1wLCB5KTsgYyA9IF9mYXJuc3BlZWtiKGFkZHIreCk7IGJtcF91bndy
aXRlX2xpbmUoYm1wKTsgcmV0dXJuIGM7IH0KIyA2NTMgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGlu
bGluZS5oIgpleHRlcm4gaW5saW5lIHZvaWQgX3B1dHBpeGVsMTUgKEJJVE1BUCAqYm1wLCBpbnQg
eCwgaW50IHksIGludCBjb2xvcikgeyB1bnNpZ25lZCBsb25nIGFkZHI7IF9mYXJzZXRzZWwoKGJt
cCktPnNlZyk7IGFkZHIgPSBibXBfd3JpdGVfbGluZShibXAsIHkpOyBfZmFybnNwb2tldyhhZGRy
K3gqc2l6ZW9mKHNob3J0KSwgY29sb3IpOyBibXBfdW53cml0ZV9saW5lKGJtcCk7IH0KIyA2NjQg
Ii4uL2luY2x1ZGUvYWxsZWdyby9hbGlubGluZS5oIgpleHRlcm4gaW5saW5lIGludCBfZ2V0cGl4
ZWwxNSAoQklUTUFQICpibXAsIGludCB4LCBpbnQgeSkgeyB1bnNpZ25lZCBsb25nIGFkZHI7IGlu
dCBjOyBfZmFyc2V0c2VsKChibXApLT5zZWcpOyBhZGRyID0gYm1wX3JlYWRfbGluZShibXAsIHkp
OyBjID0gX2Zhcm5zcGVla3coYWRkcit4KnNpemVvZihzaG9ydCkpOyBibXBfdW53cml0ZV9saW5l
KGJtcCk7IHJldHVybiBjOyB9CiMgNjc4ICIuLi9pbmNsdWRlL2FsbGVncm8vYWxpbmxpbmUuaCIK
ZXh0ZXJuIGlubGluZSB2b2lkIF9wdXRwaXhlbDE2IChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5
LCBpbnQgY29sb3IpIHsgdW5zaWduZWQgbG9uZyBhZGRyOyBfZmFyc2V0c2VsKChibXApLT5zZWcp
OyBhZGRyID0gYm1wX3dyaXRlX2xpbmUoYm1wLCB5KTsgX2Zhcm5zcG9rZXcoYWRkcit4KnNpemVv
ZihzaG9ydCksIGNvbG9yKTsgYm1wX3Vud3JpdGVfbGluZShibXApOyB9CiMgNjg5ICIuLi9pbmNs
dWRlL2FsbGVncm8vYWxpbmxpbmUuaCIKZXh0ZXJuIGlubGluZSBpbnQgX2dldHBpeGVsMTYgKEJJ
VE1BUCAqYm1wLCBpbnQgeCwgaW50IHkpIHsgdW5zaWduZWQgbG9uZyBhZGRyOyBpbnQgYzsgX2Zh
cnNldHNlbCgoYm1wKS0+c2VnKTsgYWRkciA9IGJtcF9yZWFkX2xpbmUoYm1wLCB5KTsgYyA9IF9m
YXJuc3BlZWt3KGFkZHIreCpzaXplb2Yoc2hvcnQpKTsgYm1wX3Vud3JpdGVfbGluZShibXApOyBy
ZXR1cm4gYzsgfQojIDcwMyAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsaW5saW5lLmgiCmV4dGVybiBp
bmxpbmUgdm9pZCBfcHV0cGl4ZWwyNCAoQklUTUFQICpibXAsIGludCB4LCBpbnQgeSwgaW50IGNv
bG9yKSB7IHVuc2lnbmVkIGxvbmcgYWRkcjsgX2ZhcnNldHNlbCgoYm1wKS0+c2VnKTsgYWRkciA9
IGJtcF93cml0ZV9saW5lKGJtcCwgeSk7IGJtcF93cml0ZTI0KGFkZHIreCozLCBjb2xvcik7IGJt
cF91bndyaXRlX2xpbmUoYm1wKTsgfQojIDcxNCAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsaW5saW5l
LmgiCmV4dGVybiBpbmxpbmUgaW50IF9nZXRwaXhlbDI0IChCSVRNQVAgKmJtcCwgaW50IHgsIGlu
dCB5KSB7IHVuc2lnbmVkIGxvbmcgYWRkcjsgaW50IGM7IF9mYXJzZXRzZWwoKGJtcCktPnNlZyk7
IGFkZHIgPSBibXBfcmVhZF9saW5lKGJtcCwgeSk7IGMgPSAoX2Zhcm5zcGVla2woYWRkcit4KjMp
ICYgMHhGRkZGRkYpOyBibXBfdW53cml0ZV9saW5lKGJtcCk7IHJldHVybiBjOyB9CiMgNzI4ICIu
Li9pbmNsdWRlL2FsbGVncm8vYWxpbmxpbmUuaCIKZXh0ZXJuIGlubGluZSB2b2lkIF9wdXRwaXhl
bDMyIChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpIHsgdW5zaWduZWQgbG9u
ZyBhZGRyOyBfZmFyc2V0c2VsKChibXApLT5zZWcpOyBhZGRyID0gYm1wX3dyaXRlX2xpbmUoYm1w
LCB5KTsgX2Zhcm5zcG9rZWwoYWRkcit4KnNpemVvZihsb25nKSwgY29sb3IpOyBibXBfdW53cml0
ZV9saW5lKGJtcCk7IH0KIyA3MzkgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGlubGluZS5oIgpleHRl
cm4gaW5saW5lIGludCBfZ2V0cGl4ZWwzMiAoQklUTUFQICpibXAsIGludCB4LCBpbnQgeSkgeyB1
bnNpZ25lZCBsb25nIGFkZHI7IGludCBjOyBfZmFyc2V0c2VsKChibXApLT5zZWcpOyBhZGRyID0g
Ym1wX3JlYWRfbGluZShibXAsIHkpOyBjID0gX2Zhcm5zcGVla2woYWRkcit4KnNpemVvZihsb25n
KSk7IGJtcF91bndyaXRlX2xpbmUoYm1wKTsgcmV0dXJuIGM7IH0KIyA3NTkgIi4uL2luY2x1ZGUv
YWxsZWdyby9hbGlubGluZS5oIgpleHRlcm4gaW5saW5lIGludCBwYWNrX2dldGMgKFBBQ0tGSUxF
ICpmKSB7IGYtPmJ1Zl9zaXplLS07IGlmIChmLT5idWZfc2l6ZSA+IDApIHJldHVybiAqKGYtPmJ1
Zl9wb3MrKyk7IGVsc2UgcmV0dXJuIF9zb3J0X291dF9nZXRjKGYpOyB9CiMgNzY5ICIuLi9pbmNs
dWRlL2FsbGVncm8vYWxpbmxpbmUuaCIKZXh0ZXJuIGlubGluZSBpbnQgcGFja19wdXRjIChpbnQg
YywgUEFDS0ZJTEUgKmYpIHsgZi0+YnVmX3NpemUrKzsgaWYgKGYtPmJ1Zl9zaXplID49IDQwOTYp
IHJldHVybiBfc29ydF9vdXRfcHV0YyhjLCBmKTsgZWxzZSByZXR1cm4gKCooZi0+YnVmX3Bvcysr
KSA9IGMpOyB9CiMgNzc5ICIuLi9pbmNsdWRlL2FsbGVncm8vYWxpbmxpbmUuaCIKZXh0ZXJuIGlu
bGluZSBpbnQgcGFja19mZW9mIChQQUNLRklMRSAqZikgeyByZXR1cm4gKGYtPmZsYWdzICYgOCk7
IH0KCgoKCgpleHRlcm4gaW5saW5lIGludCBwYWNrX2ZlcnJvciAoUEFDS0ZJTEUgKmYpIHsgcmV0
dXJuIChmLT5mbGFncyAmIDE2KTsgfQojIDc5OCAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsaW5saW5l
LmgiCmV4dGVybiBpbmxpbmUgZml4ZWQgZnRvZml4IChkb3VibGUgeCkgeyBpZiAoeCA+IDMyNzY3
LjApIHsgKmFsbGVncm9fZXJybm8gPSAyOyByZXR1cm4gMHg3RkZGRkZGRjsgfSBpZiAoeCA8IC0z
Mjc2Ny4wKSB7ICphbGxlZ3JvX2Vycm5vID0gMjsgcmV0dXJuIC0weDdGRkZGRkZGOyB9IHJldHVy
biAobG9uZykoeCAqIDY1NTM2LjAgKyAoeCA8IDAgPyAtMC41IDogMC41KSk7IH0KIyA4MTQgIi4u
L2luY2x1ZGUvYWxsZWdyby9hbGlubGluZS5oIgpleHRlcm4gaW5saW5lIGRvdWJsZSBmaXh0b2Yg
KGZpeGVkIHgpIHsgcmV0dXJuIChkb3VibGUpeCAvIDY1NTM2LjA7IH0KIyA5MDEgIi4uL2luY2x1
ZGUvYWxsZWdyby9hbGlubGluZS5oIgpleHRlcm4gaW5saW5lIGZpeGVkIGl0b2ZpeCAoaW50IHgp
IHsgcmV0dXJuIHggPDwgMTY7IH0KCgoKCgpleHRlcm4gaW5saW5lIGludCBmaXh0b2kgKGZpeGVk
IHgpIHsgcmV0dXJuICh4ID4+IDE2KSArICgoeCAmIDB4ODAwMCkgPj4gMTUpOyB9CgoKCgoKZXh0
ZXJuIGlubGluZSBmaXhlZCBmY29zIChmaXhlZCB4KSB7IHJldHVybiBfY29zX3RibFsoKHggKyAw
eDQwMDApID4+IDE1KSAmIDB4MUZGXTsgfQoKCgoKCmV4dGVybiBpbmxpbmUgZml4ZWQgZnNpbiAo
Zml4ZWQgeCkgeyByZXR1cm4gX2Nvc190YmxbKCh4IC0gMHg0MDAwMDAgKyAweDQwMDApID4+IDE1
KSAmIDB4MUZGXTsgfQoKCgoKCmV4dGVybiBpbmxpbmUgZml4ZWQgZnRhbiAoZml4ZWQgeCkgeyBy
ZXR1cm4gX3Rhbl90YmxbKCh4ICsgMHg0MDAwKSA+PiAxNSkgJiAweEZGXTsgfQoKCgoKCmV4dGVy
biBpbmxpbmUgZml4ZWQgZmFjb3MgKGZpeGVkIHgpIHsgaWYgKCh4IDwgLTY1NTM2KSB8fCAoeCA+
IDY1NTM2KSkgeyAqYWxsZWdyb19lcnJubyA9IDE7IHJldHVybiAwOyB9IHJldHVybiBfYWNvc190
YmxbKHgrNjU1MzYrMTI3KT4+OF07IH0KIyA5NDIgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGlubGlu
ZS5oIgpleHRlcm4gaW5saW5lIGZpeGVkIGZhc2luIChmaXhlZCB4KSB7IGlmICgoeCA8IC02NTUz
NikgfHwgKHggPiA2NTUzNikpIHsgKmFsbGVncm9fZXJybm8gPSAxOyByZXR1cm4gMDsgfSByZXR1
cm4gMHgwMDQwMDAwMCAtIF9hY29zX3RibFsoeCs2NTUzNisxMjcpPj44XTsgfQojIDExNDEgIi4u
L2luY2x1ZGUvYWxsZWdyby9hbGlubGluZS5oIgpleHRlcm4gaW5saW5lIGZpeGVkIGRvdF9wcm9k
dWN0IChmaXhlZCB4MSwgZml4ZWQgeTEsIGZpeGVkIHoxLCBmaXhlZCB4MiwgZml4ZWQgeTIsIGZp
eGVkIHoyKSB7IHJldHVybiBmbXVsKHgxLCB4MikgKyBmbXVsKHkxLCB5MikgKyBmbXVsKHoxLCB6
Mik7IH0KCgoKCgpleHRlcm4gaW5saW5lIGZsb2F0IGRvdF9wcm9kdWN0X2YgKGZsb2F0IHgxLCBm
bG9hdCB5MSwgZmxvYXQgejEsIGZsb2F0IHgyLCBmbG9hdCB5MiwgZmxvYXQgejIpIHsgcmV0dXJu
ICh4MSAqIHgyKSArICh5MSAqIHkyKSArICh6MSAqIHoyKTsgfQojIDExNTggIi4uL2luY2x1ZGUv
YWxsZWdyby9hbGlubGluZS5oIgpleHRlcm4gaW5saW5lIHZvaWQgYXBwbHlfbWF0cml4IChNQVRS
SVggKm0sIGZpeGVkIHgsIGZpeGVkIHksIGZpeGVkIHosIGZpeGVkICp4b3V0LCBmaXhlZCAqeW91
dCwgZml4ZWQgKnpvdXQpIHsgKnhvdXQgPSAoZm11bCh4LCBtLT52WzBdWzBdKSArIGZtdWwoeSwg
bS0+dlswXVsxXSkgKyBmbXVsKHosIG0tPnZbMF1bMl0pICsgbS0+dFswXSk7ICp5b3V0ID0gKGZt
dWwoeCwgbS0+dlsxXVswXSkgKyBmbXVsKHksIG0tPnZbMV1bMV0pICsgZm11bCh6LCBtLT52WzFd
WzJdKSArIG0tPnRbMV0pOyAqem91dCA9IChmbXVsKHgsIG0tPnZbMl1bMF0pICsgZm11bCh5LCBt
LT52WzJdWzFdKSArIGZtdWwoeiwgbS0+dlsyXVsyXSkgKyBtLT50WzJdKTsgfQojIDExNjggIi4u
L2luY2x1ZGUvYWxsZWdyby9hbGlubGluZS5oIgpleHRlcm4gaW5saW5lIHZvaWQgcGVyc3BfcHJv
amVjdCAoZml4ZWQgeCwgZml4ZWQgeSwgZml4ZWQgeiwgZml4ZWQgKnhvdXQsIGZpeGVkICp5b3V0
KSB7ICp4b3V0ID0gZm11bChmZGl2KHgsIHopLCBfcGVyc3BfeHNjYWxlKSArIF9wZXJzcF94b2Zm
c2V0OyAqeW91dCA9IGZtdWwoZmRpdih5LCB6KSwgX3BlcnNwX3lzY2FsZSkgKyBfcGVyc3BfeW9m
ZnNldDsgfQoKCgoKCgpleHRlcm4gaW5saW5lIHZvaWQgcGVyc3BfcHJvamVjdF9mIChmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCAqeG91dCwgZmxvYXQgKnlvdXQpIHsgZmxvYXQgejEg
PSAxLjBmIC8gejsgKnhvdXQgPSAoKHggKiB6MSkgKiBfcGVyc3BfeHNjYWxlX2YpICsgX3BlcnNw
X3hvZmZzZXRfZjsgKnlvdXQgPSAoKHkgKiB6MSkgKiBfcGVyc3BfeXNjYWxlX2YpICsgX3BlcnNw
X3lvZmZzZXRfZjsgfQojIDEzMTEgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGlubGluZS5oIgpleHRl
cm4gaW5saW5lIGludCBvYmplY3RfbWVzc2FnZSAoRElBTE9HICpkLCBpbnQgbXNnLCBpbnQgYykg
eyBpbnQgcmV0OyBpZiAobXNnID09IDMpIHsgaWYgKGQtPmZsYWdzICYgMTYpIHJldHVybiAwOyBh
Y3F1aXJlX3NjcmVlbigpOyB9IHJldCA9IGQtPnByb2MobXNnLCBkLCBjKTsgaWYgKG1zZyA9PSAz
KSByZWxlYXNlX3NjcmVlbigpOyBpZiAocmV0ICYgNCkgeyBkLT5mbGFncyB8PSA2NDsgcmV0ICY9
IH40OyB9IHJldHVybiByZXQ7IH0KIyAxMzQyICIuLi9pbmNsdWRlL2FsbGVncm8vYWxpbmxpbmUu
aCIKICAgICAgc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGlubGluZSB2b2lkIGNsZWFy
KEJJVE1BUCAqYm1wKQogICAgICB7CiAgICAgICAgIGNsZWFyX2JpdG1hcChibXApOwogICAgICB9
CiMgMjIyOCAiLi4vaW5jbHVkZS9hbGxlZ3JvLmgiIDIKCgojIDEgIi4uL2luY2x1ZGUvYWxsZWdy
by9hbGRvcy5oIiAxCiMgMzAgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGRvcy5oIgpleHRlcm4gU1lT
VEVNX0RSSVZFUiBzeXN0ZW1fZG9zOwoKZXh0ZXJuIGludCBpX2xvdmVfYmlsbDsKCgoKCmV4dGVy
biBLRVlCT0FSRF9EUklWRVIga2V5ZHJ2X3BjZG9zOwoKCgoKCmV4dGVybiBUSU1FUl9EUklWRVIg
dGltZWRydl9maXhlZF9yYXRlOwpleHRlcm4gVElNRVJfRFJJVkVSIHRpbWVkcnZfdmFyaWFibGVf
cmF0ZTsKIyA1MyAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FsZG9zLmgiCmV4dGVybiBNT1VTRV9EUklW
RVIgbW91c2VkcnZfbWlja2V5czsKZXh0ZXJuIE1PVVNFX0RSSVZFUiBtb3VzZWRydl9pbnQzMzsK
ZXh0ZXJuIE1PVVNFX0RSSVZFUiBtb3VzZWRydl9wb2xsaW5nOwpleHRlcm4gTU9VU0VfRFJJVkVS
IG1vdXNlZHJ2X3dpbm50OwpleHRlcm4gTU9VU0VfRFJJVkVSIG1vdXNlZHJ2X3dpbjJrOwojIDk4
ICIuLi9pbmNsdWRlL2FsbGVncm8vYWxkb3MuaCIKZXh0ZXJuIEpPWVNUSUNLX0RSSVZFUiBqb3lz
dGlja19zdGFuZGFyZDsKZXh0ZXJuIEpPWVNUSUNLX0RSSVZFUiBqb3lzdGlja18ycGFkczsKZXh0
ZXJuIEpPWVNUSUNLX0RSSVZFUiBqb3lzdGlja180YnV0dG9uOwpleHRlcm4gSk9ZU1RJQ0tfRFJJ
VkVSIGpveXN0aWNrXzZidXR0b247CmV4dGVybiBKT1lTVElDS19EUklWRVIgam95c3RpY2tfOGJ1
dHRvbjsKZXh0ZXJuIEpPWVNUSUNLX0RSSVZFUiBqb3lzdGlja19mc3BybzsKZXh0ZXJuIEpPWVNU
SUNLX0RSSVZFUiBqb3lzdGlja193aW5nZXg7CmV4dGVybiBKT1lTVElDS19EUklWRVIgam95c3Rp
Y2tfc3c7CmV4dGVybiBKT1lTVElDS19EUklWRVIgam95c3RpY2tfc3dfYWc7CmV4dGVybiBKT1lT
VElDS19EUklWRVIgam95c3RpY2tfZ3BybzsKZXh0ZXJuIEpPWVNUSUNLX0RSSVZFUiBqb3lzdGlj
a19ncmlwOwpleHRlcm4gSk9ZU1RJQ0tfRFJJVkVSIGpveXN0aWNrX2dyaXA0OwpleHRlcm4gSk9Z
U1RJQ0tfRFJJVkVSIGpveXN0aWNrX3NwMTsKZXh0ZXJuIEpPWVNUSUNLX0RSSVZFUiBqb3lzdGlj
a19zcDI7CmV4dGVybiBKT1lTVElDS19EUklWRVIgam95c3RpY2tfc3AzOwpleHRlcm4gSk9ZU1RJ
Q0tfRFJJVkVSIGpveXN0aWNrX3BzeDE7CmV4dGVybiBKT1lTVElDS19EUklWRVIgam95c3RpY2tf
cHN4MjsKZXh0ZXJuIEpPWVNUSUNLX0RSSVZFUiBqb3lzdGlja19wc3gzOwpleHRlcm4gSk9ZU1RJ
Q0tfRFJJVkVSIGpveXN0aWNrX242NDE7CmV4dGVybiBKT1lTVElDS19EUklWRVIgam95c3RpY2tf
bjY0MjsKZXh0ZXJuIEpPWVNUSUNLX0RSSVZFUiBqb3lzdGlja19uNjQzOwpleHRlcm4gSk9ZU1RJ
Q0tfRFJJVkVSIGpveXN0aWNrX2RiOTE7CmV4dGVybiBKT1lTVElDS19EUklWRVIgam95c3RpY2tf
ZGI5MjsKZXh0ZXJuIEpPWVNUSUNLX0RSSVZFUiBqb3lzdGlja19kYjkzOwpleHRlcm4gSk9ZU1RJ
Q0tfRFJJVkVSIGpveXN0aWNrX3RneDE7CmV4dGVybiBKT1lTVElDS19EUklWRVIgam95c3RpY2tf
dGd4MjsKZXh0ZXJuIEpPWVNUSUNLX0RSSVZFUiBqb3lzdGlja190Z3gzOwpleHRlcm4gSk9ZU1RJ
Q0tfRFJJVkVSIGpveXN0aWNrX3NnMTsKZXh0ZXJuIEpPWVNUSUNLX0RSSVZFUiBqb3lzdGlja19z
ZzI7CmV4dGVybiBKT1lTVElDS19EUklWRVIgam95c3RpY2tfc2cyZjsKZXh0ZXJuIEpPWVNUSUNL
X0RSSVZFUiBqb3lzdGlja193dzsKIyAyMDAgIi4uL2luY2x1ZGUvYWxsZWdyby9hbGRvcy5oIgpp
bnQgY2FsaWJyYXRlX2pveXN0aWNrX3RsICh2b2lkKTsKaW50IGNhbGlicmF0ZV9qb3lzdGlja19i
ciAodm9pZCk7CmludCBjYWxpYnJhdGVfam95c3RpY2tfdGhyb3R0bGVfbWluICh2b2lkKTsKaW50
IGNhbGlicmF0ZV9qb3lzdGlja190aHJvdHRsZV9tYXggKHZvaWQpOwppbnQgY2FsaWJyYXRlX2pv
eXN0aWNrX2hhdCAoaW50IGRpcmVjdGlvbik7CiMgMjI3ICIuLi9pbmNsdWRlL2FsbGVncm8vYWxk
b3MuaCIKZXh0ZXJuIEdGWF9EUklWRVIgZ2Z4X3ZnYTsKZXh0ZXJuIEdGWF9EUklWRVIgZ2Z4X21v
ZGV4OwpleHRlcm4gR0ZYX0RSSVZFUiBnZnhfdmVzYV8xOwpleHRlcm4gR0ZYX0RSSVZFUiBnZnhf
dmVzYV8yYjsKZXh0ZXJuIEdGWF9EUklWRVIgZ2Z4X3Zlc2FfMmw7CmV4dGVybiBHRlhfRFJJVkVS
IGdmeF92ZXNhXzM7CmV4dGVybiBHRlhfRFJJVkVSIGdmeF92YmVhZjsKZXh0ZXJuIEdGWF9EUklW
RVIgZ2Z4X3h0ZW5kZWQ7CiMgMjYyICIuLi9pbmNsdWRlL2FsbGVncm8vYWxkb3MuaCIKZXh0ZXJu
IEdGWF9WVEFCTEUgX19tb2RleF92dGFibGU7CgppbnQgcmVxdWVzdF9tb2RleF9zY3JvbGwgKGlu
dCB4LCBpbnQgeSk7CmludCBwb2xsX21vZGV4X3Njcm9sbCAodm9pZCk7CnZvaWQgc3BsaXRfbW9k
ZXhfc2NyZWVuIChpbnQgc2NyZWVubGluZSk7CgoKZXh0ZXJuIGlubGluZSB2b2lkIF9zZXRfY29s
b3IgKGludCBpbmRleCwgY29uc3QgUkdCICpwKSB7IG91dHBvcnRiKDB4M0M4LCBpbmRleCk7IG91
dHBvcnRiKDB4M0M5LCBwLT5yKTsgb3V0cG9ydGIoMHgzQzksIHAtPmcpOyBvdXRwb3J0YigweDND
OSwgcC0+Yik7IF9jdXJyZW50X3BhbGV0dGVbaW5kZXhdID0gKnA7IH0KIyAzMDIgIi4uL2luY2x1
ZGUvYWxsZWdyby9hbGRvcy5oIgpleHRlcm4gRElHSV9EUklWRVIgZGlnaV9zYjEwOwpleHRlcm4g
RElHSV9EUklWRVIgZGlnaV9zYjE1OwpleHRlcm4gRElHSV9EUklWRVIgZGlnaV9zYjIwOwpleHRl
cm4gRElHSV9EUklWRVIgZGlnaV9zYnBybzsKZXh0ZXJuIERJR0lfRFJJVkVSIGRpZ2lfc2IxNjsK
ZXh0ZXJuIERJR0lfRFJJVkVSIGRpZ2lfYXVkaW9kcml2ZTsKZXh0ZXJuIERJR0lfRFJJVkVSIGRp
Z2lfc291bmRzY2FwZTsKZXh0ZXJuIERJR0lfRFJJVkVSIGRpZ2lfd3NzOwoKZXh0ZXJuIE1JRElf
RFJJVkVSIG1pZGlfb3BsMjsKZXh0ZXJuIE1JRElfRFJJVkVSIG1pZGlfMnhvcGwyOwpleHRlcm4g
TUlESV9EUklWRVIgbWlkaV9vcGwzOwpleHRlcm4gTUlESV9EUklWRVIgbWlkaV9zYl9vdXQ7CmV4
dGVybiBNSURJX0RSSVZFUiBtaWRpX21wdTQwMTsKZXh0ZXJuIE1JRElfRFJJVkVSIG1pZGlfYXdl
MzI7CiMgMzUwICIuLi9pbmNsdWRlL2FsbGVncm8vYWxkb3MuaCIKaW50IGxvYWRfaWJrIChjb25z
dCBjaGFyICpmaWxlbmFtZSwgaW50IGRydW1zKTsKIyAyMjMxICIuLi9pbmNsdWRlL2FsbGVncm8u
aCIgMgojIDUgImJhZC5jIiAyCiMgMSAiLi4vaW5jbHVkZS9hbGxlZ3JvL2FpbnRlcm4uaCIgMQoj
IDMyICIuLi9pbmNsdWRlL2FsbGVncm8vYWludGVybi5oIgpleHRlcm4gaW50IF9hbGxlZ3JvX2Nv
dW50OwoKCgpleHRlcm4gdm9pZCAqIF9zY3JhdGNoX21lbTsKZXh0ZXJuIGludCBfc2NyYXRjaF9t
ZW1fc2l6ZTsKCgpleHRlcm4gaW5saW5lIHZvaWQgX2dyb3dfc2NyYXRjaF9tZW0gKGludCBzaXpl
KSB7IGlmIChzaXplID4gX3NjcmF0Y2hfbWVtX3NpemUpIHsgc2l6ZSA9IChzaXplKzEwMjMpICYg
MHhGRkZGRkMwMDsgX3NjcmF0Y2hfbWVtID0gcmVhbGxvYyhfc2NyYXRjaF9tZW0sIHNpemUpOyBf
c2NyYXRjaF9tZW1fc2l6ZSA9IHNpemU7IH0gfQojIDUxICIuLi9pbmNsdWRlL2FsbGVncm8vYWlu
dGVybi5oIgp2b2lkICogX2FsX21hbGxvYyAoaW50IHNpemUpOwp2b2lkIF9hbF9mcmVlICh2b2lk
ICptZW0pOwp2b2lkICogX2FsX3JlYWxsb2MgKHZvaWQgKm1lbSwgaW50IHNpemUpOwoKCgp2b2lk
IF9hZGRfZXhpdF9mdW5jICh2b2lkICgqZnVuYykgKHZvaWQpKTsKdm9pZCBfcmVtb3ZlX2V4aXRf
ZnVuYyAodm9pZCAoKmZ1bmMpICh2b2lkKSk7CgoKCnR5cGVkZWYgc3RydWN0IFVUWVBFX0lORk8K
ewogICBpbnQgaWQ7CiAgIGludCAoKnVfZ2V0YykgKGNvbnN0IGNoYXIgKnMpOwogICBpbnQgKCp1
X2dldHgpIChjaGFyICoqcyk7CiAgIGludCAoKnVfc2V0YykgKGNoYXIgKnMsIGludCBjKTsKICAg
aW50ICgqdV93aWR0aCkgKGNvbnN0IGNoYXIgKnMpOwogICBpbnQgKCp1X2N3aWR0aCkgKGludCBj
KTsKICAgaW50ICgqdV9pc29rKSAoaW50IGMpOwogICBpbnQgdV93aWR0aF9tYXg7Cn0gVVRZUEVf
SU5GTzsKClVUWVBFX0lORk8gKiBfZmluZF91dHlwZSAoaW50IHR5cGUpOwoKCgppbnQgX2FsX2Zp
bGVfaXNvayAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwpsb25nIF9hbF9maWxlX3NpemUgKGNvbnN0
IGNoYXIgKmZpbGVuYW1lKTsKdGltZV90IF9hbF9maWxlX3RpbWUgKGNvbnN0IGNoYXIgKmZpbGVu
YW1lKTsKaW50IF9hbF9nZXRkcml2ZSAodm9pZCk7CnZvaWQgX2FsX2dldGRjd2QgKGludCBkcml2
ZSwgY2hhciAqYnVmLCBpbnQgc2l6ZSk7CgpleHRlcm4gaW50IF9wYWNrZmlsZV9maWxlc2l6ZTsK
ZXh0ZXJuIGludCBfcGFja2ZpbGVfZGF0YXNpemU7CgpleHRlcm4gaW50IF9wYWNrZmlsZV90eXBl
OwoKCgp2b2lkIF9oYW5kbGVfbW91c2VfaW5wdXQgKHZvaWQpOwoKZXh0ZXJuIGludCBfbW91c2Vf
eDsKZXh0ZXJuIGludCBfbW91c2VfeTsKZXh0ZXJuIGludCBfbW91c2VfejsKZXh0ZXJuIGludCBf
bW91c2VfYjsKZXh0ZXJuIGludCBfbW91c2Vfb247CgpleHRlcm4gaW50IF9tb3VzZV9pbnN0YWxs
ZWQ7CgpleHRlcm4gaW50IF9tb3VzZV90eXBlOwpleHRlcm4gQklUTUFQICogX21vdXNlX3NjcmVl
bjsKZXh0ZXJuIEJJVE1BUCAqIF9tb3VzZV9wb2ludGVyOwoKCgpsb25nIF9oYW5kbGVfdGltZXJf
dGljayAoaW50IGludGVydmFsKTsKCgoKCnR5cGVkZWYgc3RydWN0IFRJTUVSX1FVRVVFCnsKICAg
dm9pZCAoKnByb2MpICh2b2lkKTsKICAgdm9pZCAoKnBhcmFtX3Byb2MpICh2b2lkICpwYXJhbSk7
CiAgIHZvaWQgKnBhcmFtOwogICBsb25nIHNwZWVkOwogICBsb25nIGNvdW50ZXI7Cn0gVElNRVJf
UVVFVUU7CgpleHRlcm4gVElNRVJfUVVFVUUgX3RpbWVyX3F1ZXVlW107CgpleHRlcm4gaW50IF90
aW1lcl9pbnN0YWxsZWQ7CgpleHRlcm4gaW50IF90aW1lcl91c2VfcmV0cmFjZTsKZXh0ZXJuIHZv
bGF0aWxlIGludCBfcmV0cmFjZV9ocHBfdmFsdWU7CgoKCnZvaWQgX2hhbmRsZV9rZXlfcHJlc3Mg
KGludCBrZXljb2RlLCBpbnQgc2NhbmNvZGUpOwp2b2lkIF9oYW5kbGVfa2V5X3JlbGVhc2UgKGlu
dCBzY2FuY29kZSk7CgpleHRlcm4gaW50IF9rZXlib2FyZF9pbnN0YWxsZWQ7CgpleHRlcm4gdm9s
YXRpbGUgY2hhciBfa2V5W107CmV4dGVybiB2b2xhdGlsZSBpbnQgX2tleV9zaGlmdHM7Cgp2b2lk
IF9wY2tleXNfaW5pdCAodm9pZCk7CnZvaWQgX2hhbmRsZV9wY2tleSAoaW50IGNvZGUpOwppbnQg
X3Bja2V5X3NjYW5jb2RlX3RvX2FzY2lpIChpbnQgc2NhbmNvZGUpOwoKZXh0ZXJuIHVuc2lnbmVk
IHNob3J0ICogX2tleV9hc2NpaV90YWJsZTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0ICogX2tleV9j
YXBzbG9ja190YWJsZTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0ICogX2tleV9zaGlmdF90YWJsZTsK
ZXh0ZXJuIHVuc2lnbmVkIHNob3J0ICogX2tleV9jb250cm9sX3RhYmxlOwpleHRlcm4gdW5zaWdu
ZWQgc2hvcnQgKiBfa2V5X2FsdGdyX2xvd2VyX3RhYmxlOwpleHRlcm4gdW5zaWduZWQgc2hvcnQg
KiBfa2V5X2FsdGdyX3VwcGVyX3RhYmxlOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgKiBfa2V5X2Fj
Y2VudDFfbG93ZXJfdGFibGU7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCAqIF9rZXlfYWNjZW50MV91
cHBlcl90YWJsZTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0ICogX2tleV9hY2NlbnQyX2xvd2VyX3Rh
YmxlOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgKiBfa2V5X2FjY2VudDJfdXBwZXJfdGFibGU7CmV4
dGVybiB1bnNpZ25lZCBzaG9ydCAqIF9rZXlfYWNjZW50M19sb3dlcl90YWJsZTsKZXh0ZXJuIHVu
c2lnbmVkIHNob3J0ICogX2tleV9hY2NlbnQzX3VwcGVyX3RhYmxlOwpleHRlcm4gdW5zaWduZWQg
c2hvcnQgKiBfa2V5X2FjY2VudDRfbG93ZXJfdGFibGU7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCAq
IF9rZXlfYWNjZW50NF91cHBlcl90YWJsZTsKCmV4dGVybiBpbnQgX2tleV9hY2NlbnQxOwpleHRl
cm4gaW50IF9rZXlfYWNjZW50MjsKZXh0ZXJuIGludCBfa2V5X2FjY2VudDM7CmV4dGVybiBpbnQg
X2tleV9hY2NlbnQ0OwpleHRlcm4gaW50IF9rZXlfYWNjZW50MV9mbGFnOwpleHRlcm4gaW50IF9r
ZXlfYWNjZW50Ml9mbGFnOwpleHRlcm4gaW50IF9rZXlfYWNjZW50M19mbGFnOwpleHRlcm4gaW50
IF9rZXlfYWNjZW50NF9mbGFnOwoKZXh0ZXJuIGludCBfa2V5X3N0YW5kYXJkX2tiOwoKCgpleHRl
cm4gaW50IF9qb3lfdHlwZTsKCmV4dGVybiBpbnQgX2pveXN0aWNrX2luc3RhbGxlZDsKCgoKaW50
IF9ndWlfc2hhZG93X2JveF9wcm9jIChpbnQgbXNnLCBESUFMT0cgKmQsIGludCBjKTsKaW50IF9n
dWlfY3RleHRfcHJvYyAoaW50IG1zZywgRElBTE9HICpkLCBpbnQgYyk7CmludCBfZ3VpX2J1dHRv
bl9wcm9jIChpbnQgbXNnLCBESUFMT0cgKmQsIGludCBjKTsKaW50IF9ndWlfZWRpdF9wcm9jIChp
bnQgbXNnLCBESUFMT0cgKmQsIGludCBjKTsKaW50IF9ndWlfbGlzdF9wcm9jIChpbnQgbXNnLCBE
SUFMT0cgKmQsIGludCBjKTsKaW50IF9ndWlfdGV4dF9saXN0X3Byb2MgKGludCBtc2csIERJQUxP
RyAqZCwgaW50IGMpOwoKdm9pZCBfaGFuZGxlX3Njcm9sbGFibGVfc2Nyb2xsX2NsaWNrIChESUFM
T0cgKmQsIGludCBsaXN0c2l6ZSwgaW50ICpvZmZzZXQsIGludCBoZWlnaHQpOwp2b2lkIF9oYW5k
bGVfc2Nyb2xsYWJsZV9zY3JvbGwgKERJQUxPRyAqZCwgaW50IGxpc3RzaXplLCBpbnQgKmluZGV4
LCBpbnQgKm9mZnNldCk7CnZvaWQgX2hhbmRsZV9saXN0Ym94X2NsaWNrIChESUFMT0cgKmQpOzsK
dm9pZCBfZHJhd19zY3JvbGxhYmxlX2ZyYW1lIChESUFMT0cgKmQsIGludCBsaXN0c2l6ZSwgaW50
IG9mZnNldCwgaW50IGhlaWdodCwgaW50IGZnX2NvbG9yLCBpbnQgYmcpOwp2b2lkIF9kcmF3X2xp
c3Rib3ggKERJQUxPRyAqZCk7CnZvaWQgX2RyYXdfdGV4dGJveCAoY2hhciAqdGhldGV4dCwgaW50
ICpsaXN0c2l6ZSwgaW50IGRyYXcsIGludCBvZmZzZXQsIGludCB3d29yZCwgaW50IHRhYnNpemUs
IGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoLCBpbnQgZGlzYWJsZWQsIGludCBmb3JlLCBpbnQg
ZGVzZWxlY3QsIGludCBkaXNhYmxlKTsKCgoKdHlwZWRlZiBzdHJ1Y3QgRk9OVF9WVEFCTEUKewog
ICBpbnQgKCpmb250X2hlaWdodCkgKGNvbnN0IEZPTlQgKmYpOwogICBpbnQgKCpjaGFyX2xlbmd0
aCkgKGNvbnN0IEZPTlQgKmYsIGludCBjaCk7CiAgIGludCAoKnRleHRfbGVuZ3RoKSAoY29uc3Qg
Rk9OVCAqZiwgY29uc3QgY2hhciAqdGV4dCk7CiAgIGludCAoKnJlbmRlcl9jaGFyKSAoY29uc3Qg
Rk9OVCAqZiwgaW50IGNoLCBpbnQgZmcsIGludCBiZywgQklUTUFQICpibXAsIGludCB4LCBpbnQg
eSk7CiAgIHZvaWQgKCpyZW5kZXIpIChjb25zdCBGT05UICpmLCBjb25zdCBjaGFyICp0ZXh0LCBp
bnQgZmcsIGludCBiZywgQklUTUFQICpibXAsIGludCB4LCBpbnQgeSk7CiAgIHZvaWQgKCpkZXN0
cm95KSAoRk9OVCAqZik7Cn0gRk9OVF9WVEFCTEU7CgpleHRlcm4gRk9OVCBfZGVmYXVsdF9mb250
OwpleHRlcm4gRk9OVF9WVEFCTEUgX2ZvbnRfdnRhYmxlX21vbm87CmV4dGVybiBGT05UX1ZUQUJM
RSAqIGZvbnRfdnRhYmxlX21vbm87CmV4dGVybiBGT05UX1ZUQUJMRSBfZm9udF92dGFibGVfY29s
b3I7CmV4dGVybiBGT05UX1ZUQUJMRSAqIGZvbnRfdnRhYmxlX2NvbG9yOwpleHRlcm4gaW50IGFs
bGVncm9fNDA0X2NoYXI7CgpGT05UX0dMWVBIICogX21vbm9fZmluZF9nbHlwaCAoY29uc3QgRk9O
VCAqZiwgaW50IGNoKTsKQklUTUFQICogX2NvbG9yX2ZpbmRfZ2x5cGggKGNvbnN0IEZPTlQgKmYs
IGludCBjaCk7Cgp0eXBlZGVmIHN0cnVjdCBGT05UX01PTk9fREFUQQp7CiAgIGludCBiZWdpbiwg
ZW5kOwogICBGT05UX0dMWVBIICoqZ2x5cGhzOwogICBzdHJ1Y3QgRk9OVF9NT05PX0RBVEEgKm5l
eHQ7Cn0gRk9OVF9NT05PX0RBVEE7Cgp0eXBlZGVmIHN0cnVjdCBGT05UX0NPTE9SX0RBVEEKewog
ICBpbnQgYmVnaW4sIGVuZDsKICAgQklUTUFQICoqYml0bWFwczsKICAgc3RydWN0IEZPTlRfQ09M
T1JfREFUQSAqbmV4dDsKfSBGT05UX0NPTE9SX0RBVEE7CgoKCmV4dGVybiBpbnQgX2xhc3RfYmFu
a18xOwpleHRlcm4gaW50IF9sYXN0X2JhbmtfMjsKCmV4dGVybiBpbnQgKiBfZ2Z4X2Jhbms7CgoK
dW5zaWduZWQgbG9uZyBfc3R1Yl9iYW5rX3N3aXRjaCAoQklUTUFQICpibXAsIGludCBsaW5lKTsK
dm9pZCBfc3R1Yl91bmJhbmtfc3dpdGNoIChCSVRNQVAgKmJtcCk7CnZvaWQgX3N0dWJfYmFua19z
d2l0Y2hfZW5kICh2b2lkKTsKCgoKdW5zaWduZWQgbG9uZyBfeF9iYW5rX3N3aXRjaCAoQklUTUFQ
ICpibXAsIGludCBsaW5lKTsKdm9pZCBfeF91bmJhbmtfc3dpdGNoIChCSVRNQVAgKmJtcCk7CnZv
aWQgX3hfYmFua19zd2l0Y2hfZW5kICh2b2lkKTsKCgoKCgp2b2lkIF9hY2NlbF9iYW5rX3N0dWIg
KHZvaWQpOwp2b2lkIF9hY2NlbF9iYW5rX3N0dWJfZW5kICh2b2lkKTsKdm9pZCBfYWNjZWxfYmFu
a19zd2l0Y2ggKHZvaWQpOwp2b2lkIF9hY2NlbF9iYW5rX3N3aXRjaF9lbmQgKHZvaWQpOwoKZXh0
ZXJuIHZvaWQgKiBfYWNjZWxfZHJpdmVyOwoKZXh0ZXJuIGludCBfYWNjZWxfYWN0aXZlOwoKZXh0
ZXJuIHZvaWQgKiBfYWNjZWxfc2V0X2Jhbms7CmV4dGVybiB2b2lkICogX2FjY2VsX2lkbGU7Cgp2
b2lkIF9maWxsX3ZiZWFmX2xpYmNfZXhwb3J0cyAodm9pZCAqcHRyKTsKdm9pZCBfZmlsbF92YmVh
Zl9wbW9kZV9leHBvcnRzICh2b2lkICpwdHIpOwoKCgoKCkJJVE1BUCAqIF9tYWtlX2JpdG1hcCAo
aW50IHcsIGludCBoLCB1bnNpZ25lZCBsb25nIGFkZHIsIEdGWF9EUklWRVIgKmRyaXZlciwgaW50
IGNvbG9yX2RlcHRoLCBpbnQgYnBsKTsKdm9pZCBfc29ydF9vdXRfdmlydHVhbF93aWR0aCAoaW50
ICp3aWR0aCwgR0ZYX0RSSVZFUiAqZHJpdmVyKTsKCkdGWF9WVEFCTEUgKiBfZ2V0X3Z0YWJsZSAo
aW50IGNvbG9yX2RlcHRoKTsKCmV4dGVybiBHRlhfVlRBQkxFIF9zY3JlZW5fdnRhYmxlOwoKZXh0
ZXJuIGludCBfZ2Z4X21vZGVfc2V0X2NvdW50OwoKZXh0ZXJuIGludCBfcmVmcmVzaF9yYXRlX3Jl
cXVlc3Q7CmV4dGVybiBpbnQgX2N1cnJlbnRfcmVmcmVzaF9yYXRlOwoKZXh0ZXJuIGludCBfc3Vi
X2JpdG1hcF9pZF9jb3VudDsKCmV4dGVybiBpbnQgX3NjcmVlbl9zcGxpdF9wb3NpdGlvbjsKCmV4
dGVybiBpbnQgX3NhZmVfZ2Z4X21vZGVfY2hhbmdlOwojIDMwMCAiLi4vaW5jbHVkZS9hbGxlZ3Jv
L2FpbnRlcm4uaCIKaW50IF9jb2xvcl9sb2FkX2RlcHRoIChpbnQgZGVwdGgsIGludCBoYXNhbHBo
YSk7CgpleHRlcm4gaW50IF9jb2xvcl9jb252OwoKQklUTUFQICogX2ZpeHVwX2xvYWRlZF9iaXRt
YXAgKEJJVE1BUCAqYm1wLCBQQUxFVFRFIHBhbCwgaW50IGJwcCk7CgoKCnZvaWQgX3JlZ2lzdGVy
X3N3aXRjaF9iaXRtYXAgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnBhcmVudCk7CnZvaWQgX3VucmVn
aXN0ZXJfc3dpdGNoX2JpdG1hcCAoQklUTUFQICpibXApOwp2b2lkIF9zYXZlX3N3aXRjaF9zdGF0
ZSAoaW50IHN3aXRjaF9tb2RlKTsKdm9pZCBfcmVzdG9yZV9zd2l0Y2hfc3RhdGUgKCk7CgpleHRl
cm4gaW50IF9kaXNwc3dfc3RhdHVzOwoKCgpleHRlcm4gaW50IF9kcmF3aW5nX21vZGU7CmV4dGVy
biBCSVRNQVAgKiBfZHJhd2luZ19wYXR0ZXJuOwpleHRlcm4gaW50IF9kcmF3aW5nX3hfYW5jaG9y
OwpleHRlcm4gaW50IF9kcmF3aW5nX3lfYW5jaG9yOwpleHRlcm4gdW5zaWduZWQgaW50IF9kcmF3
aW5nX3hfbWFzazsKZXh0ZXJuIHVuc2lnbmVkIGludCBfZHJhd2luZ195X21hc2s7CgpleHRlcm4g
aW50IF90ZXh0bW9kZTsKCmV4dGVybiBpbnQgKiAoKl9wYWxldHRlX2V4cGFuc2lvbl90YWJsZSkg
KGludCBicHApOwoKZXh0ZXJuIGludCBfY29sb3JfZGVwdGg7CgpleHRlcm4gaW50IF9jdXJyZW50
X3BhbGV0dGVfY2hhbmdlZDsKZXh0ZXJuIFBBTEVUVEUgX3ByZXZfY3VycmVudF9wYWxldHRlOwpl
eHRlcm4gaW50IF9nb3RfcHJldl9jdXJyZW50X3BhbGV0dGU7CgpleHRlcm4gaW50IF9wYWxldHRl
X2NvbG9yOFtdOwpleHRlcm4gaW50IF9wYWxldHRlX2NvbG9yMTVbXTsKZXh0ZXJuIGludCBfcGFs
ZXR0ZV9jb2xvcjE2W107CmV4dGVybiBpbnQgX3BhbGV0dGVfY29sb3IyNFtdOwpleHRlcm4gaW50
IF9wYWxldHRlX2NvbG9yMzJbXTsKCgpleHRlcm4gQkxFTkRFUl9GVU5DIF9ibGVuZGVyX2Z1bmMx
NTsKZXh0ZXJuIEJMRU5ERVJfRlVOQyBfYmxlbmRlcl9mdW5jMTY7CmV4dGVybiBCTEVOREVSX0ZV
TkMgX2JsZW5kZXJfZnVuYzI0OwpleHRlcm4gQkxFTkRFUl9GVU5DIF9ibGVuZGVyX2Z1bmMzMjsK
CmV4dGVybiBCTEVOREVSX0ZVTkMgX2JsZW5kZXJfZnVuYzE1eDsKZXh0ZXJuIEJMRU5ERVJfRlVO
QyBfYmxlbmRlcl9mdW5jMTZ4OwpleHRlcm4gQkxFTkRFUl9GVU5DIF9ibGVuZGVyX2Z1bmMyNHg7
CgpleHRlcm4gaW50IF9ibGVuZGVyX2NvbF8xNTsKZXh0ZXJuIGludCBfYmxlbmRlcl9jb2xfMTY7
CmV4dGVybiBpbnQgX2JsZW5kZXJfY29sXzI0OwpleHRlcm4gaW50IF9ibGVuZGVyX2NvbF8zMjsK
CmV4dGVybiBpbnQgX2JsZW5kZXJfYWxwaGE7Cgp1bnNpZ25lZCBsb25nIF9ibGVuZGVyX2JsYWNr
ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKCgoK
dW5zaWduZWQgbG9uZyBfYmxlbmRlcl90cmFuczE1ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVk
IGxvbmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKdW5zaWduZWQgbG9uZyBfYmxlbmRlcl9hZGQxNSAo
dW5zaWduZWQgbG9uZyB4LCB1bnNpZ25lZCBsb25nIHksIHVuc2lnbmVkIGxvbmcgbik7CnVuc2ln
bmVkIGxvbmcgX2JsZW5kZXJfYnVybjE1ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcg
eSwgdW5zaWduZWQgbG9uZyBuKTsKdW5zaWduZWQgbG9uZyBfYmxlbmRlcl9jb2xvcjE1ICh1bnNp
Z25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKdW5zaWduZWQg
bG9uZyBfYmxlbmRlcl9kaWZmZXJlbmNlMTUgKHVuc2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9u
ZyB5LCB1bnNpZ25lZCBsb25nIG4pOwp1bnNpZ25lZCBsb25nIF9ibGVuZGVyX2Rpc3NvbHZlMTUg
KHVuc2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9uZyB5LCB1bnNpZ25lZCBsb25nIG4pOwp1bnNp
Z25lZCBsb25nIF9ibGVuZGVyX2RvZGdlMTUgKHVuc2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9u
ZyB5LCB1bnNpZ25lZCBsb25nIG4pOwp1bnNpZ25lZCBsb25nIF9ibGVuZGVyX2h1ZTE1ICh1bnNp
Z25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKdW5zaWduZWQg
bG9uZyBfYmxlbmRlcl9pbnZlcnQxNSAodW5zaWduZWQgbG9uZyB4LCB1bnNpZ25lZCBsb25nIHks
IHVuc2lnbmVkIGxvbmcgbik7CnVuc2lnbmVkIGxvbmcgX2JsZW5kZXJfbHVtaW5hbmNlMTUgKHVu
c2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9uZyB5LCB1bnNpZ25lZCBsb25nIG4pOwp1bnNpZ25l
ZCBsb25nIF9ibGVuZGVyX211bHRpcGx5MTUgKHVuc2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9u
ZyB5LCB1bnNpZ25lZCBsb25nIG4pOwp1bnNpZ25lZCBsb25nIF9ibGVuZGVyX3NhdHVyYXRpb24x
NSAodW5zaWduZWQgbG9uZyB4LCB1bnNpZ25lZCBsb25nIHksIHVuc2lnbmVkIGxvbmcgbik7CnVu
c2lnbmVkIGxvbmcgX2JsZW5kZXJfc2NyZWVuMTUgKHVuc2lnbmVkIGxvbmcgeCwgdW5zaWduZWQg
bG9uZyB5LCB1bnNpZ25lZCBsb25nIG4pOwoKdW5zaWduZWQgbG9uZyBfYmxlbmRlcl90cmFuczE2
ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKdW5z
aWduZWQgbG9uZyBfYmxlbmRlcl9hZGQxNiAodW5zaWduZWQgbG9uZyB4LCB1bnNpZ25lZCBsb25n
IHksIHVuc2lnbmVkIGxvbmcgbik7CnVuc2lnbmVkIGxvbmcgX2JsZW5kZXJfYnVybjE2ICh1bnNp
Z25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKdW5zaWduZWQg
bG9uZyBfYmxlbmRlcl9jb2xvcjE2ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcgeSwg
dW5zaWduZWQgbG9uZyBuKTsKdW5zaWduZWQgbG9uZyBfYmxlbmRlcl9kaWZmZXJlbmNlMTYgKHVu
c2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9uZyB5LCB1bnNpZ25lZCBsb25nIG4pOwp1bnNpZ25l
ZCBsb25nIF9ibGVuZGVyX2Rpc3NvbHZlMTYgKHVuc2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9u
ZyB5LCB1bnNpZ25lZCBsb25nIG4pOwp1bnNpZ25lZCBsb25nIF9ibGVuZGVyX2RvZGdlMTYgKHVu
c2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9uZyB5LCB1bnNpZ25lZCBsb25nIG4pOwp1bnNpZ25l
ZCBsb25nIF9ibGVuZGVyX2h1ZTE2ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcgeSwg
dW5zaWduZWQgbG9uZyBuKTsKdW5zaWduZWQgbG9uZyBfYmxlbmRlcl9pbnZlcnQxNiAodW5zaWdu
ZWQgbG9uZyB4LCB1bnNpZ25lZCBsb25nIHksIHVuc2lnbmVkIGxvbmcgbik7CnVuc2lnbmVkIGxv
bmcgX2JsZW5kZXJfbHVtaW5hbmNlMTYgKHVuc2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9uZyB5
LCB1bnNpZ25lZCBsb25nIG4pOwp1bnNpZ25lZCBsb25nIF9ibGVuZGVyX211bHRpcGx5MTYgKHVu
c2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9uZyB5LCB1bnNpZ25lZCBsb25nIG4pOwp1bnNpZ25l
ZCBsb25nIF9ibGVuZGVyX3NhdHVyYXRpb24xNiAodW5zaWduZWQgbG9uZyB4LCB1bnNpZ25lZCBs
b25nIHksIHVuc2lnbmVkIGxvbmcgbik7CnVuc2lnbmVkIGxvbmcgX2JsZW5kZXJfc2NyZWVuMTYg
KHVuc2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9uZyB5LCB1bnNpZ25lZCBsb25nIG4pOwoKCgoK
CnVuc2lnbmVkIGxvbmcgX2JsZW5kZXJfdHJhbnMyNCAodW5zaWduZWQgbG9uZyB4LCB1bnNpZ25l
ZCBsb25nIHksIHVuc2lnbmVkIGxvbmcgbik7CnVuc2lnbmVkIGxvbmcgX2JsZW5kZXJfYWRkMjQg
KHVuc2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9uZyB5LCB1bnNpZ25lZCBsb25nIG4pOwp1bnNp
Z25lZCBsb25nIF9ibGVuZGVyX2J1cm4yNCAodW5zaWduZWQgbG9uZyB4LCB1bnNpZ25lZCBsb25n
IHksIHVuc2lnbmVkIGxvbmcgbik7CnVuc2lnbmVkIGxvbmcgX2JsZW5kZXJfY29sb3IyNCAodW5z
aWduZWQgbG9uZyB4LCB1bnNpZ25lZCBsb25nIHksIHVuc2lnbmVkIGxvbmcgbik7CnVuc2lnbmVk
IGxvbmcgX2JsZW5kZXJfZGlmZmVyZW5jZTI0ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxv
bmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKdW5zaWduZWQgbG9uZyBfYmxlbmRlcl9kaXNzb2x2ZTI0
ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKdW5z
aWduZWQgbG9uZyBfYmxlbmRlcl9kb2RnZTI0ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxv
bmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKdW5zaWduZWQgbG9uZyBfYmxlbmRlcl9odWUyNCAodW5z
aWduZWQgbG9uZyB4LCB1bnNpZ25lZCBsb25nIHksIHVuc2lnbmVkIGxvbmcgbik7CnVuc2lnbmVk
IGxvbmcgX2JsZW5kZXJfaW52ZXJ0MjQgKHVuc2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9uZyB5
LCB1bnNpZ25lZCBsb25nIG4pOwp1bnNpZ25lZCBsb25nIF9ibGVuZGVyX2x1bWluYW5jZTI0ICh1
bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKdW5zaWdu
ZWQgbG9uZyBfYmxlbmRlcl9tdWx0aXBseTI0ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxv
bmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKdW5zaWduZWQgbG9uZyBfYmxlbmRlcl9zYXR1cmF0aW9u
MjQgKHVuc2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9uZyB5LCB1bnNpZ25lZCBsb25nIG4pOwp1
bnNpZ25lZCBsb25nIF9ibGVuZGVyX3NjcmVlbjI0ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVk
IGxvbmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKCgoKdW5zaWduZWQgbG9uZyBfYmxlbmRlcl9hbHBo
YTE1ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcgeSwgdW5zaWduZWQgbG9uZyBuKTsK
dW5zaWduZWQgbG9uZyBfYmxlbmRlcl9hbHBoYTE2ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVk
IGxvbmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKdW5zaWduZWQgbG9uZyBfYmxlbmRlcl9hbHBoYTI0
ICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKdW5z
aWduZWQgbG9uZyBfYmxlbmRlcl9hbHBoYTMyICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxv
bmcgeSwgdW5zaWduZWQgbG9uZyBuKTsKCnVuc2lnbmVkIGxvbmcgX2JsZW5kZXJfd3JpdGVfYWxw
aGEgKHVuc2lnbmVkIGxvbmcgeCwgdW5zaWduZWQgbG9uZyB5LCB1bnNpZ25lZCBsb25nIG4pOwoK
Cgp2b2lkIF9ub3JtYWxfbGluZSAoQklUTUFQICpibXAsIGludCB4MSwgaW50IHkxLCBpbnQgeDIs
IGludCB5MiwgaW50IGNvbG9yKTsKdm9pZCBfbm9ybWFsX3JlY3RmaWxsIChCSVRNQVAgKmJtcCwg
aW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBpbnQgY29sb3IpOwoKCgppbnQgX2xpbmVh
cl9nZXRwaXhlbDggKEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHkpOwp2b2lkIF9saW5lYXJfcHV0
cGl4ZWw4IChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpOwp2b2lkIF9saW5l
YXJfdmxpbmU4IChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5MSwgaW50IHkyLCBpbnQgY29sb3Ip
Owp2b2lkIF9saW5lYXJfaGxpbmU4IChCSVRNQVAgKmJtcCwgaW50IHgxLCBpbnQgeSwgaW50IHgy
LCBpbnQgY29sb3IpOwp2b2lkIF9saW5lYXJfZHJhd19zcHJpdGU4IChCSVRNQVAgKmJtcCwgQklU
TUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZvaWQgX2xpbmVhcl9kcmF3X3Nwcml0ZV92X2Zs
aXA4IChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZvaWQgX2xp
bmVhcl9kcmF3X3Nwcml0ZV9oX2ZsaXA4IChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGlu
dCB4LCBpbnQgeSk7CnZvaWQgX2xpbmVhcl9kcmF3X3Nwcml0ZV92aF9mbGlwOCAoQklUTUFQICpi
bXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHkpOwp2b2lkIF9saW5lYXJfZHJhd190cmFu
c19zcHJpdGU4IChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZv
aWQgX2xpbmVhcl9kcmF3X2xpdF9zcHJpdGU4IChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUs
IGludCB4LCBpbnQgeSwgaW50IGNvbG9yKTsKdm9pZCBfbGluZWFyX2RyYXdfcmxlX3Nwcml0ZTgg
KEJJVE1BUCAqYm1wLCBjb25zdCBzdHJ1Y3QgUkxFX1NQUklURSAqc3ByaXRlLCBpbnQgeCwgaW50
IHkpOwp2b2lkIF9saW5lYXJfZHJhd190cmFuc19ybGVfc3ByaXRlOCAoQklUTUFQICpibXAsIGNv
bnN0IHN0cnVjdCBSTEVfU1BSSVRFICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZvaWQgX2xpbmVh
cl9kcmF3X2xpdF9ybGVfc3ByaXRlOCAoQklUTUFQICpibXAsIGNvbnN0IHN0cnVjdCBSTEVfU1BS
SVRFICpzcHJpdGUsIGludCB4LCBpbnQgeSwgaW50IGNvbG9yKTsKdm9pZCBfbGluZWFyX2RyYXdf
Y2hhcmFjdGVyOCAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHksIGlu
dCBjb2xvcik7CnZvaWQgX2xpbmVhcl9kcmF3X2dseXBoOCAoQklUTUFQICpibXAsIGNvbnN0IEZP
TlRfR0xZUEggKmdseXBoLCBpbnQgeCwgaW50IHksIGludCBjb2xvcik7CnZvaWQgX2xpbmVhcl9i
bGl0OCAoQklUTUFQICpzb3VyY2UsQklUTUFQICpkZXN0LCBpbnQgc291cmNlX3gsIGludCBzb3Vy
Y2VfeSwgaW50IGRlc3RfeCwgaW50IGRlc3RfeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKdm9p
ZCBfbGluZWFyX2JsaXRfYmFja3dhcmQ4IChCSVRNQVAgKnNvdXJjZSxCSVRNQVAgKmRlc3QsIGlu
dCBzb3VyY2VfeCwgaW50IHNvdXJjZV95LCBpbnQgZGVzdF94LCBpbnQgZGVzdF95LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpOwp2b2lkIF9saW5lYXJfbWFza2VkX2JsaXQ4IChCSVRNQVAgKnNvdXJj
ZSwgQklUTUFQICpkZXN0LCBpbnQgc291cmNlX3gsIGludCBzb3VyY2VfeSwgaW50IGRlc3RfeCwg
aW50IGRlc3RfeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKdm9pZCBfbGluZWFyX2NsZWFyX3Rv
X2NvbG9yOCAoQklUTUFQICpiaXRtYXAsIGludCBjb2xvcik7CgoKCgoKdm9pZCBfbGluZWFyX3B1
dHBpeGVsMTUgKEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHksIGludCBjb2xvcik7CnZvaWQgX2xp
bmVhcl92bGluZTE1IChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5MSwgaW50IHkyLCBpbnQgY29s
b3IpOwp2b2lkIF9saW5lYXJfaGxpbmUxNSAoQklUTUFQICpibXAsIGludCB4MSwgaW50IHksIGlu
dCB4MiwgaW50IGNvbG9yKTsKdm9pZCBfbGluZWFyX2RyYXdfdHJhbnNfc3ByaXRlMTUgKEJJVE1B
UCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfbGluZWFyX2RyYXdf
dHJhbnNfcmdiYV9zcHJpdGUxNSAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwg
aW50IHkpOwp2b2lkIF9saW5lYXJfZHJhd19saXRfc3ByaXRlMTUgKEJJVE1BUCAqYm1wLCBCSVRN
QVAgKnNwcml0ZSwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpOwp2b2lkIF9saW5lYXJfZHJhd19y
bGVfc3ByaXRlMTUgKEJJVE1BUCAqYm1wLCBjb25zdCBzdHJ1Y3QgUkxFX1NQUklURSAqc3ByaXRl
LCBpbnQgeCwgaW50IHkpOwp2b2lkIF9saW5lYXJfZHJhd190cmFuc19ybGVfc3ByaXRlMTUgKEJJ
VE1BUCAqYm1wLCBjb25zdCBzdHJ1Y3QgUkxFX1NQUklURSAqc3ByaXRlLCBpbnQgeCwgaW50IHkp
Owp2b2lkIF9saW5lYXJfZHJhd190cmFuc19yZ2JhX3JsZV9zcHJpdGUxNSAoQklUTUFQICpibXAs
IGNvbnN0IHN0cnVjdCBSTEVfU1BSSVRFICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZvaWQgX2xp
bmVhcl9kcmF3X2xpdF9ybGVfc3ByaXRlMTUgKEJJVE1BUCAqYm1wLCBjb25zdCBzdHJ1Y3QgUkxF
X1NQUklURSAqc3ByaXRlLCBpbnQgeCwgaW50IHksIGludCBjb2xvcik7CgppbnQgX2xpbmVhcl9n
ZXRwaXhlbDE2IChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5KTsKdm9pZCBfbGluZWFyX3B1dHBp
eGVsMTYgKEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHksIGludCBjb2xvcik7CnZvaWQgX2xpbmVh
cl92bGluZTE2IChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5MSwgaW50IHkyLCBpbnQgY29sb3Ip
Owp2b2lkIF9saW5lYXJfaGxpbmUxNiAoQklUTUFQICpibXAsIGludCB4MSwgaW50IHksIGludCB4
MiwgaW50IGNvbG9yKTsKdm9pZCBfbGluZWFyX2RyYXdfc3ByaXRlMTYgKEJJVE1BUCAqYm1wLCBC
SVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfbGluZWFyX2RyYXdfMjU2X3Nwcml0
ZTE2IChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZvaWQgX2xp
bmVhcl9kcmF3X3Nwcml0ZV92X2ZsaXAxNiAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBp
bnQgeCwgaW50IHkpOwp2b2lkIF9saW5lYXJfZHJhd19zcHJpdGVfaF9mbGlwMTYgKEJJVE1BUCAq
Ym1wLCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfbGluZWFyX2RyYXdfc3By
aXRlX3ZoX2ZsaXAxNiAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHkp
Owp2b2lkIF9saW5lYXJfZHJhd190cmFuc19zcHJpdGUxNiAoQklUTUFQICpibXAsIEJJVE1BUCAq
c3ByaXRlLCBpbnQgeCwgaW50IHkpOwp2b2lkIF9saW5lYXJfZHJhd190cmFuc19yZ2JhX3Nwcml0
ZTE2IChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZvaWQgX2xp
bmVhcl9kcmF3X2xpdF9zcHJpdGUxNiAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQg
eCwgaW50IHksIGludCBjb2xvcik7CnZvaWQgX2xpbmVhcl9kcmF3X3JsZV9zcHJpdGUxNiAoQklU
TUFQICpibXAsIGNvbnN0IHN0cnVjdCBSTEVfU1BSSVRFICpzcHJpdGUsIGludCB4LCBpbnQgeSk7
CnZvaWQgX2xpbmVhcl9kcmF3X3RyYW5zX3JsZV9zcHJpdGUxNiAoQklUTUFQICpibXAsIGNvbnN0
IHN0cnVjdCBSTEVfU1BSSVRFICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZvaWQgX2xpbmVhcl9k
cmF3X3RyYW5zX3JnYmFfcmxlX3Nwcml0ZTE2IChCSVRNQVAgKmJtcCwgY29uc3Qgc3RydWN0IFJM
RV9TUFJJVEUgKnNwcml0ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfbGluZWFyX2RyYXdfbGl0X3Js
ZV9zcHJpdGUxNiAoQklUTUFQICpibXAsIGNvbnN0IHN0cnVjdCBSTEVfU1BSSVRFICpzcHJpdGUs
IGludCB4LCBpbnQgeSwgaW50IGNvbG9yKTsKdm9pZCBfbGluZWFyX2RyYXdfY2hhcmFjdGVyMTYg
KEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpOwp2
b2lkIF9saW5lYXJfZHJhd19nbHlwaDE2IChCSVRNQVAgKmJtcCwgY29uc3QgRk9OVF9HTFlQSCAq
Z2x5cGgsIGludCB4LCBpbnQgeSwgaW50IGNvbG9yKTsKdm9pZCBfbGluZWFyX2JsaXQxNiAoQklU
TUFQICpzb3VyY2UsIEJJVE1BUCAqZGVzdCwgaW50IHNvdXJjZV94LCBpbnQgc291cmNlX3ksIGlu
dCBkZXN0X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CnZvaWQgX2xpbmVh
cl9ibGl0X2JhY2t3YXJkMTYgKEJJVE1BUCAqc291cmNlLCBCSVRNQVAgKmRlc3QsIGludCBzb3Vy
Y2VfeCwgaW50IHNvdXJjZV95LCBpbnQgZGVzdF94LCBpbnQgZGVzdF95LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpOwp2b2lkIF9saW5lYXJfbWFza2VkX2JsaXQxNiAoQklUTUFQICpzb3VyY2UsIEJJ
VE1BUCAqZGVzdCwgaW50IHNvdXJjZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0X3gsIGludCBk
ZXN0X3ksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CnZvaWQgX2xpbmVhcl9jbGVhcl90b19jb2xv
cjE2IChCSVRNQVAgKmJpdG1hcCwgaW50IGNvbG9yKTsKCgoKCgppbnQgX2xpbmVhcl9nZXRwaXhl
bDI0IChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5KTsKdm9pZCBfbGluZWFyX3B1dHBpeGVsMjQg
KEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHksIGludCBjb2xvcik7CnZvaWQgX2xpbmVhcl92bGlu
ZTI0IChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5MSwgaW50IHkyLCBpbnQgY29sb3IpOwp2b2lk
IF9saW5lYXJfaGxpbmUyNCAoQklUTUFQICpibXAsIGludCB4MSwgaW50IHksIGludCB4MiwgaW50
IGNvbG9yKTsKdm9pZCBfbGluZWFyX2RyYXdfc3ByaXRlMjQgKEJJVE1BUCAqYm1wLCBCSVRNQVAg
KnNwcml0ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfbGluZWFyX2RyYXdfMjU2X3Nwcml0ZTI0IChC
SVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZvaWQgX2xpbmVhcl9k
cmF3X3Nwcml0ZV92X2ZsaXAyNCAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwg
aW50IHkpOwp2b2lkIF9saW5lYXJfZHJhd19zcHJpdGVfaF9mbGlwMjQgKEJJVE1BUCAqYm1wLCBC
SVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfbGluZWFyX2RyYXdfc3ByaXRlX3Zo
X2ZsaXAyNCAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHkpOwp2b2lk
IF9saW5lYXJfZHJhd190cmFuc19zcHJpdGUyNCAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRl
LCBpbnQgeCwgaW50IHkpOwp2b2lkIF9saW5lYXJfZHJhd190cmFuc19yZ2JhX3Nwcml0ZTI0IChC
SVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZvaWQgX2xpbmVhcl9k
cmF3X2xpdF9zcHJpdGUyNCAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50
IHksIGludCBjb2xvcik7CnZvaWQgX2xpbmVhcl9kcmF3X3JsZV9zcHJpdGUyNCAoQklUTUFQICpi
bXAsIGNvbnN0IHN0cnVjdCBSTEVfU1BSSVRFICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZvaWQg
X2xpbmVhcl9kcmF3X3RyYW5zX3JsZV9zcHJpdGUyNCAoQklUTUFQICpibXAsIGNvbnN0IHN0cnVj
dCBSTEVfU1BSSVRFICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZvaWQgX2xpbmVhcl9kcmF3X3Ry
YW5zX3JnYmFfcmxlX3Nwcml0ZTI0IChCSVRNQVAgKmJtcCwgY29uc3Qgc3RydWN0IFJMRV9TUFJJ
VEUgKnNwcml0ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfbGluZWFyX2RyYXdfbGl0X3JsZV9zcHJp
dGUyNCAoQklUTUFQICpibXAsIGNvbnN0IHN0cnVjdCBSTEVfU1BSSVRFICpzcHJpdGUsIGludCB4
LCBpbnQgeSwgaW50IGNvbG9yKTsKdm9pZCBfbGluZWFyX2RyYXdfY2hhcmFjdGVyMjQgKEJJVE1B
UCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpOwp2b2lkIF9s
aW5lYXJfZHJhd19nbHlwaDI0IChCSVRNQVAgKmJtcCwgY29uc3QgRk9OVF9HTFlQSCAqZ2x5cGgs
IGludCB4LCBpbnQgeSwgaW50IGNvbG9yKTsKdm9pZCBfbGluZWFyX2JsaXQyNCAoQklUTUFQICpz
b3VyY2UsIEJJVE1BUCAqZGVzdCwgaW50IHNvdXJjZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0
X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CnZvaWQgX2xpbmVhcl9ibGl0
X2JhY2t3YXJkMjQgKEJJVE1BUCAqc291cmNlLCBCSVRNQVAgKmRlc3QsIGludCBzb3VyY2VfeCwg
aW50IHNvdXJjZV95LCBpbnQgZGVzdF94LCBpbnQgZGVzdF95LCBpbnQgd2lkdGgsIGludCBoZWln
aHQpOwp2b2lkIF9saW5lYXJfbWFza2VkX2JsaXQyNCAoQklUTUFQICpzb3VyY2UsIEJJVE1BUCAq
ZGVzdCwgaW50IHNvdXJjZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0X3gsIGludCBkZXN0X3ks
IGludCB3aWR0aCwgaW50IGhlaWdodCk7CnZvaWQgX2xpbmVhcl9jbGVhcl90b19jb2xvcjI0IChC
SVRNQVAgKmJpdG1hcCwgaW50IGNvbG9yKTsKCgoKCgppbnQgX2xpbmVhcl9nZXRwaXhlbDMyIChC
SVRNQVAgKmJtcCwgaW50IHgsIGludCB5KTsKdm9pZCBfbGluZWFyX3B1dHBpeGVsMzIgKEJJVE1B
UCAqYm1wLCBpbnQgeCwgaW50IHksIGludCBjb2xvcik7CnZvaWQgX2xpbmVhcl92bGluZTMyIChC
SVRNQVAgKmJtcCwgaW50IHgsIGludCB5MSwgaW50IHkyLCBpbnQgY29sb3IpOwp2b2lkIF9saW5l
YXJfaGxpbmUzMiAoQklUTUFQICpibXAsIGludCB4MSwgaW50IHksIGludCB4MiwgaW50IGNvbG9y
KTsKdm9pZCBfbGluZWFyX2RyYXdfc3ByaXRlMzIgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0
ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfbGluZWFyX2RyYXdfMjU2X3Nwcml0ZTMyIChCSVRNQVAg
KmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSk7CnZvaWQgX2xpbmVhcl9kcmF3X3Nw
cml0ZV92X2ZsaXAzMiAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHkp
Owp2b2lkIF9saW5lYXJfZHJhd19zcHJpdGVfaF9mbGlwMzIgKEJJVE1BUCAqYm1wLCBCSVRNQVAg
KnNwcml0ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfbGluZWFyX2RyYXdfc3ByaXRlX3ZoX2ZsaXAz
MiAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHkpOwp2b2lkIF9saW5l
YXJfZHJhd190cmFuc19zcHJpdGUzMiAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQg
eCwgaW50IHkpOwp2b2lkIF9saW5lYXJfZHJhd19saXRfc3ByaXRlMzIgKEJJVE1BUCAqYm1wLCBC
SVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpOwp2b2lkIF9saW5lYXJfZHJh
d19ybGVfc3ByaXRlMzIgKEJJVE1BUCAqYm1wLCBjb25zdCBzdHJ1Y3QgUkxFX1NQUklURSAqc3By
aXRlLCBpbnQgeCwgaW50IHkpOwp2b2lkIF9saW5lYXJfZHJhd190cmFuc19ybGVfc3ByaXRlMzIg
KEJJVE1BUCAqYm1wLCBjb25zdCBzdHJ1Y3QgUkxFX1NQUklURSAqc3ByaXRlLCBpbnQgeCwgaW50
IHkpOwp2b2lkIF9saW5lYXJfZHJhd19saXRfcmxlX3Nwcml0ZTMyIChCSVRNQVAgKmJtcCwgY29u
c3Qgc3RydWN0IFJMRV9TUFJJVEUgKnNwcml0ZSwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpOwp2
b2lkIF9saW5lYXJfZHJhd19jaGFyYWN0ZXIzMiAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRl
LCBpbnQgeCwgaW50IHksIGludCBjb2xvcik7CnZvaWQgX2xpbmVhcl9kcmF3X2dseXBoMzIgKEJJ
VE1BUCAqYm1wLCBjb25zdCBGT05UX0dMWVBIICpnbHlwaCwgaW50IHgsIGludCB5LCBpbnQgY29s
b3IpOwp2b2lkIF9saW5lYXJfYmxpdDMyIChCSVRNQVAgKnNvdXJjZSwgQklUTUFQICpkZXN0LCBp
bnQgc291cmNlX3gsIGludCBzb3VyY2VfeSwgaW50IGRlc3RfeCwgaW50IGRlc3RfeSwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKdm9pZCBfbGluZWFyX2JsaXRfYmFja3dhcmQzMiAoQklUTUFQICpz
b3VyY2UsIEJJVE1BUCAqZGVzdCwgaW50IHNvdXJjZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0
X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CnZvaWQgX2xpbmVhcl9tYXNr
ZWRfYmxpdDMyIChCSVRNQVAgKnNvdXJjZSwgQklUTUFQICpkZXN0LCBpbnQgc291cmNlX3gsIGlu
dCBzb3VyY2VfeSwgaW50IGRlc3RfeCwgaW50IGRlc3RfeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KTsKdm9pZCBfbGluZWFyX2NsZWFyX3RvX2NvbG9yMzIgKEJJVE1BUCAqYml0bWFwLCBpbnQgY29s
b3IpOwoKCgoKCmludCBfeF9nZXRwaXhlbCAoQklUTUFQICpibXAsIGludCB4LCBpbnQgeSk7CnZv
aWQgX3hfcHV0cGl4ZWwgKEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHksIGludCBjb2xvcik7CnZv
aWQgX3hfdmxpbmUgKEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHkxLCBpbnQgeTIsIGludCBjb2xv
cik7CnZvaWQgX3hfaGxpbmUgKEJJVE1BUCAqYm1wLCBpbnQgeDEsIGludCB5LCBpbnQgeDIsIGlu
dCBjb2xvcik7CnZvaWQgX3hfZHJhd19zcHJpdGUgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0
ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfeF9kcmF3X3Nwcml0ZV92X2ZsaXAgKEJJVE1BUCAqYm1w
LCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfeF9kcmF3X3Nwcml0ZV9oX2Zs
aXAgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfeF9k
cmF3X3Nwcml0ZV92aF9mbGlwIChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBp
bnQgeSk7CnZvaWQgX3hfZHJhd190cmFuc19zcHJpdGUgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNw
cml0ZSwgaW50IHgsIGludCB5KTsKdm9pZCBfeF9kcmF3X2xpdF9zcHJpdGUgKEJJVE1BUCAqYm1w
LCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpOwp2b2lkIF94X2RyYXdf
cmxlX3Nwcml0ZSAoQklUTUFQICpibXAsIGNvbnN0IHN0cnVjdCBSTEVfU1BSSVRFICpzcHJpdGUs
IGludCB4LCBpbnQgeSk7CnZvaWQgX3hfZHJhd190cmFuc19ybGVfc3ByaXRlIChCSVRNQVAgKmJt
cCwgY29uc3Qgc3RydWN0IFJMRV9TUFJJVEUgKnNwcml0ZSwgaW50IHgsIGludCB5KTsKdm9pZCBf
eF9kcmF3X2xpdF9ybGVfc3ByaXRlIChCSVRNQVAgKmJtcCwgY29uc3Qgc3RydWN0IFJMRV9TUFJJ
VEUgKnNwcml0ZSwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpOwp2b2lkIF94X2RyYXdfY2hhcmFj
dGVyIChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSwgaW50IGNvbG9y
KTsKdm9pZCBfeF9kcmF3X2dseXBoIChCSVRNQVAgKmJtcCwgY29uc3QgRk9OVF9HTFlQSCAqZ2x5
cGgsIGludCB4LCBpbnQgeSwgaW50IGNvbG9yKTsKdm9pZCBfeF9ibGl0X2Zyb21fbWVtb3J5IChC
SVRNQVAgKnNvdXJjZSwgQklUTUFQICpkZXN0LCBpbnQgc291cmNlX3gsIGludCBzb3VyY2VfeSwg
aW50IGRlc3RfeCwgaW50IGRlc3RfeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKdm9pZCBfeF9i
bGl0X3RvX21lbW9yeSAoQklUTUFQICpzb3VyY2UsIEJJVE1BUCAqZGVzdCwgaW50IHNvdXJjZV94
LCBpbnQgc291cmNlX3ksIGludCBkZXN0X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwgaW50IGhl
aWdodCk7CnZvaWQgX3hfYmxpdCAoQklUTUFQICpzb3VyY2UsIEJJVE1BUCAqZGVzdCwgaW50IHNv
dXJjZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwg
aW50IGhlaWdodCk7CnZvaWQgX3hfYmxpdF9mb3J3YXJkIChCSVRNQVAgKnNvdXJjZSwgQklUTUFQ
ICpkZXN0LCBpbnQgc291cmNlX3gsIGludCBzb3VyY2VfeSwgaW50IGRlc3RfeCwgaW50IGRlc3Rf
eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKdm9pZCBfeF9ibGl0X2JhY2t3YXJkIChCSVRNQVAg
KnNvdXJjZSwgQklUTUFQICpkZXN0LCBpbnQgc291cmNlX3gsIGludCBzb3VyY2VfeSwgaW50IGRl
c3RfeCwgaW50IGRlc3RfeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKdm9pZCBfeF9tYXNrZWRf
YmxpdCAoQklUTUFQICpzb3VyY2UsIEJJVE1BUCAqZGVzdCwgaW50IHNvdXJjZV94LCBpbnQgc291
cmNlX3ksIGludCBkZXN0X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CnZv
aWQgX3hfY2xlYXJfdG9fY29sb3IgKEJJVE1BUCAqYml0bWFwLCBpbnQgY29sb3IpOwoKCgoKCnR5
cGVkZWYgc3RydWN0IEdSQVBISUNTX1JFQ1QgewogICBpbnQgd2lkdGg7CiAgIGludCBoZWlnaHQ7
CiAgIGludCBwaXRjaDsKICAgdm9pZCAqZGF0YTsKfSBHUkFQSElDU19SRUNUOwoKdHlwZWRlZiB2
b2lkIChDT0xPUkNPTlZfQkxJVFRFUl9GVU5DKShHUkFQSElDU19SRUNUICpzcmNfcmVjdCwgR1JB
UEhJQ1NfUkVDVCAqZGVzdF9yZWN0KTsKCkNPTE9SQ09OVl9CTElUVEVSX0ZVTkMgKiBfZ2V0X2Nv
bG9yY29udl9ibGl0dGVyIChpbnQgZnJvbV9kZXB0aCwgaW50IHRvX2RlcHRoKTsKdm9pZCBfcmVs
ZWFzZV9jb2xvcmNvbnZfYmxpdHRlciAoQ09MT1JDT05WX0JMSVRURVJfRlVOQyAqYmxpdHRlcik7
CnZvaWQgX3NldF9jb2xvcmNvbnZfcGFsZXR0ZSAoY29uc3Qgc3RydWN0IFJHQiAqcCwgaW50IGZy
b20sIGludCB0byk7CnVuc2lnbmVkIGNoYXIgKiBfZ2V0X2NvbG9yY29udl9tYXAgKHZvaWQpOwoK
Cgp2b2lkIF9jb2xvcmNvbnZfYmxpdF84X3RvXzggKEdSQVBISUNTX1JFQ1QgKnNyY19yZWN0LCBH
UkFQSElDU19SRUNUICpkZXN0X3JlY3QpOwp2b2lkIF9jb2xvcmNvbnZfYmxpdF84X3RvXzE1IChH
UkFQSElDU19SRUNUICpzcmNfcmVjdCwgR1JBUEhJQ1NfUkVDVCAqZGVzdF9yZWN0KTsKdm9pZCBf
Y29sb3Jjb252X2JsaXRfOF90b18xNiAoR1JBUEhJQ1NfUkVDVCAqc3JjX3JlY3QsIEdSQVBISUNT
X1JFQ1QgKmRlc3RfcmVjdCk7CnZvaWQgX2NvbG9yY29udl9ibGl0XzhfdG9fMjQgKEdSQVBISUNT
X1JFQ1QgKnNyY19yZWN0LCBHUkFQSElDU19SRUNUICpkZXN0X3JlY3QpOwp2b2lkIF9jb2xvcmNv
bnZfYmxpdF84X3RvXzMyIChHUkFQSElDU19SRUNUICpzcmNfcmVjdCwgR1JBUEhJQ1NfUkVDVCAq
ZGVzdF9yZWN0KTsKCgoKCgp2b2lkIF9jb2xvcmNvbnZfYmxpdF8xNV90b184IChHUkFQSElDU19S
RUNUICpzcmNfcmVjdCwgR1JBUEhJQ1NfUkVDVCAqZGVzdF9yZWN0KTsKdm9pZCBfY29sb3Jjb252
X2JsaXRfMTVfdG9fMTYgKEdSQVBISUNTX1JFQ1QgKnNyY19yZWN0LCBHUkFQSElDU19SRUNUICpk
ZXN0X3JlY3QpOwp2b2lkIF9jb2xvcmNvbnZfYmxpdF8xNV90b18yNCAoR1JBUEhJQ1NfUkVDVCAq
c3JjX3JlY3QsIEdSQVBISUNTX1JFQ1QgKmRlc3RfcmVjdCk7CnZvaWQgX2NvbG9yY29udl9ibGl0
XzE1X3RvXzMyIChHUkFQSElDU19SRUNUICpzcmNfcmVjdCwgR1JBUEhJQ1NfUkVDVCAqZGVzdF9y
ZWN0KTsKCnZvaWQgX2NvbG9yY29udl9ibGl0XzE2X3RvXzggKEdSQVBISUNTX1JFQ1QgKnNyY19y
ZWN0LCBHUkFQSElDU19SRUNUICpkZXN0X3JlY3QpOwp2b2lkIF9jb2xvcmNvbnZfYmxpdF8xNl90
b18xNSAoR1JBUEhJQ1NfUkVDVCAqc3JjX3JlY3QsIEdSQVBISUNTX1JFQ1QgKmRlc3RfcmVjdCk7
CnZvaWQgX2NvbG9yY29udl9ibGl0XzE2X3RvXzI0IChHUkFQSElDU19SRUNUICpzcmNfcmVjdCwg
R1JBUEhJQ1NfUkVDVCAqZGVzdF9yZWN0KTsKdm9pZCBfY29sb3Jjb252X2JsaXRfMTZfdG9fMzIg
KEdSQVBISUNTX1JFQ1QgKnNyY19yZWN0LCBHUkFQSElDU19SRUNUICpkZXN0X3JlY3QpOwoKCgoK
CnZvaWQgX2NvbG9yY29udl9ibGl0XzI0X3RvXzggKEdSQVBISUNTX1JFQ1QgKnNyY19yZWN0LCBH
UkFQSElDU19SRUNUICpkZXN0X3JlY3QpOwp2b2lkIF9jb2xvcmNvbnZfYmxpdF8yNF90b18xNSAo
R1JBUEhJQ1NfUkVDVCAqc3JjX3JlY3QsIEdSQVBISUNTX1JFQ1QgKmRlc3RfcmVjdCk7CnZvaWQg
X2NvbG9yY29udl9ibGl0XzI0X3RvXzE2IChHUkFQSElDU19SRUNUICpzcmNfcmVjdCwgR1JBUEhJ
Q1NfUkVDVCAqZGVzdF9yZWN0KTsKdm9pZCBfY29sb3Jjb252X2JsaXRfMjRfdG9fMzIgKEdSQVBI
SUNTX1JFQ1QgKnNyY19yZWN0LCBHUkFQSElDU19SRUNUICpkZXN0X3JlY3QpOwoKCgoKCnZvaWQg
X2NvbG9yY29udl9ibGl0XzMyX3RvXzggKEdSQVBISUNTX1JFQ1QgKnNyY19yZWN0LCBHUkFQSElD
U19SRUNUICpkZXN0X3JlY3QpOwp2b2lkIF9jb2xvcmNvbnZfYmxpdF8zMl90b18xNSAoR1JBUEhJ
Q1NfUkVDVCAqc3JjX3JlY3QsIEdSQVBISUNTX1JFQ1QgKmRlc3RfcmVjdCk7CnZvaWQgX2NvbG9y
Y29udl9ibGl0XzMyX3RvXzE2IChHUkFQSElDU19SRUNUICpzcmNfcmVjdCwgR1JBUEhJQ1NfUkVD
VCAqZGVzdF9yZWN0KTsKdm9pZCBfY29sb3Jjb252X2JsaXRfMzJfdG9fMjQgKEdSQVBISUNTX1JF
Q1QgKnNyY19yZWN0LCBHUkFQSElDU19SRUNUICpkZXN0X3JlY3QpOwojIDYyNSAiLi4vaW5jbHVk
ZS9hbGxlZ3JvL2FpbnRlcm4uaCIKdm9pZCBfY29sb3Jjb3B5X2JsaXRfMTVfdG9fMTUgKEdSQVBI
SUNTX1JFQ1QgKnNyY19yZWN0LCBHUkFQSElDU19SRUNUICpkZXN0X3JlY3QpOwp2b2lkIF9jb2xv
cmNvcHlfYmxpdF8xNl90b18xNiAoR1JBUEhJQ1NfUkVDVCAqc3JjX3JlY3QsIEdSQVBISUNTX1JF
Q1QgKmRlc3RfcmVjdCk7CgoKCnZvaWQgX2NvbG9yY29weV9ibGl0XzI0X3RvXzI0IChHUkFQSElD
U19SRUNUICpzcmNfcmVjdCwgR1JBUEhJQ1NfUkVDVCAqZGVzdF9yZWN0KTsKCgoKdm9pZCBfY29s
b3Jjb3B5X2JsaXRfMzJfdG9fMzIgKEdSQVBISUNTX1JFQ1QgKnNyY19yZWN0LCBHUkFQSElDU19S
RUNUICpkZXN0X3JlY3QpOwoKCgoKCgoKdm9pZCBfZG9fc3RyZXRjaCAoQklUTUFQICpzb3VyY2Us
IEJJVE1BUCAqZGVzdCwgdm9pZCAqZHJhd2VyLCBpbnQgc3gsIGZpeGVkIHN5LCBmaXhlZCBzeWQs
IGludCBkeCwgaW50IGR5LCBpbnQgZGgsIGludCBjb2xvcl9kZXB0aCk7CgoKCgp2b2lkIF9wYXJh
bGxlbG9ncmFtX21hcCAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByLCBmaXhlZCB4c1s0XSwgZml4
ZWQgeXNbNF0sIHZvaWQgKCpkcmF3X3NjYW5saW5lKShCSVRNQVAgKmJtcCwgQklUTUFQICpzcHIs
IGZpeGVkIGxfYm1wX3gsIGludCBibXBfeSwgZml4ZWQgcl9ibXBfeCwgZml4ZWQgbF9zcHJfeCwg
Zml4ZWQgbF9zcHJfeSwgZml4ZWQgc3ByX2R4LCBmaXhlZCBzcHJfZHkpLCBpbnQgc3ViX3BpeGVs
X2FjY3VyYWN5KTsKdm9pZCBfcGFyYWxsZWxvZ3JhbV9tYXBfc3RhbmRhcmQgKEJJVE1BUCAqYm1w
LCBCSVRNQVAgKnNwcml0ZSwgZml4ZWQgeHNbNF0sIGZpeGVkIHlzWzRdKTsKdm9pZCBfcm90YXRl
X3NjYWxlX2ZsaXBfY29vcmRpbmF0ZXMgKGZpeGVkIHcsIGZpeGVkIGgsIGZpeGVkIHgsIGZpeGVk
IHksIGZpeGVkIGN4LCBmaXhlZCBjeSwgZml4ZWQgYW5nbGUsIGZpeGVkIHNjYWxlX3gsIGZpeGVk
IHNjYWxlX3ksIGludCBoX2ZsaXAsIGludCB2X2ZsaXAsIGZpeGVkIHhzWzRdLCBmaXhlZCB5c1s0
XSk7CiMgNjczICIuLi9pbmNsdWRlL2FsbGVncm8vYWludGVybi5oIgp0eXBlZGVmIHN0cnVjdCBQ
T0xZR09OX1NFR01FTlQKewogICBmaXhlZCB1LCB2LCBkdSwgZHY7CiAgIGZpeGVkIGMsIGRjOwog
ICBmaXhlZCByLCBnLCBiLCBkciwgZGcsIGRiOwogICBmbG9hdCB6LCBkejsKICAgZmxvYXQgZnUs
IGZ2LCBkZnUsIGRmdjsKICAgdW5zaWduZWQgY2hhciAqdGV4dHVyZTsKICAgaW50IHVtYXNrLCB2
bWFzaywgdnNoaWZ0OwogICBpbnQgc2VnOwogICB1bnNpZ25lZCBsb25nIHpidWZfYWRkcjsKICAg
dW5zaWduZWQgbG9uZyByZWFkX2FkZHI7Cn0gUE9MWUdPTl9TRUdNRU5UOwoKCgp0eXBlZGVmIHZv
aWQgKCpTQ0FOTElORV9GSUxMRVIpICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09O
X1NFR01FTlQgKmluZm8pOwoKCgp0eXBlZGVmIHN0cnVjdCBQT0xZR09OX0VER0UKewogICBpbnQg
dG9wOwogICBpbnQgYm90dG9tOwogICBmaXhlZCB4LCBkeDsKICAgZml4ZWQgdzsKICAgUE9MWUdP
Tl9TRUdNRU5UIGRhdDsKICAgc3RydWN0IFBPTFlHT05fRURHRSAqcHJldjsKICAgc3RydWN0IFBP
TFlHT05fRURHRSAqbmV4dDsKICAgc3RydWN0IFBPTFlHT05fSU5GTyAqcG9seTsKfSBQT0xZR09O
X0VER0U7CgoKdHlwZWRlZiBzdHJ1Y3QgUE9MWUdPTl9JTkZPCnsKICAgc3RydWN0IFBPTFlHT05f
SU5GTyAqbmV4dCwgKnByZXY7CiAgIGludCBpbnNpZGU7CiAgIGludCBmbGFnczsKICAgaW50IGNv
bG9yOwogICBmbG9hdCBhLCBiLCBjOwogICBpbnQgZG1vZGU7CiAgIEJJVE1BUCAqZHBhdDsKICAg
aW50IHhhbmNob3IsIHlhbmNob3I7CiAgIGludCBhbHBoYTsKICAgaW50IGIxNSwgYjE2LCBiMjQs
IGIzMjsKICAgQ09MT1JfTUFQICpjbWFwOwogICBTQ0FOTElORV9GSUxMRVIgZHJhd2VyOwogICBT
Q0FOTElORV9GSUxMRVIgYWx0X2RyYXdlcjsKICAgUE9MWUdPTl9FREdFICpsZWZ0X2VkZ2U7CiAg
IFBPTFlHT05fRURHRSAqcmlnaHRfZWRnZTsKICAgUE9MWUdPTl9TRUdNRU5UIGluZm87Cn0gUE9M
WUdPTl9JTkZPOwoKCgpleHRlcm4gQklUTUFQICogX3pidWZmZXI7CgoKCmV4dGVybiBTQ0FOTElO
RV9GSUxMRVIgX29wdGltX2FsdGVybmF0aXZlX2RyYXdlcjsKUE9MWUdPTl9FREdFICogX2FkZF9l
ZGdlIChQT0xZR09OX0VER0UgKmxpc3QsIFBPTFlHT05fRURHRSAqZWRnZSwgaW50IHNvcnRfYnlf
eCk7ClBPTFlHT05fRURHRSAqIF9yZW1vdmVfZWRnZSAoUE9MWUdPTl9FREdFICpsaXN0LCBQT0xZ
R09OX0VER0UgKmVkZ2UpOwppbnQgX2ZpbGxfM2RfZWRnZV9zdHJ1Y3R1cmUgKFBPTFlHT05fRURH
RSAqZWRnZSwgY29uc3QgVjNEICp2MSwgY29uc3QgVjNEICp2MiwgaW50IGZsYWdzLCBCSVRNQVAg
KmJtcCk7CmludCBfZmlsbF8zZF9lZGdlX3N0cnVjdHVyZV9mIChQT0xZR09OX0VER0UgKmVkZ2Us
IGNvbnN0IFYzRF9mICp2MSwgY29uc3QgVjNEX2YgKnYyLCBpbnQgZmxhZ3MsIEJJVE1BUCAqYm1w
KTsKU0NBTkxJTkVfRklMTEVSIF9nZXRfc2NhbmxpbmVfZmlsbGVyIChpbnQgdHlwZSwgaW50ICpm
bGFncywgUE9MWUdPTl9TRUdNRU5UICppbmZvLCBCSVRNQVAgKnRleHR1cmUsIEJJVE1BUCAqYm1w
KTsKdm9pZCBfY2xpcF9wb2x5Z29uX3NlZ21lbnQgKFBPTFlHT05fU0VHTUVOVCAqaW5mbywgZml4
ZWQgZ2FwLCBpbnQgZmxhZ3MpOwp2b2lkIF9jbGlwX3BvbHlnb25fc2VnbWVudF9mIChQT0xZR09O
X1NFR01FTlQgKmluZm8sIGludCBnYXAsIGludCBmbGFncyk7CgoKCnZvaWQgX3BvbHlfc2Nhbmxp
bmVfZHVtbXkgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5m
byk7CgoKCnZvaWQgX3BvbHlfc2NhbmxpbmVfZ2NvbDggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50
IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfZ3JnYjggKHVu
c2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3Bv
bHlfc2NhbmxpbmVfYXRleDggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VH
TUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfcHRleDggKHVuc2lnbmVkIGxvbmcgYWRk
ciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfYXRl
eF9tYXNrOCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZv
KTsKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4X21hc2s4ICh1bnNpZ25lZCBsb25nIGFkZHIsIGlu
dCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX2F0ZXhfbGl0
OCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9p
ZCBfcG9seV9zY2FubGluZV9wdGV4X2xpdDggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBP
TFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfYXRleF9tYXNrX2xpdDgg
KHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQg
X3BvbHlfc2NhbmxpbmVfcHRleF9tYXNrX2xpdDggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcs
IFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfYXRleF90cmFuczgg
KHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQg
X3BvbHlfc2NhbmxpbmVfcHRleF90cmFuczggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBP
TFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfYXRleF9tYXNrX3RyYW5z
OCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9p
ZCBfcG9seV9zY2FubGluZV9wdGV4X21hc2tfdHJhbnM4ICh1bnNpZ25lZCBsb25nIGFkZHIsIGlu
dCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwoKCnZvaWQgX3BvbHlfc2NhbmxpbmVfZ3JnYjh4
ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwoKCnZv
aWQgX3BvbHlfemJ1Zl9mbGF0OCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9T
RUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV96YnVmX2djb2w4ICh1bnNpZ25lZCBsb25nIGFkZHIs
IGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3pidWZfZ3JnYjggKHVu
c2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3Bv
bHlfemJ1Zl9hdGV4OCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5U
ICppbmZvKTsKdm9pZCBfcG9seV96YnVmX3B0ZXg4ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3
LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3pidWZfYXRleF9tYXNrOCAodW5z
aWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9s
eV96YnVmX3B0ZXhfbWFzazggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VH
TUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9hdGV4X2xpdDggKHVuc2lnbmVkIGxvbmcgYWRk
ciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9wdGV4X2xp
dDggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZv
aWQgX3BvbHlfemJ1Zl9hdGV4X21hc2tfbGl0OCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywg
UE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV96YnVmX3B0ZXhfbWFza19saXQ4ICh1
bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9w
b2x5X3pidWZfYXRleF90cmFuczggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05f
U0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9wdGV4X3RyYW5zOCAodW5zaWduZWQgbG9u
ZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV96YnVmX2F0
ZXhfbWFza190cmFuczggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVO
VCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9wdGV4X21hc2tfdHJhbnM4ICh1bnNpZ25lZCBsb25n
IGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwoKCgoKCnZvaWQgX3BvbHlfc2Nh
bmxpbmVfZ3JnYjE1ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQg
KmluZm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX2F0ZXhfbWFzazE1ICh1bnNpZ25lZCBsb25nIGFk
ZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX3B0
ZXhfbWFzazE1ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmlu
Zm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX2F0ZXhfbGl0MTUgKHVuc2lnbmVkIGxvbmcgYWRkciwg
aW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfcHRleF9s
aXQxNSAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsK
dm9pZCBfcG9seV9zY2FubGluZV9hdGV4X21hc2tfbGl0MTUgKHVuc2lnbmVkIGxvbmcgYWRkciwg
aW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfcHRleF9t
YXNrX2xpdDE1ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmlu
Zm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX2F0ZXhfdHJhbnMxNSAodW5zaWduZWQgbG9uZyBhZGRy
LCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4
X3RyYW5zMTUgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5m
byk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfYXRleF9tYXNrX3RyYW5zMTUgKHVuc2lnbmVkIGxvbmcg
YWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVf
cHRleF9tYXNrX3RyYW5zMTUgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VH
TUVOVCAqaW5mbyk7CgoKdm9pZCBfcG9seV9zY2FubGluZV9ncmdiMTV4ICh1bnNpZ25lZCBsb25n
IGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3NjYW5saW5l
X2F0ZXhfbGl0MTV4ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQg
KmluZm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX3B0ZXhfbGl0MTV4ICh1bnNpZ25lZCBsb25nIGFk
ZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX2F0
ZXhfbWFza19saXQxNXggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVO
VCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfcHRleF9tYXNrX2xpdDE1eCAodW5zaWduZWQg
bG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKCnZvaWQgX3BvbHlfc2Nh
bmxpbmVfcHRleF9saXQxNWQgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VH
TUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfcHRleF9tYXNrX2xpdDE1ZCAodW5zaWdu
ZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKCgp2b2lkIF9wb2x5
X3pidWZfZ3JnYjE1ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQg
KmluZm8pOwp2b2lkIF9wb2x5X3pidWZfYXRleF9tYXNrMTUgKHVuc2lnbmVkIGxvbmcgYWRkciwg
aW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9wdGV4X21hc2sx
NSAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9p
ZCBfcG9seV96YnVmX2F0ZXhfbGl0MTUgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlH
T05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9wdGV4X2xpdDE1ICh1bnNpZ25lZCBs
b25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3pidWZf
YXRleF9tYXNrX2xpdDE1ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01F
TlQgKmluZm8pOwp2b2lkIF9wb2x5X3pidWZfcHRleF9tYXNrX2xpdDE1ICh1bnNpZ25lZCBsb25n
IGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3pidWZfYXRl
eF90cmFuczE1ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmlu
Zm8pOwp2b2lkIF9wb2x5X3pidWZfcHRleF90cmFuczE1ICh1bnNpZ25lZCBsb25nIGFkZHIsIGlu
dCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3pidWZfYXRleF9tYXNrX3Ry
YW5zMTUgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7
CnZvaWQgX3BvbHlfemJ1Zl9wdGV4X21hc2tfdHJhbnMxNSAodW5zaWduZWQgbG9uZyBhZGRyLCBp
bnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKCnZvaWQgX3BvbHlfc2NhbmxpbmVfZ3JnYjE2
ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lk
IF9wb2x5X3NjYW5saW5lX2F0ZXgxNiAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdP
Tl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4MTYgKHVuc2lnbmVkIGxv
bmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2Nhbmxp
bmVfYXRleF9tYXNrMTYgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVO
VCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfcHRleF9tYXNrMTYgKHVuc2lnbmVkIGxvbmcg
YWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVf
YXRleF9saXQxNiAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICpp
bmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4X2xpdDE2ICh1bnNpZ25lZCBsb25nIGFkZHIs
IGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX2F0ZXhf
bWFza19saXQxNiAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICpp
bmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4X21hc2tfbGl0MTYgKHVuc2lnbmVkIGxvbmcg
YWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVf
YXRleF90cmFuczE2ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQg
KmluZm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX3B0ZXhfdHJhbnMxNiAodW5zaWduZWQgbG9uZyBh
ZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9h
dGV4X21hc2tfdHJhbnMxNiAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdN
RU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4X21hc2tfdHJhbnMxNiAodW5zaWdu
ZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKCgp2b2lkIF9wb2x5
X3NjYW5saW5lX2dyZ2IxNnggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VH
TUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfYXRleF9saXQxNnggKHVuc2lnbmVkIGxv
bmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2Nhbmxp
bmVfcHRleF9saXQxNnggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVO
VCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfYXRleF9tYXNrX2xpdDE2eCAodW5zaWduZWQg
bG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2Fu
bGluZV9wdGV4X21hc2tfbGl0MTZ4ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09O
X1NFR01FTlQgKmluZm8pOwoKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4X2xpdDE2ZCAodW5zaWdu
ZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9z
Y2FubGluZV9wdGV4X21hc2tfbGl0MTZkICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZ
R09OX1NFR01FTlQgKmluZm8pOwoKCnZvaWQgX3BvbHlfemJ1Zl9mbGF0MTYgKHVuc2lnbmVkIGxv
bmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9n
cmdiMTYgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7
CnZvaWQgX3BvbHlfemJ1Zl9hdGV4MTYgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlH
T05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9wdGV4MTYgKHVuc2lnbmVkIGxvbmcg
YWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9hdGV4
X21hc2sxNiAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZv
KTsKdm9pZCBfcG9seV96YnVmX3B0ZXhfbWFzazE2ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3
LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3pidWZfYXRleF9saXQxNiAodW5z
aWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9s
eV96YnVmX3B0ZXhfbGl0MTYgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VH
TUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9hdGV4X21hc2tfbGl0MTYgKHVuc2lnbmVkIGxv
bmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9w
dGV4X21hc2tfbGl0MTYgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVO
VCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9hdGV4X3RyYW5zMTYgKHVuc2lnbmVkIGxvbmcgYWRk
ciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9wdGV4X3Ry
YW5zMTYgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7
CnZvaWQgX3BvbHlfemJ1Zl9hdGV4X21hc2tfdHJhbnMxNiAodW5zaWduZWQgbG9uZyBhZGRyLCBp
bnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV96YnVmX3B0ZXhfbWFza190
cmFuczE2ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8p
OwoKCgoKCnZvaWQgX3BvbHlfc2NhbmxpbmVfZ3JnYjI0ICh1bnNpZ25lZCBsb25nIGFkZHIsIGlu
dCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX2F0ZXgyNCAo
dW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBf
cG9seV9zY2FubGluZV9wdGV4MjQgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05f
U0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfYXRleF9tYXNrMjQgKHVuc2lnbmVk
IGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2Nh
bmxpbmVfcHRleF9tYXNrMjQgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VH
TUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfYXRleF9saXQyNCAodW5zaWduZWQgbG9u
ZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGlu
ZV9wdGV4X2xpdDI0ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQg
KmluZm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX2F0ZXhfbWFza19saXQyNCAodW5zaWduZWQgbG9u
ZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGlu
ZV9wdGV4X21hc2tfbGl0MjQgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VH
TUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfYXRleF90cmFuczI0ICh1bnNpZ25lZCBs
b25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3NjYW5s
aW5lX3B0ZXhfdHJhbnMyNCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdN
RU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9hdGV4X21hc2tfdHJhbnMyNCAodW5zaWdu
ZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9z
Y2FubGluZV9wdGV4X21hc2tfdHJhbnMyNCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9M
WUdPTl9TRUdNRU5UICppbmZvKTsKCgp2b2lkIF9wb2x5X3NjYW5saW5lX2dyZ2IyNHggKHVuc2ln
bmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlf
c2NhbmxpbmVfYXRleF9saXQyNHggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05f
U0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfcHRleF9saXQyNHggKHVuc2lnbmVk
IGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2Nh
bmxpbmVfYXRleF9tYXNrX2xpdDI0eCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdP
Tl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4X21hc2tfbGl0MjR4ICh1
bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwoKdm9pZCBf
cG9seV9zY2FubGluZV9wdGV4X2xpdDI0ZCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9M
WUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4X21hc2tfbGl0MjRk
ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwoKCnZv
aWQgX3BvbHlfemJ1Zl9mbGF0MjQgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05f
U0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9ncmdiMjQgKHVuc2lnbmVkIGxvbmcgYWRk
ciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9hdGV4MjQg
KHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQg
X3BvbHlfemJ1Zl9wdGV4MjQgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VH
TUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9hdGV4X21hc2syNCAodW5zaWduZWQgbG9uZyBh
ZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV96YnVmX3B0ZXhf
bWFzazI0ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8p
Owp2b2lkIF9wb2x5X3pidWZfYXRleF9saXQyNCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywg
UE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV96YnVmX3B0ZXhfbGl0MjQgKHVuc2ln
bmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlf
emJ1Zl9hdGV4X21hc2tfbGl0MjQgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05f
U0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9wdGV4X21hc2tfbGl0MjQgKHVuc2lnbmVk
IGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1
Zl9hdGV4X3RyYW5zMjQgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVO
VCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9wdGV4X3RyYW5zMjQgKHVuc2lnbmVkIGxvbmcgYWRk
ciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9hdGV4X21h
c2tfdHJhbnMyNCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICpp
bmZvKTsKdm9pZCBfcG9seV96YnVmX3B0ZXhfbWFza190cmFuczI0ICh1bnNpZ25lZCBsb25nIGFk
ZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwoKCgoKCnZvaWQgX3BvbHlfc2Nhbmxp
bmVfZ3JnYjMyICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmlu
Zm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX2F0ZXgzMiAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQg
dywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4MzIgKHVu
c2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3Bv
bHlfc2NhbmxpbmVfYXRleF9tYXNrMzIgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlH
T05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfcHRleF9tYXNrMzIgKHVuc2ln
bmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlf
c2NhbmxpbmVfYXRleF9saXQzMiAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9T
RUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4X2xpdDMyICh1bnNpZ25lZCBs
b25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3NjYW5s
aW5lX2F0ZXhfbWFza19saXQzMiAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9T
RUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4X21hc2tfbGl0MzIgKHVuc2ln
bmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlf
c2NhbmxpbmVfYXRleF90cmFuczMyICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09O
X1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3NjYW5saW5lX3B0ZXhfdHJhbnMzMiAodW5zaWdu
ZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9z
Y2FubGluZV9hdGV4X21hc2tfdHJhbnMzMiAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9M
WUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4X21hc2tfdHJhbnMz
MiAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKCgp2
b2lkIF9wb2x5X3NjYW5saW5lX2dyZ2IzMnggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBP
TFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfYXRleF9saXQzMnggKHVu
c2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3Bv
bHlfc2NhbmxpbmVfcHRleF9saXQzMnggKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlH
T05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfc2NhbmxpbmVfYXRleF9tYXNrX2xpdDMyeCAo
dW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBf
cG9seV9zY2FubGluZV9wdGV4X21hc2tfbGl0MzJ4ICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3
LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwoKdm9pZCBfcG9seV9zY2FubGluZV9wdGV4X2xpdDMy
ZCAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9p
ZCBfcG9seV9zY2FubGluZV9wdGV4X21hc2tfbGl0MzJkICh1bnNpZ25lZCBsb25nIGFkZHIsIGlu
dCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwoKCnZvaWQgX3BvbHlfemJ1Zl9mbGF0MzIgKHVu
c2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3Bv
bHlfemJ1Zl9ncmdiMzIgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVO
VCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9hdGV4MzIgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50
IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9wdGV4MzIgKHVuc2ln
bmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlf
emJ1Zl9hdGV4X21hc2szMiAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdN
RU5UICppbmZvKTsKdm9pZCBfcG9seV96YnVmX3B0ZXhfbWFzazMyICh1bnNpZ25lZCBsb25nIGFk
ZHIsIGludCB3LCBQT0xZR09OX1NFR01FTlQgKmluZm8pOwp2b2lkIF9wb2x5X3pidWZfYXRleF9s
aXQzMiAodW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsK
dm9pZCBfcG9seV96YnVmX3B0ZXhfbGl0MzIgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBP
TFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9hdGV4X21hc2tfbGl0MzIgKHVu
c2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3Bv
bHlfemJ1Zl9wdGV4X21hc2tfbGl0MzIgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlH
T05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9hdGV4X3RyYW5zMzIgKHVuc2lnbmVk
IGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVOVCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1
Zl9wdGV4X3RyYW5zMzIgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IHcsIFBPTFlHT05fU0VHTUVO
VCAqaW5mbyk7CnZvaWQgX3BvbHlfemJ1Zl9hdGV4X21hc2tfdHJhbnMzMiAodW5zaWduZWQgbG9u
ZyBhZGRyLCBpbnQgdywgUE9MWUdPTl9TRUdNRU5UICppbmZvKTsKdm9pZCBfcG9seV96YnVmX3B0
ZXhfbWFza190cmFuczMyICh1bnNpZ25lZCBsb25nIGFkZHIsIGludCB3LCBQT0xZR09OX1NFR01F
TlQgKmluZm8pOwoKCgoKCmV4dGVybiBNSURJX0RSSVZFUiBfbWlkaV9ub25lOwpleHRlcm4gaW50
IF9kaWdpX3ZvbHVtZTsKZXh0ZXJuIGludCBfbWlkaV92b2x1bWU7CmV4dGVybiBpbnQgX3NvdW5k
X2ZsaXBfcGFuOwpleHRlcm4gaW50IF9zb3VuZF9ocTsKZXh0ZXJuIGludCBfc291bmRfc3RlcmVv
OwpleHRlcm4gaW50IF9zb3VuZF9iaXRzOwpleHRlcm4gaW50IF9zb3VuZF9mcmVxOwpleHRlcm4g
aW50IF9zb3VuZF9wb3J0OwpleHRlcm4gaW50IF9zb3VuZF9kbWE7CmV4dGVybiBpbnQgX3NvdW5k
X2lycTsKCmV4dGVybiBpbnQgX3NvdW5kX2luc3RhbGxlZDsKZXh0ZXJuIGludCBfc291bmRfaW5w
dXRfaW5zdGFsbGVkOwoKaW50IF9taWRpX2FsbG9jYXRlX3ZvaWNlIChpbnQgbWluLCBpbnQgbWF4
KTsKCmV4dGVybiB2b2xhdGlsZSBsb25nIF9taWRpX3RpY2s7CgppbnQgX2RpZ21pZF9maW5kX3Bh
dGNoZXMgKGNoYXIgKmRpciwgaW50IGRpcl9zaXplLCBjaGFyICpmaWxlLCBpbnQgZmlsZV9zaXpl
KTsKCgoKCnR5cGVkZWYgc3RydWN0CnsKICAgY29uc3QgU0FNUExFICpzYW1wbGU7CiAgIGludCBu
dW07CiAgIGludCBhdXRva2lsbDsKICAgbG9uZyB0aW1lOwogICBpbnQgcHJpb3JpdHk7Cn0gVk9J
Q0U7CgpleHRlcm4gVk9JQ0UgX3ZvaWNlW107CgoKdHlwZWRlZiBzdHJ1Y3QKewogICBpbnQgbnVt
OwogICBpbnQgcGxheW1vZGU7CiAgIGludCB2b2w7CiAgIGludCBkdm9sOwogICBpbnQgdGFyZ2V0
X3ZvbDsKICAgaW50IHBhbjsKICAgaW50IGRwYW47CiAgIGludCB0YXJnZXRfcGFuOwogICBpbnQg
ZnJlcTsKICAgaW50IGRmcmVxOwogICBpbnQgdGFyZ2V0X2ZyZXE7Cn0gUEhZU19WT0lDRTsKCmV4
dGVybiBQSFlTX1ZPSUNFIF9waHlzX3ZvaWNlW107CgoKCgoKaW50IF9taXhlcl9pbml0IChpbnQg
YnVmc2l6ZSwgaW50IGZyZXEsIGludCBzdGVyZW8sIGludCBpczE2Yml0LCBpbnQgKnZvaWNlcyk7
CnZvaWQgX21peGVyX2V4aXQgKHZvaWQpOwp2b2lkIF9taXhfc29tZV9zYW1wbGVzICh1bnNpZ25l
ZCBsb25nIGJ1ZiwgdW5zaWduZWQgc2hvcnQgc2VnLCBpbnQgaXNzaWduZWQpOwp2b2lkIF9taXhl
cl9pbml0X3ZvaWNlIChpbnQgdm9pY2UsIGNvbnN0IFNBTVBMRSAqc2FtcGxlKTsKdm9pZCBfbWl4
ZXJfcmVsZWFzZV92b2ljZSAoaW50IHZvaWNlKTsKdm9pZCBfbWl4ZXJfc3RhcnRfdm9pY2UgKGlu
dCB2b2ljZSk7CnZvaWQgX21peGVyX3N0b3Bfdm9pY2UgKGludCB2b2ljZSk7CnZvaWQgX21peGVy
X2xvb3Bfdm9pY2UgKGludCB2b2ljZSwgaW50IGxvb3Btb2RlKTsKaW50IF9taXhlcl9nZXRfcG9z
aXRpb24gKGludCB2b2ljZSk7CnZvaWQgX21peGVyX3NldF9wb3NpdGlvbiAoaW50IHZvaWNlLCBp
bnQgcG9zaXRpb24pOwppbnQgX21peGVyX2dldF92b2x1bWUgKGludCB2b2ljZSk7CnZvaWQgX21p
eGVyX3NldF92b2x1bWUgKGludCB2b2ljZSwgaW50IHZvbHVtZSk7CnZvaWQgX21peGVyX3JhbXBf
dm9sdW1lIChpbnQgdm9pY2UsIGludCB0aW1lLCBpbnQgZW5kdm9sKTsKdm9pZCBfbWl4ZXJfc3Rv
cF92b2x1bWVfcmFtcCAoaW50IHZvaWNlKTsKaW50IF9taXhlcl9nZXRfZnJlcXVlbmN5IChpbnQg
dm9pY2UpOwp2b2lkIF9taXhlcl9zZXRfZnJlcXVlbmN5IChpbnQgdm9pY2UsIGludCBmcmVxdWVu
Y3kpOwp2b2lkIF9taXhlcl9zd2VlcF9mcmVxdWVuY3kgKGludCB2b2ljZSwgaW50IHRpbWUsIGlu
dCBlbmRmcmVxKTsKdm9pZCBfbWl4ZXJfc3RvcF9mcmVxdWVuY3lfc3dlZXAgKGludCB2b2ljZSk7
CmludCBfbWl4ZXJfZ2V0X3BhbiAoaW50IHZvaWNlKTsKdm9pZCBfbWl4ZXJfc2V0X3BhbiAoaW50
IHZvaWNlLCBpbnQgcGFuKTsKdm9pZCBfbWl4ZXJfc3dlZXBfcGFuIChpbnQgdm9pY2UsIGludCB0
aW1lLCBpbnQgZW5kcGFuKTsKdm9pZCBfbWl4ZXJfc3RvcF9wYW5fc3dlZXAgKGludCB2b2ljZSk7
CnZvaWQgX21peGVyX3NldF9lY2hvIChpbnQgdm9pY2UsIGludCBzdHJlbmd0aCwgaW50IGRlbGF5
KTsKdm9pZCBfbWl4ZXJfc2V0X3RyZW1vbG8gKGludCB2b2ljZSwgaW50IHJhdGUsIGludCBkZXB0
aCk7CnZvaWQgX21peGVyX3NldF92aWJyYXRvIChpbnQgdm9pY2UsIGludCByYXRlLCBpbnQgZGVw
dGgpOwoKdm9pZCBfZHVtbXlfbm9vcDEgKGludCBwKTsKdm9pZCBfZHVtbXlfbm9vcDIgKGludCBw
MSwgaW50IHAyKTsKdm9pZCBfZHVtbXlfbm9vcDMgKGludCBwMSwgaW50IHAyLCBpbnQgcDMpOwpp
bnQgX2R1bW15X2xvYWRfcGF0Y2hlcyAoY29uc3QgY2hhciAqcGF0Y2hlcywgY29uc3QgY2hhciAq
ZHJ1bXMpOwp2b2lkIF9kdW1teV9hZGp1c3RfcGF0Y2hlcyAoY29uc3QgY2hhciAqcGF0Y2hlcywg
Y29uc3QgY2hhciAqZHJ1bXMpOwp2b2lkIF9kdW1teV9rZXlfb24gKGludCBpbnN0LCBpbnQgbm90
ZSwgaW50IGJlbmQsIGludCB2b2wsIGludCBwYW4pOwojIDEwNzEgIi4uL2luY2x1ZGUvYWxsZWdy
by9haW50ZXJuLmgiCnZvaWQgKiBsb2FkX2RhdGFfb2JqZWN0IChQQUNLRklMRSAqZiwgbG9uZyBz
aXplKTsKdm9pZCAqIGxvYWRfZmlsZV9vYmplY3QgKFBBQ0tGSUxFICpmLCBsb25nIHNpemUpOwp2
b2lkICogbG9hZF9mb250X29iamVjdCAoUEFDS0ZJTEUgKmYsIGxvbmcgc2l6ZSk7CnZvaWQgKiBs
b2FkX3NhbXBsZV9vYmplY3QgKFBBQ0tGSUxFICpmLCBsb25nIHNpemUpOwp2b2lkICogbG9hZF9t
aWRpX29iamVjdCAoUEFDS0ZJTEUgKmYsIGxvbmcgc2l6ZSk7CnZvaWQgKiBsb2FkX2JpdG1hcF9v
YmplY3QgKFBBQ0tGSUxFICpmLCBsb25nIHNpemUpOwp2b2lkICogbG9hZF9ybGVfc3ByaXRlX29i
amVjdCAoUEFDS0ZJTEUgKmYsIGxvbmcgc2l6ZSk7CnZvaWQgKiBsb2FkX2NvbXBpbGVkX3Nwcml0
ZV9vYmplY3QgKFBBQ0tGSUxFICpmLCBsb25nIHNpemUpOwp2b2lkICogbG9hZF94Y29tcGlsZWRf
c3ByaXRlX29iamVjdCAoUEFDS0ZJTEUgKmYsIGxvbmcgc2l6ZSk7Cgp2b2lkIF91bmxvYWRfZGF0
YWZpbGVfb2JqZWN0IChEQVRBRklMRSAqZGF0KTsKdm9pZCB1bmxvYWRfc2FtcGxlIChTQU1QTEUg
KnMpOwp2b2lkIHVubG9hZF9taWRpIChNSURJICptKTsKCgoKdHlwZWRlZiBzdHJ1Y3QgREFUQUZJ
TEVfVFlQRQp7CiAgIGludCB0eXBlOwogICB2b2lkICogKCpsb2FkKSAoUEFDS0ZJTEUgKmYsIGxv
bmcgc2l6ZSk7CiAgIHZvaWQgKCpkZXN0cm95KSAoKTsKfSBEQVRBRklMRV9UWVBFOwoKCgoKZXh0
ZXJuIERBVEFGSUxFX1RZUEUgZGF0YWZpbGVfdHlwZVtdOwoKZXh0ZXJuIGludCBfY29tcGlsZV9z
cHJpdGVzOwoKdm9pZCBfY29uc3RydWN0X2RhdGFmaWxlIChEQVRBRklMRSAqZGF0YSk7CgoKCnZv
aWQgX3JlZ2lzdGVyX2JpdG1hcF9maWxlX3R5cGVfaW5pdCAodm9pZCk7CgoKCnN0cnVjdCBfQUxf
TElOS0VSX01JREkKewogICBpbnQgKCppbml0KSAodm9pZCk7CiAgIHZvaWQgKCpleGl0KSAodm9p
ZCk7Cn07CgpleHRlcm4gc3RydWN0IF9BTF9MSU5LRVJfTUlESSAqIF9hbF9saW5rZXJfbWlkaTsK
CnN0cnVjdCBfQUxfTElOS0VSX01PVVNFCnsKICAgdm9pZCAoKnNldF9tb3VzZV9ldGMpICh2b2lk
KTsKICAgdm9pZCAoKnNob3dfbW91c2UpIChCSVRNQVAgKik7CiAgIEJJVE1BUCAqKm1vdXNlX3Nj
cmVlbl9wdHI7Cn07CgpleHRlcm4gc3RydWN0IF9BTF9MSU5LRVJfTU9VU0UgKiBfYWxfbGlua2Vy
X21vdXNlOwoKCgpfRFJJVkVSX0lORk8gKiBfY3JlYXRlX2RyaXZlcl9saXN0ICgpOwp2b2lkIF9k
ZXN0cm95X2RyaXZlcl9saXN0IChfRFJJVkVSX0lORk8gKmRydmxpc3QpOwp2b2lkIF9kcml2ZXJf
bGlzdF9hcHBlbmRfZHJpdmVyIChfRFJJVkVSX0lORk8gKipkcnZsaXN0LCBpbnQgaWQsIHZvaWQg
KmRyaXZlciwgaW50IGF1dG9kZXRlY3QpOwp2b2lkIF9kcml2ZXJfbGlzdF9wcmVwZW5kX2RyaXZl
ciAoX0RSSVZFUl9JTkZPICoqZHJ2bGlzdCwgaW50IGlkLCB2b2lkICpkcml2ZXIsIGludCBhdXRv
ZGV0ZWN0KTsKdm9pZCBfZHJpdmVyX2xpc3RfYXBwZW5kX2xpc3QgKF9EUklWRVJfSU5GTyAqKmRy
dmxpc3QsIF9EUklWRVJfSU5GTyAqc3JjbGlzdCk7CgoKdm9pZCAqIF9hbF9zYW5lX3JlYWxsb2Mg
KHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOwojIDYgImJhZC5jIiAyCgpjaGFyICp1c3RyemNhdChj
aGFyICpkZXN0LCBpbnQgc2l6ZSwgY29uc3QgY2hhciAqc3JjKQp7CiAgIGludCBwb3MgPSB1c3Ry
c2l6ZShkZXN0KTsKICAgaW50IGM7CgogICBzaXplIC09IHBvcyArIHVjd2lkdGgoMCk7CgogICB3
aGlsZSAoKGMgPSB1Z2V0eGMoJnNyYykpICE9IDApIHsKICAgICAgc2l6ZSAtPSB1Y3dpZHRoKGMp
OwogICAgICBpZiAoc2l6ZSA8IDApCiAgICAgICAgIGJyZWFrOwoKICAgICAgcG9zICs9IHVzZXRj
KGRlc3QrcG9zLCBjKTsKICAgfQoKICAgdXNldGMoZGVzdCtwb3MsIDApOwoKICAgcmV0dXJuIGRl
c3Q7Cn0K