public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c++/9401: g++ 3.1 and above produce internal compiler error when using built-in vector intrinsics
@ 2003-01-22 14:46 kfredrik
  0 siblings, 0 replies; only message in thread
From: kfredrik @ 2003-01-22 14:46 UTC (permalink / raw)
  To: gcc-gnats


>Number:         9401
>Category:       c++
>Synopsis:       g++ 3.1 and above produce internal compiler error when using built-in vector intrinsics
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Wed Jan 22 14:46:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Kimmo Fredriksson
>Release:        unknown-1.0
>Organization:
>Environment:
Linux version 2.4.18-10

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 2
model name      : Intel(R) Pentium(R) 4 CPU 2.00GHz
stepping        : 4
cpu MHz         : 1994.142
cache size      : 512 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic epmtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
bogomips        : 3971.48
>Description:
NOTE: the following error does not appear if -O0 is used
instead of -O3.

g++ -msse -DVECLEN=128 -O3 -static bped.C
In file included from bped.C:33:
ssec-gnu.H:161:18: warning: #warning Shift right for count != 127 not imlemented!
bped.C: In function `int bpedhw(unsigned char*, int, int, int, dpvec**)':
bped.C:813: error: unable to find a register to spill in class `GENERAL_REGS'
bped.C:813: error: this is the insn:
(insn:HI 1957 1946 1963 19 0x40499478 (set (reg/v:SI 0 eax [483])
        (subreg:SI (reg/v:V4SF 24 exmm3 [296]) 0)) 38 {*movsi_1} (nil)
    (expr_list:REG_DEAD (reg/v:V4SF 24 exmm3 [296])
        (nil)))
bped.C:813: internal compiler error: in spill_failure, at reload1.c:1920
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>How-To-Repeat:
g++ -msse -DVECLEN=128 -O3 -static bped.ii
>Fix:

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

IyAxICJicGVkLkMiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8Y29tbWFuZCBsaW5lPiIKIyAxICJi
cGVkLkMiCiMgMTQgImJwZWQuQyIKIyAxICIvc3RhZmYva2ZyZWRyaWsvbG9jYWwvZ2NjLXNuYXBz
aG90L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGlvLmgiIDEg
MyA0CiMgMzcgIi9zdGFmZi9rZnJlZHJpay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDEgMyA0CiMgMjkxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMyA0
CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMgNAojIDI5MiAiL3Vzci9pbmNsdWRl
L2ZlYXR1cmVzLmgiIDIgMyA0CiMgMzIwICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMyA0CiMg
MSAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMgNAojIDMyMSAiL3Vzci9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDIgMyA0CiMgMzggIi9zdGFmZi9rZnJlZHJpay9sb2NhbC9nY2Mtc25hcHNob3Qv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQK
CmV4dGVybiAiQyIgewoKCgojIDEgIi9zdGFmZi9rZnJlZHJpay9sb2NhbC9nY2Mtc25hcHNob3Qv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0
CiMgMjEzICIvc3RhZmYva2ZyZWRyaWsvbG9jYWwvZ2NjLXNuYXBzaG90L2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgc2l6ZV90OwojIDQ0ICIvc3RhZmYva2ZyZWRyaWsvbG9jYWwvZ2NjLXNuYXBzaG90L2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0Cgoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMyA0CiMgMjkgIi91c3IvaW5jbHVkZS9i
aXRzL3R5cGVzLmgiIDMgNAojIDEgIi9zdGFmZi9rZnJlZHJpay9sb2NhbC9nY2Mtc25hcHNob3Qv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0
CiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMyA0CgoKdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoK
X19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsK
X19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91c3Iv
aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQg
X19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVm
IHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoK
X19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19l
eHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5
cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90Owp0
eXBlZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CnR5cGVkZWYg
X191X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBlZGVmIF9fdV9p
bnQgX19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgX19xdWFkX3Qg
X19sb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3NpemVfdDsKdHlw
ZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0X3Q7CnR5
cGVkZWYgX191X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsy
XTsKICB9IF9fZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRlZiBjaGFyICpf
X2NhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50
IF9fdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0eXBlZGVmIGxv
bmcgaW50IF9fc3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5cGVkZWYg
aW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKCgoKdHlwZWRlZiBp
bnQgX19rZXlfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgoK
dHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtj
bnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBf
X2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVm
IF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90
OwoKCnR5cGVkZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBfX29m
ZjY0X3Q7CgoKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90OwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9w
dGhyZWFkdHlwZXMuaCIgMSAzIDQKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVz
LmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMyA0CiMgNjggIi91c3Iv
aW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMgNApzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGlu
dCBfX3NjaGVkX3ByaW9yaXR5OwogIH07CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0
eXBlcy5oIiAyIDMgNAoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19z
dGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7Cgp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9k
ZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVh
ZF9hdHRyX3MKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3NjaGVkcG9saWN5OwogIHN0
cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19pbmhlcml0c2NoZWQ7CiAg
aW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBfX3N0YWNrYWRkcl9zZXQ7
CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9IHB0aHJlYWRfYXR0
cl90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fY19s
b2NrOwogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOwp9IHB0aHJlYWRfY29uZF90OwoKCgp0
eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKCnR5
cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewog
IGludCBfX21fcmVzZXJ2ZWQ7CiAgaW50IF9fbV9jb3VudDsKICBfcHRocmVhZF9kZXNjciBfX21f
b3duZXI7CiAgaW50IF9fbV9raW5kOwogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9j
azsKfSBwdGhyZWFkX211dGV4X3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tdXRleGtp
bmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7
CgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9yd2xvY2tfdAp7CiAgc3RydWN0IF9wdGhyZWFk
X2Zhc3Rsb2NrIF9fcndfbG9jazsKICBpbnQgX19yd19yZWFkZXJzOwogIF9wdGhyZWFkX2Rlc2Ny
IF9fcndfd3JpdGVyOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfcmVhZF93YWl0aW5nOwogIF9wdGhy
ZWFkX2Rlc2NyIF9fcndfd3JpdGVfd2FpdGluZzsKICBpbnQgX19yd19raW5kOwogIGludCBfX3J3
X3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2tfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBf
X2xvY2traW5kOwogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2thdHRyX3Q7CgoKCgp0
eXBlZGVmIHZvbGF0aWxlIGludCBwdGhyZWFkX3NwaW5sb2NrX3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2JhX2xvY2s7CiAgaW50IF9fYmFfcmVxdWly
ZWQ7CiAgaW50IF9fYmFfcHJlc2VudDsKICBfcHRocmVhZF9kZXNjciBfX2JhX3dhaXRpbmc7Cn0g
cHRocmVhZF9iYXJyaWVyX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIGludCBfX3BzaGFyZWQ7Cn0g
cHRocmVhZF9iYXJyaWVyYXR0cl90OwoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRo
cmVhZF90OwojIDE0NCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzIDQKIyA0NiAiL3N0
YWZmL2tmcmVkcmlrL2xvY2FsL2djYy1zbmFwc2hvdC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjMvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAojIDU0ICIvc3RhZmYva2ZyZWRyaWsvbG9j
YWwvZ2NjLXNuYXBzaG90L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRl
L3N0ZGlvLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwojIDY0ICIvc3RhZmYv
a2ZyZWRyaWsvbG9jYWwvZ2NjLXNuYXBzaG90L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMy9pbmNsdWRlL3N0ZGlvLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7
CiMgNzQgIi9zdGFmZi9rZnJlZHJpay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDEgMyA0CiMgMzIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKIyAxICIvdXNy
L2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMyA0CiMgMTQgIi91c3IvaW5jbHVkZS9fR19jb25maWcu
aCIgMyA0CiMgMSAiL3N0YWZmL2tmcmVkcmlrL2xvY2FsL2djYy1zbmFwc2hvdC9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzNTQgIi9z
dGFmZi9rZnJlZHJpay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGludCB3aW50
X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzIDQKIyAyNCAiL3Vzci9pbmNs
dWRlL19HX2NvbmZpZy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzIDQKIyA0
OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNAojIDEgIi9zdGFmZi9rZnJlZHJpay9sb2NhbC9n
Y2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMyA0CiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMgNAoKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy93Y2hhci5oIiAxIDMgNAojIDUxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg
MiAzIDQKIyA2NyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNAp0eXBlZGVmIHN0cnVjdAp7CiAg
aW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3QgX193Y2g7CiAgICBjaGFyIF9fd2No
Yls0XTsKICB9IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgMjUgIi91c3IvaW5jbHVkZS9fR19j
b25maWcuaCIgMiAzIDQKCnR5cGVkZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJz
dGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90
IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi91c3Iv
aW5jbHVkZS9fR19jb25maWcuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDEgMyA0
CiMgMjggIi91c3IvaW5jbHVkZS9nY29udi5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIu
aCIgMSAzIDQKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNAojIDEgIi9zdGFmZi9rZnJl
ZHJpay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4z
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMg
NAojIDI5ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzIDQKCgojIDEgIi9zdGFmZi9rZnJlZHJp
ay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzIgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMgNAoK
CgoKCmVudW0KewogIF9fR0NPTlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZf
Tk9EQiwKICBfX0dDT05WX05PTUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZf
RlVMTF9PVVRQVVQsCiAgX19HQ09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVU
RV9JTlBVVCwKCiAgX19HQ09OVl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5B
TF9FUlJPUgp9OwoKCgplbnVtCnsKICBfX0dDT05WX0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09O
Vl9JR05PUkVfRVJST1JTID0gMHgwMDAyCn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVj
dCBfX2djb252X3N0ZXBfZGF0YTsKc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0
IF9fZ2NvbnZfdHJhbnNfZGF0YTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVj
dCBfX2djb252X3N0ZXAgKiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwg
c2l6ZV90ICosIGludCwgaW50KTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChz
dHJ1Y3QgX19nY29udl9zdGVwICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChz
dHJ1Y3QgX19nY29udl9zdGVwICopOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0
KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosIHZvaWQgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNo
YXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlw
ZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2NvbnRleHRfZmN0KSAodm9pZCAqLCBfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGlu
dCAoKl9fZ2NvbnZfdHJhbnNfcXVlcnlfZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hh
ciAqKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7
CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3Qg
Y2hhciAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsK
CnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5z
X2ZjdDsKICBfX2djb252X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAg
X19nY29udl90cmFuc19lbmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAg
c3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9z
dGVwCnsKICBzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBf
X2NvbnN0IGNoYXIgKl9fbW9kbmFtZTsKCiAgaW50IF9fY291bnRlcjsKCiAgY2hhciAqX19mcm9t
X25hbWU7CiAgY2hhciAqX190b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252
X2luaXRfZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoKICBp
bnQgX19taW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBfX21p
bl9uZWVkZWRfdG87CiAgaW50IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVsOwoK
ICB2b2lkICpfX2RhdGE7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5zaWdu
ZWQgY2hhciAqX19vdXRidWY7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAgaW50
IF9fZmxhZ3M7CgoKCiAgaW50IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgogIGludCBfX2ludGVy
bmFsX3VzZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7
CgoKCiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRlZiBz
dHJ1Y3QgX19nY29udl9pbmZvCnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZf
c3RlcCAqX19zdGVwczsKICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBf
X2RhdGEgW107Cn0gKl9fZ2NvbnZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAy
IDMgNAp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0
CiAgewogICAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3Rl
cF9kYXRhIF9fZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50
IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYg
aW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19I
SV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKF9fU0lfXykpKTsKIyAzMyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMyA0CiMg
NTMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKIyAxICIvc3RhZmYva2ZyZWRyaWsvbG9jYWwv
Z2NjLXNuYXBzaG90L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0
ZGFyZy5oIiAxIDMgNAojIDQzICIvc3RhZmYva2ZyZWRyaWsvbG9jYWwvZ2NjLXNuYXBzaG90L2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGFyZy5oIiAzIDQKdHlw
ZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyA1NCAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDIgMyA0CiMgMTYwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0CnN0cnVjdCBf
SU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMgMTcwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIg
MyA0CnR5cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBz
dHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBp
bnQgX3BvczsKIyAxOTMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKfTsKCgplbnVtIF9fY29k
ZWN2dF9yZXN1bHQKewogIF9fY29kZWN2dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2Nv
ZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0X25vY29udgp9OwojIDI2MSAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMgNApzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9J
T19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsK
ICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9J
T193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoK
ICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpf
SU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9J
T19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90
IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBj
aGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3Qg
Kl9sb2NrOwojIDMwNSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAogIF9fb2ZmNjRfdCBfb2Zm
c2V0OwoKCgoKCiAgdm9pZCAqX19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoK
ICBjaGFyIF91bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07
Cgp9OwoKCgoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9w
bHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9z
dGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDM0
NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRf
Zm4gKHZvaWQgKl9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoK
CnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBfX2NvbnN0
IGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19u
KTsKCgoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2Zm
NjRfdCAqX19wb3MsIGludCBfX3cpOwoKCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQg
Kl9fY29va2llKTsKCgoKCnR5cGVkZWYgX19pb19yZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0aW9u
X3Q7CnR5cGVkZWYgX19pb193cml0ZV9mbiBjb29raWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlwZWRl
ZiBfX2lvX3NlZWtfZm4gY29va2llX3NlZWtfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Nsb3Nl
X2ZuIGNvb2tpZV9jbG9zZV9mdW5jdGlvbl90OwoKCnR5cGVkZWYgc3RydWN0CnsKICBfX2lvX3Jl
YWRfZm4gKnJlYWQ7CiAgX19pb193cml0ZV9mbiAqd3JpdGU7CiAgX19pb19zZWVrX2ZuICpzZWVr
OwogIF9faW9fY2xvc2VfZm4gKmNsb3NlOwp9IF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Q7CnR5
cGVkZWYgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBjb29raWVfaW9fZnVuY3Rpb25zX3Q7Cgpz
dHJ1Y3QgX0lPX2Nvb2tpZV9maWxlOwoKCmV4dGVybiB2b2lkIF9JT19jb29raWVfaW5pdCAoc3Ry
dWN0IF9JT19jb29raWVfZmlsZSAqX19jZmlsZSwgaW50IF9fcmVhZF93cml0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2Nvb2tpZSwgX0lPX2Nvb2tpZV9pb19mdW5jdGlv
bnNfdCBfX2Zucyk7CgoKCgpleHRlcm4gIkMiIHsKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChf
SU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSB0aHJv
dyAoKTsKZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIHRocm93ICgpOwpl
eHRlcm4gd2ludF90IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiB3
aW50X3QgX193dWZsb3cgKF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd292
ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpIHRocm93ICgpOwojIDQyNiAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDMgNApleHRlcm4gaW50IF9JT19nZXRjIChfSU9fRklMRSAqX19mcCkgdGhyb3cg
KCk7CmV4dGVybiBpbnQgX0lPX3B1dGMgKGludCBfX2MsIF9JT19GSUxFICpfX2ZwKSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4g
aW50IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgX0lP
X3BlZWtjX2xvY2tlZCAoX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lk
IF9JT19mbG9ja2ZpbGUgKF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gdm9pZCBfSU9fZnVu
bG9ja2ZpbGUgKF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2Zp
bGUgKF9JT19GSUxFICopIHRocm93ICgpOwojIDQ1NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMg
NApleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNo
YXIgKiBfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwg
aW50ICpfX3Jlc3RyaWN0KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19G
SUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgX19nbnVjX3ZhX2xpc3QpIHRocm93ICgpOwpleHRlcm4gX19zc2l6ZV90IF9JT19w
YWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCkgdGhyb3cgKCk7CmV4dGVybiBzaXplX3Qg
X0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgdGhyb3cgKCk7CgpleHRlcm4g
X19vZmY2NF90IF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSB0
aHJvdyAoKTsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2
NF90LCBpbnQpIHRocm93ICgpOwoKZXh0ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9J
T19GSUxFICopIHRocm93ICgpOwojIDUxNCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAp9CiMg
NzUgIi9zdGFmZi9rZnJlZHJpay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgoKCnR5cGVkZWYgX19nbnVj
X3ZhX2xpc3QgX19ub3RfdmFfbGlzdF9fOwojIDg5ICIvc3RhZmYva2ZyZWRyaWsvbG9jYWwvZ2Nj
LXNuYXBzaG90L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGlv
LmgiIDMgNAp0eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7CgoKCgp0eXBlZGVmIF9HX2Zwb3M2NF90
IGZwb3M2NF90OwojIDEzOCAiL3N0YWZmL2tmcmVkcmlrL2xvY2FsL2djYy1zbmFwc2hvdC9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRpby5oIiAzIDQKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzIDQKIyAxMzkgIi9zdGFmZi9rZnJlZHJp
ay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2lu
Y2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgoKZXh0ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4gRklMRSAq
c3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJyOwojIDE1MyAiL3N0YWZmL2tmcmVkcmlrL2xvY2Fs
L2djYy1zbmFwc2hvdC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9z
dGRpby5oIiAzIDQKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkg
dGhyb3cgKCk7CgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBjaGFyICpfX29sZCwgX19jb25z
dCBjaGFyICpfX25ldykgdGhyb3cgKCk7CgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZSAodm9pZCkg
dGhyb3cgKCk7CiMgMTY5ICIvc3RhZmYva2ZyZWRyaWsvbG9jYWwvZ2NjLXNuYXBzaG90L2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4g
RklMRSAqdG1wZmlsZTY0ICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqdG1wbmFtIChj
aGFyICpfX3MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpfX3Mp
IHRocm93ICgpOwojIDE4OSAiL3N0YWZmL2tmcmVkcmlrL2xvY2FsL2djYy1zbmFwc2hvdC9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJu
IGNoYXIgKnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngp
CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBp
bnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZmbHVzaCAo
RklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAo
RklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmY2xvc2VhbGwgKHZvaWQp
IHRocm93ICgpOwoKCgoKCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbW9kZXMpIHRocm93ICgpOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKIyAyMzMgIi9zdGFmZi9rZnJlZHJpay9sb2NhbC9n
Y2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3Rk
aW8uaCIgMyA0CmV4dGVybiBGSUxFICpmb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX21vZGVzKSB0aHJvdyAoKTsKZXh0ZXJuIEZJTEUgKmZyZW9wZW42NCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBGSUxFICpmZG9wZW4gKGlu
dCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIHRocm93ICgpOwoKCgoKCmV4dGVybiBGSUxF
ICpmb3BlbmNvb2tpZSAodm9pZCAqX19yZXN0cmljdCBfX21hZ2ljX2Nvb2tpZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9faW9fZnVuY3Mp
IHRocm93ICgpOwoKCmV4dGVybiBGSUxFICpmbWVtb3BlbiAodm9pZCAqX19zLCBzaXplX3QgX19s
ZW4sIF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7CgoKCgpleHRlcm4gRklMRSAqb3Bl
bl9tZW1zdHJlYW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fYnVmbG9jLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX3NpemVsb2MpIHRocm93ICgpOwoKCgoK
CmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19y
ZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAg
ICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBz
ZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19i
dWYsCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKZXh0
ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJu
IGludCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4
dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
dGhyb3cgKCk7CgpleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0
aHJvdyAoKTsKCgpleHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2du
dWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCk7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhy
b3cgKCk7CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNf
dmFfbGlzdCBfX2FyZykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgc25wcmludGYgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCB2c25w
cmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9s
aXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3By
aW50Zl9fLCAzLCAwKSkpOwoKCgoKCmV4dGVybiBpbnQgdmFzcHJpbnRmIChjaGFyICoqX19yZXN0
cmljdCBfX3B0ciwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwKICAgICAgICAgICAgICAg
ICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IF9fYXNwcmludGYg
KGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwpleHRlcm4gaW50IGFzcHJpbnRmIChj
aGFyICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKZXh0ZXJuIGludCB2ZHByaW50ZiAoaW50
IF9fZmQsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwKICAgICAgICAgICAgICAgICAg
ICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgZHByaW50ZiAoaW50IF9f
ZmQsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCgoKZXh0ZXJu
IGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRl
cm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhy
b3cgKCk7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywK
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB2ZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fcywg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgIF9f
Z251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1h
dF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKZXh0ZXJuIGludCB2c2NhbmYgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKTsKCgpleHRl
cm4gaW50IHZzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlz
dCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2Fu
Zl9fLCAyLCAwKSkpOwoKCgoKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pIHRocm93
ICgpOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4g
aW50IGdldGNoYXIgKHZvaWQpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9j
a2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tl
ZCAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpf
X3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpf
X3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJl
YW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9fYykgdGhyb3cgKCk7CgoK
CgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9f
c3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSB0
aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
CgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoK
CmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpmZ2V0
c191bmxvY2tlZCAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpl
eHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKSB0aHJvdyAoKTsKIyA0MzcgIi9zdGFmZi9rZnJl
ZHJpay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4z
L2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBfX3NzaXplX3QgX19nZXRkZWxpbSAoY2hhciAq
Kl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBf
X3NzaXplX3QgZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9fc3NpemVfdCBnZXRsaW5lIChjaGFyICoqX19yZXN0cmlj
dCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJp
Y3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZwdXRzIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIHRocm93ICgpOwoKCgpl
eHRlcm4gaW50IGZwdXRzX3VubG9ja2VkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGludCBwdXRzIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCk7CgoK
CmV4dGVybiBpbnQgdW5nZXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoK
CmV4dGVybiBzaXplX3QgZnJlYWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3Np
emUsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0pIHRocm93ICgpOwoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29uc3Qgdm9pZCAqX19y
ZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBm
cmVhZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBzaXplX3QgZndyaXRlX3VubG9ja2VkIChfX2NvbnN0
IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJv
dyAoKTsKCgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29m
ZiwgaW50IF9fd2hlbmNlKSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGludCBmdGVsbCAoRklMRSAq
X19zdHJlYW0pIHRocm93ICgpOwoKZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CiMgNTAwICIvc3RhZmYva2ZyZWRyaWsvbG9jYWwvZ2NjLXNuYXBzaG90L2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4g
aW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGludCBfX3doZW5jZSkg
dGhyb3cgKCk7CgpleHRlcm4gX19vZmZfdCBmdGVsbG8gKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9z
X3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZzZXRwb3Mg
KEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3NfdCAqX19wb3MpIHRocm93ICgpOwojIDUzNCAi
L3N0YWZmL2tmcmVkcmlrL2xvY2FsL2djYy1zbmFwc2hvdC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8zLjMvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBmc2Vla282NCAoRklM
RSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hlbmNlKSB0aHJvdyAoKTsKZXh0
ZXJuIF9fb2ZmNjRfdCBmdGVsbG82NCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4g
aW50IGZnZXRwb3M2NCAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvczY0X3QgKl9fcmVz
dHJpY3QgX19wb3MpCiAgICAgdGhyb3cgKCk7CmV4dGVybiBpbnQgZnNldHBvczY0IChGSUxFICpf
X3N0cmVhbSwgX19jb25zdCBmcG9zNjRfdCAqX19wb3MpIHRocm93ICgpOwoKCgpleHRlcm4gdm9p
ZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKZXh0ZXJuIGludCBmZW9mIChG
SUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZlcnJvciAoRklMRSAqX19zdHJl
YW0pIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFt
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAoX19jb25zdCBjaGFyICpfX3MpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIF9fY29uc3QgY2hhciAqX19jb25z
dCBzeXNfZXJybGlzdFtdOwoKCmV4dGVybiBpbnQgX3N5c19uZXJyOwpleHRlcm4gX19jb25zdCBj
aGFyICpfX2NvbnN0IF9zeXNfZXJybGlzdFtdOwoKCgoKCmV4dGVybiBpbnQgZmlsZW5vIChGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAoRklM
RSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gRklMRSAqcG9wZW4gKF9fY29uc3Qg
Y2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIHRocm93ICgpOwoKCmV4dGVy
biBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIg
KmN0ZXJtaWQgKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKmN1c2VyaWQg
KGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpzdHJ1Y3Qgb2JzdGFjazsKCgpleHRlcm4gaW50IG9i
c3RhY2tfcHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ssCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg
Li4uKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBvYnN0YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNr
ICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fZ251Y192YV9saXN0IF9fYXJncykgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gdm9pZCBmbG9j
a2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2Zp
bGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAo
RklMRSAqX19zdHJlYW0pIHRocm93ICgpOwojIDY0MSAiL3N0YWZmL2tmcmVkcmlrL2xvY2FsL2dj
Yy1zbmFwc2hvdC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRp
by5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAxIDMgNAojIDMzICIvdXNy
L2luY2x1ZGUvYml0cy9zdGRpby5oIiAzIDQKaW5saW5lIGludAp2cHJpbnRmIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mbXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKQp7CiAg
cmV0dXJuIHZmcHJpbnRmIChzdGRvdXQsIF9fZm10LCBfX2FyZyk7Cn0KCgppbmxpbmUgaW50Cmdl
dGNoYXIgKHZvaWQpIHRocm93ICgpCnsKICByZXR1cm4gX0lPX2dldGMgKHN0ZGluKTsKfQoKCgoK
aW5saW5lIGludApnZXRjX3VubG9ja2VkIChGSUxFICpfX2ZwKSB0aHJvdyAoKQp7CiAgcmV0dXJu
ICgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cg
KF9fZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoK
aW5saW5lIGludApnZXRjaGFyX3VubG9ja2VkICh2b2lkKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgo
c3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAo
c3RkaW4pIDogKih1bnNpZ25lZCBjaGFyICopIChzdGRpbiktPl9JT19yZWFkX3B0cisrKTsKfQoK
CgoKaW5saW5lIGludApwdXRjaGFyIChpbnQgX19jKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9JT19w
dXRjIChfX2MsIHN0ZG91dCk7Cn0KCgoKCmlubGluZSBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBf
X2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lP
X3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9f
c3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3Ry
ZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoKCmlubGluZSBpbnQKcHV0Y191
bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpCnsKICByZXR1cm4gKCgo
X19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8g
X19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQg
Y2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKaW5saW5l
IGludApwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoKHN0
ZG91dCktPl9JT193cml0ZV9wdHIgPj0gKHN0ZG91dCktPl9JT193cml0ZV9lbmQpID8gX19vdmVy
ZmxvdyAoc3Rkb3V0LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgq
KHN0ZG91dCktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgppbmxpbmUgX19zc2l6
ZV90CmdldGxpbmUgKGNoYXIgKipfX2xpbmVwdHIsIHNpemVfdCAqX19uLCBGSUxFICpfX3N0cmVh
bSkgdGhyb3cgKCkKewogIHJldHVybiBfX2dldGRlbGltIChfX2xpbmVwdHIsIF9fbiwgJ1xuJywg
X19zdHJlYW0pOwp9CgoKCgoKaW5saW5lIGludApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVh
bSkgdGhyb3cgKCkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MTApICE9IDAp
Owp9CgoKaW5saW5lIGludApmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAo
KQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgyMCkgIT0gMCk7Cn0KIyA2NDIg
Ii9zdGFmZi9rZnJlZHJpay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgp9CiMgMTUgImJwZWQuQyIgMgoj
IDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzIDQKIyAzMyAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAzIDQKIyAxICIvc3RhZmYva2ZyZWRyaWsvbG9jYWwvZ2NjLXNuYXBzaG90L2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDM0ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgpleHRlcm4gIkMiIHsKCgoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy93YWl0ZmxhZ3MuaCIgMSAzIDQKIyA0MyAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMSAzIDQKIyA2
MyAiL3Vzci9pbmNsdWRlL2JpdHMvd2FpdHN0YXR1cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUv
ZW5kaWFuLmgiIDEgMyA0CiMgMzcgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMyA0CiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMyA0CiMgMzggIi91c3IvaW5jbHVkZS9lbmRpYW4u
aCIgMiAzIDQKIyA2NCAiL3Vzci9pbmNsdWRlL2JpdHMvd2FpdHN0YXR1cy5oIiAyIDMgNAoKdW5p
b24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1czsKICAgIHN0cnVjdAogICAgICB7CgogICAgICAg
IHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfY29y
ZWR1bXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3JldGNvZGU6ODsKICAgICAgICB1bnNp
Z25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90ZXJtaW5hdGVkOwogICAgc3RydWN0
CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wdmFsOjg7CiAgICAgICAgdW5z
aWduZWQgaW50IF9fd19zdG9wc2lnOjg7CiAgICAgICAgdW5zaWduZWQgaW50OjE2OwoKCgoKCgog
ICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MiAzIDQKIyA5NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QKICB7
CiAgICBpbnQgcXVvdDsKICAgIGludCByZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QK
ICB7CiAgICBsb25nIGludCBxdW90OwogICAgbG9uZyBpbnQgcmVtOwogIH0gbGRpdl90OwoKCgoK
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGxvbmcgaW50IHF1b3Q7
CiAgICBsb25nIGxvbmcgaW50IHJlbTsKICB9IGxsZGl2X3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDMgNApleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21iX2N1cl9tYXggKHZvaWQp
IHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgYXRvaSAoX19j
b25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
ZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25n
IGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc3RydG9mIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0cikgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc3RydG9sZCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgaW50
IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgp
OwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsKCgoKX19leHRlbnNp
b25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5z
aWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsKCgoKCgoKX19leHRlbnNp
b25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cgKCk7CiMgMjExICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEgMyA0
CiMgMjggIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBfX2xvY2Fs
ZV9zdHJ1Y3QKewoKICBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoKICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG9s
b3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2NhbGVfdDsKIyAyMTIg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKCgoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9s
X2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpleHRlcm4g
bG9uZyBsb25nIGludCBfX3N0cnRvbGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBpbnQgX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19s
b2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBs
b25nIGxvbmcgaW50IF9fc3RydG91bGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpOwoKZXh0ZXJu
IGRvdWJsZSBfX3N0cnRvZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2Fs
ZV90IF9fbG9jKQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2wgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgpleHRl
cm4gbG9uZyBkb3VibGUgX19zdHJ0b2xkX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfaW50ZXJuYWwgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICB0aHJvdyAoKTsK
ZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fc3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3Vw
KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9pbnRlcm5hbCAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgoKCmV4dGVybiB1bnNp
Z25lZCBsb25nIGludCBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgoKCgpfX2V4
dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7
CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3Vs
bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19iYXNlLCBpbnQgX19ncm91cCkKICAgICB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBfX2lu
bGluZSBkb3VibGUKc3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRvZF9pbnRl
cm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CnN0
cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRv
bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpleHRlcm4gX19pbmxp
bmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpIHRo
cm93ICgpCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBf
X2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGZsb2F0CnN0cnRvZiAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgp
CnsKICByZXR1cm4gX19zdHJ0b2ZfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4
dGVybiBfX2lubGluZSBsb25nIGRvdWJsZQpzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCkKewogIHJldHVy
biBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CgoKCl9fZXh0ZW5z
aW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9xIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBp
bnQgX19iYXNlKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRy
LCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1
bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKSB0
aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IF9fYmFzZSwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25n
IGludApzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVy
biBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19l
eHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3Vs
bCAoX19jb25zdCBjaGFyICogX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAogICAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRv
dWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9f
aW5saW5lIGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkKewogIHJl
dHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopIF9fbnVsbCk7Cn0KZXh0ZXJuIF9faW5saW5l
IGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkKewogIHJldHVybiAoaW50
KSBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopIF9fbnVsbCwgMTApOwp9CmV4dGVybiBfX2lubGlu
ZSBsb25nIGludAphdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkKewogIHJldHVy
biBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopIF9fbnVsbCwgMTApOwp9CgoKX19leHRlbnNpb25f
XyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBjaGFyICpfX25w
dHIpIHRocm93ICgpCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgX19udWxs
LCAxMCk7Cn0KIyAzODQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBjaGFyICps
NjRhIChsb25nIGludCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGludCBhNjRsIChfX2Nv
bnN0IGNoYXIgKl9fcykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKIyAx
ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMyA0CiMgMjggIi91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMyA0CmV4dGVybiAiQyIgewoKCgoKCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0
eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYg
X191X2xvbmcgdV9sb25nOwp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVh
ZF90IHVfcXVhZF90Owp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsKCgoKCnR5cGVkZWYgX19sb2Zm
X3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3QgaW5vX3Q7CgoKCgoKCnR5cGVkZWYgX19pbm82
NF90IGlubzY0X3Q7CgoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0eXBlZGVmIF9fZ2lk
X3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlu
a190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29m
Zl90IG9mZl90OwoKCgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBf
X3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6
ZV90IHNzaXplX3Q7CgoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2Nh
ZGRyX3QgY2FkZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMyA0CiMg
NTkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190Owoj
IDcwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKdHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7CiMg
ODIgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRf
dDsKIyA5NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CnR5cGVkZWYgX190aW1lcl90IHRpbWVy
X3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCnR5cGVkZWYgX191
c2Vjb25kc190IHVzZWNvbmRzX3Q7CgoKCnR5cGVkZWYgX19zdXNlY29uZHNfdCBzdXNlY29uZHNf
dDsKCgoKCgojIDEgIi9zdGFmZi9rZnJlZHJpay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTQ3ICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBp
bnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgdWludDsKIyAxOTAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVk
ZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRl
ZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRl
ZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRl
ZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCgp0eXBl
ZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlf
XykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50IHJlZ2lz
dGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKIyAyMTUgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIg
MSAzIDQKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvc2VsZWN0LmgiIDEgMyA0CiMgMzIgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0Lmgi
IDIgMyA0CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzIDQKIyAyMyAiL3Vz
ci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMgNAp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsK
CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgX192YWxbKDEwMjQg
LyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSldOwogIH0gX19zaWdzZXRfdDsKIyAz
NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQKCgoKdHlwZWRlZiBfX3NpZ3NldF90
IHNpZ3NldF90OwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzIDQKIyAxMDYgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMgNApzdHJ1Y3QgdGltZXNwZWMKICB7CiAgICBfX3RpbWVfdCB0
dl9zZWM7CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CiMgNDUgIi91c3IvaW5jbHVkZS9zeXMv
c2VsZWN0LmgiIDIgMyA0CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAzIDQKIyA2
NyAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzIDQKc3RydWN0IHRpbWV2YWwKICB7CiAgICBf
X3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7CiAgfTsKIyA0NyAiL3Vz
ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQKIyA1NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxl
Y3QuaCIgMyA0CnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwoKCgoKCgoKdHlwZWRlZiBzdHJ1
Y3QKICB7CgoKCiAgICBfX2ZkX21hc2sgZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChfX2Zk
X21hc2spKV07CgoKCgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFz
azsKIyA5NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CmV4dGVybiAiQyIgewoKCgoK
CgpleHRlcm4gaW50IHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVh
ZGZkcywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAog
ICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAg
ICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KSB0aHJvdyAo
KTsKCgoKCgpleHRlcm4gaW50IHBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmlj
dCBfX3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3Jp
dGVmZHMsCiAgICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRz
LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdCBf
X3RpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgX19zaWdzZXRfdCAqX19yZXN0cmlj
dCBfX3NpZ21hc2spIHRocm93ICgpOwoKCn0KIyAyMTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMyA0CiMgMjE5
ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCgp0eXBlZGVmIF9fYmxrc2l6ZV90
IGJsa3NpemVfdDsKCgoKCgoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwoKCgp0eXBlZGVm
IF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OwoKCgp0eXBlZGVmIF9fZnNmaWxjbnRfdCBmc2ZpbGNu
dF90OwojIDI1NyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBfX2Jsa2Nu
dDY0X3QgYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Jsa2NudDY0X3Q7CnR5
cGVkZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2NF90OwoKCn0KIyAzOTEgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMiAzIDQKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IHJhbmRvbSAodm9pZCkgdGhy
b3cgKCk7CgoKZXh0ZXJuIHZvaWQgc3JhbmRvbSAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cg
KCk7CgoKCgoKZXh0ZXJuIGNoYXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hh
ciAqX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4p
IHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqc2V0c3RhdGUgKGNoYXIgKl9fc3RhdGVidWYpIHRo
cm93ICgpOwoKCgoKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsK
ICAgIGludDMyX3QgKnJwdHI7CiAgICBpbnQzMl90ICpzdGF0ZTsKICAgIGludCByYW5kX3R5cGU7
CiAgICBpbnQgcmFuZF9kZWc7CiAgICBpbnQgcmFuZF9zZXA7CiAgICBpbnQzMl90ICplbmRfcHRy
OwogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJp
Y3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1
bHQpIHRocm93ICgpOwoKZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3NlZWQs
IHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIHRocm93ICgpOwoKZXh0ZXJuIGludCBpbml0c3Rh
dGVfciAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAog
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsK
CmV4dGVybiBpbnQgc2V0c3RhdGVfciAoY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1Zikg
dGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSB0aHJvdyAoKTsKCmV4dGVybiB2
b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQgX19zZWVkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBy
YW5kX3IgKHVuc2lnbmVkIGludCAqX19zZWVkKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBkb3Vi
bGUgZHJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCAodW5zaWdu
ZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGludCBscmFu
ZDQ4ICh2b2lkKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNo
b3J0IGludCBfX3hzdWJpWzNdKSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAo
dm9pZCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBp
bnQgX194c3ViaVszXSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQg
X19zZWVkdmFsKSB0aHJvdyAoKTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCAqc2VlZDQ4ICh1
bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSB0aHJvdyAoKTsKZXh0ZXJuIHZvaWQgbGNv
bmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10pIHRocm93ICgpOwoKCgoKCnN0cnVj
dCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwogICAgdW5z
aWduZWQgc2hvcnQgaW50IF9fb2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19jOwog
ICAgdW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg
X19hOwogIH07CgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
cmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJp
Y3QgX19yZXN1bHQpIHRocm93ICgpOwpleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hv
cnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpf
X3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGxyYW5kNDhfciAoc3Ry
dWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAg
ICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBu
cmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAg
ICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgpl
eHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1
ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0
cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0
IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19z
ZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICB0aHJvdyAoKTsKCmV4
dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSB0aHJvdyAoKTsK
CmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSB0aHJvdyAo
KTsKIyA1MjcgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiB2b2lkICptYWxsb2Mg
KHNpemVfdCBfX3NpemUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7Cgpl
eHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKCmV4dGVybiB2b2lkICpy
ZWFsbG9jICh2b2lkICpfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkIGZyZWUgKHZvaWQgKl9fcHRyKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSB0aHJvdyAoKTsKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMyA0CiMgMjUgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIg
MyA0CiMgMSAiL3N0YWZmL2tmcmVkcmlrL2xvY2FsL2djYy1zbmFwc2hvdC9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAyNiAiL3Vzci9p
bmNsdWRlL2FsbG9jYS5oIiAyIDMgNAoKZXh0ZXJuICJDIiB7CgoKCgoKZXh0ZXJuIHZvaWQgKmFs
bG9jYSAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKCgoKfQojIDU0NyAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAyIDMgNAoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgcG9z
aXhfbWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3Qg
X19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4
dGVybiB2b2lkIGFib3J0ICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVy
bl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVz
LCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgIHRocm93ICgpOwoKCgoKCmV4dGVybiB2
b2lkIGV4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1
cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldGVudiAoX19j
b25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0
ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdXRl
bnYgKGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19j
b25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkK
ICAgICB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFt
ZSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIHRocm93ICgpOwoj
IDYyMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGNoYXIgKm1rdGVtcCAoY2hh
ciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIg
Kl9fdGVtcGxhdGUpIHRocm93ICgpOwojIDY0MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQK
ZXh0ZXJuIGludCBta3N0ZW1wNjQgKGNoYXIgKl9fdGVtcGxhdGUpIHRocm93ICgpOwojIDY1MCAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9f
dGVtcGxhdGUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAq
X19jb21tYW5kKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxl
X25hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKIyA2NzIgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9f
cmVzb2x2ZWQpIHRocm93ICgpOwoKCgoKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChf
X2NvbnN0IHZvaWQgKiwgX19jb25zdCB2b2lkICopOwoKCnR5cGVkZWYgX19jb21wYXJfZm5fdCBj
b21wYXJpc29uX2ZuX3Q7CgoKCgoKZXh0ZXJuIHZvaWQgKmJzZWFyY2ggKF9fY29uc3Qgdm9pZCAq
X19rZXksIF9fY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRl
cm4gdm9pZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6
ZSwKICAgICAgICAgICAgICAgICAgIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4g
aW50IGFicyAoaW50IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpl
eHRlcm4gbG9uZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGxsYWJz
IChsb25nIGxvbmcgaW50IF9feCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCgoKCmV4dGVybiBkaXZfdCBkaXYgKGludCBfX251bWVyLCBpbnQgX19kZW5vbSkK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsZGl2X3Qg
bGRpdiAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90
IGxsZGl2IChsb25nIGxvbmcgaW50IF9fbnVtZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvbmcgbG9uZyBpbnQgX19kZW5vbSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CiMgNzI4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRl
cm4gY2hhciAqZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0
aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19y
ZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBj
aGFyICpxZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAg
ICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWdu
KSB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGlu
dCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwpleHRlcm4gY2hhciAqcWdjdnQgKGxvbmcg
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y
ZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
biwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xl
bikgdGhyb3cgKCk7CmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19y
ZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJs
ZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAg
Y2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGlu
dCBxZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAg
ICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24s
CiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVu
KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNp
emVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3Ry
aWN0IF9fcHdjLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9fcywg
d2NoYXJfdCBfX3djaGFyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2No
YXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKZXh0ZXJuIHNpemVf
dCB3Y3N0b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCiAgICAgdGhy
b3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IHJwbWF0Y2ggKF9fY29uc3QgY2hhciAqX19yZXNwb25z
ZSkgdGhyb3cgKCk7CiMgODA4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gaW50
IGdldHN1Ym9wdCAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAogICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqX19jb25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFsdWVwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
dm9pZCBzZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJu
IGludCBwb3NpeF9vcGVucHQgKGludCBfX29mbGFnKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBp
bnQgZ3JhbnRwdCAoaW50IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChp
bnQgX19mZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIHRo
cm93ICgpOwoKCgoKCgpleHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVm
LCBzaXplX3QgX19idWZsZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIHRo
cm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwg
aW50IF9fbmVsZW0pIHRocm93ICgpOwoKCgoKCn0KIyAxNiAiYnBlZC5DIiAyCiMgMSAiL3Vzci9p
bmNsdWRlL2N0eXBlLmgiIDEgMyA0CiMgMjkgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKZXh0
ZXJuICJDIiB7CiMgNDcgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKZW51bQp7CiAgX0lTdXBw
ZXIgPSAoKDApIDwgOCA/ICgoMSA8PCAoMCkpIDw8IDgpIDogKCgxIDw8ICgwKSkgPj4gOCkpLAog
IF9JU2xvd2VyID0gKCgxKSA8IDggPyAoKDEgPDwgKDEpKSA8PCA4KSA6ICgoMSA8PCAoMSkpID4+
IDgpKSwKICBfSVNhbHBoYSA9ICgoMikgPCA4ID8gKCgxIDw8ICgyKSkgPDwgOCkgOiAoKDEgPDwg
KDIpKSA+PiA4KSksCiAgX0lTZGlnaXQgPSAoKDMpIDwgOCA/ICgoMSA8PCAoMykpIDw8IDgpIDog
KCgxIDw8ICgzKSkgPj4gOCkpLAogIF9JU3hkaWdpdCA9ICgoNCkgPCA4ID8gKCgxIDw8ICg0KSkg
PDwgOCkgOiAoKDEgPDwgKDQpKSA+PiA4KSksCiAgX0lTc3BhY2UgPSAoKDUpIDwgOCA/ICgoMSA8
PCAoNSkpIDw8IDgpIDogKCgxIDw8ICg1KSkgPj4gOCkpLAogIF9JU3ByaW50ID0gKCg2KSA8IDgg
PyAoKDEgPDwgKDYpKSA8PCA4KSA6ICgoMSA8PCAoNikpID4+IDgpKSwKICBfSVNncmFwaCA9ICgo
NykgPCA4ID8gKCgxIDw8ICg3KSkgPDwgOCkgOiAoKDEgPDwgKDcpKSA+PiA4KSksCiAgX0lTYmxh
bmsgPSAoKDgpIDwgOCA/ICgoMSA8PCAoOCkpIDw8IDgpIDogKCgxIDw8ICg4KSkgPj4gOCkpLAog
IF9JU2NudHJsID0gKCg5KSA8IDggPyAoKDEgPDwgKDkpKSA8PCA4KSA6ICgoMSA8PCAoOSkpID4+
IDgpKSwKICBfSVNwdW5jdCA9ICgoMTApIDwgOCA/ICgoMSA8PCAoMTApKSA8PCA4KSA6ICgoMSA8
PCAoMTApKSA+PiA4KSksCiAgX0lTYWxudW0gPSAoKDExKSA8IDggPyAoKDEgPDwgKDExKSkgPDwg
OCkgOiAoKDEgPDwgKDExKSkgPj4gOCkpCn07CiMgNzUgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAz
IDQKZXh0ZXJuIF9fY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7CmV4dGVybiBf
X2NvbnN0IF9faW50MzJfdCAqX19jdHlwZV90b2xvd2VyOwpleHRlcm4gX19jb25zdCBfX2ludDMy
X3QgKl9fY3R5cGVfdG91cHBlcjsKIyA5MSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMgNApleHRl
cm4gaW50IGlzYWxudW0gKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNhbHBoYSAoaW50KSB0
aHJvdyAoKTsKZXh0ZXJuIGludCBpc2NudHJsIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlz
ZGlnaXQgKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNsb3dlciAoaW50KSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBpc2dyYXBoIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzcHJpbnQgKGlu
dCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNwdW5jdCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGlu
dCBpc3NwYWNlIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzdXBwZXIgKGludCkgdGhyb3cg
KCk7CmV4dGVybiBpbnQgaXN4ZGlnaXQgKGludCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBpc2Js
YW5rIChpbnQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCB0b2xvd2VyIChpbnQgX19jKSB0aHJv
dyAoKTsKCgpleHRlcm4gaW50IHRvdXBwZXIgKGludCBfX2MpIHRocm93ICgpOwoKCgoKCgpleHRl
cm4gaW50IGlzYXNjaWkgKGludCBfX2MpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHRvYXNjaWkg
KGludCBfX2MpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IF90b3VwcGVyIChpbnQpIHRocm93ICgp
OwpleHRlcm4gaW50IF90b2xvd2VyIChpbnQpIHRocm93ICgpOwojIDE2NyAiL3Vzci9pbmNsdWRl
L2N0eXBlLmgiIDMgNApleHRlcm4gX19pbmxpbmUgaW50CnRvbG93ZXIgKGludCBfX2MpIHRocm93
ICgpCnsKICByZXR1cm4gX19jID49IC0xMjggJiYgX19jIDwgMjU2ID8gX19jdHlwZV90b2xvd2Vy
W19fY10gOiBfX2M7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKdG91cHBlciAoaW50IF9fYykgdGhy
b3cgKCkKewogIHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyBfX2N0eXBlX3RvdXBw
ZXJbX19jXSA6IF9fYzsKfQojIDIyMyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMgNApleHRlcm4g
aW50IF9faXNhbG51bV9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IF9f
aXNhbHBoYV9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IF9faXNjbnRy
bF9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IF9faXNkaWdpdF9sIChp
bnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IF9faXNsb3dlcl9sIChpbnQsIF9f
bG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IF9faXNncmFwaF9sIChpbnQsIF9fbG9jYWxl
X3QpIHRocm93ICgpOwpleHRlcm4gaW50IF9faXNwcmludF9sIChpbnQsIF9fbG9jYWxlX3QpIHRo
cm93ICgpOwpleHRlcm4gaW50IF9faXNwdW5jdF9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgp
OwpleHRlcm4gaW50IF9faXNzcGFjZV9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRl
cm4gaW50IF9faXN1cHBlcl9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50
IF9faXN4ZGlnaXRfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgX19p
c2JsYW5rX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX190b2xv
d2VyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IF9f
dG91cHBlcl9sIChpbnQgX19jLCBfX2xvY2FsZV90IF9fbCkgdGhyb3cgKCk7CiMgMjc2ICIvdXNy
L2luY2x1ZGUvY3R5cGUuaCIgMyA0Cn0KIyAxNyAiYnBlZC5DIiAyCiMgMSAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAxIDMgNAojIDI4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4g
IkMiIHsKIyAxNzUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvcG9zaXhfb3B0LmgiIDEgMyA0CiMgMTc2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIg
MyA0CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDEgMyA0CiMgMjMg
Ii91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy93b3Jkc2l6ZS5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVu
dHMuaCIgMiAzIDQKIyAxODAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKIyAxOTkgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CiMgMSAiL3N0YWZmL2tmcmVkcmlrL2xvY2FsL2djYy1z
bmFwc2hvdC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzIDQKIyAyMDAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKIyAyNDAgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMyA0CnR5cGVkZWYgX19pbnRwdHJfdCBpbnRwdHJfdDsKCgoKCgoK
dHlwZWRlZiBfX3NvY2tsZW5fdCBzb2NrbGVuX3Q7CiMgMjYwICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMgNApleHRlcm4gaW50IGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5
cGUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBldWlkYWNjZXNzIChfX2NvbnN0IGNoYXIgKl9f
bmFtZSwgaW50IF9fdHlwZSkgdGhyb3cgKCk7CiMgMjkwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDMgNApleHRlcm4gX19vZmZfdCBsc2VlayAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZzZXQsIGlu
dCBfX3doZW5jZSkgdGhyb3cgKCk7CiMgMzAyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApl
eHRlcm4gX19vZmY2NF90IGxzZWVrNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIGlu
dCBfX3doZW5jZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgY2xvc2UgKGludCBfX2ZkKSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIHNzaXplX3QgcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXpl
X3QgX19uYnl0ZXMpIHRocm93ICgpOwoKCmV4dGVybiBzc2l6ZV90IHdyaXRlIChpbnQgX19mZCwg
X19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBzc2l6
ZV90IHByZWFkIChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcywgX19vZmZf
dCBfX29mZnNldCkKICAgICB0aHJvdyAoKTsKZXh0ZXJuIHNzaXplX3QgcHdyaXRlIChpbnQgX19m
ZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAgICAgICAg
ICBfX29mZl90IF9fb2Zmc2V0KSB0aHJvdyAoKTsKIyAzNDAgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMyA0CmV4dGVybiBzc2l6ZV90IHByZWFkNjQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6
ZV90IF9fbmJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICBfX29mZjY0X3QgX19vZmZzZXQp
IHRocm93ICgpOwoKCmV4dGVybiBzc2l6ZV90IHB3cml0ZTY0IChpbnQgX19mZCwgX19jb25zdCB2
b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmNjRf
dCBfX29mZnNldCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IHBpcGUgKGludCBfX3BpcGVk
ZXNbMl0pIHRocm93ICgpOwojIDM2MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJu
IHVuc2lnbmVkIGludCBhbGFybSAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgdGhyb3cgKCk7CiMg
MzcxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gdW5zaWduZWQgaW50IHNsZWVw
ICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9fdXNlY29u
ZHNfdCB1YWxhcm0gKF9fdXNlY29uZHNfdCBfX3ZhbHVlLCBfX3VzZWNvbmRzX3QgX19pbnRlcnZh
bCkKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB1c2xlZXAgKF9fdXNlY29uZHNfdCBfX3Vz
ZWNvbmRzKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHBhdXNlICh2b2lkKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGludCBjaG93biAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25l
ciwgX19naWRfdCBfX2dyb3VwKQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZjaG93biAo
aW50IF9fZmQsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKSB0aHJvdyAoKTsKCgoK
CmV4dGVybiBpbnQgbGNob3duIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVy
LCBfX2dpZF90IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGNoZGlyIChf
X2NvbnN0IGNoYXIgKl9fcGF0aCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZmNoZGlyIChpbnQg
X19mZCkgdGhyb3cgKCk7CiMgNDIzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4g
Y2hhciAqZ2V0Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKCgoK
ZXh0ZXJuIGNoYXIgKmdldF9jdXJyZW50X2Rpcl9uYW1lICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIGNoYXIgKmdldHdkIChjaGFyICpfX2J1ZikgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50
IGR1cCAoaW50IF9fZmQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZHVwMiAoaW50IF9fZmQsIGlu
dCBfX2ZkMikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKipfX2Vudmlyb247CgpleHRlcm4gY2hh
ciAqKmVudmlyb247CgoKCgoKZXh0ZXJuIGludCBleGVjdmUgKF9fY29uc3QgY2hhciAqX19wYXRo
LCBjaGFyICpfX2NvbnN0IF9fYXJndltdLAogICAgICAgICAgICAgICAgICAgY2hhciAqX19jb25z
dCBfX2VudnBbXSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZleGVjdmUgKGludCBfX2ZkLCBj
aGFyICpfX2NvbnN0IF9fYXJndltdLCBjaGFyICpfX2NvbnN0IF9fZW52cFtdKQogICAgIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGludCBleGVjdiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKl9f
Y29uc3QgX19hcmd2W10pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGV4ZWNsZSAoX19jb25zdCBj
aGFyICpfX3BhdGgsIF9fY29uc3QgY2hhciAqX19hcmcsIC4uLikgdGhyb3cgKCk7CgoKCmV4dGVy
biBpbnQgZXhlY2wgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAu
Li4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGV4ZWN2cCAoX19jb25zdCBjaGFyICpfX2ZpbGUs
IGNoYXIgKl9fY29uc3QgX19hcmd2W10pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBleGVjbHAg
KF9fY29uc3QgY2hhciAqX19maWxlLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIHRocm93ICgp
OwoKCgoKZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZv
aWQgX2V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoK
CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMSAzIDQKIyAyNSAiL3Vzci9p
bmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMyA0CmVudW0KICB7CiAgICBfUENfTElOS19NQVgsCgog
ICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAgIF9QQ19OQU1FX01BWCwK
CiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoKICAgIF9QQ19DSE9XTl9SRVNU
UklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJU0FCTEUsCgogICAgX1BDX1NZ
TkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklPX0lPLAoKICAgIF9QQ19TT0NL
X01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTLAoKICAgIF9QQ19SRUNfSU5DUl9YRkVSX1NJ
WkUsCgogICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUlOX1hGRVJfU0la
RSwKCiAgICBfUENfUkVDX1hGRVJfQUxJR04sCgogICAgX1BDX0FMTE9DX1NJWkVfTUlOLAoKICAg
IF9QQ19TWU1MSU5LX01BWAoKICB9OwoKCmVudW0KICB7CiAgICBfU0NfQVJHX01BWCwKCiAgICBf
U0NfQ0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBTX01BWCwKCiAg
ICBfU0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1RaTkFNRV9NQVgs
CgogICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAgX1NDX1JFQUxU
SU1FX1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RJTUVS
UywKCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpFRF9JTywKCiAg
ICBfU0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lOQywKCiAgICBfU0NfTUFQUEVEX0ZJ
TEVTLAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoKICAgIF9TQ19N
RU1PUllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAoKICAgIF9TQ19TRU1B
UEhPUkVTLAoKICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1NDX0FJT19MSVNU
SU9fTUFYLAoKICAgIF9TQ19BSU9fTUFYLAoKICAgIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgsCgog
ICAgX1NDX0RFTEFZVElNRVJfTUFYLAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAgICBfU0NfTVFf
UFJJT19NQVgsCgogICAgX1NDX1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoKCiAgICBfU0Nf
UlRTSUdfTUFYLAoKICAgIF9TQ19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1fVkFMVUVfTUFY
LAoKICAgIF9TQ19TSUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgoKCiAgICBfU0Nf
QkNfQkFTRV9NQVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAgX1NDX0JDX1NDQUxFX01BWCwK
CiAgICBfU0NfQkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9XRUlHSFRTX01BWCwKCiAgICBf
U0NfRVFVSVZfQ0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1RfTUFYLAoKICAgIF9TQ19MSU5F
X01BWCwKCiAgICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hBUkNMQVNTX05BTUVfTUFYLAoK
CiAgICBfU0NfMl9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwKCiAgICBfU0NfMl9DX0RFViwK
CiAgICBfU0NfMl9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JVTiwKCiAgICBfU0NfMl9TV19E
RVYsCgogICAgX1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJLAoKICAgIF9TQ19QSUlfWFRJ
LAoKICAgIF9TQ19QSUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5URVJORVQsCgogICAgX1NDX1BJ
SV9PU0ksCgogICAgX1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwKCiAgICBfU0NfVUlPX01BWElP
ViwKCiAgICBfU0NfSU9WX01BWCA9IF9TQ19VSU9fTUFYSU9WLAoKICAgIF9TQ19QSUlfSU5URVJO
RVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCgogICAgX1NDX1BJSV9PU0lf
Q09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19QSUlfT1NJX00sCgogICAgX1ND
X1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJFQURTLAoKICAgIF9TQ19USFJFQURfU0FGRV9GVU5D
VElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAgX1NDX0dFVFBXX1JfU0laRV9N
QVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19UVFlfTkFNRV9NQVgsCgogICAg
X1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAgX1NDX1RIUkVBRF9LRVlTX01B
WCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhSRUFEX1RIUkVBRFNfTUFY
LAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NU
QUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RI
UkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QsCgogICAgX1ND
X1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNTT1JTX0NPTkYsCgogICAg
X1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMsCgogICAgX1NDX0FWUEhZ
U19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFTU19NQVgsCgoKICAgIF9T
Q19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwKCiAgICBfU0NfWE9Q
RU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hPUEVOX0VOSF9JMThOLAoK
ICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVSTSwKCiAgICBfU0NfMl9DX1ZF
UlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5fWFBHMiwKCiAgICBfU0NfWE9Q
RU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1NDX0NIQVJfQklULAoKICAgIF9T
Q19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1NDX0lOVF9NQVgsCgogICAgX1ND
X0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19XT1JEX0JJVCwKCiAgICBfU0Nf
TUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NTSVpFX01BWCwKCiAgICBfU0Nf
U0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1NDX1NIUlRfTUFYLAoKICAgIF9T
Q19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9TQ19VSU5UX01BWCwKCiAgICBf
U0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAgIF9TQ19OTF9BUkdNQVgsCgog
ICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01TR01BWCwKCiAgICBfU0NfTkxfTk1BWCwK
CiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFYLAoKCiAgICBfU0NfWEJTNV9J
TFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcsCgogICAgX1NDX1hCUzVfTFA2
NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoKICAgIF9TQ19YT1BFTl9MRUdB
Q1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRV9USFJF
QURTLAoKCiAgICBfU0NfQURWSVNPUllfSU5GTywKCiAgICBfU0NfQkFSUklFUlMsCgogICAgX1ND
X0JBU0UsCgogICAgX1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9TQ19DX0xBTkdfU1VQUE9SVF9S
LAoKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQVVRJTUUsCgogICAgX1NDX1RI
UkVBRF9DUFVUSU1FLAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAgX1NDX0RFVklDRV9TUEVDSUZJ
QywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDX1IsCgogICAgX1NDX0ZEX01HTVQsCgogICAgX1ND
X0ZJRk8sCgogICAgX1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRUUklCVVRFUywKCiAgICBfU0Nf
RklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwKCiAgICBfU0NfTU9OT1RPTklDX0NM
T0NLLAoKICAgIF9TQ19NVUxUSV9QUk9DRVNTLAoKICAgIF9TQ19TSU5HTEVfUFJPQ0VTUywKCiAg
ICBfU0NfTkVUV09SS0lORywKCiAgICBfU0NfUkVBREVSX1dSSVRFUl9MT0NLUywKCiAgICBfU0Nf
U1BJTl9MT0NLUywKCiAgICBfU0NfUkVHRVhQLAoKICAgIF9TQ19SRUdFWF9WRVJTSU9OLAoKICAg
IF9TQ19TSEVMTCwKCiAgICBfU0NfU0lHTkFMUywKCiAgICBfU0NfU1BBV04sCgogICAgX1NDX1NQ
T1JBRElDX1NFUlZFUiwKCiAgICBfU0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0Nf
U1lTVEVNX0RBVEFCQVNFLAoKICAgIF9TQ19TWVNURU1fREFUQUJBU0VfUiwKCiAgICBfU0NfVElN
RU9VVFMsCgogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19VU0VSX0dST1VQ
UywKCiAgICBfU0NfVVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfMl9QQlMsCgogICAgX1NDXzJfUEJT
X0FDQ09VTlRJTkcsCgogICAgX1NDXzJfUEJTX0xPQ0FURSwKCiAgICBfU0NfMl9QQlNfTUVTU0FH
RSwKCiAgICBfU0NfMl9QQlNfVFJBQ0ssCgogICAgX1NDX1NZTUxPT1BfTUFYLAoKICAgIF9TQ19T
VFJFQU1TLAoKICAgIF9TQ18yX1BCU19DSEVDS1BPSU5ULAoKCiAgICBfU0NfVjZfSUxQMzJfT0ZG
MzIsCgogICAgX1NDX1Y2X0lMUDMyX09GRkJJRywKCiAgICBfU0NfVjZfTFA2NF9PRkY2NCwKCiAg
ICBfU0NfVjZfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfSE9TVF9OQU1FX01BWCwKCiAgICBfU0Nf
VFJBQ0UsCgogICAgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiwKCiAgICBfU0NfVFJBQ0VfSU5IRVJJ
VCwKCiAgICBfU0NfVFJBQ0VfTE9HCgogIH07CgoKCgoKZW51bQogIHsKICAgIF9DU19QQVRILAoK
CgoKICAgIF9DU19MRlNfQ0ZMQUdTID0gMTAwMCwKCiAgICBfQ1NfTEZTX0xERkxBR1MsCgogICAg
X0NTX0xGU19MSUJTLAoKICAgIF9DU19MRlNfTElOVEZMQUdTLAoKICAgIF9DU19MRlM2NF9DRkxB
R1MsCgogICAgX0NTX0xGUzY0X0xERkxBR1MsCgogICAgX0NTX0xGUzY0X0xJQlMsCgogICAgX0NT
X0xGUzY0X0xJTlRGTEFHUywKCgoKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9DRkxBR1MgPSAx
MTAwLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1MsCgogICAgX0NTX1hCUzVfSUxQ
MzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxBR1MsCgogICAg
X0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdf
TERGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUywKCiAgICBfQ1NfWEJTNV9J
TFAzMl9PRkZCSUdfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfQ0ZMQUdTLAoK
ICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0
X0xJQlMsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAgX0NTX1hCUzVf
TFBCSUdfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTERGTEFHUywK
CiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZC
SUdfTElOVEZMQUdTLAoKCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0NGTEFHUywKCiAg
ICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQ
MzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTElOVEZMQUdTLAoK
ICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9J
TFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xJQlMs
CgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSU5URkxBR1MsCgogICAgX0NTX1BPU0lY
X1Y2X0xQNjRfT0ZGNjRfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xERkxB
R1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZf
TFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19DRkxB
R1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MREZMQUdTLAoKICAgIF9DU19QT1NJ
WF9WNl9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0xJ
TlRGTEFHUywKCgoKICAgIF9DU19WNl9XSURUSF9SRVNUUklDVEVEX0VOVlMKCiAgfTsKIyA1MDEg
Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKCgpleHRlcm4gbG9uZyBpbnQgcGF0aGNvbmYg
KF9fY29uc3QgY2hhciAqX19wYXRoLCBpbnQgX19uYW1lKSB0aHJvdyAoKTsKCgpleHRlcm4gbG9u
ZyBpbnQgZnBhdGhjb25mIChpbnQgX19mZCwgaW50IF9fbmFtZSkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGxvbmcgaW50IHN5c2NvbmYgKGludCBfX25hbWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgoKZXh0ZXJuIHNpemVfdCBjb25mc3RyIChpbnQgX19uYW1lLCBjaGFyICpf
X2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBfX3BpZF90IGdldHBpZCAo
dm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cHBpZCAodm9pZCkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gX19waWRfdCBnZXRwZ3JwICh2b2lkKSB0aHJvdyAoKTsKIyA1MzYgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAoX19waWRfdCBf
X3BpZCkgdGhyb3cgKCk7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lkIChfX3BpZF90IF9fcGlkKSB0
aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBzZXRwZ2lkIChfX3BpZF90IF9fcGlkLCBfX3BpZF90
IF9fcGdpZCkgdGhyb3cgKCk7CiMgNTYyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRl
cm4gaW50IHNldHBncnAgKHZvaWQpIHRocm93ICgpOwojIDU4MCAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAzIDQKZXh0ZXJuIF9fcGlkX3Qgc2V0c2lkICh2b2lkKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IF9fcGlkX3QgZ2V0c2lkIChfX3BpZF90IF9fcGlkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9fdWlk
X3QgZ2V0dWlkICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gX191aWRfdCBnZXRldWlkICh2b2lk
KSB0aHJvdyAoKTsKCgpleHRlcm4gX19naWRfdCBnZXRnaWQgKHZvaWQpIHRocm93ICgpOwoKCmV4
dGVybiBfX2dpZF90IGdldGVnaWQgKHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBnZXRn
cm91cHMgKGludCBfX3NpemUsIF9fZ2lkX3QgX19saXN0W10pIHRocm93ICgpOwoKCgpleHRlcm4g
aW50IGdyb3VwX21lbWJlciAoX19naWRfdCBfX2dpZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBp
bnQgc2V0dWlkIChfX3VpZF90IF9fdWlkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc2V0cmV1
aWQgKF9fdWlkX3QgX19ydWlkLCBfX3VpZF90IF9fZXVpZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4g
aW50IHNldGV1aWQgKF9fdWlkX3QgX191aWQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IHNl
dGdpZCAoX19naWRfdCBfX2dpZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHNldHJlZ2lkIChf
X2dpZF90IF9fcmdpZCwgX19naWRfdCBfX2VnaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBz
ZXRlZ2lkIChfX2dpZF90IF9fZ2lkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgZm9y
ayAodm9pZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBfX3BpZF90IHZmb3JrICh2b2lkKSB0aHJv
dyAoKTsKCgoKCgpleHRlcm4gY2hhciAqdHR5bmFtZSAoaW50IF9fZmQpIHRocm93ICgpOwoKCgpl
eHRlcm4gaW50IHR0eW5hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZs
ZW4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGlzYXR0eSAoaW50IF9fZmQpIHRocm93ICgpOwoK
CgoKCmV4dGVybiBpbnQgdHR5c2xvdCAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGxp
bmsgKF9fY29uc3QgY2hhciAqX19mcm9tLCBfX2NvbnN0IGNoYXIgKl9fdG8pIHRocm93ICgpOwoK
CgpleHRlcm4gaW50IHN5bWxpbmsgKF9fY29uc3QgY2hhciAqX19mcm9tLCBfX2NvbnN0IGNoYXIg
Kl9fdG8pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCByZWFkbGluayAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fcGF0aCwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB1bmxpbmsgKF9fY29u
c3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHJtZGlyIChfX2NvbnN0IGNo
YXIgKl9fcGF0aCkgdGhyb3cgKCk7CgoKCmV4dGVybiBfX3BpZF90IHRjZ2V0cGdycCAoaW50IF9f
ZmQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgdGNzZXRwZ3JwIChpbnQgX19mZCwgX19waWRfdCBf
X3BncnBfaWQpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqZ2V0bG9naW4gKHZvaWQpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGludCBnZXRsb2dpbl9yIChjaGFyICpfX25hbWUsIHNpemVfdCBfX25h
bWVfbGVuKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc2V0bG9naW4gKF9fY29uc3QgY2hhciAq
X19uYW1lKSB0aHJvdyAoKTsKIyA3MjYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CiMgMSAi
L3Vzci9pbmNsdWRlL2dldG9wdC5oIiAxIDMgNAojIDM4ICIvdXNyL2luY2x1ZGUvZ2V0b3B0Lmgi
IDMgNApleHRlcm4gIkMiIHsKIyA0NyAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzIDQKZXh0ZXJu
IGNoYXIgKm9wdGFyZzsKIyA2MSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzIDQKZXh0ZXJuIGlu
dCBvcHRpbmQ7CgoKCgpleHRlcm4gaW50IG9wdGVycjsKCgoKZXh0ZXJuIGludCBvcHRvcHQ7CiMg
MTQ1ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMgNApleHRlcm4gaW50IGdldG9wdCAoaW50IF9f
X2FyZ2MsIGNoYXIgKmNvbnN0ICpfX19hcmd2LCBjb25zdCBjaGFyICpfX3Nob3J0b3B0cyk7CiMg
MTc1ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMgNAp9CiMgNzI3ICIvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDIgMyA0CgoKCgoKCgpleHRlcm4gaW50IGdldGhvc3RuYW1lIChjaGFyICpfX25hbWUs
IHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgc2V0aG9zdG5hbWUgKF9f
Y29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50
IHNldGhvc3RpZCAobG9uZyBpbnQgX19pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBnZXRk
b21haW5uYW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CmV4dGVybiBp
bnQgc2V0ZG9tYWlubmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgdGhy
b3cgKCk7CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3VwICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4g
aW50IHJldm9rZSAoX19jb25zdCBjaGFyICpfX2ZpbGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJu
IGludCBwcm9maWwgKHVuc2lnbmVkIHNob3J0IGludCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3Qg
X19zaXplLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fb2Zmc2V0LCB1bnNpZ25lZCBpbnQg
X19zY2FsZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBhY2N0IChfX2NvbnN0IGNoYXIgKl9f
bmFtZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpnZXR1c2Vyc2hlbGwgKHZvaWQpIHRocm93
ICgpOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpOwpleHRlcm4gdm9p
ZCBzZXR1c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZGFlbW9uIChp
bnQgX19ub2NoZGlyLCBpbnQgX19ub2Nsb3NlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBj
aHJvb3QgKF9fY29uc3QgY2hhciAqX19wYXRoKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKmdl
dHBhc3MgKF9fY29uc3QgY2hhciAqX19wcm9tcHQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQg
ZnN5bmMgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3Rp
ZCAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc3luYyAodm9pZCkgdGhyb3cgKCk7CgoK
CgpleHRlcm4gaW50IGdldHBhZ2VzaXplICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHRydW5jYXRlIChfX2NvbnN0IGNoYXIgKl9fZmls
ZSwgX19vZmZfdCBfX2xlbmd0aCkgdGhyb3cgKCk7CiMgODM2ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMgNApleHRlcm4gaW50IHRydW5jYXRlNjQgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29m
ZjY0X3QgX19sZW5ndGgpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmdHJ1bmNhdGUgKGludCBf
X2ZkLCBfX29mZl90IF9fbGVuZ3RoKSB0aHJvdyAoKTsKIyA4NTEgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMyA0CmV4dGVybiBpbnQgZnRydW5jYXRlNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19s
ZW5ndGgpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6ZSAodm9pZCkgdGhy
b3cgKCk7CiMgODY2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IGJyayAo
dm9pZCAqX19hZGRyKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCAqc2JyayAoaW50cHRyX3Qg
X19kZWx0YSkgdGhyb3cgKCk7CiMgODg3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRl
cm4gbG9uZyBpbnQgc3lzY2FsbCAobG9uZyBpbnQgX19zeXNubywgLi4uKSB0aHJvdyAoKTsKIyA5
MDcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgbG9ja2YgKGludCBfX2Zk
LCBpbnQgX19jbWQsIF9fb2ZmX3QgX19sZW4pIHRocm93ICgpOwojIDkxNyAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBsb2NrZjY0IChpbnQgX19mZCwgaW50IF9fY21kLCBf
X29mZjY0X3QgX19sZW4pIHRocm93ICgpOwojIDkzOCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
IDQKZXh0ZXJuIGludCBmZGF0YXN5bmMgKGludCBfX2ZpbGRlcykgdGhyb3cgKCk7CgoKCgoKCgpl
eHRlcm4gY2hhciAqY3J5cHQgKF9fY29uc3QgY2hhciAqX19rZXksIF9fY29uc3QgY2hhciAqX19z
YWx0KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgZW5jcnlwdCAoY2hhciAqX19ibG9jaywgaW50
IF9fZWRmbGFnKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIHZvaWQgc3dhYiAoX19jb25zdCB2b2lk
ICpfX3Jlc3RyaWN0IF9fZnJvbSwgdm9pZCAqX19yZXN0cmljdCBfX3RvLAogICAgICAgICAgICAg
ICAgICBzc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAo
Y2hhciAqX19zKSB0aHJvdyAoKTsKIyA5ODMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4
dGVybiBpbnQgcHRocmVhZF9hdGZvcmsgKHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fcGFyZW50KSAodm9pZCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKCpfX2NoaWxkKSAodm9pZCkpIHRocm93ICgpOwoKCn0KIyAx
OCAiYnBlZC5DIiAyCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAxIDMgNAojIDMyICIv
dXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAz
IDQKIyAzMyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMyA0CiMgOTYgIi91c3IvaW5jbHVk
ZS9zeXMvc3RhdC5oIiAzIDQKZXh0ZXJuICJDIiB7CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0
YXQuaCIgMSAzIDQKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAzIDQKc3RydWN0IHN0
YXQKICB7CiAgICBfX2Rldl90IHN0X2RldjsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3BhZDE7
CgogICAgX19pbm9fdCBzdF9pbm87CgoKCiAgICBfX21vZGVfdCBzdF9tb2RlOwogICAgX19ubGlu
a190IHN0X25saW5rOwogICAgX191aWRfdCBzdF91aWQ7CiAgICBfX2dpZF90IHN0X2dpZDsKICAg
IF9fZGV2X3Qgc3RfcmRldjsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3BhZDI7CgogICAgX19v
ZmZfdCBzdF9zaXplOwoKCgogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6ZTsKCgogICAgX19ibGtj
bnRfdCBzdF9ibG9ja3M7CgoKCiAgICBfX3RpbWVfdCBzdF9hdGltZTsKICAgIHVuc2lnbmVkIGxv
bmcgaW50IF9fdW51c2VkMTsKICAgIF9fdGltZV90IHN0X210aW1lOwogICAgdW5zaWduZWQgbG9u
ZyBpbnQgX191bnVzZWQyOwogICAgX190aW1lX3Qgc3RfY3RpbWU7CiAgICB1bnNpZ25lZCBsb25n
IGludCBfX3VudXNlZDM7CgogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQ0OwogICAgdW5z
aWduZWQgbG9uZyBpbnQgX191bnVzZWQ1OwoKCgogIH07CgoKc3RydWN0IHN0YXQ2NAogIHsKICAg
IF9fZGV2X3Qgc3RfZGV2OwogICAgdW5zaWduZWQgaW50IF9fcGFkMTsKCiAgICBfX2lub190IF9f
c3RfaW5vOwogICAgX19tb2RlX3Qgc3RfbW9kZTsKICAgIF9fbmxpbmtfdCBzdF9ubGluazsKICAg
IF9fdWlkX3Qgc3RfdWlkOwogICAgX19naWRfdCBzdF9naWQ7CiAgICBfX2Rldl90IHN0X3JkZXY7
CiAgICB1bnNpZ25lZCBpbnQgX19wYWQyOwogICAgX19vZmY2NF90IHN0X3NpemU7CiAgICBfX2Js
a3NpemVfdCBzdF9ibGtzaXplOwoKICAgIF9fYmxrY250NjRfdCBzdF9ibG9ja3M7CiAgICBfX3Rp
bWVfdCBzdF9hdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMTsKICAgIF9fdGlt
ZV90IHN0X210aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQyOwogICAgX190aW1l
X3Qgc3RfY3RpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDM7CiAgICBfX2lubzY0
X3Qgc3RfaW5vOwogIH07CiMgOTkgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMgNAojIDIw
MCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNApleHRlcm4gaW50IHN0YXQgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9f
cmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZzdGF0IChpbnQgX19mZCwg
c3RydWN0IHN0YXQgKl9fYnVmKSB0aHJvdyAoKTsKIyAyMTkgIi91c3IvaW5jbHVkZS9zeXMvc3Rh
dC5oIiAzIDQKZXh0ZXJuIGludCBzdGF0NjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zp
bGUsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3Jlc3RyaWN0IF9fYnVmKSB0
aHJvdyAoKTsKZXh0ZXJuIGludCBmc3RhdDY0IChpbnQgX19mZCwgc3RydWN0IHN0YXQ2NCAqX19i
dWYpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGxzdGF0IChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19maWxlLAogICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBf
X2J1ZikgdGhyb3cgKCk7CiMgMjQxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0CmV4dGVy
biBpbnQgbHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoK
CgoKZXh0ZXJuIGludCBjaG1vZCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9k
ZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZmNobW9kIChpbnQgX19mZCwgX19tb2RlX3QgX19t
b2RlKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gX19tb2RlX3QgdW1hc2sgKF9fbW9kZV90IF9fbWFz
aykgdGhyb3cgKCk7CgoKCgpleHRlcm4gX19tb2RlX3QgZ2V0dW1hc2sgKHZvaWQpIHRocm93ICgp
OwoKCgpleHRlcm4gaW50IG1rZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19t
b2RlKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IG1rbm9kIChfX2NvbnN0IGNoYXIgKl9fcGF0
aCwgX19tb2RlX3QgX19tb2RlLCBfX2Rldl90IF9fZGV2KQogICAgIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGludCBta2ZpZm8gKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUpIHRo
cm93ICgpOwojIDMwNiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNApleHRlcm4gaW50IF9f
ZnhzdGF0IChpbnQgX192ZXIsIGludCBfX2ZpbGRlcywgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYp
IHRocm93ICgpOwpleHRlcm4gaW50IF9feHN0YXQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpf
X2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSB0
aHJvdyAoKTsKZXh0ZXJuIGludCBfX2x4c3RhdCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9f
ZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSB0
aHJvdyAoKTsKIyAzMzAgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQKZXh0ZXJuIGludCBf
X2Z4c3RhdDY0IChpbnQgX192ZXIsIGludCBfX2ZpbGRlcywgc3RydWN0IHN0YXQ2NCAqX19zdGF0
X2J1ZikKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX3hzdGF0NjQgKGludCBfX3ZlciwgX19j
b25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2
NCAqX19zdGF0X2J1ZikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19seHN0YXQ2NCAoaW50IF9fdmVy
LCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHN0YXQ2NCAqX19zdGF0X2J1ZikgdGhyb3cgKCk7CgpleHRlcm4gaW50IF9feG1rbm9kIChpbnQg
X192ZXIsIF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUsCiAgICAgICAgICAg
ICAgICAgICAgIF9fZGV2X3QgKl9fZGV2KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBfX2lubGluZV9f
IGludCBzdGF0IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRidWYpIHRocm93ICgpCnsKICByZXR1cm4gX194c3RhdCAo
MywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IGxzdGF0IChf
X2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c3RhdCAqX19zdGF0YnVmKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fbHhzdGF0ICgzLCBfX3BhdGgs
IF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQgKGludCBfX2ZkLCBz
dHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fZnhzdGF0ICgzLCBf
X2ZkLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IG1rbm9kIChfX2NvbnN0
IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fZGV2X3QgX19kZXYpIHRocm93ICgpCnsKICByZXR1cm4gX194bWtub2QgKDEsIF9fcGF0
aCwgX19tb2RlLCAmX19kZXYpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lX18gaW50IHN0YXQ2NCAo
X19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBzdGF0NjQgKl9fc3RhdGJ1ZikgdGhyb3cgKCkKewogIHJldHVybiBfX3hzdGF0NjQgKDMsIF9f
cGF0aCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBsc3RhdDY0IChfX2Nv
bnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
dGF0NjQgKl9fc3RhdGJ1ZikgdGhyb3cgKCkKewogIHJldHVybiBfX2x4c3RhdDY0ICgzLCBfX3Bh
dGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQ2NCAoaW50IF9f
ZmQsIHN0cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikgdGhyb3cgKCkKewogIHJldHVybiBfX2Z4c3Rh
dDY0ICgzLCBfX2ZkLCBfX3N0YXRidWYpOwp9CgoKCgp9CiMgMjAgImJwZWQuQyIgMgojIDEgIi9z
dGFmZi9rZnJlZHJpay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4zL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0CiMgMTEgIi9zdGFmZi9rZnJlZHJpay9s
b2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1
ZGUvbGltaXRzLmgiIDMgNAojIDEgIi9zdGFmZi9rZnJlZHJpay9sb2NhbC9nY2Mtc25hcHNob3Qv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4zL2luY2x1ZGUvc3lzbGltaXRzLmgiIDEg
MyA0CgoKCgoKCiMgMSAiL3N0YWZmL2tmcmVkcmlrL2xvY2FsL2djYy1zbmFwc2hvdC9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjMvaW5jbHVkZS9saW1pdHMuaCIgMSAzIDQKIyAxMjIg
Ii9zdGFmZi9rZnJlZHJpay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4zL2luY2x1ZGUvbGltaXRzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9saW1p
dHMuaCIgMSAzIDQKIyAxNDQgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMyA0CiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMgNAojIDEyNiAiL3Vzci9pbmNsdWRlL2JpdHMv
cG9zaXgxX2xpbS5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMSAz
IDQKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDMgNAojIDEgIi91c3IvaW5j
bHVkZS9saW51eC9saW1pdHMuaCIgMSAzIDQKIyAzNyAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxf
bGltLmgiIDIgMyA0CiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDIgMyA0
CiMgMTQ1ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CgoKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvcG9zaXgyX2xpbS5oIiAxIDMgNAojIDE0OSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAy
IDMgNAoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAxIDMgNAojIDM0ICIv
dXNyL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
c3RkaW9fbGltLmgiIDEgMyA0CiMgMzUgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAy
IDMgNAojIDE1MyAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMgNAojIDEyMyAiL3N0YWZmL2tm
cmVkcmlrL2xvY2FsL2djYy1zbmFwc2hvdC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjMvaW5jbHVkZS9saW1pdHMuaCIgMiAzIDQKIyA4ICIvc3RhZmYva2ZyZWRyaWsvbG9jYWwvZ2Nj
LXNuYXBzaG90L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N5c2xp
bWl0cy5oIiAyIDMgNAojIDEyICIvc3RhZmYva2ZyZWRyaWsvbG9jYWwvZ2NjLXNuYXBzaG90L2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL2xpbWl0cy5oIiAyIDMgNAoj
IDIxICJicGVkLkMiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMyA0CiMgMjggIi91
c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4dGVybiAiQyIgewoKCgoKIyAxICIvc3RhZmYva2Zy
ZWRyaWsvbG9jYWwvZ2NjLXNuYXBzaG90L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
My9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDM0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIg
MyA0CgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf
X24pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29u
c3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZv
aWQgKm1lbWNjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVz
dHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgX19jLCBzaXplX3QgX19uKQog
ICAgIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgKm1lbXNldCAodm9pZCAqX19zLCBpbnQgX19j
LCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IG1lbWNtcCAoX19jb25zdCB2b2lk
ICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25zdCB2
b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHZvaWQgKnJhd21lbWNociAoX19jb25zdCB2b2lk
ICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4
dGVybiB2b2lkICptZW1yY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9f
bikKICAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4g
Y2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIg
Kl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqc3Ry
Y2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
c3JjKQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgKGNoYXIgKl9fcmVzdHJp
Y3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHN0cmNtcCAoX19jb25z
dCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29uc3QgY2hhciAqX19z
MSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBjaGFyICpf
X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm0gKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0
LAogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywg
c2l6ZV90IF9fbikgdGhyb3cgKCk7CiMgMTExICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApl
eHRlcm4gaW50IF9fc3RyY29sbF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAq
X19zMiwgX19sb2NhbGVfdCBfX2wpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgpleHRlcm4gc2l6ZV90IF9fc3RyeGZybV9sIChjaGFyICpfX2Rlc3QsIF9fY29uc3Qg
Y2hhciAqX19zcmMsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9j
YWxlX3QgX19sKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpzdHJkdXAgKF9fY29uc3QgY2hh
ciAqX19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKCgpleHRl
cm4gY2hhciAqc3RybmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDE1NSAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25zdCBjaGFyICpfX3Ms
IGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNo
YXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJudWwgKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKCmV4dGVybiBzaXplX3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hh
ciAqX19yZWplY3QpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
ZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9f
YWNjZXB0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJu
IGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIg
KnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxl
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hh
ciAqc3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9f
bmVlZGxlKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRl
cm4gY2hhciAqc3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZGVsaW0pCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpfX3N0cnRva19y
IChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19zYXZlX3B0cikgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAqc3RydG9rX3Ig
KGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwK
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSB0aHJv
dyAoKTsKCgoKCgoKZXh0ZXJuIHZvaWQgKm1lbW1lbSAoX19jb25zdCB2b2lkICpfX2hheXN0YWNr
LCBzaXplX3QgX19oYXlzdGFja2xlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lk
ICpfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVuKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9pZCAqX19tZW1wY3B5ICh2b2lkICpfX3Jlc3Ry
aWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3Ry
aWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKZXh0ZXJuIHZvaWQgKm1lbXBjcHkgKHZv
aWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lk
ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBzaXpl
X3Qgc3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJp
bmcsIHNpemVfdCBfX21heGxlbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9fZXJybnVtKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNp
emVfdCBfX2J1ZmxlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpf
X3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2
b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4g
dm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50
IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19u
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFy
ICppbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpyaW5kZXggKF9fY29uc3QgY2hhciAqX19z
LCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJu
IGludCBmZnMgKGludCBfX2kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKCmV4dGVybiBpbnQgZmZzbCAobG9uZyBpbnQgX19sKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBpbnQgZmZzbGwgKGxvbmcgbG9u
ZyBpbnQgX19sbCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
CgpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFy
ICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVy
biBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3My
LCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
CgoKCmV4dGVybiBpbnQgX19zdHJjYXNlY21wX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25z
dCBjaGFyICpfX3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9j
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgX19zdHJu
Y2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2MpCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0
cnNlcCAoY2hhciAqKl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50
IHN0cnZlcnNjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpzdHJz
aWduYWwgKGludCBfX3NpZykgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKl9fc3RwY3B5IChjaGFy
ICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAg
IHRocm93ICgpOwpleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpOwoKCgpleHRlcm4g
Y2hhciAqX19zdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJv
dyAoKTsKZXh0ZXJuIGNoYXIgKnN0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3Qg
X19uKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqc3RyZnJ5IChjaGFyICpfX3N0cmluZykgdGhy
b3cgKCk7CgoKZXh0ZXJuIHZvaWQgKm1lbWZyb2IgKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNlbmFtZSAoX19jb25zdCBjaGFyICpfX2ZpbGVu
YW1lKSB0aHJvdyAoKTsKIyAzNjQgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0Cn0KIyAyMiAi
YnBlZC5DIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDEgMyA0CiMgMjkgIi91c3IvaW5j
bHVkZS9mY250bC5oIiAzIDQKZXh0ZXJuICJDIiB7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
ZmNudGwuaCIgMSAzIDQKIyAxMzYgIi91c3IvaW5jbHVkZS9iaXRzL2ZjbnRsLmgiIDMgNApzdHJ1
Y3QgZmxvY2sKICB7CiAgICBzaG9ydCBpbnQgbF90eXBlOwogICAgc2hvcnQgaW50IGxfd2hlbmNl
OwoKICAgIF9fb2ZmX3QgbF9zdGFydDsKICAgIF9fb2ZmX3QgbF9sZW47CgoKCgogICAgX19waWRf
dCBsX3BpZDsKICB9OwoKCnN0cnVjdCBmbG9jazY0CiAgewogICAgc2hvcnQgaW50IGxfdHlwZTsK
ICAgIHNob3J0IGludCBsX3doZW5jZTsKICAgIF9fb2ZmNjRfdCBsX3N0YXJ0OwogICAgX19vZmY2
NF90IGxfbGVuOwogICAgX19waWRfdCBsX3BpZDsKICB9OwojIDM0ICIvdXNyL2luY2x1ZGUvZmNu
dGwuaCIgMiAzIDQKIyA2MCAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNApleHRlcm4gaW50IGZj
bnRsIChpbnQgX19mZCwgaW50IF9fY21kLCAuLi4pIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQg
b3BlbiAoX19jb25zdCBjaGFyICpfX2ZpbGUsIGludCBfX29mbGFnLCAuLi4pIHRocm93ICgpOwoj
IDc2ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgb3BlbjY0IChfX2NvbnN0
IGNoYXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4uLikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBp
bnQgY3JlYXQgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUpIHRocm93ICgp
OwojIDkzICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgY3JlYXQ2NCAoX19j
b25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkgdGhyb3cgKCk7CiMgMTMwICIvdXNy
L2luY2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgcG9zaXhfZmFkdmlzZSAoaW50IF9fZmQs
IF9fb2ZmX3QgX19vZmZzZXQsIHNpemVfdCBfX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgX19hZHZpc2UpIHRocm93ICgpOwojIDE0MiAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMg
NApleHRlcm4gaW50IHBvc2l4X2ZhZHZpc2U2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNl
dCwgc2l6ZV90IF9fbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWR2aXNl
KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHBvc2l4X2ZhbGxvY2F0ZSAoaW50IF9fZmQsIF9f
b2ZmX3QgX19vZmZzZXQsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CiMgMTYwICIvdXNyL2luY2x1
ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgcG9zaXhfZmFsbG9jYXRlNjQgKGludCBfX2ZkLCBf
X29mZjY0X3QgX19vZmZzZXQsIHNpemVfdCBfX2xlbikKICAgICB0aHJvdyAoKTsKCgoKfQojIDIz
ICJicGVkLkMiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVzLmgiIDEgMyA0CiMgMjkgIi91
c3IvaW5jbHVkZS9zeXMvdGltZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAz
IDQKIyAzMCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lcy5oIiAyIDMgNAoKCmV4dGVybiAiQyIgewoK
CnN0cnVjdCB0bXMKICB7CiAgICBjbG9ja190IHRtc191dGltZTsKICAgIGNsb2NrX3QgdG1zX3N0
aW1lOwoKICAgIGNsb2NrX3QgdG1zX2N1dGltZTsKICAgIGNsb2NrX3QgdG1zX2NzdGltZTsKICB9
OwoKCgoKCgpleHRlcm4gY2xvY2tfdCB0aW1lcyAoc3RydWN0IHRtcyAqX19idWZmZXIpIHRocm93
ICgpOwoKfQojIDI0ICJicGVkLkMiIDIKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL21hbGxvYy5o
IiAxIDMgNAojIDQ0ICIvdXNyL2luY2x1ZGUvbWFsbG9jLmgiIDMgNAojIDEgIi9zdGFmZi9rZnJl
ZHJpay9sb2NhbC9nY2Mtc25hcHNob3QvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4z
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTUxICIvc3RhZmYva2ZyZWRyaWsvbG9jYWwvZ2Nj
LXNuYXBzaG90L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzIDQKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwojIDQ1ICIvdXNyL2luY2x1ZGUvbWFsbG9j
LmgiIDIgMyA0CiMgMTA0ICIvdXNyL2luY2x1ZGUvbWFsbG9jLmgiIDMgNApleHRlcm4gIkMiIHsK
IyAxMTMgIi91c3IvaW5jbHVkZS9tYWxsb2MuaCIgMyA0CmV4dGVybiB2b2lkICogbWFsbG9jIChz
aXplX3QgX19zaXplKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCmV4
dGVybiB2b2lkICogY2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkgdGhyb3cg
KCkKICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4dGVybiB2b2lkICog
cmVhbGxvYyAodm9pZCAqIF9fcHRyLCBzaXplX3QgX19zaXplKSB0aHJvdyAoKQoKICAgICAgIF9f
YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKZXh0ZXJuIHZvaWQgZnJlZSAodm9pZCAqIF9f
cHRyKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqIF9fcHRyKSB0aHJvdyAo
KTsKCgpleHRlcm4gdm9pZCAqIG1lbWFsaWduIChzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBf
X3NpemUpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkICogdmFsbG9jIChzaXplX3QgX19zaXplKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gdm9pZCAqIHB2
YWxsb2MgKHNpemVfdCBfX3NpemUpIHRocm93ICgpCiAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19t
YWxsb2NfXykpOwoKCgpleHRlcm4gdm9pZCAqICgqX19tb3JlY29yZSkgKHB0cmRpZmZfdCBfX3Np
emUpOwoKCmV4dGVybiB2b2lkICogX19kZWZhdWx0X21vcmVjb3JlIChwdHJkaWZmX3QgX19zaXpl
KSB0aHJvdyAoKQogICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgpzdHJ1Y3Qg
bWFsbGluZm8gewogIGludCBhcmVuYTsKICBpbnQgb3JkYmxrczsKICBpbnQgc21ibGtzOwogIGlu
dCBoYmxrczsKICBpbnQgaGJsa2hkOwogIGludCB1c21ibGtzOwogIGludCBmc21ibGtzOwogIGlu
dCB1b3JkYmxrczsKICBpbnQgZm9yZGJsa3M7CiAgaW50IGtlZXBjb3N0Owp9OwoKCmV4dGVybiBz
dHJ1Y3QgbWFsbGluZm8gbWFsbGluZm8gKHZvaWQpIHRocm93ICgpOwojIDE4OSAiL3Vzci9pbmNs
dWRlL21hbGxvYy5oIiAzIDQKZXh0ZXJuIGludCBtYWxsb3B0IChpbnQgX19wYXJhbSwgaW50IF9f
dmFsKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBtYWxsb2NfdHJpbSAoc2l6ZV90IF9fcGFkKSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBtYWxsb2NfdXNhYmxlX3NpemUgKHZvaWQgKiBfX3B0
cikgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgbWFsbG9jX3N0YXRzICh2b2lkKSB0aHJvdyAoKTsK
CgpleHRlcm4gdm9pZCAqIG1hbGxvY19nZXRfc3RhdGUgKHZvaWQpIHRocm93ICgpOwoKCgpleHRl
cm4gaW50IG1hbGxvY19zZXRfc3RhdGUgKHZvaWQgKiBfX3B0cikgdGhyb3cgKCk7CgoKCgoKZXh0
ZXJuIHZvaWQgKCpfX21hbGxvY19pbml0aWFsaXplX2hvb2spICh2b2lkKTsKCmV4dGVybiB2b2lk
ICgqX19mcmVlX2hvb2spICh2b2lkICogX19wdHIsIF9fY29uc3Qgdm9pZCAqKTsKCmV4dGVybiB2
b2lkICogKCpfX21hbGxvY19ob29rKSAoc2l6ZV90IF9fc2l6ZSwgX19jb25zdCB2b2lkICopOwoK
ZXh0ZXJuIHZvaWQgKiAoKl9fcmVhbGxvY19ob29rKSAodm9pZCAqIF9fcHRyLCBzaXplX3QgX19z
aXplLCBfX2NvbnN0IHZvaWQgKik7CgoKZXh0ZXJuIHZvaWQgKiAoKl9fbWVtYWxpZ25faG9vaykg
KHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSwgX19jb25zdCB2b2lkICopOwoKCmV4
dGVybiB2b2lkICgqX19hZnRlcl9tb3JlY29yZV9ob29rKSAodm9pZCk7CgoKZXh0ZXJuIHZvaWQg
X19tYWxsb2NfY2hlY2tfaW5pdCAodm9pZCkgdGhyb3cgKCk7CgoKCn07CiMgMzIgImJwZWQuQyIg
MgoKIyAxICJzc2VjLWdudS5IIiAxCiMgMTAgInNzZWMtZ251LkgiCnR5cGVkZWYgaW50IHY0c2Yg
X19hdHRyaWJ1dGVfXyAoKG1vZGUoVjRTRikpKTsKCmNvbnN0IHY0c2YgbW8gPSB7IH4wLCB+MCwg
fjAsIH4wIH07CgpjbGFzcyBsb25naW50CnsKcHVibGljOgoKICAgICAgICBsb25naW50KCkge30K
CiAgICAgICAgb3BlcmF0b3IgdjRzZigpY29uc3QgeyByZXR1cm4geDsgfQoKCiAgICAgICAgbG9u
Z2ludCggdjRzZiBtbSApIHsgeCA9IG1tOyB9CiAgICAgICAgbG9uZ2ludCggaW50IGkgKSB7IHgg
PSBfX2J1aWx0aW5faWEzMl9sb2Fkc3MoKCBmbG9hdCAqICkmaSApOyB9CgogICAgICAgIG9wZXJh
dG9yIGludCgpIHsgcmV0dXJuICooKCBpbnQgKiApKCAmeCApKTsgfQogICAgICAgIG9wZXJhdG9y
IHY0c2YoKSB7IHJldHVybiB4OyB9Cgpwcm90ZWN0ZWQ6CgogICAgICAgIHY0c2YgeDsKfTsKCmxv
bmdpbnQgaW5saW5lIGxvYWR2ZWMoIGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkICkKewogICAg
ICAgIHY0c2YgdjsKICAgICAgICBpbnQgKiB3ID0gKCBpbnQgKiApJnY7CgogICAgICAgIHdbIDAg
XSA9IGQ7CiAgICAgICAgd1sgMSBdID0gYzsKICAgICAgICB3WyAyIF0gPSBiOwogICAgICAgIHdb
IDMgXSA9IGE7CgogICAgICAgIHJldHVybiAqKCB2NHNmICopdzsKfQoKbG9uZ2ludCBpbmxpbmUg
emVybygpCnsKICAgICAgICB2NHNmIGE7CgogICAgICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl94
b3JwcyggYSwgYSApOwp9Cgpsb25naW50IGlubGluZSBvbmUoKQp7CiAgICAgICAgcmV0dXJuIGxv
YWR2ZWMoIDAsIDAsIDAsIDEgKTsKfQoKCnN0YXRpYyB2b2lkIGlubGluZSBhZGQoIHVuc2lnbmVk
ICogcSwgdW5zaWduZWQgKiB2LCB1bnNpZ25lZCAqIHcgKQp7CiAgICAgICAgaW50IGk7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIHIgPSAwTEw7CgogICAgICAgIGZvciggaSA9IDA7IGkgPCA0
OyBpKysgKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHIgPSAoIHVuc2lnbmVkIGxvbmcgbG9u
ZyApdlsgaSBdICsKICAgICAgICAgICAgICAgICAgICAoIHVuc2lnbmVkIGxvbmcgbG9uZyApd1sg
aSBdICsgcjsKICAgICAgICAgICAgICAgIHFbIGkgXSA9ICggdW5zaWduZWQgKXI7CiAgICAgICAg
ICAgICAgICByID4+PSAzMjsKICAgICAgICB9Cn0KCnN0YXRpYyB2b2lkIGlubGluZSBhZGRfYXNt
KCB1bnNpZ25lZCAqIGEsIHVuc2lnbmVkICogYiApCnsKICAgICAgICBhc20gKCJhZGRsCSUxLCUw
IiA6ICI9cixybSIgKGFbMF0pIDogIiVnLHJpIiAoYlswXSksIjAsMCIgKGFbMF0pKTsKICAgICAg
ICBhc20gKCJhZGNsCSUxLCUwIiA6ICI9cixybSIgKGFbMV0pIDogIiVnLHJpIiAoYlsxXSksIjAs
MCIgKGFbMV0pKTsKICAgICAgICBhc20gKCJhZGNsCSUxLCUwIiA6ICI9cixybSIgKGFbMl0pIDog
IiVnLHJpIiAoYlsyXSksIjAsMCIgKGFbMl0pKTsKICAgICAgICBhc20gKCJhZGNsCSUxLCUwIiA6
ICI9cixybSIgKGFbM10pIDogIiVnLHJpIiAoYlszXSksIjAsMCIgKGFbM10pKTsKCgoKCgoKfQoK
aW50IGlubGluZSB2ZWN0ZXN0Yml0KCBsb25naW50IGEsIGludCBiICkKewogICAgICAgIGludCAq
IGMgPSAoIGludCAqICkmYTsKCiAgICAgICAgcmV0dXJuICgoIGNbICgoIGIgKSAvIDMyICkgXSA+
PiAoICgoIGIgKSAlIDMyICkgKSkgJiAxICk7Cn0KCgoKaW50IGlubGluZSBvcGVyYXRvciYmKCBs
b25naW50IGEsIGludCBiICkKewogICAgICAgIHJldHVybiB2ZWN0ZXN0Yml0KCBhLCBiICk7Cn0K
CmxvbmdpbnQgaW5saW5lIG9wZXJhdG9yfCggbG9uZ2ludCBhLCBsb25naW50IGIgKQp7CiAgICAg
ICAgdjRzZiBjOwogICAgICAgIGMgPSBfX2J1aWx0aW5faWEzMl9vcnBzKCBhLCBiICk7CgogICAg
ICAgIHJldHVybiAoIGxvbmdpbnQgKWM7Cn0KCmxvbmdpbnQgaW5saW5lIG9wZXJhdG9yfD0oIGxv
bmdpbnQgJiBhLCBsb25naW50IGIgKQp7CiAgICAgICAgYSA9IGEgfCBiOwoKICAgICAgICByZXR1
cm4gYTsKfQoKdm9pZCBpbmxpbmUgc2hsX3MoIHVuc2lnbmVkICogYSwgaW50IHMgKQp7CiAgICAg
ICAgaW50IGk7CgogICAgICAgIGZvciggaSA9IDM7IGkgPiAwOyBpLS0gKQogICAgICAgIHsKICAg
ICAgICAgICAgICAgIGFbIGkgXSA9ICggYVsgaSBdIDw8IHMgKSB8ICgoIGFbIGkgLSAxIF0gKSA+
PiAoIDMyIC0gcyApKTsKICAgICAgICB9CiAgICAgICAgYVsgMCBdIDw8PSBzOwp9Cgp2b2lkIGlu
bGluZSBzaGxfMSggdW5zaWduZWQgKiBhICkKewogICAgICAgIGFzbSggInNobGQJJDEsJTEsJTAi
IDogIj1tIiAoYVszXSkgOiAiciIgKGFbMl0pICk7CiAgICAgICAgYXNtKCAic2hsZAkkMSwlMSwl
MCIgOiAiPW0iIChhWzJdKSA6ICJyIiAoYVsxXSkgKTsKICAgICAgICBhc20oICJzaGxkCSQxLCUx
LCUwIiA6ICI9bSIgKGFbMV0pIDogInIiIChhWzBdKSApOwoKICAgICAgICBhWyAwIF0gPDw9IDE7
Cn0KCmxvbmdpbnQgaW5saW5lIG9wZXJhdG9yPDwoIGxvbmdpbnQgYSwgaW50IGMgKQp7CiAgICAg
ICAgbG9uZ2ludCBiID0gYTsKIyAxNDggInNzZWMtZ251LkgiCiAgICAgICAgc2hsX3MoKCB1bnNp
Z25lZCAqICkmYiwgMSApOwoKCiAgICAgICAgcmV0dXJuIGI7Cn0KCmxvbmdpbnQgaW5saW5lIG9w
ZXJhdG9yPj4oIGxvbmdpbnQgYSwgdW5zaWduZWQgaW50IGMgKQp7CiAgICAgICAgdjRzZiBiOwoK
ICAgICAgICBpZiggYyAhPSAxMjcgKQogICAgICAgIHsKCgoKICAgICAgICAgICAgICAgIHJldHVy
biBhOwogICAgICAgIH0KCiAgICAgICAgYiA9IF9fYnVpbHRpbl9pYTMyX3hvcnBzKCBiLCBiICk7
CgogICAgICAgICooKCBpbnQgKiApJmIgKSA9ICooKCB1bnNpZ25lZCBpbnQgKiApJmEgKyAzICkg
Pj4gMzE7CgogICAgICAgIHJldHVybiBiOwp9Cgpsb25naW50IGlubGluZSBvcGVyYXRvcj4+PSgg
bG9uZ2ludCAmIGEsIHVuc2lnbmVkIGludCBjICkKewogICAgICAgIGEgPSBhID4+IGM7CgogICAg
ICAgIHJldHVybiBhOwp9Cgpsb25naW50IGlubGluZSBvcGVyYXRvcjw8PSggbG9uZ2ludCAmIGEs
IGludCBjICkKewogICAgICAgIGEgPSBhIDw8IGM7CgogICAgICAgIHJldHVybiBhOwp9Cgpsb25n
aW50IGlubGluZSBvcGVyYXRvcl4oIGxvbmdpbnQgYSwgbG9uZ2ludCBiICkKewogICAgICAgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl94b3JwcyggYSwgYiApOwp9Cgpsb25naW50IGlubGluZSBvcGVy
YXRvcl49KCBsb25naW50ICYgYSwgbG9uZ2ludCBiICkKewogICAgICAgIGEgPSBhIF4gYjsKCiAg
ICAgICAgcmV0dXJuIGE7Cn0KCmxvbmdpbnQgaW5saW5lIG9wZXJhdG9yJiggbG9uZ2ludCBhLCBs
b25naW50IGIgKQp7CiAgICAgICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2FuZHBzKCBhLCBiICk7
Cn0KCmxvbmdpbnQgaW5saW5lIG9wZXJhdG9yJj0oIGxvbmdpbnQgJiBhLCBsb25naW50IGIgKQp7
CiAgICAgICAgYSA9IGEgJiBiOwoKICAgICAgICByZXR1cm4gYTsKfQoKbG9uZ2ludCBpbmxpbmUg
b3BlcmF0b3J+KCBsb25naW50IGEgKQp7CgoKICAgICAgICByZXR1cm4gX19idWlsdGluX2lhMzJf
YW5kbnBzKCBhLCBtbyApOwoKfQoKCgpsb25naW50IGlubGluZSBvcGVyYXRvcisoIGxvbmdpbnQg
YSApCnsKICAgICAgICByZXR1cm4gYTsKfQoKbG9uZ2ludCBpbmxpbmUgb3BlcmF0b3IrKCBsb25n
aW50IGEsIGxvbmdpbnQgYiApCnsKICAgICAgICBhZGRfYXNtKCggdW5zaWduZWQgKiApJmEsICgg
dW5zaWduZWQgKiApJmIgKTsKCgogICAgICAgIHJldHVybiBhOwp9CgoKbG9uZ2ludCBpbmxpbmUg
b3BlcmF0b3IrPSggbG9uZ2ludCAmIGEsIGxvbmdpbnQgYiApCnsKICAgICAgICBhID0gYSArIGI7
CgogICAgICAgIHJldHVybiBhOwp9CgoKc3RhdGljIGlubGluZSB2b2lkICogbW1hbGxvYyggaW50
IGJ5dGVzICkKewogICAgICAgIGNoYXIgKiBkOwogICAgICAgIGludCBpOwoKICAgICAgICBkID0g
KCBjaGFyICogKW1hbGxvYyggYnl0ZXMgKyAxNiApOwoKICAgICAgICBpID0gKCggaW50IClkICsg
MTUgKSAmIH4oIDE1ICk7CgogICAgICAgIHJldHVybiAoIHZvaWQgKiApaTsKfQojIDM0ICJicGVk
LkMiIDIKIyA1MCAiYnBlZC5DIgp0eXBlZGVmIGxvbmdpbnQgZHB2ZWM7CiMgMTExICJicGVkLkMi
CnR5cGVkZWYgaW50ICggKiBNQVRDSENPREUgKSggaW50IGksIGludCBzY29yZSApOwoKCgpzdGF0
aWMgaW50IGxvY2F0aW9uID0gMDsKc3RhdGljIGludCBkaXN0YW5jZSA9IDA7CnN0YXRpYyBpbnQg
dGltaW5nID0gMDsKc3RhdGljIGludCBxdWlldCA9IDA7CnN0YXRpYyBpbnQgc2hyaW5rayA9IDA7
CnN0YXRpYyBpbnQgbWluZGlzdCA9IDEgPDwgMzA7CgpzdGF0aWMgc3RydWN0IHRtcyBzdGFydDsK
c3RhdGljIHN0cnVjdCB0bXMgc3RvcDsKCnR5cGVkZWYgc3RydWN0IHZlY3N1bQp7CiAgICAgICAg
c2lnbmVkIGNoYXIgaVsgMSA8PCAxNiBdOwogICAgICAgIHNpZ25lZCBjaGFyIG1bIDEgPDwgMTYg
XTsKCn0gVkVDU1VNOwoKdm9pZCBzdGFydGNsb2NrKCkKewogICAgICAgIHRpbWVzKCAmc3RhcnQg
KTsKfQoKbG9uZyBzdG9wY2xvY2soKQp7CiAgICAgICAgdGltZXMoICZzdG9wICk7CiAgICAgICAg
cmV0dXJuIHN0b3AudG1zX3V0aW1lIC0gc3RhcnQudG1zX3V0aW1lICsKICAgICAgICAgICAgICAg
c3RvcC50bXNfc3RpbWUgLSBzdGFydC50bXNfc3RpbWU7Cn0KCmxvbmcgZ2V0X2Nsb2NrKCkKewog
ICAgICAgIHN0cnVjdCB0bXMgbm93OwoKICAgICAgICB0aW1lcyggJm5vdyApOwoKICAgICAgICBy
ZXR1cm4gbm93LnRtc191dGltZTsKfQoKCmNoYXIgKiBmX3JlYWRfYnl0ZXMoIGNoYXIgKiBmbiwg
aW50ICogbiApCnsKICAgICAgICBzdHJ1Y3Qgc3RhdCBidWY7CiAgICAgICAgaW50IGk7CiAgICAg
ICAgY2hhciAqIGI7CgogICAgICAgIHN0YXQoIGZuLCAmYnVmICk7CgogICAgICAgIGkgPSBvcGVu
KCBmbiwgMDAgKTsKCiAgICAgICAgYiA9ICggY2hhciAqICltbWFsbG9jKCBidWYuc3Rfc2l6ZSAp
OwoKICAgICAgICBpZiggaSA9PSAtMSApIHByaW50ZigiRVJST1JcbiIpOwoKICAgICAgICAqbiA9
IHJlYWQoIGksIGIsIGJ1Zi5zdF9zaXplICk7CgoKCiAgICAgICAgY2xvc2UoIGkgKTsKCiAgICAg
ICAgcmV0dXJuIGI7Cn0KCnZvaWQgKiphbGxvY2F0ZV8yZCggaW50IHIsIGludCBjLCBpbnQgZSAp
CnsKICAgICAgICBpbnQgaTsKICAgICAgICB2b2lkICoqYSA9ICggdm9pZCAqKiApbW1hbGxvYygg
ciAqIHNpemVvZiggdm9pZCAqICkgKTsKCiAgICAgICAgYVsgMCBdID0gbW1hbGxvYyggciAqIGMg
KiBlICk7CiAgICAgICAgZm9yKCBpID0gMTsgaSA8IHI7IGkrKyApIGFbIGkgXSA9ICggY2hhciAq
IClhWyAwIF0gKyBpICogYyAqIGU7CgogICAgICAgIHJldHVybiBhOwp9CiMgMjY1ICJicGVkLkMi
CnN0YXRpYyBkcHZlYyAqKiBwcmVwX2JlcV9oKCBkcHZlYyAqIGwsIGRwdmVjICogaCwgaW50IG0s
IGludCBtb2RlICkKewogICAgICAgIGludCBpLCBzZWc7CiAgICAgICAgZHB2ZWMgKiogcGVxOwoK
ICAgICAgICBzZWcgPSAoKCBtICsgKCBzaXplb2YoIGRwdmVjICkgKiA4ICkgLSAxICkgLyAoIHNp
emVvZiggZHB2ZWMgKSAqIDggKSApOwoKCgoKCiAgICAgICAgaWYoIG1vZGUgPT0gMCApCiAgICAg
ICAgewogICAgICAgICAgICAgICAgcGVxID0gKCBkcHZlYyAqKiApYWxsb2NhdGVfMmQoIHNlZywg
NCwgc2l6ZW9mKCBkcHZlYyApKTsKCiAgICAgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgc2Vn
OyBpKysgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBwZXFbIGkg
XVsgMCBdID0gfmxbIGkgXSAmIH5oWyBpIF07CiAgICAgICAgICAgICAgICAgICAgICAgIHBlcVsg
aSBdWyAxIF0gPSBsWyBpIF0gJiB+aFsgaSBdOwogICAgICAgICAgICAgICAgICAgICAgICBwZXFb
IGkgXVsgMiBdID0gfmxbIGkgXSAmIGhbIGkgXTsKICAgICAgICAgICAgICAgICAgICAgICAgcGVx
WyBpIF1bIDMgXSA9IGxbIGkgXSAmIGhbIGkgXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICByZXR1cm4gcGVxOwogICAgICAgIH0KCiAgICAgICAgaWYoIG1vZGUgPT0gMSApCiAg
ICAgICAgewogICAgICAgICAgICAgICAgcGVxID0gKCBkcHZlYyAqKiApYWxsb2NhdGVfMmQoIDQs
IHNlZywgc2l6ZW9mKCBkcHZlYyApKTsKCiAgICAgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwg
c2VnOyBpKysgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBwZXFb
IDAgXVsgaSBdID0gfmxbIGkgXSAmIH5oWyBpIF07CiAgICAgICAgICAgICAgICAgICAgICAgIHBl
cVsgMSBdWyBpIF0gPSBsWyBpIF0gJiB+aFsgaSBdOwogICAgICAgICAgICAgICAgICAgICAgICBw
ZXFbIDIgXVsgaSBdID0gfmxbIGkgXSAmIGhbIGkgXTsKICAgICAgICAgICAgICAgICAgICAgICAg
cGVxWyAzIF1bIGkgXSA9IGxbIGkgXSAmIGhbIGkgXTsKICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICByZXR1cm4gcGVxOwogICAgICAgIH0KCiAgICAgICAgZnByaW50Ziggc3RkZXJy
LCAiSW52YWxpZGUgZXEgbGF5b3V0ICVkLi4uXG4iLCBtb2RlICk7CgogICAgICAgIHJldHVybiAw
Owp9CgpzdGF0aWMgdm9pZCBzdW1fYml0c19jKCBpbnQgcCwgaW50IG4sIFZFQ1NVTSAqIHYgKQp7
CiAgICAgICAgaW50IGNwID0gMCwgY24gPSAwLCBtaW4gPSAxMDAwLCBpOwoKICAgICAgICBpID0g
KCBwIDw8IDggKSArIG47CgogICAgICAgIGRvIHsgY3AgKz0gcCAmIDE7CiAgICAgICAgICAgICAg
ICBjbiArPSBuICYgMTsKCiAgICAgICAgICAgICAgICBpZiggY3AgLSBjbiA8IG1pbiApIG1pbiA9
IGNwIC0gY247CgogICAgICAgICAgICAgICAgcCA+Pj0gMTsKICAgICAgICAgICAgICAgIG4gPj49
IDE7CgogICAgICAgIH0gd2hpbGUoIHAgfHwgbiApOwoKICAgICAgICB2LT5pWyBpIF0gPSBjcCAt
IGNuOwogICAgICAgIHYtPm1bIGkgXSA9IG1pbjsKCgp9CgpzdGF0aWMgdm9pZCBidWlsZF92ZWNz
dW0oIFZFQ1NVTSAqIFYgKQp7CiAgICAgICAgaW50IGksIGo7CgogICAgICAgIGZvciggaSA9IDA7
IGkgPCAyNTY7IGkrKyApCiAgICAgICAgICAgICAgICBmb3IoIGogPSAwOyBqIDwgMjU2OyBqKysg
KSBzdW1fYml0c19jKCBpLCBqLCBWICk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHN1bV9iaXRzKCB1
bnNpZ25lZCBwLCB1bnNpZ25lZCBuLCBpbnQgcywgaW50IGssCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgaSwgaW50IG5uICkKewogICAgICAgIGludCBqLCBtYXRjaGVzID0gMDsKCiAg
ICAgICAgZm9yKCBqID0gMDsgaiA8IDg7IGorKyApCiAgICAgICAgewogICAgICAgICAgICAgICAg
cyArPSBwICYgMTsKICAgICAgICAgICAgICAgIHMgLT0gbiAmIDE7CgogICAgICAgICAgICAgICAg
aWYoIHMgPD0gayApCiAgICAgICAgICAgICAgICB7CgoKCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmKCBpICsgaiA8IG5uICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1hdGNoZXMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiggbG9jYXRpb24gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiJTEwZCIsIGkgKyBq
ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWRpc3RhbmNl
ICkgcHJpbnRmKCJcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggZGlzdGFuY2UgKSBwcmludGYoIiUzZFxuIiwg
cyApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBzaHJpbmtrICkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiggcyA8IG1pbmRpc3QgKSBtaW5kaXN0ID0gczsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBzIC0gMTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgIHAgPj49IDE7CiAgICAgICAgICAgICAgICBuID4+PSAxOwog
ICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG1hdGNoZXM7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHN1
bV9iaXRzX3ZlY21pbiggdW5zaWduZWQgY2hhciAqIHBwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiBubiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgYiwgaW50ICogdCwgaW50IGssIFZFQ1NVTSAqIHYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG8sIGludCBtaW4s
IGludCBtLCBpbnQgbiApCnsKICAgICAgICBpbnQgaSA9IDAsIGogPSAwOwogICAgICAgIGludCBz
ID0gKnQsIG1hdGNoZXMgPSAwOwoKICAgICAgICBmb3IoIGkgPSAwOyBpIDwgYjsgaSsrICkKCiAg
ICAgICAgewoKICAgICAgICAgICAgICAgIGogPSAoKCB1bnNpZ25lZCApcHBbIGkgXSA8PCA4ICkg
KyAoIHVuc2lnbmVkIClublsgaSBdOwoKICAgICAgICAgICAgICAgIGlmKCBtaW4gKQogICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggcyArIHYtPm1bIGogXSA8PSBr
ICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmKCBtICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzICs9IHN1bV9iaXRzKCBwcFsgaSBd
LCBublsgaSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzLCBrLCBpICogOCArIG8sIG4gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmKCBzaHJpbmtrICYmIG1pbmRpc3QgPCBrICkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IG1pbmRpc3QgLSAxOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
IHMgKz0gdi0+aVsgaiBdOwoKCiAgICAgICAgfQoKCiAgICAgICAgKnQgPSBzOwoKICAgICAgICBy
ZXR1cm4gbWF0Y2hlczsKfQoKc3RhdGljIGludCBicGVkaGgoIHVuc2lnbmVkIGNoYXIgKiBULCBp
bnQgbiwgaW50IG0sIGludCBrLCBkcHZlYyAqKiBwZXEgKQp7CiAgICAgICAgZHB2ZWMgcGMsIG1j
OwogICAgICAgIGRwdmVjICplOwogICAgICAgIGRwdmVjIHgsIGQsIGhwLCBobiwgKiB2cCwgKiB2
bjsKICAgICAgICBpbnQgaSwgciwgYiwgbWF0Y2hlcyA9IDAsIG1hcFsgMjU2IF07CiAgICAgICAg
VkVDU1VNICogdjsKCiAgICAgICAgYiA9ICgoIG0gKyAoIHNpemVvZiggZHB2ZWMgKSAqIDggKSAt
IDEgKSAvICggc2l6ZW9mKCBkcHZlYyApICogOCApICk7CgoKCiAgICAgICAgaSA9ICggYiArIDEg
KSAqIHNpemVvZiggZHB2ZWMgKTsKCiAgICAgICAgdnAgPSAoIGRwdmVjICogKW1tYWxsb2MoIGkg
KTsKICAgICAgICB2biA9ICggZHB2ZWMgKiApbW1hbGxvYyggaSApOwoKICAgICAgICB2ID0gKCBW
RUNTVU0gKiApbW1hbGxvYyggc2l6ZW9mKCBWRUNTVU0gKSApOwoKICAgICAgICBidWlsZF92ZWNz
dW0oIHYgKTsKCiAgICAgICAgbWFwWydhJ10gPSBtYXBbJ0EnXSA9IDA7CiAgICAgICAgbWFwWydj
J10gPSBtYXBbJ0MnXSA9IDE7CiAgICAgICAgbWFwWydnJ10gPSBtYXBbJ0cnXSA9IDI7CiAgICAg
ICAgbWFwWyd0J10gPSBtYXBbJ1QnXSA9IDM7CgogICAgICAgIGZvciggciA9IDA7IHIgPCBiOyBy
KysgKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHZwWyByIF0gPSAoIGRwdmVjICkwOwogICAg
ICAgICAgICAgICAgdm5bIHIgXSA9ICggZHB2ZWMgKTA7CiAgICAgICAgfQoKICAgICAgICBmb3Io
IGkgPSAwOyBpIDwgbjsgaSsrICkKICAgICAgICB7CgoKICAgICAgICAgICAgICAgIGUgPSBwZXFb
IG1hcFsgVFsgaSBdXV07CgogICAgICAgICAgICAgICAgcGMgPSAoIGRwdmVjICkxOwogICAgICAg
ICAgICAgICAgbWMgPSAoIGRwdmVjICkwOwoKICAgICAgICAgICAgICAgIGZvciggciA9IDA7IHIg
PCBiOyByKysgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB4ID0g
KmUrKyB8IG1jOwoKICAgICAgICAgICAgICAgICAgICAgICAgZCA9ICgoIHZwWyByIF0gKyAoIHgg
JiB2cFsgciBdICkpIF4gdnBbIHIgXSApOwogICAgICAgICAgICAgICAgICAgICAgICBkIHw9IHgg
fCB2blsgciBdOwoKICAgICAgICAgICAgICAgICAgICAgICAgaHAgPSB2blsgciBdIHwgfiggdnBb
IHIgXSB8IGQgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaG4gPSB2cFsgciBdICYgZDsKCiAg
ICAgICAgICAgICAgICAgICAgICAgIHggPSAoIGhwIDw8IDEgKSB8IHBjOwoKICAgICAgICAgICAg
ICAgICAgICAgICAgdnBbIHIgXSA9ICggaG4gPDwgMSApIHwgbWMgfCB+KCB4IHwgZCApOwogICAg
ICAgICAgICAgICAgICAgICAgICB2blsgciBdID0geCAmIGQ7CgogICAgICAgICAgICAgICAgICAg
ICAgICBwYyA9IGhwID4+ICggKCBzaXplb2YoIGRwdmVjICkgKiA4ICkgLSAxICk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIG1jID0gaG4gPj4gKCAoIHNpemVvZiggZHB2ZWMgKSAqIDggKSAtIDEg
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG1hdGNoZXMgPSBzdW1fYml0
c192ZWNtaW4oKCB1bnNpZ25lZCBjaGFyICogKXZwLCAoIHVuc2lnbmVkIGNoYXIgKil2biwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgKiBzaXplb2YoIGRwdmVjICksICZuLCBr
LCB2LCAwLCAxLCAxLCBtICk7CgoKICAgICAgICA7CiAgICAgICAgOwogICAgICAgIDsKCiAgICAg
ICAgcmV0dXJuIG1hdGNoZXM7Cn0KIyA1MTEgImJwZWQuQyIKc3RhdGljIGludCBicGVkaCggdW5z
aWduZWQgY2hhciAqIFQsIGludCBuLCBpbnQgbSwgaW50IGssIGRwdmVjICoqIHBlcSApCnsKICAg
ICAgICBkcHZlYyAqIHBjLCAqIG1jOwogICAgICAgIGRwdmVjIHgsIGQsIGhwLCBobiwgdnAsIHZu
OwogICAgICAgIGludCBpLCByLCBiLCBtYXRjaGVzID0gMCwgbWFwWyAyNTYgXSwgc3MsIHNzcywg
bGk7CiAgICAgICAgVkVDU1VNICogdjsKCiAgICAgICAgY2hhciAqIFA7CgoKCgoKICAgICAgICBi
ID0gKCggbSArICggc2l6ZW9mKCBkcHZlYyApICogOCApIC0gMSApIC8gKCBzaXplb2YoIGRwdmVj
ICkgKiA4ICkgKTsKCiAgICAgICAgaSA9ICggbiArIDEgKSAqIHNpemVvZiggZHB2ZWMgKTsKCiAg
ICAgICAgcGMgPSAoIGRwdmVjICogKW1tYWxsb2MoIGkgKTsKICAgICAgICBtYyA9ICggZHB2ZWMg
KiApbW1hbGxvYyggaSApOwoKICAgICAgICB2ID0gKCBWRUNTVU0gKiApbW1hbGxvYyggc2l6ZW9m
KCBWRUNTVU0gKSApOwoKICAgICAgICBidWlsZF92ZWNzdW0oIHYgKTsKCiAgICAgICAgbWFwWydh
J10gPSBtYXBbJ0EnXSA9IDA7CiAgICAgICAgbWFwWydjJ10gPSBtYXBbJ0MnXSA9IDE7CiAgICAg
ICAgbWFwWydnJ10gPSBtYXBbJ0cnXSA9IDI7CiAgICAgICAgbWFwWyd0J10gPSBtYXBbJ1QnXSA9
IDM7CgogICAgICAgIFAgPSAoIGNoYXIgKiApbW1hbGxvYyggbiApOwoKICAgICAgICBmb3IoIGkg
PSAwOyBpIDwgbjsgaSsrICkgUFsgaSBdID0gbWFwWyBUWyBpIF1dOwoKICAgICAgICBmb3IoIHIg
PSAwOyByIDwgbjsgcisrICkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwY1sgciBdID0gKCBk
cHZlYyApMTsKICAgICAgICAgICAgICAgIG1jWyByIF0gPSAoIGRwdmVjICkwOwogICAgICAgIH0K
CiAgICAgICAgaWYoIGsgPiBuICkgayA9IG47CgogICAgICAgIGxpID0gayArIDE7CgogICAgICAg
IGlmKCBsaSA+IG4gKSBsaSA9IG47CgogICAgICAgIHNzcyA9IGsgKyAxOwoKICAgICAgICBmb3Io
IHIgPSAwOyByIDwgYjsgcisrICkKICAgICAgICB7CiAgICAgICAgICAgICAgICB2cCA9IHZuID0g
KCBkcHZlYyApMDsKCiAgICAgICAgICAgICAgICBpID0gMDsKCiAgICAgICAgICAgICAgICBkbyB7
IHggPSBwZXFbIHIgXVsgUFsgaSBdXSB8IG1jWyBpIF07CgoKCiAgICAgICAgICAgICAgICAgICAg
ICAgIGQgPSAoKCB2cCArICggeCAmIHZwICkpIF4gdnAgKSB8IHggfCB2bjsKCiAgICAgICAgICAg
ICAgICAgICAgICAgIGhwID0gdm4gfCB+KCB2cCB8IGQgKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgaG4gPSB2cCAmIGQ7CgogICAgICAgICAgICAgICAgICAgICAgICB4ID0gKCBocCA8PCAxICkg
fCBwY1sgaSBdOwoKICAgICAgICAgICAgICAgICAgICAgICAgdnAgPSAoIGhuIDw8IDEgKSB8IG1j
WyBpIF0gfCB+KCB4IHwgZCApOwogICAgICAgICAgICAgICAgICAgICAgICB2biA9IHggJiBkOwoK
ICAgICAgICAgICAgICAgICAgICAgICAgcGNbIGkgXSA9IGhwID4+ICggKCBzaXplb2YoIGRwdmVj
ICkgKiA4ICkgLSAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1jWyBpIF0gPSBobiA+PiAo
ICggc2l6ZW9mKCBkcHZlYyApICogOCApIC0gMSApOwoKICAgICAgICAgICAgICAgICAgICAgICAg
aWYoIGkgPCBsaSAtIDEgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKytpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmKCBpID09IGxpIC0gMSApCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3MgPSBzc3MgKyAoKCBpbnQgKXZwICYgMSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtICgoIGludCApdm4gJiAxICk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzcyArPSAoKCBpbnQgKWhwICYgMSApIC0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoIGludCApaG4gJiAxICk7CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NzID0gc3MgLSAoKCBpbnQgKXZwICYgMSAp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICgoIGlu
dCApdm4gJiAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiggaSA8IG4gLSAxICkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
Ziggc3VtX2JpdHNfdmVjbWluKCggdW5zaWduZWQgY2hhciAqICkmdnAsICggdW5zaWduZWQgY2hh
ciAqICkmdm4sIHNpemVvZiggZHB2ZWMgKSwgJnNzcywgayArIDEsIHYsIDAsIDEsIDAsIG0gKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytpOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGkgPiBsaSApCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY1sgaSBdID0gKCBkcHZlYyApMTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
Y1sgaSBdID0gKCBkcHZlYyApMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbnk7CgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55ID0gc3VtX2JpdHNfdmVjbWlu
KCAoIHVuc2lnbmVkIGNoYXIgKiApJnZwLCAoIHVuc2lnbmVkIGNoYXIgKiApJnZuLCBzaXplb2Yo
IGRwdmVjICksICZzc3MsIGssIHYsIHIgKiAoIHNpemVvZiggZHB2ZWMgKSAqIDggKSwgMSwgMSwg
bSApOzsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGFueSAp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgKz0gYW55OwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggc2hyaW5rayApCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbWluZGlz
dCAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9IHdo
aWxlKCBpIDwgbiApOwojIDY0OCAiYnBlZC5DIgogICAgICAgICAgICAgICAgbGkgPSBpOwoKICAg
ICAgICAgICAgICAgIHNzcyAtPSAoIGludCApcGNbIGkgXSAmIDE7CiAgICAgICAgICAgICAgICBz
c3MgKz0gKCBpbnQgKW1jWyBpIF0gJiAxOwogICAgICAgIH0KCiAgICAgICAgOwogICAgICAgIDsK
ICAgICAgICA7CiAgICAgICAgOwoKCgoKCgogICAgICAgIHJldHVybiBtYXRjaGVzOwp9CgoKc3Rh
dGljIGludCBicGVkaHcoIHVuc2lnbmVkIGNoYXIgKiBULCBpbnQgbiwgaW50IG0sIGludCBrLCBk
cHZlYyAqKnBlcSApCnsKICAgICAgICBkcHZlYyAqIHBjLCAqIG1jOwogICAgICAgIGRwdmVjIHgs
IGQsIGhwLCBobiwgdnAsIHZuOwogICAgICAgIGludCBpLCByLCBiLCBtYXRjaGVzID0gMCwgbWFw
WyAyNTYgXSwgc3MsIHNzcywgbGk7CiAgICAgICAgVkVDU1VNICogdjsKICAgICAgICBjaGFyICog
UDsKCgoKCgogICAgICAgIGIgPSAoKCBtICsgKCBzaXplb2YoIGRwdmVjICkgKiA4ICkgLSAxICkg
LyAoIHNpemVvZiggZHB2ZWMgKSAqIDggKSApOwoKCgoKCiAgICAgICAgaSA9ICggbiArIDEgKSAq
IHNpemVvZiggZHB2ZWMgKTsKCiAgICAgICAgcGMgPSAoIGRwdmVjICogKW1tYWxsb2MoIGkgKTsK
ICAgICAgICBtYyA9ICggZHB2ZWMgKiApbW1hbGxvYyggaSApOwoKICAgICAgICB2ID0gKCBWRUNT
VU0gKiApbW1hbGxvYyggc2l6ZW9mKCBWRUNTVU0gKSApOwoKICAgICAgICBidWlsZF92ZWNzdW0o
IHYgKTsKCiAgICAgICAgbWFwWydhJ10gPSBtYXBbJ0EnXSA9IDA7CiAgICAgICAgbWFwWydjJ10g
PSBtYXBbJ0MnXSA9IDE7CiAgICAgICAgbWFwWydnJ10gPSBtYXBbJ0cnXSA9IDI7CiAgICAgICAg
bWFwWyd0J10gPSBtYXBbJ1QnXSA9IDM7CgogICAgICAgIGZvciggciA9IDA7IHIgPCBuOyByKysg
KQogICAgICAgIHsKICAgICAgICAgICAgICAgIHBjWyByIF0gPSAoIGRwdmVjICkxOwogICAgICAg
ICAgICAgICAgbWNbIHIgXSA9ICggZHB2ZWMgKTA7CiAgICAgICAgfQoKICAgICAgICBQID0gKCBj
aGFyICogKW1tYWxsb2MoIG4gKTsKCiAgICAgICAgZm9yKCBpID0gMDsgaSA8IG47IGkrKyApIFBb
IGkgXSA9IG1hcFsgVFsgaSBdXTsKCiAgICAgICAgaWYoIGsgPiBuICkgayA9IG47CgogICAgICAg
IGxpID0gayArIDE7CgogICAgICAgIGlmKCBsaSA+IG4gKSBsaSA9IG47CgogICAgICAgIGZvcigg
ciA9IDA7IHIgPCBiOyByKysgKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHZwID0gdm4gPSAo
IGRwdmVjICkwOwoKICAgICAgICAgICAgICAgIGkgPSAwOyBzcyA9IDA7CgogICAgICAgICAgICAg
ICAgZG8geyB4ID0gcGVxWyByIF1bIFBbIGkgXV0gfCBtY1sgaSBdOwoKICAgICAgICAgICAgICAg
ICAgICAgICAgZCA9ICgoIHZwICsgKCB4ICYgdnAgKSkgXiB2cCApIHwgeCB8IHZuOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgaHAgPSB2biB8IH4oIHZwIHwgZCApOwogICAgICAgICAgICAgICAg
ICAgICAgICBobiA9IHZwICYgZDsKCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSAoIGhwIDw8
IDEgKSB8IHBjWyBpIF07CgogICAgICAgICAgICAgICAgICAgICAgICB2cCA9ICggaG4gPDwgMSAp
IHwgbWNbIGkgXSB8IH4oIHggfCBkICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZuID0geCAm
IGQ7CgogICAgICAgICAgICAgICAgICAgICAgICBwY1sgaSBdID0gaHAgPj4gKCAoIHNpemVvZigg
ZHB2ZWMgKSAqIDggKSAtIDEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbWNbIGkgXSA9IGhu
ID4+ICggKCBzaXplb2YoIGRwdmVjICkgKiA4ICkgLSAxICk7CgogICAgICAgICAgICAgICAgICAg
ICAgICBzcyArPSAoIGludCApaHAgJiAxOwogICAgICAgICAgICAgICAgICAgICAgICBzcyAtPSAo
IGludCApaG4gJiAxOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGkgPCBsaSAtIDEgKQog
ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KytpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNzcyA9IHNzIC0gKCggaW50ICl2cCAmIDEgKSArCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoKCBpbnQgKXZuICYgMSApOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiggaSA8IG4gLSAxICkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggc3VtX2Jp
dHNfdmVjbWluKCggdW5zaWduZWQgY2hhciAqICkmdnAsICggdW5zaWduZWQgY2hhciAqICkmdm4s
IHNpemVvZiggZHB2ZWMgKSwgJnNzcywgayArIDEsIHYsIDAsIDEsIDAsIG0gKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKytpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYoIGkgPiBsaSApCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwY1sgaSBdID0gKCBkcHZlYyApMTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtY1sgaSBdID0g
KCBkcHZlYyApMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbnk7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55ID0gc3VtX2JpdHNfdmVjbWluKCAoIHVuc2ln
bmVkIGNoYXIgKiApJnZwLCAoIHVuc2lnbmVkIGNoYXIgKiApJnZuLCBzaXplb2YoIGRwdmVjICks
ICZzc3MsIGssIHYsIHIgKiAoIHNpemVvZiggZHB2ZWMgKSAqIDggKSwgMSwgMSwgbSApOzsKCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGFueSApCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgKz0gYW55OwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggc2hyaW5rayApCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbWluZGlzdCAtIDE7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9IHdoaWxlKCBpIDwg
biApOwojIDc5NiAiYnBlZC5DIgogICAgICAgICAgICAgICAgbGkgPSBpOwoKCgogICAgICAgIH0K
CiAgICAgICAgOwogICAgICAgIDsKICAgICAgICA7CiAgICAgICAgOwoKCgoKCgogICAgICAgIHJl
dHVybiBtYXRjaGVzOwp9CgoKc3RhdGljIGRwdmVjICogcHJlcF9iZXFfdiggdW5zaWduZWQgY2hh
ciAqIFAsIGludCBtICkKewogICAgICAgIGludCBhLCBwOwogICAgICAgIGRwdmVjICogcGVxLCBt
bTsKCiAgICAgICAgcGVxID0gKCBkcHZlYyAqICltbWFsbG9jKCAyNTYgKiBzaXplb2YoIGRwdmVj
ICkgKTsKCiAgICAgICAgZm9yKCBhID0gMDsgYSA8IDI1NjsgYSsrICkgcGVxWyBhIF0gPSAoIGRw
dmVjICkwOwoKICAgICAgICBtbSA9ICggZHB2ZWMgKTE7CgogICAgICAgIGZvciggcCA9IDA7IHAg
PCBtOyBwKysgKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHBlcVsgUFsgcCBdXSB8PSBtbTsK
ICAgICAgICAgICAgICAgIG1tIDw8PSAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHBlcTsK
fQoKc3RhdGljIGludCBicGVkdiggdW5zaWduZWQgY2hhciAqIFQsIGludCBuLCBpbnQgbSwgaW50
IGssIGRwdmVjICogcGVxICkKewogICAgICAgIGRwdmVjIGVxOwogICAgICAgIGRwdmVjIHh2LCBt
diwgeGgsIHB2LCBwaCwgbWg7CiAgICAgICAgaW50IG1hdGNoZXMgPSAwLCBqLCBzY29yZSA9IG07
CiAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IHNtID0gbSAtIDE7CgogICAgICAgIHB2ID0gfigg
ZHB2ZWMgKTA7CiAgICAgICAgbXYgPSAoIGRwdmVjICkwOwoKICAgICAgICBmb3IoIGogPSAwOyBq
IDwgbjsgaisrICkKICAgICAgICB7CgogICAgICAgICAgICAgICAgZXEgPSBwZXFbIFRbIGogXV07
CgogICAgICAgICAgICAgICAgeHYgPSBlcSB8IG12OwogICAgICAgICAgICAgICAgeGggPSAoKCgg
ZXEgJiBwdiApICsgcHYgKSBeIHB2ICkgfCBlcTsKCiAgICAgICAgICAgICAgICBwaCA9IG12IHwg
figgeGggfCBwdiApOwogICAgICAgICAgICAgICAgbWggPSBwdiAmIHhoOwoKICAgICAgICAgICAg
ICAgIHNjb3JlICs9ICggaW50ICkoIHBoID4+IHNtICkgJiAxOwogICAgICAgICAgICAgICAgc2Nv
cmUgLT0gKCBpbnQgKSggbWggPj4gc20gKSAmIDE7CgogICAgICAgICAgICAgICAgcGggPSBwaCA8
PCAxOwogICAgICAgICAgICAgICAgcHYgPSAoIG1oIDw8IDEgKSB8IH4oIHh2IHwgcGggKTsKICAg
ICAgICAgICAgICAgIG12ID0gcGggJiB4djsKCiAgICAgICAgICAgICAgICBpZiggc2NvcmUgPD0g
ayApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMrKzsK
CgoKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBtYXRjaGVzOwp9
Cgp2b2lkIHZlcnRpY2FsKCBjaGFyICogZm4sIGNoYXIgKiBwLCBpbnQgayApCnsKICAgICAgICBp
bnQgbSwgbiwgbWF0Y2hlczsKICAgICAgICBjaGFyICogdDsKICAgICAgICBkcHZlYyAqIHBlcTsK
CiAgICAgICAgcHJpbnRmKCJSZWFkaW5nIGZpbGUuLi4gIik7IGZmbHVzaCggc3Rkb3V0ICk7Cgog
ICAgICAgIHN0YXJ0Y2xvY2soKTsKCiAgICAgICAgdCA9IGZfcmVhZF9ieXRlcyggZm4sICZuICk7
CgogICAgICAgIHByaW50ZigiRG9uZSwgcmVhZCAlZCBieXRlcywgdGltZTogJTEuMmZcbiIsIG4s
CiAgICAgICAgICAgICAgIHN0b3BjbG9jaygpIC8gKCBkb3VibGUgKXN5c2NvbmYoIF9TQ19DTEtf
VENLICkgKTsKCiAgICAgICAgbSA9IHN0cmxlbiggcCApOwoKICAgICAgICBpZiggbSA+IDEyOCAp
CiAgICAgICAgewogICAgICAgICAgICAgICAgZnByaW50Ziggc3RkZXJyLCAiUGF0dGVybiB0b28g
bG9uZyAoJWQgPiAlZCkuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgbSwgMTI4ICk7CiAg
ICAgICAgICAgICAgICBleGl0KCAxICk7CiAgICAgICAgfQoKICAgICAgICBwcmludGYoIlByZXBy
b2Nlc3NpbmcuLi4gIik7IGZmbHVzaCggc3Rkb3V0ICk7CgogICAgICAgIHN0YXJ0Y2xvY2soKTsK
CiAgICAgICAgcGVxID0gcHJlcF9iZXFfdigoIHVuc2lnbmVkIGNoYXIgKiApcCwgbSApOwoKICAg
ICAgICBwcmludGYoIkRvbmUsIHRpbWU6ICUxLjJmXG4iLCBzdG9wY2xvY2soKSAvICggZG91Ymxl
IClzeXNjb25mKCBfU0NfQ0xLX1RDSyApICk7CgogICAgICAgIHByaW50ZigiU2VhcmNoaW5nLi4u
ICIpOyBmZmx1c2goIHN0ZG91dCApOwoKICAgICAgICBzdGFydGNsb2NrKCk7CgogICAgICAgIG1h
dGNoZXMgPSBicGVkdigoIHVuc2lnbmVkIGNoYXIgKiApdCwgbiwgbSwgaywgcGVxICk7CgogICAg
ICAgIHByaW50ZigiRG9uZSwgJWQgbWF0Y2hlcywgdGltZTogJTEuMmZcbiIsCiAgICAgICAgICAg
ICAgIG1hdGNoZXMsIHN0b3BjbG9jaygpIC8gKCBkb3VibGUgKXN5c2NvbmYoIF9TQ19DTEtfVENL
ICkgKTsKfQoKdm9pZCBob3Jpem9udGFsKCBjaGFyICogZm4sIGNoYXIgKiBwLCBpbnQgaywgaW50
IGFsbCApCnsKICAgICAgICBpbnQgaSwgaiwgbSwgbiwgbm4sIG1hdGNoZXM7CiAgICAgICAgY2hh
ciAqIGwsICogaDsKICAgICAgICBkcHZlYyAqKiBicGVxOwoKICAgICAgICBpZiggdGltaW5nICkK
ICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYoIlJlYWRpbmcgZmlsZS4uLiAiKTsgZmZs
dXNoKCBzdGRvdXQgKTsKICAgICAgICAgICAgICAgIHN0YXJ0Y2xvY2soKTsKICAgICAgICB9Cgog
ICAgICAgIGkgPSBvcGVuKCBmbiwgMDAgKTsKCiAgICAgICAgcmVhZCggaSwgJm4sIHNpemVvZigg
aW50ICkpOwoKCgoKCiAgICAgICAgbm4gPSBuOwoKICAgICAgICBtID0gKCBuICsgNyApIC8gODsK
CiAgICAgICAgbCA9ICggY2hhciAqICltbWFsbG9jKCBtICk7CiAgICAgICAgaCA9ICggY2hhciAq
ICltbWFsbG9jKCBtICk7CgogICAgICAgIGogPSByZWFkKCBpLCBsLCBtICk7CiAgICAgICAgaiAr
PSByZWFkKCBpLCBoLCBtICk7CgogICAgICAgIGNsb3NlKCBpICk7CgogICAgICAgIGlmKCB0aW1p
bmcgKSBwcmludGYoIkRvbmUsIHJlYWQgJWQgYnl0ZXMsIHRpbWU6ICUxLjJmXG4iLCBqLAogICAg
ICAgICAgICAgICBzdG9wY2xvY2soKSAvICggZG91YmxlIClzeXNjb25mKCBfU0NfQ0xLX1RDSyAp
ICk7CgogICAgICAgIG0gPSBzdHJsZW4oIHAgKTsKCiAgICAgICAgaWYoIHRpbWluZyApIHsgcHJp
bnRmKCJQcmVwcm9jZXNzaW5nLi4uICIpOyBmZmx1c2goIHN0ZG91dCApOyB9CgogICAgICAgIHN0
YXJ0Y2xvY2soKTsKCiAgICAgICAgYnBlcSA9IHByZXBfYmVxX2goKCBkcHZlYyAqIClsLCAoIGRw
dmVjICogKWgsIG5uLCBhbGwgKTsKCiAgICAgICAgaWYoIHRpbWluZyApCiAgICAgICAgewogICAg
ICAgICAgICAgICAgcHJpbnRmKCJEb25lLCB0aW1lOiAlMS4yZlxuIiwgc3RvcGNsb2NrKCkgLyAo
IGRvdWJsZSApc3lzY29uZiggX1NDX0NMS19UQ0sgKSApOwoKICAgICAgICAgICAgICAgIHByaW50
ZigiU2VhcmNoaW5nLi4uICIpOwogICAgICAgICAgICAgICAgaWYoIGxvY2F0aW9uIHx8IGRpc3Rh
bmNlICkgcHJpbnRmKCJcbiIpOwogICAgICAgICAgICAgICAgZmZsdXNoKCBzdGRvdXQgKTsKCiAg
ICAgICAgICAgICAgICBzdGFydGNsb2NrKCk7CiAgICAgICAgfQoKCgoKCiAgICAgICAgICAgICAg
ICBtYXRjaGVzID0gYnBlZGh3KCggdW5zaWduZWQgY2hhciAqIClwLCBtLCBubiwgaywgYnBlcSAp
OwoKICAgICAgICBpZiggdGltaW5nICkgcHJpbnRmKCJEb25lLCAlZCBtYXRjaGVzLCB0aW1lOiAl
MS4yZlxuIiwKICAgICAgICAgICAgICAgbWF0Y2hlcywgc3RvcGNsb2NrKCkgLyAoIGRvdWJsZSAp
c3lzY29uZiggX1NDX0NMS19UQ0sgKSApOwp9CgoKdm9pZCBoZWxwKCBjaGFyICogbWUgKQp7CiAg
ICAgICAgZnByaW50Ziggc3RkZXJyLAogICAgICAgICAgICAgICAgICJcbihDKSBLaW1tbyBGcmVk
cmlrc3NvbiAyMDAzLlxuXG4iKTsKICAgICAgICBmcHJpbnRmKCBzdGRlcnIsCiAgICAgICAgICAg
ICAgICAgIlxuU2VhcmNoZXMgZG5hIHBhdHRlcm4gZnJvbSBhIGdpdmVuIHBhY2tlZCBkbmEgZmls
ZS5cblxuIik7CiAgICAgICAgZnByaW50Ziggc3RkZXJyLAogICAgICAgICAgICAgICAgICJVc2Fn
ZTogJXMgW29wdGlvbnNdLCB3aGVyZSB0aGUgb3B0aW9ucyBhcmU6XG4iLCBtZSApOwogICAgICAg
IGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAgICAgICAiXHQtZiBmaWxlXHR0aGUgcGFja2Vk
IGRuYSBmaWxlIHRvIHNlYXJjaCAocmVxdWlyZWQpXG4iKTsKICAgICAgICBmcHJpbnRmKCBzdGRl
cnIsCiAgICAgICAgICAgICAgICAgIlx0LXAgcGF0XHR1c2UgcGF0IGFzIHRoZSBwYXR0ZXJuIChy
ZXF1aXJlZClcbiIpOwogICAgICAgIGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAgICAgICAi
XHQtayAjXHRhbGxvdyBhdCBtb3N0ICMgZWRpdCBvcGVyYXRpb25zIGluIHRoZSBtYXRjaGVzXG4i
KTsKICAgICAgICBmcHJpbnRmKCBzdGRlcnIsCiAgICAgICAgICAgICAgICAgIlx0LXNcdGZvcmNl
OiBrID0gdGhlIG1pbiBkaXN0YW5jZSBzbyBmYXIgLSAxXG4iKTsKICAgICAgICBmcHJpbnRmKCBz
dGRlcnIsCiAgICAgICAgICAgICAgICAgIlx0LWxcdHByaW50IHRoZSBtYXRjaGluZyBsb2NhdGlv
bnNcbiIpOwogICAgICAgIGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAgICAgICAiXHQtZFx0
cHJpbnQgdGhlIGRpc3RhbmNlIG9mIHRoZSBvY2N1cnJlbmNlXG4iKTsKICAgICAgICBmcHJpbnRm
KCBzdGRlcnIsCiAgICAgICAgICAgICAgICAgIlx0LXRcdHJlcG9ydCBleGVjdXRpb24gdGltZVxu
Iik7CiAgICAgICAgZnByaW50Ziggc3RkZXJyLAogICAgICAgICAgICAgICAgICJcdC0/XHRzaG93
IHRoaXMgbWVzc2FnZVxuIik7CgogICAgICAgIGZwcmludGYoIHN0ZGVyciwgIlxuRGVidWdnaW5n
ICh3aGljaCBidWdzPyksIGV0YzpcblxuIiApOwoKICAgICAgICBmcHJpbnRmKCBzdGRlcnIsCiAg
ICAgICAgICAgICAgICAgIlx0LXZcdGJlIHZlcnRpY2FsLi4uXG4iKTsKICAgICAgICBmcHJpbnRm
KCBzdGRlcnIsCiAgICAgICAgICAgICAgICAgIlx0LWhcdGJlIGhvcml6b250YWwsIHRoaXMgaXMg
dGhlIGRlZmF1bHQuLi5cbiIpOwogICAgICAgIGZwcmludGYoIHN0ZGVyciwKICAgICAgICAgICAg
ICAgICAiXHQtbVx0Y29tcHV0ZSB0aGUgd2hvbGUgbWF0cml4LCBpbXBsaWVzIC1oXG4iKTsKICAg
ICAgICBmcHJpbnRmKCBzdGRlcnIsCiAgICAgICAgICAgICAgICAgIlx0LXFcdFxuXG4iKTsKCiAg
ICAgICAgZXhpdCggMCApOwp9Cgpsb25nIGxvbmcgZm9vKCBsb25nIGxvbmcgYSwgbG9uZyBsb25n
IGIgKQp7CiAgICAgICAgcmV0dXJuICggbG9uZyBsb25nICkoIGEgPCBiICk7Cn0KCmludCBtYWlu
KCBpbnQgYXJnYywgY2hhciAqKiBhcmd2ICkKewogICAgICAgIGludCBvcHQsIGsgPSAwOwogICAg
ICAgIGNoYXIgKiBwID0gMCwgKiBmbiA9IDAsICogbWU7CiAgICAgICAgaW50IHYgPSAwLCBoID0g
MSwgbSA9IDA7CgogICAgICAgIHByaW50ZigiJWRcbiIsICggc2l6ZW9mKCBkcHZlYyApICogOCAp
ICk7CgogICAgICAgIG1lID0gYXJndlsgMCBdOwoKICAgICAgICB3aGlsZSgoIG9wdCA9IGdldG9w
dCggYXJnYywgYXJndiwgImY6cDprOmxkdHZobXFzPyIpKSAhPSAtMSApCiAgICAgICAgewogICAg
ICAgICAgICAgICAgc3dpdGNoKCBvcHQgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlICdmJyA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4g
PSBzdHJkdXAoIG9wdGFyZyApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdrJyA6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgayA9IGF0b2koIG9wdGFyZyApOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwJyA6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHN0cmR1cCggb3B0YXJnICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
J2wnIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IDE7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgJ2QnIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IDE7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ3QnIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1pbmcg
PSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlICd2JyA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9
IDE7IGggPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlICdoJyA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaCA9IDE7IHYgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdxJyA6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcXVpZXQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtJyA6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbSA9IDE7IGggPSAxOyB2ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncycgOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNocmlua2sgPSAxOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc/JyA6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscCggbWUgKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKCBzdGRlcnIsICJJbnZhbGlk
IG9wdDogJWMuXG4iLCBvcHQgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
KCBtZSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgfQogICAgICAgIH0KCgogICAgICAgIGlmKCAhZm4gKQogICAgICAgIHsKICAgICAgICAg
ICAgICAgIGZwcmludGYoIHN0ZGVyciwgIkdpdmUgbWUgYSBmaWxlIG5hbWU6IC1mIGZpbGVcbiIp
OwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIGlmKCAhcCApCiAg
ICAgICAgewogICAgICAgICAgICAgICAgZnByaW50Ziggc3RkZXJyLCAiR2l2ZSBtZSBhIHBhdHRl
cm46IC1wIHBhdHRlcm5cbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQoK
ICAgICAgICBpZiggc2hyaW5rayApIHNocmlua2sgPSBrOwoKICAgICAgICBpZiggdiApIHZlcnRp
Y2FsKCBmbiwgcCwgayApOyBlbHNlCiAgICAgICAgaWYoIGggKSBob3Jpem9udGFsKCBmbiwgcCwg
aywgbSApOwoKICAgICAgICByZXR1cm4gMDsKfQo=


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

only message in thread, other threads:[~2003-01-22 14:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-01-22 14:46 c++/9401: g++ 3.1 and above produce internal compiler error when using built-in vector intrinsics kfredrik

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