public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* other/3192: "Can not split insn" in TuxRacer 0.61 source
@ 2001-06-15  0:46 vogon_jeltz
  0 siblings, 0 replies; only message in thread
From: vogon_jeltz @ 2001-06-15  0:46 UTC (permalink / raw)
  To: gcc-gnats

>Number:         3192
>Category:       other
>Synopsis:       "Can not split insn" in TuxRacer 0.61 source
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Fri Jun 15 00:46:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Colin Bayer
>Release:        gcc version 3.1 20010613 (experimental) i686-pc-linux-gnu
>Organization:
>Environment:
CFLAGS="-msse -march=pentiumpro"
CXXFLAGS="-msse -march=pentiumpro"
System type: i686-pc-linux-gnu
Processor: Pentium III (Coppermine) -- 
	family 6, model 8, stepping 6
Kernel: 2.4.5
>Description:
While compiling the TuxRacer 
( http://sourceforge.net/projects/tuxracer ) v.0.61 sources,
during the "make" step, GCC bombs with the following errors:

quadtree.cpp: In constructor `quadsquare::quadsquare(quadcornerdata*)':
quadtree.cpp:121: Could not split insn
(insn:TI 890 889 790 (parallel[
            (set (reg:SF 22 exmm1 [199])
                (if_then_else:SF (lt (reg:SF 22 exmm1 [199])
                        (reg/v:SF 21 exmm0 [143]))
                    (reg:SF 22 exmm1 [199])
                    (reg/v:SF 21 exmm0 [143])))
            (clobber (reg:CC 17 flags))
        ] ) 612 {*minsf_nonieee} (insn_list 416 (insn_list 889 (nil)))
    (expr_list:REG_UNUSED (reg:CC 17 flags)
        (nil)))
quadtree.cpp:121: Internal compiler error in final_scan_insn, at final.c:2911
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.

The following optimization options were enabled for C/C++
compiling:

	-msse, -march=pentiumpro

>How-To-Repeat:
1) Download the sources from the TuxRacer Web site.
2) Untar, and configure with this command line:

	CFLAGS="-msse -march=pentiumpro" CXXFLAGS="-msse
		-march=pentiumpro" ./configure

3) Compile as normal.  It should crash while compiling
quadtree.cpp.
>Fix:
Fix i386.md file?
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="quadtree.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="quadtree.ii"

IyAxMyAicXVhZHRyZWUuY3BwIgojIDEgInR1eHJhY2VyLmgiIDEKIyAyNCAidHV4cmFjZXIuaCIK
IyAxICIuLi9jb25maWcuaCIgMQojIDI1ICJ0dXhyYWNlci5oIiAyCiMgNjggInR1eHJhY2VyLmgi
CiMgMSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9tYXRoLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUv
ZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjg0ICIv
dXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzEzICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjggIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKZXh0ZXJu
ICJDIiB7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMSAzCiMgMjUgIi91
c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDIgMwojIDM0ICIvdXNy
L2luY2x1ZGUvbWF0aC5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9uYW4uaCIgMSAz
CiMgMzggIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
bWF0aGRlZi5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGRlZi5oIiAzCnR5cGVk
ZWYgbG9uZyBkb3VibGUgZmxvYXRfdDsKCnR5cGVkZWYgbG9uZyBkb3VibGUgZG91YmxlX3Q7CiMg
NDEgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDYzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwojIDU0ICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIGFjb3MgKGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fYWNvcyAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRl
cm4gZG91YmxlIGFzaW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYXNp
biAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gp
IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYXRhbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7Cgpl
eHRlcm4gZG91YmxlIGF0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX2F0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpl
eHRlcm4gZG91YmxlIGNvcyAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19j
b3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBzaW4gKGRvdWJsZSBfX3gp
IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2luIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4
dGVybiBkb3VibGUgdGFuIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3Rh
biAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIHNpbmNvcyAoZG91YmxlIF9f
eCwgZG91YmxlICpfX3NpbngsIGRvdWJsZSAqX19jb3N4KSB0aHJvdyAoKTsgZXh0ZXJuIHZvaWQg
X19zaW5jb3MgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4
dGVybiBkb3VibGUgX19jb3NoIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUg
c2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zaW5oIChkb3VibGUg
X194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgdGFuaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBkb3VibGUgX190YW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRv
dWJsZSBhY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hY29zaCAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGFzaW5oIChkb3VibGUgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2FzaW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4
dGVybiBkb3VibGUgYXRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f
YXRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBkb3VibGUgZXhwIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2V4cCAoZG91YmxlIF9feCkgdGhyb3cg
KCk7CgoKCmV4dGVybiBkb3VibGUgZXhwMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fZXhwMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBwb3cx
MCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19wb3cxMCAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19l
eHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mcmV4cCAoZG91YmxlIF9feCwgaW50
ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGxkZXhwIChkb3VibGUgX194
LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sZGV4cCAoZG91Ymxl
IF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZyAoZG91YmxlIF9feCkgdGhyb3cg
KCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cxMCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBk
b3VibGUgX19sb2cxMCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBtb2Rm
IChkb3VibGUgX194LCBkb3VibGUgKl9faXB0cikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19t
b2RmIChkb3VibGUgX194LCBkb3VibGUgKl9faXB0cikgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3Vi
bGUgZXhwbTEgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXhwbTEgKGRv
dWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fbG9nMXAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4
dGVybiBkb3VibGUgbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19s
b2diIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgZXhwMiAoZG91Ymxl
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19leHAyIChkb3VibGUgX194KSB0aHJvdyAo
KTsKCgpleHRlcm4gZG91YmxlIGxvZzIgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fbG9nMiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgcG93
IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3BvdyAo
ZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBzcXJ0IChk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NxcnQgKGRvdWJsZSBfX3gpIHRo
cm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2h5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB0
aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgY2JydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4
dGVybiBkb3VibGUgX19jYnJ0IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRv
dWJsZSBjZWlsIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2NlaWwgKGRv
dWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmFicyAo
ZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy
biBkb3VibGUgZmxvb3IgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZmxv
b3IgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgZm1vZCAoZG91YmxlIF9f
eCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mbW9kIChkb3VibGUgX194
LCBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgX19pc2luZiAoZG91YmxlIF9f
dmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50
IF9fZmluaXRlIChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZSAoZG91YmxlIF9f
dmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91
YmxlIGRyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fZHJlbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3Vi
bGUgc2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2ln
bmlmaWNhbmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGRvdWJsZSBjb3B5c2ln
biAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOyBleHRlcm4gZG91YmxlIF9fY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBkb3VibGUg
bmFuIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmFuIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBfX2lzbmFuIChk
b3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpl
eHRlcm4gaW50IGlzbmFuIChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgajAgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVy
biBkb3VibGUgX19qMCAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSBqMSAoZG91Ymxl
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2oxIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4g
ZG91YmxlIGpuIChpbnQsIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19qbiAoaW50
LCBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpIHRocm93ICgpOyBl
eHRlcm4gZG91YmxlIF9feTAgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgeTEgKGRv
dWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX195MSAoZG91YmxlKSB0aHJvdyAoKTsKZXh0
ZXJuIGRvdWJsZSB5biAoaW50LCBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9feW4g
KGludCwgZG91YmxlKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZG91YmxlIGVyZiAoZG91YmxlKSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2VyZiAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRv
dWJsZSBlcmZjIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXJmYyAoZG91Ymxl
KSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSBsZ2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVy
biBkb3VibGUgX19sZ2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgdGdh
bW1hIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fdGdhbW1hIChkb3VibGUpIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIGRvdWJsZSBnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJu
IGRvdWJsZSBfX2dhbW1hIChkb3VibGUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIGxn
YW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg
X19sZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOwoKCgoKCgpleHRl
cm4gZG91YmxlIHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcmlu
dCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBuZXh0YWZ0ZXIgKGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg
ZXh0ZXJuIGRvdWJsZSBfX25leHRhZnRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKZXh0ZXJuIGRvdWJsZSBuZXh0dG93YXJk
IChkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25leHR0b3dhcmQgKGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRl
cm4gZG91YmxlIHJlbWFpbmRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4
dGVybiBkb3VibGUgX19yZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgp
OwoKCgpleHRlcm4gZG91YmxlIHNjYWxiIChkb3VibGUgX194LCBkb3VibGUgX19uKSB0aHJvdyAo
KTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxiIChkb3VibGUgX194LCBkb3VibGUgX19uKSB0aHJvdyAo
KTsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGJuIChkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAo
KTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibiAoZG91YmxlIF9feCwgaW50IF9fbikgdGhyb3cgKCk7
CgoKCmV4dGVybiBpbnQgaWxvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gaW50IF9f
aWxvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYmxuIChk
b3VibGUgX194LCBsb25nIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2NhbGJs
biAoZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBu
ZWFyYnlpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbmVhcmJ5aW50
IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSByb3VuZCAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19yb3VuZCAoZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKCmV4dGVybiBkb3VibGUgdHJ1bmMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX3RydW5jIChkb3VibGUgX194KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gZG91YmxlIHJlbXF1
byAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7IGV4dGVybiBk
b3VibGUgX19yZW1xdW8gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93
ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBpbnQgX19scmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25n
IGxvbmcgaW50IGxscmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcg
aW50IF9fbGxyaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgaW50IGxy
b3VuZCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyb3VuZCAoZG91
YmxlIF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscm91bmQgKGRvdWJsZSBf
X3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmQgKGRvdWJsZSBfX3gp
IHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGZkaW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZmRpbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBmbWF4IChkb3VibGUgX194LCBkb3VibGUgX195KSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2ZtYXggKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRo
cm93ICgpOwoKCmV4dGVybiBkb3VibGUgZm1pbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX19mbWluIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnkgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAo
KQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJp
dCAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgpleHRlcm4gZG91YmxlIGZtYSAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgZG91Ymxl
IF9feikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mbWEgKGRvdWJsZSBfX3gsIGRvdWJsZSBf
X3ksIGRvdWJsZSBfX3opIHRocm93ICgpOwojIDY0ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMK
IyA4MiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhj
YWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJu
IGZsb2F0IGFjb3NmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hY29zZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhc2luZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4g
ZmxvYXQgYXRhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2F0YW5mIChm
bG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195LCBmbG9h
dCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQg
X194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGZsb2F0IF9fY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBz
aW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zaW5mIChmbG9hdCBfX3gp
IHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHRhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVy
biBmbG9hdCBfX3RhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIHNpbmNv
c2YgKGZsb2F0IF9feCwgZmxvYXQgKl9fc2lueCwgZmxvYXQgKl9fY29zeCkgdGhyb3cgKCk7IGV4
dGVybiB2b2lkIF9fc2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAqX19zaW54LCBmbG9hdCAqX19j
b3N4KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGNvc2hmIChmbG9hdCBfX3gpIHRocm93
ICgpOyBleHRlcm4gZmxvYXQgX19jb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBm
bG9hdCBzaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2luaGYgKGZs
b2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgdGFuaGYgKGZsb2F0IF9feCkgdGhyb3cg
KCk7IGV4dGVybiBmbG9hdCBfX3RhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4g
ZmxvYXQgYWNvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hY29zaGYg
KGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgYXNpbmhmIChmbG9hdCBfX3gpIHRo
cm93ICgpOyBleHRlcm4gZmxvYXQgX19hc2luaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRl
cm4gZmxvYXQgYXRhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hdGFu
aGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGZsb2F0IGV4cGYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2V4cGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoK
CmV4dGVybiBmbG9hdCBleHAxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X2V4cDEwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBwb3cxMGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3BvdzEwZiAoZmxvYXQgX194KSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoZmxvYXQgX194LCBpbnQgKl9fZXhwb25lbnQpIHRo
cm93ICgpOyBleHRlcm4gZmxvYXQgX19mcmV4cGYgKGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50
KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbGRleHBmIChmbG9hdCBfX3gsIGludCBfX2V4cG9u
ZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbGRleHBmIChmbG9hdCBfX3gsIGludCBfX2V4
cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nZiAoZmxvYXQgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGZsb2F0IF9fbG9nZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxv
YXQgbG9nMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sb2cxMGYgKGZs
b2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IG1vZGZmIChmbG9hdCBfX3gsIGZsb2F0
ICpfX2lwdHIpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19tb2RmZiAoZmxvYXQgX194LCBmbG9h
dCAqX19pcHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IGV4cG0xZiAoZmxvYXQgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXhwbTFmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4
dGVybiBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xv
ZzFwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nYmYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZ2JmIChmbG9hdCBfX3gpIHRocm93ICgpOwoK
CgoKZXh0ZXJuIGZsb2F0IGV4cDJmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19leHAyZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nMmYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZzJmIChmbG9hdCBfX3gpIHRocm93ICgp
OwoKCgoKCgpleHRlcm4gZmxvYXQgcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgp
OyBleHRlcm4gZmxvYXQgX19wb3dmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19z
cXJ0ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAoZmxvYXQg
X194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19oeXBvdGYgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBjYnJ0ZiAoZmxvYXQgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fY2JydGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoK
CgoKCmV4dGVybiBmbG9hdCBjZWlsZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9fY2VpbGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZhYnNmIChmbG9h
dCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0
IF9fZmFic2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCmV4dGVybiBmbG9hdCBmbG9vcmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX2Zsb29yZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgZm1vZGYgKGZs
b2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1vZGYgKGZsb2F0
IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgX19pc2luZmYgKGZsb2F0
IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g
aW50IF9fZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZmYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWYgKGZsb2F0
IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g
ZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9fZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0
IHNpZ25pZmljYW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2lnbmlm
aWNhbmRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGZsb2F0IGNvcHlzaWduZiAo
ZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGZsb2F0IF9fY29weXNpZ25mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGZsb2F0IG5hbmYgKF9f
Y29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBmbG9hdCBfX25hbmYgKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9faXNuYW5mIChmbG9hdCBf
X3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBp
bnQgaXNuYW5mIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGowZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19qMGYgKGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IGoxZiAoZmxvYXQpIHRocm93ICgp
OyBleHRlcm4gZmxvYXQgX19qMWYgKGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IGpuZiAo
aW50LCBmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2puZiAoaW50LCBmbG9hdCkgdGhy
b3cgKCk7CmV4dGVybiBmbG9hdCB5MGYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f
eTBmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCB5MWYgKGZsb2F0KSB0aHJvdyAoKTsg
ZXh0ZXJuIGZsb2F0IF9feTFmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCB5bmYgKGlu
dCwgZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX195bmYgKGludCwgZmxvYXQpIHRocm93
ICgpOwoKCgoKCmV4dGVybiBmbG9hdCBlcmZmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX2VyZmYgKGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IGVyZmNmIChmbG9hdCkgdGhy
b3cgKCk7IGV4dGVybiBmbG9hdCBfX2VyZmNmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9h
dCBsZ2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWYgKGZsb2F0
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IHRnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fdGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGZsb2F0IGdh
bW1hZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19nYW1tYWYgKGZsb2F0KSB0aHJv
dyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGxnYW1tYWZfciAoZmxvYXQsIGludCAqX19zaWduZ2Ft
cCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWZfciAoZmxvYXQsIGludCAqX19zaWdu
Z2FtcCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBmbG9hdCByaW50ZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGZsb2F0IF9fcmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGZsb2F0IG5leHRhZnRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25leHRhZnRlcmYgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpleHRl
cm4gZmxvYXQgbmV4dHRvd2FyZGYgKGZsb2F0IF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25leHR0b3dhcmRm
IChmbG9hdCBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgpleHRlcm4gZmxvYXQgcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBf
X3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19yZW1haW5kZXJmIChmbG9hdCBfX3gsIGZsb2F0
IF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBzY2FsYmYgKGZsb2F0IF9feCwgZmxvYXQg
X19uKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJmIChmbG9hdCBfX3gsIGZsb2F0IF9f
bikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19u
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpbG9nYmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVy
biBpbnQgX19pbG9nYmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgc2Nh
bGJsbmYgKGZsb2F0IF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f
c2NhbGJsbmYgKGZsb2F0IF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZs
b2F0IG5lYXJieWludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX25lYXJi
eWludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCByb3VuZGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3JvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGZsb2F0IHRydW5jZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX3RydW5jZiAoZmxvYXQgX194KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gZmxvYXQgcmVtcXVv
ZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX19yZW1xdW9mIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7
CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVy
biBsb25nIGludCBfX2xyaW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9u
ZyBpbnQgbGxyaW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
X19sbHJpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5k
ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kZiAoZmxvYXQg
X194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGYgKGZsb2F0IF9feCkg
dGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZGYgKGZsb2F0IF9feCkgdGhy
b3cgKCk7CgoKCmV4dGVybiBmbG9hdCBmZGltZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93
ICgpOyBleHRlcm4gZmxvYXQgX19mZGltZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgp
OwoKCmV4dGVybiBmbG9hdCBmbWF4ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBl
eHRlcm4gZmxvYXQgX19mbWF4ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCmV4
dGVybiBmbG9hdCBmbWluZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4g
ZmxvYXQgX19mbWluZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4g
aW50IF9fZnBjbGFzc2lmeWYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0ZiAoZmxvYXQgX192YWx1
ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBm
bG9hdCBmbWFmIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fZm1hZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgdGhyb3cg
KCk7CiMgODMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDk5ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwojIDU0ICIvdXNy
L2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgYWNvc2wgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5sIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hc2lubCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbmwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRhbjJsIChsb25nIGRvdWJsZSBfX3ks
IGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW4ybCAo
bG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25n
IGRvdWJsZSBjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19jb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHNpbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Np
bmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgdGFubCAo
bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFubCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgc2luY29zbCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSAqX19zaW54LCBsb25nIGRvdWJsZSAqX19jb3N4KSB0aHJvdyAo
KTsgZXh0ZXJuIHZvaWQgX19zaW5jb3NsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpf
X3NpbngsIGxvbmcgZG91YmxlICpfX2Nvc3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBk
b3VibGUgY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2Nvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19z
aW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5o
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFuaGwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NobCAo
bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2luaGwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5obCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5obCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDEwbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwMTBsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHBvdzEwbCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcG93MTBsIChsb25nIGRvdWJsZSBf
X3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZnJleHBsIChsb25nIGRvdWJsZSBf
X3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZyZXhw
bCAobG9uZyBkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOwoKCmV4dGVybiBs
b25nIGRvdWJsZSBsZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93
ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9f
ZXhwb25lbnQpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2dsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2dsIChsb25nIGRvdWJsZSBf
X3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cxMGwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzEwbCAobG9uZyBkb3VibGUgX194
KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbW9kZmwgKGxvbmcgZG91YmxlIF9feCwg
bG9uZyBkb3VibGUgKl9faXB0cikgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX21vZGZs
IChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpIHRocm93ICgpOwoKCgpleHRl
cm4gbG9uZyBkb3VibGUgZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
bG9uZyBkb3VibGUgX19leHBtMWwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGxvZzFwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBs
b25nIGRvdWJsZSBsb2dibCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9u
ZyBkb3VibGUgZXhwMmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2V4cDJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRv
dWJsZSBsb2cybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fbG9nMmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGRv
dWJsZSBwb3dsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3Bvd2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195
KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgc3FydGwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NxcnRsIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgaHlwb3RsIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2h5cG90bCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGNicnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19jYnJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGNlaWxsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19jZWlsbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgZmFic2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mYWJzbCAobG9uZyBkb3VibGUgX194KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZs
b29ybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmxv
b3JsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbW9k
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19mbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVsIChs
b25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgpleHRlcm4gaW50IGlzaW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgZmluaXRlbCAobG9uZyBkb3Vi
bGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy
biBsb25nIGRvdWJsZSBkcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRo
cm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19kcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2lnbmlmaWNhbmRs
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaWduaWZp
Y2FuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUg
Y29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3B5c2lnbmwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgbmFubCAoX19jb25zdCBjaGFy
ICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbmFubCAoX19jb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgX19pc25hbmwgKGxvbmcgZG91Ymxl
IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJu
IGludCBpc25hbmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgajBsIChsb25nIGRvdWJsZSkgdGhy
b3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2owbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpl
eHRlcm4gbG9uZyBkb3VibGUgajFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2oxbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUg
am5sIChpbnQsIGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fam5s
IChpbnQsIGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHkwbCAobG9u
ZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX195MGwgKGxvbmcgZG91Ymxl
KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHkxbCAobG9uZyBkb3VibGUpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX195MWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJu
IGxvbmcgZG91YmxlIHlubCAoaW50LCBsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3lubCAoaW50LCBsb25nIGRvdWJsZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGVyZmwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fZXJmbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgZXJmY2wg
KGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXJmY2wgKGxvbmcg
ZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWwgKGxvbmcgZG91Ymxl
KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbCAobG9uZyBkb3VibGUpIHRo
cm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgdGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93
ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX190Z2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZ2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2dhbW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoKCgpl
eHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3NpZ25nYW1w
KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbF9yIChsb25nIGRvdWJsZSwg
aW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJpbnRs
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yaW50bCAo
bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dGFmdGVy
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmV4dGFmdGVybCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCmV4dGVybiBsb25nIGRvdWJsZSBuZXh0dG93YXJkbCAobG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVy
biBsb25nIGRvdWJsZSByZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9f
eSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JlbWFpbmRlcmwgKGxvbmcgZG91Ymxl
IF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNj
YWxibCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX24pIHRocm93ICgpOyBleHRlcm4g
bG9uZyBkb3VibGUgX19zY2FsYmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKSB0
aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYm5sIChsb25nIGRvdWJsZSBfX3gs
IGludCBfX24pIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYm5sIChsb25nIGRv
dWJsZSBfX3gsIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGlsb2dibCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGludCBfX2lsb2dibCAobG9uZyBkb3VibGUgX194
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYmxubCAobG9uZyBkb3VibGUg
X194LCBsb25nIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYmxu
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gbG9u
ZyBkb3VibGUgbmVhcmJ5aW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbmVhcmJ5aW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGxvbmcgZG91YmxlIHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fcm91bmRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRl
cm4gbG9uZyBkb3VibGUgdHJ1bmNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdHJ1bmNsIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVy
biBsb25nIGRvdWJsZSByZW1xdW9sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwg
aW50ICpfX3F1bykgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JlbXF1b2wgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIGxvbmcgaW50IGxyaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgaW50IF9fbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwpleHRlcm4gbG9u
ZyBsb25nIGludCBsbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9u
ZyBsb25nIGludCBfX2xscmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVy
biBsb25nIGludCBscm91bmRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9u
ZyBpbnQgX19scm91bmRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwpleHRlcm4gbG9uZyBs
b25nIGludCBsbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg
bG9uZyBpbnQgX19sbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGZkaW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhy
b3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZkaW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtYXhsIChsb25nIGRv
dWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X2ZtYXhsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0
ZXJuIGxvbmcgZG91YmxlIGZtaW5sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
dGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZtaW5sIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5bCAobG9u
ZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGludCBfX3NpZ25iaXRsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAo
KQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IGZtYWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3op
IHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWFsIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX196KSB0aHJvdyAoKTsKIyAxMDAgIi91c3IvaW5j
bHVkZS9tYXRoLmgiIDIgMwojIDExMyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4gaW50
IHNpZ25nYW07CiMgMTU0ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmVudW0KICB7CiAgICBGUF9O
QU4sCgogICAgRlBfSU5GSU5JVEUsCgogICAgRlBfWkVSTywKCiAgICBGUF9TVUJOT1JNQUwsCgog
ICAgRlBfTk9STUFMCgogIH07CiMgMjQwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCnR5cGVkZWYg
ZW51bQp7CiAgX0lFRUVfID0gLTEsCiAgX1NWSURfLAogIF9YT1BFTl8sCiAgX1BPU0lYXywKICBf
SVNPQ18KfSBfTElCX1ZFUlNJT05fVFlQRTsKCgoKCmV4dGVybiBfTElCX1ZFUlNJT05fVFlQRSBf
TElCX1ZFUlNJT047CiMgMjYzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCnN0cnVjdCBfX2V4Y2Vw
dGlvbgoKCgogIHsKICAgIGludCB0eXBlOwogICAgY2hhciAqbmFtZTsKICAgIGRvdWJsZSBhcmcx
OwogICAgZG91YmxlIGFyZzI7CiAgICBkb3VibGUgcmV0dmFsOwogIH07CgoKZXh0ZXJuIGludCBt
YXRoZXJyIChzdHJ1Y3QgX19leGNlcHRpb24gKl9fZXhjKSB0aHJvdyAoKTsKIyAzNTAgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDEg
MwojIDEyNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGludApf
X3NpZ25iaXRmIChmbG9hdCBfX3gpIHRocm93ICgpCnsKICBfX2V4dGVuc2lvbl9fIHVuaW9uIHsg
ZmxvYXQgX19mOyBpbnQgX19pOyB9IF9fdSA9IHsgX19mOiBfX3ggfTsKICByZXR1cm4gX191Ll9f
aSA8IDA7Cn0KX19pbmxpbmUgaW50Cl9fc2lnbmJpdCAoZG91YmxlIF9feCkgdGhyb3cgKCkKewog
IF9fZXh0ZW5zaW9uX18gdW5pb24geyBkb3VibGUgX19kOyBpbnQgX19pWzJdOyB9IF9fdSA9IHsg
X19kOiBfX3ggfTsKICByZXR1cm4gX191Ll9faVsxXSA8IDA7Cn0KX19pbmxpbmUgaW50Cl9fc2ln
bmJpdGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkKewogIF9fZXh0ZW5zaW9uX18gdW5pb24g
eyBsb25nIGRvdWJsZSBfX2w7IGludCBfX2lbM107IH0gX191ID0geyBfX2w6IF9feCB9OwogIHJl
dHVybiAoX191Ll9faVsyXSAmIDB4ODAwMCkgIT0gMDsKfQojIDI5MSAiL3Vzci9pbmNsdWRlL2Jp
dHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBfX3NnbiAoZG91YmxlKSB0aHJvdyAo
KTsgX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJldHVybiBf
X3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9IF9faW5saW5lIGZs
b2F0IF9fc2duZiAoZmxvYXQpIHRocm93ICgpOyBfX2lubGluZSBmbG9hdCBfX3NnbmYgKGZsb2F0
IF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAx
LjAgOiAtMS4wKTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlKSB0
aHJvdyAoKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ25sIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpIHsgcmV0dXJuIF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEu
MCk7IH0KCgoKCl9faW5saW5lIGRvdWJsZSBfX3BvdzIgKGRvdWJsZSkgdGhyb3cgKCk7IF9faW5s
aW5lIGRvdWJsZSBfX3BvdzIgKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19leHRlbnNp
b25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3ggPT0g
KGxvbmcgZG91YmxlKSBfX3ApIHsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIg
KF9fdmFsdWUpIDogIjAiICgxLjApLCAidSIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmbGQJJSVzdCgwKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClcblx0
IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkjIDJe
KGZyYWN0KHgpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6
ICIwIiAoX194KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUi
IDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0
dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgZmxvYXQgX19wb3cyZiAoZmxvYXQpIHRocm93ICgpOyBf
X2lubGluZSBmbG9hdCBfX3BvdzJmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19leHRl
bnNpb25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3gg
PT0gKGxvbmcgZG91YmxlKSBfX3ApIHsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiICgxLjApLCAidSIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQJJSVzdCgwKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClc
blx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkj
IDJeKGZyYWN0KHgpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50
KSA6ICIwIiAoX194KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2Nh
bGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsg
cmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgX19wb3cybCAobG9uZyBkb3Vi
bGUpIHRocm93ICgpOyBfX2lubGluZSBsb25nIGRvdWJsZSBfX3BvdzJsIChsb25nIGRvdWJsZSBf
X3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX19leHBvbmVudDsgX19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChs
b25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3ggPT0gKGxvbmcgZG91YmxlKSBfX3ApIHsgX19hc20g
X192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiICgxLjApLCAidSIg
KF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQJJSVzdCgw
KVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJ
CSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHgpKSAtIDFcblx0IiA6ICI9dCIg
KF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9fdmFsdWUgKz0gMS4w
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f
dmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyAzNDMgIi91c3Iv
aW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSB2b2lkCl9fc2luY29zIChkb3Vi
bGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpfX2Nvc3gpIHRocm93ICgpCnsKICByZWdp
c3RlciBsb25nIGRvdWJsZSBfX2Nvc3I7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fc2lucjsgX19h
c20gX192b2xhdGlsZV9fICgiZnNpbmNvc1xuXHQiICJmbnN0c3cJJSVheFxuXHQiICJ0ZXN0bAkk
MHg0MDAsICUlZWF4XG5cdCIgImp6CTFmXG5cdCIgImZsZHBpXG5cdCIgImZhZGQJJSVzdCgwKVxu
XHQiICJmeGNoCSUlc3QoMSlcblx0IiAiMjogZnByZW0xXG5cdCIgImZuc3RzdwklJWF4XG5cdCIg
InRlc3RsCSQweDQwMCwgJSVlYXhcblx0IiAiam56CTJiXG5cdCIgImZzdHAJJSVzdCgxKVxuXHQi
ICJmc2luY29zXG5cdCIgIjE6IiA6ICI9dCIgKF9fY29zciksICI9dSIgKF9fc2lucikgOiAiMCIg
KF9feCkpOyAqX19zaW54ID0gX19zaW5yOyAqX19jb3N4ID0gX19jb3NyOwp9CgpfX2lubGluZSB2
b2lkCl9fc2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAqX19zaW54LCBmbG9hdCAqX19jb3N4KSB0
aHJvdyAoKQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19jb3NyOyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3NpbnI7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW5jb3Ncblx0IiAiZm5zdHN3CSUl
YXhcblx0IiAidGVzdGwJJDB4NDAwLCAlJWVheFxuXHQiICJqegkxZlxuXHQiICJmbGRwaVxuXHQi
ICJmYWRkCSUlc3QoMClcblx0IiAiZnhjaAklJXN0KDEpXG5cdCIgIjI6IGZwcmVtMVxuXHQiICJm
bnN0c3cJJSVheFxuXHQiICJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIgImpuegkyYlxuXHQiICJm
c3RwCSUlc3QoMSlcblx0IiAiZnNpbmNvc1xuXHQiICIxOiIgOiAiPXQiIChfX2Nvc3IpLCAiPXUi
IChfX3NpbnIpIDogIjAiIChfX3gpKTsgKl9fc2lueCA9IF9fc2lucjsgKl9fY29zeCA9IF9fY29z
cjsKfQoKX19pbmxpbmUgdm9pZApfX3NpbmNvc2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgKl9fc2lueCwgbG9uZyBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCkKewogIHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fY29zcjsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19zaW5yOyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmc2luY29zXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInRlc3RsCSQweDQwMCwg
JSVlYXhcblx0IiAianoJMWZcblx0IiAiZmxkcGlcblx0IiAiZmFkZAklJXN0KDApXG5cdCIgImZ4
Y2gJJSVzdCgxKVxuXHQiICIyOiBmcHJlbTFcblx0IiAiZm5zdHN3CSUlYXhcblx0IiAidGVzdGwJ
JDB4NDAwLCAlJWVheFxuXHQiICJqbnoJMmJcblx0IiAiZnN0cAklJXN0KDEpXG5cdCIgImZzaW5j
b3Ncblx0IiAiMToiIDogIj10IiAoX19jb3NyKSwgIj11IiAoX19zaW5yKSA6ICIwIiAoX194KSk7
ICpfX3NpbnggPSBfX3NpbnI7ICpfX2Nvc3ggPSBfX2Nvc3I7Cn0KIyAzODYgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBsb25nIGRvdWJsZSBfX2V4cG0xbCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdGVt
cDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBlXnggLSAxID0gMl4oeCAqIGxvZzIo
ZSkpIC0gMVxuXHQiICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0CSUlc3Qo
MSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5cdCIgImZz
dWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0
KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgImZzY2FsZQkJCSMgMl4oeCAqIGxvZzIoZSkpIC0gMl4o
aW50KHggKiBsb2cyKGUpKSlcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50
KSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZQkJCSMgMl5pbnQoeCAq
IGxvZzIoZSkpXG5cdCIgOiAiPXQiIChfX3RlbXApIDogIjAiICgxLjApLCAidSIgKF9fZXhwb25l
bnQpKTsgX190ZW1wIC09IDEuMDsgX190ZW1wICs9IF9fdmFsdWU7IHJldHVybiBfX3RlbXAgPyBf
X3RlbXAgOiBfX3g7IH0KIyA0MDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpf
X2lubGluZSBkb3VibGUgZXhwIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkpXG5cdCIgImZtdWwJ
JSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJ
IyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0
KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFc
blx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9f
dmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0g
X19pbmxpbmUgZmxvYXQgZXhwZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkpXG5cdCIgImZtdWwJ
JSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJ
IyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0
KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFc
blx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9f
dmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0g
X19pbmxpbmUgbG9uZyBkb3VibGUgZXhwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25l
bnQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkp
XG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQi
ICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0
KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxv
ZzIoZSkpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIw
IiAoX194KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJu
IF9fdmFsdWU7IH0KX19pbmxpbmUgbG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX19leHBvbmVudDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBlXnggPSAy
Xih4ICogbG9nMihlKSlcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIgImZz
dAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0IiAiZnhjaFxu
XHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIgImYyeG0xCQkJIyAy
XihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9f
ZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7IF9fYXNtIF9fdm9sYXRpbGVf
XyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1IiAoX19leHBv
bmVudCkpOyByZXR1cm4gX192YWx1ZTsgfQoKCl9faW5saW5lIGRvdWJsZSB0YW4gKGRvdWJsZSBf
X3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX192YWx1ZTIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsgX19hc20gX192
b2xhdGlsZV9fICgiZnB0YW4iIDogIj10IiAoX192YWx1ZTIpLCAiPXUiIChfX3ZhbHVlKSA6ICIw
IiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IHRhbmYgKGZsb2F0IF9f
eCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlMiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmcHRhbiIgOiAiPXQiIChfX3ZhbHVlMiksICI9dSIgKF9fdmFsdWUpIDogIjAi
IChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgdGFubCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUyIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwdGFuIiA6ICI9dCIgKF9fdmFsdWUyKSwgIj11IiAoX192
YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfQojIDQyNiAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwg
ZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1
IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBhdGFu
MmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6
ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5s
aW5lIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGls
ZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAi
c3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KX19pbmxpbmUgbG9uZyBkb3VibGUgX19hdGFuMmwg
KGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChf
X3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVl
OyB9CgoKX19pbmxpbmUgZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93
ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgi
MToJZnByZW1cblx0IiAiZm5zdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQi
IChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImF4IiwgImNjIik7IHJldHVybiBf
X3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IGZtb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhy
b3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJu
IF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwg
bG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNh
aGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6
ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfQojIDQ0MSAiL3Vzci9pbmNsdWRlL2JpdHMv
bWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBzcXJ0IChkb3VibGUgX194KSB0aHJvdyAo
KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQi
IDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9faW5s
aW5lIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgZmxvYXQgX19y
ZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIw
IiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBzcXJ0bCAo
bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9f
eCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KX19pbmxpbmUgbG9uZyBkb3VibGUgX19zcXJ0bCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkp
OyByZXR1cm4gX19yZXN1bHQ7IH0KCgpfX2lubGluZSBkb3VibGUgZmFicyAoZG91YmxlIF9feCkg
dGhyb3cgKCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnMgKF9feCk7IH0KX19pbmxpbmUgZmxvYXQg
ZmFic2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNmIChfX3gp
OyB9Cl9faW5saW5lIGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
IHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194KTsgfQpfX2lubGluZSBsb25nIGRvdWJsZSBf
X2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJz
bCAoX194KTsgfQoKCgoKCgoKX19pbmxpbmUgZG91YmxlIHNpbiAoZG91YmxlIF9feCkgdGhyb3cg
KCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW4i
IDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9faW5s
aW5lIGZsb2F0IHNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBmbG9hdCBfX3Jl
c3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNpbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIg
KF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgc2lubCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmc2luIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7
IHJldHVybiBfX3Jlc3VsdDsgfQoKX19pbmxpbmUgZG91YmxlIGNvcyAoZG91YmxlIF9feCkgdGhy
b3cgKCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZj
b3MiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9f
aW5saW5lIGZsb2F0IGNvc2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBmbG9hdCBf
X3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmNvcyIgOiAiPXQiIChfX3Jlc3VsdCkgOiAi
MCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgY29zbCAo
bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmY29zIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194
KSk7IHJldHVybiBfX3Jlc3VsdDsgfQoKX19pbmxpbmUgZG91YmxlIGxvZyAoZG91YmxlIF9feCkg
dGhyb3cgKCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZsZGxuMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0
KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBmbG9hdCBsb2dmIChmbG9hdCBfX3gp
IHRocm93ICgpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZsZGxuMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0
KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBsb2dsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQp
IDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQpfX2lubGluZSBkb3Vi
bGUgbG9nMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsZzI7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVz
dWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUg
ZmxvYXQgbG9nMTBmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1
bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxnMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19y
ZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGlu
ZSBsb25nIGRvdWJsZSBsb2cxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbGcyOyBmeGNo
OyBmeWwyeCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJu
IF9fcmVzdWx0OyB9CgpfX2lubGluZSBkb3VibGUgYXNpbiAoZG91YmxlIF9feCkgdGhyb3cgKCkg
eyByZXR1cm4gX19hdGFuMmwgKF9feCwgX19zcXJ0bCAoMS4wIC0gX194ICogX194KSk7IH0gX19p
bmxpbmUgZmxvYXQgYXNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX19hdGFuMmwg
KF9feCwgX19zcXJ0bCAoMS4wIC0gX194ICogX194KSk7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUg
YXNpbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX19hdGFuMmwgKF9feCwg
X19zcXJ0bCAoMS4wIC0gX194ICogX194KSk7IH0KX19pbmxpbmUgZG91YmxlIGFjb3MgKGRvdWJs
ZSBfX3gpIHRocm93ICgpIHsgcmV0dXJuIF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBf
X3gpLCBfX3gpOyB9IF9faW5saW5lIGZsb2F0IGFjb3NmIChmbG9hdCBfX3gpIHRocm93ICgpIHsg
cmV0dXJuIF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpLCBfX3gpOyB9IF9faW5s
aW5lIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmV0dXJu
IF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpLCBfX3gpOyB9CgoKX19pbmxpbmUg
ZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVz
dWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19yZXN1bHQp
IDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBmbG9h
dCBhdGFuZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAi
IChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBsb25nIGRvdWJs
ZSBhdGFubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19y
ZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQoKX19pbmxp
bmUgbG9uZyBkb3VibGUgX19zZ24xbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBfX2lubGluZSBs
b25nIGRvdWJsZSBfX3NnbjFsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgX19leHRlbnNp
b25fXyB1bmlvbiB7IGxvbmcgZG91YmxlIF9feGxkOyB1bnNpZ25lZCBpbnQgX194aVszXTsgfSBf
X24gPSB7IF9feGxkOiBfX3ggfTsgX19uLl9feGlbMl0gPSAoX19uLl9feGlbMl0gJiAweDgwMDAp
IHwgMHgzZmZmOyBfX24uX194aVsxXSA9IDB4ODAwMDAwMDA7IF9fbi5fX3hpWzBdID0gMDsgcmV0
dXJuIF9fbi5fX3hsZDsgfQojIDQ4MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAz
Cl9faW5saW5lIGRvdWJsZSBzaW5oIChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2ZhYnNsIChfX3gpKTsgcmV0dXJuIDAuNSAq
IChfX2V4bTEgLyAoX19leG0xICsgMS4wKSArIF9fZXhtMSkgKiBfX3NnbjFsIChfX3gpOyB9IF9f
aW5saW5lIGZsb2F0IHNpbmhmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX19leG0xID0gX19leHBtMWwgKF9fZmFic2wgKF9feCkpOyByZXR1cm4gMC41ICogKF9f
ZXhtMSAvIChfX2V4bTEgKyAxLjApICsgX19leG0xKSAqIF9fc2duMWwgKF9feCk7IH0gX19pbmxp
bmUgbG9uZyBkb3VibGUgc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVybiAw
LjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkgKyBfX2V4bTEpICogX19zZ24xbCAoX194KTsg
fQoKCgpfX2lubGluZSBkb3VibGUgY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX2V4ID0gX19leHBsIChfX3gpOyByZXR1cm4gMC41ICogKF9fZXggKyAx
LjAgLyBfX2V4KTsgfSBfX2lubGluZSBmbG9hdCBjb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXggPSBfX2V4cGwgKF9feCk7IHJldHVybiAwLjUgKiAo
X19leCArIDEuMCAvIF9fZXgpOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGNvc2hsIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leCA9IF9fZXhwbCAo
X194KTsgcmV0dXJuIDAuNSAqIChfX2V4ICsgMS4wIC8gX19leCk7IH0KCgoKX19pbmxpbmUgZG91
YmxlIHRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19l
eG0xID0gX19leHBtMWwgKC1fX2ZhYnNsIChfX3ggKyBfX3gpKTsgcmV0dXJuIF9fZXhtMSAvIChf
X2V4bTEgKyAyLjApICogX19zZ24xbCAoLV9feCk7IH0gX19pbmxpbmUgZmxvYXQgdGFuaGYgKGZs
b2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0x
bCAoLV9fZmFic2wgKF9feCArIF9feCkpOyByZXR1cm4gX19leG0xIC8gKF9fZXhtMSArIDIuMCkg
KiBfX3NnbjFsICgtX194KTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSB0YW5obCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFs
ICgtX19mYWJzbCAoX194ICsgX194KSk7IHJldHVybiBfX2V4bTEgLyAoX19leG0xICsgMi4wKSAq
IF9fc2duMWwgKC1fX3gpOyB9CgoKCgpfX2lubGluZSBkb3VibGUgZmxvb3IgKGRvdWJsZSBfX3gp
IHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNp
Z25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3Rt
cDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAg
PSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIg
OiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChf
X3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJt
IiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBmbG9vcmYgKGZsb2F0
IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxl
IHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBf
X2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19j
d3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDQwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3
ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6
IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGZs
b29ybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5z
aWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDog
Ij1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBf
X3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGls
ZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1MDQg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBkb3VibGUgY2VpbCAo
ZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3Zv
bGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0
IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cp
KTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAo
ImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50
IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3
ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IGNl
aWxmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsg
X192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBz
aG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChf
X2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNtIF9fdm9sYXRp
bGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJu
ZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJm
bGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBsb25n
IGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9s
YXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0
Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAw
OyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20g
X192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2Fz
bSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7
IH0KIyA1MjIgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBkb3Vi
bGUKbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX3kpIHRocm93ICgpCnsKICByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192
YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFs
dWU7Cn0KCgoKCgoKX19pbmxpbmUgZG91YmxlIGV4cG0xIChkb3VibGUgX194KSB0aHJvdyAoKSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhw
b25lbnQ7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdGVtcDsgX19hc20gX192b2xhdGlsZV9fICgi
ZmxkbDJlCQkJIyBlXnggLSAxID0gMl4oeCAqIGxvZzIoZSkpIC0gMVxuXHQiICJmbXVsCSUlc3Qo
MSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50
KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICog
bG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIg
ImZzY2FsZQkJCSMgMl4oeCAqIGxvZzIoZSkpIC0gMl4oaW50KHggKiBsb2cyKGUpKSlcblx0IiA6
ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZzY2FsZQkJCSMgMl5pbnQoeCAqIGxvZzIoZSkpXG5cdCIgOiAiPXQiIChf
X3RlbXApIDogIjAiICgxLjApLCAidSIgKF9fZXhwb25lbnQpKTsgX190ZW1wIC09IDEuMDsgX190
ZW1wICs9IF9fdmFsdWU7IHJldHVybiBfX3RlbXAgPyBfX3RlbXAgOiBfX3g7IH0gX19pbmxpbmUg
ZmxvYXQgZXhwbTFmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX190ZW1wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAy
Xih4ICogbG9nMihlKSkgLSAxXG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQi
ICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4
Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJ
CSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9n
MihlKSkgLSAyXihpbnQoeCAqIGxvZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIg
KF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJ
IyAyXmludCh4ICogbG9nMihlKSlcblx0IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1
IiAoX19leHBvbmVudCkpOyBfX3RlbXAgLT0gMS4wOyBfX3RlbXAgKz0gX192YWx1ZTsgcmV0dXJu
IF9fdGVtcCA/IF9fdGVtcCA6IF9feDsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBleHBtMWwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Rl
bXA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54IC0gMSA9IDJeKHggKiBsb2cy
KGUpKSAtIDFcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIgImZzdAklJXN0
KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0IiAiZnhjaFxuXHQiICJm
c3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFj
dCh4ICogbG9nMihlKSkpIC0gMVxuXHQiICJmc2NhbGUJCQkjIDJeKHggKiBsb2cyKGUpKSAtIDJe
KGludCh4ICogbG9nMihlKSkpXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVu
dCkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUJCQkjIDJeaW50KHgg
KiBsb2cyKGUpKVxuXHQiIDogIj10IiAoX190ZW1wKSA6ICIwIiAoMS4wKSwgInUiIChfX2V4cG9u
ZW50KSk7IF9fdGVtcCAtPSAxLjA7IF9fdGVtcCArPSBfX3ZhbHVlOyByZXR1cm4gX190ZW1wID8g
X190ZW1wIDogX194OyB9CgoKCgoKCl9faW5saW5lIGRvdWJsZSBsb2cxcCAoZG91YmxlIF9feCkg
dGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194
KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wg
KDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hc
blx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyBy
ZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgdGhyb3cg
KCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAx
LjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCAr
IF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAi
ZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4g
X192YWx1ZTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194
KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wg
KDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hc
blx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyBy
ZXR1cm4gX192YWx1ZTsgfQojIDU1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAz
Cl9faW5saW5lIGRvdWJsZSBhc2luaCAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICogX195
IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9fc2duMWwgKF9f
eCkpOyB9IF9faW5saW5lIGZsb2F0IGFzaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAobG9nMXBsIChfX3kg
KiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEuMCkgKyBfX3kpICogX19zZ24x
bCAoX194KSk7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0
dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBfX3kgKyAxLjApICsgMS4w
KSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfQoKCgoKX19pbmxpbmUgZG91YmxlIGFjb3NoIChk
b3VibGUgX194KSB0aHJvdyAoKSB7IHJldHVybiBsb2dsIChfX3ggKyBfX3NxcnRsIChfX3ggLSAx
LjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0gX19pbmxpbmUgZmxvYXQgYWNvc2hmIChmbG9h
dCBfX3gpIHRocm93ICgpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkg
KiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBhY29zaGwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4gbG9nbCAoX194ICsgX19zcXJ0bCAoX194
IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9CgoKX19pbmxpbmUgZG91YmxlIGF0YW5o
IChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFi
c2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195
KSkgKiBfX3NnbjFsIChfX3gpOyB9IF9faW5saW5lIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSB0
aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVy
biAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChf
X3gpOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGF0YW5obCAobG9uZyBkb3VibGUgX194KSB0aHJv
dyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAt
MC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gp
OyB9CgoKCgpfX2lubGluZSBkb3VibGUgaHlwb3QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRo
cm93ICgpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0gX19pbmxp
bmUgZmxvYXQgaHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgeyByZXR1cm4g
X19zcXJ0bCAoX194ICogX194ICsgX195ICogX195KTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBo
eXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSB7IHJldHVy
biBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9CgpfX2lubGluZSBkb3VibGUgbG9n
YiAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rc
blx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJu
IF9fdmFsdWU7IH0gX19pbmxpbmUgZmxvYXQgbG9nYmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIg
KF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBk
b3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAi
IChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1ODEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhp
bmxpbmUuaCIgMwpfX2lubGluZSBkb3VibGUgbG9nMiAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyBy
ZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZ4Y2g7
IGZ5bDJ4IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4g
X19yZXN1bHQ7IH0gX19pbmxpbmUgZmxvYXQgbG9nMmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyBy
ZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnhjaDsg
ZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBf
X3Jlc3VsdDsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cybCAobG9uZyBkb3VibGUgX194KSB0
aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxl
X18gKCJmbGQxOyBmeGNoOyBmeWwyeCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAi
c3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgoKX19pbmxpbmUgZmxvYXQKbGRleHBmIChmbG9h
dCBfX3gsIGludCBfX3kpIHRocm93ICgpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVl
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f
eCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFsdWU7Cn0KCl9faW5saW5l
IGxvbmcgZG91YmxlCmxkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX195KSB0aHJvdyAoKQp7
CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnNj
YWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKChsb25nIGRvdWJsZSkgX195
KSk7IHJldHVybiBfX3ZhbHVlOwp9CgoKX19pbmxpbmUgZG91YmxlIGZtYSAoZG91YmxlIF9feCwg
ZG91YmxlIF9feSwgZG91YmxlIF9feikgdGhyb3cgKCkgeyByZXR1cm4gKF9feCAqIF9feSkgKyBf
X3o7IH0gX19pbmxpbmUgZmxvYXQgZm1hZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9f
eikgdGhyb3cgKCkgeyByZXR1cm4gKF9feCAqIF9feSkgKyBfX3o7IH0gX19pbmxpbmUgbG9uZyBk
b3VibGUgZm1hbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91Ymxl
IF9feikgdGhyb3cgKCkgeyByZXR1cm4gKF9feCAqIF9feSkgKyBfX3o7IH0KCl9faW5saW5lIGRv
dWJsZSByaW50IChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3Vs
dDsgX19hc20gX192b2xhdGlsZV9fICgiZnJuZGludCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIg
KF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUgZmxvYXQgcmludGYgKGZsb2F0IF9f
eCkgdGhyb3cgKCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9f
ICgiZnJuZGludCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1
bHQ7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgcmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgi
ZnJuZGludCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7
IH0KIyA2MDggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBsb25n
IGludApscmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCkKewogIGxvbmcgaW50IF9fbHJpbnRyZXM7
IF9fYXNtX18gX192b2xhdGlsZV9fICgiZmlzdHBsICUwIiA6ICI9bSIgKF9fbHJpbnRyZXMpIDog
InQiIChfX3gpIDogInN0Iik7IHJldHVybiBfX2xyaW50cmVzOwp9Cl9faW5saW5lIGxvbmcgaW50
CmxyaW50IChkb3VibGUgX194KSB0aHJvdyAoKQp7CiAgbG9uZyBpbnQgX19scmludHJlczsgX19h
c21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0cGwgJTAiIDogIj1tIiAoX19scmludHJlcykgOiAidCIg
KF9feCkgOiAic3QiKTsgcmV0dXJuIF9fbHJpbnRyZXM7Cn0KX19pbmxpbmUgbG9uZyBpbnQKbHJp
bnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpCnsKICBsb25nIGludCBfX2xyaW50cmVzOyBf
X2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbCAlMCIgOiAiPW0iIChfX2xyaW50cmVzKSA6ICJ0
IiAoX194KSA6ICJzdCIpOyByZXR1cm4gX19scmludHJlczsKfQojIDYzMSAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGxvbmcgbG9uZyBpbnQKbGxyaW50ZiAoZmxv
YXQgX194KSB0aHJvdyAoKQp7CiAgbG9uZyBsb25nIGludCBfX2xscmludHJlczsgX19hc21fXyBf
X3ZvbGF0aWxlX18gKCJmaXN0cGxsICUwIiA6ICI9bSIgKF9fbGxyaW50cmVzKSA6ICJ0IiAoX194
KSA6ICJzdCIpOyByZXR1cm4gX19sbHJpbnRyZXM7Cn0KX19pbmxpbmUgbG9uZyBsb25nIGludAps
bHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpCnsKICBsb25nIGxvbmcgaW50IF9fbGxyaW50cmVz
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbGwgJTAiIDogIj1tIiAoX19sbHJpbnRyZXMp
IDogInQiIChfX3gpIDogInN0Iik7IHJldHVybiBfX2xscmludHJlczsKfQpfX2lubGluZSBsb25n
IGxvbmcgaW50CmxscmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkKewogIGxvbmcgbG9u
ZyBpbnQgX19sbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgiZmlzdHBsbCAlMCIgOiAi
PW0iIChfX2xscmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJuIF9fbGxyaW50cmVz
Owp9CgoKCgoKCgpfX2lubGluZSBkb3VibGUgZHJlbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkg
dGhyb3cgKCkgeyByZWdpc3RlciBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgaW50IF9fY2xvYmJl
cmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbTFcblx0IiAiZnN0c3cJJSVheFxuXHQi
ICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpLCAiPSZhIiAoX19jbG9iYmVyZWQp
IDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxp
bmUgZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSB7IHJlZ2lzdGVy
IGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIi
IDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAo
X195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBkcmVt
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIHsgcmVnaXN0ZXIg
ZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGludCBfX2Nsb2JiZXJlZDsgX19hc20gX192b2xhdGls
ZV9fICgiMToJZnByZW0xXG5cdCIgImZzdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIg
OiAiPXQiIChfX3ZhbHVlKSwgIj0mYSIgKF9fY2xvYmJlcmVkKSA6ICIwIiAoX194KSwgInUiIChf
X3kpIDogImNjIik7IHJldHVybiBfX3ZhbHVlOyB9CiMgNjY2ICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoaW5saW5lLmgiIDMKX19pbmxpbmUgaW50Cl9fZmluaXRlIChkb3VibGUgX194KSB0aHJvdyAo
KQp7CiAgcmV0dXJuIChfX2V4dGVuc2lvbl9fCiAgICAgICAgICAoKCgoKHVuaW9uIHsgZG91Ymxl
IF9fZDsgaW50IF9faVsyXTsgfSkge19fZDogX194fSkuX19pWzFdCiAgICAgICAgICAgICB8IDB4
ODAwZmZmZmZ1KSArIDEpID4+IDMxKSk7Cn0KCgoKX19pbmxpbmUgZG91YmxlIF9fY29zaG0xIChk
b3VibGUpIHRocm93ICgpOyBfX2lubGluZSBkb3VibGUgX19jb3NobTEgKGRvdWJsZSBfX3gpIHRo
cm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKF9fZmFic2wg
KF9feCkpOyByZXR1cm4gMC41ICogKF9fZXhtMSAvIChfX2V4bTEgKyAxLjApKSAqIF9fZXhtMTsg
fSBfX2lubGluZSBmbG9hdCBfX2Nvc2htMWYgKGZsb2F0KSB0aHJvdyAoKTsgX19pbmxpbmUgZmxv
YXQgX19jb3NobTFmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X19leG0xID0gX19leHBtMWwgKF9fZmFic2wgKF9feCkpOyByZXR1cm4gMC41ICogKF9fZXhtMSAv
IChfX2V4bTEgKyAxLjApKSAqIF9fZXhtMTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBfX2Nvc2ht
MWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgX19jb3NobTFs
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0x
ID0gX19leHBtMWwgKF9fZmFic2wgKF9feCkpOyByZXR1cm4gMC41ICogKF9fZXhtMSAvIChfX2V4
bTEgKyAxLjApKSAqIF9fZXhtMTsgfQoKCgpfX2lubGluZSBkb3VibGUgX19hY29zaDFwIChkb3Vi
bGUpIHRocm93ICgpOyBfX2lubGluZSBkb3VibGUgX19hY29zaDFwIChkb3VibGUgX194KSB0aHJv
dyAoKSB7IHJldHVybiBsb2cxcGwgKF9feCArIF9fc3FydGwgKF9feCkgKiBfX3NxcnRsIChfX3gg
KyAyLjApKTsgfSBfX2lubGluZSBmbG9hdCBfX2Fjb3NoMXBmIChmbG9hdCkgdGhyb3cgKCk7IF9f
aW5saW5lIGZsb2F0IF9fYWNvc2gxcGYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZXR1cm4gbG9n
MXBsIChfX3ggKyBfX3NxcnRsIChfX3gpICogX19zcXJ0bCAoX194ICsgMi4wKSk7IH0gX19pbmxp
bmUgbG9uZyBkb3VibGUgX19hY29zaDFwbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBfX2lubGlu
ZSBsb25nIGRvdWJsZSBfX2Fjb3NoMXBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmV0
dXJuIGxvZzFwbCAoX194ICsgX19zcXJ0bCAoX194KSAqIF9fc3FydGwgKF9feCArIDIuMCkpOyB9
CiMgMzUxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA0MTEgIi91c3IvaW5jbHVkZS9tYXRo
LmgiIDMKfQojIDY5ICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAx
IDMKIyAyNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgoKIyAxICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAxOTkgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDM0
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoKCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvd2FpdGZsYWdzLmgiIDEgMwojIDQzICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMSAzCiMgNjMgIi91
c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4u
aCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9m
ZWF0dXJlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAzNyAiL3Vz
ci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEg
MwojIDM4ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDY0ICIvdXNyL2luY2x1ZGUvYml0
cy93YWl0c3RhdHVzLmgiIDIgMwoKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1czsKICAg
IHN0cnVjdAogICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogICAg
ICAgIHVuc2lnbmVkIGludCBfX3dfY29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX193
X3JldGNvZGU6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2Fp
dF90ZXJtaW5hdGVkOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9f
d19zdG9wdmFsOjg7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7CiAgICAgICAg
dW5zaWduZWQgaW50OjE2OwoKCgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgOTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
Mwp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90
OwoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCBy
ZW07CiAgfSBsZGl2X3Q7CgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAogIHsKICAg
IGxvbmcgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gbGxkaXZfdDsK
IyAxMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0
X21iX2N1cl9tYXggKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29u
c3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4
dGVybiBpbnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19u
cHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25f
XyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3Ry
dG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQg
c3RydG9mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBk
b3VibGUgc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpIHRocm93ICgpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJv
dyAoKTsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKX19leHRl
bnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAo
KTsKCgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgpfX2V4
dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhy
b3cgKCk7CiMgMjExICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
eGxvY2FsZS5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0
cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewoKICBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sx
M107CgoKICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQg
Kl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2Nh
bGVfdDsKIyAyMTIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBsb25nIGlu
dCBfX3N0cnRvbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsK
CmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCl9fZXh0ZW5zaW9u
X18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpleHRlcm4g
dW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAo
KTsKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBfX3N0cnRv
Zl9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93
ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxl
X3QgX19sb2MpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFs
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAg
dGhyb3cgKCk7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CmV4dGVybiBs
b25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19ncm91cCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgpl
eHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgp
OwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJu
YWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXAp
IHRocm93ICgpOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50
IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CgoKCgoKCgpl
eHRlcm4gX19pbmxpbmUgZG91YmxlCnN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpCnsKICByZXR1cm4gX19z
dHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVybiBfX2lubGluZSBs
b25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgpCnsKICByZXR1
cm4gX19zdHJ0b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KZXh0
ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQg
X19iYXNlKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBf
X2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBmbG9hdApzdHJ0b2YgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
KSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG9mX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRy
LCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUKc3RydG9sZCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgp
CnsKICByZXR1cm4gX19zdHJ0b2xkX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQoK
CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJu
YWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4g
X19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50
IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIs
IF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5l
IGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgp
CnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us
IDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQKc3RydG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgpCnsKICByZXR1
cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoK
CmV4dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93
ICgpCnsKICByZXR1cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSBfX251bGwpOwp9CmV4dGVy
biBfX2lubGluZSBpbnQKYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICBy
ZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSBfX251bGwsIDEwKTsKfQpleHRl
cm4gX19pbmxpbmUgbG9uZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgp
CnsKICByZXR1cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSBfX251bGwsIDEwKTsKfQoKCl9f
ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3Qg
Y2hhciAqX19ucHRyKSB0aHJvdyAoKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIg
KiopIF9fbnVsbCwgMTApOwp9CiMgMzg0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJu
IGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IGE2
NGwgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVk
ZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL2Jp
dHMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2JpdHMv
dHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcg
bG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKdHlw
ZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludDhf
dDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9faW50MzJfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzaWduZWQg
bG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBs
b25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7Cgp0
eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsKdHlwZWRlZiBfX3VfaW50IF9fdWlkX3Q7CnR5cGVk
ZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5vX3Q7CnR5cGVkZWYgX191
X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsKdHlwZWRlZiBsb25nIGlu
dCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0eXBlZGVmIGludCBfX3BpZF90
Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CnR5cGVk
ZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQgX19pZF90OwoKdHlwZWRl
ZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsKCgp0eXBlZGVmIGlu
dCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9f
dGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBp
bnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7Cgp0eXBlZGVmIGxv
bmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVmIGludCBfX2Nsb2NraWRfdDsKCgp0eXBlZGVmIGlu
dCBfX3RpbWVyX3Q7CgoKCgoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgoKdHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7
CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYgX19xdWFkX3QgX19ibGtj
bnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFk
X3QgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7CnR5cGVk
ZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCgp0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82
NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBpbnQgX190
X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7CgoKdHlw
ZWRlZiBpbnQgX19pbnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsK
CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwojIDIzICIvdXNy
L2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Nj
aGVkLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzCnN0cnVjdCBfX3Nj
aGVkX3BhcmFtCiAgewogICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsKIyAyNCAiL3Vzci9p
bmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9j
awp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7Cgp9OwoKCgp0eXBlZGVm
IHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVk
ZWYgc3RydWN0IF9fcHRocmVhZF9hdHRyX3MKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBf
X3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQg
X19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGlu
dCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tz
aXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9wdGhy
ZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOwogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOwp9IHB0
aHJlYWRfY29uZF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVh
ZF9jb25kYXR0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKCgoK
dHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX21fcmVzZXJ2ZWQ7CiAgaW50IF9fbV9jb3VudDsKICBf
cHRocmVhZF9kZXNjciBfX21fb3duZXI7CiAgaW50IF9fbV9raW5kOwogIHN0cnVjdCBfcHRocmVh
ZF9mYXN0bG9jayBfX21fbG9jazsKfSBwdGhyZWFkX211dGV4X3Q7CgoKCnR5cGVkZWYgc3RydWN0
CnsKICBpbnQgX19tdXRleGtpbmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKdHlwZWRlZiBp
bnQgcHRocmVhZF9vbmNlX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9yd2xvY2tfdAp7
CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fcndfbG9jazsKICBpbnQgX19yd19yZWFkZXJz
OwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVyOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfcmVh
ZF93YWl0aW5nOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVfd2FpdGluZzsKICBpbnQgX19y
d19raW5kOwogIGludCBfX3J3X3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2tfdDsKCgoKdHlwZWRl
ZiBzdHJ1Y3QKewogIGludCBfX2xvY2traW5kOwogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9y
d2xvY2thdHRyX3Q7CgoKCgp0eXBlZGVmIHZvbGF0aWxlIGludCBwdGhyZWFkX3NwaW5sb2NrX3Q7
CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2JhX2xvY2s7
CiAgaW50IF9fYmFfcmVxdWlyZWQ7CiAgaW50IF9fYmFfcHJlc2VudDsKICBfcHRocmVhZF9kZXNj
ciBfX2JhX3dhaXRpbmc7Cn0gcHRocmVhZF9iYXJyaWVyX3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qgewog
IGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9iYXJyaWVyYXR0cl90OwoKCgoKCnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwojIDE0NCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMu
aCIgMiAzCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiBfX3Vf
Y2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1
X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0
eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCnR5
cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3QgaW5vX3Q7CgoKCgoKCnR5
cGVkZWYgX19pbm82NF90IGlubzY0X3Q7CgoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0
eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoKCnR5
cGVkZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7CgoKCgoK
dHlwZWRlZiBfX29mZl90IG9mZl90OwoKCgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoK
CgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5
cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90Owp0
eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTI2
ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAx
IDMKIyA1NiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDEgMwojIDU3ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fY2xv
Y2tfdCBjbG9ja190OwoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMK
IyA2OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKdHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7
CiMgNzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBl
cy5oIiAxIDMKIyA4MCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKdHlwZWRlZiBfX2Nsb2Nr
aWRfdCBjbG9ja2lkX3Q7CiMgOTEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA5MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoK
dHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKIyAxMjcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMiAzCgoKCnR5cGVkZWYgX191c2Vjb25kc190IHVzZWNvbmRzX3Q7CgoKCnR5cGVkZWYgX19z
dXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0MSAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9u
ZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCB1aW50OwojIDE4NCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgaW50IGlu
dDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiBpbnQgaW50
MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgaW50
MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiBpbnQgaW50
NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCgp0eXBlZGVmIHVuc2ln
bmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19I
SV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9f
bW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKIyAyMDYgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgMjA3ICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3Qu
aCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9z
eXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwoj
IDMyICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3NpZ3NldC5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKdHlw
ZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2ln
bmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50
KSkpXTsKICB9IF9fc2lnc2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIg
MwoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDEgMwojIDEwNiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXNwZWMK
ICB7CiAgICBsb25nIGludCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CiMgNDQg
Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90
aW1lLmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA2NCAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAy
IDMKCgoKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1c2Vj
b25kc190IHR2X3VzZWM7CiAgfTsKIyA0NiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAz
CgoKCnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7
CgoKCiAgICBfX2ZkX21hc2sgZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2sp
KV07CgoKCgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKIyA4
OSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwpleHRlcm4gIkMiIHsKCgoKCgoKZXh0ZXJu
IGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCiAg
ICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAg
ICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCkgdGhyb3cgKCk7CgoKCgoK
ZXh0ZXJuIGludCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFk
ZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAog
ICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0
LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdt
YXNrKSB0aHJvdyAoKTsKCgp9CiMgMjEwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoK
CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjEzICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CgoK
CgoKCnR5cGVkZWYgX19ibGtjbnRfdCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3Qg
ZnNibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNTEgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fYmxrY250NjRfdCBibGtjbnQ2NF90
Owp0eXBlZGVmIF9fZnNibGtjbnQ2NF90IGZzYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzZmlsY250
NjRfdCBmc2ZpbGNudDY0X3Q7CgoKfQojIDM5MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMK
CgoKCgoKZXh0ZXJuIGxvbmcgaW50IHJhbmRvbSAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZv
aWQgc3JhbmRvbSAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNo
YXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pIHRocm93ICgpOwoKCgpleHRl
cm4gY2hhciAqc2V0c3RhdGUgKGNoYXIgKl9fc3RhdGVidWYpIHRocm93ICgpOwoKCgoKCgoKc3Ry
dWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsKICAgIGludDMyX3QgKnJwdHI7
CiAgICBpbnQzMl90ICpzdGF0ZTsKICAgIGludCByYW5kX3R5cGU7CiAgICBpbnQgcmFuZF9kZWc7
CiAgICBpbnQgcmFuZF9zZXA7CiAgICBpbnQzMl90ICplbmRfcHRyOwogIH07CgpleHRlcm4gaW50
IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpOwoKZXh0
ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0
YSAqX19idWYpIHRocm93ICgpOwoKZXh0ZXJuIGludCBpbml0c3RhdGVfciAodW5zaWduZWQgaW50
IF9fc2VlZCwgY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgX19zdGF0ZWxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJh
bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc2V0c3Rh
dGVfciAoY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoKCgoKZXh0
ZXJuIGludCByYW5kICh2b2lkKSB0aHJvdyAoKTsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25l
ZCBpbnQgX19zZWVkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCByYW5kX3IgKHVuc2lnbmVkIGlu
dCAqX19zZWVkKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkg
dGhyb3cgKCk7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1
YmlbM10pIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSB0aHJvdyAo
KTsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNd
KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4
dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgdGhy
b3cgKCk7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSB0aHJvdyAo
KTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQg
X19zZWVkMTZ2WzNdKSB0aHJvdyAoKTsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAodW5zaWduZWQgc2hv
cnQgaW50IF9fcGFyYW1bN10pIHRocm93ICgpOwoKCgoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7
CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9f
b2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19jOwogICAgdW5zaWduZWQgc2hvcnQg
aW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19hOwogIH07CgoKZXh0ZXJu
IGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIs
CiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93
ICgpOwpleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10s
CiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0
KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jl
c3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVuc2lnbmVk
IHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5k
NDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcg
aW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IG1yYW5kNDhf
ciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAg
ICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKZXh0ZXJu
IGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAo
KTsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJh
bmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc2VlZDQ4X3Ig
KHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgbGNvbmc0
OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSB0aHJvdyAoKTsKIyA1MjcgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgKmNhbGxvYyAo
c2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19wdHIs
IHNpemVfdCBfX3NpemUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7Cgpl
eHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cikgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNm
cmVlICh2b2lkICpfX3B0cikgdGhyb3cgKCk7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5o
IiAxIDMKIyAyMiAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCiMgMSAiL3Vz
ci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoK
CgpleHRlcm4gdm9pZCAqYWxsb2NhIChzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgoKCgp9CiMg
NTQ3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAo
c2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoK
CmV4dGVybiBpbnQgcG9zaXhfbWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxp
Z25tZW50LCBzaXplX3QgX19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21h
bGxvY19fKSk7CgoKCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5j
KSAodm9pZCkpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5j
KSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgIHRocm93ICgp
OwoKCgoKCmV4dGVybiB2b2lkIGV4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1
cykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGNo
YXIgKmdldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgpleHRlcm4gY2hh
ciAqX19zZWN1cmVfZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoK
ZXh0ZXJuIGludCBwdXRlbnYgKGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
aW50IHNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwg
aW50IF9fcmVwbGFjZSkKICAgICB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZv
aWQpIHRocm93ICgpOwojIDYyMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFy
ICpta3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBt
a3N0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKTsKIyA2NDAgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwpleHRlcm4gaW50IG1rc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cg
KCk7CiMgNjUwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rZHRlbXAg
KGNoYXIgKl9fdGVtcGxhdGUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29u
c3QgY2hhciAqX19jb21tYW5kKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNhbm9uaWNh
bGl6ZV9maWxlX25hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKIyA2NzIgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0
cmljdCBfX3Jlc29sdmVkKSB0aHJvdyAoKTsKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9m
bl90KSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFy
X2ZuX3QgY29tcGFyaXNvbl9mbl90OwoKCgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0
IHZvaWQgKl9fa2V5LCBfX2NvbnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsK
CgoKZXh0ZXJuIHZvaWQgcXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVf
dCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoK
ZXh0ZXJuIGludCBhYnMgKGludCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcgaW50IF9feCkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGlu
dCBsbGFicyAobG9uZyBsb25nIGludCBfX3gpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9f
ZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4g
bGRpdl90IGxkaXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4g
bGxkaXZfdCBsbGRpdiAobG9uZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDcyOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz
CmV4dGVybiBjaGFyICplY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3Np
Z24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50
ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91
YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAg
ICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBf
X3NpZ24pIHRocm93ICgpOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNw
dCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpxZ2N2dCAo
bG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgdGhyb3cgKCk7
CgoKCgpleHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50
ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcg
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAg
ICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwpleHRl
cm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAg
ICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9f
c2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3Qg
X19sZW4pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9f
cywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9f
cmVzdHJpY3QgX19wd2MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAq
X19zLCB3Y2hhcl90IF9fd2NoYXIpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2Nz
ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgpleHRlcm4g
c2l6ZV90IHdjc3RvbWJzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAg
ICB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jl
c3BvbnNlKSB0aHJvdyAoKTsKIyA4MDggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g
aW50IGdldHN1Ym9wdCAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAogICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqX19jb25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFsdWVwKSB0aHJvdyAoKTsKCgoKCgpleHRl
cm4gdm9pZCBzZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkpIHRocm93ICgpOwoKCgoKCgoKZXh0
ZXJuIGludCBwb3NpeF9vcGVucHQgKGludCBfX29mbGFnKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVy
biBpbnQgZ3JhbnRwdCAoaW50IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0
IChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQp
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9f
YnVmLCBzaXplX3QgX19idWZsZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQp
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdb
XSwgaW50IF9fbmVsZW0pIHRocm93ICgpOwoKCgoKCn0KIyA3MCAidHV4cmFjZXIuaCIgMgojIDEg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3Rk
aW8uaCIgMSAzCiMgMzYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMK
IyAzNyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVk
ZS9zdGRpby5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQzICIvdXNy
L2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgi
IDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA0NSAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMK
IyA1MyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVk
ZS9zdGRpby5oIiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CiMgNjMgIi91c3IvbG9j
YWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwp0
eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgNzMgIi91c3IvbG9jYWwvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwojIDkgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDEwICIvdXNyL2luY2x1ZGUv
X0dfY29uZmlnLmgiIDIgMwoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMTQgIi91c3IvbG9jYWwvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIg
MwojIDI0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvd2No
YXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMg
NDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2No
YXIuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyA2NyAiL3Vzci9pbmNs
dWRlL3djaGFyLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9uCiAg
ewogICAgd2ludF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAgfSBfX3ZhbHVlOwp9IF9f
bWJzdGF0ZV90OwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKdHlwZWRlZiBz
dHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9z
X3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19z
dGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL2dj
b252LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5j
bHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5o
IiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5j
bHVkZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKIyAxICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCgoKCmVudW0KewogIF9f
R0NPTlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05W
X05PTUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAg
X19HQ09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19H
Q09OVl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCgpl
bnVtCnsKICBfX0dDT05WX0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9JR05PUkVfRVJST1JT
ID0gMHgwMDAyCn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBf
ZGF0YTsKc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNf
ZGF0YTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAg
Kiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6ZV90ICosIGludCwg
aW50KTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1Y3QgX19nY29udl9z
dGVwICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9z
dGVwICopOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3RydWN0IF9fZ2Nv
bnZfc3RlcCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9fZ2Nv
bnZfc3RlcF9kYXRhICosIHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2dj
b252X3RyYW5zX2NvbnRleHRfZmN0KSAodm9pZCAqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJh
bnNfcXVlcnlfZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAqKiosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQg
KCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsKdHlwZWRl
ZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBfX2djb252
X3RyYW5zX2RhdGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsKICBfX2djb252
X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29udl90cmFuc19l
bmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZf
dHJhbnNfZGF0YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwCnsKICBzdHJ1Y3Qg
X19nY29udl9sb2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2NvbnN0IGNoYXIgKl9f
bW9kbmFtZTsKCiAgaW50IF9fY291bnRlcjsKCiAgY2hhciAqX19mcm9tX25hbWU7CiAgY2hhciAq
X190b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252X2luaXRfZmN0IF9faW5p
dF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoKICBpbnQgX19taW5fbmVlZGVk
X2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBfX21pbl9uZWVkZWRfdG87CiAg
aW50IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVsOwoKICB2b2lkICpfX2RhdGE7
Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5zaWduZWQgY2hhciAqX19vdXRi
dWY7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAgaW50IF9fZmxhZ3M7CgoKCiAg
aW50IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgogIGludCBfX2ludGVybmFsX3VzZTsKCiAgX19t
YnN0YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7CgoKCiAgc3RydWN0IF9f
Z2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX19nY29udl9p
bmZvCnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZfc3RlcCAqX19zdGVwczsK
ICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGEgW107Cn0gKl9f
Z2NvbnZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKdHlwZWRlZiB1bmlv
bgp7CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsKICAgIHN0cnVjdCBf
X2djb252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGE7CiAg
fSBfX2NvbWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBf
R191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18p
KSk7CiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MSAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
MS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0MyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92
YV9saXN0IF9fZ251Y192YV9saXN0OwojIDUyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMg
MTU4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9J
T19GSUxFOwojIDE2OCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiB2b2lkIF9JT19s
b2NrX3Q7CgoKCgoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4
dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBfcG9zOwojIDE5MSAiL3Vzci9p
bmNsdWRlL2xpYmlvLmgiIDMKfTsKCgplbnVtIF9fY29kZWN2dF9yZXN1bHQKewogIF9fY29kZWN2
dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2NvZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0
X25vY29udgp9OwojIDI1OSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19GSUxF
IHsKICBpbnQgX2ZsYWdzOwoKCgoKICBjaGFyKiBfSU9fcmVhZF9wdHI7CiAgY2hhciogX0lPX3Jl
YWRfZW5kOwogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CiAg
Y2hhciogX0lPX3dyaXRlX3B0cjsKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwogIGNoYXIqIF9JT19i
dWZfYmFzZTsKICBjaGFyKiBfSU9fYnVmX2VuZDsKCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsKICBj
aGFyICpfSU9fYmFja3VwX2Jhc2U7CiAgY2hhciAqX0lPX3NhdmVfZW5kOwoKICBzdHJ1Y3QgX0lP
X21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2Zp
bGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZfdCBfb2xkX29mZnNldDsKCgoKICB1bnNpZ25l
ZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFy
IF9zaG9ydGJ1ZlsxXTsKCgoKICBfSU9fbG9ja190ICpfbG9jazsKIyAzMDMgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAzCiAgX19vZmY2NF90IF9vZmZzZXQ7CgoKCgoKICB2b2lkICpfX3BhZDE7CiAg
dm9pZCAqX19wYWQyOwoKICBpbnQgX21vZGU7CgogIGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2Yg
KGludCkgLSAyICogc2l6ZW9mICh2b2lkICopXTsKCn07CgoKCgoKc3RydWN0IF9JT19GSUxFX3Bs
dXM7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRpbl87CmV4dGVybiBz
dHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJ
TEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CiMgMzQyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0
eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZvaWQgKl9fY29va2llLCBjaGFyICpfX2J1
Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVf
Zm4gKHZvaWQgKl9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgX19uKTsKCgoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vl
a19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3MsIGludCBfX3cpOwoKCnR5cGVk
ZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsKCgoKCnR5cGVkZWYgX19pb19y
ZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb193cml0ZV9mbiBjb29r
aWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3NlZWtfZm4gY29va2llX3NlZWtfZnVu
Y3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Nsb3NlX2ZuIGNvb2tpZV9jbG9zZV9mdW5jdGlvbl90OwoK
CnR5cGVkZWYgc3RydWN0CnsKICBfX2lvX3JlYWRfZm4gKnJlYWQ7CiAgX19pb193cml0ZV9mbiAq
d3JpdGU7CiAgX19pb19zZWVrX2ZuICpzZWVrOwogIF9faW9fY2xvc2VfZm4gKmNsb3NlOwp9IF9J
T19jb29raWVfaW9fZnVuY3Rpb25zX3Q7CnR5cGVkZWYgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNf
dCBjb29raWVfaW9fZnVuY3Rpb25zX3Q7CgpzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlOwoKCmV4dGVy
biB2b2lkIF9JT19jb29raWVfaW5pdCAoc3RydWN0IF9JT19jb29raWVfZmlsZSAqX19jZmlsZSwg
aW50IF9fcmVhZF93cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2Nv
b2tpZSwgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2Zucyk7CgoKCgpleHRlcm4gIkMiIHsK
CgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGlu
dCBfX3VmbG93IChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX292ZXJmbG93IChf
SU9fRklMRSAqLCBpbnQpIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd3VuZGVyZmxvdyAoX0lP
X0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19GSUxFICopIHRo
cm93ICgpOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpIHRo
cm93ICgpOwojIDQyNCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fZ2V0
YyAoX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19wdXRjIChpbnQgX19j
LCBfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxF
ICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkg
dGhyb3cgKCk7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKSB0
aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJv
dyAoKTsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSB0aHJvdyAoKTsKIyA0NTQg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX3Zmc2NhbmYgKF9JT19GSUxF
ICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJpY3QpIHRocm93ICgpOwpleHRlcm4g
aW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVz
dHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCkgdGhyb3cgKCk7
CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4gKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KSB0
aHJvdyAoKTsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19GSUxFICosIHZvaWQgKiwgc2l6
ZV90KSB0aHJvdyAoKTsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICos
IF9fb2ZmNjRfdCwgaW50LCBpbnQpIHRocm93ICgpOwpleHRlcm4gX19vZmY2NF90IF9JT19zZWVr
cG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCBf
SU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CiMgNTEwICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwp9CiMgNzQgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgp0eXBlZGVmIF9fZ251Y192YV9s
aXN0IF9fbm90X3ZhX2xpc3RfXzsKIyA4OCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgX0dfZnBvc190IGZwb3Nf
dDsKCgoKCnR5cGVkZWYgX0dfZnBvczY0X3QgZnBvczY0X3Q7CiMgMTM3ICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzCiMgMTM4ICIvdXNyL2xvY2FsL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgpleHRl
cm4gRklMRSAqc3RkaW47CmV4dGVybiBGSUxFICpzdGRvdXQ7CmV4dGVybiBGSUxFICpzdGRlcnI7
CiMgMTUyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNs
dWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFt
ZSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBjaGFyICpfX29sZCwgX19j
b25zdCBjaGFyICpfX25ldykgdGhyb3cgKCk7CgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZSAodm9p
ZCkgdGhyb3cgKCk7CiMgMTY4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9pZCkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoK
CmV4dGVybiBjaGFyICp0bXBuYW1fciAoY2hhciAqX19zKSB0aHJvdyAoKTsKIyAxODggIi91c3Iv
bG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIg
MwpleHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFy
ICpfX3BmeCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoK
ZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQg
ZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZmZsdXNoX3Vu
bG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZjbG9zZWFs
bCAodm9pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19tb2RlcykgdGhyb3cgKCk7CgpleHRlcm4gRklMRSAqZnJlb3BlbiAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgIEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwojIDIzMiAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBG
SUxFICpmb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSB0aHJvdyAo
KTsKZXh0ZXJuIEZJTEUgKmZyZW9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmls
ZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNo
YXIgKl9fbW9kZXMpIHRocm93ICgpOwoKCgoKCmV4dGVybiBGSUxFICpmb3BlbmNvb2tpZSAodm9p
ZCAqX19yZXN0cmljdCBfX21hZ2ljX2Nvb2tpZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9faW9fZnVuY3MpIHRocm93ICgpOwoKCmV4dGVy
biBGSUxFICpmbWVtb3BlbiAodm9pZCAqX19zLCBzaXplX3QgX19sZW4sIF9fY29uc3QgY2hhciAq
X19tb2RlcykgdGhyb3cgKCk7CgoKCgpleHRlcm4gRklMRSAqb3Blbl9tZW1zdHJlYW0gKGNoYXIg
KipfX3Jlc3RyaWN0IF9fYnVmbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCAqX19yZXN0cmljdCBfX3NpemVsb2MpIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lkIHNldGJ1
ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgdGhy
b3cgKCk7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwg
Y2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICBpbnQgX19tb2Rlcywg
c2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1
ZiAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmcHJpbnRmIChGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgcHJpbnRmIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4g
aW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgpleHRlcm4g
aW50IHZmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykg
dGhyb3cgKCk7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gaW50
IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhy
b3cgKCk7CgoKCmV4dGVybiBpbnQgc25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXpl
X3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9f
IChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9fcmVz
dHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwoK
CgoKCmV4dGVybiBpbnQgdmFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwKICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9s
aXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3By
aW50Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IF9fYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0
IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2ZtdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3By
aW50Zl9fLCAyLCAzKSkpOwpleHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBf
X3B0ciwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10
LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm
X18sIDIsIDMpKSk7CgoKZXh0ZXJuIGludCB2ZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2ZtdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qg
X19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm
X18sIDIsIDApKSk7CmV4dGVybiBpbnQgZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCgoKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNjYW5mIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50
IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGludCB2ZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJn
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIs
IDApKSk7CgoKZXh0ZXJuIGludCB2c2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKTsKCgpleHRlcm4gaW50IHZzc2NhbmYgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCgoK
ZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGdl
dGMgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQp
IHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVh
bSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7
CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4
dGVybiBpbnQgcHV0Y2hhciAoaW50IF9fYykgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IGZw
dXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRl
cm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKCgpleHRl
cm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB1dHcg
KGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpmZ2V0
cyAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0pCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpmZ2V0c191bmxvY2tlZCAoY2hhciAq
X19yZXN0cmljdCBfX3MsIGludCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZ2V0cyAo
Y2hhciAqX19zKSB0aHJvdyAoKTsKIyA0MzYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gX19zc2l6ZV90IF9fZ2V0
ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93
ICgpOwpleHRlcm4gX19zc2l6ZV90IGdldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVw
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwg
aW50IF9fZGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBfX3NzaXplX3QgZ2V0bGluZSAoY2hh
ciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90ICpfX3Jlc3RyaWN0IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmcHV0cyAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICB0
aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBmcHV0c191bmxvY2tlZCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3Mp
IHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRy
LCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBzaXplX3QgZndyaXRlIChfX2Nv
bnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcykgdGhyb3cgKCk7CgoKCmV4
dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVf
dCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxv
Y2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwg
bG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBpbnQg
ZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiB2b2lkIHJld2luZCAoRklM
RSAqX19zdHJlYW0pIHRocm93ICgpOwojIDQ5OSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNlZWtvIChG
SUxFICpfX3N0cmVhbSwgX19vZmZfdCBfX29mZiwgaW50IF9fd2hlbmNlKSB0aHJvdyAoKTsKCmV4
dGVybiBfX29mZl90IGZ0ZWxsbyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4g
aW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmlj
dCBfX3BvcykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJl
YW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgdGhyb3cgKCk7CiMgNTMzICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJu
IGludCBmc2Vla282NCAoRklMRSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hl
bmNlKSB0aHJvdyAoKTsKZXh0ZXJuIF9fb2ZmNjRfdCBmdGVsbG82NCAoRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwpleHRlcm4gaW50IGZnZXRwb3M2NCAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSwgZnBvczY0X3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAgdGhyb3cgKCk7CmV4dGVybiBpbnQg
ZnNldHBvczY0IChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zNjRfdCAqX19wb3MpIHRocm93
ICgpOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoK
ZXh0ZXJuIGludCBmZW9mIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZl
cnJvciAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91
bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGZlb2ZfdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQg
KEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAoX19jb25z
dCBjaGFyICpfX3MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIF9f
Y29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwoKCmV4dGVybiBpbnQgX3N5c19uZXJy
OwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IF9zeXNfZXJybGlzdFtdOwoKCgoKCmV4dGVy
biBpbnQgZmlsZW5vIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZp
bGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gRklM
RSAqcG9wZW4gKF9fY29uc3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMp
IHRocm93ICgpOwoKCmV4dGVybiBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7
CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgoKZXh0
ZXJuIGNoYXIgKmN1c2VyaWQgKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpzdHJ1Y3Qgb2JzdGFj
azsKCgpleHRlcm4gaW50IG9ic3RhY2tfcHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqX19yZXN0cmlj
dCBfX29ic3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBvYnN0YWNrX3Zwcmlu
dGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJncykgdGhyb3cgKCk7CgoKCgoK
CgpleHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4g
dm9pZCBmdW5sb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwojIDY0MCAiL3Vzci9s
b2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMSAzCiMgMzkgIi91c3IvaW5jbHVkZS9i
aXRzL3N0ZGlvLmgiIDMKaW5saW5lIGludAp2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mbXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKQp7CiAgcmV0dXJuIHZmcHJp
bnRmIChzdGRvdXQsIF9fZm10LCBfX2FyZyk7Cn0KCgppbmxpbmUgaW50CmdldGNoYXIgKHZvaWQp
IHRocm93ICgpCnsKICByZXR1cm4gX0lPX2dldGMgKHN0ZGluKTsKfQoKCgoKaW5saW5lIGludApn
ZXRjX3VubG9ja2VkIChGSUxFICpfX2ZwKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoX19mcCktPl9J
T19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKF9fZnApIDogKih1
bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKaW5saW5lIGludApn
ZXRjaGFyX3VubG9ja2VkICh2b2lkKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoc3RkaW4pLT5fSU9f
cmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoc3RkaW4pIDogKih1
bnNpZ25lZCBjaGFyICopIChzdGRpbiktPl9JT19yZWFkX3B0cisrKTsKfQoKCgoKaW5saW5lIGlu
dApwdXRjaGFyIChpbnQgX19jKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9JT19wdXRjIChfX2MsIHN0
ZG91dCk7Cn0KCgoKCmlubGluZSBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9f
c3RyZWFtKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+
PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5z
aWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dy
aXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoKCmlubGluZSBpbnQKcHV0Y191bmxvY2tlZCAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5f
SU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAo
X19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19z
dHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKaW5saW5lIGludApwdXRjaGFy
X3VubG9ja2VkIChpbnQgX19jKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoKHN0ZG91dCktPl9JT193
cml0ZV9wdHIgPj0gKHN0ZG91dCktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoc3Rkb3V0
LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCktPl9J
T193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgppbmxpbmUgX19zc2l6ZV90CmdldGxpbmUg
KGNoYXIgKipfX2xpbmVwdHIsIHNpemVfdCAqX19uLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkK
ewogIHJldHVybiBfX2dldGRlbGltIChfX2xpbmVwdHIsIF9fbiwgJ1xuJywgX19zdHJlYW0pOwp9
CgoKCgoKaW5saW5lIGludApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkK
ewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MTApICE9IDApOwp9CgoKaW5saW5l
IGludApmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKQp7CiAgcmV0dXJu
ICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgyMCkgIT0gMCk7Cn0KIyA2NDEgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoK
fQojIDcxICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwojIDI5
ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAx
IDMKIyAzMCAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMwoKCmV4dGVybiAiQyIgewoKCgojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9l
cnJuby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEgMwoKCgojIDEgIi91
c3IvaW5jbHVkZS9hc20vZXJybm8uaCIgMSAzCiMgNSAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5v
LmgiIDIgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAyIDMKIyAzNiAiL3Vzci9p
bmNsdWRlL2JpdHMvZXJybm8uaCIgMwpleHRlcm4gaW50IGVycm5vOwoKCmV4dGVybiBpbnQgKl9f
ZXJybm9fbG9jYXRpb24gKHZvaWQpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKIyAzNyAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMwojIDU1ICIvdXNyL2luY2x1ZGUvZXJy
bm8uaCIgMwpleHRlcm4gY2hhciAqcHJvZ3JhbV9pbnZvY2F0aW9uX25hbWUsICpwcm9ncmFtX2lu
dm9jYXRpb25fc2hvcnRfbmFtZTsKCgoKfQojIDY5ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMwp0
eXBlZGVmIGludCBlcnJvcl90OwojIDcyICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKZXh0ZXJu
ICJDIiB7CgoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAy
IDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMwojIDQzICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAyIDMKIyAxMTggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKc3RydWN0IHRtCnsK
ICBpbnQgdG1fc2VjOwogIGludCB0bV9taW47CiAgaW50IHRtX2hvdXI7CiAgaW50IHRtX21kYXk7
CiAgaW50IHRtX21vbjsKICBpbnQgdG1feWVhcjsKICBpbnQgdG1fd2RheTsKICBpbnQgdG1feWRh
eTsKICBpbnQgdG1faXNkc3Q7CgoKICBsb25nIGludCB0bV9nbXRvZmY7CiAgX19jb25zdCBjaGFy
ICp0bV96b25lOwoKCgoKfTsKCgoKCnN0cnVjdCBpdGltZXJzcGVjCiAgewogICAgc3RydWN0IHRp
bWVzcGVjIGl0X2ludGVydmFsOwogICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwogIH07CgoK
c3RydWN0IHNpZ2V2ZW50OwojIDE2MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpleHRlcm4gY2xv
Y2tfdCBjbG9jayAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHRpbWVfdCB0aW1lICh0aW1lX3Qg
Kl9fdGltZXIpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgZGlmZnRpbWUgKHRpbWVfdCBfX3Rp
bWUxLCB0aW1lX3QgX190aW1lMCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKZXh0ZXJuIHRpbWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqX190cCkgdGhyb3cgKCk7
CgoKCgoKZXh0ZXJuIHNpemVfdCBzdHJmdGltZSAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVf
dCBfX21heHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdG0g
Kl9fcmVzdHJpY3QgX190cCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqc3RycHRpbWUgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBzdHJ1Y3QgdG0gKl9fdHApCiAgICAgdGhyb3cgKCk7
CgoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikg
dGhyb3cgKCk7CgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZSAoX19jb25zdCB0aW1lX3Qg
Kl9fdGltZXIpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IgKF9fY29u
c3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgdGhyb3cgKCk7CgoKCmV4dGVybiBzdHJ1Y3Qg
dG0gKmxvY2FsdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmFzY3RpbWUgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Rw
KSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqY3RpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVy
KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmFzY3RpbWVfciAoX19jb25zdCBzdHJ1Y3Qg
dG0gKl9fcmVzdHJpY3QgX190cCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0
cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKmN0aW1lX3IgKF9fY29uc3QgdGlt
ZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpfX3R6bmFtZVsyXTsKZXh0
ZXJuIGludCBfX2RheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsKCgoKCmV4dGVy
biBjaGFyICp0em5hbWVbMl07CgoKCmV4dGVybiB2b2lkIHR6c2V0ICh2b2lkKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGludCBkYXlsaWdodDsKZXh0ZXJuIGxvbmcgaW50IHRpbWV6b25lOwoKCgoKCmV4
dGVybiBpbnQgc3RpbWUgKF9fY29uc3QgdGltZV90ICpfX3doZW4pIHRocm93ICgpOwojIDI3MSAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpleHRlcm4gdGltZV90IHRpbWVnbSAoc3RydWN0IHRtICpf
X3RwKSB0aHJvdyAoKTsKCgpleHRlcm4gdGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3Rw
KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGR5c2l6ZSAoaW50IF9feWVhcikgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBpbnQgbmFub3NsZWVwIChfX2Nv
bnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0ZWRfdGltZSwKICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCB0aW1lc3BlYyAqX19yZW1haW5pbmcpIHRocm93ICgpOwoKCgpleHRlcm4gaW50
IGNsb2NrX2dldHJlcyAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX19y
ZXMpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0dGltZSAoY2xvY2tpZF90IF9fY2xv
Y2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX190cCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBjbG9j
a19zZXR0aW1lIChjbG9ja2lkX3QgX19jbG9ja19pZCwgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMg
Kl9fdHApCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgY2xvY2tfbmFub3NsZWVwIChjbG9j
a2lkX3QgX19jbG9ja19pZCwgaW50IF9fZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGNsb2Nr
X2dldGNwdWNsb2NraWQgKHBpZF90IF9fcGlkLCBjbG9ja2lkX3QgKl9fY2xvY2tfaWQpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3RyaWN0IF9fZXZw
LAogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJfdCAqX19yZXN0cmljdCBfX3RpbWVyaWQp
IHRocm93ICgpOwoKCmV4dGVybiBpbnQgdGltZXJfZGVsZXRlICh0aW1lcl90IF9fdGltZXJpZCkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwg
aW50IF9fZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgaXRp
bWVyc3BlYyAqX19yZXN0cmljdCBfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fb3ZhbHVlKSB0aHJvdyAoKTsKCgpleHRlcm4g
aW50IHRpbWVyX2dldHRpbWUgKHRpbWVyX3QgX190aW1lcmlkLCBzdHJ1Y3QgaXRpbWVyc3BlYyAq
X192YWx1ZSkKICAgICB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHRpbWVyX2dldG92ZXJydW4gKHRp
bWVyX3QgX190aW1lcmlkKSB0aHJvdyAoKTsKIyAzNDIgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMK
ZXh0ZXJuIGludCBnZXRkYXRlX2VycjsKCgoKCgpleHRlcm4gc3RydWN0IHRtICpnZXRkYXRlIChf
X2NvbnN0IGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKIyAzNTcgIi91c3IvaW5jbHVkZS90aW1l
LmgiIDMKZXh0ZXJuIGludCBnZXRkYXRlX3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3N0
cmluZywKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3Jlc2J1
ZnApIHRocm93ICgpOwoKCgp9CiMgNzMgInR1eHJhY2VyLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUv
Y3R5cGUuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS9jdHlwZS5o
IiAyIDMKCmV4dGVybiAiQyIgewojIDQwICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgNDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMK
CgoKCgoKZW51bQp7CiAgX0lTdXBwZXIgPSAoKDApIDwgOCA/ICgoMSA8PCAoMCkpIDw8IDgpIDog
KCgxIDw8ICgwKSkgPj4gOCkpLAogIF9JU2xvd2VyID0gKCgxKSA8IDggPyAoKDEgPDwgKDEpKSA8
PCA4KSA6ICgoMSA8PCAoMSkpID4+IDgpKSwKICBfSVNhbHBoYSA9ICgoMikgPCA4ID8gKCgxIDw8
ICgyKSkgPDwgOCkgOiAoKDEgPDwgKDIpKSA+PiA4KSksCiAgX0lTZGlnaXQgPSAoKDMpIDwgOCA/
ICgoMSA8PCAoMykpIDw8IDgpIDogKCgxIDw8ICgzKSkgPj4gOCkpLAogIF9JU3hkaWdpdCA9ICgo
NCkgPCA4ID8gKCgxIDw8ICg0KSkgPDwgOCkgOiAoKDEgPDwgKDQpKSA+PiA4KSksCiAgX0lTc3Bh
Y2UgPSAoKDUpIDwgOCA/ICgoMSA8PCAoNSkpIDw8IDgpIDogKCgxIDw8ICg1KSkgPj4gOCkpLAog
IF9JU3ByaW50ID0gKCg2KSA8IDggPyAoKDEgPDwgKDYpKSA8PCA4KSA6ICgoMSA8PCAoNikpID4+
IDgpKSwKICBfSVNncmFwaCA9ICgoNykgPCA4ID8gKCgxIDw8ICg3KSkgPDwgOCkgOiAoKDEgPDwg
KDcpKSA+PiA4KSksCiAgX0lTYmxhbmsgPSAoKDgpIDwgOCA/ICgoMSA8PCAoOCkpIDw8IDgpIDog
KCgxIDw8ICg4KSkgPj4gOCkpLAogIF9JU2NudHJsID0gKCg5KSA8IDggPyAoKDEgPDwgKDkpKSA8
PCA4KSA6ICgoMSA8PCAoOSkpID4+IDgpKSwKICBfSVNwdW5jdCA9ICgoMTApIDwgOCA/ICgoMSA8
PCAoMTApKSA8PCA4KSA6ICgoMSA8PCAoMTApKSA+PiA4KSksCiAgX0lTYWxudW0gPSAoKDExKSA8
IDggPyAoKDEgPDwgKDExKSkgPDwgOCkgOiAoKDEgPDwgKDExKSkgPj4gOCkpCn07CiMgNzUgIi91
c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBfX2NvbnN0IHVuc2lnbmVkIHNob3J0IGludCAq
X19jdHlwZV9iOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG9sb3dlcjsKZXh0
ZXJuIF9fY29uc3QgX19pbnQzMl90ICpfX2N0eXBlX3RvdXBwZXI7CiMgOTEgIi91c3IvaW5jbHVk
ZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQgaXNhbG51bSAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGlu
dCBpc2FscGhhIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzY250cmwgKGludCkgdGhyb3cg
KCk7CmV4dGVybiBpbnQgaXNkaWdpdCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2xvd2Vy
IChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgdGhyb3cgKCk7CmV4dGVy
biBpbnQgaXNwcmludCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3B1bmN0IChpbnQpIHRo
cm93ICgpOwpleHRlcm4gaW50IGlzc3BhY2UgKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXN1
cHBlciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSB0aHJvdyAoKTsK
CgpleHRlcm4gaW50IGlzYmxhbmsgKGludCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHRvbG93
ZXIgKGludCBfX2MpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgdG91cHBlciAoaW50IF9fYykgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgaXNhc2NpaSAoaW50IF9fYykgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgdG9hc2NpaSAoaW50IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX3RvdXBw
ZXIgKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX3RvbG93ZXIgKGludCkgdGhyb3cgKCk7CiMg
MTY3ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CnRvbG93ZXIg
KGludCBfX2MpIHRocm93ICgpCnsKICByZXR1cm4gX19jID49IC0xMjggJiYgX19jIDwgMjU2ID8g
X19jdHlwZV90b2xvd2VyW19fY10gOiBfX2M7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKdG91cHBl
ciAoaW50IF9fYykgdGhyb3cgKCkKewogIHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYg
PyBfX2N0eXBlX3RvdXBwZXJbX19jXSA6IF9fYzsKfQojIDIxMCAiL3Vzci9pbmNsdWRlL2N0eXBl
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMKIyAyMTEgIi91c3IvaW5jbHVk
ZS9jdHlwZS5oIiAyIDMKIyAyMjMgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQg
X19pc2FsbnVtX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19pc2Fs
cGhhX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19pc2NudHJsX2wg
KGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19pc2RpZ2l0X2wgKGludCwg
X19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19pc2xvd2VyX2wgKGludCwgX19sb2Nh
bGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19pc2dyYXBoX2wgKGludCwgX19sb2NhbGVfdCkg
dGhyb3cgKCk7CmV4dGVybiBpbnQgX19pc3ByaW50X2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cg
KCk7CmV4dGVybiBpbnQgX19pc3B1bmN0X2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4
dGVybiBpbnQgX19pc3NwYWNlX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBp
bnQgX19pc3VwcGVyX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19p
c3hkaWdpdF9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwoKZXh0ZXJuIGludCBfX2lzYmxh
bmtfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBfX3RvbG93ZXJf
bCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgX190b3Vw
cGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSB0aHJvdyAoKTsKIyAyNzYgIi91c3IvaW5j
bHVkZS9jdHlwZS5oIiAzCn0KIyA3NCAidHV4cmFjZXIuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9z
eXMvc3RhdC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAy
IDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVk
ZS9zeXMvc3RhdC5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAzMyAi
L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMwojIDk2ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQu
aCIgMwpleHRlcm4gIkMiIHsKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAxIDMKIyAz
NiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAzCnN0cnVjdCBzdGF0CiAgewogICAgX19kZXZf
dCBzdF9kZXY7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQxOwoKICAgIF9faW5vX3Qgc3Rf
aW5vOwoKCgogICAgX19tb2RlX3Qgc3RfbW9kZTsKICAgIF9fbmxpbmtfdCBzdF9ubGluazsKICAg
IF9fdWlkX3Qgc3RfdWlkOwogICAgX19naWRfdCBzdF9naWQ7CiAgICBfX2Rldl90IHN0X3JkZXY7
CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwoKICAgIF9fb2ZmX3Qgc3Rfc2l6ZTsKCgoK
ICAgIF9fYmxrc2l6ZV90IHN0X2Jsa3NpemU7CgoKICAgIF9fYmxrY250X3Qgc3RfYmxvY2tzOwoK
CgogICAgX190aW1lX3Qgc3RfYXRpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDE7
CiAgICBfX3RpbWVfdCBzdF9tdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsK
ICAgIF9fdGltZV90IHN0X2N0aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwoK
ICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkNDsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9f
dW51c2VkNTsKCgoKICB9OwoKCnN0cnVjdCBzdGF0NjQKICB7CiAgICBfX2Rldl90IHN0X2RldjsK
ICAgIHVuc2lnbmVkIGludCBfX3BhZDE7CgogICAgX19pbm9fdCBfX3N0X2lubzsKICAgIF9fbW9k
ZV90IHN0X21vZGU7CiAgICBfX25saW5rX3Qgc3Rfbmxpbms7CiAgICBfX3VpZF90IHN0X3VpZDsK
ICAgIF9fZ2lkX3Qgc3RfZ2lkOwogICAgX19kZXZfdCBzdF9yZGV2OwogICAgdW5zaWduZWQgaW50
IF9fcGFkMjsKICAgIF9fb2ZmNjRfdCBzdF9zaXplOwogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6
ZTsKCiAgICBfX2Jsa2NudDY0X3Qgc3RfYmxvY2tzOwogICAgX190aW1lX3Qgc3RfYXRpbWU7CiAg
ICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDE7CiAgICBfX3RpbWVfdCBzdF9tdGltZTsKICAg
IHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsKICAgIF9fdGltZV90IHN0X2N0aW1lOwogICAg
dW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwogICAgX19pbm82NF90IHN0X2lubzsKICB9Owoj
IDk5ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCiMgMjAwICIvdXNyL2luY2x1ZGUvc3lz
L3N0YXQuaCIgMwpleHRlcm4gaW50IHN0YXQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zp
bGUsCiAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fcmVzdHJpY3QgX19idWYpIHRocm93
ICgpOwoKCgpleHRlcm4gaW50IGZzdGF0IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fYnVmKSB0
aHJvdyAoKTsKIyAyMTkgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzCmV4dGVybiBpbnQgc3Rh
dDY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgICAgICAgICAgICAgICAg
c3RydWN0IHN0YXQ2NCAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CmV4dGVybiBpbnQgZnN0
YXQ2NCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0NjQgKl9fYnVmKSB0aHJvdyAoKTsKCgoKCgoKZXh0
ZXJuIGludCBsc3RhdCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgICAg
ICAgICAgICAgc3RydWN0IHN0YXQgKl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwojIDI0MSAi
L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBsc3RhdDY0IChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQg
Kl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGNobW9kIChfX2Nv
bnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19tb2RlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCBmY2htb2QgKGludCBfX2ZkLCBfX21vZGVfdCBfX21vZGUpIHRocm93ICgpOwoKCgoKCmV4dGVy
biBfX21vZGVfdCB1bWFzayAoX19tb2RlX3QgX19tYXNrKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBf
X21vZGVfdCBnZXR1bWFzayAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgbWtkaXIgKF9f
Y29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUpIHRocm93ICgpOwoKCgoKCmV4dGVy
biBpbnQgbWtub2QgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUsIF9fZGV2
X3QgX19kZXYpCiAgICAgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IG1rZmlmbyAoX19jb25zdCBj
aGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSkgdGhyb3cgKCk7CiMgMzA2ICIvdXNyL2luY2x1
ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IF9fZnhzdGF0IChpbnQgX192ZXIsIGludCBfX2Zp
bGRlcywgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYpIHRocm93ICgpOwpleHRlcm4gaW50IF9feHN0
YXQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2x4c3Rh
dCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSB0aHJvdyAoKTsKIyAzMzAgIi91c3IvaW5jbHVk
ZS9zeXMvc3RhdC5oIiAzCmV4dGVybiBpbnQgX19meHN0YXQ2NCAoaW50IF9fdmVyLCBpbnQgX19m
aWxkZXMsIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYpCiAgICAgdGhyb3cgKCk7CmV4dGVybiBp
bnQgX194c3RhdDY0IChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYpIHRocm93ICgpOwpleHRl
cm4gaW50IF9fbHhzdGF0NjQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYpIHRocm93ICgp
OwoKZXh0ZXJuIGludCBfX3hta25vZCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fcGF0aCwg
X19tb2RlX3QgX19tb2RlLAogICAgICAgICAgICAgICAgICAgICBfX2Rldl90ICpfX2RldikgdGhy
b3cgKCk7CgoKCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgc3RhdCAoX19jb25zdCBjaGFyICpfX3Bh
dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKSB0
aHJvdyAoKQp7CiAgcmV0dXJuIF9feHN0YXQgKDMsIF9fcGF0aCwgX19zdGF0YnVmKTsKfQoKCmV4
dGVybiBfX2lubGluZV9fIGludCBsc3RhdCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikgdGhyb3cgKCkKewog
IHJldHVybiBfX2x4c3RhdCAoMywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5s
aW5lX18gaW50IGZzdGF0IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikgdGhyb3cg
KCkKewogIHJldHVybiBfX2Z4c3RhdCAoMywgX19mZCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBf
X2lubGluZV9fIGludCBta25vZCAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9k
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Rldl90IF9fZGV2KSB0aHJvdyAoKQp7
CiAgcmV0dXJuIF9feG1rbm9kICgxLCBfX3BhdGgsIF9fbW9kZSwgJl9fZGV2KTsKfQoKCgoKCmV4
dGVybiBfX2lubGluZV9fIGludCBzdGF0NjQgKF9fY29uc3QgY2hhciAqX19wYXRoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYpIHRocm93ICgp
CnsKICByZXR1cm4gX194c3RhdDY0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4g
X19pbmxpbmVfXyBpbnQgbHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYpIHRocm93ICgpCnsK
ICByZXR1cm4gX19seHN0YXQ2NCAoMywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9f
aW5saW5lX18gaW50IGZzdGF0NjQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYp
IHRocm93ICgpCnsKICByZXR1cm4gX19meHN0YXQ2NCAoMywgX19mZCwgX19zdGF0YnVmKTsKfQoK
CgoKfQojIDc1ICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMK
IyAyNiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVz
LmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoK
CgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgpleHRl
cm4gdm9pZCAqbWVtY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAo
KTsKCgpleHRlcm4gdm9pZCAqbWVtbW92ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9f
c3JjLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5
ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3Jj
LAogICAgICAgICAgICAgICAgICAgICAgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAo
KTsKCgoKCmV4dGVybiB2b2lkICptZW1zZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9f
bikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtZW1jbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19j
b25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBp
bnQgX19jLCBzaXplX3QgX19uKQogICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgoKCmV4dGVybiB2b2lkICpyYXdtZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQg
X19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAq
bWVtcmNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNw
eSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny
YykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0
IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAq
X19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0
aHJvdyAoKTsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19z
MSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg
Y2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25z
dCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
ZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24p
IHRocm93ICgpOwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMSAzCiMgMTA5ICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCmV4dGVybiBpbnQgX19zdHJjb2xsX2wgKF9fY29u
c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBfX2xvY2FsZV90IF9fbCkKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBzaXplX3QgX19zdHJ4
ZnJtX2wgKGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFyICpfX3NyYywgc2l6ZV90IF9fbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSk7CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0IGNo
YXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X21hbGxvY19fKSk7CiMgMTU1ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIg
KnN0cmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19z
LCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVy
biBjaGFyICpzdHJjaHJudWwgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBzaXplX3Qgc3RyY3NwbiAoX19j
b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9fY29uc3Qg
Y2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAq
X19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0
YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hhciAqc3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpf
X2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hhciAqc3RydG9rIChjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgdGhyb3cgKCk7
CgoKCmV4dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgdGhyb3cg
KCk7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX3NhdmVfcHRyKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIHZvaWQgKm1lbW1l
bSAoX19jb25zdCB2b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19oYXlzdGFja2xlbiwKICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVu
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9p
ZCAqX19tZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAo
KTsKZXh0ZXJuIHZvaWQgKm1lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19u
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0
cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX21heGxlbikKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJv
ciAoaW50IF9fZXJybnVtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGlu
dCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgdGhyb3cgKCk7CgoKCgpl
eHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgpl
eHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXpl
X3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3Qg
X19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19j
b25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFy
ICpyaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgZmZzbCAobG9uZyBpbnQg
X19sKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9f
IGV4dGVybiBpbnQgZmZzbGwgKGxvbmcgbG9uZyBpbnQgX19sbCkKICAgICB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29u
c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hh
ciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBpbnQgX19zdHJjYXNlY21wX2wg
KF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCmV4dGVybiBpbnQgX19zdHJuY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEs
IF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X24sIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAqKl9fcmVzdHJpY3QgX19zdHJp
bmdwLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxp
bSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHN0cnZlcnNjbXAgKF9fY29uc3QgY2hhciAqX19z
MSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCmV4dGVybiBjaGFyICpzdHJzaWduYWwgKGludCBfX3NpZykgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGNoYXIgKl9fc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpOwpleHRlcm4gY2hhciAqc3RwY3B5
IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj
KQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zdHBuY3B5IChjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIgKnN0cG5jcHkgKGNo
YXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAq
c3RyZnJ5IChjaGFyICpfX3N0cmluZykgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgKm1lbWZyb2Ig
KHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNl
bmFtZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSB0aHJvdyAoKTsKIyAzNjQgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMwp9CiMgNzYgInR1eHJhY2VyLmgiIDIKIyAxICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAx
MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9s
aW1pdHMuaCIgMwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4xL2luY2x1ZGUvc3lzbGltaXRzLmgiIDEgMwoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDEzMCAi
L3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9saW1p
dHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVk
ZS9saW1pdHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vz
ci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyAxNDQgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMSAzCiMgMTI2ICIvdXNyL2luY2x1
ZGUvYml0cy9wb3NpeDFfbGltLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0u
aCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxf
bGltLmgiIDIgMwojIDEyNyAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAyIDMKIyAx
NDUgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
cG9zaXgyX2xpbS5oIiAxIDMKIyAxNDkgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUv
Yml0cy94b3Blbl9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAx
IDMKIyAzNSAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDIgMwojIDEzNiAiL3Vzci9p
bmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6
ZS5oIiAxIDMKIyAxMzcgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAyIDMKIyAxNTMg
Ii91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgMTMxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyA4ICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N5c2xpbWl0cy5o
IiAyIDMKIyAxMiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEv
aW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgNzcgInR1eHJhY2VyLmgiIDIKIyAxICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMK
IyAxMTAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1
ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDc4ICJ0dXhy
YWNlci5oIiAyCgoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMS9pbmNsdWRlL2Zsb2F0LmgiIDEgMwojIDg0ICJ0dXhyYWNlci5oIiAyCiMgOTIgInR1
eHJhY2VyLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNs
dWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKZXh0ZXJuICJDIiB7CiMgMTc1ICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeF9vcHQuaCIgMSAzCiMg
MTc2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L2Vudmlyb25tZW50cy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRz
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIyAyNCAiL3Vzci9p
bmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDIgMwojIDE4MCAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAyIDMKIyAxOTAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3R5cGVzLmgiIDEgMwojIDE5MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyAx
OTkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIwMCAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyAyNDAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwp0eXBl
ZGVmIF9faW50cHRyX3QgaW50cHRyX3Q7CgoKCgoKCnR5cGVkZWYgX19zb2NrbGVuX3Qgc29ja2xl
bl90OwojIDI2MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgYWNjZXNzIChf
X2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50
IGV1aWRhY2Nlc3MgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSB0aHJvdyAoKTsK
IyAyOTAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19vZmZfdCBsc2VlayAoaW50
IF9fZmQsIF9fb2ZmX3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CiMgMzAyICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fb2ZmNjRfdCBsc2VlazY0IChpbnQgX19m
ZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIHRocm93ICgpOwoKCgpleHRlcm4g
aW50IGNsb3NlIChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBzc2l6ZV90IHJlYWQgKGlu
dCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKSB0aHJvdyAoKTsKCgpleHRlcm4g
c3NpemVfdCB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24p
IHRocm93ICgpOwoKCgpleHRlcm4gc3NpemVfdCBwcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVm
LCBzaXplX3QgX19uYnl0ZXMsIF9fb2ZmX3QgX19vZmZzZXQpCiAgICAgdGhyb3cgKCk7CmV4dGVy
biBzc2l6ZV90IHB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBf
X24sCiAgICAgICAgICAgICAgICAgICAgICAgX19vZmZfdCBfX29mZnNldCkgdGhyb3cgKCk7CiMg
MzQwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHNzaXplX3QgcHJlYWQ2NCAoaW50
IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fb2ZmNjRfdCBfX29mZnNldCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHNzaXplX3QgcHdyaXRl
NjQgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgX19vZmY2NF90IF9fb2Zmc2V0KSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVy
biBpbnQgcGlwZSAoaW50IF9fcGlwZWRlc1syXSkgdGhyb3cgKCk7CiMgMzYyICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFybSAodW5zaWduZWQgaW50IF9f
c2Vjb25kcykgdGhyb3cgKCk7CiMgMzcxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJu
IHVuc2lnbmVkIGludCBzbGVlcCAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgdGhyb3cgKCk7CgoK
CgoKCmV4dGVybiBfX3VzZWNvbmRzX3QgdWFsYXJtIChfX3VzZWNvbmRzX3QgX192YWx1ZSwgX191
c2Vjb25kc190IF9faW50ZXJ2YWwpCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgdXNsZWVw
IChfX3VzZWNvbmRzX3QgX191c2Vjb25kcykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwYXVz
ZSAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgY2hvd24gKF9fY29uc3QgY2hhciAqX19m
aWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19n
cm91cCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGxjaG93biAoX19jb25zdCBjaGFyICpfX2Zp
bGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQogICAgIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGludCBjaGRpciAoX19jb25zdCBjaGFyICpfX3BhdGgpIHRocm93ICgpOwoKCgpleHRl
cm4gaW50IGZjaGRpciAoaW50IF9fZmQpIHRocm93ICgpOwojIDQyMyAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAzCmV4dGVybiBjaGFyICpnZXRjd2QgKGNoYXIgKl9fYnVmLCBzaXplX3QgX19zaXpl
KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqZ2V0X2N1cnJlbnRfZGlyX25hbWUgKHZvaWQp
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0d2QgKGNoYXIgKl9fYnVmKSB0aHJvdyAo
KTsKCgoKCmV4dGVybiBpbnQgZHVwIChpbnQgX19mZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBk
dXAyIChpbnQgX19mZCwgaW50IF9fZmQyKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqKl9fZW52
aXJvbjsKCmV4dGVybiBjaGFyICoqZW52aXJvbjsKCgoKCgpleHRlcm4gaW50IGV4ZWN2ZSAoX19j
b25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sCiAgICAgICAgICAgICAg
ICAgICBjaGFyICpfX2NvbnN0IF9fZW52cFtdKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmV4
ZWN2ZSAoaW50IF9fZmQsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sIGNoYXIgKl9fY29uc3QgX19l
bnZwW10pCiAgICAgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGV4ZWN2IChfX2NvbnN0IGNoYXIg
Kl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQg
ZXhlY2xlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBleGVjbCAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fY29u
c3QgY2hhciAqX19hcmcsIC4uLikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZXhlY3ZwIChfX2Nv
bnN0IGNoYXIgKl9fZmlsZSwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgdGhyb3cgKCk7CgoKCgpl
eHRlcm4gaW50IGV4ZWNscCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3QgY2hhciAqX19h
cmcsIC4uLikgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IG5pY2UgKGludCBfX2luYykgdGhyb3cg
KCk7CgoKCgpleHRlcm4gdm9pZCBfZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3JldHVybl9fKSk7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAx
IDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMwplbnVtCiAgewogICAgX1BD
X0xJTktfTUFYLAoKICAgIF9QQ19NQVhfQ0FOT04sCgogICAgX1BDX01BWF9JTlBVVCwKCiAgICBf
UENfTkFNRV9NQVgsCgogICAgX1BDX1BBVEhfTUFYLAoKICAgIF9QQ19QSVBFX0JVRiwKCiAgICBf
UENfQ0hPV05fUkVTVFJJQ1RFRCwKCiAgICBfUENfTk9fVFJVTkMsCgogICAgX1BDX1ZESVNBQkxF
LAoKICAgIF9QQ19TWU5DX0lPLAoKICAgIF9QQ19BU1lOQ19JTywKCiAgICBfUENfUFJJT19JTywK
CiAgICBfUENfU09DS19NQVhCVUYsCgogICAgX1BDX0ZJTEVTSVpFQklUUywKCiAgICBfUENfUkVD
X0lOQ1JfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUFYX1hGRVJfU0laRSwKCiAgICBfUENfUkVD
X01JTl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19YRkVSX0FMSUdOLAoKICAgIF9QQ19BTExPQ19T
SVpFX01JTiwKCiAgICBfUENfU1lNTElOS19NQVgKCiAgfTsKCgplbnVtCiAgewogICAgX1NDX0FS
R19NQVgsCgogICAgX1NDX0NISUxEX01BWCwKCiAgICBfU0NfQ0xLX1RDSywKCiAgICBfU0NfTkdS
T1VQU19NQVgsCgogICAgX1NDX09QRU5fTUFYLAoKICAgIF9TQ19TVFJFQU1fTUFYLAoKICAgIF9T
Q19UWk5BTUVfTUFYLAoKICAgIF9TQ19KT0JfQ09OVFJPTCwKCiAgICBfU0NfU0FWRURfSURTLAoK
ICAgIF9TQ19SRUFMVElNRV9TSUdOQUxTLAoKICAgIF9TQ19QUklPUklUWV9TQ0hFRFVMSU5HLAoK
ICAgIF9TQ19USU1FUlMsCgogICAgX1NDX0FTWU5DSFJPTk9VU19JTywKCiAgICBfU0NfUFJJT1JJ
VElaRURfSU8sCgogICAgX1NDX1NZTkNIUk9OSVpFRF9JTywKCiAgICBfU0NfRlNZTkMsCgogICAg
X1NDX01BUFBFRF9GSUxFUywKCiAgICBfU0NfTUVNTE9DSywKCiAgICBfU0NfTUVNTE9DS19SQU5H
RSwKCiAgICBfU0NfTUVNT1JZX1BST1RFQ1RJT04sCgogICAgX1NDX01FU1NBR0VfUEFTU0lORywK
CiAgICBfU0NfU0VNQVBIT1JFUywKCiAgICBfU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTLAoKICAg
IF9TQ19BSU9fTElTVElPX01BWCwKCiAgICBfU0NfQUlPX01BWCwKCiAgICBfU0NfQUlPX1BSSU9f
REVMVEFfTUFYLAoKICAgIF9TQ19ERUxBWVRJTUVSX01BWCwKCiAgICBfU0NfTVFfT1BFTl9NQVgs
CgogICAgX1NDX01RX1BSSU9fTUFYLAoKICAgIF9TQ19WRVJTSU9OLAoKICAgIF9TQ19QQUdFU0la
RSwKCgogICAgX1NDX1JUU0lHX01BWCwKCiAgICBfU0NfU0VNX05TRU1TX01BWCwKCiAgICBfU0Nf
U0VNX1ZBTFVFX01BWCwKCiAgICBfU0NfU0lHUVVFVUVfTUFYLAoKICAgIF9TQ19USU1FUl9NQVgs
CgoKCgogICAgX1NDX0JDX0JBU0VfTUFYLAoKICAgIF9TQ19CQ19ESU1fTUFYLAoKICAgIF9TQ19C
Q19TQ0FMRV9NQVgsCgogICAgX1NDX0JDX1NUUklOR19NQVgsCgogICAgX1NDX0NPTExfV0VJR0hU
U19NQVgsCgogICAgX1NDX0VRVUlWX0NMQVNTX01BWCwKCiAgICBfU0NfRVhQUl9ORVNUX01BWCwK
CiAgICBfU0NfTElORV9NQVgsCgogICAgX1NDX1JFX0RVUF9NQVgsCgogICAgX1NDX0NIQVJDTEFT
U19OQU1FX01BWCwKCgogICAgX1NDXzJfVkVSU0lPTiwKCiAgICBfU0NfMl9DX0JJTkQsCgogICAg
X1NDXzJfQ19ERVYsCgogICAgX1NDXzJfRk9SVF9ERVYsCgogICAgX1NDXzJfRk9SVF9SVU4sCgog
ICAgX1NDXzJfU1dfREVWLAoKICAgIF9TQ18yX0xPQ0FMRURFRiwKCgogICAgX1NDX1BJSSwKCiAg
ICBfU0NfUElJX1hUSSwKCiAgICBfU0NfUElJX1NPQ0tFVCwKCiAgICBfU0NfUElJX0lOVEVSTkVU
LAoKICAgIF9TQ19QSUlfT1NJLAoKICAgIF9TQ19QT0xMLAoKICAgIF9TQ19TRUxFQ1QsCgogICAg
X1NDX1VJT19NQVhJT1YsCgogICAgX1NDX0lPVl9NQVggPSBfU0NfVUlPX01BWElPViwKCiAgICBf
U0NfUElJX0lOVEVSTkVUX1NUUkVBTSwKCiAgICBfU0NfUElJX0lOVEVSTkVUX0RHUkFNLAoKICAg
IF9TQ19QSUlfT1NJX0NPVFMsCgogICAgX1NDX1BJSV9PU0lfQ0xUUywKCiAgICBfU0NfUElJX09T
SV9NLAoKICAgIF9TQ19UX0lPVl9NQVgsCgoKCiAgICBfU0NfVEhSRUFEUywKCiAgICBfU0NfVEhS
RUFEX1NBRkVfRlVOQ1RJT05TLAoKICAgIF9TQ19HRVRHUl9SX1NJWkVfTUFYLAoKICAgIF9TQ19H
RVRQV19SX1NJWkVfTUFYLAoKICAgIF9TQ19MT0dJTl9OQU1FX01BWCwKCiAgICBfU0NfVFRZX05B
TUVfTUFYLAoKICAgIF9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TLAoKICAgIF9TQ19U
SFJFQURfS0VZU19NQVgsCgogICAgX1NDX1RIUkVBRF9TVEFDS19NSU4sCgogICAgX1NDX1RIUkVB
RF9USFJFQURTX01BWCwKCiAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSLAoKICAgIF9TQ19U
SFJFQURfQVRUUl9TVEFDS1NJWkUsCgogICAgX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5H
LAoKICAgIF9TQ19USFJFQURfUFJJT19JTkhFUklULAoKICAgIF9TQ19USFJFQURfUFJJT19QUk9U
RUNULAoKICAgIF9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQsCgoKICAgIF9TQ19OUFJPQ0VTU09S
U19DT05GLAoKICAgIF9TQ19OUFJPQ0VTU09SU19PTkxOLAoKICAgIF9TQ19QSFlTX1BBR0VTLAoK
ICAgIF9TQ19BVlBIWVNfUEFHRVMsCgogICAgX1NDX0FURVhJVF9NQVgsCgogICAgX1NDX1BBU1Nf
TUFYLAoKCiAgICBfU0NfWE9QRU5fVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fWENVX1ZFUlNJT04s
CgogICAgX1NDX1hPUEVOX1VOSVgsCgogICAgX1NDX1hPUEVOX0NSWVBULAoKICAgIF9TQ19YT1BF
Tl9FTkhfSTE4TiwKCiAgICBfU0NfWE9QRU5fU0hNLAoKCiAgICBfU0NfMl9DSEFSX1RFUk0sCgog
ICAgX1NDXzJfQ19WRVJTSU9OLAoKICAgIF9TQ18yX1VQRSwKCgogICAgX1NDX1hPUEVOX1hQRzIs
CgogICAgX1NDX1hPUEVOX1hQRzMsCgogICAgX1NDX1hPUEVOX1hQRzQsCgoKICAgIF9TQ19DSEFS
X0JJVCwKCiAgICBfU0NfQ0hBUl9NQVgsCgogICAgX1NDX0NIQVJfTUlOLAoKICAgIF9TQ19JTlRf
TUFYLAoKICAgIF9TQ19JTlRfTUlOLAoKICAgIF9TQ19MT05HX0JJVCwKCiAgICBfU0NfV09SRF9C
SVQsCgogICAgX1NDX01CX0xFTl9NQVgsCgogICAgX1NDX05aRVJPLAoKICAgIF9TQ19TU0laRV9N
QVgsCgogICAgX1NDX1NDSEFSX01BWCwKCiAgICBfU0NfU0NIQVJfTUlOLAoKICAgIF9TQ19TSFJU
X01BWCwKCiAgICBfU0NfU0hSVF9NSU4sCgogICAgX1NDX1VDSEFSX01BWCwKCiAgICBfU0NfVUlO
VF9NQVgsCgogICAgX1NDX1VMT05HX01BWCwKCiAgICBfU0NfVVNIUlRfTUFYLAoKCiAgICBfU0Nf
TkxfQVJHTUFYLAoKICAgIF9TQ19OTF9MQU5HTUFYLAoKICAgIF9TQ19OTF9NU0dNQVgsCgogICAg
X1NDX05MX05NQVgsCgogICAgX1NDX05MX1NFVE1BWCwKCiAgICBfU0NfTkxfVEVYVE1BWCwKCgog
ICAgX1NDX1hCUzVfSUxQMzJfT0ZGMzIsCgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGQklHLAoKICAg
IF9TQ19YQlM1X0xQNjRfT0ZGNjQsCgogICAgX1NDX1hCUzVfTFBCSUdfT0ZGQklHLAoKCiAgICBf
U0NfWE9QRU5fTEVHQUNZLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRSwKCiAgICBfU0NfWE9QRU5f
UkVBTFRJTUVfVEhSRUFEUywKCgogICAgX1NDX0FEVklTT1JZX0lORk8sCgogICAgX1NDX0JBUlJJ
RVJTLAoKICAgIF9TQ19CQVNFLAoKICAgIF9TQ19DX0xBTkdfU1VQUE9SVCwKCiAgICBfU0NfQ19M
QU5HX1NVUFBPUlRfUiwKCiAgICBfU0NfQ0xPQ0tfU0VMRUNUSU9OLAoKICAgIF9TQ19DUFVUSU1F
LAoKICAgIF9TQ19USFJFQURfQ1BVVElNRSwKCiAgICBfU0NfREVWSUNFX0lPLAoKICAgIF9TQ19E
RVZJQ0VfU1BFQ0lGSUMsCgogICAgX1NDX0RFVklDRV9TUEVDSUZJQ19SLAoKICAgIF9TQ19GRF9N
R01ULAoKICAgIF9TQ19GSUZPLAoKICAgIF9TQ19QSVBFLAoKICAgIF9TQ19GSUxFX0FUVFJJQlVU
RVMsCgogICAgX1NDX0ZJTEVfTE9DS0lORywKCiAgICBfU0NfRklMRV9TWVNURU0sCgogICAgX1ND
X01PTk9UT05JQ19DTE9DSywKCiAgICBfU0NfTVVMVElfUFJPQ0VTUywKCiAgICBfU0NfU0lOR0xF
X1BST0NFU1MsCgogICAgX1NDX05FVFdPUktJTkcsCgogICAgX1NDX1JFQURFUl9XUklURVJfTE9D
S1MsCgogICAgX1NDX1NQSU5fTE9DS1MsCgogICAgX1NDX1JFR0VYUCwKCiAgICBfU0NfUkVHRVhf
VkVSU0lPTiwKCiAgICBfU0NfU0hFTEwsCgogICAgX1NDX1NJR05BTFMsCgogICAgX1NDX1NQQVdO
LAoKICAgIF9TQ19TUE9SQURJQ19TRVJWRVIsCgogICAgX1NDX1RIUkVBRF9TUE9SQURJQ19TRVJW
RVIsCgogICAgX1NDX1NZU1RFTV9EQVRBQkFTRSwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFX1Is
CgogICAgX1NDX1RJTUVPVVRTLAoKICAgIF9TQ19UWVBFRF9NRU1PUllfT0JKRUNUUywKCiAgICBf
U0NfVVNFUl9HUk9VUFMsCgogICAgX1NDX1VTRVJfR1JPVVBTX1IsCgogICAgX1NDXzJfUEJTLAoK
ICAgIF9TQ18yX1BCU19BQ0NPVU5USU5HLAoKICAgIF9TQ18yX1BCU19MT0NBVEUsCgogICAgX1ND
XzJfUEJTX01FU1NBR0UsCgogICAgX1NDXzJfUEJTX1RSQUNLLAoKICAgIF9TQ19TWU1MT09QX01B
WCwKCiAgICBfU0NfU1RSRUFNUywKCiAgICBfU0NfMl9QQlNfQ0hFQ0tQT0lOVCwKCgogICAgX1ND
X1Y2X0lMUDMyX09GRjMyLAoKICAgIF9TQ19WNl9JTFAzMl9PRkZCSUcsCgogICAgX1NDX1Y2X0xQ
NjRfT0ZGNjQsCgogICAgX1NDX1Y2X0xQQklHX09GRkJJRywKCgogICAgX1NDX0hPU1RfTkFNRV9N
QVgsCgogICAgX1NDX1RSQUNFLAoKICAgIF9TQ19UUkFDRV9FVkVOVF9GSUxURVIsCgogICAgX1ND
X1RSQUNFX0lOSEVSSVQsCgogICAgX1NDX1RSQUNFX0xPRwoKICB9OwoKCgoKCmVudW0KICB7CiAg
ICBfQ1NfUEFUSCwKCgoKCiAgICBfQ1NfTEZTX0NGTEFHUyA9IDEwMDAsCgogICAgX0NTX0xGU19M
REZMQUdTLAoKICAgIF9DU19MRlNfTElCUywKCiAgICBfQ1NfTEZTX0xJTlRGTEFHUywKCiAgICBf
Q1NfTEZTNjRfQ0ZMQUdTLAoKICAgIF9DU19MRlM2NF9MREZMQUdTLAoKICAgIF9DU19MRlM2NF9M
SUJTLAoKICAgIF9DU19MRlM2NF9MSU5URkxBR1MsCgoKCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZG
MzJfQ0ZMQUdTID0gMTEwMCwKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTLAoKICAg
IF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElO
VEZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hCUzVf
SUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJQlMsCgog
ICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09G
RjY0X0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxBR1MsCgogICAgX0NTX1hC
UzVfTFA2NF9PRkY2NF9MSUJTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAoK
ICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZG
QklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NTX1hC
UzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUywKCgoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYz
Ml9DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xERkxBR1MsCgogICAgX0NT
X1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMy
X0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAgICBf
Q1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMy
X09GRkJJR19MSUJTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTElOVEZMQUdTLAoK
ICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfTFA2
NF9PRkY2NF9MREZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xJQlMsCgogICAg
X0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUEJJ
R19PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTERGTEFHUywK
CiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0xQ
QklHX09GRkJJR19MSU5URkxBR1MsCgoKCiAgICBfQ1NfVjZfV0lEVEhfUkVTVFJJQ1RFRF9FTlZT
CgogIH07CiMgNTAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCmV4dGVybiBsb25nIGlu
dCBwYXRoY29uZiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUpIHRocm93ICgpOwoK
CmV4dGVybiBsb25nIGludCBmcGF0aGNvbmYgKGludCBfX2ZkLCBpbnQgX19uYW1lKSB0aHJvdyAo
KTsKCgpleHRlcm4gbG9uZyBpbnQgc3lzY29uZiAoaW50IF9fbmFtZSkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gc2l6ZV90IGNvbmZzdHIgKGludCBfX25h
bWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIF9fcGlk
X3QgZ2V0cGlkICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gX19waWRfdCBnZXRwcGlkICh2b2lk
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBfX3BpZF90IGdldHBncnAgKHZvaWQpIHRocm93ICgpOwoj
IDUzNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAo
X19waWRfdCBfX3BpZCkgdGhyb3cgKCk7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lkIChfX3BpZF90
IF9fcGlkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBzZXRwZ2lkIChfX3BpZF90IF9fcGlk
LCBfX3BpZF90IF9fcGdpZCkgdGhyb3cgKCk7CiMgNTYyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDMKZXh0ZXJuIGludCBzZXRwZ3JwICh2b2lkKSB0aHJvdyAoKTsKIyA1ODAgIi91c3IvaW5jbHVk
ZS91bmlzdGQuaCIgMwpleHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIHRocm93ICgpOwoKCgpl
eHRlcm4gX19waWRfdCBnZXRzaWQgKF9fcGlkX3QgX19waWQpIHRocm93ICgpOwoKCgpleHRlcm4g
X191aWRfdCBnZXR1aWQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBfX3VpZF90IGdldGV1aWQg
KHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBfX2dpZF90IGdldGdpZCAodm9pZCkgdGhyb3cgKCk7
CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50
IGdldGdyb3VwcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgZ3JvdXBfbWVtYmVyIChfX2dpZF90IF9fZ2lkKSB0aHJvdyAoKTsKCgoKCgoKZXh0
ZXJuIGludCBzZXR1aWQgKF9fdWlkX3QgX191aWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBz
ZXRyZXVpZCAoX191aWRfdCBfX3J1aWQsIF9fdWlkX3QgX19ldWlkKSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBpbnQgc2V0ZXVpZCAoX191aWRfdCBfX3VpZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBp
bnQgc2V0Z2lkIChfX2dpZF90IF9fZ2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc2V0cmVn
aWQgKF9fZ2lkX3QgX19yZ2lkLCBfX2dpZF90IF9fZWdpZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4g
aW50IHNldGVnaWQgKF9fZ2lkX3QgX19naWQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gX19waWRf
dCBmb3JrICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZvaWQp
IHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICp0dHluYW1lIChpbnQgX19mZCkgdGhyb3cgKCk7
CgoKCmV4dGVybiBpbnQgdHR5bmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBf
X2J1ZmxlbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgaXNhdHR5IChpbnQgX19mZCkgdGhyb3cg
KCk7CgoKCgoKZXh0ZXJuIGludCB0dHlzbG90ICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBp
bnQgbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgdGhyb3cg
KCk7CgoKCmV4dGVybiBpbnQgc3ltbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3Qg
Y2hhciAqX190bykgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHJlYWRsaW5rIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19wYXRoLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubGluayAo
X19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcm1kaXIgKF9fY29u
c3QgY2hhciAqX19wYXRoKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwIChp
bnQgX19mZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCB0Y3NldHBncnAgKGludCBfX2ZkLCBfX3Bp
ZF90IF9fcGdycF9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpnZXRsb2dpbiAodm9pZCkg
dGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGdldGxvZ2luX3IgKGNoYXIgKl9fbmFtZSwgc2l6ZV90
IF9fbmFtZV9sZW4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzZXRsb2dpbiAoX19jb25zdCBj
aGFyICpfX25hbWUpIHRocm93ICgpOwojIDcyNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL2dldG9wdC5o
IiAzCmV4dGVybiAiQyIgewojIDQ3ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGNo
YXIgKm9wdGFyZzsKIyA2MSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBpbnQgb3B0
aW5kOwoKCgoKZXh0ZXJuIGludCBvcHRlcnI7CgoKCmV4dGVybiBpbnQgb3B0b3B0OwojIDE0NSAi
L3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBpbnQgZ2V0b3B0IChpbnQgX19hcmdjLCBj
aGFyICpjb25zdCAqX19hcmd2LCBjb25zdCBjaGFyICpfX3Nob3J0b3B0cyk7CiMgMTc0ICIvdXNy
L2luY2x1ZGUvZ2V0b3B0LmgiIDMKfQojIDcyNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMK
CgoKCgoKCmV4dGVybiBpbnQgZ2V0aG9zdG5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVu
KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBzZXRob3N0bmFtZSAoX19jb25zdCBjaGFyICpf
X25hbWUsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgc2V0aG9zdGlkIChs
b25nIGludCBfX2lkKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGdldGRvbWFpbm5hbWUgKGNo
YXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBzZXRkb21haW5u
YW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKCgoKCgpl
eHRlcm4gaW50IHZoYW5ndXAgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcmV2b2tlIChf
X2NvbnN0IGNoYXIgKl9fZmlsZSkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IHByb2ZpbCAo
dW5zaWduZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNpemVfdCBfX3NpemUsCiAgICAg
ICAgICAgICAgICAgICBzaXplX3QgX19vZmZzZXQsIHVuc2lnbmVkIGludCBfX3NjYWxlKSB0aHJv
dyAoKTsKCgoKCgpleHRlcm4gaW50IGFjY3QgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGNoYXIgKmdldHVzZXJzaGVsbCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiB2
b2lkIGVuZHVzZXJzaGVsbCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiB2b2lkIHNldHVzZXJzaGVs
bCAodm9pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBkYWVtb24gKGludCBfX25vY2hkaXIs
IGludCBfX25vY2xvc2UpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGNocm9vdCAoX19jb25z
dCBjaGFyICpfX3BhdGgpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqZ2V0cGFzcyAoX19jb25z
dCBjaGFyICpfX3Byb21wdCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBmc3luYyAoaW50IF9f
ZmQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgZ2V0aG9zdGlkICh2b2lkKSB0aHJv
dyAoKTsKCgpleHRlcm4gdm9pZCBzeW5jICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQg
Z2V0cGFnZXNpemUgKHZvaWQpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKCmV4dGVybiBpbnQgdHJ1bmNhdGUgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29mZl90IF9f
bGVuZ3RoKSB0aHJvdyAoKTsKIyA4MzYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4g
aW50IHRydW5jYXRlNjQgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29mZjY0X3QgX19sZW5ndGgp
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmdHJ1bmNhdGUgKGludCBfX2ZkLCBfX29mZl90IF9f
bGVuZ3RoKSB0aHJvdyAoKTsKIyA4NTEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4g
aW50IGZ0cnVuY2F0ZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fbGVuZ3RoKSB0aHJvdyAoKTsK
CgoKCgpleHRlcm4gaW50IGdldGR0YWJsZXNpemUgKHZvaWQpIHRocm93ICgpOwojIDg2NiAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgYnJrICh2b2lkICpfX2FkZHIpIHRocm93
ICgpOwoKCgoKCmV4dGVybiB2b2lkICpzYnJrIChpbnRwdHJfdCBfX2RlbHRhKSB0aHJvdyAoKTsK
IyA4ODcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gbG9uZyBpbnQgc3lzY2FsbCAo
bG9uZyBpbnQgX19zeXNubywgLi4uKSB0aHJvdyAoKTsKIyA5MDcgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMwpleHRlcm4gaW50IGxvY2tmIChpbnQgX19mZCwgaW50IF9fY21kLCBfX29mZl90IF9f
bGVuKSB0aHJvdyAoKTsKIyA5MTcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50
IGxvY2tmNjQgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmNjRfdCBfX2xlbikgdGhyb3cgKCk7
CiMgOTM4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBmZGF0YXN5bmMgKGlu
dCBfX2ZpbGRlcykgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gY2hhciAqY3J5cHQgKF9fY29uc3Qg
Y2hhciAqX19rZXksIF9fY29uc3QgY2hhciAqX19zYWx0KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZv
aWQgZW5jcnlwdCAoY2hhciAqX19ibG9jaywgaW50IF9fZWRmbGFnKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIHZvaWQgc3dhYiAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fZnJvbSwgdm9pZCAq
X19yZXN0cmljdCBfX3RvLAogICAgICAgICAgICAgICAgICBzc2l6ZV90IF9fbikgdGhyb3cgKCk7
CgoKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSB0aHJvdyAoKTsKIyA5ODMg
Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrICh2b2lk
ICgqX19wcmVwYXJlKSAodm9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpf
X3BhcmVudCkgKHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19jaGls
ZCkgKHZvaWQpKSB0aHJvdyAoKTsKCgp9CiMgOTMgInR1eHJhY2VyLmgiIDIKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDk0ICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9pbmNs
dWRlL3B3ZC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvcHdkLmgiIDIgMwoKZXh0ZXJu
ICJDIiB7CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDMxICIvdXNyL2lu
Y2x1ZGUvcHdkLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9wd2Qu
aCIgMiAzCiMgNTAgIi91c3IvaW5jbHVkZS9wd2QuaCIgMwpzdHJ1Y3QgcGFzc3dkCnsKICBjaGFy
ICpwd19uYW1lOwogIGNoYXIgKnB3X3Bhc3N3ZDsKICBfX3VpZF90IHB3X3VpZDsKICBfX2dpZF90
IHB3X2dpZDsKICBjaGFyICpwd19nZWNvczsKICBjaGFyICpwd19kaXI7CiAgY2hhciAqcHdfc2hl
bGw7Cn07CgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4xL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiMgNjUgIi91c3IvaW5jbHVkZS9wd2QuaCIgMiAzCgoK
CgoKZXh0ZXJuIHZvaWQgc2V0cHdlbnQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIGVu
ZHB3ZW50ICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdlbnQg
KHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmZnZXRwd2VudCAoRklM
RSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0cHdlbnQgKF9fY29uc3Qgc3Ry
dWN0IHBhc3N3ZCAqX19yZXN0cmljdCBfX3AsCiAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9f
cmVzdHJpY3QgX19mKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmdldHB3dWlk
IChfX3VpZF90IF9fdWlkKSB0aHJvdyAoKTsKCgpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdu
YW0gKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKIyAxMTEgIi91c3IvaW5jbHVkZS9w
d2QuaCIgMwpleHRlcm4gaW50IGdldHB3ZW50X3IgKHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3Qg
X19yZXN1bHRidWYsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1
ZmZlciwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwYXNz
d2QgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGdldHB3dWlk
X3IgKF9fdWlkX3QgX191aWQsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBhc3N3ZCAq
X19yZXN0cmljdCBfX3Jlc3VsdGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IHBhc3N3ZCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpOwoKZXh0ZXJuIGlu
dCBnZXRwd25hbV9yIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRidWYsCiAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVm
bGVuLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwYXNzd2QgKipfX3Jlc3RyaWN0IF9f
cmVzdWx0KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGZnZXRwd2VudF9yIChGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICpf
X3Jlc3RyaWN0IF9fcmVzdWx0YnVmLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBwYXNzd2QgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKIyAxNDIgIi91
c3IvaW5jbHVkZS9wd2QuaCIgMwpleHRlcm4gaW50IGdldHB3IChfX3VpZF90IF9fdWlkLCBjaGFy
ICpfX2J1ZmZlcikgdGhyb3cgKCk7CgoKfQojIDk1ICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9p
bmNsdWRlL2RpcmVudC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvZGlyZW50Lmgi
IDIgMwoKZXh0ZXJuICJDIiB7CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwoj
IDMxICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDIgMwojIDYyICIvdXNyL2luY2x1ZGUvZGlyZW50
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9kaXJlbnQuaCIgMSAzCiMgMjMgIi91c3IvaW5j
bHVkZS9iaXRzL2RpcmVudC5oIiAzCnN0cnVjdCBkaXJlbnQKICB7CgogICAgX19pbm9fdCBkX2lu
bzsKICAgIF9fb2ZmX3QgZF9vZmY7CgoKCgogICAgdW5zaWduZWQgc2hvcnQgaW50IGRfcmVjbGVu
OwogICAgdW5zaWduZWQgY2hhciBkX3R5cGU7CiAgICBjaGFyIGRfbmFtZVsyNTZdOwogIH07CgoK
c3RydWN0IGRpcmVudDY0CiAgewogICAgX19pbm82NF90IGRfaW5vOwogICAgX19vZmY2NF90IGRf
b2ZmOwogICAgdW5zaWduZWQgc2hvcnQgaW50IGRfcmVjbGVuOwogICAgdW5zaWduZWQgY2hhciBk
X3R5cGU7CiAgICBjaGFyIGRfbmFtZVsyNTZdOwogIH07CiMgNjMgIi91c3IvaW5jbHVkZS9kaXJl
bnQuaCIgMiAzCiMgOTggIi91c3IvaW5jbHVkZS9kaXJlbnQuaCIgMwplbnVtCiAgewogICAgRFRf
VU5LTk9XTiA9IDAsCgogICAgRFRfRklGTyA9IDEsCgogICAgRFRfQ0hSID0gMiwKCiAgICBEVF9E
SVIgPSA0LAoKICAgIERUX0JMSyA9IDYsCgogICAgRFRfUkVHID0gOCwKCiAgICBEVF9MTksgPSAx
MCwKCiAgICBEVF9TT0NLID0gMTIsCgogICAgRFRfV0hUID0gMTQKCiAgfTsKIyAxMjggIi91c3Iv
aW5jbHVkZS9kaXJlbnQuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX2RpcnN0cmVhbSBESVI7CgoKCmV4
dGVybiBESVIgKm9wZW5kaXIgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGludCBjbG9zZWRpciAoRElSICpfX2RpcnApIHRocm93ICgpOwojIDE0NiAiL3Vzci9pbmNs
dWRlL2RpcmVudC5oIiAzCmV4dGVybiBzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyIChESVIgKl9fZGly
cCkgdGhyb3cgKCk7CiMgMTU2ICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKZXh0ZXJuIHN0cnVj
dCBkaXJlbnQ2NCAqcmVhZGRpcjY0IChESVIgKl9fZGlycCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVy
biBpbnQgcmVhZGRpcl9yIChESVIgKl9fcmVzdHJpY3QgX19kaXJwLAogICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGRpcmVudCAqX19yZXN0cmljdCBfX2VudHJ5LAogICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGRpcmVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpOwojIDE3
OSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVybiBpbnQgcmVhZGRpcjY0X3IgKERJUiAq
X19yZXN0cmljdCBfX2RpcnAsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkaXJlbnQ2
NCAqX19yZXN0cmljdCBfX2VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGly
ZW50NjQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHJl
d2luZGRpciAoRElSICpfX2RpcnApIHRocm93ICgpOwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
dHlwZXMuaCIgMSAzCiMgMTkwICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDIgMwoKCmV4dGVybiB2
b2lkIHNlZWtkaXIgKERJUiAqX19kaXJwLCBsb25nIGludCBfX3BvcykgdGhyb3cgKCk7CgoKZXh0
ZXJuIGxvbmcgaW50IHRlbGxkaXIgKERJUiAqX19kaXJwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
aW50IGRpcmZkIChESVIgKl9fZGlycCkgdGhyb3cgKCk7CgoKCgoKCgojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3Bvc2l4MV9saW0uaCIgMSAzCiMgMjEwICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDIg
MwojIDIyMCAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjIxICIv
dXNyL2luY2x1ZGUvZGlyZW50LmgiIDIgMwoKCgoKCgpleHRlcm4gaW50IHNjYW5kaXIgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2RpciwKICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGly
ZW50ICoqKl9fcmVzdHJpY3QgX19uYW1lbGlzdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKCpf
X3NlbGVjdG9yKSAoX19jb25zdCBzdHJ1Y3QgZGlyZW50ICopLAogICAgICAgICAgICAgICAgICAg
IGludCAoKl9fY21wKSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKSkgdGhyb3cgKCk7
CiMgMjQ3ICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKZXh0ZXJuIGludCBzY2FuZGlyNjQgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RpciwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBkaXJlbnQ2NCAqKipfX3Jlc3RyaWN0IF9fbmFtZWxpc3QsCiAgICAgICAgICAgICAgICAgICAg
ICBpbnQgKCpfX3NlbGVjdG9yKSAoX19jb25zdCBzdHJ1Y3QgZGlyZW50NjQgKiksCiAgICAgICAg
ICAgICAgICAgICAgICBpbnQgKCpfX2NtcCkgKF9fY29uc3Qgdm9pZCAqLCBfX2NvbnN0IHZvaWQg
KikpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBhbHBoYXNvcnQgKF9fY29uc3Qgdm9pZCAqX19l
MSwgX19jb25zdCB2b2lkICpfX2UyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwojIDI2OSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVybiBpbnQgYWxwaGFz
b3J0NjQgKF9fY29uc3Qgdm9pZCAqX19lMSwgX19jb25zdCB2b2lkICpfX2UyKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBpbnQgdmVyc2lvbnNv
cnQgKF9fY29uc3Qgdm9pZCAqX19lMSwgX19jb25zdCB2b2lkICpfX2UyKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDI5MCAiL3Vzci9pbmNsdWRlL2RpcmVudC5o
IiAzCmV4dGVybiBpbnQgdmVyc2lvbnNvcnQ2NCAoX19jb25zdCB2b2lkICpfX2UxLCBfX2NvbnN0
IHZvaWQgKl9fZTIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMg
MzAwICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMKZXh0ZXJuIF9fc3NpemVfdCBnZXRkaXJlbnRy
aWVzIChpbnQgX19mZCwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19vZmZfdCAqX19yZXN0cmljdCBfX2Jhc2VwKSB0aHJvdyAoKTsKIyAzMTYgIi91c3Iv
aW5jbHVkZS9kaXJlbnQuaCIgMwpleHRlcm4gX19zc2l6ZV90IGdldGRpcmVudHJpZXM2NCAoaW50
IF9fZmQsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX29mZjY0X3QgKl9fcmVzdHJpY3QgX19iYXNlcCkgdGhyb3cgKCk7CgoKCgp9CiMgOTYgInR1
eHJhY2VyLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMSAzCiMgMjIgIi91c3Iv
aW5jbHVkZS9zeXMvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwoj
IDIzICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3R5cGVzLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgojIDEgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAz
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9z
eXMvdGltZS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMzEg
Ii91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKCgoKCgoKCmV4dGVybiAiQyIgewojIDU2ICIv
dXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXpvbmUKICB7CiAgICBpbnQgdHpf
bWludXRlc3dlc3Q7CiAgICBpbnQgdHpfZHN0dGltZTsKICB9OwoKdHlwZWRlZiBzdHJ1Y3QgdGlt
ZXpvbmUgKl9fcmVzdHJpY3QgX190aW1lem9uZV9wdHJfdDsKIyA3MiAiL3Vzci9pbmNsdWRlL3N5
cy90aW1lLmgiIDMKZXh0ZXJuIGludCBnZXR0aW1lb2ZkYXkgKHN0cnVjdCB0aW1ldmFsICpfX3Jl
c3RyaWN0IF9fdHYsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3RpbWV6b25lX3B0cl90IF9f
dHopIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzZXR0aW1lb2ZkYXkgKF9fY29uc3Qgc3RydWN0
IHRpbWV2YWwgKl9fdHYsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCB0
aW1lem9uZSAqX190eikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBhZGp0aW1lIChfX2NvbnN0
IHN0cnVjdCB0aW1ldmFsICpfX2RlbHRhLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1l
dmFsICpfX29sZGRlbHRhKSB0aHJvdyAoKTsKCgoKCmVudW0gX19pdGltZXJfd2hpY2gKICB7Cgog
ICAgSVRJTUVSX1JFQUwgPSAwLAoKCiAgICBJVElNRVJfVklSVFVBTCA9IDEsCgoKCiAgICBJVElN
RVJfUFJPRiA9IDIKCiAgfTsKCgoKc3RydWN0IGl0aW1lcnZhbAogIHsKCiAgICBzdHJ1Y3QgdGlt
ZXZhbCBpdF9pbnRlcnZhbDsKCiAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKICB9OwoKCnR5
cGVkZWYgZW51bSBfX2l0aW1lcl93aGljaCBfX2l0aW1lcl93aGljaF90OwoKCgoKCgpleHRlcm4g
aW50IGdldGl0aW1lciAoX19pdGltZXJfd2hpY2hfdCBfX3doaWNoLAogICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGl0aW1lcnZhbCAqX192YWx1ZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50
IHNldGl0aW1lciAoX19pdGltZXJfd2hpY2hfdCBfX3doaWNoLAogICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBzdHJ1Y3QgaXRpbWVydmFsICpfX3Jlc3RyaWN0IF9fbmV3LAogICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGl0aW1lcnZhbCAqX19yZXN0cmljdCBfX29sZCkgdGhyb3cgKCk7
CgoKCmV4dGVybiBpbnQgdXRpbWVzIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25zdCBzdHJ1
Y3QgdGltZXZhbCBfX3R2cFsyXSkKICAgICB0aHJvdyAoKTsKIyAxNjkgIi91c3IvaW5jbHVkZS9z
eXMvdGltZS5oIiAzCn0KIyA5NyAidHV4cmFjZXIuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMSAzCiMgOTggInR1eHJhY2VyLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvZGlyZW50
LmgiIDEgMwojIDk5ICJ0dXhyYWNlci5oIiAyCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dM
L2dsLmgiIDEgMwojIDgwICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2wuaCIgMwpleHRlcm4gIkMi
IHsKIyA5OCAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgR0xlbnVtOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0xib29sZWFuOwp0eXBlZGVmIHVuc2ln
bmVkIGludCBHTGJpdGZpZWxkOwp0eXBlZGVmIHZvaWQgR0x2b2lkOwp0eXBlZGVmIHNpZ25lZCBj
aGFyIEdMYnl0ZTsKdHlwZWRlZiBzaG9ydCBHTHNob3J0Owp0eXBlZGVmIGludCBHTGludDsKdHlw
ZWRlZiB1bnNpZ25lZCBjaGFyIEdMdWJ5dGU7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgR0x1c2hv
cnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IEdMdWludDsKdHlwZWRlZiBpbnQgR0xzaXplaTsKdHlw
ZWRlZiBmbG9hdCBHTGZsb2F0Owp0eXBlZGVmIGZsb2F0IEdMY2xhbXBmOwp0eXBlZGVmIGRvdWJs
ZSBHTGRvdWJsZTsKdHlwZWRlZiBkb3VibGUgR0xjbGFtcGQ7CiMgODY5ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvR0wvZ2wuaCIgMwpleHRlcm4gdm9pZCBnbENsZWFySW5kZXgoIEdMZmxvYXQgYyApOwoK
ZXh0ZXJuIHZvaWQgZ2xDbGVhckNvbG9yKCBHTGNsYW1wZiByZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xjbGFtcGYgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFt
cGYgYmx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1wZiBhbHBoYSApOwoKZXh0
ZXJuIHZvaWQgZ2xDbGVhciggR0xiaXRmaWVsZCBtYXNrICk7CgpleHRlcm4gdm9pZCBnbEluZGV4
TWFzayggR0x1aW50IG1hc2sgKTsKCmV4dGVybiB2b2lkIGdsQ29sb3JNYXNrKCBHTGJvb2xlYW4g
cmVkLCBHTGJvb2xlYW4gZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
Ymx1ZSwgR0xib29sZWFuIGFscGhhICk7CgpleHRlcm4gdm9pZCBnbEFscGhhRnVuYyggR0xlbnVt
IGZ1bmMsIEdMY2xhbXBmIHJlZiApOwoKZXh0ZXJuIHZvaWQgZ2xCbGVuZEZ1bmMoIEdMZW51bSBz
ZmFjdG9yLCBHTGVudW0gZGZhY3RvciApOwoKZXh0ZXJuIHZvaWQgZ2xMb2dpY09wKCBHTGVudW0g
b3Bjb2RlICk7CgpleHRlcm4gdm9pZCBnbEN1bGxGYWNlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJu
IHZvaWQgZ2xGcm9udEZhY2UoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBnbFBvaW50U2l6
ZSggR0xmbG9hdCBzaXplICk7CgpleHRlcm4gdm9pZCBnbExpbmVXaWR0aCggR0xmbG9hdCB3aWR0
aCApOwoKZXh0ZXJuIHZvaWQgZ2xMaW5lU3RpcHBsZSggR0xpbnQgZmFjdG9yLCBHTHVzaG9ydCBw
YXR0ZXJuICk7CgpleHRlcm4gdm9pZCBnbFBvbHlnb25Nb2RlKCBHTGVudW0gZmFjZSwgR0xlbnVt
IG1vZGUgKTsKCmV4dGVybiB2b2lkIGdsUG9seWdvbk9mZnNldCggR0xmbG9hdCBmYWN0b3IsIEdM
ZmxvYXQgdW5pdHMgKTsKCmV4dGVybiB2b2lkIGdsUG9seWdvblN0aXBwbGUoIGNvbnN0IEdMdWJ5
dGUgKm1hc2sgKTsKCmV4dGVybiB2b2lkIGdsR2V0UG9seWdvblN0aXBwbGUoIEdMdWJ5dGUgKm1h
c2sgKTsKCmV4dGVybiB2b2lkIGdsRWRnZUZsYWcoIEdMYm9vbGVhbiBmbGFnICk7CgpleHRlcm4g
dm9pZCBnbEVkZ2VGbGFndiggY29uc3QgR0xib29sZWFuICpmbGFnICk7CgpleHRlcm4gdm9pZCBn
bFNjaXNzb3IoIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwoKZXh0ZXJuIHZvaWQgZ2xDbGlw
UGxhbmUoIEdMZW51bSBwbGFuZSwgY29uc3QgR0xkb3VibGUgKmVxdWF0aW9uICk7CgpleHRlcm4g
dm9pZCBnbEdldENsaXBQbGFuZSggR0xlbnVtIHBsYW5lLCBHTGRvdWJsZSAqZXF1YXRpb24gKTsK
CmV4dGVybiB2b2lkIGdsRHJhd0J1ZmZlciggR0xlbnVtIG1vZGUgKTsKCmV4dGVybiB2b2lkIGds
UmVhZEJ1ZmZlciggR0xlbnVtIG1vZGUgKTsKCmV4dGVybiB2b2lkIGdsRW5hYmxlKCBHTGVudW0g
Y2FwICk7CgpleHRlcm4gdm9pZCBnbERpc2FibGUoIEdMZW51bSBjYXAgKTsKCmV4dGVybiBHTGJv
b2xlYW4gZ2xJc0VuYWJsZWQoIEdMZW51bSBjYXAgKTsKCgpleHRlcm4gdm9pZCBnbEVuYWJsZUNs
aWVudFN0YXRlKCBHTGVudW0gY2FwICk7CgpleHRlcm4gdm9pZCBnbERpc2FibGVDbGllbnRTdGF0
ZSggR0xlbnVtIGNhcCApOwoKCmV4dGVybiB2b2lkIGdsR2V0Qm9vbGVhbnYoIEdMZW51bSBwbmFt
ZSwgR0xib29sZWFuICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0RG91YmxldiggR0xlbnVt
IHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldEZsb2F0diggR0xl
bnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0SW50ZWdlcnYo
IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyApOwoKCmV4dGVybiB2b2lkIGdsUHVzaEF0dHJp
YiggR0xiaXRmaWVsZCBtYXNrICk7CgpleHRlcm4gdm9pZCBnbFBvcEF0dHJpYiggdm9pZCApOwoK
CmV4dGVybiB2b2lkIGdsUHVzaENsaWVudEF0dHJpYiggR0xiaXRmaWVsZCBtYXNrICk7CgpleHRl
cm4gdm9pZCBnbFBvcENsaWVudEF0dHJpYiggdm9pZCApOwoKCmV4dGVybiBHTGludCBnbFJlbmRl
ck1vZGUoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gR0xlbnVtIGdsR2V0RXJyb3IoIHZvaWQgKTsK
CmV4dGVybiBjb25zdCBHTHVieXRlKiBnbEdldFN0cmluZyggR0xlbnVtIG5hbWUgKTsKCmV4dGVy
biB2b2lkIGdsRmluaXNoKCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbEZsdXNoKCB2b2lkICk7Cgpl
eHRlcm4gdm9pZCBnbEhpbnQoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlICk7CgoKCgoKCgpl
eHRlcm4gdm9pZCBnbENsZWFyRGVwdGgoIEdMY2xhbXBkIGRlcHRoICk7CgpleHRlcm4gdm9pZCBn
bERlcHRoRnVuYyggR0xlbnVtIGZ1bmMgKTsKCmV4dGVybiB2b2lkIGdsRGVwdGhNYXNrKCBHTGJv
b2xlYW4gZmxhZyApOwoKZXh0ZXJuIHZvaWQgZ2xEZXB0aFJhbmdlKCBHTGNsYW1wZCBuZWFyX3Zh
bCwgR0xjbGFtcGQgZmFyX3ZhbCApOwoKCgoKCgpleHRlcm4gdm9pZCBnbENsZWFyQWNjdW0oIEdM
ZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSApOwoKZXh0ZXJuIHZvaWQgZ2xBY2N1
bSggR0xlbnVtIG9wLCBHTGZsb2F0IHZhbHVlICk7CgoKCgoKCgpleHRlcm4gdm9pZCBnbE1hdHJp
eE1vZGUoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBnbE9ydGhvKCBHTGRvdWJsZSBsZWZ0
LCBHTGRvdWJsZSByaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3Vi
bGUgYm90dG9tLCBHTGRvdWJsZSB0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZG91YmxlIG5lYXJfdmFsLCBHTGRvdWJsZSBmYXJfdmFsICk7CgpleHRlcm4gdm9pZCBnbEZy
dXN0dW0oIEdMZG91YmxlIGxlZnQsIEdMZG91YmxlIHJpZ2h0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIG5lYXJfdmFsLCBHTGRvdWJsZSBmYXJf
dmFsICk7CgpleHRlcm4gdm9pZCBnbFZpZXdwb3J0KCBHTGludCB4LCBHTGludCB5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCApOwoKZXh0ZXJuIHZvaWQgZ2xQdXNoTWF0cml4KCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbFBv
cE1hdHJpeCggdm9pZCApOwoKZXh0ZXJuIHZvaWQgZ2xMb2FkSWRlbnRpdHkoIHZvaWQgKTsKCmV4
dGVybiB2b2lkIGdsTG9hZE1hdHJpeGQoIGNvbnN0IEdMZG91YmxlICptICk7CmV4dGVybiB2b2lk
IGdsTG9hZE1hdHJpeGYoIGNvbnN0IEdMZmxvYXQgKm0gKTsKCmV4dGVybiB2b2lkIGdsTXVsdE1h
dHJpeGQoIGNvbnN0IEdMZG91YmxlICptICk7CmV4dGVybiB2b2lkIGdsTXVsdE1hdHJpeGYoIGNv
bnN0IEdMZmxvYXQgKm0gKTsKCmV4dGVybiB2b2lkIGdsUm90YXRlZCggR0xkb3VibGUgYW5nbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgeCwgR0xkb3VibGUg
eSwgR0xkb3VibGUgeiApOwpleHRlcm4gdm9pZCBnbFJvdGF0ZWYoIEdMZmxvYXQgYW5nbGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM
ZmxvYXQgeiApOwoKZXh0ZXJuIHZvaWQgZ2xTY2FsZWQoIEdMZG91YmxlIHgsIEdMZG91YmxlIHks
IEdMZG91YmxlIHogKTsKZXh0ZXJuIHZvaWQgZ2xTY2FsZWYoIEdMZmxvYXQgeCwgR0xmbG9hdCB5
LCBHTGZsb2F0IHogKTsKCmV4dGVybiB2b2lkIGdsVHJhbnNsYXRlZCggR0xkb3VibGUgeCwgR0xk
b3VibGUgeSwgR0xkb3VibGUgeiApOwpleHRlcm4gdm9pZCBnbFRyYW5zbGF0ZWYoIEdMZmxvYXQg
eCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKCgoKCgoKCmV4dGVybiBHTGJvb2xlYW4gZ2xJc0xp
c3QoIEdMdWludCBsaXN0ICk7CgpleHRlcm4gdm9pZCBnbERlbGV0ZUxpc3RzKCBHTHVpbnQgbGlz
dCwgR0xzaXplaSByYW5nZSApOwoKZXh0ZXJuIEdMdWludCBnbEdlbkxpc3RzKCBHTHNpemVpIHJh
bmdlICk7CgpleHRlcm4gdm9pZCBnbE5ld0xpc3QoIEdMdWludCBsaXN0LCBHTGVudW0gbW9kZSAp
OwoKZXh0ZXJuIHZvaWQgZ2xFbmRMaXN0KCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbENhbGxMaXN0
KCBHTHVpbnQgbGlzdCApOwoKZXh0ZXJuIHZvaWQgZ2xDYWxsTGlzdHMoIEdMc2l6ZWkgbiwgR0xl
bnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZv
aWQgKmxpc3RzICk7CgpleHRlcm4gdm9pZCBnbExpc3RCYXNlKCBHTHVpbnQgYmFzZSApOwoKCgoK
CgoKZXh0ZXJuIHZvaWQgZ2xCZWdpbiggR0xlbnVtIG1vZGUgKTsKCmV4dGVybiB2b2lkIGdsRW5k
KCB2b2lkICk7CgoKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyZCggR0xkb3VibGUgeCwgR0xkb3VibGUg
eSApOwpleHRlcm4gdm9pZCBnbFZlcnRleDJmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSApOwpleHRl
cm4gdm9pZCBnbFZlcnRleDJpKCBHTGludCB4LCBHTGludCB5ICk7CmV4dGVybiB2b2lkIGdsVmVy
dGV4MnMoIEdMc2hvcnQgeCwgR0xzaG9ydCB5ICk7CgpleHRlcm4gdm9pZCBnbFZlcnRleDNkKCBH
TGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4
M2YoIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0
ZXgzaSggR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDNz
KCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6ICk7CgpleHRlcm4gdm9pZCBnbFZlcnRl
eDRkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3ICk7CmV4
dGVybiB2b2lkIGdsVmVydGV4NGYoIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdM
ZmxvYXQgdyApOwpleHRlcm4gdm9pZCBnbFZlcnRleDRpKCBHTGludCB4LCBHTGludCB5LCBHTGlu
dCB6LCBHTGludCB3ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4NHMoIEdMc2hvcnQgeCwgR0xzaG9y
dCB5LCBHTHNob3J0IHosIEdMc2hvcnQgdyApOwoKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyZHYoIGNv
bnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4MmZ2KCBjb25zdCBHTGZsb2F0
ICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4Mml2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4g
dm9pZCBnbFZlcnRleDJzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQgZ2xWZXJ0
ZXgzZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4M2Z2KCBjb25z
dCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4M2l2KCBjb25zdCBHTGludCAqdiAp
OwpleHRlcm4gdm9pZCBnbFZlcnRleDNzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZv
aWQgZ2xWZXJ0ZXg0ZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4
NGZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGdsVmVydGV4NGl2KCBjb25zdCBH
TGludCAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDRzdiggY29uc3QgR0xzaG9ydCAqdiApOwoK
CmV4dGVybiB2b2lkIGdsTm9ybWFsM2IoIEdMYnl0ZSBueCwgR0xieXRlIG55LCBHTGJ5dGUgbnog
KTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzZCggR0xkb3VibGUgbngsIEdMZG91YmxlIG55LCBHTGRv
dWJsZSBueiApOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNmKCBHTGZsb2F0IG54LCBHTGZsb2F0IG55
LCBHTGZsb2F0IG56ICk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM2koIEdMaW50IG54LCBHTGludCBu
eSwgR0xpbnQgbnogKTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzcyggR0xzaG9ydCBueCwgR0xzaG9y
dCBueSwgR0xzaG9ydCBueiApOwoKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzYnYoIGNvbnN0IEdMYnl0
ZSAqdiApOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0
ZXJuIHZvaWQgZ2xOb3JtYWwzZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xO
b3JtYWwzaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM3N2KCBjb25z
dCBHTHNob3J0ICp2ICk7CgoKZXh0ZXJuIHZvaWQgZ2xJbmRleGQoIEdMZG91YmxlIGMgKTsKZXh0
ZXJuIHZvaWQgZ2xJbmRleGYoIEdMZmxvYXQgYyApOwpleHRlcm4gdm9pZCBnbEluZGV4aSggR0xp
bnQgYyApOwpleHRlcm4gdm9pZCBnbEluZGV4cyggR0xzaG9ydCBjICk7CmV4dGVybiB2b2lkIGds
SW5kZXh1YiggR0x1Ynl0ZSBjICk7CgpleHRlcm4gdm9pZCBnbEluZGV4ZHYoIGNvbnN0IEdMZG91
YmxlICpjICk7CmV4dGVybiB2b2lkIGdsSW5kZXhmdiggY29uc3QgR0xmbG9hdCAqYyApOwpleHRl
cm4gdm9pZCBnbEluZGV4aXYoIGNvbnN0IEdMaW50ICpjICk7CmV4dGVybiB2b2lkIGdsSW5kZXhz
diggY29uc3QgR0xzaG9ydCAqYyApOwpleHRlcm4gdm9pZCBnbEluZGV4dWJ2KCBjb25zdCBHTHVi
eXRlICpjICk7CgpleHRlcm4gdm9pZCBnbENvbG9yM2IoIEdMYnl0ZSByZWQsIEdMYnl0ZSBncmVl
biwgR0xieXRlIGJsdWUgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNkKCBHTGRvdWJsZSByZWQsIEdM
ZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBibHVlICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzZiggR0xm
bG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSApOwpleHRlcm4gdm9pZCBnbENv
bG9yM2koIEdMaW50IHJlZCwgR0xpbnQgZ3JlZW4sIEdMaW50IGJsdWUgKTsKZXh0ZXJuIHZvaWQg
Z2xDb2xvcjNzKCBHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xzaG9ydCBibHVlICk7CmV4
dGVybiB2b2lkIGdsQ29sb3IzdWIoIEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRl
IGJsdWUgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjN1aSggR0x1aW50IHJlZCwgR0x1aW50IGdyZWVu
LCBHTHVpbnQgYmx1ZSApOwpleHRlcm4gdm9pZCBnbENvbG9yM3VzKCBHTHVzaG9ydCByZWQsIEdM
dXNob3J0IGdyZWVuLCBHTHVzaG9ydCBibHVlICk7CgpleHRlcm4gdm9pZCBnbENvbG9yNGIoIEdM
Ynl0ZSByZWQsIEdMYnl0ZSBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJ5dGUgYmx1ZSwgR0xieXRlIGFscGhhICk7CmV4dGVybiB2b2lkIGdsQ29sb3I0ZCggR0xk
b3VibGUgcmVkLCBHTGRvdWJsZSBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGRvdWJsZSBibHVlLCBHTGRvdWJsZSBhbHBoYSApOwpleHRlcm4gdm9pZCBnbENvbG9y
NGYoIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSApOwpleHRlcm4gdm9pZCBnbENv
bG9yNGkoIEdMaW50IHJlZCwgR0xpbnQgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgYmx1ZSwgR0xpbnQgYWxwaGEgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRz
KCBHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNob3J0IGJsdWUsIEdMc2hvcnQgYWxwaGEgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xv
cjR1YiggR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWJ5dGUgYmx1ZSwgR0x1Ynl0ZSBhbHBoYSApOwpleHRlcm4gdm9pZCBn
bENvbG9yNHVpKCBHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBibHVlLCBHTHVpbnQgYWxwaGEgKTsKZXh0ZXJuIHZvaWQg
Z2xDb2xvcjR1cyggR0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVlbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1c2hvcnQgYmx1ZSwgR0x1c2hvcnQgYWxwaGEgKTsKCgpl
eHRlcm4gdm9pZCBnbENvbG9yM2J2KCBjb25zdCBHTGJ5dGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xD
b2xvcjNkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNmdiggY29u
c3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9yM2l2KCBjb25zdCBHTGludCAqdiAp
OwpleHRlcm4gdm9pZCBnbENvbG9yM3N2KCBjb25zdCBHTHNob3J0ICp2ICk7CmV4dGVybiB2b2lk
IGdsQ29sb3IzdWJ2KCBjb25zdCBHTHVieXRlICp2ICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzdWl2
KCBjb25zdCBHTHVpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjN1c3YoIGNvbnN0IEdMdXNo
b3J0ICp2ICk7CgpleHRlcm4gdm9pZCBnbENvbG9yNGJ2KCBjb25zdCBHTGJ5dGUgKnYgKTsKZXh0
ZXJuIHZvaWQgZ2xDb2xvcjRkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xD
b2xvcjRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9yNGl2KCBjb25z
dCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9yNHN2KCBjb25zdCBHTHNob3J0ICp2ICk7
CmV4dGVybiB2b2lkIGdsQ29sb3I0dWJ2KCBjb25zdCBHTHVieXRlICp2ICk7CmV4dGVybiB2b2lk
IGdsQ29sb3I0dWl2KCBjb25zdCBHTHVpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjR1c3Yo
IGNvbnN0IEdMdXNob3J0ICp2ICk7CgoKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDFkKCBHTGRvdWJs
ZSBzICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQxZiggR0xmbG9hdCBzICk7CmV4dGVybiB2b2lk
IGdsVGV4Q29vcmQxaSggR0xpbnQgcyApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMXMoIEdMc2hv
cnQgcyApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJkKCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0
ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyZiggR0xmbG9hdCBzLCBHTGZsb2F0IHQgKTsKZXh0
ZXJuIHZvaWQgZ2xUZXhDb29yZDJpKCBHTGludCBzLCBHTGludCB0ICk7CmV4dGVybiB2b2lkIGds
VGV4Q29vcmQycyggR0xzaG9ydCBzLCBHTHNob3J0IHQgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29v
cmQzZCggR0xkb3VibGUgcywgR0xkb3VibGUgdCwgR0xkb3VibGUgciApOwpleHRlcm4gdm9pZCBn
bFRleENvb3JkM2YoIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIgKTsKZXh0ZXJuIHZv
aWQgZ2xUZXhDb29yZDNpKCBHTGludCBzLCBHTGludCB0LCBHTGludCByICk7CmV4dGVybiB2b2lk
IGdsVGV4Q29vcmQzcyggR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgciApOwoKZXh0ZXJu
IHZvaWQgZ2xUZXhDb29yZDRkKCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByLCBH
TGRvdWJsZSBxICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0ZiggR0xmbG9hdCBzLCBHTGZsb2F0
IHQsIEdMZmxvYXQgciwgR0xmbG9hdCBxICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0aSggR0xp
bnQgcywgR0xpbnQgdCwgR0xpbnQgciwgR0xpbnQgcSApOwpleHRlcm4gdm9pZCBnbFRleENvb3Jk
NHMoIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIsIEdMc2hvcnQgcSApOwoKZXh0ZXJu
IHZvaWQgZ2xUZXhDb29yZDFkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xU
ZXhDb29yZDFmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMWl2
KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMXN2KCBjb25zdCBHTHNo
b3J0ICp2ICk7CgpleHRlcm4gdm9pZCBnbFRleENvb3JkMmR2KCBjb25zdCBHTGRvdWJsZSAqdiAp
OwpleHRlcm4gdm9pZCBnbFRleENvb3JkMmZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2
b2lkIGdsVGV4Q29vcmQyaXYoIGNvbnN0IEdMaW50ICp2ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29v
cmQyc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzZHYoIGNv
bnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzZnYoIGNvbnN0IEdMZmxv
YXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDNpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0
ZXJuIHZvaWQgZ2xUZXhDb29yZDNzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQg
Z2xUZXhDb29yZDRkdiggY29uc3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29y
ZDRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNGl2KCBjb25z
dCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNHN2KCBjb25zdCBHTHNob3J0ICp2
ICk7CgoKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSAp
OwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczJmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSApOwpleHRl
cm4gdm9pZCBnbFJhc3RlclBvczJpKCBHTGludCB4LCBHTGludCB5ICk7CmV4dGVybiB2b2lkIGds
UmFzdGVyUG9zMnMoIEdMc2hvcnQgeCwgR0xzaG9ydCB5ICk7CgpleHRlcm4gdm9pZCBnbFJhc3Rl
clBvczNkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6ICk7CmV4dGVybiB2b2lk
IGdsUmFzdGVyUG9zM2YoIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKZXh0ZXJu
IHZvaWQgZ2xSYXN0ZXJQb3MzaSggR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiApOwpleHRlcm4g
dm9pZCBnbFJhc3RlclBvczNzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6ICk7Cgpl
eHRlcm4gdm9pZCBnbFJhc3RlclBvczRkKCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJs
ZSB6LCBHTGRvdWJsZSB3ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zNGYoIEdMZmxvYXQgeCwg
R0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBv
czRpKCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3ICk7CmV4dGVybiB2b2lkIGds
UmFzdGVyUG9zNHMoIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHosIEdMc2hvcnQgdyAp
OwoKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVy
biB2b2lkIGdsUmFzdGVyUG9zMmZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGds
UmFzdGVyUG9zMml2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczJz
diggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MzZHYoIGNvbnN0
IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zM2Z2KCBjb25zdCBHTGZsb2F0
ICp2ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zM2l2KCBjb25zdCBHTGludCAqdiApOwpleHRl
cm4gdm9pZCBnbFJhc3RlclBvczNzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQg
Z2xSYXN0ZXJQb3M0ZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVy
UG9zNGZ2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zNGl2KCBj
b25zdCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRzdiggY29uc3QgR0xzaG9y
dCAqdiApOwoKCmV4dGVybiB2b2lkIGdsUmVjdGQoIEdMZG91YmxlIHgxLCBHTGRvdWJsZSB5MSwg
R0xkb3VibGUgeDIsIEdMZG91YmxlIHkyICk7CmV4dGVybiB2b2lkIGdsUmVjdGYoIEdMZmxvYXQg
eDEsIEdMZmxvYXQgeTEsIEdMZmxvYXQgeDIsIEdMZmxvYXQgeTIgKTsKZXh0ZXJuIHZvaWQgZ2xS
ZWN0aSggR0xpbnQgeDEsIEdMaW50IHkxLCBHTGludCB4MiwgR0xpbnQgeTIgKTsKZXh0ZXJuIHZv
aWQgZ2xSZWN0cyggR0xzaG9ydCB4MSwgR0xzaG9ydCB5MSwgR0xzaG9ydCB4MiwgR0xzaG9ydCB5
MiApOwoKCmV4dGVybiB2b2lkIGdsUmVjdGR2KCBjb25zdCBHTGRvdWJsZSAqdjEsIGNvbnN0IEdM
ZG91YmxlICp2MiApOwpleHRlcm4gdm9pZCBnbFJlY3RmdiggY29uc3QgR0xmbG9hdCAqdjEsIGNv
bnN0IEdMZmxvYXQgKnYyICk7CmV4dGVybiB2b2lkIGdsUmVjdGl2KCBjb25zdCBHTGludCAqdjEs
IGNvbnN0IEdMaW50ICp2MiApOwpleHRlcm4gdm9pZCBnbFJlY3RzdiggY29uc3QgR0xzaG9ydCAq
djEsIGNvbnN0IEdMc2hvcnQgKnYyICk7CgoKCgoKCgpleHRlcm4gdm9pZCBnbFZlcnRleFBvaW50
ZXIoIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiB2
b2lkIGdsTm9ybWFsUG9pbnRlciggR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnB0ciApOwoKZXh0
ZXJuIHZvaWQgZ2xDb2xvclBvaW50ZXIoIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZv
aWQgKnB0ciApOwoKZXh0ZXJuIHZvaWQgZ2xJbmRleFBvaW50ZXIoIEdMZW51bSB0eXBlLCBHTHNp
emVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THZvaWQgKnB0ciApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZFBvaW50ZXIoIEdMaW50IHNpemUs
IEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnB0ciApOwoKZXh0ZXJuIHZvaWQgZ2xFZGdlRmxh
Z1BvaW50ZXIoIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnB0ciApOwoKZXh0ZXJuIHZv
aWQgZ2xHZXRQb2ludGVydiggR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zICk7CgpleHRlcm4g
dm9pZCBnbEFycmF5RWxlbWVudCggR0xpbnQgaSApOwoKZXh0ZXJuIHZvaWQgZ2xEcmF3QXJyYXlz
KCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQgKTsKCmV4dGVybiB2b2lk
IGdsRHJhd0VsZW1lbnRzKCBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRp
Y2VzICk7CgpleHRlcm4gdm9pZCBnbEludGVybGVhdmVkQXJyYXlzKCBHTGVudW0gZm9ybWF0LCBH
THNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdm9pZCAqcG9pbnRlciApOwoKCgoKCgpleHRlcm4gdm9pZCBnbFNoYWRlTW9kZWwo
IEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBnbExpZ2h0ZiggR0xlbnVtIGxpZ2h0LCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuIHZvaWQgZ2xMaWdodGkoIEdMZW51bSBs
aWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbExpZ2h0ZnYo
IEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xMaWdodGl2KCBHTGVu
dW0gbGlnaHQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRMaWdodGZ2KCBHTGVudW0g
bGlnaHQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsR2V0TGlnaHRpdiggR0xlbnVtIGxpZ2h0
LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsTGlnaHRNb2RlbGYoIEdMZW51bSBwbmFtZSwgR0xm
bG9hdCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbExpZ2h0TW9kZWxpKCBHTGVudW0gcG5hbWUsIEdM
aW50IHBhcmFtICk7CmV4dGVybiB2b2lkIGdsTGlnaHRNb2RlbGZ2KCBHTGVudW0gcG5hbWUsIGNv
bnN0IEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9pZCBnbExpZ2h0TW9kZWxpdiggR0xlbnVt
IHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbE1hdGVyaWFsZigg
R0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSApOwpleHRlcm4gdm9pZCBn
bE1hdGVyaWFsaSggR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKZXh0
ZXJuIHZvaWQgZ2xNYXRlcmlhbGZ2KCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBH
TGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xNYXRlcmlhbGl2KCBHTGVudW0gZmFjZSwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldE1h
dGVyaWFsZnYoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyApOwpl
eHRlcm4gdm9pZCBnbEdldE1hdGVyaWFsaXYoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdM
aW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsQ29sb3JNYXRlcmlhbCggR0xlbnVtIGZhY2Us
IEdMZW51bSBtb2RlICk7CiMgMTMyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsLmgiIDMKZXh0
ZXJuIHZvaWQgZ2xQaXhlbFpvb20oIEdMZmxvYXQgeGZhY3RvciwgR0xmbG9hdCB5ZmFjdG9yICk7
CgpleHRlcm4gdm9pZCBnbFBpeGVsU3RvcmVmKCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0g
KTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbFN0b3JlaSggR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSAp
OwoKZXh0ZXJuIHZvaWQgZ2xQaXhlbFRyYW5zZmVyZiggR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBh
cmFtICk7CmV4dGVybiB2b2lkIGdsUGl4ZWxUcmFuc2ZlcmkoIEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0gKTsKCmV4dGVybiB2b2lkIGdsUGl4ZWxNYXBmdiggR0xlbnVtIG1hcCwgR0xpbnQgbWFw
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWVzICk7CmV4dGVybiB2b2lkIGdsUGl4ZWxNYXB1aXYoIEdMZW51bSBtYXAsIEdMaW50IG1h
cHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KnZhbHVlcyApOwpleHRlcm4gdm9pZCBnbFBpeGVsTWFwdXN2KCBHTGVudW0gbWFwLCBHTGludCBt
YXBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1c2hv
cnQgKnZhbHVlcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRQaXhlbE1hcGZ2KCBHTGVudW0gbWFwLCBH
TGZsb2F0ICp2YWx1ZXMgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRQaXhlbE1hcHVpdiggR0xlbnVtIG1h
cCwgR0x1aW50ICp2YWx1ZXMgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRQaXhlbE1hcHVzdiggR0xlbnVt
IG1hcCwgR0x1c2hvcnQgKnZhbHVlcyApOwoKZXh0ZXJuIHZvaWQgZ2xCaXRtYXAoIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgeG9yaWcsIEdMZmxvYXQgeW9yaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCB4bW92ZSwgR0xmbG9hdCB5bW92ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHVieXRlICpiaXRtYXAgKTsKCmV4dGVybiB2b2lkIGdsUmVhZFBpeGVs
cyggR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscyApOwoKZXh0ZXJuIHZvaWQgZ2xEcmF3UGl4
ZWxzKCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzICk7CgpleHRlcm4gdm9p
ZCBnbENvcHlQaXhlbHMoIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSApOwoKCgoKCgoKZXh0ZXJuIHZvaWQg
Z2xTdGVuY2lsRnVuYyggR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2sgKTsKCmV4
dGVybiB2b2lkIGdsU3RlbmNpbE1hc2soIEdMdWludCBtYXNrICk7CgpleHRlcm4gdm9pZCBnbFN0
ZW5jaWxPcCggR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzICk7CgpleHRl
cm4gdm9pZCBnbENsZWFyU3RlbmNpbCggR0xpbnQgcyApOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xU
ZXhHZW5kKCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgcGFyYW0gKTsKZXh0
ZXJuIHZvaWQgZ2xUZXhHZW5mKCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBw
YXJhbSApOwpleHRlcm4gdm9pZCBnbFRleEdlbmkoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1l
LCBHTGludCBwYXJhbSApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhHZW5kdiggR0xlbnVtIGNvb3JkLCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMZG91YmxlICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhH
ZW5mdiggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyAp
OwpleHRlcm4gdm9pZCBnbFRleEdlbml2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhHZW5kdiggR0xlbnVtIGNv
b3JkLCBHTGVudW0gcG5hbWUsIEdMZG91YmxlICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRU
ZXhHZW5mdiggR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyApOwpl
eHRlcm4gdm9pZCBnbEdldFRleEdlbml2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcmFtcyApOwoKCmV4dGVybiB2b2lkIGdsVGV4RW52ZiggR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiB2b2lkIGdsVGV4RW52aSggR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhF
bnZmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMg
KTsKZXh0ZXJuIHZvaWQgZ2xUZXhFbnZpdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBj
b25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldFRleEVudmZ2KCBHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9pZCBnbEdl
dFRleEVudml2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKTsK
CgpleHRlcm4gdm9pZCBnbFRleFBhcmFtZXRlcmYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbFRleFBhcmFtZXRlcmkoIEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKCmV4dGVybiB2b2lkIGdsVGV4UGFy
YW1ldGVyZnYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2
b2lkIGdsVGV4UGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyAp
OwoKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCAqcGFyYW1zKTsKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhQYXJhbWV0ZXJpdiggR0xlbnVtIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2
KCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0
ZXJuIHZvaWQgZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgoKZXh0ZXJuIHZvaWQgZ2xUZXhJbWFnZTFEKCBH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzICk7CgpleHRlcm4gdm9p
ZCBnbFRleEltYWdlMkQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwgR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdm9pZCAqcGl4ZWxzICk7CgpleHRlcm4gdm9pZCBnbEdldFRleEltYWdlKCBHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x2b2lkICpwaXhlbHMgKTsKCgoKCgpleHRlcm4gdm9pZCBnbEdlblRleHR1cmVz
KCBHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMgKTsKCmV4dGVybiB2b2lkIGdsRGVsZXRlVGV4
dHVyZXMoIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyk7CgpleHRlcm4gdm9pZCBn
bEJpbmRUZXh0dXJlKCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSApOwoKZXh0ZXJuIHZv
aWQgZ2xQcmlvcml0aXplVGV4dHVyZXMoIEdMc2l6ZWkgbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2xhbXBmICpwcmlvcml0
aWVzICk7CgpleHRlcm4gR0xib29sZWFuIGdsQXJlVGV4dHVyZXNSZXNpZGVudCggR0xzaXplaSBu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdWludCAqdGV4dHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuICpyZXNpZGVuY2VzICk7CgpleHRlcm4gR0xib29sZWFuIGds
SXNUZXh0dXJlKCBHTHVpbnQgdGV4dHVyZSApOwoKCmV4dGVybiB2b2lkIGdsVGV4U3ViSW1hZ2Ux
RCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscyAp
OwoKCmV4dGVybiB2b2lkIGdsVGV4U3ViSW1hZ2UyRCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCgpleHRlcm4gdm9p
ZCBnbENvcHlUZXhJbWFnZTFEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGlu
dCBib3JkZXIgKTsKCgpleHRlcm4gdm9pZCBnbENvcHlUZXhJbWFnZTJEKCBHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciApOwoKCmV4dGVybiB2b2lkIGdsQ29weVRl
eFN1YkltYWdlMUQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeCwgR0xpbnQg
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lk
dGggKTsKCgpleHRlcm4gdm9pZCBnbENvcHlUZXhTdWJJbWFnZTJEKCBHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQgKTsKIyAxNTA1
ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2wuaCIgMwpleHRlcm4gdm9pZCBnbE1hcDFkKCBHTGVu
dW0gdGFyZ2V0LCBHTGRvdWJsZSB1MSwgR0xkb3VibGUgdTIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBvcmRlciwgY29uc3QgR0xkb3VibGUgKnBvaW50cyApOwpleHRlcm4gdm9pZCBnbE1hcDFm
KCBHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgb3JkZXIsIGNvbnN0IEdMZmxvYXQgKnBvaW50cyApOwoKZXh0ZXJuIHZvaWQgZ2xN
YXAyZCggR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdTEsIEdM
ZG91YmxlIHUyLCBHTGludCB1c3RyaWRlLCBHTGludCB1b3JkZXIsCiAgICAgICAgICAgICAgICAg
ICAgIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVy
LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqcG9pbnRzICk7CmV4dGVybiB2
b2lkIGdsTWFwMmYoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
dTEsIEdMZmxvYXQgdTIsIEdMaW50IHVzdHJpZGUsIEdMaW50IHVvcmRlciwKICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9y
ZGVyLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwb2ludHMgKTsKCmV4dGVy
biB2b2lkIGdsR2V0TWFwZHYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xkb3VibGUg
KnYgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRNYXBmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5
LCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGdsR2V0TWFwaXYoIEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBxdWVyeSwgR0xpbnQgKnYgKTsKCmV4dGVybiB2b2lkIGdsRXZhbENvb3JkMWQoIEdMZG91
YmxlIHUgKTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQxZiggR0xmbG9hdCB1ICk7CgpleHRlcm4g
dm9pZCBnbEV2YWxDb29yZDFkdiggY29uc3QgR0xkb3VibGUgKnUgKTsKZXh0ZXJuIHZvaWQgZ2xF
dmFsQ29vcmQxZnYoIGNvbnN0IEdMZmxvYXQgKnUgKTsKCmV4dGVybiB2b2lkIGdsRXZhbENvb3Jk
MmQoIEdMZG91YmxlIHUsIEdMZG91YmxlIHYgKTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQyZigg
R0xmbG9hdCB1LCBHTGZsb2F0IHYgKTsKCmV4dGVybiB2b2lkIGdsRXZhbENvb3JkMmR2KCBjb25z
dCBHTGRvdWJsZSAqdSApOwpleHRlcm4gdm9pZCBnbEV2YWxDb29yZDJmdiggY29uc3QgR0xmbG9h
dCAqdSApOwoKZXh0ZXJuIHZvaWQgZ2xNYXBHcmlkMWQoIEdMaW50IHVuLCBHTGRvdWJsZSB1MSwg
R0xkb3VibGUgdTIgKTsKZXh0ZXJuIHZvaWQgZ2xNYXBHcmlkMWYoIEdMaW50IHVuLCBHTGZsb2F0
IHUxLCBHTGZsb2F0IHUyICk7CgpleHRlcm4gdm9pZCBnbE1hcEdyaWQyZCggR0xpbnQgdW4sIEdM
ZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB2biwgR0xkb3VibGUgdjEsIEdMZG91YmxlIHYyICk7CmV4dGVybiB2b2lkIGdsTWFw
R3JpZDJmKCBHTGludCB1biwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB2biwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiApOwoK
ZXh0ZXJuIHZvaWQgZ2xFdmFsUG9pbnQxKCBHTGludCBpICk7CgpleHRlcm4gdm9pZCBnbEV2YWxQ
b2ludDIoIEdMaW50IGksIEdMaW50IGogKTsKCmV4dGVybiB2b2lkIGdsRXZhbE1lc2gxKCBHTGVu
dW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGkyICk7CgpleHRlcm4gdm9pZCBnbEV2YWxNZXNoMigg
R0xlbnVtIG1vZGUsIEdMaW50IGkxLCBHTGludCBpMiwgR0xpbnQgajEsIEdMaW50IGoyICk7CgoK
CgoKCgpleHRlcm4gdm9pZCBnbEZvZ2YoIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSApOwoK
ZXh0ZXJuIHZvaWQgZ2xGb2dpKCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4g
dm9pZCBnbEZvZ2Z2KCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwoKZXh0
ZXJuIHZvaWQgZ2xGb2dpdiggR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zICk7CgoK
CgoKCgpleHRlcm4gdm9pZCBnbEZlZWRiYWNrQnVmZmVyKCBHTHNpemVpIHNpemUsIEdMZW51bSB0
eXBlLCBHTGZsb2F0ICpidWZmZXIgKTsKCmV4dGVybiB2b2lkIGdsUGFzc1Rocm91Z2goIEdMZmxv
YXQgdG9rZW4gKTsKCmV4dGVybiB2b2lkIGdsU2VsZWN0QnVmZmVyKCBHTHNpemVpIHNpemUsIEdM
dWludCAqYnVmZmVyICk7CgpleHRlcm4gdm9pZCBnbEluaXROYW1lcyggdm9pZCApOwoKZXh0ZXJu
IHZvaWQgZ2xMb2FkTmFtZSggR0x1aW50IG5hbWUgKTsKCmV4dGVybiB2b2lkIGdsUHVzaE5hbWUo
IEdMdWludCBuYW1lICk7CgpleHRlcm4gdm9pZCBnbFBvcE5hbWUoIHZvaWQgKTsKCgoKCmV4dGVy
biB2b2lkIGdsRHJhd1JhbmdlRWxlbWVudHMoIEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsCiAg
ICAgICAgR0x1aW50IGVuZCwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9p
ZCAqaW5kaWNlcyApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhJbWFnZTNEKCBHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBp
bnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCmV4dGVy
biB2b2lkIGdsVGV4U3ViSW1hZ2UzRCggR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6
b2Zmc2V0LCBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsK
CmV4dGVybiB2b2lkIGdsQ29weVRleFN1YkltYWdlM0QoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB6b2Zmc2V0LCBHTGludCB4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LCBHTHNpemVpIHdpZHRoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCApOwoKCgoK
ZXh0ZXJuIHZvaWQgZ2xDb2xvclRhYmxlKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs
IEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxlICk7CgpleHRlcm4gdm9pZCBnbENvbG9yU3ViVGFi
bGUoIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEgKTsKCmV4dGVybiB2b2lk
IGdsQ29sb3JUYWJsZVBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpw
YXJhbXMpOwoKZXh0ZXJuIHZvaWQgZ2xDb2xvclRhYmxlUGFyYW1ldGVyZnYoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKCmV4dGVybiB2b2lkIGdsQ29weUNvbG9yU3Vi
VGFibGUoIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoICk7
CgpleHRlcm4gdm9pZCBnbENvcHlDb2xvclRhYmxlKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoICk7CgpleHRlcm4gdm9pZCBnbEdldENvbG9yVGFi
bGUoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBHTHZvaWQgKnRhYmxlICk7CgpleHRlcm4gdm9p
ZCBnbEdldENvbG9yVGFibGVQYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRDb2xvclRhYmxlUGFyYW1ldGVyaXYoIEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEJsZW5k
RXF1YXRpb24oIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBnbEJsZW5kQ29sb3IoIEdMY2xh
bXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhICk7CgpleHRlcm4gdm9pZCBnbEhpc3Rv
Z3JhbSggR0xlbnVtIHRhcmdldCwgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rICk7Cgpl
eHRlcm4gdm9pZCBnbFJlc2V0SGlzdG9ncmFtKCBHTGVudW0gdGFyZ2V0ICk7CgpleHRlcm4gdm9p
ZCBnbEdldEhpc3RvZ3JhbSggR0xlbnVtIHRhcmdldCwgR0xib29sZWFuIHJlc2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqdmFsdWVzICk7
CgpleHRlcm4gdm9pZCBnbEdldEhpc3RvZ3JhbVBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0SGlzdG9ncmFtUGFyYW1l
dGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lk
IGdsTWlubWF4KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHNpbmsgKTsKCmV4dGVybiB2b2lkIGds
UmVzZXRNaW5tYXgoIEdMZW51bSB0YXJnZXQgKTsKCmV4dGVybiB2b2lkIGdsR2V0TWlubWF4KCBH
TGVudW0gdGFyZ2V0LCBHTGJvb2xlYW4gcmVzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGVzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdm9pZCAqdmFsdWVzICk7CgpleHRlcm4gdm9pZCBnbEdldE1pbm1h
eFBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVy
biB2b2lkIGdsR2V0TWlubWF4UGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsQ29udm9sdXRpb25GaWx0ZXIxRCggR0xlbnVtIHRhcmdl
dCwKICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBm
b3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgIGNvbnN0IEdMdm9pZCAqaW1hZ2UgKTsKCmV4dGVy
biB2b2lkIGdsQ29udm9sdXRpb25GaWx0ZXIyRCggR0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0g
Zm9ybWF0LAogICAgICAgIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmltYWdlICk7CgpleHRl
cm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1ldGVyZiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLAogICAgICAgIEdMZmxvYXQgcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9u
UGFyYW1ldGVyZnYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICBjb25zdCBH
TGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsQ29udm9sdXRpb25QYXJhbWV0ZXJpKCBH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgR0xpbnQgcGFyYW1zICk7CgpleHRl
cm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwKICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbENvcHlD
b252b2x1dGlvbkZpbHRlcjFEKCBHTGVudW0gdGFyZ2V0LAogICAgICAgIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCApOwoKZXh0ZXJuIHZvaWQg
Z2xDb3B5Q29udm9sdXRpb25GaWx0ZXIyRCggR0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAg
R0xzaXplaSBoZWlnaHQpOwoKZXh0ZXJuIHZvaWQgZ2xHZXRDb252b2x1dGlvbkZpbHRlciggR0xl
bnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwKICAgICAgICBHTGVudW0gdHlwZSwgR0x2b2lkICpp
bWFnZSApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRDb252b2x1dGlvblBhcmFtZXRlcmZ2KCBHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4g
dm9pZCBnbEdldENvbnZvbHV0aW9uUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwKICAgICAgICBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbFNlcGFyYWJsZUZp
bHRlcjJEKCBHTGVudW0gdGFyZ2V0LAogICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdm9pZCAqcm93LCBjb25zdCBHTHZvaWQgKmNvbHVtbiApOwoKZXh0ZXJu
IHZvaWQgZ2xHZXRTZXBhcmFibGVGaWx0ZXIoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQs
CiAgICAgICAgR0xlbnVtIHR5cGUsIEdMdm9pZCAqcm93LCBHTHZvaWQgKmNvbHVtbiwgR0x2b2lk
ICpzcGFuICk7CiMgMTc2OCAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsLmgiIDMKZXh0ZXJuIHZv
aWQgZ2xBY3RpdmVUZXh0dXJlQVJCKEdMZW51bSB0ZXh0dXJlKTsKZXh0ZXJuIHZvaWQgZ2xDbGll
bnRBY3RpdmVUZXh0dXJlQVJCKEdMZW51bSB0ZXh0dXJlKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRl
eENvb3JkMWRBUkIoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcyk7CmV4dGVybiB2b2lkIGdsTXVs
dGlUZXhDb29yZDFkdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdik7CmV4dGVy
biB2b2lkIGdsTXVsdGlUZXhDb29yZDFmQVJCKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcyk7CmV4
dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFmdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZs
b2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMWlBUkIoR0xlbnVtIHRhcmdldCwg
R0xpbnQgcyk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFpdkFSQihHTGVudW0gdGFyZ2V0
LCBjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFzQVJCKEdMZW51
bSB0YXJnZXQsIEdMc2hvcnQgcyk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFzdkFSQihH
TGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENv
b3JkMmRBUkIoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3VibGUgdCk7CmV4dGVybiB2
b2lkIGdsTXVsdGlUZXhDb29yZDJkdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAq
dik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJmQVJCKEdMZW51bSB0YXJnZXQsIEdMZmxv
YXQgcywgR0xmbG9hdCB0KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMmZ2QVJCKEdMZW51
bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQy
aUFSQihHTGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0
aVRleENvb3JkMml2QVJCKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2KTsKZXh0ZXJuIHZv
aWQgZ2xNdWx0aVRleENvb3JkMnNBUkIoR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0
IHQpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQyc3ZBUkIoR0xlbnVtIHRhcmdldCwgY29u
c3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDNkQVJCKEdMZW51bSB0
YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIpOwpleHRlcm4gdm9pZCBn
bE11bHRpVGV4Q29vcmQzZHZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpl
eHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMs
IEdMZmxvYXQgdCwgR0xmbG9hdCByKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2Z2QVJC
KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4
Q29vcmQzaUFSQihHTGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByKTsKZXh0
ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2l2QVJCKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50
ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM3NBUkIoR0xlbnVtIHRhcmdldCwgR0xz
aG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgcik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29y
ZDNzdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xN
dWx0aVRleENvb3JkNGRBUkIoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3VibGUgdCwg
R0xkb3VibGUgciwgR0xkb3VibGUgcSk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRkdkFS
QihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlU
ZXhDb29yZDRmQVJCKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0
IHIsIEdMZmxvYXQgcSk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRmdkFSQihHTGVudW0g
dGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkNGlB
UkIoR0xlbnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgciwgR0xpbnQgcSk7CmV4
dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRpdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGlu
dCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRzQVJCKEdMZW51bSB0YXJnZXQsIEdM
c2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIsIEdMc2hvcnQgcSk7CmV4dGVybiB2b2lkIGds
TXVsdGlUZXhDb29yZDRzdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KTsKIyAy
MjQ2ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2wuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVk
ZS9HTC9nbGV4dC5oIiAxIDMKCgoKCmV4dGVybiAiQyIgewojIDE2NzcgIi91c3IvbG9jYWwvaW5j
bHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xMT0FEVFJBTlNQT1NFTUFU
UklYRkFSQlBST0MpIChjb25zdCBHTGZsb2F0ICptKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTExP
QURUUkFOU1BPU0VNQVRSSVhEQVJCUFJPQykgKGNvbnN0IEdMZG91YmxlICptKTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTE1VTFRUUkFOU1BPU0VNQVRSSVhGQVJCUFJPQykgKGNvbnN0IEdMZmxvYXQg
Km0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVFRSQU5TUE9TRU1BVFJJWERBUkJQUk9DKSAo
Y29uc3QgR0xkb3VibGUgKm0pOwojIDE2ODkgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5o
IiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVDT1ZFUkFHRUFSQlBST0MpIChHTGNsYW1w
ZiB2YWx1ZSwgR0xib29sZWFuIGludmVydCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVQ
QVNTQVJCUFJPQykgKEdMZW51bSBwYXNzKTsKIyAxNzEyICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wv
Z2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NUFJFU1NFRFRFWElNQUdFM0RBUkJQ
Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRl
ciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xDT01QUkVTU0VEVEVYSU1BR0UyREFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRh
KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTVBSRVNTRURURVhJTUFHRTFEQVJCUFJPQykgKEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkg
d2lkdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0
YSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01QUkVTU0VEVEVYU1VCSU1BR0UzREFSQlBST0Mp
IChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNl
dCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkg
ZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRh
dGEpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NUFJFU1NFRFRFWFNVQklNQUdFMkRBUkJQUk9D
KSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVp
IGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENP
TVBSRVNTRURURVhTVUJJTUFHRTFEQVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVs
LCBHTGludCB4b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGlt
YWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENP
TVBSRVNTRURURVhJTUFHRUFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgdm9p
ZCAqaW1nKTsKIyAxNzMwICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMQkxFTkRDT0xPUkVYVFBST0MpIChHTGNsYW1wZiByZWQsIEdMY2xhbXBm
IGdyZWVuLCBHTGNsYW1wZiBibHVlLCBHTGNsYW1wZiBhbHBoYSk7CgoKCgoKCgp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMUE9MWUdPTk9GRlNFVEVYVFBST0MpIChHTGZsb2F0IGZhY3RvciwgR0xmbG9h
dCBiaWFzKTsKIyAxNzUxICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMVEVYSU1BR0UzREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwgY29uc3QgR0x2b2lkICpwaXhlbHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYU1VCSU1B
R0UzREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv
aWQgKnBpeGVscyk7CiMgMTc2MSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTEdFVFRFWEZJTFRFUkZVTkNTR0lTUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBmaWx0ZXIsIEdMZmxvYXQgKndlaWdodHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMVEVYRklMVEVSRlVOQ1NHSVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZpbHRlciwg
R0xzaXplaSBuLCBjb25zdCBHTGZsb2F0ICp3ZWlnaHRzKTsKIyAxNzcxICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYU1VCSU1BR0UxREVY
VFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xzaXpl
aSB3aWR0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxz
KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWFNVQklNQUdFMkRFWFRQUk9DKSAoR0xlbnVtIHRh
cmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qg
R0x2b2lkICpwaXhlbHMpOwojIDE3ODQgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAz
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZVEVYSU1BR0UxREVYVFBST0MpIChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5
LCBHTHNpemVpIHdpZHRoLCBHTGludCBib3JkZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09Q
WVRFWElNQUdFMkRFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMaW50IGJvcmRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZVEVYU1VCSU1B
R0UxREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xD
T1BZVEVYU1VCSU1BR0UyREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09QWVRFWFNVQklNQUdF
M0RFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0KTsKIyAxODA1ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQu
aCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUSElTVE9HUkFNRVhUUFJPQykgKEdMZW51bSB0
YXJnZXQsIEdMYm9vbGVhbiByZXNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9p
ZCAqdmFsdWVzKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEhJU1RPR1JBTVBBUkFNRVRFUkZW
RVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsK
dHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEhJU1RPR1JBTVBBUkFNRVRFUklWRVhUUFJPQykgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xHRVRNSU5NQVhFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xib29sZWFuIHJlc2V0
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp2YWx1ZXMpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMR0VUTUlOTUFYUEFSQU1FVEVSRlZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VU
TUlOTUFYUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEhJU1RPR1JBTUVYVFBST0MpIChH
TGVudW0gdGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMYm9v
bGVhbiBzaW5rKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1JTk1BWEVYVFBST0MpIChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rKTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTFJFU0VUSElTVE9HUkFNRVhUUFJPQykgKEdMZW51bSB0YXJnZXQpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMUkVTRVRNSU5NQVhFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCk7CiMg
MTgzNCAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQ
Rk5HTENPTlZPTFVUSU9ORklMVEVSMURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
Y29uc3QgR0x2b2lkICppbWFnZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT05WT0xVVElPTkZJ
TFRFUjJERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBj
b25zdCBHTHZvaWQgKmltYWdlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTlZPTFVUSU9OUEFS
QU1FVEVSRkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTlZPTFVUSU9OUEFSQU1FVEVSRlZFWFRQUk9D
KSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05QQVJBTUVURVJJRVhUUFJPQykgKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQ
Rk5HTENPTlZPTFVUSU9OUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlD
T05WT0xVVElPTkZJTFRFUjFERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xDT1BZQ09OVk9MVVRJT05GSUxURVIyREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTlZPTFVUSU9ORklMVEVS
RVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZv
aWQgKmltYWdlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTlZPTFVUSU9OUEFSQU1FVEVS
RlZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMp
Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09OVk9MVVRJT05QQVJBTUVURVJJVkVYVFBST0Mp
IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMR0VUU0VQQVJBQkxFRklMVEVSRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnJvdywgR0x2b2lkICpjb2x1bW4sIEdM
dm9pZCAqc3Bhbik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRVBBUkFCTEVGSUxURVIyREVYVFBS
T0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk
ICpyb3csIGNvbnN0IEdMdm9pZCAqY29sdW1uKTsKIyAxODY0ICIvdXNyL2xvY2FsL2luY2x1ZGUv
R0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JUQUJMRVNHSVBST0MpIChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51
bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxlKTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTENPTE9SVEFCTEVQQVJBTUVURVJGVlNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xDT0xPUlRBQkxFUEFSQU1FVEVSSVZTR0lQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlDT0xP
UlRBQkxFU0dJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xp
bnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRD
T0xPUlRBQkxFU0dJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLCBHTHZvaWQgKnRhYmxlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTE9SVEFCTEVQ
QVJBTUVURVJGVlNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
KnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRDT0xPUlRBQkxFUEFSQU1FVEVSSVZT
R0lQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKCgoK
CgoKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xQSVhFTFRFWEdFTlNHSVhQUk9DKSAoR0xlbnVtIG1v
ZGUpOwojIDE4OTEgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xQSVhFTFRFWEdFTlBBUkFNRVRFUklTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwg
R0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxURVhHRU5QQVJBTUVURVJJ
VlNHSVNQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTFBJWEVMVEVYR0VOUEFSQU1FVEVSRlNHSVNQUk9DKSAoR0xlbnVtIHBuYW1l
LCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBJWEVMVEVYR0VOUEFSQU1F
VEVSRlZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTEdFVFBJWEVMVEVYR0VOUEFSQU1FVEVSSVZTR0lTUFJPQykgKEdM
ZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRQSVhF
TFRFWEdFTlBBUkFNRVRFUkZWU0dJU1BST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFt
cyk7CiMgMTkwNSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFRFWElNQUdFNERTR0lTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVs
LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
THNpemVpIGRlcHRoLCBHTHNpemVpIHNpemU0ZCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhlbHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMVEVYU1VCSU1BR0U0RFNHSVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMaW50IHdvZmZzZXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTHNpemVpIHNp
emU0ZCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsK
IyAxOTI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIEdMYm9vbGVh
biAoICogUEZOR0xBUkVURVhUVVJFU1JFU0lERU5URVhUUFJPQykgKEdMc2l6ZWkgbiwgY29uc3Qg
R0x1aW50ICp0ZXh0dXJlcywgR0xib29sZWFuICpyZXNpZGVuY2VzKTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTEJJTkRURVhUVVJFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCB0ZXh0dXJl
KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTERFTEVURVRFWFRVUkVTRVhUUFJPQykgKEdMc2l6ZWkg
biwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRU5URVhU
VVJFU0VYVFBST0MpIChHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMpOwp0eXBlZGVmIEdMYm9v
bGVhbiAoICogUEZOR0xJU1RFWFRVUkVFWFRQUk9DKSAoR0x1aW50IHRleHR1cmUpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMUFJJT1JJVElaRVRFWFRVUkVTRVhUUFJPQykgKEdMc2l6ZWkgbiwgY29u
c3QgR0x1aW50ICp0ZXh0dXJlcywgY29uc3QgR0xjbGFtcGYgKnByaW9yaXRpZXMpOwojIDE5NDEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xE
RVRBSUxURVhGVU5DU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG4sIGNvbnN0IEdM
ZmxvYXQgKnBvaW50cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRERVRBSUxURVhGVU5DU0dJ
U1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGZsb2F0ICpwb2ludHMpOwojIDE5NTEgIi91c3IvbG9j
YWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xTSEFSUEVOVEVY
RlVOQ1NHSVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBuLCBjb25zdCBHTGZsb2F0ICpw
b2ludHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUU0hBUlBFTlRFWEZVTkNTR0lTUFJPQykg
KEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgKnBvaW50cyk7CiMgMTk2OSAiL3Vzci9sb2NhbC9pbmNs
dWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNBTVBMRU1BU0tTR0lTUFJP
QykgKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKdHlwZWRlZiB2b2lkICggKiBQ
Rk5HTFNBTVBMRVBBVFRFUk5TR0lTUFJPQykgKEdMZW51bSBwYXR0ZXJuKTsKIyAxOTkwICIvdXNy
L2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQVJSQVlF
TEVNRU5URVhUUFJPQykgKEdMaW50IGkpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JQT0lO
VEVSRVhUUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TERSQVdBUlJBWVNFWFRQUk9DKSAoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNv
dW50KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEVER0VGTEFHUE9JTlRFUkVYVFBST0MpIChHTHNp
emVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xib29sZWFuICpwb2ludGVyKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTEdFVFBPSU5URVJWRVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0x2
b2lkKiAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTElOREVYUE9JTlRFUkVYVFBST0Mp
IChHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9p
ZCAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xOT1JNQUxQT0lOVEVSRVhUUFJPQykg
KEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x2b2lk
ICpwb2ludGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEUE9JTlRFUkVYVFBST0Mp
IChHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhQT0lO
VEVSRVhUUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKIyAyMDMwICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQkxFTkRFUVVBVElPTkVY
VFBST0MpIChHTGVudW0gbW9kZSk7CiMgMjA2MSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0
LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNQUklURVBBUkFNRVRFUkZTR0lYUFJPQykgKEdM
ZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTUFJJVEVQ
QVJBTUVURVJGVlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMp
Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU1BSSVRFUEFSQU1FVEVSSVNHSVhQUk9DKSAoR0xlbnVt
IHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTUFJJVEVQQVJBTUVU
RVJJVlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKIyAyMDc5
ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
UE9JTlRQQVJBTUVURVJGRVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xQT0lOVFBBUkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBPSU5UUEFS
QU1FVEVSRlNHSVNQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTFBPSU5UUEFSQU1FVEVSRlZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgY29u
c3QgR0xmbG9hdCAqcGFyYW1zKTsKIyAyMDk1ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQu
aCIgMwp0eXBlZGVmIEdMaW50ICggKiBQRk5HTEdFVElOU1RSVU1FTlRTU0dJWFBST0MpICh2b2lk
KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTElOU1RSVU1FTlRTQlVGRkVSU0dJWFBST0MpIChHTHNp
emVpIHNpemUsIEdMaW50ICpidWZmZXIpOwp0eXBlZGVmIEdMaW50ICggKiBQRk5HTFBPTExJTlNU
UlVNRU5UU1NHSVhQUk9DKSAoR0xpbnQgKm1hcmtlcl9wKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFJFQURJTlNUUlVNRU5UU1NHSVhQUk9DKSAoR0xpbnQgbWFya2VyKTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTFNUQVJUSU5TVFJVTUVOVFNTR0lYUFJPQykgKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMU1RPUElOU1RSVU1FTlRTU0dJWFBST0MpIChHTGludCBtYXJrZXIpOwojIDIxMTIgIi91
c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFN
RVpPT01TR0lYUFJPQykgKEdMaW50IGZhY3Rvcik7CgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMVEFHU0FNUExFQlVGRkVSU0dJWFBST0MpICh2b2lkKTsKIyAyMTMxICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMREVGT1JNQVRJT05NQVAz
RFNHSVhQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGlu
dCB1c3RyaWRlLCBHTGludCB1b3JkZXIsIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2MiwgR0xpbnQg
dnN0cmlkZSwgR0xpbnQgdm9yZGVyLCBHTGRvdWJsZSB3MSwgR0xkb3VibGUgdzIsIEdMaW50IHdz
dHJpZGUsIEdMaW50IHdvcmRlciwgY29uc3QgR0xkb3VibGUgKnBvaW50cyk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xERUZPUk1BVElPTk1BUDNGU0dJWFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGZs
b2F0IHUxLCBHTGZsb2F0IHUyLCBHTGludCB1c3RyaWRlLCBHTGludCB1b3JkZXIsIEdMZmxvYXQg
djEsIEdMZmxvYXQgdjIsIEdMaW50IHZzdHJpZGUsIEdMaW50IHZvcmRlciwgR0xmbG9hdCB3MSwg
R0xmbG9hdCB3MiwgR0xpbnQgd3N0cmlkZSwgR0xpbnQgd29yZGVyLCBjb25zdCBHTGZsb2F0ICpw
b2ludHMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMREVGT1JNU0dJWFBST0MpIChHTGJpdGZpZWxk
IG1hc2spOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTE9BRElERU5USVRZREVGT1JNQVRJT05NQVBT
R0lYUFJPQykgKEdMYml0ZmllbGQgbWFzayk7CgoKCgoKCgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
UkVGRVJFTkNFUExBTkVTR0lYUFJPQykgKGNvbnN0IEdMZG91YmxlICplcXVhdGlvbik7CgoKCgoK
Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRkxVU0hSQVNURVJTR0lYUFJPQykgKHZvaWQpOwojIDIx
NjMgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZO
R0xGT0dGVU5DU0dJU1BST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKnBvaW50cyk7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xHRVRGT0dGVU5DU0dJU1BST0MpIChjb25zdCBHTGZsb2F0ICpw
b2ludHMpOwojIDIxODEgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYg
dm9pZCAoICogUEZOR0xJTUFHRVRSQU5TRk9STVBBUkFNRVRFUklIUFBST0MpIChHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTElN
QUdFVFJBTlNGT1JNUEFSQU1FVEVSRkhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xJTUFHRVRSQU5TRk9STVBB
UkFNRVRFUklWSFBQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGlu
dCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTElNQUdFVFJBTlNGT1JNUEFSQU1FVEVS
RlZIUFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBh
cmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRJTUFHRVRSQU5TRk9STVBBUkFNRVRFUklW
SFBQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTEdFVElNQUdFVFJBTlNGT1JNUEFSQU1FVEVSRlZIUFBST0MpIChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CiMgMjIwMyAiL3Vz
ci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9S
U1VCVEFCTEVFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzdGFydCwgR0xzaXplaSBj
b3VudCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZQ09MT1JTVUJUQUJMRUVYVFBST0MpIChHTGVudW0gdGFy
Z2V0LCBHTHNpemVpIHN0YXJ0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoKTsKIyAy
MjE2ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMSElOVFBHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBtb2RlKTsKIyAyMjI3ICIvdXNy
L2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JU
QUJMRUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6
ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxl
KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTE9SVEFCTEVFWFRQUk9DKSAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xHRVRDT0xPUlRBQkxFUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TEdFVENPTE9SVEFCTEVQQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CiMgMjI0NyAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2ds
ZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVExJU1RQQVJBTUVURVJGVlNHSVhQUk9D
KSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTEdFVExJU1RQQVJBTUVURVJJVlNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMSVNUUEFS
QU1FVEVSRlNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJh
bSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMSVNUUEFSQU1FVEVSRlZTR0lYUFJPQykgKEdMdWlu
dCBsaXN0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xMSVNUUEFSQU1FVEVSSVNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBw
bmFtZSwgR0xpbnQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTElTVFBBUkFNRVRFUklW
U0dJWFBST0MpIChHTHVpbnQgbGlzdCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1z
KTsKIyAyMjgwICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMSU5ERVhNQVRFUklBTEVYVFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUp
OwoKCgoKCgoKdHlwZWRlZiB2b2lkICggKiBQRk5HTElOREVYRlVOQ0VYVFBST0MpIChHTGVudW0g
ZnVuYywgR0xjbGFtcGYgcmVmKTsKIyAyMzAxICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQu
aCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTE9DS0FSUkFZU0VYVFBST0MpIChHTGludCBmaXJz
dCwgR0xzaXplaSBjb3VudCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xVTkxPQ0tBUlJBWVNFWFRQ
Uk9DKSAodm9pZCk7CiMgMjMxMSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTENVTExQQVJBTUVURVJEVkVYVFBST0MpIChHTGVudW0gcG5hbWUs
IEdMZG91YmxlICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ1VMTFBBUkFNRVRFUkZW
RVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKIyAyMzQxICIvdXNyL2xv
Y2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01FTlRD
T0xPUk1BVEVSSUFMU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMRlJBR01FTlRMSUdIVEZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5U
TElHSFRGVlNHSVhQUk9DKSAoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxv
YXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hUSVNHSVhQUk9D
KSAoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTEZSQUdNRU5UTElHSFRJVlNHSVhQUk9DKSAoR0xlbnVtIGxpZ2h0LCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01F
TlRMSUdIVE1PREVMRlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTElHSFRNT0RFTEZWU0dJWFBST0MpIChHTGVudW0g
cG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFH
TUVOVExJR0hUTU9ERUxJU0dJWFBST0MpIChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTElHSFRNT0RFTElWU0dJWFBST0MpIChHTGVudW0g
cG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01F
TlRNQVRFUklBTEZTR0lYUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
cGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01FTlRNQVRFUklBTEZWU0dJWFBST0Mp
IChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01FTlRNQVRFUklBTElTR0lYUFJPQykgKEdMZW51bSBmYWNl
LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdN
RU5UTUFURVJJQUxJVlNHSVhQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRGUkFHTUVOVExJR0hURlZT
R0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VURlJBR01FTlRMSUdIVElWU0dJWFBST0MpIChHTGVudW0g
bGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xHRVRGUkFHTUVOVE1BVEVSSUFMRlZTR0lYUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRGUkFHTUVOVE1B
VEVSSUFMSVZTR0lYUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTElHSFRFTlZJU0dJWFBST0MpIChHTGVudW0gcG5h
bWUsIEdMaW50IHBhcmFtKTsKIyAyMzc0ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIg
Mwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRFJBV1JBTkdFRUxFTUVOVFNFWFRQUk9DKSAoR0xlbnVt
IG1vZGUsIEdMdWludCBzdGFydCwgR0x1aW50IGVuZCwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5
cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcyk7CiMgMjM5MiAiL3Vzci9sb2NhbC9pbmNsdWRlL0dM
L2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTEFQUExZVEVYVFVSRUVYVFBST0MpIChH
TGVudW0gbW9kZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhUVVJFTElHSFRFWFRQUk9DKSAo
R0xlbnVtIHBuYW1lKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWFRVUkVNQVRFUklBTEVYVFBS
T0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUpOwojIDI0MTUgIi91c3IvbG9jYWwvaW5jbHVk
ZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xBU1lOQ01BUktFUlNHSVhQUk9D
KSAoR0x1aW50IG1hcmtlcik7CnR5cGVkZWYgR0xpbnQgKCAqIFBGTkdMRklOSVNIQVNZTkNTR0lY
UFJPQykgKEdMdWludCAqbWFya2VycCk7CnR5cGVkZWYgR0xpbnQgKCAqIFBGTkdMUE9MTEFTWU5D
U0dJWFBST0MpIChHTHVpbnQgKm1hcmtlcnApOwp0eXBlZGVmIEdMdWludCAoICogUEZOR0xHRU5B
U1lOQ01BUktFUlNTR0lYUFJPQykgKEdMc2l6ZWkgcmFuZ2UpOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMREVMRVRFQVNZTkNNQVJLRVJTU0dJWFBST0MpIChHTHVpbnQgbWFya2VyLCBHTHNpemVpIHJh
bmdlKTsKdHlwZWRlZiBHTGJvb2xlYW4gKCAqIFBGTkdMSVNBU1lOQ01BUktFUlNHSVhQUk9DKSAo
R0x1aW50IG1hcmtlcik7CiMgMjQzOSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMK
dHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFBPSU5URVJWSU5URUxQUk9DKSAoR0xpbnQgc2l6
ZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMTk9STUFMUE9JTlRFUlZJTlRFTFBST0MpIChHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk
KiAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlBPSU5URVJWSU5URUxQUk9D
KSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkRQT0lOVEVSVklOVEVMUFJPQykgKEdMaW50IHNpemUs
IEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyKTsKIyAyNDU3ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxUUkFOU0ZP
Uk1QQVJBTUVURVJJRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxUUkFOU0ZPUk1QQVJBTUVURVJGRVhU
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xQSVhFTFRSQU5TRk9STVBBUkFNRVRFUklWRVhUUFJPQykgKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xQSVhFTFRSQU5TRk9STVBBUkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKIyAyNDk2ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZ
Q09MT1IzQkVYVFBST0MpIChHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKTsK
dHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0JWRVhUUFJPQykgKGNvbnN0IEdM
Ynl0ZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNERVhUUFJPQykg
KEdMZG91YmxlIHJlZCwgR0xkb3VibGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzRFZFWFRQUk9DKSAoY29uc3QgR0xkb3VibGUgKnYp
Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzRkVYVFBST0MpIChHTGZsb2F0
IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFNFQ09OREFSWUNPTE9SM0ZWRVhUUFJPQykgKGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzSUVYVFBST0MpIChHTGludCByZWQsIEdMaW50IGdy
ZWVuLCBHTGludCBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0lW
RVhUUFJPQykgKGNvbnN0IEdMaW50ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFS
WUNPTE9SM1NFWFRQUk9DKSAoR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1
ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNTVkVYVFBST0MpIChjb25z
dCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM1VCRVhU
UFJPQykgKEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVUJWRVhUUFJPQykgKGNvbnN0IEdMdWJ5dGUg
KnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVUlFWFRQUk9DKSAoR0x1
aW50IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xTRUNPTkRBUllDT0xPUjNVSVZFWFRQUk9DKSAoY29uc3QgR0x1aW50ICp2KTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM1VTRVhUUFJPQykgKEdMdXNob3J0IHJlZCwgR0x1
c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJsdWUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05E
QVJZQ09MT1IzVVNWRVhUUFJPQykgKGNvbnN0IEdMdXNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTFNFQ09OREFSWUNPTE9SUE9JTlRFUkVYVFBST0MpIChHTGludCBzaXplLCBHTGVudW0g
dHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMdm9pZCAqcG9pbnRlcik7CgoKCgoKCgp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMVEVYVFVSRU5PUk1BTEVYVFBST0MpIChHTGVudW0gbW9kZSk7CiMgMjUyOSAi
L3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1V
TFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVudW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVp
ICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElE
UkFXRUxFTUVOVFNFWFRQUk9DKSAoR0xlbnVtIG1vZGUsIGNvbnN0IEdMc2l6ZWkgKmNvdW50LCBH
TGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqaW5kaWNlcywgR0xzaXplaSBwcmltY291bnQpOwoj
IDI1NDIgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICog
UEZOR0xGT0dDT09SREZFWFRQUk9DKSAoR0xmbG9hdCBjb29yZCk7CnR5cGVkZWYgdm9pZCAoICog
UEZOR0xGT0dDT09SREZWRVhUUFJPQykgKGNvbnN0IEdMZmxvYXQgKmNvb3JkKTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTEZPR0NPT1JEREVYVFBST0MpIChHTGRvdWJsZSBjb29yZCk7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xGT0dDT09SRERWRVhUUFJPQykgKGNvbnN0IEdMZG91YmxlICpjb29yZCk7
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGT0dDT09SRFBPSU5URVJFWFRQUk9DKSAoR0xlbnVtIHR5
cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwojIDI1NzkgIi91c3Iv
bG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5U
M0JFWFRQUk9DKSAoR0xieXRlIHR4LCBHTGJ5dGUgdHksIEdMYnl0ZSB0eik7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xUQU5HRU5UM0JWRVhUUFJPQykgKGNvbnN0IEdMYnl0ZSAqdik7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xUQU5HRU5UM0RFWFRQUk9DKSAoR0xkb3VibGUgdHgsIEdMZG91YmxlIHR5
LCBHTGRvdWJsZSB0eik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UM0RWRVhUUFJPQykg
KGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBTkdFTlQzRkVYVFBS
T0MpIChHTGZsb2F0IHR4LCBHTGZsb2F0IHR5LCBHTGZsb2F0IHR6KTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTFRBTkdFTlQzRlZFWFRQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xUQU5HRU5UM0lFWFRQUk9DKSAoR0xpbnQgdHgsIEdMaW50IHR5LCBHTGludCB0
eik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UM0lWRVhUUFJPQykgKGNvbnN0IEdMaW50
ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBTkdFTlQzU0VYVFBST0MpIChHTHNob3J0IHR4
LCBHTHNob3J0IHR5LCBHTHNob3J0IHR6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBTkdFTlQz
U1ZFWFRQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5P
Uk1BTDNCRVhUUFJPQykgKEdMYnl0ZSBieCwgR0xieXRlIGJ5LCBHTGJ5dGUgYnopOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzQlZFWFRQUk9DKSAoY29uc3QgR0xieXRlICp2KTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTEJJTk9STUFMM0RFWFRQUk9DKSAoR0xkb3VibGUgYngsIEdMZG91
YmxlIGJ5LCBHTGRvdWJsZSBieik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5PUk1BTDNEVkVY
VFBST0MpIChjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5PUk1B
TDNGRVhUUFJPQykgKEdMZmxvYXQgYngsIEdMZmxvYXQgYnksIEdMZmxvYXQgYnopOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzRlZFWFRQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xCSU5PUk1BTDNJRVhUUFJPQykgKEdMaW50IGJ4LCBHTGludCBi
eSwgR0xpbnQgYnopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzSVZFWFRQUk9DKSAo
Y29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzU0VYVFBST0Mp
IChHTHNob3J0IGJ4LCBHTHNob3J0IGJ5LCBHTHNob3J0IGJ6KTsKdHlwZWRlZiB2b2lkICggKiBQ
Rk5HTEJJTk9STUFMM1NWRVhUUFJPQykgKGNvbnN0IEdMc2hvcnQgKnYpOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMVEFOR0VOVFBPSU5URVJFWFRQUk9DKSAoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3Ry
aWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JN
QUxQT0lOVEVSRVhUUFJPQykgKEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2
b2lkICpwb2ludGVyKTsKIyAyNjI0ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMRklOSVNIVEVYVFVSRVNVTlhQUk9DKSAodm9pZCk7CiMgMjYz
OSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5H
TEdMT0JBTEFMUEhBRkFDVE9SQlNVTlBST0MpIChHTGJ5dGUgZmFjdG9yKTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTEdMT0JBTEFMUEhBRkFDVE9SU1NVTlBST0MpIChHTHNob3J0IGZhY3Rvcik7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUklTVU5QUk9DKSAoR0xpbnQgZmFj
dG9yKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdMT0JBTEFMUEhBRkFDVE9SRlNVTlBST0MpIChH
TGZsb2F0IGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUkRT
VU5QUk9DKSAoR0xkb3VibGUgZmFjdG9yKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdMT0JBTEFM
UEhBRkFDVE9SVUJTVU5QUk9DKSAoR0x1Ynl0ZSBmYWN0b3IpOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMR0xPQkFMQUxQSEFGQUNUT1JVU1NVTlBST0MpIChHTHVzaG9ydCBmYWN0b3IpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JVSVNVTlBST0MpIChHTHVpbnQgZmFjdG9y
KTsKIyAyNjYwICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlTVU5QUk9DKSAoR0x1aW50IGNvZGUpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVVNTVU5QUk9DKSAoR0x1c2hvcnQgY29kZSk7
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVQlNVTlBST0MpIChHTHVieXRl
IGNvZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlWU1VOUFJPQykg
KGNvbnN0IEdMdWludCAqY29kZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENP
REVVU1ZTVU5QUk9DKSAoY29uc3QgR0x1c2hvcnQgKmNvZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMUkVQTEFDRU1FTlRDT0RFVUJWU1VOUFJPQykgKGNvbnN0IEdMdWJ5dGUgKmNvZGUpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFUE9JTlRFUlNVTlBST0MpIChHTGVudW0g
dHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIpOwojIDI3MTMgIi91
c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xP
UjRVQlZFUlRFWDJGU1VOUFJPQykgKEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdM
dWJ5dGUgYSwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09M
T1I0VUJWRVJURVgyRlZTVU5QUk9DKSAoY29uc3QgR0x1Ynl0ZSAqYywgY29uc3QgR0xmbG9hdCAq
dik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUjRVQlZFUlRFWDNGU1VOUFJPQykgKEdMdWJ5
dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdMdWJ5dGUgYSwgR0xmbG9hdCB4LCBHTGZsb2F0
IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUjRVQlZFUlRFWDNGVlNV
TlBST0MpIChjb25zdCBHTHVieXRlICpjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTENPTE9SM0ZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHIsIEdMZmxvYXQgZywg
R0xmbG9hdCBiLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTENPTE9SM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqYywgY29u
c3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xOT1JNQUwzRlZFUlRFWDNGU1VO
UFJPQykgKEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xm
bG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTk9STUFMM0ZWRVJURVgz
RlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xDT0xPUjRGTk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHIs
IEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IGEsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnks
IEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZv
aWQgKCAqIFBGTkdMQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxv
YXQgKmMsIGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQg
KCAqIFBGTkdMVEVYQ09PUkQyRlZFUlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgcywgR0xmbG9hdCB0
LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFRFWENPT1JEMkZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdM
ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQ0RlZFUlRFWDRGU1VOUFJP
QykgKEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHAsIEdMZmxvYXQgcSwgR0xmbG9hdCB4
LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFRFWENPT1JENEZWRVJURVg0RlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdM
ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRkNPTE9SNFVCVkVSVEVY
M0ZTVU5QUk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBH
THVieXRlIGIsIEdMdWJ5dGUgYSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDJGQ09MT1I0VUJWRVJURVgzRlZTVU5QUk9DKSAo
Y29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMdWJ5dGUgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0
eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRkNPTE9SM0ZWRVJURVgzRlNVTlBST0MpIChH
TGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xm
bG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhD
T09SRDJGQ09MT1IzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGZsb2F0ICp0YywgY29uc3Qg
R0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhD
T09SRDJGTk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xm
bG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM
ZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDJGTk9STUFMM0ZWRVJURVgz
RlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdM
ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRkNPTE9SNEZOT1JNQUwz
RlZFUlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxv
YXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IGEsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxv
YXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMVEVYQ09PUkQyRkNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBH
TGZsb2F0ICp0YywgY29uc3QgR0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqbiwgY29uc3QgR0xm
bG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDRGQ09MT1I0Rk5PUk1BTDNG
VkVSVEVYNEZTVU5QUk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgcCwgR0xmbG9h
dCBxLCBHTGZsb2F0IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IGEsIEdMZmxvYXQg
bngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0
IHosIEdMZmxvYXQgdyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRDRGQ09MT1I0Rk5P
Uk1BTDNGVkVSVEVYNEZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0
ICpjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVkVSVEVYM0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZs
b2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExB
Q0VNRU5UQ09ERVVJVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZW51bSAqcmMsIGNvbnN0IEdM
ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlDT0xPUjRV
QlZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0x1Ynl0ZSByLCBHTHVieXRlIGcsIEdMdWJ5
dGUgYiwgR0x1Ynl0ZSBhLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJQ09MT1I0VUJWRVJURVgzRlZTVU5QUk9D
KSAoY29uc3QgR0xlbnVtICpyYywgY29uc3QgR0x1Ynl0ZSAqYywgY29uc3QgR0xmbG9hdCAqdik7
CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSUNPTE9SM0ZWRVJURVgzRlNV
TlBST0MpIChHTGVudW0gcmMsIEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0IGIsIEdMZmxv
YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFD
RU1FTlRDT0RFVUlDT0xPUjNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZW51bSAqcmMsIGNv
bnN0IEdMZmxvYXQgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
UkVQTEFDRU1FTlRDT0RFVUlOT1JNQUwzRlZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0xm
bG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM
ZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSU5PUk1BTDNG
VkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZW51bSAqcmMsIGNvbnN0IEdMZmxvYXQgKm4sIGNv
bnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlD
T0xPUjRGTk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGVudW0gcmMsIEdMZmxvYXQgciwgR0xm
bG9hdCBnLCBHTGZsb2F0IGIsIEdMZmxvYXQgYSwgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xm
bG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xSRVBMQUNFTUVOVENPREVVSUNPTE9SNEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0Mp
IChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICpuLCBj
b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJ
VEVYQ09PUkQyRlZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0xmbG9hdCBzLCBHTGZsb2F0
IHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBG
TkdMUkVQTEFDRU1FTlRDT0RFVUlURVhDT09SRDJGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdM
ZW51bSAqcmMsIGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2
b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVYQ09PUkQyRk5PUk1BTDNGVkVSVEVYM0ZT
VU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCBueCwgR0xm
bG9hdCBueSwgR0xmbG9hdCBueiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSVRFWENPT1JEMkZOT1JNQUwzRlZF
UlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICp0YywgY29u
c3QgR0xmbG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xS
RVBMQUNFTUVOVENPREVVSVRFWENPT1JEMkZDT0xPUjRGTk9STUFMM0ZWRVJURVgzRlNVTlBST0Mp
IChHTGVudW0gcmMsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxvYXQgZywg
R0xmbG9hdCBiLCBHTGZsb2F0IGEsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnos
IEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
UkVQTEFDRU1FTlRDT0RFVUlURVhDT09SRDJGQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZWU1VOUFJP
QykgKGNvbnN0IEdMZW51bSAqcmMsIGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICpj
LCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKCgoKCgoKCnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xCTEVOREZVTkNTRVBBUkFURUVYVFBST0MpIChHTGVudW0gc2ZhY3RvclJHQiwg
R0xlbnVtIGRmYWN0b3JSR0IsIEdMZW51bSBzZmFjdG9yQWxwaGEsIEdMZW51bSBkZmFjdG9yQWxw
aGEpOwojIDI4MDYgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVkZWYgdm9p
ZCAoICogUEZOR0xWRVJURVhXRUlHSFRGRVhUUFJPQykgKEdMZmxvYXQgd2VpZ2h0KTsKdHlwZWRl
ZiB2b2lkICggKiBQRk5HTFZFUlRFWFdFSUdIVEZWRVhUUFJPQykgKGNvbnN0IEdMZmxvYXQgKndl
aWdodCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhXRUlHSFRQT0lOVEVSRVhUUFJPQykg
KEdMc2l6ZWkgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQg
KnBvaW50ZXIpOwojIDI4MjEgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5oIiAzCnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xGTFVTSFZFUlRFWEFSUkFZUkFOR0VOVlBST0MpICh2b2lkKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWEFSUkFZUkFOR0VOVlBST0MpIChHTHNpemVpIHNpemUs
IGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CiMgMjg0MiAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2ds
ZXh0LmgiIDMKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTUJJTkVSUEFSQU1FVEVSRlZOVlBST0Mp
IChHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICog
UEZOR0xDT01CSU5FUlBBUkFNRVRFUkZOVlBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NQklORVJQQVJBTUVURVJJVk5WUFJPQykgKEdM
ZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xD
T01CSU5FUlBBUkFNRVRFUklOVlBST0MpIChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlw
ZWRlZiB2b2lkICggKiBQRk5HTENPTUJJTkVSSU5QVVROVlBST0MpIChHTGVudW0gc3RhZ2UsIEdM
ZW51bSBwb3J0aW9uLCBHTGVudW0gdmFyaWFibGUsIEdMZW51bSBpbnB1dCwgR0xlbnVtIG1hcHBp
bmcsIEdMZW51bSBjb21wb25lbnRVc2FnZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01CSU5F
Uk9VVFBVVE5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSBhYk91
dHB1dCwgR0xlbnVtIGNkT3V0cHV0LCBHTGVudW0gc3VtT3V0cHV0LCBHTGVudW0gc2NhbGUsIEdM
ZW51bSBiaWFzLCBHTGJvb2xlYW4gYWJEb3RQcm9kdWN0LCBHTGJvb2xlYW4gY2REb3RQcm9kdWN0
LCBHTGJvb2xlYW4gbXV4U3VtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZJTkFMQ09NQklORVJJ
TlBVVE5WUFJPQykgKEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIGlucHV0LCBHTGVudW0gbWFwcGlu
ZywgR0xlbnVtIGNvbXBvbmVudFVzYWdlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTUJJ
TkVSSU5QVVRQQVJBTUVURVJGVk5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24s
IEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVm
IHZvaWQgKCAqIFBGTkdMR0VUQ09NQklORVJJTlBVVFBBUkFNRVRFUklWTlZQUk9DKSAoR0xlbnVt
IHN0YWdlLCBHTGVudW0gcG9ydGlvbiwgR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gcG5hbWUsIEdM
aW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09NQklORVJPVVRQVVRQQVJB
TUVURVJGVk5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTUJJTkVST1VU
UFVUUEFSQU1FVEVSSVZOVlBST0MpIChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9uLCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VURklOQUxD
T01CSU5FUklOUFVUUEFSQU1FVEVSRlZOVlBST0MpIChHTGVudW0gdmFyaWFibGUsIEdMZW51bSBw
bmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEZJTkFMQ09N
QklORVJJTlBVVFBBUkFNRVRFUklWTlZQUk9DKSAoR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpOwojIDI4NzggIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4dC5o
IiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVNJWkVCVUZGRVJTTUVTQVBST0MpICh2b2lkKTsK
IyAyOTA5ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMV0lORE9XUE9TMkRNRVNBUFJPQykgKEdMZG91YmxlIHgsIEdMZG91YmxlIHkpOwp0eXBl
ZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TMkRWTUVTQVBST0MpIChjb25zdCBHTGRvdWJsZSAq
dik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MyRk1FU0FQUk9DKSAoR0xmbG9hdCB4
LCBHTGZsb2F0IHkpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TMkZWTUVTQVBST0Mp
IChjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzJJTUVT
QVBST0MpIChHTGludCB4LCBHTGludCB5KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BP
UzJJVk1FU0FQUk9DKSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lO
RE9XUE9TMlNNRVNBUFJPQykgKEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKdHlwZWRlZiB2b2lkICgg
KiBQRk5HTFdJTkRPV1BPUzJTVk1FU0FQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYg
dm9pZCAoICogUEZOR0xXSU5ET1dQT1MzRE1FU0FQUk9DKSAoR0xkb3VibGUgeCwgR0xkb3VibGUg
eSwgR0xkb3VibGUgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzRFZNRVNBUFJP
QykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzNG
TUVTQVBST0MpIChHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lk
ICggKiBQRk5HTFdJTkRPV1BPUzNGVk1FU0FQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5cGVk
ZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzSU1FU0FQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwg
R0xpbnQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzSVZNRVNBUFJPQykgKGNv
bnN0IEdMaW50ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzNTTUVTQVBST0Mp
IChHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFdJTkRPV1BPUzNTVk1FU0FQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAo
ICogUEZOR0xXSU5ET1dQT1M0RE1FU0FQUk9DKSAoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xk
b3VibGUgeiwgR0xkb3VibGUgdyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1M0RFZN
RVNBUFJPQykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRP
V1BPUzRGTUVTQVBST0MpIChHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0
IHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TNEZWTUVTQVBST0MpIChjb25zdCBH
TGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzRJTUVTQVBST0MpIChH
TGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H
TFdJTkRPV1BPUzRJVk1FU0FQUk9DKSAoY29uc3QgR0xpbnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAq
IFBGTkdMV0lORE9XUE9TNFNNRVNBUFJPQykgKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0
IHosIEdMc2hvcnQgdyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1M0U1ZNRVNBUFJP
QykgKGNvbnN0IEdMc2hvcnQgKnYpOwojIDI5NDUgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbGV4
dC5oIiAzCnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSU1PREVEUkFXQVJSQVlTSUJNUFJPQykg
KEdMZW51bSBtb2RlLCBjb25zdCBHTGludCAqZmlyc3QsIGNvbnN0IEdMc2l6ZWkgKmNvdW50LCBH
THNpemVpIHByaW1jb3VudCwgR0xpbnQgbW9kZXN0cmlkZSk7CnR5cGVkZWYgdm9pZCAoICogUEZO
R0xNVUxUSU1PREVEUkFXRUxFTUVOVFNJQk1QUk9DKSAoY29uc3QgR0xlbnVtICptb2RlLCBjb25z
dCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmluZGljZXMsIEdM
c2l6ZWkgcHJpbWNvdW50LCBHTGludCBtb2Rlc3RyaWRlKTsKIyAyOTYxICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JQT0lOVEVSTElT
VElCTVBST0MpIChHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xpbnQgc3RyaWRlLCBjb25zdCBH
THZvaWQqICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM
U0VDT05EQVJZQ09MT1JQT0lOVEVSTElTVElCTVBST0MpIChHTGludCBzaXplLCBHTGVudW0gdHlw
ZSwgR0xpbnQgc3RyaWRlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUp
Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRURHRUZMQUdQT0lOVEVSTElTVElCTVBST0MpIChHTGlu
dCBzdHJpZGUsIGNvbnN0IEdMYm9vbGVhbiogKnBvaW50ZXIsIEdMaW50IHB0cnN0cmlkZSk7CnR5
cGVkZWYgdm9pZCAoICogUEZOR0xGT0dDT09SRFBPSU5URVJMSVNUSUJNUFJPQykgKEdMZW51bSB0
eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50IHB0cnN0cmlk
ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xJTkRFWFBPSU5URVJMSVNUSUJNUFJPQykgKEdMZW51
bSB0eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50IHB0cnN0
cmlkZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xOT1JNQUxQT0lOVEVSTElTVElCTVBST0MpIChH
TGVudW0gdHlwZSwgR0xpbnQgc3RyaWRlLCBjb25zdCBHTHZvaWQqICpwb2ludGVyLCBHTGludCBw
dHJzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkRQT0lOVEVSTElTVElCTVBS
T0MpIChHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xpbnQgc3RyaWRlLCBjb25zdCBHTHZvaWQq
ICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVY
UE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMaW50IHN0cmlk
ZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKIyAzMDAwICIvdXNy
L2xvY2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEJVRkZF
Uk1BU0szREZYUFJPQykgKEdMdWludCBtYXNrKTsKIyAzMDA5ICIvdXNyL2xvY2FsL2luY2x1ZGUv
R0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0FNUExFTUFTS0VYVFBST0MpIChH
TGNsYW1wZiB2YWx1ZSwgR0xib29sZWFuIGludmVydCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xT
QU1QTEVQQVRURVJORVhUUFJPQykgKEdMZW51bSBwYXR0ZXJuKTsKIyAzMDM0ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvR0wvZ2xleHQuaCIgMwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYVFVSRUNPTE9S
TUFTS1NHSVNQUk9DKSAoR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4g
Ymx1ZSwgR0xib29sZWFuIGFscGhhKTsKCgoKCgoKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xJR0xP
T0lOVEVSRkFDRVNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTHZvaWQgKnBhcmFtcyk7
CiMgMzA1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsZXh0LmgiIDMKfQojIDIyNDcgIi91c3Iv
bG9jYWwvaW5jbHVkZS9HTC9nbC5oIiAyIDMKIyAyMjY4ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wv
Z2wuaCIgMwp9CiMgMTAzICJ0dXhyYWNlci5oIiAyCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL0dM
L2dsdS5oIiAxIDMKIyAzNCAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsdS5oIiAzCmV4dGVybiAi
QyIgewoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbC5oIiAxIDMKIyAzOSAiL3Vzci9s
b2NhbC9pbmNsdWRlL0dML2dsdS5oIiAyIDMKIyAyNDkgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9n
bHUuaCIgMwogICAgdHlwZWRlZiBzdHJ1Y3QgR0xVcXVhZHJpYyBHTFVxdWFkcmljT2JqOwogICAg
dHlwZWRlZiBzdHJ1Y3QgR0xVdHJpYW5ndWxhdG9yT2JqIEdMVXRyaWFuZ3VsYXRvck9iajsKICAg
IHR5cGVkZWYgc3RydWN0IEdMVW51cmJzIEdMVW51cmJzT2JqOwojIDI2OSAiL3Vzci9sb2NhbC9p
bmNsdWRlL0dML2dsdS5oIiAzCmV4dGVybiB2b2lkIGdsdUxvb2tBdCggR0xkb3VibGUgZXlleCwg
R0xkb3VibGUgZXlleSwgR0xkb3VibGUgZXlleiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZG91YmxlIGNlbnRlcngsIEdMZG91YmxlIGNlbnRlcnksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBjZW50ZXJ6LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xkb3VibGUgdXB4LCBHTGRvdWJsZSB1cHksIEdMZG91YmxlIHVweiAp
OwoKCmV4dGVybiB2b2lkIGdsdU9ydGhvMkQoIEdMZG91YmxlIGxlZnQsIEdMZG91YmxlIHJpZ2h0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xk
b3VibGUgdG9wICk7CgoKZXh0ZXJuIHZvaWQgZ2x1UGVyc3BlY3RpdmUoIEdMZG91YmxlIGZvdnks
IEdMZG91YmxlIGFzcGVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xkb3VibGUgek5lYXIsIEdMZG91YmxlIHpGYXIgKTsKCgpleHRlcm4gdm9pZCBnbHVQaWNrTWF0
cml4KCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZG91YmxlIHdpZHRoLCBHTGRvdWJsZSBoZWlnaHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgdmlld3BvcnRbNF0gKTsKCmV4dGVy
biBHTGludCBnbHVQcm9qZWN0KCBHTGRvdWJsZSBvYmp4LCBHTGRvdWJsZSBvYmp5LCBHTGRvdWJs
ZSBvYmp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJs
ZSBtb2RlbE1hdHJpeFsxNl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZG91YmxlIHByb2pNYXRyaXhbMTZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCB2aWV3cG9ydFs0XSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xkb3VibGUgKndpbngsIEdMZG91YmxlICp3aW55LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSAqd2lueiApOwoKZXh0ZXJuIEdMaW50IGds
dVVuUHJvamVjdCggR0xkb3VibGUgd2lueCwgR0xkb3VibGUgd2lueSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB3aW56LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlIG1vZGVsTWF0cml4WzE2XSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSBwcm9qTWF0cml4
WzE2XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCB2
aWV3cG9ydFs0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJs
ZSAqb2JqeCwgR0xkb3VibGUgKm9ianksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xkb3VibGUgKm9ianogKTsKCmV4dGVybiBjb25zdCBHTHVieXRlKiBnbHVFcnJvclN0
cmluZyggR0xlbnVtIGVycm9yQ29kZSApOwojIDMxMiAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2ds
dS5oIiAzCmV4dGVybiBHTGludCBnbHVTY2FsZUltYWdlKCBHTGVudW0gZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoaW4sIEdMc2l6ZWkg
aGVpZ2h0aW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlaW4sIGNvbnN0IHZvaWQgKmRhdGFpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSB3aWR0aG91dCwgR0xzaXplaSBoZWlnaHRvdXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlb3V0LCB2b2lkICpkYXRhb3V0
ICk7CgpleHRlcm4gR0xpbnQgZ2x1QnVpbGQxRE1pcG1hcHMoIEdMZW51bSB0YXJnZXQsIEdMaW50
IGNvbXBvbmVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmRhdGEgKTsKCmV4dGVybiBH
TGludCBnbHVCdWlsZDJETWlwbWFwcyggR0xlbnVtIHRhcmdldCwgR0xpbnQgY29tcG9uZW50cywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpkYXRhICk7CiMgMzM1ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvR0wvZ2x1LmgiIDMKZXh0ZXJuIEdMVXF1YWRyaWNPYmoqIGdsdU5ld1F1YWRyaWMoIHZv
aWQgKTsKCmV4dGVybiB2b2lkIGdsdURlbGV0ZVF1YWRyaWMoIEdMVXF1YWRyaWNPYmogKnN0YXRl
ICk7CgpleHRlcm4gdm9pZCBnbHVRdWFkcmljRHJhd1N0eWxlKCBHTFVxdWFkcmljT2JqICpxdWFk
T2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBkcmF3U3R5bGUgKTsKCmV4dGVybiB2b2lkIGdsdVF1YWRyaWNPcmllbnRhdGlvbiggR0xVcXVh
ZHJpY09iaiAqcXVhZE9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBvcmllbnRhdGlvbiApOwoKZXh0ZXJuIHZvaWQgZ2x1UXVhZHJpY05v
cm1hbHMoIEdMVXF1YWRyaWNPYmogKnF1YWRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBub3JtYWxzICk7CgpleHRlcm4gdm9pZCBnbHVRdWFk
cmljVGV4dHVyZSggR0xVcXVhZHJpY09iaiAqcXVhZE9iamVjdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRleHR1cmVDb29yZHMgKTsKCmV4dGVy
biB2b2lkIGdsdVF1YWRyaWNDYWxsYmFjayggR0xVcXVhZHJpY09iaiAqcW9iaiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB3aGljaCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCAqZm4pKCkgKTsKCmV4dGVy
biB2b2lkIGdsdUN5bGluZGVyKCBHTFVxdWFkcmljT2JqICpxb2JqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBiYXNlUmFkaXVzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB0b3BSYWRpdXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgc2xpY2VzLCBHTGludCBzdGFja3MgKTsKCmV4dGVybiB2b2lk
IGdsdVNwaGVyZSggR0xVcXVhZHJpY09iaiAqcW9iaiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZG91YmxlIHJhZGl1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHNsaWNlcywgR0xpbnQgc3RhY2tzICk7CgpleHRlcm4gdm9pZCBnbHVEaXNrKCBH
TFVxdWFkcmljT2JqICpxb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91
YmxlIGlubmVyUmFkaXVzLCBHTGRvdWJsZSBvdXRlclJhZGl1cywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBzbGljZXMsIEdMaW50IGxvb3BzICk7CgpleHRlcm4gdm9pZCBn
bHVQYXJ0aWFsRGlzayggR0xVcXVhZHJpY09iaiAqcW9iaiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xkb3VibGUgaW5uZXJSYWRpdXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIG91dGVyUmFkaXVzLCBHTGludCBzbGljZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvb3BzLCBHTGRv
dWJsZSBzdGFydEFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGRvdWJsZSBzd2VlcEFuZ2xlICk7CiMgMzgzICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2x1Lmgi
IDMKZXh0ZXJuIEdMVW51cmJzT2JqKiBnbHVOZXdOdXJic1JlbmRlcmVyKCB2b2lkICk7CgpleHRl
cm4gdm9pZCBnbHVEZWxldGVOdXJic1JlbmRlcmVyKCBHTFVudXJic09iaiAqbm9iaiApOwoKZXh0
ZXJuIHZvaWQgZ2x1TG9hZFNhbXBsaW5nTWF0cmljZXMoIEdMVW51cmJzT2JqICpub2JqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
IG1vZGVsTWF0cml4WzE2XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCBwcm9qTWF0cml4WzE2XSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgdmlld3BvcnRbNF0gKTsK
CmV4dGVybiB2b2lkIGdsdU51cmJzUHJvcGVydHkoIEdMVW51cmJzT2JqICpub2JqLCBHTGVudW0g
cHJvcGVydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCB2YWx1ZSApOwoKZXh0ZXJuIHZvaWQgZ2x1R2V0TnVyYnNQcm9wZXJ0eSggR0xVbnVyYnNPYmog
Km5vYmosIEdMZW51bSBwcm9wZXJ0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0ICp2YWx1ZSApOwoKZXh0ZXJuIHZvaWQgZ2x1QmVnaW5DdXJ2ZSgg
R0xVbnVyYnNPYmogKm5vYmogKTsKCmV4dGVybiB2b2lkIGdsdUVuZEN1cnZlKCBHTFVudXJic09i
aiAqIG5vYmogKTsKCmV4dGVybiB2b2lkIGdsdU51cmJzQ3VydmUoIEdMVW51cmJzT2JqICpub2Jq
LCBHTGludCBua25vdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCAqa25vdCwgR0xpbnQgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgKmN0bGFycmF5LCBHTGludCBvcmRlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSApOwoKZXh0ZXJuIHZvaWQgZ2x1QmVnaW5T
dXJmYWNlKCBHTFVudXJic09iaiAqbm9iaiApOwoKZXh0ZXJuIHZvaWQgZ2x1RW5kU3VyZmFjZSgg
R0xVbnVyYnNPYmogKiBub2JqICk7CgpleHRlcm4gdm9pZCBnbHVOdXJic1N1cmZhY2UoIEdMVW51
cmJzT2JqICpub2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc2tub3RfY291bnQsIEdMZmxvYXQgKnNrbm90LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgdGtub3RfY291bnQsIEdMZmxvYXQgKnRrbm90LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc19zdHJpZGUsIEdMaW50IHRf
c3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAq
Y3RsYXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBz
b3JkZXIsIEdMaW50IHRvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlICk7CgpleHRlcm4gdm9pZCBnbHVCZWdpblRyaW0oIEdMVW51cmJzT2Jq
ICpub2JqICk7CgpleHRlcm4gdm9pZCBnbHVFbmRUcmltKCBHTFVudXJic09iaiAqbm9iaiApOwoK
ZXh0ZXJuIHZvaWQgZ2x1UHdsQ3VydmUoIEdMVW51cmJzT2JqICpub2JqLCBHTGludCBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqYXJyYXksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0cmlkZSwgR0xlbnVtIHR5cGUg
KTsKCmV4dGVybiB2b2lkIGdsdU51cmJzQ2FsbGJhY2soIEdMVW51cmJzT2JqICpub2JqLCBHTGVu
dW0gd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAo
ICpmbikoKSApOwojIDQ3MCAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsdS5oIiAzCmV4dGVybiBH
TFV0cmlhbmd1bGF0b3JPYmoqIGdsdU5ld1Rlc3MoIHZvaWQgKTsKCmV4dGVybiB2b2lkIGdsdVRl
c3NDYWxsYmFjayggR0xVdHJpYW5ndWxhdG9yT2JqICp0b2JqLCBHTGVudW0gd2hpY2gsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICggKmZuKSgpICk7CgpleHRl
cm4gdm9pZCBnbHVEZWxldGVUZXNzKCBHTFV0cmlhbmd1bGF0b3JPYmogKnRvYmogKTsKCmV4dGVy
biB2b2lkIGdsdUJlZ2luUG9seWdvbiggR0xVdHJpYW5ndWxhdG9yT2JqICp0b2JqICk7CgpleHRl
cm4gdm9pZCBnbHVFbmRQb2x5Z29uKCBHTFV0cmlhbmd1bGF0b3JPYmogKnRvYmogKTsKCmV4dGVy
biB2b2lkIGdsdU5leHRDb250b3VyKCBHTFV0cmlhbmd1bGF0b3JPYmogKnRvYmosIEdMZW51bSB0
eXBlICk7CgpleHRlcm4gdm9pZCBnbHVUZXNzVmVydGV4KCBHTFV0cmlhbmd1bGF0b3JPYmogKnRv
YmosIEdMZG91YmxlIHZbM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqZGF0YSApOwojIDQ5NyAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dsdS5oIiAzCmV4dGVy
biBjb25zdCBHTHVieXRlKiBnbHVHZXRTdHJpbmcoIEdMZW51bSBuYW1lICk7CiMgNTMwICIvdXNy
L2xvY2FsL2luY2x1ZGUvR0wvZ2x1LmgiIDMKfQojIDEwNCAidHV4cmFjZXIuaCIgMgoKCiMgMSAi
L3Vzci9sb2NhbC9pbmNsdWRlL0dML2dseC5oIiAxIDMKIyAzOSAiL3Vzci9sb2NhbC9pbmNsdWRl
L0dML2dseC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL1gxMS9YbGliLmgiIDEgMwojIDQ3ICIvdXNy
L2luY2x1ZGUvWDExL1hsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAz
CiMgNDggIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUv
WDExL1guaCIgMSAzCiMgNjcgIi91c3IvaW5jbHVkZS9YMTEvWC5oIiAzCnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBYSUQ7CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBNYXNrOwoKCgp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgQXRvbTsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBWaXN1YWxJRDsKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIFRpbWU7CiMgOTcgIi91c3IvaW5jbHVkZS9YMTEvWC5oIiAzCnR5cGVk
ZWYgWElEIFdpbmRvdzsKdHlwZWRlZiBYSUQgRHJhd2FibGU7CgoKdHlwZWRlZiBYSUQgRm9udDsK
CnR5cGVkZWYgWElEIFBpeG1hcDsKdHlwZWRlZiBYSUQgQ3Vyc29yOwp0eXBlZGVmIFhJRCBDb2xv
cm1hcDsKdHlwZWRlZiBYSUQgR0NvbnRleHQ7CnR5cGVkZWYgWElEIEtleVN5bTsKCnR5cGVkZWYg
dW5zaWduZWQgY2hhciBLZXlDb2RlOwojIDUyICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMiAz
CgoKIyAxICIvdXNyL2luY2x1ZGUvWDExL1hmdW5jcHJvdG8uaCIgMSAzCiMgNTUgIi91c3IvaW5j
bHVkZS9YMTEvWGxpYi5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvWDExL1hvc2RlZnMuaCIgMSAz
CiMgNTYgIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAyIDMKIyA2OCAiL3Vzci9pbmNsdWRlL1gx
MS9YbGliLmgiIDMKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDcgIi91c3IvbG9jYWwvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBpbnQgcHRy
ZGlmZl90OwojIDY5ICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMiAzCiMgOTAgIi91c3IvaW5j
bHVkZS9YMTEvWGxpYi5oIiAzCnR5cGVkZWYgY2hhciAqWFBvaW50ZXI7CiMgMTYyICIvdXNyL2lu
Y2x1ZGUvWDExL1hsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdCBfWEV4dERhdGEgewogICAgICAgIGlu
dCBudW1iZXI7CiAgICAgICAgc3RydWN0IF9YRXh0RGF0YSAqbmV4dDsKICAgICAgICBpbnQgKCpm
cmVlX3ByaXZhdGUpKAoKICAgICAgICBzdHJ1Y3QgX1hFeHREYXRhICpleHRlbnNpb24KCiAgICAg
ICAgKTsKICAgICAgICBYUG9pbnRlciBwcml2YXRlX2RhdGE7Cn0gWEV4dERhdGE7CgoKCgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGV4dGVuc2lvbjsKICAgICAgICBpbnQgbWFqb3Jfb3Bj
b2RlOwogICAgICAgIGludCBmaXJzdF9ldmVudDsKICAgICAgICBpbnQgZmlyc3RfZXJyb3I7Cn0g
WEV4dENvZGVzOwoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBkZXB0aDsKICAgIGludCBi
aXRzX3Blcl9waXhlbDsKICAgIGludCBzY2FubGluZV9wYWQ7Cn0gWFBpeG1hcEZvcm1hdFZhbHVl
czsKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGZ1bmN0aW9uOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgcGxhbmVfbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIGZvcmVncm91bmQ7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBiYWNrZ3JvdW5kOwogICAgICAgIGludCBsaW5lX3dpZHRo
OwogICAgICAgIGludCBsaW5lX3N0eWxlOwogICAgICAgIGludCBjYXBfc3R5bGU7CgogICAgICAg
IGludCBqb2luX3N0eWxlOwogICAgICAgIGludCBmaWxsX3N0eWxlOwoKICAgICAgICBpbnQgZmls
bF9ydWxlOwogICAgICAgIGludCBhcmNfbW9kZTsKICAgICAgICBQaXhtYXAgdGlsZTsKICAgICAg
ICBQaXhtYXAgc3RpcHBsZTsKICAgICAgICBpbnQgdHNfeF9vcmlnaW47CiAgICAgICAgaW50IHRz
X3lfb3JpZ2luOwogICAgICAgIEZvbnQgZm9udDsKICAgICAgICBpbnQgc3Vid2luZG93X21vZGU7
CiAgICAgICAgaW50IGdyYXBoaWNzX2V4cG9zdXJlczsKICAgICAgICBpbnQgY2xpcF94X29yaWdp
bjsKICAgICAgICBpbnQgY2xpcF95X29yaWdpbjsKICAgICAgICBQaXhtYXAgY2xpcF9tYXNrOwog
ICAgICAgIGludCBkYXNoX29mZnNldDsKICAgICAgICBjaGFyIGRhc2hlczsKfSBYR0NWYWx1ZXM7
CgoKCgoKCnR5cGVkZWYgc3RydWN0IF9YR0MKCgoKCgoKCipHQzsKCgoKCnR5cGVkZWYgc3RydWN0
IHsKICAgICAgICBYRXh0RGF0YSAqZXh0X2RhdGE7CiAgICAgICAgVmlzdWFsSUQgdmlzdWFsaWQ7
CgogICAgICAgIGludCBjX2NsYXNzOwoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVkX21hc2ss
IGdyZWVuX21hc2ssIGJsdWVfbWFzazsKICAgICAgICBpbnQgYml0c19wZXJfcmdiOwogICAgICAg
IGludCBtYXBfZW50cmllczsKfSBWaXN1YWw7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAg
aW50IGRlcHRoOwogICAgICAgIGludCBudmlzdWFsczsKICAgICAgICBWaXN1YWwgKnZpc3VhbHM7
Cn0gRGVwdGg7CgoKCgoKCgpzdHJ1Y3QgX1hEaXNwbGF5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAg
ICAgIFhFeHREYXRhICpleHRfZGF0YTsKICAgICAgICBzdHJ1Y3QgX1hEaXNwbGF5ICpkaXNwbGF5
OwogICAgICAgIFdpbmRvdyByb290OwogICAgICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgICAg
IGludCBtd2lkdGgsIG1oZWlnaHQ7CiAgICAgICAgaW50IG5kZXB0aHM7CiAgICAgICAgRGVwdGgg
KmRlcHRoczsKICAgICAgICBpbnQgcm9vdF9kZXB0aDsKICAgICAgICBWaXN1YWwgKnJvb3Rfdmlz
dWFsOwogICAgICAgIEdDIGRlZmF1bHRfZ2M7CiAgICAgICAgQ29sb3JtYXAgY21hcDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHdoaXRlX3BpeGVsOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYmxhY2tf
cGl4ZWw7CiAgICAgICAgaW50IG1heF9tYXBzLCBtaW5fbWFwczsKICAgICAgICBpbnQgYmFja2lu
Z19zdG9yZTsKICAgICAgICBpbnQgc2F2ZV91bmRlcnM7CiAgICAgICAgbG9uZyByb290X2lucHV0
X21hc2s7Cn0gU2NyZWVuOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFhFeHREYXRhICpl
eHRfZGF0YTsKICAgICAgICBpbnQgZGVwdGg7CiAgICAgICAgaW50IGJpdHNfcGVyX3BpeGVsOwog
ICAgICAgIGludCBzY2FubGluZV9wYWQ7Cn0gU2NyZWVuRm9ybWF0OwoKCgoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgUGl4bWFwIGJhY2tncm91bmRfcGl4bWFwOwogICAgdW5zaWduZWQgbG9uZyBiYWNr
Z3JvdW5kX3BpeGVsOwogICAgUGl4bWFwIGJvcmRlcl9waXhtYXA7CiAgICB1bnNpZ25lZCBsb25n
IGJvcmRlcl9waXhlbDsKICAgIGludCBiaXRfZ3Jhdml0eTsKICAgIGludCB3aW5fZ3Jhdml0eTsK
ICAgIGludCBiYWNraW5nX3N0b3JlOwogICAgdW5zaWduZWQgbG9uZyBiYWNraW5nX3BsYW5lczsK
ICAgIHVuc2lnbmVkIGxvbmcgYmFja2luZ19waXhlbDsKICAgIGludCBzYXZlX3VuZGVyOwogICAg
bG9uZyBldmVudF9tYXNrOwogICAgbG9uZyBkb19ub3RfcHJvcGFnYXRlX21hc2s7CiAgICBpbnQg
b3ZlcnJpZGVfcmVkaXJlY3Q7CiAgICBDb2xvcm1hcCBjb2xvcm1hcDsKICAgIEN1cnNvciBjdXJz
b3I7Cn0gWFNldFdpbmRvd0F0dHJpYnV0ZXM7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgeCwg
eTsKICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgaW50IGJvcmRlcl93aWR0aDsKICAgIGludCBk
ZXB0aDsKICAgIFZpc3VhbCAqdmlzdWFsOwogICAgV2luZG93IHJvb3Q7CgogICAgaW50IGNfY2xh
c3M7CgoKCiAgICBpbnQgYml0X2dyYXZpdHk7CiAgICBpbnQgd2luX2dyYXZpdHk7CiAgICBpbnQg
YmFja2luZ19zdG9yZTsKICAgIHVuc2lnbmVkIGxvbmcgYmFja2luZ19wbGFuZXM7CiAgICB1bnNp
Z25lZCBsb25nIGJhY2tpbmdfcGl4ZWw7CiAgICBpbnQgc2F2ZV91bmRlcjsKICAgIENvbG9ybWFw
IGNvbG9ybWFwOwogICAgaW50IG1hcF9pbnN0YWxsZWQ7CiAgICBpbnQgbWFwX3N0YXRlOwogICAg
bG9uZyBhbGxfZXZlbnRfbWFza3M7CiAgICBsb25nIHlvdXJfZXZlbnRfbWFzazsKICAgIGxvbmcg
ZG9fbm90X3Byb3BhZ2F0ZV9tYXNrOwogICAgaW50IG92ZXJyaWRlX3JlZGlyZWN0OwogICAgU2Ny
ZWVuICpzY3JlZW47Cn0gWFdpbmRvd0F0dHJpYnV0ZXM7CgoKCgoKCnR5cGVkZWYgc3RydWN0IHsK
ICAgICAgICBpbnQgZmFtaWx5OwogICAgICAgIGludCBsZW5ndGg7CiAgICAgICAgY2hhciAqYWRk
cmVzczsKfSBYSG9zdEFkZHJlc3M7CgoKCgp0eXBlZGVmIHN0cnVjdCBfWEltYWdlIHsKICAgIGlu
dCB3aWR0aCwgaGVpZ2h0OwogICAgaW50IHhvZmZzZXQ7CiAgICBpbnQgZm9ybWF0OwogICAgY2hh
ciAqZGF0YTsKICAgIGludCBieXRlX29yZGVyOwogICAgaW50IGJpdG1hcF91bml0OwogICAgaW50
IGJpdG1hcF9iaXRfb3JkZXI7CiAgICBpbnQgYml0bWFwX3BhZDsKICAgIGludCBkZXB0aDsKICAg
IGludCBieXRlc19wZXJfbGluZTsKICAgIGludCBiaXRzX3Blcl9waXhlbDsKICAgIHVuc2lnbmVk
IGxvbmcgcmVkX21hc2s7CiAgICB1bnNpZ25lZCBsb25nIGdyZWVuX21hc2s7CiAgICB1bnNpZ25l
ZCBsb25nIGJsdWVfbWFzazsKICAgIFhQb2ludGVyIG9iZGF0YTsKICAgIHN0cnVjdCBmdW5jcyB7
CgogICAgICAgIHN0cnVjdCBfWEltYWdlICooKmNyZWF0ZV9pbWFnZSkoCiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgX1hEaXNwbGF5KiAsCiAgICAgICAgICAgICAgICBWaXN1YWwqICwKICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCAsCiAgICAgICAgICAgICAgICBpbnQgLAogICAgICAgICAgICAg
ICAgaW50ICwKICAgICAgICAgICAgICAgIGNoYXIqICwKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCAsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLAogICAgICAgICAgICAgICAgaW50
ICwKICAgICAgICAgICAgICAgIGludCApOwogICAgICAgIGludCAoKmRlc3Ryb3lfaW1hZ2UpIChz
dHJ1Y3QgX1hJbWFnZSAqKTsKICAgICAgICB1bnNpZ25lZCBsb25nICgqZ2V0X3BpeGVsKSAoc3Ry
dWN0IF9YSW1hZ2UgKiwgaW50LCBpbnQpOwogICAgICAgIGludCAoKnB1dF9waXhlbCkgKHN0cnVj
dCBfWEltYWdlICosIGludCwgaW50LCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBzdHJ1Y3QgX1hJ
bWFnZSAqKCpzdWJfaW1hZ2UpKHN0cnVjdCBfWEltYWdlICosIGludCwgaW50LCB1bnNpZ25lZCBp
bnQsIHVuc2lnbmVkIGludCk7CiAgICAgICAgaW50ICgqYWRkX3BpeGVsKSAoc3RydWN0IF9YSW1h
Z2UgKiwgbG9uZyk7CiMgNDA4ICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMwogICAgICAgIH0g
ZjsKfSBYSW1hZ2U7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgeCwgeTsKICAgIGludCB3
aWR0aCwgaGVpZ2h0OwogICAgaW50IGJvcmRlcl93aWR0aDsKICAgIFdpbmRvdyBzaWJsaW5nOwog
ICAgaW50IHN0YWNrX21vZGU7Cn0gWFdpbmRvd0NoYW5nZXM7CgoKCgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBwaXhlbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZWQs
IGdyZWVuLCBibHVlOwogICAgICAgIGNoYXIgZmxhZ3M7CiAgICAgICAgY2hhciBwYWQ7Cn0gWENv
bG9yOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBzaG9ydCB4MSwgeTEsIHgyLCB5MjsKfSBY
U2VnbWVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNob3J0IHgsIHk7Cn0gWFBvaW50OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgc2hvcnQgeCwgeTsKICAgIHVuc2lnbmVkIHNob3J0IHdpZHRoLCBo
ZWlnaHQ7Cn0gWFJlY3RhbmdsZTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNob3J0IHgsIHk7CiAg
ICB1bnNpZ25lZCBzaG9ydCB3aWR0aCwgaGVpZ2h0OwogICAgc2hvcnQgYW5nbGUxLCBhbmdsZTI7
Cn0gWEFyYzsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQga2V5X2NsaWNrX3BlcmNl
bnQ7CiAgICAgICAgaW50IGJlbGxfcGVyY2VudDsKICAgICAgICBpbnQgYmVsbF9waXRjaDsKICAg
ICAgICBpbnQgYmVsbF9kdXJhdGlvbjsKICAgICAgICBpbnQgbGVkOwogICAgICAgIGludCBsZWRf
bW9kZTsKICAgICAgICBpbnQga2V5OwogICAgICAgIGludCBhdXRvX3JlcGVhdF9tb2RlOwp9IFhL
ZXlib2FyZENvbnRyb2w7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQga2V5X2NsaWNr
X3BlcmNlbnQ7CiAgICAgICAgaW50IGJlbGxfcGVyY2VudDsKICAgICAgICB1bnNpZ25lZCBpbnQg
YmVsbF9waXRjaCwgYmVsbF9kdXJhdGlvbjsKICAgICAgICB1bnNpZ25lZCBsb25nIGxlZF9tYXNr
OwogICAgICAgIGludCBnbG9iYWxfYXV0b19yZXBlYXQ7CiAgICAgICAgY2hhciBhdXRvX3JlcGVh
dHNbMzJdOwp9IFhLZXlib2FyZFN0YXRlOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgVGlt
ZSB0aW1lOwogICAgICAgIHNob3J0IHgsIHk7Cn0gWFRpbWVDb29yZDsKCgoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgICAgIGludCBtYXhfa2V5cGVybW9kOwogICAgICAgIEtleUNvZGUgKm1vZGlmaWVy
bWFwOwp9IFhNb2RpZmllcktleW1hcDsKIyA1MDIgIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAz
CnR5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5OwoKCnN0cnVjdCBfWFByaXZhdGU7CnN0
cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYzsKCnR5cGVkZWYgc3RydWN0CgoKCnsKICAgICAgICBYRXh0
RGF0YSAqZXh0X2RhdGE7CiAgICAgICAgc3RydWN0IF9YUHJpdmF0ZSAqcHJpdmF0ZTE7CiAgICAg
ICAgaW50IGZkOwogICAgICAgIGludCBwcml2YXRlMjsKICAgICAgICBpbnQgcHJvdG9fbWFqb3Jf
dmVyc2lvbjsKICAgICAgICBpbnQgcHJvdG9fbWlub3JfdmVyc2lvbjsKICAgICAgICBjaGFyICp2
ZW5kb3I7CiAgICAgICAgWElEIHByaXZhdGUzOwogICAgICAgIFhJRCBwcml2YXRlNDsKICAgICAg
ICBYSUQgcHJpdmF0ZTU7CiAgICAgICAgaW50IHByaXZhdGU2OwogICAgICAgIFhJRCAoKnJlc291
cmNlX2FsbG9jKSgKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgX1hEaXNwbGF5KgoKICAgICAgICAp
OwogICAgICAgIGludCBieXRlX29yZGVyOwogICAgICAgIGludCBiaXRtYXBfdW5pdDsKICAgICAg
ICBpbnQgYml0bWFwX3BhZDsKICAgICAgICBpbnQgYml0bWFwX2JpdF9vcmRlcjsKICAgICAgICBp
bnQgbmZvcm1hdHM7CiAgICAgICAgU2NyZWVuRm9ybWF0ICpwaXhtYXBfZm9ybWF0OwogICAgICAg
IGludCBwcml2YXRlODsKICAgICAgICBpbnQgcmVsZWFzZTsKICAgICAgICBzdHJ1Y3QgX1hQcml2
YXRlICpwcml2YXRlOSwgKnByaXZhdGUxMDsKICAgICAgICBpbnQgcWxlbjsKICAgICAgICB1bnNp
Z25lZCBsb25nIGxhc3RfcmVxdWVzdF9yZWFkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dDsKICAgICAgICBYUG9pbnRlciBwcml2YXRlMTE7CiAgICAgICAgWFBvaW50ZXIgcHJpdmF0ZTEy
OwogICAgICAgIFhQb2ludGVyIHByaXZhdGUxMzsKICAgICAgICBYUG9pbnRlciBwcml2YXRlMTQ7
CiAgICAgICAgdW5zaWduZWQgbWF4X3JlcXVlc3Rfc2l6ZTsKICAgICAgICBzdHJ1Y3QgX1hybUhh
c2hCdWNrZXRSZWMgKmRiOwogICAgICAgIGludCAoKnByaXZhdGUxNSkoCgogICAgICAgICAgICAg
ICAgc3RydWN0IF9YRGlzcGxheSoKCiAgICAgICAgICAgICAgICApOwogICAgICAgIGNoYXIgKmRp
c3BsYXlfbmFtZTsKICAgICAgICBpbnQgZGVmYXVsdF9zY3JlZW47CiAgICAgICAgaW50IG5zY3Jl
ZW5zOwogICAgICAgIFNjcmVlbiAqc2NyZWVuczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1vdGlv
bl9idWZmZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcml2YXRlMTY7CiAgICAgICAgaW50IG1p
bl9rZXljb2RlOwogICAgICAgIGludCBtYXhfa2V5Y29kZTsKICAgICAgICBYUG9pbnRlciBwcml2
YXRlMTc7CiAgICAgICAgWFBvaW50ZXIgcHJpdmF0ZTE4OwogICAgICAgIGludCBwcml2YXRlMTk7
CiAgICAgICAgY2hhciAqeGRlZmF1bHRzOwoKfQoKCgoqX1hQcml2RGlzcGxheTsKIyA1NzggIi91
c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlw
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsK
ICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAg
V2luZG93IHJvb3Q7CiAgICAgICAgV2luZG93IHN1YndpbmRvdzsKICAgICAgICBUaW1lIHRpbWU7
CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgaW50IHhfcm9vdCwgeV9yb290OwogICAgICAgIHVu
c2lnbmVkIGludCBzdGF0ZTsKICAgICAgICB1bnNpZ25lZCBpbnQga2V5Y29kZTsKICAgICAgICBp
bnQgc2FtZV9zY3JlZW47Cn0gWEtleUV2ZW50Owp0eXBlZGVmIFhLZXlFdmVudCBYS2V5UHJlc3Nl
ZEV2ZW50Owp0eXBlZGVmIFhLZXlFdmVudCBYS2V5UmVsZWFzZWRFdmVudDsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAg
ICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdp
bmRvdyB3aW5kb3c7CiAgICAgICAgV2luZG93IHJvb3Q7CiAgICAgICAgV2luZG93IHN1YndpbmRv
dzsKICAgICAgICBUaW1lIHRpbWU7CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgaW50IHhfcm9v
dCwgeV9yb290OwogICAgICAgIHVuc2lnbmVkIGludCBzdGF0ZTsKICAgICAgICB1bnNpZ25lZCBp
bnQgYnV0dG9uOwogICAgICAgIGludCBzYW1lX3NjcmVlbjsKfSBYQnV0dG9uRXZlbnQ7CnR5cGVk
ZWYgWEJ1dHRvbkV2ZW50IFhCdXR0b25QcmVzc2VkRXZlbnQ7CnR5cGVkZWYgWEJ1dHRvbkV2ZW50
IFhCdXR0b25SZWxlYXNlZEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBl
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50Owog
ICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBX
aW5kb3cgcm9vdDsKICAgICAgICBXaW5kb3cgc3Vid2luZG93OwogICAgICAgIFRpbWUgdGltZTsK
ICAgICAgICBpbnQgeCwgeTsKICAgICAgICBpbnQgeF9yb290LCB5X3Jvb3Q7CiAgICAgICAgdW5z
aWduZWQgaW50IHN0YXRlOwogICAgICAgIGNoYXIgaXNfaGludDsKICAgICAgICBpbnQgc2FtZV9z
Y3JlZW47Cn0gWE1vdGlvbkV2ZW50Owp0eXBlZGVmIFhNb3Rpb25FdmVudCBYUG9pbnRlck1vdmVk
RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAq
ZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIFdpbmRvdyByb290OwogICAg
ICAgIFdpbmRvdyBzdWJ3aW5kb3c7CiAgICAgICAgVGltZSB0aW1lOwogICAgICAgIGludCB4LCB5
OwogICAgICAgIGludCB4X3Jvb3QsIHlfcm9vdDsKICAgICAgICBpbnQgbW9kZTsKICAgICAgICBp
bnQgZGV0YWlsOwoKCgoKICAgICAgICBpbnQgc2FtZV9zY3JlZW47CiAgICAgICAgaW50IGZvY3Vz
OwogICAgICAgIHVuc2lnbmVkIGludCBzdGF0ZTsKfSBYQ3Jvc3NpbmdFdmVudDsKdHlwZWRlZiBY
Q3Jvc3NpbmdFdmVudCBYRW50ZXJXaW5kb3dFdmVudDsKdHlwZWRlZiBYQ3Jvc3NpbmdFdmVudCBY
TGVhdmVXaW5kb3dFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAg
ICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IG1v
ZGU7CiAgICAgICAgaW50IGRldGFpbDsKCgoKCgp9IFhGb2N1c0NoYW5nZUV2ZW50Owp0eXBlZGVm
IFhGb2N1c0NoYW5nZUV2ZW50IFhGb2N1c0luRXZlbnQ7CnR5cGVkZWYgWEZvY3VzQ2hhbmdlRXZl
bnQgWEZvY3VzT3V0RXZlbnQ7CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAg
ICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBjaGFy
IGtleV92ZWN0b3JbMzJdOwp9IFhLZXltYXBFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAg
ICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2Vu
ZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7
CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgaW50
IGNvdW50Owp9IFhFeHBvc2VFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlw
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsK
ICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIERyYXdhYmxlIGRyYXdhYmxlOwogICAg
ICAgIGludCB4LCB5OwogICAgICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgICAgIGludCBjb3Vu
dDsKICAgICAgICBpbnQgbWFqb3JfY29kZTsKICAgICAgICBpbnQgbWlub3JfY29kZTsKfSBYR3Jh
cGhpY3NFeHBvc2VFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAg
ICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIERyYXdhYmxlIGRyYXdhYmxlOwogICAgICAgIGlu
dCBtYWpvcl9jb2RlOwogICAgICAgIGludCBtaW5vcl9jb2RlOwp9IFhOb0V4cG9zZUV2ZW50OwoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
c2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7
CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgc3RhdGU7Cn0gWFZpc2liaWxpdHlF
dmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpk
aXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAg
ICAgICBpbnQgeCwgeTsKICAgICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9y
ZGVyX3dpZHRoOwogICAgICAgIGludCBvdmVycmlkZV9yZWRpcmVjdDsKfSBYQ3JlYXRlV2luZG93
RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAq
ZGlzcGxheTsKICAgICAgICBXaW5kb3cgZXZlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBY
RGVzdHJveVdpbmRvd0V2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAg
ICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRv
dyB3aW5kb3c7CiAgICAgICAgaW50IGZyb21fY29uZmlndXJlOwp9IFhVbm1hcEV2ZW50OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy
aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg
ICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IG92
ZXJyaWRlX3JlZGlyZWN0Owp9IFhNYXBFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBp
bnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9l
dmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAg
ICAgICAgV2luZG93IHdpbmRvdzsKfSBYTWFwUmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAg
IGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93
IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgV2luZG93IHBhcmVudDsKICAg
ICAgICBpbnQgeCwgeTsKICAgICAgICBpbnQgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWFJlcGFyZW50
RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAq
ZGlzcGxheTsKICAgICAgICBXaW5kb3cgZXZlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAg
ICAgICBpbnQgeCwgeTsKICAgICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9y
ZGVyX3dpZHRoOwogICAgICAgIFdpbmRvdyBhYm92ZTsKICAgICAgICBpbnQgb3ZlcnJpZGVfcmVk
aXJlY3Q7Cn0gWENvbmZpZ3VyZUV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0
eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50
OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAgICAg
IFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHgsIHk7Cn0gWEdyYXZpdHlFdmVudDsKCnR5cGVk
ZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlh
bDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAg
ICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHdpZHRoLCBoZWlnaHQ7Cn0gWFJlc2l6ZVJl
cXVlc3RFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNw
bGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRv
dzsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBp
bnQgYm9yZGVyX3dpZHRoOwogICAgICAgIFdpbmRvdyBhYm92ZTsKICAgICAgICBpbnQgZGV0YWls
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWVfbWFzazsKfSBYQ29uZmlndXJlUmVxdWVzdEV2
ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRp
c3BsYXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAg
ICAgaW50IHBsYWNlOwp9IFhDaXJjdWxhdGVFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAg
ICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2Vu
ZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7
CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgcGxhY2U7Cn0gWENpcmN1bGF0ZVJl
cXVlc3RFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNw
bGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgQXRvbSBhdG9tOwog
ICAgICAgIFRpbWUgdGltZTsKICAgICAgICBpbnQgc3RhdGU7Cn0gWFByb3BlcnR5RXZlbnQ7Cgp0
eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
ZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsK
ICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAgICAgIFRp
bWUgdGltZTsKfSBYU2VsZWN0aW9uQ2xlYXJFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAg
ICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2Vu
ZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBvd25lcjsK
ICAgICAgICBXaW5kb3cgcmVxdWVzdG9yOwogICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAgICAg
IEF0b20gdGFyZ2V0OwogICAgICAgIEF0b20gcHJvcGVydHk7CiAgICAgICAgVGltZSB0aW1lOwp9
IFhTZWxlY3Rpb25SZXF1ZXN0RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5
cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7
CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgcmVxdWVzdG9yOwogICAg
ICAgIEF0b20gc2VsZWN0aW9uOwogICAgICAgIEF0b20gdGFyZ2V0OwogICAgICAgIEF0b20gcHJv
cGVydHk7CiAgICAgICAgVGltZSB0aW1lOwp9IFhTZWxlY3Rpb25FdmVudDsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAg
ICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdp
bmRvdyB3aW5kb3c7CiAgICAgICAgQ29sb3JtYXAgY29sb3JtYXA7CgogICAgICAgIGludCBjX25l
dzsKCgoKICAgICAgICBpbnQgc3RhdGU7Cn0gWENvbG9ybWFwRXZlbnQ7Cgp0eXBlZGVmIHN0cnVj
dCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAg
ICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5k
b3cgd2luZG93OwogICAgICAgIEF0b20gbWVzc2FnZV90eXBlOwogICAgICAgIGludCBmb3JtYXQ7
CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgY2hhciBiWzIwXTsKICAgICAgICAgICAg
ICAgIHNob3J0IHNbMTBdOwogICAgICAgICAgICAgICAgbG9uZyBsWzVdOwogICAgICAgICAgICAg
ICAgfSBkYXRhOwp9IFhDbGllbnRNZXNzYWdlRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAg
ICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNl
bmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93
OwogICAgICAgIGludCByZXF1ZXN0OwoKICAgICAgICBpbnQgZmlyc3Rfa2V5Y29kZTsKICAgICAg
ICBpbnQgY291bnQ7Cn0gWE1hcHBpbmdFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBp
bnQgdHlwZTsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFhJRCByZXNvdXJjZWlk
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZXJy
b3JfY29kZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJlcXVlc3RfY29kZTsKICAgICAgICB1bnNp
Z25lZCBjaGFyIG1pbm9yX2NvZGU7Cn0gWEVycm9yRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50
IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2lu
ZG93Owp9IFhBbnlFdmVudDsKCgoKCgp0eXBlZGVmIHVuaW9uIF9YRXZlbnQgewogICAgICAgIGlu
dCB0eXBlOwogICAgICAgIFhBbnlFdmVudCB4YW55OwogICAgICAgIFhLZXlFdmVudCB4a2V5Owog
ICAgICAgIFhCdXR0b25FdmVudCB4YnV0dG9uOwogICAgICAgIFhNb3Rpb25FdmVudCB4bW90aW9u
OwogICAgICAgIFhDcm9zc2luZ0V2ZW50IHhjcm9zc2luZzsKICAgICAgICBYRm9jdXNDaGFuZ2VF
dmVudCB4Zm9jdXM7CiAgICAgICAgWEV4cG9zZUV2ZW50IHhleHBvc2U7CiAgICAgICAgWEdyYXBo
aWNzRXhwb3NlRXZlbnQgeGdyYXBoaWNzZXhwb3NlOwogICAgICAgIFhOb0V4cG9zZUV2ZW50IHhu
b2V4cG9zZTsKICAgICAgICBYVmlzaWJpbGl0eUV2ZW50IHh2aXNpYmlsaXR5OwogICAgICAgIFhD
cmVhdGVXaW5kb3dFdmVudCB4Y3JlYXRld2luZG93OwogICAgICAgIFhEZXN0cm95V2luZG93RXZl
bnQgeGRlc3Ryb3l3aW5kb3c7CiAgICAgICAgWFVubWFwRXZlbnQgeHVubWFwOwogICAgICAgIFhN
YXBFdmVudCB4bWFwOwogICAgICAgIFhNYXBSZXF1ZXN0RXZlbnQgeG1hcHJlcXVlc3Q7CiAgICAg
ICAgWFJlcGFyZW50RXZlbnQgeHJlcGFyZW50OwogICAgICAgIFhDb25maWd1cmVFdmVudCB4Y29u
ZmlndXJlOwogICAgICAgIFhHcmF2aXR5RXZlbnQgeGdyYXZpdHk7CiAgICAgICAgWFJlc2l6ZVJl
cXVlc3RFdmVudCB4cmVzaXplcmVxdWVzdDsKICAgICAgICBYQ29uZmlndXJlUmVxdWVzdEV2ZW50
IHhjb25maWd1cmVyZXF1ZXN0OwogICAgICAgIFhDaXJjdWxhdGVFdmVudCB4Y2lyY3VsYXRlOwog
ICAgICAgIFhDaXJjdWxhdGVSZXF1ZXN0RXZlbnQgeGNpcmN1bGF0ZXJlcXVlc3Q7CiAgICAgICAg
WFByb3BlcnR5RXZlbnQgeHByb3BlcnR5OwogICAgICAgIFhTZWxlY3Rpb25DbGVhckV2ZW50IHhz
ZWxlY3Rpb25jbGVhcjsKICAgICAgICBYU2VsZWN0aW9uUmVxdWVzdEV2ZW50IHhzZWxlY3Rpb25y
ZXF1ZXN0OwogICAgICAgIFhTZWxlY3Rpb25FdmVudCB4c2VsZWN0aW9uOwogICAgICAgIFhDb2xv
cm1hcEV2ZW50IHhjb2xvcm1hcDsKICAgICAgICBYQ2xpZW50TWVzc2FnZUV2ZW50IHhjbGllbnQ7
CiAgICAgICAgWE1hcHBpbmdFdmVudCB4bWFwcGluZzsKICAgICAgICBYRXJyb3JFdmVudCB4ZXJy
b3I7CiAgICAgICAgWEtleW1hcEV2ZW50IHhrZXltYXA7CiAgICAgICAgbG9uZyBwYWRbMjRdOwp9
IFhFdmVudDsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNob3J0IGxiZWFyaW5nOwogICAg
c2hvcnQgcmJlYXJpbmc7CiAgICBzaG9ydCB3aWR0aDsKICAgIHNob3J0IGFzY2VudDsKICAgIHNo
b3J0IGRlc2NlbnQ7CiAgICB1bnNpZ25lZCBzaG9ydCBhdHRyaWJ1dGVzOwp9IFhDaGFyU3RydWN0
OwoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIEF0b20gbmFtZTsKICAgIHVuc2lnbmVkIGxvbmcg
Y2FyZDMyOwp9IFhGb250UHJvcDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFhFeHREYXRhICpleHRf
ZGF0YTsKICAgIEZvbnQgZmlkOwogICAgdW5zaWduZWQgZGlyZWN0aW9uOwogICAgdW5zaWduZWQg
bWluX2NoYXJfb3JfYnl0ZTI7CiAgICB1bnNpZ25lZCBtYXhfY2hhcl9vcl9ieXRlMjsKICAgIHVu
c2lnbmVkIG1pbl9ieXRlMTsKICAgIHVuc2lnbmVkIG1heF9ieXRlMTsKICAgIGludCBhbGxfY2hh
cnNfZXhpc3Q7CiAgICB1bnNpZ25lZCBkZWZhdWx0X2NoYXI7CiAgICBpbnQgbl9wcm9wZXJ0aWVz
OwogICAgWEZvbnRQcm9wICpwcm9wZXJ0aWVzOwogICAgWENoYXJTdHJ1Y3QgbWluX2JvdW5kczsK
ICAgIFhDaGFyU3RydWN0IG1heF9ib3VuZHM7CiAgICBYQ2hhclN0cnVjdCAqcGVyX2NoYXI7CiAg
ICBpbnQgYXNjZW50OwogICAgaW50IGRlc2NlbnQ7Cn0gWEZvbnRTdHJ1Y3Q7CgoKCgp0eXBlZGVm
IHN0cnVjdCB7CiAgICBjaGFyICpjaGFyczsKICAgIGludCBuY2hhcnM7CiAgICBpbnQgZGVsdGE7
CiAgICBGb250IGZvbnQ7Cn0gWFRleHRJdGVtOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgdW5zaWdu
ZWQgY2hhciBieXRlMTsKICAgIHVuc2lnbmVkIGNoYXIgYnl0ZTI7Cn0gWENoYXIyYjsKCnR5cGVk
ZWYgc3RydWN0IHsKICAgIFhDaGFyMmIgKmNoYXJzOwogICAgaW50IG5jaGFyczsKICAgIGludCBk
ZWx0YTsKICAgIEZvbnQgZm9udDsKfSBYVGV4dEl0ZW0xNjsKCgp0eXBlZGVmIHVuaW9uIHsgRGlz
cGxheSAqZGlzcGxheTsKICAgICAgICAgICAgICAgIEdDIGdjOwogICAgICAgICAgICAgICAgVmlz
dWFsICp2aXN1YWw7CiAgICAgICAgICAgICAgICBTY3JlZW4gKnNjcmVlbjsKICAgICAgICAgICAg
ICAgIFNjcmVlbkZvcm1hdCAqcGl4bWFwX2Zvcm1hdDsKICAgICAgICAgICAgICAgIFhGb250U3Ry
dWN0ICpmb250OyB9IFhFRGF0YU9iamVjdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFhSZWN0YW5n
bGUgbWF4X2lua19leHRlbnQ7CiAgICBYUmVjdGFuZ2xlIG1heF9sb2dpY2FsX2V4dGVudDsKfSBY
Rm9udFNldEV4dGVudHM7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX1hPTSAqWE9NOwp0eXBlZGVmIHN0
cnVjdCBfWE9DICpYT0MsICpYRm9udFNldDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgKmNo
YXJzOwogICAgaW50IG5jaGFyczsKICAgIGludCBkZWx0YTsKICAgIFhGb250U2V0IGZvbnRfc2V0
Owp9IFhtYlRleHRJdGVtOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgd2NoYXJfdCAqY2hhcnM7CiAg
ICBpbnQgbmNoYXJzOwogICAgaW50IGRlbHRhOwogICAgWEZvbnRTZXQgZm9udF9zZXQ7Cn0gWHdj
VGV4dEl0ZW07CiMgMTExMiAiL3Vzci9pbmNsdWRlL1gxMS9YbGliLmgiIDMKdHlwZWRlZiBzdHJ1
Y3QgewogICAgaW50IGNoYXJzZXRfY291bnQ7CiAgICBjaGFyICoqY2hhcnNldF9saXN0Owp9IFhP
TUNoYXJTZXRMaXN0OwoKdHlwZWRlZiBlbnVtIHsKICAgIFhPTU9yaWVudGF0aW9uX0xUUl9UVEIs
CiAgICBYT01PcmllbnRhdGlvbl9SVExfVFRCLAogICAgWE9NT3JpZW50YXRpb25fVFRCX0xUUiwK
ICAgIFhPTU9yaWVudGF0aW9uX1RUQl9SVEwsCiAgICBYT01PcmllbnRhdGlvbl9Db250ZXh0Cn0g
WE9yaWVudGF0aW9uOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IG51bV9vcmllbnRhdGlvbjsK
ICAgIFhPcmllbnRhdGlvbiAqb3JpZW50YXRpb247Cn0gWE9NT3JpZW50YXRpb247Cgp0eXBlZGVm
IHN0cnVjdCB7CiAgICBpbnQgbnVtX2ZvbnQ7CiAgICBYRm9udFN0cnVjdCAqKmZvbnRfc3RydWN0
X2xpc3Q7CiAgICBjaGFyICoqZm9udF9uYW1lX2xpc3Q7Cn0gWE9NRm9udEluZm87Cgp0eXBlZGVm
IHN0cnVjdCBfWElNICpYSU07CnR5cGVkZWYgc3RydWN0IF9YSUMgKlhJQzsKCnR5cGVkZWYgdm9p
ZCAoKlhJTVByb2MpKAoKICAgIFhJTSwKICAgIFhQb2ludGVyLAogICAgWFBvaW50ZXIKCik7Cgp0
eXBlZGVmIGludCAoKlhJQ1Byb2MpKAoKICAgIFhJQywKICAgIFhQb2ludGVyLAogICAgWFBvaW50
ZXIKCik7Cgp0eXBlZGVmIHZvaWQgKCpYSURQcm9jKSgKCiAgICBEaXNwbGF5KiwKICAgIFhQb2lu
dGVyLAogICAgWFBvaW50ZXIKCik7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElNU3R5bGU7Cgp0
eXBlZGVmIHN0cnVjdCB7CiAgICB1bnNpZ25lZCBzaG9ydCBjb3VudF9zdHlsZXM7CiAgICBYSU1T
dHlsZSAqc3VwcG9ydGVkX3N0eWxlczsKfSBYSU1TdHlsZXM7CiMgMTIzMSAiL3Vzci9pbmNsdWRl
L1gxMS9YbGliLmgiIDMKdHlwZWRlZiB2b2lkICpYVmFOZXN0ZWRMaXN0OwoKCgoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgWFBvaW50ZXIgY2xpZW50X2RhdGE7CiAgICBYSU1Qcm9jIGNhbGxiYWNrOwp9
IFhJTUNhbGxiYWNrOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgWFBvaW50ZXIgY2xpZW50X2RhdGE7
CiAgICBYSUNQcm9jIGNhbGxiYWNrOwp9IFhJQ0NhbGxiYWNrOwoKdHlwZWRlZiB1bnNpZ25lZCBs
b25nIFhJTUZlZWRiYWNrOwojIDEyNTggIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAzCnR5cGVk
ZWYgc3RydWN0IF9YSU1UZXh0IHsKICAgIHVuc2lnbmVkIHNob3J0IGxlbmd0aDsKICAgIFhJTUZl
ZWRiYWNrICpmZWVkYmFjazsKICAgIGludCBlbmNvZGluZ19pc193Y2hhcjsKICAgIHVuaW9uIHsK
ICAgICAgICBjaGFyICptdWx0aV9ieXRlOwogICAgICAgIHdjaGFyX3QgKndpZGVfY2hhcjsKICAg
IH0gc3RyaW5nOwp9IFhJTVRleHQ7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElNUHJlZWRpdFN0
YXRlOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9YSU1QcmVlZGl0U3RhdGVOb3RpZnlDYWxsYmFja1N0
cnVjdCB7CiAgICBYSU1QcmVlZGl0U3RhdGUgc3RhdGU7Cn0gWElNUHJlZWRpdFN0YXRlTm90aWZ5
Q2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElNUmVzZXRTdGF0ZTsKCgoK
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSU1TdHJpbmdDb252ZXJzaW9uRmVlZGJhY2s7CiMgMTI5
MiAiL3Vzci9pbmNsdWRlL1gxMS9YbGliLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX1hJTVN0cmluZ0Nv
bnZlcnNpb25UZXh0IHsKICAgIHVuc2lnbmVkIHNob3J0IGxlbmd0aDsKICAgIFhJTVN0cmluZ0Nv
bnZlcnNpb25GZWVkYmFjayAqZmVlZGJhY2s7CiAgICBpbnQgZW5jb2RpbmdfaXNfd2NoYXI7CiAg
ICB1bmlvbiB7CiAgICAgICAgY2hhciAqbWJzOwogICAgICAgIHdjaGFyX3QgKndjczsKICAgIH0g
c3RyaW5nOwp9IFhJTVN0cmluZ0NvbnZlcnNpb25UZXh0OwoKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBYSU1TdHJpbmdDb252ZXJzaW9uUG9zaXRpb247Cgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFhJ
TVN0cmluZ0NvbnZlcnNpb25UeXBlOwoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFhJTVN0
cmluZ0NvbnZlcnNpb25PcGVyYXRpb247CgoKCgp0eXBlZGVmIGVudW0gewogICAgWElNRm9yd2Fy
ZENoYXIsIFhJTUJhY2t3YXJkQ2hhciwKICAgIFhJTUZvcndhcmRXb3JkLCBYSU1CYWNrd2FyZFdv
cmQsCiAgICBYSU1DYXJldFVwLCBYSU1DYXJldERvd24sCiAgICBYSU1OZXh0TGluZSwgWElNUHJl
dmlvdXNMaW5lLAogICAgWElNTGluZVN0YXJ0LCBYSU1MaW5lRW5kLAogICAgWElNQWJzb2x1dGVQ
b3NpdGlvbiwKICAgIFhJTURvbnRDaGFuZ2UKfSBYSU1DYXJldERpcmVjdGlvbjsKCnR5cGVkZWYg
c3RydWN0IF9YSU1TdHJpbmdDb252ZXJzaW9uQ2FsbGJhY2tTdHJ1Y3QgewogICAgWElNU3RyaW5n
Q29udmVyc2lvblBvc2l0aW9uIHBvc2l0aW9uOwogICAgWElNQ2FyZXREaXJlY3Rpb24gZGlyZWN0
aW9uOwogICAgWElNU3RyaW5nQ29udmVyc2lvbk9wZXJhdGlvbiBvcGVyYXRpb247CiAgICB1bnNp
Z25lZCBzaG9ydCBmYWN0b3I7CiAgICBYSU1TdHJpbmdDb252ZXJzaW9uVGV4dCAqdGV4dDsKfSBY
SU1TdHJpbmdDb252ZXJzaW9uQ2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIHN0cnVjdCBfWElNUHJl
ZWRpdERyYXdDYWxsYmFja1N0cnVjdCB7CiAgICBpbnQgY2FyZXQ7CiAgICBpbnQgY2hnX2ZpcnN0
OwogICAgaW50IGNoZ19sZW5ndGg7CiAgICBYSU1UZXh0ICp0ZXh0Owp9IFhJTVByZWVkaXREcmF3
Q2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIGVudW0gewogICAgWElNSXNJbnZpc2libGUsCiAgICBY
SU1Jc1ByaW1hcnksCiAgICBYSU1Jc1NlY29uZGFyeQp9IFhJTUNhcmV0U3R5bGU7Cgp0eXBlZGVm
IHN0cnVjdCBfWElNUHJlZWRpdENhcmV0Q2FsbGJhY2tTdHJ1Y3QgewogICAgaW50IHBvc2l0aW9u
OwogICAgWElNQ2FyZXREaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgWElNQ2FyZXRTdHlsZSBzdHls
ZTsKfSBYSU1QcmVlZGl0Q2FyZXRDYWxsYmFja1N0cnVjdDsKCnR5cGVkZWYgZW51bSB7CiAgICBY
SU1UZXh0VHlwZSwKICAgIFhJTUJpdG1hcFR5cGUKfSBYSU1TdGF0dXNEYXRhVHlwZTsKCnR5cGVk
ZWYgc3RydWN0IF9YSU1TdGF0dXNEcmF3Q2FsbGJhY2tTdHJ1Y3QgewogICAgWElNU3RhdHVzRGF0
YVR5cGUgdHlwZTsKICAgIHVuaW9uIHsKICAgICAgICBYSU1UZXh0ICp0ZXh0OwogICAgICAgIFBp
eG1hcCBiaXRtYXA7CiAgICB9IGRhdGE7Cn0gWElNU3RhdHVzRHJhd0NhbGxiYWNrU3RydWN0OwoK
dHlwZWRlZiBzdHJ1Y3QgX1hJTUhvdEtleVRyaWdnZXIgewogICAgS2V5U3ltIGtleXN5bTsKICAg
IGludCBtb2RpZmllcjsKICAgIGludCBtb2RpZmllcl9tYXNrOwp9IFhJTUhvdEtleVRyaWdnZXI7
Cgp0eXBlZGVmIHN0cnVjdCBfWElNSG90S2V5VHJpZ2dlcnMgewogICAgaW50IG51bV9ob3Rfa2V5
OwogICAgWElNSG90S2V5VHJpZ2dlciAqa2V5Owp9IFhJTUhvdEtleVRyaWdnZXJzOwoKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIFhJTUhvdEtleVN0YXRlOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAg
dW5zaWduZWQgc2hvcnQgY291bnRfdmFsdWVzOwogICAgY2hhciAqKnN1cHBvcnRlZF92YWx1ZXM7
Cn0gWElNVmFsdWVzTGlzdDsKCmV4dGVybiAiQyIgewoKCgoKCmV4dGVybiBpbnQgX1hkZWJ1ZzsK
CmV4dGVybiBYRm9udFN0cnVjdCAqWExvYWRRdWVyeUZvbnQoCgogICAgRGlzcGxheSogLAogICAg
Y29uc3QgY2hhcioKCik7CgpleHRlcm4gWEZvbnRTdHJ1Y3QgKlhRdWVyeUZvbnQoCgogICAgRGlz
cGxheSogLAogICAgWElECgopOwoKCmV4dGVybiBYVGltZUNvb3JkICpYR2V0TW90aW9uRXZlbnRz
KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBUaW1lICwKICAgIFRpbWUgLAogICAg
aW50KgoKKTsKCmV4dGVybiBYTW9kaWZpZXJLZXltYXAgKlhEZWxldGVNb2RpZmllcm1hcEVudHJ5
KAoKICAgIFhNb2RpZmllcktleW1hcCogLAoKICAgIHVuc2lnbmVkIGludCAsCgoKCiAgICBpbnQK
Cik7CgpleHRlcm4gWE1vZGlmaWVyS2V5bWFwICpYR2V0TW9kaWZpZXJNYXBwaW5nKAoKICAgIERp
c3BsYXkqCgopOwoKZXh0ZXJuIFhNb2RpZmllcktleW1hcCAqWEluc2VydE1vZGlmaWVybWFwRW50
cnkoCgogICAgWE1vZGlmaWVyS2V5bWFwKiAsCgogICAgdW5zaWduZWQgaW50ICwKCgoKICAgIGlu
dAoKKTsKCmV4dGVybiBYTW9kaWZpZXJLZXltYXAgKlhOZXdNb2RpZmllcm1hcCgKCiAgICBpbnQK
Cik7CgpleHRlcm4gWEltYWdlICpYQ3JlYXRlSW1hZ2UoCgogICAgRGlzcGxheSogLAogICAgVmlz
dWFsKiAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBjaGFyKiAs
CiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQK
Cik7CmV4dGVybiBpbnQgWEluaXRJbWFnZSgKCiAgICBYSW1hZ2UqCgopOwpleHRlcm4gWEltYWdl
ICpYR2V0SW1hZ2UoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgaW50ICwKICAg
IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVk
IGxvbmcgLAogICAgaW50CgopOwpleHRlcm4gWEltYWdlICpYR2V0U3ViSW1hZ2UoCgogICAgRGlz
cGxheSogLAogICAgRHJhd2FibGUgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBp
bnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgaW50ICwKICAg
IFhJbWFnZSogLAogICAgaW50ICwKICAgIGludAoKKTsKCgoKCmV4dGVybiBEaXNwbGF5ICpYT3Bl
bkRpc3BsYXkoCgogICAgY29uc3QgY2hhcioKCik7CgpleHRlcm4gdm9pZCBYcm1Jbml0aWFsaXpl
KAoKICAgIHZvaWQKCik7CgpleHRlcm4gY2hhciAqWEZldGNoQnl0ZXMoCgogICAgRGlzcGxheSog
LAogICAgaW50KgoKKTsKZXh0ZXJuIGNoYXIgKlhGZXRjaEJ1ZmZlcigKCiAgICBEaXNwbGF5KiAs
CiAgICBpbnQqICwKICAgIGludAoKKTsKZXh0ZXJuIGNoYXIgKlhHZXRBdG9tTmFtZSgKCiAgICBE
aXNwbGF5KiAsCiAgICBBdG9tCgopOwpleHRlcm4gaW50IFhHZXRBdG9tTmFtZXMoCgogICAgRGlz
cGxheSogLAogICAgQXRvbSogLAogICAgaW50ICwKICAgIGNoYXIqKgoKKTsKZXh0ZXJuIGNoYXIg
KlhHZXREZWZhdWx0KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNvbnN0
IGNoYXIqCgopOwpleHRlcm4gY2hhciAqWERpc3BsYXlOYW1lKAoKICAgIGNvbnN0IGNoYXIqCgop
OwpleHRlcm4gY2hhciAqWEtleXN5bVRvU3RyaW5nKAoKICAgIEtleVN5bQoKKTsKCmV4dGVybiBp
bnQgKCpYU3luY2hyb25pemUoCgogICAgRGlzcGxheSogLAogICAgaW50CgopKSgKCiAgICBEaXNw
bGF5KgoKKTsKZXh0ZXJuIGludCAoKlhTZXRBZnRlckZ1bmN0aW9uKAoKICAgIERpc3BsYXkqICwK
ICAgIGludCAoKikgKAoKICAgICAgICAgICAgIERpc3BsYXkqCgogICAgICAgICAgICApCgopKSgK
CiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIEF0b20gWEludGVybkF0b20oCgogICAgRGlzcGxheSog
LAogICAgY29uc3QgY2hhciogLAogICAgaW50CgopOwpleHRlcm4gaW50IFhJbnRlcm5BdG9tcygK
CiAgICBEaXNwbGF5KiAsCiAgICBjaGFyKiogLAogICAgaW50ICwKICAgIGludCAsCiAgICBBdG9t
KgoKKTsKZXh0ZXJuIENvbG9ybWFwIFhDb3B5Q29sb3JtYXBBbmRGcmVlKAoKICAgIERpc3BsYXkq
ICwKICAgIENvbG9ybWFwCgopOwpleHRlcm4gQ29sb3JtYXAgWENyZWF0ZUNvbG9ybWFwKAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBWaXN1YWwqICwKICAgIGludAoKKTsKZXh0ZXJu
IEN1cnNvciBYQ3JlYXRlUGl4bWFwQ3Vyc29yKAoKICAgIERpc3BsYXkqICwKICAgIFBpeG1hcCAs
CiAgICBQaXhtYXAgLAogICAgWENvbG9yKiAsCiAgICBYQ29sb3IqICwKICAgIHVuc2lnbmVkIGlu
dCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CmV4dGVybiBDdXJzb3IgWENyZWF0ZUdseXBoQ3Vyc29y
KAoKICAgIERpc3BsYXkqICwKICAgIEZvbnQgLAogICAgRm9udCAsCiAgICB1bnNpZ25lZCBpbnQg
LAogICAgdW5zaWduZWQgaW50ICwKICAgIFhDb2xvciBjb25zdCAqICwKICAgIFhDb2xvciBjb25z
dCAqCgopOwpleHRlcm4gQ3Vyc29yIFhDcmVhdGVGb250Q3Vyc29yKAoKICAgIERpc3BsYXkqICwK
ICAgIHVuc2lnbmVkIGludAoKKTsKZXh0ZXJuIEZvbnQgWExvYWRGb250KAoKICAgIERpc3BsYXkq
ICwKICAgIGNvbnN0IGNoYXIqCgopOwpleHRlcm4gR0MgWENyZWF0ZUdDKAoKICAgIERpc3BsYXkq
ICwKICAgIERyYXdhYmxlICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgWEdDVmFsdWVzKgoKKTsK
ZXh0ZXJuIEdDb250ZXh0IFhHQ29udGV4dEZyb21HQygKCiAgICBHQwoKKTsKZXh0ZXJuIHZvaWQg
WEZsdXNoR0MoCgogICAgRGlzcGxheSogLAogICAgR0MKCik7CmV4dGVybiBQaXhtYXAgWENyZWF0
ZVBpeG1hcCgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICB1bnNpZ25lZCBpbnQg
LAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKZXh0ZXJuIFBpeG1hcCBY
Q3JlYXRlQml0bWFwRnJvbURhdGEoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAg
Y29uc3QgY2hhciogLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKZXh0
ZXJuIFBpeG1hcCBYQ3JlYXRlUGl4bWFwRnJvbUJpdG1hcERhdGEoCgogICAgRGlzcGxheSogLAog
ICAgRHJhd2FibGUgLAogICAgY2hhciogLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgdW5zaWdu
ZWQgaW50CgopOwpleHRlcm4gV2luZG93IFhDcmVhdGVTaW1wbGVXaW5kb3coCgogICAgRGlzcGxh
eSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwK
ICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgbG9uZyAs
CiAgICB1bnNpZ25lZCBsb25nCgopOwpleHRlcm4gV2luZG93IFhHZXRTZWxlY3Rpb25Pd25lcigK
CiAgICBEaXNwbGF5KiAsCiAgICBBdG9tCgopOwpleHRlcm4gV2luZG93IFhDcmVhdGVXaW5kb3co
CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50
ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBWaXN1YWwqICwKICAgIHVuc2lnbmVkIGxvbmcgLAog
ICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMqCgopOwpleHRlcm4gQ29sb3JtYXAgKlhMaXN0SW5zdGFs
bGVkQ29sb3JtYXBzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQqCgopOwpl
eHRlcm4gY2hhciAqKlhMaXN0Rm9udHMoCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciog
LAogICAgaW50ICwKICAgIGludCoKCik7CmV4dGVybiBjaGFyICoqWExpc3RGb250c1dpdGhJbmZv
KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBpbnQqICwK
ICAgIFhGb250U3RydWN0KioKCik7CmV4dGVybiBjaGFyICoqWEdldEZvbnRQYXRoKAoKICAgIERp
c3BsYXkqICwKICAgIGludCoKCik7CmV4dGVybiBjaGFyICoqWExpc3RFeHRlbnNpb25zKAoKICAg
IERpc3BsYXkqICwKICAgIGludCoKCik7CmV4dGVybiBBdG9tICpYTGlzdFByb3BlcnRpZXMoCgog
ICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCoKCik7CmV4dGVybiBYSG9zdEFkZHJl
c3MgKlhMaXN0SG9zdHMoCgogICAgRGlzcGxheSogLAogICAgaW50KiAsCiAgICBpbnQqCgopOwpl
eHRlcm4gS2V5U3ltIFhLZXljb2RlVG9LZXlzeW0oCgogICAgRGlzcGxheSogLAoKICAgIHVuc2ln
bmVkIGludCAsCgoKCiAgICBpbnQKCik7CmV4dGVybiBLZXlTeW0gWExvb2t1cEtleXN5bSgKCiAg
ICBYS2V5RXZlbnQqICwKICAgIGludAoKKTsKZXh0ZXJuIEtleVN5bSAqWEdldEtleWJvYXJkTWFw
cGluZygKCiAgICBEaXNwbGF5KiAsCgogICAgdW5zaWduZWQgaW50ICwKCgoKICAgIGludCAsCiAg
ICBpbnQqCgopOwpleHRlcm4gS2V5U3ltIFhTdHJpbmdUb0tleXN5bSgKCiAgICBjb25zdCBjaGFy
KgoKKTsKZXh0ZXJuIGxvbmcgWE1heFJlcXVlc3RTaXplKAoKICAgIERpc3BsYXkqCgopOwpleHRl
cm4gbG9uZyBYRXh0ZW5kZWRNYXhSZXF1ZXN0U2l6ZSgKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJu
IGNoYXIgKlhSZXNvdXJjZU1hbmFnZXJTdHJpbmcoCgogICAgRGlzcGxheSoKCik7CmV4dGVybiBj
aGFyICpYU2NyZWVuUmVzb3VyY2VTdHJpbmcoCgogICAgICAgIFNjcmVlbioKCik7CmV4dGVybiB1
bnNpZ25lZCBsb25nIFhEaXNwbGF5TW90aW9uQnVmZmVyU2l6ZSgKCiAgICBEaXNwbGF5KgoKKTsK
ZXh0ZXJuIFZpc3VhbElEIFhWaXN1YWxJREZyb21WaXN1YWwoCgogICAgVmlzdWFsKgoKKTsKCgoK
ZXh0ZXJuIGludCBYSW5pdFRocmVhZHMoCgogICAgdm9pZAoKKTsKCmV4dGVybiB2b2lkIFhMb2Nr
RGlzcGxheSgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiB2b2lkIFhVbmxvY2tEaXNwbGF5KAoK
ICAgIERpc3BsYXkqCgopOwoKCgpleHRlcm4gWEV4dENvZGVzICpYSW5pdEV4dGVuc2lvbigKCiAg
ICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKgoKKTsKCmV4dGVybiBYRXh0Q29kZXMgKlhBZGRF
eHRlbnNpb24oCgogICAgRGlzcGxheSoKCik7CmV4dGVybiBYRXh0RGF0YSAqWEZpbmRPbkV4dGVu
c2lvbkxpc3QoCgogICAgWEV4dERhdGEqKiAsCiAgICBpbnQKCik7CmV4dGVybiBYRXh0RGF0YSAq
KlhFSGVhZE9mRXh0ZW5zaW9uTGlzdCgKCiAgICBYRURhdGFPYmplY3QKCik7CgoKZXh0ZXJuIFdp
bmRvdyBYUm9vdFdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiBXaW5k
b3cgWERlZmF1bHRSb290V2luZG93KAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gV2luZG93IFhS
b290V2luZG93T2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKZXh0ZXJuIFZpc3VhbCAqWERlZmF1
bHRWaXN1YWwoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwpleHRlcm4gVmlzdWFsICpYRGVm
YXVsdFZpc3VhbE9mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CmV4dGVybiBHQyBYRGVmYXVsdEdD
KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKZXh0ZXJuIEdDIFhEZWZhdWx0R0NPZlNjcmVl
bigKCiAgICBTY3JlZW4qCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYQmxhY2tQaXhlbCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhXaGl0ZVBpeGVs
KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWEFsbFBs
YW5lcygKCiAgICB2b2lkCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYQmxhY2tQaXhlbE9mU2Ny
ZWVuKAoKICAgIFNjcmVlbioKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhXaGl0ZVBpeGVsT2ZT
Y3JlZW4oCgogICAgU2NyZWVuKgoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWE5leHRSZXF1ZXN0
KAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYTGFzdEtub3duUmVxdWVz
dFByb2Nlc3NlZCgKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIGNoYXIgKlhTZXJ2ZXJWZW5kb3Io
CgogICAgRGlzcGxheSoKCik7CmV4dGVybiBjaGFyICpYRGlzcGxheVN0cmluZygKCiAgICBEaXNw
bGF5KgoKKTsKZXh0ZXJuIENvbG9ybWFwIFhEZWZhdWx0Q29sb3JtYXAoCgogICAgRGlzcGxheSog
LAogICAgaW50CgopOwpleHRlcm4gQ29sb3JtYXAgWERlZmF1bHRDb2xvcm1hcE9mU2NyZWVuKAoK
ICAgIFNjcmVlbioKCik7CmV4dGVybiBEaXNwbGF5ICpYRGlzcGxheU9mU2NyZWVuKAoKICAgIFNj
cmVlbioKCik7CmV4dGVybiBTY3JlZW4gKlhTY3JlZW5PZkRpc3BsYXkoCgogICAgRGlzcGxheSog
LAogICAgaW50CgopOwpleHRlcm4gU2NyZWVuICpYRGVmYXVsdFNjcmVlbk9mRGlzcGxheSgKCiAg
ICBEaXNwbGF5KgoKKTsKZXh0ZXJuIGxvbmcgWEV2ZW50TWFza09mU2NyZWVuKAoKICAgIFNjcmVl
bioKCik7CgpleHRlcm4gaW50IFhTY3JlZW5OdW1iZXJPZlNjcmVlbigKCiAgICBTY3JlZW4qCgop
OwoKdHlwZWRlZiBpbnQgKCpYRXJyb3JIYW5kbGVyKSAoCgogICAgRGlzcGxheSogLAogICAgWEVy
cm9yRXZlbnQqCgopOwoKZXh0ZXJuIFhFcnJvckhhbmRsZXIgWFNldEVycm9ySGFuZGxlciAoCgog
ICAgWEVycm9ySGFuZGxlcgoKKTsKCgp0eXBlZGVmIGludCAoKlhJT0Vycm9ySGFuZGxlcikgKAoK
ICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIFhJT0Vycm9ySGFuZGxlciBYU2V0SU9FcnJvckhhbmRs
ZXIgKAoKICAgIFhJT0Vycm9ySGFuZGxlcgoKKTsKCgpleHRlcm4gWFBpeG1hcEZvcm1hdFZhbHVl
cyAqWExpc3RQaXhtYXBGb3JtYXRzKAoKICAgIERpc3BsYXkqICwKICAgIGludCoKCik7CmV4dGVy
biBpbnQgKlhMaXN0RGVwdGhzKAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBpbnQqCgop
OwoKCgpleHRlcm4gaW50IFhSZWNvbmZpZ3VyZVdNV2luZG93KAoKICAgIERpc3BsYXkqICwKICAg
IFdpbmRvdyAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIFhXaW5kb3dDaGFuZ2Vz
KgoKKTsKCmV4dGVybiBpbnQgWEdldFdNUHJvdG9jb2xzKAoKICAgIERpc3BsYXkqICwKICAgIFdp
bmRvdyAsCiAgICBBdG9tKiogLAogICAgaW50KgoKKTsKZXh0ZXJuIGludCBYU2V0V01Qcm90b2Nv
bHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIEF0b20qICwKICAgIGludAoKKTsK
ZXh0ZXJuIGludCBYSWNvbmlmeVdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAog
ICAgaW50CgopOwpleHRlcm4gaW50IFhXaXRoZHJhd1dpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAg
ICBXaW5kb3cgLAogICAgaW50CgopOwpleHRlcm4gaW50IFhHZXRDb21tYW5kKAoKICAgIERpc3Bs
YXkqICwKICAgIFdpbmRvdyAsCiAgICBjaGFyKioqICwKICAgIGludCoKCik7CmV4dGVybiBpbnQg
WEdldFdNQ29sb3JtYXBXaW5kb3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBX
aW5kb3cqKiAsCiAgICBpbnQqCgopOwpleHRlcm4gaW50IFhTZXRXTUNvbG9ybWFwV2luZG93cygK
CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93KiAsCiAgICBpbnQKCik7CmV4
dGVybiB2b2lkIFhGcmVlU3RyaW5nTGlzdCgKCiAgICBjaGFyKioKCik7CmV4dGVybiBpbnQgWFNl
dFRyYW5zaWVudEZvckhpbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRv
dwoKKTsKCgoKZXh0ZXJuIGludCBYQWN0aXZhdGVTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KgoK
KTsKCmV4dGVybiBpbnQgWEFkZEhvc3QoCgogICAgRGlzcGxheSogLAogICAgWEhvc3RBZGRyZXNz
KgoKKTsKCmV4dGVybiBpbnQgWEFkZEhvc3RzKAoKICAgIERpc3BsYXkqICwKICAgIFhIb3N0QWRk
cmVzcyogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYQWRkVG9FeHRlbnNpb25MaXN0KAoKICAg
IHN0cnVjdCBfWEV4dERhdGEqKiAsCiAgICBYRXh0RGF0YSoKCik7CgpleHRlcm4gaW50IFhBZGRU
b1NhdmVTZXQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYQWxs
b2NDb2xvcigKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICBYQ29sb3IqCgopOwoK
ZXh0ZXJuIGludCBYQWxsb2NDb2xvckNlbGxzKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFw
ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBsb25nKiAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAg
dW5zaWduZWQgbG9uZyogLAogICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYQWxsb2ND
b2xvclBsYW5lcygKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICBpbnQgLAogICAg
dW5zaWduZWQgbG9uZyogLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50ICwK
ICAgIHVuc2lnbmVkIGxvbmcqICwKICAgIHVuc2lnbmVkIGxvbmcqICwKICAgIHVuc2lnbmVkIGxv
bmcqCgopOwoKZXh0ZXJuIGludCBYQWxsb2NOYW1lZENvbG9yKAoKICAgIERpc3BsYXkqICwKICAg
IENvbG9ybWFwICwKICAgIGNvbnN0IGNoYXIqICwKICAgIFhDb2xvciogLAogICAgWENvbG9yKgoK
KTsKCmV4dGVybiBpbnQgWEFsbG93RXZlbnRzKAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAg
ICBUaW1lCgopOwoKZXh0ZXJuIGludCBYQXV0b1JlcGVhdE9mZigKCiAgICBEaXNwbGF5KgoKKTsK
CmV4dGVybiBpbnQgWEF1dG9SZXBlYXRPbigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQg
WEJlbGwoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYQml0bWFwQml0
T3JkZXIoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhCaXRtYXBQYWQoCgogICAgRGlz
cGxheSoKCik7CgpleHRlcm4gaW50IFhCaXRtYXBVbml0KAoKICAgIERpc3BsYXkqCgopOwoKZXh0
ZXJuIGludCBYQ2VsbHNPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBYQ2hh
bmdlQWN0aXZlUG9pbnRlckdyYWIoCgogICAgRGlzcGxheSogLAogICAgdW5zaWduZWQgaW50ICwK
ICAgIEN1cnNvciAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGludCBYQ2hhbmdlR0MoCgogICAgRGlz
cGxheSogLAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBYR0NWYWx1ZXMqCgopOwoK
ZXh0ZXJuIGludCBYQ2hhbmdlS2V5Ym9hcmRDb250cm9sKAoKICAgIERpc3BsYXkqICwKICAgIHVu
c2lnbmVkIGxvbmcgLAogICAgWEtleWJvYXJkQ29udHJvbCoKCik7CgpleHRlcm4gaW50IFhDaGFu
Z2VLZXlib2FyZE1hcHBpbmcoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGludCAsCiAg
ICBLZXlTeW0qICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWENoYW5nZVBvaW50ZXJDb250cm9s
KAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhDaGFuZ2VQcm9wZXJ0eSgKCiAgICBEaXNwbGF5KiAs
CiAgICBXaW5kb3cgLAogICAgQXRvbSAsCiAgICBBdG9tICwKICAgIGludCAsCiAgICBpbnQgLAog
ICAgY29uc3QgdW5zaWduZWQgY2hhciogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYQ2hhbmdl
U2F2ZVNldCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50CgopOwoKZXh0ZXJu
IGludCBYQ2hhbmdlV2luZG93QXR0cmlidXRlcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBYU2V0V2luZG93QXR0cmlidXRlcyoKCik7CgpleHRl
cm4gaW50IFhDaGVja0lmRXZlbnQoCgogICAgRGlzcGxheSogLAogICAgWEV2ZW50KiAsCiAgICBp
bnQgKCopICgKCiAgICAgICAgICAgICAgIERpc3BsYXkqICwKICAgICAgICAgICAgICAgWEV2ZW50
KiAsCiAgICAgICAgICAgICAgIFhQb2ludGVyCgogICAgICAgICAgICAgKSAsCiAgICBYUG9pbnRl
cgoKKTsKCmV4dGVybiBpbnQgWENoZWNrTWFza0V2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIGxv
bmcgLAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBpbnQgWENoZWNrVHlwZWRFdmVudCgKCiAgICBE
aXNwbGF5KiAsCiAgICBpbnQgLAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBpbnQgWENoZWNrVHlw
ZWRXaW5kb3dFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAg
IFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhDaGVja1dpbmRvd0V2ZW50KAoKICAgIERpc3BsYXkq
ICwKICAgIFdpbmRvdyAsCiAgICBsb25nICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhD
aXJjdWxhdGVTdWJ3aW5kb3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQK
Cik7CgpleHRlcm4gaW50IFhDaXJjdWxhdGVTdWJ3aW5kb3dzRG93bigKCiAgICBEaXNwbGF5KiAs
CiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhDaXJjdWxhdGVTdWJ3aW5kb3dzVXAoCgogICAg
RGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYQ2xlYXJBcmVhKAoKICAgIERp
c3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGlu
dCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYQ2xlYXJXaW5k
b3coCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYQ2xvc2VEaXNw
bGF5KAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYQ29uZmlndXJlV2luZG93KAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgWFdpbmRvd0No
YW5nZXMqCgopOwoKZXh0ZXJuIGludCBYQ29ubmVjdGlvbk51bWJlcigKCiAgICBEaXNwbGF5KgoK
KTsKCmV4dGVybiBpbnQgWENvbnZlcnRTZWxlY3Rpb24oCgogICAgRGlzcGxheSogLAogICAgQXRv
bSAsCiAgICBBdG9tICwKICAgIEF0b20gLAogICAgV2luZG93ICwKICAgIFRpbWUKCik7CgpleHRl
cm4gaW50IFhDb3B5QXJlYSgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBEcmF3
YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAg
ICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWENvcHlH
QygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIEdDCgop
OwoKZXh0ZXJuIGludCBYQ29weVBsYW5lKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwK
ICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQg
aW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVk
IGxvbmcKCik7CgpleHRlcm4gaW50IFhEZWZhdWx0RGVwdGgoCgogICAgRGlzcGxheSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYRGVmYXVsdERlcHRoT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoK
KTsKCmV4dGVybiBpbnQgWERlZmF1bHRTY3JlZW4oCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4g
aW50IFhEZWZpbmVDdXJzb3IoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIEN1cnNv
cgoKKTsKCmV4dGVybiBpbnQgWERlbGV0ZVByb3BlcnR5KAoKICAgIERpc3BsYXkqICwKICAgIFdp
bmRvdyAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYRGVzdHJveVdpbmRvdygKCiAgICBEaXNw
bGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhEZXN0cm95U3Vid2luZG93cygKCiAg
ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhEb2VzQmFja2luZ1N0b3Jl
KAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50IFhEb2VzU2F2ZVVuZGVycygKCiAgICBTY3Jl
ZW4qCgopOwoKZXh0ZXJuIGludCBYRGlzYWJsZUFjY2Vzc0NvbnRyb2woCgogICAgRGlzcGxheSoK
Cik7CgoKZXh0ZXJuIGludCBYRGlzcGxheUNlbGxzKAoKICAgIERpc3BsYXkqICwKICAgIGludAoK
KTsKCmV4dGVybiBpbnQgWERpc3BsYXlIZWlnaHQoCgogICAgRGlzcGxheSogLAogICAgaW50Cgop
OwoKZXh0ZXJuIGludCBYRGlzcGxheUhlaWdodE1NKAoKICAgIERpc3BsYXkqICwKICAgIGludAoK
KTsKCmV4dGVybiBpbnQgWERpc3BsYXlLZXljb2RlcygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQq
ICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhEaXNwbGF5UGxhbmVzKAoKICAgIERpc3BsYXkq
ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERpc3BsYXlXaWR0aCgKCiAgICBEaXNwbGF5KiAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEaXNwbGF5V2lkdGhNTSgKCiAgICBEaXNwbGF5KiAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3QXJjKAoKICAgIERpc3BsYXkqICwKICAgIERy
YXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwK
ICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJh
d0FyY3MoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWEFyYyog
LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0ltYWdlU3RyaW5nKAoKICAgIERpc3BsYXkq
ICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3Qg
Y2hhciogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0ltYWdlU3RyaW5nMTYoCgogICAg
RGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAg
ICBjb25zdCBYQ2hhcjJiKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3TGluZSgKCiAg
ICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwK
ICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3TGluZXMoCgogICAgRGlzcGxh
eSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWFBvaW50KiAsCiAgICBpbnQgLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1BvaW50KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdh
YmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3UG9p
bnRzKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhQb2ludCog
LAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdSZWN0YW5nbGUoCgogICAg
RGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAg
ICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1Jl
Y3RhbmdsZXMoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWFJl
Y3RhbmdsZSogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1NlZ21lbnRzKAoKICAgIERp
c3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhTZWdtZW50KiAsCiAgICBpbnQK
Cik7CgpleHRlcm4gaW50IFhEcmF3U3RyaW5nKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl
ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3QgY2hhciogLAogICAgaW50
CgopOwoKZXh0ZXJuIGludCBYRHJhd1N0cmluZzE2KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdh
YmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3QgWENoYXIyYiogLAog
ICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1RleHQoCgogICAgRGlzcGxheSogLAogICAgRHJh
d2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBYVGV4dEl0ZW0qICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdUZXh0MTYoCgogICAgRGlzcGxheSogLAogICAgRHJh
d2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBYVGV4dEl0ZW0xNiogLAog
ICAgaW50CgopOwoKZXh0ZXJuIGludCBYRW5hYmxlQWNjZXNzQ29udHJvbCgKCiAgICBEaXNwbGF5
KgoKKTsKCmV4dGVybiBpbnQgWEV2ZW50c1F1ZXVlZCgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQK
Cik7CgpleHRlcm4gaW50IFhGZXRjaE5hbWUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwK
ICAgIGNoYXIqKgoKKTsKCmV4dGVybiBpbnQgWEZpbGxBcmMoCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQg
LAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhG
aWxsQXJjcygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYQXJj
KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhGaWxsUG9seWdvbigKCiAgICBEaXNwbGF5KiAs
CiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYUG9pbnQqICwKICAgIGludCAsCiAgICBpbnQg
LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRmlsbFJlY3RhbmdsZSgKCiAgICBEaXNwbGF5KiAs
CiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CgpleHRlcm4gaW50IFhGaWxsUmVjdGFuZ2xlcygK
CiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYUmVjdGFuZ2xlKiAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhGbHVzaCgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVy
biBpbnQgWEZvcmNlU2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwoKZXh0
ZXJuIGludCBYRnJlZSgKCiAgICB2b2lkKgoKKTsKCmV4dGVybiBpbnQgWEZyZWVDb2xvcm1hcCgK
CiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcAoKKTsKCmV4dGVybiBpbnQgWEZyZWVDb2xvcnMo
CgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgdW5zaWduZWQgbG9uZyogLAogICAg
aW50ICwKICAgIHVuc2lnbmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhGcmVlQ3Vyc29yKAoKICAg
IERpc3BsYXkqICwKICAgIEN1cnNvcgoKKTsKCmV4dGVybiBpbnQgWEZyZWVFeHRlbnNpb25MaXN0
KAoKICAgIGNoYXIqKgoKKTsKCmV4dGVybiBpbnQgWEZyZWVGb250KAoKICAgIERpc3BsYXkqICwK
ICAgIFhGb250U3RydWN0KgoKKTsKCmV4dGVybiBpbnQgWEZyZWVGb250SW5mbygKCiAgICBjaGFy
KiogLAogICAgWEZvbnRTdHJ1Y3QqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEZyZWVGb250
TmFtZXMoCgogICAgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYRnJlZUZvbnRQYXRoKAoKICAgIGNo
YXIqKgoKKTsKCmV4dGVybiBpbnQgWEZyZWVHQygKCiAgICBEaXNwbGF5KiAsCiAgICBHQwoKKTsK
CmV4dGVybiBpbnQgWEZyZWVNb2RpZmllcm1hcCgKCiAgICBYTW9kaWZpZXJLZXltYXAqCgopOwoK
ZXh0ZXJuIGludCBYRnJlZVBpeG1hcCgKCiAgICBEaXNwbGF5KiAsCiAgICBQaXhtYXAKCik7Cgpl
eHRlcm4gaW50IFhHZW9tZXRyeSgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgY29uc3Qg
Y2hhciogLAogICAgY29uc3QgY2hhciogLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQqICwK
ICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYR2V0RXJyb3JE
YXRhYmFzZVRleHQoCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgY29uc3Qg
Y2hhciogLAogICAgY29uc3QgY2hhciogLAogICAgY2hhciogLAogICAgaW50CgopOwoKZXh0ZXJu
IGludCBYR2V0RXJyb3JUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBjaGFyKiAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhHZXRGb250UHJvcGVydHkoCgogICAgWEZvbnRTdHJ1
Y3QqICwKICAgIEF0b20gLAogICAgdW5zaWduZWQgbG9uZyoKCik7CgpleHRlcm4gaW50IFhHZXRH
Q1ZhbHVlcygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAg
IFhHQ1ZhbHVlcyoKCik7CgpleHRlcm4gaW50IFhHZXRHZW9tZXRyeSgKCiAgICBEaXNwbGF5KiAs
CiAgICBEcmF3YWJsZSAsCiAgICBXaW5kb3cqICwKICAgIGludCogLAogICAgaW50KiAsCiAgICB1
bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQgaW50KiAsCiAg
ICB1bnNpZ25lZCBpbnQqCgopOwoKZXh0ZXJuIGludCBYR2V0SWNvbk5hbWUoCgogICAgRGlzcGxh
eSogLAogICAgV2luZG93ICwKICAgIGNoYXIqKgoKKTsKCmV4dGVybiBpbnQgWEdldElucHV0Rm9j
dXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGlu
dCBYR2V0S2V5Ym9hcmRDb250cm9sKAoKICAgIERpc3BsYXkqICwKICAgIFhLZXlib2FyZFN0YXRl
KgoKKTsKCmV4dGVybiBpbnQgWEdldFBvaW50ZXJDb250cm9sKAoKICAgIERpc3BsYXkqICwKICAg
IGludCogLAogICAgaW50KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYR2V0UG9pbnRlck1h
cHBpbmcoCgogICAgRGlzcGxheSogLAogICAgdW5zaWduZWQgY2hhciogLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYR2V0U2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSogLAogICAgaW50KiAsCiAg
ICBpbnQqICwKICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdldFRyYW5zaWVu
dEZvckhpbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyoKCik7Cgpl
eHRlcm4gaW50IFhHZXRXaW5kb3dQcm9wZXJ0eSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgQXRvbSAsCiAgICBsb25nICwKICAgIGxvbmcgLAogICAgaW50ICwKICAgIEF0b20gLAog
ICAgQXRvbSogLAogICAgaW50KiAsCiAgICB1bnNpZ25lZCBsb25nKiAsCiAgICB1bnNpZ25lZCBs
b25nKiAsCiAgICB1bnNpZ25lZCBjaGFyKioKCik7CgpleHRlcm4gaW50IFhHZXRXaW5kb3dBdHRy
aWJ1dGVzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYV2luZG93QXR0cmlidXRl
cyoKCik7CgpleHRlcm4gaW50IFhHcmFiQnV0dG9uKAoKICAgIERpc3BsYXkqICwKICAgIHVuc2ln
bmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICB1
bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBXaW5kb3cgLAogICAgQ3Vyc29y
CgopOwoKZXh0ZXJuIGludCBYR3JhYktleSgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAg
dW5zaWduZWQgaW50ICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludAoK
KTsKCmV4dGVybiBpbnQgWEdyYWJLZXlib2FyZCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgVGltZQoKKTsKCmV4dGVybiBpbnQg
WEdyYWJQb2ludGVyKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAg
dW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgV2luZG93ICwKICAgIEN1cnNv
ciAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGludCBYR3JhYlNlcnZlcigKCiAgICBEaXNwbGF5KgoK
KTsKCmV4dGVybiBpbnQgWEhlaWdodE1NT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVy
biBpbnQgWEhlaWdodE9mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50IFhJZkV2
ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCogLAogICAgaW50ICgqKSAoCgogICAgICAg
ICAgICAgICBEaXNwbGF5KiAsCiAgICAgICAgICAgICAgIFhFdmVudCogLAogICAgICAgICAgICAg
ICBYUG9pbnRlcgoKICAgICAgICAgICAgICkgLAogICAgWFBvaW50ZXIKCik7CgpleHRlcm4gaW50
IFhJbWFnZUJ5dGVPcmRlcigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWEluc3RhbGxD
b2xvcm1hcCgKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcAoKKTsKCmV4dGVybiBLZXlDb2Rl
IFhLZXlzeW1Ub0tleWNvZGUoCgogICAgRGlzcGxheSogLAogICAgS2V5U3ltCgopOwoKZXh0ZXJu
IGludCBYS2lsbENsaWVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBYSUQKCik7CgpleHRlcm4gaW50
IFhMb29rdXBDb2xvcigKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICBjb25zdCBj
aGFyKiAsCiAgICBYQ29sb3IqICwKICAgIFhDb2xvcioKCik7CgpleHRlcm4gaW50IFhMb3dlcldp
bmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhNYXBSYWlz
ZWQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYTWFwU3Vid2lu
ZG93cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhNYXBXaW5k
b3coCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYTWFza0V2ZW50
KAoKICAgIERpc3BsYXkqICwKICAgIGxvbmcgLAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBpbnQg
WE1heENtYXBzT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWE1pbkNtYXBz
T2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWE1vdmVSZXNpemVXaW5kb3co
CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWE1vdmVXaW5kb3co
CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRl
cm4gaW50IFhOZXh0RXZlbnQoCgogICAgRGlzcGxheSogLAogICAgWEV2ZW50KgoKKTsKCmV4dGVy
biBpbnQgWE5vT3AoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhQYXJzZUNvbG9yKAoK
ICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIGNvbnN0IGNoYXIqICwKICAgIFhDb2xv
cioKCik7CgpleHRlcm4gaW50IFhQYXJzZUdlb21ldHJ5KAoKICAgIGNvbnN0IGNoYXIqICwKICAg
IGludCogLAogICAgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCoK
Cik7CgpleHRlcm4gaW50IFhQZWVrRXZlbnQoCgogICAgRGlzcGxheSogLAogICAgWEV2ZW50KgoK
KTsKCmV4dGVybiBpbnQgWFBlZWtJZkV2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCog
LAogICAgaW50ICgqKSAoCgogICAgICAgICAgICAgICBEaXNwbGF5KiAsCiAgICAgICAgICAgICAg
IFhFdmVudCogLAogICAgICAgICAgICAgICBYUG9pbnRlcgoKICAgICAgICAgICAgICkgLAogICAg
WFBvaW50ZXIKCik7CgpleHRlcm4gaW50IFhQZW5kaW5nKAoKICAgIERpc3BsYXkqCgopOwoKZXh0
ZXJuIGludCBYUGxhbmVzT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKCik7CgpleHRlcm4gaW50IFhQ
cm90b2NvbFJldmlzaW9uKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYUHJvdG9jb2xW
ZXJzaW9uKAoKICAgIERpc3BsYXkqCgopOwoKCmV4dGVybiBpbnQgWFB1dEJhY2tFdmVudCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBYRXZlbnQqCgopOwoKZXh0ZXJuIGludCBYUHV0SW1hZ2UoCgogICAg
RGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWEltYWdlKiAsCiAgICBpbnQg
LAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVu
c2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWFFMZW5ndGgoCgogICAgRGlzcGxheSoKCik7Cgpl
eHRlcm4gaW50IFhRdWVyeUJlc3RDdXJzb3IoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUg
LAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQq
ICwKICAgIHVuc2lnbmVkIGludCoKCik7CgpleHRlcm4gaW50IFhRdWVyeUJlc3RTaXplKAoKICAg
IERpc3BsYXkqICwKICAgIGludCAsCiAgICBEcmF3YWJsZSAsCiAgICB1bnNpZ25lZCBpbnQgLAog
ICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQgaW50KgoK
KTsKCmV4dGVybiBpbnQgWFF1ZXJ5QmVzdFN0aXBwbGUoCgogICAgRGlzcGxheSogLAogICAgRHJh
d2FibGUgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25l
ZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCoKCik7CgpleHRlcm4gaW50IFhRdWVyeUJlc3RUaWxl
KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1
bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQqCgopOwoK
ZXh0ZXJuIGludCBYUXVlcnlDb2xvcigKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAg
ICBYQ29sb3IqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlDb2xvcnMoCgogICAgRGlzcGxheSogLAog
ICAgQ29sb3JtYXAgLAogICAgWENvbG9yKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhRdWVy
eUV4dGVuc2lvbigKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQqICwK
ICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5S2V5bWFwKAoKICAgIERp
c3BsYXkqICwKICAgIGNoYXIgWzMyXQoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5UG9pbnRlcigKCiAg
ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93KiAsCiAgICBXaW5kb3cqICwKICAg
IGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgdW5zaWduZWQgaW50
KgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5VGV4dEV4dGVudHMoCgogICAgRGlzcGxheSogLAogICAg
WElEICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBpbnQqICwKICAgIGludCogLAog
ICAgaW50KiAsCiAgICBYQ2hhclN0cnVjdCoKCik7CgpleHRlcm4gaW50IFhRdWVyeVRleHRFeHRl
bnRzMTYoCgogICAgRGlzcGxheSogLAogICAgWElEICwKICAgIGNvbnN0IFhDaGFyMmIqICwKICAg
IGludCAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBYQ2hhclN0cnVjdCoK
Cik7CgpleHRlcm4gaW50IFhRdWVyeVRyZWUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwK
ICAgIFdpbmRvdyogLAogICAgV2luZG93KiAsCiAgICBXaW5kb3cqKiAsCiAgICB1bnNpZ25lZCBp
bnQqCgopOwoKZXh0ZXJuIGludCBYUmFpc2VXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2lu
ZG93CgopOwoKZXh0ZXJuIGludCBYUmVhZEJpdG1hcEZpbGUoCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgY29uc3QgY2hhciogLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNp
Z25lZCBpbnQqICwKICAgIFBpeG1hcCogLAogICAgaW50KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJu
IGludCBYUmVhZEJpdG1hcEZpbGVEYXRhKAoKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVk
IGludCogLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBjaGFyKiogLAogICAgaW50
KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYUmViaW5kS2V5c3ltKAoKICAgIERpc3BsYXkq
ICwKICAgIEtleVN5bSAsCiAgICBLZXlTeW0qICwKICAgIGludCAsCiAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhSZWNvbG9yQ3Vyc29yKAoKICAgIERp
c3BsYXkqICwKICAgIEN1cnNvciAsCiAgICBYQ29sb3IqICwKICAgIFhDb2xvcioKCik7CgpleHRl
cm4gaW50IFhSZWZyZXNoS2V5Ym9hcmRNYXBwaW5nKAoKICAgIFhNYXBwaW5nRXZlbnQqCgopOwoK
ZXh0ZXJuIGludCBYUmVtb3ZlRnJvbVNhdmVTZXQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93
CgopOwoKZXh0ZXJuIGludCBYUmVtb3ZlSG9zdCgKCiAgICBEaXNwbGF5KiAsCiAgICBYSG9zdEFk
ZHJlc3MqCgopOwoKZXh0ZXJuIGludCBYUmVtb3ZlSG9zdHMoCgogICAgRGlzcGxheSogLAogICAg
WEhvc3RBZGRyZXNzKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhSZXBhcmVudFdpbmRvdygK
CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBp
bnQKCik7CgpleHRlcm4gaW50IFhSZXNldFNjcmVlblNhdmVyKAoKICAgIERpc3BsYXkqCgopOwoK
ZXh0ZXJuIGludCBYUmVzaXplV2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAg
ICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYUmVzdGFj
a1dpbmRvd3MoCgogICAgRGlzcGxheSogLAogICAgV2luZG93KiAsCiAgICBpbnQKCik7CgpleHRl
cm4gaW50IFhSb3RhdGVCdWZmZXJzKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4dGVy
biBpbnQgWFJvdGF0ZVdpbmRvd1Byb3BlcnRpZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93
ICwKICAgIEF0b20qICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTY3JlZW5D
b3VudCgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWFNlbGVjdElucHV0KAoKICAgIERp
c3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBsb25nCgopOwoKZXh0ZXJuIGludCBYU2VuZEV2ZW50
KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgbG9uZyAsCiAgICBY
RXZlbnQqCgopOwoKZXh0ZXJuIGludCBYU2V0QWNjZXNzQ29udHJvbCgKCiAgICBEaXNwbGF5KiAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRBcmNNb2RlKAoKICAgIERpc3BsYXkqICwKICAg
IEdDICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldEJhY2tncm91bmQoCgogICAgRGlzcGxh
eSogLAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZwoKKTsKCmV4dGVybiBpbnQgWFNldENsaXBN
YXNrKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIFBpeG1hcAoKKTsKCmV4dGVybiBpbnQg
WFNldENsaXBPcmlnaW4oCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgaW50ICwKICAgIGlu
dAoKKTsKCmV4dGVybiBpbnQgWFNldENsaXBSZWN0YW5nbGVzKAoKICAgIERpc3BsYXkqICwKICAg
IEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAgaW50ICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWFNldENsb3NlRG93bk1vZGUoCgogICAgRGlzcGxheSogLAog
ICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Q29tbWFuZCgKCiAgICBEaXNwbGF5KiAsCiAgICBX
aW5kb3cgLAogICAgY2hhcioqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldERhc2hlcygK
CiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgY29uc3QgY2hhciogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYU2V0RmlsbFJ1bGUoCgogICAgRGlzcGxheSogLAogICAgR0Mg
LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0RmlsbFN0eWxlKAoKICAgIERpc3BsYXkqICwK
ICAgIEdDICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldEZvbnQoCgogICAgRGlzcGxheSog
LAogICAgR0MgLAogICAgRm9udAoKKTsKCmV4dGVybiBpbnQgWFNldEZvbnRQYXRoKAoKICAgIERp
c3BsYXkqICwKICAgIGNoYXIqKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRGb3JlZ3Jv
dW5kKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIHVuc2lnbmVkIGxvbmcKCik7CgpleHRl
cm4gaW50IFhTZXRGdW5jdGlvbigKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICBpbnQKCik7
CgpleHRlcm4gaW50IFhTZXRHcmFwaGljc0V4cG9zdXJlcygKCiAgICBEaXNwbGF5KiAsCiAgICBH
QyAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRJY29uTmFtZSgKCiAgICBEaXNwbGF5KiAs
CiAgICBXaW5kb3cgLAogICAgY29uc3QgY2hhcioKCik7CgpleHRlcm4gaW50IFhTZXRJbnB1dEZv
Y3VzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgVGltZQoKKTsK
CmV4dGVybiBpbnQgWFNldExpbmVBdHRyaWJ1dGVzKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwK
ICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVy
biBpbnQgWFNldE1vZGlmaWVyTWFwcGluZygKCiAgICBEaXNwbGF5KiAsCiAgICBYTW9kaWZpZXJL
ZXltYXAqCgopOwoKZXh0ZXJuIGludCBYU2V0UGxhbmVNYXNrKAoKICAgIERpc3BsYXkqICwKICAg
IEdDICwKICAgIHVuc2lnbmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZXRQb2ludGVyTWFwcGlu
ZygKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiAsCiAgICBpbnQKCik7
CgpleHRlcm4gaW50IFhTZXRTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAog
ICAgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRTZWxlY3Rpb25P
d25lcigKCiAgICBEaXNwbGF5KiAsCiAgICBBdG9tICwKICAgIFdpbmRvdyAsCiAgICBUaW1lCgop
OwoKZXh0ZXJuIGludCBYU2V0U3RhdGUoCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgdW5z
aWduZWQgbG9uZyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBs
b25nCgopOwoKZXh0ZXJuIGludCBYU2V0U3RpcHBsZSgKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAs
CiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50IFhTZXRTdWJ3aW5kb3dNb2RlKAoKICAgIERpc3Bs
YXkqICwKICAgIEdDICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldFRTT3JpZ2luKAoKICAg
IERpc3BsYXkqICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhT
ZXRUaWxlKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIFBpeG1hcAoKKTsKCmV4dGVybiBp
bnQgWFNldFdpbmRvd0JhY2tncm91bmQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IHVuc2lnbmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZXRXaW5kb3dCYWNrZ3JvdW5kUGl4bWFw
KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50
IFhTZXRXaW5kb3dCb3JkZXIoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIHVuc2ln
bmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZXRXaW5kb3dCb3JkZXJQaXhtYXAoCgogICAgRGlz
cGxheSogLAogICAgV2luZG93ICwKICAgIFBpeG1hcAoKKTsKCmV4dGVybiBpbnQgWFNldFdpbmRv
d0JvcmRlcldpZHRoKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICB1bnNpZ25lZCBp
bnQKCik7CgpleHRlcm4gaW50IFhTZXRXaW5kb3dDb2xvcm1hcCgKCiAgICBEaXNwbGF5KiAsCiAg
ICBXaW5kb3cgLAogICAgQ29sb3JtYXAKCik7CgpleHRlcm4gaW50IFhTdG9yZUJ1ZmZlcigKCiAg
ICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0
ZXJuIGludCBYU3RvcmVCeXRlcygKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAg
ICBpbnQKCik7CgpleHRlcm4gaW50IFhTdG9yZUNvbG9yKAoKICAgIERpc3BsYXkqICwKICAgIENv
bG9ybWFwICwKICAgIFhDb2xvcioKCik7CgpleHRlcm4gaW50IFhTdG9yZUNvbG9ycygKCiAgICBE
aXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICBYQ29sb3IqICwKICAgIGludAoKKTsKCmV4dGVy
biBpbnQgWFN0b3JlTmFtZSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgY29uc3Qg
Y2hhcioKCik7CgpleHRlcm4gaW50IFhTdG9yZU5hbWVkQ29sb3IoCgogICAgRGlzcGxheSogLAog
ICAgQ29sb3JtYXAgLAogICAgY29uc3QgY2hhciogLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBp
bnQKCik7CgpleHRlcm4gaW50IFhTeW5jKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4
dGVybiBpbnQgWFRleHRFeHRlbnRzKAoKICAgIFhGb250U3RydWN0KiAsCiAgICBjb25zdCBjaGFy
KiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgWENoYXJT
dHJ1Y3QqCgopOwoKZXh0ZXJuIGludCBYVGV4dEV4dGVudHMxNigKCiAgICBYRm9udFN0cnVjdCog
LAogICAgY29uc3QgWENoYXIyYiogLAogICAgaW50ICwKICAgIGludCogLAogICAgaW50KiAsCiAg
ICBpbnQqICwKICAgIFhDaGFyU3RydWN0KgoKKTsKCmV4dGVybiBpbnQgWFRleHRXaWR0aCgKCiAg
ICBYRm9udFN0cnVjdCogLAogICAgY29uc3QgY2hhciogLAogICAgaW50CgopOwoKZXh0ZXJuIGlu
dCBYVGV4dFdpZHRoMTYoCgogICAgWEZvbnRTdHJ1Y3QqICwKICAgIGNvbnN0IFhDaGFyMmIqICwK
ICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFRyYW5zbGF0ZUNvb3JkaW5hdGVzKAoKICAgIERpc3Bs
YXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAgICBp
bnQqICwKICAgIGludCogLAogICAgV2luZG93KgoKKTsKCmV4dGVybiBpbnQgWFVuZGVmaW5lQ3Vy
c29yKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWFVuZ3JhYkJ1
dHRvbigKCiAgICBEaXNwbGF5KiAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50
ICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWFVuZ3JhYktleSgKCiAgICBEaXNwbGF5KiAs
CiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQg
WFVuZ3JhYktleWJvYXJkKAoKICAgIERpc3BsYXkqICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50
IFhVbmdyYWJQb2ludGVyKAoKICAgIERpc3BsYXkqICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50
IFhVbmdyYWJTZXJ2ZXIoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhVbmluc3RhbGxD
b2xvcm1hcCgKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcAoKKTsKCmV4dGVybiBpbnQgWFVu
bG9hZEZvbnQoCgogICAgRGlzcGxheSogLAogICAgRm9udAoKKTsKCmV4dGVybiBpbnQgWFVubWFw
U3Vid2luZG93cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhV
bm1hcFdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhW
ZW5kb3JSZWxlYXNlKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYV2FycFBvaW50ZXIo
CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAg
aW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWFdpZHRoTU1PZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoK
ZXh0ZXJuIGludCBYV2lkdGhPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBY
V2luZG93RXZlbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGxvbmcgLAogICAg
WEV2ZW50KgoKKTsKCmV4dGVybiBpbnQgWFdyaXRlQml0bWFwRmlsZSgKCiAgICBEaXNwbGF5KiAs
CiAgICBjb25zdCBjaGFyKiAsCiAgICBQaXhtYXAgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVu
c2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU3VwcG9ydHNM
b2NhbGUgKHZvaWQpOwoKZXh0ZXJuIGNoYXIgKlhTZXRMb2NhbGVNb2RpZmllcnMoCiAgICBjb25z
dCBjaGFyKgopOwoKZXh0ZXJuIFhPTSBYT3Blbk9NKAoKICAgIERpc3BsYXkqICwKICAgIHN0cnVj
dCBfWHJtSGFzaEJ1Y2tldFJlYyogLAogICAgY29uc3QgY2hhciogLAogICAgY29uc3QgY2hhcioK
Cik7CgpleHRlcm4gaW50IFhDbG9zZU9NKAoKICAgIFhPTQoKKTsKCmV4dGVybiBjaGFyICpYU2V0
T01WYWx1ZXMoCgogICAgWE9NICwKICAgIC4uLgoKKTsKCmV4dGVybiBjaGFyICpYR2V0T01WYWx1
ZXMoCgogICAgWE9NICwKICAgIC4uLgoKKTsKCmV4dGVybiBEaXNwbGF5ICpYRGlzcGxheU9mT00o
CgogICAgWE9NCgopOwoKZXh0ZXJuIGNoYXIgKlhMb2NhbGVPZk9NKAoKICAgIFhPTQoKKTsKCmV4
dGVybiBYT0MgWENyZWF0ZU9DKAoKICAgIFhPTSAsCiAgICAuLi4KCik7CgpleHRlcm4gdm9pZCBY
RGVzdHJveU9DKAoKICAgIFhPQwoKKTsKCmV4dGVybiBYT00gWE9NT2ZPQygKCiAgICBYT0MKCik7
CgpleHRlcm4gY2hhciAqWFNldE9DVmFsdWVzKAoKICAgIFhPQyAsCiAgICAuLi4KCik7CgpleHRl
cm4gY2hhciAqWEdldE9DVmFsdWVzKAoKICAgIFhPQyAsCiAgICAuLi4KCik7CgpleHRlcm4gWEZv
bnRTZXQgWENyZWF0ZUZvbnRTZXQoCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAog
ICAgY2hhcioqKiAsCiAgICBpbnQqICwKICAgIGNoYXIqKgoKKTsKCmV4dGVybiB2b2lkIFhGcmVl
Rm9udFNldCgKCiAgICBEaXNwbGF5KiAsCiAgICBYRm9udFNldAoKKTsKCmV4dGVybiBpbnQgWEZv
bnRzT2ZGb250U2V0KAoKICAgIFhGb250U2V0ICwKICAgIFhGb250U3RydWN0KioqICwKICAgIGNo
YXIqKioKCik7CgpleHRlcm4gY2hhciAqWEJhc2VGb250TmFtZUxpc3RPZkZvbnRTZXQoCgogICAg
WEZvbnRTZXQKCik7CgpleHRlcm4gY2hhciAqWExvY2FsZU9mRm9udFNldCgKCiAgICBYRm9udFNl
dAoKKTsKCmV4dGVybiBpbnQgWENvbnRleHREZXBlbmRlbnREcmF3aW5nKAoKICAgIFhGb250U2V0
CgopOwoKZXh0ZXJuIGludCBYRGlyZWN0aW9uYWxEZXBlbmRlbnREcmF3aW5nKAoKICAgIFhGb250
U2V0CgopOwoKZXh0ZXJuIGludCBYQ29udGV4dHVhbERyYXdpbmcoCgogICAgWEZvbnRTZXQKCik7
CgpleHRlcm4gWEZvbnRTZXRFeHRlbnRzICpYRXh0ZW50c09mRm9udFNldCgKCiAgICBYRm9udFNl
dAoKKTsKCmV4dGVybiBpbnQgWG1iVGV4dEVzY2FwZW1lbnQoCgogICAgWEZvbnRTZXQgLAogICAg
Y29uc3QgY2hhciogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYd2NUZXh0RXNjYXBlbWVudCgK
CiAgICBYRm9udFNldCAsCiAgICBjb25zdCB3Y2hhcl90KiAsCiAgICBpbnQKCik7CgpleHRlcm4g
aW50IFh1dGY4VGV4dEVzY2FwZW1lbnQoCgogICAgWEZvbnRTZXQgLAogICAgY29uc3QgY2hhciog
LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYbWJUZXh0RXh0ZW50cygKCiAgICBYRm9udFNldCAs
CiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAgWFJlY3Rh
bmdsZSoKCik7CgpleHRlcm4gaW50IFh3Y1RleHRFeHRlbnRzKAoKICAgIFhGb250U2V0ICwKICAg
IGNvbnN0IHdjaGFyX3QqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFu
Z2xlKgoKKTsKCmV4dGVybiBpbnQgWHV0ZjhUZXh0RXh0ZW50cygKCiAgICBYRm9udFNldCAsCiAg
ICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAgWFJlY3Rhbmds
ZSoKCik7CgpleHRlcm4gaW50IFhtYlRleHRQZXJDaGFyRXh0ZW50cygKCiAgICBYRm9udFNldCAs
CiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAgWFJlY3Rh
bmdsZSogLAogICAgaW50ICwKICAgIGludCogLAogICAgWFJlY3RhbmdsZSogLAogICAgWFJlY3Rh
bmdsZSoKCik7CgpleHRlcm4gaW50IFh3Y1RleHRQZXJDaGFyRXh0ZW50cygKCiAgICBYRm9udFNl
dCAsCiAgICBjb25zdCB3Y2hhcl90KiAsCiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAg
WFJlY3RhbmdsZSogLAogICAgaW50ICwKICAgIGludCogLAogICAgWFJlY3RhbmdsZSogLAogICAg
WFJlY3RhbmdsZSoKCik7CgpleHRlcm4gaW50IFh1dGY4VGV4dFBlckNoYXJFeHRlbnRzKAoKICAg
IFhGb250U2V0ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAs
CiAgICBYUmVjdGFuZ2xlKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBYUmVjdGFuZ2xlKiAs
CiAgICBYUmVjdGFuZ2xlKgoKKTsKCmV4dGVybiB2b2lkIFhtYkRyYXdUZXh0KAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWG1i
VGV4dEl0ZW0qICwKICAgIGludAoKKTsKCmV4dGVybiB2b2lkIFh3Y0RyYXdUZXh0KAoKICAgIERp
c3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAg
WHdjVGV4dEl0ZW0qICwKICAgIGludAoKKTsKCmV4dGVybiB2b2lkIFh1dGY4RHJhd1RleHQoCgog
ICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAs
CiAgICBYbWJUZXh0SXRlbSogLAogICAgaW50CgopOwoKZXh0ZXJuIHZvaWQgWG1iRHJhd1N0cmlu
ZygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBYRm9udFNldCAsCiAgICBHQyAs
CiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVy
biB2b2lkIFh3Y0RyYXdTdHJpbmcoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAg
WEZvbnRTZXQgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBjb25zdCB3Y2hhcl90
KiAsCiAgICBpbnQKCik7CgpleHRlcm4gdm9pZCBYdXRmOERyYXdTdHJpbmcoCgogICAgRGlzcGxh
eSogLAogICAgRHJhd2FibGUgLAogICAgWEZvbnRTZXQgLAogICAgR0MgLAogICAgaW50ICwKICAg
IGludCAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gdm9pZCBYbWJEcmF3
SW1hZ2VTdHJpbmcoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgWEZvbnRTZXQg
LAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQK
Cik7CgpleHRlcm4gdm9pZCBYd2NEcmF3SW1hZ2VTdHJpbmcoCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgWEZvbnRTZXQgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAg
ICBjb25zdCB3Y2hhcl90KiAsCiAgICBpbnQKCik7CgpleHRlcm4gdm9pZCBYdXRmOERyYXdJbWFn
ZVN0cmluZygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBYRm9udFNldCAsCiAg
ICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsK
CmV4dGVybiBYSU0gWE9wZW5JTSgKCiAgICBEaXNwbGF5KiAsCiAgICBzdHJ1Y3QgX1hybUhhc2hC
dWNrZXRSZWMqICwKICAgIGNoYXIqICwKICAgIGNoYXIqCgopOwoKZXh0ZXJuIGludCBYQ2xvc2VJ
TSgKCiAgICBYSU0KCik7CgpleHRlcm4gY2hhciAqWEdldElNVmFsdWVzKAoKICAgIFhJTSAsIC4u
LgoKKTsKCmV4dGVybiBEaXNwbGF5ICpYRGlzcGxheU9mSU0oCgogICAgWElNCgopOwoKZXh0ZXJu
IGNoYXIgKlhMb2NhbGVPZklNKAoKICAgIFhJTQoKKTsKCmV4dGVybiBYSUMgWENyZWF0ZUlDKAoK
ICAgIFhJTSAsIC4uLgoKKTsKCmV4dGVybiB2b2lkIFhEZXN0cm95SUMoCgogICAgWElDCgopOwoK
ZXh0ZXJuIHZvaWQgWFNldElDRm9jdXMoCgogICAgWElDCgopOwoKZXh0ZXJuIHZvaWQgWFVuc2V0
SUNGb2N1cygKCiAgICBYSUMKCik7CgpleHRlcm4gd2NoYXJfdCAqWHdjUmVzZXRJQygKCiAgICBY
SUMKCik7CgpleHRlcm4gY2hhciAqWG1iUmVzZXRJQygKCiAgICBYSUMKCik7CgpleHRlcm4gY2hh
ciAqWHV0ZjhSZXNldElDKAoKICAgIFhJQwoKKTsKCmV4dGVybiBjaGFyICpYU2V0SUNWYWx1ZXMo
CgogICAgWElDICwgLi4uCgopOwoKZXh0ZXJuIGNoYXIgKlhHZXRJQ1ZhbHVlcygKCiAgICBYSUMg
LCAuLi4KCik7CgpleHRlcm4gWElNIFhJTU9mSUMoCgogICAgWElDCgopOwoKZXh0ZXJuIGludCBY
RmlsdGVyRXZlbnQoCgogICAgWEV2ZW50KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFht
Ykxvb2t1cFN0cmluZygKCiAgICBYSUMgLAogICAgWEtleVByZXNzZWRFdmVudCogLAogICAgY2hh
ciogLAogICAgaW50ICwKICAgIEtleVN5bSogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWHdj
TG9va3VwU3RyaW5nKAoKICAgIFhJQyAsCiAgICBYS2V5UHJlc3NlZEV2ZW50KiAsCiAgICB3Y2hh
cl90KiAsCiAgICBpbnQgLAogICAgS2V5U3ltKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBY
dXRmOExvb2t1cFN0cmluZygKCiAgICBYSUMgLAogICAgWEtleVByZXNzZWRFdmVudCogLAogICAg
Y2hhciogLAogICAgaW50ICwKICAgIEtleVN5bSogLAogICAgaW50KgoKKTsKCmV4dGVybiBYVmFO
ZXN0ZWRMaXN0IFhWYUNyZWF0ZU5lc3RlZExpc3QoCgogICAgaW50ICwgLi4uCgopOwoKCgpleHRl
cm4gaW50IFhSZWdpc3RlcklNSW5zdGFudGlhdGVDYWxsYmFjaygKCiAgICBEaXNwbGF5KiAsCiAg
ICBzdHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMqICwKICAgIGNoYXIqICwKICAgIGNoYXIqICwKICAg
IFhJRFByb2MgLAogICAgWFBvaW50ZXIKCik7CgpleHRlcm4gaW50IFhVbnJlZ2lzdGVySU1JbnN0
YW50aWF0ZUNhbGxiYWNrKAoKICAgIERpc3BsYXkqICwKICAgIHN0cnVjdCBfWHJtSGFzaEJ1Y2tl
dFJlYyogLAogICAgY2hhciogLAogICAgY2hhciogLAogICAgWElEUHJvYyAsCiAgICBYUG9pbnRl
cgoKKTsKCnR5cGVkZWYgdm9pZCAoKlhDb25uZWN0aW9uV2F0Y2hQcm9jKSgKCiAgICBEaXNwbGF5
KiAsCiAgICBYUG9pbnRlciAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFhQb2ludGVyKgoKKTsK
CgpleHRlcm4gaW50IFhJbnRlcm5hbENvbm5lY3Rpb25OdW1iZXJzKAoKICAgIERpc3BsYXkqICwK
ICAgIGludCoqICwKICAgIGludCoKCik7CgpleHRlcm4gdm9pZCBYUHJvY2Vzc0ludGVybmFsQ29u
bmVjdGlvbigKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhBZGRDb25u
ZWN0aW9uV2F0Y2goCgogICAgRGlzcGxheSogLAogICAgWENvbm5lY3Rpb25XYXRjaFByb2MgLAog
ICAgWFBvaW50ZXIKCik7CgpleHRlcm4gdm9pZCBYUmVtb3ZlQ29ubmVjdGlvbldhdGNoKAoKICAg
IERpc3BsYXkqICwKICAgIFhDb25uZWN0aW9uV2F0Y2hQcm9jICwKICAgIFhQb2ludGVyCgopOwoK
ZXh0ZXJuIHZvaWQgWFNldEF1dGhvcml6YXRpb24oCgogICAgY2hhciAqICwKICAgIGludCAsCiAg
ICBjaGFyICogLAogICAgaW50CgopOwoKfQojIDQwICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2x4
LmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9YMTEvWHV0aWwuaCIgMSAzCiMgNTEgIi91c3IvaW5j
bHVkZS9YMTEvWHV0aWwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAxIDMKIyA1
MiAiL3Vzci9pbmNsdWRlL1gxMS9YdXRpbC5oIiAyIDMKIyA3MCAiL3Vzci9pbmNsdWRlL1gxMS9Y
dXRpbC5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBsb25nIGZsYWdzOwogICAgICAgIGlu
dCB4LCB5OwogICAgICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgICAgIGludCBtaW5fd2lkdGgs
IG1pbl9oZWlnaHQ7CiAgICAgICAgaW50IG1heF93aWR0aCwgbWF4X2hlaWdodDsKICAgICAgICBp
bnQgd2lkdGhfaW5jLCBoZWlnaHRfaW5jOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICBpbnQgeDsKICAgICAgICAgICAgICAgIGludCB5OwogICAgICAgIH0gbWluX2FzcGVjdCwgbWF4
X2FzcGVjdDsKICAgICAgICBpbnQgYmFzZV93aWR0aCwgYmFzZV9oZWlnaHQ7CiAgICAgICAgaW50
IHdpbl9ncmF2aXR5Owp9IFhTaXplSGludHM7CiMgMTA4ICIvdXNyL2luY2x1ZGUvWDExL1h1dGls
LmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGxvbmcgZmxhZ3M7CiAgICAgICAgaW50IGlu
cHV0OwoKICAgICAgICBpbnQgaW5pdGlhbF9zdGF0ZTsKICAgICAgICBQaXhtYXAgaWNvbl9waXht
YXA7CiAgICAgICAgV2luZG93IGljb25fd2luZG93OwogICAgICAgIGludCBpY29uX3gsIGljb25f
eTsKICAgICAgICBQaXhtYXAgaWNvbl9tYXNrOwogICAgICAgIFhJRCB3aW5kb3dfZ3JvdXA7Cgp9
IFhXTUhpbnRzOwojIDE1MiAiL3Vzci9pbmNsdWRlL1gxMS9YdXRpbC5oIiAzCnR5cGVkZWYgc3Ry
dWN0IHsKICAgIHVuc2lnbmVkIGNoYXIgKnZhbHVlOwogICAgQXRvbSBlbmNvZGluZzsKICAgIGlu
dCBmb3JtYXQ7CiAgICB1bnNpZ25lZCBsb25nIG5pdGVtczsKfSBYVGV4dFByb3BlcnR5OwoKCgoK
CnR5cGVkZWYgZW51bSB7CiAgICBYU3RyaW5nU3R5bGUsCiAgICBYQ29tcG91bmRUZXh0U3R5bGUs
CiAgICBYVGV4dFN0eWxlLAogICAgWFN0ZElDQ1RleHRTdHlsZSwKCiAgICBYVVRGOFN0cmluZ1N0
eWxlCn0gWElDQ0VuY29kaW5nU3R5bGU7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG1p
bl93aWR0aCwgbWluX2hlaWdodDsKICAgICAgICBpbnQgbWF4X3dpZHRoLCBtYXhfaGVpZ2h0Owog
ICAgICAgIGludCB3aWR0aF9pbmMsIGhlaWdodF9pbmM7Cn0gWEljb25TaXplOwoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgICAgIGNoYXIgKnJlc19uYW1lOwogICAgICAgIGNoYXIgKnJlc19jbGFzczsK
fSBYQ2xhc3NIaW50OwojIDIwMSAiL3Vzci9pbmNsdWRlL1gxMS9YdXRpbC5oIiAzCnR5cGVkZWYg
c3RydWN0IF9YQ29tcG9zZVN0YXR1cyB7CiAgICBYUG9pbnRlciBjb21wb3NlX3B0cjsKICAgIGlu
dCBjaGFyc19tYXRjaGVkOwp9IFhDb21wb3NlU3RhdHVzOwojIDIzNCAiL3Vzci9pbmNsdWRlL1gx
MS9YdXRpbC5oIiAzCnR5cGVkZWYgc3RydWN0IF9YUmVnaW9uICpSZWdpb247CiMgMjQ4ICIvdXNy
L2luY2x1ZGUvWDExL1h1dGlsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogIFZpc3VhbCAqdmlzdWFs
OwogIFZpc3VhbElEIHZpc3VhbGlkOwogIGludCBzY3JlZW47CiAgaW50IGRlcHRoOwoKICBpbnQg
Y19jbGFzczsKCgoKICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrOwogIHVuc2lnbmVkIGxvbmcgZ3Jl
ZW5fbWFzazsKICB1bnNpZ25lZCBsb25nIGJsdWVfbWFzazsKICBpbnQgY29sb3JtYXBfc2l6ZTsK
ICBpbnQgYml0c19wZXJfcmdiOwp9IFhWaXN1YWxJbmZvOwojIDI4MSAiL3Vzci9pbmNsdWRlL1gx
MS9YdXRpbC5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBDb2xvcm1hcCBjb2xvcm1hcDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHJlZF9tYXg7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZWRf
bXVsdDsKICAgICAgICB1bnNpZ25lZCBsb25nIGdyZWVuX21heDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGdyZWVuX211bHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBibHVlX21heDsKICAgICAgICB1
bnNpZ25lZCBsb25nIGJsdWVfbXVsdDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJhc2VfcGl4ZWw7
CiAgICAgICAgVmlzdWFsSUQgdmlzdWFsaWQ7CiAgICAgICAgWElEIGtpbGxpZDsKfSBYU3RhbmRh
cmRDb2xvcm1hcDsKIyAzMTggIi91c3IvaW5jbHVkZS9YMTEvWHV0aWwuaCIgMwp0eXBlZGVmIGlu
dCBYQ29udGV4dDsKCgoKCmV4dGVybiAiQyIgewoKCgpleHRlcm4gWENsYXNzSGludCAqWEFsbG9j
Q2xhc3NIaW50ICgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIFhJY29uU2l6ZSAqWEFsbG9jSWNvblNp
emUgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gWFNpemVIaW50cyAqWEFsbG9jU2l6ZUhpbnRzICgK
CiAgICB2b2lkCgopOwoKZXh0ZXJuIFhTdGFuZGFyZENvbG9ybWFwICpYQWxsb2NTdGFuZGFyZENv
bG9ybWFwICgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIFhXTUhpbnRzICpYQWxsb2NXTUhpbnRzICgK
CiAgICB2b2lkCgopOwoKZXh0ZXJuIGludCBYQ2xpcEJveCgKCiAgICBSZWdpb24gLAogICAgWFJl
Y3RhbmdsZSoKCik7CgpleHRlcm4gUmVnaW9uIFhDcmVhdGVSZWdpb24oCgogICAgdm9pZAoKKTsK
CmV4dGVybiBjb25zdCBjaGFyICpYRGVmYXVsdFN0cmluZyAodm9pZCk7CgpleHRlcm4gaW50IFhE
ZWxldGVDb250ZXh0KAoKICAgIERpc3BsYXkqICwKICAgIFhJRCAsCiAgICBYQ29udGV4dAoKKTsK
CmV4dGVybiBpbnQgWERlc3Ryb3lSZWdpb24oCgogICAgUmVnaW9uCgopOwoKZXh0ZXJuIGludCBY
RW1wdHlSZWdpb24oCgogICAgUmVnaW9uCgopOwoKZXh0ZXJuIGludCBYRXF1YWxSZWdpb24oCgog
ICAgUmVnaW9uICwKICAgIFJlZ2lvbgoKKTsKCmV4dGVybiBpbnQgWEZpbmRDb250ZXh0KAoKICAg
IERpc3BsYXkqICwKICAgIFhJRCAsCiAgICBYQ29udGV4dCAsCiAgICBYUG9pbnRlcioKCik7Cgpl
eHRlcm4gaW50IFhHZXRDbGFzc0hpbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IFhDbGFzc0hpbnQqCgopOwoKZXh0ZXJuIGludCBYR2V0SWNvblNpemVzKAoKICAgIERpc3BsYXkq
ICwKICAgIFdpbmRvdyAsCiAgICBYSWNvblNpemUqKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGlu
dCBYR2V0Tm9ybWFsSGludHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhTaXpl
SGludHMqCgopOwoKZXh0ZXJuIGludCBYR2V0UkdCQ29sb3JtYXBzKAoKICAgIERpc3BsYXkqICwK
ICAgIFdpbmRvdyAsCiAgICBYU3RhbmRhcmRDb2xvcm1hcCoqICwKICAgIGludCogLAogICAgQXRv
bQoKKTsKCmV4dGVybiBpbnQgWEdldFNpemVIaW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k
b3cgLAogICAgWFNpemVIaW50cyogLAogICAgQXRvbQoKKTsKCmV4dGVybiBpbnQgWEdldFN0YW5k
YXJkQ29sb3JtYXAoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhTdGFuZGFyZENv
bG9ybWFwKiAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYR2V0VGV4dFByb3BlcnR5KAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYVGV4dFByb3BlcnR5KiAsCiAgICBBdG9tCgop
OwoKZXh0ZXJuIFhWaXN1YWxJbmZvICpYR2V0VmlzdWFsSW5mbygKCiAgICBEaXNwbGF5KiAsCiAg
ICBsb25nICwKICAgIFhWaXN1YWxJbmZvKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYR2V0
V01DbGllbnRNYWNoaW5lKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYVGV4dFBy
b3BlcnR5KgoKKTsKCmV4dGVybiBYV01IaW50cyAqWEdldFdNSGludHMoCgogICAgRGlzcGxheSog
LAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYR2V0V01JY29uTmFtZSgKCiAgICBEaXNwbGF5
KiAsCiAgICBXaW5kb3cgLAogICAgWFRleHRQcm9wZXJ0eSoKCik7CgpleHRlcm4gaW50IFhHZXRX
TU5hbWUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhUZXh0UHJvcGVydHkqCgop
OwoKZXh0ZXJuIGludCBYR2V0V01Ob3JtYWxIaW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k
b3cgLAogICAgWFNpemVIaW50cyogLAogICAgbG9uZyoKCik7CgpleHRlcm4gaW50IFhHZXRXTVNp
emVIaW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFNpemVIaW50cyogLAog
ICAgbG9uZyogLAogICAgQXRvbQoKKTsKCmV4dGVybiBpbnQgWEdldFpvb21IaW50cygKCiAgICBE
aXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFNpemVIaW50cyoKCik7CgpleHRlcm4gaW50IFhJ
bnRlcnNlY3RSZWdpb24oCgogICAgUmVnaW9uICwKICAgIFJlZ2lvbiAsCiAgICBSZWdpb24KCik7
CgpleHRlcm4gdm9pZCBYQ29udmVydENhc2UoCgogICAgS2V5U3ltICwKICAgIEtleVN5bSogLAog
ICAgS2V5U3ltKgoKKTsKCmV4dGVybiBpbnQgWExvb2t1cFN0cmluZygKCiAgICBYS2V5RXZlbnQq
ICwKICAgIGNoYXIqICwKICAgIGludCAsCiAgICBLZXlTeW0qICwKICAgIFhDb21wb3NlU3RhdHVz
KgoKKTsKCmV4dGVybiBpbnQgWE1hdGNoVmlzdWFsSW5mbygKCiAgICBEaXNwbGF5KiAsCiAgICBp
bnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBYVmlzdWFsSW5mbyoKCik7CgpleHRlcm4gaW50
IFhPZmZzZXRSZWdpb24oCgogICAgUmVnaW9uICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRl
cm4gaW50IFhQb2ludEluUmVnaW9uKAoKICAgIFJlZ2lvbiAsCiAgICBpbnQgLAogICAgaW50Cgop
OwoKZXh0ZXJuIFJlZ2lvbiBYUG9seWdvblJlZ2lvbigKCiAgICBYUG9pbnQqICwKICAgIGludCAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhSZWN0SW5SZWdpb24oCgogICAgUmVnaW9uICwKICAg
IGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsK
CmV4dGVybiBpbnQgWFNhdmVDb250ZXh0KAoKICAgIERpc3BsYXkqICwKICAgIFhJRCAsCiAgICBY
Q29udGV4dCAsCiAgICBjb25zdCBjaGFyKgoKKTsKCmV4dGVybiBpbnQgWFNldENsYXNzSGludCgK
CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWENsYXNzSGludCoKCik7CgpleHRlcm4g
aW50IFhTZXRJY29uU2l6ZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhJY29u
U2l6ZSogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Tm9ybWFsSGludHMoCgogICAgRGlz
cGxheSogLAogICAgV2luZG93ICwKICAgIFhTaXplSGludHMqCgopOwoKZXh0ZXJuIHZvaWQgWFNl
dFJHQkNvbG9ybWFwcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFN0YW5kYXJk
Q29sb3JtYXAqICwKICAgIGludCAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYU2V0U2l6ZUhp
bnRzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU2l6ZUhpbnRzKiAsCiAgICBB
dG9tCgopOwoKZXh0ZXJuIGludCBYU2V0U3RhbmRhcmRQcm9wZXJ0aWVzKAoKICAgIERpc3BsYXkq
ICwKICAgIFdpbmRvdyAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBQ
aXhtYXAgLAogICAgY2hhcioqICwKICAgIGludCAsCiAgICBYU2l6ZUhpbnRzKgoKKTsKCmV4dGVy
biB2b2lkIFhTZXRUZXh0UHJvcGVydHkoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IFhUZXh0UHJvcGVydHkqICwKICAgIEF0b20KCik7CgpleHRlcm4gdm9pZCBYU2V0V01DbGllbnRN
YWNoaW5lKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYVGV4dFByb3BlcnR5KgoK
KTsKCmV4dGVybiBpbnQgWFNldFdNSGludHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwK
ICAgIFhXTUhpbnRzKgoKKTsKCmV4dGVybiB2b2lkIFhTZXRXTUljb25OYW1lKAoKICAgIERpc3Bs
YXkqICwKICAgIFdpbmRvdyAsCiAgICBYVGV4dFByb3BlcnR5KgoKKTsKCmV4dGVybiB2b2lkIFhT
ZXRXTU5hbWUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhUZXh0UHJvcGVydHkq
CgopOwoKZXh0ZXJuIHZvaWQgWFNldFdNTm9ybWFsSGludHMoCgogICAgRGlzcGxheSogLAogICAg
V2luZG93ICwKICAgIFhTaXplSGludHMqCgopOwoKZXh0ZXJuIHZvaWQgWFNldFdNUHJvcGVydGll
cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFRleHRQcm9wZXJ0eSogLAogICAg
WFRleHRQcm9wZXJ0eSogLAogICAgY2hhcioqICwKICAgIGludCAsCiAgICBYU2l6ZUhpbnRzKiAs
CiAgICBYV01IaW50cyogLAogICAgWENsYXNzSGludCoKCik7CgpleHRlcm4gdm9pZCBYbWJTZXRX
TVByb3BlcnRpZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNoYXIqKiAsCiAgICBpbnQgLAogICAgWFNpemVIaW50
cyogLAogICAgWFdNSGludHMqICwKICAgIFhDbGFzc0hpbnQqCgopOwoKZXh0ZXJuIHZvaWQgWHV0
ZjhTZXRXTVByb3BlcnRpZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGNvbnN0
IGNoYXIqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNoYXIqKiAsCiAgICBpbnQgLAogICAgWFNp
emVIaW50cyogLAogICAgWFdNSGludHMqICwKICAgIFhDbGFzc0hpbnQqCgopOwoKZXh0ZXJuIHZv
aWQgWFNldFdNU2l6ZUhpbnRzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU2l6
ZUhpbnRzKiAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYU2V0UmVnaW9uKAoKICAgIERpc3Bs
YXkqICwKICAgIEdDICwKICAgIFJlZ2lvbgoKKTsKCmV4dGVybiB2b2lkIFhTZXRTdGFuZGFyZENv
bG9ybWFwKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU3RhbmRhcmRDb2xvcm1h
cCogLAogICAgQXRvbQoKKTsKCmV4dGVybiBpbnQgWFNldFpvb21IaW50cygKCiAgICBEaXNwbGF5
KiAsCiAgICBXaW5kb3cgLAogICAgWFNpemVIaW50cyoKCik7CgpleHRlcm4gaW50IFhTaHJpbmtS
ZWdpb24oCgogICAgUmVnaW9uICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhT
dHJpbmdMaXN0VG9UZXh0UHJvcGVydHkoCgogICAgY2hhcioqICwKICAgIGludCAsCiAgICBYVGV4
dFByb3BlcnR5KgoKKTsKCmV4dGVybiBpbnQgWFN1YnRyYWN0UmVnaW9uKAoKICAgIFJlZ2lvbiAs
CiAgICBSZWdpb24gLAogICAgUmVnaW9uCgopOwoKZXh0ZXJuIGludCBYbWJUZXh0TGlzdFRvVGV4
dFByb3BlcnR5KAogICAgRGlzcGxheSogZGlzcGxheSwKICAgIGNoYXIqKiBsaXN0LAogICAgaW50
IGNvdW50LAogICAgWElDQ0VuY29kaW5nU3R5bGUgc3R5bGUsCiAgICBYVGV4dFByb3BlcnR5KiB0
ZXh0X3Byb3BfcmV0dXJuCik7CgpleHRlcm4gaW50IFh3Y1RleHRMaXN0VG9UZXh0UHJvcGVydHko
CiAgICBEaXNwbGF5KiBkaXNwbGF5LAogICAgd2NoYXJfdCoqIGxpc3QsCiAgICBpbnQgY291bnQs
CiAgICBYSUNDRW5jb2RpbmdTdHlsZSBzdHlsZSwKICAgIFhUZXh0UHJvcGVydHkqIHRleHRfcHJv
cF9yZXR1cm4KKTsKCmV4dGVybiBpbnQgWHV0ZjhUZXh0TGlzdFRvVGV4dFByb3BlcnR5KAogICAg
RGlzcGxheSogZGlzcGxheSwKICAgIGNoYXIqKiBsaXN0LAogICAgaW50IGNvdW50LAogICAgWElD
Q0VuY29kaW5nU3R5bGUgc3R5bGUsCiAgICBYVGV4dFByb3BlcnR5KiB0ZXh0X3Byb3BfcmV0dXJu
Cik7CgpleHRlcm4gdm9pZCBYd2NGcmVlU3RyaW5nTGlzdCgKICAgIHdjaGFyX3QqKiBsaXN0Cik7
CgpleHRlcm4gaW50IFhUZXh0UHJvcGVydHlUb1N0cmluZ0xpc3QoCgogICAgWFRleHRQcm9wZXJ0
eSogLAogICAgY2hhcioqKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYbWJUZXh0UHJvcGVy
dHlUb1RleHRMaXN0KAogICAgRGlzcGxheSogZGlzcGxheSwKICAgIGNvbnN0IFhUZXh0UHJvcGVy
dHkqIHRleHRfcHJvcCwKICAgIGNoYXIqKiogbGlzdF9yZXR1cm4sCiAgICBpbnQqIGNvdW50X3Jl
dHVybgopOwoKZXh0ZXJuIGludCBYd2NUZXh0UHJvcGVydHlUb1RleHRMaXN0KAogICAgRGlzcGxh
eSogZGlzcGxheSwKICAgIGNvbnN0IFhUZXh0UHJvcGVydHkqIHRleHRfcHJvcCwKICAgIHdjaGFy
X3QqKiogbGlzdF9yZXR1cm4sCiAgICBpbnQqIGNvdW50X3JldHVybgopOwoKZXh0ZXJuIGludCBY
dXRmOFRleHRQcm9wZXJ0eVRvVGV4dExpc3QoCiAgICBEaXNwbGF5KiBkaXNwbGF5LAogICAgY29u
c3QgWFRleHRQcm9wZXJ0eSogdGV4dF9wcm9wLAogICAgY2hhcioqKiBsaXN0X3JldHVybiwKICAg
IGludCogY291bnRfcmV0dXJuCik7CgpleHRlcm4gaW50IFhVbmlvblJlY3RXaXRoUmVnaW9uKAoK
ICAgIFhSZWN0YW5nbGUqICwKICAgIFJlZ2lvbiAsCiAgICBSZWdpb24KCik7CgpleHRlcm4gaW50
IFhVbmlvblJlZ2lvbigKCiAgICBSZWdpb24gLAogICAgUmVnaW9uICwKICAgIFJlZ2lvbgoKKTsK
CmV4dGVybiBpbnQgWFdNR2VvbWV0cnkoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGNv
bnN0IGNoYXIqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBYU2l6
ZUhpbnRzKiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAg
IGludCoKCik7CgpleHRlcm4gaW50IFhYb3JSZWdpb24oCgogICAgUmVnaW9uICwKICAgIFJlZ2lv
biAsCiAgICBSZWdpb24KCik7Cgp9CiMgNDEgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbHguaCIg
MiAzCgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2wuaCIgMSAzCiMgNDcgIi91c3Iv
bG9jYWwvaW5jbHVkZS9HTC9nbHguaCIgMiAzCiMgNTUgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9n
bHguaCIgMwpleHRlcm4gIkMiIHsKIyAxNjUgIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbHguaCIg
Mwp0eXBlZGVmIHZvaWQgKiBHTFhDb250ZXh0Owp0eXBlZGVmIFhJRCBHTFhQaXhtYXA7CnR5cGVk
ZWYgWElEIEdMWERyYXdhYmxlOwoKdHlwZWRlZiB2b2lkICogR0xYRkJDb25maWc7CnR5cGVkZWYg
WElEIEdMWEZCQ29uZmlnSUQ7CnR5cGVkZWYgWElEIEdMWENvbnRleHRJRDsKdHlwZWRlZiBYSUQg
R0xYV2luZG93Owp0eXBlZGVmIFhJRCBHTFhQYnVmZmVyOwoKCgpleHRlcm4gWFZpc3VhbEluZm8q
IGdsWENob29zZVZpc3VhbCggRGlzcGxheSAqZHB5LCBpbnQgc2NyZWVuLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICphdHRyaWJMaXN0ICk7CgpleHRlcm4gR0xYQ29u
dGV4dCBnbFhDcmVhdGVDb250ZXh0KCBEaXNwbGF5ICpkcHksIFhWaXN1YWxJbmZvICp2aXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMWENvbnRleHQgc2hhcmVMaXN0LCBp
bnQgZGlyZWN0ICk7CgpleHRlcm4gdm9pZCBnbFhEZXN0cm95Q29udGV4dCggRGlzcGxheSAqZHB5
LCBHTFhDb250ZXh0IGN0eCApOwoKZXh0ZXJuIGludCBnbFhNYWtlQ3VycmVudCggRGlzcGxheSAq
ZHB5LCBHTFhEcmF3YWJsZSBkcmF3YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
WENvbnRleHQgY3R4KTsKCmV4dGVybiB2b2lkIGdsWENvcHlDb250ZXh0KCBEaXNwbGF5ICpkcHks
IEdMWENvbnRleHQgc3JjLCBHTFhDb250ZXh0IGRzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xYU3dhcEJ1ZmZlcnMoIERp
c3BsYXkgKmRweSwgR0xYRHJhd2FibGUgZHJhd2FibGUgKTsKCmV4dGVybiBHTFhQaXhtYXAgZ2xY
Q3JlYXRlR0xYUGl4bWFwKCBEaXNwbGF5ICpkcHksIFhWaXN1YWxJbmZvICp2aXN1YWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXhtYXAgcGl4bWFwICk7CgpleHRlcm4g
dm9pZCBnbFhEZXN0cm95R0xYUGl4bWFwKCBEaXNwbGF5ICpkcHksIEdMWFBpeG1hcCBwaXhtYXAg
KTsKCmV4dGVybiBpbnQgZ2xYUXVlcnlFeHRlbnNpb24oIERpc3BsYXkgKmRweSwgaW50ICplcnJv
cmIsIGludCAqZXZlbnQgKTsKCmV4dGVybiBpbnQgZ2xYUXVlcnlWZXJzaW9uKCBEaXNwbGF5ICpk
cHksIGludCAqbWFqLCBpbnQgKm1pbiApOwoKZXh0ZXJuIGludCBnbFhJc0RpcmVjdCggRGlzcGxh
eSAqZHB5LCBHTFhDb250ZXh0IGN0eCApOwoKZXh0ZXJuIGludCBnbFhHZXRDb25maWcoIERpc3Bs
YXkgKmRweSwgWFZpc3VhbEluZm8gKnZpc3VhbCwKICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBhdHRyaWIsIGludCAqdmFsdWUgKTsKCmV4dGVybiBHTFhDb250ZXh0IGdsWEdldEN1cnJlbnRD
b250ZXh0KCB2b2lkICk7CgpleHRlcm4gR0xYRHJhd2FibGUgZ2xYR2V0Q3VycmVudERyYXdhYmxl
KCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbFhXYWl0R0woIHZvaWQgKTsKCmV4dGVybiB2b2lkIGds
WFdhaXRYKCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbFhVc2VYRm9udCggRm9udCBmb250LCBpbnQg
Zmlyc3QsIGludCBjb3VudCwgaW50IGxpc3QgKTsKCgoKCmV4dGVybiBjb25zdCBjaGFyICpnbFhR
dWVyeUV4dGVuc2lvbnNTdHJpbmcoIERpc3BsYXkgKmRweSwgaW50IHNjcmVlbiApOwoKZXh0ZXJu
IGNvbnN0IGNoYXIgKmdsWFF1ZXJ5U2VydmVyU3RyaW5nKCBEaXNwbGF5ICpkcHksIGludCBzY3Jl
ZW4sIGludCBuYW1lICk7CgpleHRlcm4gY29uc3QgY2hhciAqZ2xYR2V0Q2xpZW50U3RyaW5nKCBE
aXNwbGF5ICpkcHksIGludCBuYW1lICk7CgoKCmV4dGVybiBEaXNwbGF5ICpnbFhHZXRDdXJyZW50
RGlzcGxheSggdm9pZCApOwoKCgpleHRlcm4gR0xYRkJDb25maWcgKmdsWENob29zZUZCQ29uZmln
KCBEaXNwbGF5ICpkcHksIGludCBzY3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGludCAqYXR0cmliTGlzdCwgaW50ICpuaXRlbXMgKTsKCmV4dGVybiBp
bnQgZ2xYR2V0RkJDb25maWdBdHRyaWIoIERpc3BsYXkgKmRweSwgR0xYRkJDb25maWcgY29uZmln
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXR0cmlidXRlLCBpbnQgKnZh
bHVlICk7CgpleHRlcm4gR0xYRkJDb25maWcgKmdsWEdldEZCQ29uZmlncyggRGlzcGxheSAqZHB5
LCBpbnQgc2NyZWVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpu
ZWxlbWVudHMgKTsKCmV4dGVybiBYVmlzdWFsSW5mbyAqZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmln
KCBEaXNwbGF5ICpkcHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTFhGQkNvbmZpZyBjb25maWcgKTsKCmV4dGVybiBHTFhXaW5kb3cgZ2xYQ3JlYXRlV2lu
ZG93KCBEaXNwbGF5ICpkcHksIEdMWEZCQ29uZmlnIGNvbmZpZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdpbmRvdyB3aW4sIGNvbnN0IGludCAqYXR0cmliTGlzdCApOwoKZXh0
ZXJuIHZvaWQgZ2xYRGVzdHJveVdpbmRvdyggRGlzcGxheSAqZHB5LCBHTFhXaW5kb3cgd2luZG93
ICk7CgpleHRlcm4gR0xYUGl4bWFwIGdsWENyZWF0ZVBpeG1hcCggRGlzcGxheSAqZHB5LCBHTFhG
QkNvbmZpZyBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXhtYXAg
cGl4bWFwLCBjb25zdCBpbnQgKmF0dHJpYkxpc3QgKTsKCmV4dGVybiB2b2lkIGdsWERlc3Ryb3lQ
aXhtYXAoIERpc3BsYXkgKmRweSwgR0xYUGl4bWFwIHBpeG1hcCApOwoKZXh0ZXJuIEdMWFBidWZm
ZXIgZ2xYQ3JlYXRlUGJ1ZmZlciggRGlzcGxheSAqZHB5LCBHTFhGQkNvbmZpZyBjb25maWcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqYXR0cmliTGlzdCAp
OwoKZXh0ZXJuIHZvaWQgZ2xYRGVzdHJveVBidWZmZXIoIERpc3BsYXkgKmRweSwgR0xYUGJ1ZmZl
ciBwYnVmICk7CgpleHRlcm4gdm9pZCBnbFhRdWVyeURyYXdhYmxlKCBEaXNwbGF5ICpkcHksIEdM
WERyYXdhYmxlIGRyYXcsIGludCBhdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCAqdmFsdWUgKTsKCmV4dGVybiBHTFhDb250ZXh0IGdsWENyZWF0ZU5l
d0NvbnRleHQoIERpc3BsYXkgKmRweSwgR0xYRkJDb25maWcgY29uZmlnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVuZGVyVHlwZSwgR0xYQ29udGV4dCBzaGFy
ZUxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Qg
KTsKCmV4dGVybiBpbnQgZ2xYTWFrZUNvbnRleHRDdXJyZW50KCBEaXNwbGF5ICpkcHksIEdMWERy
YXdhYmxlIGRyYXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xYRHJhd2Fi
bGUgcmVhZCwgR0xYQ29udGV4dCBjdHggKTsKCmV4dGVybiBHTFhEcmF3YWJsZSBnbFhHZXRDdXJy
ZW50UmVhZERyYXdhYmxlKCB2b2lkICk7CgpleHRlcm4gaW50IGdsWFF1ZXJ5Q29udGV4dCggRGlz
cGxheSAqZHB5LCBHTFhDb250ZXh0IGN0eCwgaW50IGF0dHJpYnV0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCAqdmFsdWUgKTsKCmV4dGVybiB2b2lkIGdsWFNlbGVjdEV2ZW50KCBE
aXNwbGF5ICpkcHksIEdMWERyYXdhYmxlIGRyYXdhYmxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBtYXNrICk7CgpleHRlcm4gdm9pZCBnbFhHZXRTZWxlY3RlZEV2
ZW50KCBEaXNwbGF5ICpkcHksIEdMWERyYXdhYmxlIGRyYXdhYmxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICptYXNrICk7CiMgMzIyICIvdXNyL2xvY2Fs
L2luY2x1ZGUvR0wvZ2x4LmgiIDMKZXh0ZXJuIGludCBnbFhHZXRWaWRlb1N5bmNTR0kodW5zaWdu
ZWQgaW50ICpjb3VudCk7CmV4dGVybiBpbnQgZ2xYV2FpdFZpZGVvU3luY1NHSShpbnQgZGl2aXNv
ciwgaW50IHJlbWFpbmRlciwgdW5zaWduZWQgaW50ICpjb3VudCk7CiMgMzU0ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvR0wvZ2x4LmgiIDMKZXh0ZXJuIHZvaWQgZ2xYRnJlZUNvbnRleHRFWFQoRGlzcGxh
eSAqZHB5LCBHTFhDb250ZXh0IGNvbnRleHQpOwoKZXh0ZXJuIEdMWENvbnRleHRJRCBnbFhHZXRD
b250ZXh0SURFWFQoY29uc3QgR0xYQ29udGV4dCBjb250ZXh0KTsKCmV4dGVybiBEaXNwbGF5ICpn
bFhHZXRDdXJyZW50RGlzcGxheUVYVCh2b2lkKTsKCmV4dGVybiBHTFhDb250ZXh0IGdsWEltcG9y
dENvbnRleHRFWFQoRGlzcGxheSAqZHB5LCBHTFhDb250ZXh0SUQgY29udGV4dElEKTsKCmV4dGVy
biBpbnQgZ2xYUXVlcnlDb250ZXh0SW5mb0VYVChEaXNwbGF5ICpkcHksIEdMWENvbnRleHQgY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhdHRyaWJ1dGUsaW50
ICp2YWx1ZSk7CiMgMzc1ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2x4LmgiIDMKZXh0ZXJuIHZv
aWQgZ2xYQ29weVN1YkJ1ZmZlck1FU0EoIERpc3BsYXkgKmRweSwgR0xYRHJhd2FibGUgZHJhd2Fi
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwgaW50IHksIGludCB3
aWR0aCwgaW50IGhlaWdodCApOwojIDM4OCAiL3Vzci9sb2NhbC9pbmNsdWRlL0dML2dseC5oIiAz
CmV4dGVybiBHTFhQaXhtYXAgZ2xYQ3JlYXRlR0xYUGl4bWFwTUVTQSggRGlzcGxheSAqZHB5LCBY
VmlzdWFsSW5mbyAqdmlzdWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBpeG1hcCBwaXhtYXAsIENvbG9ybWFwIGNtYXAgKTsKIyA0MDEgIi91c3IvbG9jYWwvaW5j
bHVkZS9HTC9nbHguaCIgMwpleHRlcm4gaW50IGdsWFJlbGVhc2VCdWZmZXJzTUVTQSggRGlzcGxh
eSAqZHB5LCBHTFhEcmF3YWJsZSBkICk7CiMgNDE2ICIvdXNyL2xvY2FsL2luY2x1ZGUvR0wvZ2x4
LmgiIDMKZXh0ZXJuIEdMYm9vbGVhbiBnbFhTZXQzRGZ4TW9kZU1FU0EoIEdMaW50IG1vZGUgKTsK
IyA0MjggIi91c3IvbG9jYWwvaW5jbHVkZS9HTC9nbHguaCIgMwpleHRlcm4gdm9pZCAoKmdsWEdl
dFByb2NBZGRyZXNzQVJCKGNvbnN0IEdMdWJ5dGUgKnByb2NOYW1lKSkoKTsKIyA0MzkgIi91c3Iv
bG9jYWwvaW5jbHVkZS9HTC9nbHguaCIgMwp9CiMgMTA3ICJ0dXhyYWNlci5oIiAyCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL3RjbC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3RjbC5oIiAzCmV4dGVy
biAiQyIgewojIDE5NyAiL3Vzci9pbmNsdWRlL3RjbC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgMTk4
ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDIgMwojIDMzMiAiL3Vzci9pbmNsdWRlL3RjbC5oIiAzCiAg
ICB0eXBlZGVmIHZvaWQgKkNsaWVudERhdGE7CiMgMzU4ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMK
dHlwZWRlZiBzdHJ1Y3QgVGNsX0ludGVycCB7CiAgICBjaGFyICpyZXN1bHQ7CgogICAgdm9pZCAo
KmZyZWVQcm9jKSAoY2hhciAqYmxvY2tQdHIpOwoKCgoKCgoKICAgIGludCBlcnJvckxpbmU7CgoK
fSBUY2xfSW50ZXJwOwoKdHlwZWRlZiBzdHJ1Y3QgVGNsX0FzeW5jSGFuZGxlcl8gKlRjbF9Bc3lu
Y0hhbmRsZXI7CnR5cGVkZWYgc3RydWN0IFRjbF9DaGFubmVsXyAqVGNsX0NoYW5uZWw7CnR5cGVk
ZWYgc3RydWN0IFRjbF9Db21tYW5kXyAqVGNsX0NvbW1hbmQ7CnR5cGVkZWYgc3RydWN0IFRjbF9D
b25kaXRpb25fICpUY2xfQ29uZGl0aW9uOwp0eXBlZGVmIHN0cnVjdCBUY2xfRW5jb2RpbmdTdGF0
ZV8gKlRjbF9FbmNvZGluZ1N0YXRlOwp0eXBlZGVmIHN0cnVjdCBUY2xfRW5jb2RpbmdfICpUY2xf
RW5jb2Rpbmc7CnR5cGVkZWYgc3RydWN0IFRjbF9FdmVudCBUY2xfRXZlbnQ7CnR5cGVkZWYgc3Ry
dWN0IFRjbF9NdXRleF8gKlRjbF9NdXRleDsKdHlwZWRlZiBzdHJ1Y3QgVGNsX1BpZF8gKlRjbF9Q
aWQ7CnR5cGVkZWYgc3RydWN0IFRjbF9SZWdFeHBfICpUY2xfUmVnRXhwOwp0eXBlZGVmIHN0cnVj
dCBUY2xfVGhyZWFkRGF0YUtleV8gKlRjbF9UaHJlYWREYXRhS2V5Owp0eXBlZGVmIHN0cnVjdCBU
Y2xfVGhyZWFkSWRfICpUY2xfVGhyZWFkSWQ7CnR5cGVkZWYgc3RydWN0IFRjbF9UaW1lclRva2Vu
XyAqVGNsX1RpbWVyVG9rZW47CnR5cGVkZWYgc3RydWN0IFRjbF9UcmFjZV8gKlRjbF9UcmFjZTsK
dHlwZWRlZiBzdHJ1Y3QgVGNsX1Zhcl8gKlRjbF9WYXI7CiMgNDAyICIvdXNyL2luY2x1ZGUvdGNs
LmgiIDMKdHlwZWRlZiB2b2lkIChUY2xfVGhyZWFkQ3JlYXRlUHJvYykgKENsaWVudERhdGEgY2xp
ZW50RGF0YSk7CiMgNDc0ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgVGNs
X1JlZ0V4cEluZGljZXMgewogICAgbG9uZyBzdGFydDsKICAgIGxvbmcgZW5kOwoKfSBUY2xfUmVn
RXhwSW5kaWNlczsKCnR5cGVkZWYgc3RydWN0IFRjbF9SZWdFeHBJbmZvIHsKICAgIGludCBuc3Vi
czsKCiAgICBUY2xfUmVnRXhwSW5kaWNlcyAqbWF0Y2hlczsKCiAgICBsb25nIGV4dGVuZFN0YXJ0
OwoKICAgIGxvbmcgcmVzZXJ2ZWQ7Cn0gVGNsX1JlZ0V4cEluZm87CgoKCgoKCnR5cGVkZWYgc3Ry
dWN0IHN0YXQgKlRjbF9TdGF0XzsKIyA1MzAgIi91c3IvaW5jbHVkZS90Y2wuaCIgMwp0eXBlZGVm
IGVudW0ge1RDTF9JTlQsIFRDTF9ET1VCTEUsIFRDTF9FSVRIRVJ9IFRjbF9WYWx1ZVR5cGU7CnR5
cGVkZWYgc3RydWN0IFRjbF9WYWx1ZSB7CiAgICBUY2xfVmFsdWVUeXBlIHR5cGU7CgogICAgbG9u
ZyBpbnRWYWx1ZTsKICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKfSBUY2xfVmFsdWU7CgoKCgoKCgpz
dHJ1Y3QgVGNsX09iajsKCgoKCgp0eXBlZGVmIGludCAoVGNsX0FwcEluaXRQcm9jKSAoVGNsX0lu
dGVycCAqaW50ZXJwKTsKdHlwZWRlZiBpbnQgKFRjbF9Bc3luY1Byb2MpIChDbGllbnREYXRhIGNs
aWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IGNvZGUpOwoKdHlwZWRlZiB2b2lkIChU
Y2xfQ2hhbm5lbFByb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEsIGludCBtYXNrKTsKdHlwZWRl
ZiB2b2lkIChUY2xfQ2xvc2VQcm9jKSAoQ2xpZW50RGF0YSBkYXRhKTsKdHlwZWRlZiB2b2lkIChU
Y2xfQ21kRGVsZXRlUHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0YSk7CnR5cGVkZWYgaW50IChU
Y2xfQ21kUHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBp
bnQgYXJnYywgY2hhciAqYXJndltdKTsKCnR5cGVkZWYgdm9pZCAoVGNsX0NtZFRyYWNlUHJvYykg
KENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgbGV2ZWwsIGNo
YXIgKmNvbW1hbmQsIFRjbF9DbWRQcm9jICpwcm9jLCBDbGllbnREYXRhIGNtZENsaWVudERhdGEs
IGludCBhcmdjLCBjaGFyICphcmd2W10pOwoKCnR5cGVkZWYgdm9pZCAoVGNsX0R1cEludGVybmFs
UmVwUHJvYykgKHN0cnVjdCBUY2xfT2JqICpzcmNQdHIsIHN0cnVjdCBUY2xfT2JqICpkdXBQdHIp
OwoKdHlwZWRlZiBpbnQgKFRjbF9FbmNvZGluZ0NvbnZlcnRQcm9jKShDbGllbnREYXRhIGNsaWVu
dERhdGEsIGNvbnN0IGNoYXIgKnNyYywgaW50IHNyY0xlbiwgaW50IGZsYWdzLCBUY2xfRW5jb2Rp
bmdTdGF0ZSAqc3RhdGVQdHIsIGNoYXIgKmRzdCwgaW50IGRzdExlbiwgaW50ICpzcmNSZWFkUHRy
LCBpbnQgKmRzdFdyb3RlUHRyLCBpbnQgKmRzdENoYXJzUHRyKTsKCgoKdHlwZWRlZiB2b2lkIChU
Y2xfRW5jb2RpbmdGcmVlUHJvYykoQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKdHlwZWRlZiBpbnQg
KFRjbF9FdmVudFByb2MpIChUY2xfRXZlbnQgKmV2UHRyLCBpbnQgZmxhZ3MpOwp0eXBlZGVmIHZv
aWQgKFRjbF9FdmVudENoZWNrUHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0YSwgaW50IGZsYWdz
KTsKCnR5cGVkZWYgaW50IChUY2xfRXZlbnREZWxldGVQcm9jKSAoVGNsX0V2ZW50ICpldlB0ciwg
Q2xpZW50RGF0YSBjbGllbnREYXRhKTsKCnR5cGVkZWYgdm9pZCAoVGNsX0V2ZW50U2V0dXBQcm9j
KSAoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBpbnQgZmxhZ3MpOwoKdHlwZWRlZiB2b2lkIChUY2xf
RXhpdFByb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEpOwp0eXBlZGVmIHZvaWQgKFRjbF9GaWxl
UHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0YSwgaW50IG1hc2spOwp0eXBlZGVmIHZvaWQgKFRj
bF9GaWxlRnJlZVByb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEpOwp0eXBlZGVmIHZvaWQgKFRj
bF9GcmVlSW50ZXJuYWxSZXBQcm9jKSAoc3RydWN0IFRjbF9PYmogKm9ialB0cik7CnR5cGVkZWYg
dm9pZCAoVGNsX0ZyZWVQcm9jKSAoY2hhciAqYmxvY2tQdHIpOwp0eXBlZGVmIHZvaWQgKFRjbF9J
ZGxlUHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0YSk7CnR5cGVkZWYgdm9pZCAoVGNsX0ludGVy
cERlbGV0ZVByb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCk7
Cgp0eXBlZGVmIGludCAoVGNsX01hdGhQcm9jKSAoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xf
SW50ZXJwICppbnRlcnAsIFRjbF9WYWx1ZSAqYXJncywgVGNsX1ZhbHVlICpyZXN1bHRQdHIpOwoK
dHlwZWRlZiB2b2lkIChUY2xfTmFtZXNwYWNlRGVsZXRlUHJvYykgKENsaWVudERhdGEgY2xpZW50
RGF0YSk7CnR5cGVkZWYgaW50IChUY2xfT2JqQ21kUHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0
YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywgc3RydWN0IFRjbF9PYmogKmNvbnN0IG9i
anZbXSk7Cgp0eXBlZGVmIGludCAoVGNsX1BhY2thZ2VJbml0UHJvYykgKFRjbF9JbnRlcnAgKmlu
dGVycCk7CnR5cGVkZWYgdm9pZCAoVGNsX1BhbmljUHJvYykgKGNoYXIgKiBmb3JtYXQsIC4uLik7
CnR5cGVkZWYgdm9pZCAoVGNsX1RjcEFjY2VwdFByb2MpIChDbGllbnREYXRhIGNhbGxiYWNrRGF0
YSwgVGNsX0NoYW5uZWwgY2hhbiwgY2hhciAqYWRkcmVzcywgaW50IHBvcnQpOwoKdHlwZWRlZiB2
b2lkIChUY2xfVGltZXJQcm9jKSAoQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKdHlwZWRlZiBpbnQg
KFRjbF9TZXRGcm9tQW55UHJvYykgKFRjbF9JbnRlcnAgKmludGVycCwgc3RydWN0IFRjbF9PYmog
Km9ialB0cik7Cgp0eXBlZGVmIHZvaWQgKFRjbF9VcGRhdGVTdHJpbmdQcm9jKSAoc3RydWN0IFRj
bF9PYmogKm9ialB0cik7CnR5cGVkZWYgY2hhciAqKFRjbF9WYXJUcmFjZVByb2MpIChDbGllbnRE
YXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgY2hhciAqcGFydDEsIGNoYXIgKnBh
cnQyLCBpbnQgZmxhZ3MpOwoKdHlwZWRlZiB2b2lkIChUY2xfQ3JlYXRlRmlsZUhhbmRsZXJQcm9j
KSAoaW50IGZkLCBpbnQgbWFzaywgVGNsX0ZpbGVQcm9jICpwcm9jLCBDbGllbnREYXRhIGNsaWVu
dERhdGEpOwoKdHlwZWRlZiB2b2lkIChUY2xfRGVsZXRlRmlsZUhhbmRsZXJQcm9jKSAoaW50IGZk
KTsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IFRjbF9PYmpUeXBlIHsKICAgIGNoYXIgKm5hbWU7CiAg
ICBUY2xfRnJlZUludGVybmFsUmVwUHJvYyAqZnJlZUludFJlcFByb2M7CgoKCiAgICBUY2xfRHVw
SW50ZXJuYWxSZXBQcm9jICpkdXBJbnRSZXBQcm9jOwoKCiAgICBUY2xfVXBkYXRlU3RyaW5nUHJv
YyAqdXBkYXRlU3RyaW5nUHJvYzsKCgogICAgVGNsX1NldEZyb21BbnlQcm9jICpzZXRGcm9tQW55
UHJvYzsKCgoKCn0gVGNsX09ialR5cGU7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBUY2xfT2JqIHsK
ICAgIGludCByZWZDb3VudDsKICAgIGNoYXIgKmJ5dGVzOwojIDY0NiAiL3Vzci9pbmNsdWRlL3Rj
bC5oIiAzCiAgICBpbnQgbGVuZ3RoOwoKICAgIFRjbF9PYmpUeXBlICp0eXBlUHRyOwoKCgogICAg
dW5pb24gewogICAgICAgIGxvbmcgbG9uZ1ZhbHVlOwogICAgICAgIGRvdWJsZSBkb3VibGVWYWx1
ZTsKICAgICAgICB2b2lkICpvdGhlclZhbHVlUHRyOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgIHZvaWQgKnB0cjE7CiAgICAgICAgICAgIHZvaWQgKnB0cjI7CiAgICAgICAgfSB0d29QdHJW
YWx1ZTsKICAgIH0gaW50ZXJuYWxSZXA7Cn0gVGNsX09iajsKIyA2NzQgIi91c3IvaW5jbHVkZS90
Y2wuaCIgMwp2b2lkIFRjbF9JbmNyUmVmQ291bnQgKFRjbF9PYmogKm9ialB0cik7CnZvaWQgVGNs
X0RlY3JSZWZDb3VudCAoVGNsX09iaiAqb2JqUHRyKTsKaW50IFRjbF9Jc1NoYXJlZCAoVGNsX09i
aiAqb2JqUHRyKTsKIyA3MjUgIi91c3IvaW5jbHVkZS90Y2wuaCIgMwp0eXBlZGVmIHN0cnVjdCBU
Y2xfU2F2ZWRSZXN1bHQgewogICAgY2hhciAqcmVzdWx0OwogICAgVGNsX0ZyZWVQcm9jICpmcmVl
UHJvYzsKICAgIFRjbF9PYmogKm9ialJlc3VsdFB0cjsKICAgIGNoYXIgKmFwcGVuZFJlc3VsdDsK
ICAgIGludCBhcHBlbmRBdmw7CiAgICBpbnQgYXBwZW5kVXNlZDsKICAgIGNoYXIgcmVzdWx0U3Bh
Y2VbMjAwICsxXTsKfSBUY2xfU2F2ZWRSZXN1bHQ7CiMgNzQyICIvdXNyL2luY2x1ZGUvdGNsLmgi
IDMKdHlwZWRlZiBzdHJ1Y3QgVGNsX05hbWVzcGFjZSB7CiAgICBjaGFyICpuYW1lOwoKCgogICAg
Y2hhciAqZnVsbE5hbWU7CgogICAgQ2xpZW50RGF0YSBjbGllbnREYXRhOwoKICAgIFRjbF9OYW1l
c3BhY2VEZWxldGVQcm9jKiBkZWxldGVQcm9jOwoKCiAgICBzdHJ1Y3QgVGNsX05hbWVzcGFjZSog
cGFyZW50UHRyOwoKCgp9IFRjbF9OYW1lc3BhY2U7CiMgNzgyICIvdXNyL2luY2x1ZGUvdGNsLmgi
IDMKdHlwZWRlZiBzdHJ1Y3QgVGNsX0NhbGxGcmFtZSB7CiAgICBUY2xfTmFtZXNwYWNlICpuc1B0
cjsKICAgIGludCBkdW1teTE7CiAgICBpbnQgZHVtbXkyOwogICAgY2hhciAqZHVtbXkzOwogICAg
Y2hhciAqZHVtbXk0OwogICAgY2hhciAqZHVtbXk1OwogICAgaW50IGR1bW15NjsKICAgIGNoYXIg
KmR1bW15NzsKICAgIGNoYXIgKmR1bW15ODsKICAgIGludCBkdW1teTk7CiAgICBjaGFyKiBkdW1t
eTEwOwp9IFRjbF9DYWxsRnJhbWU7CiMgODExICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKdHlwZWRl
ZiBzdHJ1Y3QgVGNsX0NtZEluZm8gewogICAgaW50IGlzTmF0aXZlT2JqZWN0UHJvYzsKCgoKICAg
IFRjbF9PYmpDbWRQcm9jICpvYmpQcm9jOwogICAgQ2xpZW50RGF0YSBvYmpDbGllbnREYXRhOwog
ICAgVGNsX0NtZFByb2MgKnByb2M7CiAgICBDbGllbnREYXRhIGNsaWVudERhdGE7CiAgICBUY2xf
Q21kRGVsZXRlUHJvYyAqZGVsZXRlUHJvYzsKCgogICAgQ2xpZW50RGF0YSBkZWxldGVEYXRhOwoK
ICAgIFRjbF9OYW1lc3BhY2UgKm5hbWVzcGFjZVB0cjsKCgoKCn0gVGNsX0NtZEluZm87CiMgODM5
ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgVGNsX0RTdHJpbmcgewogICAg
Y2hhciAqc3RyaW5nOwoKICAgIGludCBsZW5ndGg7CgogICAgaW50IHNwYWNlQXZsOwoKICAgIGNo
YXIgc3RhdGljU3BhY2VbMjAwXTsKCgp9IFRjbF9EU3RyaW5nOwojIDk1MSAiL3Vzci9pbmNsdWRl
L3RjbC5oIiAzCnN0cnVjdCBUY2xfSGFzaFRhYmxlOwojIDk2MCAiL3Vzci9pbmNsdWRlL3RjbC5o
IiAzCnR5cGVkZWYgc3RydWN0IFRjbF9IYXNoRW50cnkgewogICAgc3RydWN0IFRjbF9IYXNoRW50
cnkgKm5leHRQdHI7CgoKICAgIHN0cnVjdCBUY2xfSGFzaFRhYmxlICp0YWJsZVB0cjsKICAgIHN0
cnVjdCBUY2xfSGFzaEVudHJ5ICoqYnVja2V0UHRyOwoKCiAgICBDbGllbnREYXRhIGNsaWVudERh
dGE7CgogICAgdW5pb24gewogICAgICAgIGNoYXIgKm9uZVdvcmRWYWx1ZTsKICAgICAgICBpbnQg
d29yZHNbMV07CgoKCiAgICAgICAgY2hhciBzdHJpbmdbNF07CgoKICAgIH0ga2V5Owp9IFRjbF9I
YXNoRW50cnk7CiMgOTg5ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgVGNs
X0hhc2hUYWJsZSB7CiAgICBUY2xfSGFzaEVudHJ5ICoqYnVja2V0czsKCgogICAgVGNsX0hhc2hF
bnRyeSAqc3RhdGljQnVja2V0c1s0XTsKCgogICAgaW50IG51bUJ1Y2tldHM7CgogICAgaW50IG51
bUVudHJpZXM7CgogICAgaW50IHJlYnVpbGRTaXplOwoKICAgIGludCBkb3duU2hpZnQ7CgoKICAg
IGludCBtYXNrOwoKICAgIGludCBrZXlUeXBlOwoKCgoKCiAgICBUY2xfSGFzaEVudHJ5ICooKmZp
bmRQcm9jKSAoc3RydWN0IFRjbF9IYXNoVGFibGUgKnRhYmxlUHRyLCBjb25zdCBjaGFyICprZXkp
OwoKICAgIFRjbF9IYXNoRW50cnkgKigqY3JlYXRlUHJvYykgKHN0cnVjdCBUY2xfSGFzaFRhYmxl
ICp0YWJsZVB0ciwgY29uc3QgY2hhciAqa2V5LCBpbnQgKm5ld1B0cik7Cgp9IFRjbF9IYXNoVGFi
bGU7CgoKCgoKCnR5cGVkZWYgc3RydWN0IFRjbF9IYXNoU2VhcmNoIHsKICAgIFRjbF9IYXNoVGFi
bGUgKnRhYmxlUHRyOwogICAgaW50IG5leHRJbmRleDsKCiAgICBUY2xfSGFzaEVudHJ5ICpuZXh0
RW50cnlQdHI7Cgp9IFRjbF9IYXNoU2VhcmNoOwojIDEwODEgIi91c3IvaW5jbHVkZS90Y2wuaCIg
MwpzdHJ1Y3QgVGNsX0V2ZW50IHsKICAgIFRjbF9FdmVudFByb2MgKnByb2M7CiAgICBzdHJ1Y3Qg
VGNsX0V2ZW50ICpuZXh0UHRyOwp9OwoKCgoKCnR5cGVkZWYgZW51bSB7CiAgICBUQ0xfUVVFVUVf
VEFJTCwgVENMX1FVRVVFX0hFQUQsIFRDTF9RVUVVRV9NQVJLCn0gVGNsX1F1ZXVlUG9zaXRpb247
CiMgMTEwOSAiL3Vzci9pbmNsdWRlL3RjbC5oIiAzCnR5cGVkZWYgc3RydWN0IFRjbF9UaW1lIHsK
ICAgIGxvbmcgc2VjOwogICAgbG9uZyB1c2VjOwp9IFRjbF9UaW1lOwoKdHlwZWRlZiB2b2lkIChU
Y2xfU2V0VGltZXJQcm9jKSAoVGNsX1RpbWUgKnRpbWVQdHIpOwp0eXBlZGVmIGludCAoVGNsX1dh
aXRGb3JFdmVudFByb2MpIChUY2xfVGltZSAqdGltZVB0cik7CiMgMTE1NiAiL3Vzci9pbmNsdWRl
L3RjbC5oIiAzCnR5cGVkZWYgaW50IChUY2xfRHJpdmVyQmxvY2tNb2RlUHJvYykgKCBDbGllbnRE
YXRhIGluc3RhbmNlRGF0YSwgaW50IG1vZGUpOwoKdHlwZWRlZiBpbnQgKFRjbF9Ecml2ZXJDbG9z
ZVByb2MpIChDbGllbnREYXRhIGluc3RhbmNlRGF0YSwgVGNsX0ludGVycCAqaW50ZXJwKTsKCnR5
cGVkZWYgaW50IChUY2xfRHJpdmVyQ2xvc2UyUHJvYykgKENsaWVudERhdGEgaW5zdGFuY2VEYXRh
LCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBmbGFncyk7Cgp0eXBlZGVmIGludCAoVGNsX0RyaXZl
cklucHV0UHJvYykgKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBjaGFyICpidWYsIGludCB0b1Jl
YWQsIGludCAqZXJyb3JDb2RlUHRyKTsKCnR5cGVkZWYgaW50IChUY2xfRHJpdmVyT3V0cHV0UHJv
YykgKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBjaGFyICpidWYsIGludCB0b1dyaXRlLCBpbnQg
KmVycm9yQ29kZVB0cik7Cgp0eXBlZGVmIGludCAoVGNsX0RyaXZlclNlZWtQcm9jKSAoQ2xpZW50
RGF0YSBpbnN0YW5jZURhdGEsIGxvbmcgb2Zmc2V0LCBpbnQgbW9kZSwgaW50ICplcnJvckNvZGVQ
dHIpOwoKdHlwZWRlZiBpbnQgKFRjbF9Ecml2ZXJTZXRPcHRpb25Qcm9jKSAoIENsaWVudERhdGEg
aW5zdGFuY2VEYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGNoYXIgKm9wdGlvbk5hbWUsIGNoYXIg
KnZhbHVlKTsKCgp0eXBlZGVmIGludCAoVGNsX0RyaXZlckdldE9wdGlvblByb2MpICggQ2xpZW50
RGF0YSBpbnN0YW5jZURhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgY2hhciAqb3B0aW9uTmFtZSwg
VGNsX0RTdHJpbmcgKmRzUHRyKTsKCgp0eXBlZGVmIHZvaWQgKFRjbF9Ecml2ZXJXYXRjaFByb2Mp
ICggQ2xpZW50RGF0YSBpbnN0YW5jZURhdGEsIGludCBtYXNrKTsKCnR5cGVkZWYgaW50IChUY2xf
RHJpdmVyR2V0SGFuZGxlUHJvYykgKCBDbGllbnREYXRhIGluc3RhbmNlRGF0YSwgaW50IGRpcmVj
dGlvbiwgQ2xpZW50RGF0YSAqaGFuZGxlUHRyKTsKIyAxMjE0ICIvdXNyL2luY2x1ZGUvdGNsLmgi
IDMKdHlwZWRlZiBlbnVtIFRjbF9Fb2xUcmFuc2xhdGlvbiB7CiAgICBUQ0xfVFJBTlNMQVRFX0FV
VE8sCiAgICBUQ0xfVFJBTlNMQVRFX0NSLAogICAgVENMX1RSQU5TTEFURV9MRiwKICAgIFRDTF9U
UkFOU0xBVEVfQ1JMRgp9IFRjbF9Fb2xUcmFuc2xhdGlvbjsKIyAxMjI5ICIvdXNyL2luY2x1ZGUv
dGNsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgVGNsX0NoYW5uZWxUeXBlIHsKICAgIGNoYXIgKnR5cGVO
YW1lOwoKCiAgICBUY2xfRHJpdmVyQmxvY2tNb2RlUHJvYyAqYmxvY2tNb2RlUHJvYzsKCgogICAg
VGNsX0RyaXZlckNsb3NlUHJvYyAqY2xvc2VQcm9jOwoKCgogICAgVGNsX0RyaXZlcklucHV0UHJv
YyAqaW5wdXRQcm9jOwoKICAgIFRjbF9Ecml2ZXJPdXRwdXRQcm9jICpvdXRwdXRQcm9jOwoKICAg
IFRjbF9Ecml2ZXJTZWVrUHJvYyAqc2Vla1Byb2M7CgogICAgVGNsX0RyaXZlclNldE9wdGlvblBy
b2MgKnNldE9wdGlvblByb2M7CgogICAgVGNsX0RyaXZlckdldE9wdGlvblByb2MgKmdldE9wdGlv
blByb2M7CgogICAgVGNsX0RyaXZlcldhdGNoUHJvYyAqd2F0Y2hQcm9jOwoKICAgIFRjbF9Ecml2
ZXJHZXRIYW5kbGVQcm9jICpnZXRIYW5kbGVQcm9jOwoKCiAgICBUY2xfRHJpdmVyQ2xvc2UyUHJv
YyAqY2xvc2UyUHJvYzsKCgoKfSBUY2xfQ2hhbm5lbFR5cGU7CiMgMTI3NSAiL3Vzci9pbmNsdWRl
L3RjbC5oIiAzCnR5cGVkZWYgZW51bSBUY2xfUGF0aFR5cGUgewogICAgVENMX1BBVEhfQUJTT0xV
VEUsCiAgICBUQ0xfUEFUSF9SRUxBVElWRSwKICAgIFRDTF9QQVRIX1ZPTFVNRV9SRUxBVElWRQp9
IFRjbF9QYXRoVHlwZTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgVGNsX05vdGlmaWVyUHJvY3Mgewog
ICAgVGNsX1NldFRpbWVyUHJvYyAqc2V0VGltZXJQcm9jOwogICAgVGNsX1dhaXRGb3JFdmVudFBy
b2MgKndhaXRGb3JFdmVudFByb2M7CiAgICBUY2xfQ3JlYXRlRmlsZUhhbmRsZXJQcm9jICpjcmVh
dGVGaWxlSGFuZGxlclByb2M7CiAgICBUY2xfRGVsZXRlRmlsZUhhbmRsZXJQcm9jICpkZWxldGVG
aWxlSGFuZGxlclByb2M7Cn0gVGNsX05vdGlmaWVyUHJvY3M7CgoKCgoKCnR5cGVkZWYgc3RydWN0
IFRjbF9FbmNvZGluZ1R5cGUgewogICAgY29uc3QgY2hhciAqZW5jb2RpbmdOYW1lOwoKCiAgICBU
Y2xfRW5jb2RpbmdDb252ZXJ0UHJvYyAqdG9VdGZQcm9jOwoKCiAgICBUY2xfRW5jb2RpbmdDb252
ZXJ0UHJvYyAqZnJvbVV0ZlByb2M7CgoKICAgIFRjbF9FbmNvZGluZ0ZyZWVQcm9jICpmcmVlUHJv
YzsKCgogICAgQ2xpZW50RGF0YSBjbGllbnREYXRhOwoKICAgIGludCBudWxsU2l6ZTsKCgoKCn0g
VGNsX0VuY29kaW5nVHlwZTsKIyAxMzY5ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKdHlwZWRlZiBz
dHJ1Y3QgVGNsX1Rva2VuIHsKICAgIGludCB0eXBlOwoKICAgIGNoYXIgKnN0YXJ0OwogICAgaW50
IHNpemU7CiAgICBpbnQgbnVtQ29tcG9uZW50czsKCgoKCn0gVGNsX1Rva2VuOwojIDE0ODggIi91
c3IvaW5jbHVkZS90Y2wuaCIgMwp0eXBlZGVmIHN0cnVjdCBUY2xfUGFyc2UgewogICAgY2hhciAq
Y29tbWVudFN0YXJ0OwoKCiAgICBpbnQgY29tbWVudFNpemU7CgoKCiAgICBjaGFyICpjb21tYW5k
U3RhcnQ7CiAgICBpbnQgY29tbWFuZFNpemU7CgoKCiAgICBpbnQgbnVtV29yZHM7CgogICAgVGNs
X1Rva2VuICp0b2tlblB0cjsKCgoKCiAgICBpbnQgbnVtVG9rZW5zOwogICAgaW50IHRva2Vuc0F2
YWlsYWJsZTsKCiAgICBpbnQgZXJyb3JUeXBlOwojIDE1MjAgIi91c3IvaW5jbHVkZS90Y2wuaCIg
MwogICAgY2hhciAqc3RyaW5nOwoKICAgIGNoYXIgKmVuZDsKCiAgICBUY2xfSW50ZXJwICppbnRl
cnA7CgogICAgY2hhciAqdGVybTsKCgoKCgogICAgaW50IGluY29tcGxldGU7CgoKCiAgICBUY2xf
VG9rZW4gc3RhdGljVG9rZW5zWzIwXTsKCgoKCgp9IFRjbF9QYXJzZTsKIyAxNTkyICIvdXNyL2lu
Y2x1ZGUvdGNsLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBUY2xfVW5pQ2hhcjsKIyAxNjM1
ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKZXh0ZXJuICJDIiBjaGFyICogVGNsX0luaXRTdHVicyAo
VGNsX0ludGVycCAqaW50ZXJwLCBjaGFyICp2ZXJzaW9uLCBpbnQgZXhhY3QpOwojIDE2NTUgIi91
c3IvaW5jbHVkZS90Y2wuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90Y2xEZWNscy5oIiAxIDMKIyAz
MCAiL3Vzci9pbmNsdWRlL3RjbERlY2xzLmgiIDMKZXh0ZXJuICJDIiBpbnQgVGNsX1BrZ1Byb3Zp
ZGVFeCAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUsIGNoYXIgKiB2ZXJzaW9uLCBD
bGllbnREYXRhIGNsaWVudERhdGEpOwoKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfUGtnUmVxdWly
ZUV4IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgY2hhciAqIHZlcnNpb24sIGlu
dCBleGFjdCwgQ2xpZW50RGF0YSAqIGNsaWVudERhdGFQdHIpOwoKCgpleHRlcm4gIkMiIHZvaWQg
VGNsX1BhbmljIChjaGFyICogZm9ybWF0LCAuLi4pOwoKZXh0ZXJuICJDIiBjaGFyICogVGNsX0Fs
bG9jICh1bnNpZ25lZCBpbnQgc2l6ZSk7CgpleHRlcm4gIkMiIHZvaWQgVGNsX0ZyZWUgKGNoYXIg
KiBwdHIpOwoKZXh0ZXJuICJDIiBjaGFyICogVGNsX1JlYWxsb2MgKGNoYXIgKiBwdHIsIHVuc2ln
bmVkIGludCBzaXplKTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfRGJDa2FsbG9jICh1bnNpZ25l
ZCBpbnQgc2l6ZSwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMiIGludCBUY2xf
RGJDa2ZyZWUgKGNoYXIgKiBwdHIsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CgoKZXh0ZXJuICJD
IiBjaGFyICogVGNsX0RiQ2tyZWFsbG9jIChjaGFyICogcHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSwg
Y2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9DcmVhdGVGaWxl
SGFuZGxlciAoaW50IGZkLCBpbnQgbWFzaywgVGNsX0ZpbGVQcm9jICogcHJvYywgQ2xpZW50RGF0
YSBjbGllbnREYXRhKTsKCgoKCmV4dGVybiAiQyIgdm9pZCBUY2xfRGVsZXRlRmlsZUhhbmRsZXIg
KGludCBmZCk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXRUaW1lciAoVGNsX1RpbWUgKiB0aW1l
UHRyKTsKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2xlZXAgKGludCBtcyk7CgpleHRlcm4gIkMiIGlu
dCBUY2xfV2FpdEZvckV2ZW50IChUY2xfVGltZSAqIHRpbWVQdHIpOwoKZXh0ZXJuICJDIiBpbnQg
VGNsX0FwcGVuZEFsbE9ialR5cGVzICggVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9i
alB0cik7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9BcHBlbmRTdHJpbmdzVG9PYmogKFRjbF9PYmog
KiBvYmpQdHIsIC4uLik7CgpleHRlcm4gIkMiIHZvaWQgVGNsX0FwcGVuZFRvT2JqIChUY2xfT2Jq
ICogb2JqUHRyLCBjaGFyICogYnl0ZXMsIGludCBsZW5ndGgpOwoKCmV4dGVybiAiQyIgVGNsX09i
aiAqIFRjbF9Db25jYXRPYmogKGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10pOwoKCmV4
dGVybiAiQyIgaW50IFRjbF9Db252ZXJ0VG9UeXBlIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xf
T2JqICogb2JqUHRyLCBUY2xfT2JqVHlwZSAqIHR5cGVQdHIpOwoKCmV4dGVybiAiQyIgdm9pZCBU
Y2xfRGJEZWNyUmVmQ291bnQgKFRjbF9PYmogKiBvYmpQdHIsIGNoYXIgKiBmaWxlLCBpbnQgbGlu
ZSk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EYkluY3JSZWZDb3VudCAoVGNsX09iaiAqIG9ialB0
ciwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMiIGludCBUY2xfRGJJc1NoYXJl
ZCAoVGNsX09iaiAqIG9ialB0ciwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMi
IFRjbF9PYmogKiBUY2xfRGJOZXdCb29sZWFuT2JqIChpbnQgYm9vbFZhbHVlLCBjaGFyICogZmls
ZSwgaW50IGxpbmUpOwoKCmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9EYk5ld0J5dGVBcnJheU9i
aiAoIHVuc2lnbmVkIGNoYXIgKiBieXRlcywgaW50IGxlbmd0aCwgY2hhciAqIGZpbGUsIGludCBs
aW5lKTsKCgoKZXh0ZXJuICJDIiBUY2xfT2JqICogVGNsX0RiTmV3RG91YmxlT2JqIChkb3VibGUg
ZG91YmxlVmFsdWUsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CgoKZXh0ZXJuICJDIiBUY2xfT2Jq
ICogVGNsX0RiTmV3TGlzdE9iaiAoaW50IG9iamMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSwgY2hh
ciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfRGJOZXdMb25n
T2JqIChsb25nIGxvbmdWYWx1ZSwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMi
IFRjbF9PYmogKiBUY2xfRGJOZXdPYmogKGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CgpleHRlcm4g
IkMiIFRjbF9PYmogKiBUY2xfRGJOZXdTdHJpbmdPYmogKGNvbnN0IGNoYXIgKiBieXRlcywgaW50
IGxlbmd0aCwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMiIFRjbF9PYmogKiBU
Y2xfRHVwbGljYXRlT2JqIChUY2xfT2JqICogb2JqUHRyKTsKCmV4dGVybiAiQyIgdm9pZCBUY2xG
cmVlT2JqIChUY2xfT2JqICogb2JqUHRyKTsKCmV4dGVybiAiQyIgaW50IFRjbF9HZXRCb29sZWFu
IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3RyLCBpbnQgKiBib29sUHRyKTsKCgpleHRl
cm4gIkMiIGludCBUY2xfR2V0Qm9vbGVhbkZyb21PYmogKCBUY2xfSW50ZXJwICogaW50ZXJwLCBU
Y2xfT2JqICogb2JqUHRyLCBpbnQgKiBib29sUHRyKTsKCgoKZXh0ZXJuICJDIiB1bnNpZ25lZCBj
aGFyICogVGNsX0dldEJ5dGVBcnJheUZyb21PYmogKCBUY2xfT2JqICogb2JqUHRyLCBpbnQgKiBs
ZW5ndGhQdHIpOwoKCmV4dGVybiAiQyIgaW50IFRjbF9HZXREb3VibGUgKFRjbF9JbnRlcnAgKiBp
bnRlcnAsIGNoYXIgKiBzdHIsIGRvdWJsZSAqIGRvdWJsZVB0cik7CgoKZXh0ZXJuICJDIiBpbnQg
VGNsX0dldERvdWJsZUZyb21PYmogKCBUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogb2Jq
UHRyLCBkb3VibGUgKiBkb3VibGVQdHIpOwoKCgpleHRlcm4gIkMiIGludCBUY2xfR2V0SW5kZXhG
cm9tT2JqIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogb2JqUHRyLCBjaGFyICoqIHRh
YmxlUHRyLCBjaGFyICogbXNnLCBpbnQgZmxhZ3MsIGludCAqIGluZGV4UHRyKTsKCgoKZXh0ZXJu
ICJDIiBpbnQgVGNsX0dldEludCAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgaW50
ICogaW50UHRyKTsKCgpleHRlcm4gIkMiIGludCBUY2xfR2V0SW50RnJvbU9iaiAoVGNsX0ludGVy
cCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgaW50ICogaW50UHRyKTsKCgpleHRlcm4gIkMi
IGludCBUY2xfR2V0TG9uZ0Zyb21PYmogKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBv
YmpQdHIsIGxvbmcgKiBsb25nUHRyKTsKCgpleHRlcm4gIkMiIFRjbF9PYmpUeXBlICogVGNsX0dl
dE9ialR5cGUgKGNoYXIgKiB0eXBlTmFtZSk7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfR2V0U3Ry
aW5nRnJvbU9iaiAoVGNsX09iaiAqIG9ialB0ciwgaW50ICogbGVuZ3RoUHRyKTsKCgpleHRlcm4g
IkMiIHZvaWQgVGNsX0ludmFsaWRhdGVTdHJpbmdSZXAgKCBUY2xfT2JqICogb2JqUHRyKTsKCgpl
eHRlcm4gIkMiIGludCBUY2xfTGlzdE9iakFwcGVuZExpc3QgKCBUY2xfSW50ZXJwICogaW50ZXJw
LCBUY2xfT2JqICogbGlzdFB0ciwgVGNsX09iaiAqIGVsZW1MaXN0UHRyKTsKCgoKZXh0ZXJuICJD
IiBpbnQgVGNsX0xpc3RPYmpBcHBlbmRFbGVtZW50ICggVGNsX0ludGVycCAqIGludGVycCwgVGNs
X09iaiAqIGxpc3RQdHIsIFRjbF9PYmogKiBvYmpQdHIpOwoKCgpleHRlcm4gIkMiIGludCBUY2xf
TGlzdE9iakdldEVsZW1lbnRzICggVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIGxpc3RQ
dHIsIGludCAqIG9iamNQdHIsIFRjbF9PYmogKioqIG9ianZQdHIpOwoKCgpleHRlcm4gIkMiIGlu
dCBUY2xfTGlzdE9iakluZGV4IChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogbGlzdFB0
ciwgaW50IGluZGV4LCBUY2xfT2JqICoqIG9ialB0clB0cik7CgoKCmV4dGVybiAiQyIgaW50IFRj
bF9MaXN0T2JqTGVuZ3RoIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogbGlzdFB0ciwg
aW50ICogaW50UHRyKTsKCgpleHRlcm4gIkMiIGludCBUY2xfTGlzdE9ialJlcGxhY2UgKFRjbF9J
bnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBsaXN0UHRyLCBpbnQgZmlyc3QsIGludCBjb3VudCwg
aW50IG9iamMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSk7CgoKCmV4dGVybiAiQyIgVGNsX09iaiAq
IFRjbF9OZXdCb29sZWFuT2JqIChpbnQgYm9vbFZhbHVlKTsKCmV4dGVybiAiQyIgVGNsX09iaiAq
IFRjbF9OZXdCeXRlQXJyYXlPYmogKCB1bnNpZ25lZCBjaGFyICogYnl0ZXMsIGludCBsZW5ndGgp
OwoKCmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9OZXdEb3VibGVPYmogKGRvdWJsZSBkb3VibGVW
YWx1ZSk7CgpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfTmV3SW50T2JqIChpbnQgaW50VmFsdWUp
OwoKZXh0ZXJuICJDIiBUY2xfT2JqICogVGNsX05ld0xpc3RPYmogKGludCBvYmpjLCBUY2xfT2Jq
ICpjb25zdCBvYmp2W10pOwoKCmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9OZXdMb25nT2JqIChs
b25nIGxvbmdWYWx1ZSk7CgpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfTmV3T2JqICh2b2lkKTsK
CmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9OZXdTdHJpbmdPYmogKGNvbnN0IGNoYXIgKiBieXRl
cywgaW50IGxlbmd0aCk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXRCb29sZWFuT2JqIChUY2xf
T2JqICogb2JqUHRyLCBpbnQgYm9vbFZhbHVlKTsKCgpleHRlcm4gIkMiIHVuc2lnbmVkIGNoYXIg
KiBUY2xfU2V0Qnl0ZUFycmF5TGVuZ3RoIChUY2xfT2JqICogb2JqUHRyLCBpbnQgbGVuZ3RoKTsK
CgpleHRlcm4gIkMiIHZvaWQgVGNsX1NldEJ5dGVBcnJheU9iaiAoVGNsX09iaiAqIG9ialB0ciwg
dW5zaWduZWQgY2hhciAqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNs
X1NldERvdWJsZU9iaiAoVGNsX09iaiAqIG9ialB0ciwgZG91YmxlIGRvdWJsZVZhbHVlKTsKCgpl
eHRlcm4gIkMiIHZvaWQgVGNsX1NldEludE9iaiAoVGNsX09iaiAqIG9ialB0ciwgaW50IGludFZh
bHVlKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX1NldExpc3RPYmogKFRjbF9PYmogKiBvYmpQdHIs
IGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10pOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xf
U2V0TG9uZ09iaiAoVGNsX09iaiAqIG9ialB0ciwgbG9uZyBsb25nVmFsdWUpOwoKCmV4dGVybiAi
QyIgdm9pZCBUY2xfU2V0T2JqTGVuZ3RoIChUY2xfT2JqICogb2JqUHRyLCBpbnQgbGVuZ3RoKTsK
CgpleHRlcm4gIkMiIHZvaWQgVGNsX1NldFN0cmluZ09iaiAoVGNsX09iaiAqIG9ialB0ciwgY2hh
ciAqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0FkZEVycm9ySW5m
byAoVGNsX0ludGVycCAqIGludGVycCwgY29uc3QgY2hhciAqIG1lc3NhZ2UpOwoKCmV4dGVybiAi
QyIgdm9pZCBUY2xfQWRkT2JqRXJyb3JJbmZvIChUY2xfSW50ZXJwICogaW50ZXJwLCBjb25zdCBj
aGFyICogbWVzc2FnZSwgaW50IGxlbmd0aCk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9BbGxvd0V4
Y2VwdGlvbnMgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9BcHBl
bmRFbGVtZW50IChUY2xfSW50ZXJwICogaW50ZXJwLCBjb25zdCBjaGFyICogc3RyaW5nKTsKCgpl
eHRlcm4gIkMiIHZvaWQgVGNsX0FwcGVuZFJlc3VsdCAoVGNsX0ludGVycCAqIGludGVycCwgLi4u
KTsKCmV4dGVybiAiQyIgVGNsX0FzeW5jSGFuZGxlciBUY2xfQXN5bmNDcmVhdGUgKFRjbF9Bc3lu
Y1Byb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCmV4dGVybiAiQyIgdm9pZCBU
Y2xfQXN5bmNEZWxldGUgKFRjbF9Bc3luY0hhbmRsZXIgYXN5bmMpOwoKZXh0ZXJuICJDIiBpbnQg
VGNsX0FzeW5jSW52b2tlIChUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgY29kZSk7CgoKZXh0ZXJu
ICJDIiB2b2lkIFRjbF9Bc3luY01hcmsgKFRjbF9Bc3luY0hhbmRsZXIgYXN5bmMpOwoKZXh0ZXJu
ICJDIiBpbnQgVGNsX0FzeW5jUmVhZHkgKHZvaWQpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9CYWNr
Z3JvdW5kRXJyb3IgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwoKZXh0ZXJuICJDIiBjaGFyIFRjbF9C
YWNrc2xhc2ggKGNvbnN0IGNoYXIgKiBzcmMsIGludCAqIHJlYWRQdHIpOwoKCmV4dGVybiAiQyIg
aW50IFRjbF9CYWRDaGFubmVsT3B0aW9uICggVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG9w
dGlvbk5hbWUsIGNoYXIgKiBvcHRpb25MaXN0KTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9DYWxs
V2hlbkRlbGV0ZWQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9JbnRlcnBEZWxldGVQcm9jICog
cHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9DYW5j
ZWxJZGxlQ2FsbCAoIFRjbF9JZGxlUHJvYyAqIGlkbGVQcm9jLCBDbGllbnREYXRhIGNsaWVudERh
dGEpOwoKCgpleHRlcm4gIkMiIGludCBUY2xfQ2xvc2UgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRj
bF9DaGFubmVsIGNoYW4pOwoKCmV4dGVybiAiQyIgaW50IFRjbF9Db21tYW5kQ29tcGxldGUgKGNo
YXIgKiBjbWQpOwoKZXh0ZXJuICJDIiBjaGFyICogVGNsX0NvbmNhdCAoaW50IGFyZ2MsIGNoYXIg
KiogYXJndik7CgpleHRlcm4gIkMiIGludCBUY2xfQ29udmVydEVsZW1lbnQgKGNvbnN0IGNoYXIg
KiBzcmMsIGNoYXIgKiBkc3QsIGludCBmbGFncyk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0NvbnZl
cnRDb3VudGVkRWxlbWVudCAoIGNvbnN0IGNoYXIgKiBzcmMsIGludCBsZW5ndGgsIGNoYXIgKiBk
c3QsIGludCBmbGFncyk7CgoKCmV4dGVybiAiQyIgaW50IFRjbF9DcmVhdGVBbGlhcyAoVGNsX0lu
dGVycCAqIHNsYXZlLCBjaGFyICogc2xhdmVDbWQsIFRjbF9JbnRlcnAgKiB0YXJnZXQsIGNoYXIg
KiB0YXJnZXRDbWQsIGludCBhcmdjLCBjaGFyICoqIGFyZ3YpOwoKCgpleHRlcm4gIkMiIGludCBU
Y2xfQ3JlYXRlQWxpYXNPYmogKFRjbF9JbnRlcnAgKiBzbGF2ZSwgY2hhciAqIHNsYXZlQ21kLCBU
Y2xfSW50ZXJwICogdGFyZ2V0LCBjaGFyICogdGFyZ2V0Q21kLCBpbnQgb2JqYywgVGNsX09iaiAq
Y29uc3Qgb2JqdltdKTsKCgoKCmV4dGVybiAiQyIgVGNsX0NoYW5uZWwgVGNsX0NyZWF0ZUNoYW5u
ZWwgKCBUY2xfQ2hhbm5lbFR5cGUgKiB0eXBlUHRyLCBjaGFyICogY2hhbk5hbWUsIENsaWVudERh
dGEgaW5zdGFuY2VEYXRhLCBpbnQgbWFzayk7CgoKCmV4dGVybiAiQyIgdm9pZCBUY2xfQ3JlYXRl
Q2hhbm5lbEhhbmRsZXIgKCBUY2xfQ2hhbm5lbCBjaGFuLCBpbnQgbWFzaywgVGNsX0NoYW5uZWxQ
cm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgoKCmV4dGVybiAiQyIgdm9pZCBU
Y2xfQ3JlYXRlQ2xvc2VIYW5kbGVyIChUY2xfQ2hhbm5lbCBjaGFuLCBUY2xfQ2xvc2VQcm9jICog
cHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgpleHRlcm4gIkMiIFRjbF9Db21tYW5kIFRj
bF9DcmVhdGVDb21tYW5kIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kTmFtZSwgVGNs
X0NtZFByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9DbWREZWxldGVQcm9j
ICogZGVsZXRlUHJvYyk7CgoKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0NyZWF0ZUV2ZW50U291cmNl
ICggVGNsX0V2ZW50U2V0dXBQcm9jICogc2V0dXBQcm9jLCBUY2xfRXZlbnRDaGVja1Byb2MgKiBj
aGVja1Byb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CgoKCgpleHRlcm4gIkMiIHZvaWQgVGNs
X0NyZWF0ZUV4aXRIYW5kbGVyICggVGNsX0V4aXRQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGll
bnREYXRhKTsKCgpleHRlcm4gIkMiIFRjbF9JbnRlcnAgKiBUY2xfQ3JlYXRlSW50ZXJwICh2b2lk
KTsKCmV4dGVybiAiQyIgdm9pZCBUY2xfQ3JlYXRlTWF0aEZ1bmMgKFRjbF9JbnRlcnAgKiBpbnRl
cnAsIGNoYXIgKiBuYW1lLCBpbnQgbnVtQXJncywgVGNsX1ZhbHVlVHlwZSAqIGFyZ1R5cGVzLCBU
Y2xfTWF0aFByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCgoKZXh0ZXJuICJD
IiBUY2xfQ29tbWFuZCBUY2xfQ3JlYXRlT2JqQ29tbWFuZCAoIFRjbF9JbnRlcnAgKiBpbnRlcnAs
IGNoYXIgKiBjbWROYW1lLCBUY2xfT2JqQ21kUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50
RGF0YSwgVGNsX0NtZERlbGV0ZVByb2MgKiBkZWxldGVQcm9jKTsKCgoKCmV4dGVybiAiQyIgVGNs
X0ludGVycCAqIFRjbF9DcmVhdGVTbGF2ZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHNs
YXZlTmFtZSwgaW50IGlzU2FmZSk7CgoKZXh0ZXJuICJDIiBUY2xfVGltZXJUb2tlbiBUY2xfQ3Jl
YXRlVGltZXJIYW5kbGVyIChpbnQgbWlsbGlzZWNvbmRzLCBUY2xfVGltZXJQcm9jICogcHJvYywg
Q2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgpleHRlcm4gIkMiIFRjbF9UcmFjZSBUY2xfQ3JlYXRl
VHJhY2UgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGludCBsZXZlbCwgVGNsX0NtZFRyYWNlUHJvYyAq
IHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CgoKCmV4dGVybiAiQyIgdm9pZCBUY2xfRGVs
ZXRlQXNzb2NEYXRhIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSk7CgoKZXh0ZXJu
ICJDIiB2b2lkIFRjbF9EZWxldGVDaGFubmVsSGFuZGxlciAoIFRjbF9DaGFubmVsIGNoYW4sIFRj
bF9DaGFubmVsUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CgoKCmV4dGVybiAi
QyIgdm9pZCBUY2xfRGVsZXRlQ2xvc2VIYW5kbGVyIChUY2xfQ2hhbm5lbCBjaGFuLCBUY2xfQ2xv
c2VQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgpleHRlcm4gIkMiIGludCBU
Y2xfRGVsZXRlQ29tbWFuZCAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNtZE5hbWUpOwoK
CmV4dGVybiAiQyIgaW50IFRjbF9EZWxldGVDb21tYW5kRnJvbVRva2VuICggVGNsX0ludGVycCAq
IGludGVycCwgVGNsX0NvbW1hbmQgY29tbWFuZCk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EZWxl
dGVFdmVudHMgKCBUY2xfRXZlbnREZWxldGVQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnRE
YXRhKTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EZWxldGVFdmVudFNvdXJjZSAoIFRjbF9FdmVu
dFNldHVwUHJvYyAqIHNldHVwUHJvYywgVGNsX0V2ZW50Q2hlY2tQcm9jICogY2hlY2tQcm9jLCBD
bGllbnREYXRhIGNsaWVudERhdGEpOwoKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EZWxldGVFeGl0
SGFuZGxlciAoIFRjbF9FeGl0UHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CgoK
ZXh0ZXJuICJDIiB2b2lkIFRjbF9EZWxldGVIYXNoRW50cnkgKCBUY2xfSGFzaEVudHJ5ICogZW50
cnlQdHIpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfRGVsZXRlSGFzaFRhYmxlICggVGNsX0hhc2hU
YWJsZSAqIHRhYmxlUHRyKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0RlbGV0ZUludGVycCAoVGNs
X0ludGVycCAqIGludGVycCk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EZXRhY2hQaWRzIChpbnQg
bnVtUGlkcywgVGNsX1BpZCAqIHBpZFB0cik7CiMgMzg0ICIvdXNyL2luY2x1ZGUvdGNsRGVjbHMu
aCIgMwpleHRlcm4gIkMiIHZvaWQgVGNsX0RlbGV0ZVRpbWVySGFuZGxlciAoIFRjbF9UaW1lclRv
a2VuIHRva2VuKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0RlbGV0ZVRyYWNlIChUY2xfSW50ZXJw
ICogaW50ZXJwLCBUY2xfVHJhY2UgdHJhY2UpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfRG9udENh
bGxXaGVuRGVsZXRlZCAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9JbnRlcnBEZWxldGVQcm9j
ICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgoKCmV4dGVybiAiQyIgaW50IFRjbF9E
b09uZUV2ZW50IChpbnQgZmxhZ3MpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9Eb1doZW5JZGxlIChU
Y2xfSWRsZVByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCmV4dGVybiAiQyIg
Y2hhciAqIFRjbF9EU3RyaW5nQXBwZW5kIChUY2xfRFN0cmluZyAqIGRzUHRyLCBjb25zdCBjaGFy
ICogc3RyLCBpbnQgbGVuZ3RoKTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfRFN0cmluZ0FwcGVu
ZEVsZW1lbnQgKCBUY2xfRFN0cmluZyAqIGRzUHRyLCBjb25zdCBjaGFyICogc3RyaW5nKTsKCgpl
eHRlcm4gIkMiIHZvaWQgVGNsX0RTdHJpbmdFbmRTdWJsaXN0ICggVGNsX0RTdHJpbmcgKiBkc1B0
cik7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EU3RyaW5nRnJlZSAoVGNsX0RTdHJpbmcgKiBkc1B0
cik7CgpleHRlcm4gIkMiIHZvaWQgVGNsX0RTdHJpbmdHZXRSZXN1bHQgKCBUY2xfSW50ZXJwICog
aW50ZXJwLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0RTdHJp
bmdJbml0IChUY2xfRFN0cmluZyAqIGRzUHRyKTsKCmV4dGVybiAiQyIgdm9pZCBUY2xfRFN0cmlu
Z1Jlc3VsdCAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX0RTdHJpbmcgKiBkc1B0cik7CgoKZXh0
ZXJuICJDIiB2b2lkIFRjbF9EU3RyaW5nU2V0TGVuZ3RoICggVGNsX0RTdHJpbmcgKiBkc1B0ciwg
aW50IGxlbmd0aCk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9EU3RyaW5nU3RhcnRTdWJsaXN0ICgg
VGNsX0RTdHJpbmcgKiBkc1B0cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0VvZiAoVGNsX0NoYW5u
ZWwgY2hhbik7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfRXJybm9JZCAodm9pZCk7CgpleHRlcm4g
IkMiIGNoYXIgKiBUY2xfRXJybm9Nc2cgKGludCBlcnIpOwoKZXh0ZXJuICJDIiBpbnQgVGNsX0V2
YWwgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJpbmcpOwoKCmV4dGVybiAiQyIgaW50
IFRjbF9FdmFsRmlsZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGZpbGVOYW1lKTsKCgpl
eHRlcm4gIkMiIGludCBUY2xfRXZhbE9iaiAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAq
IG9ialB0cik7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9FdmVudHVhbGx5RnJlZSAoIENsaWVudERh
dGEgY2xpZW50RGF0YSwgVGNsX0ZyZWVQcm9jICogZnJlZVByb2MpOwoKCgpleHRlcm4gIkMiIHZv
aWQgVGNsX0V4aXQgKGludCBzdGF0dXMpOwoKZXh0ZXJuICJDIiBpbnQgVGNsX0V4cG9zZUNvbW1h
bmQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBoaWRkZW5DbWRUb2tlbiwgY2hhciAqIGNt
ZE5hbWUpOwoKCmV4dGVybiAiQyIgaW50IFRjbF9FeHByQm9vbGVhbiAoVGNsX0ludGVycCAqIGlu
dGVycCwgY2hhciAqIHN0ciwgaW50ICogcHRyKTsKCgpleHRlcm4gIkMiIGludCBUY2xfRXhwckJv
b2xlYW5PYmogKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGludCAqIHB0
cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0V4cHJEb3VibGUgKFRjbF9JbnRlcnAgKiBpbnRlcnAs
IGNoYXIgKiBzdHIsIGRvdWJsZSAqIHB0cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0V4cHJEb3Vi
bGVPYmogKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGRvdWJsZSAqIHB0
cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0V4cHJMb25nIChUY2xfSW50ZXJwICogaW50ZXJwLCBj
aGFyICogc3RyLCBsb25nICogcHRyKTsKCgpleHRlcm4gIkMiIGludCBUY2xfRXhwckxvbmdPYmog
KFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGxvbmcgKiBwdHIpOwoKCmV4
dGVybiAiQyIgaW50IFRjbF9FeHByT2JqIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICog
b2JqUHRyLCBUY2xfT2JqICoqIHJlc3VsdFB0clB0cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0V4
cHJTdHJpbmcgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJpbmcpOwoKCmV4dGVybiAi
QyIgdm9pZCBUY2xfRmluYWxpemUgKHZvaWQpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9GaW5kRXhl
Y3V0YWJsZSAoY29uc3QgY2hhciAqIGFyZ3YwKTsKCmV4dGVybiAiQyIgVGNsX0hhc2hFbnRyeSAq
IFRjbF9GaXJzdEhhc2hFbnRyeSAoIFRjbF9IYXNoVGFibGUgKiB0YWJsZVB0ciwgVGNsX0hhc2hT
ZWFyY2ggKiBzZWFyY2hQdHIpOwoKCgpleHRlcm4gIkMiIGludCBUY2xfRmx1c2ggKFRjbF9DaGFu
bmVsIGNoYW4pOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9GcmVlUmVzdWx0IChUY2xfSW50ZXJwICog
aW50ZXJwKTsKCmV4dGVybiAiQyIgaW50IFRjbF9HZXRBbGlhcyAoVGNsX0ludGVycCAqIGludGVy
cCwgY2hhciAqIHNsYXZlQ21kLCBUY2xfSW50ZXJwICoqIHRhcmdldEludGVycFB0ciwgY2hhciAq
KiB0YXJnZXRDbWRQdHIsIGludCAqIGFyZ2NQdHIsIGNoYXIgKioqIGFyZ3ZQdHIpOwoKCgoKCmV4
dGVybiAiQyIgaW50IFRjbF9HZXRBbGlhc09iaiAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq
IHNsYXZlQ21kLCBUY2xfSW50ZXJwICoqIHRhcmdldEludGVycFB0ciwgY2hhciAqKiB0YXJnZXRD
bWRQdHIsIGludCAqIG9iamNQdHIsIFRjbF9PYmogKioqIG9ianYpOwoKCgoKCmV4dGVybiAiQyIg
Q2xpZW50RGF0YSBUY2xfR2V0QXNzb2NEYXRhIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICog
bmFtZSwgVGNsX0ludGVycERlbGV0ZVByb2MgKiogcHJvY1B0cik7CgoKZXh0ZXJuICJDIiBUY2xf
Q2hhbm5lbCBUY2xfR2V0Q2hhbm5lbCAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNoYW5O
YW1lLCBpbnQgKiBtb2RlUHRyKTsKCgpleHRlcm4gIkMiIGludCBUY2xfR2V0Q2hhbm5lbEJ1ZmZl
clNpemUgKCBUY2xfQ2hhbm5lbCBjaGFuKTsKCgpleHRlcm4gIkMiIGludCBUY2xfR2V0Q2hhbm5l
bEhhbmRsZSAoVGNsX0NoYW5uZWwgY2hhbiwgaW50IGRpcmVjdGlvbiwgQ2xpZW50RGF0YSAqIGhh
bmRsZVB0cik7CgoKZXh0ZXJuICJDIiBDbGllbnREYXRhIFRjbF9HZXRDaGFubmVsSW5zdGFuY2VE
YXRhICggVGNsX0NoYW5uZWwgY2hhbik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0dldENoYW5uZWxN
b2RlIChUY2xfQ2hhbm5lbCBjaGFuKTsKCmV4dGVybiAiQyIgY2hhciAqIFRjbF9HZXRDaGFubmVs
TmFtZSAoVGNsX0NoYW5uZWwgY2hhbik7CgpleHRlcm4gIkMiIGludCBUY2xfR2V0Q2hhbm5lbE9w
dGlvbiAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVsIGNoYW4sIGNoYXIgKiBvcHRp
b25OYW1lLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKCgoKZXh0ZXJuICJDIiBUY2xfQ2hhbm5lbFR5
cGUgKiBUY2xfR2V0Q2hhbm5lbFR5cGUgKFRjbF9DaGFubmVsIGNoYW4pOwoKZXh0ZXJuICJDIiBp
bnQgVGNsX0dldENvbW1hbmRJbmZvIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kTmFt
ZSwgVGNsX0NtZEluZm8gKiBpbmZvUHRyKTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfR2V0Q29t
bWFuZE5hbWUgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9Db21tYW5kIGNvbW1hbmQpOwoKCmV4
dGVybiAiQyIgaW50IFRjbF9HZXRFcnJubyAodm9pZCk7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xf
R2V0SG9zdE5hbWUgKHZvaWQpOwoKZXh0ZXJuICJDIiBpbnQgVGNsX0dldEludGVycFBhdGggKCBU
Y2xfSW50ZXJwICogYXNrSW50ZXJwLCBUY2xfSW50ZXJwICogc2xhdmVJbnRlcnApOwoKCgpleHRl
cm4gIkMiIFRjbF9JbnRlcnAgKiBUY2xfR2V0TWFzdGVyIChUY2xfSW50ZXJwICogaW50ZXJwKTsK
CmV4dGVybiAiQyIgY29uc3QgY2hhciAqIFRjbF9HZXROYW1lT2ZFeGVjdXRhYmxlICh2b2lkKTsK
CmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9HZXRPYmpSZXN1bHQgKFRjbF9JbnRlcnAgKiBpbnRl
cnApOwoKCmV4dGVybiAiQyIgaW50IFRjbF9HZXRPcGVuRmlsZSAoVGNsX0ludGVycCAqIGludGVy
cCwgY2hhciAqIHN0ciwgaW50IGZvcldyaXRpbmcsIGludCBjaGVja1VzYWdlLCBDbGllbnREYXRh
ICogZmlsZVB0cik7CgoKCgpleHRlcm4gIkMiIFRjbF9QYXRoVHlwZSBUY2xfR2V0UGF0aFR5cGUg
KGNoYXIgKiBwYXRoKTsKCmV4dGVybiAiQyIgaW50IFRjbF9HZXRzIChUY2xfQ2hhbm5lbCBjaGFu
LCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKCgpleHRlcm4gIkMiIGludCBUY2xfR2V0c09iaiAoVGNs
X0NoYW5uZWwgY2hhbiwgVGNsX09iaiAqIG9ialB0cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0dl
dFNlcnZpY2VNb2RlICh2b2lkKTsKCmV4dGVybiAiQyIgVGNsX0ludGVycCAqIFRjbF9HZXRTbGF2
ZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHNsYXZlTmFtZSk7CgoKZXh0ZXJuICJDIiBU
Y2xfQ2hhbm5lbCBUY2xfR2V0U3RkQ2hhbm5lbCAoaW50IHR5cGUpOwoKZXh0ZXJuICJDIiBjaGFy
ICogVGNsX0dldFN0cmluZ1Jlc3VsdCAoVGNsX0ludGVycCAqIGludGVycCk7CgpleHRlcm4gIkMi
IGNoYXIgKiBUY2xfR2V0VmFyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwg
aW50IGZsYWdzKTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfR2V0VmFyMiAoVGNsX0ludGVycCAq
IGludGVycCwgY2hhciAqIHBhcnQxLCBjaGFyICogcGFydDIsIGludCBmbGFncyk7CgoKZXh0ZXJu
ICJDIiBpbnQgVGNsX0dsb2JhbEV2YWwgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBjb21t
YW5kKTsKCgpleHRlcm4gIkMiIGludCBUY2xfR2xvYmFsRXZhbE9iaiAoVGNsX0ludGVycCAqIGlu
dGVycCwgVGNsX09iaiAqIG9ialB0cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0hpZGVDb21tYW5k
IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kTmFtZSwgY2hhciAqIGhpZGRlbkNtZFRv
a2VuKTsKCgpleHRlcm4gIkMiIGludCBUY2xfSW5pdCAoVGNsX0ludGVycCAqIGludGVycCk7Cgpl
eHRlcm4gIkMiIHZvaWQgVGNsX0luaXRIYXNoVGFibGUgKCBUY2xfSGFzaFRhYmxlICogdGFibGVQ
dHIsIGludCBrZXlUeXBlKTsKCgpleHRlcm4gIkMiIGludCBUY2xfSW5wdXRCbG9ja2VkIChUY2xf
Q2hhbm5lbCBjaGFuKTsKCmV4dGVybiAiQyIgaW50IFRjbF9JbnB1dEJ1ZmZlcmVkIChUY2xfQ2hh
bm5lbCBjaGFuKTsKCmV4dGVybiAiQyIgaW50IFRjbF9JbnRlcnBEZWxldGVkIChUY2xfSW50ZXJw
ICogaW50ZXJwKTsKCmV4dGVybiAiQyIgaW50IFRjbF9Jc1NhZmUgKFRjbF9JbnRlcnAgKiBpbnRl
cnApOwoKZXh0ZXJuICJDIiBjaGFyICogVGNsX0pvaW5QYXRoIChpbnQgYXJnYywgY2hhciAqKiBh
cmd2LCBUY2xfRFN0cmluZyAqIHJlc3VsdFB0cik7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0xpbmtW
YXIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJOYW1lLCBjaGFyICogYWRkciwgaW50
IHR5cGUpOwoKCgpleHRlcm4gIkMiIFRjbF9DaGFubmVsIFRjbF9NYWtlRmlsZUNoYW5uZWwgKENs
aWVudERhdGEgaGFuZGxlLCBpbnQgbW9kZSk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX01ha2VTYWZl
IChUY2xfSW50ZXJwICogaW50ZXJwKTsKCmV4dGVybiAiQyIgVGNsX0NoYW5uZWwgVGNsX01ha2VU
Y3BDbGllbnRDaGFubmVsICggQ2xpZW50RGF0YSB0Y3BTb2NrZXQpOwoKCmV4dGVybiAiQyIgY2hh
ciAqIFRjbF9NZXJnZSAoaW50IGFyZ2MsIGNoYXIgKiogYXJndik7CgpleHRlcm4gIkMiIFRjbF9I
YXNoRW50cnkgKiBUY2xfTmV4dEhhc2hFbnRyeSAoIFRjbF9IYXNoU2VhcmNoICogc2VhcmNoUHRy
KTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX05vdGlmeUNoYW5uZWwgKFRjbF9DaGFubmVsIGNoYW5u
ZWwsIGludCBtYXNrKTsKCgpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfT2JqR2V0VmFyMiAoVGNs
X0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIHBhcnQxUHRyLCBUY2xfT2JqICogcGFydDJQdHIs
IGludCBmbGFncyk7CgoKCmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9PYmpTZXRWYXIyIChUY2xf
SW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogcGFydDFQdHIsIFRjbF9PYmogKiBwYXJ0MlB0ciwg
VGNsX09iaiAqIG5ld1ZhbHVlUHRyLCBpbnQgZmxhZ3MpOwoKCgoKZXh0ZXJuICJDIiBUY2xfQ2hh
bm5lbCBUY2xfT3BlbkNvbW1hbmRDaGFubmVsICggVGNsX0ludGVycCAqIGludGVycCwgaW50IGFy
Z2MsIGNoYXIgKiogYXJndiwgaW50IGZsYWdzKTsKIyA2MzYgIi91c3IvaW5jbHVkZS90Y2xEZWNs
cy5oIiAzCmV4dGVybiAiQyIgVGNsX0NoYW5uZWwgVGNsX09wZW5GaWxlQ2hhbm5lbCAoVGNsX0lu
dGVycCAqIGludGVycCwgY2hhciAqIGZpbGVOYW1lLCBjaGFyICogbW9kZVN0cmluZywgaW50IHBl
cm1pc3Npb25zKTsKCgoKZXh0ZXJuICJDIiBUY2xfQ2hhbm5lbCBUY2xfT3BlblRjcENsaWVudCAo
VGNsX0ludGVycCAqIGludGVycCwgaW50IHBvcnQsIGNoYXIgKiBhZGRyZXNzLCBjaGFyICogbXlh
ZGRyLCBpbnQgbXlwb3J0LCBpbnQgYXN5bmMpOwoKCgpleHRlcm4gIkMiIFRjbF9DaGFubmVsIFRj
bF9PcGVuVGNwU2VydmVyIChUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgcG9ydCwgY2hhciAqIGhv
c3QsIFRjbF9UY3BBY2NlcHRQcm9jICogYWNjZXB0UHJvYywgQ2xpZW50RGF0YSBjYWxsYmFja0Rh
dGEpOwoKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9QcmVzZXJ2ZSAoQ2xpZW50RGF0YSBkYXRhKTsK
CmV4dGVybiAiQyIgdm9pZCBUY2xfUHJpbnREb3VibGUgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGRv
dWJsZSB2YWx1ZSwgY2hhciAqIGRzdCk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX1B1dEVudiAoY29u
c3QgY2hhciAqIHN0cmluZyk7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfUG9zaXhFcnJvciAoVGNs
X0ludGVycCAqIGludGVycCk7CgpleHRlcm4gIkMiIHZvaWQgVGNsX1F1ZXVlRXZlbnQgKFRjbF9F
dmVudCAqIGV2UHRyLCBUY2xfUXVldWVQb3NpdGlvbiBwb3NpdGlvbik7CgoKZXh0ZXJuICJDIiBp
bnQgVGNsX1JlYWQgKFRjbF9DaGFubmVsIGNoYW4sIGNoYXIgKiBidWZQdHIsIGludCB0b1JlYWQp
OwoKCgpleHRlcm4gIkMiIHZvaWQgVGNsX1JlYXBEZXRhY2hlZFByb2NzICh2b2lkKTsKCgoKCgoK
ZXh0ZXJuICJDIiBpbnQgVGNsX1JlY29yZEFuZEV2YWwgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNo
YXIgKiBjbWQsIGludCBmbGFncyk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX1JlY29yZEFuZEV2YWxP
YmogKCBUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogY21kUHRyLCBpbnQgZmxhZ3MpOwoK
CgpleHRlcm4gIkMiIHZvaWQgVGNsX1JlZ2lzdGVyQ2hhbm5lbCAoVGNsX0ludGVycCAqIGludGVy
cCwgVGNsX0NoYW5uZWwgY2hhbik7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9SZWdpc3Rlck9ialR5
cGUgKCBUY2xfT2JqVHlwZSAqIHR5cGVQdHIpOwoKCmV4dGVybiAiQyIgVGNsX1JlZ0V4cCBUY2xf
UmVnRXhwQ29tcGlsZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0cmluZyk7CgoKZXh0
ZXJuICJDIiBpbnQgVGNsX1JlZ0V4cEV4ZWMgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9SZWdF
eHAgcmVnZXhwLCBjb25zdCBjaGFyICogc3RyLCBjb25zdCBjaGFyICogc3RhcnQpOwoKCgpleHRl
cm4gIkMiIGludCBUY2xfUmVnRXhwTWF0Y2ggKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBz
dHIsIGNoYXIgKiBwYXR0ZXJuKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX1JlZ0V4cFJhbmdlIChU
Y2xfUmVnRXhwIHJlZ2V4cCwgaW50IGluZGV4LCBjaGFyICoqIHN0YXJ0UHRyLCBjaGFyICoqIGVu
ZFB0cik7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9SZWxlYXNlIChDbGllbnREYXRhIGNsaWVudERh
dGEpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9SZXNldFJlc3VsdCAoVGNsX0ludGVycCAqIGludGVy
cCk7CgpleHRlcm4gIkMiIGludCBUY2xfU2NhbkVsZW1lbnQgKGNvbnN0IGNoYXIgKiBzdHIsIGlu
dCAqIGZsYWdQdHIpOwoKCmV4dGVybiAiQyIgaW50IFRjbF9TY2FuQ291bnRlZEVsZW1lbnQgKGNv
bnN0IGNoYXIgKiBzdHIsIGludCBsZW5ndGgsIGludCAqIGZsYWdQdHIpOwoKCmV4dGVybiAiQyIg
aW50IFRjbF9TZWVrIChUY2xfQ2hhbm5lbCBjaGFuLCBpbnQgb2Zmc2V0LCBpbnQgbW9kZSk7CgoK
ZXh0ZXJuICJDIiBpbnQgVGNsX1NlcnZpY2VBbGwgKHZvaWQpOwoKZXh0ZXJuICJDIiBpbnQgVGNs
X1NlcnZpY2VFdmVudCAoaW50IGZsYWdzKTsKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0QXNzb2NE
YXRhIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgVGNsX0ludGVycERlbGV0ZVBy
b2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCgpleHRlcm4gIkMiIHZvaWQgVGNs
X1NldENoYW5uZWxCdWZmZXJTaXplICggVGNsX0NoYW5uZWwgY2hhbiwgaW50IHN6KTsKCgpleHRl
cm4gIkMiIGludCBUY2xfU2V0Q2hhbm5lbE9wdGlvbiAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRj
bF9DaGFubmVsIGNoYW4sIGNoYXIgKiBvcHRpb25OYW1lLCBjaGFyICogbmV3VmFsdWUpOwoKCgpl
eHRlcm4gIkMiIGludCBUY2xfU2V0Q29tbWFuZEluZm8gKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNo
YXIgKiBjbWROYW1lLCBUY2xfQ21kSW5mbyAqIGluZm9QdHIpOwoKCmV4dGVybiAiQyIgdm9pZCBU
Y2xfU2V0RXJybm8gKGludCBlcnIpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXRFcnJvckNvZGUg
KFRjbF9JbnRlcnAgKiBpbnRlcnAsIC4uLik7CgpleHRlcm4gIkMiIHZvaWQgVGNsX1NldE1heEJs
b2NrVGltZSAoVGNsX1RpbWUgKiB0aW1lUHRyKTsKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0UGFu
aWNQcm9jICggVGNsX1BhbmljUHJvYyAqIHBhbmljUHJvYyk7CgoKZXh0ZXJuICJDIiBpbnQgVGNs
X1NldFJlY3Vyc2lvbkxpbWl0ICggVGNsX0ludGVycCAqIGludGVycCwgaW50IGRlcHRoKTsKCgpl
eHRlcm4gIkMiIHZvaWQgVGNsX1NldFJlc3VsdCAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq
IHN0ciwgVGNsX0ZyZWVQcm9jICogZnJlZVByb2MpOwoKCmV4dGVybiAiQyIgaW50IFRjbF9TZXRT
ZXJ2aWNlTW9kZSAoaW50IG1vZGUpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXRPYmpFcnJvckNv
ZGUgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBlcnJvck9ialB0cik7CgoKZXh0ZXJu
ICJDIiB2b2lkIFRjbF9TZXRPYmpSZXN1bHQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmog
KiByZXN1bHRPYmpQdHIpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0U3RkQ2hhbm5lbCAoVGNs
X0NoYW5uZWwgY2hhbm5lbCwgaW50IHR5cGUpOwoKCmV4dGVybiAiQyIgY2hhciAqIFRjbF9TZXRW
YXIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJOYW1lLCBjaGFyICogbmV3VmFsdWUs
IGludCBmbGFncyk7CgoKZXh0ZXJuICJDIiBjaGFyICogVGNsX1NldFZhcjIgKFRjbF9JbnRlcnAg
KiBpbnRlcnAsIGNoYXIgKiBwYXJ0MSwgY2hhciAqIHBhcnQyLCBjaGFyICogbmV3VmFsdWUsIGlu
dCBmbGFncyk7CgoKCmV4dGVybiAiQyIgY2hhciAqIFRjbF9TaWduYWxJZCAoaW50IHNpZyk7Cgpl
eHRlcm4gIkMiIGNoYXIgKiBUY2xfU2lnbmFsTXNnIChpbnQgc2lnKTsKCmV4dGVybiAiQyIgdm9p
ZCBUY2xfU291cmNlUkNGaWxlIChUY2xfSW50ZXJwICogaW50ZXJwKTsKCmV4dGVybiAiQyIgaW50
IFRjbF9TcGxpdExpc3QgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNvbnN0IGNoYXIgKiBsaXN0U3Ry
LCBpbnQgKiBhcmdjUHRyLCBjaGFyICoqKiBhcmd2UHRyKTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRj
bF9TcGxpdFBhdGggKGNvbnN0IGNoYXIgKiBwYXRoLCBpbnQgKiBhcmdjUHRyLCBjaGFyICoqKiBh
cmd2UHRyKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX1N0YXRpY1BhY2thZ2UgKFRjbF9JbnRlcnAg
KiBpbnRlcnAsIGNoYXIgKiBwa2dOYW1lLCBUY2xfUGFja2FnZUluaXRQcm9jICogaW5pdFByb2Ms
IFRjbF9QYWNrYWdlSW5pdFByb2MgKiBzYWZlSW5pdFByb2MpOwoKCgoKZXh0ZXJuICJDIiBpbnQg
VGNsX1N0cmluZ01hdGNoIChjb25zdCBjaGFyICogc3RyLCBjb25zdCBjaGFyICogcGF0dGVybik7
CgoKZXh0ZXJuICJDIiBpbnQgVGNsX1RlbGwgKFRjbF9DaGFubmVsIGNoYW4pOwoKZXh0ZXJuICJD
IiBpbnQgVGNsX1RyYWNlVmFyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwg
aW50IGZsYWdzLCBUY2xfVmFyVHJhY2VQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRh
KTsKCgoKCmV4dGVybiAiQyIgaW50IFRjbF9UcmFjZVZhcjIgKFRjbF9JbnRlcnAgKiBpbnRlcnAs
IGNoYXIgKiBwYXJ0MSwgY2hhciAqIHBhcnQyLCBpbnQgZmxhZ3MsIFRjbF9WYXJUcmFjZVByb2Mg
KiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCgoKZXh0ZXJuICJDIiBjaGFyICogVGNs
X1RyYW5zbGF0ZUZpbGVOYW1lICggVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUsIFRj
bF9EU3RyaW5nICogYnVmZmVyUHRyKTsKCgoKZXh0ZXJuICJDIiBpbnQgVGNsX1VuZ2V0cyAoVGNs
X0NoYW5uZWwgY2hhbiwgY2hhciAqIHN0ciwgaW50IGxlbiwgaW50IGF0SGVhZCk7CgoKZXh0ZXJu
ICJDIiB2b2lkIFRjbF9VbmxpbmtWYXIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJO
YW1lKTsKCgpleHRlcm4gIkMiIGludCBUY2xfVW5yZWdpc3RlckNoYW5uZWwgKCBUY2xfSW50ZXJw
ICogaW50ZXJwLCBUY2xfQ2hhbm5lbCBjaGFuKTsKCgpleHRlcm4gIkMiIGludCBUY2xfVW5zZXRW
YXIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJOYW1lLCBpbnQgZmxhZ3MpOwoKCmV4
dGVybiAiQyIgaW50IFRjbF9VbnNldFZhcjIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBw
YXJ0MSwgY2hhciAqIHBhcnQyLCBpbnQgZmxhZ3MpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfVW50
cmFjZVZhciAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHZhck5hbWUsIGludCBmbGFncywg
VGNsX1ZhclRyYWNlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CgoKCgpleHRl
cm4gIkMiIHZvaWQgVGNsX1VudHJhY2VWYXIyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICog
cGFydDEsIGNoYXIgKiBwYXJ0MiwgaW50IGZsYWdzLCBUY2xfVmFyVHJhY2VQcm9jICogcHJvYywg
Q2xpZW50RGF0YSBjbGllbnREYXRhKTsKCgoKCmV4dGVybiAiQyIgdm9pZCBUY2xfVXBkYXRlTGlu
a2VkVmFyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSk7CgoKZXh0ZXJuICJD
IiBpbnQgVGNsX1VwVmFyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogZnJhbWVOYW1lLCBj
aGFyICogdmFyTmFtZSwgY2hhciAqIGxvY2FsTmFtZSwgaW50IGZsYWdzKTsKCgoKZXh0ZXJuICJD
IiBpbnQgVGNsX1VwVmFyMiAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGZyYW1lTmFtZSwg
Y2hhciAqIHBhcnQxLCBjaGFyICogcGFydDIsIGNoYXIgKiBsb2NhbE5hbWUsIGludCBmbGFncyk7
CgoKCmV4dGVybiAiQyIgaW50IFRjbF9WYXJFdmFsIChUY2xfSW50ZXJwICogaW50ZXJwLCAuLi4p
OwoKZXh0ZXJuICJDIiBDbGllbnREYXRhIFRjbF9WYXJUcmFjZUluZm8gKFRjbF9JbnRlcnAgKiBp
bnRlcnAsIGNoYXIgKiB2YXJOYW1lLCBpbnQgZmxhZ3MsIFRjbF9WYXJUcmFjZVByb2MgKiBwcm9j
UHRyLCBDbGllbnREYXRhIHByZXZDbGllbnREYXRhKTsKCgoKCmV4dGVybiAiQyIgQ2xpZW50RGF0
YSBUY2xfVmFyVHJhY2VJbmZvMiAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHBhcnQxLCBj
aGFyICogcGFydDIsIGludCBmbGFncywgVGNsX1ZhclRyYWNlUHJvYyAqIHByb2NQdHIsIENsaWVu
dERhdGEgcHJldkNsaWVudERhdGEpOwoKCgoKZXh0ZXJuICJDIiBpbnQgVGNsX1dyaXRlIChUY2xf
Q2hhbm5lbCBjaGFuLCBjaGFyICogcywgaW50IHNsZW4pOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xf
V3JvbmdOdW1BcmdzIChUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29u
c3Qgb2JqdltdLCBjaGFyICogbWVzc2FnZSk7CgoKCmV4dGVybiAiQyIgaW50IFRjbF9EdW1wQWN0
aXZlTWVtb3J5IChjaGFyICogZmlsZU5hbWUpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9WYWxpZGF0
ZUFsbE1lbW9yeSAoY2hhciAqIGZpbGUsIGludCBsaW5lKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNs
X0FwcGVuZFJlc3VsdFZBIChUY2xfSW50ZXJwICogaW50ZXJwLCB2YV9saXN0IGFyZ0xpc3QpOwoK
CmV4dGVybiAiQyIgdm9pZCBUY2xfQXBwZW5kU3RyaW5nc1RvT2JqVkEgKCBUY2xfT2JqICogb2Jq
UHRyLCB2YV9saXN0IGFyZ0xpc3QpOwoKCmV4dGVybiAiQyIgY2hhciAqIFRjbF9IYXNoU3RhdHMg
KFRjbF9IYXNoVGFibGUgKiB0YWJsZVB0cik7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfUGFyc2VW
YXIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHIsIGNoYXIgKiogdGVybVB0cik7CgoK
ZXh0ZXJuICJDIiBjaGFyICogVGNsX1BrZ1ByZXNlbnQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNo
YXIgKiBuYW1lLCBjaGFyICogdmVyc2lvbiwgaW50IGV4YWN0KTsKCgpleHRlcm4gIkMiIGNoYXIg
KiBUY2xfUGtnUHJlc2VudEV4IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgY2hh
ciAqIHZlcnNpb24sIGludCBleGFjdCwgQ2xpZW50RGF0YSAqIGNsaWVudERhdGFQdHIpOwoKCgpl
eHRlcm4gIkMiIGludCBUY2xfUGtnUHJvdmlkZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq
IG5hbWUsIGNoYXIgKiB2ZXJzaW9uKTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfUGtnUmVxdWly
ZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUsIGNoYXIgKiB2ZXJzaW9uLCBpbnQg
ZXhhY3QpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0RXJyb3JDb2RlVkEgKFRjbF9JbnRlcnAg
KiBpbnRlcnAsIHZhX2xpc3QgYXJnTGlzdCk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX1ZhckV2YWxW
QSAoVGNsX0ludGVycCAqIGludGVycCwgdmFfbGlzdCBhcmdMaXN0KTsKCgpleHRlcm4gIkMiIFRj
bF9QaWQgVGNsX1dhaXRQaWQgKFRjbF9QaWQgcGlkLCBpbnQgKiBzdGF0UHRyLCBpbnQgb3B0aW9u
cyk7CgoKCmV4dGVybiAiQyIgdm9pZCBUY2xfUGFuaWNWQSAoY2hhciAqIGZvcm1hdCwgdmFfbGlz
dCBhcmdMaXN0KTsKIyA5MDIgIi91c3IvaW5jbHVkZS90Y2xEZWNscy5oIiAzCmV4dGVybiAiQyIg
dm9pZCBUY2xfR2V0VmVyc2lvbiAoaW50ICogbWFqb3IsIGludCAqIG1pbm9yLCBpbnQgKiBwYXRj
aExldmVsLCBpbnQgKiB0eXBlKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0luaXRNZW1vcnkgKFRj
bF9JbnRlcnAgKiBpbnRlcnApOwoKZXh0ZXJuICJDIiBUY2xfQ2hhbm5lbCBUY2xfU3RhY2tDaGFu
bmVsIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfQ2hhbm5lbFR5cGUgKiB0eXBlUHRyLCBDbGll
bnREYXRhIGluc3RhbmNlRGF0YSwgaW50IG1hc2ssIFRjbF9DaGFubmVsIHByZXZDaGFuKTsKCgoK
CmV4dGVybiAiQyIgdm9pZCBUY2xfVW5zdGFja0NoYW5uZWwgKFRjbF9JbnRlcnAgKiBpbnRlcnAs
IFRjbF9DaGFubmVsIGNoYW4pOwoKCmV4dGVybiAiQyIgVGNsX0NoYW5uZWwgVGNsX0dldFN0YWNr
ZWRDaGFubmVsIChUY2xfQ2hhbm5lbCBjaGFuKTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9BcHBl
bmRPYmpUb09iaiAoVGNsX09iaiAqIG9ialB0ciwgVGNsX09iaiAqIGFwcGVuZE9ialB0cik7CgoK
ZXh0ZXJuICJDIiBUY2xfRW5jb2RpbmcgVGNsX0NyZWF0ZUVuY29kaW5nICggVGNsX0VuY29kaW5n
VHlwZSAqIHR5cGVQdHIpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfQ3JlYXRlVGhyZWFkRXhpdEhh
bmRsZXIgKCBUY2xfRXhpdFByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCmV4
dGVybiAiQyIgdm9pZCBUY2xfRGVsZXRlVGhyZWFkRXhpdEhhbmRsZXIgKCBUY2xfRXhpdFByb2Mg
KiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfRGlz
Y2FyZFJlc3VsdCAoIFRjbF9TYXZlZFJlc3VsdCAqIHN0YXRlUHRyKTsKCgpleHRlcm4gIkMiIGlu
dCBUY2xfRXZhbEV4IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc2NyaXB0LCBpbnQgbnVt
Qnl0ZXMsIGludCBmbGFncyk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0V2YWxPYmp2IChUY2xfSW50
ZXJwICogaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3Qgb2JqdltdLCBpbnQgZmxhZ3Mp
OwoKCmV4dGVybiAiQyIgaW50IFRjbF9FdmFsT2JqRXggKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRj
bF9PYmogKiBvYmpQdHIsIGludCBmbGFncyk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9FeGl0VGhy
ZWFkIChpbnQgc3RhdHVzKTsKCmV4dGVybiAiQyIgaW50IFRjbF9FeHRlcm5hbFRvVXRmIChUY2xf
SW50ZXJwICogaW50ZXJwLCBUY2xfRW5jb2RpbmcgZW5jb2RpbmcsIGNvbnN0IGNoYXIgKiBzcmMs
IGludCBzcmNMZW4sIGludCBmbGFncywgVGNsX0VuY29kaW5nU3RhdGUgKiBzdGF0ZVB0ciwgY2hh
ciAqIGRzdCwgaW50IGRzdExlbiwgaW50ICogc3JjUmVhZFB0ciwgaW50ICogZHN0V3JvdGVQdHIs
IGludCAqIGRzdENoYXJzUHRyKTsKCgoKCgoKZXh0ZXJuICJDIiBjaGFyICogVGNsX0V4dGVybmFs
VG9VdGZEU3RyaW5nICggVGNsX0VuY29kaW5nIGVuY29kaW5nLCBjb25zdCBjaGFyICogc3JjLCBp
bnQgc3JjTGVuLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9G
aW5hbGl6ZVRocmVhZCAodm9pZCk7CgpleHRlcm4gIkMiIHZvaWQgVGNsX0ZpbmFsaXplTm90aWZp
ZXIgKCBDbGllbnREYXRhIGNsaWVudERhdGEpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfRnJlZUVu
Y29kaW5nIChUY2xfRW5jb2RpbmcgZW5jb2RpbmcpOwoKZXh0ZXJuICJDIiBUY2xfVGhyZWFkSWQg
VGNsX0dldEN1cnJlbnRUaHJlYWQgKHZvaWQpOwoKZXh0ZXJuICJDIiBUY2xfRW5jb2RpbmcgVGNs
X0dldEVuY29kaW5nIChUY2xfSW50ZXJwICogaW50ZXJwLCBjb25zdCBjaGFyICogbmFtZSk7CgoK
ZXh0ZXJuICJDIiBjaGFyICogVGNsX0dldEVuY29kaW5nTmFtZSAoIFRjbF9FbmNvZGluZyBlbmNv
ZGluZyk7CgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9HZXRFbmNvZGluZ05hbWVzICggVGNsX0ludGVy
cCAqIGludGVycCk7CgoKZXh0ZXJuICJDIiBpbnQgVGNsX0dldEluZGV4RnJvbU9ialN0cnVjdCAo
IFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGNoYXIgKiogdGFibGVQdHIs
IGludCBvZmZzZXQsIGNoYXIgKiBtc2csIGludCBmbGFncywgaW50ICogaW5kZXhQdHIpOwoKCgoK
ZXh0ZXJuICJDIiB2b2lkICogVGNsX0dldFRocmVhZERhdGEgKCBUY2xfVGhyZWFkRGF0YUtleSAq
IGtleVB0ciwgaW50IHNpemUpOwoKCmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9HZXRWYXIyRXgg
KFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBwYXJ0MSwgY2hhciAqIHBhcnQyLCBpbnQgZmxh
Z3MpOwoKCmV4dGVybiAiQyIgQ2xpZW50RGF0YSBUY2xfSW5pdE5vdGlmaWVyICh2b2lkKTsKCmV4
dGVybiAiQyIgdm9pZCBUY2xfTXV0ZXhMb2NrIChUY2xfTXV0ZXggKiBtdXRleFB0cik7CgpleHRl
cm4gIkMiIHZvaWQgVGNsX011dGV4VW5sb2NrIChUY2xfTXV0ZXggKiBtdXRleFB0cik7CgpleHRl
cm4gIkMiIHZvaWQgVGNsX0NvbmRpdGlvbk5vdGlmeSAoIFRjbF9Db25kaXRpb24gKiBjb25kUHRy
KTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0NvbmRpdGlvbldhaXQgKCBUY2xfQ29uZGl0aW9uICog
Y29uZFB0ciwgVGNsX011dGV4ICogbXV0ZXhQdHIsIFRjbF9UaW1lICogdGltZVB0cik7CgoKCmV4
dGVybiAiQyIgaW50IFRjbF9OdW1VdGZDaGFycyAoY29uc3QgY2hhciAqIHNyYywgaW50IGxlbik7
CgoKZXh0ZXJuICJDIiBpbnQgVGNsX1JlYWRDaGFycyAoVGNsX0NoYW5uZWwgY2hhbm5lbCwgVGNs
X09iaiAqIG9ialB0ciwgaW50IGNoYXJzVG9SZWFkLCBpbnQgYXBwZW5kRmxhZyk7CgoKCmV4dGVy
biAiQyIgdm9pZCBUY2xfUmVzdG9yZVJlc3VsdCAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX1Nh
dmVkUmVzdWx0ICogc3RhdGVQdHIpOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2F2ZVJlc3VsdCAo
VGNsX0ludGVycCAqIGludGVycCwgVGNsX1NhdmVkUmVzdWx0ICogc3RhdGVQdHIpOwoKCmV4dGVy
biAiQyIgaW50IFRjbF9TZXRTeXN0ZW1FbmNvZGluZyAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNv
bnN0IGNoYXIgKiBuYW1lKTsKCgpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfU2V0VmFyMkV4IChU
Y2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgVGNsX09iaiAq
IG5ld1ZhbHVlUHRyLCBpbnQgZmxhZ3MpOwoKCgpleHRlcm4gIkMiIHZvaWQgVGNsX1RocmVhZEFs
ZXJ0IChUY2xfVGhyZWFkSWQgdGhyZWFkSWQpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9UaHJlYWRR
dWV1ZUV2ZW50ICggVGNsX1RocmVhZElkIHRocmVhZElkLCBUY2xfRXZlbnQqIGV2UHRyLCBUY2xf
UXVldWVQb3NpdGlvbiBwb3NpdGlvbik7CgoKCmV4dGVybiAiQyIgVGNsX1VuaUNoYXIgVGNsX1Vu
aUNoYXJBdEluZGV4IChjb25zdCBjaGFyICogc3JjLCBpbnQgaW5kZXgpOwoKCmV4dGVybiAiQyIg
VGNsX1VuaUNoYXIgVGNsX1VuaUNoYXJUb0xvd2VyIChpbnQgY2gpOwoKZXh0ZXJuICJDIiBUY2xf
VW5pQ2hhciBUY2xfVW5pQ2hhclRvVGl0bGUgKGludCBjaCk7CgpleHRlcm4gIkMiIFRjbF9VbmlD
aGFyIFRjbF9VbmlDaGFyVG9VcHBlciAoaW50IGNoKTsKCmV4dGVybiAiQyIgaW50IFRjbF9VbmlD
aGFyVG9VdGYgKGludCBjaCwgY2hhciAqIGJ1Zik7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfVXRm
QXRJbmRleCAoY29uc3QgY2hhciAqIHNyYywgaW50IGluZGV4KTsKCgpleHRlcm4gIkMiIGludCBU
Y2xfVXRmQ2hhckNvbXBsZXRlIChjb25zdCBjaGFyICogc3JjLCBpbnQgbGVuKTsKCgpleHRlcm4g
IkMiIGludCBUY2xfVXRmQmFja3NsYXNoIChjb25zdCBjaGFyICogc3JjLCBpbnQgKiByZWFkUHRy
LCBjaGFyICogZHN0KTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfVXRmRmluZEZpcnN0IChjb25z
dCBjaGFyICogc3JjLCBpbnQgY2gpOwoKCmV4dGVybiAiQyIgY2hhciAqIFRjbF9VdGZGaW5kTGFz
dCAoY29uc3QgY2hhciAqIHNyYywgaW50IGNoKTsKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfVXRm
TmV4dCAoY29uc3QgY2hhciAqIHNyYyk7CgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfVXRmUHJldiAo
Y29uc3QgY2hhciAqIHNyYywgY29uc3QgY2hhciAqIHN0YXJ0KTsKCgpleHRlcm4gIkMiIGludCBU
Y2xfVXRmVG9FeHRlcm5hbCAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX0VuY29kaW5nIGVuY29k
aW5nLCBjb25zdCBjaGFyICogc3JjLCBpbnQgc3JjTGVuLCBpbnQgZmxhZ3MsIFRjbF9FbmNvZGlu
Z1N0YXRlICogc3RhdGVQdHIsIGNoYXIgKiBkc3QsIGludCBkc3RMZW4sIGludCAqIHNyY1JlYWRQ
dHIsIGludCAqIGRzdFdyb3RlUHRyLCBpbnQgKiBkc3RDaGFyc1B0cik7CgoKCgoKCmV4dGVybiAi
QyIgY2hhciAqIFRjbF9VdGZUb0V4dGVybmFsRFN0cmluZyAoIFRjbF9FbmNvZGluZyBlbmNvZGlu
ZywgY29uc3QgY2hhciAqIHNyYywgaW50IHNyY0xlbiwgVGNsX0RTdHJpbmcgKiBkc1B0cik7CgoK
CmV4dGVybiAiQyIgaW50IFRjbF9VdGZUb0xvd2VyIChjaGFyICogc3JjKTsKCmV4dGVybiAiQyIg
aW50IFRjbF9VdGZUb1RpdGxlIChjaGFyICogc3JjKTsKCmV4dGVybiAiQyIgaW50IFRjbF9VdGZU
b1VuaUNoYXIgKGNvbnN0IGNoYXIgKiBzcmMsIFRjbF9VbmlDaGFyICogY2hQdHIpOwoKCmV4dGVy
biAiQyIgaW50IFRjbF9VdGZUb1VwcGVyIChjaGFyICogc3JjKTsKCmV4dGVybiAiQyIgaW50IFRj
bF9Xcml0ZUNoYXJzIChUY2xfQ2hhbm5lbCBjaGFuLCBjb25zdCBjaGFyICogc3JjLCBpbnQgc3Jj
TGVuKTsKCgpleHRlcm4gIkMiIGludCBUY2xfV3JpdGVPYmogKFRjbF9DaGFubmVsIGNoYW4sIFRj
bF9PYmogKiBvYmpQdHIpOwoKCmV4dGVybiAiQyIgY2hhciAqIFRjbF9HZXRTdHJpbmcgKFRjbF9P
YmogKiBvYmpQdHIpOwoKZXh0ZXJuICJDIiBjaGFyICogVGNsX0dldERlZmF1bHRFbmNvZGluZ0Rp
ciAodm9pZCk7CgpleHRlcm4gIkMiIHZvaWQgVGNsX1NldERlZmF1bHRFbmNvZGluZ0RpciAoY2hh
ciAqIHBhdGgpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9BbGVydE5vdGlmaWVyIChDbGllbnREYXRh
IGNsaWVudERhdGEpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXJ2aWNlTW9kZUhvb2sgKGludCBt
b2RlKTsKCmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFySXNBbG51bSAoaW50IGNoKTsKCmV4dGVy
biAiQyIgaW50IFRjbF9VbmlDaGFySXNBbHBoYSAoaW50IGNoKTsKCmV4dGVybiAiQyIgaW50IFRj
bF9VbmlDaGFySXNEaWdpdCAoaW50IGNoKTsKCmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFySXNM
b3dlciAoaW50IGNoKTsKCmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFySXNTcGFjZSAoaW50IGNo
KTsKCmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFySXNVcHBlciAoaW50IGNoKTsKCmV4dGVybiAi
QyIgaW50IFRjbF9VbmlDaGFySXNXb3JkQ2hhciAoaW50IGNoKTsKCmV4dGVybiAiQyIgaW50IFRj
bF9VbmlDaGFyTGVuIChUY2xfVW5pQ2hhciAqIHN0cik7CgpleHRlcm4gIkMiIGludCBUY2xfVW5p
Q2hhck5jbXAgKGNvbnN0IFRjbF9VbmlDaGFyICogY3MsIGNvbnN0IFRjbF9VbmlDaGFyICogY3Qs
IHVuc2lnbmVkIGxvbmcgbik7CgoKZXh0ZXJuICJDIiBjaGFyICogVGNsX1VuaUNoYXJUb1V0ZkRT
dHJpbmcgKCBjb25zdCBUY2xfVW5pQ2hhciAqIHN0cmluZywgaW50IG51bUNoYXJzLCBUY2xfRFN0
cmluZyAqIGRzUHRyKTsKCgoKZXh0ZXJuICJDIiBUY2xfVW5pQ2hhciAqIFRjbF9VdGZUb1VuaUNo
YXJEU3RyaW5nICggY29uc3QgY2hhciAqIHN0cmluZywgaW50IGxlbmd0aCwgVGNsX0RTdHJpbmcg
KiBkc1B0cik7CgoKCmV4dGVybiAiQyIgVGNsX1JlZ0V4cCBUY2xfR2V0UmVnRXhwRnJvbU9iaiAo
IFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBwYXRPYmosIGludCBmbGFncyk7CgoKCmV4
dGVybiAiQyIgVGNsX09iaiAqIFRjbF9FdmFsVG9rZW5zIChUY2xfSW50ZXJwICogaW50ZXJwLCBU
Y2xfVG9rZW4gKiB0b2tlblB0ciwgaW50IGNvdW50KTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX0Zy
ZWVQYXJzZSAoVGNsX1BhcnNlICogcGFyc2VQdHIpOwoKZXh0ZXJuICJDIiB2b2lkIFRjbF9Mb2dD
b21tYW5kSW5mbyAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHNjcmlwdCwgY2hhciAqIGNv
bW1hbmQsIGludCBsZW5ndGgpOwoKCmV4dGVybiAiQyIgaW50IFRjbF9QYXJzZUJyYWNlcyAoVGNs
X0ludGVycCAqIGludGVycCwgY2hhciAqIHN0cmluZywgaW50IG51bUJ5dGVzLCBUY2xfUGFyc2Ug
KiBwYXJzZVB0ciwgaW50IGFwcGVuZCwgY2hhciAqKiB0ZXJtUHRyKTsKCgoKCmV4dGVybiAiQyIg
aW50IFRjbF9QYXJzZUNvbW1hbmQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJpbmcs
IGludCBudW1CeXRlcywgaW50IG5lc3RlZCwgVGNsX1BhcnNlICogcGFyc2VQdHIpOwoKCgpleHRl
cm4gIkMiIGludCBUY2xfUGFyc2VFeHByIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3Ry
aW5nLCBpbnQgbnVtQnl0ZXMsIFRjbF9QYXJzZSAqIHBhcnNlUHRyKTsKCgoKZXh0ZXJuICJDIiBp
bnQgVGNsX1BhcnNlUXVvdGVkU3RyaW5nICggVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0
cmluZywgaW50IG51bUJ5dGVzLCBUY2xfUGFyc2UgKiBwYXJzZVB0ciwgaW50IGFwcGVuZCwgY2hh
ciAqKiB0ZXJtUHRyKTsKCgoKCmV4dGVybiAiQyIgaW50IFRjbF9QYXJzZVZhck5hbWUgKFRjbF9J
bnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJpbmcsIGludCBudW1CeXRlcywgVGNsX1BhcnNlICog
cGFyc2VQdHIsIGludCBhcHBlbmQpOwoKCgpleHRlcm4gIkMiIGNoYXIgKiBUY2xfR2V0Q3dkIChU
Y2xfSW50ZXJwICogaW50ZXJwLCBUY2xfRFN0cmluZyAqIGN3ZFB0cik7CgoKZXh0ZXJuICJDIiBp
bnQgVGNsX0NoZGlyIChjb25zdCBjaGFyICogZGlyTmFtZSk7CgpleHRlcm4gIkMiIGludCBUY2xf
QWNjZXNzIChjb25zdCBjaGFyICogcGF0aCwgaW50IG1vZGUpOwoKZXh0ZXJuICJDIiBpbnQgVGNs
X1N0YXQgKGNvbnN0IGNoYXIgKiBwYXRoLCBzdHJ1Y3Qgc3RhdCAqIGJ1ZlB0cik7CgoKZXh0ZXJu
ICJDIiBpbnQgVGNsX1V0Zk5jbXAgKGNvbnN0IGNoYXIgKiBzMSwgY29uc3QgY2hhciAqIHMyLCB1
bnNpZ25lZCBsb25nIG4pOwoKCmV4dGVybiAiQyIgaW50IFRjbF9VdGZOY2FzZWNtcCAoY29uc3Qg
Y2hhciAqIHMxLCBjb25zdCBjaGFyICogczIsIHVuc2lnbmVkIGxvbmcgbik7CgoKZXh0ZXJuICJD
IiBpbnQgVGNsX1N0cmluZ0Nhc2VNYXRjaCAoY29uc3QgY2hhciAqIHN0ciwgY29uc3QgY2hhciAq
IHBhdHRlcm4sIGludCBub2Nhc2UpOwoKCmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFySXNDb250
cm9sIChpbnQgY2gpOwoKZXh0ZXJuICJDIiBpbnQgVGNsX1VuaUNoYXJJc0dyYXBoIChpbnQgY2gp
OwoKZXh0ZXJuICJDIiBpbnQgVGNsX1VuaUNoYXJJc1ByaW50IChpbnQgY2gpOwoKZXh0ZXJuICJD
IiBpbnQgVGNsX1VuaUNoYXJJc1B1bmN0IChpbnQgY2gpOwoKZXh0ZXJuICJDIiBpbnQgVGNsX1Jl
Z0V4cEV4ZWNPYmogKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9SZWdFeHAgcmVnZXhwLCBUY2xf
T2JqICogb2JqUHRyLCBpbnQgb2Zmc2V0LCBpbnQgbm1hdGNoZXMsIGludCBmbGFncyk7CgoKCmV4
dGVybiAiQyIgdm9pZCBUY2xfUmVnRXhwR2V0SW5mbyAoVGNsX1JlZ0V4cCByZWdleHAsIFRjbF9S
ZWdFeHBJbmZvICogaW5mb1B0cik7CgoKZXh0ZXJuICJDIiBUY2xfT2JqICogVGNsX05ld1VuaWNv
ZGVPYmogKFRjbF9VbmlDaGFyICogdW5pY29kZSwgaW50IG51bUNoYXJzKTsKCgpleHRlcm4gIkMi
IHZvaWQgVGNsX1NldFVuaWNvZGVPYmogKFRjbF9PYmogKiBvYmpQdHIsIFRjbF9VbmlDaGFyICog
dW5pY29kZSwgaW50IG51bUNoYXJzKTsKCgpleHRlcm4gIkMiIGludCBUY2xfR2V0Q2hhckxlbmd0
aCAoVGNsX09iaiAqIG9ialB0cik7CgpleHRlcm4gIkMiIFRjbF9VbmlDaGFyIFRjbF9HZXRVbmlD
aGFyIChUY2xfT2JqICogb2JqUHRyLCBpbnQgaW5kZXgpOwoKCmV4dGVybiAiQyIgVGNsX1VuaUNo
YXIgKiBUY2xfR2V0VW5pY29kZSAoVGNsX09iaiAqIG9ialB0cik7CgpleHRlcm4gIkMiIFRjbF9P
YmogKiBUY2xfR2V0UmFuZ2UgKFRjbF9PYmogKiBvYmpQdHIsIGludCBmaXJzdCwgaW50IGxhc3Qp
OwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfQXBwZW5kVW5pY29kZVRvT2JqIChUY2xfT2JqICogb2Jq
UHRyLCBUY2xfVW5pQ2hhciAqIHVuaWNvZGUsIGludCBsZW5ndGgpOwoKCmV4dGVybiAiQyIgaW50
IFRjbF9SZWdFeHBNYXRjaE9iaiAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIHN0cmlu
Z09iaiwgVGNsX09iaiAqIHBhdHRlcm5PYmopOwoKCmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0Tm90
aWZpZXIgKCBUY2xfTm90aWZpZXJQcm9jcyAqIG5vdGlmaWVyUHJvY1B0cik7CgoKZXh0ZXJuICJD
IiBUY2xfTXV0ZXggKiBUY2xfR2V0QWxsb2NNdXRleCAodm9pZCk7CgpleHRlcm4gIkMiIGludCBU
Y2xfR2V0Q2hhbm5lbE5hbWVzIChUY2xfSW50ZXJwICogaW50ZXJwKTsKCmV4dGVybiAiQyIgaW50
IFRjbF9HZXRDaGFubmVsTmFtZXNFeCAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBwYXR0
ZXJuKTsKCgpleHRlcm4gIkMiIGludCBUY2xfUHJvY09iakNtZCAoQ2xpZW50RGF0YSBjbGllbnRE
YXRhLCBUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3Qgb2Jqdltd
KTsKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9Db25kaXRpb25GaW5hbGl6ZSAoIFRjbF9Db25kaXRp
b24gKiBjb25kUHRyKTsKCgpleHRlcm4gIkMiIHZvaWQgVGNsX011dGV4RmluYWxpemUgKFRjbF9N
dXRleCAqIG11dGV4KTsKCmV4dGVybiAiQyIgaW50IFRjbF9DcmVhdGVUaHJlYWQgKFRjbF9UaHJl
YWRJZCAqIGlkUHRyLCBUY2xfVGhyZWFkQ3JlYXRlUHJvYyBwcm9jLCBDbGllbnREYXRhIGNsaWVu
dERhdGEsIGludCBzdGFja1NpemUsIGludCBmbGFncyk7CgoKCgp0eXBlZGVmIHN0cnVjdCBUY2xT
dHViSG9va3MgewogICAgc3RydWN0IFRjbFBsYXRTdHVicyAqdGNsUGxhdFN0dWJzOwogICAgc3Ry
dWN0IFRjbEludFN0dWJzICp0Y2xJbnRTdHViczsKICAgIHN0cnVjdCBUY2xJbnRQbGF0U3R1YnMg
KnRjbEludFBsYXRTdHViczsKfSBUY2xTdHViSG9va3M7Cgp0eXBlZGVmIHN0cnVjdCBUY2xTdHVi
cyB7CiAgICBpbnQgbWFnaWM7CiAgICBzdHJ1Y3QgVGNsU3R1Ykhvb2tzICpob29rczsKCiAgICBp
bnQgKCp0Y2xfUGtnUHJvdmlkZUV4KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUs
IGNoYXIgKiB2ZXJzaW9uLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgY2hhciAqICgqdGNs
X1BrZ1JlcXVpcmVFeCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBuYW1lLCBjaGFyICog
dmVyc2lvbiwgaW50IGV4YWN0LCBDbGllbnREYXRhICogY2xpZW50RGF0YVB0cik7CiAgICB2b2lk
ICgqdGNsX1BhbmljKSAoY2hhciAqIGZvcm1hdCwgLi4uKTsKICAgIGNoYXIgKiAoKnRjbF9BbGxv
YykgKHVuc2lnbmVkIGludCBzaXplKTsKICAgIHZvaWQgKCp0Y2xfRnJlZSkgKGNoYXIgKiBwdHIp
OwogICAgY2hhciAqICgqdGNsX1JlYWxsb2MpIChjaGFyICogcHRyLCB1bnNpZ25lZCBpbnQgc2l6
ZSk7CiAgICBjaGFyICogKCp0Y2xfRGJDa2FsbG9jKSAodW5zaWduZWQgaW50IHNpemUsIGNoYXIg
KiBmaWxlLCBpbnQgbGluZSk7CiAgICBpbnQgKCp0Y2xfRGJDa2ZyZWUpIChjaGFyICogcHRyLCBj
aGFyICogZmlsZSwgaW50IGxpbmUpOwogICAgY2hhciAqICgqdGNsX0RiQ2tyZWFsbG9jKSAoY2hh
ciAqIHB0ciwgdW5zaWduZWQgaW50IHNpemUsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CgogICAg
dm9pZCAoKnRjbF9DcmVhdGVGaWxlSGFuZGxlcikgKGludCBmZCwgaW50IG1hc2ssIFRjbF9GaWxl
UHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiMgMTI2MSAiL3Vzci9pbmNsdWRl
L3RjbERlY2xzLmgiIDMKICAgIHZvaWQgKCp0Y2xfRGVsZXRlRmlsZUhhbmRsZXIpIChpbnQgZmQp
OwoKCgoKCgoKICAgIHZvaWQgKCp0Y2xfU2V0VGltZXIpIChUY2xfVGltZSAqIHRpbWVQdHIpOwog
ICAgdm9pZCAoKnRjbF9TbGVlcCkgKGludCBtcyk7CiAgICBpbnQgKCp0Y2xfV2FpdEZvckV2ZW50
KSAoVGNsX1RpbWUgKiB0aW1lUHRyKTsKICAgIGludCAoKnRjbF9BcHBlbmRBbGxPYmpUeXBlcykg
KFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIpOwogICAgdm9pZCAoKnRjbF9B
cHBlbmRTdHJpbmdzVG9PYmopIChUY2xfT2JqICogb2JqUHRyLCAuLi4pOwogICAgdm9pZCAoKnRj
bF9BcHBlbmRUb09iaikgKFRjbF9PYmogKiBvYmpQdHIsIGNoYXIgKiBieXRlcywgaW50IGxlbmd0
aCk7CiAgICBUY2xfT2JqICogKCp0Y2xfQ29uY2F0T2JqKSAoaW50IG9iamMsIFRjbF9PYmogKmNv
bnN0IG9ianZbXSk7CiAgICBpbnQgKCp0Y2xfQ29udmVydFRvVHlwZSkgKFRjbF9JbnRlcnAgKiBp
bnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIFRjbF9PYmpUeXBlICogdHlwZVB0cik7CiAgICB2b2lk
ICgqdGNsX0RiRGVjclJlZkNvdW50KSAoVGNsX09iaiAqIG9ialB0ciwgY2hhciAqIGZpbGUsIGlu
dCBsaW5lKTsKICAgIHZvaWQgKCp0Y2xfRGJJbmNyUmVmQ291bnQpIChUY2xfT2JqICogb2JqUHRy
LCBjaGFyICogZmlsZSwgaW50IGxpbmUpOwogICAgaW50ICgqdGNsX0RiSXNTaGFyZWQpIChUY2xf
T2JqICogb2JqUHRyLCBjaGFyICogZmlsZSwgaW50IGxpbmUpOwogICAgVGNsX09iaiAqICgqdGNs
X0RiTmV3Qm9vbGVhbk9iaikgKGludCBib29sVmFsdWUsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7
CiAgICBUY2xfT2JqICogKCp0Y2xfRGJOZXdCeXRlQXJyYXlPYmopICh1bnNpZ25lZCBjaGFyICog
Ynl0ZXMsIGludCBsZW5ndGgsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CiAgICBUY2xfT2JqICog
KCp0Y2xfRGJOZXdEb3VibGVPYmopIChkb3VibGUgZG91YmxlVmFsdWUsIGNoYXIgKiBmaWxlLCBp
bnQgbGluZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfRGJOZXdMaXN0T2JqKSAoaW50IG9iamMsIFRj
bF9PYmogKmNvbnN0IG9ianZbXSwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKICAgIFRjbF9PYmog
KiAoKnRjbF9EYk5ld0xvbmdPYmopIChsb25nIGxvbmdWYWx1ZSwgY2hhciAqIGZpbGUsIGludCBs
aW5lKTsKICAgIFRjbF9PYmogKiAoKnRjbF9EYk5ld09iaikgKGNoYXIgKiBmaWxlLCBpbnQgbGlu
ZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfRGJOZXdTdHJpbmdPYmopIChjb25zdCBjaGFyICogYnl0
ZXMsIGludCBsZW5ndGgsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CiAgICBUY2xfT2JqICogKCp0
Y2xfRHVwbGljYXRlT2JqKSAoVGNsX09iaiAqIG9ialB0cik7CiAgICB2b2lkICgqdGNsRnJlZU9i
aikgKFRjbF9PYmogKiBvYmpQdHIpOwogICAgaW50ICgqdGNsX0dldEJvb2xlYW4pIChUY2xfSW50
ZXJwICogaW50ZXJwLCBjaGFyICogc3RyLCBpbnQgKiBib29sUHRyKTsKICAgIGludCAoKnRjbF9H
ZXRCb29sZWFuRnJvbU9iaikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIs
IGludCAqIGJvb2xQdHIpOwogICAgdW5zaWduZWQgY2hhciAqICgqdGNsX0dldEJ5dGVBcnJheUZy
b21PYmopIChUY2xfT2JqICogb2JqUHRyLCBpbnQgKiBsZW5ndGhQdHIpOwogICAgaW50ICgqdGNs
X0dldERvdWJsZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHIsIGRvdWJsZSAqIGRv
dWJsZVB0cik7CiAgICBpbnQgKCp0Y2xfR2V0RG91YmxlRnJvbU9iaikgKFRjbF9JbnRlcnAgKiBp
bnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGRvdWJsZSAqIGRvdWJsZVB0cik7CiAgICBpbnQgKCp0
Y2xfR2V0SW5kZXhGcm9tT2JqKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0
ciwgY2hhciAqKiB0YWJsZVB0ciwgY2hhciAqIG1zZywgaW50IGZsYWdzLCBpbnQgKiBpbmRleFB0
cik7CiAgICBpbnQgKCp0Y2xfR2V0SW50KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0
ciwgaW50ICogaW50UHRyKTsKICAgIGludCAoKnRjbF9HZXRJbnRGcm9tT2JqKSAoVGNsX0ludGVy
cCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgaW50ICogaW50UHRyKTsKICAgIGludCAoKnRj
bF9HZXRMb25nRnJvbU9iaikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIs
IGxvbmcgKiBsb25nUHRyKTsKICAgIFRjbF9PYmpUeXBlICogKCp0Y2xfR2V0T2JqVHlwZSkgKGNo
YXIgKiB0eXBlTmFtZSk7CiAgICBjaGFyICogKCp0Y2xfR2V0U3RyaW5nRnJvbU9iaikgKFRjbF9P
YmogKiBvYmpQdHIsIGludCAqIGxlbmd0aFB0cik7CiAgICB2b2lkICgqdGNsX0ludmFsaWRhdGVT
dHJpbmdSZXApIChUY2xfT2JqICogb2JqUHRyKTsKICAgIGludCAoKnRjbF9MaXN0T2JqQXBwZW5k
TGlzdCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBsaXN0UHRyLCBUY2xfT2JqICog
ZWxlbUxpc3RQdHIpOwogICAgaW50ICgqdGNsX0xpc3RPYmpBcHBlbmRFbGVtZW50KSAoVGNsX0lu
dGVycCAqIGludGVycCwgVGNsX09iaiAqIGxpc3RQdHIsIFRjbF9PYmogKiBvYmpQdHIpOwogICAg
aW50ICgqdGNsX0xpc3RPYmpHZXRFbGVtZW50cykgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9P
YmogKiBsaXN0UHRyLCBpbnQgKiBvYmpjUHRyLCBUY2xfT2JqICoqKiBvYmp2UHRyKTsKICAgIGlu
dCAoKnRjbF9MaXN0T2JqSW5kZXgpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogbGlz
dFB0ciwgaW50IGluZGV4LCBUY2xfT2JqICoqIG9ialB0clB0cik7CiAgICBpbnQgKCp0Y2xfTGlz
dE9iakxlbmd0aCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBsaXN0UHRyLCBpbnQg
KiBpbnRQdHIpOwogICAgaW50ICgqdGNsX0xpc3RPYmpSZXBsYWNlKSAoVGNsX0ludGVycCAqIGlu
dGVycCwgVGNsX09iaiAqIGxpc3RQdHIsIGludCBmaXJzdCwgaW50IGNvdW50LCBpbnQgb2JqYywg
VGNsX09iaiAqY29uc3Qgb2JqdltdKTsKICAgIFRjbF9PYmogKiAoKnRjbF9OZXdCb29sZWFuT2Jq
KSAoaW50IGJvb2xWYWx1ZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfTmV3Qnl0ZUFycmF5T2JqKSAo
dW5zaWduZWQgY2hhciAqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgIFRjbF9PYmogKiAoKnRjbF9O
ZXdEb3VibGVPYmopIChkb3VibGUgZG91YmxlVmFsdWUpOwogICAgVGNsX09iaiAqICgqdGNsX05l
d0ludE9iaikgKGludCBpbnRWYWx1ZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfTmV3TGlzdE9iaikg
KGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10pOwogICAgVGNsX09iaiAqICgqdGNsX05l
d0xvbmdPYmopIChsb25nIGxvbmdWYWx1ZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfTmV3T2JqKSAo
dm9pZCk7CiAgICBUY2xfT2JqICogKCp0Y2xfTmV3U3RyaW5nT2JqKSAoY29uc3QgY2hhciAqIGJ5
dGVzLCBpbnQgbGVuZ3RoKTsKICAgIHZvaWQgKCp0Y2xfU2V0Qm9vbGVhbk9iaikgKFRjbF9PYmog
KiBvYmpQdHIsIGludCBib29sVmFsdWUpOwogICAgdW5zaWduZWQgY2hhciAqICgqdGNsX1NldEJ5
dGVBcnJheUxlbmd0aCkgKFRjbF9PYmogKiBvYmpQdHIsIGludCBsZW5ndGgpOwogICAgdm9pZCAo
KnRjbF9TZXRCeXRlQXJyYXlPYmopIChUY2xfT2JqICogb2JqUHRyLCB1bnNpZ25lZCBjaGFyICog
Ynl0ZXMsIGludCBsZW5ndGgpOwogICAgdm9pZCAoKnRjbF9TZXREb3VibGVPYmopIChUY2xfT2Jq
ICogb2JqUHRyLCBkb3VibGUgZG91YmxlVmFsdWUpOwogICAgdm9pZCAoKnRjbF9TZXRJbnRPYmop
IChUY2xfT2JqICogb2JqUHRyLCBpbnQgaW50VmFsdWUpOwogICAgdm9pZCAoKnRjbF9TZXRMaXN0
T2JqKSAoVGNsX09iaiAqIG9ialB0ciwgaW50IG9iamMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSk7
CiAgICB2b2lkICgqdGNsX1NldExvbmdPYmopIChUY2xfT2JqICogb2JqUHRyLCBsb25nIGxvbmdW
YWx1ZSk7CiAgICB2b2lkICgqdGNsX1NldE9iakxlbmd0aCkgKFRjbF9PYmogKiBvYmpQdHIsIGlu
dCBsZW5ndGgpOwogICAgdm9pZCAoKnRjbF9TZXRTdHJpbmdPYmopIChUY2xfT2JqICogb2JqUHRy
LCBjaGFyICogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgdm9pZCAoKnRjbF9BZGRFcnJvckluZm8p
IChUY2xfSW50ZXJwICogaW50ZXJwLCBjb25zdCBjaGFyICogbWVzc2FnZSk7CiAgICB2b2lkICgq
dGNsX0FkZE9iakVycm9ySW5mbykgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNvbnN0IGNoYXIgKiBt
ZXNzYWdlLCBpbnQgbGVuZ3RoKTsKICAgIHZvaWQgKCp0Y2xfQWxsb3dFeGNlcHRpb25zKSAoVGNs
X0ludGVycCAqIGludGVycCk7CiAgICB2b2lkICgqdGNsX0FwcGVuZEVsZW1lbnQpIChUY2xfSW50
ZXJwICogaW50ZXJwLCBjb25zdCBjaGFyICogc3RyaW5nKTsKICAgIHZvaWQgKCp0Y2xfQXBwZW5k
UmVzdWx0KSAoVGNsX0ludGVycCAqIGludGVycCwgLi4uKTsKICAgIFRjbF9Bc3luY0hhbmRsZXIg
KCp0Y2xfQXN5bmNDcmVhdGUpIChUY2xfQXN5bmNQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGll
bnREYXRhKTsKICAgIHZvaWQgKCp0Y2xfQXN5bmNEZWxldGUpIChUY2xfQXN5bmNIYW5kbGVyIGFz
eW5jKTsKICAgIGludCAoKnRjbF9Bc3luY0ludm9rZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGlu
dCBjb2RlKTsKICAgIHZvaWQgKCp0Y2xfQXN5bmNNYXJrKSAoVGNsX0FzeW5jSGFuZGxlciBhc3lu
Yyk7CiAgICBpbnQgKCp0Y2xfQXN5bmNSZWFkeSkgKHZvaWQpOwogICAgdm9pZCAoKnRjbF9CYWNr
Z3JvdW5kRXJyb3IpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIGNoYXIgKCp0Y2xfQmFja3Ns
YXNoKSAoY29uc3QgY2hhciAqIHNyYywgaW50ICogcmVhZFB0cik7CiAgICBpbnQgKCp0Y2xfQmFk
Q2hhbm5lbE9wdGlvbikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBvcHRpb25OYW1lLCBj
aGFyICogb3B0aW9uTGlzdCk7CiAgICB2b2lkICgqdGNsX0NhbGxXaGVuRGVsZXRlZCkgKFRjbF9J
bnRlcnAgKiBpbnRlcnAsIFRjbF9JbnRlcnBEZWxldGVQcm9jICogcHJvYywgQ2xpZW50RGF0YSBj
bGllbnREYXRhKTsKICAgIHZvaWQgKCp0Y2xfQ2FuY2VsSWRsZUNhbGwpIChUY2xfSWRsZVByb2Mg
KiBpZGxlUHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAgIGludCAoKnRjbF9DbG9zZSkg
KFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVsIGNoYW4pOwogICAgaW50ICgqdGNsX0Nv
bW1hbmRDb21wbGV0ZSkgKGNoYXIgKiBjbWQpOwogICAgY2hhciAqICgqdGNsX0NvbmNhdCkgKGlu
dCBhcmdjLCBjaGFyICoqIGFyZ3YpOwogICAgaW50ICgqdGNsX0NvbnZlcnRFbGVtZW50KSAoY29u
c3QgY2hhciAqIHNyYywgY2hhciAqIGRzdCwgaW50IGZsYWdzKTsKICAgIGludCAoKnRjbF9Db252
ZXJ0Q291bnRlZEVsZW1lbnQpIChjb25zdCBjaGFyICogc3JjLCBpbnQgbGVuZ3RoLCBjaGFyICog
ZHN0LCBpbnQgZmxhZ3MpOwogICAgaW50ICgqdGNsX0NyZWF0ZUFsaWFzKSAoVGNsX0ludGVycCAq
IHNsYXZlLCBjaGFyICogc2xhdmVDbWQsIFRjbF9JbnRlcnAgKiB0YXJnZXQsIGNoYXIgKiB0YXJn
ZXRDbWQsIGludCBhcmdjLCBjaGFyICoqIGFyZ3YpOwogICAgaW50ICgqdGNsX0NyZWF0ZUFsaWFz
T2JqKSAoVGNsX0ludGVycCAqIHNsYXZlLCBjaGFyICogc2xhdmVDbWQsIFRjbF9JbnRlcnAgKiB0
YXJnZXQsIGNoYXIgKiB0YXJnZXRDbWQsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10p
OwogICAgVGNsX0NoYW5uZWwgKCp0Y2xfQ3JlYXRlQ2hhbm5lbCkgKFRjbF9DaGFubmVsVHlwZSAq
IHR5cGVQdHIsIGNoYXIgKiBjaGFuTmFtZSwgQ2xpZW50RGF0YSBpbnN0YW5jZURhdGEsIGludCBt
YXNrKTsKICAgIHZvaWQgKCp0Y2xfQ3JlYXRlQ2hhbm5lbEhhbmRsZXIpIChUY2xfQ2hhbm5lbCBj
aGFuLCBpbnQgbWFzaywgVGNsX0NoYW5uZWxQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnRE
YXRhKTsKICAgIHZvaWQgKCp0Y2xfQ3JlYXRlQ2xvc2VIYW5kbGVyKSAoVGNsX0NoYW5uZWwgY2hh
biwgVGNsX0Nsb3NlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBUY2xf
Q29tbWFuZCAoKnRjbF9DcmVhdGVDb21tYW5kKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq
IGNtZE5hbWUsIFRjbF9DbWRQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xf
Q21kRGVsZXRlUHJvYyAqIGRlbGV0ZVByb2MpOwogICAgdm9pZCAoKnRjbF9DcmVhdGVFdmVudFNv
dXJjZSkgKFRjbF9FdmVudFNldHVwUHJvYyAqIHNldHVwUHJvYywgVGNsX0V2ZW50Q2hlY2tQcm9j
ICogY2hlY2tQcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9DcmVh
dGVFeGl0SGFuZGxlcikgKFRjbF9FeGl0UHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0
YSk7CiAgICBUY2xfSW50ZXJwICogKCp0Y2xfQ3JlYXRlSW50ZXJwKSAodm9pZCk7CiAgICB2b2lk
ICgqdGNsX0NyZWF0ZU1hdGhGdW5jKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUs
IGludCBudW1BcmdzLCBUY2xfVmFsdWVUeXBlICogYXJnVHlwZXMsIFRjbF9NYXRoUHJvYyAqIHBy
b2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBUY2xfQ29tbWFuZCAoKnRjbF9DcmVhdGVP
YmpDb21tYW5kKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNtZE5hbWUsIFRjbF9PYmpD
bWRQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfQ21kRGVsZXRlUHJvYyAq
IGRlbGV0ZVByb2MpOwogICAgVGNsX0ludGVycCAqICgqdGNsX0NyZWF0ZVNsYXZlKSAoVGNsX0lu
dGVycCAqIGludGVycCwgY2hhciAqIHNsYXZlTmFtZSwgaW50IGlzU2FmZSk7CiAgICBUY2xfVGlt
ZXJUb2tlbiAoKnRjbF9DcmVhdGVUaW1lckhhbmRsZXIpIChpbnQgbWlsbGlzZWNvbmRzLCBUY2xf
VGltZXJQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAgIFRjbF9UcmFjZSAo
KnRjbF9DcmVhdGVUcmFjZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGludCBsZXZlbCwgVGNsX0Nt
ZFRyYWNlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNs
X0RlbGV0ZUFzc29jRGF0YSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBuYW1lKTsKICAg
IHZvaWQgKCp0Y2xfRGVsZXRlQ2hhbm5lbEhhbmRsZXIpIChUY2xfQ2hhbm5lbCBjaGFuLCBUY2xf
Q2hhbm5lbFByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRj
bF9EZWxldGVDbG9zZUhhbmRsZXIpIChUY2xfQ2hhbm5lbCBjaGFuLCBUY2xfQ2xvc2VQcm9jICog
cHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAgIGludCAoKnRjbF9EZWxldGVDb21tYW5k
KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNtZE5hbWUpOwogICAgaW50ICgqdGNsX0Rl
bGV0ZUNvbW1hbmRGcm9tVG9rZW4pIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfQ29tbWFuZCBj
b21tYW5kKTsKICAgIHZvaWQgKCp0Y2xfRGVsZXRlRXZlbnRzKSAoVGNsX0V2ZW50RGVsZXRlUHJv
YyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNsX0RlbGV0ZUV2
ZW50U291cmNlKSAoVGNsX0V2ZW50U2V0dXBQcm9jICogc2V0dXBQcm9jLCBUY2xfRXZlbnRDaGVj
a1Byb2MgKiBjaGVja1Byb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNs
X0RlbGV0ZUV4aXRIYW5kbGVyKSAoVGNsX0V4aXRQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGll
bnREYXRhKTsKICAgIHZvaWQgKCp0Y2xfRGVsZXRlSGFzaEVudHJ5KSAoVGNsX0hhc2hFbnRyeSAq
IGVudHJ5UHRyKTsKICAgIHZvaWQgKCp0Y2xfRGVsZXRlSGFzaFRhYmxlKSAoVGNsX0hhc2hUYWJs
ZSAqIHRhYmxlUHRyKTsKICAgIHZvaWQgKCp0Y2xfRGVsZXRlSW50ZXJwKSAoVGNsX0ludGVycCAq
IGludGVycCk7CgogICAgdm9pZCAoKnRjbF9EZXRhY2hQaWRzKSAoaW50IG51bVBpZHMsIFRjbF9Q
aWQgKiBwaWRQdHIpOwoKCgoKCgoKICAgIHZvaWQgKCp0Y2xfRGVsZXRlVGltZXJIYW5kbGVyKSAo
VGNsX1RpbWVyVG9rZW4gdG9rZW4pOwogICAgdm9pZCAoKnRjbF9EZWxldGVUcmFjZSkgKFRjbF9J
bnRlcnAgKiBpbnRlcnAsIFRjbF9UcmFjZSB0cmFjZSk7CiAgICB2b2lkICgqdGNsX0RvbnRDYWxs
V2hlbkRlbGV0ZWQpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfSW50ZXJwRGVsZXRlUHJvYyAq
IHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBpbnQgKCp0Y2xfRG9PbmVFdmVudCkg
KGludCBmbGFncyk7CiAgICB2b2lkICgqdGNsX0RvV2hlbklkbGUpIChUY2xfSWRsZVByb2MgKiBw
cm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgY2hhciAqICgqdGNsX0RTdHJpbmdBcHBl
bmQpIChUY2xfRFN0cmluZyAqIGRzUHRyLCBjb25zdCBjaGFyICogc3RyLCBpbnQgbGVuZ3RoKTsK
ICAgIGNoYXIgKiAoKnRjbF9EU3RyaW5nQXBwZW5kRWxlbWVudCkgKFRjbF9EU3RyaW5nICogZHNQ
dHIsIGNvbnN0IGNoYXIgKiBzdHJpbmcpOwogICAgdm9pZCAoKnRjbF9EU3RyaW5nRW5kU3VibGlz
dCkgKFRjbF9EU3RyaW5nICogZHNQdHIpOwogICAgdm9pZCAoKnRjbF9EU3RyaW5nRnJlZSkgKFRj
bF9EU3RyaW5nICogZHNQdHIpOwogICAgdm9pZCAoKnRjbF9EU3RyaW5nR2V0UmVzdWx0KSAoVGNs
X0ludGVycCAqIGludGVycCwgVGNsX0RTdHJpbmcgKiBkc1B0cik7CiAgICB2b2lkICgqdGNsX0RT
dHJpbmdJbml0KSAoVGNsX0RTdHJpbmcgKiBkc1B0cik7CiAgICB2b2lkICgqdGNsX0RTdHJpbmdS
ZXN1bHQpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKICAgIHZv
aWQgKCp0Y2xfRFN0cmluZ1NldExlbmd0aCkgKFRjbF9EU3RyaW5nICogZHNQdHIsIGludCBsZW5n
dGgpOwogICAgdm9pZCAoKnRjbF9EU3RyaW5nU3RhcnRTdWJsaXN0KSAoVGNsX0RTdHJpbmcgKiBk
c1B0cik7CiAgICBpbnQgKCp0Y2xfRW9mKSAoVGNsX0NoYW5uZWwgY2hhbik7CiAgICBjaGFyICog
KCp0Y2xfRXJybm9JZCkgKHZvaWQpOwogICAgY2hhciAqICgqdGNsX0Vycm5vTXNnKSAoaW50IGVy
cik7CiAgICBpbnQgKCp0Y2xfRXZhbCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJp
bmcpOwogICAgaW50ICgqdGNsX0V2YWxGaWxlKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq
IGZpbGVOYW1lKTsKICAgIGludCAoKnRjbF9FdmFsT2JqKSAoVGNsX0ludGVycCAqIGludGVycCwg
VGNsX09iaiAqIG9ialB0cik7CiAgICB2b2lkICgqdGNsX0V2ZW50dWFsbHlGcmVlKSAoQ2xpZW50
RGF0YSBjbGllbnREYXRhLCBUY2xfRnJlZVByb2MgKiBmcmVlUHJvYyk7CiAgICB2b2lkICgqdGNs
X0V4aXQpIChpbnQgc3RhdHVzKTsKICAgIGludCAoKnRjbF9FeHBvc2VDb21tYW5kKSAoVGNsX0lu
dGVycCAqIGludGVycCwgY2hhciAqIGhpZGRlbkNtZFRva2VuLCBjaGFyICogY21kTmFtZSk7CiAg
ICBpbnQgKCp0Y2xfRXhwckJvb2xlYW4pIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3Ry
LCBpbnQgKiBwdHIpOwogICAgaW50ICgqdGNsX0V4cHJCb29sZWFuT2JqKSAoVGNsX0ludGVycCAq
IGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgaW50ICogcHRyKTsKICAgIGludCAoKnRjbF9FeHBy
RG91YmxlKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgZG91YmxlICogcHRyKTsK
ICAgIGludCAoKnRjbF9FeHByRG91YmxlT2JqKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09i
aiAqIG9ialB0ciwgZG91YmxlICogcHRyKTsKICAgIGludCAoKnRjbF9FeHByTG9uZykgKFRjbF9J
bnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHIsIGxvbmcgKiBwdHIpOwogICAgaW50ICgqdGNsX0V4
cHJMb25nT2JqKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgbG9uZyAq
IHB0cik7CiAgICBpbnQgKCp0Y2xfRXhwck9iaikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9P
YmogKiBvYmpQdHIsIFRjbF9PYmogKiogcmVzdWx0UHRyUHRyKTsKICAgIGludCAoKnRjbF9FeHBy
U3RyaW5nKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0cmluZyk7CiAgICB2b2lkICgq
dGNsX0ZpbmFsaXplKSAodm9pZCk7CiAgICB2b2lkICgqdGNsX0ZpbmRFeGVjdXRhYmxlKSAoY29u
c3QgY2hhciAqIGFyZ3YwKTsKICAgIFRjbF9IYXNoRW50cnkgKiAoKnRjbF9GaXJzdEhhc2hFbnRy
eSkgKFRjbF9IYXNoVGFibGUgKiB0YWJsZVB0ciwgVGNsX0hhc2hTZWFyY2ggKiBzZWFyY2hQdHIp
OwogICAgaW50ICgqdGNsX0ZsdXNoKSAoVGNsX0NoYW5uZWwgY2hhbik7CiAgICB2b2lkICgqdGNs
X0ZyZWVSZXN1bHQpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIGludCAoKnRjbF9HZXRBbGlh
cykgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzbGF2ZUNtZCwgVGNsX0ludGVycCAqKiB0
YXJnZXRJbnRlcnBQdHIsIGNoYXIgKiogdGFyZ2V0Q21kUHRyLCBpbnQgKiBhcmdjUHRyLCBjaGFy
ICoqKiBhcmd2UHRyKTsKICAgIGludCAoKnRjbF9HZXRBbGlhc09iaikgKFRjbF9JbnRlcnAgKiBp
bnRlcnAsIGNoYXIgKiBzbGF2ZUNtZCwgVGNsX0ludGVycCAqKiB0YXJnZXRJbnRlcnBQdHIsIGNo
YXIgKiogdGFyZ2V0Q21kUHRyLCBpbnQgKiBvYmpjUHRyLCBUY2xfT2JqICoqKiBvYmp2KTsKICAg
IENsaWVudERhdGEgKCp0Y2xfR2V0QXNzb2NEYXRhKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hh
ciAqIG5hbWUsIFRjbF9JbnRlcnBEZWxldGVQcm9jICoqIHByb2NQdHIpOwogICAgVGNsX0NoYW5u
ZWwgKCp0Y2xfR2V0Q2hhbm5lbCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBjaGFuTmFt
ZSwgaW50ICogbW9kZVB0cik7CiAgICBpbnQgKCp0Y2xfR2V0Q2hhbm5lbEJ1ZmZlclNpemUpIChU
Y2xfQ2hhbm5lbCBjaGFuKTsKICAgIGludCAoKnRjbF9HZXRDaGFubmVsSGFuZGxlKSAoVGNsX0No
YW5uZWwgY2hhbiwgaW50IGRpcmVjdGlvbiwgQ2xpZW50RGF0YSAqIGhhbmRsZVB0cik7CiAgICBD
bGllbnREYXRhICgqdGNsX0dldENoYW5uZWxJbnN0YW5jZURhdGEpIChUY2xfQ2hhbm5lbCBjaGFu
KTsKICAgIGludCAoKnRjbF9HZXRDaGFubmVsTW9kZSkgKFRjbF9DaGFubmVsIGNoYW4pOwogICAg
Y2hhciAqICgqdGNsX0dldENoYW5uZWxOYW1lKSAoVGNsX0NoYW5uZWwgY2hhbik7CiAgICBpbnQg
KCp0Y2xfR2V0Q2hhbm5lbE9wdGlvbikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVs
IGNoYW4sIGNoYXIgKiBvcHRpb25OYW1lLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKICAgIFRjbF9D
aGFubmVsVHlwZSAqICgqdGNsX0dldENoYW5uZWxUeXBlKSAoVGNsX0NoYW5uZWwgY2hhbik7CiAg
ICBpbnQgKCp0Y2xfR2V0Q29tbWFuZEluZm8pIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICog
Y21kTmFtZSwgVGNsX0NtZEluZm8gKiBpbmZvUHRyKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRDb21t
YW5kTmFtZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9Db21tYW5kIGNvbW1hbmQpOwogICAg
aW50ICgqdGNsX0dldEVycm5vKSAodm9pZCk7CiAgICBjaGFyICogKCp0Y2xfR2V0SG9zdE5hbWUp
ICh2b2lkKTsKICAgIGludCAoKnRjbF9HZXRJbnRlcnBQYXRoKSAoVGNsX0ludGVycCAqIGFza0lu
dGVycCwgVGNsX0ludGVycCAqIHNsYXZlSW50ZXJwKTsKICAgIFRjbF9JbnRlcnAgKiAoKnRjbF9H
ZXRNYXN0ZXIpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIGNvbnN0IGNoYXIgKiAoKnRjbF9H
ZXROYW1lT2ZFeGVjdXRhYmxlKSAodm9pZCk7CiAgICBUY2xfT2JqICogKCp0Y2xfR2V0T2JqUmVz
dWx0KSAoVGNsX0ludGVycCAqIGludGVycCk7CgogICAgaW50ICgqdGNsX0dldE9wZW5GaWxlKSAo
VGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgaW50IGZvcldyaXRpbmcsIGludCBjaGVj
a1VzYWdlLCBDbGllbnREYXRhICogZmlsZVB0cik7CgoKCgoKCgogICAgVGNsX1BhdGhUeXBlICgq
dGNsX0dldFBhdGhUeXBlKSAoY2hhciAqIHBhdGgpOwogICAgaW50ICgqdGNsX0dldHMpIChUY2xf
Q2hhbm5lbCBjaGFuLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKICAgIGludCAoKnRjbF9HZXRzT2Jq
KSAoVGNsX0NoYW5uZWwgY2hhbiwgVGNsX09iaiAqIG9ialB0cik7CiAgICBpbnQgKCp0Y2xfR2V0
U2VydmljZU1vZGUpICh2b2lkKTsKICAgIFRjbF9JbnRlcnAgKiAoKnRjbF9HZXRTbGF2ZSkgKFRj
bF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzbGF2ZU5hbWUpOwogICAgVGNsX0NoYW5uZWwgKCp0
Y2xfR2V0U3RkQ2hhbm5lbCkgKGludCB0eXBlKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRTdHJpbmdS
ZXN1bHQpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRWYXIpIChU
Y2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwgaW50IGZsYWdzKTsKICAgIGNoYXIg
KiAoKnRjbF9HZXRWYXIyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHBhcnQxLCBjaGFy
ICogcGFydDIsIGludCBmbGFncyk7CiAgICBpbnQgKCp0Y2xfR2xvYmFsRXZhbCkgKFRjbF9JbnRl
cnAgKiBpbnRlcnAsIGNoYXIgKiBjb21tYW5kKTsKICAgIGludCAoKnRjbF9HbG9iYWxFdmFsT2Jq
KSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0cik7CiAgICBpbnQgKCp0Y2xf
SGlkZUNvbW1hbmQpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kTmFtZSwgY2hhciAq
IGhpZGRlbkNtZFRva2VuKTsKICAgIGludCAoKnRjbF9Jbml0KSAoVGNsX0ludGVycCAqIGludGVy
cCk7CiAgICB2b2lkICgqdGNsX0luaXRIYXNoVGFibGUpIChUY2xfSGFzaFRhYmxlICogdGFibGVQ
dHIsIGludCBrZXlUeXBlKTsKICAgIGludCAoKnRjbF9JbnB1dEJsb2NrZWQpIChUY2xfQ2hhbm5l
bCBjaGFuKTsKICAgIGludCAoKnRjbF9JbnB1dEJ1ZmZlcmVkKSAoVGNsX0NoYW5uZWwgY2hhbik7
CiAgICBpbnQgKCp0Y2xfSW50ZXJwRGVsZXRlZCkgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwogICAg
aW50ICgqdGNsX0lzU2FmZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwogICAgY2hhciAqICgqdGNs
X0pvaW5QYXRoKSAoaW50IGFyZ2MsIGNoYXIgKiogYXJndiwgVGNsX0RTdHJpbmcgKiByZXN1bHRQ
dHIpOwogICAgaW50ICgqdGNsX0xpbmtWYXIpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICog
dmFyTmFtZSwgY2hhciAqIGFkZHIsIGludCB0eXBlKTsKICAgIHZvaWQgKnJlc2VydmVkMTg4Owog
ICAgVGNsX0NoYW5uZWwgKCp0Y2xfTWFrZUZpbGVDaGFubmVsKSAoQ2xpZW50RGF0YSBoYW5kbGUs
IGludCBtb2RlKTsKICAgIGludCAoKnRjbF9NYWtlU2FmZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAp
OwogICAgVGNsX0NoYW5uZWwgKCp0Y2xfTWFrZVRjcENsaWVudENoYW5uZWwpIChDbGllbnREYXRh
IHRjcFNvY2tldCk7CiAgICBjaGFyICogKCp0Y2xfTWVyZ2UpIChpbnQgYXJnYywgY2hhciAqKiBh
cmd2KTsKICAgIFRjbF9IYXNoRW50cnkgKiAoKnRjbF9OZXh0SGFzaEVudHJ5KSAoVGNsX0hhc2hT
ZWFyY2ggKiBzZWFyY2hQdHIpOwogICAgdm9pZCAoKnRjbF9Ob3RpZnlDaGFubmVsKSAoVGNsX0No
YW5uZWwgY2hhbm5lbCwgaW50IG1hc2spOwogICAgVGNsX09iaiAqICgqdGNsX09iakdldFZhcjIp
IChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogcGFydDFQdHIsIFRjbF9PYmogKiBwYXJ0
MlB0ciwgaW50IGZsYWdzKTsKICAgIFRjbF9PYmogKiAoKnRjbF9PYmpTZXRWYXIyKSAoVGNsX0lu
dGVycCAqIGludGVycCwgVGNsX09iaiAqIHBhcnQxUHRyLCBUY2xfT2JqICogcGFydDJQdHIsIFRj
bF9PYmogKiBuZXdWYWx1ZVB0ciwgaW50IGZsYWdzKTsKCiAgICBUY2xfQ2hhbm5lbCAoKnRjbF9P
cGVuQ29tbWFuZENoYW5uZWwpIChUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgYXJnYywgY2hhciAq
KiBhcmd2LCBpbnQgZmxhZ3MpOwoKCgoKCgoKICAgIFRjbF9DaGFubmVsICgqdGNsX09wZW5GaWxl
Q2hhbm5lbCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBmaWxlTmFtZSwgY2hhciAqIG1v
ZGVTdHJpbmcsIGludCBwZXJtaXNzaW9ucyk7CiAgICBUY2xfQ2hhbm5lbCAoKnRjbF9PcGVuVGNw
Q2xpZW50KSAoVGNsX0ludGVycCAqIGludGVycCwgaW50IHBvcnQsIGNoYXIgKiBhZGRyZXNzLCBj
aGFyICogbXlhZGRyLCBpbnQgbXlwb3J0LCBpbnQgYXN5bmMpOwogICAgVGNsX0NoYW5uZWwgKCp0
Y2xfT3BlblRjcFNlcnZlcikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGludCBwb3J0LCBjaGFyICog
aG9zdCwgVGNsX1RjcEFjY2VwdFByb2MgKiBhY2NlcHRQcm9jLCBDbGllbnREYXRhIGNhbGxiYWNr
RGF0YSk7CiAgICB2b2lkICgqdGNsX1ByZXNlcnZlKSAoQ2xpZW50RGF0YSBkYXRhKTsKICAgIHZv
aWQgKCp0Y2xfUHJpbnREb3VibGUpIChUY2xfSW50ZXJwICogaW50ZXJwLCBkb3VibGUgdmFsdWUs
IGNoYXIgKiBkc3QpOwogICAgaW50ICgqdGNsX1B1dEVudikgKGNvbnN0IGNoYXIgKiBzdHJpbmcp
OwogICAgY2hhciAqICgqdGNsX1Bvc2l4RXJyb3IpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAg
IHZvaWQgKCp0Y2xfUXVldWVFdmVudCkgKFRjbF9FdmVudCAqIGV2UHRyLCBUY2xfUXVldWVQb3Np
dGlvbiBwb3NpdGlvbik7CiAgICBpbnQgKCp0Y2xfUmVhZCkgKFRjbF9DaGFubmVsIGNoYW4sIGNo
YXIgKiBidWZQdHIsIGludCB0b1JlYWQpOwoKICAgIHZvaWQgKCp0Y2xfUmVhcERldGFjaGVkUHJv
Y3MpICh2b2lkKTsKCgoKCgoKCiAgICBpbnQgKCp0Y2xfUmVjb3JkQW5kRXZhbCkgKFRjbF9JbnRl
cnAgKiBpbnRlcnAsIGNoYXIgKiBjbWQsIGludCBmbGFncyk7CiAgICBpbnQgKCp0Y2xfUmVjb3Jk
QW5kRXZhbE9iaikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBjbWRQdHIsIGludCBm
bGFncyk7CiAgICB2b2lkICgqdGNsX1JlZ2lzdGVyQ2hhbm5lbCkgKFRjbF9JbnRlcnAgKiBpbnRl
cnAsIFRjbF9DaGFubmVsIGNoYW4pOwogICAgdm9pZCAoKnRjbF9SZWdpc3Rlck9ialR5cGUpIChU
Y2xfT2JqVHlwZSAqIHR5cGVQdHIpOwogICAgVGNsX1JlZ0V4cCAoKnRjbF9SZWdFeHBDb21waWxl
KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0cmluZyk7CiAgICBpbnQgKCp0Y2xfUmVn
RXhwRXhlYykgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9SZWdFeHAgcmVnZXhwLCBjb25zdCBj
aGFyICogc3RyLCBjb25zdCBjaGFyICogc3RhcnQpOwogICAgaW50ICgqdGNsX1JlZ0V4cE1hdGNo
KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgY2hhciAqIHBhdHRlcm4pOwogICAg
dm9pZCAoKnRjbF9SZWdFeHBSYW5nZSkgKFRjbF9SZWdFeHAgcmVnZXhwLCBpbnQgaW5kZXgsIGNo
YXIgKiogc3RhcnRQdHIsIGNoYXIgKiogZW5kUHRyKTsKICAgIHZvaWQgKCp0Y2xfUmVsZWFzZSkg
KENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNsX1Jlc2V0UmVzdWx0KSAoVGNs
X0ludGVycCAqIGludGVycCk7CiAgICBpbnQgKCp0Y2xfU2NhbkVsZW1lbnQpIChjb25zdCBjaGFy
ICogc3RyLCBpbnQgKiBmbGFnUHRyKTsKICAgIGludCAoKnRjbF9TY2FuQ291bnRlZEVsZW1lbnQp
IChjb25zdCBjaGFyICogc3RyLCBpbnQgbGVuZ3RoLCBpbnQgKiBmbGFnUHRyKTsKICAgIGludCAo
KnRjbF9TZWVrKSAoVGNsX0NoYW5uZWwgY2hhbiwgaW50IG9mZnNldCwgaW50IG1vZGUpOwogICAg
aW50ICgqdGNsX1NlcnZpY2VBbGwpICh2b2lkKTsKICAgIGludCAoKnRjbF9TZXJ2aWNlRXZlbnQp
IChpbnQgZmxhZ3MpOwogICAgdm9pZCAoKnRjbF9TZXRBc3NvY0RhdGEpIChUY2xfSW50ZXJwICog
aW50ZXJwLCBjaGFyICogbmFtZSwgVGNsX0ludGVycERlbGV0ZVByb2MgKiBwcm9jLCBDbGllbnRE
YXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9TZXRDaGFubmVsQnVmZmVyU2l6ZSkgKFRj
bF9DaGFubmVsIGNoYW4sIGludCBzeik7CiAgICBpbnQgKCp0Y2xfU2V0Q2hhbm5lbE9wdGlvbikg
KFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVsIGNoYW4sIGNoYXIgKiBvcHRpb25OYW1l
LCBjaGFyICogbmV3VmFsdWUpOwogICAgaW50ICgqdGNsX1NldENvbW1hbmRJbmZvKSAoVGNsX0lu
dGVycCAqIGludGVycCwgY2hhciAqIGNtZE5hbWUsIFRjbF9DbWRJbmZvICogaW5mb1B0cik7CiAg
ICB2b2lkICgqdGNsX1NldEVycm5vKSAoaW50IGVycik7CiAgICB2b2lkICgqdGNsX1NldEVycm9y
Q29kZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIC4uLik7CiAgICB2b2lkICgqdGNsX1NldE1heEJs
b2NrVGltZSkgKFRjbF9UaW1lICogdGltZVB0cik7CiAgICB2b2lkICgqdGNsX1NldFBhbmljUHJv
YykgKFRjbF9QYW5pY1Byb2MgKiBwYW5pY1Byb2MpOwogICAgaW50ICgqdGNsX1NldFJlY3Vyc2lv
bkxpbWl0KSAoVGNsX0ludGVycCAqIGludGVycCwgaW50IGRlcHRoKTsKICAgIHZvaWQgKCp0Y2xf
U2V0UmVzdWx0KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgVGNsX0ZyZWVQcm9j
ICogZnJlZVByb2MpOwogICAgaW50ICgqdGNsX1NldFNlcnZpY2VNb2RlKSAoaW50IG1vZGUpOwog
ICAgdm9pZCAoKnRjbF9TZXRPYmpFcnJvckNvZGUpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xf
T2JqICogZXJyb3JPYmpQdHIpOwogICAgdm9pZCAoKnRjbF9TZXRPYmpSZXN1bHQpIChUY2xfSW50
ZXJwICogaW50ZXJwLCBUY2xfT2JqICogcmVzdWx0T2JqUHRyKTsKICAgIHZvaWQgKCp0Y2xfU2V0
U3RkQ2hhbm5lbCkgKFRjbF9DaGFubmVsIGNoYW5uZWwsIGludCB0eXBlKTsKICAgIGNoYXIgKiAo
KnRjbF9TZXRWYXIpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwgY2hhciAq
IG5ld1ZhbHVlLCBpbnQgZmxhZ3MpOwogICAgY2hhciAqICgqdGNsX1NldFZhcjIpIChUY2xfSW50
ZXJwICogaW50ZXJwLCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgY2hhciAqIG5ld1ZhbHVl
LCBpbnQgZmxhZ3MpOwogICAgY2hhciAqICgqdGNsX1NpZ25hbElkKSAoaW50IHNpZyk7CiAgICBj
aGFyICogKCp0Y2xfU2lnbmFsTXNnKSAoaW50IHNpZyk7CiAgICB2b2lkICgqdGNsX1NvdXJjZVJD
RmlsZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwogICAgaW50ICgqdGNsX1NwbGl0TGlzdCkgKFRj
bF9JbnRlcnAgKiBpbnRlcnAsIGNvbnN0IGNoYXIgKiBsaXN0U3RyLCBpbnQgKiBhcmdjUHRyLCBj
aGFyICoqKiBhcmd2UHRyKTsKICAgIHZvaWQgKCp0Y2xfU3BsaXRQYXRoKSAoY29uc3QgY2hhciAq
IHBhdGgsIGludCAqIGFyZ2NQdHIsIGNoYXIgKioqIGFyZ3ZQdHIpOwogICAgdm9pZCAoKnRjbF9T
dGF0aWNQYWNrYWdlKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHBrZ05hbWUsIFRjbF9Q
YWNrYWdlSW5pdFByb2MgKiBpbml0UHJvYywgVGNsX1BhY2thZ2VJbml0UHJvYyAqIHNhZmVJbml0
UHJvYyk7CiAgICBpbnQgKCp0Y2xfU3RyaW5nTWF0Y2gpIChjb25zdCBjaGFyICogc3RyLCBjb25z
dCBjaGFyICogcGF0dGVybik7CiAgICBpbnQgKCp0Y2xfVGVsbCkgKFRjbF9DaGFubmVsIGNoYW4p
OwogICAgaW50ICgqdGNsX1RyYWNlVmFyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHZh
ck5hbWUsIGludCBmbGFncywgVGNsX1ZhclRyYWNlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xp
ZW50RGF0YSk7CiAgICBpbnQgKCp0Y2xfVHJhY2VWYXIyKSAoVGNsX0ludGVycCAqIGludGVycCwg
Y2hhciAqIHBhcnQxLCBjaGFyICogcGFydDIsIGludCBmbGFncywgVGNsX1ZhclRyYWNlUHJvYyAq
IHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBjaGFyICogKCp0Y2xfVHJhbnNsYXRl
RmlsZU5hbWUpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgVGNsX0RTdHJpbmcg
KiBidWZmZXJQdHIpOwogICAgaW50ICgqdGNsX1VuZ2V0cykgKFRjbF9DaGFubmVsIGNoYW4sIGNo
YXIgKiBzdHIsIGludCBsZW4sIGludCBhdEhlYWQpOwogICAgdm9pZCAoKnRjbF9VbmxpbmtWYXIp
IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSk7CiAgICBpbnQgKCp0Y2xfVW5y
ZWdpc3RlckNoYW5uZWwpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfQ2hhbm5lbCBjaGFuKTsK
ICAgIGludCAoKnRjbF9VbnNldFZhcikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJO
YW1lLCBpbnQgZmxhZ3MpOwogICAgaW50ICgqdGNsX1Vuc2V0VmFyMikgKFRjbF9JbnRlcnAgKiBp
bnRlcnAsIGNoYXIgKiBwYXJ0MSwgY2hhciAqIHBhcnQyLCBpbnQgZmxhZ3MpOwogICAgdm9pZCAo
KnRjbF9VbnRyYWNlVmFyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHZhck5hbWUsIGlu
dCBmbGFncywgVGNsX1ZhclRyYWNlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7
CiAgICB2b2lkICgqdGNsX1VudHJhY2VWYXIyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq
IHBhcnQxLCBjaGFyICogcGFydDIsIGludCBmbGFncywgVGNsX1ZhclRyYWNlUHJvYyAqIHByb2Ms
IENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNsX1VwZGF0ZUxpbmtlZFZhcikg
KFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJOYW1lKTsKICAgIGludCAoKnRjbF9VcFZh
cikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBmcmFtZU5hbWUsIGNoYXIgKiB2YXJOYW1l
LCBjaGFyICogbG9jYWxOYW1lLCBpbnQgZmxhZ3MpOwogICAgaW50ICgqdGNsX1VwVmFyMikgKFRj
bF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBmcmFtZU5hbWUsIGNoYXIgKiBwYXJ0MSwgY2hhciAq
IHBhcnQyLCBjaGFyICogbG9jYWxOYW1lLCBpbnQgZmxhZ3MpOwogICAgaW50ICgqdGNsX1ZhckV2
YWwpIChUY2xfSW50ZXJwICogaW50ZXJwLCAuLi4pOwogICAgQ2xpZW50RGF0YSAoKnRjbF9WYXJU
cmFjZUluZm8pIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwgaW50IGZsYWdz
LCBUY2xfVmFyVHJhY2VQcm9jICogcHJvY1B0ciwgQ2xpZW50RGF0YSBwcmV2Q2xpZW50RGF0YSk7
CiAgICBDbGllbnREYXRhICgqdGNsX1ZhclRyYWNlSW5mbzIpIChUY2xfSW50ZXJwICogaW50ZXJw
LCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgaW50IGZsYWdzLCBUY2xfVmFyVHJhY2VQcm9j
ICogcHJvY1B0ciwgQ2xpZW50RGF0YSBwcmV2Q2xpZW50RGF0YSk7CiAgICBpbnQgKCp0Y2xfV3Jp
dGUpIChUY2xfQ2hhbm5lbCBjaGFuLCBjaGFyICogcywgaW50IHNsZW4pOwogICAgdm9pZCAoKnRj
bF9Xcm9uZ051bUFyZ3MpIChUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAq
Y29uc3Qgb2JqdltdLCBjaGFyICogbWVzc2FnZSk7CiAgICBpbnQgKCp0Y2xfRHVtcEFjdGl2ZU1l
bW9yeSkgKGNoYXIgKiBmaWxlTmFtZSk7CiAgICB2b2lkICgqdGNsX1ZhbGlkYXRlQWxsTWVtb3J5
KSAoY2hhciAqIGZpbGUsIGludCBsaW5lKTsKICAgIHZvaWQgKCp0Y2xfQXBwZW5kUmVzdWx0VkEp
IChUY2xfSW50ZXJwICogaW50ZXJwLCB2YV9saXN0IGFyZ0xpc3QpOwogICAgdm9pZCAoKnRjbF9B
cHBlbmRTdHJpbmdzVG9PYmpWQSkgKFRjbF9PYmogKiBvYmpQdHIsIHZhX2xpc3QgYXJnTGlzdCk7
CiAgICBjaGFyICogKCp0Y2xfSGFzaFN0YXRzKSAoVGNsX0hhc2hUYWJsZSAqIHRhYmxlUHRyKTsK
ICAgIGNoYXIgKiAoKnRjbF9QYXJzZVZhcikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBz
dHIsIGNoYXIgKiogdGVybVB0cik7CiAgICBjaGFyICogKCp0Y2xfUGtnUHJlc2VudCkgKFRjbF9J
bnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBuYW1lLCBjaGFyICogdmVyc2lvbiwgaW50IGV4YWN0KTsK
ICAgIGNoYXIgKiAoKnRjbF9Qa2dQcmVzZW50RXgpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFy
ICogbmFtZSwgY2hhciAqIHZlcnNpb24sIGludCBleGFjdCwgQ2xpZW50RGF0YSAqIGNsaWVudERh
dGFQdHIpOwogICAgaW50ICgqdGNsX1BrZ1Byb3ZpZGUpIChUY2xfSW50ZXJwICogaW50ZXJwLCBj
aGFyICogbmFtZSwgY2hhciAqIHZlcnNpb24pOwogICAgY2hhciAqICgqdGNsX1BrZ1JlcXVpcmUp
IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgY2hhciAqIHZlcnNpb24sIGludCBl
eGFjdCk7CiAgICB2b2lkICgqdGNsX1NldEVycm9yQ29kZVZBKSAoVGNsX0ludGVycCAqIGludGVy
cCwgdmFfbGlzdCBhcmdMaXN0KTsKICAgIGludCAoKnRjbF9WYXJFdmFsVkEpIChUY2xfSW50ZXJw
ICogaW50ZXJwLCB2YV9saXN0IGFyZ0xpc3QpOwogICAgVGNsX1BpZCAoKnRjbF9XYWl0UGlkKSAo
VGNsX1BpZCBwaWQsIGludCAqIHN0YXRQdHIsIGludCBvcHRpb25zKTsKCiAgICB2b2lkICgqdGNs
X1BhbmljVkEpIChjaGFyICogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpOwoKCgoKCgoKICAgIHZv
aWQgKCp0Y2xfR2V0VmVyc2lvbikgKGludCAqIG1ham9yLCBpbnQgKiBtaW5vciwgaW50ICogcGF0
Y2hMZXZlbCwgaW50ICogdHlwZSk7CiAgICB2b2lkICgqdGNsX0luaXRNZW1vcnkpIChUY2xfSW50
ZXJwICogaW50ZXJwKTsKICAgIFRjbF9DaGFubmVsICgqdGNsX1N0YWNrQ2hhbm5lbCkgKFRjbF9J
bnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVsVHlwZSAqIHR5cGVQdHIsIENsaWVudERhdGEgaW5z
dGFuY2VEYXRhLCBpbnQgbWFzaywgVGNsX0NoYW5uZWwgcHJldkNoYW4pOwogICAgdm9pZCAoKnRj
bF9VbnN0YWNrQ2hhbm5lbCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVsIGNoYW4p
OwogICAgVGNsX0NoYW5uZWwgKCp0Y2xfR2V0U3RhY2tlZENoYW5uZWwpIChUY2xfQ2hhbm5lbCBj
aGFuKTsKICAgIHZvaWQgKnJlc2VydmVkMjg0OwogICAgdm9pZCAqcmVzZXJ2ZWQyODU7CiAgICB2
b2lkICgqdGNsX0FwcGVuZE9ialRvT2JqKSAoVGNsX09iaiAqIG9ialB0ciwgVGNsX09iaiAqIGFw
cGVuZE9ialB0cik7CiAgICBUY2xfRW5jb2RpbmcgKCp0Y2xfQ3JlYXRlRW5jb2RpbmcpIChUY2xf
RW5jb2RpbmdUeXBlICogdHlwZVB0cik7CiAgICB2b2lkICgqdGNsX0NyZWF0ZVRocmVhZEV4aXRI
YW5kbGVyKSAoVGNsX0V4aXRQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAg
IHZvaWQgKCp0Y2xfRGVsZXRlVGhyZWFkRXhpdEhhbmRsZXIpIChUY2xfRXhpdFByb2MgKiBwcm9j
LCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9EaXNjYXJkUmVzdWx0KSAo
VGNsX1NhdmVkUmVzdWx0ICogc3RhdGVQdHIpOwogICAgaW50ICgqdGNsX0V2YWxFeCkgKFRjbF9J
bnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzY3JpcHQsIGludCBudW1CeXRlcywgaW50IGZsYWdzKTsK
ICAgIGludCAoKnRjbF9FdmFsT2JqdikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGludCBvYmpjLCBU
Y2xfT2JqICpjb25zdCBvYmp2W10sIGludCBmbGFncyk7CiAgICBpbnQgKCp0Y2xfRXZhbE9iakV4
KSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgaW50IGZsYWdzKTsKICAg
IHZvaWQgKCp0Y2xfRXhpdFRocmVhZCkgKGludCBzdGF0dXMpOwogICAgaW50ICgqdGNsX0V4dGVy
bmFsVG9VdGYpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfRW5jb2RpbmcgZW5jb2RpbmcsIGNv
bnN0IGNoYXIgKiBzcmMsIGludCBzcmNMZW4sIGludCBmbGFncywgVGNsX0VuY29kaW5nU3RhdGUg
KiBzdGF0ZVB0ciwgY2hhciAqIGRzdCwgaW50IGRzdExlbiwgaW50ICogc3JjUmVhZFB0ciwgaW50
ICogZHN0V3JvdGVQdHIsIGludCAqIGRzdENoYXJzUHRyKTsKICAgIGNoYXIgKiAoKnRjbF9FeHRl
cm5hbFRvVXRmRFN0cmluZykgKFRjbF9FbmNvZGluZyBlbmNvZGluZywgY29uc3QgY2hhciAqIHNy
YywgaW50IHNyY0xlbiwgVGNsX0RTdHJpbmcgKiBkc1B0cik7CiAgICB2b2lkICgqdGNsX0ZpbmFs
aXplVGhyZWFkKSAodm9pZCk7CiAgICB2b2lkICgqdGNsX0ZpbmFsaXplTm90aWZpZXIpIChDbGll
bnREYXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9GcmVlRW5jb2RpbmcpIChUY2xfRW5j
b2RpbmcgZW5jb2RpbmcpOwogICAgVGNsX1RocmVhZElkICgqdGNsX0dldEN1cnJlbnRUaHJlYWQp
ICh2b2lkKTsKICAgIFRjbF9FbmNvZGluZyAoKnRjbF9HZXRFbmNvZGluZykgKFRjbF9JbnRlcnAg
KiBpbnRlcnAsIGNvbnN0IGNoYXIgKiBuYW1lKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRFbmNvZGlu
Z05hbWUpIChUY2xfRW5jb2RpbmcgZW5jb2RpbmcpOwogICAgdm9pZCAoKnRjbF9HZXRFbmNvZGlu
Z05hbWVzKSAoVGNsX0ludGVycCAqIGludGVycCk7CiAgICBpbnQgKCp0Y2xfR2V0SW5kZXhGcm9t
T2JqU3RydWN0KSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgY2hhciAq
KiB0YWJsZVB0ciwgaW50IG9mZnNldCwgY2hhciAqIG1zZywgaW50IGZsYWdzLCBpbnQgKiBpbmRl
eFB0cik7CiAgICB2b2lkICogKCp0Y2xfR2V0VGhyZWFkRGF0YSkgKFRjbF9UaHJlYWREYXRhS2V5
ICoga2V5UHRyLCBpbnQgc2l6ZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfR2V0VmFyMkV4KSAoVGNs
X0ludGVycCAqIGludGVycCwgY2hhciAqIHBhcnQxLCBjaGFyICogcGFydDIsIGludCBmbGFncyk7
CiAgICBDbGllbnREYXRhICgqdGNsX0luaXROb3RpZmllcikgKHZvaWQpOwogICAgdm9pZCAoKnRj
bF9NdXRleExvY2spIChUY2xfTXV0ZXggKiBtdXRleFB0cik7CiAgICB2b2lkICgqdGNsX011dGV4
VW5sb2NrKSAoVGNsX011dGV4ICogbXV0ZXhQdHIpOwogICAgdm9pZCAoKnRjbF9Db25kaXRpb25O
b3RpZnkpIChUY2xfQ29uZGl0aW9uICogY29uZFB0cik7CiAgICB2b2lkICgqdGNsX0NvbmRpdGlv
bldhaXQpIChUY2xfQ29uZGl0aW9uICogY29uZFB0ciwgVGNsX011dGV4ICogbXV0ZXhQdHIsIFRj
bF9UaW1lICogdGltZVB0cik7CiAgICBpbnQgKCp0Y2xfTnVtVXRmQ2hhcnMpIChjb25zdCBjaGFy
ICogc3JjLCBpbnQgbGVuKTsKICAgIGludCAoKnRjbF9SZWFkQ2hhcnMpIChUY2xfQ2hhbm5lbCBj
aGFubmVsLCBUY2xfT2JqICogb2JqUHRyLCBpbnQgY2hhcnNUb1JlYWQsIGludCBhcHBlbmRGbGFn
KTsKICAgIHZvaWQgKCp0Y2xfUmVzdG9yZVJlc3VsdCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRj
bF9TYXZlZFJlc3VsdCAqIHN0YXRlUHRyKTsKICAgIHZvaWQgKCp0Y2xfU2F2ZVJlc3VsdCkgKFRj
bF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9TYXZlZFJlc3VsdCAqIHN0YXRlUHRyKTsKICAgIGludCAo
KnRjbF9TZXRTeXN0ZW1FbmNvZGluZykgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNvbnN0IGNoYXIg
KiBuYW1lKTsKICAgIFRjbF9PYmogKiAoKnRjbF9TZXRWYXIyRXgpIChUY2xfSW50ZXJwICogaW50
ZXJwLCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgVGNsX09iaiAqIG5ld1ZhbHVlUHRyLCBp
bnQgZmxhZ3MpOwogICAgdm9pZCAoKnRjbF9UaHJlYWRBbGVydCkgKFRjbF9UaHJlYWRJZCB0aHJl
YWRJZCk7CiAgICB2b2lkICgqdGNsX1RocmVhZFF1ZXVlRXZlbnQpIChUY2xfVGhyZWFkSWQgdGhy
ZWFkSWQsIFRjbF9FdmVudCogZXZQdHIsIFRjbF9RdWV1ZVBvc2l0aW9uIHBvc2l0aW9uKTsKICAg
IFRjbF9VbmlDaGFyICgqdGNsX1VuaUNoYXJBdEluZGV4KSAoY29uc3QgY2hhciAqIHNyYywgaW50
IGluZGV4KTsKICAgIFRjbF9VbmlDaGFyICgqdGNsX1VuaUNoYXJUb0xvd2VyKSAoaW50IGNoKTsK
ICAgIFRjbF9VbmlDaGFyICgqdGNsX1VuaUNoYXJUb1RpdGxlKSAoaW50IGNoKTsKICAgIFRjbF9V
bmlDaGFyICgqdGNsX1VuaUNoYXJUb1VwcGVyKSAoaW50IGNoKTsKICAgIGludCAoKnRjbF9VbmlD
aGFyVG9VdGYpIChpbnQgY2gsIGNoYXIgKiBidWYpOwogICAgY2hhciAqICgqdGNsX1V0ZkF0SW5k
ZXgpIChjb25zdCBjaGFyICogc3JjLCBpbnQgaW5kZXgpOwogICAgaW50ICgqdGNsX1V0ZkNoYXJD
b21wbGV0ZSkgKGNvbnN0IGNoYXIgKiBzcmMsIGludCBsZW4pOwogICAgaW50ICgqdGNsX1V0ZkJh
Y2tzbGFzaCkgKGNvbnN0IGNoYXIgKiBzcmMsIGludCAqIHJlYWRQdHIsIGNoYXIgKiBkc3QpOwog
ICAgY2hhciAqICgqdGNsX1V0ZkZpbmRGaXJzdCkgKGNvbnN0IGNoYXIgKiBzcmMsIGludCBjaCk7
CiAgICBjaGFyICogKCp0Y2xfVXRmRmluZExhc3QpIChjb25zdCBjaGFyICogc3JjLCBpbnQgY2gp
OwogICAgY2hhciAqICgqdGNsX1V0Zk5leHQpIChjb25zdCBjaGFyICogc3JjKTsKICAgIGNoYXIg
KiAoKnRjbF9VdGZQcmV2KSAoY29uc3QgY2hhciAqIHNyYywgY29uc3QgY2hhciAqIHN0YXJ0KTsK
ICAgIGludCAoKnRjbF9VdGZUb0V4dGVybmFsKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX0Vu
Y29kaW5nIGVuY29kaW5nLCBjb25zdCBjaGFyICogc3JjLCBpbnQgc3JjTGVuLCBpbnQgZmxhZ3Ms
IFRjbF9FbmNvZGluZ1N0YXRlICogc3RhdGVQdHIsIGNoYXIgKiBkc3QsIGludCBkc3RMZW4sIGlu
dCAqIHNyY1JlYWRQdHIsIGludCAqIGRzdFdyb3RlUHRyLCBpbnQgKiBkc3RDaGFyc1B0cik7CiAg
ICBjaGFyICogKCp0Y2xfVXRmVG9FeHRlcm5hbERTdHJpbmcpIChUY2xfRW5jb2RpbmcgZW5jb2Rp
bmcsIGNvbnN0IGNoYXIgKiBzcmMsIGludCBzcmNMZW4sIFRjbF9EU3RyaW5nICogZHNQdHIpOwog
ICAgaW50ICgqdGNsX1V0ZlRvTG93ZXIpIChjaGFyICogc3JjKTsKICAgIGludCAoKnRjbF9VdGZU
b1RpdGxlKSAoY2hhciAqIHNyYyk7CiAgICBpbnQgKCp0Y2xfVXRmVG9VbmlDaGFyKSAoY29uc3Qg
Y2hhciAqIHNyYywgVGNsX1VuaUNoYXIgKiBjaFB0cik7CiAgICBpbnQgKCp0Y2xfVXRmVG9VcHBl
cikgKGNoYXIgKiBzcmMpOwogICAgaW50ICgqdGNsX1dyaXRlQ2hhcnMpIChUY2xfQ2hhbm5lbCBj
aGFuLCBjb25zdCBjaGFyICogc3JjLCBpbnQgc3JjTGVuKTsKICAgIGludCAoKnRjbF9Xcml0ZU9i
aikgKFRjbF9DaGFubmVsIGNoYW4sIFRjbF9PYmogKiBvYmpQdHIpOwogICAgY2hhciAqICgqdGNs
X0dldFN0cmluZykgKFRjbF9PYmogKiBvYmpQdHIpOwogICAgY2hhciAqICgqdGNsX0dldERlZmF1
bHRFbmNvZGluZ0RpcikgKHZvaWQpOwogICAgdm9pZCAoKnRjbF9TZXREZWZhdWx0RW5jb2RpbmdE
aXIpIChjaGFyICogcGF0aCk7CiAgICB2b2lkICgqdGNsX0FsZXJ0Tm90aWZpZXIpIChDbGllbnRE
YXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9TZXJ2aWNlTW9kZUhvb2spIChpbnQgbW9k
ZSk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzQWxudW0pIChpbnQgY2gpOwogICAgaW50ICgqdGNs
X1VuaUNoYXJJc0FscGhhKSAoaW50IGNoKTsKICAgIGludCAoKnRjbF9VbmlDaGFySXNEaWdpdCkg
KGludCBjaCk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzTG93ZXIpIChpbnQgY2gpOwogICAgaW50
ICgqdGNsX1VuaUNoYXJJc1NwYWNlKSAoaW50IGNoKTsKICAgIGludCAoKnRjbF9VbmlDaGFySXNV
cHBlcikgKGludCBjaCk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzV29yZENoYXIpIChpbnQgY2gp
OwogICAgaW50ICgqdGNsX1VuaUNoYXJMZW4pIChUY2xfVW5pQ2hhciAqIHN0cik7CiAgICBpbnQg
KCp0Y2xfVW5pQ2hhck5jbXApIChjb25zdCBUY2xfVW5pQ2hhciAqIGNzLCBjb25zdCBUY2xfVW5p
Q2hhciAqIGN0LCB1bnNpZ25lZCBsb25nIG4pOwogICAgY2hhciAqICgqdGNsX1VuaUNoYXJUb1V0
ZkRTdHJpbmcpIChjb25zdCBUY2xfVW5pQ2hhciAqIHN0cmluZywgaW50IG51bUNoYXJzLCBUY2xf
RFN0cmluZyAqIGRzUHRyKTsKICAgIFRjbF9VbmlDaGFyICogKCp0Y2xfVXRmVG9VbmlDaGFyRFN0
cmluZykgKGNvbnN0IGNoYXIgKiBzdHJpbmcsIGludCBsZW5ndGgsIFRjbF9EU3RyaW5nICogZHNQ
dHIpOwogICAgVGNsX1JlZ0V4cCAoKnRjbF9HZXRSZWdFeHBGcm9tT2JqKSAoVGNsX0ludGVycCAq
IGludGVycCwgVGNsX09iaiAqIHBhdE9iaiwgaW50IGZsYWdzKTsKICAgIFRjbF9PYmogKiAoKnRj
bF9FdmFsVG9rZW5zKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX1Rva2VuICogdG9rZW5QdHIs
IGludCBjb3VudCk7CiAgICB2b2lkICgqdGNsX0ZyZWVQYXJzZSkgKFRjbF9QYXJzZSAqIHBhcnNl
UHRyKTsKICAgIHZvaWQgKCp0Y2xfTG9nQ29tbWFuZEluZm8pIChUY2xfSW50ZXJwICogaW50ZXJw
LCBjaGFyICogc2NyaXB0LCBjaGFyICogY29tbWFuZCwgaW50IGxlbmd0aCk7CiAgICBpbnQgKCp0
Y2xfUGFyc2VCcmFjZXMpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3RyaW5nLCBpbnQg
bnVtQnl0ZXMsIFRjbF9QYXJzZSAqIHBhcnNlUHRyLCBpbnQgYXBwZW5kLCBjaGFyICoqIHRlcm1Q
dHIpOwogICAgaW50ICgqdGNsX1BhcnNlQ29tbWFuZCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNo
YXIgKiBzdHJpbmcsIGludCBudW1CeXRlcywgaW50IG5lc3RlZCwgVGNsX1BhcnNlICogcGFyc2VQ
dHIpOwogICAgaW50ICgqdGNsX1BhcnNlRXhwcikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIg
KiBzdHJpbmcsIGludCBudW1CeXRlcywgVGNsX1BhcnNlICogcGFyc2VQdHIpOwogICAgaW50ICgq
dGNsX1BhcnNlUXVvdGVkU3RyaW5nKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0cmlu
ZywgaW50IG51bUJ5dGVzLCBUY2xfUGFyc2UgKiBwYXJzZVB0ciwgaW50IGFwcGVuZCwgY2hhciAq
KiB0ZXJtUHRyKTsKICAgIGludCAoKnRjbF9QYXJzZVZhck5hbWUpIChUY2xfSW50ZXJwICogaW50
ZXJwLCBjaGFyICogc3RyaW5nLCBpbnQgbnVtQnl0ZXMsIFRjbF9QYXJzZSAqIHBhcnNlUHRyLCBp
bnQgYXBwZW5kKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRDd2QpIChUY2xfSW50ZXJwICogaW50ZXJw
LCBUY2xfRFN0cmluZyAqIGN3ZFB0cik7CiAgICBpbnQgKCp0Y2xfQ2hkaXIpIChjb25zdCBjaGFy
ICogZGlyTmFtZSk7CiAgICBpbnQgKCp0Y2xfQWNjZXNzKSAoY29uc3QgY2hhciAqIHBhdGgsIGlu
dCBtb2RlKTsKICAgIGludCAoKnRjbF9TdGF0KSAoY29uc3QgY2hhciAqIHBhdGgsIHN0cnVjdCBz
dGF0ICogYnVmUHRyKTsKICAgIGludCAoKnRjbF9VdGZOY21wKSAoY29uc3QgY2hhciAqIHMxLCBj
b25zdCBjaGFyICogczIsIHVuc2lnbmVkIGxvbmcgbik7CiAgICBpbnQgKCp0Y2xfVXRmTmNhc2Vj
bXApIChjb25zdCBjaGFyICogczEsIGNvbnN0IGNoYXIgKiBzMiwgdW5zaWduZWQgbG9uZyBuKTsK
ICAgIGludCAoKnRjbF9TdHJpbmdDYXNlTWF0Y2gpIChjb25zdCBjaGFyICogc3RyLCBjb25zdCBj
aGFyICogcGF0dGVybiwgaW50IG5vY2FzZSk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzQ29udHJv
bCkgKGludCBjaCk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzR3JhcGgpIChpbnQgY2gpOwogICAg
aW50ICgqdGNsX1VuaUNoYXJJc1ByaW50KSAoaW50IGNoKTsKICAgIGludCAoKnRjbF9VbmlDaGFy
SXNQdW5jdCkgKGludCBjaCk7CiAgICBpbnQgKCp0Y2xfUmVnRXhwRXhlY09iaikgKFRjbF9JbnRl
cnAgKiBpbnRlcnAsIFRjbF9SZWdFeHAgcmVnZXhwLCBUY2xfT2JqICogb2JqUHRyLCBpbnQgb2Zm
c2V0LCBpbnQgbm1hdGNoZXMsIGludCBmbGFncyk7CiAgICB2b2lkICgqdGNsX1JlZ0V4cEdldElu
Zm8pIChUY2xfUmVnRXhwIHJlZ2V4cCwgVGNsX1JlZ0V4cEluZm8gKiBpbmZvUHRyKTsKICAgIFRj
bF9PYmogKiAoKnRjbF9OZXdVbmljb2RlT2JqKSAoVGNsX1VuaUNoYXIgKiB1bmljb2RlLCBpbnQg
bnVtQ2hhcnMpOwogICAgdm9pZCAoKnRjbF9TZXRVbmljb2RlT2JqKSAoVGNsX09iaiAqIG9ialB0
ciwgVGNsX1VuaUNoYXIgKiB1bmljb2RlLCBpbnQgbnVtQ2hhcnMpOwogICAgaW50ICgqdGNsX0dl
dENoYXJMZW5ndGgpIChUY2xfT2JqICogb2JqUHRyKTsKICAgIFRjbF9VbmlDaGFyICgqdGNsX0dl
dFVuaUNoYXIpIChUY2xfT2JqICogb2JqUHRyLCBpbnQgaW5kZXgpOwogICAgVGNsX1VuaUNoYXIg
KiAoKnRjbF9HZXRVbmljb2RlKSAoVGNsX09iaiAqIG9ialB0cik7CiAgICBUY2xfT2JqICogKCp0
Y2xfR2V0UmFuZ2UpIChUY2xfT2JqICogb2JqUHRyLCBpbnQgZmlyc3QsIGludCBsYXN0KTsKICAg
IHZvaWQgKCp0Y2xfQXBwZW5kVW5pY29kZVRvT2JqKSAoVGNsX09iaiAqIG9ialB0ciwgVGNsX1Vu
aUNoYXIgKiB1bmljb2RlLCBpbnQgbGVuZ3RoKTsKICAgIGludCAoKnRjbF9SZWdFeHBNYXRjaE9i
aikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBzdHJpbmdPYmosIFRjbF9PYmogKiBw
YXR0ZXJuT2JqKTsKICAgIHZvaWQgKCp0Y2xfU2V0Tm90aWZpZXIpIChUY2xfTm90aWZpZXJQcm9j
cyAqIG5vdGlmaWVyUHJvY1B0cik7CiAgICBUY2xfTXV0ZXggKiAoKnRjbF9HZXRBbGxvY011dGV4
KSAodm9pZCk7CiAgICBpbnQgKCp0Y2xfR2V0Q2hhbm5lbE5hbWVzKSAoVGNsX0ludGVycCAqIGlu
dGVycCk7CiAgICBpbnQgKCp0Y2xfR2V0Q2hhbm5lbE5hbWVzRXgpIChUY2xfSW50ZXJwICogaW50
ZXJwLCBjaGFyICogcGF0dGVybik7CiAgICBpbnQgKCp0Y2xfUHJvY09iakNtZCkgKENsaWVudERh
dGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqIGludGVycCwgaW50IG9iamMsIFRjbF9PYmogKmNv
bnN0IG9ianZbXSk7CiAgICB2b2lkICgqdGNsX0NvbmRpdGlvbkZpbmFsaXplKSAoVGNsX0NvbmRp
dGlvbiAqIGNvbmRQdHIpOwogICAgdm9pZCAoKnRjbF9NdXRleEZpbmFsaXplKSAoVGNsX011dGV4
ICogbXV0ZXgpOwogICAgaW50ICgqdGNsX0NyZWF0ZVRocmVhZCkgKFRjbF9UaHJlYWRJZCAqIGlk
UHRyLCBUY2xfVGhyZWFkQ3JlYXRlUHJvYyBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEsIGlu
dCBzdGFja1NpemUsIGludCBmbGFncyk7Cn0gVGNsU3R1YnM7CgoKZXh0ZXJuICJDIiB7CgpleHRl
cm4gVGNsU3R1YnMgKnRjbFN0dWJzUHRyOwoKfQojIDE2NTYgIi91c3IvaW5jbHVkZS90Y2wuaCIg
MiAzCgoKCgoKZXh0ZXJuICJDIiB2b2lkIFRjbF9NYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3Ys
IFRjbF9BcHBJbml0UHJvYyAqYXBwSW5pdFByb2MpOwojIDE2NzMgIi91c3IvaW5jbHVkZS90Y2wu
aCIgMwpleHRlcm4gIkMiIGludCBUY2xfQXBwSW5pdCAoVGNsX0ludGVycCAqaW50ZXJwKTsKIyAx
Njg1ICIvdXNyL2luY2x1ZGUvdGNsLmgiIDMKfQojIDExMSAidHV4cmFjZXIuaCIgMgojIDEyNCAi
dHV4cmFjZXIuaCIKIyAxICJ3aW5zeXMuaCIgMQojIDIyICJ3aW5zeXMuaCIKIyAxICJ0dXhyYWNl
ci5oIiAxCiMgMjMgIndpbnN5cy5oIiAyCiMgMSAidHV4X3R5cGVzLmgiIDEKIyAyMSAidHV4X3R5
cGVzLmgiCmV4dGVybiAiQyIKewoKCgoKCiMgMSAidHV4cmFjZXIuaCIgMQojIDI5ICJ0dXhfdHlw
ZXMuaCIgMgoKdHlwZWRlZiBkb3VibGUgc2NhbGFyX3Q7CiMgNDMgInR1eF90eXBlcy5oIgp0eXBl
ZGVmIGVudW0gewogICAgRmFsc2UgPSAwLAogICAgVHJ1ZSA9IDEKfSBib29sX3Q7Cgp0eXBlZGVm
IHN0cnVjdCB7CiAgICBzY2FsYXJfdCB4OwogICAgc2NhbGFyX3QgeTsKfSBwb2ludDJkX3Q7Cgp0
eXBlZGVmIHN0cnVjdCB7CiAgICBzY2FsYXJfdCB4OwogICAgc2NhbGFyX3QgeTsKICAgIHNjYWxh
cl90IHo7Cn0gcG9pbnRfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBpOwogICAgaW50IGo7
Cn0gaW5kZXgyZF90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgc2NhbGFyX3QgeDsKICAgIHNjYWxh
cl90IHk7CiAgICBzY2FsYXJfdCB6Owp9IHZlY3Rvcl90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAg
c2NhbGFyX3QgeDsKICAgIHNjYWxhcl90IHk7Cn0gdmVjdG9yMmRfdDsKCnR5cGVkZWYgc3RydWN0
IHsKICAgIHZlY3Rvcl90IG5tbDsKICAgIHNjYWxhcl90IGQ7Cn0gcGxhbmVfdDsKCnR5cGVkZWYg
c2NhbGFyX3QgbWF0cml4Z2xfdFs0XVs0XTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBudW1f
dmVydGljZXM7CiAgICBpbnQgKnZlcnRpY2VzOwp9IHBvbHlnb25fdDsKCnR5cGVkZWYgc3RydWN0
IHsKICAgIHBvaW50X3QgcFszXTsKICAgIHBvaW50MmRfdCB0WzNdOwp9IHRyaWFuZ2xlX3Q7Cgp0
eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgbnVtX3ZlcnRpY2VzOwogICAgaW50IG51bV9wb2x5Z29u
czsKICAgIHBvaW50X3QgKnZlcnRpY2VzOwogICAgcG9seWdvbl90ICpwb2x5Z29uczsKfSBwb2x5
aGVkcm9uX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgcG9pbnRfdCBwdDsKICAgIHZlY3Rvcl90
IHZlYzsKfSByYXlfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHBvaW50X3QgcHQ7CiAgICB2ZWN0
b3JfdCBubWw7Cn0gbGluZV90OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNjYWxhcl90IHg7CiAg
ICBzY2FsYXJfdCB5OwogICAgc2NhbGFyX3QgejsKICAgIHNjYWxhcl90IHc7Cn0gcXVhdGVybmlv
bl90OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNjYWxhcl90IHI7CiAgICBzY2FsYXJfdCBnOwog
ICAgc2NhbGFyX3QgYjsKICAgIHNjYWxhcl90IGE7Cn0gY29sb3VyX3Q7CgoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgY29sb3VyX3QgZGlmZnVzZTsKICAgIGNvbG91cl90IHNwZWN1bGFyX2NvbG91cjsK
ICAgIGRvdWJsZSBzcGVjdWxhcl9leHA7Cn0gbWF0ZXJpYWxfdDsKCgp0eXBlZGVmIHN0cnVjdCB7
CiAgICBib29sX3QgaXNfb247CiAgICBHTGZsb2F0IGFtYmllbnRbNF07CiAgICBHTGZsb2F0IGRp
ZmZ1c2VbNF07CiAgICBHTGZsb2F0IHNwZWN1bGFyWzRdOwogICAgR0xmbG9hdCBwb3NpdGlvbls0
XTsKICAgIEdMZmxvYXQgc3BvdF9kaXJlY3Rpb25bM107CiAgICBHTGZsb2F0IHNwb3RfZXhwb25l
bnQ7CiAgICBHTGZsb2F0IHNwb3RfY3V0b2ZmOwogICAgR0xmbG9hdCBjb25zdGFudF9hdHRlbnVh
dGlvbjsKICAgIEdMZmxvYXQgbGluZWFyX2F0dGVudWF0aW9uOwogICAgR0xmbG9hdCBxdWFkcmF0
aWNfYXR0ZW51YXRpb247Cn0gbGlnaHRfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBzY2FsYXJf
dCB0aW1lOwogICAgcG9pbnRfdCBwb3M7CiAgICBzY2FsYXJfdCB5YXc7CiAgICBzY2FsYXJfdCBw
aXRjaDsKICAgIHNjYWxhcl90IGxfc2hsZHI7CiAgICBzY2FsYXJfdCByX3NobGRyOwogICAgc2Nh
bGFyX3QgbF9oaXA7CiAgICBzY2FsYXJfdCByX2hpcDsKfSBrZXlfZnJhbWVfdDsKCgp0eXBlZGVm
IGVudW0gewogICAgRW1wdHksIFNwaGVyZQp9IGdlb21ldHJ5X3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgZG91YmxlIHJhZGl1czsKCgogICAgaW50IGRpdmlzaW9uczsKfSBzcGhlcmVfdDsKCgp0
eXBlZGVmIGVudW0gewogICAgVHV4TGVmdEV5ZSA9IDAsCiAgICBUdXhSaWdodEV5ZSA9IDEKfSB0
dXhfZXllX3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2NlbmVfbm9kZV9zdHJ1Y3QgewogICAgc3RydWN0
IHNjZW5lX25vZGVfc3RydWN0KiBwYXJlbnQ7CiAgICBzdHJ1Y3Qgc2NlbmVfbm9kZV9zdHJ1Y3Qq
IG5leHQ7CiAgICBzdHJ1Y3Qgc2NlbmVfbm9kZV9zdHJ1Y3QqIGNoaWxkOwoKICAgIGdlb21ldHJ5
X3QgZ2VvbTsKCiAgICB1bmlvbiB7CiAgICAgICAgc3BoZXJlX3Qgc3BoZXJlOwogICAgfSBwYXJh
bTsKCiAgICBtYXRlcmlhbF90KiBtYXQ7CgoKCiAgICBib29sX3QgcmVuZGVyX3NoYWRvdzsKCgog
ICAgYm9vbF90IGV5ZTsKCgogICAgdHV4X2V5ZV90IHdoaWNoX2V5ZTsKCgogICAgbWF0cml4Z2xf
dCB0cmFuczsKICAgIG1hdHJpeGdsX3QgaW52dHJhbnM7CgoKICAgIGNoYXIgKm5hbWU7Cn0gc2Nl
bmVfbm9kZV90OwoKdHlwZWRlZiBlbnVtIHsKICAgIEljZSA9IDAsCiAgICBSb2NrID0gMSwKICAg
IFNub3cgPSAyLAogICAgTnVtVGVycmFpbnMKfSB0ZXJyYWluX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICByYXlfdCByYXk7CiAgICBzY2FsYXJfdCBoZWlnaHQ7CiAgICBzY2FsYXJfdCBkaWFtOwog
ICAgaW50IHRyZWVfdHlwZTsKfSB0cmVlX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICByYXlfdCBy
YXk7CiAgICBzY2FsYXJfdCBoZWlnaHQ7CiAgICBzY2FsYXJfdCBkaWFtOwogICAgaW50IGl0ZW1f
dHlwZTsKICAgIGludCBjb2xsZWN0YWJsZTsKICAgIGJvb2xfdCBkcmF3YWJsZTsKfSBpdGVtX3Q7
CgoKCgp9CiMgMjQgIndpbnN5cy5oIiAyCgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETC5oIiAx
CiMgMzMgIi91c3IvaW5jbHVkZS9TREwvU0RMLmgiCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9TRExf
bWFpbi5oIiAxCiMgMzQgIi91c3IvaW5jbHVkZS9TREwvU0RMLmgiIDIKIyAxICIvdXNyL2luY2x1
ZGUvU0RML1NETF90eXBlcy5oIiAxCiMgMzcgIi91c3IvaW5jbHVkZS9TREwvU0RMX3R5cGVzLmgi
CnR5cGVkZWYgZW51bSB7CiAgICAgICAgU0RMX0ZBTFNFID0gMCwKICAgICAgICBTRExfVFJVRSA9
IDEKfSBTRExfYm9vbDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVpbnQ4Owp0eXBlZGVmIHNpZ25l
ZCBjaGFyIFNpbnQ4Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFVpbnQxNjsKdHlwZWRlZiBzaWdu
ZWQgc2hvcnQgU2ludDE2Owp0eXBlZGVmIHVuc2lnbmVkIGludCBVaW50MzI7CnR5cGVkZWYgc2ln
bmVkIGludCBTaW50MzI7CiMgNTkgIi91c3IvaW5jbHVkZS9TREwvU0RMX3R5cGVzLmgiCnR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIFVpbnQ2NDsKdHlwZWRlZiBsb25nIGxvbmcgU2ludDY0Owoj
IDczICIvdXNyL2luY2x1ZGUvU0RML1NETF90eXBlcy5oIgp0eXBlZGVmIGludCBTRExfZHVtbXlf
dWludDhbKHNpemVvZihVaW50OCkgPT0gMSkgKiAyIC0gMV07CnR5cGVkZWYgaW50IFNETF9kdW1t
eV9zaW50OFsoc2l6ZW9mKFNpbnQ4KSA9PSAxKSAqIDIgLSAxXTsKdHlwZWRlZiBpbnQgU0RMX2R1
bW15X3VpbnQxNlsoc2l6ZW9mKFVpbnQxNikgPT0gMikgKiAyIC0gMV07CnR5cGVkZWYgaW50IFNE
TF9kdW1teV9zaW50MTZbKHNpemVvZihTaW50MTYpID09IDIpICogMiAtIDFdOwp0eXBlZGVmIGlu
dCBTRExfZHVtbXlfdWludDMyWyhzaXplb2YoVWludDMyKSA9PSA0KSAqIDIgLSAxXTsKdHlwZWRl
ZiBpbnQgU0RMX2R1bW15X3NpbnQzMlsoc2l6ZW9mKFNpbnQzMikgPT0gNCkgKiAyIC0gMV07CnR5
cGVkZWYgaW50IFNETF9kdW1teV91aW50NjRbKHNpemVvZihVaW50NjQpID09IDgpICogMiAtIDFd
Owp0eXBlZGVmIGludCBTRExfZHVtbXlfc2ludDY0WyhzaXplb2YoU2ludDY0KSA9PSA4KSAqIDIg
LSAxXTsKCgoKCmVudW0geyBTRExfUFJFU1NFRCA9IDB4MDEsIFNETF9SRUxFQVNFRCA9IDB4MDAg
fTsKIyAzNSAiL3Vzci9pbmNsdWRlL1NETC9TREwuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwv
U0RMX2dldGVudi5oIiAxCiMgMzYgIi91c3IvaW5jbHVkZS9TREwvU0RMLmgiIDIKIyAxICIvdXNy
L2luY2x1ZGUvU0RML1NETF9lcnJvci5oIiAxCiMgMzMgIi91c3IvaW5jbHVkZS9TREwvU0RMX2Vy
cm9yLmgiCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9iZWdpbl9jb2RlLmgiIDEKIyAzNCAiL3Vzci9p
bmNsdWRlL1NETC9TRExfZXJyb3IuaCIgMgoKCmV4dGVybiAiQyIgewoKCgpleHRlcm4gdm9pZCBT
RExfU2V0RXJyb3IoY29uc3QgY2hhciAqZm10LCAuLi4pOwpleHRlcm4gY2hhciAqIFNETF9HZXRF
cnJvcih2b2lkKTsKZXh0ZXJuIHZvaWQgU0RMX0NsZWFyRXJyb3Iodm9pZCk7CgoKCnR5cGVkZWYg
ZW51bSB7CiAgICAgICAgU0RMX0VOT01FTSwKICAgICAgICBTRExfRUZSRUFELAogICAgICAgIFNE
TF9FRldSSVRFLAogICAgICAgIFNETF9FRlNFRUssCiAgICAgICAgU0RMX0xBU1RFUlJPUgp9IFNE
TF9lcnJvcmNvZGU7CmV4dGVybiB2b2lkIFNETF9FcnJvcihTRExfZXJyb3Jjb2RlIGNvZGUpOwoK
CgoKfQoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2Nsb3NlX2NvZGUuaCIgMQojIDYxICIvdXNyL2lu
Y2x1ZGUvU0RML1NETF9lcnJvci5oIiAyCiMgMzcgIi91c3IvaW5jbHVkZS9TREwvU0RMLmgiIDIK
IyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9yd29wcy5oIiAxCiMgMzUgIi91c3IvaW5jbHVkZS9T
REwvU0RMX3J3b3BzLmgiCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzNiAiL3Vzci9pbmNsdWRlL1NETC9TRExf
cndvcHMuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF90eXBlcy5oIiAxCiMgMzggIi91
c3IvaW5jbHVkZS9TREwvU0RMX3J3b3BzLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9iZWdp
bl9jb2RlLmgiIDEKIyA0MCAiL3Vzci9pbmNsdWRlL1NETC9TRExfcndvcHMuaCIgMgoKCmV4dGVy
biAiQyIgewoKCgoKdHlwZWRlZiBzdHJ1Y3QgU0RMX1JXb3BzIHsKCgoKCiAgICAgICAgaW50ICgq
c2Vlaykoc3RydWN0IFNETF9SV29wcyAqY29udGV4dCwgaW50IG9mZnNldCwgaW50IHdoZW5jZSk7
CgoKCgoKICAgICAgICBpbnQgKCpyZWFkKShzdHJ1Y3QgU0RMX1JXb3BzICpjb250ZXh0LCB2b2lk
ICpwdHIsIGludCBzaXplLCBpbnQgbWF4bnVtKTsKCgoKCgogICAgICAgIGludCAoKndyaXRlKShz
dHJ1Y3QgU0RMX1JXb3BzICpjb250ZXh0LCBjb25zdCB2b2lkICpwdHIsIGludCBzaXplLCBpbnQg
bnVtKTsKCgogICAgICAgIGludCAoKmNsb3NlKShzdHJ1Y3QgU0RMX1JXb3BzICpjb250ZXh0KTsK
CiAgICAgICAgVWludDMyIHR5cGU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgaW50IGF1dG9jbG9zZTsKICAgICAgICAgICAgICAgIEZJTEUgKmZw
OwogICAgICAgICAgICB9IHN0ZGlvOwogICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgVWludDggKmJhc2U7CiAgICAgICAgICAgICAgICBVaW50OCAqaGVyZTsKICAgICAgICAgICAg
ICAgIFVpbnQ4ICpzdG9wOwogICAgICAgICAgICB9IG1lbTsKICAgICAgICAgICAgc3RydWN0IHsK
ICAgICAgICAgICAgICAgIHZvaWQgKmRhdGExOwogICAgICAgICAgICB9IHVua25vd247CiAgICAg
ICAgfSBoaWRkZW47Cgp9IFNETF9SV29wczsKCgoKCmV4dGVybiBTRExfUldvcHMgKiBTRExfUldG
cm9tRmlsZShjb25zdCBjaGFyICpmaWxlLCBjb25zdCBjaGFyICptb2RlKTsKCmV4dGVybiBTRExf
UldvcHMgKiBTRExfUldGcm9tRlAoRklMRSAqZnAsIGludCBhdXRvY2xvc2UpOwoKZXh0ZXJuIFNE
TF9SV29wcyAqIFNETF9SV0Zyb21NZW0odm9pZCAqbWVtLCBpbnQgc2l6ZSk7CgpleHRlcm4gU0RM
X1JXb3BzICogU0RMX0FsbG9jUlcodm9pZCk7CmV4dGVybiB2b2lkIFNETF9GcmVlUlcoU0RMX1JX
b3BzICphcmVhKTsKIyAxMDkgIi91c3IvaW5jbHVkZS9TREwvU0RMX3J3b3BzLmgiCn0KCiMgMSAi
L3Vzci9pbmNsdWRlL1NETC9jbG9zZV9jb2RlLmgiIDEKIyAxMTIgIi91c3IvaW5jbHVkZS9TREwv
U0RMX3J3b3BzLmgiIDIKIyAzOCAiL3Vzci9pbmNsdWRlL1NETC9TREwuaCIgMgojIDEgIi91c3Iv
aW5jbHVkZS9TREwvU0RMX3RpbWVyLmgiIDEKIyAzMyAiL3Vzci9pbmNsdWRlL1NETC9TRExfdGlt
ZXIuaCIKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9tYWluLmgiIDEKIyAzNCAiL3Vzci9pbmNs
dWRlL1NETC9TRExfdGltZXIuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX3R5cGVzLmgi
IDEKIyAzNSAiL3Vzci9pbmNsdWRlL1NETC9TRExfdGltZXIuaCIgMgoKIyAxICIvdXNyL2luY2x1
ZGUvU0RML2JlZ2luX2NvZGUuaCIgMQojIDM3ICIvdXNyL2luY2x1ZGUvU0RML1NETF90aW1lci5o
IiAyCgoKZXh0ZXJuICJDIiB7CiMgNTEgIi91c3IvaW5jbHVkZS9TREwvU0RMX3RpbWVyLmgiCmV4
dGVybiBVaW50MzIgU0RMX0dldFRpY2tzKHZvaWQpOwoKCmV4dGVybiB2b2lkIFNETF9EZWxheShV
aW50MzIgbXMpOwoKCnR5cGVkZWYgVWludDMyICgqU0RMX1RpbWVyQ2FsbGJhY2spKFVpbnQzMiBp
bnRlcnZhbCk7CiMgODUgIi91c3IvaW5jbHVkZS9TREwvU0RMX3RpbWVyLmgiCmV4dGVybiBpbnQg
U0RMX1NldFRpbWVyKFVpbnQzMiBpbnRlcnZhbCwgU0RMX1RpbWVyQ2FsbGJhY2sgY2FsbGJhY2sp
OwojIDk3ICIvdXNyL2luY2x1ZGUvU0RML1NETF90aW1lci5oIgp0eXBlZGVmIFVpbnQzMiAoKlNE
TF9OZXdUaW1lckNhbGxiYWNrKShVaW50MzIgaW50ZXJ2YWwsIHZvaWQgKnBhcmFtKTsKCgp0eXBl
ZGVmIHN0cnVjdCBfU0RMX1RpbWVySUQgKlNETF9UaW1lcklEOwoKCgoKZXh0ZXJuIFNETF9UaW1l
cklEIFNETF9BZGRUaW1lcihVaW50MzIgaW50ZXJ2YWwsIFNETF9OZXdUaW1lckNhbGxiYWNrIGNh
bGxiYWNrLCB2b2lkICpwYXJhbSk7CgoKCgpleHRlcm4gU0RMX2Jvb2wgU0RMX1JlbW92ZVRpbWVy
KFNETF9UaW1lcklEIHQpOwoKCgp9CgojIDEgIi91c3IvaW5jbHVkZS9TREwvY2xvc2VfY29kZS5o
IiAxCiMgMTE3ICIvdXNyL2luY2x1ZGUvU0RML1NETF90aW1lci5oIiAyCiMgMzkgIi91c3IvaW5j
bHVkZS9TREwvU0RMLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9hdWRpby5oIiAxCiMg
MzMgIi91c3IvaW5jbHVkZS9TREwvU0RMX2F1ZGlvLmgiCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzNCAiL3Vz
ci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9t
YWluLmgiIDEKIyAzNiAiL3Vzci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIgMgojIDEgIi91c3Iv
aW5jbHVkZS9TREwvU0RMX3R5cGVzLmgiIDEKIyAzNyAiL3Vzci9pbmNsdWRlL1NETC9TRExfYXVk
aW8uaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX2Vycm9yLmgiIDEKIyAzOCAiL3Vzci9p
bmNsdWRlL1NETC9TRExfYXVkaW8uaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX3J3b3Bz
LmgiIDEKIyAzOSAiL3Vzci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIgMgojIDEgIi91c3IvaW5j
bHVkZS9TREwvU0RMX2J5dGVvcmRlci5oIiAxCiMgNDAgIi91c3IvaW5jbHVkZS9TREwvU0RMX2F1
ZGlvLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9iZWdpbl9jb2RlLmgiIDEKIyA0MiAiL3Vz
ci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIgMgoKCmV4dGVybiAiQyIgewoKCgp0eXBlZGVmIHN0
cnVjdCB7CiAgICAgICAgaW50IGZyZXE7CiAgICAgICAgVWludDE2IGZvcm1hdDsKICAgICAgICBV
aW50OCBjaGFubmVsczsKICAgICAgICBVaW50OCBzaWxlbmNlOwogICAgICAgIFVpbnQxNiBzYW1w
bGVzOwogICAgICAgIFVpbnQxNiBwYWRkaW5nOwogICAgICAgIFVpbnQzMiBzaXplOwoKCgoKCgog
ICAgICAgIHZvaWQgKCpjYWxsYmFjaykodm9pZCAqdXNlcmRhdGEsIFVpbnQ4ICpzdHJlYW0sIGlu
dCBsZW4pOwogICAgICAgIHZvaWQgKnVzZXJkYXRhOwp9IFNETF9BdWRpb1NwZWM7CiMgODcgIi91
c3IvaW5jbHVkZS9TREwvU0RMX2F1ZGlvLmgiCnR5cGVkZWYgc3RydWN0IFNETF9BdWRpb0NWVCB7
CiAgICAgICAgaW50IG5lZWRlZDsKICAgICAgICBVaW50MTYgc3JjX2Zvcm1hdDsKICAgICAgICBV
aW50MTYgZHN0X2Zvcm1hdDsKICAgICAgICBkb3VibGUgcmF0ZV9pbmNyOwogICAgICAgIFVpbnQ4
ICpidWY7CiAgICAgICAgaW50IGxlbjsKICAgICAgICBpbnQgbGVuX2N2dDsKICAgICAgICBpbnQg
bGVuX211bHQ7CiAgICAgICAgZG91YmxlIGxlbl9yYXRpbzsKICAgICAgICB2b2lkICgqZmlsdGVy
c1sxMF0pKHN0cnVjdCBTRExfQXVkaW9DVlQgKmN2dCwgVWludDE2IGZvcm1hdCk7CiAgICAgICAg
aW50IGZpbHRlcl9pbmRleDsKfSBTRExfQXVkaW9DVlQ7CiMgMTA4ICIvdXNyL2luY2x1ZGUvU0RM
L1NETF9hdWRpby5oIgpleHRlcm4gaW50IFNETF9BdWRpb0luaXQoY29uc3QgY2hhciAqZHJpdmVy
X25hbWUpOwpleHRlcm4gdm9pZCBTRExfQXVkaW9RdWl0KHZvaWQpOwoKCgoKCmV4dGVybiBjaGFy
ICpTRExfQXVkaW9Ecml2ZXJOYW1lKGNoYXIgKm5hbWVidWYsIGludCBtYXhsZW4pOwojIDE1OCAi
L3Vzci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIKZXh0ZXJuIGludCBTRExfT3BlbkF1ZGlvKFNE
TF9BdWRpb1NwZWMgKmRlc2lyZWQsIFNETF9BdWRpb1NwZWMgKm9idGFpbmVkKTsKCgoKCnR5cGVk
ZWYgZW51bSB7CiAgICAgICAgU0RMX0FVRElPX1NUT1BQRUQgPSAwLAogICAgICAgIFNETF9BVURJ
T19QTEFZSU5HLAogICAgICAgIFNETF9BVURJT19QQVVTRUQKfSBTRExfYXVkaW9zdGF0dXM7CmV4
dGVybiBTRExfYXVkaW9zdGF0dXMgU0RMX0dldEF1ZGlvU3RhdHVzKHZvaWQpOwojIDE3NyAiL3Vz
ci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIKZXh0ZXJuIHZvaWQgU0RMX1BhdXNlQXVkaW8oaW50
IHBhdXNlX29uKTsKIyAxOTYgIi91c3IvaW5jbHVkZS9TREwvU0RMX2F1ZGlvLmgiCmV4dGVybiBT
RExfQXVkaW9TcGVjICpTRExfTG9hZFdBVl9SVyhTRExfUldvcHMgKnNyYywgaW50IGZyZWVzcmMs
CiAgICAgICAgICAgICAgICAgU0RMX0F1ZGlvU3BlYyAqc3BlYywgVWludDggKiphdWRpb19idWYs
IFVpbnQzMiAqYXVkaW9fbGVuKTsKIyAyMDYgIi91c3IvaW5jbHVkZS9TREwvU0RMX2F1ZGlvLmgi
CmV4dGVybiB2b2lkIFNETF9GcmVlV0FWKFVpbnQ4ICphdWRpb19idWYpOwojIDIxNSAiL3Vzci9p
bmNsdWRlL1NETC9TRExfYXVkaW8uaCIKZXh0ZXJuIGludCBTRExfQnVpbGRBdWRpb0NWVChTRExf
QXVkaW9DVlQgKmN2dCwKICAgICAgICAgICAgICAgIFVpbnQxNiBzcmNfZm9ybWF0LCBVaW50OCBz
cmNfY2hhbm5lbHMsIGludCBzcmNfcmF0ZSwKICAgICAgICAgICAgICAgIFVpbnQxNiBkc3RfZm9y
bWF0LCBVaW50OCBkc3RfY2hhbm5lbHMsIGludCBkc3RfcmF0ZSk7CiMgMjI3ICIvdXNyL2luY2x1
ZGUvU0RML1NETF9hdWRpby5oIgpleHRlcm4gaW50IFNETF9Db252ZXJ0QXVkaW8oU0RMX0F1ZGlv
Q1ZUICpjdnQpOwojIDIzNyAiL3Vzci9pbmNsdWRlL1NETC9TRExfYXVkaW8uaCIKZXh0ZXJuIHZv
aWQgU0RMX01peEF1ZGlvKFVpbnQ4ICpkc3QsIFVpbnQ4ICpzcmMsIFVpbnQzMiBsZW4sIGludCB2
b2x1bWUpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgU0RMX0xvY2tBdWRpbyh2b2lkKTsKZXh0ZXJuIHZv
aWQgU0RMX1VubG9ja0F1ZGlvKHZvaWQpOwoKCgoKZXh0ZXJuIHZvaWQgU0RMX0Nsb3NlQXVkaW8o
dm9pZCk7CgoKCgp9CgojIDEgIi91c3IvaW5jbHVkZS9TREwvY2xvc2VfY29kZS5oIiAxCiMgMjU5
ICIvdXNyL2luY2x1ZGUvU0RML1NETF9hdWRpby5oIiAyCiMgNDAgIi91c3IvaW5jbHVkZS9TREwv
U0RMLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9jZHJvbS5oIiAxCiMgMzMgIi91c3Iv
aW5jbHVkZS9TREwvU0RMX2Nkcm9tLmgiCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9TRExfdHlwZXMu
aCIgMQojIDM0ICIvdXNyL2luY2x1ZGUvU0RML1NETF9jZHJvbS5oIiAyCgojIDEgIi91c3IvaW5j
bHVkZS9TREwvYmVnaW5fY29kZS5oIiAxCiMgMzYgIi91c3IvaW5jbHVkZS9TREwvU0RMX2Nkcm9t
LmgiIDIKCgpleHRlcm4gIkMiIHsKIyA1NCAiL3Vzci9pbmNsdWRlL1NETC9TRExfY2Ryb20uaCIK
dHlwZWRlZiBlbnVtIHsKICAgICAgICBDRF9UUkFZRU1QVFksCiAgICAgICAgQ0RfU1RPUFBFRCwK
ICAgICAgICBDRF9QTEFZSU5HLAogICAgICAgIENEX1BBVVNFRCwKICAgICAgICBDRF9FUlJPUiA9
IC0xCn0gQ0RzdGF0dXM7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgVWludDggaWQ7CiAg
ICAgICAgVWludDggdHlwZTsKICAgICAgICBVaW50MTYgdW51c2VkOwogICAgICAgIFVpbnQzMiBs
ZW5ndGg7CiAgICAgICAgVWludDMyIG9mZnNldDsKfSBTRExfQ0R0cmFjazsKCgp0eXBlZGVmIHN0
cnVjdCBTRExfQ0QgewogICAgICAgIGludCBpZDsKICAgICAgICBDRHN0YXR1cyBzdGF0dXM7CgoK
ICAgICAgICBpbnQgbnVtdHJhY2tzOwogICAgICAgIGludCBjdXJfdHJhY2s7CiAgICAgICAgaW50
IGN1cl9mcmFtZTsKICAgICAgICBTRExfQ0R0cmFjayB0cmFja1s5OSArMV07Cn0gU0RMX0NEOwoj
IDEwMiAiL3Vzci9pbmNsdWRlL1NETC9TRExfY2Ryb20uaCIKZXh0ZXJuIGludCBTRExfQ0ROdW1E
cml2ZXModm9pZCk7CgoKCgoKCgpleHRlcm4gY29uc3QgY2hhciAqIFNETF9DRE5hbWUoaW50IGRy
aXZlKTsKCgoKCgoKCmV4dGVybiBTRExfQ0QgKiBTRExfQ0RPcGVuKGludCBkcml2ZSk7CgoKCgoK
ZXh0ZXJuIENEc3RhdHVzIFNETF9DRFN0YXR1cyhTRExfQ0QgKmNkcm9tKTsKIyAxNDUgIi91c3Iv
aW5jbHVkZS9TREwvU0RMX2Nkcm9tLmgiCmV4dGVybiBpbnQgU0RMX0NEUGxheVRyYWNrcyhTRExf
Q0QgKmNkcm9tLAogICAgICAgICAgICAgICAgaW50IHN0YXJ0X3RyYWNrLCBpbnQgc3RhcnRfZnJh
bWUsIGludCBudHJhY2tzLCBpbnQgbmZyYW1lcyk7CgoKCgpleHRlcm4gaW50IFNETF9DRFBsYXko
U0RMX0NEICpjZHJvbSwgaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKTsKCgpleHRlcm4gaW50IFNETF9D
RFBhdXNlKFNETF9DRCAqY2Ryb20pOwoKCmV4dGVybiBpbnQgU0RMX0NEUmVzdW1lKFNETF9DRCAq
Y2Ryb20pOwoKCmV4dGVybiBpbnQgU0RMX0NEU3RvcChTRExfQ0QgKmNkcm9tKTsKCgpleHRlcm4g
aW50IFNETF9DREVqZWN0KFNETF9DRCAqY2Ryb20pOwoKCmV4dGVybiB2b2lkIFNETF9DRENsb3Nl
KFNETF9DRCAqY2Ryb20pOwoKCgoKfQoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2Nsb3NlX2NvZGUu
aCIgMQojIDE3NCAiL3Vzci9pbmNsdWRlL1NETC9TRExfY2Ryb20uaCIgMgojIDQxICIvdXNyL2lu
Y2x1ZGUvU0RML1NETC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9TRExfam95c3RpY2suaCIg
MQojIDMzICIvdXNyL2luY2x1ZGUvU0RML1NETF9qb3lzdGljay5oIgojIDEgIi91c3IvaW5jbHVk
ZS9TREwvU0RMX3R5cGVzLmgiIDEKIyAzNCAiL3Vzci9pbmNsdWRlL1NETC9TRExfam95c3RpY2su
aCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2JlZ2luX2NvZGUuaCIgMQojIDM2ICIvdXNyL2lu
Y2x1ZGUvU0RML1NETF9qb3lzdGljay5oIiAyCgoKZXh0ZXJuICJDIiB7CiMgNDcgIi91c3IvaW5j
bHVkZS9TREwvU0RMX2pveXN0aWNrLmgiCnN0cnVjdCBfU0RMX0pveXN0aWNrOwp0eXBlZGVmIHN0
cnVjdCBfU0RMX0pveXN0aWNrIFNETF9Kb3lzdGljazsKCgoKCgoKZXh0ZXJuIGludCBTRExfTnVt
Sm95c3RpY2tzKHZvaWQpOwoKCgoKCgpleHRlcm4gY29uc3QgY2hhciAqU0RMX0pveXN0aWNrTmFt
ZShpbnQgZGV2aWNlX2luZGV4KTsKIyA3MSAiL3Vzci9pbmNsdWRlL1NETC9TRExfam95c3RpY2su
aCIKZXh0ZXJuIFNETF9Kb3lzdGljayAqU0RMX0pveXN0aWNrT3BlbihpbnQgZGV2aWNlX2luZGV4
KTsKCgoKCmV4dGVybiBpbnQgU0RMX0pveXN0aWNrT3BlbmVkKGludCBkZXZpY2VfaW5kZXgpOwoK
CgoKZXh0ZXJuIGludCBTRExfSm95c3RpY2tJbmRleChTRExfSm95c3RpY2sgKmpveXN0aWNrKTsK
CgoKCmV4dGVybiBpbnQgU0RMX0pveXN0aWNrTnVtQXhlcyhTRExfSm95c3RpY2sgKmpveXN0aWNr
KTsKCgoKCgoKZXh0ZXJuIGludCBTRExfSm95c3RpY2tOdW1CYWxscyhTRExfSm95c3RpY2sgKmpv
eXN0aWNrKTsKCgoKCmV4dGVybiBpbnQgU0RMX0pveXN0aWNrTnVtSGF0cyhTRExfSm95c3RpY2sg
KmpveXN0aWNrKTsKCgoKCmV4dGVybiBpbnQgU0RMX0pveXN0aWNrTnVtQnV0dG9ucyhTRExfSm95
c3RpY2sgKmpveXN0aWNrKTsKCgoKCgoKZXh0ZXJuIHZvaWQgU0RMX0pveXN0aWNrVXBkYXRlKHZv
aWQpOwojIDExOSAiL3Vzci9pbmNsdWRlL1NETC9TRExfam95c3RpY2suaCIKZXh0ZXJuIGludCBT
RExfSm95c3RpY2tFdmVudFN0YXRlKGludCBzdGF0ZSk7CgoKCgoKCmV4dGVybiBTaW50MTYgU0RM
X0pveXN0aWNrR2V0QXhpcyhTRExfSm95c3RpY2sgKmpveXN0aWNrLCBpbnQgYXhpcyk7CiMgMTQ0
ICIvdXNyL2luY2x1ZGUvU0RML1NETF9qb3lzdGljay5oIgpleHRlcm4gVWludDggU0RMX0pveXN0
aWNrR2V0SGF0KFNETF9Kb3lzdGljayAqam95c3RpY2ssIGludCBoYXQpOwoKCgoKCgpleHRlcm4g
aW50IFNETF9Kb3lzdGlja0dldEJhbGwoU0RMX0pveXN0aWNrICpqb3lzdGljaywgaW50IGJhbGws
IGludCAqZHgsIGludCAqZHkpOwoKCgoKCmV4dGVybiBVaW50OCBTRExfSm95c3RpY2tHZXRCdXR0
b24oU0RMX0pveXN0aWNrICpqb3lzdGljaywgaW50IGJ1dHRvbik7CgoKCgpleHRlcm4gdm9pZCBT
RExfSm95c3RpY2tDbG9zZShTRExfSm95c3RpY2sgKmpveXN0aWNrKTsKCgoKCn0KCiMgMSAiL3Vz
ci9pbmNsdWRlL1NETC9jbG9zZV9jb2RlLmgiIDEKIyAxNzAgIi91c3IvaW5jbHVkZS9TREwvU0RM
X2pveXN0aWNrLmgiIDIKIyA0MiAiL3Vzci9pbmNsdWRlL1NETC9TREwuaCIgMgojIDEgIi91c3Iv
aW5jbHVkZS9TREwvU0RMX2V2ZW50cy5oIiAxCiMgMzMgIi91c3IvaW5jbHVkZS9TREwvU0RMX2V2
ZW50cy5oIgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX3R5cGVzLmgiIDEKIyAzNCAiL3Vzci9p
bmNsdWRlL1NETC9TRExfZXZlbnRzLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9hY3Rp
dmUuaCIgMQojIDMzICIvdXNyL2luY2x1ZGUvU0RML1NETF9hY3RpdmUuaCIKIyAxICIvdXNyL2lu
Y2x1ZGUvU0RML2JlZ2luX2NvZGUuaCIgMQojIDM0ICIvdXNyL2luY2x1ZGUvU0RML1NETF9hY3Rp
dmUuaCIgMgoKCmV4dGVybiAiQyIgewojIDUxICIvdXNyL2luY2x1ZGUvU0RML1NETF9hY3RpdmUu
aCIKZXh0ZXJuIFVpbnQ4IFNETF9HZXRBcHBTdGF0ZSh2b2lkKTsKCgoKCn0KCiMgMSAiL3Vzci9p
bmNsdWRlL1NETC9jbG9zZV9jb2RlLmgiIDEKIyA1OSAiL3Vzci9pbmNsdWRlL1NETC9TRExfYWN0
aXZlLmgiIDIKIyAzNSAiL3Vzci9pbmNsdWRlL1NETC9TRExfZXZlbnRzLmgiIDIKIyAxICIvdXNy
L2luY2x1ZGUvU0RML1NETF9rZXlib2FyZC5oIiAxCiMgMzMgIi91c3IvaW5jbHVkZS9TREwvU0RM
X2tleWJvYXJkLmgiCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9TRExfdHlwZXMuaCIgMQojIDM0ICIv
dXNyL2luY2x1ZGUvU0RML1NETF9rZXlib2FyZC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9T
RExfa2V5c3ltLmgiIDEKIyAzNyAiL3Vzci9pbmNsdWRlL1NETC9TRExfa2V5c3ltLmgiCnR5cGVk
ZWYgZW51bSB7CgogICAgICAgIFNETEtfVU5LTk9XTiA9IDAsCiAgICAgICAgU0RMS19GSVJTVCA9
IDAsCiAgICAgICAgU0RMS19CQUNLU1BBQ0UgPSA4LAogICAgICAgIFNETEtfVEFCID0gOSwKICAg
ICAgICBTRExLX0NMRUFSID0gMTIsCiAgICAgICAgU0RMS19SRVRVUk4gPSAxMywKICAgICAgICBT
RExLX1BBVVNFID0gMTksCiAgICAgICAgU0RMS19FU0NBUEUgPSAyNywKICAgICAgICBTRExLX1NQ
QUNFID0gMzIsCiAgICAgICAgU0RMS19FWENMQUlNID0gMzMsCiAgICAgICAgU0RMS19RVU9URURC
TCA9IDM0LAogICAgICAgIFNETEtfSEFTSCA9IDM1LAogICAgICAgIFNETEtfRE9MTEFSID0gMzYs
CiAgICAgICAgU0RMS19BTVBFUlNBTkQgPSAzOCwKICAgICAgICBTRExLX1FVT1RFID0gMzksCiAg
ICAgICAgU0RMS19MRUZUUEFSRU4gPSA0MCwKICAgICAgICBTRExLX1JJR0hUUEFSRU4gPSA0MSwK
ICAgICAgICBTRExLX0FTVEVSSVNLID0gNDIsCiAgICAgICAgU0RMS19QTFVTID0gNDMsCiAgICAg
ICAgU0RMS19DT01NQSA9IDQ0LAogICAgICAgIFNETEtfTUlOVVMgPSA0NSwKICAgICAgICBTRExL
X1BFUklPRCA9IDQ2LAogICAgICAgIFNETEtfU0xBU0ggPSA0NywKICAgICAgICBTRExLXzAgPSA0
OCwKICAgICAgICBTRExLXzEgPSA0OSwKICAgICAgICBTRExLXzIgPSA1MCwKICAgICAgICBTRExL
XzMgPSA1MSwKICAgICAgICBTRExLXzQgPSA1MiwKICAgICAgICBTRExLXzUgPSA1MywKICAgICAg
ICBTRExLXzYgPSA1NCwKICAgICAgICBTRExLXzcgPSA1NSwKICAgICAgICBTRExLXzggPSA1NiwK
ICAgICAgICBTRExLXzkgPSA1NywKICAgICAgICBTRExLX0NPTE9OID0gNTgsCiAgICAgICAgU0RM
S19TRU1JQ09MT04gPSA1OSwKICAgICAgICBTRExLX0xFU1MgPSA2MCwKICAgICAgICBTRExLX0VR
VUFMUyA9IDYxLAogICAgICAgIFNETEtfR1JFQVRFUiA9IDYyLAogICAgICAgIFNETEtfUVVFU1RJ
T04gPSA2MywKICAgICAgICBTRExLX0FUID0gNjQsCgoKCiAgICAgICAgU0RMS19MRUZUQlJBQ0tF
VCA9IDkxLAogICAgICAgIFNETEtfQkFDS1NMQVNIID0gOTIsCiAgICAgICAgU0RMS19SSUdIVEJS
QUNLRVQgPSA5MywKICAgICAgICBTRExLX0NBUkVUID0gOTQsCiAgICAgICAgU0RMS19VTkRFUlND
T1JFID0gOTUsCiAgICAgICAgU0RMS19CQUNLUVVPVEUgPSA5NiwKICAgICAgICBTRExLX2EgPSA5
NywKICAgICAgICBTRExLX2IgPSA5OCwKICAgICAgICBTRExLX2MgPSA5OSwKICAgICAgICBTRExL
X2QgPSAxMDAsCiAgICAgICAgU0RMS19lID0gMTAxLAogICAgICAgIFNETEtfZiA9IDEwMiwKICAg
ICAgICBTRExLX2cgPSAxMDMsCiAgICAgICAgU0RMS19oID0gMTA0LAogICAgICAgIFNETEtfaSA9
IDEwNSwKICAgICAgICBTRExLX2ogPSAxMDYsCiAgICAgICAgU0RMS19rID0gMTA3LAogICAgICAg
IFNETEtfbCA9IDEwOCwKICAgICAgICBTRExLX20gPSAxMDksCiAgICAgICAgU0RMS19uID0gMTEw
LAogICAgICAgIFNETEtfbyA9IDExMSwKICAgICAgICBTRExLX3AgPSAxMTIsCiAgICAgICAgU0RM
S19xID0gMTEzLAogICAgICAgIFNETEtfciA9IDExNCwKICAgICAgICBTRExLX3MgPSAxMTUsCiAg
ICAgICAgU0RMS190ID0gMTE2LAogICAgICAgIFNETEtfdSA9IDExNywKICAgICAgICBTRExLX3Yg
PSAxMTgsCiAgICAgICAgU0RMS193ID0gMTE5LAogICAgICAgIFNETEtfeCA9IDEyMCwKICAgICAg
ICBTRExLX3kgPSAxMjEsCiAgICAgICAgU0RMS196ID0gMTIyLAogICAgICAgIFNETEtfREVMRVRF
ID0gMTI3LAoKCgogICAgICAgIFNETEtfV09STERfMCA9IDE2MCwKICAgICAgICBTRExLX1dPUkxE
XzEgPSAxNjEsCiAgICAgICAgU0RMS19XT1JMRF8yID0gMTYyLAogICAgICAgIFNETEtfV09STERf
MyA9IDE2MywKICAgICAgICBTRExLX1dPUkxEXzQgPSAxNjQsCiAgICAgICAgU0RMS19XT1JMRF81
ID0gMTY1LAogICAgICAgIFNETEtfV09STERfNiA9IDE2NiwKICAgICAgICBTRExLX1dPUkxEXzcg
PSAxNjcsCiAgICAgICAgU0RMS19XT1JMRF84ID0gMTY4LAogICAgICAgIFNETEtfV09STERfOSA9
IDE2OSwKICAgICAgICBTRExLX1dPUkxEXzEwID0gMTcwLAogICAgICAgIFNETEtfV09STERfMTEg
PSAxNzEsCiAgICAgICAgU0RMS19XT1JMRF8xMiA9IDE3MiwKICAgICAgICBTRExLX1dPUkxEXzEz
ID0gMTczLAogICAgICAgIFNETEtfV09STERfMTQgPSAxNzQsCiAgICAgICAgU0RMS19XT1JMRF8x
NSA9IDE3NSwKICAgICAgICBTRExLX1dPUkxEXzE2ID0gMTc2LAogICAgICAgIFNETEtfV09STERf
MTcgPSAxNzcsCiAgICAgICAgU0RMS19XT1JMRF8xOCA9IDE3OCwKICAgICAgICBTRExLX1dPUkxE
XzE5ID0gMTc5LAogICAgICAgIFNETEtfV09STERfMjAgPSAxODAsCiAgICAgICAgU0RMS19XT1JM
RF8yMSA9IDE4MSwKICAgICAgICBTRExLX1dPUkxEXzIyID0gMTgyLAogICAgICAgIFNETEtfV09S
TERfMjMgPSAxODMsCiAgICAgICAgU0RMS19XT1JMRF8yNCA9IDE4NCwKICAgICAgICBTRExLX1dP
UkxEXzI1ID0gMTg1LAogICAgICAgIFNETEtfV09STERfMjYgPSAxODYsCiAgICAgICAgU0RMS19X
T1JMRF8yNyA9IDE4NywKICAgICAgICBTRExLX1dPUkxEXzI4ID0gMTg4LAogICAgICAgIFNETEtf
V09STERfMjkgPSAxODksCiAgICAgICAgU0RMS19XT1JMRF8zMCA9IDE5MCwKICAgICAgICBTRExL
X1dPUkxEXzMxID0gMTkxLAogICAgICAgIFNETEtfV09STERfMzIgPSAxOTIsCiAgICAgICAgU0RM
S19XT1JMRF8zMyA9IDE5MywKICAgICAgICBTRExLX1dPUkxEXzM0ID0gMTk0LAogICAgICAgIFNE
TEtfV09STERfMzUgPSAxOTUsCiAgICAgICAgU0RMS19XT1JMRF8zNiA9IDE5NiwKICAgICAgICBT
RExLX1dPUkxEXzM3ID0gMTk3LAogICAgICAgIFNETEtfV09STERfMzggPSAxOTgsCiAgICAgICAg
U0RMS19XT1JMRF8zOSA9IDE5OSwKICAgICAgICBTRExLX1dPUkxEXzQwID0gMjAwLAogICAgICAg
IFNETEtfV09STERfNDEgPSAyMDEsCiAgICAgICAgU0RMS19XT1JMRF80MiA9IDIwMiwKICAgICAg
ICBTRExLX1dPUkxEXzQzID0gMjAzLAogICAgICAgIFNETEtfV09STERfNDQgPSAyMDQsCiAgICAg
ICAgU0RMS19XT1JMRF80NSA9IDIwNSwKICAgICAgICBTRExLX1dPUkxEXzQ2ID0gMjA2LAogICAg
ICAgIFNETEtfV09STERfNDcgPSAyMDcsCiAgICAgICAgU0RMS19XT1JMRF80OCA9IDIwOCwKICAg
ICAgICBTRExLX1dPUkxEXzQ5ID0gMjA5LAogICAgICAgIFNETEtfV09STERfNTAgPSAyMTAsCiAg
ICAgICAgU0RMS19XT1JMRF81MSA9IDIxMSwKICAgICAgICBTRExLX1dPUkxEXzUyID0gMjEyLAog
ICAgICAgIFNETEtfV09STERfNTMgPSAyMTMsCiAgICAgICAgU0RMS19XT1JMRF81NCA9IDIxNCwK
ICAgICAgICBTRExLX1dPUkxEXzU1ID0gMjE1LAogICAgICAgIFNETEtfV09STERfNTYgPSAyMTYs
CiAgICAgICAgU0RMS19XT1JMRF81NyA9IDIxNywKICAgICAgICBTRExLX1dPUkxEXzU4ID0gMjE4
LAogICAgICAgIFNETEtfV09STERfNTkgPSAyMTksCiAgICAgICAgU0RMS19XT1JMRF82MCA9IDIy
MCwKICAgICAgICBTRExLX1dPUkxEXzYxID0gMjIxLAogICAgICAgIFNETEtfV09STERfNjIgPSAy
MjIsCiAgICAgICAgU0RMS19XT1JMRF82MyA9IDIyMywKICAgICAgICBTRExLX1dPUkxEXzY0ID0g
MjI0LAogICAgICAgIFNETEtfV09STERfNjUgPSAyMjUsCiAgICAgICAgU0RMS19XT1JMRF82NiA9
IDIyNiwKICAgICAgICBTRExLX1dPUkxEXzY3ID0gMjI3LAogICAgICAgIFNETEtfV09STERfNjgg
PSAyMjgsCiAgICAgICAgU0RMS19XT1JMRF82OSA9IDIyOSwKICAgICAgICBTRExLX1dPUkxEXzcw
ID0gMjMwLAogICAgICAgIFNETEtfV09STERfNzEgPSAyMzEsCiAgICAgICAgU0RMS19XT1JMRF83
MiA9IDIzMiwKICAgICAgICBTRExLX1dPUkxEXzczID0gMjMzLAogICAgICAgIFNETEtfV09STERf
NzQgPSAyMzQsCiAgICAgICAgU0RMS19XT1JMRF83NSA9IDIzNSwKICAgICAgICBTRExLX1dPUkxE
Xzc2ID0gMjM2LAogICAgICAgIFNETEtfV09STERfNzcgPSAyMzcsCiAgICAgICAgU0RMS19XT1JM
RF83OCA9IDIzOCwKICAgICAgICBTRExLX1dPUkxEXzc5ID0gMjM5LAogICAgICAgIFNETEtfV09S
TERfODAgPSAyNDAsCiAgICAgICAgU0RMS19XT1JMRF84MSA9IDI0MSwKICAgICAgICBTRExLX1dP
UkxEXzgyID0gMjQyLAogICAgICAgIFNETEtfV09STERfODMgPSAyNDMsCiAgICAgICAgU0RMS19X
T1JMRF84NCA9IDI0NCwKICAgICAgICBTRExLX1dPUkxEXzg1ID0gMjQ1LAogICAgICAgIFNETEtf
V09STERfODYgPSAyNDYsCiAgICAgICAgU0RMS19XT1JMRF84NyA9IDI0NywKICAgICAgICBTRExL
X1dPUkxEXzg4ID0gMjQ4LAogICAgICAgIFNETEtfV09STERfODkgPSAyNDksCiAgICAgICAgU0RM
S19XT1JMRF85MCA9IDI1MCwKICAgICAgICBTRExLX1dPUkxEXzkxID0gMjUxLAogICAgICAgIFNE
TEtfV09STERfOTIgPSAyNTIsCiAgICAgICAgU0RMS19XT1JMRF85MyA9IDI1MywKICAgICAgICBT
RExLX1dPUkxEXzk0ID0gMjU0LAogICAgICAgIFNETEtfV09STERfOTUgPSAyNTUsCgoKICAgICAg
ICBTRExLX0tQMCA9IDI1NiwKICAgICAgICBTRExLX0tQMSA9IDI1NywKICAgICAgICBTRExLX0tQ
MiA9IDI1OCwKICAgICAgICBTRExLX0tQMyA9IDI1OSwKICAgICAgICBTRExLX0tQNCA9IDI2MCwK
ICAgICAgICBTRExLX0tQNSA9IDI2MSwKICAgICAgICBTRExLX0tQNiA9IDI2MiwKICAgICAgICBT
RExLX0tQNyA9IDI2MywKICAgICAgICBTRExLX0tQOCA9IDI2NCwKICAgICAgICBTRExLX0tQOSA9
IDI2NSwKICAgICAgICBTRExLX0tQX1BFUklPRCA9IDI2NiwKICAgICAgICBTRExLX0tQX0RJVklE
RSA9IDI2NywKICAgICAgICBTRExLX0tQX01VTFRJUExZID0gMjY4LAogICAgICAgIFNETEtfS1Bf
TUlOVVMgPSAyNjksCiAgICAgICAgU0RMS19LUF9QTFVTID0gMjcwLAogICAgICAgIFNETEtfS1Bf
RU5URVIgPSAyNzEsCiAgICAgICAgU0RMS19LUF9FUVVBTFMgPSAyNzIsCgoKICAgICAgICBTRExL
X1VQID0gMjczLAogICAgICAgIFNETEtfRE9XTiA9IDI3NCwKICAgICAgICBTRExLX1JJR0hUID0g
Mjc1LAogICAgICAgIFNETEtfTEVGVCA9IDI3NiwKICAgICAgICBTRExLX0lOU0VSVCA9IDI3NywK
ICAgICAgICBTRExLX0hPTUUgPSAyNzgsCiAgICAgICAgU0RMS19FTkQgPSAyNzksCiAgICAgICAg
U0RMS19QQUdFVVAgPSAyODAsCiAgICAgICAgU0RMS19QQUdFRE9XTiA9IDI4MSwKCgogICAgICAg
IFNETEtfRjEgPSAyODIsCiAgICAgICAgU0RMS19GMiA9IDI4MywKICAgICAgICBTRExLX0YzID0g
Mjg0LAogICAgICAgIFNETEtfRjQgPSAyODUsCiAgICAgICAgU0RMS19GNSA9IDI4NiwKICAgICAg
ICBTRExLX0Y2ID0gMjg3LAogICAgICAgIFNETEtfRjcgPSAyODgsCiAgICAgICAgU0RMS19GOCA9
IDI4OSwKICAgICAgICBTRExLX0Y5ID0gMjkwLAogICAgICAgIFNETEtfRjEwID0gMjkxLAogICAg
ICAgIFNETEtfRjExID0gMjkyLAogICAgICAgIFNETEtfRjEyID0gMjkzLAogICAgICAgIFNETEtf
RjEzID0gMjk0LAogICAgICAgIFNETEtfRjE0ID0gMjk1LAogICAgICAgIFNETEtfRjE1ID0gMjk2
LAoKCiAgICAgICAgU0RMS19OVU1MT0NLID0gMzAwLAogICAgICAgIFNETEtfQ0FQU0xPQ0sgPSAz
MDEsCiAgICAgICAgU0RMS19TQ1JPTExPQ0sgPSAzMDIsCiAgICAgICAgU0RMS19SU0hJRlQgPSAz
MDMsCiAgICAgICAgU0RMS19MU0hJRlQgPSAzMDQsCiAgICAgICAgU0RMS19SQ1RSTCA9IDMwNSwK
ICAgICAgICBTRExLX0xDVFJMID0gMzA2LAogICAgICAgIFNETEtfUkFMVCA9IDMwNywKICAgICAg
ICBTRExLX0xBTFQgPSAzMDgsCiAgICAgICAgU0RMS19STUVUQSA9IDMwOSwKICAgICAgICBTRExL
X0xNRVRBID0gMzEwLAogICAgICAgIFNETEtfTFNVUEVSID0gMzExLAogICAgICAgIFNETEtfUlNV
UEVSID0gMzEyLAogICAgICAgIFNETEtfTU9ERSA9IDMxMywKICAgICAgICBTRExLX0NPTVBPU0Ug
PSAzMTQsCgoKICAgICAgICBTRExLX0hFTFAgPSAzMTUsCiAgICAgICAgU0RMS19QUklOVCA9IDMx
NiwKICAgICAgICBTRExLX1NZU1JFUSA9IDMxNywKICAgICAgICBTRExLX0JSRUFLID0gMzE4LAog
ICAgICAgIFNETEtfTUVOVSA9IDMxOSwKICAgICAgICBTRExLX1BPV0VSID0gMzIwLAogICAgICAg
IFNETEtfRVVSTyA9IDMyMSwKCgoKICAgICAgICBTRExLX0xBU1QKfSBTRExLZXk7CgoKdHlwZWRl
ZiBlbnVtIHsKICAgICAgICBLTU9EX05PTkUgPSAweDAwMDAsCiAgICAgICAgS01PRF9MU0hJRlQ9
IDB4MDAwMSwKICAgICAgICBLTU9EX1JTSElGVD0gMHgwMDAyLAogICAgICAgIEtNT0RfTENUUkwg
PSAweDAwNDAsCiAgICAgICAgS01PRF9SQ1RSTCA9IDB4MDA4MCwKICAgICAgICBLTU9EX0xBTFQg
PSAweDAxMDAsCiAgICAgICAgS01PRF9SQUxUID0gMHgwMjAwLAogICAgICAgIEtNT0RfTE1FVEEg
PSAweDA0MDAsCiAgICAgICAgS01PRF9STUVUQSA9IDB4MDgwMCwKICAgICAgICBLTU9EX05VTSA9
IDB4MTAwMCwKICAgICAgICBLTU9EX0NBUFMgPSAweDIwMDAsCiAgICAgICAgS01PRF9NT0RFID0g
MHg0MDAwLAogICAgICAgIEtNT0RfUkVTRVJWRUQgPSAweDgwMDAKfSBTRExNb2Q7CiMgMzUgIi91
c3IvaW5jbHVkZS9TREwvU0RMX2tleWJvYXJkLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9i
ZWdpbl9jb2RlLmgiIDEKIyAzNyAiL3Vzci9pbmNsdWRlL1NETC9TRExfa2V5Ym9hcmQuaCIgMgoK
CmV4dGVybiAiQyIgewojIDU4ICIvdXNyL2luY2x1ZGUvU0RML1NETF9rZXlib2FyZC5oIgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICAgICAgVWludDggc2NhbmNvZGU7CiAgICAgICAgU0RMS2V5IHN5bTsK
ICAgICAgICBTRExNb2QgbW9kOwogICAgICAgIFVpbnQxNiB1bmljb2RlOwp9IFNETF9rZXlzeW07
CiMgNzcgIi91c3IvaW5jbHVkZS9TREwvU0RMX2tleWJvYXJkLmgiCmV4dGVybiBpbnQgU0RMX0Vu
YWJsZVVOSUNPREUoaW50IGVuYWJsZSk7CiMgOTAgIi91c3IvaW5jbHVkZS9TREwvU0RMX2tleWJv
YXJkLmgiCmV4dGVybiBpbnQgU0RMX0VuYWJsZUtleVJlcGVhdChpbnQgZGVsYXksIGludCBpbnRl
cnZhbCk7CiMgOTkgIi91c3IvaW5jbHVkZS9TREwvU0RMX2tleWJvYXJkLmgiCmV4dGVybiBVaW50
OCAqIFNETF9HZXRLZXlTdGF0ZShpbnQgKm51bWtleXMpOwoKCgoKZXh0ZXJuIFNETE1vZCBTRExf
R2V0TW9kU3RhdGUodm9pZCk7CgoKCgoKZXh0ZXJuIHZvaWQgU0RMX1NldE1vZFN0YXRlKFNETE1v
ZCBtb2RzdGF0ZSk7CgoKCgpleHRlcm4gY2hhciAqIFNETF9HZXRLZXlOYW1lKFNETEtleSBrZXkp
OwoKCgoKfQoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2Nsb3NlX2NvZGUuaCIgMQojIDEyMyAiL3Vz
ci9pbmNsdWRlL1NETC9TRExfa2V5Ym9hcmQuaCIgMgojIDM2ICIvdXNyL2luY2x1ZGUvU0RML1NE
TF9ldmVudHMuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX21vdXNlLmgiIDEKIyAzMyAi
L3Vzci9pbmNsdWRlL1NETC9TRExfbW91c2UuaCIKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF90
eXBlcy5oIiAxCiMgMzQgIi91c3IvaW5jbHVkZS9TREwvU0RMX21vdXNlLmgiIDIKIyAxICIvdXNy
L2luY2x1ZGUvU0RML1NETF92aWRlby5oIiAxCiMgMzMgIi91c3IvaW5jbHVkZS9TREwvU0RMX3Zp
ZGVvLmgiCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEv
aW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8uaCIg
MgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF90eXBlcy5oIiAxCiMgMzYgIi91c3IvaW5jbHVk
ZS9TREwvU0RMX3ZpZGVvLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvU0RML1NETF9tdXRleC5oIiAx
CiMgMzYgIi91c3IvaW5jbHVkZS9TREwvU0RMX211dGV4LmgiCiMgMSAiL3Vzci9pbmNsdWRlL1NE
TC9TRExfbWFpbi5oIiAxCiMgMzcgIi91c3IvaW5jbHVkZS9TREwvU0RMX211dGV4LmgiIDIKIyAx
ICIvdXNyL2luY2x1ZGUvU0RML1NETF90eXBlcy5oIiAxCiMgMzggIi91c3IvaW5jbHVkZS9TREwv
U0RMX211dGV4LmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9iZWdpbl9jb2RlLmgiIDEKIyA0
MCAiL3Vzci9pbmNsdWRlL1NETC9TRExfbXV0ZXguaCIgMgoKCmV4dGVybiAiQyIgewojIDU5ICIv
dXNyL2luY2x1ZGUvU0RML1NETF9tdXRleC5oIgpzdHJ1Y3QgU0RMX211dGV4Owp0eXBlZGVmIHN0
cnVjdCBTRExfbXV0ZXggU0RMX211dGV4OwoKCmV4dGVybiBTRExfbXV0ZXggKiBTRExfQ3JlYXRl
TXV0ZXgodm9pZCk7CgoKCmV4dGVybiBpbnQgU0RMX211dGV4UChTRExfbXV0ZXggKm11dGV4KTsK
CgoKZXh0ZXJuIGludCBTRExfbXV0ZXhWKFNETF9tdXRleCAqbXV0ZXgpOwoKCmV4dGVybiB2b2lk
IFNETF9EZXN0cm95TXV0ZXgoU0RMX211dGV4ICptdXRleCk7CgoKCgoKCgpzdHJ1Y3QgU0RMX3Nl
bWFwaG9yZTsKdHlwZWRlZiBzdHJ1Y3QgU0RMX3NlbWFwaG9yZSBTRExfc2VtOwoKCmV4dGVybiBT
RExfc2VtICogU0RMX0NyZWF0ZVNlbWFwaG9yZShVaW50MzIgaW5pdGlhbF92YWx1ZSk7CgoKZXh0
ZXJuIHZvaWQgU0RMX0Rlc3Ryb3lTZW1hcGhvcmUoU0RMX3NlbSAqc2VtKTsKCgoKCgpleHRlcm4g
aW50IFNETF9TZW1XYWl0KFNETF9zZW0gKnNlbSk7CgoKCgpleHRlcm4gaW50IFNETF9TZW1UcnlX
YWl0KFNETF9zZW0gKnNlbSk7CgoKCgoKCgpleHRlcm4gaW50IFNETF9TZW1XYWl0VGltZW91dChT
RExfc2VtICpzZW0sIFVpbnQzMiBtcyk7CgoKCgpleHRlcm4gaW50IFNETF9TZW1Qb3N0KFNETF9z
ZW0gKnNlbSk7CgoKZXh0ZXJuIFVpbnQzMiBTRExfU2VtVmFsdWUoU0RMX3NlbSAqc2VtKTsKCgoK
CgoKCnN0cnVjdCBTRExfY29uZDsKdHlwZWRlZiBzdHJ1Y3QgU0RMX2NvbmQgU0RMX2NvbmQ7CgoK
ZXh0ZXJuIFNETF9jb25kICogU0RMX0NyZWF0ZUNvbmQodm9pZCk7CgoKZXh0ZXJuIHZvaWQgU0RM
X0Rlc3Ryb3lDb25kKFNETF9jb25kICpjb25kKTsKCgoKCmV4dGVybiBpbnQgU0RMX0NvbmRTaWdu
YWwoU0RMX2NvbmQgKmNvbmQpOwoKCgoKZXh0ZXJuIGludCBTRExfQ29uZEJyb2FkY2FzdChTRExf
Y29uZCAqY29uZCk7CgoKCgoKZXh0ZXJuIGludCBTRExfQ29uZFdhaXQoU0RMX2NvbmQgKmNvbmQs
IFNETF9tdXRleCAqbXV0KTsKCgoKCgoKCmV4dGVybiBpbnQgU0RMX0NvbmRXYWl0VGltZW91dChT
RExfY29uZCAqY29uZCwgU0RMX211dGV4ICptdXRleCwgVWludDMyIG1zKTsKCgoKfQoKIyAxICIv
dXNyL2luY2x1ZGUvU0RML2Nsb3NlX2NvZGUuaCIgMQojIDE2MiAiL3Vzci9pbmNsdWRlL1NETC9T
RExfbXV0ZXguaCIgMgojIDM3ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIiAyCiMgMSAi
L3Vzci9pbmNsdWRlL1NETC9TRExfcndvcHMuaCIgMQojIDM4ICIvdXNyL2luY2x1ZGUvU0RML1NE
TF92aWRlby5oIiAyCgojIDEgIi91c3IvaW5jbHVkZS9TREwvYmVnaW5fY29kZS5oIiAxCiMgNDAg
Ii91c3IvaW5jbHVkZS9TREwvU0RMX3ZpZGVvLmgiIDIKCgpleHRlcm4gIkMiIHsKCgoKCgoKCnR5
cGVkZWYgc3RydWN0IHsKICAgICAgICBTaW50MTYgeCwgeTsKICAgICAgICBVaW50MTYgdywgaDsK
fSBTRExfUmVjdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBVaW50OCByOwogICAgICAgIFVp
bnQ4IGc7CiAgICAgICAgVWludDggYjsKICAgICAgICBVaW50OCB1bnVzZWQ7Cn0gU0RMX0NvbG9y
OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBuY29sb3JzOwogICAgICAgIFNETF9Db2xv
ciAqY29sb3JzOwp9IFNETF9QYWxldHRlOwoKCnR5cGVkZWYgc3RydWN0IFNETF9QaXhlbEZvcm1h
dCB7CiAgICAgICAgU0RMX1BhbGV0dGUgKnBhbGV0dGU7CiAgICAgICAgVWludDggQml0c1BlclBp
eGVsOwogICAgICAgIFVpbnQ4IEJ5dGVzUGVyUGl4ZWw7CiAgICAgICAgVWludDggUmxvc3M7CiAg
ICAgICAgVWludDggR2xvc3M7CiAgICAgICAgVWludDggQmxvc3M7CiAgICAgICAgVWludDggQWxv
c3M7CiAgICAgICAgVWludDggUnNoaWZ0OwogICAgICAgIFVpbnQ4IEdzaGlmdDsKICAgICAgICBV
aW50OCBCc2hpZnQ7CiAgICAgICAgVWludDggQXNoaWZ0OwogICAgICAgIFVpbnQzMiBSbWFzazsK
ICAgICAgICBVaW50MzIgR21hc2s7CiAgICAgICAgVWludDMyIEJtYXNrOwogICAgICAgIFVpbnQz
MiBBbWFzazsKCgogICAgICAgIFVpbnQzMiBjb2xvcmtleTsKCiAgICAgICAgVWludDggYWxwaGE7
Cn0gU0RMX1BpeGVsRm9ybWF0OwoKCnN0cnVjdCBTRExfU3VyZmFjZTsKdHlwZWRlZiBpbnQgKCpT
RExfYmxpdCkoc3RydWN0IFNETF9TdXJmYWNlICpzcmMsIFNETF9SZWN0ICpzcmNyZWN0LAogICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgU0RMX1N1cmZhY2UgKmRzdCwgU0RMX1JlY3QgKmRz
dHJlY3QpOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgU0RMX1N1cmZhY2UgewogICAgICAgIFVpbnQzMiBm
bGFnczsKICAgICAgICBTRExfUGl4ZWxGb3JtYXQgKmZvcm1hdDsKICAgICAgICBpbnQgdywgaDsK
ICAgICAgICBVaW50MTYgcGl0Y2g7CiAgICAgICAgdm9pZCAqcGl4ZWxzOwogICAgICAgIGludCBv
ZmZzZXQ7CgoKICAgICAgICBzdHJ1Y3QgcHJpdmF0ZV9od2RhdGEgKmh3ZGF0YTsKCgogICAgICAg
IFNETF9SZWN0IGNsaXBfcmVjdDsKICAgICAgICBVaW50MzIgdW51c2VkMTsKCgogICAgICAgIFVp
bnQzMiBsb2NrZWQ7CgoKICAgICAgICBzdHJ1Y3QgU0RMX0JsaXRNYXAgKm1hcDsKCgogICAgICAg
IHVuc2lnbmVkIGludCBmb3JtYXRfdmVyc2lvbjsKCgogICAgICAgIGludCByZWZjb3VudDsKfSBT
RExfU3VyZmFjZTsKIyAxNTYgIi91c3IvaW5jbHVkZS9TREwvU0RMX3ZpZGVvLmgiCnR5cGVkZWYg
c3RydWN0IHsKICAgICAgICBVaW50MzIgaHdfYXZhaWxhYmxlIDoxOwogICAgICAgIFVpbnQzMiB3
bV9hdmFpbGFibGUgOjE7CiAgICAgICAgVWludDMyIFVudXNlZEJpdHMxIDo2OwogICAgICAgIFVp
bnQzMiBVbnVzZWRCaXRzMiA6MTsKICAgICAgICBVaW50MzIgYmxpdF9odyA6MTsKICAgICAgICBV
aW50MzIgYmxpdF9od19DQyA6MTsKICAgICAgICBVaW50MzIgYmxpdF9od19BIDoxOwogICAgICAg
IFVpbnQzMiBibGl0X3N3IDoxOwogICAgICAgIFVpbnQzMiBibGl0X3N3X0NDIDoxOwogICAgICAg
IFVpbnQzMiBibGl0X3N3X0EgOjE7CiAgICAgICAgVWludDMyIGJsaXRfZmlsbCA6MTsKICAgICAg
ICBVaW50MzIgVW51c2VkQml0czMgOjE2OwogICAgICAgIFVpbnQzMiB2aWRlb19tZW07CiAgICAg
ICAgU0RMX1BpeGVsRm9ybWF0ICp2Zm10Owp9IFNETF9WaWRlb0luZm87CiMgMTg4ICIvdXNyL2lu
Y2x1ZGUvU0RML1NETF92aWRlby5oIgp0eXBlZGVmIHN0cnVjdCBTRExfT3ZlcmxheSB7CiAgICAg
ICAgVWludDMyIGZvcm1hdDsKICAgICAgICBpbnQgdywgaDsKICAgICAgICBpbnQgcGxhbmVzOwog
ICAgICAgIFVpbnQxNiAqcGl0Y2hlczsKICAgICAgICBVaW50OCAqKnBpeGVsczsKCgogICAgICAg
IHN0cnVjdCBwcml2YXRlX3l1dmh3ZnVuY3MgKmh3ZnVuY3M7CiAgICAgICAgc3RydWN0IHByaXZh
dGVfeXV2aHdkYXRhICpod2RhdGE7CgoKICAgICAgICBVaW50MzIgaHdfb3ZlcmxheSA6MTsKICAg
ICAgICBVaW50MzIgVW51c2VkQml0cyA6MzE7Cn0gU0RMX092ZXJsYXk7CgoKCnR5cGVkZWYgZW51
bSB7CiAgICBTRExfR0xfUkVEX1NJWkUsCiAgICBTRExfR0xfR1JFRU5fU0laRSwKICAgIFNETF9H
TF9CTFVFX1NJWkUsCiAgICBTRExfR0xfQUxQSEFfU0laRSwKICAgIFNETF9HTF9CVUZGRVJfU0la
RSwKICAgIFNETF9HTF9ET1VCTEVCVUZGRVIsCiAgICBTRExfR0xfREVQVEhfU0laRSwKICAgIFNE
TF9HTF9TVEVOQ0lMX1NJWkUsCiAgICBTRExfR0xfQUNDVU1fUkVEX1NJWkUsCiAgICBTRExfR0xf
QUNDVU1fR1JFRU5fU0laRSwKICAgIFNETF9HTF9BQ0NVTV9CTFVFX1NJWkUsCiAgICBTRExfR0xf
QUNDVU1fQUxQSEFfU0laRQp9IFNETF9HTGF0dHI7CiMgMjQwICIvdXNyL2luY2x1ZGUvU0RML1NE
TF92aWRlby5oIgpleHRlcm4gaW50IFNETF9WaWRlb0luaXQoY29uc3QgY2hhciAqZHJpdmVyX25h
bWUsIFVpbnQzMiBmbGFncyk7CmV4dGVybiB2b2lkIFNETF9WaWRlb1F1aXQodm9pZCk7CgoKCgoK
ZXh0ZXJuIGNoYXIgKlNETF9WaWRlb0RyaXZlck5hbWUoY2hhciAqbmFtZWJ1ZiwgaW50IG1heGxl
bik7CgoKCgoKCgpleHRlcm4gU0RMX1N1cmZhY2UgKiBTRExfR2V0VmlkZW9TdXJmYWNlKHZvaWQp
OwoKCgoKCgoKZXh0ZXJuIGNvbnN0IFNETF9WaWRlb0luZm8gKiBTRExfR2V0VmlkZW9JbmZvKHZv
aWQpOwojIDI3NiAiL3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8uaCIKZXh0ZXJuIGludCBTRExf
VmlkZW9Nb2RlT0soaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYnBwLCBVaW50MzIgZmxhZ3Mp
OwojIDI4NyAiL3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8uaCIKZXh0ZXJuIFNETF9SZWN0ICoq
IFNETF9MaXN0TW9kZXMoU0RMX1BpeGVsRm9ybWF0ICpmb3JtYXQsIFVpbnQzMiBmbGFncyk7CiMg
MzQ3ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gU0RMX1N1cmZhY2UgKlNE
TF9TZXRWaWRlb01vZGUKICAgICAgICAgICAgICAgICAgICAgICAgKGludCB3aWR0aCwgaW50IGhl
aWdodCwgaW50IGJwcCwgVWludDMyIGZsYWdzKTsKCgoKCgoKCmV4dGVybiB2b2lkIFNETF9VcGRh
dGVSZWN0cwogICAgICAgICAgICAgICAgKFNETF9TdXJmYWNlICpzY3JlZW4sIGludCBudW1yZWN0
cywgU0RMX1JlY3QgKnJlY3RzKTsKZXh0ZXJuIHZvaWQgU0RMX1VwZGF0ZVJlY3QKICAgICAgICAg
ICAgICAgIChTRExfU3VyZmFjZSAqc2NyZWVuLCBTaW50MzIgeCwgU2ludDMyIHksIFVpbnQzMiB3
LCBVaW50MzIgaCk7CiMgMzcxICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4g
aW50IFNETF9GbGlwKFNETF9TdXJmYWNlICpzY3JlZW4pOwojIDM4MSAiL3Vzci9pbmNsdWRlL1NE
TC9TRExfdmlkZW8uaCIKZXh0ZXJuIGludCBTRExfU2V0R2FtbWEoZmxvYXQgcmVkLCBmbG9hdCBn
cmVlbiwgZmxvYXQgYmx1ZSk7CiMgMzk1ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpl
eHRlcm4gaW50IFNETF9TZXRHYW1tYVJhbXAoVWludDE2ICpyZWQsIFVpbnQxNiAqZ3JlZW4sIFVp
bnQxNiAqYmx1ZSk7CiMgNDA2ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4g
aW50IFNETF9HZXRHYW1tYVJhbXAoVWludDE2ICpyZWQsIFVpbnQxNiAqZ3JlZW4sIFVpbnQxNiAq
Ymx1ZSk7CiMgNDIzICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gaW50IFNE
TF9TZXRDb2xvcnMoU0RMX1N1cmZhY2UgKnN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
IFNETF9Db2xvciAqY29sb3JzLCBpbnQgZmlyc3Rjb2xvciwgaW50IG5jb2xvcnMpOwojIDQ0MiAi
L3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8uaCIKZXh0ZXJuIGludCBTRExfU2V0UGFsZXR0ZShT
RExfU3VyZmFjZSAqc3VyZmFjZSwgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNETF9Db2xvciAqY29sb3JzLCBpbnQgZmlyc3Rjb2xvciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmNvbG9ycyk7CgoKCgpleHRlcm4gVWludDMyIFNE
TF9NYXBSR0IKICAgICAgICAgICAgICAgICAgICAgICAgKFNETF9QaXhlbEZvcm1hdCAqZm9ybWF0
LCBVaW50OCByLCBVaW50OCBnLCBVaW50OCBiKTsKCgoKCmV4dGVybiBVaW50MzIgU0RMX01hcFJH
QkEoU0RMX1BpeGVsRm9ybWF0ICpmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVWludDggciwgVWludDggZywgVWludDggYiwgVWludDggYSk7CgoKCgpleHRlcm4gdm9p
ZCBTRExfR2V0UkdCKFVpbnQzMiBwaXhlbCwgU0RMX1BpeGVsRm9ybWF0ICpmbXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVWludDggKnIsIFVpbnQ4ICpnLCBVaW50OCAqYik7CgoK
CgpleHRlcm4gdm9pZCBTRExfR2V0UkdCQShVaW50MzIgcGl4ZWwsIFNETF9QaXhlbEZvcm1hdCAq
Zm10LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVaW50OCAqciwgVWludDggKmcs
IFVpbnQ4ICpiLCBVaW50OCAqYSk7CiMgNTA1ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5o
IgpleHRlcm4gU0RMX1N1cmZhY2UgKlNETF9DcmVhdGVSR0JTdXJmYWNlCiAgICAgICAgICAgICAg
ICAgICAgICAgIChVaW50MzIgZmxhZ3MsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRlcHRo
LAogICAgICAgICAgICAgICAgICAgICAgICBVaW50MzIgUm1hc2ssIFVpbnQzMiBHbWFzaywgVWlu
dDMyIEJtYXNrLCBVaW50MzIgQW1hc2spOwpleHRlcm4gU0RMX1N1cmZhY2UgKlNETF9DcmVhdGVS
R0JTdXJmYWNlRnJvbSh2b2lkICpwaXhlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCB3
aWR0aCwgaW50IGhlaWdodCwgaW50IGRlcHRoLCBpbnQgcGl0Y2gsCiAgICAgICAgICAgICAgICAg
ICAgICAgIFVpbnQzMiBSbWFzaywgVWludDMyIEdtYXNrLCBVaW50MzIgQm1hc2ssIFVpbnQzMiBB
bWFzayk7CmV4dGVybiB2b2lkIFNETF9GcmVlU3VyZmFjZShTRExfU3VyZmFjZSAqc3VyZmFjZSk7
CiMgNTMxICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gaW50IFNETF9Mb2Nr
U3VyZmFjZShTRExfU3VyZmFjZSAqc3VyZmFjZSk7CmV4dGVybiB2b2lkIFNETF9VbmxvY2tTdXJm
YWNlKFNETF9TdXJmYWNlICpzdXJmYWNlKTsKCgoKCgoKCmV4dGVybiBTRExfU3VyZmFjZSAqIFNE
TF9Mb2FkQk1QX1JXKFNETF9SV29wcyAqc3JjLCBpbnQgZnJlZXNyYyk7CiMgNTUwICIvdXNyL2lu
Y2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gaW50IFNETF9TYXZlQk1QX1JXCiAgICAgICAg
ICAgICAgICAoU0RMX1N1cmZhY2UgKnN1cmZhY2UsIFNETF9SV29wcyAqZHN0LCBpbnQgZnJlZWRz
dCk7CiMgNTY2ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gaW50IFNETF9T
ZXRDb2xvcktleQogICAgICAgICAgICAgICAgICAgICAgICAoU0RMX1N1cmZhY2UgKnN1cmZhY2Us
IFVpbnQzMiBmbGFnLCBVaW50MzIga2V5KTsKIyA1ODIgIi91c3IvaW5jbHVkZS9TREwvU0RMX3Zp
ZGVvLmgiCmV4dGVybiBpbnQgU0RMX1NldEFscGhhKFNETF9TdXJmYWNlICpzdXJmYWNlLCBVaW50
MzIgZmxhZywgVWludDggYWxwaGEpOwojIDU5NiAiL3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8u
aCIKZXh0ZXJuIFNETF9ib29sIFNETF9TZXRDbGlwUmVjdChTRExfU3VyZmFjZSAqc3VyZmFjZSwg
U0RMX1JlY3QgKnJlY3QpOwoKCgoKCgpleHRlcm4gdm9pZCBTRExfR2V0Q2xpcFJlY3QoU0RMX1N1
cmZhY2UgKnN1cmZhY2UsIFNETF9SZWN0ICpyZWN0KTsKIyA2MTcgIi91c3IvaW5jbHVkZS9TREwv
U0RMX3ZpZGVvLmgiCmV4dGVybiBTRExfU3VyZmFjZSAqU0RMX0NvbnZlcnRTdXJmYWNlCiAgICAg
ICAgICAgICAgICAgICAgICAgIChTRExfU3VyZmFjZSAqc3JjLCBTRExfUGl4ZWxGb3JtYXQgKmZt
dCwgVWludDMyIGZsYWdzKTsKIyA2OTQgIi91c3IvaW5jbHVkZS9TREwvU0RMX3ZpZGVvLmgiCmV4
dGVybiBpbnQgU0RMX1VwcGVyQmxpdAogICAgICAgICAgICAgICAgICAgICAgICAoU0RMX1N1cmZh
Y2UgKnNyYywgU0RMX1JlY3QgKnNyY3JlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBTRExf
U3VyZmFjZSAqZHN0LCBTRExfUmVjdCAqZHN0cmVjdCk7CgoKCmV4dGVybiBpbnQgU0RMX0xvd2Vy
QmxpdAogICAgICAgICAgICAgICAgICAgICAgICAoU0RMX1N1cmZhY2UgKnNyYywgU0RMX1JlY3Qg
KnNyY3JlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBTRExfU3VyZmFjZSAqZHN0LCBTRExf
UmVjdCAqZHN0cmVjdCk7CiMgNzEzICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRl
cm4gaW50IFNETF9GaWxsUmVjdAogICAgICAgICAgICAgICAgKFNETF9TdXJmYWNlICpkc3QsIFNE
TF9SZWN0ICpkc3RyZWN0LCBVaW50MzIgY29sb3IpOwojIDcyNyAiL3Vzci9pbmNsdWRlL1NETC9T
RExfdmlkZW8uaCIKZXh0ZXJuIFNETF9TdXJmYWNlICogU0RMX0Rpc3BsYXlGb3JtYXQoU0RMX1N1
cmZhY2UgKnN1cmZhY2UpOwojIDc0MSAiL3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8uaCIKZXh0
ZXJuIFNETF9TdXJmYWNlICogU0RMX0Rpc3BsYXlGb3JtYXRBbHBoYShTRExfU3VyZmFjZSAqc3Vy
ZmFjZSk7CiMgNzUzICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gU0RMX092
ZXJsYXkgKlNETF9DcmVhdGVZVVZPdmVybGF5KGludCB3aWR0aCwgaW50IGhlaWdodCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVaW50MzIgZm9ybWF0LCBTRExfU3VyZmFjZSAqZGlz
cGxheSk7CgoKZXh0ZXJuIGludCBTRExfTG9ja1lVVk92ZXJsYXkoU0RMX092ZXJsYXkgKm92ZXJs
YXkpOwpleHRlcm4gdm9pZCBTRExfVW5sb2NrWVVWT3ZlcmxheShTRExfT3ZlcmxheSAqb3Zlcmxh
eSk7CgoKCgoKCgpleHRlcm4gaW50IFNETF9EaXNwbGF5WVVWT3ZlcmxheShTRExfT3ZlcmxheSAq
b3ZlcmxheSwgU0RMX1JlY3QgKmRzdHJlY3QpOwoKCmV4dGVybiB2b2lkIFNETF9GcmVlWVVWT3Zl
cmxheShTRExfT3ZlcmxheSAqb3ZlcmxheSk7CiMgNzg2ICIvdXNyL2luY2x1ZGUvU0RML1NETF92
aWRlby5oIgpleHRlcm4gaW50IFNETF9HTF9Mb2FkTGlicmFyeShjb25zdCBjaGFyICpwYXRoKTsK
CgoKCmV4dGVybiB2b2lkICpTRExfR0xfR2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciogcHJvYyk7
CgoKCgpleHRlcm4gaW50IFNETF9HTF9TZXRBdHRyaWJ1dGUoU0RMX0dMYXR0ciBhdHRyLCBpbnQg
dmFsdWUpOwojIDgwNyAiL3Vzci9pbmNsdWRlL1NETC9TRExfdmlkZW8uaCIKZXh0ZXJuIGludCBT
RExfR0xfR2V0QXR0cmlidXRlKFNETF9HTGF0dHIgYXR0ciwgaW50KiB2YWx1ZSk7CgoKCgpleHRl
cm4gdm9pZCBTRExfR0xfU3dhcEJ1ZmZlcnModm9pZCk7CgoKCgoKZXh0ZXJuIHZvaWQgU0RMX0dM
X1VwZGF0ZVJlY3RzKGludCBudW1yZWN0cywgU0RMX1JlY3QqIHJlY3RzKTsKZXh0ZXJuIHZvaWQg
U0RMX0dMX0xvY2sodm9pZCk7CmV4dGVybiB2b2lkIFNETF9HTF9VbmxvY2sodm9pZCk7CiMgODI5
ICIvdXNyL2luY2x1ZGUvU0RML1NETF92aWRlby5oIgpleHRlcm4gdm9pZCBTRExfV01fU2V0Q2Fw
dGlvbihjb25zdCBjaGFyICp0aXRsZSwgY29uc3QgY2hhciAqaWNvbik7CmV4dGVybiB2b2lkIFNE
TF9XTV9HZXRDYXB0aW9uKGNoYXIgKip0aXRsZSwgY2hhciAqKmljb24pOwoKCgoKCgoKZXh0ZXJu
IHZvaWQgU0RMX1dNX1NldEljb24oU0RMX1N1cmZhY2UgKmljb24sIFVpbnQ4ICptYXNrKTsKCgoK
CgoKZXh0ZXJuIGludCBTRExfV01fSWNvbmlmeVdpbmRvdyh2b2lkKTsKIyA4NjIgIi91c3IvaW5j
bHVkZS9TREwvU0RMX3ZpZGVvLmgiCmV4dGVybiBpbnQgU0RMX1dNX1RvZ2dsZUZ1bGxTY3JlZW4o
U0RMX1N1cmZhY2UgKnN1cmZhY2UpOwoKCgoKCnR5cGVkZWYgZW51bSB7CiAgICAgICAgU0RMX0dS
QUJfUVVFUlkgPSAtMSwKICAgICAgICBTRExfR1JBQl9PRkYgPSAwLAogICAgICAgIFNETF9HUkFC
X09OID0gMSwKICAgICAgICBTRExfR1JBQl9GVUxMU0NSRUVOCn0gU0RMX0dyYWJNb2RlOwoKCgoK
CmV4dGVybiBTRExfR3JhYk1vZGUgU0RMX1dNX0dyYWJJbnB1dChTRExfR3JhYk1vZGUgbW9kZSk7
CgoKCn0KCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9jbG9zZV9jb2RlLmgiIDEKIyA4ODYgIi91c3Iv
aW5jbHVkZS9TREwvU0RMX3ZpZGVvLmgiIDIKIyAzNSAiL3Vzci9pbmNsdWRlL1NETC9TRExfbW91
c2UuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2JlZ2luX2NvZGUuaCIgMQojIDM3ICIvdXNy
L2luY2x1ZGUvU0RML1NETF9tb3VzZS5oIiAyCgoKZXh0ZXJuICJDIiB7CgoKdHlwZWRlZiBzdHJ1
Y3QgV01jdXJzb3IgV01jdXJzb3I7CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBTRExfUmVjdCBh
cmVhOwogICAgICAgIFNpbnQxNiBob3RfeCwgaG90X3k7CiAgICAgICAgVWludDggKmRhdGE7CiAg
ICAgICAgVWludDggKm1hc2s7CiAgICAgICAgVWludDggKnNhdmVbMl07CiAgICAgICAgV01jdXJz
b3IgKndtX2N1cnNvcjsKfSBTRExfQ3Vyc29yOwojIDU5ICIvdXNyL2luY2x1ZGUvU0RML1NETF9t
b3VzZS5oIgpleHRlcm4gVWludDggU0RMX0dldE1vdXNlU3RhdGUoaW50ICp4LCBpbnQgKnkpOwoK
CgoKCgoKZXh0ZXJuIFVpbnQ4IFNETF9HZXRSZWxhdGl2ZU1vdXNlU3RhdGUoaW50ICp4LCBpbnQg
KnkpOwoKCgoKZXh0ZXJuIHZvaWQgU0RMX1dhcnBNb3VzZShVaW50MTYgeCwgVWludDE2IHkpOwoj
IDg3ICIvdXNyL2luY2x1ZGUvU0RML1NETF9tb3VzZS5oIgpleHRlcm4gU0RMX0N1cnNvciAqU0RM
X0NyZWF0ZUN1cnNvcgogICAgICAgICAgICAgICAgKFVpbnQ4ICpkYXRhLCBVaW50OCAqbWFzaywg
aW50IHcsIGludCBoLCBpbnQgaG90X3gsIGludCBob3RfeSk7CgoKCgoKCmV4dGVybiB2b2lkIFNE
TF9TZXRDdXJzb3IoU0RMX0N1cnNvciAqY3Vyc29yKTsKCgoKCmV4dGVybiBTRExfQ3Vyc29yICog
U0RMX0dldEN1cnNvcih2b2lkKTsKCgoKCmV4dGVybiB2b2lkIFNETF9GcmVlQ3Vyc29yKFNETF9D
dXJzb3IgKmN1cnNvcik7CiMgMTE0ICIvdXNyL2luY2x1ZGUvU0RML1NETF9tb3VzZS5oIgpleHRl
cm4gaW50IFNETF9TaG93Q3Vyc29yKGludCB0b2dnbGUpOwojIDEzMiAiL3Vzci9pbmNsdWRlL1NE
TC9TRExfbW91c2UuaCIKfQoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2Nsb3NlX2NvZGUuaCIgMQoj
IDEzNSAiL3Vzci9pbmNsdWRlL1NETC9TRExfbW91c2UuaCIgMgojIDM3ICIvdXNyL2luY2x1ZGUv
U0RML1NETF9ldmVudHMuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX2pveXN0aWNrLmgi
IDEKIyAzOCAiL3Vzci9pbmNsdWRlL1NETC9TRExfZXZlbnRzLmgiIDIKIyAxICIvdXNyL2luY2x1
ZGUvU0RML1NETF9xdWl0LmgiIDEKIyAzOSAiL3Vzci9pbmNsdWRlL1NETC9TRExfZXZlbnRzLmgi
IDIKCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9iZWdpbl9jb2RlLmgiIDEKIyA0MSAiL3Vzci9pbmNs
dWRlL1NETC9TRExfZXZlbnRzLmgiIDIKCgpleHRlcm4gIkMiIHsKCgoKZW51bSB7IFNETF9OT0VW
RU5UID0gMCwKICAgICAgIFNETF9BQ1RJVkVFVkVOVCwKICAgICAgIFNETF9LRVlET1dOLAogICAg
ICAgU0RMX0tFWVVQLAogICAgICAgU0RMX01PVVNFTU9USU9OLAogICAgICAgU0RMX01PVVNFQlVU
VE9ORE9XTiwKICAgICAgIFNETF9NT1VTRUJVVFRPTlVQLAogICAgICAgU0RMX0pPWUFYSVNNT1RJ
T04sCiAgICAgICBTRExfSk9ZQkFMTE1PVElPTiwKICAgICAgIFNETF9KT1lIQVRNT1RJT04sCiAg
ICAgICBTRExfSk9ZQlVUVE9ORE9XTiwKICAgICAgIFNETF9KT1lCVVRUT05VUCwKICAgICAgIFNE
TF9RVUlULAogICAgICAgU0RMX1NZU1dNRVZFTlQsCiAgICAgICBTRExfRVZFTlRfUkVTRVJWRURB
LAogICAgICAgU0RMX0VWRU5UX1JFU0VSVkVEQiwKICAgICAgIFNETF9WSURFT1JFU0laRSwKICAg
ICAgIFNETF9WSURFT0VYUE9TRSwKICAgICAgIFNETF9FVkVOVF9SRVNFUlZFRDIsCiAgICAgICBT
RExfRVZFTlRfUkVTRVJWRUQzLAogICAgICAgU0RMX0VWRU5UX1JFU0VSVkVENCwKICAgICAgIFNE
TF9FVkVOVF9SRVNFUlZFRDUsCiAgICAgICBTRExfRVZFTlRfUkVTRVJWRUQ2LAogICAgICAgU0RM
X0VWRU5UX1JFU0VSVkVENywKCiAgICAgICBTRExfVVNFUkVWRU5UID0gMjQsCgoKCiAgICAgICBT
RExfTlVNRVZFTlRTID0gMzIKfTsKCgoKZW51bSB7CiAgICAgICAgU0RMX0FDVElWRUVWRU5UTUFT
SyA9ICgxPDwoU0RMX0FDVElWRUVWRU5UKSksCiAgICAgICAgU0RMX0tFWURPV05NQVNLID0gKDE8
PChTRExfS0VZRE9XTikpLAogICAgICAgIFNETF9LRVlVUE1BU0sgPSAoMTw8KFNETF9LRVlVUCkp
LAogICAgICAgIFNETF9NT1VTRU1PVElPTk1BU0sgPSAoMTw8KFNETF9NT1VTRU1PVElPTikpLAog
ICAgICAgIFNETF9NT1VTRUJVVFRPTkRPV05NQVNLID0gKDE8PChTRExfTU9VU0VCVVRUT05ET1dO
KSksCiAgICAgICAgU0RMX01PVVNFQlVUVE9OVVBNQVNLID0gKDE8PChTRExfTU9VU0VCVVRUT05V
UCkpLAogICAgICAgIFNETF9NT1VTRUVWRU5UTUFTSyA9ICgxPDwoU0RMX01PVVNFTU9USU9OKSl8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTw8KFNETF9NT1VTRUJVVFRPTkRP
V04pKXwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxPDwoU0RMX01PVVNFQlVU
VE9OVVApKSwKICAgICAgICBTRExfSk9ZQVhJU01PVElPTk1BU0sgPSAoMTw8KFNETF9KT1lBWElT
TU9USU9OKSksCiAgICAgICAgU0RMX0pPWUJBTExNT1RJT05NQVNLID0gKDE8PChTRExfSk9ZQkFM
TE1PVElPTikpLAogICAgICAgIFNETF9KT1lIQVRNT1RJT05NQVNLID0gKDE8PChTRExfSk9ZSEFU
TU9USU9OKSksCiAgICAgICAgU0RMX0pPWUJVVFRPTkRPV05NQVNLID0gKDE8PChTRExfSk9ZQlVU
VE9ORE9XTikpLAogICAgICAgIFNETF9KT1lCVVRUT05VUE1BU0sgPSAoMTw8KFNETF9KT1lCVVRU
T05VUCkpLAogICAgICAgIFNETF9KT1lFVkVOVE1BU0sgPSAoMTw8KFNETF9KT1lBWElTTU9USU9O
KSl8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTw8KFNETF9KT1lCQUxMTU9U
SU9OKSl8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTw8KFNETF9KT1lIQVRN
T1RJT04pKXwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxPDwoU0RMX0pPWUJV
VFRPTkRPV04pKXwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxPDwoU0RMX0pP
WUJVVFRPTlVQKSksCiAgICAgICAgU0RMX1ZJREVPUkVTSVpFTUFTSyA9ICgxPDwoU0RMX1ZJREVP
UkVTSVpFKSksCiAgICAgICAgU0RMX1ZJREVPRVhQT1NFTUFTSyA9ICgxPDwoU0RMX1ZJREVPRVhQ
T1NFKSksCiAgICAgICAgU0RMX1FVSVRNQVNLID0gKDE8PChTRExfUVVJVCkpLAogICAgICAgIFNE
TF9TWVNXTUVWRU5UTUFTSyA9ICgxPDwoU0RMX1NZU1dNRVZFTlQpKQp9OwoKCgp0eXBlZGVmIHN0
cnVjdCB7CiAgICAgICAgVWludDggdHlwZTsKICAgICAgICBVaW50OCBnYWluOwogICAgICAgIFVp
bnQ4IHN0YXRlOwp9IFNETF9BY3RpdmVFdmVudDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAg
VWludDggdHlwZTsKICAgICAgICBVaW50OCB3aGljaDsKICAgICAgICBVaW50OCBzdGF0ZTsKICAg
ICAgICBTRExfa2V5c3ltIGtleXN5bTsKfSBTRExfS2V5Ym9hcmRFdmVudDsKCgp0eXBlZGVmIHN0
cnVjdCB7CiAgICAgICAgVWludDggdHlwZTsKICAgICAgICBVaW50OCB3aGljaDsKICAgICAgICBV
aW50OCBzdGF0ZTsKICAgICAgICBVaW50MTYgeCwgeTsKICAgICAgICBTaW50MTYgeHJlbDsKICAg
ICAgICBTaW50MTYgeXJlbDsKfSBTRExfTW91c2VNb3Rpb25FdmVudDsKCgp0eXBlZGVmIHN0cnVj
dCB7CiAgICAgICAgVWludDggdHlwZTsKICAgICAgICBVaW50OCB3aGljaDsKICAgICAgICBVaW50
OCBidXR0b247CiAgICAgICAgVWludDggc3RhdGU7CiAgICAgICAgVWludDE2IHgsIHk7Cn0gU0RM
X01vdXNlQnV0dG9uRXZlbnQ7CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFVpbnQ4IHR5cGU7
CiAgICAgICAgVWludDggd2hpY2g7CiAgICAgICAgVWludDggYXhpczsKICAgICAgICBTaW50MTYg
dmFsdWU7Cn0gU0RMX0pveUF4aXNFdmVudDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgVWlu
dDggdHlwZTsKICAgICAgICBVaW50OCB3aGljaDsKICAgICAgICBVaW50OCBiYWxsOwogICAgICAg
IFNpbnQxNiB4cmVsOwogICAgICAgIFNpbnQxNiB5cmVsOwp9IFNETF9Kb3lCYWxsRXZlbnQ7CgoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFVpbnQ4IHR5cGU7CiAgICAgICAgVWludDggd2hpY2g7
CiAgICAgICAgVWludDggaGF0OwogICAgICAgIFVpbnQ4IHZhbHVlOwoKCgoKCn0gU0RMX0pveUhh
dEV2ZW50OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBVaW50OCB0eXBlOwogICAgICAgIFVp
bnQ4IHdoaWNoOwogICAgICAgIFVpbnQ4IGJ1dHRvbjsKICAgICAgICBVaW50OCBzdGF0ZTsKfSBT
RExfSm95QnV0dG9uRXZlbnQ7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFVpbnQ4IHR5
cGU7CiAgICAgICAgaW50IHc7CiAgICAgICAgaW50IGg7Cn0gU0RMX1Jlc2l6ZUV2ZW50OwoKCnR5
cGVkZWYgc3RydWN0IHsKICAgICAgICBVaW50OCB0eXBlOwp9IFNETF9FeHBvc2VFdmVudDsKCgp0
eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgVWludDggdHlwZTsKfSBTRExfUXVpdEV2ZW50OwoKCnR5
cGVkZWYgc3RydWN0IHsKICAgICAgICBVaW50OCB0eXBlOwogICAgICAgIGludCBjb2RlOwogICAg
ICAgIHZvaWQgKmRhdGExOwogICAgICAgIHZvaWQgKmRhdGEyOwp9IFNETF9Vc2VyRXZlbnQ7CgoK
c3RydWN0IFNETF9TeXNXTW1zZzsKdHlwZWRlZiBzdHJ1Y3QgU0RMX1N5c1dNbXNnIFNETF9TeXNX
TW1zZzsKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFVpbnQ4IHR5cGU7CiAgICAgICAgU0RMX1N5
c1dNbXNnICptc2c7Cn0gU0RMX1N5c1dNRXZlbnQ7CgoKdHlwZWRlZiB1bmlvbiB7CiAgICAgICAg
VWludDggdHlwZTsKICAgICAgICBTRExfQWN0aXZlRXZlbnQgYWN0aXZlOwogICAgICAgIFNETF9L
ZXlib2FyZEV2ZW50IGtleTsKICAgICAgICBTRExfTW91c2VNb3Rpb25FdmVudCBtb3Rpb247CiAg
ICAgICAgU0RMX01vdXNlQnV0dG9uRXZlbnQgYnV0dG9uOwogICAgICAgIFNETF9Kb3lBeGlzRXZl
bnQgamF4aXM7CiAgICAgICAgU0RMX0pveUJhbGxFdmVudCBqYmFsbDsKICAgICAgICBTRExfSm95
SGF0RXZlbnQgamhhdDsKICAgICAgICBTRExfSm95QnV0dG9uRXZlbnQgamJ1dHRvbjsKICAgICAg
ICBTRExfUmVzaXplRXZlbnQgcmVzaXplOwogICAgICAgIFNETF9FeHBvc2VFdmVudCBleHBvc2U7
CiAgICAgICAgU0RMX1F1aXRFdmVudCBxdWl0OwogICAgICAgIFNETF9Vc2VyRXZlbnQgdXNlcjsK
ICAgICAgICBTRExfU3lzV01FdmVudCBzeXN3bTsKfSBTRExfRXZlbnQ7CiMgMjQxICIvdXNyL2lu
Y2x1ZGUvU0RML1NETF9ldmVudHMuaCIKZXh0ZXJuIHZvaWQgU0RMX1B1bXBFdmVudHModm9pZCk7
CiMgMjU1ICIvdXNyL2luY2x1ZGUvU0RML1NETF9ldmVudHMuaCIKdHlwZWRlZiBlbnVtIHsKICAg
ICAgICBTRExfQURERVZFTlQsCiAgICAgICAgU0RMX1BFRUtFVkVOVCwKICAgICAgICBTRExfR0VU
RVZFTlQKfSBTRExfZXZlbnRhY3Rpb247CgpleHRlcm4gaW50IFNETF9QZWVwRXZlbnRzKFNETF9F
dmVudCAqZXZlbnRzLCBpbnQgbnVtZXZlbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNETF9ldmVudGFjdGlvbiBhY3Rpb24sIFVpbnQzMiBtYXNrKTsKCgoKCgpleHRlcm4gaW50
IFNETF9Qb2xsRXZlbnQoU0RMX0V2ZW50ICpldmVudCk7CgoKCgoKZXh0ZXJuIGludCBTRExfV2Fp
dEV2ZW50KFNETF9FdmVudCAqZXZlbnQpOwoKCgoKCmV4dGVybiBpbnQgU0RMX1B1c2hFdmVudChT
RExfRXZlbnQgKmV2ZW50KTsKCgoKCgoKCnR5cGVkZWYgaW50ICgqU0RMX0V2ZW50RmlsdGVyKShj
b25zdCBTRExfRXZlbnQgKmV2ZW50KTsKIyAzMDUgIi91c3IvaW5jbHVkZS9TREwvU0RMX2V2ZW50
cy5oIgpleHRlcm4gdm9pZCBTRExfU2V0RXZlbnRGaWx0ZXIoU0RMX0V2ZW50RmlsdGVyIGZpbHRl
cik7CgoKCgoKZXh0ZXJuIFNETF9FdmVudEZpbHRlciBTRExfR2V0RXZlbnRGaWx0ZXIodm9pZCk7
CiMgMzI1ICIvdXNyL2luY2x1ZGUvU0RML1NETF9ldmVudHMuaCIKZXh0ZXJuIFVpbnQ4IFNETF9F
dmVudFN0YXRlKFVpbnQ4IHR5cGUsIGludCBzdGF0ZSk7CgoKCgp9CgojIDEgIi91c3IvaW5jbHVk
ZS9TREwvY2xvc2VfY29kZS5oIiAxCiMgMzMzICIvdXNyL2luY2x1ZGUvU0RML1NETF9ldmVudHMu
aCIgMgojIDQzICIvdXNyL2luY2x1ZGUvU0RML1NETC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL1NE
TC9TRExfdmlkZW8uaCIgMQojIDQ0ICIvdXNyL2luY2x1ZGUvU0RML1NETC5oIiAyCiMgMSAiL3Vz
ci9pbmNsdWRlL1NETC9TRExfYnl0ZW9yZGVyLmgiIDEKIyA0NSAiL3Vzci9pbmNsdWRlL1NETC9T
REwuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9TREwvU0RMX3ZlcnNpb24uaCIgMQojIDMzICIvdXNy
L2luY2x1ZGUvU0RML1NETF92ZXJzaW9uLmgiCiMgMSAiL3Vzci9pbmNsdWRlL1NETC9TRExfdHlw
ZXMuaCIgMQojIDM0ICIvdXNyL2luY2x1ZGUvU0RML1NETF92ZXJzaW9uLmgiIDIKCiMgMSAiL3Vz
ci9pbmNsdWRlL1NETC9iZWdpbl9jb2RlLmgiIDEKIyAzNiAiL3Vzci9pbmNsdWRlL1NETC9TRExf
dmVyc2lvbi5oIiAyCgoKZXh0ZXJuICJDIiB7CiMgNDcgIi91c3IvaW5jbHVkZS9TREwvU0RMX3Zl
cnNpb24uaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFVpbnQ4IG1ham9yOwogICAgICAgIFVp
bnQ4IG1pbm9yOwogICAgICAgIFVpbnQ4IHBhdGNoOwp9IFNETF92ZXJzaW9uOwojIDgyICIvdXNy
L2luY2x1ZGUvU0RML1NETF92ZXJzaW9uLmgiCmV4dGVybiBjb25zdCBTRExfdmVyc2lvbiAqIFNE
TF9MaW5rZWRfVmVyc2lvbih2b2lkKTsKCgoKfQoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2Nsb3Nl
X2NvZGUuaCIgMQojIDg5ICIvdXNyL2luY2x1ZGUvU0RML1NETF92ZXJzaW9uLmgiIDIKIyA0NiAi
L3Vzci9pbmNsdWRlL1NETC9TREwuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2JlZ2luX2Nv
ZGUuaCIgMQojIDQ4ICIvdXNyL2luY2x1ZGUvU0RML1NETC5oIiAyCgoKZXh0ZXJuICJDIiB7CiMg
NzIgIi91c3IvaW5jbHVkZS9TREwvU0RMLmgiCmV4dGVybiBpbnQgU0RMX0luaXQoVWludDMyIGZs
YWdzKTsKCgpleHRlcm4gaW50IFNETF9Jbml0U3ViU3lzdGVtKFVpbnQzMiBmbGFncyk7CgoKZXh0
ZXJuIHZvaWQgU0RMX1F1aXRTdWJTeXN0ZW0oVWludDMyIGZsYWdzKTsKCgoKCgpleHRlcm4gVWlu
dDMyIFNETF9XYXNJbml0KFVpbnQzMiBmbGFncyk7CgoKCgpleHRlcm4gdm9pZCBTRExfUXVpdCh2
b2lkKTsKCgoKfQoKIyAxICIvdXNyL2luY2x1ZGUvU0RML2Nsb3NlX2NvZGUuaCIgMQojIDk2ICIv
dXNyL2luY2x1ZGUvU0RML1NETC5oIiAyCiMgMjcgIndpbnN5cy5oIiAyCgoKCgoKCgpleHRlcm4g
IkMiCnsKIyA0NyAid2luc3lzLmgiCnR5cGVkZWYgZW51bSB7CiAgICBXU0tfTk9UX0FWQUlMID0g
U0RMS19VTktOT1dOLAoKCiAgICBXU0tfS1AwID0gU0RMS19LUDAsCiAgICBXU0tfS1AxID0gU0RM
S19LUDEsCiAgICBXU0tfS1AyID0gU0RMS19LUDIsCiAgICBXU0tfS1AzID0gU0RMS19LUDMsCiAg
ICBXU0tfS1A0ID0gU0RMS19LUDQsCiAgICBXU0tfS1A1ID0gU0RMS19LUDUsCiAgICBXU0tfS1A2
ID0gU0RMS19LUDYsCiAgICBXU0tfS1A3ID0gU0RMS19LUDcsCiAgICBXU0tfS1A4ID0gU0RMS19L
UDgsCiAgICBXU0tfS1A5ID0gU0RMS19LUDksCiAgICBXU0tfS1BfUEVSSU9EID0gU0RMS19LUF9Q
RVJJT0QsCiAgICBXU0tfS1BfRElWSURFID0gU0RMS19LUF9ESVZJREUsCiAgICBXU0tfS1BfTVVM
VElQTFkgPSBTRExLX0tQX01VTFRJUExZLAogICAgV1NLX0tQX01JTlVTID0gU0RMS19LUF9NSU5V
UywKICAgIFdTS19LUF9QTFVTID0gU0RMS19LUF9QTFVTLAogICAgV1NLX0tQX0VOVEVSID0gU0RM
S19LUF9FTlRFUiwKICAgIFdTS19LUF9FUVVBTFMgPSBTRExLX0tQX0VRVUFMUywKCgogICAgV1NL
X1VQID0gU0RMS19VUCwKICAgIFdTS19ET1dOID0gU0RMS19ET1dOLAogICAgV1NLX1JJR0hUID0g
U0RMS19SSUdIVCwKICAgIFdTS19MRUZUID0gU0RMS19MRUZULAogICAgV1NLX0lOU0VSVCA9IFNE
TEtfSU5TRVJULAogICAgV1NLX0hPTUUgPSBTRExLX0hPTUUsCiAgICBXU0tfRU5EID0gU0RMS19F
TkQsCiAgICBXU0tfUEFHRVVQID0gU0RMS19QQUdFVVAsCiAgICBXU0tfUEFHRURPV04gPSBTRExL
X1BBR0VET1dOLAoKCiAgICBXU0tfRjEgPSBTRExLX0YxLAogICAgV1NLX0YyID0gU0RMS19GMiwK
ICAgIFdTS19GMyA9IFNETEtfRjMsCiAgICBXU0tfRjQgPSBTRExLX0Y0LAogICAgV1NLX0Y1ID0g
U0RMS19GNSwKICAgIFdTS19GNiA9IFNETEtfRjYsCiAgICBXU0tfRjcgPSBTRExLX0Y3LAogICAg
V1NLX0Y4ID0gU0RMS19GOCwKICAgIFdTS19GOSA9IFNETEtfRjksCiAgICBXU0tfRjEwID0gU0RM
S19GMTAsCiAgICBXU0tfRjExID0gU0RMS19GMTEsCiAgICBXU0tfRjEyID0gU0RMS19GMTIsCiAg
ICBXU0tfRjEzID0gU0RMS19GMTMsCiAgICBXU0tfRjE0ID0gU0RMS19GMTQsCiAgICBXU0tfRjE1
ID0gU0RMS19GMTUsCgoKICAgIFdTS19OVU1MT0NLID0gU0RMS19OVU1MT0NLLAogICAgV1NLX0NB
UFNMT0NLID0gU0RMS19DQVBTTE9DSywKICAgIFdTS19TQ1JPTExPQ0sgPSBTRExLX1NDUk9MTE9D
SywKICAgIFdTS19SU0hJRlQgPSBTRExLX1JTSElGVCwKICAgIFdTS19MU0hJRlQgPSBTRExLX0xT
SElGVCwKICAgIFdTS19SQ1RSTCA9IFNETEtfUkNUUkwsCiAgICBXU0tfTENUUkwgPSBTRExLX0xD
VFJMLAogICAgV1NLX1JBTFQgPSBTRExLX1JBTFQsCiAgICBXU0tfTEFMVCA9IFNETEtfTEFMVCwK
ICAgIFdTS19STUVUQSA9IFNETEtfUk1FVEEsCiAgICBXU0tfTE1FVEEgPSBTRExLX0xNRVRBLAoK
ICAgIFdTS19MQVNUCgp9IHdpbnN5c19rZXlzeW1fdDsKCnR5cGVkZWYgZW51bSB7CiAgICBXU19M
RUZUX0JVVFRPTiA9IDEsCiAgICBXU19NSURETEVfQlVUVE9OID0gMiwKICAgIFdTX1JJR0hUX0JV
VFRPTiA9IDMKfSB3aW5zeXNfbW91c2VfYnV0dG9uX3Q7Cgp0eXBlZGVmIGVudW0gewogICAgV1Nf
TU9VU0VfRE9XTiA9IFNETF9QUkVTU0VELAogICAgV1NfTU9VU0VfVVAgPSBTRExfUkVMRUFTRUQK
fSB3aW5zeXNfYnV0dG9uX3N0YXRlX3Q7CiMgMjE2ICJ3aW5zeXMuaCIKdHlwZWRlZiB2b2lkICgq
d2luc3lzX2Rpc3BsYXlfZnVuY190KSgpOwp0eXBlZGVmIHZvaWQgKCp3aW5zeXNfaWRsZV9mdW5j
X3QpKCk7CnR5cGVkZWYgdm9pZCAoKndpbnN5c19yZXNoYXBlX2Z1bmNfdCkoIGludCB3LCBpbnQg
aCApOwp0eXBlZGVmIHZvaWQgKCp3aW5zeXNfa2V5Ym9hcmRfZnVuY190KSggdW5zaWduZWQgaW50
IGtleSwgYm9vbF90IHNwZWNpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sX3QgcmVsZWFzZSwgaW50IHgsIGludCB5ICk7CnR5cGVkZWYgdm9pZCAoKndpbnN5
c19tb3VzZV9mdW5jX3QpKCBpbnQgYnV0dG9uLCBpbnQgc3RhdGUsIGludCB4LCBpbnQgeSApOwp0
eXBlZGVmIHZvaWQgKCp3aW5zeXNfbW90aW9uX2Z1bmNfdCkoIGludCB4LCBpbnQgeSApOwoKdHlw
ZWRlZiB2b2lkICgqd2luc3lzX2F0ZXhpdF9mdW5jX3QpKCB2b2lkICk7Cgp2b2lkIHdpbnN5c19w
b3N0X3JlZGlzcGxheSgpOwp2b2lkIHdpbnN5c19zZXRfZGlzcGxheV9mdW5jKCB3aW5zeXNfZGlz
cGxheV9mdW5jX3QgZnVuYyApOwp2b2lkIHdpbnN5c19zZXRfaWRsZV9mdW5jKCB3aW5zeXNfaWRs
ZV9mdW5jX3QgZnVuYyApOwp2b2lkIHdpbnN5c19zZXRfcmVzaGFwZV9mdW5jKCB3aW5zeXNfcmVz
aGFwZV9mdW5jX3QgZnVuYyApOwp2b2lkIHdpbnN5c19zZXRfa2V5Ym9hcmRfZnVuYyggd2luc3lz
X2tleWJvYXJkX2Z1bmNfdCBmdW5jICk7CnZvaWQgd2luc3lzX3NldF9tb3VzZV9mdW5jKCB3aW5z
eXNfbW91c2VfZnVuY190IGZ1bmMgKTsKdm9pZCB3aW5zeXNfc2V0X21vdGlvbl9mdW5jKCB3aW5z
eXNfbW90aW9uX2Z1bmNfdCBmdW5jICk7CnZvaWQgd2luc3lzX3NldF9wYXNzaXZlX21vdGlvbl9m
dW5jKCB3aW5zeXNfbW90aW9uX2Z1bmNfdCBmdW5jICk7Cgp2b2lkIHdpbnN5c19zd2FwX2J1ZmZl
cnMoKTsKdm9pZCB3aW5zeXNfZW5hYmxlX2tleV9yZXBlYXQoIGJvb2xfdCBlbmFibGVkICk7CnZv
aWQgd2luc3lzX3dhcnBfcG9pbnRlciggaW50IHgsIGludCB5ICk7CnZvaWQgd2luc3lzX3Nob3df
Y3Vyc29yKCBib29sX3QgdmlzaWJsZSApOwoKdm9pZCB3aW5zeXNfaW5pdCggaW50ICphcmdjLCBj
aGFyICoqYXJndiwgY2hhciAqd2luZG93X3RpdGxlLAogICAgICAgICAgICAgICAgICBjaGFyICpp
Y29uX3RpdGxlICk7CnZvaWQgd2luc3lzX3NodXRkb3duKCk7Cgp2b2lkIHdpbnN5c19wcm9jZXNz
X2V2ZW50cygpOwoKdm9pZCB3aW5zeXNfYXRleGl0KCB3aW5zeXNfYXRleGl0X2Z1bmNfdCBmdW5j
ICk7Cgp2b2lkIHdpbnN5c19leGl0KCBpbnQgY29kZSApOwoKCn0KIyAxMjUgInR1eHJhY2VyLmgi
IDIKIyAxICJzdHJpbmdfdXRpbC5oIiAxCiMgMjEgInN0cmluZ191dGlsLmgiCmV4dGVybiAiQyIK
ewoKCgoKCmNoYXIgKnN0cmluZ19jb3B5KCBjaGFyICpzcmMgKTsKaW50IHN0cmluZ19jbXBfbm9f
Y2FzZSggY2hhciAqczEsIGNoYXIgKnMyICk7CnZvaWQgc3RyaW5nX3RvX2xvd2VyKCBjaGFyICpz
ICk7CgoKCgp9CiMgMTI2ICJ0dXhyYWNlci5oIiAyCiMgMSAiZmlsZV91dGlsLmgiIDEKIyAyMSAi
ZmlsZV91dGlsLmgiCmV4dGVybiAiQyIKewoKCgoKCiMgMSAidHV4X3R5cGVzLmgiIDEKIyAyMSAi
dHV4X3R5cGVzLmgiCmV4dGVybiAiQyIKewojIDIzNyAidHV4X3R5cGVzLmgiCn0KIyAyOSAiZmls
ZV91dGlsLmgiIDIKIyAxICJsaXN0LmgiIDEKIyAyMSAibGlzdC5oIgpleHRlcm4gIkMiCnsKCgoK
CgojIDEgInR1eHJhY2VyLmgiIDEKIyAyOSAibGlzdC5oIiAyCgp0eXBlZGVmIHZvaWQqIGxpc3Rf
dDsKdHlwZWRlZiB2b2lkKiBsaXN0X2VsZW1fdDsKdHlwZWRlZiB2b2lkKiBsaXN0X2VsZW1fZGF0
YV90OwoKCmxpc3RfdCBjcmVhdGVfbGlzdCh2b2lkKTsKCgoKdm9pZCBkZWxfbGlzdChsaXN0X3Qg
bGxpc3QpOwoKCmxpc3RfZWxlbV90IGdldF9saXN0X2hlYWQobGlzdF90IGxsaXN0KTsKCgpsaXN0
X2VsZW1fdCBnZXRfbGlzdF90YWlsKGxpc3RfdCBsbGlzdCk7CgoKCmxpc3RfZWxlbV90IGdldF9u
ZXh0X2xpc3RfZWxlbShsaXN0X3QgbGxpc3QsIGxpc3RfZWxlbV90IG5vZGUpOwoKCgpsaXN0X2Vs
ZW1fdCBnZXRfcHJldl9saXN0X2VsZW0obGlzdF90IGxsaXN0LCBsaXN0X2VsZW1fdCBub2RlKTsK
CgoKCmxpc3RfZWxlbV90IGluc2VydF9saXN0X2VsZW0obGlzdF90IGxsaXN0LCBsaXN0X2VsZW1f
dCBub2RlX2JlZm9yZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VsZW1fZGF0
YV90IG5ld19kYXRhKTsKCgpsaXN0X2VsZW1fZGF0YV90IGRlbGV0ZV9saXN0X2VsZW0obGlzdF90
IGxsaXN0LCBsaXN0X2VsZW1fdCBub2RlKTsKCgpsaXN0X2VsZW1fZGF0YV90IGdldF9saXN0X2Vs
ZW1fZGF0YSggbGlzdF9lbGVtX3Qgbm9kZSApOwoKCnZvaWQgbGlzdF9zYW5pdHlfY2hlY2soIGxp
c3RfdCBsbGlzdCApOwoKCnZvaWQgcHJpbnRfbGlzdCggbGlzdF90IGxsaXN0ICk7CgoKCgp9CiMg
MzAgImZpbGVfdXRpbC5oIiAyCgpib29sX3QgZmlsZV9leGlzdHMoIGNoYXIgKmZpbGVuYW1lICk7
CmJvb2xfdCBkaXJfZXhpc3RzKCBjaGFyICpkaXJuYW1lICk7Cmxpc3RfdCBnZXRfZGlyX2ZpbGVf
bGlzdCggY2hhciAqZGlybmFtZSApIDsKdm9pZCBmcmVlX2Rpcl9maWxlX2xpc3QoIGxpc3RfdCBk
aXJsaXN0ICk7CgoKCgp9CiMgMTI3ICJ0dXhyYWNlci5oIiAyCiMgMSAiZ2FtZV9jb25maWcuaCIg
MQojIDIxICJnYW1lX2NvbmZpZy5oIgpleHRlcm4gIkMiCnsKCgoKCgojIDEgInR1eF90eXBlcy5o
IiAxCiMgMjEgInR1eF90eXBlcy5oIgpleHRlcm4gIkMiCnsKIyAyMzcgInR1eF90eXBlcy5oIgp9
CiMgMjkgImdhbWVfY29uZmlnLmgiIDIKCnZvaWQgaW5pdF9nYW1lX2NvbmZpZ3VyYXRpb24oKTsK
dm9pZCByZWFkX2NvbmZpZ19maWxlKCk7CnZvaWQgd3JpdGVfY29uZmlnX2ZpbGUoKTsKdm9pZCBj
bGVhcl9jb25maWdfY2FjaGUoKTsKdm9pZCByZWdpc3Rlcl9nYW1lX2NvbmZpZ19jYWxsYmFja3Mo
IFRjbF9JbnRlcnAgKmlwICk7CmludCBnZXRfY29uZmlnX2Rpcl9uYW1lKCBjaGFyICpidWZmLCBp
bnQgbGVuICk7CiMgNTQgImdhbWVfY29uZmlnLmgiCmNoYXIqIGdldHBhcmFtX2RhdGFfZGlyKCk7
IHZvaWQgc2V0cGFyYW1fZGF0YV9kaXIoIGNoYXIqIHZhbCApOwoKYm9vbF90IGdldHBhcmFtX2Ry
YXdfdHV4X3NoYWRvdygpOyB2b2lkIHNldHBhcmFtX2RyYXdfdHV4X3NoYWRvdyggYm9vbF90IHZh
bCApOwoKYm9vbF90IGdldHBhcmFtX2RyYXdfcGFydGljbGVzKCk7IHZvaWQgc2V0cGFyYW1fZHJh
d19wYXJ0aWNsZXMoIGJvb2xfdCB2YWwgKTsKCmludCBnZXRwYXJhbV90dXhfc3BoZXJlX2Rpdmlz
aW9ucygpOyB2b2lkIHNldHBhcmFtX3R1eF9zcGhlcmVfZGl2aXNpb25zKCBpbnQgdmFsICk7Cgpp
bnQgZ2V0cGFyYW1fdHV4X3NoYWRvd19zcGhlcmVfZGl2aXNpb25zKCk7IHZvaWQgc2V0cGFyYW1f
dHV4X3NoYWRvd19zcGhlcmVfZGl2aXNpb25zKCBpbnQgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1f
bmljZV9mb2coKTsgdm9pZCBzZXRwYXJhbV9uaWNlX2ZvZyggYm9vbF90IHZhbCApOwoKYm9vbF90
IGdldHBhcmFtX3VzZV9zcGhlcmVfZGlzcGxheV9saXN0KCk7IHZvaWQgc2V0cGFyYW1fdXNlX3Nw
aGVyZV9kaXNwbGF5X2xpc3QoIGJvb2xfdCB2YWwgKTsKCmJvb2xfdCBnZXRwYXJhbV9kaXNwbGF5
X2ZwcygpOyB2b2lkIHNldHBhcmFtX2Rpc3BsYXlfZnBzKCBib29sX3QgdmFsICk7CgppbnQgZ2V0
cGFyYW1feF9yZXNvbHV0aW9uKCk7IHZvaWQgc2V0cGFyYW1feF9yZXNvbHV0aW9uKCBpbnQgdmFs
ICk7CgppbnQgZ2V0cGFyYW1feV9yZXNvbHV0aW9uKCk7IHZvaWQgc2V0cGFyYW1feV9yZXNvbHV0
aW9uKCBpbnQgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fY2FwdHVyZV9tb3VzZSgpOyB2b2lkIHNl
dHBhcmFtX2NhcHR1cmVfbW91c2UoIGJvb2xfdCB2YWwgKTsKCmJvb2xfdCBnZXRwYXJhbV9kb19p
bnRyb19hbmltYXRpb24oKTsgdm9pZCBzZXRwYXJhbV9kb19pbnRyb19hbmltYXRpb24oIGJvb2xf
dCB2YWwgKTsKCmludCBnZXRwYXJhbV9taXBtYXBfdHlwZSgpOyB2b2lkIHNldHBhcmFtX21pcG1h
cF90eXBlKCBpbnQgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fZnVsbHNjcmVlbigpOyB2b2lkIHNl
dHBhcmFtX2Z1bGxzY3JlZW4oIGJvb2xfdCB2YWwgKTsKCmludCBnZXRwYXJhbV9icHBfbW9kZSgp
OyB2b2lkIHNldHBhcmFtX2JwcF9tb2RlKCBpbnQgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fbWls
ZXNfcGVyX2hvdXIoKTsgdm9pZCBzZXRwYXJhbV9taWxlc19wZXJfaG91ciggYm9vbF90IHZhbCAp
OwoKYm9vbF90IGdldHBhcmFtX2ZvcmNlX3dpbmRvd19wb3NpdGlvbigpOyB2b2lkIHNldHBhcmFt
X2ZvcmNlX3dpbmRvd19wb3NpdGlvbiggYm9vbF90IHZhbCApOwoKaW50IGdldHBhcmFtX29kZV9z
b2x2ZXIoKTsgdm9pZCBzZXRwYXJhbV9vZGVfc29sdmVyKCBpbnQgdmFsICk7CgpjaGFyKiBnZXRw
YXJhbV9xdWl0X2tleSgpOyB2b2lkIHNldHBhcmFtX3F1aXRfa2V5KCBjaGFyKiB2YWwgKTsKCmNo
YXIqIGdldHBhcmFtX3R1cm5fbGVmdF9rZXkoKTsgdm9pZCBzZXRwYXJhbV90dXJuX2xlZnRfa2V5
KCBjaGFyKiB2YWwgKTsKCmNoYXIqIGdldHBhcmFtX3R1cm5fcmlnaHRfa2V5KCk7IHZvaWQgc2V0
cGFyYW1fdHVybl9yaWdodF9rZXkoIGNoYXIqIHZhbCApOwoKY2hhciogZ2V0cGFyYW1fdHJpY2tf
bW9kaWZpZXJfa2V5KCk7IHZvaWQgc2V0cGFyYW1fdHJpY2tfbW9kaWZpZXJfa2V5KCBjaGFyKiB2
YWwgKTsKCmNoYXIqIGdldHBhcmFtX2JyYWtlX2tleSgpOyB2b2lkIHNldHBhcmFtX2JyYWtlX2tl
eSggY2hhciogdmFsICk7CgpjaGFyKiBnZXRwYXJhbV9wYWRkbGVfa2V5KCk7IHZvaWQgc2V0cGFy
YW1fcGFkZGxlX2tleSggY2hhciogdmFsICk7CgpjaGFyKiBnZXRwYXJhbV9hYm92ZV92aWV3X2tl
eSgpOyB2b2lkIHNldHBhcmFtX2Fib3ZlX3ZpZXdfa2V5KCBjaGFyKiB2YWwgKTsKCmNoYXIqIGdl
dHBhcmFtX2JlaGluZF92aWV3X2tleSgpOyB2b2lkIHNldHBhcmFtX2JlaGluZF92aWV3X2tleSgg
Y2hhciogdmFsICk7CgpjaGFyKiBnZXRwYXJhbV9leWVfdmlld19rZXkoKTsgdm9pZCBzZXRwYXJh
bV9leWVfdmlld19rZXkoIGNoYXIqIHZhbCApOwoKY2hhciogZ2V0cGFyYW1fZm9sbG93X3ZpZXdf
a2V5KCk7IHZvaWQgc2V0cGFyYW1fZm9sbG93X3ZpZXdfa2V5KCBjaGFyKiB2YWwgKTsKCmludCBn
ZXRwYXJhbV92aWV3X21vZGUoKTsgdm9pZCBzZXRwYXJhbV92aWV3X21vZGUoIGludCB2YWwgKTsK
CmNoYXIqIGdldHBhcmFtX3NjcmVlbnNob3Rfa2V5KCk7IHZvaWQgc2V0cGFyYW1fc2NyZWVuc2hv
dF9rZXkoIGNoYXIqIHZhbCApOwoKY2hhciogZ2V0cGFyYW1fcGF1c2Vfa2V5KCk7IHZvaWQgc2V0
cGFyYW1fcGF1c2Vfa2V5KCBjaGFyKiB2YWwgKTsKCmNoYXIqIGdldHBhcmFtX3Jlc2V0X2tleSgp
OyB2b2lkIHNldHBhcmFtX3Jlc2V0X2tleSggY2hhciogdmFsICk7CgpjaGFyKiBnZXRwYXJhbV9q
dW1wX2tleSgpOyB2b2lkIHNldHBhcmFtX2p1bXBfa2V5KCBjaGFyKiB2YWwgKTsKCmludCBnZXRw
YXJhbV9qb3lzdGlja19qdW1wX2J1dHRvbigpOyB2b2lkIHNldHBhcmFtX2pveXN0aWNrX2p1bXBf
YnV0dG9uKCBpbnQgdmFsICk7CgppbnQgZ2V0cGFyYW1fam95c3RpY2tfYnJha2VfYnV0dG9uKCk7
IHZvaWQgc2V0cGFyYW1fam95c3RpY2tfYnJha2VfYnV0dG9uKCBpbnQgdmFsICk7CgppbnQgZ2V0
cGFyYW1fam95c3RpY2tfcGFkZGxlX2J1dHRvbigpOyB2b2lkIHNldHBhcmFtX2pveXN0aWNrX3Bh
ZGRsZV9idXR0b24oIGludCB2YWwgKTsKCmludCBnZXRwYXJhbV9qb3lzdGlja190cmlja19idXR0
b24oKTsgdm9pZCBzZXRwYXJhbV9qb3lzdGlja190cmlja19idXR0b24oIGludCB2YWwgKTsKCmlu
dCBnZXRwYXJhbV9qb3lzdGlja19jb250aW51ZV9idXR0b24oKTsgdm9pZCBzZXRwYXJhbV9qb3lz
dGlja19jb250aW51ZV9idXR0b24oIGludCB2YWwgKTsKCmludCBnZXRwYXJhbV9qb3lzdGlja194
X2F4aXMoKTsgdm9pZCBzZXRwYXJhbV9qb3lzdGlja194X2F4aXMoIGludCB2YWwgKTsKCmludCBn
ZXRwYXJhbV9qb3lzdGlja195X2F4aXMoKTsgdm9pZCBzZXRwYXJhbV9qb3lzdGlja195X2F4aXMo
IGludCB2YWwgKTsKCmludCBnZXRwYXJhbV9mb3YoKTsgdm9pZCBzZXRwYXJhbV9mb3YoIGludCB2
YWwgKTsKCmNoYXIqIGdldHBhcmFtX2RlYnVnKCk7IHZvaWQgc2V0cGFyYW1fZGVidWcoIGNoYXIq
IHZhbCApOwoKaW50IGdldHBhcmFtX3dhcm5pbmdfbGV2ZWwoKTsgdm9pZCBzZXRwYXJhbV93YXJu
aW5nX2xldmVsKCBpbnQgdmFsICk7CgppbnQgZ2V0cGFyYW1fZm9yd2FyZF9jbGlwX2Rpc3RhbmNl
KCk7IHZvaWQgc2V0cGFyYW1fZm9yd2FyZF9jbGlwX2Rpc3RhbmNlKCBpbnQgdmFsICk7CgppbnQg
Z2V0cGFyYW1fYmFja3dhcmRfY2xpcF9kaXN0YW5jZSgpOyB2b2lkIHNldHBhcmFtX2JhY2t3YXJk
X2NsaXBfZGlzdGFuY2UoIGludCB2YWwgKTsKCmludCBnZXRwYXJhbV90cmVlX2RldGFpbF9kaXN0
YW5jZSgpOyB2b2lkIHNldHBhcmFtX3RyZWVfZGV0YWlsX2Rpc3RhbmNlKCBpbnQgdmFsICk7Cgpp
bnQgZ2V0cGFyYW1fY291cnNlX2RldGFpbF9sZXZlbCgpOyB2b2lkIHNldHBhcmFtX2NvdXJzZV9k
ZXRhaWxfbGV2ZWwoIGludCB2YWwgKTsKCmJvb2xfdCBnZXRwYXJhbV90ZXJyYWluX2JsZW5kaW5n
KCk7IHZvaWQgc2V0cGFyYW1fdGVycmFpbl9ibGVuZGluZyggYm9vbF90IHZhbCApOwoKYm9vbF90
IGdldHBhcmFtX3BlcmZlY3RfdGVycmFpbl9ibGVuZGluZygpOyB2b2lkIHNldHBhcmFtX3BlcmZl
Y3RfdGVycmFpbl9ibGVuZGluZyggYm9vbF90IHZhbCApOwoKYm9vbF90IGdldHBhcmFtX3RlcnJh
aW5fZW52bWFwKCk7IHZvaWQgc2V0cGFyYW1fdGVycmFpbl9lbnZtYXAoIGJvb2xfdCB2YWwgKTsK
CmJvb2xfdCBnZXRwYXJhbV9kaXNhYmxlX2ZvZygpOyB2b2lkIHNldHBhcmFtX2Rpc2FibGVfZm9n
KCBib29sX3QgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fdXNlX2N2YSgpOyB2b2lkIHNldHBhcmFt
X3VzZV9jdmEoIGJvb2xfdCB2YWwgKTsKCmJvb2xfdCBnZXRwYXJhbV9jdmFfaGFjaygpOyB2b2lk
IHNldHBhcmFtX2N2YV9oYWNrKCBib29sX3QgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fbm9fYXVk
aW8oKTsgdm9pZCBzZXRwYXJhbV9ub19hdWRpbyggYm9vbF90IHZhbCApOwoKYm9vbF90IGdldHBh
cmFtX3NvdW5kX2VuYWJsZWQoKTsgdm9pZCBzZXRwYXJhbV9zb3VuZF9lbmFibGVkKCBib29sX3Qg
dmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fbXVzaWNfZW5hYmxlZCgpOyB2b2lkIHNldHBhcmFtX211
c2ljX2VuYWJsZWQoIGJvb2xfdCB2YWwgKTsKCmludCBnZXRwYXJhbV9zb3VuZF92b2x1bWUoKTsg
dm9pZCBzZXRwYXJhbV9zb3VuZF92b2x1bWUoIGludCB2YWwgKTsKCmludCBnZXRwYXJhbV9tdXNp
Y192b2x1bWUoKTsgdm9pZCBzZXRwYXJhbV9tdXNpY192b2x1bWUoIGludCB2YWwgKTsKCmludCBn
ZXRwYXJhbV9hdWRpb19mcmVxX21vZGUoKTsgdm9pZCBzZXRwYXJhbV9hdWRpb19mcmVxX21vZGUo
IGludCB2YWwgKTsKCmludCBnZXRwYXJhbV9hdWRpb19mb3JtYXRfbW9kZSgpOyB2b2lkIHNldHBh
cmFtX2F1ZGlvX2Zvcm1hdF9tb2RlKCBpbnQgdmFsICk7Cgpib29sX3QgZ2V0cGFyYW1fYXVkaW9f
c3RlcmVvKCk7IHZvaWQgc2V0cGFyYW1fYXVkaW9fc3RlcmVvKCBib29sX3QgdmFsICk7CgppbnQg
Z2V0cGFyYW1fYXVkaW9fYnVmZmVyX3NpemUoKTsgdm9pZCBzZXRwYXJhbV9hdWRpb19idWZmZXJf
c2l6ZSggaW50IHZhbCApOwoKYm9vbF90IGdldHBhcmFtX3RyYWNrX21hcmtzKCk7IHZvaWQgc2V0
cGFyYW1fdHJhY2tfbWFya3MoIGJvb2xfdCB2YWwgKTsKCmJvb2xfdCBnZXRwYXJhbV91aV9zbm93
KCk7IHZvaWQgc2V0cGFyYW1fdWlfc25vdyggYm9vbF90IHZhbCApOwoKYm9vbF90IGdldHBhcmFt
X3dyaXRlX2RpYWdub3N0aWNfbG9nKCk7IHZvaWQgc2V0cGFyYW1fd3JpdGVfZGlhZ25vc3RpY19s
b2coIGJvb2xfdCB2YWwgKTsKCgoKCn0KIyAxMjggInR1eHJhY2VyLmgiIDIKIyAxICJ0dXhfdHlw
ZXMuaCIgMQojIDIxICJ0dXhfdHlwZXMuaCIKZXh0ZXJuICJDIgp7CiMgMjM3ICJ0dXhfdHlwZXMu
aCIKfQojIDEyOSAidHV4cmFjZXIuaCIgMgojIDEgImFsZ2xpYi5oIiAxCiMgMjEgImFsZ2xpYi5o
IgpleHRlcm4gIkMiCnsKIyA0MyAiYWxnbGliLmgiCnZlY3Rvcl90IG1ha2VfdmVjdG9yKCBzY2Fs
YXJfdCB4LCBzY2FsYXJfdCB5LCBzY2FsYXJfdCB6ICk7CnBvaW50X3QgbWFrZV9wb2ludCggc2Nh
bGFyX3QgeCwgc2NhbGFyX3QgeSwgc2NhbGFyX3QgeiApOwpwb2ludDJkX3QgbWFrZV9wb2ludDJk
KCBzY2FsYXJfdCB4LCBzY2FsYXJfdCB5ICk7CmluZGV4MmRfdCBtYWtlX2luZGV4MmQoIGludCBp
LCBpbnQgaiApOwoKc2NhbGFyX3QgZG90X3Byb2R1Y3QoIHZlY3Rvcl90IHYxLCB2ZWN0b3JfdCB2
MiApOwp2ZWN0b3JfdCBzY2FsZV92ZWN0b3IoIHNjYWxhcl90IHMsIHZlY3Rvcl90IHYgKTsKCnZl
Y3Rvcl90IGFkZF92ZWN0b3JzKCB2ZWN0b3JfdCB2MSwgdmVjdG9yX3QgdjIgKTsKcG9pbnRfdCBt
b3ZlX3BvaW50KCBwb2ludF90IHYxLCB2ZWN0b3JfdCB2MiApOwoKdmVjdG9yX3Qgc3VidHJhY3Rf
cG9pbnRzKCBwb2ludF90IHYxLCBwb2ludF90IHYyICk7CnZlY3Rvcl90IHN1YnRyYWN0X3ZlY3Rv
cnMoIHZlY3Rvcl90IHYxLCB2ZWN0b3JfdCB2MiApOwpwb2ludF90IHBvaW50X21pbnVzX3ZlY3Rv
ciggcG9pbnRfdCB2MSwgdmVjdG9yX3QgdjIgKTsKdmVjdG9yX3QgcHJvamVjdF9pbnRvX3BsYW5l
KCB2ZWN0b3JfdCBubWwsIHZlY3Rvcl90IHYgKTsKCnNjYWxhcl90IG5vcm1hbGl6ZV92ZWN0b3Io
IHZlY3Rvcl90ICp2ICk7Cgp2ZWN0b3JfdCBjcm9zc19wcm9kdWN0KHZlY3Rvcl90IHUsIHZlY3Rv
cl90IHYpOwp2ZWN0b3JfdCB0cmFuc2Zvcm1fdmVjdG9yKG1hdHJpeGdsX3QgbWF0LCB2ZWN0b3Jf
dCB2KTsKdmVjdG9yX3QgdHJhbnNmb3JtX25vcm1hbCh2ZWN0b3JfdCBuLCBtYXRyaXhnbF90IG1h
dCk7CnBvaW50X3QgdHJhbnNmb3JtX3BvaW50KG1hdHJpeGdsX3QgbWF0LCBwb2ludF90IHApOwoK
CnBsYW5lX3QgbWFrZV9wbGFuZSggc2NhbGFyX3QgbngsIHNjYWxhcl90IG55LCBzY2FsYXJfdCBu
eiwgc2NhbGFyX3QgZCApOwpib29sX3QgaW50ZXJzZWN0X3BsYW5lcyggcGxhbmVfdCBzMSwgcGxh
bmVfdCBzMiwgcGxhbmVfdCBzMywgcG9pbnRfdCAqcCApOwpzY2FsYXJfdCBkaXN0YW5jZV90b19w
bGFuZSggcGxhbmVfdCBwbGFuZSwgcG9pbnRfdCBwdCApOwoKCnZvaWQgbWFrZV9pZGVudGl0eV9t
YXRyaXgobWF0cml4Z2xfdCBoKTsKdm9pZCBtdWx0aXBseV9tYXRyaWNlcyhtYXRyaXhnbF90IHJl
dCwgbWF0cml4Z2xfdCBtYXQxLCBtYXRyaXhnbF90IG1hdDIpOwp2b2lkIHRyYW5zcG9zZV9tYXRy
aXgoIG1hdHJpeGdsX3QgbWF0LCBtYXRyaXhnbF90IHRyYW5zICk7CgoKdm9pZCBtYWtlX3JvdGF0
aW9uX21hdHJpeCggbWF0cml4Z2xfdCBtYXQsIHNjYWxhcl90IGFuZ2xlLCBjaGFyIGF4aXMgKTsK
dm9pZCBtYWtlX3RyYW5zbGF0aW9uX21hdHJpeCggbWF0cml4Z2xfdCBtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNjYWxhcl90IHgsIHNjYWxhcl90IHksIHNjYWxhcl90IHog
KTsKdm9pZCBtYWtlX3NjYWxpbmdfbWF0cml4KCBtYXRyaXhnbF90IG1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzY2FsYXJfdCB4LCBzY2FsYXJfdCB5LCBzY2FsYXJfdCB6ICk7CnZv
aWQgbWFrZV9jaGFuZ2Vfb2ZfYmFzaXNfbWF0cml4KCBtYXRyaXhnbF90IG1hdCwgbWF0cml4Z2xf
dCBpbnZNYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yX3QgdzEsIHZl
Y3Rvcl90IHcyLCB2ZWN0b3JfdCB3MyApOwoKdm9pZCBtYWtlX3JvdGF0aW9uX2Fib3V0X3ZlY3Rv
cl9tYXRyaXgoIG1hdHJpeGdsX3QgbWF0LCB2ZWN0b3JfdCB1LCBzY2FsYXJfdCBhbmdsZSApOwoK
cXVhdGVybmlvbl90IG1ha2VfcXVhdGVybmlvbiggc2NhbGFyX3QgeCwgc2NhbGFyX3QgeSwgc2Nh
bGFyX3Qgeiwgc2NhbGFyX3QgdyApOwpxdWF0ZXJuaW9uX3QgbXVsdGlwbHlfcXVhdGVybmlvbnMo
IHF1YXRlcm5pb25fdCBxLCBxdWF0ZXJuaW9uX3QgciApOwpxdWF0ZXJuaW9uX3QgYWRkX3F1YXRl
cm5pb25zKCBxdWF0ZXJuaW9uX3QgcSwgcXVhdGVybmlvbl90IHIgKTsKcXVhdGVybmlvbl90IHNj
YWxlX3F1YXRlcm5pb24oIHNjYWxhcl90IHMsIHF1YXRlcm5pb25fdCBxICk7CnF1YXRlcm5pb25f
dCBxdWF0ZXJuaW9uX2Nvbmp1Z2F0ZSggcXVhdGVybmlvbl90IHEgKTsKdm9pZCBtYWtlX21hdHJp
eF9mcm9tX3F1YXRlcm5pb24oIG1hdHJpeGdsX3QgbWF0LCBxdWF0ZXJuaW9uX3QgcSApOwpxdWF0
ZXJuaW9uX3QgbWFrZV9xdWF0ZXJuaW9uX2Zyb21fbWF0cml4KCBtYXRyaXhnbF90IG1hdCApOwpx
dWF0ZXJuaW9uX3QgbWFrZV9yb3RhdGlvbl9xdWF0ZXJuaW9uKCB2ZWN0b3JfdCBzLCB2ZWN0b3Jf
dCB0ICk7CnF1YXRlcm5pb25fdCBpbnRlcnBvbGF0ZV9xdWF0ZXJuaW9ucyggcXVhdGVybmlvbl90
IHEsIHF1YXRlcm5pb25fdCByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNjYWxhcl90IHQgKTsKdmVjdG9yX3Qgcm90YXRlX3ZlY3RvciggcXVhdGVybmlvbl90IHEsIHZl
Y3Rvcl90IHYgKTsKCgoKCgoKaW50IGN1dF90cmlhbmdsZSggdHJpYW5nbGVfdCAqcmVwbGFjZSwg
dHJpYW5nbGVfdCAqbmV3MSwgdHJpYW5nbGVfdCAqbmV3MiwKICAgICAgICAgICAgICAgICAgbGlu
ZV90IGN1dF9saW5lICk7CgoKCgp9CiMgMTMwICJ0dXhyYWNlci5oIiAyCiMgMSAiZGVidWcuaCIg
MQojIDIxICJkZWJ1Zy5oIgpleHRlcm4gIkMiCnsKCgojIDEgInR1eHJhY2VyLmgiIDEKIyAyNiAi
ZGVidWcuaCIgMgoKCgoKdHlwZWRlZiBlbnVtIHsKICAgIERFQlVHX09ERSwKICAgIERFQlVHX1FV
QURUUkVFLAogICAgREVCVUdfQ09OVFJPTCwKICAgIERFQlVHX1NPVU5ELAogICAgREVCVUdfVEVY
VFVSRSwKICAgIERFQlVHX1ZJRVcsCiAgICBERUJVR19HTF9FWFQsCiAgICBERUJVR19GT05ULAog
ICAgREVCVUdfVUksCiAgICBERUJVR19HQU1FX0xPR0lDLAogICAgREVCVUdfU0FWRSwKICAgIERF
QlVHX0pPWVNUSUNLLAogICAgREVCVUdfR0xfSU5GTywKICAgIE5VTV9ERUJVR19NT0RFUwp9IGRl
YnVnX21vZGVfdDsKCnZvaWQgaW5pdF9kZWJ1ZygpOwpib29sX3QgZGVidWdfbW9kZV9pc19hY3Rp
dmUoIGRlYnVnX21vZGVfdCBtb2RlICk7CnZvaWQgZGVidWdfbW9kZV9zZXRfYWN0aXZlKCBkZWJ1
Z19tb2RlX3QgbW9kZSwgYm9vbF90IGFjdGl2ZSApOwp2b2lkIHByaW50X2RlYnVnKCBkZWJ1Z19t
b2RlX3QgbW9kZSwgY2hhciAqZm10LCAuLi4gKTsKdm9pZCBzZXR1cF9kaWFnbm9zdGljX2xvZygp
OwojIDc3ICJkZWJ1Zy5oIgp9CiMgMTMxICJ0dXhyYWNlci5oIiAyCiMgMSAiZXJyb3JfdXRpbC5o
IiAxCiMgMjEgImVycm9yX3V0aWwuaCIKZXh0ZXJuICJDIgp7CiMgMzcgImVycm9yX3V0aWwuaCIK
dm9pZCBwcmludF93YXJuaW5nKCBpbnQgd2FybmluZ19sZXZlbCwgY2hhciAqZm10LCAuLi4gKTsK
dm9pZCBoYW5kbGVfZXJyb3IoIGludCBleGl0X2NvZGUsIGNoYXIgKmZtdCwgLi4uICk7CnZvaWQg
aGFuZGxlX3N5c3RlbV9lcnJvciggaW50IGV4aXRfY29kZSwgY2hhciAqZm10LCAuLi4gKTsKCgoK
Cn0KIyAxMzIgInR1eHJhY2VyLmgiIDIKIyAxODcgInR1eHJhY2VyLmgiCmV4dGVybiAiQyIKewoK
Cgp0eXBlZGVmIGVudW0gewogICAgQUxMX01PREVTID0gLTIsCiAgICBOT19NT0RFID0gLTEsCiAg
ICBTUExBU0ggPSAwLAogICAgR0FNRV9UWVBFX1NFTEVDVCwKICAgIEVWRU5UX1NFTEVDVCwKICAg
IFJBQ0VfU0VMRUNULAogICAgTE9BRElORywKICAgIElOVFJPLAogICAgUkFDSU5HLAogICAgR0FN
RV9PVkVSLAogICAgUEFVU0VELAogICAgUkVTRVQsCiAgICBDUkVESVRTLAogICAgTlVNX0dBTUVf
TU9ERVMKfSBnYW1lX21vZGVfdDsKCgp0eXBlZGVmIGVudW0gewogICAgRElGRklDVUxUWV9MRVZF
TF9FQVNZLAogICAgRElGRklDVUxUWV9MRVZFTF9OT1JNQUwsCiAgICBESUZGSUNVTFRZX0xFVkVM
X0hBUkQsCiAgICBESUZGSUNVTFRZX0xFVkVMX0lOU0FORSwKICAgIERJRkZJQ1VMVFlfTlVNX0xF
VkVMUwp9IGRpZmZpY3VsdHlfbGV2ZWxfdDsKCgp0eXBlZGVmIGVudW0gewogICAgUkFDRV9DT05E
SVRJT05TX1NVTk5ZLAogICAgUkFDRV9DT05ESVRJT05TX0NMT1VEWSwKICAgIFJBQ0VfQ09ORElU
SU9OU19OSUdIVCwKICAgIFJBQ0VfQ09ORElUSU9OU19OVU1fQ09ORElUSU9OUwp9IHJhY2VfY29u
ZGl0aW9uc190OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgKmNvdXJzZTsKICAgIGNoYXIg
Km5hbWU7CiAgICBjaGFyICpkZXNjcmlwdGlvbjsKICAgIGludCBoZXJyaW5nX3JlcVtESUZGSUNV
TFRZX05VTV9MRVZFTFNdOwogICAgc2NhbGFyX3QgdGltZV9yZXFbRElGRklDVUxUWV9OVU1fTEVW
RUxTXTsKICAgIGludCBzY29yZV9yZXFbRElGRklDVUxUWV9OVU1fTEVWRUxTXTsKICAgIGJvb2xf
dCBtaXJyb3JlZDsKICAgIHJhY2VfY29uZGl0aW9uc190IGNvbmRpdGlvbnM7CiAgICBib29sX3Qg
d2luZHk7CiAgICBib29sX3Qgc25vd2luZzsKfSByYWNlX2RhdGFfdDsKCgp0eXBlZGVmIHN0cnVj
dCB7CiAgICBpbnQgbnVtOwogICAgY2hhciBlbGV2X2ZpbGVbNTEyXTsKICAgIGNoYXIgdGVycmFp
bl9maWxlWzUxMl07CiAgICBjaGFyIHRyZWVfZmlsZVs1MTJdOwp9IGNvdXJzZV9kYXRhX3Q7CgoK
dHlwZWRlZiBlbnVtIHsKICAgIEJFSElORCwKICAgIEZPTExPVywKICAgIEFCT1ZFLAogICAgTlVN
X1ZJRVdfTU9ERVMKfSB2aWV3X21vZGVfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICB2aWV3X21v
ZGVfdCBtb2RlOwogICAgcG9pbnRfdCBwb3M7CiAgICBwb2ludF90IHBseXJfcG9zOwogICAgdmVj
dG9yX3QgZGlyOwogICAgdmVjdG9yX3QgdXA7CiAgICBtYXRyaXhnbF90IGludl92aWV3X21hdDsK
ICAgIGJvb2xfdCBpbml0aWFsaXplZDsKfSB2aWV3X3Q7CgoKdHlwZWRlZiBlbnVtIHsKICAgIEtF
WUJPQVJEID0gMCwKICAgIE1PVVNFID0gMSwKICAgIEpPWVNUSUNLID0gMgp9IGNvbnRyb2xfbW9k
ZV90OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNvbnRyb2xfbW9kZV90IG1vZGU7CiAgICBzY2Fs
YXJfdCB0dXJuX2ZhY3Q7CiAgICBzY2FsYXJfdCB0dXJuX2FuaW1hdGlvbjsKICAgIGJvb2xfdCBp
c19icmFraW5nOwogICAgYm9vbF90IGlzX3BhZGRsaW5nOwogICAgc2NhbGFyX3QgcGFkZGxlX3Rp
bWU7CiAgICBib29sX3QgYmVnaW5fanVtcDsKICAgIGJvb2xfdCBqdW1waW5nOwogICAgYm9vbF90
IGp1bXBfY2hhcmdpbmc7CiAgICBzY2FsYXJfdCBqdW1wX2FtdDsKICAgIHNjYWxhcl90IGp1bXBf
c3RhcnRfdGltZTsKICAgIGJvb2xfdCBiYXJyZWxfcm9sbF9sZWZ0OwogICAgYm9vbF90IGJhcnJl
bF9yb2xsX3JpZ2h0OwogICAgc2NhbGFyX3QgYmFycmVsX3JvbGxfZmFjdG9yOwogICAgYm9vbF90
IGZyb250X2ZsaXA7CiAgICBib29sX3QgYmFja19mbGlwOwogICAgc2NhbGFyX3QgZmxpcF9mYWN0
b3I7Cn0gY29udHJvbF90OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgKm5hbWU7CiAgICBp
bnQgbGl2ZXM7CiAgICBwb2ludF90IHBvczsKICAgIHZlY3Rvcl90IHZlbDsKICAgIHF1YXRlcm5p
b25fdCBvcmllbnRhdGlvbjsKICAgIGJvb2xfdCBvcmllbnRhdGlvbl9pbml0aWFsaXplZDsKICAg
IHZlY3Rvcl90IHBsYW5lX25tbDsKCiAgICB2ZWN0b3JfdCBkaXJlY3Rpb247CiAgICB2ZWN0b3Jf
dCBuZXRfZm9yY2U7CiAgICB2ZWN0b3JfdCBub3JtYWxfZm9yY2U7CiAgICBib29sX3QgYWlyYm9y
bmU7CiAgICBib29sX3QgY29sbGlzaW9uOwogICAgY29udHJvbF90IGNvbnRyb2w7CiAgICB2aWV3
X3QgdmlldzsKICAgIGludCBoZXJyaW5nOwogICAgaW50IHNjb3JlOwp9IHBsYXllcl9kYXRhX3Q7
CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgZ2FtZV9tb2RlX3QgbW9kZTsKICAgIGdhbWVfbW9kZV90
IHByZXZfbW9kZTsKICAgIHNjYWxhcl90IHRpbWU7CiAgICBzY2FsYXJfdCB0aW1lX3N0ZXA7Cgog
ICAgaW50IG51bV9wbGF5ZXJzOwogICAgcGxheWVyX2RhdGFfdCBwbGF5ZXJbMV07CiAgICBUY2xf
SW50ZXJwICp0Y2xfaW50ZXJwOwoKICAgIGRpZmZpY3VsdHlfbGV2ZWxfdCBkaWZmaWN1bHR5Owog
ICAgY2hhciAqY3VycmVudF9ldmVudDsKICAgIGNoYXIgKmN1cnJlbnRfY3VwOwogICAgaW50IGN1
cnJlbnRfcmFjZTsKICAgIGNvdXJzZV9kYXRhX3QgY291cnNlOwogICAgcmFjZV9kYXRhX3QgcmFj
ZTsKICAgIGludCBjdXBfcmFjZXNfd29uOwoKICAgIGJvb2xfdCBwcmFjdGljaW5nOwogICAgYm9v
bF90IHJhY2VfYWJvcnRlZDsKICAgIHNjYWxhcl90IHNlY3Nfc2luY2Vfc3RhcnQ7Cn0gZ2FtZV9k
YXRhX3Q7CgpleHRlcm4gZ2FtZV9kYXRhX3QgZ19nYW1lOwoKCgoKfQojIDE0ICJxdWFkdHJlZS5j
cHAiIDIKIyAxICJ0ZXh0dXJlcy5oIiAxCiMgMjEgInRleHR1cmVzLmgiCmV4dGVybiAiQyIKewoK
CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgR0x1aW50IHRleHR1cmVfaWQ7CiAgICBpbnQgcmVw
ZWF0YWJsZTsKICAgIGludCByZWZfY291bnQ7Cn0gdGV4dHVyZV9ub2RlX3Q7Cgp2b2lkIGluaXRf
dGV4dHVyZXMoKTsKCmJvb2xfdCBsb2FkX2FuZF9iaW5kX3RleHR1cmUoIGNoYXIgKmJpbmRpbmcs
IGNoYXIgKmZpbGVuYW1lICk7Cgpib29sX3QgbG9hZF90ZXh0dXJlKCBjaGFyICp0ZXhuYW1lLCBj
aGFyICpmaWxlbmFtZSwgaW50IHJlcGVhdGFibGUgKTsKYm9vbF90IGdldF90ZXh0dXJlKCBjaGFy
ICp0ZXhuYW1lLCB0ZXh0dXJlX25vZGVfdCAqKnRleCApOwpib29sX3QgZGVsX3RleHR1cmUoIGNo
YXIgKnRleG5hbWUgKTsKCmJvb2xfdCBiaW5kX3RleHR1cmUoIGNoYXIgKmJpbmRpbmcsIGNoYXIg
KnRleG5hbWUgKTsKYm9vbF90IGdldF90ZXh0dXJlX2JpbmRpbmcoIGNoYXIgKmJpbmRpbmcsIEdM
dWludCAqdGV4aWQgKTsKYm9vbF90IHVuYmluZF90ZXh0dXJlKCBjaGFyICpiaW5kaW5nICk7Cgp2
b2lkIGdldF9jdXJyZW50X3RleHR1cmVfZGltZW5zaW9ucyggaW50ICp3aWR0aCwgaW50ICpoZWln
aHQgKTsKCmJvb2xfdCBmbHVzaF90ZXh0dXJlcyh2b2lkKTsKCnZvaWQgcmVnaXN0ZXJfdGV4dHVy
ZV9jYWxsYmFja3MoVGNsX0ludGVycCAqaXApOwoKCgoKfQojIDE1ICJxdWFkdHJlZS5jcHAiIDIK
IyAxICJjb3Vyc2VfbG9hZC5oIiAxCiMgMjEgImNvdXJzZV9sb2FkLmgiCmV4dGVybiAiQyIKewoK
CiMgMSAidHV4cmFjZXIuaCIgMQojIDI2ICJjb3Vyc2VfbG9hZC5oIiAyCiMgMSAibGlzdC5oIiAx
CiMgMjEgImxpc3QuaCIKZXh0ZXJuICJDIgp7CiMgNzYgImxpc3QuaCIKfQojIDI3ICJjb3Vyc2Vf
bG9hZC5oIiAyCiMgNDAgImNvdXJzZV9sb2FkLmgiCnZvaWQgbG9hZF9jb3Vyc2UoIGNoYXIgKmNv
dXJzZSApOwoKc2NhbGFyX3QgKmdldF9jb3Vyc2VfZWxldl9kYXRhKCk7CnRlcnJhaW5fdCAqZ2V0
X2NvdXJzZV90ZXJyYWluX2RhdGEoKTsKc2NhbGFyX3QgZ2V0X2NvdXJzZV9hbmdsZSgpOwp2b2lk
IGdldF9jb3Vyc2VfZGltZW5zaW9ucyggc2NhbGFyX3QgKndpZHRoLCBzY2FsYXJfdCAqbGVuZ3Ro
ICk7CnZvaWQgZ2V0X3BsYXlfZGltZW5zaW9ucyggc2NhbGFyX3QgKndpZHRoLCBzY2FsYXJfdCAq
bGVuZ3RoICk7CnNjYWxhcl90IGdldF90ZXJyYWluX2Jhc2VfaGVpZ2h0KCBzY2FsYXJfdCBkaXN0
YW5jZSApOwpzY2FsYXJfdCBnZXRfdGVycmFpbl9tYXhfaGVpZ2h0KCBzY2FsYXJfdCBkaXN0YW5j
ZSApOwp2b2lkIGdldF9jb3Vyc2VfZGl2aXNpb25zKCBpbnQgKm54LCBpbnQgKm55ICk7CnRyZWVf
dCAqZ2V0X3RyZWVfbG9jcygpOwppbnQgZ2V0X251bV90cmVlcygpOwp2b2lkIHNldF9zdGFydF9w
dCggcG9pbnQyZF90IHAgKTsKcG9pbnQyZF90IGdldF9zdGFydF9wdCgpOwpwb2x5aGVkcm9uX3Qg
Z2V0X3RyZWVfcG9seWhlZHJvbiggaW50IHR5cGUgKTsKY2hhciAqZ2V0X3RyZWVfbmFtZShpbnQg
dHlwZSk7CmNoYXIgKmdldF9jb3Vyc2VfYXV0aG9yKCk7CmNoYXIgKmdldF9jb3Vyc2VfbmFtZSgp
OwpsaWdodF90ICpnZXRfY291cnNlX2xpZ2h0cygpOwp2b2lkIHNldF9jb3Vyc2VfbWlycm9yaW5n
KCBib29sX3Qgc3RhdGUgKTsKYm9vbF90IGdldF9jb3Vyc2VfbWlycm9yaW5nKCApOwp2b2lkIGZp
bGxfZ2xfYXJyYXlzKCk7CnZvaWQgZ2V0X2dsX2FycmF5cyggR0x1Ynl0ZSAqKnZlcnRleF9ub3Jt
YWxfYXJyICk7Cgp2b2lkIHJlZ2lzdGVyX2NvdXJzZV9sb2FkX3RjbF9jYWxsYmFja3MoIFRjbF9J
bnRlcnAgKmludGVycCApOwoKaXRlbV90ICpnZXRfaXRlbV9sb2NzKCk7CmludCBnZXRfbnVtX2l0
ZW1zKCk7CmNoYXIgKmdldF9pdGVtX25hbWUoaW50IHR5cGUpOwoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgY2hhciAqIG5hbWU7CiAgICBzY2FsYXJfdCBkaWFtLCBoZWlnaHQ7CiAgICBzY2FsYXJfdCB2
YXJ5OwogICAgcG9seWhlZHJvbl90IHBvbHk7CiAgICBjaGFyICogdGV4dHVyZTsKICAgIGludCBu
dW1fdHJlZXM7CiAgICB1bnNpZ25lZCBjaGFyIHJlZCwgZ3JlZW4sIGJsdWU7CiAgICBsaXN0X3Qg
cG9zOwogICAgbGlzdF9lbGVtX3QgaW5zZXJ0X3BvczsKfSB0cmVlX3R5cGVfdDsKCnR5cGVkZWYg
c3RydWN0IHsKICAgIGNoYXIgKiBuYW1lOwogICAgY2hhciAqIHRleHR1cmU7CiAgICBzY2FsYXJf
dCBkaWFtLCBoZWlnaHQ7CiAgICBzY2FsYXJfdCBhYm92ZV9ncm91bmQ7CiAgICB1bnNpZ25lZCBj
aGFyIHJlZCwgZ3JlZW4sIGJsdWU7CiAgICBib29sX3Qgbm9jb2xsaXNpb247CiAgICBib29sX3Qg
cmVzZXRfcG9pbnQ7CiAgICBsaXN0X3QgcG9zOwogICAgbGlzdF9lbGVtX3QgaW5zZXJ0X3BvczsK
ICAgIGludCBudW1faXRlbXM7CiAgICBib29sX3QgdXNlX25vcm1hbDsKICAgIHZlY3Rvcl90IG5v
cm1hbDsKfSBpdGVtX3R5cGVfdDsKCml0ZW1fdHlwZV90ICogZ2V0X2l0ZW1fdHlwZXMoKTsKaW50
IGdldF9udW1faXRlbV90eXBlcygpOwoKCgoKfQojIDE2ICJxdWFkdHJlZS5jcHAiIDIKIyAxICJm
b2cuaCIgMQojIDIxICJmb2cuaCIKZXh0ZXJuICJDIgp7CgoKCgoKIyAxICJ0dXhyYWNlci5oIiAx
CiMgMjkgImZvZy5oIiAyCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBib29sX3QgaXNfb247CiAgICBH
TGludCBtb2RlOwogICAgR0xmbG9hdCBkZW5zaXR5OwogICAgR0xmbG9hdCBzdGFydDsKICAgIEdM
ZmxvYXQgZW5kOwogICAgR0xmbG9hdCBjb2xvdXJbNF07Cn0gZm9nX3Q7Cgp2b2lkIHJlc2V0X2Zv
ZygpOwp2b2lkIHNldHVwX2ZvZygpOwp2b2lkIGRpc2FibGVfZm9nKCk7CmJvb2xfdCBpc19mb2df
b24oKTsKR0xmbG9hdCogZ2V0X2ZvZ19jb2xvdXIoKTsKdm9pZCByZWdpc3Rlcl9mb2dfY2FsbGJh
Y2tzKCBUY2xfSW50ZXJwICppcCApOwoKCgoKfQojIDE3ICJxdWFkdHJlZS5jcHAiIDIKIyAxICJn
bF91dGlsLmgiIDEKIyAyMSAiZ2xfdXRpbC5oIgpleHRlcm4gIkMiCnsKCgoKCgojIDEgInR1eHJh
Y2VyLmgiIDEKIyAyOSAiZ2xfdXRpbC5oIiAyCiMgNTIgImdsX3V0aWwuaCIKIyAxICIvdXNyL2xv
Y2FsL2luY2x1ZGUvR0wvZ2xleHQuaCIgMSAzCiMgNTMgImdsX3V0aWwuaCIgMgoKCgoKCmV4dGVy
biBQRk5HTExPQ0tBUlJBWVNFWFRQUk9DIGdsTG9ja0FycmF5c0VYVF9wOwpleHRlcm4gUEZOR0xV
TkxPQ0tBUlJBWVNFWFRQUk9DIGdsVW5sb2NrQXJyYXlzRVhUX3A7Cgp0eXBlZGVmIGVudW0gewog
ICAgR1VJLAogICAgR0FVR0VfQkFSUywKICAgIFRFWEZPTlQsCiAgICBURVhULAogICAgQ09VUlNF
LAogICAgVFJFRVMsCiAgICBQQVJUSUNMRVMsCiAgICBQQVJUSUNMRV9TSEFET1dTLAogICAgQkFD
S0dST1VORCwKICAgIFRVWCwKICAgIFRVWF9TSEFET1csCiAgICBTS1ksCiAgICBGT0dfUExBTkUs
CiAgICBUUkFDS19NQVJLUywKICAgIE9WRVJMQVlTLAogICAgU1BMQVNIX1NDUkVFTgp9IFJlbmRl
ck1vZGU7Cgp2b2lkIHNldF9nbF9vcHRpb25zKCBSZW5kZXJNb2RlIG1vZGUgKTsKCnZvaWQgY2hl
Y2tfZ2xfZXJyb3IoKTsKCnZvaWQgY29weV90b19nbGZsb2F0X2FycmF5KCBHTGZsb2F0IGRlc3Rb
XSwgc2NhbGFyX3Qgc3JjW10sIGludCBuICk7Cgp2b2lkIGluaXRfZ2xmbG9hdF9hcnJheSggaW50
IG51bSwgR0xmbG9hdCBhcnJbXSwgLi4uICk7Cgp2b2lkIGluaXRfb3BlbmdsX2V4dGVuc2lvbnMo
KTsKCnZvaWQgcHJpbnRfZ2xfaW5mbygpOwoKCgoKfQojIDE4ICJxdWFkdHJlZS5jcHAiIDIKIyAx
ICJjb3Vyc2VfcmVuZGVyLmgiIDEKIyAyMSAiY291cnNlX3JlbmRlci5oIgpleHRlcm4gIkMiCnsK
CgoKCgp2ZWN0b3JfdCogZ2V0X2NvdXJzZV9ub3JtYWxzKCk7CnZvaWQgcmVzZXRfY291cnNlX2xp
c3QoKTsKdm9pZCBjYWxjX25vcm1hbHMoKTsKdm9pZCBzZXR1cF9jb3Vyc2VfdGV4X2dlbigpOwp2
b2lkIHNldHVwX2NvdXJzZV9saWdodGluZygpOwp2b2lkIHJlbmRlcl9jb3Vyc2UoKTsKdm9pZCBk
cmF3X2JhY2tncm91bmQoc2NhbGFyX3QgZm92LCBzY2FsYXJfdCBhc3BlY3QgKTsKdm9pZCBkcmF3
X3NreShwb2ludF90IHBvcyk7CnZvaWQgZHJhd190cmVlcygpIDsKdm9pZCBzZXRfY291cnNlX2Ns
aXBwaW5nKCBib29sX3Qgc3RhdGUgKTsKdm9pZCBzZXRfY291cnNlX2V5ZV9wb2ludCggcG9pbnRf
dCBwdCApOwp2b2lkIHNldF9jb3Vyc2VfZm9nKCBib29sX3Qgc3RhdGUpOwp2b2lkIGRyYXdfZm9n
X3BsYW5lKCk7CgoKCgp9CiMgMTkgInF1YWR0cmVlLmNwcCIgMgoKIyAxICJxdWFkdHJlZS5ocHAi
IDEKIyAxOCAicXVhZHRyZWUuaHBwIgojIDEgInR1eHJhY2VyLmgiIDEKIyAxOSAicXVhZHRyZWUu
aHBwIiAyCiMgMSAidmlld2ZydXN0dW0uaCIgMQojIDIxICJ2aWV3ZnJ1c3R1bS5oIgpleHRlcm4g
IkMiCnsKCgoKCgojIDEgInR1eHJhY2VyLmgiIDEKIyAyOSAidmlld2ZydXN0dW0uaCIgMgoKdHlw
ZWRlZiBlbnVtIHsKICAgIE5vQ2xpcCwKICAgIFNvbWVDbGlwLAogICAgTm90VmlzaWJsZQp9IGNs
aXBfcmVzdWx0X3Q7Cgp2b2lkIHNldHVwX3ZpZXdfZnJ1c3R1bSggcGxheWVyX2RhdGFfdCAqcGx5
ciwgc2NhbGFyX3QgbmVhciwgc2NhbGFyX3QgZmFyICk7CgpjbGlwX3Jlc3VsdF90IGNsaXBfYWFi
Yl90b192aWV3X2ZydXN0dW0oIHBvaW50X3QgbWluLCBwb2ludF90IG1heCApOwoKcGxhbmVfdCBn
ZXRfZmFyX2NsaXBfcGxhbmUoKTsKcGxhbmVfdCBnZXRfbGVmdF9jbGlwX3BsYW5lKCk7CnBsYW5l
X3QgZ2V0X3JpZ2h0X2NsaXBfcGxhbmUoKTsKcGxhbmVfdCBnZXRfYm90dG9tX2NsaXBfcGxhbmUo
KTsKCgoKCn0KIyAyMCAicXVhZHRyZWUuaHBwIiAyCgp0eXBlZGVmIGVudW0gewogICAgRWFzdCwK
ICAgIFNvdXRoLAogICAgQ2VudGVyCn0gdmVydGV4X2xvY190OwoKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCB1aW50MTY7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMjsKdHlwZWRlZiBzaG9ydCBp
bnQxNjsKdHlwZWRlZiBpbnQgaW50MzI7CgoKc3RydWN0IEhlaWdodE1hcEluZm8gewogICAgc2Nh
bGFyX3QgKkRhdGE7CiAgICBpbnQgWE9yaWdpbiwgWk9yaWdpbjsKICAgIGludCBYU2l6ZSwgWlNp
emU7CiAgICBpbnQgUm93V2lkdGg7CiAgICBpbnQgU2NhbGU7CgogICAgZmxvYXQgU2FtcGxlKGlu
dCB4LCBpbnQgeikgY29uc3Q7Cn07CgoKc3RydWN0IFZlcnRJbmZvIHsKICAgIGZsb2F0IFk7Cn07
CgoKc3RydWN0IHF1YWRzcXVhcmU7CgoKCgpjbGFzcyBxdWFkY29ybmVyZGF0YSB7CnB1YmxpYzoK
ICAgIGNvbnN0IHF1YWRjb3JuZXJkYXRhKiBQYXJlbnQ7CiAgICBxdWFkc3F1YXJlKiBTcXVhcmU7
CiAgICBpbnQgQ2hpbGRJbmRleDsKICAgIGludCBMZXZlbDsKICAgIGludCB4b3JnLCB6b3JnOwog
ICAgVmVydEluZm8gVmVydHNbNF07Cn07CgoKc3RydWN0IHF1YWRzcXVhcmUgewogICAgcXVhZHNx
dWFyZSogQ2hpbGRbNF07CgogICAgVmVydEluZm8gVmVydGV4WzVdOwogICAgZmxvYXQgRXJyb3Jb
Nl07CiAgICBmbG9hdCBNaW5ZLCBNYXhZOwogICAgdW5zaWduZWQgY2hhciBFbmFibGVkRmxhZ3M7
CiAgICB1bnNpZ25lZCBjaGFyIFN1YkVuYWJsZWRDb3VudFsyXTsKICAgIGJvb2wgU3RhdGljOwog
ICAgYm9vbCBEaXJ0eTsKCiAgICBib29sIEZvcmNlRWFzdFZlcnQ7CiAgICBib29sIEZvcmNlU291
dGhWZXJ0OwoKICAgIHN0YXRpYyBkb3VibGUgU2NhbGVYLCBTY2FsZVo7CiAgICBzdGF0aWMgaW50
IFJvd1NpemUsIE51bVJvd3M7CiAgICBzdGF0aWMgdGVycmFpbl90ICpUZXJyYWluOwogICAgc3Rh
dGljIEdMdWludCBUZXhJZFtOdW1UZXJyYWluc107CiAgICBzdGF0aWMgR0x1aW50IEVudm1hcFRl
eElkOwoKICAgIHN0YXRpYyBHTHVpbnQgKlZlcnRleEFycmF5SW5kaWNlczsKICAgIHN0YXRpYyBH
THVpbnQgVmVydGV4QXJyYXlDb3VudGVyOwogICAgc3RhdGljIEdMdWludCBWZXJ0ZXhBcnJheU1p
bklkeDsKICAgIHN0YXRpYyBHTHVpbnQgVmVydGV4QXJyYXlNYXhJZHg7CgogICAgc3RhdGljIHZv
aWQgTWFrZVRyaSggaW50IGEsIGludCBiLCBpbnQgYywgaW50IHRlcnJhaW4gKTsKICAgIHN0YXRp
YyB2b2lkIE1ha2VTcGVjaWFsVHJpKCBpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgdGVycmFpbiAp
OwogICAgc3RhdGljIHZvaWQgTWFrZU5vQmxlbmRUcmkoIGludCBhLCBpbnQgYiwgaW50IGMsIGlu
dCB0ZXJyYWluICk7CgogICAgc3RhdGljIHZvaWQgRHJhd1RyaXMoKTsKICAgIHN0YXRpYyB2b2lk
IERyYXdFbnZtYXBUcmlzKCk7CiAgICBzdGF0aWMgdm9pZCBJbml0QXJyYXlDb3VudGVycygpOwoK
CgogICAgcXVhZHNxdWFyZShxdWFkY29ybmVyZGF0YSogcGNkKTsKICAgIH5xdWFkc3F1YXJlKCk7
CgogICAgdm9pZCBBZGRIZWlnaHRNYXAoY29uc3QgcXVhZGNvcm5lcmRhdGEmIGNkLCBjb25zdCBI
ZWlnaHRNYXBJbmZvJiBobSk7CiAgICB2b2lkIFN0YXRpY0N1bGxEYXRhKGNvbnN0IHF1YWRjb3Ju
ZXJkYXRhJiBjZCwgZmxvYXQgVGhyZXNob2xkRGV0YWlsKTsKICAgIGZsb2F0IFJlY29tcHV0ZUVy
cm9yKGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBjZCk7CiAgICBpbnQgQ291bnROb2RlcygpOwoKICAg
IHZvaWQgVXBkYXRlKGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBjZCwgY29uc3QgZmxvYXQgVmlld2Vy
TG9jYXRpb25bM10sIGZsb2F0IERldGFpbCk7CiAgICB2b2lkIFJlbmRlcihjb25zdCBxdWFkY29y
bmVyZGF0YSYgY2QsIEdMdWJ5dGUgKnZuY19hcnJheSk7CgogICAgZmxvYXQgR2V0SGVpZ2h0KGNv
bnN0IHF1YWRjb3JuZXJkYXRhJiBjZCwgZmxvYXQgeCwgZmxvYXQgeik7CgogICAgdm9pZCBTZXRT
Y2FsZShkb3VibGUgeCwgZG91YmxlIHopOwogICAgdm9pZCBTZXRUZXJyYWluKHRlcnJhaW5fdCAq
dGVycmFpbik7Cgpwcml2YXRlOgogICAgdm9pZCBFbmFibGVFZGdlVmVydGV4KGludCBpbmRleCwg
Ym9vbCBJbmNyZW1lbnRDb3VudCwgY29uc3QgcXVhZGNvcm5lcmRhdGEmIGNkKTsKICAgIHF1YWRz
cXVhcmUqIEVuYWJsZURlc2NlbmRhbnQoaW50IGNvdW50LCBpbnQgc3RhY2tbXSwgY29uc3QgcXVh
ZGNvcm5lcmRhdGEmIGNkKTsKICAgIHZvaWQgRW5hYmxlQ2hpbGQoaW50IGluZGV4LCBjb25zdCBx
dWFkY29ybmVyZGF0YSYgY2QpOwogICAgdm9pZCBOb3RpZnlDaGlsZERpc2FibGUoY29uc3QgcXVh
ZGNvcm5lcmRhdGEmIGNkLCBpbnQgaW5kZXgpOwoKICAgIHZvaWQgUmVzZXRUcmVlKCk7CiAgICB2
b2lkIFN0YXRpY0N1bGxBdXgoY29uc3QgcXVhZGNvcm5lcmRhdGEmIGNkLCBmbG9hdCBUaHJlc2hv
bGREZXRhaWwsIGludCBUYXJnZXRMZXZlbCk7CgogICAgcXVhZHNxdWFyZSogR2V0TmVpZ2hib3Io
aW50IGRpciwgY29uc3QgcXVhZGNvcm5lcmRhdGEmIGNkKTsKICAgIHZvaWQgQ3JlYXRlQ2hpbGQo
aW50IGluZGV4LCBjb25zdCBxdWFkY29ybmVyZGF0YSYgY2QpOwogICAgdm9pZCBTZXR1cENvcm5l
ckRhdGEocXVhZGNvcm5lcmRhdGEqIHEsIGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBwZCwgaW50IENo
aWxkSW5kZXgpOwoKICAgIHZvaWQgVXBkYXRlQXV4KGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBjZCwg
Y29uc3QgZmxvYXQgVmlld2VyTG9jYXRpb25bM10sIGZsb2F0IENlbnRlckVycm9yLCBjbGlwX3Jl
c3VsdF90IHZpcyk7CiAgICB2b2lkIFJlbmRlckF1eChjb25zdCBxdWFkY29ybmVyZGF0YSYgY2Qs
IGNsaXBfcmVzdWx0X3QgdmlzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0ZXJyYWlu
KTsKICAgIHZvaWQgU2V0U3RhdGljKGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBjZCk7CiAgICB2b2lk
IEluaXRWZXJ0KGludCBpLCBpbnQgeCwgaW50IHopOwoKICAgIGJvb2wgVmVydGV4VGVzdChpbnQg
eCwgZmxvYXQgeSwgaW50IHosIGZsb2F0IGVycm9yLCBjb25zdCBmbG9hdCBWaWV3ZXJbM10sIGlu
dCBsZXZlbCwgdmVydGV4X2xvY190IHZlcnRleF9sb2MgKTsKICAgIGJvb2wgQm94VGVzdChpbnQg
eCwgaW50IHosIGZsb2F0IHNpemUsIGZsb2F0IG1pbnksIGZsb2F0IG1heHksIGZsb2F0IGVycm9y
LCBjb25zdCBmbG9hdCBWaWV3ZXJbM10pOwogICAgY2xpcF9yZXN1bHRfdCBDbGlwU3F1YXJlKCBj
b25zdCBxdWFkY29ybmVyZGF0YSYgY2QgKTsKfTsKIyAyMSAicXVhZHRyZWUuY3BwIiAyCiMgMSAi
cXVhZGdlb20uaHBwIiAxCiMgMTUgInF1YWRnZW9tLmhwcCIKIyAxICJ0dXhyYWNlci5oIiAxCiMg
MTYgInF1YWRnZW9tLmhwcCIgMgoKY2xhc3MgdmVjdG9yCgp7CnB1YmxpYzoKICAgICAgICB2ZWN0
b3IoKSB7fQogICAgICAgIHZlY3RvcihmbG9hdCBYLCBmbG9hdCBZLCBmbG9hdCBaKSB7IHhbMF0g
PSBYOyB4WzFdID0gWTsgeFsyXSA9IFo7IH0KICAgICAgICB2ZWN0b3IoY29uc3QgdmVjdG9yJiB2
KSB7IHhbMF0gPSB2LnhbMF07IHhbMV0gPSB2LnhbMV07IHhbMl0gPSB2LnhbMl07IH0KCiAgICAg
ICAgb3BlcmF0b3IgY29uc3QgZmxvYXQqKCkgY29uc3QgeyByZXR1cm4gJnhbMF07IH0KCiAgICAg
ICAgZmxvYXQgR2V0KGludCBlbGVtZW50KSBjb25zdCB7IHJldHVybiB4W2VsZW1lbnRdOyB9CiAg
ICAgICAgdm9pZCBTZXQoaW50IGVsZW1lbnQsIGZsb2F0IE5ld1ZhbHVlKSB7IHhbZWxlbWVudF0g
PSBOZXdWYWx1ZTsgfQogICAgICAgIGZsb2F0IFgoKSBjb25zdCB7IHJldHVybiB4WzBdOyB9CiAg
ICAgICAgZmxvYXQgWSgpIGNvbnN0IHsgcmV0dXJuIHhbMV07IH0KICAgICAgICBmbG9hdCBaKCkg
Y29uc3QgeyByZXR1cm4geFsyXTsgfQogICAgICAgIHZvaWQgU2V0WChmbG9hdCBuZXd4KSB7IHhb
MF0gPSBuZXd4OyB9CiAgICAgICAgdm9pZCBTZXRZKGZsb2F0IG5ld3kpIHsgeFsxXSA9IG5ld3k7
IH0KICAgICAgICB2b2lkIFNldFooZmxvYXQgbmV3eikgeyB4WzJdID0gbmV3ejsgfQogICAgICAg
IHZvaWQgU2V0WFlaKGZsb2F0IG5ld3gsIGZsb2F0IG5ld3ksIGZsb2F0IG5ld3opIHsgeFswXSA9
IG5ld3g7IHhbMV0gPSBuZXd5OyB4WzJdID0gbmV3ejsgfQoKICAgICAgICB2ZWN0b3Igb3BlcmF0
b3IrKGNvbnN0IHZlY3RvciYgdikgY29uc3Q7CiAgICAgICAgdmVjdG9yIG9wZXJhdG9yLShjb25z
dCB2ZWN0b3ImIHYpIGNvbnN0OwogICAgICAgIHZlY3RvciBvcGVyYXRvci0oKSBjb25zdDsKICAg
ICAgICBmbG9hdCBvcGVyYXRvciooY29uc3QgdmVjdG9yJiB2KSBjb25zdDsKICAgICAgICB2ZWN0
b3Igb3BlcmF0b3IqKGZsb2F0IGYpIGNvbnN0OwogICAgICAgIHZlY3RvciBvcGVyYXRvci8oZmxv
YXQgZikgY29uc3QgeyByZXR1cm4gdGhpcy0+b3BlcmF0b3IqKDEuMCAvIGYpOyB9CiAgICAgICAg
dmVjdG9yIGNyb3NzKGNvbnN0IHZlY3RvciYgdikgY29uc3Q7CgogICAgICAgIHZlY3RvciYgbm9y
bWFsaXplKCk7CiAgICAgICAgdmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgdmVjdG9yJiB2KSB7IHhb
MF0gPSB2LnhbMF07IHhbMV0gPSB2LnhbMV07IHhbMl0gPSB2LnhbMl07IHJldHVybiAqdGhpczsg
fQogICAgICAgIHZlY3RvciYgb3BlcmF0b3IrPShjb25zdCB2ZWN0b3ImIHYpOwogICAgICAgIHZl
Y3RvciYgb3BlcmF0b3ItPShjb25zdCB2ZWN0b3ImIHYpOwogICAgICAgIHZlY3RvciYgb3BlcmF0
b3IqPShmbG9hdCBmKTsKICAgICAgICB2ZWN0b3ImIG9wZXJhdG9yLz0oZmxvYXQgZikgeyByZXR1
cm4gdGhpcy0+b3BlcmF0b3IqPSgxLjAgLyBmKTsgfQoKICAgICAgICBmbG9hdCBtYWduaXR1ZGUo
KSBjb25zdDsKICAgICAgICBmbG9hdCBzcXJtYWcoKSBjb25zdDsKCgoKCgogICAgICAgIGJvb2wg
Y2hlY2tuYW4oKSBjb25zdDsKcHJpdmF0ZToKICAgICAgICBmbG9hdCB4WzNdOwp9OwojIDcxICJx
dWFkZ2VvbS5ocHAiCmlubGluZSBmbG9hdCB2ZWN0b3I6Om9wZXJhdG9yKihjb25zdCB2ZWN0b3Im
IHYpIGNvbnN0Cgp7CiAgICAgICAgZmxvYXQgcmVzdWx0OwogICAgICAgIHJlc3VsdCA9IHhbMF0g
KiB2LnhbMF07CiAgICAgICAgcmVzdWx0ICs9IHhbMV0gKiB2LnhbMV07CiAgICAgICAgcmVzdWx0
ICs9IHhbMl0gKiB2LnhbMl07CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKfQoKCmlubGluZSB2ZWN0
b3ImIHZlY3Rvcjo6b3BlcmF0b3IrPShjb25zdCB2ZWN0b3ImIHYpCgp7CiAgICAgICAgeFswXSAr
PSB2LnhbMF07CiAgICAgICAgeFsxXSArPSB2LnhbMV07CiAgICAgICAgeFsyXSArPSB2LnhbMl07
CiAgICAgICAgcmV0dXJuICp0aGlzOwp9CgoKaW5saW5lIHZlY3RvciYgdmVjdG9yOjpvcGVyYXRv
ci09KGNvbnN0IHZlY3RvciYgdikKCnsKICAgICAgICB4WzBdIC09IHYueFswXTsKICAgICAgICB4
WzFdIC09IHYueFsxXTsKICAgICAgICB4WzJdIC09IHYueFsyXTsKICAgICAgICByZXR1cm4gKnRo
aXM7Cn0KCgoKCgoKCmV4dGVybiB2ZWN0b3IgWmVyb1ZlY3RvciwgWEF4aXMsIFlBeGlzLCBaQXhp
czsKCgpjbGFzcyBxdWF0ZXJuaW9uOwoKCmNsYXNzIG1hdHJpeAoKewpwdWJsaWM6CiAgICAgICAg
bWF0cml4KCkgeyBJZGVudGl0eSgpOyB9CgogICAgICAgIHZvaWQgSWRlbnRpdHkoKTsKICAgICAg
ICB2b2lkIFZpZXcoY29uc3QgdmVjdG9yJiBWaWV3Tm9ybWFsLCBjb25zdCB2ZWN0b3ImIFZpZXdV
cCwgY29uc3QgdmVjdG9yJiBWaWV3TG9jYXRpb24pOwogICAgICAgIHZvaWQgT3JpZW50KGNvbnN0
IHZlY3RvciYgT2JqZWN0RGlyZWN0aW9uLCBjb25zdCB2ZWN0b3ImIE9iamVjdFVwLCBjb25zdCB2
ZWN0b3ImIE9iamVjdExvY2F0aW9uKTsKCiAgICAgICAgc3RhdGljIHZvaWQgQ29tcG9zZShtYXRy
aXgqIGRlc3QsIGNvbnN0IG1hdHJpeCYgbGVmdCwgY29uc3QgbWF0cml4JiByaWdodCk7CiAgICAg
ICAgdmVjdG9yIG9wZXJhdG9yKihjb25zdCB2ZWN0b3ImIHYpIGNvbnN0OwogICAgICAgIG1hdHJp
eCBvcGVyYXRvciooY29uc3QgbWF0cml4JiBtKSBjb25zdDsKCgogICAgICAgIG1hdHJpeCYgb3Bl
cmF0b3IqPShmbG9hdCBmKTsKICAgICAgICBtYXRyaXgmIG9wZXJhdG9yKz0oY29uc3QgbWF0cml4
JiBtKTsKCiAgICAgICAgdm9pZCBJbnZlcnQoKTsKICAgICAgICB2b2lkIEludmVydFJvdGF0aW9u
KCk7CiAgICAgICAgdm9pZCBOb3JtYWxpemVSb3RhdGlvbigpOwogICAgICAgIHZvaWQgQXBwbHko
dmVjdG9yKiByZXN1bHQsIGNvbnN0IHZlY3RvciYgdikgY29uc3Q7CiAgICAgICAgdm9pZCBBcHBs
eVJvdGF0aW9uKHZlY3RvciogcmVzdWx0LCBjb25zdCB2ZWN0b3ImIHYpIGNvbnN0OwogICAgICAg
IHZvaWQgQXBwbHlJbnZlcnNlKHZlY3RvciogcmVzdWx0LCBjb25zdCB2ZWN0b3ImIHYpIGNvbnN0
OwogICAgICAgIHZvaWQgQXBwbHlJbnZlcnNlUm90YXRpb24odmVjdG9yKiByZXN1bHQsIGNvbnN0
IHZlY3RvciYgdikgY29uc3Q7CiAgICAgICAgdm9pZCBUcmFuc2xhdGUoY29uc3QgdmVjdG9yJiB2
KTsKICAgICAgICB2b2lkIFNldE9yaWVudGF0aW9uKGNvbnN0IHF1YXRlcm5pb24mIHEpOwogICAg
ICAgIHF1YXRlcm5pb24gR2V0T3JpZW50YXRpb24oKSBjb25zdDsKCiAgICAgICAgdm9pZCBTZXRD
b2x1bW4oaW50IGNvbHVtbiwgY29uc3QgdmVjdG9yJiB2KSB7IG1bY29sdW1uXSA9IHY7IH0KICAg
ICAgICBjb25zdCB2ZWN0b3ImIEdldENvbHVtbihpbnQgY29sdW1uKSBjb25zdCB7IHJldHVybiBt
W2NvbHVtbl07IH0KcHJpdmF0ZToKICAgICAgICB2ZWN0b3IgbVs0XTsKfTsKCgoKCmNsYXNzIHF1
YXRlcm5pb24gewpwdWJsaWM6CiAgICAgICAgcXVhdGVybmlvbigpIDogUygxKSwgVihaZXJvVmVj
dG9yKSB7fQogICAgICAgIHF1YXRlcm5pb24oY29uc3QgcXVhdGVybmlvbiYgcSkgOiBTKHEuUyks
IFYocS5WKSB7fQogICAgICAgIHF1YXRlcm5pb24oZmxvYXQgcywgY29uc3QgdmVjdG9yJiB2KSA6
IFMocyksIFYodikge30KCiAgICAgICAgcXVhdGVybmlvbihjb25zdCB2ZWN0b3ImIEF4aXMsIGZs
b2F0IEFuZ2xlKTsKCiAgICAgICAgZmxvYXQgR2V0UygpIGNvbnN0IHsgcmV0dXJuIFM7IH0KICAg
ICAgICBjb25zdCB2ZWN0b3ImIEdldFYoKSBjb25zdCB7IHJldHVybiBWOyB9CiAgICAgICAgdm9p
ZCBTZXRTKGZsb2F0IHMpIHsgUyA9IHM7IH0KICAgICAgICB2b2lkIFNldFYoY29uc3QgdmVjdG9y
JiB2KSB7IFYgPSB2OyB9CgogICAgICAgIGZsb2F0IEdldChpbnQgaSkgY29uc3QgeyBpZiAoaT09
MCkgcmV0dXJuIEdldFMoKTsgZWxzZSByZXR1cm4gVi5HZXQoaS0xKTsgfQogICAgICAgIHZvaWQg
U2V0KGludCBpLCBmbG9hdCBmKSB7IGlmIChpPT0wKSBTID0gZjsgZWxzZSBWLlNldChpLTEsIGYp
OyB9CgogICAgICAgIHF1YXRlcm5pb24gb3BlcmF0b3IqKGNvbnN0IHF1YXRlcm5pb24mIHEpIGNv
bnN0OwogICAgICAgIHF1YXRlcm5pb24mIG9wZXJhdG9yKj0oZmxvYXQgZikgeyBTICo9IGY7IFYg
Kj0gZjsgcmV0dXJuICp0aGlzOyB9CiAgICAgICAgcXVhdGVybmlvbiYgb3BlcmF0b3IrPShjb25z
dCBxdWF0ZXJuaW9uJiBxKSB7IFMgKz0gcS5TOyBWICs9IHEuVjsgcmV0dXJuICp0aGlzOyB9Cgog
ICAgICAgIHF1YXRlcm5pb24mIG9wZXJhdG9yPShjb25zdCBxdWF0ZXJuaW9uJiBxKSB7IFMgPSBx
LlM7IFYgPSBxLlY7IHJldHVybiAqdGhpczsgfQogICAgICAgIHF1YXRlcm5pb24mIG5vcm1hbGl6
ZSgpOwogICAgICAgIHF1YXRlcm5pb24mIG9wZXJhdG9yKj0oY29uc3QgcXVhdGVybmlvbiYgcSk7
CiAgICAgICAgdm9pZCBBcHBseVJvdGF0aW9uKHZlY3RvciogcmVzdWx0LCBjb25zdCB2ZWN0b3Im
IHYpOwoKICAgICAgICBxdWF0ZXJuaW9uIGxlcnAoY29uc3QgcXVhdGVybmlvbiYgcSwgZmxvYXQg
ZikgY29uc3Q7CnByaXZhdGU6CiAgICAgICAgZmxvYXQgUzsKICAgICAgICB2ZWN0b3IgVjsKfTsK
IyAyMiAicXVhZHRyZWUuY3BwIiAyCiMgNTAgInF1YWR0cmVlLmNwcCIKR0x1aW50IHF1YWRzcXVh
cmU6OlRleElkW051bVRlcnJhaW5zXTsKR0x1aW50IHF1YWRzcXVhcmU6OkVudm1hcFRleElkOwpH
THVpbnQgKnF1YWRzcXVhcmU6OlZlcnRleEFycmF5SW5kaWNlcyA9IChHTHVpbnQqKSBfX251bGw7
CkdMdWludCBxdWFkc3F1YXJlOjpWZXJ0ZXhBcnJheUNvdW50ZXI7CkdMdWludCBxdWFkc3F1YXJl
OjpWZXJ0ZXhBcnJheU1pbklkeDsKR0x1aW50IHF1YWRzcXVhcmU6OlZlcnRleEFycmF5TWF4SWR4
OwoKcXVhZHNxdWFyZTo6cXVhZHNxdWFyZShxdWFkY29ybmVyZGF0YSogcGNkKQoKewogICAgcGNk
LT5TcXVhcmUgPSB0aGlzOwoKCgoKCiAgICBTdGF0aWMgPSBmYWxzZTsKCiAgICBpbnQgaTsKICAg
IGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICBDaGlsZFtpXSA9IChxdWFkc3F1YXJl
KikgX19udWxsOwogICAgfQoKICAgIEVuYWJsZWRGbGFncyA9IDA7CgogICAgZm9yIChpID0gMDsg
aSA8IDI7IGkrKykgewogICAgICAgIFN1YkVuYWJsZWRDb3VudFtpXSA9IDA7CiAgICB9CgoKCiAg
ICBWZXJ0ZXhbMF0uWSA9IDAuMjUgKiAocGNkLT5WZXJ0c1swXS5ZICsgcGNkLT5WZXJ0c1sxXS5Z
ICsgcGNkLT5WZXJ0c1syXS5ZICsgcGNkLT5WZXJ0c1szXS5ZKTsKICAgIFZlcnRleFsxXS5ZID0g
MC41ICogKHBjZC0+VmVydHNbM10uWSArIHBjZC0+VmVydHNbMF0uWSk7CiAgICBWZXJ0ZXhbMl0u
WSA9IDAuNSAqIChwY2QtPlZlcnRzWzBdLlkgKyBwY2QtPlZlcnRzWzFdLlkpOwogICAgVmVydGV4
WzNdLlkgPSAwLjUgKiAocGNkLT5WZXJ0c1sxXS5ZICsgcGNkLT5WZXJ0c1syXS5ZKTsKICAgIFZl
cnRleFs0XS5ZID0gMC41ICogKHBjZC0+VmVydHNbMl0uWSArIHBjZC0+VmVydHNbM10uWSk7Cgog
ICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgIEVycm9yW2ldID0gMDsKICAgIH0K
ICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICBFcnJvcltpKzJdID0gZmFicygo
VmVydGV4WzBdLlkgKyBwY2QtPlZlcnRzW2ldLlkpIC0gKFZlcnRleFtpKzFdLlkgKyBWZXJ0ZXhb
KChpKzEpJjMpICsgMV0uWSkpICogMC4yNTsKICAgIH0KCgogICAgTWluWSA9IE1heFkgPSBwY2Qt
PlZlcnRzWzBdLlk7CiAgICBmb3IgKGkgPSAxOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgZmxvYXQg
eSA9IHBjZC0+VmVydHNbaV0uWTsKICAgICAgICBpZiAoeSA8IE1pblkpIE1pblkgPSB5OwogICAg
ICAgIGlmICh5ID4gTWF4WSkgTWF4WSA9IHk7CiAgICB9CgogICAgaWYgKCBwY2QtPlBhcmVudCA9
PSBfX251bGwgKSB7CiAgICAgICAgcHJpbnRfZGVidWcoIERFQlVHX1FVQURUUkVFLCAiaW5pdGlh
bGl6aW5nIHJvb3Qgbm9kZSIgKTsKCgogICAgICAgIGlmICghZ2V0X3RleHR1cmVfYmluZGluZygi
c25vdyIsICYoVGV4SWRbU25vd10pKSkgewogICAgICAgICAgICBUZXhJZFtTbm93XSA9IDA7CiAg
ICAgICAgfQogICAgICAgIGlmICghZ2V0X3RleHR1cmVfYmluZGluZygiaWNlIiwgJlRleElkW0lj
ZV0pKSB7CiAgICAgICAgICAgIFRleElkW0ljZV0gPSAwOwogICAgICAgIH0KICAgICAgICBpZiAo
IWdldF90ZXh0dXJlX2JpbmRpbmcoInJvY2siLCAmVGV4SWRbUm9ja10pKSB7CiAgICAgICAgICAg
IFRleElkW1JvY2tdID0gMDsKICAgICAgICB9CiAgICAgICAgaWYgKCAhZ2V0X3RleHR1cmVfYmlu
ZGluZyggInRlcnJhaW5fZW52bWFwIiwgJkVudm1hcFRleElkICkgKSB7CiAgICAgICAgICAgIEVu
dm1hcFRleElkID0gMDsKICAgICAgICB9CgogICAgICAgIFRlcnJhaW4gPSBnZXRfY291cnNlX3Rl
cnJhaW5fZGF0YSgpOwogICAgfQp9CgoKcXVhZHNxdWFyZTo6fnF1YWRzcXVhcmUoKQoKewoKICAg
IGludCBpOwogICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgIGlmIChDaGlsZFtp
XSkgZGVsZXRlIENoaWxkW2ldOwogICAgICAgIENoaWxkW2ldID0gKHF1YWRzcXVhcmUqKSBfX251
bGw7CiAgICB9Cn0KCgp2b2lkIHF1YWRzcXVhcmU6OlNldFN0YXRpYyhjb25zdCBxdWFkY29ybmVy
ZGF0YSYgY2QpCgoKCnsKICAgIGlmIChTdGF0aWMgPT0gZmFsc2UpIHsKICAgICAgICBTdGF0aWMg
PSB0cnVlOwoKCiAgICAgICAgaWYgKGNkLlBhcmVudCAmJiBjZC5QYXJlbnQtPlNxdWFyZSkgewog
ICAgICAgICAgICBjZC5QYXJlbnQtPlNxdWFyZS0+U2V0U3RhdGljKCpjZC5QYXJlbnQpOwogICAg
ICAgIH0KICAgIH0KfQoKCmludCBxdWFkc3F1YXJlOjpDb3VudE5vZGVzKCkKCnsKICAgIGludCBj
b3VudCA9IDE7CgoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgaWYg
KENoaWxkW2ldKSBjb3VudCArPSBDaGlsZFtpXS0+Q291bnROb2RlcygpOwogICAgfQoKICAgIHJl
dHVybiBjb3VudDsKfQoKCmZsb2F0IHF1YWRzcXVhcmU6OkdldEhlaWdodChjb25zdCBxdWFkY29y
bmVyZGF0YSYgY2QsIGZsb2F0IHgsIGZsb2F0IHopCgp7CiAgICBpbnQgaGFsZiA9IDEgPDwgY2Qu
TGV2ZWw7CgogICAgZmxvYXQgbHggPSAoeCAtIGNkLnhvcmcpIC8gZmxvYXQoaGFsZik7CiAgICBm
bG9hdCBseiA9ICh6IC0gY2Quem9yZykgLyBmbG9hdChoYWxmKTsKCiAgICBpbnQgaXggPSAoaW50
KSBmbG9vcihseCk7CiAgICBpbnQgaXogPSAoaW50KSBmbG9vcihseik7CgoKICAgIGlmIChpeCA8
IDApIGl4ID0gMDsKICAgIGlmIChpeCA+IDEpIGl4ID0gMTsKICAgIGlmIChpeiA8IDApIGl6ID0g
MDsKICAgIGlmIChpeiA+IDEpIGl6ID0gMTsKCiAgICBpbnQgaW5kZXggPSBpeCBeIChpeiBeIDEp
ICsgKGl6IDw8IDEpOwogICAgaWYgKENoaWxkW2luZGV4XSAmJiBDaGlsZFtpbmRleF0tPlN0YXRp
YykgewoKICAgICAgICBxdWFkY29ybmVyZGF0YSBxOwogICAgICAgIFNldHVwQ29ybmVyRGF0YSgm
cSwgY2QsIGluZGV4KTsKICAgICAgICByZXR1cm4gQ2hpbGRbaW5kZXhdLT5HZXRIZWlnaHQocSwg
eCwgeik7CiAgICB9CgoKICAgIGx4IC09IGl4OwogICAgaWYgKGx4IDwgMCkgbHggPSAwOwogICAg
aWYgKGx4ID4gMSkgbHggPSAxOwoKICAgIGx6IC09IGl6OwogICAgaWYgKGx4IDwgMCkgbHogPSAw
OwogICAgaWYgKGx6ID4gMSkgbHogPSAxOwoKICAgIGZsb2F0IHMwMCwgczAxLCBzMTAsIHMxMTsK
ICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgIGRlZmF1bHQ6CiAgICBjYXNlIDA6CiAgICAgICAgczAw
ID0gVmVydGV4WzJdLlk7CiAgICAgICAgczAxID0gY2QuVmVydHNbMF0uWTsKICAgICAgICBzMTAg
PSBWZXJ0ZXhbMF0uWTsKICAgICAgICBzMTEgPSBWZXJ0ZXhbMV0uWTsKICAgICAgICBicmVhazsK
ICAgIGNhc2UgMToKICAgICAgICBzMDAgPSBjZC5WZXJ0c1sxXS5ZOwogICAgICAgIHMwMSA9IFZl
cnRleFsyXS5ZOwogICAgICAgIHMxMCA9IFZlcnRleFszXS5ZOwogICAgICAgIHMxMSA9IFZlcnRl
eFswXS5ZOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICAgIHMwMCA9IFZlcnRleFsz
XS5ZOwogICAgICAgIHMwMSA9IFZlcnRleFswXS5ZOwogICAgICAgIHMxMCA9IGNkLlZlcnRzWzJd
Llk7CiAgICAgICAgczExID0gVmVydGV4WzRdLlk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIDM6
CiAgICAgICAgczAwID0gVmVydGV4WzBdLlk7CiAgICAgICAgczAxID0gVmVydGV4WzFdLlk7CiAg
ICAgICAgczEwID0gVmVydGV4WzRdLlk7CiAgICAgICAgczExID0gY2QuVmVydHNbM10uWTsKICAg
ICAgICBicmVhazsKICAgIH0KCiAgICByZXR1cm4gKHMwMCAqICgxLWx4KSArIHMwMSAqIGx4KSAq
ICgxIC0gbHopICsgKHMxMCAqICgxLWx4KSArIHMxMSAqIGx4KSAqIGx6Owp9CgoKcXVhZHNxdWFy
ZSogcXVhZHNxdWFyZTo6R2V0TmVpZ2hib3IoaW50IGRpciwgY29uc3QgcXVhZGNvcm5lcmRhdGEm
IGNkKQoKCgp7CgoKCiAgICBpZiAoY2QuUGFyZW50ID09IDApIHJldHVybiAwOwoKCiAgICBxdWFk
c3F1YXJlKiBwID0gMDsKCiAgICBpbnQgaW5kZXggPSBjZC5DaGlsZEluZGV4IF4gMSBeICgoZGly
ICYgMSkgPDwgMSk7CiAgICBib29sIFNhbWVQYXJlbnQgPSAoKGRpciAtIGNkLkNoaWxkSW5kZXgp
ICYgMikgPyB0cnVlIDogZmFsc2U7CgogICAgaWYgKFNhbWVQYXJlbnQpIHsKICAgICAgICBwID0g
Y2QuUGFyZW50LT5TcXVhcmU7CiAgICB9IGVsc2UgewogICAgICAgIHAgPSBjZC5QYXJlbnQtPlNx
dWFyZS0+R2V0TmVpZ2hib3IoZGlyLCAqY2QuUGFyZW50KTsKCiAgICAgICAgaWYgKHAgPT0gMCkg
cmV0dXJuIDA7CiAgICB9CgogICAgcXVhZHNxdWFyZSogbiA9IHAtPkNoaWxkW2luZGV4XTsKCiAg
ICByZXR1cm4gbjsKfQoKZmxvYXQgcXVhZHNxdWFyZTo6UmVjb21wdXRlRXJyb3IoY29uc3QgcXVh
ZGNvcm5lcmRhdGEmIGNkKQoKCgp7CiAgICBpbnQgaTsKICAgIGludCBqOwogICAgaW50IHQ7CiAg
ICBpbnQgaGFsZiA9IDEgPDwgY2QuTGV2ZWw7CiAgICBpbnQgd2hvbGUgPSBoYWxmIDw8IDE7CiAg
ICBmbG9hdCB0ZXJyYWluX2Vycm9yOwoKCiAgICBmbG9hdCBtYXhlcnJvciA9IDA7CgoKICAgIGZs
b2F0IGU7CiAgICBpZiAoY2QuQ2hpbGRJbmRleCAmIDEpIHsKICAgICAgICBlID0gZmFicyhWZXJ0
ZXhbMF0uWSAtIChjZC5WZXJ0c1sxXS5ZICsgY2QuVmVydHNbM10uWSkgKiAwLjUpOwogICAgfSBl
bHNlIHsKICAgICAgICBlID0gZmFicyhWZXJ0ZXhbMF0uWSAtIChjZC5WZXJ0c1swXS5ZICsgY2Qu
VmVydHNbMl0uWSkgKiAwLjUpOwogICAgfQogICAgaWYgKGUgPiBtYXhlcnJvcikgbWF4ZXJyb3Ig
PSBlOwoKCiAgICBNYXhZID0gVmVydGV4WzBdLlk7CiAgICBNaW5ZID0gVmVydGV4WzBdLlk7CgoK
ICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICBmbG9hdCB5ID0gY2QuVmVydHNb
aV0uWTsKICAgICAgICBpZiAoeSA8IE1pblkpIE1pblkgPSB5OwogICAgICAgIGlmICh5ID4gTWF4
WSkgTWF4WSA9IHk7CiAgICB9CgoKICAgIGUgPSBmYWJzKFZlcnRleFsxXS5ZIC0gKGNkLlZlcnRz
WzBdLlkgKyBjZC5WZXJ0c1szXS5ZKSAqIDAuNSk7CiAgICBpZiAoZSA+IG1heGVycm9yKSBtYXhl
cnJvciA9IGU7CiAgICBFcnJvclswXSA9IGU7CgogICAgZSA9IGZhYnMoVmVydGV4WzRdLlkgLSAo
Y2QuVmVydHNbMl0uWSArIGNkLlZlcnRzWzNdLlkpICogMC41KTsKICAgIGlmIChlID4gbWF4ZXJy
b3IpIG1heGVycm9yID0gZTsKICAgIEVycm9yWzFdID0gZTsKCgogICAgaWYgKCBjZC5MZXZlbCA9
PSAwICYmIGNkLnhvcmcgPD0gUm93U2l6ZS0xICYmIGNkLnpvcmcgPD0gTnVtUm93cy0xICkgewoK
CiAgICAgICAgaW50IHggPSBjZC54b3JnICsgaGFsZjsKICAgICAgICBpbnQgeiA9IGNkLnpvcmcg
KyB3aG9sZTsKICAgICAgICBpbnQgaWR4ID0geCArIHogKiBSb3dTaXplOwogICAgICAgIGJvb2wg
ZGlmZmVyZW50X3RlcnJhaW5zID0gZmFsc2U7CgogICAgICAgIHRlcnJhaW5fZXJyb3IgPSAwLmY7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwoKICAgICAgICBpZiAoIHggPCBSb3dTaXplICYmIHogPCBOdW1Sb3dzICkg
ewoKICAgICAgICAgICAgaWYgKCB4IDwgUm93U2l6ZSAtIDEgKSB7CiAgICAgICAgICAgICAgICBp
ZiAoIFRlcnJhaW5baWR4XSAhPSBUZXJyYWluW2lkeCsxXSApIHsKICAgICAgICAgICAgICAgICAg
ICBkaWZmZXJlbnRfdGVycmFpbnMgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICB9CiAgICAgICAgICAgIGlmICggeiA+PSAxICkgewogICAgICAgICAgICAgICAgaWR4IC09IFJv
d1NpemU7CiAgICAgICAgICAgICAgICBpZiAoIFRlcnJhaW5baWR4XSAhPSBUZXJyYWluW2lkeCsx
XSApIHsKICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnRfdGVycmFpbnMgPSB0cnVlOwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIGRpZmZlcmVudF90
ZXJyYWlucyApIHsKICAgICAgICAgICAgICAgIEZvcmNlU291dGhWZXJ0ID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgIHRlcnJhaW5fZXJyb3IgPSAwLjEgKiB3aG9sZSAqIHdob2xlOwogICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgRm9yY2VTb3V0aFZlcnQgPSBmYWxzZTsKICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgaWYgKCB0ZXJyYWluX2Vycm9yID4gRXJyb3JbMF0gKSB7CiAg
ICAgICAgICAgICAgICBFcnJvclswXSA9IHRlcnJhaW5fZXJyb3I7CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgaWYgKCBFcnJvclswXSA+IG1heGVycm9yICkgewogICAgICAgICAgICAgICAgbWF4
ZXJyb3IgPSBFcnJvclswXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgIHggPSBj
ZC54b3JnICsgd2hvbGU7CiAgICAgICAgeiA9IGNkLnpvcmcgKyBoYWxmOwogICAgICAgIGlkeCA9
IHggKyB6ICogUm93U2l6ZTsKICAgICAgICB0ZXJyYWluX2Vycm9yID0gMDsKICAgICAgICBkaWZm
ZXJlbnRfdGVycmFpbnMgPSBmYWxzZTsKCiAgICAgICAgaWYgKCB4IDwgUm93U2l6ZSAmJiB6IDwg
TnVtUm93cyApIHsKCiAgICAgICAgICAgIGlmICggeiA+PSAxICkgewogICAgICAgICAgICAgICAg
aWYgKCBUZXJyYWluW2lkeF0gIT0gVGVycmFpbltpZHgtUm93U2l6ZV0gKSB7CiAgICAgICAgICAg
ICAgICAgICAgZGlmZmVyZW50X3RlcnJhaW5zID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgfQogICAgICAgICAgICBpZiAoIHogPj0gMSAmJiB4IDwgUm93U2l6ZSAtIDEgKSB7
CiAgICAgICAgICAgICAgICBpZHggKz0gMTsKICAgICAgICAgICAgICAgIGlmICggVGVycmFpbltp
ZHhdICE9IFRlcnJhaW5baWR4LVJvd1NpemVdICkgewogICAgICAgICAgICAgICAgICAgIGRpZmZl
cmVudF90ZXJyYWlucyA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgIGlmICggZGlmZmVyZW50X3RlcnJhaW5zICkgewogICAgICAgICAgICAgICAgRm9y
Y2VFYXN0VmVydCA9IHRydWU7CiAgICAgICAgICAgICAgICB0ZXJyYWluX2Vycm9yID0gMC4xICog
d2hvbGUgKiB3aG9sZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIEZvcmNl
RWFzdFZlcnQgPSBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCB0ZXJyYWlu
X2Vycm9yID4gRXJyb3JbMV0gKSB7CiAgICAgICAgICAgICAgICBFcnJvclsxXSA9IHRlcnJhaW5f
ZXJyb3I7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBFcnJvclsxXSA+IG1heGVycm9y
ICkgewogICAgICAgICAgICAgICAgbWF4ZXJyb3IgPSBFcnJvclsxXTsKICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgIH0KCgogICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgIGZs
b2F0IHkgPSBWZXJ0ZXhbMSArIGldLlk7CiAgICAgICAgaWYgKHkgPCBNaW5ZKSBNaW5ZID0geTsK
ICAgICAgICBpZiAoeSA+IE1heFkpIE1heFkgPSB5OwogICAgfQoKCiAgICBmb3IgKGkgPSAwOyBp
IDwgNDsgaSsrKSB7CiAgICAgICAgcXVhZGNvcm5lcmRhdGEgcTsKICAgICAgICBpZiAoQ2hpbGRb
aV0pIHsKICAgICAgICAgICAgU2V0dXBDb3JuZXJEYXRhKCZxLCBjZCwgaSk7CiAgICAgICAgICAg
IEVycm9yW2krMl0gPSBDaGlsZFtpXS0+UmVjb21wdXRlRXJyb3IocSk7CgogICAgICAgICAgICBp
ZiAoQ2hpbGRbaV0tPk1pblkgPCBNaW5ZKSBNaW5ZID0gQ2hpbGRbaV0tPk1pblk7CiAgICAgICAg
ICAgIGlmIChDaGlsZFtpXS0+TWF4WSA+IE1heFkpIE1heFkgPSBDaGlsZFtpXS0+TWF4WTsKICAg
ICAgICB9IGVsc2UgewoKICAgICAgICAgICAgRXJyb3JbaSsyXSA9IGZhYnMoKFZlcnRleFswXS5Z
ICsgY2QuVmVydHNbaV0uWSkgLSAoVmVydGV4W2krMV0uWSArIFZlcnRleFsoKGkrMSkmMykgKyAx
XS5ZKSkgKiAwLjI1OwogICAgICAgIH0KICAgICAgICBpZiAoRXJyb3JbaSsyXSA+IG1heGVycm9y
KSBtYXhlcnJvciA9IEVycm9yW2krMl07CiAgICB9CgoKCgogICAgaW50IHRlcnJhaW47CgogICAg
aW50ICp0ZXJyYWluX2NvdW50ID0gbmV3IGludFsoaW50KU51bVRlcnJhaW5zXTsKCiAgICBmb3Ig
KHQ9MDsgdDxOdW1UZXJyYWluczsgdCsrKSB7CiAgICAgICAgdGVycmFpbl9jb3VudFt0XSA9IDA7
CiAgICB9CgogICAgZm9yIChpPWNkLnhvcmc7IGk8PWNkLnhvcmcrd2hvbGU7IGkrKykgewogICAg
ICAgIGZvciAoaj1jZC56b3JnOyBqPD1jZC56b3JnK3dob2xlOyBqKyspIHsKCiAgICAgICAgICAg
IGlmICggaSA8IDAgfHwgaSA+PSBSb3dTaXplIHx8CiAgICAgICAgICAgICAgICAgaiA8IDAgfHwg
aiA+PSBOdW1Sb3dzICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgIHRlcnJhaW4gPSAoaW50KSBUZXJyYWluWyBpICsgUm93
U2l6ZSpqIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOwoKCiAgICAgICAgICAgIHRlcnJhaW5fY291bnRbIHRlcnJhaW4gXSArPSAxOwogICAg
ICAgIH0KICAgIH0KCiAgICBpbnQgbWF4X2NvdW50ID0gMDsKICAgIGludCBtYXhfdHlwZSA9IDA7
CiAgICBpbnQgdG90YWwgPSAwOwogICAgZm9yICh0PTA7IHQ8TnVtVGVycmFpbnM7IHQrKykgewog
ICAgICAgIGlmICggdGVycmFpbl9jb3VudFt0XSA+IG1heF9jb3VudCApIHsKICAgICAgICAgICAg
bWF4X2NvdW50ID0gdGVycmFpbl9jb3VudFt0XTsKICAgICAgICAgICAgbWF4X3R5cGUgPSB0Owog
ICAgICAgIH0KICAgICAgICB0b3RhbCArPSB0ZXJyYWluX2NvdW50W3RdOwogICAgfQoKICAgIGRl
bGV0ZSBbXSB0ZXJyYWluX2NvdW50OwoKCiAgICBpZiAoIHRvdGFsID4gMCApIHsKICAgICAgICB0
ZXJyYWluX2Vycm9yID0gKDEuMCAtIG1heF9jb3VudCAvIHRvdGFsKTsKICAgICAgICBpZiAoIE51
bVRlcnJhaW5zID4gMSApIHsKICAgICAgICAgICAgdGVycmFpbl9lcnJvciAqPSBOdW1UZXJyYWlu
cyAvICggTnVtVGVycmFpbnMgLSAxLjAgKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAg
IHRlcnJhaW5fZXJyb3IgPSAwOwogICAgfQoKCiAgICB0ZXJyYWluX2Vycm9yICo9IHdob2xlICog
d2hvbGU7CgoKICAgIHRlcnJhaW5fZXJyb3IgKj0gMC4xOwoKICAgIGlmICggdGVycmFpbl9lcnJv
ciA+IG1heGVycm9yICkgewogICAgICAgIG1heGVycm9yID0gdGVycmFpbl9lcnJvcjsKICAgIH0K
CiAgICBpZiAoIHRlcnJhaW5fZXJyb3IgPiBFcnJvclswXSApIHsKICAgICAgICBFcnJvclswXSA9
IHRlcnJhaW5fZXJyb3I7CiAgICB9CiAgICBpZiAoIHRlcnJhaW5fZXJyb3IgPiBFcnJvclsxXSAp
IHsKICAgICAgICBFcnJvclsxXSA9IHRlcnJhaW5fZXJyb3I7CiAgICB9CgoKCiAgICBEaXJ0eSA9
IGZhbHNlOwoKICAgIHJldHVybiBtYXhlcnJvcjsKfQoKCnZvaWQgcXVhZHNxdWFyZTo6UmVzZXRU
cmVlKCkKCnsKICAgIGludCBpOwogICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAg
IGlmIChDaGlsZFtpXSkgewogICAgICAgICAgICBDaGlsZFtpXS0+UmVzZXRUcmVlKCk7CiAgICAg
ICAgICAgIGlmIChDaGlsZFtpXS0+U3RhdGljID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBk
ZWxldGUgQ2hpbGRbaV07CiAgICAgICAgICAgICAgICBDaGlsZFtpXSA9IDA7CiAgICAgICAgICAg
IH0KICAgICAgICB9CiAgICB9CiAgICBFbmFibGVkRmxhZ3MgPSAwOwogICAgU3ViRW5hYmxlZENv
dW50WzBdID0gMDsKICAgIFN1YkVuYWJsZWRDb3VudFsxXSA9IDA7CiAgICBEaXJ0eSA9IHRydWU7
Cn0KCgp2b2lkIHF1YWRzcXVhcmU6OlN0YXRpY0N1bGxEYXRhKGNvbnN0IHF1YWRjb3JuZXJkYXRh
JiBjZCwgZmxvYXQgVGhyZXNob2xkRGV0YWlsKQoKCgp7CgogICAgUmVzZXRUcmVlKCk7CgoKICAg
IGlmIChEaXJ0eSkgUmVjb21wdXRlRXJyb3IoY2QpOwoKCgoKCiAgICBpbnQgbGV2ZWw7CiAgICBm
b3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gY2QuTGV2ZWw7IGxldmVsKyspIHsKICAgICAgICBTdGF0
aWNDdWxsQXV4KGNkLCBUaHJlc2hvbGREZXRhaWwsIGxldmVsKTsKICAgIH0KfQoKCnZvaWQgcXVh
ZHNxdWFyZTo6U3RhdGljQ3VsbEF1eChjb25zdCBxdWFkY29ybmVyZGF0YSYgY2QsIGZsb2F0IFRo
cmVzaG9sZERldGFpbCwgaW50IFRhcmdldExldmVsKQoKCnsKICAgIGludCBpLCBqOwogICAgcXVh
ZGNvcm5lcmRhdGEgcTsKCiAgICBpZiAoY2QuTGV2ZWwgPiBUYXJnZXRMZXZlbCkgewoKICAgICAg
ICBmb3IgKGogPSAwOyBqIDwgNDsgaisrKSB7CiAgICAgICAgICAgIGlmIChqIDwgMikgaSA9IDEg
LSBqOwogICAgICAgICAgICBlbHNlIGkgPSBqOwoKICAgICAgICAgICAgaWYgKENoaWxkW2ldKSB7
CiAgICAgICAgICAgICAgICBTZXR1cENvcm5lckRhdGEoJnEsIGNkLCBpKTsKICAgICAgICAgICAg
ICAgIENoaWxkW2ldLT5TdGF0aWNDdWxsQXV4KHEsIFRocmVzaG9sZERldGFpbCwgVGFyZ2V0TGV2
ZWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCgoKCiAg
ICBmbG9hdCBzaXplID0gMiA8PCBjZC5MZXZlbDsKICAgIGlmIChDaGlsZFswXSA9PSBfX251bGwg
JiYgQ2hpbGRbM10gPT0gX19udWxsICYmIEVycm9yWzBdICogVGhyZXNob2xkRGV0YWlsIDwgc2l6
ZSkgewogICAgICAgIHF1YWRzcXVhcmUqIHMgPSBHZXROZWlnaGJvcigwLCBjZCk7CiAgICAgICAg
aWYgKHMgPT0gX19udWxsIHx8IChzLT5DaGlsZFsxXSA9PSBfX251bGwgJiYgcy0+Q2hpbGRbMl0g
PT0gX19udWxsKSkgewoKCiAgICAgICAgICAgIGZsb2F0IHkgPSAoY2QuVmVydHNbMF0uWSArIGNk
LlZlcnRzWzNdLlkpICogMC41OwogICAgICAgICAgICBWZXJ0ZXhbMV0uWSA9IHk7CiAgICAgICAg
ICAgIEVycm9yWzBdID0gMDsKCgogICAgICAgICAgICBpZiAocykgcy0+VmVydGV4WzNdLlkgPSB5
OwoKICAgICAgICAgICAgRGlydHkgPSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoQ2hp
bGRbMl0gPT0gX19udWxsICYmIENoaWxkWzNdID09IF9fbnVsbCAmJiBFcnJvclsxXSAqIFRocmVz
aG9sZERldGFpbCA8IHNpemUpIHsKICAgICAgICBxdWFkc3F1YXJlKiBzID0gR2V0TmVpZ2hib3Io
MywgY2QpOwogICAgICAgIGlmIChzID09IF9fbnVsbCB8fCAocy0+Q2hpbGRbMF0gPT0gX19udWxs
ICYmIHMtPkNoaWxkWzFdID09IF9fbnVsbCkpIHsKICAgICAgICAgICAgZmxvYXQgeSA9IChjZC5W
ZXJ0c1syXS5ZICsgY2QuVmVydHNbM10uWSkgKiAwLjU7CiAgICAgICAgICAgIFZlcnRleFs0XS5Z
ID0geTsKICAgICAgICAgICAgRXJyb3JbMV0gPSAwOwoKICAgICAgICAgICAgaWYgKHMpIHMtPlZl
cnRleFsyXS5ZID0geTsKCiAgICAgICAgICAgIERpcnR5ID0gdHJ1ZTsKICAgICAgICB9CiAgICB9
CgoKICAgIGJvb2wgU3RhdGljQ2hpbGRyZW4gPSBmYWxzZTsKICAgIGZvciAoaSA9IDA7IGkgPCA0
OyBpKyspIHsKICAgICAgICBpZiAoQ2hpbGRbaV0pIHsKICAgICAgICAgICAgU3RhdGljQ2hpbGRy
ZW4gPSB0cnVlOwogICAgICAgICAgICBpZiAoQ2hpbGRbaV0tPkRpcnR5KSBEaXJ0eSA9IHRydWU7
CiAgICAgICAgfQogICAgfQoKCiAgICBpZiAoU3RhdGljQ2hpbGRyZW4gPT0gZmFsc2UgJiYgY2Qu
UGFyZW50ICE9IF9fbnVsbCkgewogICAgICAgIGJvb2wgTmVjZXNzYXJ5RWRnZXMgPSBmYWxzZTsK
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CgogICAgICAgICAgICBmbG9hdCBkaWZm
ID0gZmFicyhWZXJ0ZXhbaSsxXS5ZIC0gKGNkLlZlcnRzW2ldLlkgKyBjZC5WZXJ0c1soaSszKSYz
XS5ZKSAqIDAuNSk7CiAgICAgICAgICAgIGlmIChkaWZmID4gMC4wMDAwMSkgewogICAgICAgICAg
ICAgICAgTmVjZXNzYXJ5RWRnZXMgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAg
ICAgICBpZiAoIU5lY2Vzc2FyeUVkZ2VzKSB7CiAgICAgICAgICAgIHNpemUgKj0gMS40MTQyMTM1
NjI7CiAgICAgICAgICAgIGlmIChjZC5QYXJlbnQtPlNxdWFyZS0+RXJyb3JbMiArIGNkLkNoaWxk
SW5kZXhdICogVGhyZXNob2xkRGV0YWlsIDwgc2l6ZSkgewogICAgICAgICAgICAgICAgZGVsZXRl
IGNkLlBhcmVudC0+U3F1YXJlLT5DaGlsZFtjZC5DaGlsZEluZGV4XTsKICAgICAgICAgICAgICAg
IGNkLlBhcmVudC0+U3F1YXJlLT5DaGlsZFtjZC5DaGlsZEluZGV4XSA9IDA7CiAgICAgICAgICAg
IH0KICAgICAgICB9CiAgICB9Cn0KCgppbnQgTWF4Q3JlYXRlRGVwdGggPSAwOwoKCnZvaWQgcXVh
ZHNxdWFyZTo6RW5hYmxlRWRnZVZlcnRleChpbnQgaW5kZXgsIGJvb2wgSW5jcmVtZW50Q291bnQs
IGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBjZCkKCgp7CiAgICBpZiAoKEVuYWJsZWRGbGFncyAmICgx
IDw8IGluZGV4KSkgJiYgSW5jcmVtZW50Q291bnQgPT0gZmFsc2UpIHJldHVybjsKCgogICAgRW5h
YmxlZEZsYWdzIHw9IDEgPDwgaW5kZXg7CiAgICBpZiAoSW5jcmVtZW50Q291bnQgPT0gdHJ1ZSAm
JiAoaW5kZXggPT0gMCB8fCBpbmRleCA9PSAzKSkgewogICAgICAgIFN1YkVuYWJsZWRDb3VudFtp
bmRleCAmIDFdKys7CiAgICB9CiMgNjQzICJxdWFkdHJlZS5jcHAiCiAgICBxdWFkc3F1YXJlKiBw
ID0gdGhpczsKICAgIGNvbnN0IHF1YWRjb3JuZXJkYXRhKiBwY2QgPSAmY2Q7CiAgICBpbnQgY3Qg
PSAwOwogICAgaW50IHN0YWNrWzMyXTsKICAgIGZvciAoOzspIHsKICAgICAgICBpbnQgY2kgPSBw
Y2QtPkNoaWxkSW5kZXg7CgogICAgICAgIGlmIChwY2QtPlBhcmVudCA9PSBfX251bGwgfHwgcGNk
LT5QYXJlbnQtPlNxdWFyZSA9PSBfX251bGwpIHsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICB9CiAgICAgICAgcCA9IHBjZC0+UGFyZW50LT5TcXVhcmU7CiAgICAgICAgcGNkID0gcGNkLT5Q
YXJlbnQ7CgogICAgICAgIGJvb2wgU2FtZVBhcmVudCA9ICgoaW5kZXggLSBjaSkgJiAyKSA/IHRy
dWUgOiBmYWxzZTsKCiAgICAgICAgY2kgPSBjaSBeIDEgXiAoKGluZGV4ICYgMSkgPDwgMSk7Cgog
ICAgICAgIHN0YWNrW2N0XSA9IGNpOwogICAgICAgIGN0Kys7CgogICAgICAgIGlmIChTYW1lUGFy
ZW50KSBicmVhazsKICAgIH0KCgoKICAgIHAgPSBwLT5FbmFibGVEZXNjZW5kYW50KGN0LCBzdGFj
aywgKnBjZCk7CiMgNjkxICJxdWFkdHJlZS5jcHAiCiAgICBpbmRleCBePSAyOwogICAgcC0+RW5h
YmxlZEZsYWdzIHw9ICgxIDw8IGluZGV4KTsKICAgIGlmIChJbmNyZW1lbnRDb3VudCA9PSB0cnVl
ICYmIChpbmRleCA9PSAwIHx8IGluZGV4ID09IDMpKSB7CiAgICAgICAgcC0+U3ViRW5hYmxlZENv
dW50W2luZGV4ICYgMV0rKzsKICAgIH0KfQoKCnF1YWRzcXVhcmUqIHF1YWRzcXVhcmU6OkVuYWJs
ZURlc2NlbmRhbnQoaW50IGNvdW50LCBpbnQgcGF0aFtdLCBjb25zdCBxdWFkY29ybmVyZGF0YSYg
Y2QpCgoKCnsKICAgIGNvdW50LS07CiAgICBpbnQgQ2hpbGRJbmRleCA9IHBhdGhbY291bnRdOwoK
ICAgIGlmICgoRW5hYmxlZEZsYWdzICYgKDE2IDw8IENoaWxkSW5kZXgpKSA9PSAwKSB7CiAgICAg
ICAgRW5hYmxlQ2hpbGQoQ2hpbGRJbmRleCwgY2QpOwogICAgfQoKICAgIGlmIChjb3VudCA+IDAp
IHsKICAgICAgICBxdWFkY29ybmVyZGF0YSBxOwogICAgICAgIFNldHVwQ29ybmVyRGF0YSgmcSwg
Y2QsIENoaWxkSW5kZXgpOwogICAgICAgIHJldHVybiBDaGlsZFtDaGlsZEluZGV4XS0+RW5hYmxl
RGVzY2VuZGFudChjb3VudCwgcGF0aCwgcSk7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBD
aGlsZFtDaGlsZEluZGV4XTsKICAgIH0KfQoKCnZvaWQgcXVhZHNxdWFyZTo6Q3JlYXRlQ2hpbGQo
aW50IGluZGV4LCBjb25zdCBxdWFkY29ybmVyZGF0YSYgY2QpCgp7CiAgICBpZiAoQ2hpbGRbaW5k
ZXhdID09IDApIHsKICAgICAgICBxdWFkY29ybmVyZGF0YSBxOwogICAgICAgIFNldHVwQ29ybmVy
RGF0YSgmcSwgY2QsIGluZGV4KTsKCiAgICAgICAgQ2hpbGRbaW5kZXhdID0gbmV3IHF1YWRzcXVh
cmUoJnEpOwogICAgfQp9CgoKdm9pZCBxdWFkc3F1YXJlOjpFbmFibGVDaGlsZChpbnQgaW5kZXgs
IGNvbnN0IHF1YWRjb3JuZXJkYXRhJiBjZCkKCgp7CgogICAgaWYgKChFbmFibGVkRmxhZ3MgJiAo
MTYgPDwgaW5kZXgpKSA9PSAwKSB7CgogICAgICAgIEVuYWJsZWRGbGFncyB8PSAoMTYgPDwgaW5k
ZXgpOwogICAgICAgIEVuYWJsZUVkZ2VWZXJ0ZXgoaW5kZXgsIHRydWUsIGNkKTsKICAgICAgICBF
bmFibGVFZGdlVmVydGV4KChpbmRleCArIDEpICYgMywgdHJ1ZSwgY2QpOwoKICAgICAgICBpZiAo
Q2hpbGRbaW5kZXhdID09IDApIHsKICAgICAgICAgICAgQ3JlYXRlQ2hpbGQoaW5kZXgsIGNkKTsK
ICAgICAgICB9CiAgICB9Cn0KCgppbnQgQmxvY2tEZWxldGVDb3VudCA9IDA7CmludCBCbG9ja1Vw
ZGF0ZUNvdW50ID0gMDsKCgp2b2lkIHF1YWRzcXVhcmU6Ok5vdGlmeUNoaWxkRGlzYWJsZShjb25z
dCBxdWFkY29ybmVyZGF0YSYgY2QsIGludCBpbmRleCkKCgp7CgogICAgRW5hYmxlZEZsYWdzICY9
IH4oMTYgPDwgaW5kZXgpOwoKCiAgICBxdWFkc3F1YXJlKiBzOwoKICAgIGlmIChpbmRleCAmIDIp
IHMgPSB0aGlzOwogICAgZWxzZSBzID0gR2V0TmVpZ2hib3IoMSwgY2QpOwogICAgaWYgKHMpIHsK
ICAgICAgICBzLT5TdWJFbmFibGVkQ291bnRbMV0tLTsKICAgIH0KCiAgICBpZiAoaW5kZXggPT0g
MSB8fCBpbmRleCA9PSAyKSBzID0gR2V0TmVpZ2hib3IoMiwgY2QpOwogICAgZWxzZSBzID0gdGhp
czsKICAgIGlmIChzKSB7CiAgICAgICAgcy0+U3ViRW5hYmxlZENvdW50WzBdLS07CiAgICB9CiMg
Nzg1ICJxdWFkdHJlZS5jcHAiCn0KCgpzdGF0aWMgZmxvYXQgRGV0YWlsVGhyZXNob2xkID0gMTAw
OwoKCmJvb2wgcXVhZHNxdWFyZTo6VmVydGV4VGVzdChpbnQgeCwgZmxvYXQgeSwgaW50IHosIGZs
b2F0IGVycm9yLCBjb25zdCBmbG9hdCBWaWV3ZXJbM10sIGludCBsZXZlbCwgdmVydGV4X2xvY190
IHZlcnRleF9sb2MgKQoKCgp7CiAgICBmbG9hdCBkeCA9IGZhYnMoeCAtIFZpZXdlclswXSkgKiBm
YWJzKCBTY2FsZVggKTsKICAgIGZsb2F0IGR5ID0gZmFicyh5IC0gVmlld2VyWzFdKTsKICAgIGZs
b2F0IGR6ID0gZmFicyh6IC0gVmlld2VyWzJdKSAqIGZhYnMoIFNjYWxlWiApOwogICAgZmxvYXQg
ZCA9ICgoZHgpPigoKGR5KT4oZHopPyhkeSk6KGR6KSkpPyhkeCk6KCgoZHkpPihkeik/KGR5KToo
ZHopKSkpOwoKCiAgICBpZiAoIHZlcnRleF9sb2MgPT0gU291dGggJiYgRm9yY2VTb3V0aFZlcnQg
JiYgZCA8IDEwMCApCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBpZiAoIHZl
cnRleF9sb2MgPT0gRWFzdCAmJiBGb3JjZUVhc3RWZXJ0ICYmIGQgPCAxMDAgKQogICAgewogICAg
ICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaWYgKCBkIDwgMjAgKSB7CiAgICAgICAgZXJyb3Ig
Kj0gMzsKICAgIH0KCiAgICByZXR1cm4gZXJyb3IgKiBEZXRhaWxUaHJlc2hvbGQgPiBkOwp9CgoK
Ym9vbCBxdWFkc3F1YXJlOjpCb3hUZXN0KGludCB4LCBpbnQgeiwgZmxvYXQgc2l6ZSwgZmxvYXQg
bWlueSwgZmxvYXQgbWF4eSwgZmxvYXQgZXJyb3IsIGNvbnN0IGZsb2F0IFZpZXdlclszXSkKCgoK
ewoKICAgIGZsb2F0IGhhbGYgPSBzaXplICogMC41OwogICAgZmxvYXQgZHggPSAoIGZhYnMoeCAr
IGhhbGYgLSBWaWV3ZXJbMF0pIC0gaGFsZiApICogZmFicyhTY2FsZVgpOwogICAgZmxvYXQgZHkg
PSBmYWJzKChtaW55ICsgbWF4eSkgKiAwLjUgLSBWaWV3ZXJbMV0pIC0gKG1heHkgLSBtaW55KSAq
IDAuNTsKICAgIGZsb2F0IGR6ID0gKCBmYWJzKHogKyBoYWxmIC0gVmlld2VyWzJdKSAtIGhhbGYg
KSAqIGZhYnMoU2NhbGVaKTsKICAgIGZsb2F0IGQgPSAoKGR4KT4oKChkeSk+KGR6KT8oZHkpOihk
eikpKT8oZHgpOigoKGR5KT4oZHopPyhkeSk6KGR6KSkpKTsKCiAgICBpZiAoIGQgPCAyMCApIHsK
ICAgICAgICBlcnJvciAqPSAzOwogICAgfQoKICAgIGlmICggZXJyb3IgKiBEZXRhaWxUaHJlc2hv
bGQgPiBkICkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKCiAgICBpZiAoICggeCA8IFJv
d1NpemUtMSAmJiB4K3NpemUgPj0gUm93U2l6ZSApIHx8CiAgICAgICAgICggeiA8IE51bVJvd3Mt
MSAmJiB6K3NpemUgPj0gTnVtUm93cyApICkKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
IH0KCiAgICByZXR1cm4gZmFsc2U7Cn0KCnZvaWQgcXVhZHNxdWFyZTo6VXBkYXRlKGNvbnN0IHF1
YWRjb3JuZXJkYXRhJiBjZCwgY29uc3QgZmxvYXQgVmlld2VyTG9jYXRpb25bM10sIGZsb2F0IERl
dGFpbCkKCgoKewoKICAgIGZsb2F0IFZpZXdlclszXTsKCiAgICBEZXRhaWxUaHJlc2hvbGQgPSBE
ZXRhaWw7CgogICAgVmlld2VyWzBdID0gVmlld2VyTG9jYXRpb25bMF0gLyBTY2FsZVg7CiAgICBW
aWV3ZXJbMV0gPSBWaWV3ZXJMb2NhdGlvblsxXTsKICAgIFZpZXdlclsyXSA9IFZpZXdlckxvY2F0
aW9uWzJdIC8gU2NhbGVaOwoKICAgIFVwZGF0ZUF1eChjZCwgVmlld2VyLCAwLCBTb21lQ2xpcCk7
Cn0KCgp2b2lkIHF1YWRzcXVhcmU6OlVwZGF0ZUF1eChjb25zdCBxdWFkY29ybmVyZGF0YSYgY2Qs
IGNvbnN0IGZsb2F0IFZpZXdlckxvY2F0aW9uWzNdLCBmbG9hdCBDZW50ZXJFcnJvciwgY2xpcF9y
ZXN1bHRfdCB2aXMgKQoKewogICAgQmxvY2tVcGRhdGVDb3VudCsrOwoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAg
ICBpZiAoIHZpcyAhPSBOb0NsaXAgKSB7CiAgICAgICAgdmlzID0gQ2xpcFNxdWFyZSggY2QgKTsK
CiAgICAgICAgaWYgKCB2aXMgPT0gTm90VmlzaWJsZSApIHsKICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgIH0KICAgIH0KCgogICAgaWYgKERpcnR5KSB7CiAgICAgICAgUmVjb21wdXRlRXJyb3Io
Y2QpOwogICAgfQoKICAgIGludCBoYWxmID0gMSA8PCBjZC5MZXZlbDsKICAgIGludCB3aG9sZSA9
IGhhbGYgPDwgMTsKCgoKCiAgICBpZiAoIChFbmFibGVkRmxhZ3MgJiAxKSA9PSAwICYmCiAgICAg
ICAgIFZlcnRleFRlc3QoY2QueG9yZyArIHdob2xlLCBWZXJ0ZXhbMV0uWSwgY2Quem9yZyArIGhh
bGYsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JbMF0sIFZpZXdlckxvY2F0aW9uLCBjZC5MZXZl
bCwgRWFzdCkgPT0gdHJ1ZSApCiAgICB7CiAgICAgICAgRW5hYmxlRWRnZVZlcnRleCgwLCBmYWxz
ZSwgY2QpOwogICAgfQoKCiAgICBpZiAoIChFbmFibGVkRmxhZ3MgJiA4KSA9PSAwICYmCiAgICAg
ICAgIFZlcnRleFRlc3QoY2QueG9yZyArIGhhbGYsIFZlcnRleFs0XS5ZLCBjZC56b3JnICsgd2hv
bGUsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JbMV0sIFZpZXdlckxvY2F0aW9uLCBjZC5MZXZl
bCwgU291dGgpID09IHRydWUgKQogICAgewogICAgICAgIEVuYWJsZUVkZ2VWZXJ0ZXgoMywgZmFs
c2UsIGNkKTsKICAgIH0KCiAgICBpZiAoY2QuTGV2ZWwgPiAwKSB7CiAgICAgICAgaWYgKChFbmFi
bGVkRmxhZ3MgJiAzMikgPT0gMCkgewogICAgICAgICAgICBpZiAoQm94VGVzdChjZC54b3JnLCBj
ZC56b3JnLCBoYWxmLCBNaW5ZLCBNYXhZLCBFcnJvclszXSwgVmlld2VyTG9jYXRpb24pID09IHRy
dWUpIEVuYWJsZUNoaWxkKDEsIGNkKTsKICAgICAgICB9CiAgICAgICAgaWYgKChFbmFibGVkRmxh
Z3MgJiAxNikgPT0gMCkgewogICAgICAgICAgICBpZiAoQm94VGVzdChjZC54b3JnICsgaGFsZiwg
Y2Quem9yZywgaGFsZiwgTWluWSwgTWF4WSwgRXJyb3JbMl0sIFZpZXdlckxvY2F0aW9uKSA9PSB0
cnVlKSBFbmFibGVDaGlsZCgwLCBjZCk7CiAgICAgICAgfQogICAgICAgIGlmICgoRW5hYmxlZEZs
YWdzICYgNjQpID09IDApIHsKICAgICAgICAgICAgaWYgKEJveFRlc3QoY2QueG9yZywgY2Quem9y
ZyArIGhhbGYsIGhhbGYsIE1pblksIE1heFksIEVycm9yWzRdLCBWaWV3ZXJMb2NhdGlvbikgPT0g
dHJ1ZSkgRW5hYmxlQ2hpbGQoMiwgY2QpOwogICAgICAgIH0KICAgICAgICBpZiAoKEVuYWJsZWRG
bGFncyAmIDEyOCkgPT0gMCkgewogICAgICAgICAgICBpZiAoQm94VGVzdChjZC54b3JnICsgaGFs
ZiwgY2Quem9yZyArIGhhbGYsIGhhbGYsIE1pblksIE1heFksIEVycm9yWzVdLCBWaWV3ZXJMb2Nh
dGlvbikgPT0gdHJ1ZSkgRW5hYmxlQ2hpbGQoMywgY2QpOwogICAgICAgIH0KCgogICAgICAgIHF1
YWRjb3JuZXJkYXRhIHE7CgogICAgICAgIGlmIChFbmFibGVkRmxhZ3MgJiAzMikgewogICAgICAg
ICAgICBTZXR1cENvcm5lckRhdGEoJnEsIGNkLCAxKTsKICAgICAgICAgICAgQ2hpbGRbMV0tPlVw
ZGF0ZUF1eChxLCBWaWV3ZXJMb2NhdGlvbiwgRXJyb3JbM10sIHZpcyk7CiAgICAgICAgfQogICAg
ICAgIGlmIChFbmFibGVkRmxhZ3MgJiAxNikgewogICAgICAgICAgICBTZXR1cENvcm5lckRhdGEo
JnEsIGNkLCAwKTsKICAgICAgICAgICAgQ2hpbGRbMF0tPlVwZGF0ZUF1eChxLCBWaWV3ZXJMb2Nh
dGlvbiwgRXJyb3JbMl0sIHZpcyk7CiAgICAgICAgfQogICAgICAgIGlmIChFbmFibGVkRmxhZ3Mg
JiA2NCkgewogICAgICAgICAgICBTZXR1cENvcm5lckRhdGEoJnEsIGNkLCAyKTsKICAgICAgICAg
ICAgQ2hpbGRbMl0tPlVwZGF0ZUF1eChxLCBWaWV3ZXJMb2NhdGlvbiwgRXJyb3JbNF0sIHZpcyk7
CiAgICAgICAgfQogICAgICAgIGlmIChFbmFibGVkRmxhZ3MgJiAxMjgpIHsKICAgICAgICAgICAg
U2V0dXBDb3JuZXJEYXRhKCZxLCBjZCwgMyk7CiAgICAgICAgICAgIENoaWxkWzNdLT5VcGRhdGVB
dXgocSwgVmlld2VyTG9jYXRpb24sIEVycm9yWzVdLCB2aXMpOwogICAgICAgIH0KICAgIH0KCgog
ICAgaWYgKCAoRW5hYmxlZEZsYWdzICYgMSkgJiYKICAgICAgICAgU3ViRW5hYmxlZENvdW50WzBd
ID09IDAgJiYKICAgICAgICAgVmVydGV4VGVzdChjZC54b3JnICsgd2hvbGUsIFZlcnRleFsxXS5Z
LCBjZC56b3JnICsgaGFsZiwKICAgICAgICAgICAgICAgICAgICBFcnJvclswXSwgVmlld2VyTG9j
YXRpb24sIGNkLkxldmVsLCBFYXN0KSA9PSBmYWxzZSkKICAgIHsKICAgICAgICBFbmFibGVkRmxh
Z3MgJj0gfjE7CiAgICAgICAgcXVhZHNxdWFyZSogcyA9IEdldE5laWdoYm9yKDAsIGNkKTsKICAg
ICAgICBpZiAocykgcy0+RW5hYmxlZEZsYWdzICY9IH40OwogICAgfQoKICAgIGlmICggKEVuYWJs
ZWRGbGFncyAmIDgpICYmCiAgICAgICAgIFN1YkVuYWJsZWRDb3VudFsxXSA9PSAwICYmCiAgICAg
ICAgIFZlcnRleFRlc3QoY2QueG9yZyArIGhhbGYsIFZlcnRleFs0XS5ZLCBjZC56b3JnICsgd2hv
bGUsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JbMV0sIFZpZXdlckxvY2F0aW9uLCBjZC5MZXZl
bCwgU291dGgpID09IGZhbHNlKQogICAgewogICAgICAgIEVuYWJsZWRGbGFncyAmPSB+ODsKICAg
ICAgICBxdWFkc3F1YXJlKiBzID0gR2V0TmVpZ2hib3IoMywgY2QpOwogICAgICAgIGlmIChzKSBz
LT5FbmFibGVkRmxhZ3MgJj0gfjI7CiAgICB9CgogICAgaWYgKEVuYWJsZWRGbGFncyA9PSAwICYm
CiAgICAgICAgY2QuUGFyZW50ICE9IF9fbnVsbCAmJgogICAgICAgIEJveFRlc3QoY2QueG9yZywg
Y2Quem9yZywgd2hvbGUsIE1pblksIE1heFksIENlbnRlckVycm9yLAogICAgICAgICAgICAgICAg
Vmlld2VyTG9jYXRpb24pID09IGZhbHNlKQogICAgewoKICAgICAgICBjZC5QYXJlbnQtPlNxdWFy
ZS0+Tm90aWZ5Q2hpbGREaXNhYmxlKCpjZC5QYXJlbnQsIGNkLkNoaWxkSW5kZXgpOwogICAgfQp9
CgpHTHVpbnQgVmVydGV4SW5kaWNlc1s5XTsKaW50IFZlcnRleFRlcnJhaW5zWzldOwoKdm9pZCBx
dWFkc3F1YXJlOjpJbml0VmVydChpbnQgaSwgaW50IHgsIGludCB6KQoKCnsKICAgIGludCBpZHg7
CgogICAgaWYgKCB4ID49IFJvd1NpemUgKSB7CiAgICAgICAgeCA9IFJvd1NpemUtMTsKICAgIH0K
ICAgIGlmICggeiA+PSBOdW1Sb3dzICkgewogICAgICAgIHogPSBOdW1Sb3dzIC0gMTsKICAgIH0K
CiAgICBpZHggPSB4ICsgUm93U2l6ZSAqIHo7CgogICAgVmVydGV4SW5kaWNlc1tpXSA9IGlkeDsK
ICAgIFZlcnRleFRlcnJhaW5zW2ldID0gVGVycmFpbltpZHhdOwp9CgpHTHVieXRlICpWTkNBcnJh
eTsKCnZvaWQgcXVhZHNxdWFyZTo6RHJhd1RyaXMoKQp7CiAgICBpbnQgdG1wX21pbl9pZHggPSBW
ZXJ0ZXhBcnJheU1pbklkeDsKICAgIGlmICggZ2xMb2NrQXJyYXlzRVhUX3AgJiYgZ2V0cGFyYW1f
dXNlX2N2YSgpICkgewoKICAgICAgICBpZiAoIGdldHBhcmFtX2N2YV9oYWNrKCkgKSB7CgoKCiAg
ICAgICAgICAgIGlmICggdG1wX21pbl9pZHggPT0gMCApIHsKICAgICAgICAgICAgICAgIHRtcF9t
aW5faWR4ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZ2xMb2NrQXJyYXlz
RVhUX3AoIHRtcF9taW5faWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXJyYXlN
YXhJZHggLSB0bXBfbWluX2lkeCArIDEgKTsKICAgIH0KCiAgICBnbERyYXdFbGVtZW50cyggMHgw
MDA0LCBWZXJ0ZXhBcnJheUNvdW50ZXIsCiAgICAgICAgICAgICAgICAgICAgMHgxNDA1LCBWZXJ0
ZXhBcnJheUluZGljZXMgKTsKCiAgICBpZiAoIGdsVW5sb2NrQXJyYXlzRVhUX3AgJiYgZ2V0cGFy
YW1fdXNlX2N2YSgpICkgewogICAgICAgIGdsVW5sb2NrQXJyYXlzRVhUX3AoKTsKICAgIH0KfQoK
dm9pZCBxdWFkc3F1YXJlOjpEcmF3RW52bWFwVHJpcygpCnsKICAgIGlmICggVmVydGV4QXJyYXlD
b3VudGVyID4gMCAmJiBFbnZtYXBUZXhJZCAhPSAwICkgewoKICAgICAgICBnbFRleEdlbmkoIDB4
MjAwMCwgMHgyNTAwLCAweDI0MDIgKTsKICAgICAgICBnbFRleEdlbmkoIDB4MjAwMSwgMHgyNTAw
LCAweDI0MDIgKTsKCiAgICAgICAgZ2xCaW5kVGV4dHVyZSggMHgwREUxLCBFbnZtYXBUZXhJZCAp
OwoKICAgICAgICBEcmF3VHJpcygpOwoKICAgICAgICBnbFRleEdlbmkoIDB4MjAwMCwgMHgyNTAw
LCAweDI0MDEgKTsKICAgICAgICBnbFRleEdlbmkoIDB4MjAwMSwgMHgyNTAwLCAweDI0MDEgKTsK
CiAgICB9Cn0KCnZvaWQgcXVhZHNxdWFyZTo6SW5pdEFycmF5Q291bnRlcnMoKQp7CiAgICBWZXJ0
ZXhBcnJheUNvdW50ZXIgPSAwOwogICAgVmVydGV4QXJyYXlNaW5JZHggPSAyMTQ3NDgzNjQ3Owog
ICAgVmVydGV4QXJyYXlNYXhJZHggPSAwOwp9Cgp2b2lkIHF1YWRzcXVhcmU6OlJlbmRlcihjb25z
dCBxdWFkY29ybmVyZGF0YSYgY2QsIEdMdWJ5dGUgKnZuY19hcnJheSkKCgp7CiAgICBWTkNBcnJh
eSA9IHZuY19hcnJheTsKICAgIGJvb2xfdCBmb2dfb247CiAgICB1bnNpZ25lZCBpbnQgaSwgajsK
ICAgIGludCBueCwgbnk7CiAgICBnZXRfY291cnNlX2RpdmlzaW9ucyggJm54LCAmbnkgKTsKCgoK
ICAgIGZvZ19vbiA9IGlzX2ZvZ19vbigpOwoKCgoKCiAgICBmb3IgKGo9MDsgajxOdW1UZXJyYWlu
czsgaisrKSB7CiAgICAgICAgSW5pdEFycmF5Q291bnRlcnMoKTsKCiAgICAgICAgUmVuZGVyQXV4
KGNkLCBTb21lQ2xpcCwgaik7CgogICAgICAgIGlmICggVmVydGV4QXJyYXlDb3VudGVyID09IDAg
KSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgZ2xCaW5kVGV4dHVy
ZSggMHgwREUxLCBUZXhJZFtqXSApOwogICAgICAgIERyYXdUcmlzKCk7CgogICAgICAgIGlmICgg
aiA9PSBJY2UgJiYgZ2V0cGFyYW1fdGVycmFpbl9lbnZtYXAoKSApIHsKCiAgICAgICAgICAgIGds
RGlzYWJsZUNsaWVudFN0YXRlKCAweDgwNzYgKTsKICAgICAgICAgICAgZ2xDb2xvcjRmKCAxLjAs
IDEuMCwgMS4wLCA1MCAvIDI1NS4wICk7CgogICAgICAgICAgICBEcmF3RW52bWFwVHJpcygpOwoK
ICAgICAgICAgICAgZ2xFbmFibGVDbGllbnRTdGF0ZSggMHg4MDc2ICk7CiAgICAgICAgfQoKICAg
IH0KCgoKCgogICAgaWYgKCBnZXRwYXJhbV90ZXJyYWluX2JsZW5kaW5nKCkgJiYKICAgICAgICAg
Z2V0cGFyYW1fcGVyZmVjdF90ZXJyYWluX2JsZW5kaW5nKCkgKSB7CgoKCgogICAgICAgIEluaXRB
cnJheUNvdW50ZXJzKCk7CiAgICAgICAgUmVuZGVyQXV4KCBjZCwgU29tZUNsaXAsIC0xICk7Cgog
ICAgICAgIGlmICggVmVydGV4QXJyYXlDb3VudGVyICE9IDAgKSB7CgogICAgICAgICAgICBnbERp
c2FibGUoIDB4MEI2MCApOwoKCiAgICAgICAgICAgIGZvciAoaT0wOyBpPFZlcnRleEFycmF5Q291
bnRlcjsgaSsrKSB7CiAgICAgICAgICAgICAgICBWTkNBcnJheVtWZXJ0ZXhBcnJheUluZGljZXNb
aV0qKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApKyggOCAqIHNp
emVvZihHTGZsb2F0KSArIDQgKiBzaXplb2YoR0x1Ynl0ZSkgKS00KygwKV0gPSAwOwogICAgICAg
ICAgICAgICAgVk5DQXJyYXlbVmVydGV4QXJyYXlJbmRpY2VzW2ldKiggOCAqIHNpemVvZihHTGZs
b2F0KSArIDQgKiBzaXplb2YoR0x1Ynl0ZSkgKSsoIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICog
c2l6ZW9mKEdMdWJ5dGUpICktNCsoMSldID0gMDsKICAgICAgICAgICAgICAgIFZOQ0FycmF5W1Zl
cnRleEFycmF5SW5kaWNlc1tpXSooIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdM
dWJ5dGUpICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApLTQr
KDIpXSA9IDA7CiAgICAgICAgICAgICAgICBWTkNBcnJheVtWZXJ0ZXhBcnJheUluZGljZXNbaV0q
KCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApKyggOCAqIHNpemVv
ZihHTGZsb2F0KSArIDQgKiBzaXplb2YoR0x1Ynl0ZSkgKS00KygzKV0gPSAyNTU7CiAgICAgICAg
ICAgIH0KCgogICAgICAgICAgICBnbEJpbmRUZXh0dXJlKCAweDBERTEsIFRleElkWzBdICk7CiAg
ICAgICAgICAgIERyYXdUcmlzKCk7CgoKICAgICAgICAgICAgaWYgKGZvZ19vbikgewogICAgICAg
ICAgICAgICAgZ2xFbmFibGUoIDB4MEI2MCApOwogICAgICAgICAgICB9CgoKICAgICAgICAgICAg
Z2xCbGVuZEZ1bmMoIDB4MDMwMiwgMHgxICk7CgoKICAgICAgICAgICAgZm9yIChpPTA7IGk8VmVy
dGV4QXJyYXlDb3VudGVyOyBpKyspIHsKICAgICAgICAgICAgICAgIFZOQ0FycmF5W1ZlcnRleEFy
cmF5SW5kaWNlc1tpXSooIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdMdWJ5dGUp
ICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApLTQrKDApXSA9
IDI1NTsKICAgICAgICAgICAgICAgIFZOQ0FycmF5W1ZlcnRleEFycmF5SW5kaWNlc1tpXSooIDgg
KiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdMdWJ5dGUpICkrKCA4ICogc2l6ZW9mKEdM
ZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApLTQrKDEpXSA9IDI1NTsKICAgICAgICAgICAg
ICAgIFZOQ0FycmF5W1ZlcnRleEFycmF5SW5kaWNlc1tpXSooIDggKiBzaXplb2YoR0xmbG9hdCkg
KyA0ICogc2l6ZW9mKEdMdWJ5dGUpICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVv
ZihHTHVieXRlKSApLTQrKDIpXSA9IDI1NTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9y
IChqPTA7IGo8TnVtVGVycmFpbnM7IGorKykgewogICAgICAgICAgICAgICAgZ2xCaW5kVGV4dHVy
ZSggMHgwREUxLCBUZXhJZFtqXSApOwoKCiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxWZXJ0
ZXhBcnJheUNvdW50ZXI7IGkrKykgewogICAgICAgICAgICAgICAgICAgIFZOQ0FycmF5W1ZlcnRl
eEFycmF5SW5kaWNlc1tpXSooIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdMdWJ5
dGUpICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApLTQrKDMp
XSA9CiAgICAgICAgICAgICAgICAgICAgICAgIChUZXJyYWluW1ZlcnRleEFycmF5SW5kaWNlc1tp
XV0gPT0gKHRlcnJhaW5fdClqICkgPwogICAgICAgICAgICAgICAgICAgICAgICAyNTUgOiAwOwog
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIERyYXdUcmlzKCk7CiAgICAgICAgICAg
IH0KCgoKICAgICAgICAgICAgaWYgKCBnZXRwYXJhbV90ZXJyYWluX2Vudm1hcCgpICkgewogICAg
ICAgICAgICAgICAgZ2xCbGVuZEZ1bmMoIDB4MDMwMiwgMHgwMzAzICk7CgoKICAgICAgICAgICAg
ICAgIGZvciAoaT0wOyBpPFZlcnRleEFycmF5Q291bnRlcjsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgICAgVk5DQXJyYXlbVmVydGV4QXJyYXlJbmRpY2VzW2ldKiggOCAqIHNpemVvZihHTGZsb2F0
KSArIDQgKiBzaXplb2YoR0x1Ynl0ZSkgKSsoIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6
ZW9mKEdMdWJ5dGUpICktNCsoMyldID0KICAgICAgICAgICAgICAgICAgICAgICAgKFRlcnJhaW5b
VmVydGV4QXJyYXlJbmRpY2VzW2ldXSA9PSBJY2UpID8KICAgICAgICAgICAgICAgICAgICAgICAg
NTAgOiAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgRHJhd0Vudm1hcFRyaXMo
KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBnbEJsZW5kRnVuYyggMHgwMzAy
LCAweDAzMDMgKTsKfQoKY2xpcF9yZXN1bHRfdCBxdWFkc3F1YXJlOjpDbGlwU3F1YXJlKCBjb25z
dCBxdWFkY29ybmVyZGF0YSYgY2QgKQp7CiAgICBwb2ludF90IG1pbiwgbWF4OwogICAgY2xpcF9y
ZXN1bHRfdCBjbGlwX3Jlc3VsdDsKICAgIGludCB3aG9sZSA9IDIgPDwgY2QuTGV2ZWw7CgogICAg
aWYgKCBjZC54b3JnID49IFJvd1NpemUtMSApIHsKICAgICAgICByZXR1cm4gTm90VmlzaWJsZTsK
ICAgIH0KCiAgICBpZiAoIGNkLnpvcmcgPj0gTnVtUm93cy0xICkgewogICAgICAgIHJldHVybiBO
b3RWaXNpYmxlOwogICAgfQoKICAgIG1pbi54ID0gY2QueG9yZyAqIFNjYWxlWDsKICAgIG1pbi55
ID0gTWluWTsKICAgIG1pbi56ID0gY2Quem9yZyAqIFNjYWxlWjsKICAgIG1heC54ID0gKGNkLnhv
cmcgKyB3aG9sZSkgKiBTY2FsZVg7CiAgICBtYXgueSA9IE1heFk7CiAgICBtYXgueiA9IChjZC56
b3JnICsgd2hvbGUpICogU2NhbGVaOwoKCiAgICBpZiAoIG1pbi54ID4gbWF4LnggKSB7CiAgICAg
ICAgc2NhbGFyX3QgdG1wID0gbWluLng7CiAgICAgICAgbWluLnggPSBtYXgueDsKICAgICAgICBt
YXgueCA9IHRtcDsKICAgIH0KCiAgICBpZiAoIG1pbi56ID4gbWF4LnogKSB7CiAgICAgICAgc2Nh
bGFyX3QgdG1wID0gbWluLno7CiAgICAgICAgbWluLnogPSBtYXguejsKICAgICAgICBtYXgueiA9
IHRtcDsKICAgIH0KCiAgICBjbGlwX3Jlc3VsdCA9IGNsaXBfYWFiYl90b192aWV3X2ZydXN0dW0o
bWluLCBtYXgpOwoKICAgIGlmICggY2xpcF9yZXN1bHQgPT0gTm90VmlzaWJsZSB8fCBjbGlwX3Jl
c3VsdCA9PSBTb21lQ2xpcCApIHsKICAgICAgICByZXR1cm4gY2xpcF9yZXN1bHQ7CiAgICB9Cgog
ICAgaWYgKCBjZC54b3JnICsgd2hvbGUgPj0gUm93U2l6ZSApIHsKICAgICAgICByZXR1cm4gU29t
ZUNsaXA7CiAgICB9CiAgICBpZiAoIGNkLnpvcmcgKyB3aG9sZSA+PSBOdW1Sb3dzICkgewogICAg
ICAgIHJldHVybiBTb21lQ2xpcDsKICAgIH0KCiAgICByZXR1cm4gY2xpcF9yZXN1bHQ7Cn0KCgp0
eXBlZGVmIHZvaWQgKCptYWtlX3RyaV9mdW5jX3QpKCBpbnQgYSwgaW50IGIsIGludCBjLCBpbnQg
dGVycmFpbiApOwojIDEyMjkgInF1YWR0cmVlLmNwcCIKaW5saW5lIHZvaWQgcXVhZHNxdWFyZTo6
TWFrZVRyaSggaW50IGEsIGludCBiLCBpbnQgYywgaW50IHRlcnJhaW4gKQp7CiAgICBpZiAoICgg
VmVydGV4VGVycmFpbnNbYV0gPT0gdGVycmFpbiB8fAogICAgICAgICAgIFZlcnRleFRlcnJhaW5z
W2JdID09IHRlcnJhaW4gfHwKICAgICAgICAgICBWZXJ0ZXhUZXJyYWluc1tjXSA9PSB0ZXJyYWlu
ICkgKQogICAgewogICAgICAgIFZlcnRleEFycmF5SW5kaWNlc1tWZXJ0ZXhBcnJheUNvdW50ZXIr
K10gPSBWZXJ0ZXhJbmRpY2VzW2FdOwogICAgICAgIFZOQ0FycmF5W1ZlcnRleEluZGljZXNbYV0q
KCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApKyggOCAqIHNpemVv
ZihHTGZsb2F0KSArIDQgKiBzaXplb2YoR0x1Ynl0ZSkgKS00KygzKV0gPSAoIHRlcnJhaW4gPD0g
VmVydGV4VGVycmFpbnNbYV0gKSA/IDI1NSA6IDA7CiAgICAgICAgaWYgKCBWZXJ0ZXhJbmRpY2Vz
W2FdID4gVmVydGV4QXJyYXlNYXhJZHggKSB7IFZlcnRleEFycmF5TWF4SWR4ID0gVmVydGV4SW5k
aWNlc1thXTsgfSBpZiAoIFZlcnRleEluZGljZXNbYV0gPCBWZXJ0ZXhBcnJheU1pbklkeCApIHsg
VmVydGV4QXJyYXlNaW5JZHggPSBWZXJ0ZXhJbmRpY2VzW2FdOyB9OwogICAgICAgIFZlcnRleEFy
cmF5SW5kaWNlc1tWZXJ0ZXhBcnJheUNvdW50ZXIrK10gPSBWZXJ0ZXhJbmRpY2VzW2JdOwogICAg
ICAgIFZOQ0FycmF5W1ZlcnRleEluZGljZXNbYl0qKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAq
IHNpemVvZihHTHVieXRlKSApKyggOCAqIHNpemVvZihHTGZsb2F0KSArIDQgKiBzaXplb2YoR0x1
Ynl0ZSkgKS00KygzKV0gPSAoIHRlcnJhaW4gPD0gVmVydGV4VGVycmFpbnNbYl0gKSA/IDI1NSA6
IDA7CiAgICAgICAgaWYgKCBWZXJ0ZXhJbmRpY2VzW2JdID4gVmVydGV4QXJyYXlNYXhJZHggKSB7
IFZlcnRleEFycmF5TWF4SWR4ID0gVmVydGV4SW5kaWNlc1tiXTsgfSBpZiAoIFZlcnRleEluZGlj
ZXNbYl0gPCBWZXJ0ZXhBcnJheU1pbklkeCApIHsgVmVydGV4QXJyYXlNaW5JZHggPSBWZXJ0ZXhJ
bmRpY2VzW2JdOyB9OwogICAgICAgIFZlcnRleEFycmF5SW5kaWNlc1tWZXJ0ZXhBcnJheUNvdW50
ZXIrK10gPSBWZXJ0ZXhJbmRpY2VzW2NdOwogICAgICAgIFZOQ0FycmF5W1ZlcnRleEluZGljZXNb
Y10qKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApKyggOCAqIHNp
emVvZihHTGZsb2F0KSArIDQgKiBzaXplb2YoR0x1Ynl0ZSkgKS00KygzKV0gPSAoIHRlcnJhaW4g
PD0gVmVydGV4VGVycmFpbnNbY10gKSA/IDI1NSA6IDA7CiAgICAgICAgaWYgKCBWZXJ0ZXhJbmRp
Y2VzW2NdID4gVmVydGV4QXJyYXlNYXhJZHggKSB7IFZlcnRleEFycmF5TWF4SWR4ID0gVmVydGV4
SW5kaWNlc1tjXTsgfSBpZiAoIFZlcnRleEluZGljZXNbY10gPCBWZXJ0ZXhBcnJheU1pbklkeCAp
IHsgVmVydGV4QXJyYXlNaW5JZHggPSBWZXJ0ZXhJbmRpY2VzW2NdOyB9OwogICAgfQp9CgoKaW5s
aW5lIHZvaWQgcXVhZHNxdWFyZTo6TWFrZVNwZWNpYWxUcmkoIGludCBhLCBpbnQgYiwgaW50IGMs
IGludCB0ZXJyYWluKQp7CgoKICAgIGlmICggVmVydGV4VGVycmFpbnNbYV0gIT0gVmVydGV4VGVy
cmFpbnNbYl0gJiYKICAgICAgICAgVmVydGV4VGVycmFpbnNbYV0gIT0gVmVydGV4VGVycmFpbnNb
Y10gJiYKICAgICAgICAgVmVydGV4VGVycmFpbnNbYl0gIT0gVmVydGV4VGVycmFpbnNbY10gKQog
ICAgewogICAgICAgIFZlcnRleEFycmF5SW5kaWNlc1tWZXJ0ZXhBcnJheUNvdW50ZXIrK10gPSBW
ZXJ0ZXhJbmRpY2VzW2FdOwogICAgICAgIGlmICggVmVydGV4SW5kaWNlc1thXSA+IFZlcnRleEFy
cmF5TWF4SWR4ICkgeyBWZXJ0ZXhBcnJheU1heElkeCA9IFZlcnRleEluZGljZXNbYV07IH0gaWYg
KCBWZXJ0ZXhJbmRpY2VzW2FdIDwgVmVydGV4QXJyYXlNaW5JZHggKSB7IFZlcnRleEFycmF5TWlu
SWR4ID0gVmVydGV4SW5kaWNlc1thXTsgfTsKICAgICAgICBWZXJ0ZXhBcnJheUluZGljZXNbVmVy
dGV4QXJyYXlDb3VudGVyKytdID0gVmVydGV4SW5kaWNlc1tiXTsKICAgICAgICBpZiAoIFZlcnRl
eEluZGljZXNbYl0gPiBWZXJ0ZXhBcnJheU1heElkeCApIHsgVmVydGV4QXJyYXlNYXhJZHggPSBW
ZXJ0ZXhJbmRpY2VzW2JdOyB9IGlmICggVmVydGV4SW5kaWNlc1tiXSA8IFZlcnRleEFycmF5TWlu
SWR4ICkgeyBWZXJ0ZXhBcnJheU1pbklkeCA9IFZlcnRleEluZGljZXNbYl07IH07CiAgICAgICAg
VmVydGV4QXJyYXlJbmRpY2VzW1ZlcnRleEFycmF5Q291bnRlcisrXSA9IFZlcnRleEluZGljZXNb
Y107CiAgICAgICAgaWYgKCBWZXJ0ZXhJbmRpY2VzW2NdID4gVmVydGV4QXJyYXlNYXhJZHggKSB7
IFZlcnRleEFycmF5TWF4SWR4ID0gVmVydGV4SW5kaWNlc1tjXTsgfSBpZiAoIFZlcnRleEluZGlj
ZXNbY10gPCBWZXJ0ZXhBcnJheU1pbklkeCApIHsgVmVydGV4QXJyYXlNaW5JZHggPSBWZXJ0ZXhJ
bmRpY2VzW2NdOyB9OwogICAgfQp9CgppbmxpbmUgdm9pZCBxdWFkc3F1YXJlOjpNYWtlTm9CbGVu
ZFRyaSggaW50IGEsIGludCBiLCBpbnQgYywgaW50IHRlcnJhaW4gKQp7CiAgICBpZiAoICggVmVy
dGV4VGVycmFpbnNbYV0gPT0gdGVycmFpbiB8fAogICAgICAgICAgIFZlcnRleFRlcnJhaW5zW2Jd
ID09IHRlcnJhaW4gfHwKICAgICAgICAgICBWZXJ0ZXhUZXJyYWluc1tjXSA9PSB0ZXJyYWluICkg
JiYKICAgICAgICAgKCBWZXJ0ZXhUZXJyYWluc1thXSA+PSB0ZXJyYWluICYmCiAgICAgICAgICAg
VmVydGV4VGVycmFpbnNbYl0gPj0gdGVycmFpbiAmJgogICAgICAgICAgIFZlcnRleFRlcnJhaW5z
W2NdID49IHRlcnJhaW4gKSApCiAgICB7CiAgICAgICAgVmVydGV4QXJyYXlJbmRpY2VzW1ZlcnRl
eEFycmF5Q291bnRlcisrXSA9IFZlcnRleEluZGljZXNbYV07CiAgICAgICAgVk5DQXJyYXlbVmVy
dGV4SW5kaWNlc1thXSooIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdMdWJ5dGUp
ICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApLTQrKDMpXSA9
ICggdGVycmFpbiA8PSBWZXJ0ZXhUZXJyYWluc1thXSApID8gMjU1IDogMDsKICAgICAgICBpZiAo
IFZlcnRleEluZGljZXNbYV0gPiBWZXJ0ZXhBcnJheU1heElkeCApIHsgVmVydGV4QXJyYXlNYXhJ
ZHggPSBWZXJ0ZXhJbmRpY2VzW2FdOyB9IGlmICggVmVydGV4SW5kaWNlc1thXSA8IFZlcnRleEFy
cmF5TWluSWR4ICkgeyBWZXJ0ZXhBcnJheU1pbklkeCA9IFZlcnRleEluZGljZXNbYV07IH07CiAg
ICAgICAgVmVydGV4QXJyYXlJbmRpY2VzW1ZlcnRleEFycmF5Q291bnRlcisrXSA9IFZlcnRleElu
ZGljZXNbYl07CiAgICAgICAgVk5DQXJyYXlbVmVydGV4SW5kaWNlc1tiXSooIDggKiBzaXplb2Yo
R0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdMdWJ5dGUpICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsg
NCAqIHNpemVvZihHTHVieXRlKSApLTQrKDMpXSA9ICggdGVycmFpbiA8PSBWZXJ0ZXhUZXJyYWlu
c1tiXSApID8gMjU1IDogMDsKICAgICAgICBpZiAoIFZlcnRleEluZGljZXNbYl0gPiBWZXJ0ZXhB
cnJheU1heElkeCApIHsgVmVydGV4QXJyYXlNYXhJZHggPSBWZXJ0ZXhJbmRpY2VzW2JdOyB9IGlm
ICggVmVydGV4SW5kaWNlc1tiXSA8IFZlcnRleEFycmF5TWluSWR4ICkgeyBWZXJ0ZXhBcnJheU1p
bklkeCA9IFZlcnRleEluZGljZXNbYl07IH07CiAgICAgICAgVmVydGV4QXJyYXlJbmRpY2VzW1Zl
cnRleEFycmF5Q291bnRlcisrXSA9IFZlcnRleEluZGljZXNbY107CiAgICAgICAgVk5DQXJyYXlb
VmVydGV4SW5kaWNlc1tjXSooIDggKiBzaXplb2YoR0xmbG9hdCkgKyA0ICogc2l6ZW9mKEdMdWJ5
dGUpICkrKCA4ICogc2l6ZW9mKEdMZmxvYXQpICsgNCAqIHNpemVvZihHTHVieXRlKSApLTQrKDMp
XSA9ICggdGVycmFpbiA8PSBWZXJ0ZXhUZXJyYWluc1tjXSApID8gMjU1IDogMDsKICAgICAgICBp
ZiAoIFZlcnRleEluZGljZXNbY10gPiBWZXJ0ZXhBcnJheU1heElkeCApIHsgVmVydGV4QXJyYXlN
YXhJZHggPSBWZXJ0ZXhJbmRpY2VzW2NdOyB9IGlmICggVmVydGV4SW5kaWNlc1tjXSA8IFZlcnRl
eEFycmF5TWluSWR4ICkgeyBWZXJ0ZXhBcnJheU1pbklkeCA9IFZlcnRleEluZGljZXNbY107IH07
CiAgICB9Cn0KCnZvaWQgcXVhZHNxdWFyZTo6UmVuZGVyQXV4KGNvbnN0IHF1YWRjb3JuZXJkYXRh
JiBjZCwgY2xpcF9yZXN1bHRfdCB2aXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCB0ZXJyYWluKQoKCnsKICAgIGludCBoYWxmID0gMSA8PCBjZC5MZXZlbDsKICAgIGludCB3aG9s
ZSA9IDIgPDwgY2QuTGV2ZWw7CgoKCiAgICBpZiAodmlzICE9IE5vQ2xpcCkgewoKICAgICAgICB2
aXMgPSBDbGlwU3F1YXJlKCBjZCApOwoKICAgICAgICBpZiAodmlzID09IE5vdFZpc2libGUgKSB7
CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKCiAgICB9CgogICAgaW50IGk7CgogICAg
aW50IGZsYWdzID0gMDsKICAgIGludCBtYXNrID0gMTsKICAgIHF1YWRjb3JuZXJkYXRhIHE7CiAg
ICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrLCBtYXNrIDw8PSAxKSB7CiAgICAgICAgaWYgKEVuYWJs
ZWRGbGFncyAmICgxNiA8PCBpKSkgewogICAgICAgICAgICBTZXR1cENvcm5lckRhdGEoJnEsIGNk
LCBpKTsKICAgICAgICAgICAgQ2hpbGRbaV0tPlJlbmRlckF1eChxLCB2aXMsIHRlcnJhaW4pOwog
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZsYWdzIHw9IG1hc2s7CiAgICAgICAgfQogICAg
fQoKICAgIGlmIChmbGFncyA9PSAwKSByZXR1cm47CiMgMTM0NCAicXVhZHRyZWUuY3BwIgogICAg
SW5pdFZlcnQoMCwgY2QueG9yZyArIGhhbGYsIGNkLnpvcmcgKyBoYWxmKTsKICAgIEluaXRWZXJ0
KDEsIGNkLnhvcmcgKyB3aG9sZSwgY2Quem9yZyArIGhhbGYpOwogICAgSW5pdFZlcnQoMiwgY2Qu
eG9yZyArIHdob2xlLCBjZC56b3JnKTsKICAgIEluaXRWZXJ0KDMsIGNkLnhvcmcgKyBoYWxmLCBj
ZC56b3JnKTsKICAgIEluaXRWZXJ0KDQsIGNkLnhvcmcsIGNkLnpvcmcpOwogICAgSW5pdFZlcnQo
NSwgY2QueG9yZywgY2Quem9yZyArIGhhbGYpOwogICAgSW5pdFZlcnQoNiwgY2QueG9yZywgY2Qu
em9yZyArIHdob2xlKTsKICAgIEluaXRWZXJ0KDcsIGNkLnhvcmcgKyBoYWxmLCBjZC56b3JnICsg
d2hvbGUpOwogICAgSW5pdFZlcnQoOCwgY2QueG9yZyArIHdob2xlLCBjZC56b3JnICsgd2hvbGUp
OwojIDEzODIgInF1YWR0cmVlLmNwcCIKICAgIGlmICggdGVycmFpbiA9PSAtMSApIHsKICAgICAg
ICBpZiAoKEVuYWJsZWRGbGFncyAmIDEpID09IDAgKSB7IE1ha2VTcGVjaWFsVHJpKDAsIDIsIDgs
IHRlcnJhaW4pOyB9IGVsc2UgeyBpZiAoZmxhZ3MgJiA4KSBNYWtlU3BlY2lhbFRyaSgwLCAxLCA4
LCB0ZXJyYWluKTsgaWYgKGZsYWdzICYgMSkgTWFrZVNwZWNpYWxUcmkoMCwgMiwgMSwgdGVycmFp
bik7IH0gaWYgKChFbmFibGVkRmxhZ3MgJiAyKSA9PSAwICkgeyBNYWtlU3BlY2lhbFRyaSgwLCA0
LCAyLCB0ZXJyYWluKTsgfSBlbHNlIHsgaWYgKGZsYWdzICYgMSkgTWFrZVNwZWNpYWxUcmkoMCwg
MywgMiwgdGVycmFpbik7IGlmIChmbGFncyAmIDIpIE1ha2VTcGVjaWFsVHJpKDAsIDQsIDMsIHRl
cnJhaW4pOyB9IGlmICgoRW5hYmxlZEZsYWdzICYgNCkgPT0gMCApIHsgTWFrZVNwZWNpYWxUcmko
MCwgNiwgNCwgdGVycmFpbik7IH0gZWxzZSB7IGlmIChmbGFncyAmIDIpIE1ha2VTcGVjaWFsVHJp
KDAsIDUsIDQsIHRlcnJhaW4pOyBpZiAoZmxhZ3MgJiA0KSBNYWtlU3BlY2lhbFRyaSgwLCA2LCA1
LCB0ZXJyYWluKTsgfSBpZiAoKEVuYWJsZWRGbGFncyAmIDgpID09IDAgKSB7IE1ha2VTcGVjaWFs
VHJpKDAsIDgsIDYsIHRlcnJhaW4pOyB9IGVsc2UgeyBpZiAoZmxhZ3MgJiA0KSBNYWtlU3BlY2lh
bFRyaSgwLCA3LCA2LCB0ZXJyYWluKTsgaWYgKGZsYWdzICYgOCkgTWFrZVNwZWNpYWxUcmkoMCwg
OCwgNywgdGVycmFpbik7IH07CiAgICB9IGVsc2UgaWYgKCBnZXRwYXJhbV90ZXJyYWluX2JsZW5k
aW5nKCkgKSB7CiAgICAgICAgaWYgKChFbmFibGVkRmxhZ3MgJiAxKSA9PSAwICkgeyBNYWtlVHJp
KDAsIDIsIDgsIHRlcnJhaW4pOyB9IGVsc2UgeyBpZiAoZmxhZ3MgJiA4KSBNYWtlVHJpKDAsIDEs
IDgsIHRlcnJhaW4pOyBpZiAoZmxhZ3MgJiAxKSBNYWtlVHJpKDAsIDIsIDEsIHRlcnJhaW4pOyB9
IGlmICgoRW5hYmxlZEZsYWdzICYgMikgPT0gMCApIHsgTWFrZVRyaSgwLCA0LCAyLCB0ZXJyYWlu
KTsgfSBlbHNlIHsgaWYgKGZsYWdzICYgMSkgTWFrZVRyaSgwLCAzLCAyLCB0ZXJyYWluKTsgaWYg
KGZsYWdzICYgMikgTWFrZVRyaSgwLCA0LCAzLCB0ZXJyYWluKTsgfSBpZiAoKEVuYWJsZWRGbGFn
cyAmIDQpID09IDAgKSB7IE1ha2VUcmkoMCwgNiwgNCwgdGVycmFpbik7IH0gZWxzZSB7IGlmIChm
bGFncyAmIDIpIE1ha2VUcmkoMCwgNSwgNCwgdGVycmFpbik7IGlmIChmbGFncyAmIDQpIE1ha2VU
cmkoMCwgNiwgNSwgdGVycmFpbik7IH0gaWYgKChFbmFibGVkRmxhZ3MgJiA4KSA9PSAwICkgeyBN
YWtlVHJpKDAsIDgsIDYsIHRlcnJhaW4pOyB9IGVsc2UgeyBpZiAoZmxhZ3MgJiA0KSBNYWtlVHJp
KDAsIDcsIDYsIHRlcnJhaW4pOyBpZiAoZmxhZ3MgJiA4KSBNYWtlVHJpKDAsIDgsIDcsIHRlcnJh
aW4pOyB9OwogICAgfSBlbHNlIHsKICAgICAgICBpZiAoKEVuYWJsZWRGbGFncyAmIDEpID09IDAg
KSB7IE1ha2VOb0JsZW5kVHJpKDAsIDIsIDgsIHRlcnJhaW4pOyB9IGVsc2UgeyBpZiAoZmxhZ3Mg
JiA4KSBNYWtlTm9CbGVuZFRyaSgwLCAxLCA4LCB0ZXJyYWluKTsgaWYgKGZsYWdzICYgMSkgTWFr
ZU5vQmxlbmRUcmkoMCwgMiwgMSwgdGVycmFpbik7IH0gaWYgKChFbmFibGVkRmxhZ3MgJiAyKSA9
PSAwICkgeyBNYWtlTm9CbGVuZFRyaSgwLCA0LCAyLCB0ZXJyYWluKTsgfSBlbHNlIHsgaWYgKGZs
YWdzICYgMSkgTWFrZU5vQmxlbmRUcmkoMCwgMywgMiwgdGVycmFpbik7IGlmIChmbGFncyAmIDIp
IE1ha2VOb0JsZW5kVHJpKDAsIDQsIDMsIHRlcnJhaW4pOyB9IGlmICgoRW5hYmxlZEZsYWdzICYg
NCkgPT0gMCApIHsgTWFrZU5vQmxlbmRUcmkoMCwgNiwgNCwgdGVycmFpbik7IH0gZWxzZSB7IGlm
IChmbGFncyAmIDIpIE1ha2VOb0JsZW5kVHJpKDAsIDUsIDQsIHRlcnJhaW4pOyBpZiAoZmxhZ3Mg
JiA0KSBNYWtlTm9CbGVuZFRyaSgwLCA2LCA1LCB0ZXJyYWluKTsgfSBpZiAoKEVuYWJsZWRGbGFn
cyAmIDgpID09IDAgKSB7IE1ha2VOb0JsZW5kVHJpKDAsIDgsIDYsIHRlcnJhaW4pOyB9IGVsc2Ug
eyBpZiAoZmxhZ3MgJiA0KSBNYWtlTm9CbGVuZFRyaSgwLCA3LCA2LCB0ZXJyYWluKTsgaWYgKGZs
YWdzICYgOCkgTWFrZU5vQmxlbmRUcmkoMCwgOCwgNywgdGVycmFpbik7IH07CiAgICB9Cn0KCgp2
b2lkIHF1YWRzcXVhcmU6OlNldHVwQ29ybmVyRGF0YShxdWFkY29ybmVyZGF0YSogcSwgY29uc3Qg
cXVhZGNvcm5lcmRhdGEmIGNkLCBpbnQgQ2hpbGRJbmRleCkKIyAxNDE1ICJxdWFkdHJlZS5jcHAi
CnsKICAgIGludCBoYWxmID0gMSA8PCBjZC5MZXZlbDsKCiAgICBxLT5QYXJlbnQgPSAmY2Q7CiAg
ICBxLT5TcXVhcmUgPSBDaGlsZFtDaGlsZEluZGV4XTsKICAgIHEtPkxldmVsID0gY2QuTGV2ZWwg
LSAxOwogICAgcS0+Q2hpbGRJbmRleCA9IENoaWxkSW5kZXg7CgogICAgc3dpdGNoIChDaGlsZElu
ZGV4KSB7CiAgICBkZWZhdWx0OgogICAgY2FzZSAwOgogICAgICAgIHEtPnhvcmcgPSBjZC54b3Jn
ICsgaGFsZjsKICAgICAgICBxLT56b3JnID0gY2Quem9yZzsKICAgICAgICBxLT5WZXJ0c1swXSA9
IGNkLlZlcnRzWzBdOwogICAgICAgIHEtPlZlcnRzWzFdID0gVmVydGV4WzJdOwogICAgICAgIHEt
PlZlcnRzWzJdID0gVmVydGV4WzBdOwogICAgICAgIHEtPlZlcnRzWzNdID0gVmVydGV4WzFdOwog
ICAgICAgIGJyZWFrOwoKICAgIGNhc2UgMToKICAgICAgICBxLT54b3JnID0gY2QueG9yZzsKICAg
ICAgICBxLT56b3JnID0gY2Quem9yZzsKICAgICAgICBxLT5WZXJ0c1swXSA9IFZlcnRleFsyXTsK
ICAgICAgICBxLT5WZXJ0c1sxXSA9IGNkLlZlcnRzWzFdOwogICAgICAgIHEtPlZlcnRzWzJdID0g
VmVydGV4WzNdOwogICAgICAgIHEtPlZlcnRzWzNdID0gVmVydGV4WzBdOwogICAgICAgIGJyZWFr
OwoKICAgIGNhc2UgMjoKICAgICAgICBxLT54b3JnID0gY2QueG9yZzsKICAgICAgICBxLT56b3Jn
ID0gY2Quem9yZyArIGhhbGY7CiAgICAgICAgcS0+VmVydHNbMF0gPSBWZXJ0ZXhbMF07CiAgICAg
ICAgcS0+VmVydHNbMV0gPSBWZXJ0ZXhbM107CiAgICAgICAgcS0+VmVydHNbMl0gPSBjZC5WZXJ0
c1syXTsKICAgICAgICBxLT5WZXJ0c1szXSA9IFZlcnRleFs0XTsKICAgICAgICBicmVhazsKCiAg
ICBjYXNlIDM6CiAgICAgICAgcS0+eG9yZyA9IGNkLnhvcmcgKyBoYWxmOwogICAgICAgIHEtPnpv
cmcgPSBjZC56b3JnICsgaGFsZjsKICAgICAgICBxLT5WZXJ0c1swXSA9IFZlcnRleFsxXTsKICAg
ICAgICBxLT5WZXJ0c1sxXSA9IFZlcnRleFswXTsKICAgICAgICBxLT5WZXJ0c1syXSA9IFZlcnRl
eFs0XTsKICAgICAgICBxLT5WZXJ0c1szXSA9IGNkLlZlcnRzWzNdOwogICAgICAgIGJyZWFrOwog
ICAgfQp9CgppbnQgcXVhZHNxdWFyZTo6Um93U2l6ZTsKaW50IHF1YWRzcXVhcmU6Ok51bVJvd3M7
Cgp2b2lkIHF1YWRzcXVhcmU6OkFkZEhlaWdodE1hcChjb25zdCBxdWFkY29ybmVyZGF0YSYgY2Qs
IGNvbnN0IEhlaWdodE1hcEluZm8mIGhtKQoKCgp7CiAgICBSb3dTaXplID0gaG0uUm93V2lkdGg7
CiAgICBOdW1Sb3dzID0gaG0uWlNpemU7CgogICAgaWYgKCBjZC5QYXJlbnQgPT0gX19udWxsICkg
ewogICAgICAgIGlmICggVmVydGV4QXJyYXlJbmRpY2VzICE9IF9fbnVsbCApIHsKICAgICAgICAg
ICAgZGVsZXRlIFZlcnRleEFycmF5SW5kaWNlczsKICAgICAgICB9CgoKCgogICAgICAgIFZlcnRl
eEFycmF5SW5kaWNlcyA9IG5ldyBHTHVpbnRbNiAqIFJvd1NpemUgKiBOdW1Sb3dzXTsKICAgIH0K
CgogICAgaW50IEJsb2NrU2l6ZSA9IDIgPDwgY2QuTGV2ZWw7CiAgICBpZiAoY2QueG9yZyA+IGht
LlhPcmlnaW4gKyAoKGhtLlhTaXplICsgMikgPDwgaG0uU2NhbGUpIHx8CiAgICAgICAgY2QueG9y
ZyArIEJsb2NrU2l6ZSA8IGhtLlhPcmlnaW4gLSAoMSA8PCBobS5TY2FsZSkgfHwKICAgICAgICBj
ZC56b3JnID4gaG0uWk9yaWdpbiArICgoaG0uWlNpemUgKyAyKSA8PCBobS5TY2FsZSkgfHwKICAg
ICAgICBjZC56b3JnICsgQmxvY2tTaXplIDwgaG0uWk9yaWdpbiAtICgxIDw8IGhtLlNjYWxlKSkK
ICAgIHsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmIChjZC5QYXJlbnQgJiYgY2QuUGFy
ZW50LT5TcXVhcmUpIHsKICAgICAgICBjZC5QYXJlbnQtPlNxdWFyZS0+RW5hYmxlQ2hpbGQoY2Qu
Q2hpbGRJbmRleCwgKmNkLlBhcmVudCk7CiAgICB9CgogICAgaW50IGk7CgogICAgaW50IGhhbGYg
PSAxIDw8IGNkLkxldmVsOwoKCiAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAg
cXVhZGNvcm5lcmRhdGEgcTsKICAgICAgICBTZXR1cENvcm5lckRhdGEoJnEsIGNkLCBpKTsKCiAg
ICAgICAgaWYgKENoaWxkW2ldID09IF9fbnVsbCAmJiBjZC5MZXZlbCA+IGhtLlNjYWxlKSB7Cgog
ICAgICAgICAgICBDaGlsZFtpXSA9IG5ldyBxdWFkc3F1YXJlKCZxKTsKICAgICAgICB9CgoKICAg
ICAgICBpZiAoQ2hpbGRbaV0pIHsKICAgICAgICAgICAgQ2hpbGRbaV0tPkFkZEhlaWdodE1hcChx
LCBobSk7CiAgICAgICAgfQogICAgfQoKCiAgICBmbG9hdCBzWzVdOwogICAgc1swXSA9IGhtLlNh
bXBsZShjZC54b3JnICsgaGFsZiwgY2Quem9yZyArIGhhbGYpOwogICAgc1sxXSA9IGhtLlNhbXBs
ZShjZC54b3JnICsgaGFsZioyLCBjZC56b3JnICsgaGFsZik7CiAgICBzWzJdID0gaG0uU2FtcGxl
KGNkLnhvcmcgKyBoYWxmLCBjZC56b3JnKTsKICAgIHNbM10gPSBobS5TYW1wbGUoY2QueG9yZywg
Y2Quem9yZyArIGhhbGYpOwogICAgc1s0XSA9IGhtLlNhbXBsZShjZC54b3JnICsgaGFsZiwgY2Qu
em9yZyArIGhhbGYqMik7CgoKCgogICAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykgewogICAgICAg
IGlmIChzW2ldICE9IDApIHsKICAgICAgICAgICAgRGlydHkgPSB0cnVlOwogICAgICAgICAgICBW
ZXJ0ZXhbaV0uWSArPSBzW2ldOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoIURpcnR5KSB7Cgog
ICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICAgICAgaWYgKENoaWxkW2ld
ICYmIENoaWxkW2ldLT5EaXJ0eSkgewogICAgICAgICAgICAgICAgRGlydHkgPSB0cnVlOwogICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYg
KERpcnR5KSBTZXRTdGF0aWMoY2QpOwp9Cgpkb3VibGUgcXVhZHNxdWFyZTo6U2NhbGVYOwpkb3Vi
bGUgcXVhZHNxdWFyZTo6U2NhbGVaOwp2b2lkIHF1YWRzcXVhcmU6OlNldFNjYWxlKGRvdWJsZSB4
LCBkb3VibGUgeikKewogICAgU2NhbGVYID0geDsKICAgIFNjYWxlWiA9IHo7Cn0KCnRlcnJhaW5f
dCogcXVhZHNxdWFyZTo6VGVycmFpbjsKdm9pZCBxdWFkc3F1YXJlOjpTZXRUZXJyYWluKHRlcnJh
aW5fdCAqdCkKewogICAgVGVycmFpbiA9IHQ7Cn0KCgoKCgoKZmxvYXQgSGVpZ2h0TWFwSW5mbzo6
U2FtcGxlKGludCB4LCBpbnQgeikgY29uc3QKewogICAgaWYgKCB4ID49IFhTaXplICkgewogICAg
ICAgIHggPSBYU2l6ZSAtIDE7CiAgICB9CiAgICBpZiAoIHogPj0gWlNpemUgKSB7CiAgICAgICAg
eiA9IFpTaXplIC0gMTsKICAgIH0KICAgIHJldHVybiBEYXRhWyB4ICsgeiAqIFJvd1dpZHRoIF07
Cn0K


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

only message in thread, other threads:[~2001-06-15  0:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-06-15  0:46 other/3192: "Can not split insn" in TuxRacer 0.61 source vogon_jeltz

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).