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


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

c++/5619: std::valarray<T>::operator==(std::valarray<T>&) doesn't return bool



>Number:         5619
>Category:       c++
>Synopsis:       std::valarray<T>::operator==(std::valarray<T>&) doesn't return bool
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Wed Feb 06 14:36:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     t6@pobox.com
>Release:        gcc3.0.2 release (built from src)
>Organization:
>Environment:
Redhat linux 7.2 (i386)
gcc3.0.2 release built from source & installed
>Description:
This doesn't compile:

#include <valarray>

int main(int argc, char* argv[])
{
  std::valarray<double> a(1.2, 10);
  std::valarray<double> b(1.2, 10);

  bool equal = ( a == b);
  return int(equal);
}


Reports:
valtest.cpp: In function `int main(int, char**)':
valtest.cpp:8: cannot convert `std::_Expr<std::_BinClos<std::equal_to, 
   std::_ValArray, std::_ValArray, double, double>, bool>' to `bool' in 
   initialization


This probably applies to other valarray binary logical operators too.
-David.
>How-To-Repeat:
Compile above snippet.
>Fix:
don't use it. :)
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="valtest.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="valtest.ii"

IyAxICJ2YWx0ZXN0LmNwcCIKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL3ZhbGFycmF5IiAxIDMK
IyAzMSAiL3Vzci9pbmNsdWRlL2crKy12My92YWxhcnJheSIgMwojIDEgIi91c3IvaW5jbHVkZS9n
KystdjMvYml0cy9zdGRfdmFsYXJyYXkuaCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9nKystdjMv
Yml0cy9zdGRfdmFsYXJyYXkuaCIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2kzODYtcmVk
aGF0LWxpbnV4L2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvZysrLXYz
L2kzODYtcmVkaGF0LWxpbnV4L2JpdHMvYysrY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
ZysrLXYzL2kzODYtcmVkaGF0LWxpbnV4L2JpdHMvb3NfZGVmaW5lcy5oIiAxIDMKIyAzNyAiL3Vz
ci9pbmNsdWRlL2crKy12My9pMzg2LXJlZGhhdC1saW51eC9iaXRzL29zX2RlZmluZXMuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyODMgIi91c3IvaW5jbHVkZS9mZWF0
dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIyAyODQgIi91c3Iv
aW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAzMTIgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIyAzMTMgIi91c3IvaW5jbHVkZS9m
ZWF0dXJlcy5oIiAyIDMKIyAzOCAiL3Vzci9pbmNsdWRlL2crKy12My9pMzg2LXJlZGhhdC1saW51
eC9iaXRzL29zX2RlZmluZXMuaCIgMiAzCiMgMzUgIi91c3IvaW5jbHVkZS9nKystdjMvaTM4Ni1y
ZWRoYXQtbGludXgvYml0cy9jKytjb25maWcuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9nKyst
djMvaTM4Ni1yZWRoYXQtbGludXgvYml0cy9saW1pdHMuaCIgMSAzCiMgMzcgIi91c3IvaW5jbHVk
ZS9nKystdjMvaTM4Ni1yZWRoYXQtbGludXgvYml0cy9jKytjb25maWcuaCIgMiAzCiMgMzggIi91
c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfdmFsYXJyYXkuaCIgMiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2crKy12My9iaXRzL3N0ZF9jc3RkZGVmLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZysr
LXYzL2JpdHMvc3RkX2NzdGRkZWYuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRo
YXQtbGludXgvMy4wLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQ3ICIvdXNyL2xpYi9nY2Mt
bGliL2kzODYtcmVkaGF0LWxpbnV4LzMuMC4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBp
bnQgcHRyZGlmZl90OwojIDE5OSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8z
LjAuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyAz
OSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jc3RkZGVmLmgiIDIgMwoKbmFtZXNwYWNl
IHN0ZAp7CiAgdXNpbmcgOjpwdHJkaWZmX3Q7CiAgdXNpbmcgOjpzaXplX3Q7Cn0KIyAzOSAiL3Vz
ci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF92YWxhcnJheS5oIiAyIDMKIyAxICIvdXNyL2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RkX2NtYXRoLmgiIDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvZysrLXYz
L2JpdHMvc3RkX2NtYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2kzODYtcmVkaGF0
LWxpbnV4L2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZysrLXYzL2Jp
dHMvc3RkX2NtYXRoLmgiIDIgMwojIDQwICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2Nt
YXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRl
L21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyOCAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy9odWdlX3ZhbC5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMv
aHVnZV92YWwuaCIgMiAzCiMgMzQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL25hbi5oIiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAz
CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoZGVmLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoZGVmLmgiIDMKdHlwZWRlZiBsb25nIGRvdWJsZSBmbG9hdF90OwoKdHlwZWRl
ZiBsb25nIGRvdWJsZSBkb3VibGVfdDsKIyA0MSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMg
NjMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2Fs
bHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBk
b3VibGUgYWNvcyAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hY29zIChk
b3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgYXNpbiAoZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX19hc2luIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVy
biBkb3VibGUgYXRhbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hdGFu
IChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgYXRhbjIgKGRvdWJsZSBfX3ks
IGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYXRhbjIgKGRvdWJsZSBfX3ks
IGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgY29zIChkb3VibGUgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2NvcyAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRl
cm4gZG91YmxlIHNpbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zaW4g
KGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSB0YW4gKGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fdGFuIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIHZvaWQgc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpfX2Nv
c3gpIHRocm93ICgpOyBleHRlcm4gdm9pZCBfX3NpbmNvcyAoZG91YmxlIF9feCwgZG91YmxlICpf
X3NpbngsIGRvdWJsZSAqX19jb3N4KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBjb3No
IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Nvc2ggKGRvdWJsZSBfX3gp
IHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBzaW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX3NpbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSB0
YW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3RhbmggKGRvdWJsZSBf
X3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGFjb3NoIChkb3VibGUgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3NoIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBk
b3VibGUgYXNpbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYXNpbmgg
KGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhdGFuaCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoK
CgoKZXh0ZXJuIGRvdWJsZSBleHAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fZXhwIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBleHAxMCAoZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19leHAxMCAoZG91YmxlIF9feCkgdGhy
b3cgKCk7CgpleHRlcm4gZG91YmxlIHBvdzEwIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGRvdWJsZSBfX3BvdzEwIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBm
cmV4cCAoZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJs
ZSBfX2ZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOwoKCmV4dGVy
biBkb3VibGUgbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX2xkZXhwIChkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGRvdWJsZSBsb2cgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fbG9nIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGxvZzEwIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzEwIChkb3VibGUgX194KSB0aHJv
dyAoKTsKCgpleHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRyKSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX21vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRy
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBleHBtMSAoZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBkb3VibGUgX19leHBtMSAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRv
dWJsZSBsb2cxcCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cxcCAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2diIChkb3VibGUgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGRvdWJsZSBleHAyIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf
X2V4cDIgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nMiAoZG91Ymxl
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cyIChkb3VibGUgX194KSB0aHJvdyAo
KTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBwb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93
ICgpOyBleHRlcm4gZG91YmxlIF9fcG93IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAo
KTsKCgpleHRlcm4gZG91YmxlIHNxcnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fc3FydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgaHlwb3Qg
KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9faHlwb3Qg
KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGRvdWJsZSBjYnJ0
IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2NicnQgKGRvdWJsZSBfX3gp
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIGNlaWwgKGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gZG91YmxlIF9fY2VpbCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRv
dWJsZSBmYWJzIChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7IGV4dGVybiBkb3VibGUgX19mYWJzIChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBmbG9vciAoZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX19mbG9vciAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0
ZXJuIGRvdWJsZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJu
IGRvdWJsZSBfX2Ztb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGludCBfX2lzaW5mIChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGlzaW5mIChk
b3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBpbnQgZmluaXRlIChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZHJlbSAoZG91YmxlIF9feCwgZG91YmxlIF9f
eSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19kcmVtIChkb3VibGUgX194LCBkb3VibGUgX195
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBzaWduaWZpY2FuZCAoZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX19zaWduaWZpY2FuZCAoZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gZG91YmxlIGNvcHlzaWduIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19jb3B5c2ln
biAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgoKZXh0ZXJuIGRvdWJsZSBuYW4gKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uYW4gKF9f
Y29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgpleHRlcm4gaW50IF9faXNuYW4gKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW4gKGRvdWJsZSBfX3ZhbHVl
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBq
MCAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2owIChkb3VibGUpIHRocm93ICgp
OwpleHRlcm4gZG91YmxlIGoxIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fajEg
KGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgam4gKGludCwgZG91YmxlKSB0aHJvdyAo
KTsgZXh0ZXJuIGRvdWJsZSBfX2puIChpbnQsIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3Vi
bGUgeTAgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX195MCAoZG91YmxlKSB0aHJv
dyAoKTsKZXh0ZXJuIGRvdWJsZSB5MSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf
X3kxIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRvdWJsZSkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX195biAoaW50LCBkb3VibGUpIHRocm93ICgpOwoKCgoKCmV4
dGVybiBkb3VibGUgZXJmIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXJmIChk
b3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIGVyZmMgKGRvdWJsZSkgdGhyb3cgKCk7IGV4
dGVybiBkb3VibGUgX19lcmZjIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIGxnYW1t
YSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xnYW1tYSAoZG91YmxlKSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSB0Z2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBk
b3VibGUgX190Z2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIGdhbW1h
IChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZ2FtbWEgKGRvdWJsZSkgdGhyb3cg
KCk7CgoKCgoKCmV4dGVybiBkb3VibGUgbGdhbW1hX3IgKGRvdWJsZSwgaW50ICpfX3NpZ25nYW1w
KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xnYW1tYV9yIChkb3VibGUsIGludCAqX19zaWdu
Z2FtcCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgcmludCAoZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX19yaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRl
cm4gZG91YmxlIG5leHRhZnRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4dGFmdGVyIChkb3Vi
bGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgpleHRlcm4gZG91YmxlIG5leHR0b3dhcmQgKGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4
dHRvd2FyZCAoZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBkb3VibGUgcmVtYWluZGVyIChkb3VibGUgX194
LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3JlbWFpbmRlciAoZG91Ymxl
IF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgc2NhbGIgKGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX24pIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2NhbGIgKGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYm4gKGRv
dWJsZSBfX3gsIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2NhbGJuIChkb3Vi
bGUgX194LCBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBpbnQgX19pbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoK
CgpleHRlcm4gZG91YmxlIHNjYWxibG4gKGRvdWJsZSBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cg
KCk7IGV4dGVybiBkb3VibGUgX19zY2FsYmxuIChkb3VibGUgX194LCBsb25nIGludCBfX24pIHRo
cm93ICgpOwoKCgpleHRlcm4gZG91YmxlIG5lYXJieWludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBkb3VibGUgX19uZWFyYnlpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRl
cm4gZG91YmxlIHJvdW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3Jv
dW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSB0cnVuYyAoZG91Ymxl
IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91Ymxl
IF9fdHJ1bmMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgoKCmV4dGVybiBkb3VibGUgcmVtcXVvIChkb3VibGUgX194LCBkb3VibGUgX195LCBpbnQg
Kl9fcXVvKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3JlbXF1byAoZG91YmxlIF9feCwgZG91
YmxlIF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGludCBscmlu
dCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyaW50IChkb3VibGUg
X194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50IChkb3VibGUgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93
ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgaW50IF9fbHJvdW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcg
bG9uZyBpbnQgbGxyb3VuZCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcg
aW50IF9fbGxyb3VuZCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgZmRp
bSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mZGlt
IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGZtYXgg
KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1heCAo
ZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBmbWluIChk
b3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2ZtaW4gKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lm
eSAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0IChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBkb3VibGUgZm1hIChkb3Vi
bGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf
X2ZtYSAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgZG91YmxlIF9feikgdGhyb3cgKCk7CiMgNjQg
Ii91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDgyICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwojIDU0ICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZmxvYXQgYWNvc2YgKGZsb2F0IF9feCkgdGhyb3cg
KCk7IGV4dGVybiBmbG9hdCBfX2Fjb3NmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZs
b2F0IGFzaW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hc2luZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhdGFuZiAoZmxvYXQgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGZsb2F0IF9fYXRhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxv
YXQgYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X2F0YW4yZiAoZmxvYXQgX195LCBmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBj
b3NmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19jb3NmIChmbG9hdCBfX3gp
IHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVy
biBmbG9hdCBfX3NpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgdGFuZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fdGFuZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIHZvaWQgc2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAqX19zaW54LCBm
bG9hdCAqX19jb3N4KSB0aHJvdyAoKTsgZXh0ZXJuIHZvaWQgX19zaW5jb3NmIChmbG9hdCBfX3gs
IGZsb2F0ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxv
YXQgY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2Nvc2hmIChmbG9h
dCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHNpbmhmIChmbG9hdCBfX3gpIHRocm93ICgp
OyBleHRlcm4gZmxvYXQgX19zaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9h
dCB0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fdGFuaGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkgdGhyb3cg
KCk7IGV4dGVybiBmbG9hdCBfX2Fjb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBm
bG9hdCBhc2luaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2FzaW5oZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0IF9feCkgdGhy
b3cgKCk7IGV4dGVybiBmbG9hdCBfX2F0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCgpl
eHRlcm4gZmxvYXQgZXhwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXhw
ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IGV4cDEwZiAoZmxvYXQgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXhwMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOwoK
ZXh0ZXJuIGZsb2F0IHBvdzEwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f
cG93MTBmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgZnJleHBmIChmbG9h
dCBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2ZyZXhwZiAo
ZmxvYXQgX194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBsZGV4
cGYgKGZsb2F0IF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19s
ZGV4cGYgKGZsb2F0IF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgpOwoKCmV4dGVybiBmbG9h
dCBsb2dmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sb2dmIChmbG9hdCBf
X3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBsb2cxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
IGV4dGVybiBmbG9hdCBfX2xvZzEwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxv
YXQgbW9kZmYgKGZsb2F0IF9feCwgZmxvYXQgKl9faXB0cikgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX21vZGZmIChmbG9hdCBfX3gsIGZsb2F0ICpfX2lwdHIpIHRocm93ICgpOwoKCgpleHRlcm4g
ZmxvYXQgZXhwbTFmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19leHBtMWYg
KGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZzFwZiAoZmxvYXQgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9nMXBmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4
dGVybiBmbG9hdCBsb2diZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9n
YmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgZXhwMmYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2V4cDJmIChmbG9hdCBfX3gpIHRocm93ICgpOwoK
CmV4dGVybiBmbG9hdCBsb2cyZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f
bG9nMmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBmbG9hdCBwb3dmIChmbG9h
dCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3Bvd2YgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgc3FydGYgKGZsb2F0IF9feCkg
dGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NxcnRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpl
eHRlcm4gZmxvYXQgaHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVy
biBmbG9hdCBfX2h5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGZsb2F0IGNicnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19jYnJ0
ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGNlaWxmIChmbG9hdCBf
X3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19jZWlsZiAoZmxvYXQgX194KSB0aHJvdyAoKTsK
CgpleHRlcm4gZmxvYXQgZmFic2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19mYWJzZiAoZmxvYXQgX194KSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZsb29yZiAoZmxvYXQg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZmxvb3JmIChmbG9hdCBfX3gpIHRocm93ICgp
OwoKCmV4dGVybiBmbG9hdCBmbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBl
eHRlcm4gZmxvYXQgX19mbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGludCBfX2lzaW5mZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVmIChmbG9hdCBfX3ZhbHVlKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGlzaW5m
ZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CmV4dGVybiBpbnQgZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBkcmVtZiAoZmxvYXQgX194LCBmbG9hdCBf
X3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19kcmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
IHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc2lnbmlmaWNhbmRmIChmbG9hdCBfX3gpIHRocm93
ICgpOyBleHRlcm4gZmxvYXQgX19zaWduaWZpY2FuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoK
CgpleHRlcm4gZmxvYXQgY29weXNpZ25mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19jb3B5c2lnbmYgKGZs
b2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgpleHRlcm4gZmxvYXQgbmFuZiAoX19jb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmFuZiAoX19jb25zdCBj
aGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4
dGVybiBpbnQgX19pc25hbmYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbmYgKGZsb2F0IF9fdmFsdWUpIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgajBmIChmbG9h
dCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2owZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4g
ZmxvYXQgajFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2oxZiAoZmxvYXQpIHRo
cm93ICgpOwpleHRlcm4gZmxvYXQgam5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZs
b2F0IF9fam5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IHkwZiAoZmxvYXQp
IHRocm93ICgpOyBleHRlcm4gZmxvYXQgX195MGYgKGZsb2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZs
b2F0IHkxZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX195MWYgKGZsb2F0KSB0aHJv
dyAoKTsKZXh0ZXJuIGZsb2F0IHluZiAoaW50LCBmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX3luZiAoaW50LCBmbG9hdCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGZsb2F0IGVyZmYgKGZs
b2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXJmZiAoZmxvYXQpIHRocm93ICgpOwpleHRl
cm4gZmxvYXQgZXJmY2YgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKGZs
b2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IGxnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fbGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgdGdh
bW1hZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX190Z2FtbWFmIChmbG9hdCkgdGhy
b3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgZ2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBm
bG9hdCBfX2dhbW1hZiAoZmxvYXQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgbGdhbW1h
Zl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbGdh
bW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZs
b2F0IHJpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19yaW50ZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbmV4dGFmdGVyZiAoZmxvYXQgX194LCBm
bG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZs
b2F0IF9fbmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBmbG9hdCBuZXh0dG93YXJkZiAoZmxvYXQgX194
LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg
ZXh0ZXJuIGZsb2F0IF9fbmV4dHRvd2FyZGYgKGZsb2F0IF9feCwgbG9uZyBkb3VibGUgX195KSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBmbG9hdCByZW1h
aW5kZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3Jl
bWFpbmRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0
IHNjYWxiZiAoZmxvYXQgX194LCBmbG9hdCBfX24pIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19z
Y2FsYmYgKGZsb2F0IF9feCwgZmxvYXQgX19uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBz
Y2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zY2Fs
Ym5mIChmbG9hdCBfX3gsIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGlsb2diZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGludCBfX2lsb2diZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsKCgoKCmV4dGVybiBmbG9hdCBzY2FsYmxuZiAoZmxvYXQgX194LCBsb25nIGludCBfX24p
IHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zY2FsYmxuZiAoZmxvYXQgX194LCBsb25nIGludCBf
X24pIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgbmVhcmJ5aW50ZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGZsb2F0IF9fbmVhcmJ5aW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGZsb2F0IHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f
cm91bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgdHJ1bmNmIChmbG9h
dCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0
IF9fdHJ1bmNmIChmbG9hdCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgoKCmV4dGVybiBmbG9hdCByZW1xdW9mIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgaW50ICpf
X3F1bykgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3JlbXF1b2YgKGZsb2F0IF9feCwgZmxvYXQg
X195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGxyaW50ZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJpbnRmIChmbG9hdCBfX3gp
IHRocm93ICgpOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJpbnRmIChmbG9hdCBfX3gpIHRocm93
ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
CgoKCmV4dGVybiBsb25nIGludCBscm91bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4g
bG9uZyBpbnQgX19scm91bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOwpleHRlcm4gbG9uZyBsb25n
IGludCBsbHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
X19sbHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IGZkaW1mIChm
bG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2ZkaW1mIChmbG9h
dCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZtYXhmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2ZtYXhmIChmbG9hdCBfX3gs
IGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZtaW5mIChmbG9hdCBfX3gsIGZs
b2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2ZtaW5mIChmbG9hdCBfX3gsIGZsb2F0
IF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5ZiAoZmxvYXQgX192YWx1
ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGlu
dCBfX3NpZ25iaXRmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGZsb2F0IGZtYWYgKGZsb2F0IF9feCwgZmxvYXQgX195
LCBmbG9hdCBfX3opIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mbWFmIChmbG9hdCBfX3gsIGZs
b2F0IF9feSwgZmxvYXQgX196KSB0aHJvdyAoKTsKIyA4MyAiL3Vzci9pbmNsdWRlL21hdGguaCIg
MiAzCiMgOTkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4
dGVybiBsb25nIGRvdWJsZSBhY29zbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fYWNvc2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4g
bG9uZyBkb3VibGUgYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2FzaW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGF0YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19hdGFubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJs
ZSBhdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fYXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvc2wgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2wgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc2lubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2lubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK
CmV4dGVybiBsb25nIGRvdWJsZSB0YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRl
cm4gbG9uZyBkb3VibGUgX190YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRl
cm4gdm9pZCBzaW5jb3NsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX3NpbngsIGxv
bmcgZG91YmxlICpfX2Nvc3gpIHRocm93ICgpOyBleHRlcm4gdm9pZCBfX3NpbmNvc2wgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9fc2lueCwgbG9uZyBkb3VibGUgKl9fY29zeCkgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjb3NobCAobG9uZyBkb3VibGUgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NpbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX190YW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NobCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fYWNvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0
ZXJuIGxvbmcgZG91YmxlIGFzaW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJu
IGxvbmcgZG91YmxlIGF0YW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fYXRhbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVy
biBsb25nIGRvdWJsZSBleHBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9u
ZyBkb3VibGUgZXhwMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19leHAxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBk
b3VibGUgcG93MTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19wb3cxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRv
dWJsZSBmcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZnJleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBv
bmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxkZXhwbCAobG9uZyBkb3VibGUg
X194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xkZXhw
bCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGxvZ2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2xvZ2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91
YmxlIGxvZzEwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJs
ZSBtb2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fbW9kZmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
Kl9faXB0cikgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBtMWwgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cG0xbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cxcGwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2JsIChsb25nIGRvdWJsZSBf
X3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2dibCAobG9uZyBkb3VibGUgX194
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHAybCAobG9uZyBkb3VibGUgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwMmwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzJsIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cybCAobG9uZyBkb3VibGUgX194KSB0aHJv
dyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcG93bCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJs
ZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
c3FydGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBo
eXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9faHlwb3RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
dGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY2JydGwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NicnRsIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY2VpbGwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NlaWxsIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmYWJzbCAobG9uZyBkb3VibGUgX194KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Zh
YnNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZmxvb3JsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19mbG9vcmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl
IF9feSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Ztb2RsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IF9faXNpbmZsIChs
b25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmZsIChsb25nIGRv
dWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0
ZXJuIGludCBmaW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGRyZW1sIChsb25nIGRvdWJs
ZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Ry
ZW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVy
biBsb25nIGRvdWJsZSBzaWduaWZpY2FuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3NpZ25pZmljYW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjb3B5c2lnbmwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2NvcHlzaWdubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBsb25n
IGRvdWJsZSBuYW5sIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uYW5sIChfX2NvbnN0IGNoYXIg
Kl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJu
IGludCBfX2lzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFubCAobG9uZyBkb3VibGUgX192YWx1
ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRv
dWJsZSBqMGwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajBs
IChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSBqMWwgKGxvbmcgZG91
YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajFsIChsb25nIGRvdWJsZSkgdGhy
b3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSBqbmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19qbmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOwpl
eHRlcm4gbG9uZyBkb3VibGUgeTBsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3kwbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUg
eTFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3kxbCAobG9u
ZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgeW5sIChpbnQsIGxvbmcgZG91
YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feW5sIChpbnQsIGxvbmcgZG91Ymxl
KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXJmbCAobG9uZyBkb3VibGUpIHRo
cm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19lcmZsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7
CmV4dGVybiBsb25nIGRvdWJsZSBlcmZjbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4g
bG9uZyBkb3VibGUgX19lcmZjbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9uZyBk
b3VibGUgbGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19sZ2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSB0
Z2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RnYW1t
YWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBnYW1tYWwg
KGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZ2FtbWFsIChsb25n
IGRvdWJsZSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBsZ2FtbWFsX3IgKGxv
bmcgZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19sZ2FtbWFsX3IgKGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOwoKCgoK
CgpleHRlcm4gbG9uZyBkb3VibGUgcmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3JpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBuZXh0YWZ0ZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl
IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19uZXh0YWZ0ZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIG5l
eHR0b3dhcmRsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZXh0dG93YXJk
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJlbWFpbmRlcmwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgp
OwoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9fbikgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NjYWxibCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHNjYWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3NjYWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbikgdGhyb3cgKCk7CgoK
CmV4dGVybiBpbnQgaWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gaW50
IF9faWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgZG91
YmxlIHNjYWxibG5sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3NjYWxibG5sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgaW50IF9f
bikgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBuZWFyYnlpbnRsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZWFyYnlpbnRsIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgcm91bmRsIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yb3VuZGwgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSB0cnVuY2wgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX190cnVuY2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJlbXF1b2wgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fcmVtcXVvbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGlu
dCAqX19xdW8pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnRsIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scmludGwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscmludGwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50bCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZGwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyb3VuZGwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscm91bmRsIChsb25nIGRvdWJsZSBf
X3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmRsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZmRpbWwgKGxvbmcgZG91Ymxl
IF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmRp
bWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgpleHRlcm4g
bG9uZyBkb3VibGUgZm1heGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJv
dyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1heGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZm1pbmwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
Zm1pbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGludCBfX2ZwY2xhc3NpZnlsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKQogICAg
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJpdGwgKGxv
bmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZm1hbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feikgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X2ZtYWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3op
IHRocm93ICgpOwojIDEwMCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgMTEzICIvdXNyL2lu
Y2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBpbnQgc2lnbmdhbTsKIyAxNTQgIi91c3IvaW5jbHVkZS9t
YXRoLmgiIDMKZW51bQogIHsKICAgIEZQX05BTiwKCiAgICBGUF9JTkZJTklURSwKCiAgICBGUF9a
RVJPLAoKICAgIEZQX1NVQk5PUk1BTCwKCiAgICBGUF9OT1JNQUwKCiAgfTsKIyAyNDAgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDMKdHlwZWRlZiBlbnVtCnsKICBfSUVFRV8gPSAtMSwKICBfU1ZJRF8s
CiAgX1hPUEVOXywKICBfUE9TSVhfLAogIF9JU09DXwp9IF9MSUJfVkVSU0lPTl9UWVBFOwoKCgoK
ZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBFIF9MSUJfVkVSU0lPTjsKIyAyNjMgIi91c3IvaW5jbHVk
ZS9tYXRoLmgiIDMKc3RydWN0IF9fZXhjZXB0aW9uCgoKCiAgewogICAgaW50IHR5cGU7CiAgICBj
aGFyICpuYW1lOwogICAgZG91YmxlIGFyZzE7CiAgICBkb3VibGUgYXJnMjsKICAgIGRvdWJsZSBy
ZXR2YWw7CiAgfTsKCgpleHRlcm4gaW50IG1hdGhlcnIgKHN0cnVjdCBfX2V4Y2VwdGlvbiAqX19l
eGMpIHRocm93ICgpOwojIDQxMSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwp9CiMgNDEgIi91c3Iv
aW5jbHVkZS9nKystdjMvYml0cy9zdGRfY21hdGguaCIgMiAzCiMgNjggIi91c3IvaW5jbHVkZS9n
KystdjMvYml0cy9zdGRfY21hdGguaCIgMwpuYW1lc3BhY2Ugc3RkCnsKCgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4gX1RwIF9fY21hdGhfcG93ZXIoX1RwLCB1bnNpZ25lZCBpbnQpOwoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgaW5saW5lIF9UcAogICAgX19jbWF0aF9hYnMoX1RwIF9feCkK
ICAgIHsKICAgICAgcmV0dXJuIF9feCA8IF9UcCgpID8gLV9feCA6IF9feDsKICAgIH0KCiAgaW5s
aW5lIGZsb2F0CiAgYWJzKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fZmFic2YoX194
KTsgfQoKICBpbmxpbmUgZG91YmxlCiAgYWJzKGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWls
dGluX2ZhYnMoX194KTsgfQoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBhYnMobG9uZyBkb3VibGUg
X194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbChfX3gpOyB9CgoKICBpbmxpbmUgZmxvYXQK
ICBhY29zKGZsb2F0IF9feCkgeyByZXR1cm4gOjphY29zZihfX3gpOyB9CgoKCgoKICB1c2luZyA6
OmFjb3M7CgoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBhY29zKGxvbmcgZG91YmxlIF9feCkgeyBy
ZXR1cm4gOjphY29zbChfX3gpOyB9CgoKCgoKCiAgaW5saW5lIGZsb2F0CiAgYXNpbihmbG9hdCBf
X3gpIHsgcmV0dXJuIDo6YXNpbmYoX194KTsgfQoKCgoKCiAgdXNpbmcgOjphc2luOwoKCiAgaW5s
aW5lIGxvbmcgZG91YmxlCiAgYXNpbihsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6YXNpbmwo
X194KTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAogIGF0YW4oZmxvYXQgX194KSB7IHJldHVybiA6
OmF0YW5mKF9feCk7IH0KCgoKCgogIHVzaW5nIDo6YXRhbjsKCgogIGlubGluZSBsb25nIGRvdWJs
ZQogIGF0YW4obG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OmF0YW5sKF9feCk7IH0KCgoKCgoK
ICBpbmxpbmUgZmxvYXQKICBhdGFuMihmbG9hdCBfX3ksIGZsb2F0IF9feCkgeyByZXR1cm4gOjph
dGFuMmYoX195LCBfX3gpOyB9CgoKCgoKCiAgdXNpbmcgOjphdGFuMjsKCgogIGlubGluZSBsb25n
IGRvdWJsZQogIGF0YW4yKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB7IHJldHVy
biA6OmF0YW4ybChfX3ksIF9feCk7IH0KCgoKCgoKCiAgaW5saW5lIGZsb2F0CiAgY2VpbChmbG9h
dCBfX3gpIHsgcmV0dXJuIDo6Y2VpbGYoX194KTsgfQoKCgoKCiAgdXNpbmcgOjpjZWlsOwoKCiAg
aW5saW5lIGxvbmcgZG91YmxlCiAgY2VpbChsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6Y2Vp
bGwoX194KTsgfQoKCgoKCiAgaW5saW5lIGZsb2F0CiAgY29zKGZsb2F0IF9feCkKICB7IHJldHVy
biBfX2J1aWx0aW5fY29zZihfX3gpOyB9CgogIHVzaW5nIDo6Y29zOwoKICBpbmxpbmUgbG9uZyBk
b3VibGUKICBjb3MobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9jb3NsKF9f
eCk7IH0KCgogIGlubGluZSBmbG9hdAogIGNvc2goZmxvYXQgX194KSB7IHJldHVybiA6OmNvc2hm
KF9feCk7IH0KCgoKCgogIHVzaW5nIDo6Y29zaDsKCgogIGlubGluZSBsb25nIGRvdWJsZQogIGNv
c2gobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OmNvc2hsKF9feCk7IH0KIyAyMTcgIi91c3Iv
aW5jbHVkZS9nKystdjMvYml0cy9zdGRfY21hdGguaCIgMwogIGlubGluZSBmbG9hdAogIGV4cChm
bG9hdCBfX3gpIHsgcmV0dXJuIDo6ZXhwKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0KCgog
IHVzaW5nIDo6ZXhwOwoKCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgZXhwKGxvbmcgZG91YmxlIF9f
eCkgeyByZXR1cm4gOjpleHBsKF9feCk7IH0KCgoKCgogIGlubGluZSBmbG9hdAogIGZhYnMoZmxv
YXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzZihfX3gpOyB9CgogIHVzaW5nIDo6ZmFi
czsKCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgZmFicyhsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1
cm4gX19idWlsdGluX2ZhYnNsKF9feCk7IH0KCgogIGlubGluZSBmbG9hdAogIGZsb29yKGZsb2F0
IF9feCkgeyByZXR1cm4gOjpmbG9vcmYoX194KTsgfQoKCgoKCiAgdXNpbmcgOjpmbG9vcjsKCgog
IGlubGluZSBsb25nIGRvdWJsZQogIGZsb29yKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjpm
bG9vcmwoX194KTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAogIGZtb2QoZmxvYXQgX194LCBmbG9h
dCBfX3kpIHsgcmV0dXJuIDo6Zm1vZGYoX194LCBfX3kpOyB9CgoKCgoKCiAgdXNpbmcgOjpmbW9k
OwoKCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgZm1vZChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9feSkgeyByZXR1cm4gOjpmbW9kbChfX3gsIF9feSk7IH0KCgoKCgoKCiAgaW5saW5lIGZs
b2F0CiAgZnJleHAoZmxvYXQgX194LCBpbnQqIF9fZXhwKSB7IHJldHVybiA6OmZyZXhwZihfX3gs
IF9fZXhwKTsgfQoKCgoKCiAgdXNpbmcgOjpmcmV4cDsKCgogIGlubGluZSBsb25nIGRvdWJsZQog
IGZyZXhwKGxvbmcgZG91YmxlIF9feCwgaW50KiBfX2V4cCkgeyByZXR1cm4gOjpmcmV4cGwoX194
LCBfX2V4cCk7IH0KCgoKCgoKCiAgaW5saW5lIGZsb2F0CiAgbGRleHAoZmxvYXQgX194LCBpbnQg
X19leHApIHsgcmV0dXJuIDo6bGRleHBmKF9feCwgX19leHApOyB9CgoKCgoKCiAgdXNpbmcgOjps
ZGV4cDsKCgogIGlubGluZSBsb25nIGRvdWJsZQogIGxkZXhwKGxvbmcgZG91YmxlIF9feCwgaW50
IF9fZXhwKSB7IHJldHVybiA6OmxkZXhwbChfX3gsIF9fZXhwKTsgfQoKCgoKCgoKICBpbmxpbmUg
ZmxvYXQKICBsb2coZmxvYXQgX194KSB7IHJldHVybiA6OmxvZ2YoX194KTsgfQoKCgoKCiAgdXNp
bmcgOjpsb2c7CgoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBsb2cobG9uZyBkb3VibGUgX194KSB7
IHJldHVybiA6OmxvZ2woX194KTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAogIGxvZzEwKGZsb2F0
IF9feCkgeyByZXR1cm4gOjpsb2cxMGYoX194KTsgfQoKCgoKCiAgdXNpbmcgOjpsb2cxMDsKCgog
IGlubGluZSBsb25nIGRvdWJsZQogIGxvZzEwKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjps
b2cxMGwoX194KTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAogIG1vZGYoZmxvYXQgX194LCBmbG9h
dCogX19pcHRyKSB7IHJldHVybiA6Om1vZGZmKF9feCwgX19pcHRyKTsgfQojIDM2OCAiL3Vzci9p
bmNsdWRlL2crKy12My9iaXRzL3N0ZF9jbWF0aC5oIiAzCiAgdXNpbmcgOjptb2RmOwoKCiAgaW5s
aW5lIGxvbmcgZG91YmxlCiAgbW9kZihsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlKiBfX2lw
dHIpIHsgcmV0dXJuIDo6bW9kZmwoX194LCBfX2lwdHIpOyB9CiMgMzg0ICIvdXNyL2luY2x1ZGUv
ZysrLXYzL2JpdHMvc3RkX2NtYXRoLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBp
bmxpbmUgX1RwCiAgICBfX3Bvd19oZWxwZXIoX1RwIF9feCwgaW50IF9fbikKICAgIHsKICAgICAg
cmV0dXJuIF9fbiA8IDAKICAgICAgICA/IF9UcCgxKS9fX2NtYXRoX3Bvd2VyKF9feCwgLV9fbikK
ICAgICAgICA6IF9fY21hdGhfcG93ZXIoX194LCBfX24pOwogICAgfQoKCiAgaW5saW5lIGZsb2F0
CiAgcG93KGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiA6OnBvd2YoX194LCBfX3kpOyB9
CgoKCgoKCiAgdXNpbmcgOjpwb3c7CgoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBwb3cobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHsgcmV0dXJuIDo6cG93bChfX3gsIF9feSk7IH0K
CgoKCgoKICBpbmxpbmUgZmxvYXQKICBwb3coZmxvYXQgX194LCBpbnQgX19uKQogIHsgcmV0dXJu
IF9fcG93X2hlbHBlcihfX3gsIF9fbik7IH0KCiAgaW5saW5lIGRvdWJsZQogIHBvdyhkb3VibGUg
X194LCBpbnQgX19pKQogIHsgcmV0dXJuIF9fcG93X2hlbHBlcihfX3gsIF9faSk7IH0KCiAgaW5s
aW5lIGxvbmcgZG91YmxlCiAgcG93KGxvbmcgZG91YmxlIF9feCwgaW50IF9fbikKICB7IHJldHVy
biBfX3Bvd19oZWxwZXIoX194LCBfX24pOyB9CgogIGlubGluZSBmbG9hdAogIHNpbihmbG9hdCBf
X3gpCiAgeyByZXR1cm4gX19idWlsdGluX3NpbmYoX194KTsgfQoKICB1c2luZyA6OnNpbjsKCiAg
aW5saW5lIGxvbmcgZG91YmxlCiAgc2luKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1
aWx0aW5fc2lubChfX3gpOyB9CgoKICBpbmxpbmUgZmxvYXQKICBzaW5oKGZsb2F0IF9feCkgeyBy
ZXR1cm4gOjpzaW5oZihfX3gpOyB9CgoKCgoKICB1c2luZyA6OnNpbmg7CgoKICBpbmxpbmUgbG9u
ZyBkb3VibGUKICBzaW5oKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjpzaW5obChfX3gpOyB9
CgoKCgoKICBpbmxpbmUgZmxvYXQKICBzcXJ0KGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0
aW5fc3FydGYoX194KTsgfQoKICB1c2luZyA6OnNxcnQ7CgogIGlubGluZSBsb25nIGRvdWJsZQog
IHNxcnQobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9zcXJ0bChfX3gpOyB9
CgoKICBpbmxpbmUgZmxvYXQKICB0YW4oZmxvYXQgX194KSB7IHJldHVybiA6OnRhbmYoX194KTsg
fQoKCgoKCiAgdXNpbmcgOjp0YW47CgoKICBpbmxpbmUgbG9uZyBkb3VibGUKICB0YW4obG9uZyBk
b3VibGUgX194KSB7IHJldHVybiA6OnRhbmwoX194KTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAog
IHRhbmgoZmxvYXQgX194KSB7IHJldHVybiA6OnRhbmhmKF9feCk7IH0KCgoKCgogIHVzaW5nIDo6
dGFuaDsKCgogIGlubGluZSBsb25nIGRvdWJsZQogIHRhbmgobG9uZyBkb3VibGUgX194KSB7IHJl
dHVybiA6OnRhbmhsKF9feCk7IH0KCgoKCn0KCgoKCgoKbmFtZXNwYWNlIF9fZ251X2N4eAp7CiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW50CiAgICBfX2NhcHR1cmVfZnBjbGFzc2lmeShf
VHAgX19mKSB7IHJldHVybiAoc2l6ZW9mIChfX2YpID09IHNpemVvZiAoZmxvYXQpID8gX19mcGNs
YXNzaWZ5ZiAoX19mKSA6IHNpemVvZiAoX19mKSA9PSBzaXplb2YgKGRvdWJsZSkgPyBfX2ZwY2xh
c3NpZnkgKF9fZikgOiBfX2ZwY2xhc3NpZnlsIChfX2YpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgICBpbnQKICAgIF9fY2FwdHVyZV9pc2Zpbml0ZShfVHAgX19mKSB7IHJldHVybiAo
c2l6ZW9mIChfX2YpID09IHNpemVvZiAoZmxvYXQpID8gX19maW5pdGVmIChfX2YpIDogc2l6ZW9m
IChfX2YpID09IHNpemVvZiAoZG91YmxlKSA/IF9fZmluaXRlIChfX2YpIDogX19maW5pdGVsIChf
X2YpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIF9fY2FwdHVyZV9p
c2luZihfVHAgX19mKSB7IHJldHVybiAoc2l6ZW9mIChfX2YpID09IHNpemVvZiAoZmxvYXQpID8g
X19pc2luZmYgKF9fZikgOiBzaXplb2YgKF9fZikgPT0gc2l6ZW9mIChkb3VibGUpID8gX19pc2lu
ZiAoX19mKSA6IF9faXNpbmZsIChfX2YpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBpbnQKICAgIF9fY2FwdHVyZV9pc25hbihfVHAgX19mKSB7IHJldHVybiAoc2l6ZW9mIChfX2Yp
ID09IHNpemVvZiAoZmxvYXQpID8gX19pc25hbmYgKF9fZikgOiBzaXplb2YgKF9fZikgPT0gc2l6
ZW9mIChkb3VibGUpID8gX19pc25hbiAoX19mKSA6IF9faXNuYW5sIChfX2YpKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIF9fY2FwdHVyZV9pc25vcm1hbChfVHAgX19m
KSB7IHJldHVybiAoKHNpemVvZiAoX19mKSA9PSBzaXplb2YgKGZsb2F0KSA/IF9fZnBjbGFzc2lm
eWYgKF9fZikgOiBzaXplb2YgKF9fZikgPT0gc2l6ZW9mIChkb3VibGUpID8gX19mcGNsYXNzaWZ5
IChfX2YpIDogX19mcGNsYXNzaWZ5bCAoX19mKSkgPT0gRlBfTk9STUFMKTsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIF9fY2FwdHVyZV9zaWduYml0KF9UcCBfX2YpIHsg
cmV0dXJuIChzaXplb2YgKF9fZikgPT0gc2l6ZW9mIChmbG9hdCkgPyBfX3NpZ25iaXRmIChfX2Yp
IDogc2l6ZW9mIChfX2YpID09IHNpemVvZiAoZG91YmxlKSA/IF9fc2lnbmJpdCAoX19mKSA6IF9f
c2lnbmJpdGwgKF9fZikpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludAogICAg
X19jYXB0dXJlX2lzZ3JlYXRlcihfVHAgX19mMSwgX1RwIF9fZjIpCiAgICB7IHJldHVybiAoX19l
eHRlbnNpb25fXyAoeyBfX3R5cGVvZl9fKF9fZjEpIF9feCA9IChfX2YxKTsgX190eXBlb2ZfXyhf
X2YyKSBfX3kgPSAoX19mMik7ICEoX19leHRlbnNpb25fXyAoeyBfX3R5cGVvZl9fKF9feCkgX191
ID0gKF9feCk7IF9fdHlwZW9mX18oX195KSBfX3YgPSAoX195KTsgKHNpemVvZiAoX191KSA9PSBz
aXplb2YgKGZsb2F0KSA/IF9fZnBjbGFzc2lmeWYgKF9fdSkgOiBzaXplb2YgKF9fdSkgPT0gc2l6
ZW9mIChkb3VibGUpID8gX19mcGNsYXNzaWZ5IChfX3UpIDogX19mcGNsYXNzaWZ5bCAoX191KSkg
PT0gRlBfTkFOIHx8IChzaXplb2YgKF9fdikgPT0gc2l6ZW9mIChmbG9hdCkgPyBfX2ZwY2xhc3Np
ZnlmIChfX3YpIDogc2l6ZW9mIChfX3YpID09IHNpemVvZiAoZG91YmxlKSA/IF9fZnBjbGFzc2lm
eSAoX192KSA6IF9fZnBjbGFzc2lmeWwgKF9fdikpID09IEZQX05BTjsgfSkpICYmIF9feCA+IF9f
eTsgfSkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICBpbnQKICAgICBfX2NhcHR1
cmVfaXNncmVhdGVyZXF1YWwoX1RwIF9fZjEsIF9UcCBfX2YyKQogICAgIHsgcmV0dXJuIChfX2V4
dGVuc2lvbl9fICh7IF9fdHlwZW9mX18oX19mMSkgX194ID0gKF9fZjEpOyBfX3R5cGVvZl9fKF9f
ZjIpIF9feSA9IChfX2YyKTsgIShfX2V4dGVuc2lvbl9fICh7IF9fdHlwZW9mX18oX194KSBfX3Ug
PSAoX194KTsgX190eXBlb2ZfXyhfX3kpIF9fdiA9IChfX3kpOyAoc2l6ZW9mIChfX3UpID09IHNp
emVvZiAoZmxvYXQpID8gX19mcGNsYXNzaWZ5ZiAoX191KSA6IHNpemVvZiAoX191KSA9PSBzaXpl
b2YgKGRvdWJsZSkgPyBfX2ZwY2xhc3NpZnkgKF9fdSkgOiBfX2ZwY2xhc3NpZnlsIChfX3UpKSA9
PSBGUF9OQU4gfHwgKHNpemVvZiAoX192KSA9PSBzaXplb2YgKGZsb2F0KSA/IF9fZnBjbGFzc2lm
eWYgKF9fdikgOiBzaXplb2YgKF9fdikgPT0gc2l6ZW9mIChkb3VibGUpID8gX19mcGNsYXNzaWZ5
IChfX3YpIDogX19mcGNsYXNzaWZ5bCAoX192KSkgPT0gRlBfTkFOOyB9KSkgJiYgX194ID49IF9f
eTsgfSkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICBpbnQKICAgICBfX2NhcHR1
cmVfaXNsZXNzKF9UcCBfX2YxLCBfVHAgX19mMikgeyByZXR1cm4gKF9fZXh0ZW5zaW9uX18gKHsg
X190eXBlb2ZfXyhfX2YxKSBfX3ggPSAoX19mMSk7IF9fdHlwZW9mX18oX19mMikgX195ID0gKF9f
ZjIpOyAhKF9fZXh0ZW5zaW9uX18gKHsgX190eXBlb2ZfXyhfX3gpIF9fdSA9IChfX3gpOyBfX3R5
cGVvZl9fKF9feSkgX192ID0gKF9feSk7IChzaXplb2YgKF9fdSkgPT0gc2l6ZW9mIChmbG9hdCkg
PyBfX2ZwY2xhc3NpZnlmIChfX3UpIDogc2l6ZW9mIChfX3UpID09IHNpemVvZiAoZG91YmxlKSA/
IF9fZnBjbGFzc2lmeSAoX191KSA6IF9fZnBjbGFzc2lmeWwgKF9fdSkpID09IEZQX05BTiB8fCAo
c2l6ZW9mIChfX3YpID09IHNpemVvZiAoZmxvYXQpID8gX19mcGNsYXNzaWZ5ZiAoX192KSA6IHNp
emVvZiAoX192KSA9PSBzaXplb2YgKGRvdWJsZSkgPyBfX2ZwY2xhc3NpZnkgKF9fdikgOiBfX2Zw
Y2xhc3NpZnlsIChfX3YpKSA9PSBGUF9OQU47IH0pKSAmJiBfX3ggPCBfX3k7IH0pKTsgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICAgaW50CiAgICAgX19jYXB0dXJlX2lzbGVzc2VxdWFs
KF9UcCBfX2YxLCBfVHAgX19mMikKICAgICB7IHJldHVybiAoX19leHRlbnNpb25fXyAoeyBfX3R5
cGVvZl9fKF9fZjEpIF9feCA9IChfX2YxKTsgX190eXBlb2ZfXyhfX2YyKSBfX3kgPSAoX19mMik7
ICEoX19leHRlbnNpb25fXyAoeyBfX3R5cGVvZl9fKF9feCkgX191ID0gKF9feCk7IF9fdHlwZW9m
X18oX195KSBfX3YgPSAoX195KTsgKHNpemVvZiAoX191KSA9PSBzaXplb2YgKGZsb2F0KSA/IF9f
ZnBjbGFzc2lmeWYgKF9fdSkgOiBzaXplb2YgKF9fdSkgPT0gc2l6ZW9mIChkb3VibGUpID8gX19m
cGNsYXNzaWZ5IChfX3UpIDogX19mcGNsYXNzaWZ5bCAoX191KSkgPT0gRlBfTkFOIHx8IChzaXpl
b2YgKF9fdikgPT0gc2l6ZW9mIChmbG9hdCkgPyBfX2ZwY2xhc3NpZnlmIChfX3YpIDogc2l6ZW9m
IChfX3YpID09IHNpemVvZiAoZG91YmxlKSA/IF9fZnBjbGFzc2lmeSAoX192KSA6IF9fZnBjbGFz
c2lmeWwgKF9fdikpID09IEZQX05BTjsgfSkpICYmIF9feCA8PSBfX3k7IH0pKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICAgaW50CiAgICAgX19jYXB0dXJlX2lzbGVzc2dyZWF0ZXIo
X1RwIF9fZjEsIF9UcCBfX2YyKQogICAgIHsgcmV0dXJuIChfX2V4dGVuc2lvbl9fICh7IF9fdHlw
ZW9mX18oX19mMSkgX194ID0gKF9fZjEpOyBfX3R5cGVvZl9fKF9fZjIpIF9feSA9IChfX2YyKTsg
IShfX2V4dGVuc2lvbl9fICh7IF9fdHlwZW9mX18oX194KSBfX3UgPSAoX194KTsgX190eXBlb2Zf
XyhfX3kpIF9fdiA9IChfX3kpOyAoc2l6ZW9mIChfX3UpID09IHNpemVvZiAoZmxvYXQpID8gX19m
cGNsYXNzaWZ5ZiAoX191KSA6IHNpemVvZiAoX191KSA9PSBzaXplb2YgKGRvdWJsZSkgPyBfX2Zw
Y2xhc3NpZnkgKF9fdSkgOiBfX2ZwY2xhc3NpZnlsIChfX3UpKSA9PSBGUF9OQU4gfHwgKHNpemVv
ZiAoX192KSA9PSBzaXplb2YgKGZsb2F0KSA/IF9fZnBjbGFzc2lmeWYgKF9fdikgOiBzaXplb2Yg
KF9fdikgPT0gc2l6ZW9mIChkb3VibGUpID8gX19mcGNsYXNzaWZ5IChfX3YpIDogX19mcGNsYXNz
aWZ5bCAoX192KSkgPT0gRlBfTkFOOyB9KSkgJiYgKF9feCA8IF9feSB8fCBfX3kgPCBfX3gpOyB9
KSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgIGludAogICAgIF9fY2FwdHVyZV9p
c3Vub3JkZXJlZChfVHAgX19mMSwgX1RwIF9fZjIpCiAgICAgeyByZXR1cm4gKF9fZXh0ZW5zaW9u
X18gKHsgX190eXBlb2ZfXyhfX2YxKSBfX3UgPSAoX19mMSk7IF9fdHlwZW9mX18oX19mMikgX192
ID0gKF9fZjIpOyAoc2l6ZW9mIChfX3UpID09IHNpemVvZiAoZmxvYXQpID8gX19mcGNsYXNzaWZ5
ZiAoX191KSA6IHNpemVvZiAoX191KSA9PSBzaXplb2YgKGRvdWJsZSkgPyBfX2ZwY2xhc3NpZnkg
KF9fdSkgOiBfX2ZwY2xhc3NpZnlsIChfX3UpKSA9PSBGUF9OQU4gfHwgKHNpemVvZiAoX192KSA9
PSBzaXplb2YgKGZsb2F0KSA/IF9fZnBjbGFzc2lmeWYgKF9fdikgOiBzaXplb2YgKF9fdikgPT0g
c2l6ZW9mIChkb3VibGUpID8gX19mcGNsYXNzaWZ5IChfX3YpIDogX19mcGNsYXNzaWZ5bCAoX192
KSkgPT0gRlBfTkFOOyB9KSk7IH0KfQojIDU3NiAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0
ZF9jbWF0aC5oIiAzCm5hbWVzcGFjZSBfX2dudV9jeHgKewogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIGludAogICAgZnBjbGFzc2lmeShfVHAgX19mKSB7IHJldHVybiBfX2NhcHR1cmVfZnBj
bGFzc2lmeShfX2YpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludAogICAgaXNm
aW5pdGUoX1RwIF9fZikgeyByZXR1cm4gX19jYXB0dXJlX2lzZmluaXRlKF9fZik7IH0KCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW50CiAgICBpc2luZihfVHAgX19mKSB7IHJldHVybiBf
X2NhcHR1cmVfaXNpbmYoX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQK
ICAgIGlzbmFuKF9UcCBfX2YpIHsgcmV0dXJuIF9fY2FwdHVyZV9pc25hbihfX2YpOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludAogICAgaXNub3JtYWwoX1RwIF9fZikgeyByZXR1
cm4gX19jYXB0dXJlX2lzbm9ybWFsKF9fZik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgaW50CiAgICBzaWduYml0KF9UcCBfX2YpIHsgcmV0dXJuIF9fY2FwdHVyZV9zaWduYml0KF9f
Zik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW50CiAgICBpc2dyZWF0ZXIoX1Rw
IF9fZjEsIF9UcCBfX2YyKSB7IHJldHVybiBfX2NhcHR1cmVfaXNncmVhdGVyKF9fZjEsIF9fZjIp
OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludAogICAgaXNncmVhdGVyZXF1YWwo
X1RwIF9fZjEsIF9UcCBfX2YyKQogICAgeyByZXR1cm4gX19jYXB0dXJlX2lzZ3JlYXRlcmVxdWFs
KF9fZjEsIF9fZjIpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludAogICAgaXNs
ZXNzKF9UcCBfX2YxLCBfVHAgX19mMikgeyByZXR1cm4gX19jYXB0dXJlX2lzbGVzcyhfX2YxLCBf
X2YyKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIGlzbGVzc2VxdWFs
KF9UcCBfX2YxLCBfVHAgX19mMikKICAgIHsgcmV0dXJuIF9fY2FwdHVyZV9pc2xlc3NlcXVhbChf
X2YxLCBfX2YyKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIGlzbGVz
c2dyZWF0ZXIoX1RwIF9fZjEsIF9UcCBfX2YyKQogICAgeyByZXR1cm4gX19jYXB0dXJlX2lzbGVz
c2dyZWF0ZXIoX19mMSwgX19mMik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW50
CiAgICBpc3Vub3JkZXJlZChfVHAgX19mMSwgX1RwIF9fZjIpCiAgICB7IHJldHVybiBfX2NhcHR1
cmVfaXN1bm9yZGVyZWQoX19mMSwgX19mMik7IH0KfQoKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcg
X19nbnVfY3h4OjpmcGNsYXNzaWZ5OwogIHVzaW5nIF9fZ251X2N4eDo6aXNmaW5pdGU7CiAgdXNp
bmcgX19nbnVfY3h4Ojppc2luZjsKICB1c2luZyBfX2dudV9jeHg6OmlzbmFuOwogIHVzaW5nIF9f
Z251X2N4eDo6aXNub3JtYWw7CiAgdXNpbmcgX19nbnVfY3h4OjpzaWduYml0OwogIHVzaW5nIF9f
Z251X2N4eDo6aXNncmVhdGVyOwogIHVzaW5nIF9fZ251X2N4eDo6aXNncmVhdGVyZXF1YWw7CiAg
dXNpbmcgX19nbnVfY3h4Ojppc2xlc3M7CiAgdXNpbmcgX19nbnVfY3h4Ojppc2xlc3NlcXVhbDsK
ICB1c2luZyBfX2dudV9jeHg6OmlzbGVzc2dyZWF0ZXI7CiAgdXNpbmcgX19nbnVfY3h4Ojppc3Vu
b3JkZXJlZDsKfQoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvY21hdGgudGNjIiAx
IDMKIyAzNSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL2NtYXRoLnRjYyIgMwpuYW1lc3BhY2Ug
c3RkCnsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgX1RwCiAgICBfX2NtYXRo
X3Bvd2VyKF9UcCBfX3gsIHVuc2lnbmVkIGludCBfX24pCiAgICB7CiAgICAgIF9UcCBfX3kgPSBf
X24gJSAyID8gX194IDogMTsKCiAgICAgIHdoaWxlIChfX24gPj49IDEpCiAgICAgICAgewogICAg
ICAgICAgX194ID0gX194ICogX194OwogICAgICAgICAgaWYgKF9fbiAlIDIpCiAgICAgICAgICAg
IF9feSA9IF9feSAqIF9feDsKICAgICAgICB9CgogICAgICByZXR1cm4gX195OwogICAgfQp9CiMg
NjUxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NtYXRoLmgiIDIgMwojIDQwICIvdXNy
L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX3ZhbGFycmF5LmgiIDIgMwojIDEgIi91c3IvaW5jbHVk
ZS9nKystdjMvYml0cy9zdGRfY3N0ZGxpYi5oIiAxIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2crKy12
My9iaXRzL3N0ZF9jc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2kzODYtcmVk
aGF0LWxpbnV4L2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZysrLXYz
L2JpdHMvc3RkX2NzdGRsaWIuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0
ZF9jc3RkZGVmLmgiIDEgMwojIDM5ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRs
aWIuaCIgMiAzCiMgNDEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0ZGxpYi5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0
LWxpbnV4LzMuMC4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2Fp
dGZsYWdzLmgiIDEgMwojIDQzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMSAzCiMgNjMgIi91c3IvaW5jbHVkZS9iaXRzL3dh
aXRzdGF0dXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgMjIgIi91c3Iv
aW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAy
MyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1
ZGUvZW5kaWFuLmgiIDIgMwojIDY0ICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDIg
MwoKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1czsKICAgIHN0cnVjdAogICAgICB7Cgog
ICAgICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogICAgICAgIHVuc2lnbmVkIGludCBf
X3dfY29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3JldGNvZGU6ODsKICAgICAg
ICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90ZXJtaW5hdGVkOwogICAg
c3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wdmFsOjg7CiAgICAg
ICAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7CiAgICAgICAgdW5zaWduZWQgaW50OjE2OwoK
CgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMiAzCiMgOTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdAog
IHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90OwoKCgp0eXBlZGVmIHN0cnVj
dAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCByZW07CiAgfSBsZGl2X3Q7CgoK
CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgbG9uZyBpbnQgcXVv
dDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gbGxkaXZfdDsKIyAxMzMgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21iX2N1cl9tYXggKHZvaWQp
IHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgYXRvaSAoX19j
b25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
ZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25n
IGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc3RydG9mIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0cikgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc3RydG9sZCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgaW50
IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgp
OwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsKCgoKX19leHRlbnNp
b25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5z
aWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsKCgoKCgoKX19leHRlbnNp
b25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cgKCk7CiMgMjExICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMKIyAy
OCAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1
Y3QKewoKICBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoKICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG9sb3dlcjsK
ICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2NhbGVfdDsKIyAyMTIgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9sIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCmV4dGVybiB1bnNpZ25lZCBs
b25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBf
X2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9u
ZyBpbnQgX19zdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwg
aW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3Qg
X19sb2MpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25n
IGludCBfX3N0cnRvdWxsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUg
X19zdHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xv
YykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBfX3N0cnRvZl9sIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgp
OwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CmV4dGVybiBm
bG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRv
bGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19ncm91cCkgdGhyb3cg
KCk7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgpleHRlcm4gdW5zaWduZWQgbG9u
ZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgoKX19leHRlbnNpb25f
XwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgpfX2V4
dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJu
YWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFz
ZSwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CiMgMzg0ICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJu
IGxvbmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5o
IiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCmV4dGVybiAiQyIgewoK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2Jp
dHMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vz
ci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
cmVkaGF0LWxpbnV4LzMuMC4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMwICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5
cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Vf
aW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVk
ZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0OSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMu
aCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
X191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25fXyB0eXBlZGVm
IHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFk
ZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9fdV9pbnQgX191aWRf
dDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsKdHlw
ZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190Owp0eXBlZGVm
IGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgaW50
IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3NpemVfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1f
dDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2ludCBfX2lkX3Q7
Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwoKCnR5
cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYgbG9u
ZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29uZHNfdDsKdHlwZWRl
ZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsKCnR5
cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKCnR5
cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKCgoKdHlwZWRlZiBpbnQgX19rZXlfdDsKCgp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgoKdHlwZWRlZiBsb25nIGludCBfX2Js
a3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRf
dCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYg
X191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRf
dDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYgX191X3F1YWRf
dCBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBfX29mZjY0X3Q7CgoKdHlwZWRlZiBsb25n
IGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX190X3VzY2FsYXJf
dDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9fc29j
a2xlbl90OwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzCiMg
MjMgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvc2NoZWQuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMKc3Ry
dWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9OwojIDI0
ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzCgoKc3RydWN0IF9wdGhyZWFk
X2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1czsKICBpbnQgX19zcGlubG9jazsKCn07CgoK
CnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAqX3B0aHJlYWRfZGVzY3I7CgoK
CgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfcwp7CiAgaW50IF9fZGV0YWNoc3RhdGU7
CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0gX19zY2hlZHBhcmFt
OwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXplX3QgX19ndWFyZHNp
emU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRkcjsKICBzaXplX3Qg
X19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1
Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJlYWRfZGVzY3IgX19jX3dhaXRp
bmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kdW1teTsK
fSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlf
dDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZlZDsKICBpbnQgX19tX2Nv
dW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBpbnQgX19tX2tpbmQ7CiAgc3RydWN0
IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJlYWRfbXV0ZXhfdDsKCgoKdHlwZWRl
ZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBwdGhyZWFkX211dGV4YXR0cl90OwoKCgp0
eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX3J3
bG9ja190CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19yd19sb2NrOwogIGludCBfX3J3
X3JlYWRlcnM7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0ZXI7CiAgX3B0aHJlYWRfZGVzY3Ig
X19yd19yZWFkX3dhaXRpbmc7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0ZV93YWl0aW5nOwog
IGludCBfX3J3X2tpbmQ7CiAgaW50IF9fcndfcHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9ja190OwoK
Cgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbG9ja2tpbmQ7CiAgaW50IF9fcHNoYXJlZDsKfSBw
dGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCnR5cGVkZWYgdm9sYXRpbGUgaW50IHB0aHJlYWRfc3Bp
bmxvY2tfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9f
YmFfbG9jazsKICBpbnQgX19iYV9yZXF1aXJlZDsKICBpbnQgX19iYV9wcmVzZW50OwogIF9wdGhy
ZWFkX2Rlc2NyIF9fYmFfd2FpdGluZzsKfSBwdGhyZWFkX2JhcnJpZXJfdDsKCgp0eXBlZGVmIHN0
cnVjdCB7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX2JhcnJpZXJhdHRyX3Q7CgoKCgoKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7CiMgMTQ0ICIvdXNyL2luY2x1ZGUvYml0
cy90eXBlcy5oIiAyIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlw
ZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYg
X191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3Qg
cXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNp
ZF90OwoKCgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9f
dDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYgX19kZXZfdCBk
ZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9k
ZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1
aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCnR5cGVkZWYgX19vZmY2NF90
IG9mZjY0X3Q7CgoKCgp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgp0eXBlZGVmIF9faWRfdCBp
ZF90OwoKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCgp0eXBlZGVmIF9fZGFkZHJf
dCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgoKCnR5cGVkZWYgX19rZXlf
dCBrZXlfdDsKIyAxMzIgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDEgMwojIDU2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoK
CnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3R5cGVzLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9f
dGltZV90IHRpbWVfdDsKIyA3OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDgwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0
eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKIyA5MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDkyICIvdXNyL2luY2x1ZGUv
dGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwojIDEzMyAiL3Vzci9pbmNs
dWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VzZWNvbmRzX3QgdXNlY29uZHNfdDsK
CgoKdHlwZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoKCgoKCiMgMSAiL3Vzci9saWIv
Z2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8zLjAuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAx
NDcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdWludDsKIyAxOTAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBl
ZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVk
ZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVk
ZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVk
ZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7CgoKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJ
X18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDY0
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7Cgp0eXBlZGVmIGludCByZWdp
c3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7CiMgMjEyICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwoj
IDIxMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9z
eXMvc2VsZWN0LmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj
dC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI5ICIvdXNy
L2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVj
dC5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3Nl
dC5oIiAzCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7
CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25l
ZCBsb25nIGludCkpKV07CiAgfSBfX3NpZ3NldF90OwojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL3Nl
bGVjdC5oIiAyIDMKCgoKdHlwZWRlZiBfX3NpZ3NldF90IHNpZ3NldF90OwoKCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMTA2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVj
dCB0aW1lc3BlYwogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7
CiAgfTsKIyA0NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3RpbWUuaCIgMSAzCiMgNjMgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDY0ICIvdXNyL2luY2x1ZGUvYml0
cy90aW1lLmgiIDIgMwoKCgpzdHJ1Y3QgdGltZXZhbAogIHsKICAgIF9fdGltZV90IHR2X3NlYzsK
ICAgIF9fc3VzZWNvbmRzX3QgdHZfdXNlYzsKICB9OwojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL3Nl
bGVjdC5oIiAyIDMKIyA1NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwp0eXBlZGVmIGxv
bmcgaW50IF9fZmRfbWFzazsKCgoKCgoKCnR5cGVkZWYgc3RydWN0CiAgewoKCgogICAgX19mZF9t
YXNrIGZkc19iaXRzWzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOwoKCgoKCiAgfSBm
ZF9zZXQ7CgoKCgoKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CiMgOTUgIi91c3IvaW5jbHVk
ZS9zeXMvc2VsZWN0LmgiIDMKZXh0ZXJuICJDIiB7CgoKCgoKCmV4dGVybiBpbnQgc2VsZWN0IChp
bnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAg
ICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAgICAgICAgICAgICBmZF9z
ZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGlt
ZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgcHNl
bGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgICAg
ICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAgICAgICAg
ICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCwKICAgICAgICAgICAg
ICAgICAgICBjb25zdCBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2lnbWFzaykgdGhyb3cgKCk7
CgoKfQojIDIxNiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5j
bHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMwojIDIxOSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAyIDMKCgoKCnR5cGVkZWYgX19ibGtzaXplX3QgYmxrc2l6ZV90OwoKCgoKCgp0eXBlZGVmIF9f
YmxrY250X3QgYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7CgoK
CnR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250X3Q7CiMgMjU3ICIvdXNyL2luY2x1ZGUvc3lz
L3R5cGVzLmgiIDMKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsKdHlwZWRlZiBfX2Zz
YmxrY250NjRfdCBmc2Jsa2NudDY0X3Q7CnR5cGVkZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2
NF90OwoKCn0KIyAzOTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCmV4dGVybiBs
b25nIGludCByYW5kb20gKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVu
c2lnbmVkIGludCBfX3NlZWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUg
KHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX3N0YXRlbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0
YXRlIChjaGFyICpfX3N0YXRlYnVmKSB0aHJvdyAoKTsKCgoKCgoKCnN0cnVjdCByYW5kb21fZGF0
YQogIHsKICAgIGludDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJfdCAq
c3RhdGU7CiAgICBpbnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRf
c2VwOwogICAgaW50MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3Ry
dWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICBp
bnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3JhbmRv
bV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSB0aHJv
dyAoKTsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIg
Kl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9f
c3RhdGVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19y
ZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgKGNoYXIgKl9f
cmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9t
X2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgcmFuZCAo
dm9pZCkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkg
dGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgdGhy
b3cgKCk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDggKHZvaWQpIHRocm93ICgpOwpleHRl
cm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSB0aHJvdyAo
KTsKCgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiBsb25n
IGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIHRocm93ICgpOwpleHRlcm4gbG9uZyBpbnQg
anJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIHRocm93ICgpOwoKCmV4dGVy
biB2b2lkIHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkgdGhyb3cgKCk7CmV4dGVybiB1bnNp
Z25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkg
dGhyb3cgKCk7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFt
WzddKSB0aHJvdyAoKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQg
c2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX29sZF94WzNdOwogICAg
dW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2luaXQ7CiAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9y
IChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKZXh0ZXJuIGlu
dCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19i
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3Vs
dCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194
c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVz
dHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmlj
dCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25n
IGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQganJhbmQ0OF9y
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGlu
dCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19i
dWZmZXIpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9y
dCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CgpleHRlcm4gaW50IGxjb25nNDhfciAodW5zaWduZWQg
c2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0
OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CiMgNTI3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDMKZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1i
LCBzaXplX3QgX19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f
KSk7CgoKCgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXpl
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJl
ZSAodm9pZCAqX19wdHIpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19w
dHIpIHRocm93ICgpOwoKCgojIDEgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMSAzCiMgMjIgIi91
c3IvaW5jbHVkZS9hbGxvY2EuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMK
IyAyMyAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgojIDEgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1yZWRoYXQtbGludXgvMy4wLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjYgIi91c3Iv
aW5jbHVkZS9hbGxvY2EuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKCgpleHRlcm4gdm9pZCAqYWxs
b2NhIChzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgoKCgp9CiMgNTQ3ICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgcG9zaXhf
bWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3QgX19z
aXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4dGVy
biB2b2lkIGFib3J0ICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIHRocm93ICgp
OwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2
b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lk
IGV4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f
XykpOwoKCgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldGVudiAoX19jb25z
dCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52
IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYg
KGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19jb25z
dCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAg
ICB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIHRocm93ICgpOwojIDYy
MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIgKl9f
dGVtcGxhdGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3Rl
bXBsYXRlKSB0aHJvdyAoKTsKIyA2NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g
aW50IG1rc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CiMgNjUwICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUp
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21tYW5k
KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxlX25hbWUgKF9f
Y29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKIyA2NzIgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVkKSB0
aHJvdyAoKTsKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19jb25zdCB2b2lk
ICosIF9fY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29tcGFyaXNvbl9m
bl90OwoKCgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2Nv
bnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1iLCBz
aXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQgcXNv
cnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAg
ICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGlu
dCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcg
aW50IGxhYnMgKGxvbmcgaW50IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBsbGFicyAobG9uZyBsb25n
IGludCBfX3gpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoK
CgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgKGxvbmcg
aW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBsbGRpdiAobG9u
ZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwojIDcyOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICplY3Z0
IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwK
ICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y
ZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
bikgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBf
X25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChs
b25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwpl
eHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAg
ICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0
IF9fc2lnbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9uZyBkb3VibGUgX192YWx1
ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGVj
dnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVj
cHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y
ZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
biwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xl
bikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGlu
dCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwg
aW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3Ry
aWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxv
bmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQg
Kl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAg
ICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoK
CgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgdGhy
b3cgKCk7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2MsCiAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19u
KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2No
YXIpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3Ry
aWN0IF9fcHdjcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgpleHRlcm4gc2l6ZV90IHdjc3RvbWJzIChj
aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hh
cl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgoK
CmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSB0aHJvdyAoKTsK
IyA4MDggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IGdldHN1Ym9wdCAoY2hh
ciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19j
b25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fdmFsdWVwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBzZXRrZXkgKF9f
Y29uc3QgY2hhciAqX19rZXkpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBwb3NpeF9vcGVu
cHQgKGludCBfX29mbGFnKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZ3JhbnRwdCAoaW50
IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChpbnQgX19mZCkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIHRocm93ICgpOwoKCgoKCgpl
eHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZs
ZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIHRocm93ICgpOwoKCgoKCgpl
eHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pIHRo
cm93ICgpOwoKCgoKCn0KIyA0MiAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jc3RkbGli
LmgiIDIgMwojIDczICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRsaWIuaCIgMwpu
YW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6OmRpdl90OwogIHVzaW5nIDo6bGRpdl90OwoKICB1c2lu
ZyA6OmFib3J0OwogIHVzaW5nIDo6YWJzOwogIHVzaW5nIDo6YXRleGl0OwogIHVzaW5nIDo6YXRv
ZjsKICB1c2luZyA6OmF0b2k7CiAgdXNpbmcgOjphdG9sOwogIHVzaW5nIDo6YnNlYXJjaDsKICB1
c2luZyA6OmNhbGxvYzsKICB1c2luZyA6OmRpdjsKICB1c2luZyA6OmV4aXQ7CiAgdXNpbmcgOjpm
cmVlOwogIHVzaW5nIDo6Z2V0ZW52OwogIHVzaW5nIDo6bGFiczsKICB1c2luZyA6OmxkaXY7CiAg
dXNpbmcgOjptYWxsb2M7CiAgdXNpbmcgOjptYmxlbjsKICB1c2luZyA6Om1ic3Rvd2NzOwogIHVz
aW5nIDo6bWJ0b3djOwogIHVzaW5nIDo6cXNvcnQ7CiAgdXNpbmcgOjpyYW5kOwogIHVzaW5nIDo6
cmVhbGxvYzsKICB1c2luZyA6OnNyYW5kOwogIHVzaW5nIDo6c3RydG9kOwogIHVzaW5nIDo6c3Ry
dG9sOwogIHVzaW5nIDo6c3RydG91bDsKICB1c2luZyA6OnN5c3RlbTsKICB1c2luZyA6Ondjc3Rv
bWJzOwogIHVzaW5nIDo6d2N0b21iOwoKICBpbmxpbmUgbG9uZwogIGFicyhsb25nIF9faSkgeyBy
ZXR1cm4gbGFicyhfX2kpOyB9CgogIGlubGluZSBsZGl2X3QKICBkaXYobG9uZyBfX2ksIGxvbmcg
X19qKSB7IHJldHVybiBsZGl2KF9faSwgX19qKTsgfQp9CiMgMTI1ICIvdXNyL2luY2x1ZGUvZysr
LXYzL2JpdHMvc3RkX2NzdGRsaWIuaCIgMwpuYW1lc3BhY2UgX19nbnVfY3h4CnsKICB1c2luZyA6
OmxsZGl2X3Q7CiAgdXNpbmcgOjpfRXhpdDsKCiAgaW5saW5lIGxvbmcgbG9uZwogIGFicyhsb25n
IGxvbmcgX194KSB7IHJldHVybiBfX3ggPj0gMCA/IF9feCA6IC1fX3g7IH0KCiAgaW5saW5lIGxv
bmcgbG9uZwogIGxsYWJzKGxvbmcgbG9uZyBfX3gpIHsgcmV0dXJuIF9feCA+PSAwID8gX194IDog
LV9feDsgfQoKICBpbmxpbmUgbGxkaXZfdAogIGRpdihsb25nIGxvbmcgX19uLCBsb25nIGxvbmcg
X19kKQogIHsgbGxkaXZfdCBfX3E7IF9fcS5xdW90ID0gX19uIC8gX19kOyBfX3EucmVtID0gX19u
ICUgX19kOyByZXR1cm4gX19xOyB9CgogIGlubGluZSBsbGRpdl90CiAgbGxkaXYobG9uZyBsb25n
IF9fbiwgbG9uZyBsb25nIF9fZCkKICB7IGxsZGl2X3QgX19xOyBfX3EucXVvdCA9IF9fbiAvIF9f
ZDsgX19xLnJlbSA9IF9fbiAlIF9fZDsgcmV0dXJuIF9fcTsgfQoKICB1c2luZyA6OmF0b2xsOwog
IHVzaW5nIDo6c3RydG9mOwogIHVzaW5nIDo6c3RydG9sbDsKICB1c2luZyA6OnN0cnRvdWxsOwog
IHVzaW5nIDo6c3RydG9sZDsKfQoKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcgX19nbnVfY3h4Ojps
bGRpdl90OwogIHVzaW5nIF9fZ251X2N4eDo6X0V4aXQ7CiAgdXNpbmcgX19nbnVfY3h4OjphYnM7
CiAgdXNpbmcgX19nbnVfY3h4OjpsbGFiczsKICB1c2luZyBfX2dudV9jeHg6OmRpdjsKICB1c2lu
ZyBfX2dudV9jeHg6OmxsZGl2OwogIHVzaW5nIF9fZ251X2N4eDo6YXRvbGw7CiAgdXNpbmcgX19n
bnVfY3h4OjpzdHJ0b2Y7CiAgdXNpbmcgX19nbnVfY3h4OjpzdHJ0b2xsOwogIHVzaW5nIF9fZ251
X2N4eDo6c3RydG91bGw7CiAgdXNpbmcgX19nbnVfY3h4OjpzdHJ0b2xkOwp9CiMgNDEgIi91c3Iv
aW5jbHVkZS9nKystdjMvYml0cy9zdGRfdmFsYXJyYXkuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2crKy12My9iaXRzL3N0ZF9udW1lcmljLmgiIDEgMwojIDYwICIvdXNyL2luY2x1ZGUvZysrLXYz
L2JpdHMvc3RkX251bWVyaWMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvaTM4Ni1yZWRo
YXQtbGludXgvYml0cy9jKytjb25maWcuaCIgMSAzCiMgNjEgIi91c3IvaW5jbHVkZS9nKystdjMv
Yml0cy9zdGRfbnVtZXJpYy5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3Rk
X2NzdGRkZWYuaCIgMSAzCiMgNjIgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfbnVtZXJp
Yy5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2l0ZXJhdG9yLmgiIDEg
MwojIDYwICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2l0ZXJhdG9yLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvZysrLXYzL2kzODYtcmVkaGF0LWxpbnV4L2JpdHMvYysrY29uZmlnLmgiIDEg
MwojIDYxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2l0ZXJhdG9yLmgiIDIgMwojIDEg
Ii91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0ZGRlZi5oIiAxIDMKIyA2MiAiL3Vzci9p
bmNsdWRlL2crKy12My9iaXRzL3N0ZF9pdGVyYXRvci5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUv
ZysrLXYzL2JpdHMvc3RkX2lvc2Z3ZC5oIiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL2crKy12My9i
aXRzL3N0ZF9pb3Nmd2QuaCIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2kzODYtcmVkaGF0
LWxpbnV4L2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDQwICIvdXNyL2luY2x1ZGUvZysrLXYzL2Jp
dHMvc3RkX2lvc2Z3ZC5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RyaW5n
ZndkLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RyaW5nZndkLmgiIDMK
CiMgMSAiL3Vzci9pbmNsdWRlL2crKy12My9pMzg2LXJlZGhhdC1saW51eC9iaXRzL2MrK2NvbmZp
Zy5oIiAxIDMKIyA0MCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0cmluZ2Z3ZC5oIiAyIDMK
Cm5hbWVzcGFjZSBzdGQKewogIHRlbXBsYXRlPGNsYXNzIF9DaGFyVD4KICAgIHN0cnVjdCBjaGFy
X3RyYWl0czsKCiAgdGVtcGxhdGU8PiBzdHJ1Y3QgY2hhcl90cmFpdHM8Y2hhcj47CgogIHRlbXBs
YXRlPD4gc3RydWN0IGNoYXJfdHJhaXRzPHdjaGFyX3Q+OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X0FsbG9jPgogICAgY2xhc3MgYWxsb2NhdG9yOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs
IHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+LAogICAgICAgICAgIHR5cGVu
YW1lIF9BbGxvYyA9IGFsbG9jYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX3N0cmluZzsK
CiAgdHlwZWRlZiBiYXNpY19zdHJpbmc8Y2hhcj4gc3RyaW5nOwoKICB0eXBlZGVmIGJhc2ljX3N0
cmluZzx3Y2hhcl90PiB3c3RyaW5nOwoKfQojIDQxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMv
c3RkX2lvc2Z3ZC5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvZnBvcy5oIiAx
IDMKIyAzOCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL2Zwb3MuaCIgMwoKIyAxICIvdXNyL2lu
Y2x1ZGUvZysrLXYzL2kzODYtcmVkaGF0LWxpbnV4L2JpdHMvYysraW8uaCIgMSAzCiMgMzUgIi91
c3IvaW5jbHVkZS9nKystdjMvaTM4Ni1yZWRoYXQtbGludXgvYml0cy9jKytpby5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2crKy12My9jc3RkaW8iIDEgMwojIDMxICIvdXNyL2luY2x1ZGUvZysrLXYz
L2NzdGRpbyIgMwojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0ZGlvLmgiIDEg
MwojIDM3ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRpby5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2crKy12My9pMzg2LXJlZGhhdC1saW51eC9iaXRzL2MrK2NvbmZpZy5oIiAxIDMK
IyAzOCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jc3RkaW8uaCIgMiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jc3RkZGVmLmgiIDEgMwojIDM5ICIvdXNyL2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRpby5oIiAyIDMKIyA0MSAiL3Vzci9pbmNsdWRlL2crKy12
My9iaXRzL3N0ZF9jc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAy
OCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MSAzCiMgMjkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgojIDEg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMy4wLjIvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzCiMgMzUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMSAzCiMgMzcgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyA0NSAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKIyA1
NSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX19GSUxF
OwojIDY1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saWJpby5o
IiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvX0df
Y29uZmlnLmgiIDEgMwojIDkgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDEwICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi
IDIgMwoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzMuMC4yL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMxMiAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1s
aW51eC8zLjAuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHdpbnRf
dDsKIyAxNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKIyAyNCAiL3Vzci9pbmNsdWRl
L19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNy
L2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGlu
dXgvMy4wLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5o
IiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5j
bHVkZS93Y2hhci5oIiAyIDMKIyA2NyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKdHlwZWRlZiBz
dHJ1Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAg
Y2hhciBfX3djaGJbNF07CiAgfSBfX3ZhbHVlOwp9IF9fbWJzdGF0ZV90OwojIDI1ICIvdXNyL2lu
Y2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7
CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBf
X29mZjY0X3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0
NCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2djb252Lmgi
IDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0
dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKIyAxICIvdXNyL2lu
Y2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vz
ci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8zLjAuMi9pbmNsdWRlL3N0ZGRlZi5oIiAx
IDMKIyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy93Y2hhci5oIiAxIDMKIyA1MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDI5ICIvdXNy
L2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0
LWxpbnV4LzMuMC4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvZ2Nv
bnYuaCIgMiAzCgoKCgoKZW51bQp7CiAgX19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYs
CiAgX19HQ09OVl9OT0RCLAogIF9fR0NPTlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQs
CiAgX19HQ09OVl9GVUxMX09VVFBVVCwKICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09O
Vl9JTkNPTVBMRVRFX0lOUFVULAoKICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dD
T05WX0lOVEVSTkFMX0VSUk9SCn07CgoKCmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAw
MSwKICBfX0dDT05WX0lHTk9SRV9FUlJPUlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZf
c3RlcDsKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2Jq
ZWN0OwpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZf
ZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19j
b25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyICoqLCBzaXplX3QgKiwgaW50LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9p
bml0X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZf
ZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29u
dl90cmFuc19mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwg
dW5zaWduZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICos
IF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoK
CnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwg
X19jb25zdCBjaGFyICoqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lk
ICoqLCBjb25zdCBjaGFyICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3Qp
ICh2b2lkICopOwoKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNf
ZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250
ZXh0X2ZjdDsKICBfX2djb252X3RyYW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQg
Kl9fZGF0YTsKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVj
dCBfX2djb252X3N0ZXAKewogIHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJf
aGFuZGxlOwogIF9fY29uc3QgY2hhciAqX19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBj
aGFyICpfX2Zyb21fbmFtZTsKICBjaGFyICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0
OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19pbml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRf
ZmN0OwoKCgogIGludCBfX21pbl9uZWVkZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207
CiAgaW50IF9fbWluX25lZWRlZF90bzsKICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9f
c3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRh
CnsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVu
ZDsKCgoKICBpbnQgX19mbGFnczsKCgoKICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAg
aW50IF9faW50ZXJuYWxfdXNlOwoKICBfX21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRl
X3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoK
Cgp0eXBlZGVmIHN0cnVjdCBfX2djb252X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1
Y3QgX19nY29udl9zdGVwICpfX3N0ZXBzOwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZf
c3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAqX19nY29udl90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0df
Y29uZmlnLmgiIDIgMwp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7
CiAgc3RydWN0CiAgewogICAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9f
Z2NvbnZfc3RlcF9kYXRhIF9fZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5
cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7
CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18p
KSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKIyAzMyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDIgMwojIDUzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1yZWRoYXQtbGludXgvMy4wLjIvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3Iv
bGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMy4wLjIvaW5jbHVkZS9zdGRhcmcuaCIgMwp0
eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDU0ICIvdXNyL2luY2x1
ZGUvbGliaW8uaCIgMiAzCiMgMTYwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lP
X2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwojIDE3MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMK
dHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoKCgoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVj
dCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBf
cG9zOwojIDE5MyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKfTsKCgplbnVtIF9fY29kZWN2dF9y
ZXN1bHQKewogIF9fY29kZWN2dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2NvZGVjdnRf
ZXJyb3IsCiAgX19jb2RlY3Z0X25vY29udgp9OwoKCgoKc3RydWN0IF9JT19jb2RlY3Z0CnsKICB2
b2lkICgqX19jb2RlY3Z0X2Rlc3RyKSAoc3RydWN0IF9JT19jb2RlY3Z0ICopOwogIGVudW0gX19j
b2RlY3Z0X3Jlc3VsdCAoKl9fY29kZWN2dF9kb19vdXQpIChzdHJ1Y3QgX0lPX2NvZGVjdnQgKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tYnN0YXRlX3Qg
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2No
YXJfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB3Y2hhcl90ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHdjaGFyX3QgKiosIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqLCBjaGFyICoqKTsKICBlbnVtIF9fY29kZWN2dF9yZXN1bHQg
KCpfX2NvZGVjdnRfZG9fdW5zaGlmdCkgKHN0cnVjdCBfSU9fY29kZWN2dCAqLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tYnN0YXRlX3QgKiwgY2hh
ciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqLCBjaGFyICoqKTsKICBlbnVtIF9fY29kZWN2dF9yZXN1bHQgKCpfX2NvZGVjdnRfZG9faW4p
IChzdHJ1Y3QgX0lPX2NvZGVjdnQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX21ic3RhdGVfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiosIHdjaGFyX3QgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICosIHdjaGFy
X3QgKiopOwogIGludCAoKl9fY29kZWN2dF9kb19lbmNvZGluZykgKHN0cnVjdCBfSU9fY29kZWN2
dCAqKTsKICBpbnQgKCpfX2NvZGVjdnRfZG9fYWx3YXlzX25vY29udikgKHN0cnVjdCBfSU9fY29k
ZWN2dCAqKTsKICBpbnQgKCpfX2NvZGVjdnRfZG9fbGVuZ3RoKSAoc3RydWN0IF9JT19jb2RlY3Z0
ICosIF9fbWJzdGF0ZV90ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwogIGludCAoKl9fY29kZWN2dF9kb19tYXhfbGVu
Z3RoKSAoc3RydWN0IF9JT19jb2RlY3Z0ICopOwoKICBfR19pY29udl90IF9fY2RfaW47CiAgX0df
aWNvbnZfdCBfX2NkX291dDsKfTsKCgpzdHJ1Y3QgX0lPX3dpZGVfZGF0YQp7CiAgd2NoYXJfdCAq
X0lPX3JlYWRfcHRyOwogIHdjaGFyX3QgKl9JT19yZWFkX2VuZDsKICB3Y2hhcl90ICpfSU9fcmVh
ZF9iYXNlOwogIHdjaGFyX3QgKl9JT193cml0ZV9iYXNlOwogIHdjaGFyX3QgKl9JT193cml0ZV9w
dHI7CiAgd2NoYXJfdCAqX0lPX3dyaXRlX2VuZDsKICB3Y2hhcl90ICpfSU9fYnVmX2Jhc2U7CiAg
d2NoYXJfdCAqX0lPX2J1Zl9lbmQ7CgogIHdjaGFyX3QgKl9JT19zYXZlX2Jhc2U7CiAgd2NoYXJf
dCAqX0lPX2JhY2t1cF9iYXNlOwoKICB3Y2hhcl90ICpfSU9fc2F2ZV9lbmQ7CgogIF9fbWJzdGF0
ZV90IF9JT19zdGF0ZTsKICBfX21ic3RhdGVfdCBfSU9fbGFzdF9zdGF0ZTsKICBzdHJ1Y3QgX0lP
X2NvZGVjdnQgX2NvZGVjdnQ7CgogIHdjaGFyX3QgX3Nob3J0YnVmWzFdOwoKICBzdHJ1Y3QgX0lP
X2p1bXBfdCAqX3dpZGVfdnRhYmxlOwp9OwoKCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFn
czsKCgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFy
KiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0
ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hh
ciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1
cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJr
ZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9i
bGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9j
b2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07
CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMgMzA1ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwog
IF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCiAgc3RydWN0IF9JT19jb2RlY3Z0ICpfY29kZWN2dDsKICBz
dHJ1Y3QgX0lPX3dpZGVfZGF0YSAqX3dpZGVfZGF0YTsKCgoKCiAgaW50IF9tb2RlOwoKICBjaGFy
IF91bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoK
CgoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9J
T18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRf
OwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDM0NCAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lk
ICpfX2Nvb2tpZSwgY2hhciAqX19idWYsIHNpemVfdCBfX25ieXRlcyk7CgoKCgoKCgp0eXBlZGVm
IF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpf
X2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKCgoK
Cgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4gKHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9f
cG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tp
ZSk7CgoKCgp0eXBlZGVmIF9faW9fcmVhZF9mbiBjb29raWVfcmVhZF9mdW5jdGlvbl90Owp0eXBl
ZGVmIF9faW9fd3JpdGVfZm4gY29va2llX3dyaXRlX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19z
ZWVrX2ZuIGNvb2tpZV9zZWVrX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19jbG9zZV9mbiBjb29r
aWVfY2xvc2VfZnVuY3Rpb25fdDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpy
ZWFkOwogIF9faW9fd3JpdGVfZm4gKndyaXRlOwogIF9faW9fc2Vla19mbiAqc2VlazsKICBfX2lv
X2Nsb3NlX2ZuICpjbG9zZTsKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9J
T19jb29raWVfaW9fZnVuY3Rpb25zX3QgY29va2llX2lvX2Z1bmN0aW9uc190OwoKc3RydWN0IF9J
T19jb29raWVfZmlsZTsKCgpleHRlcm4gdm9pZCBfSU9fY29va2llX2luaXQgKHN0cnVjdCBfSU9f
Y29va2llX2ZpbGUgKl9fY2ZpbGUsIGludCBfX3JlYWRfd3JpdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqX19jb29raWUsIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19m
bnMpOwoKCgoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUg
KikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4
dGVybiBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIHdp
bnRfdCBfX3d1bmRlcmZsb3cgKF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9f
d3VmbG93IChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAo
X0lPX0ZJTEUgKiwgd2ludF90KSB0aHJvdyAoKTsKIyA0MjYgIi91c3IvaW5jbHVkZS9saWJpby5o
IiAzCmV4dGVybiBpbnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJu
IGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4g
aW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Zl
cnJvciAoX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9j
a2VkIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2Nr
ZmlsZSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAo
X0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJ
TEUgKikgdGhyb3cgKCk7CiMgNDU2ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50
IF9JT192ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3Ry
aWN0LAogICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3Ry
aWN0KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3Ry
aWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19n
bnVjX3ZhX2xpc3QpIHRocm93ICgpOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklM
RSAqLCBpbnQsIF9fc3NpemVfdCkgdGhyb3cgKCk7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChf
SU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmY2NF90IF9J
T19zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSB0aHJvdyAoKTsKZXh0
ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIHRo
cm93ICgpOwoKZXh0ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIHRo
cm93ICgpOwoKCmV4dGVybiB3aW50X3QgX0lPX2dldHdjIChfSU9fRklMRSAqX19mcCkgdGhyb3cg
KCk7CmV4dGVybiB3aW50X3QgX0lPX3B1dHdjICh3Y2hhcl90IF9fd2MsIF9JT19GSUxFICpfX2Zw
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fZndpZGUgKF9JT19GSUxFICpfX2ZwLCBpbnQgX19t
b2RlKSB0aHJvdyAoKTsKIyA1MDUgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQg
X0lPX3Zmd3NjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IHdjaGFyX3QgKiBfX3Jl
c3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QsIGludCAqX19y
ZXN0cmljdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX3Zmd3ByaW50ZiAoX0lPX0ZJTEUgKl9f
cmVzdHJpY3QsIGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19nbnVjX3ZhX2xpc3QpIHRocm93ICgpOwpleHRlcm4gX19zc2l6ZV90IF9JT193cGFk
biAoX0lPX0ZJTEUgKiwgd2ludF90LCBfX3NzaXplX3QpIHRocm93ICgpOwpleHRlcm4gdm9pZCBf
SU9fZnJlZV93YmFja3VwX2FyZWEgKF9JT19GSUxFICopIHRocm93ICgpOwoKCgp9CiMgNjYgIi91
c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlz
dDsKIyA4MCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBfR19mcG9zX3QgZnBvc190
OwoKCgoKdHlwZWRlZiBfR19mcG9zNjRfdCBmcG9zNjRfdDsKIyAxMjkgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDEzMCAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgpleHRlcm4gRklMRSAqc3RkaW47CmV4dGVybiBG
SUxFICpzdGRvdXQ7CmV4dGVybiBGSUxFICpzdGRlcnI7CiMgMTQ0ICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMwpleHRlcm4gaW50IHJlbW92ZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSB0aHJv
dyAoKTsKCmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNo
YXIgKl9fbmV3KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSB0aHJv
dyAoKTsKIyAxNjAgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICp0bXBmaWxl
NjQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcykgdGhy
b3cgKCk7CgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykgdGhyb3cgKCk7CiMg
MTgwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25z
dCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3Ry
ZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CgoKCmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gaW50IGZjbG9zZWFsbCAodm9pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJu
IEZJTEUgKmZvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgdGhyb3cgKCk7
CgpleHRlcm4gRklMRSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2Rl
cywKICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93
ICgpOwojIDIyNCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZvcGVuNjQg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIHRocm93ICgpOwpleHRlcm4gRklM
RSAqZnJlb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoK
CgoKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19tb2Rlcykg
dGhyb3cgKCk7CgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuY29va2llICh2b2lkICpfX3Jlc3RyaWN0
IF9fbWFnaWNfY29va2llLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9JT19jb29raWVf
aW9fZnVuY3Rpb25zX3QgX19pb19mdW5jcykgdGhyb3cgKCk7CgoKZXh0ZXJuIEZJTEUgKmZtZW1v
cGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwgX19jb25zdCBjaGFyICpfX21vZGVzKSB0aHJv
dyAoKTsKCgoKCmV4dGVybiBGSUxFICpvcGVuX21lbXN0cmVhbSAoY2hhciAqKl9fcmVzdHJpY3Qg
X19idWZsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0
IF9fc2l6ZWxvYykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGludCBzZXR2YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3Ry
aWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKSB0
aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgX19zaXplKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0
cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3Qg
X19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
Zm9ybWF0LCAuLi4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAo
Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgdmZwcmludGYg
KEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCmV4
dGVybiBpbnQgdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2du
dWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQgdnNwcmludGYgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAg
ICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwK
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18s
IDMsIDQpKSk7CgpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNp
emVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgoKCgoKZXh0ZXJuIGlu
dCB2YXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mLAogICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAg
ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDAp
KSk7CmV4dGVybiBpbnQgX19hc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAg
ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMp
KSk7CmV4dGVybiBpbnQgYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsK
CgpleHRlcm4gaW50IHZkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm10LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsK
ZXh0ZXJuIGludCBkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
Zm10LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDIsIDMpKSk7CgoKCgpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSwKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHZmc2Nh
bmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRl
cm4gaW50IHZzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNf
dmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAo
X19zY2FuZl9fLCAxLCAwKSkpOwoKCmV4dGVybiBpbnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKCgpleHRlcm4gaW50IGZn
ZXRjIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19z
dHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0Y2hhciAodm9pZCkgdGhyb3cgKCk7CgoK
CgoKCgpleHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBp
bnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBp
bnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBw
dXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdXRj
aGFyIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQg
KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcHV0Y191
bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IHB1
dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZ2V0dyAo
RklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0dyAoaW50IF9fdywgRklM
RSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgaW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzX3VubG9ja2VkIChjaGFyICpfX3Jlc3RyaWN0IF9f
cywgaW50IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3MpIHRo
cm93ICgpOwojIDQyOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIF9fc3NpemVfdCBf
X2dldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0
aHJvdyAoKTsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19s
aW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBf
X24sIGludCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gX19zc2l6ZV90IGdldGxpbmUg
KGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCAqX19yZXN0cmljdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZnB1dHMgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAg
ICAgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZnB1dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAq
X19zKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3Ry
ZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBf
X3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAo
X19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3MpIHRocm93ICgpOwoK
CgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBz
aXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIHNpemVfdCBmd3JpdGVf
dW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJl
YW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcg
aW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCByZXdpbmQg
KEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKIyA0OTEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAz
CmV4dGVybiBpbnQgZnNlZWtvIChGSUxFICpfX3N0cmVhbSwgX19vZmZfdCBfX29mZiwgaW50IF9f
d2hlbmNlKSB0aHJvdyAoKTsKCmV4dGVybiBfX29mZl90IGZ0ZWxsbyAoRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQg
ZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgdGhyb3cgKCk7
CiMgNTI1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbzY0IChGSUxF
ICpfX3N0cmVhbSwgX19vZmY2NF90IF9fb2ZmLCBpbnQgX193aGVuY2UpIHRocm93ICgpOwpleHRl
cm4gX19vZmY2NF90IGZ0ZWxsbzY0IChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBp
bnQgZmdldHBvczY0IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19yZXN0
cmljdCBfX3BvcykKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGludCBmc2V0cG9zNjQgKEZJTEUgKl9f
c3RyZWFtLCBfX2NvbnN0IGZwb3M2NF90ICpfX3BvcykgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lk
IGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZlb2YgKEZJ
TEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVh
bSkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cg
KCk7CgoKCgpleHRlcm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0
IHN5c19lcnJsaXN0W107CgoKZXh0ZXJuIGludCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNo
YXIgKl9fY29uc3QgX3N5c19lcnJsaXN0W107CgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUg
Kl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBj
aGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7CgoKZXh0ZXJu
IGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAq
Y3Rlcm1pZCAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAo
Y2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2Jz
dGFja19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pIHRocm93ICgpOwpleHRlcm4gaW50IG9ic3RhY2tfdnByaW50ZiAoc3RydWN0IG9ic3RhY2sg
Kl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19nbnVjX3ZhX2xpc3QgX19hcmdzKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiB2b2lkIGZsb2Nr
ZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZ0cnlsb2NrZmls
ZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChG
SUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CiMgNjM1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwp9
CiMgNDIgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0ZGlvLmgiIDIgMwojIDg2ICIv
dXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRpby5oIiAzCm5hbWVzcGFjZSBzdGQKewog
IHVzaW5nIDo6RklMRTsKICB1c2luZyA6OmZwb3NfdDsKCiAgdXNpbmcgOjpjbGVhcmVycjsKICB1
c2luZyA6OmZjbG9zZTsKICB1c2luZyA6OmZlb2Y7CiAgdXNpbmcgOjpmZXJyb3I7CiAgdXNpbmcg
OjpmZmx1c2g7CiAgdXNpbmcgOjpmZ2V0YzsKICB1c2luZyA6OmZnZXRwb3M7CiAgdXNpbmcgOjpm
Z2V0czsKICB1c2luZyA6OmZvcGVuOwogIHVzaW5nIDo6ZnByaW50ZjsKICB1c2luZyA6OmZwdXRj
OwogIHVzaW5nIDo6ZnB1dHM7CiAgdXNpbmcgOjpmcmVhZDsKICB1c2luZyA6OmZyZW9wZW47CiAg
dXNpbmcgOjpmc2NhbmY7CiAgdXNpbmcgOjpmc2VlazsKICB1c2luZyA6OmZzZXRwb3M7CiAgdXNp
bmcgOjpmdGVsbDsKICB1c2luZyA6OmZ3cml0ZTsKICB1c2luZyA6OmdldGM7CiAgdXNpbmcgOjpn
ZXRjaGFyOwogIHVzaW5nIDo6Z2V0czsKICB1c2luZyA6OnBlcnJvcjsKICB1c2luZyA6OnByaW50
ZjsKICB1c2luZyA6OnB1dGM7CiAgdXNpbmcgOjpwdXRjaGFyOwogIHVzaW5nIDo6cHV0czsKICB1
c2luZyA6OnJlbW92ZTsKICB1c2luZyA6OnJlbmFtZTsKICB1c2luZyA6OnJld2luZDsKICB1c2lu
ZyA6OnNjYW5mOwogIHVzaW5nIDo6c2V0YnVmOwogIHVzaW5nIDo6c2V0dmJ1ZjsKICB1c2luZyA6
OnNwcmludGY7CiAgdXNpbmcgOjpzc2NhbmY7CiAgdXNpbmcgOjp0bXBmaWxlOwogIHVzaW5nIDo6
dG1wbmFtOwogIHVzaW5nIDo6dW5nZXRjOwogIHVzaW5nIDo6dmZwcmludGY7CiAgdXNpbmcgOjp2
cHJpbnRmOwogIHVzaW5nIDo6dnNwcmludGY7Cn0KIyAxNDIgIi91c3IvaW5jbHVkZS9nKystdjMv
Yml0cy9zdGRfY3N0ZGlvLmgiIDMKbmFtZXNwYWNlIF9fZ251X2N4eAp7CiAgdXNpbmcgOjpzbnBy
aW50ZjsKICB1c2luZyA6OnZmc2NhbmY7CiAgdXNpbmcgOjp2c2NhbmY7CiAgdXNpbmcgOjp2c25w
cmludGY7CiAgdXNpbmcgOjp2c3NjYW5mOwp9CgpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyBfX2du
dV9jeHg6OnNucHJpbnRmOwogIHVzaW5nIF9fZ251X2N4eDo6dmZzY2FuZjsKICB1c2luZyBfX2du
dV9jeHg6OnZzY2FuZjsKICB1c2luZyBfX2dudV9jeHg6OnZzbnByaW50ZjsKICB1c2luZyBfX2du
dV9jeHg6OnZzc2NhbmY7Cn0KIyAzMiAiL3Vzci9pbmNsdWRlL2crKy12My9jc3RkaW8iIDIgMwoj
IDM2ICIvdXNyL2luY2x1ZGUvZysrLXYzL2kzODYtcmVkaGF0LWxpbnV4L2JpdHMvYysraW8uaCIg
MiAzCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12My9jc3RkZGVmIiAxIDMKIyAzNyAiL3Vzci9pbmNs
dWRlL2crKy12My9pMzg2LXJlZGhhdC1saW51eC9iaXRzL2MrK2lvLmgiIDIgMwojIDEgIi91c3Iv
aW5jbHVkZS9nKystdjMvaTM4Ni1yZWRoYXQtbGludXgvYml0cy9ndGhyLmgiIDEgMwojIDk4ICIv
dXNyL2luY2x1ZGUvZysrLXYzL2kzODYtcmVkaGF0LWxpbnV4L2JpdHMvZ3Roci5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2crKy12My9pMzg2LXJlZGhhdC1saW51eC9iaXRzL2d0aHItZGVmYXVsdC5o
IiAxIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2crKy12My9pMzg2LXJlZGhhdC1saW51eC9iaXRzL2d0
aHItZGVmYXVsdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMSAzCiMgMTggIi91
c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAz
CiMgMTkgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvc2No
ZWQuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9zY2hlZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2ZlYXR1cmVzLmgiIDEgMwojIDI0ICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIgMiAzCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3NjaGVkLmgi
IDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9z
Y2hlZC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDQ3ICIv
dXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzCnN0cnVjdCBzY2hlZF9wYXJhbQogIHsKICAgIGlu
dCBfX3NjaGVkX3ByaW9yaXR5OwogIH07CgpleHRlcm4gIkMiIHsKCgoKZXh0ZXJuIGludCBjbG9u
ZSAoaW50ICgqX19mbikgKHZvaWQgKl9fYXJnKSwgdm9pZCAqX19jaGlsZF9zdGFjaywKICAgICAg
ICAgICAgICAgICAgaW50IF9fZmxhZ3MsIHZvaWQgKl9fYXJnKSB0aHJvdyAoKTsKCgp9CiMgMzMg
Ii91c3IvaW5jbHVkZS9zY2hlZC5oIiAyIDMKCgoKCmV4dGVybiAiQyIgewoKCmV4dGVybiBpbnQg
c2NoZWRfc2V0cGFyYW0gKF9fcGlkX3QgX19waWQsIF9fY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFt
ICpfX3BhcmFtKQogICAgIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2NoZWRfZ2V0cGFyYW0gKF9f
cGlkX3QgX19waWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgdGhyb3cgKCk7CgoKZXh0
ZXJuIGludCBzY2hlZF9zZXRzY2hlZHVsZXIgKF9fcGlkX3QgX19waWQsIGludCBfX3BvbGljeSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFt
ICpfX3BhcmFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNjaGVkX2dldHNjaGVkdWxlciAoX19w
aWRfdCBfX3BpZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzY2hlZF95aWVsZCAodm9pZCkgdGhy
b3cgKCk7CgoKZXh0ZXJuIGludCBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IChpbnQgX19hbGdvcml0
aG0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiAoaW50IF9f
YWxnb3JpdGhtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNjaGVkX3JyX2dldF9pbnRlcnZhbCAo
X19waWRfdCBfX3BpZCwgc3RydWN0IHRpbWVzcGVjICpfX3QpIHRocm93ICgpOwoKfQojIDIxICIv
dXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMK
IyAyOCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5o
IiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKCgoK
CiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8zLjAuMi9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMKIyAzOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvdGltZS5oIiAxIDMKIyA0MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCiMg
MTE4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0bQp7CiAgaW50IHRtX3NlYzsKICBp
bnQgdG1fbWluOwogIGludCB0bV9ob3VyOwogIGludCB0bV9tZGF5OwogIGludCB0bV9tb247CiAg
aW50IHRtX3llYXI7CiAgaW50IHRtX3dkYXk7CiAgaW50IHRtX3lkYXk7CiAgaW50IHRtX2lzZHN0
OwoKCiAgbG9uZyBpbnQgdG1fZ210b2ZmOwogIF9fY29uc3QgY2hhciAqdG1fem9uZTsKCgoKCn07
CgoKCgpzdHJ1Y3QgaXRpbWVyc3BlYwogIHsKICAgIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZh
bDsKICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKICB9OwoKCnN0cnVjdCBzaWdldmVudDsK
IyAxNjMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJuIGNsb2NrX3QgY2xvY2sgKHZvaWQp
IHRocm93ICgpOwoKCmV4dGVybiB0aW1lX3QgdGltZSAodGltZV90ICpfX3RpbWVyKSB0aHJvdyAo
KTsKCgpleHRlcm4gZG91YmxlIGRpZmZ0aW1lICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGlt
ZTApCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiB0
aW1lX3QgbWt0aW1lIChzdHJ1Y3QgdG0gKl9fdHApIHRocm93ICgpOwoKCgoKCmV4dGVybiBzaXpl
X3Qgc3RyZnRpbWUgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAp
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cnB0aW1lIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2ZtdCwgc3RydWN0IHRtICpfX3RwKQogICAgIHRocm93ICgpOwoKCgoKCmV4dGVybiBzdHJ1
Y3QgdG0gKmdtdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIpIHRocm93ICgpOwoKCgpleHRl
cm4gc3RydWN0IHRtICpsb2NhbHRpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSB0aHJvdyAo
KTsKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0
cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRtICpfX3Jl
c3RyaWN0IF9fdHApIHRocm93ICgpOwoKCgpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWVfciAo
X19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBjaGFyICphc2N0aW1lIChfX2NvbnN0IHN0cnVjdCB0bSAqX190cCkgdGhyb3cgKCk7CgoKZXh0
ZXJuIGNoYXIgKmN0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgdGhyb3cgKCk7CgoKCgoK
CmV4dGVybiBjaGFyICphc2N0aW1lX3IgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9f
dHAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIHRocm93
ICgpOwoKCmV4dGVybiBjaGFyICpjdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBf
X3RpbWVyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgdGhy
b3cgKCk7CgoKCgpleHRlcm4gY2hhciAqX190em5hbWVbMl07CmV4dGVybiBpbnQgX19kYXlsaWdo
dDsKZXh0ZXJuIGxvbmcgaW50IF9fdGltZXpvbmU7CgoKCgpleHRlcm4gY2hhciAqdHpuYW1lWzJd
OwoKCgpleHRlcm4gdm9pZCB0enNldCAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZGF5
bGlnaHQ7CmV4dGVybiBsb25nIGludCB0aW1lem9uZTsKCgoKCgpleHRlcm4gaW50IHN0aW1lIChf
X2NvbnN0IHRpbWVfdCAqX193aGVuKSB0aHJvdyAoKTsKIyAyNzEgIi91c3IvaW5jbHVkZS90aW1l
LmgiIDMKZXh0ZXJuIHRpbWVfdCB0aW1lZ20gKHN0cnVjdCB0bSAqX190cCkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIHRpbWVfdCB0aW1lbG9jYWwgKHN0cnVjdCB0bSAqX190cCkgdGhyb3cgKCk7CgoKZXh0
ZXJuIGludCBkeXNpemUgKGludCBfX3llYXIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgoKCgpleHRlcm4gaW50IG5hbm9zbGVlcCAoX19jb25zdCBzdHJ1Y3QgdGltZXNw
ZWMgKl9fcmVxdWVzdGVkX3RpbWUsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNw
ZWMgKl9fcmVtYWluaW5nKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBjbG9ja19nZXRyZXMgKGNs
b2NraWRfdCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzKSB0aHJvdyAoKTsKCgpl
eHRlcm4gaW50IGNsb2NrX2dldHRpbWUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGlt
ZXNwZWMgKl9fdHApIHRocm93ICgpOwoKCmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZSAoY2xvY2tp
ZF90IF9fY2xvY2tfaWQsIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RwKQogICAgIHRocm93
ICgpOwoKCgpleHRlcm4gaW50IGNsb2NrX25hbm9zbGVlcCAoY2xvY2tpZF90IF9fY2xvY2tfaWQs
IGludCBfX2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3Qg
dGltZXNwZWMgKl9fcmVxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWVz
cGVjICpfX3JlbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBjbG9ja19nZXRjcHVjbG9ja2lkIChw
aWRfdCBfX3BpZCwgY2xvY2tpZF90ICpfX2Nsb2NrX2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBp
bnQgdGltZXJfY3JlYXRlIChjbG9ja2lkX3QgX19jbG9ja19pZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBzaWdldmVudCAqX19yZXN0cmljdCBfX2V2cCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVyX3QgKl9fcmVzdHJpY3QgX190aW1lcmlkKSB0aHJvdyAoKTsKCgpleHRl
cm4gaW50IHRpbWVyX2RlbGV0ZSAodGltZXJfdCBfX3RpbWVyaWQpIHRocm93ICgpOwoKCmV4dGVy
biBpbnQgdGltZXJfc2V0dGltZSAodGltZXJfdCBfX3RpbWVyaWQsIGludCBfX2ZsYWdzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJp
Y3QgX192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXRpbWVyc3BlYyAq
X19yZXN0cmljdCBfX292YWx1ZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1l
ICh0aW1lcl90IF9fdGltZXJpZCwgc3RydWN0IGl0aW1lcnNwZWMgKl9fdmFsdWUpCiAgICAgdGhy
b3cgKCk7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXRvdmVycnVuICh0aW1lcl90IF9fdGltZXJpZCkg
dGhyb3cgKCk7CiMgMzQyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBpbnQgZ2V0ZGF0
ZV9lcnI7CgoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ2V0ZGF0ZSAoX19jb25zdCBjaGFyICpfX3N0
cmluZykgdGhyb3cgKCk7CiMgMzU3ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBpbnQg
Z2V0ZGF0ZV9yIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zdHJpbmcsCiAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX19yZXNidWZwKSB0aHJvdyAoKTsKCgoK
fQojIDIyICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9z
aWduYWwuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMKCmV4
dGVybiAiQyIgewoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiMgMzQgIi91
c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzCiMgMzcxICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDMK
fQojIDI1ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy9wdGhyZWFkdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDIgMwoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL2luaXRzcGluLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUv
cHRocmVhZC5oIiAyIDMKCgpleHRlcm4gIkMiIHsKIyA1OSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQu
aCIgMwplbnVtCnsKICBQVEhSRUFEX0NSRUFURV9KT0lOQUJMRSwKCiAgUFRIUkVBRF9DUkVBVEVf
REVUQUNIRUQKCn07CgplbnVtCnsKICBQVEhSRUFEX0lOSEVSSVRfU0NIRUQsCgogIFBUSFJFQURf
RVhQTElDSVRfU0NIRUQKCn07CgplbnVtCnsKICBQVEhSRUFEX1NDT1BFX1NZU1RFTSwKCiAgUFRI
UkVBRF9TQ09QRV9QUk9DRVNTCgp9OwoKZW51bQp7CiAgUFRIUkVBRF9NVVRFWF9USU1FRF9OUCwK
ICBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUCwKICBQVEhSRUFEX01VVEVYX0VSUk9SQ0hFQ0tf
TlAsCiAgUFRIUkVBRF9NVVRFWF9BREFQVElWRV9OUAoKICAsCiAgUFRIUkVBRF9NVVRFWF9OT1JN
QUwgPSBQVEhSRUFEX01VVEVYX1RJTUVEX05QLAogIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFID0g
UFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAsCiAgUFRIUkVBRF9NVVRFWF9FUlJPUkNIRUNLID0g
UFRIUkVBRF9NVVRFWF9FUlJPUkNIRUNLX05QLAogIFBUSFJFQURfTVVURVhfREVGQVVMVCA9IFBU
SFJFQURfTVVURVhfTk9STUFMCgoKCiAgLCBQVEhSRUFEX01VVEVYX0ZBU1RfTlAgPSBQVEhSRUFE
X01VVEVYX0FEQVBUSVZFX05QCgp9OwoKZW51bQp7CiAgUFRIUkVBRF9QUk9DRVNTX1BSSVZBVEUs
CgogIFBUSFJFQURfUFJPQ0VTU19TSEFSRUQKCn07CgoKZW51bQp7CiAgUFRIUkVBRF9SV0xPQ0tf
UFJFRkVSX1JFQURFUl9OUCwKICBQVEhSRUFEX1JXTE9DS19QUkVGRVJfV1JJVEVSX05QLAogIFBU
SFJFQURfUldMT0NLX1BSRUZFUl9XUklURVJfTk9OUkVDVVJTSVZFX05QLAogIFBUSFJFQURfUldM
T0NLX0RFRkFVTFRfTlAgPSBQVEhSRUFEX1JXTE9DS19QUkVGRVJfV1JJVEVSX05QCn07CiMgMTMx
ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCnN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZl
cgp7CiAgdm9pZCAoKl9fcm91dGluZSkgKHZvaWQgKik7CiAgdm9pZCAqX19hcmc7CiAgaW50IF9f
Y2FuY2VsdHlwZTsKICBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fcHJldjsKfTsK
CgoKZW51bQp7CiAgUFRIUkVBRF9DQU5DRUxfRU5BQkxFLAoKICBQVEhSRUFEX0NBTkNFTF9ESVNB
QkxFCgp9OwplbnVtCnsKICBQVEhSRUFEX0NBTkNFTF9ERUZFUlJFRCwKCiAgUFRIUkVBRF9DQU5D
RUxfQVNZTkNIUk9OT1VTCgp9OwojIDE2MyAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwpleHRl
cm4gaW50IHB0aHJlYWRfY3JlYXRlIChwdGhyZWFkX3QgKl9fcmVzdHJpY3QgX190aHJlYWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fcmVzdHJp
Y3QgX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICooKl9fc3RhcnRfcm91
dGluZSkgKHZvaWQgKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fcmVzdHJp
Y3QgX19hcmcpIHRocm93ICgpOwoKCmV4dGVybiBwdGhyZWFkX3QgcHRocmVhZF9zZWxmICh2b2lk
KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfZXF1YWwgKHB0aHJlYWRfdCBfX3RocmVh
ZDEsIHB0aHJlYWRfdCBfX3RocmVhZDIpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHB0aHJlYWRf
ZXhpdCAodm9pZCAqX19yZXR2YWwpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2pvaW4gKHB0aHJlYWRfdCBfX3RoLCB2
b2lkICoqX190aHJlYWRfcmV0dXJuKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRf
ZGV0YWNoIChwdGhyZWFkX3QgX190aCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IHB0aHJl
YWRfYXR0cl9pbml0IChwdGhyZWFkX2F0dHJfdCAqX19hdHRyKSB0aHJvdyAoKTsKCgpleHRlcm4g
aW50IHB0aHJlYWRfYXR0cl9kZXN0cm95IChwdGhyZWFkX2F0dHJfdCAqX19hdHRyKSB0aHJvdyAo
KTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0ZSAocHRocmVhZF9hdHRy
X3QgKl9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X2RldGFjaHN0YXRlKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRkZXRh
Y2hzdGF0ZSAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX2RldGFjaHN0YXRlKSB0aHJvdyAoKTsKCgpl
eHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzY2hlZHBhcmFtIChwdGhyZWFkX2F0dHJfdCAqX19y
ZXN0cmljdCBfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcGFyYW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVh
ZF9hdHRyX2dldHNjaGVkcGFyYW0gKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fcmVzdHJpY3QK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcmVzdHJp
Y3QgX19wYXJhbSkKICAgICB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRz
Y2hlZHBvbGljeSAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwgaW50IF9fcG9saWN5KQogICAgIHRo
cm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHNjaGVkcG9saWN5IChfX2NvbnN0
IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2F0dHIsIGludCAqX19yZXN0cmljdCBfX3BvbGljeSkKICAgICB0aHJvdyAo
KTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRpbmhlcml0c2NoZWQgKHB0aHJlYWRfYXR0
cl90ICpfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IF9faW5oZXJpdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0aW5oZXJp
dHNjaGVkIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyLCBpbnQgKl9fcmVzdHJpY3QgX19pbmhl
cml0KQogICAgIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHNjb3BlIChw
dGhyZWFkX2F0dHJfdCAqX19hdHRyLCBpbnQgX19zY29wZSkKICAgICB0aHJvdyAoKTsKCgpleHRl
cm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzY29wZSAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19y
ZXN0cmljdCBfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9f
cmVzdHJpY3QgX19zY29wZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3Nl
dGd1YXJkc2l6ZSAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgX19ndWFyZHNpemUpIHRocm93ICgpOwoKCmV4dGVybiBp
bnQgcHRocmVhZF9hdHRyX2dldGd1YXJkc2l6ZSAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19y
ZXN0cmljdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0ciwgc2l6
ZV90ICpfX3Jlc3RyaWN0IF9fZ3VhcmRzaXplKQogICAgIHRocm93ICgpOwoKCgoKCgpleHRlcm4g
aW50IHB0aHJlYWRfYXR0cl9zZXRzdGFja2FkZHIgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX19zdGFja2FkZHIpIHRo
cm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHN0YWNrYWRkciAoX19jb25zdCBw
dGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fYXR0ciwgdm9pZCAqKl9fcmVzdHJpY3QgX19zdGFja2FkZHIpCiAgICAgdGhyb3cg
KCk7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2sgKHB0aHJlYWRfYXR0cl90
ICpfX2F0dHIsIHZvaWQgKl9fc3RhY2thZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IF9fc3RhY2tzaXplKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRf
YXR0cl9nZXRzdGFjayAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdCBfX2F0dHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqX19yZXN0cmljdCBfX3N0
YWNrYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0
cmljdCBfX3N0YWNrc2l6ZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJf
c2V0c3RhY2tzaXplIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YWNrc2l6ZSkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2tzaXplIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpf
X3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyLCBz
aXplX3QgKl9fcmVzdHJpY3QgX19zdGFja3NpemUpCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBp
bnQgcHRocmVhZF9nZXRhdHRyX25wIChwdGhyZWFkX3QgX190aCwgcHRocmVhZF9hdHRyX3QgKl9f
YXR0cikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9zZXRzY2hlZHBhcmFtIChw
dGhyZWFkX3QgX190YXJnZXRfdGhyZWFkLCBpbnQgX19wb2xpY3ksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkKICAg
ICB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSAocHRocmVhZF90
IF9fdGFyZ2V0X3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAq
X19yZXN0cmljdCBfX3BvbGljeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzY2hlZF9wYXJhbSAqX19yZXN0cmljdCBfX3BhcmFtKQogICAgIHRocm93ICgpOwoKCgpl
eHRlcm4gaW50IHB0aHJlYWRfZ2V0Y29uY3VycmVuY3kgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVy
biBpbnQgcHRocmVhZF9zZXRjb25jdXJyZW5jeSAoaW50IF9fbGV2ZWwpIHRocm93ICgpOwoKCgoK
CgoKZXh0ZXJuIGludCBwdGhyZWFkX3lpZWxkICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJu
IGludCBwdGhyZWFkX211dGV4X2luaXQgKHB0aHJlYWRfbXV0ZXhfdCAqX19yZXN0cmljdCBfX211
dGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBwdGhyZWFkX211dGV4
YXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX211dGV4
X2F0dHIpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9kZXN0cm95IChwdGhy
ZWFkX211dGV4X3QgKl9fbXV0ZXgpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRl
eF90cnlsb2NrIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpIHRocm93ICgpOwoKCmV4dGVybiBp
bnQgcHRocmVhZF9tdXRleF9sb2NrIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpIHRocm93ICgp
OwoKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfdGltZWRsb2NrIChwdGhyZWFkX211dGV4X3Qg
Kl9fcmVzdHJpY3QgX19tdXRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19hYnN0aW1lKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFk
X211dGV4X3VubG9jayAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9pbml0IChwdGhyZWFkX211dGV4YXR0cl90ICpf
X2F0dHIpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSAo
cHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRyKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJl
YWRfbXV0ZXhhdHRyX2dldHBzaGFyZWQgKF9fY29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAqCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBfX2F0dHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0
IF9fcHNoYXJlZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9zZXRw
c2hhcmVkIChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fcHNoYXJlZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJu
IGludCBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlIChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0
dHIsIGludCBfX2tpbmQpCiAgICAgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4
YXR0cl9nZXR0eXBlIChfX2NvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fcmVzdHJpY3QKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHIsIGludCAqX19yZXN0cmlj
dCBfX2tpbmQpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfaW5pdCAo
cHRocmVhZF9jb25kX3QgKl9fcmVzdHJpY3QgX19jb25kLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IHB0aHJlYWRfY29uZGF0dHJfdCAqX19yZXN0cmljdAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbmRfYXR0cikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBw
dGhyZWFkX2NvbmRfZGVzdHJveSAocHRocmVhZF9jb25kX3QgKl9fY29uZCkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfc2lnbmFsIChwdGhyZWFkX2NvbmRfdCAqX19jb25kKSB0
aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF9icm9hZGNhc3QgKHB0aHJlYWRfY29u
ZF90ICpfX2NvbmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF93YWl0IChw
dGhyZWFkX2NvbmRfdCAqX19yZXN0cmljdCBfX2NvbmQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB0aHJlYWRfbXV0ZXhfdCAqX19yZXN0cmljdCBfX211dGV4KSB0aHJvdyAoKTsKCgoK
CgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF90aW1lZHdhaXQgKHB0aHJlYWRfY29uZF90ICpfX3Jl
c3RyaWN0IF9fY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdGhyZWFk
X211dGV4X3QgKl9fcmVzdHJpY3QgX19tdXRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fYWJzdGltZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50
IHB0aHJlYWRfY29uZGF0dHJfaW5pdCAocHRocmVhZF9jb25kYXR0cl90ICpfX2F0dHIpIHRocm93
ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9kZXN0cm95IChwdGhyZWFkX2NvbmRh
dHRyX3QgKl9fYXR0cikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2dl
dHBzaGFyZWQgKF9fY29uc3QgcHRocmVhZF9jb25kYXR0cl90ICoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19hdHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fcHNoYXJlZCkgdGhyb3cg
KCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX3NldHBzaGFyZWQgKHB0aHJlYWRfY29u
ZGF0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IF9fcHNoYXJlZCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2Nr
X2luaXQgKHB0aHJlYWRfcndsb2NrX3QgKl9fcmVzdHJpY3QgX19yd2xvY2ssCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqX19yZXN0
cmljdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cikgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja19kZXN0cm95IChwdGhyZWFkX3J3bG9ja190ICpfX3J3
bG9jaykgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja19yZGxvY2sgKHB0aHJl
YWRfcndsb2NrX3QgKl9fcndsb2NrKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcnds
b2NrX3RyeXJkbG9jayAocHRocmVhZF9yd2xvY2tfdCAqX19yd2xvY2spIHRocm93ICgpOwoKCgpl
eHRlcm4gaW50IHB0aHJlYWRfcndsb2NrX3RpbWVkcmRsb2NrIChwdGhyZWFkX3J3bG9ja190ICpf
X3Jlc3RyaWN0IF9fcndsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2Fic3RpbWUpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHB0
aHJlYWRfcndsb2NrX3dybG9jayAocHRocmVhZF9yd2xvY2tfdCAqX19yd2xvY2spIHRocm93ICgp
OwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfdHJ5d3Jsb2NrIChwdGhyZWFkX3J3bG9ja190
ICpfX3J3bG9jaykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfdGltZWR3
cmxvY2sgKHB0aHJlYWRfcndsb2NrX3QgKl9fcmVzdHJpY3QgX19yd2xvY2ssCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jl
c3RyaWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYWJzdGltZSkg
dGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfdW5sb2NrIChwdGhyZWFkX3J3
bG9ja190ICpfX3J3bG9jaykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9j
a2F0dHJfaW5pdCAocHRocmVhZF9yd2xvY2thdHRyX3QgKl9fYXR0cikgdGhyb3cgKCk7CgoKZXh0
ZXJuIGludCBwdGhyZWFkX3J3bG9ja2F0dHJfZGVzdHJveSAocHRocmVhZF9yd2xvY2thdHRyX3Qg
Kl9fYXR0cikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja2F0dHJfZ2V0cHNo
YXJlZCAoX19jb25zdCBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19hdHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19wc2hhcmVkKSB0aHJv
dyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9zZXRwc2hhcmVkIChwdGhyZWFk
X3J3bG9ja2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX19wc2hhcmVkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcnds
b2NrYXR0cl9nZXRraW5kX25wIChfX2NvbnN0IHB0aHJlYWRfcndsb2NrYXR0cl90ICpfX2F0dHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19wcmVmKSB0
aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9zZXRraW5kX25wIChwdGhy
ZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgX19wcmVmKSB0aHJvdyAoKTsKIyA1MDkgIi91c3IvaW5jbHVkZS9wdGhy
ZWFkLmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX3NwaW5faW5pdCAocHRocmVhZF9zcGlubG9ja190
ICpfX2xvY2ssIGludCBfX3BzaGFyZWQpCiAgICAgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhy
ZWFkX3NwaW5fZGVzdHJveSAocHRocmVhZF9zcGlubG9ja190ICpfX2xvY2spIHRocm93ICgpOwoK
CmV4dGVybiBpbnQgcHRocmVhZF9zcGluX2xvY2sgKHB0aHJlYWRfc3BpbmxvY2tfdCAqX19sb2Nr
KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfc3Bpbl90cnlsb2NrIChwdGhyZWFkX3Nw
aW5sb2NrX3QgKl9fbG9jaykgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3NwaW5fdW5s
b2NrIChwdGhyZWFkX3NwaW5sb2NrX3QgKl9fbG9jaykgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50
IHB0aHJlYWRfYmFycmllcl9pbml0IChwdGhyZWFkX2JhcnJpZXJfdCAqX19yZXN0cmljdCBfX2Jh
cnJpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgcHRocmVhZF9i
YXJyaWVyYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fYXR0ciwgdW5zaWduZWQgaW50IF9fY291bnQpIHRocm93ICgpOwoKZXh0ZXJuIGludCBwdGhy
ZWFkX2JhcnJpZXJfZGVzdHJveSAocHRocmVhZF9iYXJyaWVyX3QgKl9fYmFycmllcikgdGhyb3cg
KCk7CgpleHRlcm4gaW50IHB0aHJlYWRfYmFycmllcmF0dHJfaW5pdCAocHRocmVhZF9iYXJyaWVy
YXR0cl90ICpfX2F0dHIpIHRocm93ICgpOwoKZXh0ZXJuIGludCBwdGhyZWFkX2JhcnJpZXJhdHRy
X2Rlc3Ryb3kgKHB0aHJlYWRfYmFycmllcmF0dHJfdCAqX19hdHRyKSB0aHJvdyAoKTsKCmV4dGVy
biBpbnQgcHRocmVhZF9iYXJyaWVyYXR0cl9nZXRwc2hhcmVkIChfX2NvbnN0IHB0aHJlYWRfYmFy
cmllcmF0dHJfdCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X3Jlc3RyaWN0IF9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAqX19yZXN0cmljdCBfX3BzaGFyZWQpIHRocm93ICgpOwoKZXh0ZXJuIGludCBwdGhy
ZWFkX2JhcnJpZXJhdHRyX3NldHBzaGFyZWQgKHB0aHJlYWRfYmFycmllcmF0dHJfdCAqX19hdHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fcHNoYXJl
ZCkgdGhyb3cgKCk7CgpleHRlcm4gaW50IHB0aHJlYWRfYmFycmllcl93YWl0IChwdGhyZWFkX2Jh
cnJpZXJfdCAqX19iYXJyaWVyKSB0aHJvdyAoKTsKIyA1NTYgIi91c3IvaW5jbHVkZS9wdGhyZWFk
LmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX2tleV9jcmVhdGUgKHB0aHJlYWRfa2V5X3QgKl9fa2V5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fZGVzdHJfZnVuY3Rpb24p
ICh2b2lkICopKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfa2V5X2RlbGV0ZSAocHRo
cmVhZF9rZXlfdCBfX2tleSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3NldHNwZWNp
ZmljIChwdGhyZWFkX2tleV90IF9fa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3Qgdm9pZCAqX19wb2ludGVyKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCAqcHRocmVh
ZF9nZXRzcGVjaWZpYyAocHRocmVhZF9rZXlfdCBfX2tleSkgdGhyb3cgKCk7CiMgNTc2ICIvdXNy
L2luY2x1ZGUvcHRocmVhZC5oIiAzCmV4dGVybiBpbnQgcHRocmVhZF9vbmNlIChwdGhyZWFkX29u
Y2VfdCAqX19vbmNlX2NvbnRyb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19p
bml0X3JvdXRpbmUpICh2b2lkKSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9z
ZXRjYW5jZWxzdGF0ZSAoaW50IF9fc3RhdGUsIGludCAqX19vbGRzdGF0ZSkgdGhyb3cgKCk7CgoK
CmV4dGVybiBpbnQgcHRocmVhZF9zZXRjYW5jZWx0eXBlIChpbnQgX190eXBlLCBpbnQgKl9fb2xk
dHlwZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2NhbmNlbCAocHRocmVhZF90IF9f
dGhyZWFkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHB0aHJlYWRfdGVzdGNhbmNlbCAodm9p
ZCkgdGhyb3cgKCk7CiMgNjEwICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCmV4dGVybiB2b2lk
IF9wdGhyZWFkX2NsZWFudXBfcHVzaCAoc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyICpf
X2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19yb3V0
aW5lKSAodm9pZCAqKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpf
X2FyZykgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVhbnVwX3BvcCAo
c3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyICpfX2J1ZmZlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBfX2V4ZWN1dGUpIHRocm93ICgpOwojIDYzMSAiL3Vzci9p
bmNsdWRlL3B0aHJlYWQuaCIgMwpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVhbnVwX3B1c2hfZGVm
ZXIgKHN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlciAqX19idWZmZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fcm91dGluZSkgKHZvaWQgKiks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX19hcmcpIHRo
cm93ICgpOwojIDY0MiAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwpleHRlcm4gdm9pZCBfcHRo
cmVhZF9jbGVhbnVwX3BvcF9yZXN0b3JlIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIg
Kl9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
X19leGVjdXRlKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfZ2V0Y3B1Y2xvY2tp
ZCAocHRocmVhZF90IF9fdGhyZWFkX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xvY2tpZF90ICpfX2Nsb2NrX2lkKSB0aHJvdyAoKTsKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvc2lndGhyZWFkLmgiIDEgMwojIDMxICIvdXNyL2luY2x1ZGUvYml0cy9zaWd0aHJlYWQu
aCIgMwpleHRlcm4gaW50IHB0aHJlYWRfc2lnbWFzayAoaW50IF9faG93LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fbmV3bWFzaywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19vbGRt
YXNrKXRocm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9raWxsIChwdGhyZWFkX3QgX190aHJl
YWQsIGludCBfX3NpZ25vKSB0aHJvdyAoKTsKIyA2NTYgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgi
IDIgMwojIDY3MSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwpleHRlcm4gaW50IHB0aHJlYWRf
YXRmb3JrICh2b2lkICgqX19wcmVwYXJlKSAodm9pZCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKCpfX3BhcmVudCkgKHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICgqX19jaGlsZCkgKHZvaWQpKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHB0aHJlYWRf
a2lsbF9vdGhlcl90aHJlYWRzX25wICh2b2lkKSB0aHJvdyAoKTsKCn0KIyAzOCAiL3Vzci9pbmNs
dWRlL2crKy12My9pMzg2LXJlZGhhdC1saW51eC9iaXRzL2d0aHItZGVmYXVsdC5oIiAyIDMKCnR5
cGVkZWYgcHRocmVhZF9rZXlfdCBfX2d0aHJlYWRfa2V5X3Q7CnR5cGVkZWYgcHRocmVhZF9vbmNl
X3QgX19ndGhyZWFkX29uY2VfdDsKdHlwZWRlZiBwdGhyZWFkX211dGV4X3QgX19ndGhyZWFkX211
dGV4X3Q7CgoKCgoKCiNwcmFnbWEgd2VhayBwdGhyZWFkX29uY2UKI3ByYWdtYSB3ZWFrIHB0aHJl
YWRfa2V5X2NyZWF0ZQojcHJhZ21hIHdlYWsgcHRocmVhZF9rZXlfZGVsZXRlCiNwcmFnbWEgd2Vh
ayBwdGhyZWFkX2dldHNwZWNpZmljCiNwcmFnbWEgd2VhayBwdGhyZWFkX3NldHNwZWNpZmljCiNw
cmFnbWEgd2VhayBwdGhyZWFkX2NyZWF0ZQoKI3ByYWdtYSB3ZWFrIHB0aHJlYWRfbXV0ZXhfbG9j
awojcHJhZ21hIHdlYWsgcHRocmVhZF9tdXRleF90cnlsb2NrCiNwcmFnbWEgd2VhayBwdGhyZWFk
X211dGV4X3VubG9jawojIDgwICIvdXNyL2luY2x1ZGUvZysrLXYzL2kzODYtcmVkaGF0LWxpbnV4
L2JpdHMvZ3Roci1kZWZhdWx0LmgiIDMKc3RhdGljIHZvaWQgKl9fZ3RocmVhZF9hY3RpdmVfcHRy
ID0gKHZvaWQgKikgJnB0aHJlYWRfY3JlYXRlOwoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFk
X2FjdGl2ZV9wICh2b2lkKQp7CiAgcmV0dXJuIF9fZ3RocmVhZF9hY3RpdmVfcHRyICE9IDA7Cn0K
IyA0MzggIi91c3IvaW5jbHVkZS9nKystdjMvaTM4Ni1yZWRoYXQtbGludXgvYml0cy9ndGhyLWRl
ZmF1bHQuaCIgMwpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfb25jZSAoX19ndGhyZWFkX29u
Y2VfdCAqb25jZSwgdm9pZCAoKmZ1bmMpICh2b2lkKSkKewogIGlmIChfX2d0aHJlYWRfYWN0aXZl
X3AgKCkpCiAgICByZXR1cm4gcHRocmVhZF9vbmNlIChvbmNlLCBmdW5jKTsKICBlbHNlCiAgICBy
ZXR1cm4gLTE7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9rZXlfY3JlYXRlIChfX2d0
aHJlYWRfa2V5X3QgKmtleSwgdm9pZCAoKmR0b3IpICh2b2lkICopKQp7CiAgcmV0dXJuIHB0aHJl
YWRfa2V5X2NyZWF0ZSAoa2V5LCBkdG9yKTsKfQoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFk
X2tleV9kdG9yIChfX2d0aHJlYWRfa2V5X3Qga2V5LCB2b2lkICpwdHIpCnsKCiAgaWYgKHB0cikK
ICAgIHJldHVybiBwdGhyZWFkX3NldHNwZWNpZmljIChrZXksIDApOwogIGVsc2UKICAgIHJldHVy
biAwOwp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfa2V5X2RlbGV0ZSAoX19ndGhyZWFk
X2tleV90IGtleSkKewogIHJldHVybiBwdGhyZWFkX2tleV9kZWxldGUgKGtleSk7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCAqCl9fZ3RocmVhZF9nZXRzcGVjaWZpYyAoX19ndGhyZWFkX2tleV90IGtl
eSkKewogIHJldHVybiBwdGhyZWFkX2dldHNwZWNpZmljIChrZXkpOwp9CgpzdGF0aWMgaW5saW5l
IGludApfX2d0aHJlYWRfc2V0c3BlY2lmaWMgKF9fZ3RocmVhZF9rZXlfdCBrZXksIGNvbnN0IHZv
aWQgKnB0cikKewogIHJldHVybiBwdGhyZWFkX3NldHNwZWNpZmljIChrZXksIHB0cik7Cn0KCnN0
YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9tdXRleF9sb2NrIChfX2d0aHJlYWRfbXV0ZXhfdCAq
bXV0ZXgpCnsKICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wICgpKQogICAgcmV0dXJuIHB0aHJlYWRf
bXV0ZXhfbG9jayAobXV0ZXgpOwogIGVsc2UKICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5l
IGludApfX2d0aHJlYWRfbXV0ZXhfdHJ5bG9jayAoX19ndGhyZWFkX211dGV4X3QgKm11dGV4KQp7
CiAgaWYgKF9fZ3RocmVhZF9hY3RpdmVfcCAoKSkKICAgIHJldHVybiBwdGhyZWFkX211dGV4X3Ry
eWxvY2sgKG11dGV4KTsKICBlbHNlCiAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQK
X19ndGhyZWFkX211dGV4X3VubG9jayAoX19ndGhyZWFkX211dGV4X3QgKm11dGV4KQp7CiAgaWYg
KF9fZ3RocmVhZF9hY3RpdmVfcCAoKSkKICAgIHJldHVybiBwdGhyZWFkX211dGV4X3VubG9jayAo
bXV0ZXgpOwogIGVsc2UKICAgIHJldHVybiAwOwp9CiMgOTkgIi91c3IvaW5jbHVkZS9nKystdjMv
aTM4Ni1yZWRoYXQtbGludXgvYml0cy9ndGhyLmgiIDIgMwojIDM4ICIvdXNyL2luY2x1ZGUvZysr
LXYzL2kzODYtcmVkaGF0LWxpbnV4L2JpdHMvYysraW8uaCIgMiAzCgpuYW1lc3BhY2Ugc3RkCnsK
CiAgdHlwZWRlZiBsb25nIHN0cmVhbW9mZjsKICB0eXBlZGVmIHB0cmRpZmZfdCBzdHJlYW1zaXpl
OwoKICB0eXBlZGVmIHB0cmRpZmZfdCB3c3RyZWFtc2l6ZTsKCiAgdHlwZWRlZiBmcG9zX3QgX19j
X3N0cmVhbXBvczsKCiAgdHlwZWRlZiBfX2d0aHJlYWRfbXV0ZXhfdCBfX2NfbG9jazsKCgoKICB0
eXBlZGVmIEZJTEUgX19jX2ZpbGVfdHlwZTsKCgogIHN0cnVjdCBfX2lvc19mbGFncwogIHsKICAg
IHR5cGVkZWYgc2hvcnQgX19pbnRfdHlwZTsKCiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBf
U19ib29sYWxwaGEgPSAweDAwMDE7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19kZWMg
PSAweDAwMDI7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19maXhlZCA9IDB4MDAwNDsK
ICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2hleCA9IDB4MDAwODsKICAgIHN0YXRpYyBj
b25zdCBfX2ludF90eXBlIF9TX2ludGVybmFsID0gMHgwMDEwOwogICAgc3RhdGljIGNvbnN0IF9f
aW50X3R5cGUgX1NfbGVmdCA9IDB4MDAyMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9T
X29jdCA9IDB4MDA0MDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3JpZ2h0ID0gMHgw
MDgwOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1Nfc2NpZW50aWZpYyA9IDB4MDEwMDsK
ICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3Nob3diYXNlID0gMHgwMjAwOwogICAgc3Rh
dGljIGNvbnN0IF9faW50X3R5cGUgX1Nfc2hvd3BvaW50ID0gMHgwNDAwOwogICAgc3RhdGljIGNv
bnN0IF9faW50X3R5cGUgX1Nfc2hvd3BvcyA9IDB4MDgwMDsKICAgIHN0YXRpYyBjb25zdCBfX2lu
dF90eXBlIF9TX3NraXB3cyA9IDB4MTAwMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9T
X3VuaXRidWYgPSAweDIwMDA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU191cHBlcmNh
c2UgPSAweDQwMDA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19hZGp1c3RmaWVsZCA9
IDB4MDAyMCB8IDB4MDA4MCB8IDB4MDAxMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9T
X2Jhc2VmaWVsZCA9IDB4MDAwMiB8IDB4MDA0MCB8IDB4MDAwODsKICAgIHN0YXRpYyBjb25zdCBf
X2ludF90eXBlIF9TX2Zsb2F0ZmllbGQgPSAweDAxMDAgfCAweDAwMDQ7CgoKICAgIHN0YXRpYyBj
b25zdCBfX2ludF90eXBlIF9TX2JhZGJpdCA9IDB4MDE7CiAgICBzdGF0aWMgY29uc3QgX19pbnRf
dHlwZSBfU19lb2ZiaXQgPSAweDAyOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfZmFp
bGJpdCA9IDB4MDQ7CgoKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2FwcCA9IDB4MDE7
CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19hdGUgPSAweDAyOwogICAgc3RhdGljIGNv
bnN0IF9faW50X3R5cGUgX1NfYmluID0gMHgwNDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBl
IF9TX2luID0gMHgwODsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX291dCA9IDB4MTA7
CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU190cnVuYyA9IDB4MjA7CiAgfTsKfQojIDQw
ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvZnBvcy5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUv
ZysrLXYzL2JpdHMvc3RkX2N3Y2hhci5oIiAxIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2crKy12My9i
aXRzL3N0ZF9jd2NoYXIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvaTM4Ni1yZWRoYXQt
bGludXgvYml0cy9jKytjb25maWcuaCIgMSAzCiMgMzggIi91c3IvaW5jbHVkZS9nKystdjMvYml0
cy9zdGRfY3djaGFyLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0
ZGRlZi5oIiAxIDMKIyAzOSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jd2NoYXIuaCIg
MiAzCiMgNDIgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3djaGFyLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvd2NoYXIu
aCIgMiAzCiMgMzcgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgoKIyAxICIvdXNyL2xp
Yi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzMuMC4yL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwoj
IDQxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1s
aWIvaTM4Ni1yZWRoYXQtbGludXgvMy4wLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIg
MSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyA4NSAiL3Vzci9pbmNsdWRlL3dj
aGFyLmgiIDMKdHlwZWRlZiBfX21ic3RhdGVfdCBtYnN0YXRlX3Q7CiMgMTA1ICIvdXNyL2luY2x1
ZGUvd2NoYXIuaCIgMwpzdHJ1Y3QgdG07CgoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIHdjaGFyX3Qg
Kndjc2NweSAod2NoYXJfdCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3NyYykgdGhyb3cgKCk7CgpleHRlcm4g
d2NoYXJfdCAqd2NzbmNweSAod2NoYXJfdCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf
X24pCiAgICAgdGhyb3cgKCk7CgoKZXh0ZXJuIHdjaGFyX3QgKndjc2NhdCAod2NoYXJfdCAqX19y
ZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAq
X19yZXN0cmljdCBfX3NyYykgdGhyb3cgKCk7CgpleHRlcm4gd2NoYXJfdCAqd2NzbmNhdCAod2No
YXJfdCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGludCB3Y3NjbXAgKF9fY29uc3Qgd2NoYXJfdCAqX19zMSwgX19jb25zdCB3Y2hhcl90
ICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJu
IGludCB3Y3NuY21wIChfX2NvbnN0IHdjaGFyX3QgKl9fczEsIF9fY29uc3Qgd2NoYXJfdCAqX19z
Miwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKZXh0ZXJuIGludCB3Y3NjYXNlY21wIChfX2NvbnN0IHdjaGFyX3QgKl9fczEsIF9fY29uc3Qg
d2NoYXJfdCAqX19zMikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCB3Y3NuY2FzZWNtcCAoX19jb25z
dCB3Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9fczIsCiAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgojIDEgIi91c3IvaW5jbHVkZS94bG9jYWxl
LmgiIDEgMwojIDE0NCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKZXh0ZXJuIGludCBfX3dj
c2Nhc2VjbXBfbCAoX19jb25zdCB3Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9fczIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoK
ZXh0ZXJuIGludCBfX3djc25jYXNlY21wX2wgKF9fY29uc3Qgd2NoYXJfdCAqX19zMSwgX19jb25z
dCB3Y2hhcl90ICpfX3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwg
X19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHdjc2NvbGwgKF9fY29u
c3Qgd2NoYXJfdCAqX19zMSwgX19jb25zdCB3Y2hhcl90ICpfX3MyKSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIHNpemVfdCB3Y3N4ZnJtICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fczEsCiAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fczIsIHNpemVfdCBfX24p
IHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBfX3djc2NvbGxfbCAoX19jb25zdCB3Y2hhcl90
ICpfX3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgIF9f
bG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IF9fd2NzeGZybV9sICh3
Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9fczIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCmV4dGVybiB3
Y2hhcl90ICp3Y3NkdXAgKF9fY29uc3Qgd2NoYXJfdCAqX19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gd2NoYXJfdCAqd2NzY2hyIChfX2NvbnN0IHdj
aGFyX3QgKl9fd2NzLCB3Y2hhcl90IF9fd2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgpleHRlcm4gd2NoYXJfdCAqd2NzcmNociAoX19jb25zdCB3Y2hhcl90ICpf
X3djcywgd2NoYXJfdCBfX3djKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCgoKZXh0ZXJuIHdjaGFyX3QgKndjc2Nocm51bCAoX19jb25zdCB3Y2hhcl90ICpfX3Ms
IHdjaGFyX3QgX193YykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKCmV4dGVybiBzaXplX3Qgd2NzY3NwbiAoX19jb25zdCB3Y2hhcl90ICpfX3djcywgX19jb25z
dCB3Y2hhcl90ICpfX3JlamVjdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgpleHRlcm4gc2l6ZV90IHdjc3NwbiAoX19jb25zdCB3Y2hhcl90ICpfX3djcywgX19j
b25zdCB3Y2hhcl90ICpfX2FjY2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCmV4dGVybiB3Y2hhcl90ICp3Y3NwYnJrIChfX2NvbnN0IHdjaGFyX3QgKl9fd2Nz
LCBfX2NvbnN0IHdjaGFyX3QgKl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIHdjaGFyX3QgKndjc3N0ciAoX19jb25zdCB3Y2hhcl90ICpf
X2hheXN0YWNrLCBfX2NvbnN0IHdjaGFyX3QgKl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gd2NoYXJfdCAqd2Nzd2NzIChfX2NvbnN0
IHdjaGFyX3QgKl9faGF5c3RhY2ssIF9fY29uc3Qgd2NoYXJfdCAqX19uZWVkbGUpCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiB3Y2hhcl90ICp3Y3N0
b2sgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAg
d2NoYXJfdCAqKl9fcmVzdHJpY3QgX19wdHIpIHRocm93ICgpOwoKCmV4dGVybiBzaXplX3Qgd2Nz
bGVuIChfX2NvbnN0IHdjaGFyX3QgKl9fcykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKCmV4dGVybiBzaXplX3Qgd2NzbmxlbiAoX19jb25zdCB3Y2hhcl90ICpfX3MsIHNp
emVfdCBfX21heGxlbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKCmV4dGVybiB3Y2hhcl90ICp3bWVtY2hyIChfX2NvbnN0IHdjaGFyX3QgKl9fcywgd2NoYXJf
dCBfX2MsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgoKZXh0ZXJuIGludCB3bWVtY21wIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19z
MSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zMiwg
c2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl
eHRlcm4gd2NoYXJfdCAqd21lbWNweSAod2NoYXJfdCAqX19yZXN0cmljdCBfX3MxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fczIsIHNpemVf
dCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gd2NoYXJfdCAqd21lbW1vdmUgKHdjaGFyX3QgKl9f
czEsIF9fY29uc3Qgd2NoYXJfdCAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgpl
eHRlcm4gd2NoYXJfdCAqd21lbXNldCAod2NoYXJfdCAqX19zLCB3Y2hhcl90IF9fYywgc2l6ZV90
IF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gd2NoYXJfdCAqd21lbXBjcHkgKHdjaGFyX3QgKl9f
cmVzdHJpY3QgX19zMSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
d2ludF90IGJ0b3djIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB3Y3RvYiAod2lu
dF90IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgbWJzaW5pdCAoX19jb25zdCBtYnN0YXRl
X3QgKl9fcHMpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4g
c2l6ZV90IG1icnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2MsCiAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbiwKICAgICAg
ICAgICAgICAgICAgICAgICBtYnN0YXRlX3QgKl9fcCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHNpemVf
dCB3Y3J0b21iIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgd2NoYXJfdCBfX3djLAogICAgICAgICAg
ICAgICAgICAgICAgIG1ic3RhdGVfdCAqX19yZXN0cmljdCBfX3BzKSB0aHJvdyAoKTsKCgpleHRl
cm4gc2l6ZV90IF9fbWJybGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3Qg
X19uLAogICAgICAgICAgICAgICAgICAgICAgICBtYnN0YXRlX3QgKl9fcmVzdHJpY3QgX19wcykg
dGhyb3cgKCk7CmV4dGVybiBzaXplX3QgbWJybGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgbWJzdGF0ZV90ICpfX3Jlc3Ry
aWN0IF9fcHMpIHRocm93ICgpOwojIDI5NyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKZXh0ZXJu
IHNpemVfdCBtYnNydG93Y3MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKipfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19s
ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBtYnN0YXRlX3QgKl9fcmVzdHJpY3QgX19wcykg
dGhyb3cgKCk7CgoKCmV4dGVybiBzaXplX3Qgd2NzcnRvbWJzIChjaGFyICpfX3Jlc3RyaWN0IF9f
ZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICoqX19yZXN0cmlj
dCBfX3NyYywgc2l6ZV90IF9fbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgbWJzdGF0ZV90
ICpfX3Jlc3RyaWN0IF9fcHMpIHRocm93ICgpOwoKCgoKCmV4dGVybiBzaXplX3QgbWJzbnJ0b3dj
cyAod2NoYXJfdCAqX19yZXN0cmljdCBfX2RzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKipfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19ubWMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuLCBtYnN0YXRlX3QgKl9fcmVzdHJpY3QgX19wcykg
dGhyb3cgKCk7CgoKCmV4dGVybiBzaXplX3Qgd2NzbnJ0b21icyAoY2hhciAqX19yZXN0cmljdCBf
X2RzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKipfX3Jlc3Ry
aWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX253Yywgc2l6ZV90
IF9fbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgIG1ic3RhdGVfdCAqX19yZXN0cmljdCBf
X3BzKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCB3Y3dpZHRoICh3Y2hhcl90IF9fYykgdGhy
b3cgKCk7CgoKCmV4dGVybiBpbnQgd2Nzd2lkdGggKF9fY29uc3Qgd2NoYXJfdCAqX19zLCBzaXpl
X3QgX19uKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZG91YmxlIHdjc3RvZCAoX19jb25zdCB3Y2hh
cl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IHdjc3RvZiAoX19j
b25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgd2No
YXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUg
d2NzdG9sZCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsK
CgoKCgpleHRlcm4gbG9uZyBpbnQgd2NzdG9sIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCB3
Y3N0b3VsIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf
X2Jhc2UpCiAgICAgdGhyb3cgKCk7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcg
aW50IHdjc3RvcSAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
YmFzZSkKICAgICB0aHJvdyAoKTsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9u
ZyBsb25nIGludCB3Y3N0b3VxIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YmFzZSkgdGhyb3cgKCk7CgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCB3
Y3N0b2xsIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFz
ZSkKICAgICB0aHJvdyAoKTsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBs
b25nIGludCB3Y3N0b3VsbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YmFzZSkgdGhyb3cgKCk7CiMgNDA2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS94bG9jYWxlLmgiIDEgMwojIDQwNyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoK
CgpleHRlcm4gbG9uZyBpbnQgX193Y3N0b2xfbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2Nh
bGVfdCBfX2xvYykgdGhyb3cgKCk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX193Y3N0b3Vs
X2wgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBf
X2xvYykgdGhyb3cgKCk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fd2Nz
dG9sbF9sIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9j
KSB0aHJvdyAoKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg
X193Y3N0b3VsbF9sIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBfX2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gZG91Ymxl
IF9fd2NzdG9kX2wgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxl
X3QgX19sb2MpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgX193Y3N0b2ZfbCAoX19jb25z
dCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIHdj
aGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIHRocm93
ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIF9fd2NzdG9sZF9sIChfX2NvbnN0IHdjaGFyX3QgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3Qg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgoKCmV4dGVybiBkb3VibGUgX193Y3N0b2RfaW50
ZXJuYWwgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19n
cm91cCkKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IF9fd2NzdG9mX2ludGVybmFsIChfX2Nv
bnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICB0
aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fd2NzdG9sZF9pbnRlcm5hbCAoX19jb25zdCB3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3VwKSB0aHJvdyAoKTsKCgpleHRlcm4gbG9u
ZyBpbnQgX193Y3N0b2xfaW50ZXJuYWwgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFz
ZSwgaW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX193
Y3N0b3VsX2ludGVybmFsIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgoKCl9fZXh0ZW5zaW9uX18KZXh0
ZXJuIGxvbmcgbG9uZyBpbnQgX193Y3N0b2xsX2ludGVybmFsIChfX2NvbnN0IHdjaGFyX3QgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSB0aHJvdyAoKTsKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3djc3RvdWxsX2ludGVy
bmFsIChfX2NvbnN0IHdjaGFyX3QgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fZW5kcHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19i
YXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19ncm91cCkgdGhyb3cgKCk7CiMgNTI4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwpleHRl
cm4gd2NoYXJfdCAqd2NwY3B5ICh3Y2hhcl90ICpfX2Rlc3QsIF9fY29uc3Qgd2NoYXJfdCAqX19z
cmMpIHRocm93ICgpOwoKCgpleHRlcm4gd2NoYXJfdCAqd2NwbmNweSAod2NoYXJfdCAqX19kZXN0
LCBfX2NvbnN0IHdjaGFyX3QgKl9fc3JjLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpOwoKCgoK
CgoKZXh0ZXJuIGludCBmd2lkZSAoX19GSUxFICpfX2ZwLCBpbnQgX19tb2RlKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGludCBmd3ByaW50ZiAoX19GSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4u
LikKICAgICB0aHJvdyAoKSA7CgpleHRlcm4gaW50IHdwcmludGYgKF9fY29uc3Qgd2NoYXJfdCAq
X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgIHRocm93ICgpIDsKCmV4dGVybiBpbnQgc3dw
cmludGYgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uLAogICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICB0
aHJvdyAoKSA7CgoKZXh0ZXJuIGludCB2ZndwcmludGYgKF9fRklMRSAqX19yZXN0cmljdCBfX3Ms
CiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJv
dyAoKSA7CgpleHRlcm4gaW50IHZ3cHJpbnRmIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAg
IHRocm93ICgpIDsKCgpleHRlcm4gaW50IHZzd3ByaW50ZiAod2NoYXJfdCAqX19yZXN0cmljdCBf
X3MsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9f
cmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBf
X2FyZykKICAgICB0aHJvdyAoKSA7CgoKCmV4dGVybiBpbnQgZndzY2FuZiAoX19GSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgIHRocm93ICgpIDsKCmV4dGVybiBpbnQgd3NjYW5m
IChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICB0aHJvdyAo
KSA7CgpleHRlcm4gaW50IHN3c2NhbmYgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3Ms
CiAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LCAuLi4pCiAgICAgdGhyb3cgKCkgOwoKCgoKZXh0ZXJuIGludCB2ZndzY2FuZiAoX19GSUxFICpf
X3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2Fy
ZykKICAgICB0aHJvdyAoKSA7CgpleHRlcm4gaW50IHZ3c2NhbmYgKF9fY29uc3Qgd2NoYXJfdCAq
X19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBf
X2FyZykKICAgICB0aHJvdyAoKSA7CgpleHRlcm4gaW50IHZzd3NjYW5mIChfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0
IF9fYXJnKQogICAgIHRocm93ICgpIDsKCgoKCmV4dGVybiB3aW50X3QgZmdldHdjIChfX0ZJTEUg
Kl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBnZXR3YyAoX19GSUxFICpfX3N0cmVh
bSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHdpbnRfdCBnZXR3Y2hhciAodm9pZCkgdGhyb3cgKCk7CgoK
CmV4dGVybiB3aW50X3QgZnB1dHdjICh3Y2hhcl90IF9fd2MsIF9fRklMRSAqX19zdHJlYW0pIHRo
cm93ICgpOwpleHRlcm4gd2ludF90IHB1dHdjICh3Y2hhcl90IF9fd2MsIF9fRklMRSAqX19zdHJl
YW0pIHRocm93ICgpOwoKCmV4dGVybiB3aW50X3QgcHV0d2NoYXIgKHdjaGFyX3QgX193YykgdGhy
b3cgKCk7CgoKCgpleHRlcm4gd2NoYXJfdCAqZmdldHdzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
d3MsIGludCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgIF9fRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBmcHV0d3MgKF9fY29uc3Qgd2NoYXJfdCAq
X19yZXN0cmljdCBfX3dzLAogICAgICAgICAgICAgICAgICAgX19GSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHdpbnRfdCB1bmdldHdjICh3aW50X3QgX193Yywg
X19GSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHdpbnRfdCBnZXR3Y191bmxv
Y2tlZCAoX19GSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiB3aW50X3QgZ2V0d2NoYXJf
dW5sb2NrZWQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiB3aW50X3QgZmdldHdjX3VubG9ja2Vk
IChfX0ZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gd2ludF90IGZwdXR3Y191bmxv
Y2tlZCAod2NoYXJfdCBfX3djLCBfX0ZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IHdpbnRfdCBwdXR3Y191bmxvY2tlZCAod2NoYXJfdCBfX3djLCBfX0ZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBwdXR3Y2hhcl91bmxvY2tlZCAod2NoYXJfdCBfX3djKSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIHdjaGFyX3QgKmZnZXR3c191bmxvY2tlZCAod2NoYXJfdCAqX19y
ZXN0cmljdCBfX3dzLCBpbnQgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X0ZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZnB1dHdz
X3VubG9ja2VkIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX193cywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoK
CgoKCmV4dGVybiBzaXplX3Qgd2NzZnRpbWUgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLCBzaXpl
X3QgX19tYXhzaXplLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9f
cmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0
IHRtICpfX3Jlc3RyaWN0IF9fdHApIHRocm93ICgpOwojIDY4MCAiL3Vzci9pbmNsdWRlL3djaGFy
LmgiIDMKfQojIDQzICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2N3Y2hhci5oIiAyIDMK
IyA1NyAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jd2NoYXIuaCIgMwpuYW1lc3BhY2Ug
c3RkCnsKICB1c2luZyA6Om1ic3RhdGVfdDsKfQojIDEyMSAiL3Vzci9pbmNsdWRlL2crKy12My9i
aXRzL3N0ZF9jd2NoYXIuaCIgMwpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6OndpbnRfdDsKCiAg
dXNpbmcgOjpidG93YzsKICB1c2luZyA6OmZnZXR3YzsKICB1c2luZyA6OmZnZXR3czsKICB1c2lu
ZyA6OmZwdXR3YzsKICB1c2luZyA6OmZwdXR3czsKICB1c2luZyA6OmZ3aWRlOwogIHVzaW5nIDo6
ZndwcmludGY7CiAgdXNpbmcgOjpmd3NjYW5mOwogIHVzaW5nIDo6Z2V0d2M7CiAgdXNpbmcgOjpn
ZXR3Y2hhcjsKICB1c2luZyA6Om1icmxlbjsKICB1c2luZyA6Om1icnRvd2M7CiAgdXNpbmcgOjpt
YnNpbml0OwogIHVzaW5nIDo6bWJzcnRvd2NzOwogIHVzaW5nIDo6cHV0d2M7CiAgdXNpbmcgOjpw
dXR3Y2hhcjsKICB1c2luZyA6OnN3cHJpbnRmOwogIHVzaW5nIDo6c3dzY2FuZjsKICB1c2luZyA6
OnVuZ2V0d2M7CiAgdXNpbmcgOjp2ZndwcmludGY7CiAgdXNpbmcgOjp2ZndzY2FuZjsKICB1c2lu
ZyA6OnZzd3ByaW50ZjsKICB1c2luZyA6OnZzd3NjYW5mOwogIHVzaW5nIDo6dndwcmludGY7CiAg
dXNpbmcgOjp2d3NjYW5mOwogIHVzaW5nIDo6d2NydG9tYjsKICB1c2luZyA6Ondjc2NhdDsKICB1
c2luZyA6Ondjc2NtcDsKICB1c2luZyA6Ondjc2NvbGw7CiAgdXNpbmcgOjp3Y3NjcHk7CiAgdXNp
bmcgOjp3Y3Njc3BuOwogIHVzaW5nIDo6d2NzZnRpbWU7CiAgdXNpbmcgOjp3Y3NsZW47CiAgdXNp
bmcgOjp3Y3NuY2F0OwogIHVzaW5nIDo6d2NzbmNtcDsKICB1c2luZyA6Ondjc25jcHk7CiAgdXNp
bmcgOjp3Y3NydG9tYnM7CiAgdXNpbmcgOjp3Y3NzcG47CiAgdXNpbmcgOjp3Y3N0b2Q7CiAgdXNp
bmcgOjp3Y3N0b2Y7CiAgdXNpbmcgOjp3Y3N0b2s7CiAgdXNpbmcgOjp3Y3N0b2w7CiAgdXNpbmcg
Ojp3Y3N0b3VsOwogIHVzaW5nIDo6d2NzeGZybTsKICB1c2luZyA6OndjdG9iOwogIHVzaW5nIDo6
d21lbWNtcDsKICB1c2luZyA6OndtZW1jcHk7CiAgdXNpbmcgOjp3bWVtbW92ZTsKICB1c2luZyA6
OndtZW1zZXQ7CiAgdXNpbmcgOjp3cHJpbnRmOwogIHVzaW5nIDo6d3NjYW5mOwoKICB1c2luZyA6
Ondjc2NocjsKCiAgaW5saW5lIHdjaGFyX3QqCiAgd2NzY2hyKHdjaGFyX3QqIF9fcCwgd2NoYXJf
dCBfX2MpCiAgeyByZXR1cm4gd2NzY2hyKGNvbnN0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KF9fcCks
IF9fYyk7IH0KCiAgdXNpbmcgOjp3Y3NwYnJrOwoKICBpbmxpbmUgd2NoYXJfdCoKICB3Y3NwYnJr
KHdjaGFyX3QqIF9fczEsIHdjaGFyX3QqIF9fczIpCiAgeyByZXR1cm4gd2NzcGJyayhjb25zdF9j
YXN0PGNvbnN0IHdjaGFyX3QqPihfX3MxKSwgX19zMik7IH0KCiAgdXNpbmcgOjp3Y3NyY2hyOwoK
ICBpbmxpbmUgd2NoYXJfdCoKICB3Y3NyY2hyKHdjaGFyX3QqIF9fcCwgd2NoYXJfdCBfX2MpCiAg
eyByZXR1cm4gd2NzcmNocihjb25zdF9jYXN0PGNvbnN0IHdjaGFyX3QqPihfX3ApLCBfX2MpOyB9
CgogIHVzaW5nIDo6d2Nzc3RyOwoKICBpbmxpbmUgd2NoYXJfdCoKICB3Y3NzdHIod2NoYXJfdCog
X19zMSwgd2NoYXJfdCogX19zMikKICB7IHJldHVybiB3Y3NzdHIoY29uc3RfY2FzdDxjb25zdCB3
Y2hhcl90Kj4oX19zMSksIF9fczIpOyB9CgogIHVzaW5nIDo6d21lbWNocjsKCiAgaW5saW5lIHdj
aGFyX3QqCiAgd21lbWNocih3Y2hhcl90KiBfX3AsIHdjaGFyX3QgX19jLCBzaXplX3QgX19uKQog
IHsgcmV0dXJuIHdtZW1jaHIoY29uc3RfY2FzdDxjb25zdCB3Y2hhcl90Kj4oX19wKSwgX19jLCBf
X24pOyB9Cn0KCgoKCgoKCm5hbWVzcGFjZSBfX2dudV9jeHgKewogIHVzaW5nIDo6d2NzdG9sZDsK
ICB1c2luZyA6Ondjc3RvbGw7CiAgdXNpbmcgOjp3Y3N0b3VsbDsKfQoKbmFtZXNwYWNlIHN0ZAp7
CiAgdXNpbmcgX19nbnVfY3h4Ojp3Y3N0b2xkOwogIHVzaW5nIF9fZ251X2N4eDo6d2NzdG9sbDsK
ICB1c2luZyBfX2dudV9jeHg6Ondjc3RvdWxsOwp9CiMgNDEgIi91c3IvaW5jbHVkZS9nKystdjMv
Yml0cy9mcG9zLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1N0YXRlVD4KICAgIGNsYXNzIGZwb3MKICAgIHsKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYg
X1N0YXRlVCBfX3N0YXRlX3R5cGU7CgogICAgcHJpdmF0ZToKICAgICAgc3RyZWFtb2ZmIF9NX29m
ZjsKICAgICAgX19zdGF0ZV90eXBlIF9NX3N0OwoKICAgIHB1YmxpYzoKICAgICAgX19zdGF0ZV90
eXBlCiAgICAgIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gX01fc3Q7IH0KCiAgICAgIHZvaWQKICAg
ICAgc3RhdGUoX19zdGF0ZV90eXBlIF9fc3QpIHsgX01fc3QgPSBfX3N0OyB9CgoKCiAgICAgIGZw
b3MoKTogX01fb2ZmKHN0cmVhbW9mZigpKSwgX01fc3QoX19zdGF0ZV90eXBlKCkpIHsgfQoKICAg
ICAgZnBvcyhzdHJlYW1vZmYgX19vZmYsIF9fc3RhdGVfdHlwZSBfX3N0ID0gX19zdGF0ZV90eXBl
KCkpCiAgICAgIDogX01fb2ZmKF9fb2ZmKSwgX01fc3QoX19zdCkgeyB9CgogICAgICBvcGVyYXRv
ciBzdHJlYW1vZmYoKSBjb25zdCB7IHJldHVybiBfTV9vZmY7IH0KCiAgICAgIGZwb3MmCiAgICAg
IG9wZXJhdG9yKz0oc3RyZWFtb2ZmIF9fb2ZmKSB7IF9NX29mZiArPSBfX29mZjsgcmV0dXJuICp0
aGlzOyB9CgogICAgICBmcG9zJgogICAgICBvcGVyYXRvci09KHN0cmVhbW9mZiBfX29mZikgeyBf
TV9vZmYgLT0gX19vZmY7IHJldHVybiAqdGhpczsgfQoKICAgICAgZnBvcwogICAgICBvcGVyYXRv
cisoc3RyZWFtb2ZmIF9fb2ZmKQogICAgICB7CiAgICAgICAgZnBvcyBfX3QoKnRoaXMpOwogICAg
ICAgIF9fdCArPSBfX29mZjsKICAgICAgICByZXR1cm4gX190OwogICAgICB9CgogICAgICBmcG9z
CiAgICAgIG9wZXJhdG9yLShzdHJlYW1vZmYgX19vZmYpCiAgICAgIHsKICAgICAgICBmcG9zIF9f
dCgqdGhpcyk7CiAgICAgICAgX190IC09IF9fb2ZmOwogICAgICAgIHJldHVybiBfX3Q7CiAgICAg
IH0KCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBmcG9zJiBfX3BvcykgY29uc3QK
ICAgICAgeyByZXR1cm4gX01fb2ZmID09IF9fcG9zLl9NX29mZjsgfQoKICAgICAgYm9vbAogICAg
ICBvcGVyYXRvciE9KGNvbnN0IGZwb3MmIF9fcG9zKSBjb25zdAogICAgICB7IHJldHVybiBfTV9v
ZmYgIT0gX19wb3MuX01fb2ZmOyB9CgogICAgICBzdHJlYW1vZmYKICAgICAgX01fcG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBfTV9vZmY7IH0KCiAgICAgIHZvaWQKICAgICAgX01fcG9zaXRpb24o
c3RyZWFtb2ZmIF9fb2ZmKSB7IF9NX29mZiA9IF9fb2ZmOyB9CiAgICB9OwoKCiAgdHlwZWRlZiBm
cG9zPG1ic3RhdGVfdD4gc3RyZWFtcG9zOwoKICB0eXBlZGVmIGZwb3M8bWJzdGF0ZV90PiB3c3Ry
ZWFtcG9zOwoKfQojIDQyICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2lvc2Z3ZC5oIiAy
IDMKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvZnVuY3RleGNlcHQuaCIgMSAzCiMgMzQg
Ii91c3IvaW5jbHVkZS9nKystdjMvYml0cy9mdW5jdGV4Y2VwdC5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2crKy12My9leGNlcHRpb25fZGVmaW5lcy5oIiAxIDMKIyAzNSAiL3Vzci9pbmNsdWRlL2cr
Ky12My9iaXRzL2Z1bmN0ZXhjZXB0LmgiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CgogIHZvaWQKICBf
X3Rocm93X2JhZF9leGNlcHRpb24odm9pZCk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfYWxsb2Mo
dm9pZCk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfY2FzdCh2b2lkKTsKCiAgdm9pZAogIF9fdGhy
b3dfYmFkX3R5cGVpZCh2b2lkKTsKCgogIHZvaWQKICBfX3Rocm93X2xvZ2ljX2Vycm9yKGNvbnN0
IGNoYXIqIF9fcyk7CgogIHZvaWQKICBfX3Rocm93X2RvbWFpbl9lcnJvcihjb25zdCBjaGFyKiBf
X3MpOwoKICB2b2lkCiAgX190aHJvd19pbnZhbGlkX2FyZ3VtZW50KGNvbnN0IGNoYXIqIF9fcyk7
CgogIHZvaWQKICBfX3Rocm93X2xlbmd0aF9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lk
CiAgX190aHJvd19vdXRfb2ZfcmFuZ2UoY29uc3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9fdGhy
b3dfcnVudGltZV9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19yYW5n
ZV9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19vdmVyZmxvd19lcnJv
cihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd191bmRlcmZsb3dfZXJyb3IoY29u
c3QgY2hhciogX19zKTsKCgogIHZvaWQKICBfX3Rocm93X2lvc19mYWlsdXJlKGNvbnN0IGNoYXIq
IF9fcyk7Cn0KIyA0MyAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9pb3Nmd2QuaCIgMiAz
CgpuYW1lc3BhY2Ugc3RkCnsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2lvczsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0No
YXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJlYW1idWY7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3Mg
YmFzaWNfaXN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh
aXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19vc3RyZWFtOwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxf
Q2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2lvc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+LAogICAgICAgICAg
ICB0eXBlbmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19z
dHJpbmdidWY7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9
IGNoYXJfdHJhaXRzPF9DaGFyVD4sCiAgICAgICAgICAgdHlwZW5hbWUgX0FsbG9jID0gYWxsb2Nh
dG9yPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfaXN0cmluZ3N0cmVhbTsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwK
ICAgICAgICAgICB0eXBlbmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBjbGFz
cyBiYXNpY19vc3RyaW5nc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu
YW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+LAogICAgICAgICAgIHR5cGVuYW1lIF9B
bGxvYyA9IGFsbG9jYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX3N0cmluZ3N0cmVhbTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFp
dHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19maWxlYnVmOwoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNs
YXNzIGJhc2ljX2lmc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX29mc3RyZWFt
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3Ry
YWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2ZzdHJlYW07CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAg
Y2xhc3MgaXN0cmVhbWJ1Zl9pdGVyYXRvcjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBvc3RyZWFt
YnVmX2l0ZXJhdG9yOwoKCgogIGNsYXNzIGlvc19iYXNlOwoKCiAgdHlwZWRlZiBiYXNpY19pb3M8
Y2hhcj4gaW9zOwogIHR5cGVkZWYgYmFzaWNfc3RyZWFtYnVmPGNoYXI+IHN0cmVhbWJ1ZjsKICB0
eXBlZGVmIGJhc2ljX2lzdHJlYW08Y2hhcj4gaXN0cmVhbTsKICB0eXBlZGVmIGJhc2ljX29zdHJl
YW08Y2hhcj4gb3N0cmVhbTsKICB0eXBlZGVmIGJhc2ljX2lvc3RyZWFtPGNoYXI+IGlvc3RyZWFt
OwogIHR5cGVkZWYgYmFzaWNfc3RyaW5nYnVmPGNoYXI+IHN0cmluZ2J1ZjsKICB0eXBlZGVmIGJh
c2ljX2lzdHJpbmdzdHJlYW08Y2hhcj4gaXN0cmluZ3N0cmVhbTsKICB0eXBlZGVmIGJhc2ljX29z
dHJpbmdzdHJlYW08Y2hhcj4gb3N0cmluZ3N0cmVhbTsKICB0eXBlZGVmIGJhc2ljX3N0cmluZ3N0
cmVhbTxjaGFyPiBzdHJpbmdzdHJlYW07CiAgdHlwZWRlZiBiYXNpY19maWxlYnVmPGNoYXI+IGZp
bGVidWY7CiAgdHlwZWRlZiBiYXNpY19pZnN0cmVhbTxjaGFyPiBpZnN0cmVhbTsKICB0eXBlZGVm
IGJhc2ljX29mc3RyZWFtPGNoYXI+IG9mc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfZnN0cmVhbTxj
aGFyPiBmc3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19pb3M8d2NoYXJfdD4gd2lvczsKICB0eXBl
ZGVmIGJhc2ljX3N0cmVhbWJ1Zjx3Y2hhcl90PiB3c3RyZWFtYnVmOwogIHR5cGVkZWYgYmFzaWNf
aXN0cmVhbTx3Y2hhcl90PiB3aXN0cmVhbTsKICB0eXBlZGVmIGJhc2ljX29zdHJlYW08d2NoYXJf
dD4gd29zdHJlYW07CiAgdHlwZWRlZiBiYXNpY19pb3N0cmVhbTx3Y2hhcl90PiB3aW9zdHJlYW07
CiAgdHlwZWRlZiBiYXNpY19zdHJpbmdidWY8d2NoYXJfdD4gd3N0cmluZ2J1ZjsKICB0eXBlZGVm
IGJhc2ljX2lzdHJpbmdzdHJlYW08d2NoYXJfdD4gd2lzdHJpbmdzdHJlYW07CiAgdHlwZWRlZiBi
YXNpY19vc3RyaW5nc3RyZWFtPHdjaGFyX3Q+IHdvc3RyaW5nc3RyZWFtOwogIHR5cGVkZWYgYmFz
aWNfc3RyaW5nc3RyZWFtPHdjaGFyX3Q+IHdzdHJpbmdzdHJlYW07CiAgdHlwZWRlZiBiYXNpY19m
aWxlYnVmPHdjaGFyX3Q+IHdmaWxlYnVmOwogIHR5cGVkZWYgYmFzaWNfaWZzdHJlYW08d2NoYXJf
dD4gd2lmc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfb2ZzdHJlYW08d2NoYXJfdD4gd29mc3RyZWFt
OwogIHR5cGVkZWYgYmFzaWNfZnN0cmVhbTx3Y2hhcl90PiB3ZnN0cmVhbTsKCn0KIyA2MyAiL3Vz
ci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9pdGVyYXRvci5oIiAyIDMKIyAxICIvdXNyL2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2VfdHlwZXMuaCIgMSAzCiMgNjkgIi91c3Iv
aW5jbHVkZS9nKystdjMvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV90eXBlcy5oIiAzCgojIDEgIi91
c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0ZGRlZi5oIiAxIDMKIyA3MSAiL3Vzci9pbmNs
dWRlL2crKy12My9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDIgMwoKCm5hbWVzcGFj
ZSBzdGQKewoKc3RydWN0IGlucHV0X2l0ZXJhdG9yX3RhZyB7fTsKc3RydWN0IG91dHB1dF9pdGVy
YXRvcl90YWcge307CnN0cnVjdCBmb3J3YXJkX2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBpbnB1dF9p
dGVyYXRvcl90YWcge307CnN0cnVjdCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyA6IHB1Ymxp
YyBmb3J3YXJkX2l0ZXJhdG9yX3RhZyB7fTsKc3RydWN0IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3Jf
dGFnIDogcHVibGljIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIHt9OwoKCgoKCgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IHN0cnVjdCBpbnB1dF9pdGVyYXRvciB7CiAg
dHlwZWRlZiBpbnB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBf
VHAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIF9EaXN0YW5jZSBkaWZmZXJlbmNlX3R5cGU7CiAgdHlw
ZWRlZiBfVHAqIHBvaW50ZXI7CiAgdHlwZWRlZiBfVHAmIHJlZmVyZW5jZTsKfTsKCnN0cnVjdCBv
dXRwdXRfaXRlcmF0b3IgewogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9j
YXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHZvaWQgZGlmZmVy
ZW5jZV90eXBlOwogIHR5cGVkZWYgdm9pZCBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCByZWZlcmVu
Y2U7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IHN0cnVjdCBmb3J3
YXJkX2l0ZXJhdG9yIHsKICB0eXBlZGVmIGZvcndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2Nh
dGVnb3J5OwogIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdGFuY2UgZGlm
ZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiBwb2ludGVyOwogIHR5cGVkZWYgX1RwJiByZWZl
cmVuY2U7Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPiBzdHJ1Y3Qg
YmlkaXJlY3Rpb25hbF9pdGVyYXRvciB7CiAgdHlwZWRlZiBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9y
X3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwogIHR5cGVk
ZWYgX0Rpc3RhbmNlIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIF9UcCogcG9pbnRlcjsKICB0
eXBlZGVmIF9UcCYgcmVmZXJlbmNlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rp
c3RhbmNlPiBzdHJ1Y3QgcmFuZG9tX2FjY2Vzc19pdGVyYXRvciB7CiAgdHlwZWRlZiByYW5kb21f
YWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCB2YWx1
ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3RhbmNlIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIF9U
cCogcG9pbnRlcjsKICB0eXBlZGVmIF9UcCYgcmVmZXJlbmNlOwp9OwoKdGVtcGxhdGUgPGNsYXNz
IF9DYXRlZ29yeSwgY2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2UgPSBwdHJkaWZmX3QsCiAgICAg
ICAgICBjbGFzcyBfUG9pbnRlciA9IF9UcCosIGNsYXNzIF9SZWZlcmVuY2UgPSBfVHAmPgpzdHJ1
Y3QgaXRlcmF0b3IgewogIHR5cGVkZWYgX0NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5
cGVkZWYgX1RwIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdGFuY2UgZGlmZmVyZW5jZV90eXBl
OwogIHR5cGVkZWYgX1BvaW50ZXIgcG9pbnRlcjsKICB0eXBlZGVmIF9SZWZlcmVuY2UgcmVmZXJl
bmNlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRvcj4Kc3RydWN0IGl0ZXJhdG9yX3RyYWl0
cyB7CiAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJh
dG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjp2YWx1ZV90eXBlIHZh
bHVlX3R5cGU7CiAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OmRpZmZlcmVuY2VfdHlwZSBk
aWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnBvaW50ZXIgcG9p
bnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6cmVmZXJlbmNlIHJlZmVyZW5jZTsK
fTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBpdGVyYXRvcl90cmFpdHM8X1RwKj4gewog
IHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAg
dHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5
cGU7CiAgdHlwZWRlZiBfVHAqIHBvaW50ZXI7CiAgdHlwZWRlZiBfVHAmIHJlZmVyZW5jZTsKfTsK
CnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBpdGVyYXRvcl90cmFpdHM8Y29uc3QgX1RwKj4g
ewogIHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7
CiAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNl
X3R5cGU7CiAgdHlwZWRlZiBjb25zdCBfVHAqIHBvaW50ZXI7CiAgdHlwZWRlZiBjb25zdCBfVHAm
IHJlZmVyZW5jZTsKfTsKIyAxNzIgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfaXRlcmF0
b3JfYmFzZV90eXBlcy5oIiAzCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4KaW5saW5lIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5Cl9faXRlcmF0b3JfY2F0
ZWdvcnkoY29uc3QgX0l0ZXImKQp7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X0l0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeSBfQ2F0ZWdvcnk7CiAgcmV0dXJuIF9DYXRlZ29yeSgp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGUqCl9fZGlzdGFuY2VfdHlwZShjb25zdCBfSXRlciYp
CnsKICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6
ZGlmZmVyZW5jZV90eXBlKj4oMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4KaW5saW5lIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OnZhbHVlX3R5cGUqCl9fdmFsdWVfdHlwZShj
b25zdCBfSXRlciYpCnsKICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9JdGVyPjo6dmFsdWVfdHlwZSo+KDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+Cmlu
bGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeQpp
dGVyYXRvcl9jYXRlZ29yeShjb25zdCBfSXRlciYgX19pKSB7IHJldHVybiBfX2l0ZXJhdG9yX2Nh
dGVnb3J5KF9faSk7IH0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGUqCmRpc3RhbmNlX3R5cGUoY29u
c3QgX0l0ZXImIF9faSkgeyByZXR1cm4gX19kaXN0YW5jZV90eXBlKF9faSk7IH0KCnRlbXBsYXRl
IDxjbGFzcyBfSXRlcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OnZh
bHVlX3R5cGUqCnZhbHVlX3R5cGUoY29uc3QgX0l0ZXImIF9faSkgeyByZXR1cm4gX192YWx1ZV90
eXBlKF9faSk7IH0KCn0KIyA2NCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9pdGVyYXRv
ci5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2Vf
ZnVuY3MuaCIgMSAzCiMgNjkgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfaXRlcmF0b3Jf
YmFzZV9mdW5jcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL2NvbmNlcHRfY2hl
Y2suaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9jb25jZXB0X2NoZWNrLmgi
IDMKCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12My9pMzg2LXJlZGhhdC1saW51eC9iaXRzL2MrK2Nv
bmZpZy5oIiAxIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL2NvbmNlcHRfY2hlY2su
aCIgMiAzCiMgNzAgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV9m
dW5jcy5oIiAyIDMKCm5hbWVzcGFjZSBzdGQKewoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJ
dGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBfX2Rpc3RhbmNlKF9JbnB1dEl0
ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAg
ICAgICBfRGlzdGFuY2UmIF9fbiwgaW5wdXRfaXRlcmF0b3JfdGFnKQp7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK
ICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpIHsgKytfX2ZpcnN0OyArK19fbjsgfQp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CmlubGlu
ZSB2b2lkIF9fZGlzdGFuY2UoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAg
ICAgICAgICAgICBfRGlzdGFuY2UmIF9fbiwgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpCnsK
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgX19uICs9IF9fbGFzdCAtIF9fZmlyc3Q7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUg
dm9pZCBkaXN0YW5jZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAg
ICBfSW5wdXRJdGVyYXRvciBfX2xhc3QsIF9EaXN0YW5jZSYgX19uKQp7CgogIF9fZGlzdGFuY2Uo
X19maXJzdCwgX19sYXN0LCBfX24sIGl0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCl9fZGlzdGFuY2UoX0lucHV0SXRl
cmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LCBpbnB1dF9pdGVyYXRvcl90YWcp
CnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwogIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRv
cj46OmRpZmZlcmVuY2VfdHlwZSBfX24gPSAwOwogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkg
ewogICAgKytfX2ZpcnN0OyArK19fbjsKICB9CiAgcmV0dXJuIF9fbjsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfUmFuZG9tQWNjZXNzSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKX19kaXN0YW5jZShfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwK
ICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKewoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDsKICByZXR1cm4gX19sYXN0IC0gX19maXJzdDsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9JbnB1dEl0ZXJhdG9yPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0
ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCmRpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3Qs
IF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKewoKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry
YWl0czxfSW5wdXRJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5CiAgICBfQ2F0ZWdvcnk7CiAg
cmV0dXJuIF9fZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfQ2F0ZWdvcnkoKSk7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIF9fYWR2
YW5jZShfSW5wdXRJdGVyJiBfX2ksIF9EaXN0YW5jZSBfX24sIGlucHV0X2l0ZXJhdG9yX3RhZykK
ewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDsKICB3aGlsZSAoX19uLS0pICsrX19pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0Jp
ZGlyZWN0aW9uYWxJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBfX2FkdmFu
Y2UoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciYgX19pLCBfRGlzdGFuY2UgX19uLAogICAgICAgICAg
ICAgICAgICAgICAgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcpCnsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CiAgaWYgKF9fbiA+IDApCiAgICB3aGlsZSAoX19uLS0pICsrX19pOwogIGVs
c2UKICAgIHdoaWxlIChfX24rKykgLS1fX2k7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgX19hZHZhbmNlKF9SYW5k
b21BY2Nlc3NJdGVyYXRvciYgX19pLCBfRGlzdGFuY2UgX19uLAogICAgICAgICAgICAgICAgICAg
ICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpCnsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CiAgX19pICs9IF9fbjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yLCBjbGFz
cyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIGFkdmFuY2UoX0lucHV0SXRlcmF0b3ImIF9faSwgX0Rp
c3RhbmNlIF9fbikKewoKICBfX2FkdmFuY2UoX19pLCBfX24sIGl0ZXJhdG9yX2NhdGVnb3J5KF9f
aSkpOwp9Cgp9CiMgNjUgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfaXRlcmF0b3IuaCIg
MiAzCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9pdGVyYXRvci5oIiAxIDMKIyA2
MyAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCm5hbWVzcGFjZSBz
dGQKewoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CmNsYXNzIGJhY2tfaW5zZXJ0X2l0ZXJh
dG9yIHsKcHJvdGVjdGVkOgogIF9Db250YWluZXIqIGNvbnRhaW5lcjsKcHVibGljOgogIHR5cGVk
ZWYgX0NvbnRhaW5lciBjb250YWluZXJfdHlwZTsKICB0eXBlZGVmIG91dHB1dF9pdGVyYXRvcl90
YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7CiAgdHlwZWRl
ZiB2b2lkIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHZvaWQgcG9pbnRlcjsKICB0eXBlZGVm
IHZvaWQgcmVmZXJlbmNlOwoKICBleHBsaWNpdCBiYWNrX2luc2VydF9pdGVyYXRvcihfQ29udGFp
bmVyJiBfX3gpIDogY29udGFpbmVyKCZfX3gpIHt9CiAgYmFja19pbnNlcnRfaXRlcmF0b3I8X0Nv
bnRhaW5lcj4mCiAgb3BlcmF0b3I9KGNvbnN0IHR5cGVuYW1lIF9Db250YWluZXI6OnZhbHVlX3R5
cGUmIF9fdmFsdWUpIHsKICAgIGNvbnRhaW5lci0+cHVzaF9iYWNrKF9fdmFsdWUpOwogICAgcmV0
dXJuICp0aGlzOwogIH0KICBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYgb3BlcmF0
b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KICBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVy
PiYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9CiAgYmFja19pbnNlcnRfaXRlcmF0b3I8
X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQp9OwoKdGVtcGxh
dGUgPGNsYXNzIF9Db250YWluZXI+CmlubGluZSBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFp
bmVyPiBiYWNrX2luc2VydGVyKF9Db250YWluZXImIF9feCkgewogIHJldHVybiBiYWNrX2luc2Vy
dF9pdGVyYXRvcjxfQ29udGFpbmVyPihfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5l
cj4KY2xhc3MgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgogIF9Db250YWluZXIq
IGNvbnRhaW5lcjsKcHVibGljOgogIHR5cGVkZWYgX0NvbnRhaW5lciBjb250YWluZXJfdHlwZTsK
ICB0eXBlZGVmIG91dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRl
ZiB2b2lkIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB2b2lkIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBl
ZGVmIHZvaWQgcG9pbnRlcjsKICB0eXBlZGVmIHZvaWQgcmVmZXJlbmNlOwoKICBleHBsaWNpdCBm
cm9udF9pbnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5lciYgX194KSA6IGNvbnRhaW5lcigmX194KSB7
fQogIGZyb250X2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYKICBvcGVyYXRvcj0oY29uc3Qg
dHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlwZSYgX192YWx1ZSkgewogICAgY29udGFpbmVy
LT5wdXNoX2Zyb250KF9fdmFsdWUpOwogICAgcmV0dXJuICp0aGlzOwogIH0KICBmcm9udF9pbnNl
cnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CiAg
ZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVyYXRvcisrKCkgeyByZXR1cm4g
KnRoaXM7IH0KICBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKyso
aW50KSB7IHJldHVybiAqdGhpczsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+Cmlu
bGluZSBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4gZnJvbnRfaW5zZXJ0ZXIoX0Nv
bnRhaW5lciYgX194KSB7CiAgcmV0dXJuIGZyb250X2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVy
PihfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KY2xhc3MgaW5zZXJ0X2l0ZXJh
dG9yIHsKcHJvdGVjdGVkOgogIF9Db250YWluZXIqIGNvbnRhaW5lcjsKICB0eXBlbmFtZSBfQ29u
dGFpbmVyOjppdGVyYXRvciBpdGVyOwpwdWJsaWM6CiAgdHlwZWRlZiBfQ29udGFpbmVyIGNvbnRh
aW5lcl90eXBlOwogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29y
eTsKICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHZvaWQgZGlmZmVyZW5jZV90
eXBlOwogIHR5cGVkZWYgdm9pZCBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCByZWZlcmVuY2U7Cgog
IGluc2VydF9pdGVyYXRvcihfQ29udGFpbmVyJiBfX3gsIHR5cGVuYW1lIF9Db250YWluZXI6Oml0
ZXJhdG9yIF9faSkKICAgIDogY29udGFpbmVyKCZfX3gpLCBpdGVyKF9faSkge30KICBpbnNlcnRf
aXRlcmF0b3I8X0NvbnRhaW5lcj4mCiAgb3BlcmF0b3I9KGNvbnN0IHR5cGVuYW1lIF9Db250YWlu
ZXI6OnZhbHVlX3R5cGUmIF9fdmFsdWUpIHsKICAgIGl0ZXIgPSBjb250YWluZXItPmluc2VydChp
dGVyLCBfX3ZhbHVlKTsKICAgICsraXRlcjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgaW5zZXJ0
X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQogIGlu
c2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9
CiAgaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4g
KnRoaXM7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyLCBjbGFzcyBfSXRlcmF0b3I+
CmlubGluZQppbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4gaW5zZXJ0ZXIoX0NvbnRhaW5lciYg
X194LCBfSXRlcmF0b3IgX19pKQp7CiAgdHlwZWRlZiB0eXBlbmFtZSBfQ29udGFpbmVyOjppdGVy
YXRvciBfX2l0ZXI7CiAgcmV0dXJuIGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPihfX3gsIF9f
aXRlcihfX2kpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IsIGNs
YXNzIF9UcCwgY2xhc3MgX1JlZmVyZW5jZSA9IF9UcCYsCiAgICAgICAgICBjbGFzcyBfRGlzdGFu
Y2UgPSBwdHJkaWZmX3Q+CmNsYXNzIHJldmVyc2VfYmlkaXJlY3Rpb25hbF9pdGVyYXRvciB7CiAg
dHlwZWRlZiByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3I8X0JpZGlyZWN0aW9uYWxJdGVy
YXRvciwgX1RwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SZWZl
cmVuY2UsIF9EaXN0YW5jZT4gX1NlbGY7CnByb3RlY3RlZDoKICBfQmlkaXJlY3Rpb25hbEl0ZXJh
dG9yIGN1cnJlbnQ7CnB1YmxpYzoKICB0eXBlZGVmIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFn
IGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBf
RGlzdGFuY2UgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiBwb2ludGVyOwogIHR5cGVk
ZWYgX1JlZmVyZW5jZSByZWZlcmVuY2U7CgogIHJldmVyc2VfYmlkaXJlY3Rpb25hbF9pdGVyYXRv
cigpIHt9CiAgZXhwbGljaXQgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yKF9CaWRpcmVj
dGlvbmFsSXRlcmF0b3IgX194KQogICAgOiBjdXJyZW50KF9feCkge30KICBfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yIGJhc2UoKSBjb25zdCB7IHJldHVybiBjdXJyZW50OyB9CiAgX1JlZmVyZW5jZSBv
cGVyYXRvciooKSBjb25zdCB7CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIF9fdG1wID0gY3Vy
cmVudDsKICAgIHJldHVybiAqLS1fX3RtcDsKICB9CiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29u
c3QgeyByZXR1cm4gJihvcGVyYXRvciooKSk7IH0KICBfU2VsZiYgb3BlcmF0b3IrKygpIHsKICAg
IC0tY3VycmVudDsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3IrKyhpbnQp
IHsKICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7CiAgICAtLWN1cnJlbnQ7CiAgICByZXR1cm4gX190
bXA7CiAgfQogIF9TZWxmJiBvcGVyYXRvci0tKCkgewogICAgKytjdXJyZW50OwogICAgcmV0dXJu
ICp0aGlzOwogIH0KICBfU2VsZiBvcGVyYXRvci0tKGludCkgewogICAgX1NlbGYgX190bXAgPSAq
dGhpczsKICAgICsrY3VycmVudDsKICAgIHJldHVybiBfX3RtcDsKICB9Cn07Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0JpSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfUmVmLCBjbGFzcyBfRGlzdGFuY2U+Cmlu
bGluZSBib29sIG9wZXJhdG9yPT0oCiAgICBjb25zdCByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRl
cmF0b3I8X0JpSXRlciwgX1RwLCBfUmVmLCBfRGlzdGFuY2U+JiBfX3gsCiAgICBjb25zdCByZXZl
cnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3I8X0JpSXRlciwgX1RwLCBfUmVmLCBfRGlzdGFuY2U+
JiBfX3kpCnsKICByZXR1cm4gX194LmJhc2UoKSA9PSBfX3kuYmFzZSgpOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0JpSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfUmVmLCBjbGFzcyBfRGlzdGFuY2U+Cmlu
bGluZSBib29sIG9wZXJhdG9yIT0oCiAgICBjb25zdCByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRl
cmF0b3I8X0JpSXRlciwgX1RwLCBfUmVmLCBfRGlzdGFuY2U+JiBfX3gsCiAgICBjb25zdCByZXZl
cnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3I8X0JpSXRlciwgX1RwLCBfUmVmLCBfRGlzdGFuY2U+
JiBfX3kpCnsKICByZXR1cm4gIShfX3ggPT0gX195KTsKfQojIDIyMiAiL3Vzci9pbmNsdWRlL2cr
Ky12My9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CmNs
YXNzIHJldmVyc2VfaXRlcmF0b3IKewpwcm90ZWN0ZWQ6CiAgX0l0ZXJhdG9yIGN1cnJlbnQ7CnB1
YmxpYzoKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjppdGVy
YXRvcl9jYXRlZ29yeQogICAgICAgICAgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogICAgICAgICAgdmFs
dWVfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+Ojpk
aWZmZXJlbmNlX3R5cGUKICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+Ojpwb2ludGVyCiAgICAgICAgICBwb2ludGVy
OwogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnJlZmVyZW5j
ZQogICAgICAgICAgcmVmZXJlbmNlOwoKICB0eXBlZGVmIF9JdGVyYXRvciBpdGVyYXRvcl90eXBl
OwogIHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+IF9TZWxmOwoKcHVibGljOgog
IHJldmVyc2VfaXRlcmF0b3IoKSB7fQogIGV4cGxpY2l0IHJldmVyc2VfaXRlcmF0b3IoaXRlcmF0
b3JfdHlwZSBfX3gpIDogY3VycmVudChfX3gpIHt9CgogIHJldmVyc2VfaXRlcmF0b3IoY29uc3Qg
X1NlbGYmIF9feCkgOiBjdXJyZW50KF9feC5jdXJyZW50KSB7fQogIHRlbXBsYXRlIDxjbGFzcyBf
SXRlcj4KICByZXZlcnNlX2l0ZXJhdG9yKGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXI+JiBf
X3gpCiAgICA6IGN1cnJlbnQoX194LmJhc2UoKSkge30KCiAgaXRlcmF0b3JfdHlwZSBiYXNlKCkg
Y29uc3QgeyByZXR1cm4gY3VycmVudDsgfQogIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7
CiAgICBfSXRlcmF0b3IgX190bXAgPSBjdXJyZW50OwogICAgcmV0dXJuICotLV9fdG1wOwogIH0K
ICBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQoK
ICBfU2VsZiYgb3BlcmF0b3IrKygpIHsKICAgIC0tY3VycmVudDsKICAgIHJldHVybiAqdGhpczsK
ICB9CiAgX1NlbGYgb3BlcmF0b3IrKyhpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7CiAg
ICAtLWN1cnJlbnQ7CiAgICByZXR1cm4gX190bXA7CiAgfQogIF9TZWxmJiBvcGVyYXRvci0tKCkg
ewogICAgKytjdXJyZW50OwogICAgcmV0dXJuICp0aGlzOwogIH0KICBfU2VsZiBvcGVyYXRvci0t
KGludCkgewogICAgX1NlbGYgX190bXAgPSAqdGhpczsKICAgICsrY3VycmVudDsKICAgIHJldHVy
biBfX3RtcDsKICB9CgogIF9TZWxmIG9wZXJhdG9yKyhkaWZmZXJlbmNlX3R5cGUgX19uKSBjb25z
dCB7CiAgICByZXR1cm4gX1NlbGYoY3VycmVudCAtIF9fbik7CiAgfQogIF9TZWxmJiBvcGVyYXRv
cis9KGRpZmZlcmVuY2VfdHlwZSBfX24pIHsKICAgIGN1cnJlbnQgLT0gX19uOwogICAgcmV0dXJu
ICp0aGlzOwogIH0KICBfU2VsZiBvcGVyYXRvci0oZGlmZmVyZW5jZV90eXBlIF9fbikgY29uc3Qg
ewogICAgcmV0dXJuIF9TZWxmKGN1cnJlbnQgKyBfX24pOwogIH0KICBfU2VsZiYgb3BlcmF0b3It
PShkaWZmZXJlbmNlX3R5cGUgX19uKSB7CiAgICBjdXJyZW50ICs9IF9fbjsKICAgIHJldHVybiAq
dGhpczsKICB9CiAgcmVmZXJlbmNlIG9wZXJhdG9yW10oZGlmZmVyZW5jZV90eXBlIF9fbikgY29u
c3QgeyByZXR1cm4gKigqdGhpcyArIF9fbik7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0
b3I+CmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0
b3I+JiBfX3gsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxf
SXRlcmF0b3I+JiBfX3kpIHsKICByZXR1cm4gX194LmJhc2UoKSA9PSBfX3kuYmFzZSgpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgppbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgcmV2
ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsCiAgICAgICAgICAgICAgICAgICAgICBjb25z
dCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJldHVybiBfX3kuYmFzZSgp
IDwgX194LmJhc2UoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRvcj4KaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwKICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkg
ewogIHJldHVybiAhKF9feCA9PSBfX3kpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgpp
bmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBf
X3gsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRv
cj4mIF9feSkgewogIHJldHVybiBfX3kgPCBfX3g7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0
b3I+CmlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0
b3I+JiBfX3gsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxf
SXRlcmF0b3I+JiBfX3kpIHsKICByZXR1cm4gIShfX3kgPCBfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX0l0ZXJhdG9yPgppbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IHJldmVyc2VfaXRlcmF0
b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9p
dGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpIHsKICByZXR1cm4gIShfX3ggPCBfX3kpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgppbmxpbmUgdHlwZW5hbWUgcmV2ZXJzZV9pdGVyYXRvcjxf
SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKb3BlcmF0b3ItKGNvbnN0IHJldmVyc2VfaXRlcmF0
b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRl
cmF0b3I+JiBfX3kpIHsKICByZXR1cm4gX195LmJhc2UoKSAtIF9feC5iYXNlKCk7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfSXRlcmF0b3I+CmlubGluZSByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4K
b3BlcmF0b3IrKHR5cGVuYW1lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5j
ZV90eXBlIF9fbiwKICAgICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYg
X194KSB7CiAgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPihfX3guYmFzZSgpIC0g
X19uKTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsCiAgICAgICAgICBjbGFzcyBfQ2hhclQgPSBj
aGFyLCBjbGFzcyBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwKICAgICAgICAgIGNsYXNz
IF9EaXN0ID0gcHRyZGlmZl90PgpjbGFzcyBpc3RyZWFtX2l0ZXJhdG9yIHsKcHVibGljOgogIHR5
cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsKICB0eXBlZGVmIF9UcmFpdHMgdHJhaXRzX3R5cGU7CiAg
dHlwZWRlZiBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gaXN0cmVhbV90eXBlOwoKICB0
eXBlZGVmIGlucHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9U
cCB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3QgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYg
Y29uc3QgX1RwKiBwb2ludGVyOwogIHR5cGVkZWYgY29uc3QgX1RwJiByZWZlcmVuY2U7CgogIGlz
dHJlYW1faXRlcmF0b3IoKSA6IF9NX3N0cmVhbSgwKSwgX01fb2soZmFsc2UpIHt9CiAgaXN0cmVh
bV9pdGVyYXRvcihpc3RyZWFtX3R5cGUmIF9fcykgOiBfTV9zdHJlYW0oJl9fcykgeyBfTV9yZWFk
KCk7IH0KCiAgcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIF9NX3ZhbHVlOyB9
CiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVyYXRvciooKSk7IH0K
CiAgaXN0cmVhbV9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsKICAgIF9NX3JlYWQoKTsKICAgIHJl
dHVybiAqdGhpczsKICB9CiAgaXN0cmVhbV9pdGVyYXRvciBvcGVyYXRvcisrKGludCkgewogICAg
aXN0cmVhbV9pdGVyYXRvciBfX3RtcCA9ICp0aGlzOwogICAgX01fcmVhZCgpOwogICAgcmV0dXJu
IF9fdG1wOwogIH0KCiAgYm9vbCBfTV9lcXVhbChjb25zdCBpc3RyZWFtX2l0ZXJhdG9yJiBfX3gp
IGNvbnN0CiAgICB7IHJldHVybiAoX01fb2sgPT0gX194Ll9NX29rKSAmJiAoIV9NX29rIHx8IF9N
X3N0cmVhbSA9PSBfX3guX01fc3RyZWFtKTsgfQoKcHJpdmF0ZToKICBpc3RyZWFtX3R5cGUqIF9N
X3N0cmVhbTsKICBfVHAgX01fdmFsdWU7CiAgYm9vbCBfTV9vazsKCiAgdm9pZCBfTV9yZWFkKCkg
ewogICAgX01fb2sgPSAoX01fc3RyZWFtICYmICpfTV9zdHJlYW0pID8gdHJ1ZSA6IGZhbHNlOwog
ICAgaWYgKF9NX29rKSB7CiAgICAgICpfTV9zdHJlYW0gPj4gX01fdmFsdWU7CiAgICAgIF9NX29r
ID0gKl9NX3N0cmVhbSA/IHRydWUgOiBmYWxzZTsKICAgIH0KICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9EaXN0PgppbmxpbmUg
Ym9vbApvcGVyYXRvcj09KGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfQ2hhclQsIF9UcmFp
dHMsIF9EaXN0PiYgX194LAogICAgICAgICAgIGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8X1RwLCBf
Q2hhclQsIF9UcmFpdHMsIF9EaXN0PiYgX195KSB7CiAgcmV0dXJuIF9feC5fTV9lcXVhbChfX3kp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNs
YXNzIF9EaXN0PgppbmxpbmUgYm9vbApvcGVyYXRvciE9KGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8
X1RwLCBfQ2hhclQsIF9UcmFpdHMsIF9EaXN0PiYgX194LAogICAgICAgICAgIGNvbnN0IGlzdHJl
YW1faXRlcmF0b3I8X1RwLCBfQ2hhclQsIF9UcmFpdHMsIF9EaXN0PiYgX195KSB7CiAgcmV0dXJu
ICFfX3guX01fZXF1YWwoX195KTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsCiAgICAgICAgICBj
bGFzcyBfQ2hhclQgPSBjaGFyLCBjbGFzcyBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+
CmNsYXNzIG9zdHJlYW1faXRlcmF0b3IgewpwdWJsaWM6CiAgdHlwZWRlZiBfQ2hhclQgY2hhcl90
eXBlOwogIHR5cGVkZWYgX1RyYWl0cyB0cmFpdHNfdHlwZTsKICB0eXBlZGVmIGJhc2ljX29zdHJl
YW08X0NoYXJULCBfVHJhaXRzPiBvc3RyZWFtX3R5cGU7CgogIHR5cGVkZWYgb3V0cHV0X2l0ZXJh
dG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsKICB0
eXBlZGVmIHZvaWQgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdm9pZCBwb2ludGVyOwogIHR5
cGVkZWYgdm9pZCByZWZlcmVuY2U7CgogIG9zdHJlYW1faXRlcmF0b3Iob3N0cmVhbV90eXBlJiBf
X3MpIDogX01fc3RyZWFtKCZfX3MpLCBfTV9zdHJpbmcoMCkge30KICBvc3RyZWFtX2l0ZXJhdG9y
KG9zdHJlYW1fdHlwZSYgX19zLCBjb25zdCBfQ2hhclQqIF9fYykKICAgIDogX01fc3RyZWFtKCZf
X3MpLCBfTV9zdHJpbmcoX19jKSB7fQogIG9zdHJlYW1faXRlcmF0b3I8X1RwPiYgb3BlcmF0b3I9
KGNvbnN0IF9UcCYgX192YWx1ZSkgewogICAgKl9NX3N0cmVhbSA8PCBfX3ZhbHVlOwogICAgaWYg
KF9NX3N0cmluZykgKl9NX3N0cmVhbSA8PCBfTV9zdHJpbmc7CiAgICByZXR1cm4gKnRoaXM7CiAg
fQogIG9zdHJlYW1faXRlcmF0b3I8X1RwPiYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0K
ICBvc3RyZWFtX2l0ZXJhdG9yPF9UcD4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQog
IG9zdHJlYW1faXRlcmF0b3I8X1RwPiYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9
CnByaXZhdGU6CiAgb3N0cmVhbV90eXBlKiBfTV9zdHJlYW07CiAgY29uc3QgX0NoYXJUKiBfTV9z
dHJpbmc7Cn07CiMgNDQ2ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2l0ZXJhdG9yLmgi
IDMKdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29udGFpbmVyPgpjbGFz
cyBfX25vcm1hbF9pdGVyYXRvcgogIDogcHVibGljIGl0ZXJhdG9yPGl0ZXJhdG9yX3RyYWl0czxf
SXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeSwKICAgICAgICAgICAgICAgICAgICBpdGVyYXRv
cl90cmFpdHM8X0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwKICAgICAgICAgICAgICAgICAgICBpdGVy
YXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlLAogICAgICAgICAgICAgICAg
ICAgIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+Ojpwb2ludGVyLAogICAgICAgICAgICAgICAg
ICAgIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjpyZWZlcmVuY2U+CnsKCnByb3RlY3RlZDoK
ICBfSXRlcmF0b3IgX01fY3VycmVudDsKCnB1YmxpYzoKICB0eXBlZGVmIF9fbm9ybWFsX2l0ZXJh
dG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4gbm9ybWFsX2l0ZXJhdG9yX3R5cGU7CiAgdHlwZWRl
ZiBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPiBfX3RyYWl0c190eXBlOwogIHR5cGVkZWYgdHlw
ZW5hbWUgX190cmFpdHNfdHlwZTo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7
CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3RyYWl0c190eXBlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7
CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3RyYWl0c190eXBlOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVy
ZW5jZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6cG9pbnRlciBwb2lu
dGVyOwogIHR5cGVkZWYgdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6cmVmZXJlbmNlIHJlZmVyZW5j
ZTsKCiAgX19ub3JtYWxfaXRlcmF0b3IoKSA6IF9NX2N1cnJlbnQoX0l0ZXJhdG9yKCkpIHsgfQoK
ICBleHBsaWNpdCBfX25vcm1hbF9pdGVyYXRvcihjb25zdCBfSXRlcmF0b3ImIF9faSkgOiBfTV9j
dXJyZW50KF9faSkgeyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcj4KICBpbmxpbmUgX19u
b3JtYWxfaXRlcmF0b3IoY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXIsIF9Db250YWluZXI+
JiBfX2kpCiAgICA6IF9NX2N1cnJlbnQoX19pLmJhc2UoKSkgeyB9CgoKICByZWZlcmVuY2UKICBv
cGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqX01fY3VycmVudDsgfQoKICBwb2ludGVyCiAgb3Bl
cmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIF9NX2N1cnJlbnQ7IH0KCiAgbm9ybWFsX2l0ZXJhdG9y
X3R5cGUmCiAgb3BlcmF0b3IrKygpIHsgKytfTV9jdXJyZW50OyByZXR1cm4gKnRoaXM7IH0KCiAg
bm9ybWFsX2l0ZXJhdG9yX3R5cGUKICBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gX19ub3JtYWxf
aXRlcmF0b3IoX01fY3VycmVudCsrKTsgfQoKCiAgbm9ybWFsX2l0ZXJhdG9yX3R5cGUmCiAgb3Bl
cmF0b3ItLSgpIHsgLS1fTV9jdXJyZW50OyByZXR1cm4gKnRoaXM7IH0KCiAgbm9ybWFsX2l0ZXJh
dG9yX3R5cGUKICBvcGVyYXRvci0tKGludCkgeyByZXR1cm4gX19ub3JtYWxfaXRlcmF0b3IoX01f
Y3VycmVudC0tKTsgfQoKCiAgcmVmZXJlbmNlCiAgb3BlcmF0b3JbXShjb25zdCBkaWZmZXJlbmNl
X3R5cGUmIF9fbikgY29uc3QKICB7IHJldHVybiBfTV9jdXJyZW50W19fbl07IH0KCiAgbm9ybWFs
X2l0ZXJhdG9yX3R5cGUmCiAgb3BlcmF0b3IrPShjb25zdCBkaWZmZXJlbmNlX3R5cGUmIF9fbikK
ICB7IF9NX2N1cnJlbnQgKz0gX19uOyByZXR1cm4gKnRoaXM7IH0KCiAgbm9ybWFsX2l0ZXJhdG9y
X3R5cGUKICBvcGVyYXRvcisoY29uc3QgZGlmZmVyZW5jZV90eXBlJiBfX24pIGNvbnN0CiAgeyBy
ZXR1cm4gX19ub3JtYWxfaXRlcmF0b3IoX01fY3VycmVudCArIF9fbik7IH0KCiAgbm9ybWFsX2l0
ZXJhdG9yX3R5cGUmCiAgb3BlcmF0b3ItPShjb25zdCBkaWZmZXJlbmNlX3R5cGUmIF9fbikKICB7
IF9NX2N1cnJlbnQgLT0gX19uOyByZXR1cm4gKnRoaXM7IH0KCiAgbm9ybWFsX2l0ZXJhdG9yX3R5
cGUKICBvcGVyYXRvci0oY29uc3QgZGlmZmVyZW5jZV90eXBlJiBfX24pIGNvbnN0CiAgeyByZXR1
cm4gX19ub3JtYWxfaXRlcmF0b3IoX01fY3VycmVudCAtIF9fbik7IH0KCiAgZGlmZmVyZW5jZV90
eXBlCiAgb3BlcmF0b3ItKGNvbnN0IG5vcm1hbF9pdGVyYXRvcl90eXBlJiBfX2kpIGNvbnN0CiAg
eyByZXR1cm4gX01fY3VycmVudCAtIF9faS5fTV9jdXJyZW50OyB9CgogIGNvbnN0IF9JdGVyYXRv
ciYKICBiYXNlKCkgY29uc3QgeyByZXR1cm4gX01fY3VycmVudDsgfQp9OwoKCgp0ZW1wbGF0ZTx0
eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSLCB0eXBlbmFtZSBfQ29udGFp
bmVyPgppbmxpbmUgYm9vbApvcGVyYXRvcj09KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVy
YXRvckwsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVy
YXRvcjxfSXRlcmF0b3JSLCBfQ29udGFpbmVyPiYgX19yaHMpCnsgcmV0dXJuIF9fbGhzLmJhc2Uo
KSA9PSBfX3Jocy5iYXNlKCk7IH0KCnRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVu
YW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+CmlubGluZSBib29sCm9wZXJhdG9y
IT0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhz
LAogICAgICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvclIsIF9Db250YWlu
ZXI+JiBfX3JocykKeyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7IH0KCgoKdGVtcGxhdGU8dHlw
ZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUiwgdHlwZW5hbWUgX0NvbnRhaW5l
cj4KaW5saW5lIGJvb2wKb3BlcmF0b3I8KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRv
ckwsIF9Db250YWluZXI+JiBfX2xocywKICAgICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9y
PF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykKeyByZXR1cm4gX19saHMuYmFzZSgpIDwg
X19yaHMuYmFzZSgpOyB9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBf
SXRlcmF0b3JSLCB0eXBlbmFtZSBfQ29udGFpbmVyPgppbmxpbmUgYm9vbApvcGVyYXRvcj4oY29u
c3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAg
ICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yUiwgX0NvbnRhaW5lcj4mIF9f
cmhzKQp7IHJldHVybiBfX3JocyA8IF9fbGhzOyB9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0
b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSLCB0eXBlbmFtZSBfQ29udGFpbmVyPgppbmxpbmUgYm9v
bApvcGVyYXRvcjw9KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvckwsIF9Db250YWlu
ZXI+JiBfX2xocywKICAgICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JS
LCBfQ29udGFpbmVyPiYgX19yaHMpCnsgcmV0dXJuICEoX19yaHMgPCBfX2xocyk7IH0KCnRlbXBs
YXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9D
b250YWluZXI+CmlubGluZSBib29sCm9wZXJhdG9yPj0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8
X0l0ZXJhdG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgICAgIGNvbnN0IF9fbm9ybWFs
X2l0ZXJhdG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykKeyByZXR1cm4gIShfX2xo
cyA8IF9fcmhzKTsgfQoKdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29u
dGFpbmVyPgppbmxpbmUgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPgpv
cGVyYXRvcisodHlwZW5hbWUgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVy
Pjo6ZGlmZmVyZW5jZV90eXBlIF9fbiwKICAgICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9y
PF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9faSkKeyByZXR1cm4gX19ub3JtYWxfaXRlcmF0b3I8
X0l0ZXJhdG9yLCBfQ29udGFpbmVyPihfX2kuYmFzZSgpICsgX19uKTsgfQoKfQojIDY2ICIvdXNy
L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2l0ZXJhdG9yLmgiIDIgMwojIDYzICIvdXNyL2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RkX251bWVyaWMuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12
My9iaXRzL3N0bF9mdW5jdGlvbi5oIiAxIDMKIyA2MyAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRz
L3N0bF9mdW5jdGlvbi5oIiAzCm5hbWVzcGFjZSBzdGQKewoKdGVtcGxhdGUgPGNsYXNzIF9Bcmcs
IGNsYXNzIF9SZXN1bHQ+CnN0cnVjdCB1bmFyeV9mdW5jdGlvbiB7CiAgdHlwZWRlZiBfQXJnIGFy
Z3VtZW50X3R5cGU7CiAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBlOwp9OwoKdGVtcGxhdGUg
PGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMiwgY2xhc3MgX1Jlc3VsdD4Kc3RydWN0IGJpbmFyeV9m
dW5jdGlvbiB7CiAgdHlwZWRlZiBfQXJnMSBmaXJzdF9hcmd1bWVudF90eXBlOwogIHR5cGVkZWYg
X0FyZzIgc2Vjb25kX2FyZ3VtZW50X3R5cGU7CiAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBl
Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IHBsdXMgOiBwdWJsaWMgYmluYXJ5X2Z1
bmN0aW9uPF9UcCxfVHAsX1RwPiB7CiAgX1RwIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNv
bnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggKyBfX3k7IH0KfTsKCnRlbXBsYXRlIDxj
bGFzcyBfVHA+CnN0cnVjdCBtaW51cyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxf
VHA+IHsKICBfVHAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNv
bnN0IHsgcmV0dXJuIF9feCAtIF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0
IG11bHRpcGxpZXMgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsX1RwPiB7CiAgX1Rw
IG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVy
biBfX3ggKiBfX3k7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBkaXZpZGVzIDog
cHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLF9UcD4gewogIF9UcCBvcGVyYXRvcigpKGNv
bnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194IC8gX195OyB9
Cn07CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHA+IGlubGluZSBfVHAgaWRlbnRpdHlfZWxlbWVudChw
bHVzPF9UcD4pIHsKICByZXR1cm4gX1RwKDApOwp9CnRlbXBsYXRlIDxjbGFzcyBfVHA+IGlubGlu
ZSBfVHAgaWRlbnRpdHlfZWxlbWVudChtdWx0aXBsaWVzPF9UcD4pIHsKICByZXR1cm4gX1RwKDEp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbW9kdWx1cyA6IHB1YmxpYyBiaW5hcnlf
ZnVuY3Rpb248X1RwLF9UcCxfVHA+CnsKICBfVHAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwg
Y29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCAlIF9feTsgfQp9OwoKdGVtcGxhdGUg
PGNsYXNzIF9UcD4Kc3RydWN0IG5lZ2F0ZSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsX1Rw
Pgp7CiAgX1RwIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNvbnN0IHsgcmV0dXJuIC1fX3g7
IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBlcXVhbF90byA6IHB1YmxpYyBiaW5h
cnlfZnVuY3Rpb248X1RwLF9UcCxib29sPgp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UcCYg
X194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ID09IF9feTsgfQp9OwoKdGVt
cGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IG5vdF9lcXVhbF90byA6IHB1YmxpYyBiaW5hcnlfZnVu
Y3Rpb248X1RwLF9UcCxib29sPgp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBj
b25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ICE9IF9feTsgfQp9OwoKdGVtcGxhdGUg
PGNsYXNzIF9UcD4Kc3RydWN0IGdyZWF0ZXIgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxf
VHAsYm9vbD4KewogIGJvb2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBf
X3kpIGNvbnN0IHsgcmV0dXJuIF9feCA+IF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4K
c3RydWN0IGxlc3MgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4KewogIGJv
b2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0
dXJuIF9feCA8IF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGdyZWF0ZXJf
ZXF1YWwgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4KewogIGJvb2wgb3Bl
cmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9f
eCA+PSBfX3k7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBsZXNzX2VxdWFsIDog
cHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+CnsKICBib29sIG9wZXJhdG9yKCko
Y29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggPD0gX195
OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbG9naWNhbF9hbmQgOiBwdWJsaWMg
YmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4KewogIGJvb2wgb3BlcmF0b3IoKShjb25zdCBf
VHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCAmJiBfX3k7IH0KfTsK
CnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBsb2dpY2FsX29yIDogcHVibGljIGJpbmFyeV9m
dW5jdGlvbjxfVHAsX1RwLGJvb2w+CnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gs
IGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggfHwgX195OyB9Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbG9naWNhbF9ub3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248
X1RwLGJvb2w+CnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNvbnN0IHsgcmV0
dXJuICFfX3g7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfUHJlZGljYXRlPgpjbGFzcyB1bmFyeV9u
ZWdhdGUKICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfUHJlZGljYXRlOjphcmd1
bWVudF90eXBlLCBib29sPiB7CnByb3RlY3RlZDoKICBfUHJlZGljYXRlIF9NX3ByZWQ7CnB1Ymxp
YzoKICBleHBsaWNpdCB1bmFyeV9uZWdhdGUoY29uc3QgX1ByZWRpY2F0ZSYgX194KSA6IF9NX3By
ZWQoX194KSB7fQogIGJvb2wgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBfUHJlZGljYXRlOjph
cmd1bWVudF90eXBlJiBfX3gpIGNvbnN0IHsKICAgIHJldHVybiAhX01fcHJlZChfX3gpOwogIH0K
fTsKCnRlbXBsYXRlIDxjbGFzcyBfUHJlZGljYXRlPgppbmxpbmUgdW5hcnlfbmVnYXRlPF9QcmVk
aWNhdGU+Cm5vdDEoY29uc3QgX1ByZWRpY2F0ZSYgX19wcmVkKQp7CiAgcmV0dXJuIHVuYXJ5X25l
Z2F0ZTxfUHJlZGljYXRlPihfX3ByZWQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4K
Y2xhc3MgYmluYXJ5X25lZ2F0ZQogIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBf
UHJlZGljYXRlOjpmaXJzdF9hcmd1bWVudF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlbmFtZSBfUHJlZGljYXRlOjpzZWNvbmRfYXJndW1lbnRfdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbD4gewpwcm90ZWN0ZWQ6CiAgX1ByZWRpY2F0ZSBfTV9wcmVkOwpw
dWJsaWM6CiAgZXhwbGljaXQgYmluYXJ5X25lZ2F0ZShjb25zdCBfUHJlZGljYXRlJiBfX3gpIDog
X01fcHJlZChfX3gpIHt9CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IHR5cGVuYW1lIF9QcmVkaWNh
dGU6OmZpcnN0X2FyZ3VtZW50X3R5cGUmIF9feCwKICAgICAgICAgICAgICAgICAgY29uc3QgdHlw
ZW5hbWUgX1ByZWRpY2F0ZTo6c2Vjb25kX2FyZ3VtZW50X3R5cGUmIF9feSkgY29uc3QKICB7CiAg
ICByZXR1cm4gIV9NX3ByZWQoX194LCBfX3kpOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfUHJl
ZGljYXRlPgppbmxpbmUgYmluYXJ5X25lZ2F0ZTxfUHJlZGljYXRlPgpub3QyKGNvbnN0IF9QcmVk
aWNhdGUmIF9fcHJlZCkKewogIHJldHVybiBiaW5hcnlfbmVnYXRlPF9QcmVkaWNhdGU+KF9fcHJl
ZCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfT3BlcmF0aW9uPgpjbGFzcyBiaW5kZXIxc3QKICA6IHB1
YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRf
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBfT3BlcmF0aW9uOjpyZXN1
bHRfdHlwZT4gewpwcm90ZWN0ZWQ6CiAgX09wZXJhdGlvbiBvcDsKICB0eXBlbmFtZSBfT3BlcmF0
aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlIHZhbHVlOwpwdWJsaWM6CiAgYmluZGVyMXN0KGNvbnN0
IF9PcGVyYXRpb24mIF9feCwKICAgICAgICAgICAgY29uc3QgdHlwZW5hbWUgX09wZXJhdGlvbjo6
Zmlyc3RfYXJndW1lbnRfdHlwZSYgX195KQogICAgICA6IG9wKF9feCksIHZhbHVlKF9feSkge30K
ICB0eXBlbmFtZSBfT3BlcmF0aW9uOjpyZXN1bHRfdHlwZQogIG9wZXJhdG9yKCkoY29uc3QgdHlw
ZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUmIF9feCkgY29uc3QgewogICAg
cmV0dXJuIG9wKHZhbHVlLCBfX3gpOwogIH0KCgogIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3Vs
dF90eXBlCiAgb3BlcmF0b3IoKSh0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRf
dHlwZSYgX194KSBjb25zdCB7CiAgICByZXR1cm4gb3AodmFsdWUsIF9feCk7CiAgfQoKfTsKCnRl
bXBsYXRlIDxjbGFzcyBfT3BlcmF0aW9uLCBjbGFzcyBfVHA+CmlubGluZSBiaW5kZXIxc3Q8X09w
ZXJhdGlvbj4KYmluZDFzdChjb25zdCBfT3BlcmF0aW9uJiBfX2ZuLCBjb25zdCBfVHAmIF9feCkK
ewogIHR5cGVkZWYgdHlwZW5hbWUgX09wZXJhdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSBfQXJn
MV90eXBlOwogIHJldHVybiBiaW5kZXIxc3Q8X09wZXJhdGlvbj4oX19mbiwgX0FyZzFfdHlwZShf
X3gpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRpb24+CmNsYXNzIGJpbmRlcjJuZAogIDog
cHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50
X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVz
dWx0X3R5cGU+IHsKcHJvdGVjdGVkOgogIF9PcGVyYXRpb24gb3A7CiAgdHlwZW5hbWUgX09wZXJh
dGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgdmFsdWU7CnB1YmxpYzoKICBiaW5kZXIybmQoY29u
c3QgX09wZXJhdGlvbiYgX194LAogICAgICAgICAgICBjb25zdCB0eXBlbmFtZSBfT3BlcmF0aW9u
OjpzZWNvbmRfYXJndW1lbnRfdHlwZSYgX195KQogICAgICA6IG9wKF9feCksIHZhbHVlKF9feSkg
e30KICB0eXBlbmFtZSBfT3BlcmF0aW9uOjpyZXN1bHRfdHlwZQogIG9wZXJhdG9yKCkoY29uc3Qg
dHlwZW5hbWUgX09wZXJhdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSYgX194KSBjb25zdCB7CiAg
ICByZXR1cm4gb3AoX194LCB2YWx1ZSk7CiAgfQoKCiAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVz
dWx0X3R5cGUKICBvcGVyYXRvcigpKHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50
X3R5cGUmIF9feCkgY29uc3QgewogICAgcmV0dXJuIG9wKF9feCwgdmFsdWUpOwogIH0KCn07Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX09wZXJhdGlvbiwgY2xhc3MgX1RwPgppbmxpbmUgYmluZGVyMm5kPF9P
cGVyYXRpb24+CmJpbmQybmQoY29uc3QgX09wZXJhdGlvbiYgX19mbiwgY29uc3QgX1RwJiBfX3gp
CnsKICB0eXBlZGVmIHR5cGVuYW1lIF9PcGVyYXRpb246OnNlY29uZF9hcmd1bWVudF90eXBlIF9B
cmcyX3R5cGU7CiAgcmV0dXJuIGJpbmRlcjJuZDxfT3BlcmF0aW9uPihfX2ZuLCBfQXJnMl90eXBl
KF9feCkpOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfT3BlcmF0aW9uMSwgY2xhc3MgX09wZXJhdGlv
bjI+CmNsYXNzIHVuYXJ5X2NvbXBvc2UKICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFt
ZSBfT3BlcmF0aW9uMjo6YXJndW1lbnRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlbmFtZSBfT3BlcmF0aW9uMTo6cmVzdWx0X3R5cGU+CnsKcHJvdGVjdGVkOgogIF9PcGVyYXRp
b24xIF9NX2ZuMTsKICBfT3BlcmF0aW9uMiBfTV9mbjI7CnB1YmxpYzoKICB1bmFyeV9jb21wb3Nl
KGNvbnN0IF9PcGVyYXRpb24xJiBfX3gsIGNvbnN0IF9PcGVyYXRpb24yJiBfX3kpCiAgICA6IF9N
X2ZuMShfX3gpLCBfTV9mbjIoX195KSB7fQogIHR5cGVuYW1lIF9PcGVyYXRpb24xOjpyZXN1bHRf
dHlwZQogIG9wZXJhdG9yKCkoY29uc3QgdHlwZW5hbWUgX09wZXJhdGlvbjI6OmFyZ3VtZW50X3R5
cGUmIF9feCkgY29uc3QgewogICAgcmV0dXJuIF9NX2ZuMShfTV9mbjIoX194KSk7CiAgfQp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRpb24xLCBjbGFzcyBfT3BlcmF0aW9uMj4KaW5saW5lIHVu
YXJ5X2NvbXBvc2U8X09wZXJhdGlvbjEsX09wZXJhdGlvbjI+CmNvbXBvc2UxKGNvbnN0IF9PcGVy
YXRpb24xJiBfX2ZuMSwgY29uc3QgX09wZXJhdGlvbjImIF9fZm4yKQp7CiAgcmV0dXJuIHVuYXJ5
X2NvbXBvc2U8X09wZXJhdGlvbjEsX09wZXJhdGlvbjI+KF9fZm4xLCBfX2ZuMik7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfT3BlcmF0aW9uMSwgY2xhc3MgX09wZXJhdGlvbjIsIGNsYXNzIF9PcGVyYXRp
b24zPgpjbGFzcyBiaW5hcnlfY29tcG9zZQogIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVu
YW1lIF9PcGVyYXRpb24yOjphcmd1bWVudF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGVuYW1lIF9PcGVyYXRpb24xOjpyZXN1bHRfdHlwZT4gewpwcm90ZWN0ZWQ6CiAgX09wZXJh
dGlvbjEgX01fZm4xOwogIF9PcGVyYXRpb24yIF9NX2ZuMjsKICBfT3BlcmF0aW9uMyBfTV9mbjM7
CnB1YmxpYzoKICBiaW5hcnlfY29tcG9zZShjb25zdCBfT3BlcmF0aW9uMSYgX194LCBjb25zdCBf
T3BlcmF0aW9uMiYgX195LAogICAgICAgICAgICAgICAgIGNvbnN0IF9PcGVyYXRpb24zJiBfX3op
CiAgICA6IF9NX2ZuMShfX3gpLCBfTV9mbjIoX195KSwgX01fZm4zKF9feikgeyB9CiAgdHlwZW5h
bWUgX09wZXJhdGlvbjE6OnJlc3VsdF90eXBlCiAgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBf
T3BlcmF0aW9uMjo6YXJndW1lbnRfdHlwZSYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX01fZm4x
KF9NX2ZuMihfX3gpLCBfTV9mbjMoX194KSk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9PcGVy
YXRpb24xLCBjbGFzcyBfT3BlcmF0aW9uMiwgY2xhc3MgX09wZXJhdGlvbjM+CmlubGluZSBiaW5h
cnlfY29tcG9zZTxfT3BlcmF0aW9uMSwgX09wZXJhdGlvbjIsIF9PcGVyYXRpb24zPgpjb21wb3Nl
Mihjb25zdCBfT3BlcmF0aW9uMSYgX19mbjEsIGNvbnN0IF9PcGVyYXRpb24yJiBfX2ZuMiwKICAg
ICAgICAgY29uc3QgX09wZXJhdGlvbjMmIF9fZm4zKQp7CiAgcmV0dXJuIGJpbmFyeV9jb21wb3Nl
PF9PcGVyYXRpb24xLF9PcGVyYXRpb24yLF9PcGVyYXRpb24zPgogICAgKF9fZm4xLCBfX2ZuMiwg
X19mbjMpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0FyZywgY2xhc3MgX1Jlc3VsdD4KY2xhc3MgcG9p
bnRlcl90b191bmFyeV9mdW5jdGlvbiA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfQXJnLCBfUmVz
dWx0PiB7CnByb3RlY3RlZDoKICBfUmVzdWx0ICgqX01fcHRyKShfQXJnKTsKcHVibGljOgogIHBv
aW50ZXJfdG9fdW5hcnlfZnVuY3Rpb24oKSB7fQogIGV4cGxpY2l0IHBvaW50ZXJfdG9fdW5hcnlf
ZnVuY3Rpb24oX1Jlc3VsdCAoKl9feCkoX0FyZykpIDogX01fcHRyKF9feCkge30KICBfUmVzdWx0
IG9wZXJhdG9yKCkoX0FyZyBfX3gpIGNvbnN0IHsgcmV0dXJuIF9NX3B0cihfX3gpOyB9Cn07Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0FyZywgY2xhc3MgX1Jlc3VsdD4KaW5saW5lIHBvaW50ZXJfdG9fdW5h
cnlfZnVuY3Rpb248X0FyZywgX1Jlc3VsdD4gcHRyX2Z1bihfUmVzdWx0ICgqX194KShfQXJnKSkK
ewogIHJldHVybiBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uPF9BcmcsIF9SZXN1bHQ+KF9feCk7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBfQXJnMSwgY2xhc3MgX0FyZzIsIGNsYXNzIF9SZXN1bHQ+CmNs
YXNzIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uIDoKICBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9u
PF9BcmcxLF9BcmcyLF9SZXN1bHQ+IHsKcHJvdGVjdGVkOgogICAgX1Jlc3VsdCAoKl9NX3B0ciko
X0FyZzEsIF9BcmcyKTsKcHVibGljOgogICAgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24oKSB7
fQogICAgZXhwbGljaXQgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24oX1Jlc3VsdCAoKl9feCko
X0FyZzEsIF9BcmcyKSkKICAgICAgOiBfTV9wdHIoX194KSB7fQogICAgX1Jlc3VsdCBvcGVyYXRv
cigpKF9BcmcxIF9feCwgX0FyZzIgX195KSBjb25zdCB7CiAgICAgIHJldHVybiBfTV9wdHIoX194
LCBfX3kpOwogICAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMiwgY2xh
c3MgX1Jlc3VsdD4KaW5saW5lIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uPF9BcmcxLF9Bcmcy
LF9SZXN1bHQ+CnB0cl9mdW4oX1Jlc3VsdCAoKl9feCkoX0FyZzEsIF9BcmcyKSkgewogIHJldHVy
biBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbjxfQXJnMSxfQXJnMixfUmVzdWx0PihfX3gpOwp9
CgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IF9JZGVudGl0eSA6IHB1YmxpYyB1bmFyeV9m
dW5jdGlvbjxfVHAsX1RwPiB7CiAgX1RwJiBvcGVyYXRvcigpKF9UcCYgX194KSBjb25zdCB7IHJl
dHVybiBfX3g7IH0KICBjb25zdCBfVHAmIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNvbnN0
IHsgcmV0dXJuIF9feDsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4gc3RydWN0IGlkZW50aXR5
IDogcHVibGljIF9JZGVudGl0eTxfVHA+IHt9OwoKCnRlbXBsYXRlIDxjbGFzcyBfUGFpcj4Kc3Ry
dWN0IF9TZWxlY3Qxc3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1BhaXIsIHR5cGVuYW1lIF9Q
YWlyOjpmaXJzdF90eXBlPiB7CiAgdHlwZW5hbWUgX1BhaXI6OmZpcnN0X3R5cGUmIG9wZXJhdG9y
KCkoX1BhaXImIF9feCkgY29uc3QgewogICAgcmV0dXJuIF9feC5maXJzdDsKICB9CiAgY29uc3Qg
dHlwZW5hbWUgX1BhaXI6OmZpcnN0X3R5cGUmIG9wZXJhdG9yKCkoY29uc3QgX1BhaXImIF9feCkg
Y29uc3QgewogICAgcmV0dXJuIF9feC5maXJzdDsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Bh
aXI+CnN0cnVjdCBfU2VsZWN0Mm5kIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9QYWlyLCB0eXBl
bmFtZSBfUGFpcjo6c2Vjb25kX3R5cGU+CnsKICB0eXBlbmFtZSBfUGFpcjo6c2Vjb25kX3R5cGUm
IG9wZXJhdG9yKCkoX1BhaXImIF9feCkgY29uc3QgewogICAgcmV0dXJuIF9feC5zZWNvbmQ7CiAg
fQogIGNvbnN0IHR5cGVuYW1lIF9QYWlyOjpzZWNvbmRfdHlwZSYgb3BlcmF0b3IoKShjb25zdCBf
UGFpciYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX194LnNlY29uZDsKICB9Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1BhaXI+IHN0cnVjdCBzZWxlY3Qxc3QgOiBwdWJsaWMgX1NlbGVjdDFzdDxfUGFp
cj4ge307CnRlbXBsYXRlIDxjbGFzcyBfUGFpcj4gc3RydWN0IHNlbGVjdDJuZCA6IHB1YmxpYyBf
U2VsZWN0Mm5kPF9QYWlyPiB7fTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0FyZzEsIGNsYXNzIF9Bcmcy
PgpzdHJ1Y3QgX1Byb2plY3Qxc3QgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9BcmcxLCBfQXJn
MiwgX0FyZzE+IHsKICBfQXJnMSBvcGVyYXRvcigpKGNvbnN0IF9BcmcxJiBfX3gsIGNvbnN0IF9B
cmcyJikgY29uc3QgeyByZXR1cm4gX194OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0FyZzEsIGNs
YXNzIF9BcmcyPgpzdHJ1Y3QgX1Byb2plY3QybmQgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9B
cmcxLCBfQXJnMiwgX0FyZzI+IHsKICBfQXJnMiBvcGVyYXRvcigpKGNvbnN0IF9BcmcxJiwgY29u
c3QgX0FyZzImIF9feSkgY29uc3QgeyByZXR1cm4gX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0FyZzEsIGNsYXNzIF9BcmcyPgpzdHJ1Y3QgcHJvamVjdDFzdCA6IHB1YmxpYyBfUHJvamVjdDFz
dDxfQXJnMSwgX0FyZzI+IHt9OwoKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMj4K
c3RydWN0IHByb2plY3QybmQgOiBwdWJsaWMgX1Byb2plY3QybmQ8X0FyZzEsIF9BcmcyPiB7fTsK
CgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jlc3VsdD4Kc3RydWN0IF9Db25zdGFudF92b2lkX2Z1biB7
CiAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBlOwogIHJlc3VsdF90eXBlIF9NX3ZhbDsKCiAg
X0NvbnN0YW50X3ZvaWRfZnVuKGNvbnN0IHJlc3VsdF90eXBlJiBfX3YpIDogX01fdmFsKF9fdikg
e30KICBjb25zdCByZXN1bHRfdHlwZSYgb3BlcmF0b3IoKSgpIGNvbnN0IHsgcmV0dXJuIF9NX3Zh
bDsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9SZXN1bHQsIGNsYXNzIF9Bcmd1bWVudD4Kc3RydWN0
IF9Db25zdGFudF91bmFyeV9mdW4gewogIHR5cGVkZWYgX0FyZ3VtZW50IGFyZ3VtZW50X3R5cGU7
CiAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBlOwogIHJlc3VsdF90eXBlIF9NX3ZhbDsKCiAg
X0NvbnN0YW50X3VuYXJ5X2Z1bihjb25zdCByZXN1bHRfdHlwZSYgX192KSA6IF9NX3ZhbChfX3Yp
IHt9CiAgY29uc3QgcmVzdWx0X3R5cGUmIG9wZXJhdG9yKCkoY29uc3QgX0FyZ3VtZW50JikgY29u
c3QgeyByZXR1cm4gX01fdmFsOyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jlc3VsdCwgY2xhc3Mg
X0FyZzEsIGNsYXNzIF9BcmcyPgpzdHJ1Y3QgX0NvbnN0YW50X2JpbmFyeV9mdW4gewogIHR5cGVk
ZWYgX0FyZzEgZmlyc3RfYXJndW1lbnRfdHlwZTsKICB0eXBlZGVmIF9BcmcyIHNlY29uZF9hcmd1
bWVudF90eXBlOwogIHR5cGVkZWYgX1Jlc3VsdCByZXN1bHRfdHlwZTsKICBfUmVzdWx0IF9NX3Zh
bDsKCiAgX0NvbnN0YW50X2JpbmFyeV9mdW4oY29uc3QgX1Jlc3VsdCYgX192KSA6IF9NX3ZhbChf
X3YpIHt9CiAgY29uc3QgcmVzdWx0X3R5cGUmIG9wZXJhdG9yKCkoY29uc3QgX0FyZzEmLCBjb25z
dCBfQXJnMiYpIGNvbnN0IHsKICAgIHJldHVybiBfTV92YWw7CiAgfQp9OwoKdGVtcGxhdGUgPGNs
YXNzIF9SZXN1bHQ+CnN0cnVjdCBjb25zdGFudF92b2lkX2Z1biA6IHB1YmxpYyBfQ29uc3RhbnRf
dm9pZF9mdW48X1Jlc3VsdD4gewogIGNvbnN0YW50X3ZvaWRfZnVuKGNvbnN0IF9SZXN1bHQmIF9f
dikgOiBfQ29uc3RhbnRfdm9pZF9mdW48X1Jlc3VsdD4oX192KSB7fQp9OwoKCnRlbXBsYXRlIDxj
bGFzcyBfUmVzdWx0LAogICAgICAgICAgY2xhc3MgX0FyZ3VtZW50ID0gX1Jlc3VsdD4Kc3RydWN0
IGNvbnN0YW50X3VuYXJ5X2Z1biA6IHB1YmxpYyBfQ29uc3RhbnRfdW5hcnlfZnVuPF9SZXN1bHQs
IF9Bcmd1bWVudD4KewogIGNvbnN0YW50X3VuYXJ5X2Z1bihjb25zdCBfUmVzdWx0JiBfX3YpCiAg
ICA6IF9Db25zdGFudF91bmFyeV9mdW48X1Jlc3VsdCwgX0FyZ3VtZW50PihfX3YpIHt9Cn07CgoK
dGVtcGxhdGUgPGNsYXNzIF9SZXN1bHQsCiAgICAgICAgICBjbGFzcyBfQXJnMSA9IF9SZXN1bHQs
CiAgICAgICAgICBjbGFzcyBfQXJnMiA9IF9BcmcxPgpzdHJ1Y3QgY29uc3RhbnRfYmluYXJ5X2Z1
bgogIDogcHVibGljIF9Db25zdGFudF9iaW5hcnlfZnVuPF9SZXN1bHQsIF9BcmcxLCBfQXJnMj4K
ewogIGNvbnN0YW50X2JpbmFyeV9mdW4oY29uc3QgX1Jlc3VsdCYgX192KQogICAgOiBfQ29uc3Rh
bnRfYmluYXJ5X2Z1bjxfUmVzdWx0LCBfQXJnMSwgX0FyZzI+KF9fdikge30KfTsKCnRlbXBsYXRl
IDxjbGFzcyBfUmVzdWx0PgppbmxpbmUgY29uc3RhbnRfdm9pZF9mdW48X1Jlc3VsdD4gY29uc3Rh
bnQwKGNvbnN0IF9SZXN1bHQmIF9fdmFsKQp7CiAgcmV0dXJuIGNvbnN0YW50X3ZvaWRfZnVuPF9S
ZXN1bHQ+KF9fdmFsKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXN1bHQ+CmlubGluZSBjb25zdGFu
dF91bmFyeV9mdW48X1Jlc3VsdCxfUmVzdWx0PiBjb25zdGFudDEoY29uc3QgX1Jlc3VsdCYgX192
YWwpCnsKICByZXR1cm4gY29uc3RhbnRfdW5hcnlfZnVuPF9SZXN1bHQsX1Jlc3VsdD4oX192YWwp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jlc3VsdD4KaW5saW5lIGNvbnN0YW50X2JpbmFyeV9mdW48
X1Jlc3VsdCxfUmVzdWx0LF9SZXN1bHQ+CmNvbnN0YW50Mihjb25zdCBfUmVzdWx0JiBfX3ZhbCkK
ewogIHJldHVybiBjb25zdGFudF9iaW5hcnlfZnVuPF9SZXN1bHQsX1Jlc3VsdCxfUmVzdWx0Pihf
X3ZhbCk7Cn0KCgoKY2xhc3Mgc3VidHJhY3RpdmVfcm5nIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9u
PHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50PiB7CnByaXZhdGU6CiAgdW5zaWduZWQgaW50IF9N
X3RhYmxlWzU1XTsKICBzaXplX3QgX01faW5kZXgxOwogIHNpemVfdCBfTV9pbmRleDI7CnB1Ymxp
YzoKICB1bnNpZ25lZCBpbnQgb3BlcmF0b3IoKSh1bnNpZ25lZCBpbnQgX19saW1pdCkgewogICAg
X01faW5kZXgxID0gKF9NX2luZGV4MSArIDEpICUgNTU7CiAgICBfTV9pbmRleDIgPSAoX01faW5k
ZXgyICsgMSkgJSA1NTsKICAgIF9NX3RhYmxlW19NX2luZGV4MV0gPSBfTV90YWJsZVtfTV9pbmRl
eDFdIC0gX01fdGFibGVbX01faW5kZXgyXTsKICAgIHJldHVybiBfTV90YWJsZVtfTV9pbmRleDFd
ICUgX19saW1pdDsKICB9CgogIHZvaWQgX01faW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgX19zZWVk
KQogIHsKICAgIHVuc2lnbmVkIGludCBfX2sgPSAxOwogICAgX01fdGFibGVbNTRdID0gX19zZWVk
OwogICAgc2l6ZV90IF9faTsKICAgIGZvciAoX19pID0gMDsgX19pIDwgNTQ7IF9faSsrKSB7CiAg
ICAgICAgc2l6ZV90IF9faWkgPSAoMjEgKiAoX19pICsgMSkgJSA1NSkgLSAxOwogICAgICAgIF9N
X3RhYmxlW19faWldID0gX19rOwogICAgICAgIF9fayA9IF9fc2VlZCAtIF9fazsKICAgICAgICBf
X3NlZWQgPSBfTV90YWJsZVtfX2lpXTsKICAgIH0KICAgIGZvciAoaW50IF9fbG9vcCA9IDA7IF9f
bG9vcCA8IDQ7IF9fbG9vcCsrKSB7CiAgICAgICAgZm9yIChfX2kgPSAwOyBfX2kgPCA1NTsgX19p
KyspCiAgICAgICAgICAgIF9NX3RhYmxlW19faV0gPSBfTV90YWJsZVtfX2ldIC0gX01fdGFibGVb
KDEgKyBfX2kgKyAzMCkgJSA1NV07CiAgICB9CiAgICBfTV9pbmRleDEgPSAwOwogICAgX01faW5k
ZXgyID0gMzE7CiAgfQoKICBzdWJ0cmFjdGl2ZV9ybmcodW5zaWduZWQgaW50IF9fc2VlZCkgeyBf
TV9pbml0aWFsaXplKF9fc2VlZCk7IH0KICBzdWJ0cmFjdGl2ZV9ybmcoKSB7IF9NX2luaXRpYWxp
emUoMTYxODAzMzk4dSk7IH0KfTsKIyA1NjIgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxf
ZnVuY3Rpb24uaCIgMwp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwPgpjbGFzcyBtZW1f
ZnVuX3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwKixfUmV0PiB7CnB1YmxpYzoKICBleHBs
aWNpdCBtZW1fZnVuX3QoX1JldCAoX1RwOjoqX19wZikoKSkgOiBfTV9mKF9fcGYpIHt9CiAgX1Jl
dCBvcGVyYXRvcigpKF9UcCogX19wKSBjb25zdCB7IHJldHVybiAoX19wLT4qX01fZikoKTsgfQpw
cml2YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKCk7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwg
Y2xhc3MgX1RwPgpjbGFzcyBjb25zdF9tZW1fZnVuX3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248
Y29uc3QgX1RwKixfUmV0PiB7CnB1YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1fZnVuX3QoX1Jl
dCAoX1RwOjoqX19wZikoKSBjb25zdCkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVyYXRvcigp
KGNvbnN0IF9UcCogX19wKSBjb25zdCB7IHJldHVybiAoX19wLT4qX01fZikoKTsgfQpwcml2YXRl
OgogIF9SZXQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9SZXQs
IGNsYXNzIF9UcD4KY2xhc3MgbWVtX2Z1bl9yZWZfdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxf
VHAsX1JldD4gewpwdWJsaWM6CiAgZXhwbGljaXQgbWVtX2Z1bl9yZWZfdChfUmV0IChfVHA6Oipf
X3BmKSgpKSA6IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCkoX1RwJiBfX3IpIGNvbnN0
IHsgcmV0dXJuIChfX3IuKl9NX2YpKCk7IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6OipfTV9mKSgp
Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KY2xhc3MgY29uc3RfbWVtX2Z1
bl9yZWZfdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsX1JldD4gewpwdWJsaWM6CiAgZXhw
bGljaXQgY29uc3RfbWVtX2Z1bl9yZWZfdChfUmV0IChfVHA6OipfX3BmKSgpIGNvbnN0KSA6IF9N
X2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3IpIGNvbnN0IHsgcmV0
dXJuIChfX3IuKl9NX2YpKCk7IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6OipfTV9mKSgpIGNvbnN0
Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3Mg
bWVtX2Z1bjFfdCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwKixfQXJnLF9SZXQ+IHsKcHVi
bGljOgogIGV4cGxpY2l0IG1lbV9mdW4xX3QoX1JldCAoX1RwOjoqX19wZikoX0FyZykpIDogX01f
ZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0b3IoKShfVHAqIF9fcCwgX0FyZyBfX3gpIGNvbnN0IHsg
cmV0dXJuIChfX3AtPipfTV9mKShfX3gpOyB9CnByaXZhdGU6CiAgX1JldCAoX1RwOjoqX01fZiko
X0FyZyk7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgpj
bGFzcyBjb25zdF9tZW1fZnVuMV90IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxjb25zdCBfVHAq
LF9BcmcsX1JldD4gewpwdWJsaWM6CiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bjFfdChfUmV0IChf
VHA6OipfX3BmKShfQXJnKSBjb25zdCkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVyYXRvcigp
KGNvbnN0IF9UcCogX19wLCBfQXJnIF9feCkgY29uc3QKICAgIHsgcmV0dXJuIChfX3AtPipfTV9m
KShfX3gpOyB9CnByaXZhdGU6CiAgX1JldCAoX1RwOjoqX01fZikoX0FyZykgY29uc3Q7Cn07Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgpjbGFzcyBtZW1fZnVu
MV9yZWZfdCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9BcmcsX1JldD4gewpwdWJsaWM6
CiAgZXhwbGljaXQgbWVtX2Z1bjFfcmVmX3QoX1JldCAoX1RwOjoqX19wZikoX0FyZykpIDogX01f
ZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0b3IoKShfVHAmIF9fciwgX0FyZyBfX3gpIGNvbnN0IHsg
cmV0dXJuIChfX3IuKl9NX2YpKF9feCk7IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6OipfTV9mKShf
QXJnKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNs
YXNzIGNvbnN0X21lbV9mdW4xX3JlZl90IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX0Fy
ZyxfUmV0PiB7CnB1YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1fZnVuMV9yZWZfdChfUmV0IChf
VHA6OipfX3BmKShfQXJnKSBjb25zdCkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVyYXRvcigp
KGNvbnN0IF9UcCYgX19yLCBfQXJnIF9feCkgY29uc3QgeyByZXR1cm4gKF9fci4qX01fZikoX194
KTsgfQpwcml2YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpIGNvbnN0Owp9OwoKdGVtcGxh
dGUgPGNsYXNzIF9UcD4KY2xhc3MgbWVtX2Z1bl90PHZvaWQsIF9UcD4gOiBwdWJsaWMgdW5hcnlf
ZnVuY3Rpb248X1RwKix2b2lkPiB7CnB1YmxpYzoKICBleHBsaWNpdCBtZW1fZnVuX3Qodm9pZCAo
X1RwOjoqX19wZikoKSkgOiBfTV9mKF9fcGYpIHt9CiAgdm9pZCBvcGVyYXRvcigpKF9UcCogX19w
KSBjb25zdCB7IChfX3AtPipfTV9mKSgpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoqX01fZiko
KTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmNsYXNzIGNvbnN0X21lbV9mdW5fdDx2b2lkLCBf
VHA+IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPGNvbnN0IF9UcCosdm9pZD4gewpwdWJsaWM6CiAg
ZXhwbGljaXQgY29uc3RfbWVtX2Z1bl90KHZvaWQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpIDogX01f
ZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBfVHAqIF9fcCkgY29uc3QgeyAoX19w
LT4qX01fZikoKTsgfQpwcml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7Cn07Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpjbGFzcyBtZW1fZnVuX3JlZl90PHZvaWQsIF9UcD4gOiBwdWJs
aWMgdW5hcnlfZnVuY3Rpb248X1RwLHZvaWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW5f
cmVmX3Qodm9pZCAoX1RwOjoqX19wZikoKSkgOiBfTV9mKF9fcGYpIHt9CiAgdm9pZCBvcGVyYXRv
cigpKF9UcCYgX19yKSBjb25zdCB7IChfX3IuKl9NX2YpKCk7IH0KcHJpdmF0ZToKICB2b2lkIChf
VHA6OipfTV9mKSgpOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KY2xhc3MgY29uc3RfbWVtX2Z1
bl9yZWZfdDx2b2lkLCBfVHA+IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCx2b2lkPiB7CnB1
YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1fZnVuX3JlZl90KHZvaWQgKF9UcDo6Kl9fcGYpKCkg
Y29uc3QpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9fcikg
Y29uc3QgeyAoX19yLipfTV9mKSgpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoqX01fZikoKSBj
b25zdDsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIG1lbV9mdW4x
X3Q8dm9pZCwgX1RwLCBfQXJnPiA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwKixfQXJnLHZv
aWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW4xX3Qodm9pZCAoX1RwOjoqX19wZikoX0Fy
ZykpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShfVHAqIF9fcCwgX0FyZyBfX3gp
IGNvbnN0IHsgKF9fcC0+Kl9NX2YpKF9feCk7IH0KcHJpdmF0ZToKICB2b2lkIChfVHA6OipfTV9m
KShfQXJnKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIGNvbnN0
X21lbV9mdW4xX3Q8dm9pZCwgX1RwLCBfQXJnPgogIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxj
b25zdCBfVHAqLF9Bcmcsdm9pZD4gewpwdWJsaWM6CiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bjFf
dCh2b2lkIChfVHA6OipfX3BmKShfQXJnKSBjb25zdCkgOiBfTV9mKF9fcGYpIHt9CiAgdm9pZCBv
cGVyYXRvcigpKGNvbnN0IF9UcCogX19wLCBfQXJnIF9feCkgY29uc3QgeyAoX19wLT4qX01fZiko
X194KTsgfQpwcml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKF9BcmcpIGNvbnN0Owp9OwoKdGVt
cGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3MgbWVtX2Z1bjFfcmVmX3Q8dm9pZCwg
X1RwLCBfQXJnPgogIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX0FyZyx2b2lkPiB7CnB1
YmxpYzoKICBleHBsaWNpdCBtZW1fZnVuMV9yZWZfdCh2b2lkIChfVHA6OipfX3BmKShfQXJnKSkg
OiBfTV9mKF9fcGYpIHt9CiAgdm9pZCBvcGVyYXRvcigpKF9UcCYgX19yLCBfQXJnIF9feCkgY29u
c3QgeyAoX19yLipfTV9mKShfX3gpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoqX01fZikoX0Fy
Zyk7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQXJnPgpjbGFzcyBjb25zdF9tZW1f
ZnVuMV9yZWZfdDx2b2lkLCBfVHAsIF9Bcmc+CiAgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9U
cCxfQXJnLHZvaWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW4xX3JlZl90KHZv
aWQgKF9UcDo6Kl9fcGYpKF9BcmcpIGNvbnN0KSA6IF9NX2YoX19wZikge30KICB2b2lkIG9wZXJh
dG9yKCkoY29uc3QgX1RwJiBfX3IsIF9BcmcgX194KSBjb25zdCB7IChfX3IuKl9NX2YpKF9feCk7
IH0KcHJpdmF0ZToKICB2b2lkIChfVHA6OipfTV9mKShfQXJnKSBjb25zdDsKfTsKCgoKCgoKCnRl
bXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CmlubGluZSBtZW1fZnVuX3Q8X1JldCxfVHA+
IG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKSgpKQogIHsgcmV0dXJuIG1lbV9mdW5fdDxfUmV0LF9U
cD4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KaW5saW5lIGNvbnN0
X21lbV9mdW5fdDxfUmV0LF9UcD4gbWVtX2Z1bihfUmV0IChfVHA6OipfX2YpKCkgY29uc3QpCiAg
eyByZXR1cm4gY29uc3RfbWVtX2Z1bl90PF9SZXQsX1RwPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX1JldCwgY2xhc3MgX1RwPgppbmxpbmUgbWVtX2Z1bl9yZWZfdDxfUmV0LF9UcD4gbWVtX2Z1
bl9yZWYoX1JldCAoX1RwOjoqX19mKSgpKQogIHsgcmV0dXJuIG1lbV9mdW5fcmVmX3Q8X1JldCxf
VHA+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CmlubGluZSBjb25z
dF9tZW1fZnVuX3JlZl90PF9SZXQsX1RwPiBtZW1fZnVuX3JlZihfUmV0IChfVHA6OipfX2YpKCkg
Y29uc3QpCiAgeyByZXR1cm4gY29uc3RfbWVtX2Z1bl9yZWZfdDxfUmV0LF9UcD4oX19mKTsgfQoK
dGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KaW5saW5lIG1lbV9m
dW4xX3Q8X1JldCxfVHAsX0FyZz4gbWVtX2Z1bihfUmV0IChfVHA6OipfX2YpKF9BcmcpKQogIHsg
cmV0dXJuIG1lbV9mdW4xX3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNz
IF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KaW5saW5lIGNvbnN0X21lbV9mdW4xX3Q8X1Jl
dCxfVHAsX0FyZz4gbWVtX2Z1bihfUmV0IChfVHA6OipfX2YpKF9BcmcpIGNvbnN0KQogIHsgcmV0
dXJuIGNvbnN0X21lbV9mdW4xX3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKdGVtcGxhdGUgPGNs
YXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KaW5saW5lIG1lbV9mdW4xX3JlZl90PF9S
ZXQsX1RwLF9Bcmc+IG1lbV9mdW5fcmVmKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykpCiAgeyByZXR1
cm4gbWVtX2Z1bjFfcmVmX3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNz
IF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KaW5saW5lIGNvbnN0X21lbV9mdW4xX3JlZl90
PF9SZXQsX1RwLF9Bcmc+Cm1lbV9mdW5fcmVmKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykgY29uc3Qp
CiAgeyByZXR1cm4gY29uc3RfbWVtX2Z1bjFfcmVmX3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoK
dGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KaW5saW5lIG1lbV9m
dW4xX3Q8X1JldCxfVHAsX0FyZz4gbWVtX2Z1bjEoX1JldCAoX1RwOjoqX19mKShfQXJnKSkKICB7
IHJldHVybiBtZW1fZnVuMV90PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFz
cyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBjb25zdF9tZW1fZnVuMV90PF9S
ZXQsX1RwLF9Bcmc+IG1lbV9mdW4xKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykgY29uc3QpCiAgeyBy
ZXR1cm4gY29uc3RfbWVtX2Z1bjFfdDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgppbmxpbmUgbWVtX2Z1bjFfcmVmX3Q8
X1JldCxfVHAsX0FyZz4gbWVtX2Z1bjFfcmVmKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykpCiAgeyBy
ZXR1cm4gbWVtX2Z1bjFfcmVmX3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKdGVtcGxhdGUgPGNs
YXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KaW5saW5lIGNvbnN0X21lbV9mdW4xX3Jl
Zl90PF9SZXQsX1RwLF9Bcmc+Cm1lbV9mdW4xX3JlZihfUmV0IChfVHA6OipfX2YpKF9BcmcpIGNv
bnN0KQogIHsgcmV0dXJuIGNvbnN0X21lbV9mdW4xX3JlZl90PF9SZXQsX1RwLF9Bcmc+KF9fZik7
IH0KCn0KIyA2NCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9udW1lcmljLmgiIDIgMwoj
IDEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfbnVtZXJpYy5oIiAxIDMKIyA2NCAiL3Vz
ci9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9udW1lcmljLmgiIDMKbmFtZXNwYWNlIHN0ZAp7Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3IsIGNsYXNzIF9UcD4KX1RwIGFjY3VtdWxhdGUo
X0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LCBfVHAgX19pbml0
KQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKCiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0
KQogICAgX19pbml0ID0gX19pbml0ICsgKl9fZmlyc3Q7CiAgcmV0dXJuIF9faW5pdDsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yLCBjbGFzcyBfVHAsIGNsYXNzIF9CaW5hcnlPcGVy
YXRpb24+Cl9UcCBhY2N1bXVsYXRlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJh
dG9yIF9fbGFzdCwgX1RwIF9faW5pdCwKICAgICAgICAgICAgICBfQmluYXJ5T3BlcmF0aW9uIF9f
YmluYXJ5X29wKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsg
KytfX2ZpcnN0KQogICAgX19pbml0ID0gX19iaW5hcnlfb3AoX19pbml0LCAqX19maXJzdCk7CiAg
cmV0dXJuIF9faW5pdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yMSwgY2xhc3Mg
X0lucHV0SXRlcmF0b3IyLCBjbGFzcyBfVHA+Cl9UcCBpbm5lcl9wcm9kdWN0KF9JbnB1dEl0ZXJh
dG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAg
X0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfVHAgX19pbml0KQp7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDsKCiAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxOyArK19fZmlyc3QxLCAr
K19fZmlyc3QyKQogICAgX19pbml0ID0gX19pbml0ICsgKCpfX2ZpcnN0MSAqICpfX2ZpcnN0Mik7
CiAgcmV0dXJuIF9faW5pdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yMSwgY2xh
c3MgX0lucHV0SXRlcmF0b3IyLCBjbGFzcyBfVHAsCiAgICAgICAgICBjbGFzcyBfQmluYXJ5T3Bl
cmF0aW9uMSwgY2xhc3MgX0JpbmFyeU9wZXJhdGlvbjI+Cl9UcCBpbm5lcl9wcm9kdWN0KF9JbnB1
dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICAgICAg
ICAgICAgX0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfVHAgX19pbml0LAogICAgICAgICAgICAg
ICAgIF9CaW5hcnlPcGVyYXRpb24xIF9fYmluYXJ5X29wMSwKICAgICAgICAgICAgICAgICBfQmlu
YXJ5T3BlcmF0aW9uMiBfX2JpbmFyeV9vcDIpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OwoKICBmb3IgKCA7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEsICsrX19maXJzdDIp
CiAgICBfX2luaXQgPSBfX2JpbmFyeV9vcDEoX19pbml0LCBfX2JpbmFyeV9vcDIoKl9fZmlyc3Qx
LCAqX19maXJzdDIpKTsKICByZXR1cm4gX19pbml0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0
SXRlcmF0b3IsIGNsYXNzIF9PdXRwdXRJdGVyYXRvciwgY2xhc3MgX1RwPgpfT3V0cHV0SXRlcmF0
b3IKX19wYXJ0aWFsX3N1bShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBf
X2xhc3QsCiAgICAgICAgICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBfVHAqKQp7CiAg
X1RwIF9fdmFsdWUgPSAqX19maXJzdDsKICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkgewog
ICAgX192YWx1ZSA9IF9fdmFsdWUgKyAqX19maXJzdDsKICAgICorK19fcmVzdWx0ID0gX192YWx1
ZTsKICB9CiAgcmV0dXJuICsrX19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVy
YXRvciwgY2xhc3MgX091dHB1dEl0ZXJhdG9yPgpfT3V0cHV0SXRlcmF0b3IKcGFydGlhbF9zdW0o
X0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAg
ICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogIGlm
IChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fcmVzdWx0OwogICpfX3Jlc3VsdCA9ICpfX2Zp
cnN0OwogIHJldHVybiBfX3BhcnRpYWxfc3VtKF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsIF9f
dmFsdWVfdHlwZShfX2ZpcnN0KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvciwg
Y2xhc3MgX091dHB1dEl0ZXJhdG9yLCBjbGFzcyBfVHAsCiAgICAgICAgICBjbGFzcyBfQmluYXJ5
T3BlcmF0aW9uPgpfT3V0cHV0SXRlcmF0b3IKX19wYXJ0aWFsX3N1bShfSW5wdXRJdGVyYXRvciBf
X2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgX091dHB1dEl0ZXJh
dG9yIF9fcmVzdWx0LCBfVHAqLCBfQmluYXJ5T3BlcmF0aW9uIF9fYmluYXJ5X29wKQp7CiAgX1Rw
IF9fdmFsdWUgPSAqX19maXJzdDsKICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAg
X192YWx1ZSA9IF9fYmluYXJ5X29wKF9fdmFsdWUsICpfX2ZpcnN0KTsKICAgICorK19fcmVzdWx0
ID0gX192YWx1ZTsKICB9CiAgcmV0dXJuICsrX19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
SW5wdXRJdGVyYXRvciwgY2xhc3MgX091dHB1dEl0ZXJhdG9yLCBjbGFzcyBfQmluYXJ5T3BlcmF0
aW9uPgpfT3V0cHV0SXRlcmF0b3IKcGFydGlhbF9zdW0oX0lucHV0SXRlcmF0b3IgX19maXJzdCwg
X0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1
bHQsIF9CaW5hcnlPcGVyYXRpb24gX19iaW5hcnlfb3ApCnsKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK
CgogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fcmVzdWx0OwogICpfX3Jlc3VsdCA9
ICpfX2ZpcnN0OwogIHJldHVybiBfX3BhcnRpYWxfc3VtKF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1
bHQsIF9fdmFsdWVfdHlwZShfX2ZpcnN0KSwKICAgICAgICAgICAgICAgICAgICAgICBfX2JpbmFy
eV9vcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvciwgY2xhc3MgX091dHB1dEl0
ZXJhdG9yLCBjbGFzcyBfVHA+Cl9PdXRwdXRJdGVyYXRvcgpfX2FkamFjZW50X2RpZmZlcmVuY2Uo
X0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAg
ICAgICAgICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBfVHAqKQp7CiAgX1RwIF9fdmFs
dWUgPSAqX19maXJzdDsKICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgX1RwIF9f
dG1wID0gKl9fZmlyc3Q7CiAgICAqKytfX3Jlc3VsdCA9IF9fdG1wIC0gX192YWx1ZTsKICAgIF9f
dmFsdWUgPSBfX3RtcDsKICB9CiAgcmV0dXJuICsrX19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfSW5wdXRJdGVyYXRvciwgY2xhc3MgX091dHB1dEl0ZXJhdG9yPgpfT3V0cHV0SXRlcmF0b3IK
YWRqYWNlbnRfZGlmZmVyZW5jZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAgICAg
ICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0KQp7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7CgoKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBf
X3Jlc3VsdDsKICAqX19yZXN1bHQgPSAqX19maXJzdDsKICByZXR1cm4gX19hZGphY2VudF9kaWZm
ZXJlbmNlKF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX3ZhbHVlX3R5cGUoX19maXJzdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0
SXRlcmF0b3IsIGNsYXNzIF9PdXRwdXRJdGVyYXRvciwgY2xhc3MgX1RwLAogICAgICAgICAgY2xh
c3MgX0JpbmFyeU9wZXJhdGlvbj4KX091dHB1dEl0ZXJhdG9yCl9fYWRqYWNlbnRfZGlmZmVyZW5j
ZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICBfT3V0cHV0SXRlcmF0b3IgX19yZXN1bHQsIF9UcCosCiAgICAgICAgICAg
ICAgICAgICAgICBfQmluYXJ5T3BlcmF0aW9uIF9fYmluYXJ5X29wKSB7CiAgX1RwIF9fdmFsdWUg
PSAqX19maXJzdDsKICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgX1RwIF9fdG1w
ID0gKl9fZmlyc3Q7CiAgICAqKytfX3Jlc3VsdCA9IF9fYmluYXJ5X29wKF9fdG1wLCBfX3ZhbHVl
KTsKICAgIF9fdmFsdWUgPSBfX3RtcDsKICB9CiAgcmV0dXJuICsrX19yZXN1bHQ7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvciwgY2xhc3MgX091dHB1dEl0ZXJhdG9yLCBjbGFzcyBf
QmluYXJ5T3BlcmF0aW9uPgpfT3V0cHV0SXRlcmF0b3IKYWRqYWNlbnRfZGlmZmVyZW5jZShfSW5w
dXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAg
ICAgICAgX091dHB1dEl0ZXJhdG9yIF9fcmVzdWx0LCBfQmluYXJ5T3BlcmF0aW9uIF9fYmluYXJ5
X29wKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJl
dHVybiBfX3Jlc3VsdDsKICAqX19yZXN1bHQgPSAqX19maXJzdDsKICByZXR1cm4gX19hZGphY2Vu
dF9kaWZmZXJlbmNlKF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX3ZhbHVlX3R5cGUoX19maXJzdCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2JpbmFyeV9vcCk7Cn0KCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFz
cyBfSW50ZWdlciwgY2xhc3MgX01vbm9pZE9wZXJhdGlvbj4KX1RwIF9fcG93ZXIoX1RwIF9feCwg
X0ludGVnZXIgX19uLCBfTW9ub2lkT3BlcmF0aW9uIF9fbW9ub2lkX29wKQp7CiAgaWYgKF9fbiA9
PSAwKQogICAgcmV0dXJuIGlkZW50aXR5X2VsZW1lbnQoX19tb25vaWRfb3ApOwogIGVsc2Ugewog
ICAgd2hpbGUgKChfX24gJiAxKSA9PSAwKSB7CiAgICAgIF9fbiA+Pj0gMTsKICAgICAgX194ID0g
X19tb25vaWRfb3AoX194LCBfX3gpOwogICAgfQoKICAgIF9UcCBfX3Jlc3VsdCA9IF9feDsKICAg
IF9fbiA+Pj0gMTsKICAgIHdoaWxlIChfX24gIT0gMCkgewogICAgICBfX3ggPSBfX21vbm9pZF9v
cChfX3gsIF9feCk7CiAgICAgIGlmICgoX19uICYgMSkgIT0gMCkKICAgICAgICBfX3Jlc3VsdCA9
IF9fbW9ub2lkX29wKF9fcmVzdWx0LCBfX3gpOwogICAgICBfX24gPj49IDE7CiAgICB9CiAgICBy
ZXR1cm4gX19yZXN1bHQ7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfSW50ZWdl
cj4KaW5saW5lIF9UcCBfX3Bvd2VyKF9UcCBfX3gsIF9JbnRlZ2VyIF9fbikKewogIHJldHVybiBf
X3Bvd2VyKF9feCwgX19uLCBtdWx0aXBsaWVzPF9UcD4oKSk7Cn0KCgoKCnRlbXBsYXRlIDxjbGFz
cyBfVHAsIGNsYXNzIF9JbnRlZ2VyLCBjbGFzcyBfTW9ub2lkT3BlcmF0aW9uPgppbmxpbmUgX1Rw
IHBvd2VyKF9UcCBfX3gsIF9JbnRlZ2VyIF9fbiwgX01vbm9pZE9wZXJhdGlvbiBfX21vbm9pZF9v
cCkKewogIHJldHVybiBfX3Bvd2VyKF9feCwgX19uLCBfX21vbm9pZF9vcCk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfVHAsIGNsYXNzIF9JbnRlZ2VyPgppbmxpbmUgX1RwIHBvd2VyKF9UcCBfX3gsIF9J
bnRlZ2VyIF9fbikKewogIHJldHVybiBfX3Bvd2VyKF9feCwgX19uKTsKfQoKCgp0ZW1wbGF0ZSA8
Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+CnZvaWQKaW90YShfRm9yd2FyZEl0ZXIgX19m
aXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwgX1RwIF9fdmFsdWUpCnsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDsKCgogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkKICAgICpfX2ZpcnN0Kysg
PSBfX3ZhbHVlKys7Cn0KCn0KIyA2NSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9udW1l
cmljLmgiIDIgMwojIDQyICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX3ZhbGFycmF5Lmgi
IDIgMwojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfZnVuY3Rpb25hbC5oIiAxIDMK
IyA0OCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9mdW5jdGlvbmFsLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvZysrLXYzL2kzODYtcmVkaGF0LWxpbnV4L2JpdHMvYysrY29uZmlnLmgiIDEg
MwojIDQ5ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2Z1bmN0aW9uYWwuaCIgMiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jc3RkZGVmLmgiIDEgMwojIDUwICIvdXNy
L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2Z1bmN0aW9uYWwuaCIgMiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2crKy12My9iaXRzL3N0bF9mdW5jdGlvbi5oIiAxIDMKIyA1MSAiL3Vzci9pbmNsdWRlL2cr
Ky12My9iaXRzL3N0ZF9mdW5jdGlvbmFsLmgiIDIgMwojIDQzICIvdXNyL2luY2x1ZGUvZysrLXYz
L2JpdHMvc3RkX3ZhbGFycmF5LmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9z
dGRfYWxnb3JpdGhtLmgiIDEgMwojIDYwICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2Fs
Z29yaXRobS5oIiAzCgojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnb2Jhc2Uu
aCIgMSAzCiMgNjQgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9nKystdjMvaTM4Ni1yZWRoYXQtbGludXgvYml0cy9jKytjb25maWcu
aCIgMSAzCiMgNjUgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAz
CgojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfcGFpci5oIiAxIDMKIyA2NCAiL3Vz
ci9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9wYWlyLmgiIDMKbmFtZXNwYWNlIHN0ZAp7CgoKdGVt
cGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgpzdHJ1Y3QgcGFpciB7CiAgdHlwZWRlZiBfVDEg
Zmlyc3RfdHlwZTsKICB0eXBlZGVmIF9UMiBzZWNvbmRfdHlwZTsKCiAgX1QxIGZpcnN0OwogIF9U
MiBzZWNvbmQ7CgoKCgogIHBhaXIoKSA6IGZpcnN0KCksIHNlY29uZCgpIHt9CgoKCgogIHBhaXIo
Y29uc3QgX1QxJiBfX2EsIGNvbnN0IF9UMiYgX19iKSA6IGZpcnN0KF9fYSksIHNlY29uZChfX2Ip
IHt9CgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX1UxLCBjbGFzcyBfVTI+CiAgcGFpcihjb25zdCBwYWly
PF9VMSwgX1UyPiYgX19wKSA6IGZpcnN0KF9fcC5maXJzdCksIHNlY29uZChfX3Auc2Vjb25kKSB7
fQp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195
KQp7CiAgcmV0dXJuIF9feC5maXJzdCA9PSBfX3kuZmlyc3QgJiYgX194LnNlY29uZCA9PSBfX3ku
c2Vjb25kOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxpbmUgYm9vbCBv
cGVyYXRvcjwoY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4m
IF9feSkKewogIHJldHVybiBfX3guZmlyc3QgPCBfX3kuZmlyc3QgfHwKICAgICAgICAgKCEoX195
LmZpcnN0IDwgX194LmZpcnN0KSAmJiBfX3guc2Vjb25kIDwgX195LnNlY29uZCk7Cn0KCgp0ZW1w
bGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
cGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkgewogIHJldHVy
biAhKF9feCA9PSBfX3kpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxp
bmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxf
VDEsIF9UMj4mIF9feSkgewogIHJldHVybiBfX3kgPCBfX3g7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1QxLCBjbGFzcyBfVDI+CmlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgcGFpcjxfVDEsIF9U
Mj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkgewogIHJldHVybiAhKF9feSA8IF9f
eCk7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CmlubGluZSBib29sIG9wZXJh
dG9yPj0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9f
eSkgewogIHJldHVybiAhKF9feCA8IF9feSk7Cn0KIyAxMzkgIi91c3IvaW5jbHVkZS9nKystdjMv
Yml0cy9zdGxfcGFpci5oIiAzCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KCgppbmxp
bmUgcGFpcjxfVDEsIF9UMj4gbWFrZV9wYWlyKF9UMSBfX3gsIF9UMiBfX3kpCgoKCnsKICByZXR1
cm4gcGFpcjxfVDEsIF9UMj4oX194LCBfX3kpOwp9Cgp9CiMgNjcgIi91c3IvaW5jbHVkZS9nKyst
djMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2Jp
dHMvdHlwZV90cmFpdHMuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy90eXBl
X3RyYWl0cy5oIiAzCgojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvaTM4Ni1yZWRoYXQtbGludXgv
Yml0cy9jKytjb25maWcuaCIgMSAzCiMgNTAgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy90eXBl
X3RyYWl0cy5oIiAyIDMKIyA4NiAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3R5cGVfdHJhaXRz
LmgiIDMKdGVtcGxhdGUgPGJvb2wgX1RydXRoPiBzdHJ1Y3QgX0Jvb2wge307CnR5cGVkZWYgX0Jv
b2w8dHJ1ZT4gX190cnVlX3R5cGU7CnR5cGVkZWYgX0Jvb2w8ZmFsc2U+IF9fZmFsc2VfdHlwZTsK
CnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBfX3R5cGVfdHJhaXRzIHsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSB0aGlzX2R1bW15X21lbWJlcl9tdXN0X2JlX2ZpcnN0OwojIDExMCAiL3Vzci9p
bmNsdWRlL2crKy12My9iaXRzL3R5cGVfdHJhaXRzLmgiIDMKICAgdHlwZWRlZiBfX2ZhbHNlX3R5
cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5
cGUgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUg
aGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUg
aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgaXNfUE9EX3R5
cGU7Cn07CgoKCgp0ZW1wbGF0ZTw+IHN0cnVjdCBfX3R5cGVfdHJhaXRzPGJvb2w+IHsKICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
IGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0czxjaGFyPiB7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsK
ICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0
eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5
cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8
c2lnbmVkIGNoYXI+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0
X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29u
c3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9v
cGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwog
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3Qg
X190eXBlX3RyYWl0czx1bnNpZ25lZCBjaGFyPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFz
X3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNf
dHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2
aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZp
YWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsKCnRl
bXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8d2NoYXJfdD4gewogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
IGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaXNfUE9EX3R5
cGU7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfX3R5cGVfdHJhaXRzPHNob3J0PiB7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBp
c19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8dW5zaWduZWQg
c2hvcnQ+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0
cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0
b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRv
cjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX190eXBl
X3RyYWl0czxpbnQ+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZWZhdWx0
X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2NvcHlfY29u
c3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9v
cGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwog
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3Qg
X190eXBlX3RyYWl0czx1bnNpZ25lZCBpbnQ+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNf
dHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190
cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZp
YWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlh
bF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOwp9OwoKdGVt
cGxhdGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0czxsb25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhh
c190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFz
X3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsK
fTsKCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8dW5zaWduZWQgbG9uZz4gewogICB0
eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5
cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgaXNfUE9EX3R5cGU7Cn07CgoKCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlwZV90cmFpdHM8bG9u
ZyBsb25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25z
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVj
dG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0
b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9fdHlw
ZV90cmFpdHM8dW5zaWduZWQgbG9uZyBsb25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFz
X3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNf
dHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2
aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZp
YWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsKCgoK
dGVtcGxhdGU8PiBzdHJ1Y3QgX190eXBlX3RyYWl0czxmbG9hdD4gewogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
IGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaXNfUE9EX3R5
cGU7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfX3R5cGVfdHJhaXRzPGRvdWJsZT4gewogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
aXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfX3R5cGVfdHJhaXRzPGxvbmcgZG91
YmxlPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1
Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9y
OwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVj
dCBfX3R5cGVfdHJhaXRzPF9UcCo+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlh
bF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGhhc190cml2aWFs
X2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgaGFzX3RyaXZpYWxfYXNz
aWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlIGlzX1BPRF90eXBlOwp9OwoKCgoKCnRlbXBs
YXRlIDxjbGFzcyBfVHA+IHN0cnVjdCBfSXNfaW50ZWdlciB7CiAgdHlwZWRlZiBfX2ZhbHNlX3R5
cGUgX0ludGVncmFsOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX0lzX2ludGVnZXI8Ym9vbD4gewog
IHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX0lz
X2ludGVnZXI8Y2hhcj4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVt
cGxhdGU8PiBzdHJ1Y3QgX0lzX2ludGVnZXI8c2lnbmVkIGNoYXI+IHsKICB0eXBlZGVmIF9fdHJ1
ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9Jc19pbnRlZ2VyPHVuc2ln
bmVkIGNoYXI+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRl
PD4gc3RydWN0IF9Jc19pbnRlZ2VyPHdjaGFyX3Q+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9J
bnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9Jc19pbnRlZ2VyPHNob3J0PiB7CiAgdHlw
ZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfSXNfaW50
ZWdlcjx1bnNpZ25lZCBzaG9ydD4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9
OwoKdGVtcGxhdGU8PiBzdHJ1Y3QgX0lzX2ludGVnZXI8aW50PiB7CiAgdHlwZWRlZiBfX3RydWVf
dHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfSXNfaW50ZWdlcjx1bnNpZ25l
ZCBpbnQ+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4g
c3RydWN0IF9Jc19pbnRlZ2VyPGxvbmc+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3Jh
bDsKfTsKCnRlbXBsYXRlPD4gc3RydWN0IF9Jc19pbnRlZ2VyPHVuc2lnbmVkIGxvbmc+IHsKICB0
eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKdGVtcGxhdGU8PiBzdHJ1Y3QgX0lz
X2ludGVnZXI8bG9uZyBsb25nPiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07
Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfSXNfaW50ZWdlcjx1bnNpZ25lZCBsb25nIGxvbmc+IHsKICB0
eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PiBzdHJ1Y3QgX0lzX25vcm1hbF9pdGVyYXRvciB7CiAgIHR5cGVkZWYgX19mYWxzZV90eXBlIF9O
b3JtYWw7Cn07CgoKbmFtZXNwYWNlIHN0ZCB7CiAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRv
ciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4gY2xhc3MgX19ub3JtYWxfaXRlcmF0b3I7Cn07Cgp0ZW1w
bGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CnN0cnVjdCBfSXNf
bm9ybWFsX2l0ZXJhdG9yPCBzdGQ6Ol9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRh
aW5lcj4gPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgX05vcm1hbDsKfTsKIyA3MCAiL3Vzci9p
bmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRl
L2crKy12My9iaXRzL3N0ZF9jc3RyaW5nLmgiIDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvZysrLXYz
L2JpdHMvc3RkX2NzdHJpbmcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRf
Y3N0ZGRlZi5oIiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jc3RyaW5n
LmgiIDIgMwojIDQwICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdHJpbmcuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zdHJpbmcu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRl
L3N0cmluZy5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kz
ODYtcmVkaGF0LWxpbnV4LzMuMC4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2lu
Y2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgpleHRlcm4gdm9pZCAqbWVtY3B5ICh2b2lkICpfX3Jlc3Ry
aWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0
IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCAqbWVtbW92ZSAodm9p
ZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLCBzaXplX3QgX19uKQogICAgIHRocm93ICgp
OwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19j
b25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgaW50IF9f
Yywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkICptZW1zZXQgKHZv
aWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtZW1j
bXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICpt
ZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiB2b2lkICpyYXdtZW1j
aHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtcmNociAoX19jb25zdCB2b2lkICpfX3MsIGlu
dCBfX2MsIHNpemVfdCBfX24pCiAgICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBjaGFy
ICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpzdHJuY2F0
IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj
LAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGlu
dCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY21wIChf
X2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwg
KF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpf
X3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL3hsb2NhbGUuaCIgMSAzCiMgMTA5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCmV4
dGVybiBpbnQgX19zdHJjb2xsX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyLCBfX2xvY2FsZV90IF9fbCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCmV4dGVybiBzaXplX3QgX19zdHJ4ZnJtX2wgKGNoYXIgKl9fZGVzdCwgX19jb25zdCBj
aGFyICpfX3NyYywgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2Nh
bGVfdCBfX2wpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFy
ICpfX3MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKCmV4dGVy
biBjaGFyICpzdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTU1ICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIg
KnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJudWwgKF9fY29uc3QgY2hh
ciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoK
CmV4dGVybiBzaXplX3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAq
X19yZWplY3QpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0
ZXJuIHNpemVfdCBzdHJzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNj
ZXB0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNo
YXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0
cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hhciAq
c3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVl
ZGxlKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4g
Y2hhciAqc3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVsaW0pCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpfX3N0cnRva19yIChj
aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19zYXZlX3B0cikgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSB0aHJvdyAo
KTsKCgoKCgoKZXh0ZXJuIHZvaWQgKm1lbW1lbSAoX19jb25zdCB2b2lkICpfX2hheXN0YWNrLCBz
aXplX3QgX19oYXlzdGFja2xlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpf
X25lZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVuKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9pZCAqX19tZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0
IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0
IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKZXh0ZXJuIHZvaWQgKm1lbXBjcHkgKHZvaWQg
Kl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpf
X3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBzaXplX3Qg
c3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcs
IHNpemVfdCBfX21heGxlbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9fZXJybnVtKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVf
dCBfX2J1ZmxlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3Ms
IHNpemVfdCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lk
ICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9p
ZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGJj
bXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpp
bmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpyaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBp
bnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGlu
dCBmZnMgKGludCBfX2kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
CmV4dGVybiBpbnQgZmZzbCAobG9uZyBpbnQgX19sKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBpbnQgZmZzbGwgKGxvbmcgbG9uZyBp
bnQgX19sbCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpl
eHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBp
bnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBz
aXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoK
CmV4dGVybiBpbnQgX19zdHJjYXNlY21wX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgX19zdHJuY2Fz
ZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnNl
cCAoY2hhciAqKl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHN0
cnZlcnNjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpzdHJzaWdu
YWwgKGludCBfX3NpZykgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKl9fc3RwY3B5IChjaGFyICpf
X3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIHRo
cm93ICgpOwpleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gY2hh
ciAqX19zdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAo
KTsKZXh0ZXJuIGNoYXIgKnN0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19u
KSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqc3RyZnJ5IChjaGFyICpfX3N0cmluZykgdGhyb3cg
KCk7CgoKZXh0ZXJuIHZvaWQgKm1lbWZyb2IgKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cg
KCk7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNlbmFtZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1l
KSB0aHJvdyAoKTsKIyAzNjQgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwp9CiMgNDEgIi91c3Iv
aW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0cmluZy5oIiAyIDMKIyA2NiAiL3Vzci9pbmNsdWRl
L2crKy12My9iaXRzL3N0ZF9jc3RyaW5nLmgiIDMKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcgOjpt
ZW1jcHk7CiAgdXNpbmcgOjptZW1tb3ZlOwogIHVzaW5nIDo6c3RyY3B5OwogIHVzaW5nIDo6c3Ry
bmNweTsKICB1c2luZyA6OnN0cmNhdDsKICB1c2luZyA6OnN0cm5jYXQ7CiAgdXNpbmcgOjptZW1j
bXA7CiAgdXNpbmcgOjpzdHJjbXA7CiAgdXNpbmcgOjpzdHJjb2xsOwogIHVzaW5nIDo6c3RybmNt
cDsKICB1c2luZyA6OnN0cnhmcm07CiAgdXNpbmcgOjpzdHJjc3BuOwogIHVzaW5nIDo6c3Ryc3Bu
OwogIHVzaW5nIDo6c3RydG9rOwogIHVzaW5nIDo6bWVtc2V0OwogIHVzaW5nIDo6c3RyZXJyb3I7
CiAgdXNpbmcgOjpzdHJsZW47CgogIHVzaW5nIDo6bWVtY2hyOwoKICBpbmxpbmUgdm9pZCoKICBt
ZW1jaHIodm9pZCogX19wLCBpbnQgX19jLCBzaXplX3QgX19uKQogIHsgcmV0dXJuIG1lbWNocihj
b25zdF9jYXN0PGNvbnN0IHZvaWQqPihfX3ApLCBfX2MsIF9fbik7IH0KCiAgdXNpbmcgOjpzdHJj
aHI7CgogIGlubGluZSBjaGFyKgogIHN0cmNocihjaGFyKiBfX3MxLCBpbnQgX19uKQogIHsgcmV0
dXJuIF9fYnVpbHRpbl9zdHJjaHIoY29uc3RfY2FzdDxjb25zdCBjaGFyKj4oX19zMSksIF9fbik7
IH0KCiAgdXNpbmcgOjpzdHJwYnJrOwoKICBpbmxpbmUgY2hhcioKICBzdHJwYnJrKGNoYXIqIF9f
czEsIGNvbnN0IGNoYXIqIF9fczIpCiAgeyByZXR1cm4gX19idWlsdGluX3N0cnBicmsoY29uc3Rf
Y2FzdDxjb25zdCBjaGFyKj4oX19zMSksIF9fczIpOyB9CgogIHVzaW5nIDo6c3RycmNocjsKCiAg
aW5saW5lIGNoYXIqCiAgc3RycmNocihjaGFyKiBfX3MxLCBpbnQgX19uKQogIHsgcmV0dXJuIF9f
YnVpbHRpbl9zdHJyY2hyKGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcio+KF9fczEpLCBfX24pOyB9Cgog
IHVzaW5nIDo6c3Ryc3RyOwoKICBpbmxpbmUgY2hhcioKICBzdHJzdHIoY2hhciogX19zMSwgY29u
c3QgY2hhciogX19zMikKICB7IHJldHVybiBfX2J1aWx0aW5fc3Ryc3RyKGNvbnN0X2Nhc3Q8Y29u
c3QgY2hhcio+KF9fczEpLCBfX3MyKTsgfQp9CiMgNzIgIi91c3IvaW5jbHVkZS9nKystdjMvYml0
cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9j
bGltaXRzLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NsaW1pdHMu
aCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMy4wLjIvaW5jbHVk
ZS9saW1pdHMuaCIgMSAzCiMgMTEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgv
My4wLjIvaW5jbHVkZS9saW1pdHMuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRo
YXQtbGludXgvMy4wLjIvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMSAzCgoKCgoKCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8zLjAuMi9pbmNsdWRlL2xpbWl0cy5oIiAxIDMK
IyAxMjUgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMy4wLjIvaW5jbHVkZS9s
aW1pdHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMjYgIi91c3IvaW5j
bHVkZS9saW1pdHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAi
L3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyAxNDQgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMSAzCiMgMTI2ICIvdXNyL2lu
Y2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9s
aW0uaCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2JpdHMvbG9j
YWxfbGltLmgiIDIgMwojIDEyNyAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAyIDMK
IyAxNDUgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvcG9zaXgyX2xpbS5oIiAxIDMKIyAxNDkgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1
ZGUvYml0cy94b3Blbl9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5o
IiAxIDMKIyAzNSAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDIgMwojIDEzNiAiL3Vz
ci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jk
c2l6ZS5oIiAxIDMKIyAxMzcgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAyIDMKIyAx
NTMgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgMTI2ICIvdXNyL2xpYi9nY2MtbGliL2kz
ODYtcmVkaGF0LWxpbnV4LzMuMC4yL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDggIi91c3IvbGli
L2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMy4wLjIvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAz
CiMgMTIgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMy4wLjIvaW5jbHVkZS9s
aW1pdHMuaCIgMiAzCiMgMzkgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY2xpbWl0cy5o
IiAyIDMKIyA3MyAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMK
IyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRsaWIuaCIgMSAzCiMgNzQgIi91
c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2crKy12My9iaXRzL3N0ZF9jc3RkZGVmLmgiIDEgMwojIDc1ICIvdXNyL2luY2x1ZGUvZysr
LXYzL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvbmV3
IiAxIDMKIyA0MCAiL3Vzci9pbmNsdWRlL2crKy12My9uZXciIDMKIyAxICIvdXNyL2luY2x1ZGUv
ZysrLXYzL2NzdGRkZWYiIDEgMwojIDQxICIvdXNyL2luY2x1ZGUvZysrLXYzL25ldyIgMiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2crKy12My9leGNlcHRpb24iIDEgMwojIDM5ICIvdXNyL2luY2x1ZGUv
ZysrLXYzL2V4Y2VwdGlvbiIgMwpleHRlcm4gIkMrKyIgewoKbmFtZXNwYWNlIHN0ZAp7CgoKCgoK
CiAgY2xhc3MgZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAgIGV4Y2VwdGlvbigpIHRocm93KCkg
eyB9CiAgICB2aXJ0dWFsIH5leGNlcHRpb24oKSB0aHJvdygpOwoKCiAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJvdygpOwogIH07CgoKCiAgY2xhc3MgYmFkX2V4Y2VwdGlv
biA6IHB1YmxpYyBleGNlcHRpb24KICB7CiAgcHVibGljOgogICAgYmFkX2V4Y2VwdGlvbigpIHRo
cm93KCkgeyB9CiAgICB2aXJ0dWFsIH5iYWRfZXhjZXB0aW9uKCkgdGhyb3coKTsKICB9OwoKCiAg
dHlwZWRlZiB2b2lkICgqdGVybWluYXRlX2hhbmRsZXIpICgpOwoKICB0eXBlZGVmIHZvaWQgKCp1
bmV4cGVjdGVkX2hhbmRsZXIpICgpOwoKCiAgdGVybWluYXRlX2hhbmRsZXIgc2V0X3Rlcm1pbmF0
ZSh0ZXJtaW5hdGVfaGFuZGxlcikgdGhyb3coKTsKCgogIHZvaWQgdGVybWluYXRlKCkgX19hdHRy
aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiAgdW5leHBlY3RlZF9oYW5kbGVyIHNldF91bmV4
cGVjdGVkKHVuZXhwZWN0ZWRfaGFuZGxlcikgdGhyb3coKTsKCgogIHZvaWQgdW5leHBlY3RlZCgp
IF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKIyA5NSAiL3Vzci9pbmNsdWRlL2crKy12
My9leGNlcHRpb24iIDMKICBib29sIHVuY2F1Z2h0X2V4Y2VwdGlvbigpIHRocm93KCk7Cn0KCn0K
IyA0MiAiL3Vzci9pbmNsdWRlL2crKy12My9uZXciIDIgMwoKZXh0ZXJuICJDKysiIHsKCm5hbWVz
cGFjZSBzdGQKewoKCiAgY2xhc3MgYmFkX2FsbG9jIDogcHVibGljIGV4Y2VwdGlvbgogIHsKICBw
dWJsaWM6CiAgICBiYWRfYWxsb2MoKSB0aHJvdygpIHsgfQogICAgdmlydHVhbCB+YmFkX2FsbG9j
KCkgdGhyb3coKTsKICB9OwoKICBzdHJ1Y3Qgbm90aHJvd190IHsgfTsKICBleHRlcm4gY29uc3Qg
bm90aHJvd190IG5vdGhyb3c7CgoKICB0eXBlZGVmIHZvaWQgKCpuZXdfaGFuZGxlcikoKTsKCiAg
bmV3X2hhbmRsZXIgc2V0X25ld19oYW5kbGVyKG5ld19oYW5kbGVyKTsKfQojIDc2ICIvdXNyL2lu
Y2x1ZGUvZysrLXYzL25ldyIgMwp2b2lkICpvcGVyYXRvciBuZXcoc3RkOjpzaXplX3QpIHRocm93
IChzdGQ6OmJhZF9hbGxvYyk7CnZvaWQgKm9wZXJhdG9yIG5ld1tdKHN0ZDo6c2l6ZV90KSB0aHJv
dyAoc3RkOjpiYWRfYWxsb2MpOwp2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkICopIHRocm93KCk7
CnZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCAqKSB0aHJvdygpOwp2b2lkICpvcGVyYXRvciBu
ZXcoc3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCAqb3Bl
cmF0b3IgbmV3W10oc3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsK
dm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCAqLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIHRocm93
KCk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCAqLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYp
IHRocm93KCk7CgoKaW5saW5lIHZvaWQgKm9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCwgdm9pZCAq
cGxhY2UpIHRocm93KCkgeyByZXR1cm4gcGxhY2U7IH0KaW5saW5lIHZvaWQgKm9wZXJhdG9yIG5l
d1tdKHN0ZDo6c2l6ZV90LCB2b2lkICpwbGFjZSkgdGhyb3coKSB7IHJldHVybiBwbGFjZTsgfQoK
fQojIDc2ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMwoKIyAx
ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2lvc2Z3ZC5oIiAxIDMKIyA3OCAiL3Vzci9p
bmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvYmFzZS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUv
ZysrLXYzL2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2VfdHlwZXMuaCIgMSAzCiMgNzkgIi91c3IvaW5j
bHVkZS9nKystdjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2cr
Ky12My9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX2Z1bmNzLmgiIDEgMwojIDgwICIvdXNyL2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9nKyst
djMvYml0cy9zdGxfaXRlcmF0b3IuaCIgMSAzCiMgODEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0
cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL2NvbmNl
cHRfY2hlY2suaCIgMSAzCiMgODIgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnb2Jh
c2UuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkCnsKCgoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRl
cjEsIGNsYXNzIF9Gb3J3YXJkSXRlcjIsIGNsYXNzIF9UcD4KaW5saW5lIHZvaWQgX19pdGVyX3N3
YXAoX0ZvcndhcmRJdGVyMSBfX2EsIF9Gb3J3YXJkSXRlcjIgX19iLCBfVHAqKQp7CiAgX1RwIF9f
dG1wID0gKl9fYTsKICAqX19hID0gKl9fYjsKICAqX19iID0gX190bXA7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfRm9yd2FyZEl0ZXIxLCBjbGFzcyBfRm9yd2FyZEl0ZXIyPgppbmxpbmUgdm9pZCBpdGVy
X3N3YXAoX0ZvcndhcmRJdGVyMSBfX2EsIF9Gb3J3YXJkSXRlcjIgX19iKQp7CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKICBfX2l0
ZXJfc3dhcChfX2EsIF9fYiwgX192YWx1ZV90eXBlKF9fYSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwPgppbmxpbmUgdm9pZCBzd2FwKF9UcCYgX19hLCBfVHAmIF9fYikKewoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICBfVHAgX190
bXAgPSBfX2E7CiAgX19hID0gX19iOwogIF9fYiA9IF9fdG1wOwp9CgoKCgoKCgp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwPgppbmxpbmUgY29uc3QgX1RwJiBtaW4oY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9U
cCYgX19iKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKCiAgaWYgKF9fYiA8IF9fYSkgcmV0dXJuIF9fYjsgcmV0dXJuIF9f
YTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIGNvbnN0IF9UcCYgbWF4KGNvbnN0IF9U
cCYgX19hLCBjb25zdCBfVHAmIF9fYikgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogIGlmIChfX2EgPCBfX2IpIHJldHVy
biBfX2I7IHJldHVybiBfX2E7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJl
PgppbmxpbmUgY29uc3QgX1RwJiBtaW4oY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iLCBf
Q29tcGFyZSBfX2NvbXApIHsKCiAgaWYgKF9fY29tcChfX2IsIF9fYSkpIHJldHVybiBfX2I7IHJl
dHVybiBfX2E7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUg
Y29uc3QgX1RwJiBtYXgoY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iLCBfQ29tcGFyZSBf
X2NvbXApIHsKCiAgaWYgKF9fY29tcChfX2EsIF9fYikpIHJldHVybiBfX2I7IHJldHVybiBfX2E7
Cn0KIyAxNjYgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwp0ZW1w
bGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1dEl0ZXIsIGNsYXNzIF9EaXN0YW5j
ZT4KaW5saW5lIF9PdXRwdXRJdGVyIF9fY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0
ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3RhZywgX0Rpc3RhbmNl
KikKewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19yZXN1bHQsICsrX19maXJzdCkK
ICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX0Rpc3Rh
bmNlPgppbmxpbmUgX091dHB1dEl0ZXIKX19jb3B5KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3Qs
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBy
YW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywgX0Rpc3RhbmNlKikKewogIGZvciAoX0Rpc3RhbmNl
IF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7IF9fbiA+IDA7IC0tX19uKSB7CiAgICAqX19yZXN1bHQg
PSAqX19maXJzdDsKICAgICsrX19maXJzdDsKICAgICsrX19yZXN1bHQ7CiAgfQogIHJldHVybiBf
X3Jlc3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIF9UcCoKX19jb3B5X3RyaXZp
YWwoY29uc3QgX1RwKiBfX2ZpcnN0LCBjb25zdCBfVHAqIF9fbGFzdCwgX1RwKiBfX3Jlc3VsdCkK
ewogIG1lbW1vdmUoX19yZXN1bHQsIF9fZmlyc3QsIHNpemVvZihfVHApICogKF9fbGFzdCAtIF9f
Zmlyc3QpKTsKICByZXR1cm4gX19yZXN1bHQgKyAoX19sYXN0IC0gX19maXJzdCk7Cn0KCgp0ZW1w
bGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1dEl0ZXI+CmlubGluZSBfT3V0cHV0
SXRlciBfX2NvcHlfYXV4MihfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIF9fZmFs
c2VfdHlwZSkKewogIHJldHVybiBfX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwKICAg
ICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCksCiAgICAgICAgICAgICAg
ICBfX2Rpc3RhbmNlX3R5cGUoX19maXJzdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRl
ciwgY2xhc3MgX091dHB1dEl0ZXI+CmlubGluZSBfT3V0cHV0SXRlciBfX2NvcHlfYXV4MihfSW5w
dXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIF9fdHJ1ZV90eXBlKQp7CiAgcmV0dXJuIF9f
Y29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgX19pdGVyYXRv
cl9jYXRlZ29yeShfX2ZpcnN0KSwKICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZShfX2Zp
cnN0KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBfVHAqIF9fY29weV9hdXgyKF9U
cCogX19maXJzdCwgX1RwKiBfX2xhc3QsIF9UcCogX19yZXN1bHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fdHJ1ZV90eXBlKQp7CiAgcmV0dXJuIF9fY29weV90cml2aWFsKF9fZmlyc3QsIF9f
bGFzdCwgX19yZXN1bHQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUgX1RwKiBfX2Nv
cHlfYXV4Mihjb25zdCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9UcCogX19sYXN0LCBfVHAqIF9fcmVz
dWx0LAogICAgICAgICAgICAgICAgICAgICAgICBfX3RydWVfdHlwZSkKewogIHJldHVybiBfX2Nv
cHlfdHJpdmlhbChfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsKfQoKCnRlbXBsYXRlIDxjbGFz
cyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX1RwPgppbmxpbmUgX091dHB1
dEl0ZXIgX19jb3B5X2F1eChfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwgX1RwKikK
ewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVHA+OjpoYXNfdHJpdmlhbF9hc3Np
Z25tZW50X29wZXJhdG9yCiAgICAgICAgICBfVHJpdmlhbDsKICByZXR1cm4gX19jb3B5X2F1eDIo
X19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX1RyaXZpYWwoKSk7Cn0KCnRlbXBsYXRlPHR5cGVu
YW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9PdXRwdXRJdGVyPgppbmxpbmUgX091dHB1dEl0ZXIg
X19jb3B5X25pMihfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIF9fdHJ1ZV90eXBl
KQp7CiAgcmV0dXJuIF9PdXRwdXRJdGVyKF9fY29weV9hdXgoX19maXJzdCwgX19sYXN0LCBfX3Jl
c3VsdC5iYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192YWx1ZV90eXBl
KF9fZmlyc3QpKSk7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9P
dXRwdXRJdGVyPgppbmxpbmUgX091dHB1dEl0ZXIgX19jb3B5X25pMihfSW5wdXRJdGVyIF9fZmly
c3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0
cHV0SXRlciBfX3Jlc3VsdCwgX19mYWxzZV90eXBlKQp7CiAgcmV0dXJuIF9fY29weV9hdXgoX19m
aXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX192YWx1ZV90eXBlKF9fZmlyc3QpKTsKfQoKdGVtcGxh
dGU8dHlwZW5hbWUgX0lucHV0SXRlciwgdHlwZW5hbWUgX091dHB1dEl0ZXI+CmlubGluZSBfT3V0
cHV0SXRlciBfX2NvcHlfbmkxKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwgX190
cnVlX3R5cGUpCnsKICB0eXBlZGVmIHR5cGVuYW1lIF9Jc19ub3JtYWxfaXRlcmF0b3I8X091dHB1
dEl0ZXI+OjpfTm9ybWFsIF9fTm9ybWFsOwogIHJldHVybiBfX2NvcHlfbmkyKF9fZmlyc3QuYmFz
ZSgpLCBfX2xhc3QuYmFzZSgpLCBfX3Jlc3VsdCwgX19Ob3JtYWwoKSk7Cn0KCnRlbXBsYXRlPHR5
cGVuYW1lIF9JbnB1dEl0ZXIsIHR5cGVuYW1lIF9PdXRwdXRJdGVyPgppbmxpbmUgX091dHB1dEl0
ZXIgX19jb3B5X25pMShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIF9fZmFsc2Vf
dHlwZSkKewogIHR5cGVkZWYgdHlwZW5hbWUgX0lzX25vcm1hbF9pdGVyYXRvcjxfT3V0cHV0SXRl
cj46Ol9Ob3JtYWwgX19Ob3JtYWw7CiAgcmV0dXJuIF9fY29weV9uaTIoX19maXJzdCwgX19sYXN0
LCBfX3Jlc3VsdCwgX19Ob3JtYWwoKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBj
bGFzcyBfT3V0cHV0SXRlcj4KaW5saW5lIF9PdXRwdXRJdGVyIGNvcHkoX0lucHV0SXRlciBfX2Zp
cnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0
ZXIgX19yZXN1bHQpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfbm9y
bWFsX2l0ZXJhdG9yPF9JbnB1dEl0ZXI+OjpfTm9ybWFsIF9fTm9ybWFsOwogICByZXR1cm4gX19j
b3B5X25pMShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LCBfX05vcm1hbCgpKTsKfQoKCgoKdGVt
cGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjEsIGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRl
cjIsCiAgICAgICAgICBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBfQmlkaXJlY3Rpb25hbEl0ZXIy
IF9fY29weV9iYWNrd2FyZChfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fZmlyc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fbGFz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlv
bmFsSXRlcjIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSopCnsKICB3aGlsZSAoX19maXJzdCAhPSBfX2xh
c3QpCiAgICAqLS1fX3Jlc3VsdCA9ICotLV9fbGFzdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVy
LCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBfQmlkaXJlY3Rpb25hbEl0ZXIgX19jb3B5X2JhY2t3
YXJkKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fcmVzdWx0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0
ZXJhdG9yX3RhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rp
c3RhbmNlKikKewogIGZvciAoX0Rpc3RhbmNlIF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7IF9fbiA+
IDA7IC0tX19uKQogICAgKi0tX19yZXN1bHQgPSAqLS1fX2xhc3Q7CiAgcmV0dXJuIF9fcmVzdWx0
Owp9CgoKCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMSwgY2xhc3MgX0Jp
ZGlyZWN0aW9uYWxJdGVyMiwKICAgICAgICAgIGNsYXNzIF9Cb29sVHlwZT4Kc3RydWN0IF9fY29w
eV9iYWNrd2FyZF9kaXNwYXRjaAp7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X0JpZGlyZWN0aW9uYWxJdGVyMT46Oml0ZXJhdG9yX2NhdGVnb3J5CiAgICAgICAgICBfQ2F0Owog
IHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9CaWRpcmVjdGlvbmFsSXRlcjE+Ojpk
aWZmZXJlbmNlX3R5cGUKICAgICAgICAgIF9EaXN0YW5jZTsKCiAgc3RhdGljIF9CaWRpcmVjdGlv
bmFsSXRlcjIgY29weShfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fZmlyc3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fbGFzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19yZXN1bHQpIHsK
ICAgIHJldHVybiBfX2NvcHlfYmFja3dhcmQoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX0Nh
dCgpLCAoX0Rpc3RhbmNlKikgMCk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0
IF9fY29weV9iYWNrd2FyZF9kaXNwYXRjaDxfVHAqLCBfVHAqLCBfX3RydWVfdHlwZT4KewogIHN0
YXRpYyBfVHAqIGNvcHkoY29uc3QgX1RwKiBfX2ZpcnN0LCBjb25zdCBfVHAqIF9fbGFzdCwgX1Rw
KiBfX3Jlc3VsdCkgewogICAgY29uc3QgcHRyZGlmZl90IF9OdW0gPSBfX2xhc3QgLSBfX2ZpcnN0
OwogICAgbWVtbW92ZShfX3Jlc3VsdCAtIF9OdW0sIF9fZmlyc3QsIHNpemVvZihfVHApICogX051
bSk7CiAgICByZXR1cm4gX19yZXN1bHQgLSBfTnVtOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBf
VHA+CnN0cnVjdCBfX2NvcHlfYmFja3dhcmRfZGlzcGF0Y2g8Y29uc3QgX1RwKiwgX1RwKiwgX190
cnVlX3R5cGU+CnsKICBzdGF0aWMgX1RwKiBjb3B5KGNvbnN0IF9UcCogX19maXJzdCwgY29uc3Qg
X1RwKiBfX2xhc3QsIF9UcCogX19yZXN1bHQpIHsKICAgIHJldHVybiBfX2NvcHlfYmFja3dhcmRf
ZGlzcGF0Y2g8X1RwKiwgX1RwKiwgX190cnVlX3R5cGU+CiAgICAgIDo6Y29weShfX2ZpcnN0LCBf
X2xhc3QsIF9fcmVzdWx0KTsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JJMSwgY2xhc3MgX0JJ
Mj4KaW5saW5lIF9CSTIgX19jb3B5X2JhY2t3YXJkX2F1eChfQkkxIF9fZmlyc3QsIF9CSTEgX19s
YXN0LCBfQkkyIF9fcmVzdWx0KSB7CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRzPHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQkkyPjo6dmFsdWVfdHlwZT4KICAgICAgICAgICAgICAg
ICAgICAgICAgOjpoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yCiAgICAgICAgICBfVHJp
dmlhbDsKICByZXR1cm4gX19jb3B5X2JhY2t3YXJkX2Rpc3BhdGNoPF9CSTEsIF9CSTIsIF9Ucml2
aWFsPgogICAgICAgICAgICAgIDo6Y29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsKfQoK
dGVtcGxhdGUgPHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+CmlubGluZSBfQkkyIF9fY29w
eV9iYWNrd2FyZF9vdXRwdXRfbm9ybWFsX2l0ZXJhdG9yKF9CSTEgX19maXJzdCwgX0JJMSBfX2xh
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9C
STIgX19yZXN1bHQsIF9fdHJ1ZV90eXBlKSB7CiAgcmV0dXJuIF9CSTIoX19jb3B5X2JhY2t3YXJk
X2F1eChfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LmJhc2UoKSkpOwp9Cgp0ZW1wbGF0ZSA8dHlw
ZW5hbWUgX0JJMSwgdHlwZW5hbWUgX0JJMj4KaW5saW5lIF9CSTIgX19jb3B5X2JhY2t3YXJkX291
dHB1dF9ub3JtYWxfaXRlcmF0b3IoX0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JJMiBfX3Jlc3VsdCwg
X19mYWxzZV90eXBlKXsKICByZXR1cm4gX19jb3B5X2JhY2t3YXJkX2F1eChfX2ZpcnN0LCBfX2xh
c3QsIF9fcmVzdWx0KTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+
CmlubGluZSBfQkkyIF9fY29weV9iYWNrd2FyZF9pbnB1dF9ub3JtYWxfaXRlcmF0b3IoX0JJMSBf
X2ZpcnN0LCBfQkkxIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfQkkyIF9fcmVzdWx0LCBfX3RydWVfdHlwZSkgewogIHR5cGVkZWYgdHlw
ZW5hbWUgX0lzX25vcm1hbF9pdGVyYXRvcjxfQkkyPjo6X05vcm1hbCBfX05vcm1hbDsKICByZXR1
cm4gX19jb3B5X2JhY2t3YXJkX291dHB1dF9ub3JtYWxfaXRlcmF0b3IoX19maXJzdC5iYXNlKCks
IF9fbGFzdC5iYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fcmVzdWx0LCBfX05vcm1hbCgpKTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIF9CSTEs
IHR5cGVuYW1lIF9CSTI+CmlubGluZSBfQkkyIF9fY29weV9iYWNrd2FyZF9pbnB1dF9ub3JtYWxf
aXRlcmF0b3IoX0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQkkyIF9fcmVzdWx0LCBfX2ZhbHNlX3R5cGUp
IHsKICB0eXBlZGVmIHR5cGVuYW1lIF9Jc19ub3JtYWxfaXRlcmF0b3I8X0JJMj46Ol9Ob3JtYWwg
X19Ob3JtYWw7CiAgcmV0dXJuIF9fY29weV9iYWNrd2FyZF9vdXRwdXRfbm9ybWFsX2l0ZXJhdG9y
KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fTm9ybWFsKCkpOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgX0JJ
MSwgdHlwZW5hbWUgX0JJMj4KaW5saW5lIF9CSTIgY29weV9iYWNrd2FyZChfQkkxIF9fZmlyc3Qs
IF9CSTEgX19sYXN0LCBfQkkyIF9fcmVzdWx0KQp7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OwoKCgogIHR5cGVkZWYgdHlwZW5hbWUgX0lzX25vcm1hbF9pdGVyYXRvcjxfQkkxPjo6X05vcm1h
bCBfX05vcm1hbDsKICByZXR1cm4gX19jb3B5X2JhY2t3YXJkX2lucHV0X25vcm1hbF9pdGVyYXRv
cihfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fTm9ybWFsKCkpOwp9CgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
cHV0SXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9PdXRwdXRJdGVyPgpwYWlyPF9JbnB1dEl0ZXIs
IF9PdXRwdXRJdGVyPiBfX2NvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVz
dWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRv
cl90YWcpIHsKICBmb3IgKCA7IF9fY291bnQgPiAwOyAtLV9fY291bnQpIHsKICAgICpfX3Jlc3Vs
dCA9ICpfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJu
IHBhaXI8X0lucHV0SXRlciwgX091dHB1dEl0ZXI+KF9fZmlyc3QsIF9fcmVzdWx0KTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9SQUl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfT3V0cHV0SXRlcj4KaW5s
aW5lIHBhaXI8X1JBSXRlciwgX091dHB1dEl0ZXI+Cl9fY29weV9uKF9SQUl0ZXIgX19maXJzdCwg
X1NpemUgX19jb3VudCwKICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsCiAgICAgICAgIHJh
bmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKSB7CiAgX1JBSXRlciBfX2xhc3QgPSBfX2ZpcnN0ICsg
X19jb3VudDsKICByZXR1cm4gcGFpcjxfUkFJdGVyLCBfT3V0cHV0SXRlcj4oX19sYXN0LCBjb3B5
KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0
ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfT3V0cHV0SXRlcj4KaW5saW5lIHBhaXI8X0lucHV0SXRl
ciwgX091dHB1dEl0ZXI+Cl9fY29weV9uKF9JbnB1dEl0ZXIgX19maXJzdCwgX1NpemUgX19jb3Vu
dCwgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsKICByZXR1cm4gX19jb3B5X24oX19maXJzdCwgX19j
b3VudCwgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoX19m
aXJzdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1NpemUsIGNsYXNz
IF9PdXRwdXRJdGVyPgppbmxpbmUgcGFpcjxfSW5wdXRJdGVyLCBfT3V0cHV0SXRlcj4KY29weV9u
KF9JbnB1dEl0ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwgX091dHB1dEl0ZXIgX19yZXN1bHQp
CnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgoKICByZXR1cm4gX19jb3B5X24oX19maXJzdCwgX19jb3VudCwgX19y
ZXN1bHQpOwp9CgoKCgoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgp2
b2lkIGZpbGwoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNvbnN0
IF9UcCYgX192YWx1ZSkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgZm9yICggOyBfX2ZpcnN0
ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgKl9fZmlyc3QgPSBfX3ZhbHVlOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX091dHB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfVHA+Cl9PdXRwdXRJdGVy
IGZpbGxfbihfT3V0cHV0SXRlciBfX2ZpcnN0LCBfU2l6ZSBfX24sIGNvbnN0IF9UcCYgX192YWx1
ZSkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKCiAgZm9yICggOyBfX24gPiAwOyAtLV9fbiwgKytfX2ZpcnN0
KQogICAgKl9fZmlyc3QgPSBfX3ZhbHVlOwogIHJldHVybiBfX2ZpcnN0Owp9CgoKCmlubGluZSB2
b2lkIGZpbGwodW5zaWduZWQgY2hhciogX19maXJzdCwgdW5zaWduZWQgY2hhciogX19sYXN0LAog
ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXImIF9fYykKewogIHVuc2lnbmVkIGNo
YXIgX190bXAgPSBfX2M7CiAgbWVtc2V0KF9fZmlyc3QsIF9fdG1wLCBfX2xhc3QgLSBfX2ZpcnN0
KTsKfQoKaW5saW5lIHZvaWQgZmlsbChzaWduZWQgY2hhciogX19maXJzdCwgc2lnbmVkIGNoYXIq
IF9fbGFzdCwKICAgICAgICAgICAgICAgICBjb25zdCBzaWduZWQgY2hhciYgX19jKQp7CiAgc2ln
bmVkIGNoYXIgX190bXAgPSBfX2M7CiAgbWVtc2V0KF9fZmlyc3QsIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KF9fdG1wKSwgX19sYXN0IC0gX19maXJzdCk7Cn0KCmlubGluZSB2b2lkIGZpbGwo
Y2hhciogX19maXJzdCwgY2hhciogX19sYXN0LCBjb25zdCBjaGFyJiBfX2MpCnsKICBjaGFyIF9f
dG1wID0gX19jOwogIG1lbXNldChfX2ZpcnN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihf
X3RtcCksIF9fbGFzdCAtIF9fZmlyc3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1NpemU+CmlubGlu
ZSB1bnNpZ25lZCBjaGFyKiBmaWxsX24odW5zaWduZWQgY2hhciogX19maXJzdCwgX1NpemUgX19u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXImIF9fYykK
ewogIGZpbGwoX19maXJzdCwgX19maXJzdCArIF9fbiwgX19jKTsKICByZXR1cm4gX19maXJzdCAr
IF9fbjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9TaXplPgppbmxpbmUgc2lnbmVkIGNoYXIqIGZpbGxf
bihjaGFyKiBfX2ZpcnN0LCBfU2l6ZSBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHNpZ25lZCBjaGFyJiBfX2MpCnsKICBmaWxsKF9fZmlyc3QsIF9fZmlyc3QgKyBfX24sIF9f
Yyk7CiAgcmV0dXJuIF9fZmlyc3QgKyBfX247Cn0KCnRlbXBsYXRlIDxjbGFzcyBfU2l6ZT4KaW5s
aW5lIGNoYXIqIGZpbGxfbihjaGFyKiBfX2ZpcnN0LCBfU2l6ZSBfX24sIGNvbnN0IGNoYXImIF9f
YykKewogIGZpbGwoX19maXJzdCwgX19maXJzdCArIF9fbiwgX19jKTsKICByZXR1cm4gX19maXJz
dCArIF9fbjsKfQoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0
SXRlcjI+CnBhaXI8X0lucHV0SXRlcjEsIF9JbnB1dEl0ZXIyPiBtaXNtYXRjaChfSW5wdXRJdGVy
MSBfX2ZpcnN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1
dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
SW5wdXRJdGVyMiBfX2ZpcnN0MikKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAg
d2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgKl9fZmlyc3QxID09ICpfX2ZpcnN0Mikgewog
ICAgKytfX2ZpcnN0MTsKICAgICsrX19maXJzdDI7CiAgfQogIHJldHVybiBwYWlyPF9JbnB1dEl0
ZXIxLCBfSW5wdXRJdGVyMj4oX19maXJzdDEsIF9fZmlyc3QyKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4K
cGFpcjxfSW5wdXRJdGVyMSwgX0lucHV0SXRlcjI+IG1pc21hdGNoKF9JbnB1dEl0ZXIxIF9fZmly
c3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjEg
X19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0
ZXIyIF9fZmlyc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Jp
bmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogIHdo
aWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fYmluYXJ5X3ByZWQoKl9fZmlyc3QxLCAqX19m
aXJzdDIpKSB7CiAgICArK19fZmlyc3QxOwogICAgKytfX2ZpcnN0MjsKICB9CiAgcmV0dXJuIHBh
aXI8X0lucHV0SXRlcjEsIF9JbnB1dEl0ZXIyPihfX2ZpcnN0MSwgX19maXJzdDIpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyPgppbmxpbmUgYm9vbCBl
cXVhbChfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAg
ICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIpCnsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CgoKCiAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxOyArK19fZmlyc3QxLCArK19fZmlyc3Qy
KQogICAgaWYgKCEoKl9fZmlyc3QxID09ICpfX2ZpcnN0MikpCiAgICAgIHJldHVybiBmYWxzZTsK
ICByZXR1cm4gdHJ1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5w
dXRJdGVyMiwgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KaW5saW5lIGJvb2wgZXF1YWwoX0lucHV0
SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgIF9J
bnB1dEl0ZXIyIF9fZmlyc3QyLCBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQpCnsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKCiAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxOyArK19fZmly
c3QxLCArK19fZmlyc3QyKQogICAgaWYgKCFfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0MSwgKl9fZmly
c3QyKSkKICAgICAgcmV0dXJuIGZhbHNlOwogIHJldHVybiB0cnVlOwp9CgoKCgoKdGVtcGxhdGUg
PGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMj4KYm9vbCBsZXhpY29ncmFwaGlj
YWxfY29tcGFyZShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRl
cjIgX19sYXN0MikKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgZm9yICggOyBf
X2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIKICAgICAgICA7ICsrX19m
aXJzdDEsICsrX19maXJzdDIpIHsKICAgIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpCiAgICAg
IHJldHVybiB0cnVlOwogICAgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICAgcmV0dXJu
IGZhbHNlOwogIH0KICByZXR1cm4gX19maXJzdDEgPT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBf
X2xhc3QyOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIy
LCBjbGFzcyBfQ29tcGFyZT4KYm9vbCBsZXhpY29ncmFwaGljYWxfY29tcGFyZShfSW5wdXRJdGVy
MSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApCnsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCiAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIK
ICAgICAgICA7ICsrX19maXJzdDEsICsrX19maXJzdDIpIHsKICAgIGlmIChfX2NvbXAoKl9fZmly
c3QxLCAqX19maXJzdDIpKQogICAgICByZXR1cm4gdHJ1ZTsKICAgIGlmIChfX2NvbXAoKl9fZmly
c3QyLCAqX19maXJzdDEpKQogICAgICByZXR1cm4gZmFsc2U7CiAgfQogIHJldHVybiBfX2ZpcnN0
MSA9PSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDI7Cn0KCmlubGluZSBib29sCmxleGlj
b2dyYXBoaWNhbF9jb21wYXJlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fZmlyc3QxLAogICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2xhc3QxLAogICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0MiwKICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19sYXN0MikKewogIGNvbnN0IHNpemVf
dCBfX2xlbjEgPSBfX2xhc3QxIC0gX19maXJzdDE7CiAgY29uc3Qgc2l6ZV90IF9fbGVuMiA9IF9f
bGFzdDIgLSBfX2ZpcnN0MjsKICBjb25zdCBpbnQgX19yZXN1bHQgPSBtZW1jbXAoX19maXJzdDEs
IF9fZmlyc3QyLCBtaW4oX19sZW4xLCBfX2xlbjIpKTsKICByZXR1cm4gX19yZXN1bHQgIT0gMCA/
IF9fcmVzdWx0IDwgMCA6IF9fbGVuMSA8IF9fbGVuMjsKfQoKaW5saW5lIGJvb2wgbGV4aWNvZ3Jh
cGhpY2FsX2NvbXBhcmUoY29uc3QgY2hhciogX19maXJzdDEsIGNvbnN0IGNoYXIqIF9fbGFzdDEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIF9fZmlyc3Qy
LCBjb25zdCBjaGFyKiBfX2xhc3QyKQp7CgogIHJldHVybiBsZXhpY29ncmFwaGljYWxfY29tcGFy
ZSgoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2ZpcnN0MSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGNvbnN0IHNpZ25lZCBjaGFyKikgX19sYXN0MSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNvbnN0IHNpZ25lZCBjaGFyKikgX19maXJzdDIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fbGFzdDIpOwoKCgoK
Cgp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyPgppbnQg
X19sZXhpY29ncmFwaGljYWxfY29tcGFyZV8zd2F5KF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5w
dXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1
dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyKQp7CiAgd2hpbGUgKF9fZmlyc3Qx
ICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikgewogICAgaWYgKCpfX2ZpcnN0MSA8
ICpfX2ZpcnN0MikKICAgICAgcmV0dXJuIC0xOwogICAgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0
MSkKICAgICAgcmV0dXJuIDE7CiAgICArK19fZmlyc3QxOwogICAgKytfX2ZpcnN0MjsKICB9CiAg
aWYgKF9fZmlyc3QyID09IF9fbGFzdDIpIHsKICAgIHJldHVybiAhKF9fZmlyc3QxID09IF9fbGFz
dDEpOwogIH0KICBlbHNlIHsKICAgIHJldHVybiAtMTsKICB9Cn0KCmlubGluZSBpbnQKX19sZXhp
Y29ncmFwaGljYWxfY29tcGFyZV8zd2F5KGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fZmlyc3QxLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19sYXN0
MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9f
Zmlyc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh
ciogX19sYXN0MikKewogIGNvbnN0IHB0cmRpZmZfdCBfX2xlbjEgPSBfX2xhc3QxIC0gX19maXJz
dDE7CiAgY29uc3QgcHRyZGlmZl90IF9fbGVuMiA9IF9fbGFzdDIgLSBfX2ZpcnN0MjsKICBjb25z
dCBpbnQgX19yZXN1bHQgPSBtZW1jbXAoX19maXJzdDEsIF9fZmlyc3QyLCBtaW4oX19sZW4xLCBf
X2xlbjIpKTsKICByZXR1cm4gX19yZXN1bHQgIT0gMCA/IF9fcmVzdWx0CiAgICAgICAgICAgICAg
ICAgICAgICAgOiAoX19sZW4xID09IF9fbGVuMiA/IDAgOiAoX19sZW4xIDwgX19sZW4yID8gLTEg
OiAxKSk7Cn0KCmlubGluZSBpbnQKX19sZXhpY29ncmFwaGljYWxfY29tcGFyZV8zd2F5KGNvbnN0
IGNoYXIqIF9fZmlyc3QxLCBjb25zdCBjaGFyKiBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogX19maXJzdDIsIGNvbnN0IGNoYXIqIF9fbGFzdDIpCnsK
CiAgcmV0dXJuIF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfM3dheSgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2ZpcnN0MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2xhc3QxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fZmlyc3Qy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9f
bGFzdDIpOwoKCgoKCgp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1
dEl0ZXIyPgppbnQgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfM3dheShfSW5wdXRJdGVyMSBfX2Zp
cnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIpCnsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKCgogIHJldHVybiBfX2xleGljb2dyYXBoaWNhbF9jb21wYXJl
XzN3YXkoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyKTsKfQoKfQojIDYyICIv
dXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2FsZ29yaXRobS5oIiAyIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvZysrLXYzL2JpdHMvc3RsX2NvbnN0cnVjdC5oIiAxIDMKIyA2MyAiL3Vzci9pbmNsdWRl
L2crKy12My9iaXRzL3N0bF9jb25zdHJ1Y3QuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nKystdjMv
bmV3IiAxIDMKIyA2NCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9jb25zdHJ1Y3QuaCIg
MiAzCgpuYW1lc3BhY2Ugc3RkCnsKIyA3NiAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9j
b25zdHJ1Y3QuaCIgMwp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CmlubGluZSB2b2lk
IF9Db25zdHJ1Y3QoX1QxKiBfX3AsIGNvbnN0IF9UMiYgX192YWx1ZSkgewpuZXcgKCh2b2lkKikg
X19wKSBfVDEoX192YWx1ZSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVDE+CmlubGluZSB2b2lkIF9D
b25zdHJ1Y3QoX1QxKiBfX3ApIHsKICBuZXcgKCh2b2lkKikgX19wKSBfVDEoKTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9UcD4KaW5saW5lIHZvaWQgX0Rlc3Ryb3koX1RwKiBfX3BvaW50ZXIpIHsKICBf
X3BvaW50ZXItPn5fVHAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CnZv
aWQKX19kZXN0cm95X2F1eChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0
b3IgX19sYXN0LCBfX2ZhbHNlX3R5cGUpCnsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyAr
K19fZmlyc3QpCiAgICBkZXN0cm95KCYqX19maXJzdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9y
d2FyZEl0ZXJhdG9yPgppbmxpbmUgdm9pZCBfX2Rlc3Ryb3lfYXV4KF9Gb3J3YXJkSXRlcmF0b3Is
IF9Gb3J3YXJkSXRlcmF0b3IsIF9fdHJ1ZV90eXBlKSB7fQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3
YXJkSXRlcmF0b3IsIGNsYXNzIF9UcD4KaW5saW5lIHZvaWQKX19kZXN0cm95KF9Gb3J3YXJkSXRl
cmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsIF9UcCopCnsKICB0eXBlZGVm
IHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1RwPjo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcgogICAg
ICAgICAgX1RyaXZpYWxfZGVzdHJ1Y3RvcjsKICBfX2Rlc3Ryb3lfYXV4KF9fZmlyc3QsIF9fbGFz
dCwgX1RyaXZpYWxfZGVzdHJ1Y3RvcigpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRl
cmF0b3I+CmlubGluZSB2b2lkIF9EZXN0cm95KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zv
cndhcmRJdGVyYXRvciBfX2xhc3QpIHsKICBfX2Rlc3Ryb3koX19maXJzdCwgX19sYXN0LCBfX3Zh
bHVlX3R5cGUoX19maXJzdCkpOwp9CgppbmxpbmUgdm9pZCBfRGVzdHJveShjaGFyKiwgY2hhciop
IHt9CmlubGluZSB2b2lkIF9EZXN0cm95KGludCosIGludCopIHt9CmlubGluZSB2b2lkIF9EZXN0
cm95KGxvbmcqLCBsb25nKikge30KaW5saW5lIHZvaWQgX0Rlc3Ryb3koZmxvYXQqLCBmbG9hdCop
IHt9CmlubGluZSB2b2lkIF9EZXN0cm95KGRvdWJsZSosIGRvdWJsZSopIHt9CmlubGluZSB2b2lk
IF9EZXN0cm95KHdjaGFyX3QqLCB3Y2hhcl90Kikge30KCgoKCnRlbXBsYXRlIDxjbGFzcyBfVDEs
IGNsYXNzIF9UMj4KaW5saW5lIHZvaWQgY29uc3RydWN0KF9UMSogX19wLCBjb25zdCBfVDImIF9f
dmFsdWUpIHsKICBfQ29uc3RydWN0KF9fcCwgX192YWx1ZSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
VDE+CmlubGluZSB2b2lkIGNvbnN0cnVjdChfVDEqIF9fcCkgewogIF9Db25zdHJ1Y3QoX19wKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIHZvaWQgZGVzdHJveShfVHAqIF9fcG9pbnRl
cikgewogIF9EZXN0cm95KF9fcG9pbnRlcik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0
ZXJhdG9yPgppbmxpbmUgdm9pZCBkZXN0cm95KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0Zv
cndhcmRJdGVyYXRvciBfX2xhc3QpIHsKICBfRGVzdHJveShfX2ZpcnN0LCBfX2xhc3QpOwp9Cgp9
CiMgNjMgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfYWxnb3JpdGhtLmgiIDIgMwojIDEg
Ii91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfdW5pbml0aWFsaXplZC5oIiAxIDMKIyA2MyAi
L3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0bF91bmluaXRpYWxpemVkLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdHJpbmcuaCIgMSAzCiMgNjQgIi91c3IvaW5jbHVk
ZS9nKystdjMvYml0cy9zdGxfdW5pbml0aWFsaXplZC5oIiAyIDMKCm5hbWVzcGFjZSBzdGQKewoK
CgoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGlu
ZSBfRm9yd2FyZEl0ZXIKX191bmluaXRpYWxpemVkX2NvcHlfYXV4KF9JbnB1dEl0ZXIgX19maXJz
dCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0
ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX3RydWVfdHlwZSkKewogIHJl
dHVybiBjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0lucHV0SXRlciwgY2xhc3MgX0ZvcndhcmRJdGVyPgpfRm9yd2FyZEl0ZXIKX191bmluaXRpYWxp
emVkX2NvcHlfYXV4KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2ZhbHNlX3R5cGUpCnsKICBfRm9yd2FyZEl0ZXIgX19jdXIgPSBfX3Jlc3Vs
dDsKICB0cnkgewogICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0LCArK19f
Y3VyKQogICAgICBfQ29uc3RydWN0KCYqX19jdXIsICpfX2ZpcnN0KTsKICAgIHJldHVybiBfX2N1
cjsKICB9CiAgY2F0Y2goLi4uKSB7IF9EZXN0cm95KF9fcmVzdWx0LCBfX2N1cik7IHRocm93OyB9
Owp9CgoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xh
c3MgX1RwPgppbmxpbmUgX0ZvcndhcmRJdGVyCl9fdW5pbml0aWFsaXplZF9jb3B5KF9JbnB1dEl0
ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgIF9Gb3J3
YXJkSXRlciBfX3Jlc3VsdCwgX1RwKikKewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0
czxfVHA+Ojppc19QT0RfdHlwZSBfSXNfUE9EOwogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfY29w
eV9hdXgoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX0lzX1BPRCgpKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5lIF9Gb3J3YXJkSXRl
cgogIHVuaW5pdGlhbGl6ZWRfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19s
YXN0LAogICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQpCnsKICByZXR1
cm4gX191bmluaXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX192YWx1ZV90eXBlKF9fcmVzdWx0KSk7Cn0KCmlubGlu
ZSBjaGFyKiB1bmluaXRpYWxpemVkX2NvcHkoY29uc3QgY2hhciogX19maXJzdCwgY29uc3QgY2hh
ciogX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIF9fcmVzdWx0
KSB7CiAgbWVtbW92ZShfX3Jlc3VsdCwgX19maXJzdCwgX19sYXN0IC0gX19maXJzdCk7CiAgcmV0
dXJuIF9fcmVzdWx0ICsgKF9fbGFzdCAtIF9fZmlyc3QpOwp9CgppbmxpbmUgd2NoYXJfdCoKdW5p
bml0aWFsaXplZF9jb3B5KGNvbnN0IHdjaGFyX3QqIF9fZmlyc3QsIGNvbnN0IHdjaGFyX3QqIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgIHdjaGFyX3QqIF9fcmVzdWx0KQp7CiAgbWVtbW92ZShf
X3Jlc3VsdCwgX19maXJzdCwgc2l6ZW9mKHdjaGFyX3QpICogKF9fbGFzdCAtIF9fZmlyc3QpKTsK
ICByZXR1cm4gX19yZXN1bHQgKyAoX19sYXN0IC0gX19maXJzdCk7Cn0KCgoKdGVtcGxhdGUgPGNs
YXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CnBhaXI8X0lu
cHV0SXRlciwgX0ZvcndhcmRJdGVyPgpfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9JbnB1dEl0ZXIg
X19maXJzdCwgX1NpemUgX19jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0
ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKQp7
CiAgX0ZvcndhcmRJdGVyIF9fY3VyID0gX19yZXN1bHQ7CiAgdHJ5IHsKICAgIGZvciAoIDsgX19j
b3VudCA+IDAgOyAtLV9fY291bnQsICsrX19maXJzdCwgKytfX2N1cikKICAgICAgX0NvbnN0cnVj
dCgmKl9fY3VyLCAqX19maXJzdCk7CiAgICByZXR1cm4gcGFpcjxfSW5wdXRJdGVyLCBfRm9yd2Fy
ZEl0ZXI+KF9fZmlyc3QsIF9fY3VyKTsKICB9CiAgY2F0Y2goLi4uKSB7IF9EZXN0cm95KF9fcmVz
dWx0LCBfX2N1cik7IHRocm93OyB9Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBwYWlyPF9SYW5kb21B
Y2Nlc3NJdGVyLCBfRm9yd2FyZEl0ZXI+Cl9fdW5pbml0aWFsaXplZF9jb3B5X24oX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICBf
Rm9yd2FyZEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vz
c19pdGVyYXRvcl90YWcpIHsKICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QgPSBfX2ZpcnN0ICsg
X19jb3VudDsKICByZXR1cm4gcGFpcjxfUmFuZG9tQWNjZXNzSXRlciwgX0ZvcndhcmRJdGVyPigK
ICAgICAgICAgICAgICAgICBfX2xhc3QsCiAgICAgICAgICAgICAgICAgdW5pbml0aWFsaXplZF9j
b3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1
dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBwYWlyPF9JbnB1
dEl0ZXIsIF9Gb3J3YXJkSXRlcj4KX191bmluaXRpYWxpemVkX2NvcHlfbihfSW5wdXRJdGVyIF9f
Zmlyc3QsIF9TaXplIF9fY291bnQsCiAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBf
X3Jlc3VsdCkgewogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9fZmlyc3QsIF9fY291
bnQsIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3Jf
Y2F0ZWdvcnkoX19maXJzdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3Mg
X1NpemUsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5lIHBhaXI8X0lucHV0SXRlciwgX0Zvcndh
cmRJdGVyPgp1bmluaXRpYWxpemVkX2NvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9f
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCkgewogIHJl
dHVybiBfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9fZmlyc3QsIF9fY291bnQsIF9fcmVzdWx0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoX19maXJz
dCkpOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5l
IHZvaWQKX191bmluaXRpYWxpemVkX2ZpbGxfYXV4KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9y
d2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3gs
IF9fdHJ1ZV90eXBlKQp7CiAgZmlsbChfX2ZpcnN0LCBfX2xhc3QsIF9feCk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4Kdm9pZApfX3VuaW5pdGlhbGl6ZWRfZmls
bF9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCwgX19mYWxzZV90eXBlKQp7CiAgX0Zvcndh
cmRJdGVyIF9fY3VyID0gX19maXJzdDsKICB0cnkgewogICAgZm9yICggOyBfX2N1ciAhPSBfX2xh
c3Q7ICsrX19jdXIpCiAgICAgIF9Db25zdHJ1Y3QoJipfX2N1ciwgX194KTsKICB9CiAgY2F0Y2go
Li4uKSB7IF9EZXN0cm95KF9fZmlyc3QsIF9fY3VyKTsgdGhyb3c7IH07Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX1RwMT4KaW5saW5lIHZvaWQgX191
bmluaXRpYWxpemVkX2ZpbGwoX0ZvcndhcmRJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNvbnN0IF9UcCYgX194LCBfVHAx
KikKewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVHAxPjo6aXNfUE9EX3R5cGUg
X0lzX1BPRDsKICBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9hdXgoX19maXJzdCwgX19sYXN0LCBfX3gs
IF9Jc19QT0QoKSk7Cgp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+
CmlubGluZSB2b2lkIHVuaW5pdGlhbGl6ZWRfZmlsbChfRm9yd2FyZEl0ZXIgX19maXJzdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCkKewogIF9fdW5pbml0aWFsaXpl
ZF9maWxsKF9fZmlyc3QsIF9fbGFzdCwgX194LCBfX3ZhbHVlX3R5cGUoX19maXJzdCkpOwp9CgoK
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfVHA+Cmlu
bGluZSBfRm9yd2FyZEl0ZXIKX191bmluaXRpYWxpemVkX2ZpbGxfbl9hdXgoX0ZvcndhcmRJdGVy
IF9fZmlyc3QsIF9TaXplIF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1Rw
JiBfX3gsIF9fdHJ1ZV90eXBlKQp7CiAgcmV0dXJuIGZpbGxfbihfX2ZpcnN0LCBfX24sIF9feCk7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfVHA+
Cl9Gb3J3YXJkSXRlcgpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2F1eChfRm9yd2FyZEl0ZXIgX19m
aXJzdCwgX1NpemUgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9f
eCwgX19mYWxzZV90eXBlKQp7CiAgX0ZvcndhcmRJdGVyIF9fY3VyID0gX19maXJzdDsKICB0cnkg
ewogICAgZm9yICggOyBfX24gPiAwOyAtLV9fbiwgKytfX2N1cikKICAgICAgX0NvbnN0cnVjdCgm
Kl9fY3VyLCBfX3gpOwogICAgcmV0dXJuIF9fY3VyOwogIH0KICBjYXRjaCguLi4pIHsgX0Rlc3Ry
b3koX19maXJzdCwgX19jdXIpOyB0aHJvdzsgfTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJk
SXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9UcCwgY2xhc3MgX1RwMT4KaW5saW5lIF9Gb3J3YXJk
SXRlcgpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfU2l6ZSBf
X24sIGNvbnN0IF9UcCYgX194LCBfVHAxKikKewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3Ry
YWl0czxfVHAxPjo6aXNfUE9EX3R5cGUgX0lzX1BPRDsKICByZXR1cm4gX191bmluaXRpYWxpemVk
X2ZpbGxfbl9hdXgoX19maXJzdCwgX19uLCBfX3gsIF9Jc19QT0QoKSk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfVHA+CmlubGluZSBfRm9yd2Fy
ZEl0ZXIKdW5pbml0aWFsaXplZF9maWxsX24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9TaXplIF9f
biwgY29uc3QgX1RwJiBfX3gpCnsKICByZXR1cm4gX191bmluaXRpYWxpemVkX2ZpbGxfbihfX2Zp
cnN0LCBfX24sIF9feCwgX192YWx1ZV90eXBlKF9fZmlyc3QpKTsKfQojIDI2MCAiL3Vzci9pbmNs
dWRlL2crKy12My9iaXRzL3N0bF91bmluaXRpYWxpemVkLmgiIDMKdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX0ZvcndhcmRJdGVyPgppbmxpbmUg
X0ZvcndhcmRJdGVyCl9fdW5pbml0aWFsaXplZF9jb3B5X2NvcHkoX0lucHV0SXRlcjEgX19maXJz
dDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0
SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0KQp7CiAgX0ZvcndhcmRJdGVyIF9fbWlkID0gdW5p
bml0aWFsaXplZF9jb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCk7CiAgdHJ5IHsKICAg
IHJldHVybiB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdDIsIF9fbGFzdDIsIF9fbWlkKTsKICB9
CiAgY2F0Y2goLi4uKSB7IF9EZXN0cm95KF9fcmVzdWx0LCBfX21pZCk7IHRocm93OyB9Owp9CgoK
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9JbnB1dEl0
ZXI+CmlubGluZSBfRm9yd2FyZEl0ZXIKX191bmluaXRpYWxpemVkX2ZpbGxfY29weShfRm9yd2Fy
ZEl0ZXIgX19yZXN1bHQsIF9Gb3J3YXJkSXRlciBfX21pZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBfVHAmIF9feCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVy
IF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0KQp7CiAgdW5pbml0aWFsaXplZF9maWxsKF9fcmVz
dWx0LCBfX21pZCwgX194KTsKICB0cnkgewogICAgcmV0dXJuIHVuaW5pdGlhbGl6ZWRfY29weShf
X2ZpcnN0LCBfX2xhc3QsIF9fbWlkKTsKICB9CiAgY2F0Y2goLi4uKSB7IF9EZXN0cm95KF9fcmVz
dWx0LCBfX21pZCk7IHRocm93OyB9Owp9CgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwg
Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+CmlubGluZSB2b2lkCl9fdW5pbml0aWFsaXpl
ZF9jb3B5X2ZpbGwoX0lucHV0SXRlciBfX2ZpcnN0MSwgX0lucHV0SXRlciBfX2xhc3QxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVy
IF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3gpCnsKICBf
Rm9yd2FyZEl0ZXIgX19taWQyID0gdW5pbml0aWFsaXplZF9jb3B5KF9fZmlyc3QxLCBfX2xhc3Qx
LCBfX2ZpcnN0Mik7CiAgdHJ5IHsKICAgIHVuaW5pdGlhbGl6ZWRfZmlsbChfX21pZDIsIF9fbGFz
dDIsIF9feCk7CiAgfQogIGNhdGNoKC4uLikgeyBfRGVzdHJveShfX2ZpcnN0MiwgX19taWQyKTsg
dGhyb3c7IH07Cn0KCn0KIyA2NCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9hbGdvcml0
aG0uaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0bF90ZW1wYnVmLmgiIDEg
MwojIDYzICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX3RlbXBidWYuaCIgMwpuYW1lc3Bh
Y2Ugc3RkCnsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnBhaXI8X1RwKiwgcHRyZGlmZl90PgpfX2dl
dF90ZW1wb3JhcnlfYnVmZmVyKHB0cmRpZmZfdCBfX2xlbiwgX1RwKikKewogIGlmIChfX2xlbiA+
IHB0cmRpZmZfdCgyMTQ3NDgzNjQ3IC8gc2l6ZW9mKF9UcCkpKQogICAgX19sZW4gPSAyMTQ3NDgz
NjQ3IC8gc2l6ZW9mKF9UcCk7CgogIHdoaWxlIChfX2xlbiA+IDApIHsKICAgIF9UcCogX190bXAg
PSAoX1RwKikgbWFsbG9jKChzaXplX3QpX19sZW4gKiBzaXplb2YoX1RwKSk7CiAgICBpZiAoX190
bXAgIT0gMCkKICAgICAgcmV0dXJuIHBhaXI8X1RwKiwgcHRyZGlmZl90PihfX3RtcCwgX19sZW4p
OwogICAgX19sZW4gLz0gMjsKICB9CgogIHJldHVybiBwYWlyPF9UcCosIHB0cmRpZmZfdD4oKF9U
cCopMCwgMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBwYWlyPF9UcCosIHB0cmRp
ZmZfdD4gZ2V0X3RlbXBvcmFyeV9idWZmZXIocHRyZGlmZl90IF9fbGVuKSB7CiAgcmV0dXJuIF9f
Z2V0X3RlbXBvcmFyeV9idWZmZXIoX19sZW4sIChfVHAqKSAwKTsKfQoKCgoKCgp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwPgppbmxpbmUgcGFpcjxfVHAqLCBwdHJkaWZmX3Q+IGdldF90ZW1wb3JhcnlfYnVm
ZmVyKHB0cmRpZmZfdCBfX2xlbiwgX1RwKikgewogIHJldHVybiBfX2dldF90ZW1wb3JhcnlfYnVm
ZmVyKF9fbGVuLCAoX1RwKikgMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnZvaWQgcmV0dXJu
X3RlbXBvcmFyeV9idWZmZXIoX1RwKiBfX3ApIHsKICBmcmVlKF9fcCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfRm9yd2FyZEl0ZXJhdG9yLCBjbGFzcyBfVHA+CmNsYXNzIF9UZW1wb3JhcnlfYnVmZmVy
IHsKcHJpdmF0ZToKICBwdHJkaWZmX3QgX01fb3JpZ2luYWxfbGVuOwogIHB0cmRpZmZfdCBfTV9s
ZW47CiAgX1RwKiBfTV9idWZmZXI7CgogIHZvaWQgX01fYWxsb2NhdGVfYnVmZmVyKCkgewogICAg
X01fb3JpZ2luYWxfbGVuID0gX01fbGVuOwogICAgX01fYnVmZmVyID0gMDsKCiAgICBpZiAoX01f
bGVuID4gKHB0cmRpZmZfdCkoMjE0NzQ4MzY0NyAvIHNpemVvZihfVHApKSkKICAgICAgX01fbGVu
ID0gMjE0NzQ4MzY0NyAvIHNpemVvZihfVHApOwoKICAgIHdoaWxlIChfTV9sZW4gPiAwKSB7CiAg
ICAgIF9NX2J1ZmZlciA9IChfVHAqKSBtYWxsb2MoX01fbGVuICogc2l6ZW9mKF9UcCkpOwogICAg
ICBpZiAoX01fYnVmZmVyKQogICAgICAgIGJyZWFrOwogICAgICBfTV9sZW4gLz0gMjsKICAgIH0K
ICB9CgogIHZvaWQgX01faW5pdGlhbGl6ZV9idWZmZXIoY29uc3QgX1RwJiwgX190cnVlX3R5cGUp
IHt9CiAgdm9pZCBfTV9pbml0aWFsaXplX2J1ZmZlcihjb25zdCBfVHAmIHZhbCwgX19mYWxzZV90
eXBlKSB7CiAgICB1bmluaXRpYWxpemVkX2ZpbGxfbihfTV9idWZmZXIsIF9NX2xlbiwgdmFsKTsK
ICB9CgpwdWJsaWM6CiAgcHRyZGlmZl90IHNpemUoKSBjb25zdCB7IHJldHVybiBfTV9sZW47IH0K
ICBwdHJkaWZmX3QgcmVxdWVzdGVkX3NpemUoKSBjb25zdCB7IHJldHVybiBfTV9vcmlnaW5hbF9s
ZW47IH0KICBfVHAqIGJlZ2luKCkgeyByZXR1cm4gX01fYnVmZmVyOyB9CiAgX1RwKiBlbmQoKSB7
IHJldHVybiBfTV9idWZmZXIgKyBfTV9sZW47IH0KCiAgX1RlbXBvcmFyeV9idWZmZXIoX0Zvcndh
cmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCkgewoKICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVHA+OjpoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0
cnVjdG9yCiAgICAgICAgICAgIF9Ucml2aWFsOwoKICAgIHRyeSB7CiAgICAgIF9NX2xlbiA9IDA7
CiAgICAgIGRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwgX01fbGVuKTsKICAgICAgX01fYWxsb2Nh
dGVfYnVmZmVyKCk7CiAgICAgIGlmIChfTV9sZW4gPiAwKQogICAgICAgIF9NX2luaXRpYWxpemVf
YnVmZmVyKCpfX2ZpcnN0LCBfVHJpdmlhbCgpKTsKICAgIH0KICAgIGNhdGNoKC4uLikgeyBmcmVl
KF9NX2J1ZmZlcik7IF9NX2J1ZmZlciA9IDA7IF9NX2xlbiA9IDA7IHRocm93OyB9OwogIH0KCiAg
fl9UZW1wb3JhcnlfYnVmZmVyKCkgewogICAgZGVzdHJveShfTV9idWZmZXIsIF9NX2J1ZmZlciAr
IF9NX2xlbik7CiAgICBmcmVlKF9NX2J1ZmZlcik7CiAgfQoKcHJpdmF0ZToKCiAgX1RlbXBvcmFy
eV9idWZmZXIoY29uc3QgX1RlbXBvcmFyeV9idWZmZXImKSB7fQogIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IF9UZW1wb3JhcnlfYnVmZmVyJikge30KfTsKCgoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJk
SXRlcmF0b3IsCiAgICAgICAgICBjbGFzcyBfVHAKICAgICAgICAgICAgICAgICAgICA9IHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQogICAgICAg
ICA+CnN0cnVjdCB0ZW1wb3JhcnlfYnVmZmVyIDogcHVibGljIF9UZW1wb3JhcnlfYnVmZmVyPF9G
b3J3YXJkSXRlcmF0b3IsIF9UcD4KewogIHRlbXBvcmFyeV9idWZmZXIoX0ZvcndhcmRJdGVyYXRv
ciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCkKICAgIDogX1RlbXBvcmFyeV9idWZm
ZXI8X0ZvcndhcmRJdGVyYXRvciwgX1RwPihfX2ZpcnN0LCBfX2xhc3QpIHt9CiAgfnRlbXBvcmFy
eV9idWZmZXIoKSB7fQp9OwoKfQojIDY1ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2Fs
Z29yaXRobS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RsX2FsZ28uaCIg
MSAzCiMgNjMgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9oZWFwLmgiIDEgMwojIDYyICIvdXNyL2luY2x1ZGUv
ZysrLXYzL2JpdHMvc3RsX2hlYXAuaCIgMwpuYW1lc3BhY2Ugc3RkCnsKCgoKdGVtcGxhdGUgPGNs
YXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlLCBjbGFzcyBfVHA+CnZv
aWQKX19wdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgICAg
IF9EaXN0YW5jZSBfX2hvbGVJbmRleCwgX0Rpc3RhbmNlIF9fdG9wSW5kZXgsIF9UcCBfX3ZhbHVl
KQp7CiAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOwogIHdoaWxl
IChfX2hvbGVJbmRleCA+IF9fdG9wSW5kZXggJiYgKihfX2ZpcnN0ICsgX19wYXJlbnQpIDwgX192
YWx1ZSkgewogICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gKihfX2ZpcnN0ICsgX19wYXJl
bnQpOwogICAgX19ob2xlSW5kZXggPSBfX3BhcmVudDsKICAgIF9fcGFyZW50ID0gKF9faG9sZUlu
ZGV4IC0gMSkgLyAyOwogIH0KICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSBfX3ZhbHVlOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2Us
IGNsYXNzIF9UcD4KaW5saW5lIHZvaWQKX19wdXNoX2hlYXBfYXV4KF9SYW5kb21BY2Nlc3NJdGVy
YXRvciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFz
dCwgX0Rpc3RhbmNlKiwgX1RwKikKewogIF9fcHVzaF9oZWFwKF9fZmlyc3QsIF9EaXN0YW5jZSgo
X19sYXN0IC0gX19maXJzdCkgLSAxKSwgX0Rpc3RhbmNlKDApLAogICAgICAgICAgICAgIF9UcCgq
KF9fbGFzdCAtIDEpKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+
CmlubGluZSB2b2lkCnB1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKCgogIF9fcHVzaF9oZWFwX2F1eChfX2ZpcnN0LCBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZShfX2ZpcnN0KSwgX192YWx1ZV90eXBl
KF9fZmlyc3QpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xh
c3MgX0Rpc3RhbmNlLCBjbGFzcyBfVHAsCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZT4Kdm9pZApf
X3B1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rpc3RhbmNlIF9faG9s
ZUluZGV4LAogICAgICAgICAgICBfRGlzdGFuY2UgX190b3BJbmRleCwgX1RwIF9fdmFsdWUsIF9D
b21wYXJlIF9fY29tcCkKewogIF9EaXN0YW5jZSBfX3BhcmVudCA9IChfX2hvbGVJbmRleCAtIDEp
IC8gMjsKICB3aGlsZSAoX19ob2xlSW5kZXggPiBfX3RvcEluZGV4ICYmIF9fY29tcCgqKF9fZmly
c3QgKyBfX3BhcmVudCksIF9fdmFsdWUpKSB7CiAgICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkg
PSAqKF9fZmlyc3QgKyBfX3BhcmVudCk7CiAgICBfX2hvbGVJbmRleCA9IF9fcGFyZW50OwogICAg
X19wYXJlbnQgPSAoX19ob2xlSW5kZXggLSAxKSAvIDI7CiAgfQogICooX19maXJzdCArIF9faG9s
ZUluZGV4KSA9IF9fdmFsdWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0
b3IsIGNsYXNzIF9Db21wYXJlLAogICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlLCBjbGFzcyBfVHA+
CmlubGluZSB2b2lkCl9fcHVzaF9oZWFwX2F1eChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJz
dCwKICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJl
IF9fY29tcCwKICAgICAgICAgICAgICAgIF9EaXN0YW5jZSosIF9UcCopCnsKICBfX3B1c2hfaGVh
cChfX2ZpcnN0LCBfRGlzdGFuY2UoKF9fbGFzdCAtIF9fZmlyc3QpIC0gMSksIF9EaXN0YW5jZSgw
KSwKICAgICAgICAgICAgICBfVHAoKihfX2xhc3QgLSAxKSksIF9fY29tcCk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgdm9p
ZApwdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciBfX2xhc3QsCiAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApCnsKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7CgoKICBfX3B1c2hfaGVhcF9hdXgoX19maXJzdCwgX19sYXN0
LCBfX2NvbXAsCiAgICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZShfX2ZpcnN0KSwgX192
YWx1ZV90eXBlKF9fZmlyc3QpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciwgY2xhc3MgX0Rpc3RhbmNlLCBjbGFzcyBfVHA+CnZvaWQKX19hZGp1c3RfaGVhcChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rpc3RhbmNlIF9faG9sZUluZGV4LAogICAgICAg
ICAgICAgIF9EaXN0YW5jZSBfX2xlbiwgX1RwIF9fdmFsdWUpCnsKICBfRGlzdGFuY2UgX190b3BJ
bmRleCA9IF9faG9sZUluZGV4OwogIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9faG9s
ZUluZGV4ICsgMjsKICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKSB7CiAgICBpZiAoKihf
X2ZpcnN0ICsgX19zZWNvbmRDaGlsZCkgPCAqKF9fZmlyc3QgKyAoX19zZWNvbmRDaGlsZCAtIDEp
KSkKICAgICAgX19zZWNvbmRDaGlsZC0tOwogICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0g
KihfX2ZpcnN0ICsgX19zZWNvbmRDaGlsZCk7CiAgICBfX2hvbGVJbmRleCA9IF9fc2Vjb25kQ2hp
bGQ7CiAgICBfX3NlY29uZENoaWxkID0gMiAqIChfX3NlY29uZENoaWxkICsgMSk7CiAgfQogIGlm
IChfX3NlY29uZENoaWxkID09IF9fbGVuKSB7CiAgICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkg
PSAqKF9fZmlyc3QgKyAoX19zZWNvbmRDaGlsZCAtIDEpKTsKICAgIF9faG9sZUluZGV4ID0gX19z
ZWNvbmRDaGlsZCAtIDE7CiAgfQogIF9fcHVzaF9oZWFwKF9fZmlyc3QsIF9faG9sZUluZGV4LCBf
X3RvcEluZGV4LCBfX3ZhbHVlKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVy
YXRvciwgY2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkCl9fcG9wX2hlYXAo
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xh
c3QsCiAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fcmVzdWx0LCBfVHAgX192YWx1
ZSwgX0Rpc3RhbmNlKikKewogICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogIF9fYWRqdXN0X2hlYXAo
X19maXJzdCwgX0Rpc3RhbmNlKDApLCBfRGlzdGFuY2UoX19sYXN0IC0gX19maXJzdCksIF9fdmFs
dWUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfVHA+
CmlubGluZSB2b2lkCl9fcG9wX2hlYXBfYXV4KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0
LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICBfVHAqKQp7CiAg
X19wb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QgLSAxLCBfX2xhc3QgLSAxLAogICAgICAgICAgICAg
X1RwKCooX19sYXN0IC0gMSkpLCBfX2Rpc3RhbmNlX3R5cGUoX19maXJzdCkpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgppbmxpbmUgdm9pZCBwb3BfaGVhcChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9fbGFzdCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDsKCgogIF9fcG9wX2hlYXBfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX192YWx1
ZV90eXBlKF9fZmlyc3QpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciwgY2xhc3MgX0Rpc3RhbmNlLAogICAgICAgICAgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZT4K
dm9pZApfX2FkanVzdF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfRGlzdGFu
Y2UgX19ob2xlSW5kZXgsCiAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuLCBfVHAgX192YWx1
ZSwgX0NvbXBhcmUgX19jb21wKQp7CiAgX0Rpc3RhbmNlIF9fdG9wSW5kZXggPSBfX2hvbGVJbmRl
eDsKICBfRGlzdGFuY2UgX19zZWNvbmRDaGlsZCA9IDIgKiBfX2hvbGVJbmRleCArIDI7CiAgd2hp
bGUgKF9fc2Vjb25kQ2hpbGQgPCBfX2xlbikgewogICAgaWYgKF9fY29tcCgqKF9fZmlyc3QgKyBf
X3NlY29uZENoaWxkKSwgKihfX2ZpcnN0ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSkpKQogICAgICBf
X3NlY29uZENoaWxkLS07CiAgICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3Qg
KyBfX3NlY29uZENoaWxkKTsKICAgIF9faG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZDsKICAgIF9f
c2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hpbGQgKyAxKTsKICB9CiAgaWYgKF9fc2Vjb25k
Q2hpbGQgPT0gX19sZW4pIHsKICAgICooX19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJz
dCArIChfX3NlY29uZENoaWxkIC0gMSkpOwogICAgX19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxk
IC0gMTsKICB9CiAgX19wdXNoX2hlYXAoX19maXJzdCwgX19ob2xlSW5kZXgsIF9fdG9wSW5kZXgs
IF9fdmFsdWUsIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0
b3IsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmUsCiAgICAgICAgICBjbGFzcyBfRGlzdGFuY2U+
CmlubGluZSB2b2lkCl9fcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fcmVzdWx0LCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wLAogICAgICAgICAgIF9E
aXN0YW5jZSopCnsKICAqX19yZXN1bHQgPSAqX19maXJzdDsKICBfX2FkanVzdF9oZWFwKF9fZmly
c3QsIF9EaXN0YW5jZSgwKSwgX0Rpc3RhbmNlKF9fbGFzdCAtIF9fZmlyc3QpLAogICAgICAgICAg
ICAgICAgX192YWx1ZSwgX19jb21wKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5lIHZvaWQKX19wb3BfaGVh
cF9hdXgoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgICAgICAgIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9UcCosIF9Db21wYXJlIF9fY29tcCkKewogIF9fcG9w
X2hlYXAoX19maXJzdCwgX19sYXN0IC0gMSwgX19sYXN0IC0gMSwgX1RwKCooX19sYXN0IC0gMSkp
LCBfX2NvbXAsCiAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoX19maXJzdCkpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5l
IHZvaWQKcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkKewoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDsKCgogIF9fcG9wX2hlYXBfYXV4KF9fZmlyc3QsIF9fbGFz
dCwgX192YWx1ZV90eXBlKF9fZmlyc3QpLCBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4Kdm9pZApfX21h
a2VfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgICAgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgX1RwKiwgX0Rpc3RhbmNlKikKewogIGlmIChfX2xhc3Qg
LSBfX2ZpcnN0IDwgMikgcmV0dXJuOwogIF9EaXN0YW5jZSBfX2xlbiA9IF9fbGFzdCAtIF9fZmly
c3Q7CiAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gKF9fbGVuIC0gMikvMjsKCiAgd2hpbGUgKHRydWUp
IHsKICAgIF9fYWRqdXN0X2hlYXAoX19maXJzdCwgX19wYXJlbnQsIF9fbGVuLCBfVHAoKihfX2Zp
cnN0ICsgX19wYXJlbnQpKSk7CiAgICBpZiAoX19wYXJlbnQgPT0gMCkgcmV0dXJuOwogICAgX19w
YXJlbnQtLTsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Cmlu
bGluZSB2b2lkCm1ha2VfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKCgogIF9fbWFrZV9oZWFwKF9fZmlyc3QsIF9fbGFzdCwKICAgICAg
ICAgICAgICBfX3ZhbHVlX3R5cGUoX19maXJzdCksIF9fZGlzdGFuY2VfdHlwZShfX2ZpcnN0KSk7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9Db21wYXJl
LAogICAgICAgICAgY2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+CnZvaWQKX19tYWtlX2hlYXAo
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xh
c3QsCiAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCwgX1RwKiwgX0Rpc3RhbmNlKikKewogIGlm
IChfX2xhc3QgLSBfX2ZpcnN0IDwgMikgcmV0dXJuOwogIF9EaXN0YW5jZSBfX2xlbiA9IF9fbGFz
dCAtIF9fZmlyc3Q7CiAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gKF9fbGVuIC0gMikvMjsKCiAgd2hp
bGUgKHRydWUpIHsKICAgIF9fYWRqdXN0X2hlYXAoX19maXJzdCwgX19wYXJlbnQsIF9fbGVuLCBf
VHAoKihfX2ZpcnN0ICsgX19wYXJlbnQpKSwKICAgICAgICAgICAgICAgICAgX19jb21wKTsKICAg
IGlmIChfX3BhcmVudCA9PSAwKSByZXR1cm47CiAgICBfX3BhcmVudC0tOwogIH0KfQoKdGVtcGxh
dGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSB2
b2lkCm1ha2VfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkKewoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDsKCgogIF9fbWFrZV9oZWFwKF9fZmlyc3QsIF9fbGFzdCwg
X19jb21wLAogICAgICAgICAgICAgIF9fdmFsdWVfdHlwZShfX2ZpcnN0KSwgX19kaXN0YW5jZV90
eXBlKF9fZmlyc3QpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvcj4K
dm9pZCBzb3J0X2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nl
c3NJdGVyYXRvciBfX2xhc3QpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CgoKICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+IDEpCiAgICBwb3BfaGVh
cChfX2ZpcnN0LCBfX2xhc3QtLSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IsIGNsYXNzIF9Db21wYXJlPgp2b2lkCnNvcnRfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgX19maXJzdCwKICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21w
YXJlIF9fY29tcCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogIHdoaWxl
IChfX2xhc3QgLSBfX2ZpcnN0ID4gMSkKICAgIHBvcF9oZWFwKF9fZmlyc3QsIF9fbGFzdC0tLCBf
X2NvbXApOwp9Cgp9CiMgNjQgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGxfYWxnby5oIiAy
IDMKCgoKbmFtZXNwYWNlIHN0ZAp7CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBjb25z
dCBfVHAmIF9fbWVkaWFuKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYiwgY29uc3QgX1Rw
JiBfX2MpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwogIGlmIChfX2EgPCBfX2IpCiAgICBpZiAoX19iIDwgX19jKQogICAg
ICByZXR1cm4gX19iOwogICAgZWxzZSBpZiAoX19hIDwgX19jKQogICAgICByZXR1cm4gX19jOwog
ICAgZWxzZQogICAgICByZXR1cm4gX19hOwogIGVsc2UgaWYgKF9fYSA8IF9fYykKICAgIHJldHVy
biBfX2E7CiAgZWxzZSBpZiAoX19iIDwgX19jKQogICAgcmV0dXJuIF9fYzsKICBlbHNlCiAgICBy
ZXR1cm4gX19iOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5l
IGNvbnN0IF9UcCYKX19tZWRpYW4oY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iLCBjb25z
dCBfVHAmIF9fYywgX0NvbXBhcmUgX19jb21wKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwog
IGlmIChfX2NvbXAoX19hLCBfX2IpKQogICAgaWYgKF9fY29tcChfX2IsIF9fYykpCiAgICAgIHJl
dHVybiBfX2I7CiAgICBlbHNlIGlmIChfX2NvbXAoX19hLCBfX2MpKQogICAgICByZXR1cm4gX19j
OwogICAgZWxzZQogICAgICByZXR1cm4gX19hOwogIGVsc2UgaWYgKF9fY29tcChfX2EsIF9fYykp
CiAgICByZXR1cm4gX19hOwogIGVsc2UgaWYgKF9fY29tcChfX2IsIF9fYykpCiAgICByZXR1cm4g
X19jOwogIGVsc2UKICAgIHJldHVybiBfX2I7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRl
ciwgY2xhc3MgX0Z1bmN0aW9uPgpfRnVuY3Rpb24gZm9yX2VhY2goX0lucHV0SXRlciBfX2ZpcnN0
LCBfSW5wdXRJdGVyIF9fbGFzdCwgX0Z1bmN0aW9uIF9fZikKewoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICBmb3IgKCA7
IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAgICBfX2YoKl9fZmlyc3QpOwogIHJldHVy
biBfX2Y7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5l
IF9JbnB1dEl0ZXIgZmluZChfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192YWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKQp7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0ICYm
ICEoKl9fZmlyc3QgPT0gX192YWwpKQogICAgKytfX2ZpcnN0OwogIHJldHVybiBfX2ZpcnN0Owp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1ByZWRpY2F0ZT4KaW5saW5lIF9J
bnB1dEl0ZXIgZmluZF9pZihfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgIF9QcmVkaWNhdGUgX19wcmVkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3RhZykKewogIHdoaWxlIChfX2ZpcnN0ICE9IF9f
bGFzdCAmJiAhX19wcmVkKCpfX2ZpcnN0KSkKICAgICsrX19maXJzdDsKICByZXR1cm4gX19maXJz
dDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHA+Cl9SYW5k
b21BY2Nlc3NJdGVyIGZpbmQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vz
c0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192YWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpCnsKICB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGUg
X190cmlwX2NvdW50CiAgICA9IChfX2xhc3QgLSBfX2ZpcnN0KSA+PiAyOwoKICBmb3IgKCA7IF9f
dHJpcF9jb3VudCA+IDAgOyAtLV9fdHJpcF9jb3VudCkgewogICAgaWYgKCpfX2ZpcnN0ID09IF9f
dmFsKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKCiAgICBpZiAoKl9fZmlyc3QgPT0g
X192YWwpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwoKICAgIGlmICgqX19maXJzdCA9
PSBfX3ZhbCkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CgogICAgaWYgKCpfX2ZpcnN0
ID09IF9fdmFsKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKICB9CgogIHN3aXRjaChf
X2xhc3QgLSBfX2ZpcnN0KSB7CiAgY2FzZSAzOgogICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKSBy
ZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKICBjYXNlIDI6CiAgICBpZiAoKl9fZmlyc3Qg
PT0gX192YWwpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwogIGNhc2UgMToKICAgIGlm
ICgqX19maXJzdCA9PSBfX3ZhbCkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CiAgY2Fz
ZSAwOgogIGRlZmF1bHQ6CiAgICByZXR1cm4gX19sYXN0OwogIH0KfQoKdGVtcGxhdGUgPGNsYXNz
IF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgpfUmFuZG9tQWNjZXNzSXRlciBm
aW5kX2lmKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKewogIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46OmRpZmZlcmVuY2VfdHlwZSBfX3Ry
aXBfY291bnQKICAgID0gKF9fbGFzdCAtIF9fZmlyc3QpID4+IDI7CgogIGZvciAoIDsgX190cmlw
X2NvdW50ID4gMCA7IC0tX190cmlwX2NvdW50KSB7CiAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkg
cmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CgogICAgaWYgKF9fcHJlZCgqX19maXJzdCkp
IHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwoKICAgIGlmIChfX3ByZWQoKl9fZmlyc3Qp
KSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKCiAgICBpZiAoX19wcmVkKCpfX2ZpcnN0
KSkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CiAgfQoKICBzd2l0Y2goX19sYXN0IC0g
X19maXJzdCkgewogIGNhc2UgMzoKICAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKSByZXR1cm4gX19m
aXJzdDsKICAgICsrX19maXJzdDsKICBjYXNlIDI6CiAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkg
cmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CiAgY2FzZSAxOgogICAgaWYgKF9fcHJlZCgq
X19maXJzdCkpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwogIGNhc2UgMDoKICBkZWZh
dWx0OgogICAgcmV0dXJuIF9fbGFzdDsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVy
LCBjbGFzcyBfVHA+CmlubGluZSBfSW5wdXRJdGVyIGZpbmQoX0lucHV0SXRlciBfX2ZpcnN0LCBf
SW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9fdmFs
KQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwoKICByZXR1cm4gZmluZChfX2ZpcnN0LCBfX2xhc3Qs
IF9fdmFsLCBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9JbnB1dEl0ZXIsIGNsYXNzIF9QcmVkaWNhdGU+CmlubGluZSBfSW5wdXRJdGVyIGZpbmRfaWYo
X0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICByZXR1cm4gZmlu
ZF9pZihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwgX19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0
KSk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcj4KX0ZvcndhcmRJdGVyIGFkamFj
ZW50X2ZpbmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QpCnsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgIHJldHVybiBfX2xh
c3Q7CiAgX0ZvcndhcmRJdGVyIF9fbmV4dCA9IF9fZmlyc3Q7CiAgd2hpbGUoKytfX25leHQgIT0g
X19sYXN0KSB7CiAgICBpZiAoKl9fZmlyc3QgPT0gKl9fbmV4dCkKICAgICAgcmV0dXJuIF9fZmly
c3Q7CiAgICBfX2ZpcnN0ID0gX19uZXh0OwogIH0KICByZXR1cm4gX19sYXN0Owp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfQmluYXJ5UHJlZGljYXRlPgpfRm9yd2FyZEl0
ZXIgYWRqYWNlbnRfZmluZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9w
cmVkKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogICAg
cmV0dXJuIF9fbGFzdDsKICBfRm9yd2FyZEl0ZXIgX19uZXh0ID0gX19maXJzdDsKICB3aGlsZSgr
K19fbmV4dCAhPSBfX2xhc3QpIHsKICAgIGlmIChfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0LCAqX19u
ZXh0KSkKICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICBfX2ZpcnN0ID0gX19uZXh0OwogIH0KICBy
ZXR1cm4gX19sYXN0Owp9CgoKCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3Mg
X1RwLCBjbGFzcyBfU2l6ZT4Kdm9pZCBjb3VudChfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0
ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9fdmFsdWUsCiAgICAgICAgICAgX1NpemUmIF9fbikKewoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmly
c3QpCiAgICBpZiAoKl9fZmlyc3QgPT0gX192YWx1ZSkKICAgICAgKytfX247Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfUHJlZGljYXRlLCBjbGFzcyBfU2l6ZT4Kdm9pZCBj
b3VudF9pZihfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LCBfUHJlZGljYXRl
IF9fcHJlZCwKICAgICAgICAgICAgICBfU2l6ZSYgX19uKQp7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICBmb3Ig
KCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAgICBpZiAoX19wcmVkKCpfX2ZpcnN0
KSkKICAgICAgKytfX247Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfVHA+
CnR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6ZGlmZmVyZW5jZV90eXBlCmNv
dW50KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsIGNvbnN0IF9UcCYgX192
YWx1ZSkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X0lucHV0SXRlcj46OmRpZmZlcmVuY2VfdHlwZSBfX24gPSAwOwogIGZvciAoIDsgX19maXJzdCAh
PSBfX2xhc3Q7ICsrX19maXJzdCkKICAgIGlmICgqX19maXJzdCA9PSBfX3ZhbHVlKQogICAgICAr
K19fbjsKICByZXR1cm4gX19uOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3Mg
X1ByZWRpY2F0ZT4KdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+OjpkaWZmZXJl
bmNlX3R5cGUKY291bnRfaWYoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwg
X1ByZWRpY2F0ZSBfX3ByZWQpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry
YWl0czxfSW5wdXRJdGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiA9IDA7CiAgZm9yICggOyBfX2Zp
cnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgaWYgKF9fcHJlZCgqX19maXJzdCkpCiAgICAg
ICsrX19uOwogIHJldHVybiBfX247Cn0KCgoKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIx
LCBjbGFzcyBfRm9yd2FyZEl0ZXIyPgpfRm9yd2FyZEl0ZXIxIHNlYXJjaChfRm9yd2FyZEl0ZXIx
IF9fZmlyc3QxLCBfRm9yd2FyZEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgIF9G
b3J3YXJkSXRlcjIgX19maXJzdDIsIF9Gb3J3YXJkSXRlcjIgX19sYXN0MikKewoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA7CgoKCgogIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxIHx8
IF9fZmlyc3QyID09IF9fbGFzdDIpCiAgICByZXR1cm4gX19maXJzdDE7CgoKICBfRm9yd2FyZEl0
ZXIyIF9fdG1wKF9fZmlyc3QyKTsKICArK19fdG1wOwogIGlmIChfX3RtcCA9PSBfX2xhc3QyKQog
ICAgcmV0dXJuIGZpbmQoX19maXJzdDEsIF9fbGFzdDEsICpfX2ZpcnN0Mik7CgoKCiAgX0Zvcndh
cmRJdGVyMiBfX3AxLCBfX3A7CgogIF9fcDEgPSBfX2ZpcnN0MjsgKytfX3AxOwoKICBfRm9yd2Fy
ZEl0ZXIxIF9fY3VycmVudCA9IF9fZmlyc3QxOwoKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0
MSkgewogICAgX19maXJzdDEgPSBmaW5kKF9fZmlyc3QxLCBfX2xhc3QxLCAqX19maXJzdDIpOwog
ICAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEpCiAgICAgIHJldHVybiBfX2xhc3QxOwoKICAgIF9f
cCA9IF9fcDE7CiAgICBfX2N1cnJlbnQgPSBfX2ZpcnN0MTsKICAgIGlmICgrK19fY3VycmVudCA9
PSBfX2xhc3QxKQogICAgICByZXR1cm4gX19sYXN0MTsKCiAgICB3aGlsZSAoKl9fY3VycmVudCA9
PSAqX19wKSB7CiAgICAgIGlmICgrK19fcCA9PSBfX2xhc3QyKQogICAgICAgIHJldHVybiBfX2Zp
cnN0MTsKICAgICAgaWYgKCsrX19jdXJyZW50ID09IF9fbGFzdDEpCiAgICAgICAgcmV0dXJuIF9f
bGFzdDE7CiAgICB9CgogICAgKytfX2ZpcnN0MTsKICB9CiAgcmV0dXJuIF9fZmlyc3QxOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyMSwgY2xhc3MgX0ZvcndhcmRJdGVyMiwgY2xhc3Mg
X0JpbmFyeVByZWQ+Cl9Gb3J3YXJkSXRlcjEgc2VhcmNoKF9Gb3J3YXJkSXRlcjEgX19maXJzdDEs
IF9Gb3J3YXJkSXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVy
MiBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICBf
QmluYXJ5UHJlZCBfX3ByZWRpY2F0ZSkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CgoKCgogIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxIHx8IF9fZmlyc3QyID09IF9fbGFzdDIp
CiAgICByZXR1cm4gX19maXJzdDE7CgoKICBfRm9yd2FyZEl0ZXIyIF9fdG1wKF9fZmlyc3QyKTsK
ICArK19fdG1wOwogIGlmIChfX3RtcCA9PSBfX2xhc3QyKSB7CiAgICB3aGlsZSAoX19maXJzdDEg
IT0gX19sYXN0MSAmJiAhX19wcmVkaWNhdGUoKl9fZmlyc3QxLCAqX19maXJzdDIpKQogICAgICAr
K19fZmlyc3QxOwogICAgcmV0dXJuIF9fZmlyc3QxOwogIH0KCgoKICBfRm9yd2FyZEl0ZXIyIF9f
cDEsIF9fcDsKCiAgX19wMSA9IF9fZmlyc3QyOyArK19fcDE7CgogIF9Gb3J3YXJkSXRlcjEgX19j
dXJyZW50ID0gX19maXJzdDE7CgogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxKSB7CiAgICB3
aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSkgewogICAgICBpZiAoX19wcmVkaWNhdGUoKl9fZmly
c3QxLCAqX19maXJzdDIpKQogICAgICAgIGJyZWFrOwogICAgICArK19fZmlyc3QxOwogICAgfQog
ICAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgIV9fcHJlZGljYXRlKCpfX2ZpcnN0MSwg
Kl9fZmlyc3QyKSkKICAgICAgKytfX2ZpcnN0MTsKICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3Qx
KQogICAgICByZXR1cm4gX19sYXN0MTsKCiAgICBfX3AgPSBfX3AxOwogICAgX19jdXJyZW50ID0g
X19maXJzdDE7CiAgICBpZiAoKytfX2N1cnJlbnQgPT0gX19sYXN0MSkgcmV0dXJuIF9fbGFzdDE7
CgogICAgd2hpbGUgKF9fcHJlZGljYXRlKCpfX2N1cnJlbnQsICpfX3ApKSB7CiAgICAgIGlmICgr
K19fcCA9PSBfX2xhc3QyKQogICAgICAgIHJldHVybiBfX2ZpcnN0MTsKICAgICAgaWYgKCsrX19j
dXJyZW50ID09IF9fbGFzdDEpCiAgICAgICAgcmV0dXJuIF9fbGFzdDE7CiAgICB9CgogICAgKytf
X2ZpcnN0MTsKICB9CiAgcmV0dXJuIF9fZmlyc3QxOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfRm9y
d2FyZEl0ZXIsIGNsYXNzIF9JbnRlZ2VyLCBjbGFzcyBfVHA+Cl9Gb3J3YXJkSXRlciBzZWFyY2hf
bihfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAg
ICAgICAgICAgIF9JbnRlZ2VyIF9fY291bnQsIGNvbnN0IF9UcCYgX192YWwpCnsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKCiAgaWYgKF9fY291bnQgPD0gMCkKICAgIHJldHVybiBfX2ZpcnN0
OwogIGVsc2UgewogICAgX19maXJzdCA9IGZpbmQoX19maXJzdCwgX19sYXN0LCBfX3ZhbCk7CiAg
ICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpIHsKICAgICAgX0ludGVnZXIgX19uID0gX19jb3Vu
dCAtIDE7CiAgICAgIF9Gb3J3YXJkSXRlciBfX2kgPSBfX2ZpcnN0OwogICAgICArK19faTsKICAg
ICAgd2hpbGUgKF9faSAhPSBfX2xhc3QgJiYgX19uICE9IDAgJiYgKl9faSA9PSBfX3ZhbCkgewog
ICAgICAgICsrX19pOwogICAgICAgIC0tX19uOwogICAgICB9CiAgICAgIGlmIChfX24gPT0gMCkK
ICAgICAgICByZXR1cm4gX19maXJzdDsKICAgICAgZWxzZQogICAgICAgIF9fZmlyc3QgPSBmaW5k
KF9faSwgX19sYXN0LCBfX3ZhbCk7CiAgICB9CiAgICByZXR1cm4gX19sYXN0OwogIH0KfQoKdGVt
cGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0ludGVnZXIsIGNsYXNzIF9UcCwgY2xh
c3MgX0JpbmFyeVByZWQ+Cl9Gb3J3YXJkSXRlciBzZWFyY2hfbihfRm9yd2FyZEl0ZXIgX19maXJz
dCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgIF9JbnRlZ2VyIF9f
Y291bnQsIGNvbnN0IF9UcCYgX192YWwsCiAgICAgICAgICAgICAgICAgICAgICBfQmluYXJ5UHJl
ZCBfX2JpbmFyeV9wcmVkKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICBpZiAoX19jb3Vu
dCA8PSAwKQogICAgcmV0dXJuIF9fZmlyc3Q7CiAgZWxzZSB7CiAgICB3aGlsZSAoX19maXJzdCAh
PSBfX2xhc3QpIHsKICAgICAgaWYgKF9fYmluYXJ5X3ByZWQoKl9fZmlyc3QsIF9fdmFsKSkKICAg
ICAgICBicmVhazsKICAgICAgKytfX2ZpcnN0OwogICAgfQogICAgd2hpbGUgKF9fZmlyc3QgIT0g
X19sYXN0KSB7CiAgICAgIF9JbnRlZ2VyIF9fbiA9IF9fY291bnQgLSAxOwogICAgICBfRm9yd2Fy
ZEl0ZXIgX19pID0gX19maXJzdDsKICAgICAgKytfX2k7CiAgICAgIHdoaWxlIChfX2kgIT0gX19s
YXN0ICYmIF9fbiAhPSAwICYmIF9fYmluYXJ5X3ByZWQoKl9faSwgX192YWwpKSB7CiAgICAgICAg
KytfX2k7CiAgICAgICAgLS1fX247CiAgICAgIH0KICAgICAgaWYgKF9fbiA9PSAwKQogICAgICAg
IHJldHVybiBfX2ZpcnN0OwogICAgICBlbHNlIHsKICAgICAgICB3aGlsZSAoX19pICE9IF9fbGFz
dCkgewogICAgICAgICAgaWYgKF9fYmluYXJ5X3ByZWQoKl9faSwgX192YWwpKQogICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICsrX19pOwogICAgICAgIH0KICAgICAgICBfX2ZpcnN0ID0gX19p
OwogICAgICB9CiAgICB9CiAgICByZXR1cm4gX19sYXN0OwogIH0KfQoKCgp0ZW1wbGF0ZSA8Y2xh
c3MgX0ZvcndhcmRJdGVyMSwgY2xhc3MgX0ZvcndhcmRJdGVyMj4KX0ZvcndhcmRJdGVyMiBzd2Fw
X3JhbmdlcyhfRm9yd2FyZEl0ZXIxIF9fZmlyc3QxLCBfRm9yd2FyZEl0ZXIxIF9fbGFzdDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyMiBfX2ZpcnN0MikKewoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCiAg
Zm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxOyArK19fZmlyc3QxLCArK19fZmlyc3QyKQogICAg
aXRlcl9zd2FwKF9fZmlyc3QxLCBfX2ZpcnN0Mik7CiAgcmV0dXJuIF9fZmlyc3QyOwp9CgoKCnRl
bXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX1VuYXJ5
T3BlcmF0aW9uPgpfT3V0cHV0SXRlciB0cmFuc2Zvcm0oX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5w
dXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0
LCBfVW5hcnlPcGVyYXRpb24gX191bmFyeV9vcCkKewoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCgoKICBmb3IgKCA7
IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QsICsrX19yZXN1bHQpCiAgICAqX19yZXN1bHQg
PSBfX3VuYXJ5X29wKCpfX2ZpcnN0KTsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9PdXRwdXRJdGVyLAog
ICAgICAgICAgY2xhc3MgX0JpbmFyeU9wZXJhdGlvbj4KX091dHB1dEl0ZXIgdHJhbnNmb3JtKF9J
bnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAg
ICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9PdXRwdXRJdGVyIF9fcmVzdWx0LAogICAgICAg
ICAgICAgICAgICAgICAgX0JpbmFyeU9wZXJhdGlvbiBfX2JpbmFyeV9vcCkKewoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwoKCgoKCgogIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0
MSwgKytfX2ZpcnN0MiwgKytfX3Jlc3VsdCkKICAgICpfX3Jlc3VsdCA9IF9fYmluYXJ5X29wKCpf
X2ZpcnN0MSwgKl9fZmlyc3QyKTsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCgoKdGVtcGxhdGUgPGNs
YXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgp2b2lkIHJlcGxhY2UoX0ZvcndhcmRJdGVyIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICBjb25zdCBfVHAmIF9fb2xk
X3ZhbHVlLCBjb25zdCBfVHAmIF9fbmV3X3ZhbHVlKQp7CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDsKCgogIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkK
ICAgIGlmICgqX19maXJzdCA9PSBfX29sZF92YWx1ZSkKICAgICAgKl9fZmlyc3QgPSBfX25ld192
YWx1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1ByZWRpY2F0ZSwg
Y2xhc3MgX1RwPgp2b2lkIHJlcGxhY2VfaWYoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwgY29uc3QgX1Rw
JiBfX25ld192YWx1ZSkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgZm9y
ICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgaWYgKF9fcHJlZCgqX19maXJz
dCkpCiAgICAgICpfX2ZpcnN0ID0gX19uZXdfdmFsdWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5w
dXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX1RwPgpfT3V0cHV0SXRlciByZXBsYWNl
X2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgX1RwJiBfX29sZF92YWx1ZSwgY29uc3QgX1RwJiBfX25ld192YWx1ZSkKewoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKCgogIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJz
dCwgKytfX3Jlc3VsdCkKICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0ID09IF9fb2xkX3ZhbHVlID8g
X19uZXdfdmFsdWUgOiAqX19maXJzdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX1ByZWRpY2F0ZSwgY2xh
c3MgX1RwPgpfT3V0cHV0SXRlciByZXBsYWNlX2NvcHlfaWYoX0lucHV0SXRlciBfX2ZpcnN0LCBf
SW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVy
IF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQs
IGNvbnN0IF9UcCYgX19uZXdfdmFsdWUpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgZm9yICggOyBf
X2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0LCArK19fcmVzdWx0KQogICAgKl9fcmVzdWx0ID0g
X19wcmVkKCpfX2ZpcnN0KSA/IF9fbmV3X3ZhbHVlIDogKl9fZmlyc3Q7CiAgcmV0dXJuIF9fcmVz
dWx0Owp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9HZW5lcmF0b3I+
CnZvaWQgZ2VuZXJhdGUoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3Qs
IF9HZW5lcmF0b3IgX19nZW4pCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICBmb3IgKCA7IF9fZmly
c3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAgICAqX19maXJzdCA9IF9fZ2VuKCk7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9HZW5lcmF0b3I+Cl9P
dXRwdXRJdGVyIGdlbmVyYXRlX24oX091dHB1dEl0ZXIgX19maXJzdCwgX1NpemUgX19uLCBfR2Vu
ZXJhdG9yIF9fZ2VuKQp7CgoKCgoKCiAgZm9yICggOyBfX24gPiAwOyAtLV9fbiwgKytfX2ZpcnN0
KQogICAgKl9fZmlyc3QgPSBfX2dlbigpOwogIHJldHVybiBfX2ZpcnN0Owp9CgoKCnRlbXBsYXRl
IDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX1RwPgpfT3V0cHV0
SXRlciByZW1vdmVfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwgY29uc3QgX1RwJiBf
X3ZhbHVlKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgZm9yICggOyBfX2ZpcnN0ICE9IF9f
bGFzdDsgKytfX2ZpcnN0KQogICAgaWYgKCEoKl9fZmlyc3QgPT0gX192YWx1ZSkpIHsKICAgICAg
Kl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgcmV0dXJuIF9f
cmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1dEl0ZXIs
IGNsYXNzIF9QcmVkaWNhdGU+Cl9PdXRwdXRJdGVyIHJlbW92ZV9jb3B5X2lmKF9JbnB1dEl0ZXIg
X19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9P
dXRwdXRJdGVyIF9fcmVzdWx0LCBfUHJlZGljYXRlIF9fcHJlZCkKewoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CgoKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAgICBpZiAoIV9fcHJl
ZCgqX19maXJzdCkpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgICsrX19yZXN1
bHQ7CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJ
dGVyLCBjbGFzcyBfVHA+Cl9Gb3J3YXJkSXRlciByZW1vdmUoX0ZvcndhcmRJdGVyIF9fZmlyc3Qs
IF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3Zh
bHVlKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogIF9fZmlyc3Qg
PSBmaW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWx1ZSk7CiAgX0ZvcndhcmRJdGVyIF9faSA9IF9f
Zmlyc3Q7CiAgcmV0dXJuIF9fZmlyc3QgPT0gX19sYXN0ID8gX19maXJzdAogICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IHJlbW92ZV9jb3B5KCsrX19pLCBfX2xhc3QsIF9fZmlyc3QsIF9fdmFs
dWUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgpf
Rm9yd2FyZEl0ZXIgcmVtb3ZlX2lmKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIg
X19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgIF9QcmVkaWNhdGUgX19wcmVkKQp7CgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7CgoKICBfX2ZpcnN0ID0gZmluZF9pZihfX2ZpcnN0LCBfX2xh
c3QsIF9fcHJlZCk7CiAgX0ZvcndhcmRJdGVyIF9faSA9IF9fZmlyc3Q7CiAgcmV0dXJuIF9fZmly
c3QgPT0gX19sYXN0ID8gX19maXJzdAogICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlbW92
ZV9jb3B5X2lmKCsrX19pLCBfX2xhc3QsIF9fZmlyc3QsIF9fcHJlZCk7Cn0KCgoKdGVtcGxhdGUg
PGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfVHA+Cl9PdXRwdXRJ
dGVyIF9fdW5pcXVlX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwgX1RwKikKewoK
ICBfVHAgX192YWx1ZSA9ICpfX2ZpcnN0OwogICpfX3Jlc3VsdCA9IF9fdmFsdWU7CiAgd2hpbGUg
KCsrX19maXJzdCAhPSBfX2xhc3QpCiAgICBpZiAoIShfX3ZhbHVlID09ICpfX2ZpcnN0KSkgewog
ICAgICBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAgICAgICorK19fcmVzdWx0ID0gX192YWx1ZTsKICAg
IH0KICByZXR1cm4gKytfX3Jlc3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNs
YXNzIF9PdXRwdXRJdGVyPgppbmxpbmUgX091dHB1dEl0ZXIgX191bmlxdWVfY29weShfSW5wdXRJ
dGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0X2l0ZXJhdG9yX3RhZykKewoKICByZXR1cm4gX191bmlxdWVfY29weShfX2Zp
cnN0LCBfX2xhc3QsIF9fcmVzdWx0LCBfX3ZhbHVlX3R5cGUoX19maXJzdCkpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX0ZvcndhcmRJdGVyPgpfRm9yd2FyZEl0ZXIgX191
bmlxdWVfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsIGZvcndhcmRfaXRlcmF0
b3JfdGFnKQp7CgogICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogIHdoaWxlICgrK19fZmlyc3QgIT0g
X19sYXN0KQogICAgaWYgKCEoKl9fcmVzdWx0ID09ICpfX2ZpcnN0KSkKICAgICAgKisrX19yZXN1
bHQgPSAqX19maXJzdDsKICByZXR1cm4gKytfX3Jlc3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyPgppbmxpbmUgX091dHB1dEl0ZXIgdW5pcXVlX2Nv
cHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0KQp7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK
CgogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fcmVzdWx0OwogIHJldHVybiBfX3Vu
aXF1ZV9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgX19pdGVyYXRvcl9jYXRlZ29yeShfX3Jlc3VsdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
cHV0SXRlciwgY2xhc3MgX091dHB1dEl0ZXIsIGNsYXNzIF9CaW5hcnlQcmVkaWNhdGUsCiAgICAg
ICAgICBjbGFzcyBfVHA+Cl9PdXRwdXRJdGVyIF9fdW5pcXVlX2NvcHkoX0lucHV0SXRlciBfX2Zp
cnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0
SXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfQmluYXJ5UHJlZGljYXRl
IF9fYmluYXJ5X3ByZWQsIF9UcCopCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogIF9U
cCBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAgKl9fcmVzdWx0ID0gX192YWx1ZTsKICB3aGlsZSAoKytf
X2ZpcnN0ICE9IF9fbGFzdCkKICAgIGlmICghX19iaW5hcnlfcHJlZChfX3ZhbHVlLCAqX19maXJz
dCkpIHsKICAgICAgX192YWx1ZSA9ICpfX2ZpcnN0OwogICAgICAqKytfX3Jlc3VsdCA9IF9fdmFs
dWU7CiAgICB9CiAgcmV0dXJuICsrX19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJ
dGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KaW5saW5lIF9P
dXRwdXRJdGVyIF9fdW5pcXVlX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1
bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19i
aW5hcnlfcHJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2l0ZXJh
dG9yX3RhZykKewoKICByZXR1cm4gX191bmlxdWVfY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVz
dWx0LCBfX2JpbmFyeV9wcmVkLAogICAgICAgICAgICAgICAgICAgICAgIF9fdmFsdWVfdHlwZShf
X2ZpcnN0KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0
ZXIsIGNsYXNzIF9CaW5hcnlQcmVkaWNhdGU+Cl9Gb3J3YXJkSXRlciBfX3VuaXF1ZV9jb3B5KF9J
bnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
X0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3J3YXJkX2l0ZXJhdG9yX3RhZykKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKICAqX19yZXN1bHQgPSAqX19maXJzdDsK
ICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkKICAgIGlmICghX19iaW5hcnlfcHJlZCgqX19y
ZXN1bHQsICpfX2ZpcnN0KSkgKisrX19yZXN1bHQgPSAqX19maXJzdDsKICByZXR1cm4gKytfX3Jl
c3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBj
bGFzcyBfQmluYXJ5UHJlZGljYXRlPgppbmxpbmUgX091dHB1dEl0ZXIgdW5pcXVlX2NvcHkoX0lu
cHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKQp7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAg
aWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm4gX19yZXN1bHQ7CiAgcmV0dXJuIF9fdW5pcXVl
X2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX19iaW5hcnlfcHJlZCwKICAgICAgICAg
ICAgICAgICAgICAgICBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fcmVzdWx0KSk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfRm9yd2FyZEl0ZXI+Cl9Gb3J3YXJkSXRlciB1bmlxdWUoX0ZvcndhcmRJdGVyIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK
CgogIF9fZmlyc3QgPSBhZGphY2VudF9maW5kKF9fZmlyc3QsIF9fbGFzdCk7CiAgcmV0dXJuIHVu
aXF1ZV9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19maXJzdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
Rm9yd2FyZEl0ZXIsIGNsYXNzIF9CaW5hcnlQcmVkaWNhdGU+Cl9Gb3J3YXJkSXRlciB1bmlxdWUo
X0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAg
ICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKQp7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7CgoKCiAgX19maXJzdCA9IGFkamFjZW50X2ZpbmQoX19maXJzdCwgX19sYXN0LCBf
X2JpbmFyeV9wcmVkKTsKICByZXR1cm4gdW5pcXVlX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX2Zp
cnN0LCBfX2JpbmFyeV9wcmVkKTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJ
dGVyPgp2b2lkIF9fcmV2ZXJzZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0JpZGlyZWN0
aW9uYWxJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90
YWcpIHsKICB3aGlsZSAodHJ1ZSkKICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCB8fCBfX2ZpcnN0
ID09IC0tX19sYXN0KQogICAgICByZXR1cm47CiAgICBlbHNlCiAgICAgIGl0ZXJfc3dhcChfX2Zp
cnN0KyssIF9fbGFzdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcj4Kdm9p
ZCBfX3JldmVyc2UoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIg
X19sYXN0LAogICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykgewogIHdo
aWxlIChfX2ZpcnN0IDwgX19sYXN0KQogICAgaXRlcl9zd2FwKF9fZmlyc3QrKywgLS1fX2xhc3Qp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyPgppbmxpbmUgdm9pZCByZXZl
cnNlKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LCBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0
KQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICBfX3JldmVyc2UoX19maXJzdCwg
X19sYXN0LCBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9CaWRpcmVjdGlvbmFsSXRlciwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRwdXRJdGVyIHJldmVy
c2VfY29weShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBf
T3V0cHV0SXRlciBfX3Jlc3VsdCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCgogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgLS1fX2xhc3Q7CiAgICAqX19y
ZXN1bHQgPSAqX19sYXN0OwogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9
CgoKCnRlbXBsYXRlIDxjbGFzcyBfRXVjbGlkZWFuUmluZ0VsZW1lbnQ+Cl9FdWNsaWRlYW5SaW5n
RWxlbWVudCBfX2djZChfRXVjbGlkZWFuUmluZ0VsZW1lbnQgX19tLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0V1Y2xpZGVhblJpbmdFbGVtZW50IF9fbikKewogIHdoaWxlIChfX24gIT0g
MCkgewogICAgX0V1Y2xpZGVhblJpbmdFbGVtZW50IF9fdCA9IF9fbSAlIF9fbjsKICAgIF9fbSA9
IF9fbjsKICAgIF9fbiA9IF9fdDsKICB9CiAgcmV0dXJuIF9fbTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9Gb3J3YXJkSXRlciwgY2xhc3MgX0Rpc3RhbmNlPgpfRm9yd2FyZEl0ZXIgX19yb3RhdGUoX0Zv
cndhcmRJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19t
aWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAg
ICAgICAgICAgICAgICAgX0Rpc3RhbmNlKiwKICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRf
aXRlcmF0b3JfdGFnKQp7CiAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUpCiAgICByZXR1cm4gX19s
YXN0OwogIGlmIChfX2xhc3QgPT0gX19taWRkbGUpCiAgICByZXR1cm4gX19maXJzdDsKCiAgX0Zv
cndhcmRJdGVyIF9fZmlyc3QyID0gX19taWRkbGU7CiAgZG8gewogICAgc3dhcCgqX19maXJzdCsr
LCAqX19maXJzdDIrKyk7CiAgICBpZiAoX19maXJzdCA9PSBfX21pZGRsZSkKICAgICAgX19taWRk
bGUgPSBfX2ZpcnN0MjsKICB9IHdoaWxlIChfX2ZpcnN0MiAhPSBfX2xhc3QpOwoKICBfRm9yd2Fy
ZEl0ZXIgX19uZXdfbWlkZGxlID0gX19maXJzdDsKCiAgX19maXJzdDIgPSBfX21pZGRsZTsKCiAg
d2hpbGUgKF9fZmlyc3QyICE9IF9fbGFzdCkgewogICAgc3dhcCAoKl9fZmlyc3QrKywgKl9fZmly
c3QyKyspOwogICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUpCiAgICAgIF9fbWlkZGxlID0gX19m
aXJzdDI7CiAgICBlbHNlIGlmIChfX2ZpcnN0MiA9PSBfX2xhc3QpCiAgICAgIF9fZmlyc3QyID0g
X19taWRkbGU7CiAgfQoKICByZXR1cm4gX19uZXdfbWlkZGxlOwp9CgoKdGVtcGxhdGUgPGNsYXNz
IF9CaWRpcmVjdGlvbmFsSXRlciwgY2xhc3MgX0Rpc3RhbmNlPgpfQmlkaXJlY3Rpb25hbEl0ZXIg
X19yb3RhdGUoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0Rpc3RhbmNlKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpZGlyZWN0aW9u
YWxfaXRlcmF0b3JfdGFnKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgaWYg
KF9fZmlyc3QgPT0gX19taWRkbGUpCiAgICByZXR1cm4gX19sYXN0OwogIGlmIChfX2xhc3QgPT0g
X19taWRkbGUpCiAgICByZXR1cm4gX19maXJzdDsKCiAgX19yZXZlcnNlKF9fZmlyc3QsIF9fbWlk
ZGxlLCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZygpKTsKICBfX3JldmVyc2UoX19taWRkbGUs
IF9fbGFzdCwgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcoKSk7CgogIHdoaWxlIChfX2ZpcnN0
ICE9IF9fbWlkZGxlICYmIF9fbWlkZGxlICE9IF9fbGFzdCkKICAgIHN3YXAgKCpfX2ZpcnN0Kyss
ICotLV9fbGFzdCk7CgogIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlKSB7CiAgICBfX3JldmVyc2Uo
X19taWRkbGUsIF9fbGFzdCwgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcoKSk7CiAgICByZXR1
cm4gX19sYXN0OwogIH0KICBlbHNlIHsKICAgIF9fcmV2ZXJzZShfX2ZpcnN0LCBfX21pZGRsZSwg
YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcoKSk7CiAgICByZXR1cm4gX19maXJzdDsKICB9Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX0Rpc3RhbmNlLCBjbGFz
cyBfVHA+Cl9SYW5kb21BY2Nlc3NJdGVyIF9fcm90YXRlKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmly
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSAqLCBfVHAgKikKewoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwoKCiAgX0Rpc3RhbmNlIF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7
CiAgX0Rpc3RhbmNlIF9fayA9IF9fbWlkZGxlIC0gX19maXJzdDsKICBfRGlzdGFuY2UgX19sID0g
X19uIC0gX19rOwogIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0ID0gX19maXJzdCArIChfX2xh
c3QgLSBfX21pZGRsZSk7CgogIGlmIChfX2sgPT0gMCkKICAgIHJldHVybiBfX2xhc3Q7CgogIGVs
c2UgaWYgKF9fayA9PSBfX2wpIHsKICAgIHN3YXBfcmFuZ2VzKF9fZmlyc3QsIF9fbWlkZGxlLCBf
X21pZGRsZSk7CiAgICByZXR1cm4gX19yZXN1bHQ7CiAgfQoKICBfRGlzdGFuY2UgX19kID0gX19n
Y2QoX19uLCBfX2spOwoKICBmb3IgKF9EaXN0YW5jZSBfX2kgPSAwOyBfX2kgPCBfX2Q7IF9faSsr
KSB7CiAgICBfVHAgX190bXAgPSAqX19maXJzdDsKICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcCA9
IF9fZmlyc3Q7CgogICAgaWYgKF9fayA8IF9fbCkgewogICAgICBmb3IgKF9EaXN0YW5jZSBfX2og
PSAwOyBfX2ogPCBfX2wvX19kOyBfX2orKykgewogICAgICAgIGlmIChfX3AgPiBfX2ZpcnN0ICsg
X19sKSB7CiAgICAgICAgICAqX19wID0gKihfX3AgLSBfX2wpOwogICAgICAgICAgX19wIC09IF9f
bDsKICAgICAgICB9CgogICAgICAgICpfX3AgPSAqKF9fcCArIF9fayk7CiAgICAgICAgX19wICs9
IF9fazsKICAgICAgfQogICAgfQoKICAgIGVsc2UgewogICAgICBmb3IgKF9EaXN0YW5jZSBfX2og
PSAwOyBfX2ogPCBfX2svX19kIC0gMTsgX19qICsrKSB7CiAgICAgICAgaWYgKF9fcCA8IF9fbGFz
dCAtIF9faykgewogICAgICAgICAgKl9fcCA9ICooX19wICsgX19rKTsKICAgICAgICAgIF9fcCAr
PSBfX2s7CiAgICAgICAgfQoKICAgICAgICAqX19wID0gKiAoX19wIC0gX19sKTsKICAgICAgICBf
X3AgLT0gX19sOwogICAgICB9CiAgICB9CgogICAgKl9fcCA9IF9fdG1wOwogICAgKytfX2ZpcnN0
OwogIH0KCiAgcmV0dXJuIF9fcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVy
PgppbmxpbmUgX0ZvcndhcmRJdGVyIHJvdGF0ZShfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0Zvcndh
cmRJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIg
X19sYXN0KQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICByZXR1cm4gX19yb3RhdGUoX19maXJz
dCwgX19taWRkbGUsIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgX19kaXN0YW5jZV90eXBlKF9f
Zmlyc3QpLAogICAgICAgICAgICAgICAgICBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRw
dXRJdGVyIHJvdGF0ZV9jb3B5KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19t
aWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xhc3QsIF9PdXRw
dXRJdGVyIF9fcmVzdWx0KQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgcmV0dXJuIGNvcHkoX19m
aXJzdCwgX19taWRkbGUsIGNvcHkoX19taWRkbGUsIF9fbGFzdCwgX19yZXN1bHQpKTsKfQoKCgoK
dGVtcGxhdGUgPGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIF9EaXN0YW5jZSBfX3JhbmRvbV9udW1i
ZXIoX0Rpc3RhbmNlIF9fbikgewoKICByZXR1cm4gbHJhbmQ0OCgpICUgX19uOwoKCgp9CgoKCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcj4KaW5saW5lIHZvaWQgcmFuZG9tX3NodWZm
bGUoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICA7
CgoKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybjsKICBmb3IgKF9SYW5kb21BY2Nlc3NJ
dGVyIF9faSA9IF9fZmlyc3QgKyAxOyBfX2kgIT0gX19sYXN0OyArK19faSkKICAgIGl0ZXJfc3dh
cChfX2ksIF9fZmlyc3QgKyBfX3JhbmRvbV9udW1iZXIoKF9faSAtIF9fZmlyc3QpICsgMSkpOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9SYW5kb21OdW1iZXJH
ZW5lcmF0b3I+CnZvaWQgcmFuZG9tX3NodWZmbGUoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwg
X1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgIF9SYW5kb21OdW1i
ZXJHZW5lcmF0b3ImIF9fcmFuZCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAg
aWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm47CiAgZm9yIChfUmFuZG9tQWNjZXNzSXRlciBf
X2kgPSBfX2ZpcnN0ICsgMTsgX19pICE9IF9fbGFzdDsgKytfX2kpCiAgICBpdGVyX3N3YXAoX19p
LCBfX2ZpcnN0ICsgX19yYW5kKChfX2kgLSBfX2ZpcnN0KSArIDEpKTsKfQoKCgp0ZW1wbGF0ZSA8
Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX0Rpc3RhbmNlPgpf
T3V0cHV0SXRlciByYW5kb21fc2FtcGxlX24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX291
dCwgY29uc3QgX0Rpc3RhbmNlIF9fbikKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogIF9EaXN0YW5j
ZSBfX3JlbWFpbmluZyA9IDA7CiAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfX3JlbWFpbmlu
Zyk7CiAgX0Rpc3RhbmNlIF9fbSA9IG1pbihfX24sIF9fcmVtYWluaW5nKTsKCiAgd2hpbGUgKF9f
bSA+IDApIHsKICAgIGlmIChfX3JhbmRvbV9udW1iZXIoX19yZW1haW5pbmcpIDwgX19tKSB7CiAg
ICAgICpfX291dCA9ICpfX2ZpcnN0OwogICAgICArK19fb3V0OwogICAgICAtLV9fbTsKICAgIH0K
CiAgICAtLV9fcmVtYWluaW5nOwogICAgKytfX2ZpcnN0OwogIH0KICByZXR1cm4gX19vdXQ7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBf
RGlzdGFuY2UsCiAgICAgICAgICBjbGFzcyBfUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgpfT3V0cHV0
SXRlciByYW5kb21fc2FtcGxlX24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBf
X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX291dCwgY29u
c3QgX0Rpc3RhbmNlIF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21OdW1i
ZXJHZW5lcmF0b3ImIF9fcmFuZCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogIF9EaXN0YW5jZSBf
X3JlbWFpbmluZyA9IDA7CiAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfX3JlbWFpbmluZyk7
CiAgX0Rpc3RhbmNlIF9fbSA9IG1pbihfX24sIF9fcmVtYWluaW5nKTsKCiAgd2hpbGUgKF9fbSA+
IDApIHsKICAgIGlmIChfX3JhbmQoX19yZW1haW5pbmcpIDwgX19tKSB7CiAgICAgICpfX291dCA9
ICpfX2ZpcnN0OwogICAgICArK19fb3V0OwogICAgICAtLV9fbTsKICAgIH0KCiAgICAtLV9fcmVt
YWluaW5nOwogICAgKytfX2ZpcnN0OwogIH0KICByZXR1cm4gX19vdXQ7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX0Rpc3RhbmNl
PgpfUmFuZG9tQWNjZXNzSXRlciBfX3JhbmRvbV9zYW1wbGUoX0lucHV0SXRlciBfX2ZpcnN0LCBf
SW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5k
b21BY2Nlc3NJdGVyIF9fb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgX0Rpc3RhbmNlIF9fbikKewogIF9EaXN0YW5jZSBfX20gPSAwOwogIF9EaXN0YW5jZSBfX3Qg
PSBfX247CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdCAmJiBfX20gPCBfX247ICsrX19tLCAr
K19fZmlyc3QpCiAgICBfX291dFtfX21dID0gKl9fZmlyc3Q7CgogIHdoaWxlIChfX2ZpcnN0ICE9
IF9fbGFzdCkgewogICAgKytfX3Q7CiAgICBfRGlzdGFuY2UgX19NID0gX19yYW5kb21fbnVtYmVy
KF9fdCk7CiAgICBpZiAoX19NIDwgX19uKQogICAgICBfX291dFtfX01dID0gKl9fZmlyc3Q7CiAg
ICArK19fZmlyc3Q7CiAgfQoKICByZXR1cm4gX19vdXQgKyBfX207Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfSW5wdXRJdGVyLCBjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwKICAgICAgICAgIGNsYXNzIF9S
YW5kb21OdW1iZXJHZW5lcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KX1JhbmRvbUFjY2Vzc0l0ZXIg
X19yYW5kb21fc2FtcGxlKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX291dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21OdW1iZXJHZW5lcmF0b3Im
IF9fcmFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9EaXN0YW5j
ZSBfX24pCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKCgogIF9EaXN0YW5jZSBfX20gPSAwOwogIF9EaXN0YW5jZSBfX3QgPSBfX247CiAg
Zm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdCAmJiBfX20gPCBfX247ICsrX19tLCArK19fZmlyc3Qp
CiAgICBfX291dFtfX21dID0gKl9fZmlyc3Q7CgogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkg
ewogICAgKytfX3Q7CiAgICBfRGlzdGFuY2UgX19NID0gX19yYW5kKF9fdCk7CiAgICBpZiAoX19N
IDwgX19uKQogICAgICBfX291dFtfX01dID0gKl9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CiAgfQoK
ICByZXR1cm4gX19vdXQgKyBfX207Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFz
cyBfUmFuZG9tQWNjZXNzSXRlcj4KaW5saW5lIF9SYW5kb21BY2Nlc3NJdGVyCnJhbmRvbV9zYW1w
bGUoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICBf
UmFuZG9tQWNjZXNzSXRlciBfX291dF9maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19vdXRfbGFz
dCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgcmV0dXJuIF9f
cmFuZG9tX3NhbXBsZShfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBf
X291dF9maXJzdCwgX19vdXRfbGFzdCAtIF9fb3V0X2ZpcnN0KTsKfQoKCnRlbXBsYXRlIDxjbGFz
cyBfSW5wdXRJdGVyLCBjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwKICAgICAgICAgIGNsYXNzIF9S
YW5kb21OdW1iZXJHZW5lcmF0b3I+CmlubGluZSBfUmFuZG9tQWNjZXNzSXRlcgpyYW5kb21fc2Ft
cGxlKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXIgX19vdXRfZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fb3V0X2xh
c3QsCiAgICAgICAgICAgICAgX1JhbmRvbU51bWJlckdlbmVyYXRvciYgX19yYW5kKQp7CgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICByZXR1cm4gX19yYW5kb21fc2Ft
cGxlKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2ZpcnN0
LCBfX3JhbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9sYXN0IC0gX19vdXRfZmly
c3QpOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9QcmVkaWNhdGU+
Cl9Gb3J3YXJkSXRlciBfX3BhcnRpdGlvbihfRm9yd2FyZEl0ZXIgX19maXJzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBfUHJlZGljYXRlIF9fcHJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRf
aXRlcmF0b3JfdGFnKQp7CiAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm4gX19maXJzdDsK
CiAgd2hpbGUgKF9fcHJlZCgqX19maXJzdCkpCiAgICBpZiAoKytfX2ZpcnN0ID09IF9fbGFzdCkg
cmV0dXJuIF9fZmlyc3Q7CgogIF9Gb3J3YXJkSXRlciBfX25leHQgPSBfX2ZpcnN0OwoKICB3aGls
ZSAoKytfX25leHQgIT0gX19sYXN0KQogICAgaWYgKF9fcHJlZCgqX19uZXh0KSkgewogICAgICBz
d2FwKCpfX2ZpcnN0LCAqX19uZXh0KTsKICAgICAgKytfX2ZpcnN0OwogICAgfQoKICByZXR1cm4g
X19maXJzdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlciwgY2xhc3MgX1By
ZWRpY2F0ZT4KX0JpZGlyZWN0aW9uYWxJdGVyIF9fcGFydGl0aW9uKF9CaWRpcmVjdGlvbmFsSXRl
ciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QcmVkaWNhdGUgX19w
cmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlkaXJlY3Rpb25hbF9pdGVyYXRv
cl90YWcpCnsKICB3aGlsZSAodHJ1ZSkgewogICAgd2hpbGUgKHRydWUpCiAgICAgIGlmIChfX2Zp
cnN0ID09IF9fbGFzdCkKICAgICAgICByZXR1cm4gX19maXJzdDsKICAgICAgZWxzZSBpZiAoX19w
cmVkKCpfX2ZpcnN0KSkKICAgICAgICArK19fZmlyc3Q7CiAgICAgIGVsc2UKICAgICAgICBicmVh
azsKICAgIC0tX19sYXN0OwogICAgd2hpbGUgKHRydWUpCiAgICAgIGlmIChfX2ZpcnN0ID09IF9f
bGFzdCkKICAgICAgICByZXR1cm4gX19maXJzdDsKICAgICAgZWxzZSBpZiAoIV9fcHJlZCgqX19s
YXN0KSkKICAgICAgICAtLV9fbGFzdDsKICAgICAgZWxzZQogICAgICAgIGJyZWFrOwogICAgaXRl
cl9zd2FwKF9fZmlyc3QsIF9fbGFzdCk7CiAgICArK19fZmlyc3Q7CiAgfQp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgppbmxpbmUgX0ZvcndhcmRJdGVy
IHBhcnRpdGlvbihfRm9yd2FyZEl0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X1ByZWRpY2F0ZSBfX3ByZWQpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogIHJldHVy
biBfX3BhcnRpdGlvbihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwgX19pdGVyYXRvcl9jYXRlZ29y
eShfX2ZpcnN0KSk7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfUHJl
ZGljYXRlLCBjbGFzcyBfRGlzdGFuY2U+Cl9Gb3J3YXJkSXRlciBfX2lucGxhY2Vfc3RhYmxlX3Bh
cnRpdGlvbihfRm9yd2FyZEl0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwgX0Rpc3RhbmNlIF9fbGVuKQp7CiAg
aWYgKF9fbGVuID09IDEpCiAgICByZXR1cm4gX19wcmVkKCpfX2ZpcnN0KSA/IF9fbGFzdCA6IF9f
Zmlyc3Q7CiAgX0ZvcndhcmRJdGVyIF9fbWlkZGxlID0gX19maXJzdDsKICBhZHZhbmNlKF9fbWlk
ZGxlLCBfX2xlbiAvIDIpOwogIHJldHVybiByb3RhdGUoX19pbnBsYWNlX3N0YWJsZV9wYXJ0aXRp
b24oX19maXJzdCwgX19taWRkbGUsIF9fcHJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fbGVuIC8gMiksCiAgICAgICAgICAgICAgICBfX21pZGRsZSwKICAg
ICAgICAgICAgICAgIF9faW5wbGFjZV9zdGFibGVfcGFydGl0aW9uKF9fbWlkZGxlLCBfX2xhc3Qs
IF9fcHJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGVu
IC0gX19sZW4gLyAyKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9Q
b2ludGVyLCBjbGFzcyBfUHJlZGljYXRlLAogICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlPgpfRm9y
d2FyZEl0ZXIgX19zdGFibGVfcGFydGl0aW9uX2FkYXB0aXZlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBf
X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ByZWRpY2F0
ZSBfX3ByZWQsIF9EaXN0YW5jZSBfX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfUG9pbnRlciBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSkKewogIGlmIChfX2xlbiA8PSBf
X2J1ZmZlcl9zaXplKSB7CiAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQxID0gX19maXJzdDsKICAg
IF9Qb2ludGVyIF9fcmVzdWx0MiA9IF9fYnVmZmVyOwogICAgZm9yICggOyBfX2ZpcnN0ICE9IF9f
bGFzdCA7ICsrX19maXJzdCkKICAgICAgaWYgKF9fcHJlZCgqX19maXJzdCkpIHsKICAgICAgICAq
X19yZXN1bHQxID0gKl9fZmlyc3Q7CiAgICAgICAgKytfX3Jlc3VsdDE7CiAgICAgIH0KICAgICAg
ZWxzZSB7CiAgICAgICAgKl9fcmVzdWx0MiA9ICpfX2ZpcnN0OwogICAgICAgICsrX19yZXN1bHQy
OwogICAgICB9CiAgICBjb3B5KF9fYnVmZmVyLCBfX3Jlc3VsdDIsIF9fcmVzdWx0MSk7CiAgICBy
ZXR1cm4gX19yZXN1bHQxOwogIH0KICBlbHNlIHsKICAgIF9Gb3J3YXJkSXRlciBfX21pZGRsZSA9
IF9fZmlyc3Q7CiAgICBhZHZhbmNlKF9fbWlkZGxlLCBfX2xlbiAvIDIpOwogICAgcmV0dXJuIHJv
dGF0ZShfX3N0YWJsZV9wYXJ0aXRpb25fYWRhcHRpdmUoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19maXJzdCwgX19taWRkbGUsIF9fcHJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2xlbiAvIDIsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplKSwKICAgICAgICAgICAgICAgICAgICBf
X21pZGRsZSwKICAgICAgICAgICAgICAgICAgICBfX3N0YWJsZV9wYXJ0aXRpb25fYWRhcHRpdmUo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgX19taWRkbGUsIF9fbGFzdCwgX19wcmVkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fbGVuIC0gX19sZW4gLyAyLCBfX2J1ZmZlciwgX19idWZm
ZXJfc2l6ZSkpOwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1By
ZWRpY2F0ZSwgY2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBfRm9yd2FyZEl0ZXIK
X19zdGFibGVfcGFydGl0aW9uX2F1eChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVy
IF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwgX1RwKiwg
X0Rpc3RhbmNlKikKewogIF9UZW1wb3JhcnlfYnVmZmVyPF9Gb3J3YXJkSXRlciwgX1RwPiBfX2J1
ZihfX2ZpcnN0LCBfX2xhc3QpOwogIGlmIChfX2J1Zi5zaXplKCkgPiAwKQogICAgcmV0dXJuIF9f
c3RhYmxlX3BhcnRpdGlvbl9hZGFwdGl2ZShfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlKF9fYnVmLnJlcXVlc3Rl
ZF9zaXplKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2J1Zi5i
ZWdpbigpLCBfX2J1Zi5zaXplKCkpOwogIGVsc2UKICAgIHJldHVybiBfX2lucGxhY2Vfc3RhYmxl
X3BhcnRpdGlvbihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfRGlzdGFuY2UoX19idWYucmVxdWVzdGVkX3NpemUoKSkpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgppbmxpbmUgX0Zv
cndhcmRJdGVyIHN0YWJsZV9wYXJ0aXRpb24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQpCnsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKCgogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgIHJldHVy
biBfX2ZpcnN0OwogIGVsc2UKICAgIHJldHVybiBfX3N0YWJsZV9wYXJ0aXRpb25fYXV4KF9fZmly
c3QsIF9fbGFzdCwgX19wcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192
YWx1ZV90eXBlKF9fZmlyc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19k
aXN0YW5jZV90eXBlKF9fZmlyc3QpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJ
dGVyLCBjbGFzcyBfVHA+Cl9SYW5kb21BY2Nlc3NJdGVyIF9fdW5ndWFyZGVkX3BhcnRpdGlvbihf
UmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX1RwIF9fcGl2b3QpCnsKICB3aGlsZSAodHJ1ZSkgewogICAgd2hp
bGUgKCpfX2ZpcnN0IDwgX19waXZvdCkKICAgICAgKytfX2ZpcnN0OwogICAgLS1fX2xhc3Q7CiAg
ICB3aGlsZSAoX19waXZvdCA8ICpfX2xhc3QpCiAgICAgIC0tX19sYXN0OwogICAgaWYgKCEoX19m
aXJzdCA8IF9fbGFzdCkpCiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgaXRlcl9zd2FwKF9fZmly
c3QsIF9fbGFzdCk7CiAgICArK19fZmlyc3Q7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRv
bUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+Cl9SYW5kb21BY2Nlc3NJdGVy
IF9fdW5ndWFyZGVkX3BhcnRpdGlvbihfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RwIF9fcGl2b3QsIF9D
b21wYXJlIF9fY29tcCkKewogIHdoaWxlICh0cnVlKSB7CiAgICB3aGlsZSAoX19jb21wKCpfX2Zp
cnN0LCBfX3Bpdm90KSkKICAgICAgKytfX2ZpcnN0OwogICAgLS1fX2xhc3Q7CiAgICB3aGlsZSAo
X19jb21wKF9fcGl2b3QsICpfX2xhc3QpKQogICAgICAtLV9fbGFzdDsKICAgIGlmICghKF9fZmly
c3QgPCBfX2xhc3QpKQogICAgICByZXR1cm4gX19maXJzdDsKICAgIGl0ZXJfc3dhcChfX2ZpcnN0
LCBfX2xhc3QpOwogICAgKytfX2ZpcnN0OwogIH0KfQoKY29uc3QgaW50IF9fc3RsX3RocmVzaG9s
ZCA9IDE2OwoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcD4K
dm9pZCBfX3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwg
X1RwIF9fdmFsKQp7CiAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19uZXh0ID0gX19sYXN0OwogIC0tX19u
ZXh0OwogIHdoaWxlIChfX3ZhbCA8ICpfX25leHQpIHsKICAgICpfX2xhc3QgPSAqX19uZXh0Owog
ICAgX19sYXN0ID0gX19uZXh0OwogICAgLS1fX25leHQ7CiAgfQogICpfX2xhc3QgPSBfX3ZhbDsK
fQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9D
b21wYXJlPgp2b2lkIF9fdW5ndWFyZGVkX2xpbmVhcl9pbnNlcnQoX1JhbmRvbUFjY2Vzc0l0ZXIg
X19sYXN0LCBfVHAgX192YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFy
ZSBfX2NvbXApCnsKICBfUmFuZG9tQWNjZXNzSXRlciBfX25leHQgPSBfX2xhc3Q7CiAgLS1fX25l
eHQ7CiAgd2hpbGUgKF9fY29tcChfX3ZhbCwgKl9fbmV4dCkpIHsKICAgICpfX2xhc3QgPSAqX19u
ZXh0OwogICAgX19sYXN0ID0gX19uZXh0OwogICAgLS1fX25leHQ7CiAgfQogICpfX2xhc3QgPSBf
X3ZhbDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHA+Cmlu
bGluZSB2b2lkIF9fbGluZWFyX2luc2VydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfVHAqKQp7
CiAgX1RwIF9fdmFsID0gKl9fbGFzdDsKICBpZiAoX192YWwgPCAqX19maXJzdCkgewogICAgY29w
eV9iYWNrd2FyZChfX2ZpcnN0LCBfX2xhc3QsIF9fbGFzdCArIDEpOwogICAgKl9fZmlyc3QgPSBf
X3ZhbDsKICB9CiAgZWxzZQogICAgX191bmd1YXJkZWRfbGluZWFyX2luc2VydChfX2xhc3QsIF9f
dmFsKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHAsIGNs
YXNzIF9Db21wYXJlPgppbmxpbmUgdm9pZCBfX2xpbmVhcl9pbnNlcnQoX1JhbmRvbUFjY2Vzc0l0
ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVy
IF9fbGFzdCwgX1RwKiwgX0NvbXBhcmUgX19jb21wKQp7CiAgX1RwIF9fdmFsID0gKl9fbGFzdDsK
ICBpZiAoX19jb21wKF9fdmFsLCAqX19maXJzdCkpIHsKICAgIGNvcHlfYmFja3dhcmQoX19maXJz
dCwgX19sYXN0LCBfX2xhc3QgKyAxKTsKICAgICpfX2ZpcnN0ID0gX192YWw7CiAgfQogIGVsc2UK
ICAgIF9fdW5ndWFyZGVkX2xpbmVhcl9pbnNlcnQoX19sYXN0LCBfX3ZhbCwgX19jb21wKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyPgp2b2lkIF9faW5zZXJ0aW9uX3NvcnQo
X1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KQp7CiAg
aWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm47CiAgZm9yIChfUmFuZG9tQWNjZXNzSXRlciBf
X2kgPSBfX2ZpcnN0ICsgMTsgX19pICE9IF9fbGFzdDsgKytfX2kpCiAgICBfX2xpbmVhcl9pbnNl
cnQoX19maXJzdCwgX19pLCBfX3ZhbHVlX3R5cGUoX19maXJzdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9faW5zZXJ0aW9uX3Nv
cnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgIF9SYW5k
b21BY2Nlc3NJdGVyIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQp7CiAgaWYgKF9fZmlyc3QgPT0g
X19sYXN0KSByZXR1cm47CiAgZm9yIChfUmFuZG9tQWNjZXNzSXRlciBfX2kgPSBfX2ZpcnN0ICsg
MTsgX19pICE9IF9fbGFzdDsgKytfX2kpCiAgICBfX2xpbmVhcl9pbnNlcnQoX19maXJzdCwgX19p
LCBfX3ZhbHVlX3R5cGUoX19maXJzdCksIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFu
ZG9tQWNjZXNzSXRlciwgY2xhc3MgX1RwPgp2b2lkIF9fdW5ndWFyZGVkX2luc2VydGlvbl9zb3J0
X2F1eChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCopCnsKICBmb3IgKF9SYW5k
b21BY2Nlc3NJdGVyIF9faSA9IF9fZmlyc3Q7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogICAgX191
bmd1YXJkZWRfbGluZWFyX2luc2VydChfX2ksIF9UcCgqX19pKSk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfUmFuZG9tQWNjZXNzSXRlcj4KaW5saW5lIHZvaWQgX191bmd1YXJkZWRfaW5zZXJ0aW9uX3Nv
cnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpIHsKICBfX3VuZ3VhcmRlZF9pbnNlcnRpb25f
c29ydF9hdXgoX19maXJzdCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoX19maXJzdCkpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+
CnZvaWQgX191bmd1YXJkZWRfaW5zZXJ0aW9uX3NvcnRfYXV4KF9SYW5kb21BY2Nlc3NJdGVyIF9f
Zmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RwKiwgX0Nv
bXBhcmUgX19jb21wKQp7CiAgZm9yIChfUmFuZG9tQWNjZXNzSXRlciBfX2kgPSBfX2ZpcnN0OyBf
X2kgIT0gX19sYXN0OyArK19faSkKICAgIF9fdW5ndWFyZGVkX2xpbmVhcl9pbnNlcnQoX19pLCBf
VHAoKl9faSksIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwg
Y2xhc3MgX0NvbXBhcmU+CmlubGluZSB2b2lkIF9fdW5ndWFyZGVkX2luc2VydGlvbl9zb3J0KF9S
YW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKQp7CiAgX191bmd1YXJkZWRfaW5zZXJ0aW9u
X3NvcnRfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX192YWx1ZV90eXBlKF9fZmlyc3QpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jh
bmRvbUFjY2Vzc0l0ZXI+CnZvaWQgX19maW5hbF9pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNz
SXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0
ZXIgX19sYXN0KQp7CiAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPiBfX3N0bF90aHJlc2hvbGQpIHsK
ICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19maXJzdCArIF9fc3RsX3RocmVzaG9sZCk7
CiAgICBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29ydChfX2ZpcnN0ICsgX19zdGxfdGhyZXNob2xk
LCBfX2xhc3QpOwogIH0KICBlbHNlCiAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFz
dCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX0NvbXBhcmU+
CnZvaWQgX19maW5hbF9pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfQ29t
cGFyZSBfX2NvbXApCnsKICBpZiAoX19sYXN0IC0gX19maXJzdCA+IF9fc3RsX3RocmVzaG9sZCkg
ewogICAgX19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2ZpcnN0ICsgX19zdGxfdGhyZXNob2xk
LCBfX2NvbXApOwogICAgX191bmd1YXJkZWRfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCArIF9fc3Rs
X3RocmVzaG9sZCwgX19sYXN0LCBfX2NvbXApOwogIH0KICBlbHNlCiAgICBfX2luc2VydGlvbl9z
b3J0KF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9TaXplPgpp
bmxpbmUgX1NpemUgX19sZyhfU2l6ZSBfX24pCnsKICBfU2l6ZSBfX2s7CiAgZm9yIChfX2sgPSAw
OyBfX24gIT0gMTsgX19uID4+PSAxKSArK19fazsKICByZXR1cm4gX19rOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX1NpemU+CnZvaWQgX19p
bnRyb3NvcnRfbG9vcChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAg
ICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfVHAqLAogICAgICAgICAgICAgICAgICAg
ICAgX1NpemUgX19kZXB0aF9saW1pdCkKewogIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gX19z
dGxfdGhyZXNob2xkKSB7CiAgICBpZiAoX19kZXB0aF9saW1pdCA9PSAwKSB7CiAgICAgIHBhcnRp
YWxfc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fbGFzdCk7CiAgICAgIHJldHVybjsKICAgIH0KICAg
IC0tX19kZXB0aF9saW1pdDsKICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fY3V0ID0KICAgICAgX191
bmd1YXJkZWRfcGFydGl0aW9uKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9UcChfX21lZGlhbigqX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqKF9fZmlyc3QgKyAoX19sYXN0IC0gX19maXJzdCkvMiksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihfX2xhc3QgLSAxKSkpKTsKICAgIF9f
aW50cm9zb3J0X2xvb3AoX19jdXQsIF9fbGFzdCwgKF9UcCopIDAsIF9fZGVwdGhfbGltaXQpOwog
ICAgX19sYXN0ID0gX19jdXQ7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX1NpemUsIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9faW50cm9z
b3J0X2xvb3AoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAg
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX1RwKiwKICAgICAgICAgICAgICAgICAgICAgIF9T
aXplIF9fZGVwdGhfbGltaXQsIF9Db21wYXJlIF9fY29tcCkKewogIHdoaWxlIChfX2xhc3QgLSBf
X2ZpcnN0ID4gX19zdGxfdGhyZXNob2xkKSB7CiAgICBpZiAoX19kZXB0aF9saW1pdCA9PSAwKSB7
CiAgICAgIHBhcnRpYWxfc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fbGFzdCwgX19jb21wKTsKICAg
ICAgcmV0dXJuOwogICAgfQogICAgLS1fX2RlcHRoX2xpbWl0OwogICAgX1JhbmRvbUFjY2Vzc0l0
ZXIgX19jdXQgPQogICAgICBfX3VuZ3VhcmRlZF9wYXJ0aXRpb24oX19maXJzdCwgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RwKF9fbWVkaWFuKCpfX2ZpcnN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooX19maXJzdCArIChfX2xhc3QgLSBf
X2ZpcnN0KS8yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKF9f
bGFzdCAtIDEpLCBfX2NvbXApKSwKICAgICAgIF9fY29tcCk7CiAgICBfX2ludHJvc29ydF9sb29w
KF9fY3V0LCBfX2xhc3QsIChfVHAqKSAwLCBfX2RlcHRoX2xpbWl0LCBfX2NvbXApOwogICAgX19s
YXN0ID0gX19jdXQ7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXI+Cmlu
bGluZSB2b2lkIHNvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0
ZXIgX19sYXN0KQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgog
IGlmIChfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgX19pbnRyb3NvcnRfbG9vcChfX2ZpcnN0LCBf
X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fdmFsdWVfdHlwZShfX2ZpcnN0KSwKICAgICAg
ICAgICAgICAgICAgICAgX19sZyhfX2xhc3QgLSBfX2ZpcnN0KSAqIDIpOwogICAgX19maW5hbF9p
bnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QpOwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9S
YW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5lIHZvaWQgc29ydChfUmFuZG9t
QWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAg
ICAgICAgX0NvbXBhcmUgX19jb21wKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICA7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKCgoKICBpZiAoX19maXJzdCAhPSBfX2xhc3QpIHsKICAgIF9faW50cm9zb3J0X2xv
b3AoX19maXJzdCwgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICBfX3ZhbHVlX3R5cGUoX19m
aXJzdCksCiAgICAgICAgICAgICAgICAgICAgIF9fbGcoX19sYXN0IC0gX19maXJzdCkgKiAyLAog
ICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwogICAgX19maW5hbF9pbnNlcnRpb25fc29ydChf
X2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7CiAgfQp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9t
QWNjZXNzSXRlcj4Kdm9pZCBfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIg
X19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19s
YXN0KQp7CiAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPCAxNSkgewogICAgX19pbnNlcnRpb25fc29y
dChfX2ZpcnN0LCBfX2xhc3QpOwogICAgcmV0dXJuOwogIH0KICBfUmFuZG9tQWNjZXNzSXRlciBf
X21pZGRsZSA9IF9fZmlyc3QgKyAoX19sYXN0IC0gX19maXJzdCkgLyAyOwogIF9faW5wbGFjZV9z
dGFibGVfc29ydChfX2ZpcnN0LCBfX21pZGRsZSk7CiAgX19pbnBsYWNlX3N0YWJsZV9zb3J0KF9f
bWlkZGxlLCBfX2xhc3QpOwogIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19maXJzdCwgX19taWRk
bGUsIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fbWlkZGxlIC0gX19maXJzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGFzdCAtIF9fbWlkZGxlKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFyZT4Kdm9pZCBfX2lucGxhY2Vf
c3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApCnsKICBp
ZiAoX19sYXN0IC0gX19maXJzdCA8IDE1KSB7CiAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3Qs
IF9fbGFzdCwgX19jb21wKTsKICAgIHJldHVybjsKICB9CiAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19t
aWRkbGUgPSBfX2ZpcnN0ICsgKF9fbGFzdCAtIF9fZmlyc3QpIC8gMjsKICBfX2lucGxhY2Vfc3Rh
YmxlX3NvcnQoX19maXJzdCwgX19taWRkbGUsIF9fY29tcCk7CiAgX19pbnBsYWNlX3N0YWJsZV9z
b3J0KF9fbWlkZGxlLCBfX2xhc3QsIF9fY29tcCk7CiAgX19tZXJnZV93aXRob3V0X2J1ZmZlcihf
X2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19taWRk
bGUgLSBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19sYXN0IC0gX19taWRkbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jh
bmRvbUFjY2Vzc0l0ZXIxLCBjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcjIsCiAgICAgICAgICBjbGFz
cyBfRGlzdGFuY2U+CnZvaWQgX19tZXJnZV9zb3J0X2xvb3AoX1JhbmRvbUFjY2Vzc0l0ZXIxIF9f
Zmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIxIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcjIgX19yZXN1bHQsIF9EaXN0
YW5jZSBfX3N0ZXBfc2l6ZSkKewogIF9EaXN0YW5jZSBfX3R3b19zdGVwID0gMiAqIF9fc3RlcF9z
aXplOwoKICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+PSBfX3R3b19zdGVwKSB7CiAgICBfX3Jl
c3VsdCA9IG1lcmdlKF9fZmlyc3QsIF9fZmlyc3QgKyBfX3N0ZXBfc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgX19maXJzdCArIF9fc3RlcF9zaXplLCBfX2ZpcnN0ICsgX190d29fc3RlcCwKICAg
ICAgICAgICAgICAgICAgICAgX19yZXN1bHQpOwogICAgX19maXJzdCArPSBfX3R3b19zdGVwOwog
IH0KCiAgX19zdGVwX3NpemUgPSBtaW4oX0Rpc3RhbmNlKF9fbGFzdCAtIF9fZmlyc3QpLCBfX3N0
ZXBfc2l6ZSk7CiAgbWVyZ2UoX19maXJzdCwgX19maXJzdCArIF9fc3RlcF9zaXplLCBfX2ZpcnN0
ICsgX19zdGVwX3NpemUsIF9fbGFzdCwKICAgICAgICBfX3Jlc3VsdCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfUmFuZG9tQWNjZXNzSXRlcjEsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyMiwKICAgICAg
ICAgIGNsYXNzIF9EaXN0YW5jZSwgY2xhc3MgX0NvbXBhcmU+CnZvaWQgX19tZXJnZV9zb3J0X2xv
b3AoX1JhbmRvbUFjY2Vzc0l0ZXIxIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXIxIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNj
ZXNzSXRlcjIgX19yZXN1bHQsIF9EaXN0YW5jZSBfX3N0ZXBfc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICBfQ29tcGFyZSBfX2NvbXApCnsKICBfRGlzdGFuY2UgX190d29fc3RlcCA9IDIgKiBf
X3N0ZXBfc2l6ZTsKCiAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPj0gX190d29fc3RlcCkgewog
ICAgX19yZXN1bHQgPSBtZXJnZShfX2ZpcnN0LCBfX2ZpcnN0ICsgX19zdGVwX3NpemUsCiAgICAg
ICAgICAgICAgICAgICAgIF9fZmlyc3QgKyBfX3N0ZXBfc2l6ZSwgX19maXJzdCArIF9fdHdvX3N0
ZXAsCiAgICAgICAgICAgICAgICAgICAgIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICBf
X2NvbXApOwogICAgX19maXJzdCArPSBfX3R3b19zdGVwOwogIH0KICBfX3N0ZXBfc2l6ZSA9IG1p
bihfRGlzdGFuY2UoX19sYXN0IC0gX19maXJzdCksIF9fc3RlcF9zaXplKTsKCiAgbWVyZ2UoX19m
aXJzdCwgX19maXJzdCArIF9fc3RlcF9zaXplLAogICAgICAgIF9fZmlyc3QgKyBfX3N0ZXBfc2l6
ZSwgX19sYXN0LAogICAgICAgIF9fcmVzdWx0LAogICAgICAgIF9fY29tcCk7Cn0KCmNvbnN0IGlu
dCBfX3N0bF9jaHVua19zaXplID0gNzsKCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRl
ciwgY2xhc3MgX0Rpc3RhbmNlPgp2b2lkIF9fY2h1bmtfaW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nl
c3NJdGVyIF9fbGFzdCwgX0Rpc3RhbmNlIF9fY2h1bmtfc2l6ZSkKewogIHdoaWxlIChfX2xhc3Qg
LSBfX2ZpcnN0ID49IF9fY2h1bmtfc2l6ZSkgewogICAgX19pbnNlcnRpb25fc29ydChfX2ZpcnN0
LCBfX2ZpcnN0ICsgX19jaHVua19zaXplKTsKICAgIF9fZmlyc3QgKz0gX19jaHVua19zaXplOwog
IH0KICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX0Rpc3RhbmNlLCBjbGFzcyBfQ29tcGFyZT4Kdm9p
ZCBfX2NodW5rX2luc2VydGlvbl9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UgX19jaHVua19zaXplLCBfQ29tcGFyZSBfX2Nv
bXApCnsKICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+PSBfX2NodW5rX3NpemUpIHsKICAgIF9f
aW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19maXJzdCArIF9fY2h1bmtfc2l6ZSwgX19jb21wKTsK
ICAgIF9fZmlyc3QgKz0gX19jaHVua19zaXplOwogIH0KICBfX2luc2VydGlvbl9zb3J0KF9fZmly
c3QsIF9fbGFzdCwgX19jb21wKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVy
LCBjbGFzcyBfUG9pbnRlciwgY2xhc3MgX0Rpc3RhbmNlPgp2b2lkIF9fbWVyZ2Vfc29ydF93aXRo
X2J1ZmZlcihfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLCBfRGlzdGFuY2UqKQp7CiAgX0Rpc3RhbmNlIF9fbGVu
ID0gX19sYXN0IC0gX19maXJzdDsKICBfUG9pbnRlciBfX2J1ZmZlcl9sYXN0ID0gX19idWZmZXIg
KyBfX2xlbjsKCiAgX0Rpc3RhbmNlIF9fc3RlcF9zaXplID0gX19zdGxfY2h1bmtfc2l6ZTsKICBf
X2NodW5rX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19zdGVwX3NpemUpOwoKICB3
aGlsZSAoX19zdGVwX3NpemUgPCBfX2xlbikgewogICAgX19tZXJnZV9zb3J0X2xvb3AoX19maXJz
dCwgX19sYXN0LCBfX2J1ZmZlciwgX19zdGVwX3NpemUpOwogICAgX19zdGVwX3NpemUgKj0gMjsK
ICAgIF9fbWVyZ2Vfc29ydF9sb29wKF9fYnVmZmVyLCBfX2J1ZmZlcl9sYXN0LCBfX2ZpcnN0LCBf
X3N0ZXBfc2l6ZSk7CiAgICBfX3N0ZXBfc2l6ZSAqPSAyOwogIH0KfQoKdGVtcGxhdGUgPGNsYXNz
IF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfUG9pbnRlciwgY2xhc3MgX0Rpc3RhbmNlLAogICAg
ICAgICAgY2xhc3MgX0NvbXBhcmU+CnZvaWQgX19tZXJnZV9zb3J0X3dpdGhfYnVmZmVyKF9SYW5k
b21BY2Nlc3NJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5k
b21BY2Nlc3NJdGVyIF9fbGFzdCwgX1BvaW50ZXIgX19idWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9EaXN0YW5jZSosIF9Db21wYXJlIF9fY29tcCkKewogIF9EaXN0YW5jZSBf
X2xlbiA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgX1BvaW50ZXIgX19idWZmZXJfbGFzdCA9IF9fYnVm
ZmVyICsgX19sZW47CgogIF9EaXN0YW5jZSBfX3N0ZXBfc2l6ZSA9IF9fc3RsX2NodW5rX3NpemU7
CiAgX19jaHVua19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fc3RlcF9zaXplLCBf
X2NvbXApOwoKICB3aGlsZSAoX19zdGVwX3NpemUgPCBfX2xlbikgewogICAgX19tZXJnZV9zb3J0
X2xvb3AoX19maXJzdCwgX19sYXN0LCBfX2J1ZmZlciwgX19zdGVwX3NpemUsIF9fY29tcCk7CiAg
ICBfX3N0ZXBfc2l6ZSAqPSAyOwogICAgX19tZXJnZV9zb3J0X2xvb3AoX19idWZmZXIsIF9fYnVm
ZmVyX2xhc3QsIF9fZmlyc3QsIF9fc3RlcF9zaXplLCBfX2NvbXApOwogICAgX19zdGVwX3NpemUg
Kj0gMjsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1Bv
aW50ZXIsIGNsYXNzIF9EaXN0YW5jZT4Kdm9pZCBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9SYW5k
b21BY2Nlc3NJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9t
QWNjZXNzSXRlciBfX2xhc3QsIF9Qb2ludGVyIF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX0Rpc3RhbmNlIF9fYnVmZmVyX3NpemUpCnsKICBfRGlzdGFuY2UgX19sZW4gPSAo
X19sYXN0IC0gX19maXJzdCArIDEpIC8gMjsKICBfUmFuZG9tQWNjZXNzSXRlciBfX21pZGRsZSA9
IF9fZmlyc3QgKyBfX2xlbjsKICBpZiAoX19sZW4gPiBfX2J1ZmZlcl9zaXplKSB7CiAgICBfX3N0
YWJsZV9zb3J0X2FkYXB0aXZlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwgX19idWZmZXJf
c2l6ZSk7CiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fbWlkZGxlLCBfX2xhc3QsIF9fYnVm
ZmVyLCBfX2J1ZmZlcl9zaXplKTsKICB9CiAgZWxzZSB7CiAgICBfX21lcmdlX3NvcnRfd2l0aF9i
dWZmZXIoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVyLCAoX0Rpc3RhbmNlKikwKTsKICAgIF9f
bWVyZ2Vfc29ydF93aXRoX2J1ZmZlcihfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlciwgKF9EaXN0
YW5jZSopMCk7CiAgfQogIF9fbWVyZ2VfYWRhcHRpdmUoX19maXJzdCwgX19taWRkbGUsIF9fbGFz
dCwgX0Rpc3RhbmNlKF9fbWlkZGxlIC0gX19maXJzdCksCiAgICAgICAgICAgICAgICAgICBfRGlz
dGFuY2UoX19sYXN0IC0gX19taWRkbGUpLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1BvaW50ZXIsIGNsYXNzIF9E
aXN0YW5jZSwKICAgICAgICAgIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9fc3RhYmxlX3NvcnRfYWRh
cHRpdmUoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX1BvaW50ZXIgX19idWZmZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSwgX0NvbXBhcmUgX19j
b21wKQp7CiAgX0Rpc3RhbmNlIF9fbGVuID0gKF9fbGFzdCAtIF9fZmlyc3QgKyAxKSAvIDI7CiAg
X1JhbmRvbUFjY2Vzc0l0ZXIgX19taWRkbGUgPSBfX2ZpcnN0ICsgX19sZW47CiAgaWYgKF9fbGVu
ID4gX19idWZmZXJfc2l6ZSkgewogICAgX19zdGFibGVfc29ydF9hZGFwdGl2ZShfX2ZpcnN0LCBf
X21pZGRsZSwgX19idWZmZXIsIF9fYnVmZmVyX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29tcCk7CiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fbWlkZGxlLCBfX2xhc3Qs
IF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bXApOwogIH0KICBlbHNlIHsKICAgIF9fbWVyZ2Vfc29ydF93aXRoX2J1ZmZlcihfX2ZpcnN0LCBf
X21pZGRsZSwgX19idWZmZXIsIChfRGlzdGFuY2UqKTAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbXApOwogICAgX19tZXJnZV9zb3J0X3dpdGhfYnVmZmVyKF9fbWlkZGxlLCBf
X2xhc3QsIF9fYnVmZmVyLCAoX0Rpc3RhbmNlKikwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb21wKTsKICB9CiAgX19tZXJnZV9hZGFwdGl2ZShfX2ZpcnN0LCBfX21pZGRsZSwg
X19sYXN0LCBfRGlzdGFuY2UoX19taWRkbGUgLSBfX2ZpcnN0KSwKICAgICAgICAgICAgICAgICAg
IF9EaXN0YW5jZShfX2xhc3QgLSBfX21pZGRsZSksIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplLAog
ICAgICAgICAgICAgICAgICAgX19jb21wKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nl
c3NJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgX19zdGFibGVf
c29ydF9hdXgoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfVHAqLCBfRGlzdGFuY2UqKQp7CiAg
X1RlbXBvcmFyeV9idWZmZXI8X1JhbmRvbUFjY2Vzc0l0ZXIsIF9UcD4gYnVmKF9fZmlyc3QsIF9f
bGFzdCk7CiAgaWYgKGJ1Zi5iZWdpbigpID09IDApCiAgICBfX2lucGxhY2Vfc3RhYmxlX3NvcnQo
X19maXJzdCwgX19sYXN0KTsKICBlbHNlCiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fZmly
c3QsIF9fbGFzdCwgYnVmLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0
YW5jZShidWYuc2l6ZSgpKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwg
Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgdm9pZCBf
X3N0YWJsZV9zb3J0X2F1eChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCosIF9EaXN0YW5j
ZSosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkKewogIF9U
ZW1wb3JhcnlfYnVmZmVyPF9SYW5kb21BY2Nlc3NJdGVyLCBfVHA+IGJ1ZihfX2ZpcnN0LCBfX2xh
c3QpOwogIGlmIChidWYuYmVnaW4oKSA9PSAwKQogICAgX19pbnBsYWNlX3N0YWJsZV9zb3J0KF9f
Zmlyc3QsIF9fbGFzdCwgX19jb21wKTsKICBlbHNlCiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZl
KF9fZmlyc3QsIF9fbGFzdCwgYnVmLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9EaXN0YW5jZShidWYuc2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb21w
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyPgppbmxpbmUgdm9pZCBzdGFi
bGVfc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAg
ICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwoKCiAgX19zdGFibGVfc29ydF9hdXgoX19maXJzdCwgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgIF9fdmFsdWVfdHlwZShfX2ZpcnN0KSwKICAgICAgICAgICAgICAgICAg
ICBfX2Rpc3RhbmNlX3R5cGUoX19maXJzdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFj
Y2Vzc0l0ZXIsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgdm9pZCBzdGFibGVfc29ydChfUmFuZG9t
QWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNz
SXRlciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkKewoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgoKCiAgX19zdGFibGVfc29ydF9hdXgoX19maXJzdCwgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgIF9fdmFsdWVfdHlwZShfX2ZpcnN0KSwKICAgICAgICAgICAgICAg
ICAgICBfX2Rpc3RhbmNlX3R5cGUoX19maXJzdCksCiAgICAgICAgICAgICAgICAgICAgX19jb21w
KTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcD4Kdm9p
ZCBfX3BhcnRpYWxfc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNz
SXRlciBfX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xh
c3QsIF9UcCopCnsKICBtYWtlX2hlYXAoX19maXJzdCwgX19taWRkbGUpOwogIGZvciAoX1JhbmRv
bUFjY2Vzc0l0ZXIgX19pID0gX19taWRkbGU7IF9faSA8IF9fbGFzdDsgKytfX2kpCiAgICBpZiAo
Kl9faSA8ICpfX2ZpcnN0KQogICAgICBfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2ks
IF9UcCgqX19pKSwKICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoX19maXJzdCkpOwog
IHNvcnRfaGVhcChfX2ZpcnN0LCBfX21pZGRsZSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9t
QWNjZXNzSXRlcj4KaW5saW5lIHZvaWQgcGFydGlhbF9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9f
Zmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX21pZGRs
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCkKewoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICBfX3BhcnRpYWxfc29y
dChfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoX19maXJzdCkpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBh
cmU+CnZvaWQgX19wYXJ0aWFsX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRv
bUFjY2Vzc0l0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0
ZXIgX19sYXN0LCBfVHAqLCBfQ29tcGFyZSBfX2NvbXApCnsKICBtYWtlX2hlYXAoX19maXJzdCwg
X19taWRkbGUsIF9fY29tcCk7CiAgZm9yIChfUmFuZG9tQWNjZXNzSXRlciBfX2kgPSBfX21pZGRs
ZTsgX19pIDwgX19sYXN0OyArK19faSkKICAgIGlmIChfX2NvbXAoKl9faSwgKl9fZmlyc3QpKQog
ICAgICBfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2ksIF9UcCgqX19pKSwgX19jb21w
LAogICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZShfX2ZpcnN0KSk7CiAgc29ydF9oZWFw
KF9fZmlyc3QsIF9fbWlkZGxlLCBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFj
Y2Vzc0l0ZXIsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgdm9pZCBwYXJ0aWFsX3NvcnQoX1JhbmRv
bUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nl
c3NJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0
ZXIgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwoKCgogIF9fcGFydGlhbF9zb3J0KF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xh
c3QsIF9fdmFsdWVfdHlwZShfX2ZpcnN0KSwgX19jb21wKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXIsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfRGlzdGFuY2UsCiAgICAg
ICAgICBjbGFzcyBfVHA+Cl9SYW5kb21BY2Nlc3NJdGVyIF9fcGFydGlhbF9zb3J0X2NvcHkoX0lu
cHV0SXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9J
bnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9S
YW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0X2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0X2xhc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlKiwgX1RwKikKewogIGlmIChfX3Jl
c3VsdF9maXJzdCA9PSBfX3Jlc3VsdF9sYXN0KSByZXR1cm4gX19yZXN1bHRfbGFzdDsKICBfUmFu
ZG9tQWNjZXNzSXRlciBfX3Jlc3VsdF9yZWFsX2xhc3QgPSBfX3Jlc3VsdF9maXJzdDsKICB3aGls
ZShfX2ZpcnN0ICE9IF9fbGFzdCAmJiBfX3Jlc3VsdF9yZWFsX2xhc3QgIT0gX19yZXN1bHRfbGFz
dCkgewogICAgKl9fcmVzdWx0X3JlYWxfbGFzdCA9ICpfX2ZpcnN0OwogICAgKytfX3Jlc3VsdF9y
ZWFsX2xhc3Q7CiAgICArK19fZmlyc3Q7CiAgfQogIG1ha2VfaGVhcChfX3Jlc3VsdF9maXJzdCwg
X19yZXN1bHRfcmVhbF9sYXN0KTsKICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpIHsKICAgIGlm
ICgqX19maXJzdCA8ICpfX3Jlc3VsdF9maXJzdCkKICAgICAgX19hZGp1c3RfaGVhcChfX3Jlc3Vs
dF9maXJzdCwgX0Rpc3RhbmNlKDApLAogICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZShfX3Jl
c3VsdF9yZWFsX2xhc3QgLSBfX3Jlc3VsdF9maXJzdCksCiAgICAgICAgICAgICAgICAgICAgX1Rw
KCpfX2ZpcnN0KSk7CiAgICArK19fZmlyc3Q7CiAgfQogIHNvcnRfaGVhcChfX3Jlc3VsdF9maXJz
dCwgX19yZXN1bHRfcmVhbF9sYXN0KTsKICByZXR1cm4gX19yZXN1bHRfcmVhbF9sYXN0Owp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXI+CmlubGlu
ZSBfUmFuZG9tQWNjZXNzSXRlcgpwYXJ0aWFsX3NvcnRfY29weShfSW5wdXRJdGVyIF9fZmlyc3Qs
IF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBf
X3Jlc3VsdF9maXJzdCwKICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19yZXN1
bHRfbGFzdCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgcmV0dXJu
IF9fcGFydGlhbF9zb3J0X2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdF9maXJzdCwgX19y
ZXN1bHRfbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUo
X19yZXN1bHRfZmlyc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmFsdWVfdHlw
ZShfX2ZpcnN0KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfUmFuZG9t
QWNjZXNzSXRlciwgY2xhc3MgX0NvbXBhcmUsCiAgICAgICAgICBjbGFzcyBfRGlzdGFuY2UsIGNs
YXNzIF9UcD4KX1JhbmRvbUFjY2Vzc0l0ZXIgX19wYXJ0aWFsX3NvcnRfY29weShfSW5wdXRJdGVy
IF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0
SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19yZXN1bHRfZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19yZXN1bHRfbGFzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXAsIF9EaXN0YW5j
ZSosIF9UcCopCnsKICBpZiAoX19yZXN1bHRfZmlyc3QgPT0gX19yZXN1bHRfbGFzdCkgcmV0dXJu
IF9fcmVzdWx0X2xhc3Q7CiAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19yZXN1bHRfcmVhbF9sYXN0ID0g
X19yZXN1bHRfZmlyc3Q7CiAgd2hpbGUoX19maXJzdCAhPSBfX2xhc3QgJiYgX19yZXN1bHRfcmVh
bF9sYXN0ICE9IF9fcmVzdWx0X2xhc3QpIHsKICAgICpfX3Jlc3VsdF9yZWFsX2xhc3QgPSAqX19m
aXJzdDsKICAgICsrX19yZXN1bHRfcmVhbF9sYXN0OwogICAgKytfX2ZpcnN0OwogIH0KICBtYWtl
X2hlYXAoX19yZXN1bHRfZmlyc3QsIF9fcmVzdWx0X3JlYWxfbGFzdCwgX19jb21wKTsKICB3aGls
ZSAoX19maXJzdCAhPSBfX2xhc3QpIHsKICAgIGlmIChfX2NvbXAoKl9fZmlyc3QsICpfX3Jlc3Vs
dF9maXJzdCkpCiAgICAgIF9fYWRqdXN0X2hlYXAoX19yZXN1bHRfZmlyc3QsIF9EaXN0YW5jZSgw
KSwKICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UoX19yZXN1bHRfcmVhbF9sYXN0IC0gX19y
ZXN1bHRfZmlyc3QpLAogICAgICAgICAgICAgICAgICAgIF9UcCgqX19maXJzdCksCiAgICAgICAg
ICAgICAgICAgICAgX19jb21wKTsKICAgICsrX19maXJzdDsKICB9CiAgc29ydF9oZWFwKF9fcmVz
dWx0X2ZpcnN0LCBfX3Jlc3VsdF9yZWFsX2xhc3QsIF9fY29tcCk7CiAgcmV0dXJuIF9fcmVzdWx0
X3JlYWxfbGFzdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9SYW5kb21B
Y2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5lIF9SYW5kb21BY2Nlc3NJdGVyCnBhcnRp
YWxfc29ydF9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAg
ICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0X2ZpcnN0LAogICAgICAgICAg
ICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX3Jlc3VsdF9sYXN0LCBfQ29tcGFyZSBfX2NvbXAp
CnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOwoKCgogIHJldHVybiBfX3BhcnRpYWxfc29ydF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwg
X19yZXN1bHRfZmlyc3QsIF9fcmVzdWx0X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb21wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZShf
X3Jlc3VsdF9maXJzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192YWx1ZV90eXBl
KF9fZmlyc3QpKTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNz
IF9UcD4Kdm9pZCBfX250aF9lbGVtZW50KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5k
b21BY2Nlc3NJdGVyIF9fbnRoLAogICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIg
X19sYXN0LCBfVHAqKQp7CiAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAzKSB7CiAgICBfUmFu
ZG9tQWNjZXNzSXRlciBfX2N1dCA9CiAgICAgIF9fdW5ndWFyZGVkX3BhcnRpdGlvbihfX2ZpcnN0
LCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVHAoX19tZWRpYW4oKl9fZmly
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihfX2ZpcnN0ICsg
KF9fbGFzdCAtIF9fZmlyc3QpLzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICooX19sYXN0IC0gMSkpKSk7CiAgICBpZiAoX19jdXQgPD0gX19udGgpCiAgICAgIF9f
Zmlyc3QgPSBfX2N1dDsKICAgIGVsc2UKICAgICAgX19sYXN0ID0gX19jdXQ7CiAgfQogIF9faW5z
ZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21B
Y2Nlc3NJdGVyPgppbmxpbmUgdm9pZCBudGhfZWxlbWVudChfUmFuZG9tQWNjZXNzSXRlciBfX2Zp
cnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX250aCwKICAgICAgICAgICAgICAgICAgICAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19sYXN0KQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICA7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKCgogIF9fbnRoX2VsZW1lbnQoX19maXJzdCwgX19udGgsIF9fbGFzdCwgX192YWx1
ZV90eXBlKF9fZmlyc3QpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBj
bGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9fbnRoX2VsZW1lbnQoX1JhbmRvbUFjY2Vz
c0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19udGgsCiAgICAgICAgICAgICAgICAg
ICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCosIF9Db21wYXJlIF9fY29tcCkKewogIHdo
aWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gMykgewogICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19jdXQg
PQogICAgICBfX3VuZ3VhcmRlZF9wYXJ0aXRpb24oX19maXJzdCwgX19sYXN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX1RwKF9fbWVkaWFuKCpfX2ZpcnN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICooX19maXJzdCArIChfX2xhc3QgLSBfX2ZpcnN0KS8y
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKF9fbGFzdCAtIDEp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29tcCkpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19jb21wKTsKICAgIGlmIChfX2N1dCA8PSBfX250aCkK
ICAgICAgX19maXJzdCA9IF9fY3V0OwogICAgZWxzZQogICAgICBfX2xhc3QgPSBfX2N1dDsKICB9
CiAgX19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSB2b2lkIG50
aF9lbGVtZW50KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9f
bnRoLAogICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9D
b21wYXJlIF9fY29tcCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CgoKCiAgX19udGhfZWxlbWVudChfX2ZpcnN0LCBfX250aCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUo
X19maXJzdCksIF9fY29tcCk7Cn0KCgoKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNs
YXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPgpfRm9yd2FyZEl0ZXIgX19sb3dlcl9ib3VuZChfRm9y
d2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCwgX0Rpc3RhbmNlKikKewogIF9EaXN0YW5jZSBfX2xl
biA9IDA7CiAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfX2xlbik7CiAgX0Rpc3RhbmNlIF9f
aGFsZjsKICBfRm9yd2FyZEl0ZXIgX19taWRkbGU7CgogIHdoaWxlIChfX2xlbiA+IDApIHsKICAg
IF9faGFsZiA9IF9fbGVuID4+IDE7CiAgICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgICBhZHZhbmNl
KF9fbWlkZGxlLCBfX2hhbGYpOwogICAgaWYgKCpfX21pZGRsZSA8IF9fdmFsKSB7CiAgICAgIF9f
Zmlyc3QgPSBfX21pZGRsZTsKICAgICAgKytfX2ZpcnN0OwogICAgICBfX2xlbiA9IF9fbGVuIC0g
X19oYWxmIC0gMTsKICAgIH0KICAgIGVsc2UKICAgICAgX19sZW4gPSBfX2hhbGY7CiAgfQogIHJl
dHVybiBfX2ZpcnN0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+
CmlubGluZSBfRm9yd2FyZEl0ZXIgbG93ZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9G
b3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
X1RwJiBfX3ZhbCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICByZXR1cm4gX19sb3dl
cl9ib3VuZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsLAogICAgICAgICAgICAgICAgICAgICAgIF9f
ZGlzdGFuY2VfdHlwZShfX2ZpcnN0KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIs
IGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9EaXN0YW5jZT4KX0ZvcndhcmRJdGVy
IF9fbG93ZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192YWwsIF9Db21wYXJl
IF9fY29tcCwgX0Rpc3RhbmNlKikKewogIF9EaXN0YW5jZSBfX2xlbiA9IDA7CiAgZGlzdGFuY2Uo
X19maXJzdCwgX19sYXN0LCBfX2xlbik7CiAgX0Rpc3RhbmNlIF9faGFsZjsKICBfRm9yd2FyZEl0
ZXIgX19taWRkbGU7CgogIHdoaWxlIChfX2xlbiA+IDApIHsKICAgIF9faGFsZiA9IF9fbGVuID4+
IDE7CiAgICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgICBhZHZhbmNlKF9fbWlkZGxlLCBfX2hhbGYp
OwogICAgaWYgKF9fY29tcCgqX19taWRkbGUsIF9fdmFsKSkgewogICAgICBfX2ZpcnN0ID0gX19t
aWRkbGU7CiAgICAgICsrX19maXJzdDsKICAgICAgX19sZW4gPSBfX2xlbiAtIF9faGFsZiAtIDE7
CiAgICB9CiAgICBlbHNlCiAgICAgIF9fbGVuID0gX19oYWxmOwogIH0KICByZXR1cm4gX19maXJz
dDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfQ29t
cGFyZT4KaW5saW5lIF9Gb3J3YXJkSXRlciBsb3dlcl9ib3VuZChfRm9yd2FyZEl0ZXIgX19maXJz
dCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBfVHAmIF9fdmFsLCBfQ29tcGFyZSBfX2NvbXApCnsKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKCiAgcmV0dXJuIF9fbG93ZXJfYm91bmQoX19maXJzdCwgX19sYXN0
LCBfX3ZhbCwgX19jb21wLAogICAgICAgICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZShf
X2ZpcnN0KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xh
c3MgX0Rpc3RhbmNlPgpfRm9yd2FyZEl0ZXIgX191cHBlcl9ib3VuZChfRm9yd2FyZEl0ZXIgX19m
aXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgX1RwJiBfX3ZhbCwgX0Rpc3RhbmNlKikKewogIF9EaXN0YW5jZSBfX2xlbiA9IDA7CiAgZGlz
dGFuY2UoX19maXJzdCwgX19sYXN0LCBfX2xlbik7CiAgX0Rpc3RhbmNlIF9faGFsZjsKICBfRm9y
d2FyZEl0ZXIgX19taWRkbGU7CgogIHdoaWxlIChfX2xlbiA+IDApIHsKICAgIF9faGFsZiA9IF9f
bGVuID4+IDE7CiAgICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgICBhZHZhbmNlKF9fbWlkZGxlLCBf
X2hhbGYpOwogICAgaWYgKF9fdmFsIDwgKl9fbWlkZGxlKQogICAgICBfX2xlbiA9IF9faGFsZjsK
ICAgIGVsc2UgewogICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAgICAgICsrX19maXJzdDsKICAg
ICAgX19sZW4gPSBfX2xlbiAtIF9faGFsZiAtIDE7CiAgICB9CiAgfQogIHJldHVybiBfX2ZpcnN0
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+CmlubGluZSBfRm9y
d2FyZEl0ZXIgdXBwZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBf
X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCkK
ewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICByZXR1cm4gX191cHBlcl9ib3VuZChfX2Zp
cnN0LCBfX2xhc3QsIF9fdmFsLAogICAgICAgICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlw
ZShfX2ZpcnN0KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwg
Y2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9EaXN0YW5jZT4KX0ZvcndhcmRJdGVyIF9fdXBwZXJfYm91
bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192YWwsIF9Db21wYXJlIF9fY29tcCwgX0Rpc3Rh
bmNlKikKewogIF9EaXN0YW5jZSBfX2xlbiA9IDA7CiAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0
LCBfX2xlbik7CiAgX0Rpc3RhbmNlIF9faGFsZjsKICBfRm9yd2FyZEl0ZXIgX19taWRkbGU7Cgog
IHdoaWxlIChfX2xlbiA+IDApIHsKICAgIF9faGFsZiA9IF9fbGVuID4+IDE7CiAgICBfX21pZGRs
ZSA9IF9fZmlyc3Q7CiAgICBhZHZhbmNlKF9fbWlkZGxlLCBfX2hhbGYpOwogICAgaWYgKF9fY29t
cChfX3ZhbCwgKl9fbWlkZGxlKSkKICAgICAgX19sZW4gPSBfX2hhbGY7CiAgICBlbHNlIHsKICAg
ICAgX19maXJzdCA9IF9fbWlkZGxlOwogICAgICArK19fZmlyc3Q7CiAgICAgIF9fbGVuID0gX19s
ZW4gLSBfX2hhbGYgLSAxOwogICAgfQogIH0KICByZXR1cm4gX19maXJzdDsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5lIF9G
b3J3YXJkSXRlciB1cHBlcl9ib3VuZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVy
IF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9fdmFs
LCBfQ29tcGFyZSBfX2NvbXApCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCiAgcmV0dXJuIF9fdXBwZXJfYm91bmQoX19maXJzdCwgX19sYXN0LCBfX3ZhbCwgX19jb21w
LAogICAgICAgICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZShfX2ZpcnN0KSk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPgpw
YWlyPF9Gb3J3YXJkSXRlciwgX0ZvcndhcmRJdGVyPgpfX2VxdWFsX3JhbmdlKF9Gb3J3YXJkSXRl
ciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9fdmFsLAogICAgICAg
ICAgICAgIF9EaXN0YW5jZSopCnsKICBfRGlzdGFuY2UgX19sZW4gPSAwOwogIGRpc3RhbmNlKF9f
Zmlyc3QsIF9fbGFzdCwgX19sZW4pOwogIF9EaXN0YW5jZSBfX2hhbGY7CiAgX0ZvcndhcmRJdGVy
IF9fbWlkZGxlLCBfX2xlZnQsIF9fcmlnaHQ7CgogIHdoaWxlIChfX2xlbiA+IDApIHsKICAgIF9f
aGFsZiA9IF9fbGVuID4+IDE7CiAgICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgICBhZHZhbmNlKF9f
bWlkZGxlLCBfX2hhbGYpOwogICAgaWYgKCpfX21pZGRsZSA8IF9fdmFsKSB7CiAgICAgIF9fZmly
c3QgPSBfX21pZGRsZTsKICAgICAgKytfX2ZpcnN0OwogICAgICBfX2xlbiA9IF9fbGVuIC0gX19o
YWxmIC0gMTsKICAgIH0KICAgIGVsc2UgaWYgKF9fdmFsIDwgKl9fbWlkZGxlKQogICAgICBfX2xl
biA9IF9faGFsZjsKICAgIGVsc2UgewogICAgICBfX2xlZnQgPSBsb3dlcl9ib3VuZChfX2ZpcnN0
LCBfX21pZGRsZSwgX192YWwpOwogICAgICBhZHZhbmNlKF9fZmlyc3QsIF9fbGVuKTsKICAgICAg
X19yaWdodCA9IHVwcGVyX2JvdW5kKCsrX19taWRkbGUsIF9fZmlyc3QsIF9fdmFsKTsKICAgICAg
cmV0dXJuIHBhaXI8X0ZvcndhcmRJdGVyLCBfRm9yd2FyZEl0ZXI+KF9fbGVmdCwgX19yaWdodCk7
CiAgICB9CiAgfQogIHJldHVybiBwYWlyPF9Gb3J3YXJkSXRlciwgX0ZvcndhcmRJdGVyPihfX2Zp
cnN0LCBfX2ZpcnN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1Rw
PgppbmxpbmUgcGFpcjxfRm9yd2FyZEl0ZXIsIF9Gb3J3YXJkSXRlcj4KZXF1YWxfcmFuZ2UoX0Zv
cndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWwp
CnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgcmV0dXJuIF9fZXF1YWxfcmFuZ2UoX19m
aXJzdCwgX19sYXN0LCBfX3ZhbCwKICAgICAgICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5
cGUoX19maXJzdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHAs
IGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfRGlzdGFuY2U+CnBhaXI8X0ZvcndhcmRJdGVyLCBfRm9y
d2FyZEl0ZXI+Cl9fZXF1YWxfcmFuZ2UoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
ciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWwsCiAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21w
LCBfRGlzdGFuY2UqKQp7CiAgX0Rpc3RhbmNlIF9fbGVuID0gMDsKICBkaXN0YW5jZShfX2ZpcnN0
LCBfX2xhc3QsIF9fbGVuKTsKICBfRGlzdGFuY2UgX19oYWxmOwogIF9Gb3J3YXJkSXRlciBfX21p
ZGRsZSwgX19sZWZ0LCBfX3JpZ2h0OwoKICB3aGlsZSAoX19sZW4gPiAwKSB7CiAgICBfX2hhbGYg
PSBfX2xlbiA+PiAxOwogICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICAgYWR2YW5jZShfX21pZGRs
ZSwgX19oYWxmKTsKICAgIGlmIChfX2NvbXAoKl9fbWlkZGxlLCBfX3ZhbCkpIHsKICAgICAgX19m
aXJzdCA9IF9fbWlkZGxlOwogICAgICArK19fZmlyc3Q7CiAgICAgIF9fbGVuID0gX19sZW4gLSBf
X2hhbGYgLSAxOwogICAgfQogICAgZWxzZSBpZiAoX19jb21wKF9fdmFsLCAqX19taWRkbGUpKQog
ICAgICBfX2xlbiA9IF9faGFsZjsKICAgIGVsc2UgewogICAgICBfX2xlZnQgPSBsb3dlcl9ib3Vu
ZChfX2ZpcnN0LCBfX21pZGRsZSwgX192YWwsIF9fY29tcCk7CiAgICAgIGFkdmFuY2UoX19maXJz
dCwgX19sZW4pOwogICAgICBfX3JpZ2h0ID0gdXBwZXJfYm91bmQoKytfX21pZGRsZSwgX19maXJz
dCwgX192YWwsIF9fY29tcCk7CiAgICAgIHJldHVybiBwYWlyPF9Gb3J3YXJkSXRlciwgX0Zvcndh
cmRJdGVyPihfX2xlZnQsIF9fcmlnaHQpOwogICAgfQogIH0KICByZXR1cm4gcGFpcjxfRm9yd2Fy
ZEl0ZXIsIF9Gb3J3YXJkSXRlcj4oX19maXJzdCwgX19maXJzdCk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSBwYWlyPF9G
b3J3YXJkSXRlciwgX0ZvcndhcmRJdGVyPgplcXVhbF9yYW5nZShfRm9yd2FyZEl0ZXIgX19maXJz
dCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbCwKICAgICAgICAgICAgX0Nv
bXBhcmUgX19jb21wKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cgog
IHJldHVybiBfX2VxdWFsX3JhbmdlKF9fZmlyc3QsIF9fbGFzdCwgX192YWwsIF9fY29tcCwKICAg
ICAgICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoX19maXJzdCkpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+CmJvb2wgYmluYXJ5X3NlYXJjaChfRm9y
d2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAg
IGNvbnN0IF9UcCYgX192YWwpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgX0Zvcndh
cmRJdGVyIF9faSA9IGxvd2VyX2JvdW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWwpOwogIHJldHVy
biBfX2kgIT0gX19sYXN0ICYmICEoX192YWwgPCAqX19pKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9G
b3J3YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZT4KYm9vbCBiaW5hcnlfc2VhcmNo
KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAg
ICAgICAgY29uc3QgX1RwJiBfX3ZhbCwKICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29t
cCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICBfRm9yd2FyZEl0
ZXIgX19pID0gbG93ZXJfYm91bmQoX19maXJzdCwgX19sYXN0LCBfX3ZhbCwgX19jb21wKTsKICBy
ZXR1cm4gX19pICE9IF9fbGFzdCAmJiAhX19jb21wKF9fdmFsLCAqX19pKTsKfQoKCgp0ZW1wbGF0
ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfT3V0cHV0SXRl
cj4KX091dHB1dEl0ZXIgbWVyZ2UoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9f
bGFzdDEsCiAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVy
MiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCkKewoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgd2hpbGUgKF9fZmlyc3QxICE9IF9f
bGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikgewogICAgaWYgKCpfX2ZpcnN0MiA8ICpfX2Zp
cnN0MSkgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDI7CiAgICAgICsrX19maXJzdDI7CiAg
ICB9CiAgICBlbHNlIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICArK19fZmly
c3QxOwogICAgfQogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJuIGNvcHkoX19maXJzdDIsIF9f
bGFzdDIsIGNvcHkoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KSk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9PdXRwdXRJdGVyLAog
ICAgICAgICAgY2xhc3MgX0NvbXBhcmU+Cl9PdXRwdXRJdGVyIG1lcmdlKF9JbnB1dEl0ZXIxIF9f
Zmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICBfSW5wdXRJdGVy
MiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgX091dHB1
dEl0ZXIgX19yZXN1bHQsIF9Db21wYXJlIF9fY29tcCkKewoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwoKCgogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3Qy
ICE9IF9fbGFzdDIpIHsKICAgIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKSB7CiAg
ICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsKICAgICAgKytfX2ZpcnN0MjsKICAgIH0KICAgIGVs
c2UgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICsrX19maXJzdDE7CiAgICB9
CiAgICArK19fcmVzdWx0OwogIH0KICByZXR1cm4gY29weShfX2ZpcnN0MiwgX19sYXN0MiwgY29w
eShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpKTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0Jp
ZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfRGlzdGFuY2U+CnZvaWQgX19tZXJnZV93aXRob3V0X2J1
ZmZlcihfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfRGlzdGFuY2UgX19sZW4xLCBfRGlzdGFuY2UgX19sZW4yKQp7CiAgaWYgKF9fbGVuMSA9PSAw
IHx8IF9fbGVuMiA9PSAwKQogICAgcmV0dXJuOwogIGlmIChfX2xlbjEgKyBfX2xlbjIgPT0gMikg
ewogICAgaWYgKCpfX21pZGRsZSA8ICpfX2ZpcnN0KQogICAgICBpdGVyX3N3YXAoX19maXJzdCwg
X19taWRkbGUpOwogICAgcmV0dXJuOwogIH0KICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdF9j
dXQgPSBfX2ZpcnN0OwogIF9CaWRpcmVjdGlvbmFsSXRlciBfX3NlY29uZF9jdXQgPSBfX21pZGRs
ZTsKICBfRGlzdGFuY2UgX19sZW4xMSA9IDA7CiAgX0Rpc3RhbmNlIF9fbGVuMjIgPSAwOwogIGlm
IChfX2xlbjEgPiBfX2xlbjIpIHsKICAgIF9fbGVuMTEgPSBfX2xlbjEgLyAyOwogICAgYWR2YW5j
ZShfX2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgICBfX3NlY29uZF9jdXQgPSBsb3dlcl9ib3VuZChf
X21pZGRsZSwgX19sYXN0LCAqX19maXJzdF9jdXQpOwogICAgZGlzdGFuY2UoX19taWRkbGUsIF9f
c2Vjb25kX2N1dCwgX19sZW4yMik7CiAgfQogIGVsc2UgewogICAgX19sZW4yMiA9IF9fbGVuMiAv
IDI7CiAgICBhZHZhbmNlKF9fc2Vjb25kX2N1dCwgX19sZW4yMik7CiAgICBfX2ZpcnN0X2N1dCA9
IHVwcGVyX2JvdW5kKF9fZmlyc3QsIF9fbWlkZGxlLCAqX19zZWNvbmRfY3V0KTsKICAgIGRpc3Rh
bmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX2xlbjExKTsKICB9CiAgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fbmV3X21pZGRsZQogICAgPSByb3RhdGUoX19maXJzdF9jdXQsIF9fbWlkZGxlLCBfX3Nl
Y29uZF9jdXQpOwogIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19maXJzdCwgX19maXJzdF9jdXQs
IF9fbmV3X21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGVuMTEsIF9fbGVuMjIp
OwogIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19uZXdfbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9f
bGFzdCwgX19sZW4xIC0gX19sZW4xMSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGVuMiAt
IF9fbGVuMjIpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBf
RGlzdGFuY2UsIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX0Jp
ZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3Rh
bmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9Db21wYXJlIF9fY29tcCkKewogIGlmIChfX2xlbjEgPT0gMCB8fCBfX2xlbjIgPT0gMCkKICAg
IHJldHVybjsKICBpZiAoX19sZW4xICsgX19sZW4yID09IDIpIHsKICAgIGlmIChfX2NvbXAoKl9f
bWlkZGxlLCAqX19maXJzdCkpCiAgICAgIGl0ZXJfc3dhcChfX2ZpcnN0LCBfX21pZGRsZSk7CiAg
ICByZXR1cm47CiAgfQogIF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0X2N1dCA9IF9fZmlyc3Q7
CiAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fc2Vjb25kX2N1dCA9IF9fbWlkZGxlOwogIF9EaXN0YW5j
ZSBfX2xlbjExID0gMDsKICBfRGlzdGFuY2UgX19sZW4yMiA9IDA7CiAgaWYgKF9fbGVuMSA+IF9f
bGVuMikgewogICAgX19sZW4xMSA9IF9fbGVuMSAvIDI7CiAgICBhZHZhbmNlKF9fZmlyc3RfY3V0
LCBfX2xlbjExKTsKICAgIF9fc2Vjb25kX2N1dCA9IGxvd2VyX2JvdW5kKF9fbWlkZGxlLCBfX2xh
c3QsICpfX2ZpcnN0X2N1dCwgX19jb21wKTsKICAgIGRpc3RhbmNlKF9fbWlkZGxlLCBfX3NlY29u
ZF9jdXQsIF9fbGVuMjIpOwogIH0KICBlbHNlIHsKICAgIF9fbGVuMjIgPSBfX2xlbjIgLyAyOwog
ICAgYWR2YW5jZShfX3NlY29uZF9jdXQsIF9fbGVuMjIpOwogICAgX19maXJzdF9jdXQgPSB1cHBl
cl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgKl9fc2Vjb25kX2N1dCwgX19jb21wKTsKICAgIGRp
c3RhbmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX2xlbjExKTsKICB9CiAgX0JpZGlyZWN0aW9u
YWxJdGVyIF9fbmV3X21pZGRsZQogICAgPSByb3RhdGUoX19maXJzdF9jdXQsIF9fbWlkZGxlLCBf
X3NlY29uZF9jdXQpOwogIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19maXJzdCwgX19maXJzdF9j
dXQsIF9fbmV3X21pZGRsZSwgX19sZW4xMSwgX19sZW4yMiwKICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29tcCk7CiAgX19tZXJnZV93aXRob3V0X2J1ZmZlcihfX25ld19taWRkbGUsIF9fc2Vj
b25kX2N1dCwgX19sYXN0LCBfX2xlbjEgLSBfX2xlbjExLAogICAgICAgICAgICAgICAgICAgICAg
ICAgX19sZW4yIC0gX19sZW4yMiwgX19jb21wKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVj
dGlvbmFsSXRlcjEsIGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjIsCiAgICAgICAgICBjbGFzcyBf
RGlzdGFuY2U+Cl9CaWRpcmVjdGlvbmFsSXRlcjEgX19yb3RhdGVfYWRhcHRpdmUoX0JpZGlyZWN0
aW9uYWxJdGVyMSBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9CaWRpcmVjdGlvbmFsSXRlcjEgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIy
IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5j
ZSBfX2J1ZmZlcl9zaXplKQp7CiAgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2J1ZmZlcl9lbmQ7CiAg
aWYgKF9fbGVuMSA+IF9fbGVuMiAmJiBfX2xlbjIgPD0gX19idWZmZXJfc2l6ZSkgewogICAgX19i
dWZmZXJfZW5kID0gY29weShfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlcik7CiAgICBjb3B5X2Jh
Y2t3YXJkKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QpOwogICAgcmV0dXJuIGNvcHkoX19idWZm
ZXIsIF9fYnVmZmVyX2VuZCwgX19maXJzdCk7CiAgfQogIGVsc2UgaWYgKF9fbGVuMSA8PSBfX2J1
ZmZlcl9zaXplKSB7CiAgICBfX2J1ZmZlcl9lbmQgPSBjb3B5KF9fZmlyc3QsIF9fbWlkZGxlLCBf
X2J1ZmZlcik7CiAgICBjb3B5KF9fbWlkZGxlLCBfX2xhc3QsIF9fZmlyc3QpOwogICAgcmV0dXJu
IGNvcHlfYmFja3dhcmQoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwgX19sYXN0KTsKICB9CiAgZWxz
ZQogICAgcmV0dXJuIHJvdGF0ZShfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0KTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjEsIGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjIs
CiAgICAgICAgICBjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIzPgpfQmlkaXJlY3Rpb25hbEl0ZXIz
IF9fbWVyZ2VfYmFja3dhcmQoX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2ZpcnN0MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIg
X19maXJzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rp
b25hbEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
QmlkaXJlY3Rpb25hbEl0ZXIzIF9fcmVzdWx0KQp7CiAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEp
CiAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MiwgX19sYXN0MiwgX19yZXN1bHQpOwog
IGlmIChfX2ZpcnN0MiA9PSBfX2xhc3QyKQogICAgcmV0dXJuIGNvcHlfYmFja3dhcmQoX19maXJz
dDEsIF9fbGFzdDEsIF9fcmVzdWx0KTsKICAtLV9fbGFzdDE7CiAgLS1fX2xhc3QyOwogIHdoaWxl
ICh0cnVlKSB7CiAgICBpZiAoKl9fbGFzdDIgPCAqX19sYXN0MSkgewogICAgICAqLS1fX3Jlc3Vs
dCA9ICpfX2xhc3QxOwogICAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKICAgICAgICByZXR1
cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MiwgKytfX2xhc3QyLCBfX3Jlc3VsdCk7CiAgICAgIC0t
X19sYXN0MTsKICAgIH0KICAgIGVsc2UgewogICAgICAqLS1fX3Jlc3VsdCA9ICpfX2xhc3QyOwog
ICAgICBpZiAoX19maXJzdDIgPT0gX19sYXN0MikKICAgICAgICByZXR1cm4gY29weV9iYWNrd2Fy
ZChfX2ZpcnN0MSwgKytfX2xhc3QxLCBfX3Jlc3VsdCk7CiAgICAgIC0tX19sYXN0MjsKICAgIH0K
ICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIxLCBjbGFzcyBfQmlkaXJl
Y3Rpb25hbEl0ZXIyLAogICAgICAgICAgY2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMywgY2xhc3Mg
X0NvbXBhcmU+Cl9CaWRpcmVjdGlvbmFsSXRlcjMgX19tZXJnZV9iYWNrd2FyZChfQmlkaXJlY3Rp
b25hbEl0ZXIxIF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2ZpcnN0MiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19sYXN0MiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjMgX19yZXN1bHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApCnsK
ICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKICAgIHJldHVybiBjb3B5X2JhY2t3YXJkKF9fZmly
c3QyLCBfX2xhc3QyLCBfX3Jlc3VsdCk7CiAgaWYgKF9fZmlyc3QyID09IF9fbGFzdDIpCiAgICBy
ZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpOwogIC0tX19s
YXN0MTsKICAtLV9fbGFzdDI7CiAgd2hpbGUgKHRydWUpIHsKICAgIGlmIChfX2NvbXAoKl9fbGFz
dDIsICpfX2xhc3QxKSkgewogICAgICAqLS1fX3Jlc3VsdCA9ICpfX2xhc3QxOwogICAgICBpZiAo
X19maXJzdDEgPT0gX19sYXN0MSkKICAgICAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0
MiwgKytfX2xhc3QyLCBfX3Jlc3VsdCk7CiAgICAgIC0tX19sYXN0MTsKICAgIH0KICAgIGVsc2Ug
ewogICAgICAqLS1fX3Jlc3VsdCA9ICpfX2xhc3QyOwogICAgICBpZiAoX19maXJzdDIgPT0gX19s
YXN0MikKICAgICAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MSwgKytfX2xhc3QxLCBf
X3Jlc3VsdCk7CiAgICAgIC0tX19sYXN0MjsKICAgIH0KICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
QmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9EaXN0YW5jZSwgY2xhc3MgX1BvaW50ZXI+CnZvaWQg
X19tZXJnZV9hZGFwdGl2ZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwKICAgICAgICAgICAg
ICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwKICAgICAgICAgICAgICAgICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICBfRGlz
dGFuY2UgX19sZW4xLCBfRGlzdGFuY2UgX19sZW4yLAogICAgICAgICAgICAgICAgICAgICAgX1Bv
aW50ZXIgX19idWZmZXIsIF9EaXN0YW5jZSBfX2J1ZmZlcl9zaXplKQp7CiAgaWYgKF9fbGVuMSA8
PSBfX2xlbjIgJiYgX19sZW4xIDw9IF9fYnVmZmVyX3NpemUpIHsKICAgIF9Qb2ludGVyIF9fYnVm
ZmVyX2VuZCA9IGNvcHkoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVyKTsKICAgIG1lcmdlKF9f
YnVmZmVyLCBfX2J1ZmZlcl9lbmQsIF9fbWlkZGxlLCBfX2xhc3QsIF9fZmlyc3QpOwogIH0KICBl
bHNlIGlmIChfX2xlbjIgPD0gX19idWZmZXJfc2l6ZSkgewogICAgX1BvaW50ZXIgX19idWZmZXJf
ZW5kID0gY29weShfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlcik7CiAgICBfX21lcmdlX2JhY2t3
YXJkKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwgX19idWZmZXJfZW5kLCBfX2xhc3QpOwog
IH0KICBlbHNlIHsKICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0X2N1dCA9IF9fZmlyc3Q7
CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19zZWNvbmRfY3V0ID0gX19taWRkbGU7CiAgICBfRGlz
dGFuY2UgX19sZW4xMSA9IDA7CiAgICBfRGlzdGFuY2UgX19sZW4yMiA9IDA7CiAgICBpZiAoX19s
ZW4xID4gX19sZW4yKSB7CiAgICAgIF9fbGVuMTEgPSBfX2xlbjEgLyAyOwogICAgICBhZHZhbmNl
KF9fZmlyc3RfY3V0LCBfX2xlbjExKTsKICAgICAgX19zZWNvbmRfY3V0ID0gbG93ZXJfYm91bmQo
X19taWRkbGUsIF9fbGFzdCwgKl9fZmlyc3RfY3V0KTsKICAgICAgZGlzdGFuY2UoX19taWRkbGUs
IF9fc2Vjb25kX2N1dCwgX19sZW4yMik7CiAgICB9CiAgICBlbHNlIHsKICAgICAgX19sZW4yMiA9
IF9fbGVuMiAvIDI7CiAgICAgIGFkdmFuY2UoX19zZWNvbmRfY3V0LCBfX2xlbjIyKTsKICAgICAg
X19maXJzdF9jdXQgPSB1cHBlcl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgKl9fc2Vjb25kX2N1
dCk7CiAgICAgIGRpc3RhbmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX2xlbjExKTsKICAgIH0K
ICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX25ld19taWRkbGUgPQogICAgICBfX3JvdGF0ZV9hZGFw
dGl2ZShfX2ZpcnN0X2N1dCwgX19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sZW4xIC0gX19sZW4x
MSwKICAgICAgICAgICAgICAgICAgICAgICAgX19sZW4yMiwgX19idWZmZXIsIF9fYnVmZmVyX3Np
emUpOwogICAgX19tZXJnZV9hZGFwdGl2ZShfX2ZpcnN0LCBfX2ZpcnN0X2N1dCwgX19uZXdfbWlk
ZGxlLCBfX2xlbjExLAogICAgICAgICAgICAgICAgICAgICBfX2xlbjIyLCBfX2J1ZmZlciwgX19i
dWZmZXJfc2l6ZSk7CiAgICBfX21lcmdlX2FkYXB0aXZlKF9fbmV3X21pZGRsZSwgX19zZWNvbmRf
Y3V0LCBfX2xhc3QsIF9fbGVuMSAtIF9fbGVuMTEsCiAgICAgICAgICAgICAgICAgICAgIF9fbGVu
MiAtIF9fbGVuMjIsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplKTsKICB9Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9EaXN0YW5jZSwgY2xhc3MgX1BvaW50ZXIs
CiAgICAgICAgICBjbGFzcyBfQ29tcGFyZT4Kdm9pZCBfX21lcmdlX2FkYXB0aXZlKF9CaWRpcmVj
dGlvbmFsSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSBfX2xlbjEsIF9EaXN0YW5jZSBf
X2xlbjIsCiAgICAgICAgICAgICAgICAgICAgICBfUG9pbnRlciBfX2J1ZmZlciwgX0Rpc3RhbmNl
IF9fYnVmZmVyX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApCnsK
ICBpZiAoX19sZW4xIDw9IF9fbGVuMiAmJiBfX2xlbjEgPD0gX19idWZmZXJfc2l6ZSkgewogICAg
X1BvaW50ZXIgX19idWZmZXJfZW5kID0gY29weShfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIp
OwogICAgbWVyZ2UoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwgX19taWRkbGUsIF9fbGFzdCwgX19m
aXJzdCwgX19jb21wKTsKICB9CiAgZWxzZSBpZiAoX19sZW4yIDw9IF9fYnVmZmVyX3NpemUpIHsK
ICAgIF9Qb2ludGVyIF9fYnVmZmVyX2VuZCA9IGNvcHkoX19taWRkbGUsIF9fbGFzdCwgX19idWZm
ZXIpOwogICAgX19tZXJnZV9iYWNrd2FyZChfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIsIF9f
YnVmZmVyX2VuZCwgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwogIH0KICBl
bHNlIHsKICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0X2N1dCA9IF9fZmlyc3Q7CiAgICBf
QmlkaXJlY3Rpb25hbEl0ZXIgX19zZWNvbmRfY3V0ID0gX19taWRkbGU7CiAgICBfRGlzdGFuY2Ug
X19sZW4xMSA9IDA7CiAgICBfRGlzdGFuY2UgX19sZW4yMiA9IDA7CiAgICBpZiAoX19sZW4xID4g
X19sZW4yKSB7CiAgICAgIF9fbGVuMTEgPSBfX2xlbjEgLyAyOwogICAgICBhZHZhbmNlKF9fZmly
c3RfY3V0LCBfX2xlbjExKTsKICAgICAgX19zZWNvbmRfY3V0ID0gbG93ZXJfYm91bmQoX19taWRk
bGUsIF9fbGFzdCwgKl9fZmlyc3RfY3V0LCBfX2NvbXApOwogICAgICBkaXN0YW5jZShfX21pZGRs
ZSwgX19zZWNvbmRfY3V0LCBfX2xlbjIyKTsKICAgIH0KICAgIGVsc2UgewogICAgICBfX2xlbjIy
ID0gX19sZW4yIC8gMjsKICAgICAgYWR2YW5jZShfX3NlY29uZF9jdXQsIF9fbGVuMjIpOwogICAg
ICBfX2ZpcnN0X2N1dCA9IHVwcGVyX2JvdW5kKF9fZmlyc3QsIF9fbWlkZGxlLCAqX19zZWNvbmRf
Y3V0LCBfX2NvbXApOwogICAgICBkaXN0YW5jZShfX2ZpcnN0LCBfX2ZpcnN0X2N1dCwgX19sZW4x
MSk7CiAgICB9CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19uZXdfbWlkZGxlID0KICAgICAgX19y
b3RhdGVfYWRhcHRpdmUoX19maXJzdF9jdXQsIF9fbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGVu
MSAtIF9fbGVuMTEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fbGVuMjIsIF9fYnVmZmVyLCBf
X2J1ZmZlcl9zaXplKTsKICAgIF9fbWVyZ2VfYWRhcHRpdmUoX19maXJzdCwgX19maXJzdF9jdXQs
IF9fbmV3X21pZGRsZSwgX19sZW4xMSwKICAgICAgICAgICAgICAgICAgICAgX19sZW4yMiwgX19i
dWZmZXIsIF9fYnVmZmVyX3NpemUsIF9fY29tcCk7CiAgICBfX21lcmdlX2FkYXB0aXZlKF9fbmV3
X21pZGRsZSwgX19zZWNvbmRfY3V0LCBfX2xhc3QsIF9fbGVuMSAtIF9fbGVuMTEsCiAgICAgICAg
ICAgICAgICAgICAgIF9fbGVuMiAtIF9fbGVuMjIsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplLCBf
X2NvbXApOwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlciwgY2xhc3Mg
X1RwLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIF9faW5wbGFjZV9tZXJnZV9hdXgoX0Jp
ZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X0JpZGlyZWN0aW9uYWxJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsIF9UcCosIF9EaXN0YW5jZSopCnsKICBfRGlz
dGFuY2UgX19sZW4xID0gMDsKICBkaXN0YW5jZShfX2ZpcnN0LCBfX21pZGRsZSwgX19sZW4xKTsK
ICBfRGlzdGFuY2UgX19sZW4yID0gMDsKICBkaXN0YW5jZShfX21pZGRsZSwgX19sYXN0LCBfX2xl
bjIpOwoKICBfVGVtcG9yYXJ5X2J1ZmZlcjxfQmlkaXJlY3Rpb25hbEl0ZXIsIF9UcD4gX19idWYo
X19maXJzdCwgX19sYXN0KTsKICBpZiAoX19idWYuYmVnaW4oKSA9PSAwKQogICAgX19tZXJnZV93
aXRob3V0X2J1ZmZlcihfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LCBfX2xlbjEsIF9fbGVuMik7
CiAgZWxzZQogICAgX19tZXJnZV9hZGFwdGl2ZShfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LCBf
X2xlbjEsIF9fbGVuMiwKICAgICAgICAgICAgICAgICAgICAgX19idWYuYmVnaW4oKSwgX0Rpc3Rh
bmNlKF9fYnVmLnNpemUoKSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVy
LCBjbGFzcyBfVHAsCiAgICAgICAgICBjbGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9Db21wYXJlPgpp
bmxpbmUgdm9pZCBfX2lucGxhY2VfbWVyZ2VfYXV4KF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21p
ZGRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIg
X19sYXN0LCBfVHAqLCBfRGlzdGFuY2UqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9Db21wYXJlIF9fY29tcCkKewogIF9EaXN0YW5jZSBfX2xlbjEgPSAwOwogIGRpc3RhbmNlKF9f
Zmlyc3QsIF9fbWlkZGxlLCBfX2xlbjEpOwogIF9EaXN0YW5jZSBfX2xlbjIgPSAwOwogIGRpc3Rh
bmNlKF9fbWlkZGxlLCBfX2xhc3QsIF9fbGVuMik7CgogIF9UZW1wb3JhcnlfYnVmZmVyPF9CaWRp
cmVjdGlvbmFsSXRlciwgX1RwPiBfX2J1ZihfX2ZpcnN0LCBfX2xhc3QpOwogIGlmIChfX2J1Zi5i
ZWdpbigpID09IDApCiAgICBfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9fbWlkZGxl
LCBfX2xhc3QsIF9fbGVuMSwgX19sZW4yLCBfX2NvbXApOwogIGVsc2UKICAgIF9fbWVyZ2VfYWRh
cHRpdmUoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX19sZW4xLCBfX2xlbjIsCiAgICAgICAg
ICAgICAgICAgICAgIF9fYnVmLmJlZ2luKCksIF9EaXN0YW5jZShfX2J1Zi5zaXplKCkpLAogICAg
ICAgICAgICAgICAgICAgICBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9u
YWxJdGVyPgppbmxpbmUgdm9pZCBpbnBsYWNlX21lcmdlKF9CaWRpcmVjdGlvbmFsSXRlciBfX2Zp
cnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRs
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0KQp7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgaWYgKF9fZmly
c3QgPT0gX19taWRkbGUgfHwgX19taWRkbGUgPT0gX19sYXN0KQogICAgcmV0dXJuOwogIF9faW5w
bGFjZV9tZXJnZV9hdXgoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwKICAgICAgICAgICAgICAg
ICAgICAgIF9fdmFsdWVfdHlwZShfX2ZpcnN0KSwgX19kaXN0YW5jZV90eXBlKF9fZmlyc3QpKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlciwgY2xhc3MgX0NvbXBhcmU+Cmlu
bGluZSB2b2lkIGlucGxhY2VfbWVyZ2UoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbWlkZGxlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsIF9Db21wYXJlIF9f
Y29tcCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKICBp
ZiAoX19maXJzdCA9PSBfX21pZGRsZSB8fCBfX21pZGRsZSA9PSBfX2xhc3QpCiAgICByZXR1cm47
CiAgX19pbnBsYWNlX21lcmdlX2F1eChfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LAogICAgICAg
ICAgICAgICAgICAgICAgX192YWx1ZV90eXBlKF9fZmlyc3QpLCBfX2Rpc3RhbmNlX3R5cGUoX19m
aXJzdCksCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwp9CgoKCgoKCnRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjI+CmJvb2wgaW5jbHVkZXMoX0lucHV0
SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgX0lucHV0
SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIpCnsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CgoKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAh
PSBfX2xhc3QyKQogICAgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICAgcmV0dXJuIGZh
bHNlOwogICAgZWxzZSBpZigqX19maXJzdDEgPCAqX19maXJzdDIpCiAgICAgICsrX19maXJzdDE7
CiAgICBlbHNlCiAgICAgICsrX19maXJzdDEsICsrX19maXJzdDI7CgogIHJldHVybiBfX2ZpcnN0
MiA9PSBfX2xhc3QyOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1
dEl0ZXIyLCBjbGFzcyBfQ29tcGFyZT4KYm9vbCBpbmNsdWRlcyhfSW5wdXRJdGVyMSBfX2ZpcnN0
MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0
MiwgX0lucHV0SXRlcjIgX19sYXN0MiwgX0NvbXBhcmUgX19jb21wKQp7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwoKCgogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmly
c3QyICE9IF9fbGFzdDIpCiAgICBpZiAoX19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkKICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgZWxzZSBpZihfX2NvbXAoKl9fZmlyc3QxLCAqX19maXJzdDIp
KQogICAgICArK19fZmlyc3QxOwogICAgZWxzZQogICAgICArK19fZmlyc3QxLCArK19fZmlyc3Qy
OwoKICByZXR1cm4gX19maXJzdDIgPT0gX19sYXN0MjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1
dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRwdXRJdGVy
IHNldF91bmlvbihfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAg
ICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xh
c3QyLAogICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpCnsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xh
c3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIHsKICAgIGlmICgqX19maXJzdDEgPCAqX19maXJz
dDIpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICArK19fZmlyc3QxOwogICAg
fQogICAgZWxzZSBpZiAoKl9fZmlyc3QyIDwgKl9fZmlyc3QxKSB7CiAgICAgICpfX3Jlc3VsdCA9
ICpfX2ZpcnN0MjsKICAgICAgKytfX2ZpcnN0MjsKICAgIH0KICAgIGVsc2UgewogICAgICAqX19y
ZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICsrX19maXJzdDE7CiAgICAgICsrX19maXJzdDI7CiAg
ICB9CiAgICArK19fcmVzdWx0OwogIH0KICByZXR1cm4gY29weShfX2ZpcnN0MiwgX19sYXN0Miwg
Y29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXIsCiAgICAgICAg
ICBjbGFzcyBfQ29tcGFyZT4KX091dHB1dEl0ZXIgc2V0X3VuaW9uKF9JbnB1dEl0ZXIxIF9fZmly
c3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRl
cjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICBf
T3V0cHV0SXRlciBfX3Jlc3VsdCwgX0NvbXBhcmUgX19jb21wKQp7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7CgoKCiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19m
aXJzdDIgIT0gX19sYXN0MikgewogICAgaWYgKF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0Mikp
IHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICArK19fZmlyc3QxOwogICAgfQog
ICAgZWxzZSBpZiAoX19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkgewogICAgICAqX19yZXN1
bHQgPSAqX19maXJzdDI7CiAgICAgICsrX19maXJzdDI7CiAgICB9CiAgICBlbHNlIHsKICAgICAg
Kl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICArK19fZmlyc3QxOwogICAgICArK19fZmlyc3Qy
OwogICAgfQogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJuIGNvcHkoX19maXJzdDIsIF9fbGFz
dDIsIGNvcHkoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KSk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9PdXRwdXRJdGVyPgpfT3V0
cHV0SXRlciBzZXRfaW50ZXJzZWN0aW9uKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVy
MSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmly
c3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9P
dXRwdXRJdGVyIF9fcmVzdWx0KQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CgoKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQog
ICAgaWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikKICAgICAgKytfX2ZpcnN0MTsKICAgIGVsc2Ug
aWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICAgKytfX2ZpcnN0MjsKICAgIGVsc2Ugewog
ICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICsrX19maXJzdDE7CiAgICAgICsrX19m
aXJzdDI7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfT3V0cHV0
SXRlciwKICAgICAgICAgIGNsYXNzIF9Db21wYXJlPgpfT3V0cHV0SXRlciBzZXRfaW50ZXJzZWN0
aW9uKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xh
c3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBf
Q29tcGFyZSBfX2NvbXApCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoK
ICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAg
aWYgKF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0MikpCiAgICAgICsrX19maXJzdDE7CiAgICBl
bHNlIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKQogICAgICArK19fZmlyc3QyOwog
ICAgZWxzZSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MTsK
ICAgICAgKytfX2ZpcnN0MjsKICAgICAgKytfX3Jlc3VsdDsKICAgIH0KICByZXR1cm4gX19yZXN1
bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNs
YXNzIF9PdXRwdXRJdGVyPgpfT3V0cHV0SXRlciBzZXRfZGlmZmVyZW5jZShfSW5wdXRJdGVyMSBf
X2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
X0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0KQp7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgoKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0
MiAhPSBfX2xhc3QyKQogICAgaWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikgewogICAgICAqX19y
ZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICsrX19maXJzdDE7CiAgICAgICsrX19yZXN1bHQ7CiAg
ICB9CiAgICBlbHNlIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEpCiAgICAgICsrX19maXJzdDI7
CiAgICBlbHNlIHsKICAgICAgKytfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MjsKICAgIH0KICBy
ZXR1cm4gY29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfT3V0cHV0SXRlciwKICAg
ICAgICAgIGNsYXNzIF9Db21wYXJlPgpfT3V0cHV0SXRlciBzZXRfZGlmZmVyZW5jZShfSW5wdXRJ
dGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXAp
CnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKICB3aGlsZSAoX19maXJz
dDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAgaWYgKF9fY29tcCgqX19m
aXJzdDEsICpfX2ZpcnN0MikpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICAr
K19fZmlyc3QxOwogICAgICArK19fcmVzdWx0OwogICAgfQogICAgZWxzZSBpZiAoX19jb21wKCpf
X2ZpcnN0MiwgKl9fZmlyc3QxKSkKICAgICAgKytfX2ZpcnN0MjsKICAgIGVsc2UgewogICAgICAr
K19fZmlyc3QxOwogICAgICArK19fZmlyc3QyOwogICAgfQogIHJldHVybiBjb3B5KF9fZmlyc3Qx
LCBfX2xhc3QxLCBfX3Jlc3VsdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xh
c3MgX0lucHV0SXRlcjIsIGNsYXNzIF9PdXRwdXRJdGVyPgpfT3V0cHV0SXRlcgpzZXRfc3ltbWV0
cmljX2RpZmZlcmVuY2UoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEs
CiAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRl
cjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0
KQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICB3aGlsZSAoX19maXJz
dDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAgaWYgKCpfX2ZpcnN0MSA8
ICpfX2ZpcnN0MikgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICsrX19maXJz
dDE7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgICBlbHNlIGlmICgqX19maXJzdDIgPCAqX19m
aXJzdDEpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QyOwogICAgICArK19fZmlyc3QyOwog
ICAgICArK19fcmVzdWx0OwogICAgfQogICAgZWxzZSB7CiAgICAgICsrX19maXJzdDE7CiAgICAg
ICsrX19maXJzdDI7CiAgICB9CiAgcmV0dXJuIGNvcHkoX19maXJzdDIsIF9fbGFzdDIsIGNvcHko
X19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJ
dGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9PdXRwdXRJdGVyLAogICAgICAgICAgY2xh
c3MgX0NvbXBhcmU+Cl9PdXRwdXRJdGVyCnNldF9zeW1tZXRyaWNfZGlmZmVyZW5jZShfSW5wdXRJ
dGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBfQ29tcGFyZSBfX2NvbXApCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCgoKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3Qy
KQogICAgaWYgKF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0MikpIHsKICAgICAgKl9fcmVzdWx0
ID0gKl9fZmlyc3QxOwogICAgICArK19fZmlyc3QxOwogICAgICArK19fcmVzdWx0OwogICAgfQog
ICAgZWxzZSBpZiAoX19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkgewogICAgICAqX19yZXN1
bHQgPSAqX19maXJzdDI7CiAgICAgICsrX19maXJzdDI7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9
CiAgICBlbHNlIHsKICAgICAgKytfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MjsKICAgIH0KICBy
ZXR1cm4gY29weShfX2ZpcnN0MiwgX19sYXN0MiwgY29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19y
ZXN1bHQpKTsKfQoKCgoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcj4KX0ZvcndhcmRJdGVy
IG1heF9lbGVtZW50KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0KQp7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwoKCiAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm4gX19m
aXJzdDsKICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQgPSBfX2ZpcnN0OwogIHdoaWxlICgrK19fZmly
c3QgIT0gX19sYXN0KQogICAgaWYgKCpfX3Jlc3VsdCA8ICpfX2ZpcnN0KQogICAgICBfX3Jlc3Vs
dCA9IF9fZmlyc3Q7CiAgcmV0dXJuIF9fcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0Zvcndh
cmRJdGVyLCBjbGFzcyBfQ29tcGFyZT4KX0ZvcndhcmRJdGVyIG1heF9lbGVtZW50KF9Gb3J3YXJk
SXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgX0NvbXBhcmUgX19jb21wKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgogIGlmIChfX2ZpcnN0
ID09IF9fbGFzdCkgcmV0dXJuIF9fZmlyc3Q7CiAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0ID0gX19m
aXJzdDsKICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkKICAgIGlmIChfX2NvbXAoKl9fcmVz
dWx0LCAqX19maXJzdCkpIF9fcmVzdWx0ID0gX19maXJzdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXI+Cl9Gb3J3YXJkSXRlciBtaW5fZWxlbWVudChf
Rm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCkKewoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDsKCgogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fZmlyc3Q7CiAgX0Zvcndh
cmRJdGVyIF9fcmVzdWx0ID0gX19maXJzdDsKICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkK
ICAgIGlmICgqX19maXJzdCA8ICpfX3Jlc3VsdCkKICAgICAgX19yZXN1bHQgPSBfX2ZpcnN0Owog
IHJldHVybiBfX3Jlc3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3Mg
X0NvbXBhcmU+Cl9Gb3J3YXJkSXRlciBtaW5fZWxlbWVudChfRm9yd2FyZEl0ZXIgX19maXJzdCwg
X0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9f
Y29tcCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJl
dHVybiBfX2ZpcnN0OwogIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCA9IF9fZmlyc3Q7CiAgd2hpbGUg
KCsrX19maXJzdCAhPSBfX2xhc3QpCiAgICBpZiAoX19jb21wKCpfX2ZpcnN0LCAqX19yZXN1bHQp
KQogICAgICBfX3Jlc3VsdCA9IF9fZmlyc3Q7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgoKCgp0ZW1w
bGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyPgpib29sIG5leHRfcGVybXV0YXRpb24oX0Jp
ZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QpCnsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICBpZiAoX19maXJzdCA9PSBfX2xh
c3QpCiAgICByZXR1cm4gZmFsc2U7CiAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faSA9IF9fZmlyc3Q7
CiAgKytfX2k7CiAgaWYgKF9faSA9PSBfX2xhc3QpCiAgICByZXR1cm4gZmFsc2U7CiAgX19pID0g
X19sYXN0OwogIC0tX19pOwoKICBmb3IoOzspIHsKICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2lp
ID0gX19pOwogICAgLS1fX2k7CiAgICBpZiAoKl9faSA8ICpfX2lpKSB7CiAgICAgIF9CaWRpcmVj
dGlvbmFsSXRlciBfX2ogPSBfX2xhc3Q7CiAgICAgIHdoaWxlICghKCpfX2kgPCAqLS1fX2opKQog
ICAgICAgIHt9CiAgICAgIGl0ZXJfc3dhcChfX2ksIF9faik7CiAgICAgIHJldmVyc2UoX19paSwg
X19sYXN0KTsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBpZiAoX19pID09IF9fZmlyc3Qp
IHsKICAgICAgcmV2ZXJzZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgICByZXR1cm4gZmFsc2U7CiAg
ICB9CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfQ29t
cGFyZT4KYm9vbCBuZXh0X3Blcm11dGF0aW9uKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LCBf
QmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUg
X19jb21wKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgogIGlmIChf
X2ZpcnN0ID09IF9fbGFzdCkKICAgIHJldHVybiBmYWxzZTsKICBfQmlkaXJlY3Rpb25hbEl0ZXIg
X19pID0gX19maXJzdDsKICArK19faTsKICBpZiAoX19pID09IF9fbGFzdCkKICAgIHJldHVybiBm
YWxzZTsKICBfX2kgPSBfX2xhc3Q7CiAgLS1fX2k7CgogIGZvcig7OykgewogICAgX0JpZGlyZWN0
aW9uYWxJdGVyIF9faWkgPSBfX2k7CiAgICAtLV9faTsKICAgIGlmIChfX2NvbXAoKl9faSwgKl9f
aWkpKSB7CiAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2ogPSBfX2xhc3Q7CiAgICAgIHdoaWxl
ICghX19jb21wKCpfX2ksICotLV9faikpCiAgICAgICAge30KICAgICAgaXRlcl9zd2FwKF9faSwg
X19qKTsKICAgICAgcmV2ZXJzZShfX2lpLCBfX2xhc3QpOwogICAgICByZXR1cm4gdHJ1ZTsKICAg
IH0KICAgIGlmIChfX2kgPT0gX19maXJzdCkgewogICAgICByZXZlcnNlKF9fZmlyc3QsIF9fbGFz
dCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfQmlk
aXJlY3Rpb25hbEl0ZXI+CmJvb2wgcHJldl9wZXJtdXRhdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXIg
X19maXJzdCwgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCkKewoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKCgogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgIHJldHVybiBm
YWxzZTsKICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19pID0gX19maXJzdDsKICArK19faTsKICBpZiAo
X19pID09IF9fbGFzdCkKICAgIHJldHVybiBmYWxzZTsKICBfX2kgPSBfX2xhc3Q7CiAgLS1fX2k7
CgogIGZvcig7OykgewogICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faWkgPSBfX2k7CiAgICAtLV9f
aTsKICAgIGlmICgqX19paSA8ICpfX2kpIHsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faiA9
IF9fbGFzdDsKICAgICAgd2hpbGUgKCEoKi0tX19qIDwgKl9faSkpCiAgICAgICAge30KICAgICAg
aXRlcl9zd2FwKF9faSwgX19qKTsKICAgICAgcmV2ZXJzZShfX2lpLCBfX2xhc3QpOwogICAgICBy
ZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGlmIChfX2kgPT0gX19maXJzdCkgewogICAgICByZXZlcnNl
KF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9Db21wYXJlPgpib29sIHByZXZf
cGVybXV0YXRpb24oX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFsSXRl
ciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApCnsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCiAgaWYgKF9fZmlyc3QgPT0gX19sYXN0
KQogICAgcmV0dXJuIGZhbHNlOwogIF9CaWRpcmVjdGlvbmFsSXRlciBfX2kgPSBfX2ZpcnN0Owog
ICsrX19pOwogIGlmIChfX2kgPT0gX19sYXN0KQogICAgcmV0dXJuIGZhbHNlOwogIF9faSA9IF9f
bGFzdDsKICAtLV9faTsKCiAgZm9yKDs7KSB7CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19paSA9
IF9faTsKICAgIC0tX19pOwogICAgaWYgKF9fY29tcCgqX19paSwgKl9faSkpIHsKICAgICAgX0Jp
ZGlyZWN0aW9uYWxJdGVyIF9faiA9IF9fbGFzdDsKICAgICAgd2hpbGUgKCFfX2NvbXAoKi0tX19q
LCAqX19pKSkKICAgICAgICB7fQogICAgICBpdGVyX3N3YXAoX19pLCBfX2opOwogICAgICByZXZl
cnNlKF9faWksIF9fbGFzdCk7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaWYgKF9faSA9
PSBfX2ZpcnN0KSB7CiAgICAgIHJldmVyc2UoX19maXJzdCwgX19sYXN0KTsKICAgICAgcmV0dXJu
IGZhbHNlOwogICAgfQogIH0KfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3Mg
X0ZvcndhcmRJdGVyPgpfSW5wdXRJdGVyIGZpbmRfZmlyc3Rfb2YoX0lucHV0SXRlciBfX2ZpcnN0
MSwgX0lucHV0SXRlciBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJ
dGVyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXIgX19sYXN0MikKewoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKCgoKICBmb3IgKCA7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEpCiAg
ICBmb3IgKF9Gb3J3YXJkSXRlciBfX2l0ZXIgPSBfX2ZpcnN0MjsgX19pdGVyICE9IF9fbGFzdDI7
ICsrX19pdGVyKQogICAgICBpZiAoKl9fZmlyc3QxID09ICpfX2l0ZXIpCiAgICAgICAgcmV0dXJu
IF9fZmlyc3QxOwogIHJldHVybiBfX2xhc3QxOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRl
ciwgY2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfQmluYXJ5UHJlZGljYXRlPgpfSW5wdXRJdGVy
IGZpbmRfZmlyc3Rfb2YoX0lucHV0SXRlciBfX2ZpcnN0MSwgX0lucHV0SXRlciBfX2xhc3QxLAog
ICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fZmlyc3QyLCBfRm9yd2FyZEl0
ZXIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19j
b21wKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKICBmb3IgKCA7IF9f
Zmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEpCiAgICBmb3IgKF9Gb3J3YXJkSXRlciBfX2l0
ZXIgPSBfX2ZpcnN0MjsgX19pdGVyICE9IF9fbGFzdDI7ICsrX19pdGVyKQogICAgICBpZiAoX19j
b21wKCpfX2ZpcnN0MSwgKl9faXRlcikpCiAgICAgICAgcmV0dXJuIF9fZmlyc3QxOwogIHJldHVy
biBfX2xhc3QxOwp9CiMgMzQxOSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0bF9hbGdvLmgi
IDMKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNsYXNzIF9Gb3J3YXJkSXRlcjI+Cl9G
b3J3YXJkSXRlcjEgX19maW5kX2VuZChfRm9yd2FyZEl0ZXIxIF9fZmlyc3QxLCBfRm9yd2FyZEl0
ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIyIF9fZmly
c3QyLCBfRm9yd2FyZEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3
YXJkX2l0ZXJhdG9yX3RhZywgZm9yd2FyZF9pdGVyYXRvcl90YWcpCnsKICBpZiAoX19maXJzdDIg
PT0gX19sYXN0MikKICAgIHJldHVybiBfX2xhc3QxOwogIGVsc2UgewogICAgX0ZvcndhcmRJdGVy
MSBfX3Jlc3VsdCA9IF9fbGFzdDE7CiAgICB3aGlsZSAoMSkgewogICAgICBfRm9yd2FyZEl0ZXIx
IF9fbmV3X3Jlc3VsdAogICAgICAgID0gc2VhcmNoKF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0
MiwgX19sYXN0Mik7CiAgICAgIGlmIChfX25ld19yZXN1bHQgPT0gX19sYXN0MSkKICAgICAgICBy
ZXR1cm4gX19yZXN1bHQ7CiAgICAgIGVsc2UgewogICAgICAgIF9fcmVzdWx0ID0gX19uZXdfcmVz
dWx0OwogICAgICAgIF9fZmlyc3QxID0gX19uZXdfcmVzdWx0OwogICAgICAgICsrX19maXJzdDE7
CiAgICAgIH0KICAgIH0KICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIxLCBjbGFz
cyBfRm9yd2FyZEl0ZXIyLAogICAgICAgICAgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KX0Zvcndh
cmRJdGVyMSBfX2ZpbmRfZW5kKF9Gb3J3YXJkSXRlcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRlcjEg
X19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlcjIgX19maXJzdDIs
IF9Gb3J3YXJkSXRlcjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRf
aXRlcmF0b3JfdGFnLCBmb3J3YXJkX2l0ZXJhdG9yX3RhZywKICAgICAgICAgICAgICAgICAgICAg
ICAgIF9CaW5hcnlQcmVkaWNhdGUgX19jb21wKQp7CiAgaWYgKF9fZmlyc3QyID09IF9fbGFzdDIp
CiAgICByZXR1cm4gX19sYXN0MTsKICBlbHNlIHsKICAgIF9Gb3J3YXJkSXRlcjEgX19yZXN1bHQg
PSBfX2xhc3QxOwogICAgd2hpbGUgKDEpIHsKICAgICAgX0ZvcndhcmRJdGVyMSBfX25ld19yZXN1
bHQKICAgICAgICA9IHNlYXJjaChfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIs
IF9fY29tcCk7CiAgICAgIGlmIChfX25ld19yZXN1bHQgPT0gX19sYXN0MSkKICAgICAgICByZXR1
cm4gX19yZXN1bHQ7CiAgICAgIGVsc2UgewogICAgICAgIF9fcmVzdWx0ID0gX19uZXdfcmVzdWx0
OwogICAgICAgIF9fZmlyc3QxID0gX19uZXdfcmVzdWx0OwogICAgICAgICsrX19maXJzdDE7CiAg
ICAgIH0KICAgIH0KICB9Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMSwg
Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMj4KX0JpZGlyZWN0aW9uYWxJdGVyMQpfX2ZpbmRfZW5k
KF9CaWRpcmVjdGlvbmFsSXRlcjEgX19maXJzdDEsIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0
MSwKICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fZmlyc3QyLCBfQmlkaXJlY3Rpb25h
bEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGJp
ZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDsKCiAgdHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9yPF9CaWRp
cmVjdGlvbmFsSXRlcjE+IF9SZXZJdGVyMTsKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8X0Jp
ZGlyZWN0aW9uYWxJdGVyMj4gX1Jldkl0ZXIyOwoKICBfUmV2SXRlcjEgX19ybGFzdDEoX19maXJz
dDEpOwogIF9SZXZJdGVyMiBfX3JsYXN0MihfX2ZpcnN0Mik7CiAgX1Jldkl0ZXIxIF9fcnJlc3Vs
dCA9IHNlYXJjaChfUmV2SXRlcjEoX19sYXN0MSksIF9fcmxhc3QxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX1Jldkl0ZXIyKF9fbGFzdDIpLCBfX3JsYXN0Mik7CgogIGlmIChfX3Jy
ZXN1bHQgPT0gX19ybGFzdDEpCiAgICByZXR1cm4gX19sYXN0MTsKICBlbHNlIHsKICAgIF9CaWRp
cmVjdGlvbmFsSXRlcjEgX19yZXN1bHQgPSBfX3JyZXN1bHQuYmFzZSgpOwogICAgYWR2YW5jZShf
X3Jlc3VsdCwgLWRpc3RhbmNlKF9fZmlyc3QyLCBfX2xhc3QyKSk7CiAgICByZXR1cm4gX19yZXN1
bHQ7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMSwgY2xhc3MgX0Jp
ZGlyZWN0aW9uYWxJdGVyMiwKICAgICAgICAgIGNsYXNzIF9CaW5hcnlQcmVkaWNhdGU+Cl9CaWRp
cmVjdGlvbmFsSXRlcjEKX19maW5kX2VuZChfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fZmlyc3QxLCBf
QmlkaXJlY3Rpb25hbEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVy
MiBfX2ZpcnN0MiwgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2xhc3QyLAogICAgICAgICAgIGJpZGly
ZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywKICAgICAg
ICAgICBfQmluYXJ5UHJlZGljYXRlIF9fY29tcCkKewoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogIHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjxf
QmlkaXJlY3Rpb25hbEl0ZXIxPiBfUmV2SXRlcjE7CiAgdHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9y
PF9CaWRpcmVjdGlvbmFsSXRlcjI+IF9SZXZJdGVyMjsKCiAgX1Jldkl0ZXIxIF9fcmxhc3QxKF9f
Zmlyc3QxKTsKICBfUmV2SXRlcjIgX19ybGFzdDIoX19maXJzdDIpOwogIF9SZXZJdGVyMSBfX3Jy
ZXN1bHQgPSBzZWFyY2goX1Jldkl0ZXIxKF9fbGFzdDEpLCBfX3JsYXN0MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9SZXZJdGVyMihfX2xhc3QyKSwgX19ybGFzdDIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwoKICBpZiAoX19ycmVzdWx0ID09IF9fcmxh
c3QxKQogICAgcmV0dXJuIF9fbGFzdDE7CiAgZWxzZSB7CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIx
IF9fcmVzdWx0ID0gX19ycmVzdWx0LmJhc2UoKTsKICAgIGFkdmFuY2UoX19yZXN1bHQsIC1kaXN0
YW5jZShfX2ZpcnN0MiwgX19sYXN0MikpOwogICAgcmV0dXJuIF9fcmVzdWx0OwogIH0KfQoKCgp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyMSwgY2xhc3MgX0ZvcndhcmRJdGVyMj4KaW5saW5l
IF9Gb3J3YXJkSXRlcjEKZmluZF9lbmQoX0ZvcndhcmRJdGVyMSBfX2ZpcnN0MSwgX0ZvcndhcmRJ
dGVyMSBfX2xhc3QxLAogICAgICAgICBfRm9yd2FyZEl0ZXIyIF9fZmlyc3QyLCBfRm9yd2FyZEl0
ZXIyIF9fbGFzdDIpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgogIHJl
dHVybiBfX2ZpbmRfZW5kKF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0MiwKICAg
ICAgICAgICAgICAgICAgICBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QxKSwKICAgICAgICAg
ICAgICAgICAgICBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QyKSk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfRm9yd2FyZEl0ZXIxLCBjbGFzcyBfRm9yd2FyZEl0ZXIyLAogICAgICAgICAgY2xhc3Mg
X0JpbmFyeVByZWRpY2F0ZT4KaW5saW5lIF9Gb3J3YXJkSXRlcjEKZmluZF9lbmQoX0ZvcndhcmRJ
dGVyMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xhc3QxLAogICAgICAgICBfRm9yd2FyZEl0
ZXIyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgIF9CaW5hcnlQcmVk
aWNhdGUgX19jb21wKQp7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKICBy
ZXR1cm4gX19maW5kX2VuZChfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIsCiAg
ICAgICAgICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0MSksCiAgICAgICAg
ICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0MiksCiAgICAgICAgICAgICAg
ICAgICAgX19jb21wKTsKfQoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwg
Y2xhc3MgX0Rpc3RhbmNlPgpib29sIF9faXNfaGVhcChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0
LCBfRGlzdGFuY2UgX19uKQp7CiAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gMDsKICBmb3IgKF9EaXN0
YW5jZSBfX2NoaWxkID0gMTsgX19jaGlsZCA8IF9fbjsgKytfX2NoaWxkKSB7CiAgICBpZiAoX19m
aXJzdFtfX3BhcmVudF0gPCBfX2ZpcnN0W19fY2hpbGRdKQogICAgICByZXR1cm4gZmFsc2U7CiAg
ICBpZiAoKF9fY2hpbGQgJiAxKSA9PSAwKQogICAgICArK19fcGFyZW50OwogIH0KICByZXR1cm4g
dHJ1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfRGlzdGFu
Y2UsIGNsYXNzIF9TdHJpY3RXZWFrT3JkZXJpbmc+CmJvb2wgX19pc19oZWFwKF9SYW5kb21BY2Nl
c3NJdGVyIF9fZmlyc3QsIF9TdHJpY3RXZWFrT3JkZXJpbmcgX19jb21wLAogICAgICAgICAgICAg
ICBfRGlzdGFuY2UgX19uKQp7CiAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gMDsKICBmb3IgKF9EaXN0
YW5jZSBfX2NoaWxkID0gMTsgX19jaGlsZCA8IF9fbjsgKytfX2NoaWxkKSB7CiAgICBpZiAoX19j
b21wKF9fZmlyc3RbX19wYXJlbnRdLCBfX2ZpcnN0W19fY2hpbGRdKSkKICAgICAgcmV0dXJuIGZh
bHNlOwogICAgaWYgKChfX2NoaWxkICYgMSkgPT0gMCkKICAgICAgKytfX3BhcmVudDsKICB9CiAg
cmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcj4KaW5saW5l
IGJvb2wgaXNfaGVhcChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRl
ciBfX2xhc3QpCnsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICByZXR1cm4g
X19pc19oZWFwKF9fZmlyc3QsIF9fbGFzdCAtIF9fZmlyc3QpOwp9CgoKdGVtcGxhdGUgPGNsYXNz
IF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfU3RyaWN0V2Vha09yZGVyaW5nPgppbmxpbmUgYm9v
bCBpc19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICBfU3RyaWN0V2Vha09yZGVyaW5nIF9fY29tcCkKewoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKICByZXR1cm4gX19pc19oZWFwKF9f
Zmlyc3QsIF9fY29tcCwgX19sYXN0IC0gX19maXJzdCk7Cn0KCgoKCgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0ZvcndhcmRJdGVyPgpib29sIGlzX3NvcnRlZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0Zvcndh
cmRJdGVyIF9fbGFzdCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogIGlmIChfX2ZpcnN0ID09IF9f
bGFzdCkKICAgIHJldHVybiB0cnVlOwoKICBfRm9yd2FyZEl0ZXIgX19uZXh0ID0gX19maXJzdDsK
ICBmb3IgKCsrX19uZXh0OyBfX25leHQgIT0gX19sYXN0OyBfX2ZpcnN0ID0gX19uZXh0LCArK19f
bmV4dCkgewogICAgaWYgKCpfX25leHQgPCAqX19maXJzdCkKICAgICAgcmV0dXJuIGZhbHNlOwog
IH0KCiAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNz
IF9TdHJpY3RXZWFrT3JkZXJpbmc+CmJvb2wgaXNfc29ydGVkKF9Gb3J3YXJkSXRlciBfX2ZpcnN0
LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICBfU3RyaWN0V2Vha09yZGVyaW5n
IF9fY29tcCkKewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKICBpZiAoX19maXJzdCA9PSBfX2xhc3Qp
CiAgICByZXR1cm4gdHJ1ZTsKCiAgX0ZvcndhcmRJdGVyIF9fbmV4dCA9IF9fZmlyc3Q7CiAgZm9y
ICgrK19fbmV4dDsgX19uZXh0ICE9IF9fbGFzdDsgX19maXJzdCA9IF9fbmV4dCwgKytfX25leHQp
IHsKICAgIGlmIChfX2NvbXAoKl9fbmV4dCwgKl9fZmlyc3QpKQogICAgICByZXR1cm4gZmFsc2U7
CiAgfQoKICByZXR1cm4gdHJ1ZTsKfQoKfQojIDY2ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMv
c3RkX2FsZ29yaXRobS5oIiAyIDMKIyA0NCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF92
YWxhcnJheS5oIiAyIDMKCm5hbWVzcGFjZSBzdGQKewogICAgdGVtcGxhdGU8Y2xhc3MgX0Nsb3Ms
IHR5cGVuYW1lIF9UcD4gY2xhc3MgX0V4cHI7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwg
dHlwZW5hbWUgX1RwMj4gY2xhc3MgX1ZhbEFycmF5OwoKICAgIHRlbXBsYXRlPHRlbXBsYXRlPGNs
YXNzPiBjbGFzcyBfT3BlciwKICAgICAgICB0ZW1wbGF0ZTxjbGFzcywgY2xhc3M+IGNsYXNzIF9N
ZXRhLCBjbGFzcyBfRG9tPiBzdHJ1Y3QgX1VuQ2xvczsKCiAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTxj
bGFzcz4gY2xhc3MgX09wZXIsCiAgICAgICAgdGVtcGxhdGU8Y2xhc3MsIGNsYXNzPiBjbGFzcyBf
TWV0YTEsCiAgICAgICAgdGVtcGxhdGU8Y2xhc3MsIGNsYXNzPiBjbGFzcyBfTWV0YTIsCiAgICAg
ICAgY2xhc3MgX0RvbTEsIGNsYXNzIF9Eb20yPiBjbGFzcyBfQmluQ2xvczsKCiAgICB0ZW1wbGF0
ZTx0ZW1wbGF0ZTxjbGFzcywgY2xhc3M+IGNsYXNzIF9NZXRhLCBjbGFzcyBfRG9tPiBjbGFzcyBf
U0Nsb3M7CgogICAgdGVtcGxhdGU8dGVtcGxhdGU8Y2xhc3MsIGNsYXNzPiBjbGFzcyBfTWV0YSwg
Y2xhc3MgX0RvbT4gY2xhc3MgX0dDbG9zOwoKICAgIHRlbXBsYXRlPHRlbXBsYXRlPGNsYXNzLCBj
bGFzcz4gY2xhc3MgX01ldGEsIGNsYXNzIF9Eb20+IGNsYXNzIF9JQ2xvczsKCiAgICB0ZW1wbGF0
ZTx0ZW1wbGF0ZTxjbGFzcywgY2xhc3M+IGNsYXNzIF9NZXRhLCBjbGFzcyBfRG9tPiBjbGFzcyBf
VmFsRnVuQ2xvczsKCiAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTxjbGFzcywgY2xhc3M+IGNsYXNzIF9N
ZXRhLCBjbGFzcyBfRG9tPiBjbGFzcyBfUmVmRnVuQ2xvczsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBf
VHA+IHN0cnVjdCBfVW5hcnlfcGx1czsKICAgIHRlbXBsYXRlPGNsYXNzIF9UcD4gc3RydWN0IF9C
aXR3aXNlX2FuZDsKICAgIHRlbXBsYXRlPGNsYXNzIF9UcD4gc3RydWN0IF9CaXR3aXNlX29yOwog
ICAgdGVtcGxhdGU8Y2xhc3MgX1RwPiBzdHJ1Y3QgX0JpdHdpc2VfeG9yOwogICAgdGVtcGxhdGU8
Y2xhc3MgX1RwPiBzdHJ1Y3QgX0JpdHdpc2Vfbm90OwogICAgdGVtcGxhdGU8Y2xhc3MgX1RwPiBz
dHJ1Y3QgX1NoaWZ0X2xlZnQ7CiAgICB0ZW1wbGF0ZTxjbGFzcyBfVHA+IHN0cnVjdCBfU2hpZnRf
cmlnaHQ7CgogICAgdGVtcGxhdGU8Y2xhc3MgX1RwPiBjbGFzcyB2YWxhcnJheTsKICAgIGNsYXNz
IHNsaWNlOwogICAgdGVtcGxhdGU8Y2xhc3MgX1RwPiBjbGFzcyBzbGljZV9hcnJheTsKICAgIGNs
YXNzIGdzbGljZTsKICAgIHRlbXBsYXRlPGNsYXNzIF9UcD4gY2xhc3MgZ3NsaWNlX2FycmF5Owog
ICAgdGVtcGxhdGU8Y2xhc3MgX1RwPiBjbGFzcyBtYXNrX2FycmF5OwogICAgdGVtcGxhdGU8Y2xh
c3MgX1RwPiBjbGFzcyBpbmRpcmVjdF9hcnJheTsKCn0KCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12
My9iaXRzL3ZhbGFycmF5X2FycmF5LmgiIDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvZysrLXYzL2Jp
dHMvdmFsYXJyYXlfYXJyYXkuaCIgMwoKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2kzODYtcmVk
aGF0LWxpbnV4L2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZysrLXYz
L2JpdHMvdmFsYXJyYXlfYXJyYXkuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRz
L2NwcF90eXBlX3RyYWl0cy5oIiAxIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL2Nw
cF90eXBlX3RyYWl0cy5oIiAzCiMgNjIgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9jcHBfdHlw
ZV90cmFpdHMuaCIgMwpuYW1lc3BhY2Ugc3RkCnsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgX19pc192b2lkCiAgICB7CiAgICAgIGVudW0KICAgICAgewogICAgICAgIF9NX3R5
cGUgPSAwCiAgICAgIH07CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc192b2lk
PHZvaWQ+CiAgICB7CiAgICAgIGVudW0KICAgICAgewogICAgICAgIF9NX3R5cGUgPSAxCiAgICAg
IH07CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19p
bnRlZ2VyCiAgICB7CiAgICAgIGVudW0KICAgICAgewogICAgICAgIF9NX3R5cGUgPSAwCiAgICAg
IH07CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPGJvb2w+
CiAgICB7CiAgICAgIGVudW0KICAgICAgewogICAgICAgIF9NX3R5cGUgPSAxCiAgICAgIH07CiAg
ICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPGNoYXI+CiAgICB7CiAg
ICAgIGVudW0KICAgICAgewogICAgICAgIF9NX3R5cGUgPSAxCiAgICAgIH07CiAgICB9OwoKICB0
ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPHNpZ25lZCBjaGFyPgogICAgewogICAg
ICBlbnVtCiAgICAgIHsKICAgICAgICBfTV90eXBlID0gMQogICAgICB9OwogICAgfTsKCiAgdGVt
cGxhdGU8PgogIHN0cnVjdCBfX2lzX2ludGVnZXI8dW5zaWduZWQgY2hhcj4KICB7CiAgICBlbnVt
CiAgICB7CiAgICAgIF9NX3R5cGUgPSAxCiAgICB9OwogIH07CgoKICB0ZW1wbGF0ZTw+CiAgc3Ry
dWN0IF9faXNfaW50ZWdlcjx3Y2hhcl90PgogIHsKICAgIGVudW0KICAgIHsKICAgICAgX01fdHlw
ZSA9IDEKICAgIH07CiAgfTsKCgogIHRlbXBsYXRlPD4KICBzdHJ1Y3QgX19pc19pbnRlZ2VyPHNo
b3J0PgogIHsKICAgIGVudW0KICAgIHsKICAgICAgX01fdHlwZSA9IDEKICAgIH07CiAgfTsKCiAg
dGVtcGxhdGU8PgogIHN0cnVjdCBfX2lzX2ludGVnZXI8dW5zaWduZWQgc2hvcnQ+CiAgewogICAg
ZW51bQogICAgewogICAgICBfTV90eXBlID0gMQogICAgfTsKICB9OwoKICB0ZW1wbGF0ZTw+CiAg
c3RydWN0IF9faXNfaW50ZWdlcjxpbnQ+CiAgewogICAgZW51bQogICAgewogICAgICBfTV90eXBl
ID0gMQogICAgfTsKICB9OwoKICB0ZW1wbGF0ZTw+CiAgc3RydWN0IF9faXNfaW50ZWdlcjx1bnNp
Z25lZCBpbnQ+CiAgewogICAgZW51bQogICAgewogICAgICBfTV90eXBlID0gMQogICAgfTsKICB9
OwoKICB0ZW1wbGF0ZTw+CiAgc3RydWN0IF9faXNfaW50ZWdlcjxsb25nPgogIHsKICAgIGVudW0K
ICAgIHsKICAgICAgX01fdHlwZSA9IDEKICAgIH07CiAgfTsKCiAgdGVtcGxhdGU8PgogIHN0cnVj
dCBfX2lzX2ludGVnZXI8dW5zaWduZWQgbG9uZz4KICB7CiAgICBlbnVtCiAgICB7CiAgICAgIF9N
X3R5cGUgPSAxCiAgICB9OwogIH07CgoKICB0ZW1wbGF0ZTw+CiAgc3RydWN0IF9faXNfaW50ZWdl
cjxsb25nIGxvbmc+CiAgewogICAgZW51bQogICAgewogICAgICBfTV90eXBlID0gMQogICAgfTsK
ICB9OwoKICB0ZW1wbGF0ZTw+CiAgc3RydWN0IF9faXNfaW50ZWdlcjx1bnNpZ25lZCBsb25nIGxv
bmc+CiAgewogICAgZW51bQogICAgewogICAgICBfTV90eXBlID0gMQogICAgfTsKICB9OwoKCgoK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIHN0cnVjdCBfX2lzX2Zsb2F0aW5nCiAgewogICAg
ZW51bQogICAgewogICAgICBfTV90eXBlID0gMAogICAgfTsKICB9OwoKCiAgdGVtcGxhdGU8Pgog
IHN0cnVjdCBfX2lzX2Zsb2F0aW5nPGZsb2F0PgogIHsKICAgIGVudW0KICAgIHsKICAgICAgX01f
dHlwZSA9IDEKICAgIH07CiAgfTsKCiAgdGVtcGxhdGU8PgogIHN0cnVjdCBfX2lzX2Zsb2F0aW5n
PGRvdWJsZT4KICB7CiAgICBlbnVtCiAgICB7CiAgICAgIF9NX3R5cGUgPSAxCiAgICB9OwogIH07
CgogIHRlbXBsYXRlPD4KICBzdHJ1Y3QgX19pc19mbG9hdGluZzxsb25nIGRvdWJsZT4KICB7CiAg
ICBlbnVtCiAgICB7CiAgICAgIF9NX3R5cGUgPSAxCiAgICB9OwogIH07CgoKCgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICBzdHJ1Y3QgX19pc19hcml0aG1ldGljCiAgewogICAgZW51bQogICAg
ewogICAgICBfTV90eXBlID0gX19pc19pbnRlZ2VyPF9UcD46Ol9NX3R5cGUgfHwgX19pc19mbG9h
dGluZzxfVHA+OjpfTV90eXBlCiAgICB9OwogIH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICBzdHJ1Y3QgX19pc19mdW5kYW1lbnRhbAogIHsKICAgIGVudW0KICAgIHsKICAgICAgX01f
dHlwZSA9IF9faXNfdm9pZDxfVHA+OjpfTV90eXBlIHx8IF9faXNfYXJpdGhtZXRpYzxfVHA+Ojpf
TV90eXBlCiAgICB9OwogIH07CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBzdHJ1Y3Qg
X19pc19wb2QKICB7CiAgICBlbnVtCiAgICB7CiAgICAgIF9NX3R5cGUgPSBfX2lzX2Z1bmRhbWVu
dGFsPF9UcD46Ol9NX3R5cGUKICAgIH07CiAgfTsKCn0KIyAzOSAiL3Vzci9pbmNsdWRlL2crKy12
My9iaXRzL3ZhbGFycmF5X2FycmF5LmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0
cy9zdGRfY3N0ZGxpYi5oIiAxIDMKIyA0MCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3ZhbGFy
cmF5X2FycmF5LmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0cmlu
Zy5oIiAxIDMKIyA0MSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3ZhbGFycmF5X2FycmF5Lmgi
IDIgMwojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvbmV3IiAxIDMKIyA0MiAiL3Vzci9pbmNsdWRl
L2crKy12My9iaXRzL3ZhbGFycmF5X2FycmF5LmgiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CgoKCgoK
CiAgaW5saW5lIHZvaWQqCiAgX192YWxhcnJheV9nZXRfbWVtb3J5KHNpemVfdCBfX24pCiAgeyBy
ZXR1cm4gb3BlcmF0b3IgbmV3KF9fbik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIGlu
bGluZSBfVHAqX19yZXN0cmljdF9fCiAgX192YWxhcnJheV9nZXRfc3RvcmFnZShzaXplX3QgX19u
KQogIHsKICAgIHJldHVybiBzdGF0aWNfY2FzdDxfVHAqX19yZXN0cmljdF9fPgogICAgICAoX192
YWxhcnJheV9nZXRfbWVtb3J5KF9fbiAqIHNpemVvZihfVHApKSk7CiAgfQoKCiAgaW5saW5lIHZv
aWQKICBfX3ZhbGFycmF5X3JlbGVhc2VfbWVtb3J5KHZvaWQqIF9fcCkKICB7IG9wZXJhdG9yIGRl
bGV0ZShfX3ApOyB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBib29sPgogIHN0cnVjdCBf
QXJyYXlfZGVmYXVsdF9jdG9yCiAgewoKCiAgICBpbmxpbmUgc3RhdGljIHZvaWQKICAgIF9TX2Rv
X2l0KF9UcCogX19yZXN0cmljdF9fIF9fYiwgX1RwKiBfX3Jlc3RyaWN0X18gX19lKQogICAgeyB3
aGlsZSAoX19iICE9IF9fZSkgbmV3KF9fYisrKSBfVHAoKTsgfQogIH07CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICBzdHJ1Y3QgX0FycmF5X2RlZmF1bHRfY3RvcjxfVHAsIHRydWU+CiAgewoK
ICAgIGlubGluZSBzdGF0aWMgdm9pZAogICAgX1NfZG9faXQoX1RwKiBfX3Jlc3RyaWN0X18gX19i
LCBfVHAqIF9fcmVzdHJpY3RfXyBfX2UpCiAgICB7IG1lbXNldChfX2IsIDAsIChfX2UgLSBfX2Ip
KnNpemVvZihfVHApKTsgfQogIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUg
dm9pZAogIF9fdmFsYXJyYXlfZGVmYXVsdF9jb25zdHJ1Y3QoX1RwKiBfX3Jlc3RyaWN0X18gX19i
LCBfVHAqIF9fcmVzdHJpY3RfXyBfX2UpCiAgewogICAgX0FycmF5X2RlZmF1bHRfY3RvcjxfVHAs
IF9faXNfZnVuZGFtZW50YWw8X1RwPjo6X01fdHlwZT46OgogICAgICBfU19kb19pdChfX2IsIF9f
ZSk7CiAgfQoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2w+CiAgc3RydWN0IF9BcnJh
eV9pbml0X2N0b3IKICB7CgoKICAgIGlubGluZSBzdGF0aWMgdm9pZAogICAgX1NfZG9faXQoX1Rw
KiBfX3Jlc3RyaWN0X18gX19iLCBfVHAqIF9fcmVzdHJpY3RfXyBfX2UsIGNvbnN0IF9UcCBfX3Qp
CiAgICB7IHdoaWxlIChfX2IgIT0gX19lKSBuZXcoX19iKyspIF9UcChfX3QpOyB9CiAgfTsKCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIHN0cnVjdCBfQXJyYXlfaW5pdF9jdG9yPF9UcCwgdHJ1
ZT4KICB7CiAgICBpbmxpbmUgc3RhdGljIHZvaWQKICAgIF9TX2RvX2l0KF9UcCogX19yZXN0cmlj
dF9fIF9fYiwgX1RwKiBfX3Jlc3RyaWN0X18gX19lLCBjb25zdCBfVHAgX190KQogICAgeyB3aGls
ZSAoX19iICE9IF9fZSkgKl9fYisrID0gX190OyB9CiAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogIGlubGluZSB2b2lkCiAgX192YWxhcnJheV9maWxsX2NvbnN0cnVjdChfVHAqIF9fcmVz
dHJpY3RfXyBfX2IsIF9UcCogX19yZXN0cmljdF9fIF9fZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IF9UcCBfX3QpCiAgewogICAgX0FycmF5X2luaXRfY3RvcjxfVHAsIF9faXNf
ZnVuZGFtZW50YWw8X1RwPjo6X01fdHlwZT46OgogICAgICBfU19kb19pdChfX2IsIF9fZSwgX190
KTsKICB9CgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2w+CiAgc3RydWN0IF9BcnJh
eV9jb3B5X2N0b3IKICB7CgoKICAgIGlubGluZSBzdGF0aWMgdm9pZAogICAgX1NfZG9faXQoY29u
c3QgX1RwKiBfX3Jlc3RyaWN0X18gX19iLCBjb25zdCBfVHAqIF9fcmVzdHJpY3RfXyBfX2UsCiAg
ICAgICAgICAgICBfVHAqIF9fcmVzdHJpY3RfXyBfX28pCiAgICB7IHdoaWxlIChfX2IgIT0gX19l
KSBuZXcoX19vKyspIF9UcCgqX19iKyspOyB9CiAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogIHN0cnVjdCBfQXJyYXlfY29weV9jdG9yPF9UcCwgdHJ1ZT4KICB7CiAgICBpbmxpbmUgc3Rh
dGljIHZvaWQKICAgIF9TX2RvX2l0KGNvbnN0IF9UcCogX19yZXN0cmljdF9fIF9fYiwgY29uc3Qg
X1RwKiBfX3Jlc3RyaWN0X18gX19lLAogICAgICAgICAgICAgX1RwKiBfX3Jlc3RyaWN0X18gX19v
KQogICAgeyBtZW1jcHkoX19vLCBfX2IsIChfX2UgLSBfX2IpKnNpemVvZihfVHApKTsgfQogIH07
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgdm9pZAogIF9fdmFsYXJyYXlfY29w
eV9jb25zdHJ1Y3QoY29uc3QgX1RwKiBfX3Jlc3RyaWN0X18gX19iLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgX1RwKiBfX3Jlc3RyaWN0X18gX19lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX1RwKiBfX3Jlc3RyaWN0X18gX19vKQogIHsKICAgIF9BcnJheV9jb3B5X2N0
b3I8X1RwLCBfX2lzX2Z1bmRhbWVudGFsPF9UcD46Ol9NX3R5cGU+OjoKICAgICAgX1NfZG9faXQo
X19iLCBfX2UsIF9fbyk7CiAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIGlubGluZSB2
b2lkCiAgX192YWxhcnJheV9jb3B5X2NvbnN0cnVjdCAoY29uc3QgX1RwKiBfX3Jlc3RyaWN0X18g
X19hLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3Ms
IF9UcCogX19yZXN0cmljdF9fIF9fbykKICB7CiAgICBpZiAoX19pc19mdW5kYW1lbnRhbDxfVHA+
OjpfTV90eXBlKQogICAgICB3aGlsZSAoX19uLS0pIHsgKl9fbysrID0gKl9fYTsgX19hICs9IF9f
czsgfQogICAgZWxzZQogICAgICB3aGlsZSAoX19uLS0pIHsgbmV3KF9fbysrKSBfVHAoKl9fYSk7
IF9fYSArPSBfX3M7IH0KICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgaW5saW5lIHZv
aWQKICBfX3ZhbGFycmF5X2NvcHlfY29uc3RydWN0IChjb25zdCBfVHAqIF9fcmVzdHJpY3RfXyBf
X2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90KiBfX3Jlc3RyaWN0
X18gX19pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UcCogX19yZXN0cmljdF9fIF9f
bywgc2l6ZV90IF9fbikKICB7CiAgICBpZiAoX19pc19mdW5kYW1lbnRhbDxfVHA+OjpfTV90eXBl
KQogICAgICB3aGlsZSAoX19uLS0pICpfX28rKyA9IF9fYVsqX19pKytdOwogICAgZWxzZQogICAg
ICB3aGlsZSAoX19uLS0pIG5ldyAoX19vKyspIF9UcChfX2FbKl9faSsrXSk7CiAgfQoKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPgogIGlubGluZSB2b2lkCiAgX192YWxhcnJheV9kZXN0cm95X2Vs
ZW1lbnRzKF9UcCogX19yZXN0cmljdF9fIF9fYiwgX1RwKiBfX3Jlc3RyaWN0X18gX19lKQogIHsK
ICAgIGlmICghX19pc19mdW5kYW1lbnRhbDxfVHA+OjpfTV90eXBlKQogICAgICB3aGlsZSAoX19i
ICE9IF9fZSkgeyBfX2ItPn5fVHAoKTsgKytfX2I7IH0KICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgdm9pZAogIF9fdmFsYXJyYXlfZmlsbCAoX1RwKiBfX3Jlc3RyaWN0X18gX19hLCBz
aXplX3QgX19uLCBjb25zdCBfVHAmIF9fdCkKICB7IHdoaWxlIChfX24tLSkgKl9fYSsrID0gX190
OyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgaW5saW5lIHZvaWQKICBfX3ZhbGFycmF5
X2ZpbGwgKF9UcCogX19yZXN0cmljdF9fIF9fYSwgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX3MsIGNvbnN0IF9UcCYgX190KQogIHsgZm9yIChzaXplX3QgX19pPTA7IF9f
aTxfX247ICsrX19pLCBfX2ErPV9fcykgKl9fYSA9IF9fdDsgfQoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogIGlubGluZSB2b2lkCiAgX192YWxhcnJheV9maWxsKF9UcCogX19yZXN0cmljdF9f
IF9fYSwgY29uc3Qgc2l6ZV90KiBfX3Jlc3RyaWN0X18gX19pLAogICAgICAgICAgICAgICAgICBz
aXplX3QgX19uLCBjb25zdCBfVHAmIF9fdCkKICB7IGZvciAoc2l6ZV90IF9faj0wOyBfX2o8X19u
OyArK19faiwgKytfX2kpIF9fYVsqX19pXSA9IF9fdDsgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcCwgYm9vbD4KICBzdHJ1Y3QgX0FycmF5X2NvcGllcgogIHsKICAgIGlubGluZSBzdGF0aWMg
dm9pZAogICAgX1NfZG9faXQoY29uc3QgX1RwKiBfX3Jlc3RyaWN0X18gX19hLCBzaXplX3QgX19u
LCBfVHAqIF9fcmVzdHJpY3RfXyBfX2IpCiAgICB7IHdoaWxlIChfX24tLSkgKl9fYisrID0gKl9f
YSsrOyB9CiAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIHN0cnVjdCBfQXJyYXlfY29w
aWVyPF9UcCwgdHJ1ZT4KICB7CiAgICBpbmxpbmUgc3RhdGljIHZvaWQKICAgIF9TX2RvX2l0KGNv
bnN0IF9UcCogX19yZXN0cmljdF9fIF9fYSwgc2l6ZV90IF9fbiwgX1RwKiBfX3Jlc3RyaWN0X18g
X19iKQogICAgeyBtZW1jcHkgKF9fYiwgX19hLCBfX24gKiBzaXplb2YgKF9UcCkpOyB9CiAgfTsK
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIGlubGluZSB2b2lkCiAgX192YWxhcnJheV9jb3B5
IChjb25zdCBfVHAqIF9fcmVzdHJpY3RfXyBfX2EsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAg
ICAgICBfVHAqIF9fcmVzdHJpY3RfXyBfX2IpCiAgewogICAgX0FycmF5X2NvcGllcjxfVHAsIF9f
aXNfZnVuZGFtZW50YWw8X1RwPjo6X01fdHlwZT46OgogICAgICBfU19kb19pdChfX2EsIF9fbiwg
X19iKTsKICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgaW5saW5lIHZvaWQKICBfX3Zh
bGFycmF5X2NvcHkgKGNvbnN0IF9UcCogX19yZXN0cmljdF9fIF9fYSwgc2l6ZV90IF9fbiwgc2l6
ZV90IF9fcywKICAgICAgICAgICAgICAgICAgIF9UcCogX19yZXN0cmljdF9fIF9fYikKICB7IGZv
ciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgKytfX2IsIF9fYSArPSBfX3MpICpfX2Ig
PSAqX19hOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgaW5saW5lIHZvaWQKICBfX3Zh
bGFycmF5X2NvcHkgKGNvbnN0IF9UcCogX19yZXN0cmljdF9fIF9fYSwgX1RwKiBfX3Jlc3RyaWN0
X18gX19iLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgc2l6ZV90IF9fcykKICB7IGZv
ciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgKytfX2EsIF9fYis9X19zKSAqX19iID0g
Kl9fYTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIGlubGluZSB2b2lkCiAgX192YWxh
cnJheV9jb3B5IChjb25zdCBfVHAqIF9fcmVzdHJpY3RfXyBfX2EsCiAgICAgICAgICAgICAgICAg
ICBjb25zdCBzaXplX3QqIF9fcmVzdHJpY3RfXyBfX2ksCiAgICAgICAgICAgICAgICAgICBfVHAq
IF9fcmVzdHJpY3RfXyBfX2IsIHNpemVfdCBfX24pCiAgeyBmb3IgKHNpemVfdCBfX2o9MDsgX19q
PF9fbjsgKytfX2osICsrX19iLCArK19faSkgKl9fYiA9IF9fYVsqX19pXTsgfQoKCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogIGlubGluZSB2b2lkCiAgX192YWxhcnJheV9jb3B5IChjb25zdCBf
VHAqIF9fcmVzdHJpY3RfXyBfX2EsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICBfVHAq
IF9fcmVzdHJpY3RfXyBfX2IsIGNvbnN0IHNpemVfdCogX19yZXN0cmljdF9fIF9faSkKICB7IGZv
ciAoc2l6ZV90IF9faj0wOyBfX2o8X19uOyArK19faiwgKytfX2EsICsrX19pKSBfX2JbKl9faV0g
PSAqX19hOyB9CiMgMjc5ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvdmFsYXJyYXlfYXJyYXku
aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgX1RwCiAgX192YWxhcnJheV9z
dW0oY29uc3QgX1RwKiBfX3Jlc3RyaWN0X18gX19mLCBjb25zdCBfVHAqIF9fcmVzdHJpY3RfXyBf
X2wpCiAgewogICAgX1RwIF9fciA9IF9UcCgpOwogICAgd2hpbGUgKF9fZiAhPSBfX2wpIF9fciAr
PSAqX19mKys7CiAgICByZXR1cm4gX19yOwogIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICBpbmxpbmUgX1RwCiAgX192YWxhcnJheV9wcm9kdWN0KGNvbnN0IF9UcCogX19yZXN0cmljdF9f
IF9fZiwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwKiBfX3Jlc3RyaWN0X18gX19sKQog
IHsKICAgIF9UcCBfX3IgPSBfVHAoMSk7CiAgICB3aGlsZSAoX19mICE9IF9fbCkgX19yID0gX19y
ICogKl9fZisrOwogICAgcmV0dXJuIF9fcjsKICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVGE+
CiAgaW5saW5lIHR5cGVuYW1lIF9UYTo6dmFsdWVfdHlwZQogIF9fdmFsYXJyYXlfbWluKGNvbnN0
IF9UYSYgX19hKQogIHsKICAgIHNpemVfdCBfX3MgPSBfX2Euc2l6ZSgpOwogICAgdHlwZWRlZiB0
eXBlbmFtZSBfVGE6OnZhbHVlX3R5cGUgX1ZhbHVlX3R5cGU7CiAgICBfVmFsdWVfdHlwZSBfX3Ig
PSBfX3MgPT0gMCA/IF9WYWx1ZV90eXBlKCkgOiBfX2FbMF07CiAgICBmb3IgKHNpemVfdCBfX2kg
PSAxOyBfX2kgPCBfX3M7ICsrX19pKQogICAgICB7CiAgICAgICAgX1ZhbHVlX3R5cGUgX190ID0g
X19hW19faV07CiAgICAgICAgaWYgKF9fdCA8IF9fcikKICAgICAgICAgIF9fciA9IF9fdDsKICAg
ICAgfQogICAgcmV0dXJuIF9fcjsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UYT4KICBpbmxp
bmUgdHlwZW5hbWUgX1RhOjp2YWx1ZV90eXBlCiAgX192YWxhcnJheV9tYXgoY29uc3QgX1RhJiBf
X2EpCiAgewogICAgc2l6ZV90IF9fcyA9IF9fYS5zaXplKCk7CiAgICB0eXBlZGVmIHR5cGVuYW1l
IF9UYTo6dmFsdWVfdHlwZSBfVmFsdWVfdHlwZTsKICAgIF9WYWx1ZV90eXBlIF9fciA9IF9fcyA9
PSAwID8gX1ZhbHVlX3R5cGUoKSA6IF9fYVswXTsKICAgIGZvciAoc2l6ZV90IF9faSA9IDE7IF9f
aSA8IF9fczsgKytfX2kpCiAgICAgIHsKICAgICAgICBfVmFsdWVfdHlwZSBfX3QgPSBfX2FbX19p
XTsKICAgICAgICBpZiAoX190ID4gX19yKQogICAgICAgICAgX19yID0gX190OwogICAgICB9CiAg
ICByZXR1cm4gX19yOwogIH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIHN0cnVj
dCBfQXJyYXkKICB7CiAgICBleHBsaWNpdCBfQXJyYXkgKHNpemVfdCk7CiAgICBleHBsaWNpdCBf
QXJyYXkgKF9UcCogY29uc3QgX19yZXN0cmljdF9fKTsKICAgIGV4cGxpY2l0IF9BcnJheSAoY29u
c3QgdmFsYXJyYXk8X1RwPiYpOwogICAgX0FycmF5IChjb25zdCBfVHAqIF9fcmVzdHJpY3RfXywg
c2l6ZV90KTsKCiAgICBfVHAqIGJlZ2luICgpIGNvbnN0OwoKICAgIF9UcCogY29uc3QgX19yZXN0
cmljdF9fIF9NX2RhdGE7CiAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIGlubGluZSB2
b2lkCiAgX192YWxhcnJheV9maWxsIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX24sIGNvbnN0
IF9UcCYgX190KQogIHsgX192YWxhcnJheV9maWxsIChfX2EuX01fZGF0YSwgX19uLCBfX3QpOyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgdm9pZAogIF9fdmFsYXJyYXlfZmls
bCAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBzaXplX3QgX19zLCBjb25zdCBfVHAmIF9f
dCkKICB7IF9fdmFsYXJyYXlfZmlsbCAoX19hLl9NX2RhdGEsIF9fbiwgX19zLCBfX3QpOyB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgdm9pZAogIF9fdmFsYXJyYXlfZmlsbCAo
X0FycmF5PF9UcD4gX19hLCBfQXJyYXk8c2l6ZV90PiBfX2ksCiAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19uLCBjb25zdCBfVHAmIF9fdCkKICB7IF9fdmFsYXJyYXlfZmlsbCAoX19hLl9NX2Rh
dGEsIF9faS5fTV9kYXRhLCBfX24sIF9fdCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
IGlubGluZSB2b2lkCiAgX192YWxhcnJheV9jb3B5IChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBf
X24sIF9BcnJheTxfVHA+IF9fYikKICB7IF9fdmFsYXJyYXlfY29weSAoX19hLl9NX2RhdGEsIF9f
biwgX19iLl9NX2RhdGEpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgdm9p
ZAogIF9fdmFsYXJyYXlfY29weSAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBzaXplX3Qg
X19zLCBfQXJyYXk8X1RwPiBfX2IpCiAgeyBfX3ZhbGFycmF5X2NvcHkoX19hLl9NX2RhdGEsIF9f
biwgX19zLCBfX2IuX01fZGF0YSk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIGlubGlu
ZSB2b2lkCiAgX192YWxhcnJheV9jb3B5IChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxfVHA+IF9f
Yiwgc2l6ZV90IF9fbiwgc2l6ZV90IF9fcykKICB7IF9fdmFsYXJyYXlfY29weSAoX19hLl9NX2Rh
dGEsIF9fYi5fTV9kYXRhLCBfX24sIF9fcyk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
IGlubGluZSB2b2lkCiAgX192YWxhcnJheV9jb3B5IChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxz
aXplX3Q+IF9faSwKICAgICAgICAgICAgICAgICAgIF9BcnJheTxfVHA+IF9fYiwgc2l6ZV90IF9f
bikKICB7IF9fdmFsYXJyYXlfY29weSAoX19hLl9NX2RhdGEsIF9faS5fTV9kYXRhLCBfX2IuX01f
ZGF0YSwgX19uKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgaW5saW5lIHZvaWQKICBf
X3ZhbGFycmF5X2NvcHkgKF9BcnJheTxfVHA+IF9fYSwgc2l6ZV90IF9fbiwgX0FycmF5PF9UcD4g
X19iLAogICAgICAgICAgICAgICAgICAgX0FycmF5PHNpemVfdD4gX19pKQogIHsgX192YWxhcnJh
eV9jb3B5IChfX2EuX01fZGF0YSwgX19uLCBfX2IuX01fZGF0YSwgX19pLl9NX2RhdGEpOyB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUKICBfQXJyYXk8X1RwPjo6X0FycmF5IChz
aXplX3QgX19uKQogICAgOiBfTV9kYXRhKF9fdmFsYXJyYXlfZ2V0X3N0b3JhZ2U8X1RwPihfX24p
KQogIHsgX192YWxhcnJheV9kZWZhdWx0X2NvbnN0cnVjdChfTV9kYXRhLCBfTV9kYXRhICsgX19u
KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgaW5saW5lCiAgX0FycmF5PF9UcD46Ol9B
cnJheSAoX1RwKiBjb25zdCBfX3Jlc3RyaWN0X18gX19wKSA6IF9NX2RhdGEgKF9fcCkge30KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIGlubGluZSBfQXJyYXk8X1RwPjo6X0FycmF5IChjb25z
dCB2YWxhcnJheTxfVHA+JiBfX3YpCiAgICAgIDogX01fZGF0YSAoX192Ll9NX2RhdGEpIHt9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUKICBfQXJyYXk8X1RwPjo6X0FycmF5IChj
b25zdCBfVHAqIF9fcmVzdHJpY3RfXyBfX2IsIHNpemVfdCBfX3MpCiAgICA6IF9NX2RhdGEoX192
YWxhcnJheV9nZXRfc3RvcmFnZTxfVHA+KF9fcykpCiAgeyBfX3ZhbGFycmF5X2NvcHlfY29uc3Ry
dWN0KF9fYiwgX19zLCBfTV9kYXRhKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgaW5s
aW5lIF9UcCoKICBfQXJyYXk8X1RwPjo6YmVnaW4gKCkgY29uc3QKICB7IHJldHVybiBfTV9kYXRh
OyB9CiMgNTUzICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvdmFsYXJyYXlfYXJyYXkuaCIgMwp0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfcGx1cyAo
X0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBjb25zdCBfVHAmIF9fdCkgeyBmb3IgKF9UcCog
X19wPV9fYS5fTV9kYXRhOyBfX3A8X19hLl9NX2RhdGErX19uOyArK19fcCkgKl9fcCArPSBfX3Q7
IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVudGVkX3Bs
dXMgKF9BcnJheTxfVHA+IF9fYSwgc2l6ZV90IF9fbiwgX0FycmF5PF9UcD4gX19iKSB7IF9UcCog
X19wID0gX19hLl9NX2RhdGE7IGZvciAoX1RwKiBfX3E9X19iLl9NX2RhdGE7IF9fcTxfX2IuX01f
ZGF0YStfX247ICsrX19wLCArK19fcSkgKl9fcCArPSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1l
IF9UcCwgY2xhc3MgX0RvbT4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX3BsdXMgKF9BcnJheTxfVHA+
IF9fYSwgY29uc3QgX0V4cHI8X0RvbSxfVHA+JiBfX2UsIHNpemVfdCBfX24pIHsgX1RwKiBfX3Ag
KF9fYS5fTV9kYXRhKTsgZm9yIChzaXplX3QgX19pPTA7IF9faTxfX247ICsrX19pLCArK19fcCkg
Kl9fcCArPSBfX2VbX19pXTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9B
cnJheV9hdWdtZW50ZWRfcGx1cyAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBzaXplX3Qg
X19zLCBfQXJyYXk8X1RwPiBfX2IpIHsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9yIChfVHAq
IF9fcD1fX2EuX01fZGF0YTsgX19wPF9fYS5fTV9kYXRhK19fcypfX247IF9fcCs9X19zLCArK19f
cSkgKl9fcCArPSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgX0Fy
cmF5X2F1Z21lbnRlZF9wbHVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxfVHA+IF9fYiwgc2l6
ZV90IF9fbiwgc2l6ZV90IF9fcykgeyBfVHAqIF9fcSAoX19iLl9NX2RhdGEpOyBmb3IgKF9UcCog
X19wPV9fYS5fTV9kYXRhOyBfX3A8X19hLl9NX2RhdGErX19uOyArK19fcCwgX19xKz1fX3MpICpf
X3AgKz0gKl9fcTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+IHZvaWQgX0Fy
cmF5X2F1Z21lbnRlZF9wbHVzIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX3MsIGNvbnN0IF9F
eHByPF9Eb20sX1RwPiYgX19lLCBzaXplX3QgX19uKSB7IF9UcCogX19wIChfX2EuX01fZGF0YSk7
IGZvciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgX19wKz1fX3MpICpfX3AgKz0gX19l
W19faV07IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVu
dGVkX3BsdXMgKF9BcnJheTxfVHA+IF9fYSwgX0FycmF5PHNpemVfdD4gX19pLCBfQXJyYXk8X1Rw
PiBfX2IsIHNpemVfdCBfX24pIHsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9yIChzaXplX3Qq
IF9faj1fX2kuX01fZGF0YTsgX19qPF9faS5fTV9kYXRhK19fbjsgKytfX2osICsrX19xKSBfX2Eu
X01fZGF0YVsqX19qXSArPSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZv
aWQgX0FycmF5X2F1Z21lbnRlZF9wbHVzIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX24sIF9B
cnJheTxfVHA+IF9fYiwgX0FycmF5PHNpemVfdD4gX19pKSB7IF9UcCogX19wIChfX2EuX01fZGF0
YSk7IGZvciAoc2l6ZV90KiBfX2o9X19pLl9NX2RhdGE7IF9fajxfX2kuX01fZGF0YStfX247ICsr
X19qLCArK19fcCkgKl9fcCArPSBfX2IuX01fZGF0YVsqX19qXTsgfSB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHAsIGNsYXNzIF9Eb20+IHZvaWQgX0FycmF5X2F1Z21lbnRlZF9wbHVzIChfQXJyYXk8X1Rw
PiBfX2EsIF9BcnJheTxzaXplX3Q+IF9faSwgY29uc3QgX0V4cHI8X0RvbSwgX1RwPiYgX19lLCBz
aXplX3QgX19uKSB7IHNpemVfdCogX19qIChfX2kuX01fZGF0YSk7IGZvciAoc2l6ZV90IF9faz0w
OyBfX2s8X19uOyArK19faywgKytfX2opIF9fYS5fTV9kYXRhWypfX2pdICs9IF9fZVtfX2tdOyB9
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX3BsdXMgKF9BcnJh
eTxfVHA+IF9fYSwgX0FycmF5PGJvb2w+IF9fbSwgX0FycmF5PF9UcD4gX19iLCBzaXplX3QgX19u
KSB7IGJvb2wqIG9rIChfX20uX01fZGF0YSk7IF9UcCogX19wIChfX2EuX01fZGF0YSk7IGZvciAo
X1RwKiBfX3E9X19iLl9NX2RhdGE7IF9fcTxfX2IuX01fZGF0YStfX247ICsrX19xLCArK29rLCAr
K19fcCkgeyB3aGlsZSAoISAqb2spIHsgKytvazsgKytfX3A7IH0gKl9fcCArPSAqX19xOyB9IH0g
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB2b2lkIF9BcnJheV9hdWdtZW50ZWRfcGx1cyAoX0FycmF5
PF9UcD4gX19hLCBzaXplX3QgX19uLCBfQXJyYXk8X1RwPiBfX2IsIF9BcnJheTxib29sPiBfX20p
IHsgYm9vbCogb2sgKF9fbS5fTV9kYXRhKTsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9yIChf
VHAqIF9fcD1fX2EuX01fZGF0YTsgX19wPF9fYS5fTV9kYXRhK19fbjsgKytfX3AsICsrb2ssICsr
X19xKSB7IHdoaWxlICghICpvaykgeyArK29rOyArK19fcTsgfSAqX19wICs9ICpfX3E7IH0gfSB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+IHZvaWQgX0FycmF5X2F1Z21lbnRlZF9w
bHVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxib29sPiBfX20sIGNvbnN0IF9FeHByPF9Eb20s
IF9UcD4mIF9fZSwgc2l6ZV90IF9fbikgeyBib29sKiBvayhfX20uX01fZGF0YSk7IF9UcCogX19w
IChfX2EuX01fZGF0YSk7IGZvciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgKytvaywg
KytfX3ApIHsgd2hpbGUgKCEgKm9rKSB7ICsrb2s7ICsrX19wOyB9ICpfX3AgKz0gX19lW19faV07
IH0gfQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRf
bWludXMgKF9BcnJheTxfVHA+IF9fYSwgc2l6ZV90IF9fbiwgY29uc3QgX1RwJiBfX3QpIHsgZm9y
IChfVHAqIF9fcD1fX2EuX01fZGF0YTsgX19wPF9fYS5fTV9kYXRhK19fbjsgKytfX3ApICpfX3Ag
LT0gX190OyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgX0FycmF5X2F1Z21l
bnRlZF9taW51cyAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBfQXJyYXk8X1RwPiBfX2Ip
IHsgX1RwKiBfX3AgPSBfX2EuX01fZGF0YTsgZm9yIChfVHAqIF9fcT1fX2IuX01fZGF0YTsgX19x
PF9fYi5fTV9kYXRhK19fbjsgKytfX3AsICsrX19xKSAqX19wIC09ICpfX3E7IH0gdGVtcGxhdGU8
dHlwZW5hbWUgX1RwLCBjbGFzcyBfRG9tPiB2b2lkIF9BcnJheV9hdWdtZW50ZWRfbWludXMgKF9B
cnJheTxfVHA+IF9fYSwgY29uc3QgX0V4cHI8X0RvbSxfVHA+JiBfX2UsIHNpemVfdCBfX24pIHsg
X1RwKiBfX3AgKF9fYS5fTV9kYXRhKTsgZm9yIChzaXplX3QgX19pPTA7IF9faTxfX247ICsrX19p
LCArK19fcCkgKl9fcCAtPSBfX2VbX19pXTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGlu
ZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfbWludXMgKF9BcnJheTxfVHA+IF9fYSwgc2l6ZV90IF9f
biwgc2l6ZV90IF9fcywgX0FycmF5PF9UcD4gX19iKSB7IF9UcCogX19xIChfX2IuX01fZGF0YSk7
IGZvciAoX1RwKiBfX3A9X19hLl9NX2RhdGE7IF9fcDxfX2EuX01fZGF0YStfX3MqX19uOyBfX3Ar
PV9fcywgKytfX3EpICpfX3AgLT0gKl9fcTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGlu
ZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfbWludXMgKF9BcnJheTxfVHA+IF9fYSwgX0FycmF5PF9U
cD4gX19iLCBzaXplX3QgX19uLCBzaXplX3QgX19zKSB7IF9UcCogX19xIChfX2IuX01fZGF0YSk7
IGZvciAoX1RwKiBfX3A9X19hLl9NX2RhdGE7IF9fcDxfX2EuX01fZGF0YStfX247ICsrX19wLCBf
X3ErPV9fcykgKl9fcCAtPSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgY2xhc3MgX0Rv
bT4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX21pbnVzIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBf
X3MsIGNvbnN0IF9FeHByPF9Eb20sX1RwPiYgX19lLCBzaXplX3QgX19uKSB7IF9UcCogX19wIChf
X2EuX01fZGF0YSk7IGZvciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgX19wKz1fX3Mp
ICpfX3AgLT0gX19lW19faV07IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBf
QXJyYXlfYXVnbWVudGVkX21pbnVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxzaXplX3Q+IF9f
aSwgX0FycmF5PF9UcD4gX19iLCBzaXplX3QgX19uKSB7IF9UcCogX19xIChfX2IuX01fZGF0YSk7
IGZvciAoc2l6ZV90KiBfX2o9X19pLl9NX2RhdGE7IF9fajxfX2kuX01fZGF0YStfX247ICsrX19q
LCArK19fcSkgX19hLl9NX2RhdGFbKl9fal0gLT0gKl9fcTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfbWludXMgKF9BcnJheTxfVHA+IF9fYSwg
c2l6ZV90IF9fbiwgX0FycmF5PF9UcD4gX19iLCBfQXJyYXk8c2l6ZV90PiBfX2kpIHsgX1RwKiBf
X3AgKF9fYS5fTV9kYXRhKTsgZm9yIChzaXplX3QqIF9faj1fX2kuX01fZGF0YTsgX19qPF9faS5f
TV9kYXRhK19fbjsgKytfX2osICsrX19wKSAqX19wIC09IF9fYi5fTV9kYXRhWypfX2pdOyB9IHRl
bXBsYXRlPHR5cGVuYW1lIF9UcCwgY2xhc3MgX0RvbT4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX21p
bnVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxzaXplX3Q+IF9faSwgY29uc3QgX0V4cHI8X0Rv
bSwgX1RwPiYgX19lLCBzaXplX3QgX19uKSB7IHNpemVfdCogX19qIChfX2kuX01fZGF0YSk7IGZv
ciAoc2l6ZV90IF9faz0wOyBfX2s8X19uOyArK19faywgKytfX2opIF9fYS5fTV9kYXRhWypfX2pd
IC09IF9fZVtfX2tdOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdm9pZCBfQXJyYXlfYXVnbWVu
dGVkX21pbnVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxib29sPiBfX20sIF9BcnJheTxfVHA+
IF9fYiwgc2l6ZV90IF9fbikgeyBib29sKiBvayAoX19tLl9NX2RhdGEpOyBfVHAqIF9fcCAoX19h
Ll9NX2RhdGEpOyBmb3IgKF9UcCogX19xPV9fYi5fTV9kYXRhOyBfX3E8X19iLl9NX2RhdGErX19u
OyArK19fcSwgKytvaywgKytfX3ApIHsgd2hpbGUgKCEgKm9rKSB7ICsrb2s7ICsrX19wOyB9ICpf
X3AgLT0gKl9fcTsgfSB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdm9pZCBfQXJyYXlfYXVnbWVu
dGVkX21pbnVzIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX24sIF9BcnJheTxfVHA+IF9fYiwg
X0FycmF5PGJvb2w+IF9fbSkgeyBib29sKiBvayAoX19tLl9NX2RhdGEpOyBfVHAqIF9fcSAoX19i
Ll9NX2RhdGEpOyBmb3IgKF9UcCogX19wPV9fYS5fTV9kYXRhOyBfX3A8X19hLl9NX2RhdGErX19u
OyArK19fcCwgKytvaywgKytfX3EpIHsgd2hpbGUgKCEgKm9rKSB7ICsrb2s7ICsrX19xOyB9ICpf
X3AgLT0gKl9fcTsgfSB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgY2xhc3MgX0RvbT4gdm9pZCBf
QXJyYXlfYXVnbWVudGVkX21pbnVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxib29sPiBfX20s
IGNvbnN0IF9FeHByPF9Eb20sIF9UcD4mIF9fZSwgc2l6ZV90IF9fbikgeyBib29sKiBvayhfX20u
X01fZGF0YSk7IF9UcCogX19wIChfX2EuX01fZGF0YSk7IGZvciAoc2l6ZV90IF9faT0wOyBfX2k8
X19uOyArK19faSwgKytvaywgKytfX3ApIHsgd2hpbGUgKCEgKm9rKSB7ICsrb2s7ICsrX19wOyB9
ICpfX3AgLT0gX19lW19faV07IH0gfQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lk
IF9BcnJheV9hdWdtZW50ZWRfbXVsdGlwbGllcyAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19u
LCBjb25zdCBfVHAmIF9fdCkgeyBmb3IgKF9UcCogX19wPV9fYS5fTV9kYXRhOyBfX3A8X19hLl9N
X2RhdGErX19uOyArK19fcCkgKl9fcCAqPSBfX3Q7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBp
bmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVudGVkX211bHRpcGxpZXMgKF9BcnJheTxfVHA+IF9fYSwg
c2l6ZV90IF9fbiwgX0FycmF5PF9UcD4gX19iKSB7IF9UcCogX19wID0gX19hLl9NX2RhdGE7IGZv
ciAoX1RwKiBfX3E9X19iLl9NX2RhdGE7IF9fcTxfX2IuX01fZGF0YStfX247ICsrX19wLCArK19f
cSkgKl9fcCAqPSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgY2xhc3MgX0RvbT4gdm9p
ZCBfQXJyYXlfYXVnbWVudGVkX211bHRpcGxpZXMgKF9BcnJheTxfVHA+IF9fYSwgY29uc3QgX0V4
cHI8X0RvbSxfVHA+JiBfX2UsIHNpemVfdCBfX24pIHsgX1RwKiBfX3AgKF9fYS5fTV9kYXRhKTsg
Zm9yIChzaXplX3QgX19pPTA7IF9faTxfX247ICsrX19pLCArK19fcCkgKl9fcCAqPSBfX2VbX19p
XTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRf
bXVsdGlwbGllcyAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBzaXplX3QgX19zLCBfQXJy
YXk8X1RwPiBfX2IpIHsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9yIChfVHAqIF9fcD1fX2Eu
X01fZGF0YTsgX19wPF9fYS5fTV9kYXRhK19fcypfX247IF9fcCs9X19zLCArK19fcSkgKl9fcCAq
PSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgX0FycmF5X2F1Z21l
bnRlZF9tdWx0aXBsaWVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxfVHA+IF9fYiwgc2l6ZV90
IF9fbiwgc2l6ZV90IF9fcykgeyBfVHAqIF9fcSAoX19iLl9NX2RhdGEpOyBmb3IgKF9UcCogX19w
PV9fYS5fTV9kYXRhOyBfX3A8X19hLl9NX2RhdGErX19uOyArK19fcCwgX19xKz1fX3MpICpfX3Ag
Kj0gKl9fcTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+IHZvaWQgX0FycmF5
X2F1Z21lbnRlZF9tdWx0aXBsaWVzIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX3MsIGNvbnN0
IF9FeHByPF9Eb20sX1RwPiYgX19lLCBzaXplX3QgX19uKSB7IF9UcCogX19wIChfX2EuX01fZGF0
YSk7IGZvciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgX19wKz1fX3MpICpfX3AgKj0g
X19lW19faV07IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVn
bWVudGVkX211bHRpcGxpZXMgKF9BcnJheTxfVHA+IF9fYSwgX0FycmF5PHNpemVfdD4gX19pLCBf
QXJyYXk8X1RwPiBfX2IsIHNpemVfdCBfX24pIHsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9y
IChzaXplX3QqIF9faj1fX2kuX01fZGF0YTsgX19qPF9faS5fTV9kYXRhK19fbjsgKytfX2osICsr
X19xKSBfX2EuX01fZGF0YVsqX19qXSAqPSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4g
aW5saW5lIHZvaWQgX0FycmF5X2F1Z21lbnRlZF9tdWx0aXBsaWVzIChfQXJyYXk8X1RwPiBfX2Es
IHNpemVfdCBfX24sIF9BcnJheTxfVHA+IF9fYiwgX0FycmF5PHNpemVfdD4gX19pKSB7IF9UcCog
X19wIChfX2EuX01fZGF0YSk7IGZvciAoc2l6ZV90KiBfX2o9X19pLl9NX2RhdGE7IF9fajxfX2ku
X01fZGF0YStfX247ICsrX19qLCArK19fcCkgKl9fcCAqPSBfX2IuX01fZGF0YVsqX19qXTsgfSB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+IHZvaWQgX0FycmF5X2F1Z21lbnRlZF9t
dWx0aXBsaWVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxzaXplX3Q+IF9faSwgY29uc3QgX0V4
cHI8X0RvbSwgX1RwPiYgX19lLCBzaXplX3QgX19uKSB7IHNpemVfdCogX19qIChfX2kuX01fZGF0
YSk7IGZvciAoc2l6ZV90IF9faz0wOyBfX2s8X19uOyArK19faywgKytfX2opIF9fYS5fTV9kYXRh
WypfX2pdICo9IF9fZVtfX2tdOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdm9pZCBfQXJyYXlf
YXVnbWVudGVkX211bHRpcGxpZXMgKF9BcnJheTxfVHA+IF9fYSwgX0FycmF5PGJvb2w+IF9fbSwg
X0FycmF5PF9UcD4gX19iLCBzaXplX3QgX19uKSB7IGJvb2wqIG9rIChfX20uX01fZGF0YSk7IF9U
cCogX19wIChfX2EuX01fZGF0YSk7IGZvciAoX1RwKiBfX3E9X19iLl9NX2RhdGE7IF9fcTxfX2Iu
X01fZGF0YStfX247ICsrX19xLCArK29rLCArK19fcCkgeyB3aGlsZSAoISAqb2spIHsgKytvazsg
KytfX3A7IH0gKl9fcCAqPSAqX19xOyB9IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB2b2lkIF9B
cnJheV9hdWdtZW50ZWRfbXVsdGlwbGllcyAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBf
QXJyYXk8X1RwPiBfX2IsIF9BcnJheTxib29sPiBfX20pIHsgYm9vbCogb2sgKF9fbS5fTV9kYXRh
KTsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9yIChfVHAqIF9fcD1fX2EuX01fZGF0YTsgX19w
PF9fYS5fTV9kYXRhK19fbjsgKytfX3AsICsrb2ssICsrX19xKSB7IHdoaWxlICghICpvaykgeyAr
K29rOyArK19fcTsgfSAqX19wICo9ICpfX3E7IH0gfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGNs
YXNzIF9Eb20+IHZvaWQgX0FycmF5X2F1Z21lbnRlZF9tdWx0aXBsaWVzIChfQXJyYXk8X1RwPiBf
X2EsIF9BcnJheTxib29sPiBfX20sIGNvbnN0IF9FeHByPF9Eb20sIF9UcD4mIF9fZSwgc2l6ZV90
IF9fbikgeyBib29sKiBvayhfX20uX01fZGF0YSk7IF9UcCogX19wIChfX2EuX01fZGF0YSk7IGZv
ciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgKytvaywgKytfX3ApIHsgd2hpbGUgKCEg
Km9rKSB7ICsrb2s7ICsrX19wOyB9ICpfX3AgKj0gX19lW19faV07IH0gfQp0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfZGl2aWRlcyAoX0FycmF5PF9U
cD4gX19hLCBzaXplX3QgX19uLCBjb25zdCBfVHAmIF9fdCkgeyBmb3IgKF9UcCogX19wPV9fYS5f
TV9kYXRhOyBfX3A8X19hLl9NX2RhdGErX19uOyArK19fcCkgKl9fcCAvPSBfX3Q7IH0gdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVudGVkX2RpdmlkZXMgKF9B
cnJheTxfVHA+IF9fYSwgc2l6ZV90IF9fbiwgX0FycmF5PF9UcD4gX19iKSB7IF9UcCogX19wID0g
X19hLl9NX2RhdGE7IGZvciAoX1RwKiBfX3E9X19iLl9NX2RhdGE7IF9fcTxfX2IuX01fZGF0YStf
X247ICsrX19wLCArK19fcSkgKl9fcCAvPSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwg
Y2xhc3MgX0RvbT4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX2RpdmlkZXMgKF9BcnJheTxfVHA+IF9f
YSwgY29uc3QgX0V4cHI8X0RvbSxfVHA+JiBfX2UsIHNpemVfdCBfX24pIHsgX1RwKiBfX3AgKF9f
YS5fTV9kYXRhKTsgZm9yIChzaXplX3QgX19pPTA7IF9faTxfX247ICsrX19pLCArK19fcCkgKl9f
cCAvPSBfX2VbX19pXTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJh
eV9hdWdtZW50ZWRfZGl2aWRlcyAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBzaXplX3Qg
X19zLCBfQXJyYXk8X1RwPiBfX2IpIHsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9yIChfVHAq
IF9fcD1fX2EuX01fZGF0YTsgX19wPF9fYS5fTV9kYXRhK19fcypfX247IF9fcCs9X19zLCArK19f
cSkgKl9fcCAvPSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgX0Fy
cmF5X2F1Z21lbnRlZF9kaXZpZGVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxfVHA+IF9fYiwg
c2l6ZV90IF9fbiwgc2l6ZV90IF9fcykgeyBfVHAqIF9fcSAoX19iLl9NX2RhdGEpOyBmb3IgKF9U
cCogX19wPV9fYS5fTV9kYXRhOyBfX3A8X19hLl9NX2RhdGErX19uOyArK19fcCwgX19xKz1fX3Mp
ICpfX3AgLz0gKl9fcTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+IHZvaWQg
X0FycmF5X2F1Z21lbnRlZF9kaXZpZGVzIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX3MsIGNv
bnN0IF9FeHByPF9Eb20sX1RwPiYgX19lLCBzaXplX3QgX19uKSB7IF9UcCogX19wIChfX2EuX01f
ZGF0YSk7IGZvciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgX19wKz1fX3MpICpfX3Ag
Lz0gX19lW19faV07IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJyYXlf
YXVnbWVudGVkX2RpdmlkZXMgKF9BcnJheTxfVHA+IF9fYSwgX0FycmF5PHNpemVfdD4gX19pLCBf
QXJyYXk8X1RwPiBfX2IsIHNpemVfdCBfX24pIHsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9y
IChzaXplX3QqIF9faj1fX2kuX01fZGF0YTsgX19qPF9faS5fTV9kYXRhK19fbjsgKytfX2osICsr
X19xKSBfX2EuX01fZGF0YVsqX19qXSAvPSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4g
aW5saW5lIHZvaWQgX0FycmF5X2F1Z21lbnRlZF9kaXZpZGVzIChfQXJyYXk8X1RwPiBfX2EsIHNp
emVfdCBfX24sIF9BcnJheTxfVHA+IF9fYiwgX0FycmF5PHNpemVfdD4gX19pKSB7IF9UcCogX19w
IChfX2EuX01fZGF0YSk7IGZvciAoc2l6ZV90KiBfX2o9X19pLl9NX2RhdGE7IF9fajxfX2kuX01f
ZGF0YStfX247ICsrX19qLCArK19fcCkgKl9fcCAvPSBfX2IuX01fZGF0YVsqX19qXTsgfSB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+IHZvaWQgX0FycmF5X2F1Z21lbnRlZF9kaXZp
ZGVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxzaXplX3Q+IF9faSwgY29uc3QgX0V4cHI8X0Rv
bSwgX1RwPiYgX19lLCBzaXplX3QgX19uKSB7IHNpemVfdCogX19qIChfX2kuX01fZGF0YSk7IGZv
ciAoc2l6ZV90IF9faz0wOyBfX2s8X19uOyArK19faywgKytfX2opIF9fYS5fTV9kYXRhWypfX2pd
IC89IF9fZVtfX2tdOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdm9pZCBfQXJyYXlfYXVnbWVu
dGVkX2RpdmlkZXMgKF9BcnJheTxfVHA+IF9fYSwgX0FycmF5PGJvb2w+IF9fbSwgX0FycmF5PF9U
cD4gX19iLCBzaXplX3QgX19uKSB7IGJvb2wqIG9rIChfX20uX01fZGF0YSk7IF9UcCogX19wIChf
X2EuX01fZGF0YSk7IGZvciAoX1RwKiBfX3E9X19iLl9NX2RhdGE7IF9fcTxfX2IuX01fZGF0YStf
X247ICsrX19xLCArK29rLCArK19fcCkgeyB3aGlsZSAoISAqb2spIHsgKytvazsgKytfX3A7IH0g
Kl9fcCAvPSAqX19xOyB9IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB2b2lkIF9BcnJheV9hdWdt
ZW50ZWRfZGl2aWRlcyAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBfQXJyYXk8X1RwPiBf
X2IsIF9BcnJheTxib29sPiBfX20pIHsgYm9vbCogb2sgKF9fbS5fTV9kYXRhKTsgX1RwKiBfX3Eg
KF9fYi5fTV9kYXRhKTsgZm9yIChfVHAqIF9fcD1fX2EuX01fZGF0YTsgX19wPF9fYS5fTV9kYXRh
K19fbjsgKytfX3AsICsrb2ssICsrX19xKSB7IHdoaWxlICghICpvaykgeyArK29rOyArK19fcTsg
fSAqX19wIC89ICpfX3E7IH0gfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+IHZv
aWQgX0FycmF5X2F1Z21lbnRlZF9kaXZpZGVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxib29s
PiBfX20sIGNvbnN0IF9FeHByPF9Eb20sIF9UcD4mIF9fZSwgc2l6ZV90IF9fbikgeyBib29sKiBv
ayhfX20uX01fZGF0YSk7IF9UcCogX19wIChfX2EuX01fZGF0YSk7IGZvciAoc2l6ZV90IF9faT0w
OyBfX2k8X19uOyArK19faSwgKytvaywgKytfX3ApIHsgd2hpbGUgKCEgKm9rKSB7ICsrb2s7ICsr
X19wOyB9ICpfX3AgLz0gX19lW19faV07IH0gfQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGlu
ZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfbW9kdWx1cyAoX0FycmF5PF9UcD4gX19hLCBzaXplX3Qg
X19uLCBjb25zdCBfVHAmIF9fdCkgeyBmb3IgKF9UcCogX19wPV9fYS5fTV9kYXRhOyBfX3A8X19h
Ll9NX2RhdGErX19uOyArK19fcCkgKl9fcCAlPSBfX3Q7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVudGVkX21vZHVsdXMgKF9BcnJheTxfVHA+IF9fYSwg
c2l6ZV90IF9fbiwgX0FycmF5PF9UcD4gX19iKSB7IF9UcCogX19wID0gX19hLl9NX2RhdGE7IGZv
ciAoX1RwKiBfX3E9X19iLl9NX2RhdGE7IF9fcTxfX2IuX01fZGF0YStfX247ICsrX19wLCArK19f
cSkgKl9fcCAlPSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgY2xhc3MgX0RvbT4gdm9p
ZCBfQXJyYXlfYXVnbWVudGVkX21vZHVsdXMgKF9BcnJheTxfVHA+IF9fYSwgY29uc3QgX0V4cHI8
X0RvbSxfVHA+JiBfX2UsIHNpemVfdCBfX24pIHsgX1RwKiBfX3AgKF9fYS5fTV9kYXRhKTsgZm9y
IChzaXplX3QgX19pPTA7IF9faTxfX247ICsrX19pLCArK19fcCkgKl9fcCAlPSBfX2VbX19pXTsg
fSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfbW9k
dWx1cyAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBzaXplX3QgX19zLCBfQXJyYXk8X1Rw
PiBfX2IpIHsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9yIChfVHAqIF9fcD1fX2EuX01fZGF0
YTsgX19wPF9fYS5fTV9kYXRhK19fcypfX247IF9fcCs9X19zLCArK19fcSkgKl9fcCAlPSAqX19x
OyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgX0FycmF5X2F1Z21lbnRlZF9t
b2R1bHVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxfVHA+IF9fYiwgc2l6ZV90IF9fbiwgc2l6
ZV90IF9fcykgeyBfVHAqIF9fcSAoX19iLl9NX2RhdGEpOyBmb3IgKF9UcCogX19wPV9fYS5fTV9k
YXRhOyBfX3A8X19hLl9NX2RhdGErX19uOyArK19fcCwgX19xKz1fX3MpICpfX3AgJT0gKl9fcTsg
fSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+IHZvaWQgX0FycmF5X2F1Z21lbnRl
ZF9tb2R1bHVzIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX3MsIGNvbnN0IF9FeHByPF9Eb20s
X1RwPiYgX19lLCBzaXplX3QgX19uKSB7IF9UcCogX19wIChfX2EuX01fZGF0YSk7IGZvciAoc2l6
ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgX19wKz1fX3MpICpfX3AgJT0gX19lW19faV07IH0g
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVudGVkX21vZHVs
dXMgKF9BcnJheTxfVHA+IF9fYSwgX0FycmF5PHNpemVfdD4gX19pLCBfQXJyYXk8X1RwPiBfX2Is
IHNpemVfdCBfX24pIHsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9yIChzaXplX3QqIF9faj1f
X2kuX01fZGF0YTsgX19qPF9faS5fTV9kYXRhK19fbjsgKytfX2osICsrX19xKSBfX2EuX01fZGF0
YVsqX19qXSAlPSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgX0Fy
cmF5X2F1Z21lbnRlZF9tb2R1bHVzIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX24sIF9BcnJh
eTxfVHA+IF9fYiwgX0FycmF5PHNpemVfdD4gX19pKSB7IF9UcCogX19wIChfX2EuX01fZGF0YSk7
IGZvciAoc2l6ZV90KiBfX2o9X19pLl9NX2RhdGE7IF9fajxfX2kuX01fZGF0YStfX247ICsrX19q
LCArK19fcCkgKl9fcCAlPSBfX2IuX01fZGF0YVsqX19qXTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHAsIGNsYXNzIF9Eb20+IHZvaWQgX0FycmF5X2F1Z21lbnRlZF9tb2R1bHVzIChfQXJyYXk8X1Rw
PiBfX2EsIF9BcnJheTxzaXplX3Q+IF9faSwgY29uc3QgX0V4cHI8X0RvbSwgX1RwPiYgX19lLCBz
aXplX3QgX19uKSB7IHNpemVfdCogX19qIChfX2kuX01fZGF0YSk7IGZvciAoc2l6ZV90IF9faz0w
OyBfX2s8X19uOyArK19faywgKytfX2opIF9fYS5fTV9kYXRhWypfX2pdICU9IF9fZVtfX2tdOyB9
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX21vZHVsdXMgKF9B
cnJheTxfVHA+IF9fYSwgX0FycmF5PGJvb2w+IF9fbSwgX0FycmF5PF9UcD4gX19iLCBzaXplX3Qg
X19uKSB7IGJvb2wqIG9rIChfX20uX01fZGF0YSk7IF9UcCogX19wIChfX2EuX01fZGF0YSk7IGZv
ciAoX1RwKiBfX3E9X19iLl9NX2RhdGE7IF9fcTxfX2IuX01fZGF0YStfX247ICsrX19xLCArK29r
LCArK19fcCkgeyB3aGlsZSAoISAqb2spIHsgKytvazsgKytfX3A7IH0gKl9fcCAlPSAqX19xOyB9
IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB2b2lkIF9BcnJheV9hdWdtZW50ZWRfbW9kdWx1cyAo
X0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBfQXJyYXk8X1RwPiBfX2IsIF9BcnJheTxib29s
PiBfX20pIHsgYm9vbCogb2sgKF9fbS5fTV9kYXRhKTsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsg
Zm9yIChfVHAqIF9fcD1fX2EuX01fZGF0YTsgX19wPF9fYS5fTV9kYXRhK19fbjsgKytfX3AsICsr
b2ssICsrX19xKSB7IHdoaWxlICghICpvaykgeyArK29rOyArK19fcTsgfSAqX19wICU9ICpfX3E7
IH0gfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+IHZvaWQgX0FycmF5X2F1Z21l
bnRlZF9tb2R1bHVzIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxib29sPiBfX20sIGNvbnN0IF9F
eHByPF9Eb20sIF9UcD4mIF9fZSwgc2l6ZV90IF9fbikgeyBib29sKiBvayhfX20uX01fZGF0YSk7
IF9UcCogX19wIChfX2EuX01fZGF0YSk7IGZvciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19f
aSwgKytvaywgKytfX3ApIHsgd2hpbGUgKCEgKm9rKSB7ICsrb2s7ICsrX19wOyB9ICpfX3AgJT0g
X19lW19faV07IH0gfQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9h
dWdtZW50ZWRfeG9yIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX24sIGNvbnN0IF9UcCYgX190
KSB7IGZvciAoX1RwKiBfX3A9X19hLl9NX2RhdGE7IF9fcDxfX2EuX01fZGF0YStfX247ICsrX19w
KSAqX19wIF49IF9fdDsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJh
eV9hdWdtZW50ZWRfeG9yIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX24sIF9BcnJheTxfVHA+
IF9fYikgeyBfVHAqIF9fcCA9IF9fYS5fTV9kYXRhOyBmb3IgKF9UcCogX19xPV9fYi5fTV9kYXRh
OyBfX3E8X19iLl9NX2RhdGErX19uOyArK19fcCwgKytfX3EpICpfX3AgXj0gKl9fcTsgfSB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+IHZvaWQgX0FycmF5X2F1Z21lbnRlZF94b3Ig
KF9BcnJheTxfVHA+IF9fYSwgY29uc3QgX0V4cHI8X0RvbSxfVHA+JiBfX2UsIHNpemVfdCBfX24p
IHsgX1RwKiBfX3AgKF9fYS5fTV9kYXRhKTsgZm9yIChzaXplX3QgX19pPTA7IF9faTxfX247ICsr
X19pLCArK19fcCkgKl9fcCBePSBfX2VbX19pXTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlu
bGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfeG9yIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBf
X24sIHNpemVfdCBfX3MsIF9BcnJheTxfVHA+IF9fYikgeyBfVHAqIF9fcSAoX19iLl9NX2RhdGEp
OyBmb3IgKF9UcCogX19wPV9fYS5fTV9kYXRhOyBfX3A8X19hLl9NX2RhdGErX19zKl9fbjsgX19w
Kz1fX3MsICsrX19xKSAqX19wIF49ICpfX3E7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxp
bmUgdm9pZCBfQXJyYXlfYXVnbWVudGVkX3hvciAoX0FycmF5PF9UcD4gX19hLCBfQXJyYXk8X1Rw
PiBfX2IsIHNpemVfdCBfX24sIHNpemVfdCBfX3MpIHsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsg
Zm9yIChfVHAqIF9fcD1fX2EuX01fZGF0YTsgX19wPF9fYS5fTV9kYXRhK19fbjsgKytfX3AsIF9f
cSs9X19zKSAqX19wIF49ICpfX3E7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBjbGFzcyBfRG9t
PiB2b2lkIF9BcnJheV9hdWdtZW50ZWRfeG9yIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX3Ms
IGNvbnN0IF9FeHByPF9Eb20sX1RwPiYgX19lLCBzaXplX3QgX19uKSB7IF9UcCogX19wIChfX2Eu
X01fZGF0YSk7IGZvciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgX19wKz1fX3MpICpf
X3AgXj0gX19lW19faV07IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJy
YXlfYXVnbWVudGVkX3hvciAoX0FycmF5PF9UcD4gX19hLCBfQXJyYXk8c2l6ZV90PiBfX2ksIF9B
cnJheTxfVHA+IF9fYiwgc2l6ZV90IF9fbikgeyBfVHAqIF9fcSAoX19iLl9NX2RhdGEpOyBmb3Ig
KHNpemVfdCogX19qPV9faS5fTV9kYXRhOyBfX2o8X19pLl9NX2RhdGErX19uOyArK19faiwgKytf
X3EpIF9fYS5fTV9kYXRhWypfX2pdIF49ICpfX3E7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBp
bmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVudGVkX3hvciAoX0FycmF5PF9UcD4gX19hLCBzaXplX3Qg
X19uLCBfQXJyYXk8X1RwPiBfX2IsIF9BcnJheTxzaXplX3Q+IF9faSkgeyBfVHAqIF9fcCAoX19h
Ll9NX2RhdGEpOyBmb3IgKHNpemVfdCogX19qPV9faS5fTV9kYXRhOyBfX2o8X19pLl9NX2RhdGEr
X19uOyArK19faiwgKytfX3ApICpfX3AgXj0gX19iLl9NX2RhdGFbKl9fal07IH0gdGVtcGxhdGU8
dHlwZW5hbWUgX1RwLCBjbGFzcyBfRG9tPiB2b2lkIF9BcnJheV9hdWdtZW50ZWRfeG9yIChfQXJy
YXk8X1RwPiBfX2EsIF9BcnJheTxzaXplX3Q+IF9faSwgY29uc3QgX0V4cHI8X0RvbSwgX1RwPiYg
X19lLCBzaXplX3QgX19uKSB7IHNpemVfdCogX19qIChfX2kuX01fZGF0YSk7IGZvciAoc2l6ZV90
IF9faz0wOyBfX2s8X19uOyArK19faywgKytfX2opIF9fYS5fTV9kYXRhWypfX2pdIF49IF9fZVtf
X2tdOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX3hvciAo
X0FycmF5PF9UcD4gX19hLCBfQXJyYXk8Ym9vbD4gX19tLCBfQXJyYXk8X1RwPiBfX2IsIHNpemVf
dCBfX24pIHsgYm9vbCogb2sgKF9fbS5fTV9kYXRhKTsgX1RwKiBfX3AgKF9fYS5fTV9kYXRhKTsg
Zm9yIChfVHAqIF9fcT1fX2IuX01fZGF0YTsgX19xPF9fYi5fTV9kYXRhK19fbjsgKytfX3EsICsr
b2ssICsrX19wKSB7IHdoaWxlICghICpvaykgeyArK29rOyArK19fcDsgfSAqX19wIF49ICpfX3E7
IH0gfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHZvaWQgX0FycmF5X2F1Z21lbnRlZF94b3IgKF9B
cnJheTxfVHA+IF9fYSwgc2l6ZV90IF9fbiwgX0FycmF5PF9UcD4gX19iLCBfQXJyYXk8Ym9vbD4g
X19tKSB7IGJvb2wqIG9rIChfX20uX01fZGF0YSk7IF9UcCogX19xIChfX2IuX01fZGF0YSk7IGZv
ciAoX1RwKiBfX3A9X19hLl9NX2RhdGE7IF9fcDxfX2EuX01fZGF0YStfX247ICsrX19wLCArK29r
LCArK19fcSkgeyB3aGlsZSAoISAqb2spIHsgKytvazsgKytfX3E7IH0gKl9fcCBePSAqX19xOyB9
IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBjbGFzcyBfRG9tPiB2b2lkIF9BcnJheV9hdWdtZW50
ZWRfeG9yIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxib29sPiBfX20sIGNvbnN0IF9FeHByPF9E
b20sIF9UcD4mIF9fZSwgc2l6ZV90IF9fbikgeyBib29sKiBvayhfX20uX01fZGF0YSk7IF9UcCog
X19wIChfX2EuX01fZGF0YSk7IGZvciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgKytv
aywgKytfX3ApIHsgd2hpbGUgKCEgKm9rKSB7ICsrb2s7ICsrX19wOyB9ICpfX3AgXj0gX19lW19f
aV07IH0gfQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50
ZWRfb3IgKF9BcnJheTxfVHA+IF9fYSwgc2l6ZV90IF9fbiwgY29uc3QgX1RwJiBfX3QpIHsgZm9y
IChfVHAqIF9fcD1fX2EuX01fZGF0YTsgX19wPF9fYS5fTV9kYXRhK19fbjsgKytfX3ApICpfX3Ag
fD0gX190OyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgX0FycmF5X2F1Z21l
bnRlZF9vciAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBfQXJyYXk8X1RwPiBfX2IpIHsg
X1RwKiBfX3AgPSBfX2EuX01fZGF0YTsgZm9yIChfVHAqIF9fcT1fX2IuX01fZGF0YTsgX19xPF9f
Yi5fTV9kYXRhK19fbjsgKytfX3AsICsrX19xKSAqX19wIHw9ICpfX3E7IH0gdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwLCBjbGFzcyBfRG9tPiB2b2lkIF9BcnJheV9hdWdtZW50ZWRfb3IgKF9BcnJheTxf
VHA+IF9fYSwgY29uc3QgX0V4cHI8X0RvbSxfVHA+JiBfX2UsIHNpemVfdCBfX24pIHsgX1RwKiBf
X3AgKF9fYS5fTV9kYXRhKTsgZm9yIChzaXplX3QgX19pPTA7IF9faTxfX247ICsrX19pLCArK19f
cCkgKl9fcCB8PSBfX2VbX19pXTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lk
IF9BcnJheV9hdWdtZW50ZWRfb3IgKF9BcnJheTxfVHA+IF9fYSwgc2l6ZV90IF9fbiwgc2l6ZV90
IF9fcywgX0FycmF5PF9UcD4gX19iKSB7IF9UcCogX19xIChfX2IuX01fZGF0YSk7IGZvciAoX1Rw
KiBfX3A9X19hLl9NX2RhdGE7IF9fcDxfX2EuX01fZGF0YStfX3MqX19uOyBfX3ArPV9fcywgKytf
X3EpICpfX3AgfD0gKl9fcTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9B
cnJheV9hdWdtZW50ZWRfb3IgKF9BcnJheTxfVHA+IF9fYSwgX0FycmF5PF9UcD4gX19iLCBzaXpl
X3QgX19uLCBzaXplX3QgX19zKSB7IF9UcCogX19xIChfX2IuX01fZGF0YSk7IGZvciAoX1RwKiBf
X3A9X19hLl9NX2RhdGE7IF9fcDxfX2EuX01fZGF0YStfX247ICsrX19wLCBfX3ErPV9fcykgKl9f
cCB8PSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgY2xhc3MgX0RvbT4gdm9pZCBfQXJy
YXlfYXVnbWVudGVkX29yIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX3MsIGNvbnN0IF9FeHBy
PF9Eb20sX1RwPiYgX19lLCBzaXplX3QgX19uKSB7IF9UcCogX19wIChfX2EuX01fZGF0YSk7IGZv
ciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgX19wKz1fX3MpICpfX3AgfD0gX19lW19f
aV07IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVudGVk
X29yIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxzaXplX3Q+IF9faSwgX0FycmF5PF9UcD4gX19i
LCBzaXplX3QgX19uKSB7IF9UcCogX19xIChfX2IuX01fZGF0YSk7IGZvciAoc2l6ZV90KiBfX2o9
X19pLl9NX2RhdGE7IF9fajxfX2kuX01fZGF0YStfX247ICsrX19qLCArK19fcSkgX19hLl9NX2Rh
dGFbKl9fal0gfD0gKl9fcTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9B
cnJheV9hdWdtZW50ZWRfb3IgKF9BcnJheTxfVHA+IF9fYSwgc2l6ZV90IF9fbiwgX0FycmF5PF9U
cD4gX19iLCBfQXJyYXk8c2l6ZV90PiBfX2kpIHsgX1RwKiBfX3AgKF9fYS5fTV9kYXRhKTsgZm9y
IChzaXplX3QqIF9faj1fX2kuX01fZGF0YTsgX19qPF9faS5fTV9kYXRhK19fbjsgKytfX2osICsr
X19wKSAqX19wIHw9IF9fYi5fTV9kYXRhWypfX2pdOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwg
Y2xhc3MgX0RvbT4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX29yIChfQXJyYXk8X1RwPiBfX2EsIF9B
cnJheTxzaXplX3Q+IF9faSwgY29uc3QgX0V4cHI8X0RvbSwgX1RwPiYgX19lLCBzaXplX3QgX19u
KSB7IHNpemVfdCogX19qIChfX2kuX01fZGF0YSk7IGZvciAoc2l6ZV90IF9faz0wOyBfX2s8X19u
OyArK19faywgKytfX2opIF9fYS5fTV9kYXRhWypfX2pdIHw9IF9fZVtfX2tdOyB9IHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX29yIChfQXJyYXk8X1RwPiBfX2Es
IF9BcnJheTxib29sPiBfX20sIF9BcnJheTxfVHA+IF9fYiwgc2l6ZV90IF9fbikgeyBib29sKiBv
ayAoX19tLl9NX2RhdGEpOyBfVHAqIF9fcCAoX19hLl9NX2RhdGEpOyBmb3IgKF9UcCogX19xPV9f
Yi5fTV9kYXRhOyBfX3E8X19iLl9NX2RhdGErX19uOyArK19fcSwgKytvaywgKytfX3ApIHsgd2hp
bGUgKCEgKm9rKSB7ICsrb2s7ICsrX19wOyB9ICpfX3AgfD0gKl9fcTsgfSB9IHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX29yIChfQXJyYXk8X1RwPiBfX2EsIHNp
emVfdCBfX24sIF9BcnJheTxfVHA+IF9fYiwgX0FycmF5PGJvb2w+IF9fbSkgeyBib29sKiBvayAo
X19tLl9NX2RhdGEpOyBfVHAqIF9fcSAoX19iLl9NX2RhdGEpOyBmb3IgKF9UcCogX19wPV9fYS5f
TV9kYXRhOyBfX3A8X19hLl9NX2RhdGErX19uOyArK19fcCwgKytvaywgKytfX3EpIHsgd2hpbGUg
KCEgKm9rKSB7ICsrb2s7ICsrX19xOyB9ICpfX3AgfD0gKl9fcTsgfSB9IHRlbXBsYXRlPHR5cGVu
YW1lIF9UcCwgY2xhc3MgX0RvbT4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX29yIChfQXJyYXk8X1Rw
PiBfX2EsIF9BcnJheTxib29sPiBfX20sIGNvbnN0IF9FeHByPF9Eb20sIF9UcD4mIF9fZSwgc2l6
ZV90IF9fbikgeyBib29sKiBvayhfX20uX01fZGF0YSk7IF9UcCogX19wIChfX2EuX01fZGF0YSk7
IGZvciAoc2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgKytvaywgKytfX3ApIHsgd2hpbGUg
KCEgKm9rKSB7ICsrb2s7ICsrX19wOyB9ICpfX3AgfD0gX19lW19faV07IH0gfQp0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfYW5kIChfQXJyYXk8X1Rw
PiBfX2EsIHNpemVfdCBfX24sIGNvbnN0IF9UcCYgX190KSB7IGZvciAoX1RwKiBfX3A9X19hLl9N
X2RhdGE7IF9fcDxfX2EuX01fZGF0YStfX247ICsrX19wKSAqX19wICY9IF9fdDsgfSB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfYW5kIChfQXJyYXk8
X1RwPiBfX2EsIHNpemVfdCBfX24sIF9BcnJheTxfVHA+IF9fYikgeyBfVHAqIF9fcCA9IF9fYS5f
TV9kYXRhOyBmb3IgKF9UcCogX19xPV9fYi5fTV9kYXRhOyBfX3E8X19iLl9NX2RhdGErX19uOyAr
K19fcCwgKytfX3EpICpfX3AgJj0gKl9fcTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNz
IF9Eb20+IHZvaWQgX0FycmF5X2F1Z21lbnRlZF9hbmQgKF9BcnJheTxfVHA+IF9fYSwgY29uc3Qg
X0V4cHI8X0RvbSxfVHA+JiBfX2UsIHNpemVfdCBfX24pIHsgX1RwKiBfX3AgKF9fYS5fTV9kYXRh
KTsgZm9yIChzaXplX3QgX19pPTA7IF9faTxfX247ICsrX19pLCArK19fcCkgKl9fcCAmPSBfX2Vb
X19pXTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50
ZWRfYW5kIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX24sIHNpemVfdCBfX3MsIF9BcnJheTxf
VHA+IF9fYikgeyBfVHAqIF9fcSAoX19iLl9NX2RhdGEpOyBmb3IgKF9UcCogX19wPV9fYS5fTV9k
YXRhOyBfX3A8X19hLl9NX2RhdGErX19zKl9fbjsgX19wKz1fX3MsICsrX19xKSAqX19wICY9ICpf
X3E7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVudGVk
X2FuZCAoX0FycmF5PF9UcD4gX19hLCBfQXJyYXk8X1RwPiBfX2IsIHNpemVfdCBfX24sIHNpemVf
dCBfX3MpIHsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9yIChfVHAqIF9fcD1fX2EuX01fZGF0
YTsgX19wPF9fYS5fTV9kYXRhK19fbjsgKytfX3AsIF9fcSs9X19zKSAqX19wICY9ICpfX3E7IH0g
dGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBjbGFzcyBfRG9tPiB2b2lkIF9BcnJheV9hdWdtZW50ZWRf
YW5kIChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX3MsIGNvbnN0IF9FeHByPF9Eb20sX1RwPiYg
X19lLCBzaXplX3QgX19uKSB7IF9UcCogX19wIChfX2EuX01fZGF0YSk7IGZvciAoc2l6ZV90IF9f
aT0wOyBfX2k8X19uOyArK19faSwgX19wKz1fX3MpICpfX3AgJj0gX19lW19faV07IH0gdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVudGVkX2FuZCAoX0FycmF5
PF9UcD4gX19hLCBfQXJyYXk8c2l6ZV90PiBfX2ksIF9BcnJheTxfVHA+IF9fYiwgc2l6ZV90IF9f
bikgeyBfVHAqIF9fcSAoX19iLl9NX2RhdGEpOyBmb3IgKHNpemVfdCogX19qPV9faS5fTV9kYXRh
OyBfX2o8X19pLl9NX2RhdGErX19uOyArK19faiwgKytfX3EpIF9fYS5fTV9kYXRhWypfX2pdICY9
ICpfX3E7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVu
dGVkX2FuZCAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBfQXJyYXk8X1RwPiBfX2IsIF9B
cnJheTxzaXplX3Q+IF9faSkgeyBfVHAqIF9fcCAoX19hLl9NX2RhdGEpOyBmb3IgKHNpemVfdCog
X19qPV9faS5fTV9kYXRhOyBfX2o8X19pLl9NX2RhdGErX19uOyArK19faiwgKytfX3ApICpfX3Ag
Jj0gX19iLl9NX2RhdGFbKl9fal07IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBjbGFzcyBfRG9t
PiB2b2lkIF9BcnJheV9hdWdtZW50ZWRfYW5kIChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxzaXpl
X3Q+IF9faSwgY29uc3QgX0V4cHI8X0RvbSwgX1RwPiYgX19lLCBzaXplX3QgX19uKSB7IHNpemVf
dCogX19qIChfX2kuX01fZGF0YSk7IGZvciAoc2l6ZV90IF9faz0wOyBfX2s8X19uOyArK19faywg
KytfX2opIF9fYS5fTV9kYXRhWypfX2pdICY9IF9fZVtfX2tdOyB9IHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX2FuZCAoX0FycmF5PF9UcD4gX19hLCBfQXJyYXk8
Ym9vbD4gX19tLCBfQXJyYXk8X1RwPiBfX2IsIHNpemVfdCBfX24pIHsgYm9vbCogb2sgKF9fbS5f
TV9kYXRhKTsgX1RwKiBfX3AgKF9fYS5fTV9kYXRhKTsgZm9yIChfVHAqIF9fcT1fX2IuX01fZGF0
YTsgX19xPF9fYi5fTV9kYXRhK19fbjsgKytfX3EsICsrb2ssICsrX19wKSB7IHdoaWxlICghICpv
aykgeyArK29rOyArK19fcDsgfSAqX19wICY9ICpfX3E7IH0gfSB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+IHZvaWQgX0FycmF5X2F1Z21lbnRlZF9hbmQgKF9BcnJheTxfVHA+IF9fYSwgc2l6ZV90IF9f
biwgX0FycmF5PF9UcD4gX19iLCBfQXJyYXk8Ym9vbD4gX19tKSB7IGJvb2wqIG9rIChfX20uX01f
ZGF0YSk7IF9UcCogX19xIChfX2IuX01fZGF0YSk7IGZvciAoX1RwKiBfX3A9X19hLl9NX2RhdGE7
IF9fcDxfX2EuX01fZGF0YStfX247ICsrX19wLCArK29rLCArK19fcSkgeyB3aGlsZSAoISAqb2sp
IHsgKytvazsgKytfX3E7IH0gKl9fcCAmPSAqX19xOyB9IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
LCBjbGFzcyBfRG9tPiB2b2lkIF9BcnJheV9hdWdtZW50ZWRfYW5kIChfQXJyYXk8X1RwPiBfX2Es
IF9BcnJheTxib29sPiBfX20sIGNvbnN0IF9FeHByPF9Eb20sIF9UcD4mIF9fZSwgc2l6ZV90IF9f
bikgeyBib29sKiBvayhfX20uX01fZGF0YSk7IF9UcCogX19wIChfX2EuX01fZGF0YSk7IGZvciAo
c2l6ZV90IF9faT0wOyBfX2k8X19uOyArK19faSwgKytvaywgKytfX3ApIHsgd2hpbGUgKCEgKm9r
KSB7ICsrb2s7ICsrX19wOyB9ICpfX3AgJj0gX19lW19faV07IH0gfQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfc2hpZnRfbGVmdCAoX0FycmF5PF9U
cD4gX19hLCBzaXplX3QgX19uLCBjb25zdCBfVHAmIF9fdCkgeyBmb3IgKF9UcCogX19wPV9fYS5f
TV9kYXRhOyBfX3A8X19hLl9NX2RhdGErX19uOyArK19fcCkgKl9fcCA8PD0gX190OyB9IHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgX0FycmF5X2F1Z21lbnRlZF9zaGlmdF9sZWZ0
IChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX24sIF9BcnJheTxfVHA+IF9fYikgeyBfVHAqIF9f
cCA9IF9fYS5fTV9kYXRhOyBmb3IgKF9UcCogX19xPV9fYi5fTV9kYXRhOyBfX3E8X19iLl9NX2Rh
dGErX19uOyArK19fcCwgKytfX3EpICpfX3AgPDw9ICpfX3E7IH0gdGVtcGxhdGU8dHlwZW5hbWUg
X1RwLCBjbGFzcyBfRG9tPiB2b2lkIF9BcnJheV9hdWdtZW50ZWRfc2hpZnRfbGVmdCAoX0FycmF5
PF9UcD4gX19hLCBjb25zdCBfRXhwcjxfRG9tLF9UcD4mIF9fZSwgc2l6ZV90IF9fbikgeyBfVHAq
IF9fcCAoX19hLl9NX2RhdGEpOyBmb3IgKHNpemVfdCBfX2k9MDsgX19pPF9fbjsgKytfX2ksICsr
X19wKSAqX19wIDw8PSBfX2VbX19pXTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2
b2lkIF9BcnJheV9hdWdtZW50ZWRfc2hpZnRfbGVmdCAoX0FycmF5PF9UcD4gX19hLCBzaXplX3Qg
X19uLCBzaXplX3QgX19zLCBfQXJyYXk8X1RwPiBfX2IpIHsgX1RwKiBfX3EgKF9fYi5fTV9kYXRh
KTsgZm9yIChfVHAqIF9fcD1fX2EuX01fZGF0YTsgX19wPF9fYS5fTV9kYXRhK19fcypfX247IF9f
cCs9X19zLCArK19fcSkgKl9fcCA8PD0gKl9fcTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlu
bGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfc2hpZnRfbGVmdCAoX0FycmF5PF9UcD4gX19hLCBf
QXJyYXk8X1RwPiBfX2IsIHNpemVfdCBfX24sIHNpemVfdCBfX3MpIHsgX1RwKiBfX3EgKF9fYi5f
TV9kYXRhKTsgZm9yIChfVHAqIF9fcD1fX2EuX01fZGF0YTsgX19wPF9fYS5fTV9kYXRhK19fbjsg
KytfX3AsIF9fcSs9X19zKSAqX19wIDw8PSAqX19xOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwg
Y2xhc3MgX0RvbT4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX3NoaWZ0X2xlZnQgKF9BcnJheTxfVHA+
IF9fYSwgc2l6ZV90IF9fcywgY29uc3QgX0V4cHI8X0RvbSxfVHA+JiBfX2UsIHNpemVfdCBfX24p
IHsgX1RwKiBfX3AgKF9fYS5fTV9kYXRhKTsgZm9yIChzaXplX3QgX19pPTA7IF9faTxfX247ICsr
X19pLCBfX3ArPV9fcykgKl9fcCA8PD0gX19lW19faV07IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVudGVkX3NoaWZ0X2xlZnQgKF9BcnJheTxfVHA+IF9f
YSwgX0FycmF5PHNpemVfdD4gX19pLCBfQXJyYXk8X1RwPiBfX2IsIHNpemVfdCBfX24pIHsgX1Rw
KiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9yIChzaXplX3QqIF9faj1fX2kuX01fZGF0YTsgX19qPF9f
aS5fTV9kYXRhK19fbjsgKytfX2osICsrX19xKSBfX2EuX01fZGF0YVsqX19qXSA8PD0gKl9fcTsg
fSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfc2hp
ZnRfbGVmdCAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBfQXJyYXk8X1RwPiBfX2IsIF9B
cnJheTxzaXplX3Q+IF9faSkgeyBfVHAqIF9fcCAoX19hLl9NX2RhdGEpOyBmb3IgKHNpemVfdCog
X19qPV9faS5fTV9kYXRhOyBfX2o8X19pLl9NX2RhdGErX19uOyArK19faiwgKytfX3ApICpfX3Ag
PDw9IF9fYi5fTV9kYXRhWypfX2pdOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgY2xhc3MgX0Rv
bT4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX3NoaWZ0X2xlZnQgKF9BcnJheTxfVHA+IF9fYSwgX0Fy
cmF5PHNpemVfdD4gX19pLCBjb25zdCBfRXhwcjxfRG9tLCBfVHA+JiBfX2UsIHNpemVfdCBfX24p
IHsgc2l6ZV90KiBfX2ogKF9faS5fTV9kYXRhKTsgZm9yIChzaXplX3QgX19rPTA7IF9fazxfX247
ICsrX19rLCArK19faikgX19hLl9NX2RhdGFbKl9fal0gPDw9IF9fZVtfX2tdOyB9IHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX3NoaWZ0X2xlZnQgKF9BcnJheTxf
VHA+IF9fYSwgX0FycmF5PGJvb2w+IF9fbSwgX0FycmF5PF9UcD4gX19iLCBzaXplX3QgX19uKSB7
IGJvb2wqIG9rIChfX20uX01fZGF0YSk7IF9UcCogX19wIChfX2EuX01fZGF0YSk7IGZvciAoX1Rw
KiBfX3E9X19iLl9NX2RhdGE7IF9fcTxfX2IuX01fZGF0YStfX247ICsrX19xLCArK29rLCArK19f
cCkgeyB3aGlsZSAoISAqb2spIHsgKytvazsgKytfX3A7IH0gKl9fcCA8PD0gKl9fcTsgfSB9IHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4gdm9pZCBfQXJyYXlfYXVnbWVudGVkX3NoaWZ0X2xlZnQgKF9B
cnJheTxfVHA+IF9fYSwgc2l6ZV90IF9fbiwgX0FycmF5PF9UcD4gX19iLCBfQXJyYXk8Ym9vbD4g
X19tKSB7IGJvb2wqIG9rIChfX20uX01fZGF0YSk7IF9UcCogX19xIChfX2IuX01fZGF0YSk7IGZv
ciAoX1RwKiBfX3A9X19hLl9NX2RhdGE7IF9fcDxfX2EuX01fZGF0YStfX247ICsrX19wLCArK29r
LCArK19fcSkgeyB3aGlsZSAoISAqb2spIHsgKytvazsgKytfX3E7IH0gKl9fcCA8PD0gKl9fcTsg
fSB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgY2xhc3MgX0RvbT4gdm9pZCBfQXJyYXlfYXVnbWVu
dGVkX3NoaWZ0X2xlZnQgKF9BcnJheTxfVHA+IF9fYSwgX0FycmF5PGJvb2w+IF9fbSwgY29uc3Qg
X0V4cHI8X0RvbSwgX1RwPiYgX19lLCBzaXplX3QgX19uKSB7IGJvb2wqIG9rKF9fbS5fTV9kYXRh
KTsgX1RwKiBfX3AgKF9fYS5fTV9kYXRhKTsgZm9yIChzaXplX3QgX19pPTA7IF9faTxfX247ICsr
X19pLCArK29rLCArK19fcCkgeyB3aGlsZSAoISAqb2spIHsgKytvazsgKytfX3A7IH0gKl9fcCA8
PD0gX19lW19faV07IH0gfQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJh
eV9hdWdtZW50ZWRfc2hpZnRfcmlnaHQgKF9BcnJheTxfVHA+IF9fYSwgc2l6ZV90IF9fbiwgY29u
c3QgX1RwJiBfX3QpIHsgZm9yIChfVHAqIF9fcD1fX2EuX01fZGF0YTsgX19wPF9fYS5fTV9kYXRh
K19fbjsgKytfX3ApICpfX3AgPj49IF9fdDsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGlu
ZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRfc2hpZnRfcmlnaHQgKF9BcnJheTxfVHA+IF9fYSwgc2l6
ZV90IF9fbiwgX0FycmF5PF9UcD4gX19iKSB7IF9UcCogX19wID0gX19hLl9NX2RhdGE7IGZvciAo
X1RwKiBfX3E9X19iLl9NX2RhdGE7IF9fcTxfX2IuX01fZGF0YStfX247ICsrX19wLCArK19fcSkg
Kl9fcCA+Pj0gKl9fcTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+IHZvaWQg
X0FycmF5X2F1Z21lbnRlZF9zaGlmdF9yaWdodCAoX0FycmF5PF9UcD4gX19hLCBjb25zdCBfRXhw
cjxfRG9tLF9UcD4mIF9fZSwgc2l6ZV90IF9fbikgeyBfVHAqIF9fcCAoX19hLl9NX2RhdGEpOyBm
b3IgKHNpemVfdCBfX2k9MDsgX19pPF9fbjsgKytfX2ksICsrX19wKSAqX19wID4+PSBfX2VbX19p
XTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIF9BcnJheV9hdWdtZW50ZWRf
c2hpZnRfcmlnaHQgKF9BcnJheTxfVHA+IF9fYSwgc2l6ZV90IF9fbiwgc2l6ZV90IF9fcywgX0Fy
cmF5PF9UcD4gX19iKSB7IF9UcCogX19xIChfX2IuX01fZGF0YSk7IGZvciAoX1RwKiBfX3A9X19h
Ll9NX2RhdGE7IF9fcDxfX2EuX01fZGF0YStfX3MqX19uOyBfX3ArPV9fcywgKytfX3EpICpfX3Ag
Pj49ICpfX3E7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVn
bWVudGVkX3NoaWZ0X3JpZ2h0IChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxfVHA+IF9fYiwgc2l6
ZV90IF9fbiwgc2l6ZV90IF9fcykgeyBfVHAqIF9fcSAoX19iLl9NX2RhdGEpOyBmb3IgKF9UcCog
X19wPV9fYS5fTV9kYXRhOyBfX3A8X19hLl9NX2RhdGErX19uOyArK19fcCwgX19xKz1fX3MpICpf
X3AgPj49ICpfX3E7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBjbGFzcyBfRG9tPiB2b2lkIF9B
cnJheV9hdWdtZW50ZWRfc2hpZnRfcmlnaHQgKF9BcnJheTxfVHA+IF9fYSwgc2l6ZV90IF9fcywg
Y29uc3QgX0V4cHI8X0RvbSxfVHA+JiBfX2UsIHNpemVfdCBfX24pIHsgX1RwKiBfX3AgKF9fYS5f
TV9kYXRhKTsgZm9yIChzaXplX3QgX19pPTA7IF9faTxfX247ICsrX19pLCBfX3ArPV9fcykgKl9f
cCA+Pj0gX19lW19faV07IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJy
YXlfYXVnbWVudGVkX3NoaWZ0X3JpZ2h0IChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxzaXplX3Q+
IF9faSwgX0FycmF5PF9UcD4gX19iLCBzaXplX3QgX19uKSB7IF9UcCogX19xIChfX2IuX01fZGF0
YSk7IGZvciAoc2l6ZV90KiBfX2o9X19pLl9NX2RhdGE7IF9fajxfX2kuX01fZGF0YStfX247ICsr
X19qLCArK19fcSkgX19hLl9NX2RhdGFbKl9fal0gPj49ICpfX3E7IH0gdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPiBpbmxpbmUgdm9pZCBfQXJyYXlfYXVnbWVudGVkX3NoaWZ0X3JpZ2h0IChfQXJyYXk8
X1RwPiBfX2EsIHNpemVfdCBfX24sIF9BcnJheTxfVHA+IF9fYiwgX0FycmF5PHNpemVfdD4gX19p
KSB7IF9UcCogX19wIChfX2EuX01fZGF0YSk7IGZvciAoc2l6ZV90KiBfX2o9X19pLl9NX2RhdGE7
IF9fajxfX2kuX01fZGF0YStfX247ICsrX19qLCArK19fcCkgKl9fcCA+Pj0gX19iLl9NX2RhdGFb
Kl9fal07IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBjbGFzcyBfRG9tPiB2b2lkIF9BcnJheV9h
dWdtZW50ZWRfc2hpZnRfcmlnaHQgKF9BcnJheTxfVHA+IF9fYSwgX0FycmF5PHNpemVfdD4gX19p
LCBjb25zdCBfRXhwcjxfRG9tLCBfVHA+JiBfX2UsIHNpemVfdCBfX24pIHsgc2l6ZV90KiBfX2og
KF9faS5fTV9kYXRhKTsgZm9yIChzaXplX3QgX19rPTA7IF9fazxfX247ICsrX19rLCArK19faikg
X19hLl9NX2RhdGFbKl9fal0gPj49IF9fZVtfX2tdOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4g
dm9pZCBfQXJyYXlfYXVnbWVudGVkX3NoaWZ0X3JpZ2h0IChfQXJyYXk8X1RwPiBfX2EsIF9BcnJh
eTxib29sPiBfX20sIF9BcnJheTxfVHA+IF9fYiwgc2l6ZV90IF9fbikgeyBib29sKiBvayAoX19t
Ll9NX2RhdGEpOyBfVHAqIF9fcCAoX19hLl9NX2RhdGEpOyBmb3IgKF9UcCogX19xPV9fYi5fTV9k
YXRhOyBfX3E8X19iLl9NX2RhdGErX19uOyArK19fcSwgKytvaywgKytfX3ApIHsgd2hpbGUgKCEg
Km9rKSB7ICsrb2s7ICsrX19wOyB9ICpfX3AgPj49ICpfX3E7IH0gfSB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+IHZvaWQgX0FycmF5X2F1Z21lbnRlZF9zaGlmdF9yaWdodCAoX0FycmF5PF9UcD4gX19h
LCBzaXplX3QgX19uLCBfQXJyYXk8X1RwPiBfX2IsIF9BcnJheTxib29sPiBfX20pIHsgYm9vbCog
b2sgKF9fbS5fTV9kYXRhKTsgX1RwKiBfX3EgKF9fYi5fTV9kYXRhKTsgZm9yIChfVHAqIF9fcD1f
X2EuX01fZGF0YTsgX19wPF9fYS5fTV9kYXRhK19fbjsgKytfX3AsICsrb2ssICsrX19xKSB7IHdo
aWxlICghICpvaykgeyArK29rOyArK19fcTsgfSAqX19wID4+PSAqX19xOyB9IH0gdGVtcGxhdGU8
dHlwZW5hbWUgX1RwLCBjbGFzcyBfRG9tPiB2b2lkIF9BcnJheV9hdWdtZW50ZWRfc2hpZnRfcmln
aHQgKF9BcnJheTxfVHA+IF9fYSwgX0FycmF5PGJvb2w+IF9fbSwgY29uc3QgX0V4cHI8X0RvbSwg
X1RwPiYgX19lLCBzaXplX3QgX19uKSB7IGJvb2wqIG9rKF9fbS5fTV9kYXRhKTsgX1RwKiBfX3Ag
KF9fYS5fTV9kYXRhKTsgZm9yIChzaXplX3QgX19pPTA7IF9faTxfX247ICsrX19pLCArK29rLCAr
K19fcCkgeyB3aGlsZSAoISAqb2spIHsgKytvazsgKytfX3A7IH0gKl9fcCA+Pj0gX19lW19faV07
IH0gfQoKCgp9CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3ZhbGFycmF5X2FycmF5
LnRjYyIgMSAzCiMgMzUgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy92YWxhcnJheV9hcnJheS50
Y2MiIDMKbmFtZXNwYWNlIHN0ZAp7CgogICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgp2b2lk
Cl9fdmFsYXJyYXlfZmlsbCAoX0FycmF5PF9UcD4gX19hLCBzaXplX3QgX19uLCBfQXJyYXk8Ym9v
bD4gX19tLCBjb25zdCBfVHAmIF9fdCkKewogICAgX1RwKiBfX3AgPSBfX2EuX01fZGF0YTsKICAg
IGJvb2wqIF9fb2sgKF9fbS5fTV9kYXRhKTsKICAgIGZvciAoc2l6ZV90IF9faT0wOyBfX2k8X19u
OyArK19faSwgKytfX29rLCArK19fcCkgewogICAgICAgIHdoaWxlICghICpfX29rKSB7CiAgICAg
ICAgICAgICsrX19vazsKICAgICAgICAgICAgKytfX3A7CiAgICAgICAgfQogICAgICAgICpfX3Ag
PSBfX3Q7CiAgICB9Cn0KCiAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CnZvaWQKX192YWxh
cnJheV9jb3B5IChfQXJyYXk8X1RwPiBfX2EsIF9BcnJheTxib29sPiBfX20sIF9BcnJheTxfVHA+
IF9fYiwgc2l6ZV90IF9fbikKewogICAgX1RwKiBfX3AgKF9fYS5fTV9kYXRhKTsKICAgIGJvb2wq
IF9fb2sgKF9fbS5fTV9kYXRhKTsKICAgIGZvciAoX1RwKiBfX3E9X19iLl9NX2RhdGE7IF9fcTxf
X2IuX01fZGF0YStfX247ICsrX19xLCArK19fb2ssICsrX19wKSB7CiAgICAgICAgd2hpbGUgKCEg
Kl9fb2spIHsKICAgICAgICAgICAgKytfX29rOwogICAgICAgICAgICArK19fcDsKICAgICAgICB9
CiAgICAgICAgKl9fcSA9ICpfX3A7CiAgICB9Cn0KCiAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CnZvaWQKX192YWxhcnJheV9jb3B5IChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX24sIF9B
cnJheTxfVHA+IF9fYiwgX0FycmF5PGJvb2w+IF9fbSkKewogICAgX1RwKiBfX3EgKF9fYi5fTV9k
YXRhKTsKICAgIGJvb2wqIF9fb2sgKF9fbS5fTV9kYXRhKTsKICAgIGZvciAoX1RwKiBfX3A9X19h
Ll9NX2RhdGE7IF9fcDxfX2EuX01fZGF0YStfX247ICsrX19wLCArK19fb2ssICsrX19xKSB7CiAg
ICAgICAgd2hpbGUgKCEgKl9fb2spIHsKICAgICAgICAgICAgKytfX29rOwogICAgICAgICAgICAr
K19fcTsKICAgICAgICB9CiAgICAgICAgKl9fcSA9ICpfX3A7CiAgICB9Cn0KCiAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+CnZvaWQKX192YWxhcnJheV9jb3B5IChjb25z
dCBfRXhwcjxfRG9tLCBfVHA+JiBfX2UsIHNpemVfdCBfX24sIF9BcnJheTxfVHA+IF9fYSkKewog
ICAgX1RwKiBfX3AgKF9fYS5fTV9kYXRhKTsKICAgIGZvciAoc2l6ZV90IF9faT0wOyBfX2k8X19u
OyArK19faSwgKytfX3ApICpfX3AgPSBfX2VbX19pXTsKfQoKICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcCwgY2xhc3MgX0RvbT4Kdm9pZApfX3ZhbGFycmF5X2NvcHkgKGNvbnN0IF9FeHByPF9E
b20sIF9UcD4mIF9fZSwgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAgICBfQXJyYXk8X1RwPiBf
X2EsIHNpemVfdCBfX3MpCnsKICAgIF9UcCogX19wIChfX2EuX01fZGF0YSk7CiAgICBmb3IgKHNp
emVfdCBfX2k9MDsgX19pPF9fbjsgKytfX2ksIF9fcCs9X19zKSAqX19wID0gX19lW19faV07Cn0K
CiAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGNsYXNzIF9Eb20+CnZvaWQKX192YWxhcnJh
eV9jb3B5IChjb25zdCBfRXhwcjxfRG9tLCBfVHA+JiBfX2UsIHNpemVfdCBfX24sCiAgICAgICAg
ICAgICAgICAgX0FycmF5PF9UcD4gX19hLCBfQXJyYXk8c2l6ZV90PiBfX2kpCnsKICAgIHNpemVf
dCogX19qIChfX2kuX01fZGF0YSk7CiAgICBmb3IgKHNpemVfdCBfX2s9MDsgX19rPF9fbjsgKytf
X2ssICsrX19qKSBfX2EuX01fZGF0YVsqX19qXSA9IF9fZVtfX2tdOwp9CgogICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwLCBjbGFzcyBfRG9tPgp2b2lkCl9fdmFsYXJyYXlfY29weSAoY29uc3Qg
X0V4cHI8X0RvbSwgX1RwPiYgX19lLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgIF9BcnJh
eTxfVHA+IF9fYSwgX0FycmF5PGJvb2w+IF9fbSkKewogICAgYm9vbCogX19vayAoX19tLl9NX2Rh
dGEpOwogICAgX1RwKiBfX3AgKF9fYS5fTV9kYXRhKTsKICAgIGZvciAoc2l6ZV90IF9faT0wOyBf
X2k8X19uOyArK19faSwgKytfX29rLCArK19fcCkgewogICAgICAgIHdoaWxlICghICpfX29rKSB7
CiAgICAgICAgICAgICsrX19vazsKICAgICAgICAgICAgKytfX3A7CiAgICAgICAgfQogICAgICAg
ICpfX3AgPSBfX2VbX19pXTsKICAgIH0KfQoKCiAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAs
IGNsYXNzIF9Eb20+CnZvaWQKX192YWxhcnJheV9jb3B5X2NvbnN0cnVjdCAoY29uc3QgX0V4cHI8
X0RvbSwgX1RwPiYgX19lLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBf
QXJyYXk8X1RwPiBfX2EpCnsKICAgIF9UcCogX19wIChfX2EuX01fZGF0YSk7CiAgICBmb3IgKHNp
emVfdCBfX2k9MDsgX19pPF9fbjsgKytfX2ksICsrX19wKSBuZXcgKF9fcCkgX1RwKF9fZVtfX2ld
KTsKfQoKCiAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CnZvaWQKX192YWxhcnJheV9jb3B5
X2NvbnN0cnVjdCAoX0FycmF5PF9UcD4gX19hLCBfQXJyYXk8Ym9vbD4gX19tLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBfQXJyYXk8X1RwPiBfX2IsIHNpemVfdCBfX24pCnsKICAgIF9UcCog
X19wIChfX2EuX01fZGF0YSk7CiAgICBib29sKiBfX29rIChfX20uX01fZGF0YSk7CiAgICBmb3Ig
KF9UcCogX19xPV9fYi5fTV9kYXRhOyBfX3E8X19iLl9NX2RhdGErX19uOyArK19fcSwgKytfX29r
LCArK19fcCkgewogICAgICAgIHdoaWxlICghICpfX29rKSB7CiAgICAgICAgICAgICsrX19vazsK
ICAgICAgICAgICAgKytfX3A7CiAgICAgICAgfQogICAgICAgIG5ldyAoX19xKSBfVHAoKl9fcCk7
CiAgICB9Cn0KCgoKCn0KIyA1NzEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy92YWxhcnJheV9h
cnJheS5oIiAyIDMKIyA4OCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF92YWxhcnJheS5o
IiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvdmFsYXJyYXlfbWV0YS5oIiAxIDMK
IyAzNiAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3ZhbGFycmF5X21ldGEuaCIgMwoKbmFtZXNw
YWNlIHN0ZAp7CiMgNTEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy92YWxhcnJheV9tZXRhLmgi
IDMKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9UcDI+IGNsYXNzIF9Db25z
dGFudDsKCgoKCiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBjbGFzcyBfVW5GdW5CYXNlIHsKICAg
IHB1YmxpYzoKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgdmFsdWVf
dHlwZTsKICAgICAgICB0eXBlZGVmIHZhbHVlX3R5cGUgX1Z0OwoKICAgICAgICBfVW5GdW5CYXNl
IChjb25zdCBfRG9tJiBfX2UsIF9WdCBfX2YoX1Z0KSkKICAgICAgICAgICAgICAgIDogX01fZXhw
cihfX2UpLCBfTV9mdW5jKF9fZikge30KCiAgICAgICAgX1Z0IG9wZXJhdG9yW10gKHNpemVfdCBf
X2kpIGNvbnN0IHsgcmV0dXJuIF9NX2Z1bmMoX01fZXhwcltfX2ldKTsgfQogICAgICAgIHNpemVf
dCBzaXplICgpIGNvbnN0IHsgcmV0dXJuIF9NX2V4cHIuc2l6ZSgpOyB9CgogICAgcHJpdmF0ZToK
ICAgICAgICBjb25zdCBfRG9tJiBfTV9leHByOwogICAgICAgIF9WdCAoKl9NX2Z1bmMpKF9WdCk7
CiAgICB9OwoKICAgIHRlbXBsYXRlPHRlbXBsYXRlPGNsYXNzLCBjbGFzcz4gY2xhc3MgX01ldGEs
IGNsYXNzIF9Eb20+CiAgICAgICAgY2xhc3MgX1VuRnVuQ2xvczsKCiAgICB0ZW1wbGF0ZTxjbGFz
cyBfRG9tPgogICAgc3RydWN0IF9VbkZ1bkNsb3M8X0V4cHIsX0RvbT4gOiBfVW5GdW5CYXNlPF9E
b20+IHsKICAgICAgICB0eXBlZGVmIF9VbkZ1bkJhc2U8X0RvbT4gX0Jhc2U7CiAgICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBfQmFzZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwoKICAgICAgICBfVW5G
dW5DbG9zIChjb25zdCBfRG9tJiBfX2UsIHZhbHVlX3R5cGUgX19mKHZhbHVlX3R5cGUpKQogICAg
ICAgICAgICAgICAgOiBfQmFzZSAoX19lLCBfX2YpIHt9CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfVW5GdW5DbG9zPF9WYWxBcnJheSxfVHA+IDogX1VuRnVu
QmFzZTx2YWxhcnJheTxfVHA+ID4gewogICAgICAgIHR5cGVkZWYgX1VuRnVuQmFzZTx2YWxhcnJh
eTxfVHA+ID4gX0Jhc2U7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQmFzZTo6dmFsdWVfdHlw
ZSB2YWx1ZV90eXBlOwoKICAgICAgICBfVW5GdW5DbG9zIChjb25zdCB2YWxhcnJheTxfVHA+JiBf
X3YsIF9UcCBfX2YoX1RwKSkKICAgICAgICAgICAgICAgIDogX0Jhc2UgKF9fdiwgX19mKSB7fQog
ICAgfTsKCgoKCiAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTxjbGFzcywgY2xhc3M+IGNsYXNzIF9NZXRh
MSwKICAgICAgICB0ZW1wbGF0ZTxjbGFzcywgY2xhc3M+IGNsYXNzIE1ldGEyLAogICAgICAgIGNs
YXNzIF9Eb20xLCBjbGFzcyBfRG9tMj4gY2xhc3MgX0JpbkZ1bkNsb3M7CgogICAgdGVtcGxhdGU8
Y2xhc3MgX0RvbTEsIGNsYXNzIF9Eb20yPiBjbGFzcyBfQmluRnVuQmFzZSB7CiAgICBwdWJsaWM6
CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwog
ICAgICAgIHR5cGVkZWYgdmFsdWVfdHlwZSBfVnQ7CgogICAgICAgIF9CaW5GdW5CYXNlIChjb25z
dCBfRG9tMSYgX19lMSwgY29uc3QgX0RvbTImIF9fZTIsCiAgICAgICAgICAgICAgICAgICAgICBf
VnQgX19mIChfVnQsIF9WdCkpCiAgICAgICAgICAgICAgICA6IF9NX2V4cHIxIChfX2UxKSwgX01f
ZXhwcjIgKF9fZTIpLCBfTV9mdW5jIChfX2YpIHt9CgogICAgICAgIHZhbHVlX3R5cGUgb3BlcmF0
b3JbXSAoc2l6ZV90IF9faSkgY29uc3QKICAgICAgICB7IHJldHVybiBfTV9mdW5jIChfTV9leHBy
MVtfX2ldLCBfTV9leHByMltfX2ldKTsgfQogICAgICAgIHNpemVfdCBzaXplICgpIGNvbnN0IHsg
cmV0dXJuIF9NX2V4cHIxLnNpemUgKCk7IH0KCiAgICBwcml2YXRlOgogICAgICAgIGNvbnN0IF9E
b20xJiBfTV9leHByMTsKICAgICAgICBjb25zdCBfRG9tMiYgX01fZXhwcjI7CiAgICAgICAgX1Z0
ICgqX01fZnVuYykoX1Z0LCBfVnQpOwogICAgfTsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBj
bGFzcyBfQmluRnVuQmFzZTEgewogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X0RvbTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlIDsKICAgICAgICB0eXBlZGVmIHZhbHVlX3R5cGUg
X1Z0OwoKICAgICAgICBfQmluRnVuQmFzZTEgKGNvbnN0IF9WdCYgX19jLCBjb25zdCBfRG9tJiBf
X2UsIF9WdCBfX2YoX1Z0LCBfVnQpKQogICAgICAgICAgICAgICAgOiBfTV9leHByMSAoX19jKSwg
X01fZXhwcjIgKF9fZSksIF9NX2Z1bmMgKF9fZikge30KCiAgICAgICAgdmFsdWVfdHlwZSBvcGVy
YXRvcltdIChzaXplX3QgX19pKSBjb25zdAogICAgICAgIHsgcmV0dXJuIF9NX2Z1bmMgKF9NX2V4
cHIxLCBfTV9leHByMltfX2ldKTsgfQogICAgICAgIHNpemVfdCBzaXplICgpIGNvbnN0IHsgcmV0
dXJuIF9NX2V4cHIyLnNpemUgKCk7IH0KCiAgICBwcml2YXRlOgogICAgICAgIGNvbnN0IF9WdCYg
X01fZXhwcjE7CiAgICAgICAgY29uc3QgX0RvbSYgX01fZXhwcjI7CiAgICAgICAgX1Z0ICgqX01f
ZnVuYykoX1Z0LCBfVnQpOwogICAgfTsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBjbGFzcyBf
QmluRnVuQmFzZTIgewogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6
dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwogICAgICAgIHR5cGVkZWYgdmFsdWVfdHlwZSBfVnQ7Cgog
ICAgICAgIF9CaW5GdW5CYXNlMiAoY29uc3QgX0RvbSYgX19lLCBjb25zdCBfVnQmIF9fYywgX1Z0
IF9fZihfVnQsIF9WdCkpCiAgICAgICAgICAgICAgICA6IF9NX2V4cHIxIChfX2UpLCBfTV9leHBy
MiAoX19jKSwgX01fZnVuYyAoX19mKSB7fQoKICAgICAgICB2YWx1ZV90eXBlIG9wZXJhdG9yW10g
KHNpemVfdCBfX2kpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gX01fZnVuYyAoX01fZXhwcjFbX19p
XSwgX01fZXhwcjIpOyB9CiAgICAgICAgc2l6ZV90IHNpemUgKCkgY29uc3QgeyByZXR1cm4gX01f
ZXhwcjEuc2l6ZSAoKTsgfQoKICAgIHByaXZhdGU6CiAgICAgICAgY29uc3QgX0RvbSYgX01fZXhw
cjE7CiAgICAgICAgY29uc3QgX1Z0JiBfTV9leHByMjsKICAgICAgICBfVnQgKCpfTV9mdW5jKShf
VnQsIF9WdCk7CiAgICB9OwoKICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20xLCBjbGFzcyBfRG9tMj4K
ICAgIHN0cnVjdCBfQmluRnVuQ2xvczxfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4gOiBfQmluRnVu
QmFzZTxfRG9tMSxfRG9tMj4gewogICAgICAgIHR5cGVkZWYgX0JpbkZ1bkJhc2U8X0RvbTEsX0Rv
bTI+IF9CYXNlOwogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OnZhbHVlX3R5cGUgdmFs
dWVfdHlwZTsKICAgICAgICB0eXBlZGVmIHZhbHVlX3R5cGUgX1RwOwoKICAgICAgICBfQmluRnVu
Q2xvcyAoY29uc3QgX0RvbTEmIF9fZTEsIGNvbnN0IF9Eb20yJiBfX2UyLAogICAgICAgICAgICAg
ICAgICAgICBfVHAgX19mKF9UcCwgX1RwKSkKICAgICAgICAgICAgICAgIDogX0Jhc2UgKF9fZTEs
IF9fZTIsIF9fZikge30KICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3Ry
dWN0IF9CaW5GdW5DbG9zPF9WYWxBcnJheSxfVmFsQXJyYXksX1RwLF9UcD4KICAgICAgICA6IF9C
aW5GdW5CYXNlPHZhbGFycmF5PF9UcD4sIHZhbGFycmF5PF9UcD4gPiB7CiAgICAgICAgdHlwZWRl
ZiBfQmluRnVuQmFzZTx2YWxhcnJheTxfVHA+LCB2YWxhcnJheTxfVHA+ID4gX0Jhc2U7CiAgICAg
ICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKCiAgICAgICAgX0JpbkZ1bkNsb3MgKGNvbnN0IHZh
bGFycmF5PF9UcD4mIF9fdiwgY29uc3QgdmFsYXJyYXk8X1RwPiYgX193LAogICAgICAgICAgICAg
ICAgICAgICBfVHAgX19mKF9UcCwgX1RwKSkKICAgICAgICAgICAgICAgIDogX0Jhc2UgKF9fdiwg
X193LCBfX2YpIHt9CiAgICB9OwoKICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+CiAgICBzdHJ1Y3Qg
X0JpbkZ1bkNsb3M8X0V4cHIsX1ZhbEFycmF5LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlw
ZT4KICAgICAgICA6IF9CaW5GdW5CYXNlPF9Eb20sdmFsYXJyYXk8dHlwZW5hbWUgX0RvbTo6dmFs
dWVfdHlwZT4gPiB7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9U
cDsKICAgICAgICB0eXBlZGVmIF9CaW5GdW5CYXNlPF9Eb20sdmFsYXJyYXk8X1RwPiA+IF9CYXNl
OwogICAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICAgIF9CaW5GdW5DbG9zIChj
b25zdCBfRG9tJiBfX2UsIGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdiwKICAgICAgICAgICAgICAg
ICAgICAgX1RwIF9fZihfVHAsIF9UcCkpCiAgICAgICAgICAgICAgICA6IF9CYXNlIChfX2UsIF9f
diwgX19mKSB7fQogICAgfTsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgc3RydWN0IF9C
aW5GdW5DbG9zPF9WYWxBcnJheSxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlLF9Eb20+
CiAgICAgICAgOiBfQmluRnVuQmFzZTx2YWxhcnJheTx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBl
PixfRG9tPiB7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsK
ICAgICAgICB0eXBlZGVmIF9CaW5GdW5CYXNlPF9Eb20sdmFsYXJyYXk8X1RwPiA+IF9CYXNlOwog
ICAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICAgIF9CaW5GdW5DbG9zIChjb25z
dCB2YWxhcnJheTxfVHA+JiBfX3YsIGNvbnN0IF9Eb20mIF9fZSwKICAgICAgICAgICAgICAgICAg
ICAgX1RwIF9fZihfVHAsIF9UcCkpCiAgICAgICAgICAgICAgICA6IF9CYXNlIChfX3YsIF9fZSwg
X19mKSB7fQogICAgfTsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgc3RydWN0IF9CaW5G
dW5DbG9zPF9FeHByLF9Db25zdGFudCxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+CiAg
ICAgICAgOiBfQmluRnVuQmFzZTI8X0RvbT4gewogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0Rv
bTo6dmFsdWVfdHlwZSBfVHA7CiAgICAgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKICAgICAg
ICB0eXBlZGVmIF9CaW5GdW5CYXNlMjxfRG9tPiBfQmFzZTsKCiAgICAgICAgX0JpbkZ1bkNsb3Mg
KGNvbnN0IF9Eb20mIF9fZSwgY29uc3QgX1RwJiBfX3QsIF9UcCBfX2YgKF9UcCwgX1RwKSkKICAg
ICAgICAgICAgICAgIDogX0Jhc2UgKF9fZSwgX190LCBfX2YpIHt9CiAgICB9OwoKICAgIHRlbXBs
YXRlPGNsYXNzIF9Eb20+CiAgICBzdHJ1Y3QgX0JpbkZ1bkNsb3M8X0NvbnN0YW50LF9FeHByLF9E
b20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4KICAgICAgICA6IF9CaW5GdW5CYXNlMTxfRG9t
PiB7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsKICAgICAg
ICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwogICAgICAgIHR5cGVkZWYgX0JpbkZ1bkJhc2UxPF9E
b20+IF9CYXNlOwoKICAgICAgICBfQmluRnVuQ2xvcyAoY29uc3QgX1RwJiBfX3QsIGNvbnN0IF9E
b20mIF9fZSwgX1RwIF9fZiAoX1RwLCBfVHApKQogICAgICAgICAgICAgICAgOiBfQmFzZSAoX190
LCBfX2UsIF9fZikge30KICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3Ry
dWN0IF9CaW5GdW5DbG9zPF9WYWxBcnJheSxfQ29uc3RhbnQsX1RwLF9UcD4KICAgICAgICA6IF9C
aW5GdW5CYXNlMjx2YWxhcnJheTxfVHA+ID4gewogICAgICAgIHR5cGVkZWYgX0JpbkZ1bkJhc2Uy
PHZhbGFycmF5PF9UcD4gPiBfQmFzZTsKICAgICAgICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwoK
ICAgICAgICBfQmluRnVuQ2xvcyAoY29uc3QgdmFsYXJyYXk8X1RwPiYgX192LCBjb25zdCBfVHAm
IF9fdCwKICAgICAgICAgICAgICAgICAgICAgX1RwIF9fZihfVHAsIF9UcCkpCiAgICAgICAgICAg
ICAgICA6IF9CYXNlIChfX3YsIF9fdCwgX19mKSB7fQogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBzdHJ1Y3QgX0JpbkZ1bkNsb3M8X0NvbnN0YW50LF9WYWxBcnJheSxfVHAs
X1RwPgogICAgICAgIDogX0JpbkZ1bkJhc2UxPHZhbGFycmF5PF9UcD4gPiB7CiAgICAgICAgdHlw
ZWRlZiBfQmluRnVuQmFzZTE8dmFsYXJyYXk8X1RwPiA+IF9CYXNlOwogICAgICAgIHR5cGVkZWYg
X1RwIHZhbHVlX3R5cGU7CgogICAgICAgIF9CaW5GdW5DbG9zIChjb25zdCBfVHAmIF9fdCwgY29u
c3QgdmFsYXJyYXk8X1RwPiYgX192LAogICAgICAgICAgICAgICAgICAgICBfVHAgX19mIChfVHAs
IF9UcCkpCiAgICAgICAgICAgICAgICA6IF9CYXNlIChfX3QsIF9fdiwgX19mKSB7fQogICAgfTsK
CgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0RvbSwgdHlwZW5hbWUgX0FyZz4gY2xhc3MgX0Z1
bkJhc2UgewogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZSB2YWx1ZV90eXBlOwoKICAgICAgICBfRnVuQmFzZSAoY29uc3QgX0RvbSYgX19lLCB2YWx1
ZV90eXBlIF9fZihfQXJnKSkKICAgICAgICAgICAgICAgIDogX01fZXhwciAoX19lKSwgX01fZnVu
YyAoX19mKSB7fQoKICAgICAgICB2YWx1ZV90eXBlIG9wZXJhdG9yW10gKHNpemVfdCBfX2kpIGNv
bnN0CiAgICAgICAgeyByZXR1cm4gX01fZnVuYyAoX01fZXhwcltfX2ldKTsgfQogICAgICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gX01fZXhwci5zaXplICgpO30KCiAgICBwcml2YXRl
OgogICAgICAgIGNvbnN0IF9Eb20mIF9NX2V4cHI7CiAgICAgICAgdmFsdWVfdHlwZSAoKl9NX2Z1
bmMpKF9BcmcpOwogICAgfTsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgc3RydWN0IF9W
YWxGdW5DbG9zPF9FeHByLF9Eb20+CiAgICAgICAgOiBfRnVuQmFzZTxfRG9tLCB0eXBlbmFtZSBf
RG9tOjp2YWx1ZV90eXBlPiB7CiAgICAgICAgdHlwZWRlZiBfRnVuQmFzZTxfRG9tLCB0eXBlbmFt
ZSBfRG9tOjp2YWx1ZV90eXBlPiBfQmFzZTsKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIF9CYXNl
Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CiAgICAgICAgdHlwZWRlZiB2YWx1ZV90eXBlIF9UcDsK
CiAgICAgICAgX1ZhbEZ1bkNsb3MgKGNvbnN0IF9Eb20mIF9fZSwgX1RwIF9fZiAoX1RwKSkgOiBf
QmFzZSAoX19lLCBfX2YpIHt9CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg
IHN0cnVjdCBfVmFsRnVuQ2xvczxfVmFsQXJyYXksX1RwPgogICAgICAgIDogX0Z1bkJhc2U8dmFs
YXJyYXk8X1RwPiwgX1RwPiB7CiAgICAgICAgdHlwZWRlZiBfRnVuQmFzZTx2YWxhcnJheTxfVHA+
LCBfVHA+IF9CYXNlOwogICAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICAgIF9W
YWxGdW5DbG9zIChjb25zdCB2YWxhcnJheTxfVHA+JiBfX3YsIF9UcCBfX2YoX1RwKSkKICAgICAg
ICAgICAgICAgIDogX0Jhc2UgKF9fdiwgX19mKSB7fQogICAgfTsKCiAgICB0ZW1wbGF0ZTxjbGFz
cyBfRG9tPgogICAgc3RydWN0IF9SZWZGdW5DbG9zPF9FeHByLF9Eb20+IDoKICAgICAgICBfRnVu
QmFzZTxfRG9tLCBjb25zdCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlJj4gewogICAgICAgIHR5
cGVkZWYgX0Z1bkJhc2U8X0RvbSwgY29uc3QgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSY+IF9C
YXNlOwogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OnZhbHVlX3R5cGUgdmFsdWVfdHlw
ZTsKICAgICAgICB0eXBlZGVmIHZhbHVlX3R5cGUgX1RwOwoKICAgICAgICBfUmVmRnVuQ2xvcyAo
Y29uc3QgX0RvbSYgX19lLCBfVHAgX19mIChjb25zdCBfVHAmKSkKICAgICAgICAgICAgICAgIDog
X0Jhc2UgKF9fZSwgX19mKSB7fQogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBzdHJ1Y3QgX1JlZkZ1bkNsb3M8X1ZhbEFycmF5LF9UcD4KICAgICAgICA6IF9GdW5CYXNlPHZh
bGFycmF5PF9UcD4sIGNvbnN0IF9UcCY+IHsKICAgICAgICB0eXBlZGVmIF9GdW5CYXNlPHZhbGFy
cmF5PF9UcD4sIGNvbnN0IF9UcCY+IF9CYXNlOwogICAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5
cGU7CgogICAgICAgIF9SZWZGdW5DbG9zIChjb25zdCB2YWxhcnJheTxfVHA+JiBfX3YsIF9UcCBf
X2YoY29uc3QgX1RwJikpCiAgICAgICAgICAgICAgICA6IF9CYXNlIChfX3YsIF9fZikge30KICAg
IH07CgoKCgoKICAgIHRlbXBsYXRlPHRlbXBsYXRlPGNsYXNzPiBjbGFzcyBfT3BlciwgdHlwZW5h
bWUgX0FyZz4KICAgIGNsYXNzIF9VbkJhc2UgewogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYg
X09wZXI8dHlwZW5hbWUgX0FyZzo6dmFsdWVfdHlwZT4gX09wOwogICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX09wOjpyZXN1bHRfdHlwZSB2YWx1ZV90eXBlOwoKICAgICAgICBfVW5CYXNlIChjb25z
dCBfQXJnJiBfX2UpIDogX01fZXhwcihfX2UpIHt9CiAgICAgICAgdmFsdWVfdHlwZSBvcGVyYXRv
cltdIChzaXplX3QpIGNvbnN0OwogICAgICAgIHNpemVfdCBzaXplICgpIGNvbnN0IHsgcmV0dXJu
IF9NX2V4cHIuc2l6ZSAoKTsgfQoKICAgIHByaXZhdGU6CiAgICAgICAgY29uc3QgX0FyZyYgX01f
ZXhwcjsKICAgIH07CgogICAgdGVtcGxhdGU8dGVtcGxhdGU8Y2xhc3M+IGNsYXNzIF9PcGVyLCB0
eXBlbmFtZSBfQXJnPgogICAgaW5saW5lIHR5cGVuYW1lIF9VbkJhc2U8X09wZXIsIF9Bcmc+Ojp2
YWx1ZV90eXBlCiAgICBfVW5CYXNlPF9PcGVyLCBfQXJnPjo6b3BlcmF0b3JbXSAoc2l6ZV90IF9f
aSkgY29uc3QKICAgIHsgcmV0dXJuIF9PcCgpIChfTV9leHByW19faV0pOyB9CgogICAgdGVtcGxh
dGU8dGVtcGxhdGU8Y2xhc3M+IGNsYXNzIF9PcGVyLCBjbGFzcyBfRG9tPgogICAgc3RydWN0IF9V
bkNsb3M8X09wZXIsIF9FeHByLCBfRG9tPiA6IF9VbkJhc2U8X09wZXIsIF9Eb20+IHsKICAgICAg
ICB0eXBlZGVmIF9Eb20gX0FyZzsKICAgICAgICB0eXBlZGVmIF9VbkJhc2U8X09wZXIsIF9Eb20+
IF9CYXNlOwogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OnZhbHVlX3R5cGUgdmFsdWVf
dHlwZTsKCiAgICAgICAgX1VuQ2xvcyAoY29uc3QgX0FyZyYgX19lKSA6IF9CYXNlKF9fZSkge30K
ICAgIH07CgogICAgdGVtcGxhdGU8dGVtcGxhdGU8Y2xhc3M+IGNsYXNzIF9PcGVyLCB0eXBlbmFt
ZSBfVHA+CiAgICBzdHJ1Y3QgX1VuQ2xvczxfT3BlciwgX1ZhbEFycmF5LCBfVHA+IDogX1VuQmFz
ZTxfT3BlciwgdmFsYXJyYXk8X1RwPiA+IHsKICAgICAgICB0eXBlZGVmIHZhbGFycmF5PF9UcD4g
X0FyZzsKICAgICAgICB0eXBlZGVmIF9VbkJhc2U8X09wZXIsIHZhbGFycmF5PF9UcD4gPiBfQmFz
ZTsKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIF9CYXNlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7
CgogICAgICAgIF9VbkNsb3MgKGNvbnN0IF9BcmcmIF9fZSkgOiBfQmFzZShfX2UpIHt9CiAgICB9
OwoKCgoKCgogICAgdGVtcGxhdGU8dGVtcGxhdGU8Y2xhc3M+IGNsYXNzIF9PcGVyLAogICAgICAg
IHR5cGVuYW1lIF9GaXJzdEFyZywgdHlwZW5hbWUgX1NlY29uZEFyZz4KICAgIGNsYXNzIF9CaW5C
YXNlIHsKICAgIHB1YmxpYzoKICAgICAgICB0eXBlZGVmIF9PcGVyPHR5cGVuYW1lIF9GaXJzdEFy
Zzo6dmFsdWVfdHlwZT4gX09wOwogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX09wOjpyZXN1bHRf
dHlwZSB2YWx1ZV90eXBlOwoKICAgICAgICBfQmluQmFzZSAoY29uc3QgX0ZpcnN0QXJnJiBfX2Ux
LCBjb25zdCBfU2Vjb25kQXJnJiBfX2UyKQogICAgICAgICAgICAgICAgOiBfTV9leHByMSAoX19l
MSksIF9NX2V4cHIyIChfX2UyKSB7fQogICAgICAgIHZhbHVlX3R5cGUgb3BlcmF0b3JbXSAoc2l6
ZV90KSBjb25zdDsKICAgICAgICBzaXplX3Qgc2l6ZSAoKSBjb25zdCB7IHJldHVybiBfTV9leHBy
MS5zaXplICgpOyB9CgogICAgcHJpdmF0ZToKICAgICAgICBjb25zdCBfRmlyc3RBcmcmIF9NX2V4
cHIxOwogICAgICAgIGNvbnN0IF9TZWNvbmRBcmcmIF9NX2V4cHIyOwogICAgfTsKCiAgICB0ZW1w
bGF0ZTx0ZW1wbGF0ZTxjbGFzcz4gY2xhc3MgX09wZXIsCiAgICAgICAgdHlwZW5hbWUgX0ZpcnN0
QXJnLCB0eXBlbmFtZSBfU2Vjb25kQXJnPgogICAgaW5saW5lIHR5cGVuYW1lIF9CaW5CYXNlPF9P
cGVyLF9GaXJzdEFyZyxfU2Vjb25kQXJnPjo6dmFsdWVfdHlwZQogICAgX0JpbkJhc2U8X09wZXIs
X0ZpcnN0QXJnLF9TZWNvbmRBcmc+OjpvcGVyYXRvcltdIChzaXplX3QgX19pKSBjb25zdAogICAg
eyByZXR1cm4gX09wKCkgKF9NX2V4cHIxW19faV0sIF9NX2V4cHIyW19faV0pOyB9CgoKICAgIHRl
bXBsYXRlPHRlbXBsYXRlPGNsYXNzPiBjbGFzcyBfT3BlciwgY2xhc3MgX0Nsb3M+CiAgICBjbGFz
cyBfQmluQmFzZTIgewogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0Nsb3M6
OnZhbHVlX3R5cGUgX1Z0OwogICAgICAgIHR5cGVkZWYgX09wZXI8X1Z0PiBfT3A7CiAgICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfT3A6OnJlc3VsdF90eXBlIHZhbHVlX3R5cGU7CgogICAgICAgIF9C
aW5CYXNlMiAoY29uc3QgX0Nsb3MmIF9fZSwgY29uc3QgX1Z0JiBfX3QpCiAgICAgICAgICAgICAg
ICA6IF9NX2V4cHIxIChfX2UpLCBfTV9leHByMiAoX190KSB7fQogICAgICAgIHZhbHVlX3R5cGUg
b3BlcmF0b3JbXSAoc2l6ZV90KSBjb25zdDsKICAgICAgICBzaXplX3Qgc2l6ZSAoKSBjb25zdCB7
IHJldHVybiBfTV9leHByMS5zaXplICgpOyB9CgogICAgcHJpdmF0ZToKICAgICAgICBjb25zdCBf
Q2xvcyYgX01fZXhwcjE7CiAgICAgICAgY29uc3QgX1Z0JiBfTV9leHByMjsKICAgIH07CgogICAg
dGVtcGxhdGU8dGVtcGxhdGU8Y2xhc3M+IGNsYXNzIF9PcGVyLCBjbGFzcyBfQ2xvcz4KICAgIGlu
bGluZSB0eXBlbmFtZSBfQmluQmFzZTI8X09wZXIsX0Nsb3M+Ojp2YWx1ZV90eXBlCiAgICBfQmlu
QmFzZTI8X09wZXIsX0Nsb3M+OjpvcGVyYXRvcltdIChzaXplX3QgX19pKSBjb25zdAogICAgeyBy
ZXR1cm4gX09wKCkgKF9NX2V4cHIxW19faV0sIF9NX2V4cHIyKTsgfQoKCiAgICB0ZW1wbGF0ZTx0
ZW1wbGF0ZTxjbGFzcz4gY2xhc3MgX09wZXIsIGNsYXNzIF9DbG9zPgogICAgY2xhc3MgX0JpbkJh
c2UxIHsKICAgIHB1YmxpYzoKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIF9DbG9zOjp2YWx1ZV90
eXBlIF9WdDsKICAgICAgICB0eXBlZGVmIF9PcGVyPF9WdD4gX09wOwogICAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX09wOjpyZXN1bHRfdHlwZSB2YWx1ZV90eXBlOwoKICAgICAgICBfQmluQmFzZTEg
KGNvbnN0IF9WdCYgX190LCBjb25zdCBfQ2xvcyYgX19lKQogICAgICAgICAgICAgICAgOiBfTV9l
eHByMSAoX190KSwgX01fZXhwcjIgKF9fZSkge30KICAgICAgICB2YWx1ZV90eXBlIG9wZXJhdG9y
W10gKHNpemVfdCkgY29uc3Q7CiAgICAgICAgc2l6ZV90IHNpemUgKCkgY29uc3QgeyByZXR1cm4g
X01fZXhwcjIuc2l6ZSAoKTsgfQoKICAgIHByaXZhdGU6CiAgICAgICAgY29uc3QgX1Z0JiBfTV9l
eHByMTsKICAgICAgICBjb25zdCBfQ2xvcyYgX01fZXhwcjI7CiAgICB9OwoKICAgIHRlbXBsYXRl
PHRlbXBsYXRlPGNsYXNzPiBjbGFzcyBfT3BlciwgY2xhc3MgX0Nsb3M+CiAgICBpbmxpbmUgdHlw
ZW5hbWUKICAgIF9CaW5CYXNlMTxfT3BlcixfQ2xvcz46OnZhbHVlX3R5cGUKICAgIF9CaW5CYXNl
MTxfT3BlcixfQ2xvcz46OiBvcGVyYXRvcltdIChzaXplX3QgX19pKSBjb25zdAogICAgeyByZXR1
cm4gX09wKCkgKF9NX2V4cHIxLCBfTV9leHByMltfX2ldKTsgfQoKCiAgICB0ZW1wbGF0ZTx0ZW1w
bGF0ZTxjbGFzcz4gY2xhc3MgX09wZXIsIGNsYXNzIF9Eb20xLCBjbGFzcyBfRG9tMj4KICAgIHN0
cnVjdCBfQmluQ2xvczxfT3BlciwgX0V4cHIsIF9FeHByLCBfRG9tMSwgX0RvbTI+CiAgICAgICAg
OiBfQmluQmFzZTxfT3BlcixfRG9tMSxfRG9tMj4gewogICAgICAgIHR5cGVkZWYgX0JpbkJhc2U8
X09wZXIsX0RvbTEsX0RvbTI+IF9CYXNlOwogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6
OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKCiAgICAgICAgX0JpbkNsb3MoY29uc3QgX0RvbTEmIF9f
ZTEsIGNvbnN0IF9Eb20yJiBfX2UyKSA6IF9CYXNlKF9fZTEsIF9fZTIpIHt9CiAgICB9OwoKICAg
IHRlbXBsYXRlPHRlbXBsYXRlPGNsYXNzPiBjbGFzcyBfT3BlciwgdHlwZW5hbWUgX1RwPgogICAg
c3RydWN0IF9CaW5DbG9zPF9PcGVyLF9WYWxBcnJheSxfVmFsQXJyYXksX1RwLF9UcD4KICAgICAg
ICA6IF9CaW5CYXNlPF9PcGVyLHZhbGFycmF5PF9UcD4sdmFsYXJyYXk8X1RwPiA+IHsKICAgICAg
ICB0eXBlZGVmIF9CaW5CYXNlPF9PcGVyLHZhbGFycmF5PF9UcD4sdmFsYXJyYXk8X1RwPiA+IF9C
YXNlOwogICAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICAgIF9CaW5DbG9zIChj
b25zdCB2YWxhcnJheTxfVHA+JiBfX3YsIGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdykKICAgICAg
ICAgICAgICAgIDogX0Jhc2UgKF9fdiwgX193KSB7fQogICAgfTsKCiAgICB0ZW1wbGF0ZTx0ZW1w
bGF0ZTxjbGFzcz4gY2xhc3MgX09wZXIsIGNsYXNzIF9Eb20+CiAgICBzdHJ1Y3QgX0JpbkNsb3M8
X09wZXIsX0V4cHIsX1ZhbEFycmF5LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4KICAg
ICAgICA6IF9CaW5CYXNlPF9PcGVyLF9Eb20sdmFsYXJyYXk8dHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZT4gPiB7CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsK
ICAgICAgICB0eXBlZGVmIF9CaW5CYXNlPF9PcGVyLF9Eb20sdmFsYXJyYXk8X1RwPiA+IF9CYXNl
OwogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsK
CiAgICAgICAgX0JpbkNsb3MoY29uc3QgX0RvbSYgX19lMSwgY29uc3QgdmFsYXJyYXk8X1RwPiYg
X19lMikKICAgICAgICAgICAgICAgIDogX0Jhc2UgKF9fZTEsIF9fZTIpIHt9CiAgICB9OwoKICAg
IHRlbXBsYXRlPHRlbXBsYXRlPGNsYXNzPiBjbGFzcyBfT3BlciwgY2xhc3MgX0RvbT4KICAgIHN0
cnVjdCBfQmluQ2xvczxfT3BlcixfVmFsQXJyYXksX0V4cHIsdHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZSxfRG9tPgogICAgICAgIDogX0JpbkJhc2U8X09wZXIsdmFsYXJyYXk8dHlwZW5hbWUgX0Rv
bTo6dmFsdWVfdHlwZT4sX0RvbT4gewogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFs
dWVfdHlwZSBfVHA7CiAgICAgICAgdHlwZWRlZiBfQmluQmFzZTxfT3Blcix2YWxhcnJheTxfVHA+
LF9Eb20+IF9CYXNlOwogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OnZhbHVlX3R5cGUg
dmFsdWVfdHlwZTsKCiAgICAgICAgX0JpbkNsb3MgKGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fZTEs
IGNvbnN0IF9Eb20mIF9fZTIpCiAgICAgICAgICAgICAgICA6IF9CYXNlIChfX2UxLCBfX2UyKSB7
fQogICAgfTsKCiAgICB0ZW1wbGF0ZTx0ZW1wbGF0ZTxjbGFzcz4gY2xhc3MgX09wZXIsIGNsYXNz
IF9Eb20+CiAgICBzdHJ1Y3QgX0JpbkNsb3M8X09wZXIsX0V4cHIsX0NvbnN0YW50LF9Eb20sdHlw
ZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4KICAgICAgICA6IF9CaW5CYXNlMjxfT3BlcixfRG9tPiB7
CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsKICAgICAgICB0
eXBlZGVmIF9CaW5CYXNlMjxfT3BlcixfRG9tPiBfQmFzZTsKICAgICAgICB0eXBlZGVmIHR5cGVu
YW1lIF9CYXNlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CgogICAgICAgIF9CaW5DbG9zIChjb25z
dCBfRG9tJiBfX2UxLCBjb25zdCBfVHAmIF9fZTIpIDogX0Jhc2UgKF9fZTEsIF9fZTIpIHt9CiAg
ICB9OwoKICAgIHRlbXBsYXRlPHRlbXBsYXRlPGNsYXNzPiBjbGFzcyBfT3BlciwgY2xhc3MgX0Rv
bT4KICAgIHN0cnVjdCBfQmluQ2xvczxfT3BlcixfQ29uc3RhbnQsX0V4cHIsdHlwZW5hbWUgX0Rv
bTo6dmFsdWVfdHlwZSxfRG9tPgogICAgICAgIDogX0JpbkJhc2UxPF9PcGVyLF9Eb20+IHsKICAg
ICAgICB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX1RwOwogICAgICAgIHR5cGVk
ZWYgX0JpbkJhc2UxPF9PcGVyLF9Eb20+IF9CYXNlOwogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X0Jhc2U6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKCiAgICAgICAgX0JpbkNsb3MgKGNvbnN0IF9U
cCYgX19lMSwgY29uc3QgX0RvbSYgX19lMikgOiBfQmFzZSAoX19lMSwgX19lMikge30KICAgIH07
CgogICAgdGVtcGxhdGU8dGVtcGxhdGU8Y2xhc3M+IGNsYXNzIF9PcGVyLCB0eXBlbmFtZSBfVHA+
CiAgICBzdHJ1Y3QgX0JpbkNsb3M8X09wZXIsX1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPgog
ICAgICAgIDogX0JpbkJhc2UyPF9PcGVyLHZhbGFycmF5PF9UcD4gPiB7CiAgICAgICAgdHlwZWRl
ZiBfQmluQmFzZTI8X09wZXIsdmFsYXJyYXk8X1RwPiA+IF9CYXNlOwogICAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgX0Jhc2U6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKCiAgICAgICAgX0JpbkNsb3Mg
KGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdiwgY29uc3QgX1RwJiBfX3QpCiAgICAgICAgICAgICAg
ICA6IF9CYXNlIChfX3YsIF9fdCkge30KICAgIH07CgogICAgdGVtcGxhdGU8dGVtcGxhdGU8Y2xh
c3M+IGNsYXNzIF9PcGVyLCB0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX0JpbkNsb3M8X09wZXIs
X0NvbnN0YW50LF9WYWxBcnJheSxfVHAsX1RwPgogICAgICAgIDogX0JpbkJhc2UxPF9PcGVyLHZh
bGFycmF5PF9UcD4gPiB7CiAgICAgICAgdHlwZWRlZiBfQmluQmFzZTE8X09wZXIsdmFsYXJyYXk8
X1RwPiA+IF9CYXNlOwogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OnZhbHVlX3R5cGUg
dmFsdWVfdHlwZTsKCiAgICAgICAgX0JpbkNsb3MgKGNvbnN0IF9UcCYgX190LCBjb25zdCB2YWxh
cnJheTxfVHA+JiBfX3YpCiAgICAgICAgICAgICAgICA6IF9CYXNlIChfX3QsIF9fdikge30KICAg
IH07CgoKCgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Eb20+IGNsYXNzIF9TQmFzZSB7CiAgICBw
dWJsaWM6CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIHZhbHVlX3R5
cGU7CgogICAgICAgIF9TQmFzZSAoY29uc3QgX0RvbSYgX19lLCBjb25zdCBzbGljZSYgX19zKQog
ICAgICAgICAgICAgICAgOiBfTV9leHByIChfX2UpLCBfTV9zbGljZSAoX19zKSB7fQogICAgICAg
IHZhbHVlX3R5cGUgb3BlcmF0b3JbXSAoc2l6ZV90IF9faSkgY29uc3QKICAgICAgICB7IHJldHVy
biBfTV9leHByW19NX3NsaWNlLnN0YXJ0ICgpICsgX19pICogX01fc2xpY2Uuc3RyaWRlICgpXTsg
fQogICAgICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gX01fc2xpY2Uuc2l6ZSAoKTsg
fQoKICAgIHByaXZhdGU6CiAgICAgICAgY29uc3QgX0RvbSYgX01fZXhwcjsKICAgICAgICBjb25z
dCBzbGljZSYgX01fc2xpY2U7CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gY2xh
c3MgX1NCYXNlPF9BcnJheTxfVHA+ID4gewogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgX1Rw
IHZhbHVlX3R5cGU7CgogICAgICAgIF9TQmFzZSAoX0FycmF5PF9UcD4gX19hLCBjb25zdCBzbGlj
ZSYgX19zKQogICAgICAgICAgICAgICAgOiBfTV9hcnJheSAoX19hLl9NX2RhdGErX19zLnN0YXJ0
KCkpLCBfTV9zaXplIChfX3Muc2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgX01fc3RyaWRlIChf
X3Muc3RyaWRlKCkpIHt9CiAgICAgICAgdmFsdWVfdHlwZSBvcGVyYXRvcltdIChzaXplX3QgX19p
KSBjb25zdAogICAgICAgIHsgcmV0dXJuIF9NX2FycmF5Ll9NX2RhdGFbX19pICogX01fc3RyaWRl
XTsgfQogICAgICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gX01fc2l6ZTsgfQoKICAg
IHByaXZhdGU6CiAgICAgICAgY29uc3QgX0FycmF5PF9UcD4gX01fYXJyYXk7CiAgICAgICAgY29u
c3Qgc2l6ZV90IF9NX3NpemU7CiAgICAgICAgY29uc3Qgc2l6ZV90IF9NX3N0cmlkZTsKICAgIH07
CgogICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4gc3RydWN0IF9TQ2xvczxfRXhwcixfRG9tPiA6IF9T
QmFzZTxfRG9tPiB7CiAgICAgICAgdHlwZWRlZiBfU0Jhc2U8X0RvbT4gX0Jhc2U7CiAgICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBfQmFzZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwoKICAgICAgICBf
U0Nsb3MgKGNvbnN0IF9Eb20mIF9fZSwgY29uc3Qgc2xpY2UmIF9fcykgOiBfQmFzZSAoX19lLCBf
X3MpIHt9CiAgICB9OwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfU0Ns
b3M8X1ZhbEFycmF5LF9UcD4gOiBfU0Jhc2U8X0FycmF5PF9UcD4gPiB7CiAgICAgICAgdHlwZWRl
ZiBfU0Jhc2U8X0FycmF5PF9UcD4gPiBfQmFzZTsKICAgICAgICB0eXBlZGVmIF9UcCB2YWx1ZV90
eXBlOwoKICAgICAgICBfU0Nsb3MgKF9BcnJheTxfVHA+IF9fYSwgY29uc3Qgc2xpY2UmIF9fcykg
OiBfQmFzZSAoX19hLCBfX3MpIHt9CiAgICB9OwoKCgoKICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+
IGNsYXNzIF9HQmFzZSB7CiAgICBwdWJsaWM6CiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfRG9t
Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CgogICAgICAgIF9HQmFzZSAoY29uc3QgX0RvbSYgX19l
LCBjb25zdCB2YWxhcnJheTxzaXplX3Q+JiBfX2kpCiAgICAgICAgICAgICAgICA6IF9NX2V4cHIg
KF9fZSksIF9NX2luZGV4KF9faSkge30KICAgICAgICB2YWx1ZV90eXBlIG9wZXJhdG9yW10gKHNp
emVfdCBfX2kpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gX01fZXhwcltfTV9pbmRleFtfX2ldXTsg
fQogICAgICAgIHNpemVfdCBzaXplICgpIGNvbnN0IHsgcmV0dXJuIF9NX2luZGV4LnNpemUoKTsg
fQoKICAgIHByaXZhdGU6CiAgICAgICAgY29uc3QgX0RvbSYgX01fZXhwcjsKICAgICAgICBjb25z
dCB2YWxhcnJheTxzaXplX3Q+JiBfTV9pbmRleDsKICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPiBjbGFzcyBfR0Jhc2U8X0FycmF5PF9UcD4gPiB7CiAgICBwdWJsaWM6CiAgICAgICAg
dHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKCiAgICAgICAgX0dCYXNlIChfQXJyYXk8X1RwPiBfX2Es
IGNvbnN0IHZhbGFycmF5PHNpemVfdD4mIF9faSkKICAgICAgICAgICAgICAgIDogX01fYXJyYXkg
KF9fYSksIF9NX2luZGV4KF9faSkge30KICAgICAgICB2YWx1ZV90eXBlIG9wZXJhdG9yW10gKHNp
emVfdCBfX2kpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gX01fYXJyYXkuX01fZGF0YVtfTV9pbmRl
eFtfX2ldXTsgfQogICAgICAgIHNpemVfdCBzaXplICgpIGNvbnN0IHsgcmV0dXJuIF9NX2luZGV4
LnNpemUoKTsgfQoKICAgIHByaXZhdGU6CiAgICAgICAgY29uc3QgX0FycmF5PF9UcD4gX01fYXJy
YXk7CiAgICAgICAgY29uc3QgdmFsYXJyYXk8c2l6ZV90PiYgX01faW5kZXg7CiAgICB9OwoKICAg
IHRlbXBsYXRlPGNsYXNzIF9Eb20+IHN0cnVjdCBfR0Nsb3M8X0V4cHIsX0RvbT4gOiBfR0Jhc2U8
X0RvbT4gewogICAgICAgIHR5cGVkZWYgX0dCYXNlPF9Eb20+IF9CYXNlOwogICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX0Jhc2U6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKCiAgICAgICAgX0dDbG9z
IChjb25zdCBfRG9tJiBfX2UsIGNvbnN0IHZhbGFycmF5PHNpemVfdD4mIF9faSkKICAgICAgICAg
ICAgICAgIDogX0Jhc2UgKF9fZSwgX19pKSB7fQogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgICBzdHJ1Y3QgX0dDbG9zPF9WYWxBcnJheSxfVHA+IDogX0dCYXNlPF9BcnJheTxf
VHA+ID4gewogICAgICAgIHR5cGVkZWYgX0dCYXNlPF9BcnJheTxfVHA+ID4gX0Jhc2U7CiAgICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBfQmFzZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwoKICAgICAg
ICBfR0Nsb3MgKF9BcnJheTxfVHA+IF9fYSwgY29uc3QgdmFsYXJyYXk8c2l6ZV90PiYgX19pKQog
ICAgICAgICAgICAgICAgOiBfQmFzZSAoX19hLCBfX2kpIHt9CiAgICB9OwoKCgoKCiAgICB0ZW1w
bGF0ZTxjbGFzcyBfRG9tPiBjbGFzcyBfSUJhc2UgewogICAgcHVibGljOgogICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwoKICAgICAgICBfSUJhc2Ug
KGNvbnN0IF9Eb20mIF9fZSwgY29uc3QgdmFsYXJyYXk8c2l6ZV90PiYgX19pKQogICAgICAgICAg
ICAgICAgOiBfTV9leHByIChfX2UpLCBfTV9pbmRleCAoX19pKSB7fQogICAgICAgIHZhbHVlX3R5
cGUgb3BlcmF0b3JbXSAoc2l6ZV90IF9faSkgY29uc3QKICAgICAgICB7IHJldHVybiBfTV9leHBy
W19NX2luZGV4W19faV1dOyB9CiAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBf
TV9pbmRleC5zaXplKCk7IH0KCiAgICBwcml2YXRlOgogICAgICAgIGNvbnN0IF9Eb20mIF9NX2V4
cHI7CiAgICAgICAgY29uc3QgdmFsYXJyYXk8c2l6ZV90PiYgX01faW5kZXg7CiAgICB9OwoKICAg
IHRlbXBsYXRlPGNsYXNzIF9Eb20+IHN0cnVjdCBfSUNsb3M8X0V4cHIsX0RvbT4gOiBfSUJhc2U8
X0RvbT4gewogICAgICAgIHR5cGVkZWYgX0lCYXNlPF9Eb20+IF9CYXNlOwogICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX0Jhc2U6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKCiAgICAgICAgX0lDbG9z
IChjb25zdCBfRG9tJiBfX2UsIGNvbnN0IHZhbGFycmF5PHNpemVfdD4mIF9faSkKICAgICAgICAg
ICAgICAgIDogX0Jhc2UgKF9fZSwgX19pKSB7fQogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgICBzdHJ1Y3QgX0lDbG9zPF9WYWxBcnJheSxfVHA+IDogX0lCYXNlPHZhbGFycmF5
PF9UcD4gPiB7CiAgICAgICAgdHlwZWRlZiBfSUJhc2U8dmFsYXJyYXk8X1RwPiA+IF9CYXNlOwog
ICAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICAgIF9JQ2xvcyAoY29uc3QgdmFs
YXJyYXk8X1RwPiYgX19hLCBjb25zdCB2YWxhcnJheTxzaXplX3Q+JiBfX2kpCiAgICAgICAgICAg
ICAgICA6IF9CYXNlIChfX2EsIF9faSkge30KICAgIH07CgoKCgogICAgdGVtcGxhdGU8Y2xhc3Mg
X0Nsb3MsIHR5cGVuYW1lIF9UcD4gY2xhc3MgX0V4cHIgewogICAgcHVibGljOgogICAgICAgIHR5
cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICAgIF9FeHByIChjb25zdCBfQ2xvcyYpOwoKICAg
ICAgICBjb25zdCBfQ2xvcyYgb3BlcmF0b3IoKSAoKSBjb25zdDsKCiAgICAgICAgdmFsdWVfdHlw
ZSBvcGVyYXRvcltdIChzaXplX3QpIGNvbnN0OwogICAgICAgIHZhbGFycmF5PHZhbHVlX3R5cGU+
IG9wZXJhdG9yW10gKHNsaWNlKSBjb25zdDsKICAgICAgICB2YWxhcnJheTx2YWx1ZV90eXBlPiBv
cGVyYXRvcltdIChjb25zdCBnc2xpY2UmKSBjb25zdDsKICAgICAgICB2YWxhcnJheTx2YWx1ZV90
eXBlPiBvcGVyYXRvcltdIChjb25zdCB2YWxhcnJheTxib29sPiYpIGNvbnN0OwogICAgICAgIHZh
bGFycmF5PHZhbHVlX3R5cGU+IG9wZXJhdG9yW10gKGNvbnN0IHZhbGFycmF5PHNpemVfdD4mKSBj
b25zdDsKCiAgICAgICAgX0V4cHI8X1VuQ2xvczxfVW5hcnlfcGx1cyxzdGQ6Ol9FeHByLF9DbG9z
PiwgdmFsdWVfdHlwZT4KICAgICAgICBvcGVyYXRvcisgKCkgY29uc3Q7CgogICAgICAgIF9FeHBy
PF9VbkNsb3M8bmVnYXRlLHN0ZDo6X0V4cHIsX0Nsb3M+LCB2YWx1ZV90eXBlPgogICAgICAgIG9w
ZXJhdG9yLSAoKSBjb25zdDsKCiAgICAgICAgX0V4cHI8X1VuQ2xvczxfQml0d2lzZV9ub3Qsc3Rk
OjpfRXhwcixfQ2xvcz4sIHZhbHVlX3R5cGU+CiAgICAgICAgb3BlcmF0b3J+ICgpIGNvbnN0OwoK
ICAgICAgICBfRXhwcjxfVW5DbG9zPGxvZ2ljYWxfbm90LHN0ZDo6X0V4cHIsX0Nsb3M+LCBib29s
PgogICAgICAgIG9wZXJhdG9yISAoKSBjb25zdDsKCiAgICAgICAgc2l6ZV90IHNpemUgKCkgY29u
c3Q7CiAgICAgICAgdmFsdWVfdHlwZSBzdW0gKCkgY29uc3Q7CgogICAgICAgIHZhbGFycmF5PHZh
bHVlX3R5cGU+IHNoaWZ0IChpbnQpIGNvbnN0OwogICAgICAgIHZhbGFycmF5PHZhbHVlX3R5cGU+
IGNzaGlmdCAoaW50KSBjb25zdDsKCiAgICAgIHZhbHVlX3R5cGUgbWluKCkgY29uc3Q7CiAgICAg
IHZhbHVlX3R5cGUgbWF4KCkgY29uc3Q7CgogICAgICB2YWxhcnJheTx2YWx1ZV90eXBlPiBhcHBs
eSh2YWx1ZV90eXBlICgqKSAoY29uc3QgdmFsdWVfdHlwZSYpKSBjb25zdDsKICAgICAgdmFsYXJy
YXk8dmFsdWVfdHlwZT4gYXBwbHkodmFsdWVfdHlwZSAoKikgKHZhbHVlX3R5cGUpKSBjb25zdDsK
CiAgICBwcml2YXRlOgogICAgICAgIGNvbnN0IF9DbG9zIF9NX2Nsb3N1cmU7CiAgICB9OwoKICAg
IHRlbXBsYXRlPGNsYXNzIF9DbG9zLCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUKICAgIF9FeHBy
PF9DbG9zLF9UcD46Ol9FeHByIChjb25zdCBfQ2xvcyYgX19jKSA6IF9NX2Nsb3N1cmUoX19jKSB7
fQoKICAgIHRlbXBsYXRlPGNsYXNzIF9DbG9zLCB0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29u
c3QgX0Nsb3MmCiAgICBfRXhwcjxfQ2xvcyxfVHA+OjpvcGVyYXRvcigpICgpIGNvbnN0CiAgICB7
IHJldHVybiBfTV9jbG9zdXJlOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgX0Nsb3MsIHR5cGVuYW1l
IF9UcD4KICAgIGlubGluZSBfVHAKICAgIF9FeHByPF9DbG9zLF9UcD46Om9wZXJhdG9yW10gKHNp
emVfdCBfX2kpIGNvbnN0CiAgICB7IHJldHVybiBfTV9jbG9zdXJlW19faV07IH0KCiAgICB0ZW1w
bGF0ZTxjbGFzcyBfQ2xvcywgdHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHZhbGFycmF5PF9UcD4K
ICAgIF9FeHByPF9DbG9zLF9UcD46Om9wZXJhdG9yW10gKHNsaWNlIF9fcykgY29uc3QKICAgIHsg
cmV0dXJuIF9NX2Nsb3N1cmVbX19zXTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIF9DbG9zLCB0eXBl
bmFtZSBfVHA+CiAgICBpbmxpbmUgdmFsYXJyYXk8X1RwPgogICAgX0V4cHI8X0Nsb3MsX1RwPjo6
b3BlcmF0b3JbXSAoY29uc3QgZ3NsaWNlJiBfX2dzKSBjb25zdAogICAgeyByZXR1cm4gX01fY2xv
c3VyZVtfX2dzXTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIF9DbG9zLCB0eXBlbmFtZSBfVHA+CiAg
ICBpbmxpbmUgdmFsYXJyYXk8X1RwPgogICAgX0V4cHI8X0Nsb3MsX1RwPjo6b3BlcmF0b3JbXSAo
Y29uc3QgdmFsYXJyYXk8Ym9vbD4mIF9fbSkgY29uc3QKICAgIHsgcmV0dXJuIF9NX2Nsb3N1cmVb
X19tXTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIF9DbG9zLCB0eXBlbmFtZSBfVHA+CiAgICBpbmxp
bmUgdmFsYXJyYXk8X1RwPgogICAgX0V4cHI8X0Nsb3MsX1RwPjo6b3BlcmF0b3JbXSAoY29uc3Qg
dmFsYXJyYXk8c2l6ZV90PiYgX19pKSBjb25zdAogICAgeyByZXR1cm4gX01fY2xvc3VyZVtfX2ld
OyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgX0Nsb3MsIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBz
aXplX3QKICAgIF9FeHByPF9DbG9zLF9UcD46OnNpemUgKCkgY29uc3QgeyByZXR1cm4gX01fY2xv
c3VyZS5zaXplICgpOyB9CgogIHRlbXBsYXRlPGNsYXNzIF9DbG9zLCB0eXBlbmFtZSBfVHA+CiAg
aW5saW5lIHZhbGFycmF5PF9UcD4KICBfRXhwcjxfQ2xvcywgX1RwPjo6c2hpZnQoaW50IF9fbikg
Y29uc3QKICB7IHJldHVybiB2YWxhcnJheTxfVHA+KF9NX2Nsb3N1cmUpLnNoaWZ0KF9fbik7IH0K
CiAgdGVtcGxhdGU8Y2xhc3MgX0Nsb3MsIHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgdmFsYXJyYXk8
X1RwPgogIF9FeHByPF9DbG9zLCBfVHA+Ojpjc2hpZnQoaW50IF9fbikgY29uc3QKICB7IHJldHVy
biB2YWxhcnJheTxfVHA+KF9NX2Nsb3N1cmUpLmNzaGlmdChfX24pOyB9CgogIHRlbXBsYXRlPGNs
YXNzIF9DbG9zLCB0eXBlbmFtZSBfVHA+CiAgaW5saW5lIHZhbGFycmF5PF9UcD4KICBfRXhwcjxf
Q2xvcywgX1RwPjo6YXBwbHkoX1RwIF9fZihjb25zdCBfVHAmKSkgY29uc3QKICB7IHJldHVybiB2
YWxhcnJheTxfVHA+KF9NX2Nsb3N1cmUpLmFwcGx5KF9fZik7IH0KCiAgdGVtcGxhdGU8Y2xhc3Mg
X0Nsb3MsIHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgdmFsYXJyYXk8X1RwPgogIF9FeHByPF9DbG9z
LCBfVHA+OjphcHBseShfVHAgX19mKF9UcCkpIGNvbnN0CiAgeyByZXR1cm4gdmFsYXJyYXk8X1Rw
PihfTV9jbG9zdXJlKS5hcHBseShfX2YpOyB9CgoKICAgIHRlbXBsYXRlPGNsYXNzIF9DbG9zLCB0
eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgX1RwCiAgICBfRXhwcjxfQ2xvcyxfVHA+OjpzdW0gKCkg
Y29uc3QKICAgIHsKICAgICAgICBzaXplX3QgX19uID0gX01fY2xvc3VyZS5zaXplKCk7CiAgICAg
ICAgaWYgKF9fbiA9PSAwKSByZXR1cm4gX1RwKCk7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
IF9UcCBfX3MgPSBfTV9jbG9zdXJlWy0tX19uXTsKICAgICAgICAgICAgd2hpbGUgKF9fbiAhPSAw
KSBfX3MgKz0gX01fY2xvc3VyZVstLV9fbl07CiAgICAgICAgICAgIHJldHVybiBfX3M7CiAgICAg
ICAgfQogICAgfQoKICB0ZW1wbGF0ZTxjbGFzcyBfQ2xvcywgdHlwZW5hbWUgX1RwPgogIGlubGlu
ZSBfVHAKICBfRXhwcjxfQ2xvcywgX1RwPjo6bWluKCkgY29uc3QKICB7IHJldHVybiBfX3ZhbGFy
cmF5X21pbihfTV9jbG9zdXJlKTsgfQoKICB0ZW1wbGF0ZTxjbGFzcyBfQ2xvcywgdHlwZW5hbWUg
X1RwPgogIGlubGluZSBfVHAKICBfRXhwcjxfQ2xvcywgX1RwPjo6bWF4KCkgY29uc3QKICB7IHJl
dHVybiBfX3ZhbGFycmF5X21heChfTV9jbG9zdXJlKTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIF9E
b20sIHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfRXhwcjxfVW5DbG9zPGxvZ2ljYWxfbm90LF9F
eHByLF9Eb20+LCBib29sPgogICAgX0V4cHI8X0RvbSxfVHA+OjpvcGVyYXRvciEgKCkgY29uc3QK
ICAgIHsKICAgICAgICB0eXBlZGVmIF9VbkNsb3M8bG9naWNhbF9ub3Qsc3RkOjpfRXhwcixfRG9t
PiBfQ2xvc3VyZTsKICAgICAgICByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1RwPiAoX0Nsb3N1cmUo
dGhpcy0+X01fY2xvc3VyZSkpOwogICAgfQojIDc4NSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRz
L3ZhbGFycmF5X21ldGEuaCIgMwogICAgdGVtcGxhdGU8Y2xhc3MgX0RvbSwgdHlwZW5hbWUgX1Rw
PiBpbmxpbmUgX0V4cHI8X1VuQ2xvczxfVW5hcnlfcGx1cyxzdGQ6Ol9FeHByLF9Eb20+LF9UcD4g
X0V4cHI8X0RvbSxfVHA+OjpvcGVyYXRvciArICgpIGNvbnN0IHsgdHlwZWRlZiBfVW5DbG9zPF9V
bmFyeV9wbHVzLHN0ZDo6X0V4cHIsX0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3Vy
ZSxfVHA+IChfQ2xvc3VyZSAodGhpcy0+X01fY2xvc3VyZSkpOyB9CiAgICB0ZW1wbGF0ZTxjbGFz
cyBfRG9tLCB0eXBlbmFtZSBfVHA+IGlubGluZSBfRXhwcjxfVW5DbG9zPG5lZ2F0ZSxzdGQ6Ol9F
eHByLF9Eb20+LF9UcD4gX0V4cHI8X0RvbSxfVHA+OjpvcGVyYXRvciAtICgpIGNvbnN0IHsgdHlw
ZWRlZiBfVW5DbG9zPG5lZ2F0ZSxzdGQ6Ol9FeHByLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4gX0V4
cHI8X0Nsb3N1cmUsX1RwPiAoX0Nsb3N1cmUgKHRoaXMtPl9NX2Nsb3N1cmUpKTsgfQogICAgdGVt
cGxhdGU8Y2xhc3MgX0RvbSwgdHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X1VuQ2xvczxfQml0
d2lzZV9ub3Qsc3RkOjpfRXhwcixfRG9tPixfVHA+IF9FeHByPF9Eb20sX1RwPjo6b3BlcmF0b3Ig
fiAoKSBjb25zdCB7IHR5cGVkZWYgX1VuQ2xvczxfQml0d2lzZV9ub3Qsc3RkOjpfRXhwcixfRG9t
PiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9UcD4gKF9DbG9zdXJlICh0aGlzLT5f
TV9jbG9zdXJlKSk7IH0KIyA4NTMgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy92YWxhcnJheV9t
ZXRhLmgiIDMKICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20xLCBjbGFzcyBfRG9tMj4gaW5saW5lIF9F
eHByPF9CaW5DbG9zPHBsdXMsX0V4cHIsX0V4cHIsX0RvbTEsX0RvbTI+LCB0eXBlbmFtZSBwbHVz
PHR5cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBlPjo6cmVzdWx0X3R5cGU+IG9wZXJhdG9yICsgKGNv
bnN0IF9FeHByPF9Eb20xLHR5cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBlPiYgX192LCBjb25zdCBf
RXhwcjxfRG9tMix0eXBlbmFtZSBfRG9tMjo6dmFsdWVfdHlwZT4mIF9fdykgeyB0eXBlZGVmIHR5
cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBlIF9Bcmc7IHR5cGVkZWYgdHlwZW5hbWUgcGx1czxfQXJn
Pjo6cmVzdWx0X3R5cGUgX1ZhbHVlOyB0eXBlZGVmIF9CaW5DbG9zPHBsdXMsX0V4cHIsX0V4cHIs
X0RvbTEsX0RvbTI+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1ZhbHVlPiAoX0Ns
b3N1cmUgKF9fdiAoKSwgX193ICgpKSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9F
eHByPF9CaW5DbG9zPHBsdXMsX0V4cHIsX0NvbnN0YW50LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFs
dWVfdHlwZT4sIHR5cGVuYW1lIHBsdXM8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT46OnJlc3Vs
dF90eXBlPiBvcGVyYXRvciArIChjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVl
X3R5cGU+JiBfX3YsIGNvbnN0IHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUmIF9fdCkgeyB0eXBl
ZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiB0eXBlbmFtZSBwbHVz
PF9Bcmc+OjpyZXN1bHRfdHlwZSBfVmFsdWU7IHR5cGVkZWYgX0JpbkNsb3M8cGx1cyxfRXhwcixf
Q29uc3RhbnQsX0RvbSxfQXJnPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9WYWx1
ZT4gKF9DbG9zdXJlIChfX3YgKCksIF9fdCkpOyB9IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGlu
ZSBfRXhwcjxfQmluQ2xvczxwbHVzLF9Db25zdGFudCxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1
ZV90eXBlLF9Eb20+LCB0eXBlbmFtZSBwbHVzPHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+Ojpy
ZXN1bHRfdHlwZT4gb3BlcmF0b3IgKyAoY29uc3QgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSYg
X190LCBjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YpIHsg
dHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9Bcmc7IHR5cGVkZWYgdHlwZW5hbWUg
cGx1czxfQXJnPjo6cmVzdWx0X3R5cGUgX1ZhbHVlOyB0eXBlZGVmIF9CaW5DbG9zPHBsdXMsX0Nv
bnN0YW50LF9FeHByLF9BcmcsX0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxf
VmFsdWU+IChfQ2xvc3VyZSAoX190LCBfX3YgKCkpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBp
bmxpbmUgX0V4cHI8X0JpbkNsb3M8cGx1cyxfRXhwcixfVmFsQXJyYXksX0RvbSx0eXBlbmFtZSBf
RG9tOjp2YWx1ZV90eXBlPiwgdHlwZW5hbWUgcGx1czx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBl
Pjo6cmVzdWx0X3R5cGU+IG9wZXJhdG9yICsgKGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0Rv
bTo6dmFsdWVfdHlwZT4mIF9fZSwgY29uc3QgdmFsYXJyYXk8dHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX0FyZzsgdHlw
ZWRlZiB0eXBlbmFtZSBwbHVzPF9Bcmc+OjpyZXN1bHRfdHlwZSBfVmFsdWU7IHR5cGVkZWYgX0Jp
bkNsb3M8cGx1cyxfRXhwcixfVmFsQXJyYXksX0RvbSxfQXJnPiBfQ2xvc3VyZTsgcmV0dXJuIF9F
eHByPF9DbG9zdXJlLF9WYWx1ZT4gKF9DbG9zdXJlIChfX2UgKCksIF9fdikpOyB9IHRlbXBsYXRl
PGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluQ2xvczxwbHVzLF9WYWxBcnJheSxfRXhwcix0
eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlLF9Eb20+LCB0eXBlbmFtZSBwbHVzPHR5cGVuYW1lIF9E
b206OnZhbHVlX3R5cGU+OjpyZXN1bHRfdHlwZT4gb3BlcmF0b3IgKyAoY29uc3QgdmFsYXJyYXk8
dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFt
ZSBfRG9tOjp2YWx1ZV90eXBlPiYgX19lKSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZSBfVHA7IHR5cGVkZWYgdHlwZW5hbWUgcGx1czxfVHA+OjpyZXN1bHRfdHlwZSBfVmFsdWU7
IHR5cGVkZWYgX0JpbkNsb3M8cGx1cyxfVmFsQXJyYXksX0V4cHIsX1RwLF9Eb20+IF9DbG9zdXJl
OyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1ZhbHVlPiAoX0Nsb3N1cmUgKF9fdiwgX19lICgpKSk7
IH0KICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20xLCBjbGFzcyBfRG9tMj4gaW5saW5lIF9FeHByPF9C
aW5DbG9zPG1pbnVzLF9FeHByLF9FeHByLF9Eb20xLF9Eb20yPiwgdHlwZW5hbWUgbWludXM8dHlw
ZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGU+OjpyZXN1bHRfdHlwZT4gb3BlcmF0b3IgLSAoY29uc3Qg
X0V4cHI8X0RvbTEsdHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGU+JiBfX3YsIGNvbnN0IF9FeHBy
PF9Eb20yLHR5cGVuYW1lIF9Eb20yOjp2YWx1ZV90eXBlPiYgX193KSB7IHR5cGVkZWYgdHlwZW5h
bWUgX0RvbTE6OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiB0eXBlbmFtZSBtaW51czxfQXJnPjo6
cmVzdWx0X3R5cGUgX1ZhbHVlOyB0eXBlZGVmIF9CaW5DbG9zPG1pbnVzLF9FeHByLF9FeHByLF9E
b20xLF9Eb20yPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9WYWx1ZT4gKF9DbG9z
dXJlIChfX3YgKCksIF9fdyAoKSkpOyB9IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhw
cjxfQmluQ2xvczxtaW51cyxfRXhwcixfQ29uc3RhbnQsX0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1
ZV90eXBlPiwgdHlwZW5hbWUgbWludXM8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT46OnJlc3Vs
dF90eXBlPiBvcGVyYXRvciAtIChjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVl
X3R5cGU+JiBfX3YsIGNvbnN0IHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUmIF9fdCkgeyB0eXBl
ZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiB0eXBlbmFtZSBtaW51
czxfQXJnPjo6cmVzdWx0X3R5cGUgX1ZhbHVlOyB0eXBlZGVmIF9CaW5DbG9zPG1pbnVzLF9FeHBy
LF9Db25zdGFudCxfRG9tLF9Bcmc+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1Zh
bHVlPiAoX0Nsb3N1cmUgKF9fdiAoKSwgX190KSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5s
aW5lIF9FeHByPF9CaW5DbG9zPG1pbnVzLF9Db25zdGFudCxfRXhwcix0eXBlbmFtZSBfRG9tOjp2
YWx1ZV90eXBlLF9Eb20+LCB0eXBlbmFtZSBtaW51czx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBl
Pjo6cmVzdWx0X3R5cGU+IG9wZXJhdG9yIC0gKGNvbnN0IHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5
cGUmIF9fdCwgY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX192
KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIHR5cGVu
YW1lIG1pbnVzPF9Bcmc+OjpyZXN1bHRfdHlwZSBfVmFsdWU7IHR5cGVkZWYgX0JpbkNsb3M8bWlu
dXMsX0NvbnN0YW50LF9FeHByLF9BcmcsX0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xv
c3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX190LCBfX3YgKCkpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBf
RG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bWludXMsX0V4cHIsX1ZhbEFycmF5LF9Eb20sdHlw
ZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4sIHR5cGVuYW1lIG1pbnVzPHR5cGVuYW1lIF9Eb206OnZh
bHVlX3R5cGU+OjpyZXN1bHRfdHlwZT4gb3BlcmF0b3IgLSAoY29uc3QgX0V4cHI8X0RvbSx0eXBl
bmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX19lLCBjb25zdCB2YWxhcnJheTx0eXBlbmFtZSBfRG9t
Ojp2YWx1ZV90eXBlPiYgX192KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBf
QXJnOyB0eXBlZGVmIHR5cGVuYW1lIG1pbnVzPF9Bcmc+OjpyZXN1bHRfdHlwZSBfVmFsdWU7IHR5
cGVkZWYgX0JpbkNsb3M8bWludXMsX0V4cHIsX1ZhbEFycmF5LF9Eb20sX0FyZz4gX0Nsb3N1cmU7
IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX19lICgpLCBfX3YpKTsg
fSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bWludXMsX1ZhbEFy
cmF5LF9FeHByLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUsX0RvbT4sIHR5cGVuYW1lIG1pbnVz
PHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+OjpyZXN1bHRfdHlwZT4gb3BlcmF0b3IgLSAoY29u
c3QgdmFsYXJyYXk8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3QgX0V4cHI8
X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX19lKSB7IHR5cGVkZWYgdHlwZW5hbWUg
X0RvbTo6dmFsdWVfdHlwZSBfVHA7IHR5cGVkZWYgdHlwZW5hbWUgbWludXM8X1RwPjo6cmVzdWx0
X3R5cGUgX1ZhbHVlOyB0eXBlZGVmIF9CaW5DbG9zPG1pbnVzLF9WYWxBcnJheSxfRXhwcixfVHAs
X0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAo
X192LCBfX2UgKCkpKTsgfQogICAgdGVtcGxhdGU8Y2xhc3MgX0RvbTEsIGNsYXNzIF9Eb20yPiBp
bmxpbmUgX0V4cHI8X0JpbkNsb3M8bXVsdGlwbGllcyxfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4s
IHR5cGVuYW1lIG11bHRpcGxpZXM8dHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGU+OjpyZXN1bHRf
dHlwZT4gb3BlcmF0b3IgKiAoY29uc3QgX0V4cHI8X0RvbTEsdHlwZW5hbWUgX0RvbTE6OnZhbHVl
X3R5cGU+JiBfX3YsIGNvbnN0IF9FeHByPF9Eb20yLHR5cGVuYW1lIF9Eb20yOjp2YWx1ZV90eXBl
PiYgX193KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRl
ZiB0eXBlbmFtZSBtdWx0aXBsaWVzPF9Bcmc+OjpyZXN1bHRfdHlwZSBfVmFsdWU7IHR5cGVkZWYg
X0JpbkNsb3M8bXVsdGlwbGllcyxfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4gX0Nsb3N1cmU7IHJl
dHVybiBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX192ICgpLCBfX3cgKCkpKTsg
fSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bXVsdGlwbGllcyxf
RXhwcixfQ29uc3RhbnQsX0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiwgdHlwZW5hbWUg
bXVsdGlwbGllczx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPjo6cmVzdWx0X3R5cGU+IG9wZXJh
dG9yICogKGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdiwg
Y29uc3QgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSYgX190KSB7IHR5cGVkZWYgdHlwZW5hbWUg
X0RvbTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIHR5cGVuYW1lIG11bHRpcGxpZXM8X0FyZz46
OnJlc3VsdF90eXBlIF9WYWx1ZTsgdHlwZWRlZiBfQmluQ2xvczxtdWx0aXBsaWVzLF9FeHByLF9D
b25zdGFudCxfRG9tLF9Bcmc+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1ZhbHVl
PiAoX0Nsb3N1cmUgKF9fdiAoKSwgX190KSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5l
IF9FeHByPF9CaW5DbG9zPG11bHRpcGxpZXMsX0NvbnN0YW50LF9FeHByLHR5cGVuYW1lIF9Eb206
OnZhbHVlX3R5cGUsX0RvbT4sIHR5cGVuYW1lIG11bHRpcGxpZXM8dHlwZW5hbWUgX0RvbTo6dmFs
dWVfdHlwZT46OnJlc3VsdF90eXBlPiBvcGVyYXRvciAqIChjb25zdCB0eXBlbmFtZSBfRG9tOjp2
YWx1ZV90eXBlJiBfX3QsIGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlw
ZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRl
ZiB0eXBlbmFtZSBtdWx0aXBsaWVzPF9Bcmc+OjpyZXN1bHRfdHlwZSBfVmFsdWU7IHR5cGVkZWYg
X0JpbkNsb3M8bXVsdGlwbGllcyxfQ29uc3RhbnQsX0V4cHIsX0FyZyxfRG9tPiBfQ2xvc3VyZTsg
cmV0dXJuIF9FeHByPF9DbG9zdXJlLF9WYWx1ZT4gKF9DbG9zdXJlIChfX3QsIF9fdiAoKSkpOyB9
IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluQ2xvczxtdWx0aXBsaWVzLF9F
eHByLF9WYWxBcnJheSxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+LCB0eXBlbmFtZSBt
dWx0aXBsaWVzPHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+OjpyZXN1bHRfdHlwZT4gb3BlcmF0
b3IgKiAoY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX19lLCBj
b25zdCB2YWxhcnJheTx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX192KSB7IHR5cGVkZWYg
dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIHR5cGVuYW1lIG11bHRpcGxp
ZXM8X0FyZz46OnJlc3VsdF90eXBlIF9WYWx1ZTsgdHlwZWRlZiBfQmluQ2xvczxtdWx0aXBsaWVz
LF9FeHByLF9WYWxBcnJheSxfRG9tLF9Bcmc+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1
cmUsX1ZhbHVlPiAoX0Nsb3N1cmUgKF9fZSAoKSwgX192KSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0Rv
bT4gaW5saW5lIF9FeHByPF9CaW5DbG9zPG11bHRpcGxpZXMsX1ZhbEFycmF5LF9FeHByLHR5cGVu
YW1lIF9Eb206OnZhbHVlX3R5cGUsX0RvbT4sIHR5cGVuYW1lIG11bHRpcGxpZXM8dHlwZW5hbWUg
X0RvbTo6dmFsdWVfdHlwZT46OnJlc3VsdF90eXBlPiBvcGVyYXRvciAqIChjb25zdCB2YWxhcnJh
eTx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX192LCBjb25zdCBfRXhwcjxfRG9tLHR5cGVu
YW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX2UpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1
ZV90eXBlIF9UcDsgdHlwZWRlZiB0eXBlbmFtZSBtdWx0aXBsaWVzPF9UcD46OnJlc3VsdF90eXBl
IF9WYWx1ZTsgdHlwZWRlZiBfQmluQ2xvczxtdWx0aXBsaWVzLF9WYWxBcnJheSxfRXhwcixfVHAs
X0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAo
X192LCBfX2UgKCkpKTsgfQogICAgdGVtcGxhdGU8Y2xhc3MgX0RvbTEsIGNsYXNzIF9Eb20yPiBp
bmxpbmUgX0V4cHI8X0JpbkNsb3M8ZGl2aWRlcyxfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4sIHR5
cGVuYW1lIGRpdmlkZXM8dHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGU+OjpyZXN1bHRfdHlwZT4g
b3BlcmF0b3IgLyAoY29uc3QgX0V4cHI8X0RvbTEsdHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGU+
JiBfX3YsIGNvbnN0IF9FeHByPF9Eb20yLHR5cGVuYW1lIF9Eb20yOjp2YWx1ZV90eXBlPiYgX193
KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiB0eXBl
bmFtZSBkaXZpZGVzPF9Bcmc+OjpyZXN1bHRfdHlwZSBfVmFsdWU7IHR5cGVkZWYgX0JpbkNsb3M8
ZGl2aWRlcyxfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxf
Q2xvc3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX192ICgpLCBfX3cgKCkpKTsgfSB0ZW1wbGF0ZTxj
bGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8ZGl2aWRlcyxfRXhwcixfQ29uc3RhbnQs
X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiwgdHlwZW5hbWUgZGl2aWRlczx0eXBlbmFt
ZSBfRG9tOjp2YWx1ZV90eXBlPjo6cmVzdWx0X3R5cGU+IG9wZXJhdG9yIC8gKGNvbnN0IF9FeHBy
PF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3QgdHlwZW5hbWUgX0Rv
bTo6dmFsdWVfdHlwZSYgX190KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBf
QXJnOyB0eXBlZGVmIHR5cGVuYW1lIGRpdmlkZXM8X0FyZz46OnJlc3VsdF90eXBlIF9WYWx1ZTsg
dHlwZWRlZiBfQmluQ2xvczxkaXZpZGVzLF9FeHByLF9Db25zdGFudCxfRG9tLF9Bcmc+IF9DbG9z
dXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1ZhbHVlPiAoX0Nsb3N1cmUgKF9fdiAoKSwgX190
KSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5DbG9zPGRpdmlkZXMs
X0NvbnN0YW50LF9FeHByLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUsX0RvbT4sIHR5cGVuYW1l
IGRpdmlkZXM8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT46OnJlc3VsdF90eXBlPiBvcGVyYXRv
ciAvIChjb25zdCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlJiBfX3QsIGNvbnN0IF9FeHByPF9E
b20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9E
b206OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiB0eXBlbmFtZSBkaXZpZGVzPF9Bcmc+OjpyZXN1
bHRfdHlwZSBfVmFsdWU7IHR5cGVkZWYgX0JpbkNsb3M8ZGl2aWRlcyxfQ29uc3RhbnQsX0V4cHIs
X0FyZyxfRG9tPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9WYWx1ZT4gKF9DbG9z
dXJlIChfX3QsIF9fdiAoKSkpOyB9IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxf
QmluQ2xvczxkaXZpZGVzLF9FeHByLF9WYWxBcnJheSxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVl
X3R5cGU+LCB0eXBlbmFtZSBkaXZpZGVzPHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+OjpyZXN1
bHRfdHlwZT4gb3BlcmF0b3IgLyAoY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1
ZV90eXBlPiYgX19lLCBjb25zdCB2YWxhcnJheTx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYg
X192KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIHR5
cGVuYW1lIGRpdmlkZXM8X0FyZz46OnJlc3VsdF90eXBlIF9WYWx1ZTsgdHlwZWRlZiBfQmluQ2xv
czxkaXZpZGVzLF9FeHByLF9WYWxBcnJheSxfRG9tLF9Bcmc+IF9DbG9zdXJlOyByZXR1cm4gX0V4
cHI8X0Nsb3N1cmUsX1ZhbHVlPiAoX0Nsb3N1cmUgKF9fZSAoKSwgX192KSk7IH0gdGVtcGxhdGU8
Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5DbG9zPGRpdmlkZXMsX1ZhbEFycmF5LF9FeHBy
LHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUsX0RvbT4sIHR5cGVuYW1lIGRpdmlkZXM8dHlwZW5h
bWUgX0RvbTo6dmFsdWVfdHlwZT46OnJlc3VsdF90eXBlPiBvcGVyYXRvciAvIChjb25zdCB2YWxh
cnJheTx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX192LCBjb25zdCBfRXhwcjxfRG9tLHR5
cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX2UpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2
YWx1ZV90eXBlIF9UcDsgdHlwZWRlZiB0eXBlbmFtZSBkaXZpZGVzPF9UcD46OnJlc3VsdF90eXBl
IF9WYWx1ZTsgdHlwZWRlZiBfQmluQ2xvczxkaXZpZGVzLF9WYWxBcnJheSxfRXhwcixfVHAsX0Rv
bT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX192
LCBfX2UgKCkpKTsgfQogICAgdGVtcGxhdGU8Y2xhc3MgX0RvbTEsIGNsYXNzIF9Eb20yPiBpbmxp
bmUgX0V4cHI8X0JpbkNsb3M8bW9kdWx1cyxfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4sIHR5cGVu
YW1lIG1vZHVsdXM8dHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGU+OjpyZXN1bHRfdHlwZT4gb3Bl
cmF0b3IgJSAoY29uc3QgX0V4cHI8X0RvbTEsdHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGU+JiBf
X3YsIGNvbnN0IF9FeHByPF9Eb20yLHR5cGVuYW1lIF9Eb20yOjp2YWx1ZV90eXBlPiYgX193KSB7
IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiB0eXBlbmFt
ZSBtb2R1bHVzPF9Bcmc+OjpyZXN1bHRfdHlwZSBfVmFsdWU7IHR5cGVkZWYgX0JpbkNsb3M8bW9k
dWx1cyxfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xv
c3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX192ICgpLCBfX3cgKCkpKTsgfSB0ZW1wbGF0ZTxjbGFz
cyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bW9kdWx1cyxfRXhwcixfQ29uc3RhbnQsX0Rv
bSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiwgdHlwZW5hbWUgbW9kdWx1czx0eXBlbmFtZSBf
RG9tOjp2YWx1ZV90eXBlPjo6cmVzdWx0X3R5cGU+IG9wZXJhdG9yICUgKGNvbnN0IF9FeHByPF9E
b20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3QgdHlwZW5hbWUgX0RvbTo6
dmFsdWVfdHlwZSYgX190KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfQXJn
OyB0eXBlZGVmIHR5cGVuYW1lIG1vZHVsdXM8X0FyZz46OnJlc3VsdF90eXBlIF9WYWx1ZTsgdHlw
ZWRlZiBfQmluQ2xvczxtb2R1bHVzLF9FeHByLF9Db25zdGFudCxfRG9tLF9Bcmc+IF9DbG9zdXJl
OyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1ZhbHVlPiAoX0Nsb3N1cmUgKF9fdiAoKSwgX190KSk7
IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5DbG9zPG1vZHVsdXMsX0Nv
bnN0YW50LF9FeHByLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUsX0RvbT4sIHR5cGVuYW1lIG1v
ZHVsdXM8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT46OnJlc3VsdF90eXBlPiBvcGVyYXRvciAl
IChjb25zdCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlJiBfX3QsIGNvbnN0IF9FeHByPF9Eb20s
dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206
OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiB0eXBlbmFtZSBtb2R1bHVzPF9Bcmc+OjpyZXN1bHRf
dHlwZSBfVmFsdWU7IHR5cGVkZWYgX0JpbkNsb3M8bW9kdWx1cyxfQ29uc3RhbnQsX0V4cHIsX0Fy
ZyxfRG9tPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9WYWx1ZT4gKF9DbG9zdXJl
IChfX3QsIF9fdiAoKSkpOyB9IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmlu
Q2xvczxtb2R1bHVzLF9FeHByLF9WYWxBcnJheSxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5
cGU+LCB0eXBlbmFtZSBtb2R1bHVzPHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+OjpyZXN1bHRf
dHlwZT4gb3BlcmF0b3IgJSAoY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90
eXBlPiYgX19lLCBjb25zdCB2YWxhcnJheTx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX192
KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIHR5cGVu
YW1lIG1vZHVsdXM8X0FyZz46OnJlc3VsdF90eXBlIF9WYWx1ZTsgdHlwZWRlZiBfQmluQ2xvczxt
b2R1bHVzLF9FeHByLF9WYWxBcnJheSxfRG9tLF9Bcmc+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8
X0Nsb3N1cmUsX1ZhbHVlPiAoX0Nsb3N1cmUgKF9fZSAoKSwgX192KSk7IH0gdGVtcGxhdGU8Y2xh
c3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5DbG9zPG1vZHVsdXMsX1ZhbEFycmF5LF9FeHByLHR5
cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUsX0RvbT4sIHR5cGVuYW1lIG1vZHVsdXM8dHlwZW5hbWUg
X0RvbTo6dmFsdWVfdHlwZT46OnJlc3VsdF90eXBlPiBvcGVyYXRvciAlIChjb25zdCB2YWxhcnJh
eTx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX192LCBjb25zdCBfRXhwcjxfRG9tLHR5cGVu
YW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX2UpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1
ZV90eXBlIF9UcDsgdHlwZWRlZiB0eXBlbmFtZSBtb2R1bHVzPF9UcD46OnJlc3VsdF90eXBlIF9W
YWx1ZTsgdHlwZWRlZiBfQmluQ2xvczxtb2R1bHVzLF9WYWxBcnJheSxfRXhwcixfVHAsX0RvbT4g
X0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX192LCBf
X2UgKCkpKTsgfQogICAgdGVtcGxhdGU8Y2xhc3MgX0RvbTEsIGNsYXNzIF9Eb20yPiBpbmxpbmUg
X0V4cHI8X0JpbkNsb3M8X0JpdHdpc2VfeG9yLF9FeHByLF9FeHByLF9Eb20xLF9Eb20yPiwgdHlw
ZW5hbWUgX0JpdHdpc2VfeG9yPHR5cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBlPjo6cmVzdWx0X3R5
cGU+IG9wZXJhdG9yIF4gKGNvbnN0IF9FeHByPF9Eb20xLHR5cGVuYW1lIF9Eb20xOjp2YWx1ZV90
eXBlPiYgX192LCBjb25zdCBfRXhwcjxfRG9tMix0eXBlbmFtZSBfRG9tMjo6dmFsdWVfdHlwZT4m
IF9fdykgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBlIF9Bcmc7IHR5cGVkZWYg
dHlwZW5hbWUgX0JpdHdpc2VfeG9yPF9Bcmc+OjpyZXN1bHRfdHlwZSBfVmFsdWU7IHR5cGVkZWYg
X0JpbkNsb3M8X0JpdHdpc2VfeG9yLF9FeHByLF9FeHByLF9Eb20xLF9Eb20yPiBfQ2xvc3VyZTsg
cmV0dXJuIF9FeHByPF9DbG9zdXJlLF9WYWx1ZT4gKF9DbG9zdXJlIChfX3YgKCksIF9fdyAoKSkp
OyB9IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluQ2xvczxfQml0d2lzZV94
b3IsX0V4cHIsX0NvbnN0YW50LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4sIHR5cGVu
YW1lIF9CaXR3aXNlX3hvcjx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPjo6cmVzdWx0X3R5cGU+
IG9wZXJhdG9yIF4gKGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4m
IF9fdiwgY29uc3QgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSYgX190KSB7IHR5cGVkZWYgdHlw
ZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIHR5cGVuYW1lIF9CaXR3aXNlX3hv
cjxfQXJnPjo6cmVzdWx0X3R5cGUgX1ZhbHVlOyB0eXBlZGVmIF9CaW5DbG9zPF9CaXR3aXNlX3hv
cixfRXhwcixfQ29uc3RhbnQsX0RvbSxfQXJnPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9z
dXJlLF9WYWx1ZT4gKF9DbG9zdXJlIChfX3YgKCksIF9fdCkpOyB9IHRlbXBsYXRlPGNsYXNzIF9E
b20+IGlubGluZSBfRXhwcjxfQmluQ2xvczxfQml0d2lzZV94b3IsX0NvbnN0YW50LF9FeHByLHR5
cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUsX0RvbT4sIHR5cGVuYW1lIF9CaXR3aXNlX3hvcjx0eXBl
bmFtZSBfRG9tOjp2YWx1ZV90eXBlPjo6cmVzdWx0X3R5cGU+IG9wZXJhdG9yIF4gKGNvbnN0IHR5
cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUmIF9fdCwgY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBf
RG9tOjp2YWx1ZV90eXBlPiYgX192KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlw
ZSBfQXJnOyB0eXBlZGVmIHR5cGVuYW1lIF9CaXR3aXNlX3hvcjxfQXJnPjo6cmVzdWx0X3R5cGUg
X1ZhbHVlOyB0eXBlZGVmIF9CaW5DbG9zPF9CaXR3aXNlX3hvcixfQ29uc3RhbnQsX0V4cHIsX0Fy
ZyxfRG9tPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9WYWx1ZT4gKF9DbG9zdXJl
IChfX3QsIF9fdiAoKSkpOyB9IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmlu
Q2xvczxfQml0d2lzZV94b3IsX0V4cHIsX1ZhbEFycmF5LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFs
dWVfdHlwZT4sIHR5cGVuYW1lIF9CaXR3aXNlX3hvcjx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBl
Pjo6cmVzdWx0X3R5cGU+IG9wZXJhdG9yIF4gKGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0Rv
bTo6dmFsdWVfdHlwZT4mIF9fZSwgY29uc3QgdmFsYXJyYXk8dHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX0FyZzsgdHlw
ZWRlZiB0eXBlbmFtZSBfQml0d2lzZV94b3I8X0FyZz46OnJlc3VsdF90eXBlIF9WYWx1ZTsgdHlw
ZWRlZiBfQmluQ2xvczxfQml0d2lzZV94b3IsX0V4cHIsX1ZhbEFycmF5LF9Eb20sX0FyZz4gX0Ns
b3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX19lICgpLCBf
X3YpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8X0JpdHdp
c2VfeG9yLF9WYWxBcnJheSxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlLF9Eb20+LCB0
eXBlbmFtZSBfQml0d2lzZV94b3I8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT46OnJlc3VsdF90
eXBlPiBvcGVyYXRvciBeIChjb25zdCB2YWxhcnJheTx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBl
PiYgX192LCBjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX2Up
IHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsgdHlwZWRlZiB0eXBlbmFt
ZSBfQml0d2lzZV94b3I8X1RwPjo6cmVzdWx0X3R5cGUgX1ZhbHVlOyB0eXBlZGVmIF9CaW5DbG9z
PF9CaXR3aXNlX3hvcixfVmFsQXJyYXksX0V4cHIsX1RwLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4g
X0V4cHI8X0Nsb3N1cmUsX1ZhbHVlPiAoX0Nsb3N1cmUgKF9fdiwgX19lICgpKSk7IH0KICAgIHRl
bXBsYXRlPGNsYXNzIF9Eb20xLCBjbGFzcyBfRG9tMj4gaW5saW5lIF9FeHByPF9CaW5DbG9zPF9C
aXR3aXNlX2FuZCxfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4sIHR5cGVuYW1lIF9CaXR3aXNlX2Fu
ZDx0eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZT46OnJlc3VsdF90eXBlPiBvcGVyYXRvciAmIChj
b25zdCBfRXhwcjxfRG9tMSx0eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3Qg
X0V4cHI8X0RvbTIsdHlwZW5hbWUgX0RvbTI6OnZhbHVlX3R5cGU+JiBfX3cpIHsgdHlwZWRlZiB0
eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIHR5cGVuYW1lIF9CaXR3aXNl
X2FuZDxfQXJnPjo6cmVzdWx0X3R5cGUgX1ZhbHVlOyB0eXBlZGVmIF9CaW5DbG9zPF9CaXR3aXNl
X2FuZCxfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xv
c3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX192ICgpLCBfX3cgKCkpKTsgfSB0ZW1wbGF0ZTxjbGFz
cyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8X0JpdHdpc2VfYW5kLF9FeHByLF9Db25zdGFu
dCxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+LCB0eXBlbmFtZSBfQml0d2lzZV9hbmQ8
dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT46OnJlc3VsdF90eXBlPiBvcGVyYXRvciAmIChjb25z
dCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YsIGNvbnN0IHR5cGVu
YW1lIF9Eb206OnZhbHVlX3R5cGUmIF9fdCkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVl
X3R5cGUgX0FyZzsgdHlwZWRlZiB0eXBlbmFtZSBfQml0d2lzZV9hbmQ8X0FyZz46OnJlc3VsdF90
eXBlIF9WYWx1ZTsgdHlwZWRlZiBfQmluQ2xvczxfQml0d2lzZV9hbmQsX0V4cHIsX0NvbnN0YW50
LF9Eb20sX0FyZz4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xv
c3VyZSAoX192ICgpLCBfX3QpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8
X0JpbkNsb3M8X0JpdHdpc2VfYW5kLF9Db25zdGFudCxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1
ZV90eXBlLF9Eb20+LCB0eXBlbmFtZSBfQml0d2lzZV9hbmQ8dHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZT46OnJlc3VsdF90eXBlPiBvcGVyYXRvciAmIChjb25zdCB0eXBlbmFtZSBfRG9tOjp2YWx1
ZV90eXBlJiBfX3QsIGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4m
IF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiB0
eXBlbmFtZSBfQml0d2lzZV9hbmQ8X0FyZz46OnJlc3VsdF90eXBlIF9WYWx1ZTsgdHlwZWRlZiBf
QmluQ2xvczxfQml0d2lzZV9hbmQsX0NvbnN0YW50LF9FeHByLF9BcmcsX0RvbT4gX0Nsb3N1cmU7
IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX190LCBfX3YgKCkpKTsg
fSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8X0JpdHdpc2VfYW5k
LF9FeHByLF9WYWxBcnJheSxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+LCB0eXBlbmFt
ZSBfQml0d2lzZV9hbmQ8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT46OnJlc3VsdF90eXBlPiBv
cGVyYXRvciAmIChjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBf
X2UsIGNvbnN0IHZhbGFycmF5PHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YpIHsgdHlw
ZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9Bcmc7IHR5cGVkZWYgdHlwZW5hbWUgX0Jp
dHdpc2VfYW5kPF9Bcmc+OjpyZXN1bHRfdHlwZSBfVmFsdWU7IHR5cGVkZWYgX0JpbkNsb3M8X0Jp
dHdpc2VfYW5kLF9FeHByLF9WYWxBcnJheSxfRG9tLF9Bcmc+IF9DbG9zdXJlOyByZXR1cm4gX0V4
cHI8X0Nsb3N1cmUsX1ZhbHVlPiAoX0Nsb3N1cmUgKF9fZSAoKSwgX192KSk7IH0gdGVtcGxhdGU8
Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5DbG9zPF9CaXR3aXNlX2FuZCxfVmFsQXJyYXks
X0V4cHIsdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSxfRG9tPiwgdHlwZW5hbWUgX0JpdHdpc2Vf
YW5kPHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+OjpyZXN1bHRfdHlwZT4gb3BlcmF0b3IgJiAo
Y29uc3QgdmFsYXJyYXk8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3QgX0V4
cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX19lKSB7IHR5cGVkZWYgdHlwZW5h
bWUgX0RvbTo6dmFsdWVfdHlwZSBfVHA7IHR5cGVkZWYgdHlwZW5hbWUgX0JpdHdpc2VfYW5kPF9U
cD46OnJlc3VsdF90eXBlIF9WYWx1ZTsgdHlwZWRlZiBfQmluQ2xvczxfQml0d2lzZV9hbmQsX1Zh
bEFycmF5LF9FeHByLF9UcCxfRG9tPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9W
YWx1ZT4gKF9DbG9zdXJlIChfX3YsIF9fZSAoKSkpOyB9CiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9t
MSwgY2xhc3MgX0RvbTI+IGlubGluZSBfRXhwcjxfQmluQ2xvczxfQml0d2lzZV9vcixfRXhwcixf
RXhwcixfRG9tMSxfRG9tMj4sIHR5cGVuYW1lIF9CaXR3aXNlX29yPHR5cGVuYW1lIF9Eb20xOjp2
YWx1ZV90eXBlPjo6cmVzdWx0X3R5cGU+IG9wZXJhdG9yIHwgKGNvbnN0IF9FeHByPF9Eb20xLHR5
cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBlPiYgX192LCBjb25zdCBfRXhwcjxfRG9tMix0eXBlbmFt
ZSBfRG9tMjo6dmFsdWVfdHlwZT4mIF9fdykgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb20xOjp2YWx1
ZV90eXBlIF9Bcmc7IHR5cGVkZWYgdHlwZW5hbWUgX0JpdHdpc2Vfb3I8X0FyZz46OnJlc3VsdF90
eXBlIF9WYWx1ZTsgdHlwZWRlZiBfQmluQ2xvczxfQml0d2lzZV9vcixfRXhwcixfRXhwcixfRG9t
MSxfRG9tMj4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xvc3Vy
ZSAoX192ICgpLCBfX3cgKCkpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8
X0JpbkNsb3M8X0JpdHdpc2Vfb3IsX0V4cHIsX0NvbnN0YW50LF9Eb20sdHlwZW5hbWUgX0RvbTo6
dmFsdWVfdHlwZT4sIHR5cGVuYW1lIF9CaXR3aXNlX29yPHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5
cGU+OjpyZXN1bHRfdHlwZT4gb3BlcmF0b3IgfCAoY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBf
RG9tOjp2YWx1ZV90eXBlPiYgX192LCBjb25zdCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlJiBf
X3QpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9Bcmc7IHR5cGVkZWYgdHlw
ZW5hbWUgX0JpdHdpc2Vfb3I8X0FyZz46OnJlc3VsdF90eXBlIF9WYWx1ZTsgdHlwZWRlZiBfQmlu
Q2xvczxfQml0d2lzZV9vcixfRXhwcixfQ29uc3RhbnQsX0RvbSxfQXJnPiBfQ2xvc3VyZTsgcmV0
dXJuIF9FeHByPF9DbG9zdXJlLF9WYWx1ZT4gKF9DbG9zdXJlIChfX3YgKCksIF9fdCkpOyB9IHRl
bXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluQ2xvczxfQml0d2lzZV9vcixfQ29u
c3RhbnQsX0V4cHIsdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSxfRG9tPiwgdHlwZW5hbWUgX0Jp
dHdpc2Vfb3I8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT46OnJlc3VsdF90eXBlPiBvcGVyYXRv
ciB8IChjb25zdCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlJiBfX3QsIGNvbnN0IF9FeHByPF9E
b20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9E
b206OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiB0eXBlbmFtZSBfQml0d2lzZV9vcjxfQXJnPjo6
cmVzdWx0X3R5cGUgX1ZhbHVlOyB0eXBlZGVmIF9CaW5DbG9zPF9CaXR3aXNlX29yLF9Db25zdGFu
dCxfRXhwcixfQXJnLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1ZhbHVl
PiAoX0Nsb3N1cmUgKF9fdCwgX192ICgpKSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5l
IF9FeHByPF9CaW5DbG9zPF9CaXR3aXNlX29yLF9FeHByLF9WYWxBcnJheSxfRG9tLHR5cGVuYW1l
IF9Eb206OnZhbHVlX3R5cGU+LCB0eXBlbmFtZSBfQml0d2lzZV9vcjx0eXBlbmFtZSBfRG9tOjp2
YWx1ZV90eXBlPjo6cmVzdWx0X3R5cGU+IG9wZXJhdG9yIHwgKGNvbnN0IF9FeHByPF9Eb20sdHlw
ZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSwgY29uc3QgdmFsYXJyYXk8dHlwZW5hbWUgX0Rv
bTo6dmFsdWVfdHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUg
X0FyZzsgdHlwZWRlZiB0eXBlbmFtZSBfQml0d2lzZV9vcjxfQXJnPjo6cmVzdWx0X3R5cGUgX1Zh
bHVlOyB0eXBlZGVmIF9CaW5DbG9zPF9CaXR3aXNlX29yLF9FeHByLF9WYWxBcnJheSxfRG9tLF9B
cmc+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1ZhbHVlPiAoX0Nsb3N1cmUgKF9f
ZSAoKSwgX192KSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5DbG9z
PF9CaXR3aXNlX29yLF9WYWxBcnJheSxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlLF9E
b20+LCB0eXBlbmFtZSBfQml0d2lzZV9vcjx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPjo6cmVz
dWx0X3R5cGU+IG9wZXJhdG9yIHwgKGNvbnN0IHZhbGFycmF5PHR5cGVuYW1lIF9Eb206OnZhbHVl
X3R5cGU+JiBfX3YsIGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4m
IF9fZSkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIHR5
cGVuYW1lIF9CaXR3aXNlX29yPF9UcD46OnJlc3VsdF90eXBlIF9WYWx1ZTsgdHlwZWRlZiBfQmlu
Q2xvczxfQml0d2lzZV9vcixfVmFsQXJyYXksX0V4cHIsX1RwLF9Eb20+IF9DbG9zdXJlOyByZXR1
cm4gX0V4cHI8X0Nsb3N1cmUsX1ZhbHVlPiAoX0Nsb3N1cmUgKF9fdiwgX19lICgpKSk7IH0KICAg
IHRlbXBsYXRlPGNsYXNzIF9Eb20xLCBjbGFzcyBfRG9tMj4gaW5saW5lIF9FeHByPF9CaW5DbG9z
PF9TaGlmdF9sZWZ0LF9FeHByLF9FeHByLF9Eb20xLF9Eb20yPiwgdHlwZW5hbWUgX1NoaWZ0X2xl
ZnQ8dHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGU+OjpyZXN1bHRfdHlwZT4gb3BlcmF0b3IgPDwg
KGNvbnN0IF9FeHByPF9Eb20xLHR5cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBlPiYgX192LCBjb25z
dCBfRXhwcjxfRG9tMix0eXBlbmFtZSBfRG9tMjo6dmFsdWVfdHlwZT4mIF9fdykgeyB0eXBlZGVm
IHR5cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBlIF9Bcmc7IHR5cGVkZWYgdHlwZW5hbWUgX1NoaWZ0
X2xlZnQ8X0FyZz46OnJlc3VsdF90eXBlIF9WYWx1ZTsgdHlwZWRlZiBfQmluQ2xvczxfU2hpZnRf
bGVmdCxfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xv
c3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX192ICgpLCBfX3cgKCkpKTsgfSB0ZW1wbGF0ZTxjbGFz
cyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8X1NoaWZ0X2xlZnQsX0V4cHIsX0NvbnN0YW50
LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4sIHR5cGVuYW1lIF9TaGlmdF9sZWZ0PHR5
cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+OjpyZXN1bHRfdHlwZT4gb3BlcmF0b3IgPDwgKGNvbnN0
IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3QgdHlwZW5h
bWUgX0RvbTo6dmFsdWVfdHlwZSYgX190KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZSBfQXJnOyB0eXBlZGVmIHR5cGVuYW1lIF9TaGlmdF9sZWZ0PF9Bcmc+OjpyZXN1bHRfdHlw
ZSBfVmFsdWU7IHR5cGVkZWYgX0JpbkNsb3M8X1NoaWZ0X2xlZnQsX0V4cHIsX0NvbnN0YW50LF9E
b20sX0FyZz4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xvc3Vy
ZSAoX192ICgpLCBfX3QpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0Jp
bkNsb3M8X1NoaWZ0X2xlZnQsX0NvbnN0YW50LF9FeHByLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5
cGUsX0RvbT4sIHR5cGVuYW1lIF9TaGlmdF9sZWZ0PHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+
OjpyZXN1bHRfdHlwZT4gb3BlcmF0b3IgPDwgKGNvbnN0IHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5
cGUmIF9fdCwgY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX192
KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIHR5cGVu
YW1lIF9TaGlmdF9sZWZ0PF9Bcmc+OjpyZXN1bHRfdHlwZSBfVmFsdWU7IHR5cGVkZWYgX0JpbkNs
b3M8X1NoaWZ0X2xlZnQsX0NvbnN0YW50LF9FeHByLF9BcmcsX0RvbT4gX0Nsb3N1cmU7IHJldHVy
biBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX190LCBfX3YgKCkpKTsgfSB0ZW1w
bGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8X1NoaWZ0X2xlZnQsX0V4cHIs
X1ZhbEFycmF5LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4sIHR5cGVuYW1lIF9TaGlm
dF9sZWZ0PHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+OjpyZXN1bHRfdHlwZT4gb3BlcmF0b3Ig
PDwgKGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSwgY29u
c3QgdmFsYXJyYXk8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5
cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiB0eXBlbmFtZSBfU2hpZnRfbGVm
dDxfQXJnPjo6cmVzdWx0X3R5cGUgX1ZhbHVlOyB0eXBlZGVmIF9CaW5DbG9zPF9TaGlmdF9sZWZ0
LF9FeHByLF9WYWxBcnJheSxfRG9tLF9Bcmc+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1
cmUsX1ZhbHVlPiAoX0Nsb3N1cmUgKF9fZSAoKSwgX192KSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0Rv
bT4gaW5saW5lIF9FeHByPF9CaW5DbG9zPF9TaGlmdF9sZWZ0LF9WYWxBcnJheSxfRXhwcix0eXBl
bmFtZSBfRG9tOjp2YWx1ZV90eXBlLF9Eb20+LCB0eXBlbmFtZSBfU2hpZnRfbGVmdDx0eXBlbmFt
ZSBfRG9tOjp2YWx1ZV90eXBlPjo6cmVzdWx0X3R5cGU+IG9wZXJhdG9yIDw8IChjb25zdCB2YWxh
cnJheTx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX192LCBjb25zdCBfRXhwcjxfRG9tLHR5
cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX2UpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2
YWx1ZV90eXBlIF9UcDsgdHlwZWRlZiB0eXBlbmFtZSBfU2hpZnRfbGVmdDxfVHA+OjpyZXN1bHRf
dHlwZSBfVmFsdWU7IHR5cGVkZWYgX0JpbkNsb3M8X1NoaWZ0X2xlZnQsX1ZhbEFycmF5LF9FeHBy
LF9UcCxfRG9tPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9WYWx1ZT4gKF9DbG9z
dXJlIChfX3YsIF9fZSAoKSkpOyB9CiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tMSwgY2xhc3MgX0Rv
bTI+IGlubGluZSBfRXhwcjxfQmluQ2xvczxfU2hpZnRfcmlnaHQsX0V4cHIsX0V4cHIsX0RvbTEs
X0RvbTI+LCB0eXBlbmFtZSBfU2hpZnRfcmlnaHQ8dHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGU+
OjpyZXN1bHRfdHlwZT4gb3BlcmF0b3IgPj4gKGNvbnN0IF9FeHByPF9Eb20xLHR5cGVuYW1lIF9E
b20xOjp2YWx1ZV90eXBlPiYgX192LCBjb25zdCBfRXhwcjxfRG9tMix0eXBlbmFtZSBfRG9tMjo6
dmFsdWVfdHlwZT4mIF9fdykgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBlIF9B
cmc7IHR5cGVkZWYgdHlwZW5hbWUgX1NoaWZ0X3JpZ2h0PF9Bcmc+OjpyZXN1bHRfdHlwZSBfVmFs
dWU7IHR5cGVkZWYgX0JpbkNsb3M8X1NoaWZ0X3JpZ2h0LF9FeHByLF9FeHByLF9Eb20xLF9Eb20y
PiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9WYWx1ZT4gKF9DbG9zdXJlIChfX3Yg
KCksIF9fdyAoKSkpOyB9IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluQ2xv
czxfU2hpZnRfcmlnaHQsX0V4cHIsX0NvbnN0YW50LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZT4sIHR5cGVuYW1lIF9TaGlmdF9yaWdodDx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPjo6
cmVzdWx0X3R5cGU+IG9wZXJhdG9yID4+IChjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206
OnZhbHVlX3R5cGU+JiBfX3YsIGNvbnN0IHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUmIF9fdCkg
eyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiB0eXBlbmFt
ZSBfU2hpZnRfcmlnaHQ8X0FyZz46OnJlc3VsdF90eXBlIF9WYWx1ZTsgdHlwZWRlZiBfQmluQ2xv
czxfU2hpZnRfcmlnaHQsX0V4cHIsX0NvbnN0YW50LF9Eb20sX0FyZz4gX0Nsb3N1cmU7IHJldHVy
biBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xvc3VyZSAoX192ICgpLCBfX3QpKTsgfSB0ZW1w
bGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8X1NoaWZ0X3JpZ2h0LF9Db25z
dGFudCxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlLF9Eb20+LCB0eXBlbmFtZSBfU2hp
ZnRfcmlnaHQ8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT46OnJlc3VsdF90eXBlPiBvcGVyYXRv
ciA+PiAoY29uc3QgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSYgX190LCBjb25zdCBfRXhwcjxf
RG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YpIHsgdHlwZWRlZiB0eXBlbmFtZSBf
RG9tOjp2YWx1ZV90eXBlIF9Bcmc7IHR5cGVkZWYgdHlwZW5hbWUgX1NoaWZ0X3JpZ2h0PF9Bcmc+
OjpyZXN1bHRfdHlwZSBfVmFsdWU7IHR5cGVkZWYgX0JpbkNsb3M8X1NoaWZ0X3JpZ2h0LF9Db25z
dGFudCxfRXhwcixfQXJnLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1Zh
bHVlPiAoX0Nsb3N1cmUgKF9fdCwgX192ICgpKSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5s
aW5lIF9FeHByPF9CaW5DbG9zPF9TaGlmdF9yaWdodCxfRXhwcixfVmFsQXJyYXksX0RvbSx0eXBl
bmFtZSBfRG9tOjp2YWx1ZV90eXBlPiwgdHlwZW5hbWUgX1NoaWZ0X3JpZ2h0PHR5cGVuYW1lIF9E
b206OnZhbHVlX3R5cGU+OjpyZXN1bHRfdHlwZT4gb3BlcmF0b3IgPj4gKGNvbnN0IF9FeHByPF9E
b20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSwgY29uc3QgdmFsYXJyYXk8dHlwZW5h
bWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVl
X3R5cGUgX0FyZzsgdHlwZWRlZiB0eXBlbmFtZSBfU2hpZnRfcmlnaHQ8X0FyZz46OnJlc3VsdF90
eXBlIF9WYWx1ZTsgdHlwZWRlZiBfQmluQ2xvczxfU2hpZnRfcmlnaHQsX0V4cHIsX1ZhbEFycmF5
LF9Eb20sX0FyZz4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVmFsdWU+IChfQ2xv
c3VyZSAoX19lICgpLCBfX3YpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8
X0JpbkNsb3M8X1NoaWZ0X3JpZ2h0LF9WYWxBcnJheSxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1
ZV90eXBlLF9Eb20+LCB0eXBlbmFtZSBfU2hpZnRfcmlnaHQ8dHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZT46OnJlc3VsdF90eXBlPiBvcGVyYXRvciA+PiAoY29uc3QgdmFsYXJyYXk8dHlwZW5hbWUg
X0RvbTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2
YWx1ZV90eXBlPiYgX19lKSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfVHA7
IHR5cGVkZWYgdHlwZW5hbWUgX1NoaWZ0X3JpZ2h0PF9UcD46OnJlc3VsdF90eXBlIF9WYWx1ZTsg
dHlwZWRlZiBfQmluQ2xvczxfU2hpZnRfcmlnaHQsX1ZhbEFycmF5LF9FeHByLF9UcCxfRG9tPiBf
Q2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9WYWx1ZT4gKF9DbG9zdXJlIChfX3YsIF9f
ZSAoKSkpOyB9CiMgOTIxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvdmFsYXJyYXlfbWV0YS5o
IiAzCiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tMSwgY2xhc3MgX0RvbTI+IGlubGluZSBfRXhwcjxf
QmluQ2xvczxsb2dpY2FsX2FuZCxfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4sIGJvb2w+IG9wZXJh
dG9yICYmIChjb25zdCBfRXhwcjxfRG9tMSx0eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZT4mIF9f
diwgY29uc3QgX0V4cHI8X0RvbTIsdHlwZW5hbWUgX0RvbTI6OnZhbHVlX3R5cGU+JiBfX3cpIHsg
dHlwZWRlZiB0eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIF9CaW5DbG9z
PGxvZ2ljYWxfYW5kLF9FeHByLF9FeHByLF9Eb20xLF9Eb20yPiBfQ2xvc3VyZTsgcmV0dXJuIF9F
eHByPF9DbG9zdXJlLGJvb2w+IChfQ2xvc3VyZSAoX192ICgpLCBfX3cgKCkpKTsgfSB0ZW1wbGF0
ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bG9naWNhbF9hbmQsX0V4cHIsX0Nv
bnN0YW50LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4sIGJvb2w+IG9wZXJhdG9yICYm
IChjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YsIGNvbnN0
IHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUmIF9fdCkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206
OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiBfQmluQ2xvczxsb2dpY2FsX2FuZCxfRXhwcixfQ29u
c3RhbnQsX0RvbSxfQXJnPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLGJvb2w+IChf
Q2xvc3VyZSAoX192ICgpLCBfX3QpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4
cHI8X0JpbkNsb3M8bG9naWNhbF9hbmQsX0NvbnN0YW50LF9FeHByLHR5cGVuYW1lIF9Eb206OnZh
bHVlX3R5cGUsX0RvbT4sIGJvb2w+IG9wZXJhdG9yICYmIChjb25zdCB0eXBlbmFtZSBfRG9tOjp2
YWx1ZV90eXBlJiBfX3QsIGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlw
ZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRl
ZiBfQmluQ2xvczxsb2dpY2FsX2FuZCxfQ29uc3RhbnQsX0V4cHIsX0FyZyxfRG9tPiBfQ2xvc3Vy
ZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLGJvb2w+IChfQ2xvc3VyZSAoX190LCBfX3YgKCkpKTsg
fSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bG9naWNhbF9hbmQs
X0V4cHIsX1ZhbEFycmF5LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4sIGJvb2w+IG9w
ZXJhdG9yICYmIChjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBf
X2UsIGNvbnN0IHZhbGFycmF5PHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YpIHsgdHlw
ZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsgdHlwZWRlZiBfQmluQ2xvczxsb2dp
Y2FsX2FuZCxfRXhwcixfVmFsQXJyYXksX0RvbSxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8
X0Nsb3N1cmUsYm9vbD4gKF9DbG9zdXJlIChfX2UgKCksIF9fdikpOyB9IHRlbXBsYXRlPGNsYXNz
IF9Eb20+IGlubGluZSBfRXhwcjxfQmluQ2xvczxsb2dpY2FsX2FuZCxfVmFsQXJyYXksX0V4cHIs
dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSxfRG9tPiwgYm9vbD4gb3BlcmF0b3IgJiYgKGNvbnN0
IHZhbGFycmF5PHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YsIGNvbnN0IF9FeHByPF9E
b20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSkgeyB0eXBlZGVmIHR5cGVuYW1lIF9E
b206OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9CaW5DbG9zPGxvZ2ljYWxfYW5kLF9WYWxBcnJh
eSxfRXhwcixfVHAsX0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxib29sPiAo
X0Nsb3N1cmUgKF9fdiwgX19lICgpKSk7IH0KICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20xLCBjbGFz
cyBfRG9tMj4gaW5saW5lIF9FeHByPF9CaW5DbG9zPGxvZ2ljYWxfb3IsX0V4cHIsX0V4cHIsX0Rv
bTEsX0RvbTI+LCBib29sPiBvcGVyYXRvciB8fCAoY29uc3QgX0V4cHI8X0RvbTEsdHlwZW5hbWUg
X0RvbTE6OnZhbHVlX3R5cGU+JiBfX3YsIGNvbnN0IF9FeHByPF9Eb20yLHR5cGVuYW1lIF9Eb20y
Ojp2YWx1ZV90eXBlPiYgX193KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGUg
X0FyZzsgdHlwZWRlZiBfQmluQ2xvczxsb2dpY2FsX29yLF9FeHByLF9FeHByLF9Eb20xLF9Eb20y
PiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLGJvb2w+IChfQ2xvc3VyZSAoX192ICgp
LCBfX3cgKCkpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8
bG9naWNhbF9vcixfRXhwcixfQ29uc3RhbnQsX0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBl
PiwgYm9vbD4gb3BlcmF0b3IgfHwgKGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFs
dWVfdHlwZT4mIF9fdiwgY29uc3QgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSYgX190KSB7IHR5
cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIF9CaW5DbG9zPGxv
Z2ljYWxfb3IsX0V4cHIsX0NvbnN0YW50LF9Eb20sX0FyZz4gX0Nsb3N1cmU7IHJldHVybiBfRXhw
cjxfQ2xvc3VyZSxib29sPiAoX0Nsb3N1cmUgKF9fdiAoKSwgX190KSk7IH0gdGVtcGxhdGU8Y2xh
c3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5DbG9zPGxvZ2ljYWxfb3IsX0NvbnN0YW50LF9FeHBy
LHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUsX0RvbT4sIGJvb2w+IG9wZXJhdG9yIHx8IChjb25z
dCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlJiBfX3QsIGNvbnN0IF9FeHByPF9Eb20sdHlwZW5h
bWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVl
X3R5cGUgX0FyZzsgdHlwZWRlZiBfQmluQ2xvczxsb2dpY2FsX29yLF9Db25zdGFudCxfRXhwcixf
QXJnLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsYm9vbD4gKF9DbG9zdXJl
IChfX3QsIF9fdiAoKSkpOyB9IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmlu
Q2xvczxsb2dpY2FsX29yLF9FeHByLF9WYWxBcnJheSxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVl
X3R5cGU+LCBib29sPiBvcGVyYXRvciB8fCAoY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9t
Ojp2YWx1ZV90eXBlPiYgX19lLCBjb25zdCB2YWxhcnJheTx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90
eXBlPiYgX192KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfVHA7IHR5cGVk
ZWYgX0JpbkNsb3M8bG9naWNhbF9vcixfRXhwcixfVmFsQXJyYXksX0RvbSxfVHA+IF9DbG9zdXJl
OyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsYm9vbD4gKF9DbG9zdXJlIChfX2UgKCksIF9fdikpOyB9
IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluQ2xvczxsb2dpY2FsX29yLF9W
YWxBcnJheSxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlLF9Eb20+LCBib29sPiBvcGVy
YXRvciB8fCAoY29uc3QgdmFsYXJyYXk8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdiwg
Y29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX19lKSB7IHR5cGVk
ZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfVHA7IHR5cGVkZWYgX0JpbkNsb3M8bG9naWNh
bF9vcixfVmFsQXJyYXksX0V4cHIsX1RwLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Ns
b3N1cmUsYm9vbD4gKF9DbG9zdXJlIChfX3YsIF9fZSAoKSkpOyB9CiAgICB0ZW1wbGF0ZTxjbGFz
cyBfRG9tMSwgY2xhc3MgX0RvbTI+IGlubGluZSBfRXhwcjxfQmluQ2xvczxlcXVhbF90byxfRXhw
cixfRXhwcixfRG9tMSxfRG9tMj4sIGJvb2w+IG9wZXJhdG9yID09IChjb25zdCBfRXhwcjxfRG9t
MSx0eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3QgX0V4cHI8X0RvbTIsdHlw
ZW5hbWUgX0RvbTI6OnZhbHVlX3R5cGU+JiBfX3cpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tMTo6
dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIF9CaW5DbG9zPGVxdWFsX3RvLF9FeHByLF9FeHByLF9E
b20xLF9Eb20yPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLGJvb2w+IChfQ2xvc3Vy
ZSAoX192ICgpLCBfX3cgKCkpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8
X0JpbkNsb3M8ZXF1YWxfdG8sX0V4cHIsX0NvbnN0YW50LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFs
dWVfdHlwZT4sIGJvb2w+IG9wZXJhdG9yID09IChjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9E
b206OnZhbHVlX3R5cGU+JiBfX3YsIGNvbnN0IHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUmIF9f
dCkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiBfQmlu
Q2xvczxlcXVhbF90byxfRXhwcixfQ29uc3RhbnQsX0RvbSxfQXJnPiBfQ2xvc3VyZTsgcmV0dXJu
IF9FeHByPF9DbG9zdXJlLGJvb2w+IChfQ2xvc3VyZSAoX192ICgpLCBfX3QpKTsgfSB0ZW1wbGF0
ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8ZXF1YWxfdG8sX0NvbnN0YW50LF9F
eHByLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUsX0RvbT4sIGJvb2w+IG9wZXJhdG9yID09IChj
b25zdCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlJiBfX3QsIGNvbnN0IF9FeHByPF9Eb20sdHlw
ZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZh
bHVlX3R5cGUgX0FyZzsgdHlwZWRlZiBfQmluQ2xvczxlcXVhbF90byxfQ29uc3RhbnQsX0V4cHIs
X0FyZyxfRG9tPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLGJvb2w+IChfQ2xvc3Vy
ZSAoX190LCBfX3YgKCkpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0Jp
bkNsb3M8ZXF1YWxfdG8sX0V4cHIsX1ZhbEFycmF5LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZT4sIGJvb2w+IG9wZXJhdG9yID09IChjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206
OnZhbHVlX3R5cGU+JiBfX2UsIGNvbnN0IHZhbGFycmF5PHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5
cGU+JiBfX3YpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsgdHlwZWRl
ZiBfQmluQ2xvczxlcXVhbF90byxfRXhwcixfVmFsQXJyYXksX0RvbSxfVHA+IF9DbG9zdXJlOyBy
ZXR1cm4gX0V4cHI8X0Nsb3N1cmUsYm9vbD4gKF9DbG9zdXJlIChfX2UgKCksIF9fdikpOyB9IHRl
bXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluQ2xvczxlcXVhbF90byxfVmFsQXJy
YXksX0V4cHIsdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSxfRG9tPiwgYm9vbD4gb3BlcmF0b3Ig
PT0gKGNvbnN0IHZhbGFycmF5PHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YsIGNvbnN0
IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSkgeyB0eXBlZGVmIHR5
cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9CaW5DbG9zPGVxdWFsX3RvLF9W
YWxBcnJheSxfRXhwcixfVHAsX0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxi
b29sPiAoX0Nsb3N1cmUgKF9fdiwgX19lICgpKSk7IH0KICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20x
LCBjbGFzcyBfRG9tMj4gaW5saW5lIF9FeHByPF9CaW5DbG9zPG5vdF9lcXVhbF90byxfRXhwcixf
RXhwcixfRG9tMSxfRG9tMj4sIGJvb2w+IG9wZXJhdG9yICE9IChjb25zdCBfRXhwcjxfRG9tMSx0
eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3QgX0V4cHI8X0RvbTIsdHlwZW5h
bWUgX0RvbTI6OnZhbHVlX3R5cGU+JiBfX3cpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tMTo6dmFs
dWVfdHlwZSBfQXJnOyB0eXBlZGVmIF9CaW5DbG9zPG5vdF9lcXVhbF90byxfRXhwcixfRXhwcixf
RG9tMSxfRG9tMj4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxib29sPiAoX0Nsb3N1
cmUgKF9fdiAoKSwgX193ICgpKSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHBy
PF9CaW5DbG9zPG5vdF9lcXVhbF90byxfRXhwcixfQ29uc3RhbnQsX0RvbSx0eXBlbmFtZSBfRG9t
Ojp2YWx1ZV90eXBlPiwgYm9vbD4gb3BlcmF0b3IgIT0gKGNvbnN0IF9FeHByPF9Eb20sdHlwZW5h
bWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3QgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlw
ZSYgX190KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVm
IF9CaW5DbG9zPG5vdF9lcXVhbF90byxfRXhwcixfQ29uc3RhbnQsX0RvbSxfQXJnPiBfQ2xvc3Vy
ZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLGJvb2w+IChfQ2xvc3VyZSAoX192ICgpLCBfX3QpKTsg
fSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bm90X2VxdWFsX3Rv
LF9Db25zdGFudCxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlLF9Eb20+LCBib29sPiBv
cGVyYXRvciAhPSAoY29uc3QgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSYgX190LCBjb25zdCBf
RXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YpIHsgdHlwZWRlZiB0eXBl
bmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9Bcmc7IHR5cGVkZWYgX0JpbkNsb3M8bm90X2VxdWFsX3Rv
LF9Db25zdGFudCxfRXhwcixfQXJnLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1
cmUsYm9vbD4gKF9DbG9zdXJlIChfX3QsIF9fdiAoKSkpOyB9IHRlbXBsYXRlPGNsYXNzIF9Eb20+
IGlubGluZSBfRXhwcjxfQmluQ2xvczxub3RfZXF1YWxfdG8sX0V4cHIsX1ZhbEFycmF5LF9Eb20s
dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4sIGJvb2w+IG9wZXJhdG9yICE9IChjb25zdCBfRXhw
cjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX2UsIGNvbnN0IHZhbGFycmF5PHR5
cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2
YWx1ZV90eXBlIF9UcDsgdHlwZWRlZiBfQmluQ2xvczxub3RfZXF1YWxfdG8sX0V4cHIsX1ZhbEFy
cmF5LF9Eb20sX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLGJvb2w+IChfQ2xv
c3VyZSAoX19lICgpLCBfX3YpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8
X0JpbkNsb3M8bm90X2VxdWFsX3RvLF9WYWxBcnJheSxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1
ZV90eXBlLF9Eb20+LCBib29sPiBvcGVyYXRvciAhPSAoY29uc3QgdmFsYXJyYXk8dHlwZW5hbWUg
X0RvbTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2
YWx1ZV90eXBlPiYgX19lKSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfVHA7
IHR5cGVkZWYgX0JpbkNsb3M8bm90X2VxdWFsX3RvLF9WYWxBcnJheSxfRXhwcixfVHAsX0RvbT4g
X0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxib29sPiAoX0Nsb3N1cmUgKF9fdiwgX19l
ICgpKSk7IH0KICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20xLCBjbGFzcyBfRG9tMj4gaW5saW5lIF9F
eHByPF9CaW5DbG9zPGxlc3MsX0V4cHIsX0V4cHIsX0RvbTEsX0RvbTI+LCBib29sPiBvcGVyYXRv
ciA8IChjb25zdCBfRXhwcjxfRG9tMSx0eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZT4mIF9fdiwg
Y29uc3QgX0V4cHI8X0RvbTIsdHlwZW5hbWUgX0RvbTI6OnZhbHVlX3R5cGU+JiBfX3cpIHsgdHlw
ZWRlZiB0eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIF9CaW5DbG9zPGxl
c3MsX0V4cHIsX0V4cHIsX0RvbTEsX0RvbTI+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1
cmUsYm9vbD4gKF9DbG9zdXJlIChfX3YgKCksIF9fdyAoKSkpOyB9IHRlbXBsYXRlPGNsYXNzIF9E
b20+IGlubGluZSBfRXhwcjxfQmluQ2xvczxsZXNzLF9FeHByLF9Db25zdGFudCxfRG9tLHR5cGVu
YW1lIF9Eb206OnZhbHVlX3R5cGU+LCBib29sPiBvcGVyYXRvciA8IChjb25zdCBfRXhwcjxfRG9t
LHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YsIGNvbnN0IHR5cGVuYW1lIF9Eb206OnZh
bHVlX3R5cGUmIF9fdCkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX0FyZzsg
dHlwZWRlZiBfQmluQ2xvczxsZXNzLF9FeHByLF9Db25zdGFudCxfRG9tLF9Bcmc+IF9DbG9zdXJl
OyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsYm9vbD4gKF9DbG9zdXJlIChfX3YgKCksIF9fdCkpOyB9
IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluQ2xvczxsZXNzLF9Db25zdGFu
dCxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlLF9Eb20+LCBib29sPiBvcGVyYXRvciA8
IChjb25zdCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlJiBfX3QsIGNvbnN0IF9FeHByPF9Eb20s
dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206
OnZhbHVlX3R5cGUgX0FyZzsgdHlwZWRlZiBfQmluQ2xvczxsZXNzLF9Db25zdGFudCxfRXhwcixf
QXJnLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsYm9vbD4gKF9DbG9zdXJl
IChfX3QsIF9fdiAoKSkpOyB9IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmlu
Q2xvczxsZXNzLF9FeHByLF9WYWxBcnJheSxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+
LCBib29sPiBvcGVyYXRvciA8IChjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVl
X3R5cGU+JiBfX2UsIGNvbnN0IHZhbGFycmF5PHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBf
X3YpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsgdHlwZWRlZiBfQmlu
Q2xvczxsZXNzLF9FeHByLF9WYWxBcnJheSxfRG9tLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhw
cjxfQ2xvc3VyZSxib29sPiAoX0Nsb3N1cmUgKF9fZSAoKSwgX192KSk7IH0gdGVtcGxhdGU8Y2xh
c3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5DbG9zPGxlc3MsX1ZhbEFycmF5LF9FeHByLHR5cGVu
YW1lIF9Eb206OnZhbHVlX3R5cGUsX0RvbT4sIGJvb2w+IG9wZXJhdG9yIDwgKGNvbnN0IHZhbGFy
cmF5PHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YsIGNvbnN0IF9FeHByPF9Eb20sdHlw
ZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZh
bHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9CaW5DbG9zPGxlc3MsX1ZhbEFycmF5LF9FeHByLF9UcCxf
RG9tPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLGJvb2w+IChfQ2xvc3VyZSAoX192
LCBfX2UgKCkpKTsgfQogICAgdGVtcGxhdGU8Y2xhc3MgX0RvbTEsIGNsYXNzIF9Eb20yPiBpbmxp
bmUgX0V4cHI8X0JpbkNsb3M8Z3JlYXRlcixfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4sIGJvb2w+
IG9wZXJhdG9yID4gKGNvbnN0IF9FeHByPF9Eb20xLHR5cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBl
PiYgX192LCBjb25zdCBfRXhwcjxfRG9tMix0eXBlbmFtZSBfRG9tMjo6dmFsdWVfdHlwZT4mIF9f
dykgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBlIF9Bcmc7IHR5cGVkZWYgX0Jp
bkNsb3M8Z3JlYXRlcixfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4gX0Nsb3N1cmU7IHJldHVybiBf
RXhwcjxfQ2xvc3VyZSxib29sPiAoX0Nsb3N1cmUgKF9fdiAoKSwgX193ICgpKSk7IH0gdGVtcGxh
dGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5DbG9zPGdyZWF0ZXIsX0V4cHIsX0NvbnN0
YW50LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4sIGJvb2w+IG9wZXJhdG9yID4gKGNv
bnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdiwgY29uc3QgdHlw
ZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSYgX190KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFs
dWVfdHlwZSBfQXJnOyB0eXBlZGVmIF9CaW5DbG9zPGdyZWF0ZXIsX0V4cHIsX0NvbnN0YW50LF9E
b20sX0FyZz4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxib29sPiAoX0Nsb3N1cmUg
KF9fdiAoKSwgX190KSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5D
bG9zPGdyZWF0ZXIsX0NvbnN0YW50LF9FeHByLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUsX0Rv
bT4sIGJvb2w+IG9wZXJhdG9yID4gKGNvbnN0IHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUmIF9f
dCwgY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX192KSB7IHR5
cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIF9CaW5DbG9zPGdy
ZWF0ZXIsX0NvbnN0YW50LF9FeHByLF9BcmcsX0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxf
Q2xvc3VyZSxib29sPiAoX0Nsb3N1cmUgKF9fdCwgX192ICgpKSk7IH0gdGVtcGxhdGU8Y2xhc3Mg
X0RvbT4gaW5saW5lIF9FeHByPF9CaW5DbG9zPGdyZWF0ZXIsX0V4cHIsX1ZhbEFycmF5LF9Eb20s
dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4sIGJvb2w+IG9wZXJhdG9yID4gKGNvbnN0IF9FeHBy
PF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSwgY29uc3QgdmFsYXJyYXk8dHlw
ZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZh
bHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9CaW5DbG9zPGdyZWF0ZXIsX0V4cHIsX1ZhbEFycmF5LF9E
b20sX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLGJvb2w+IChfQ2xvc3VyZSAo
X19lICgpLCBfX3YpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNs
b3M8Z3JlYXRlcixfVmFsQXJyYXksX0V4cHIsdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSxfRG9t
PiwgYm9vbD4gb3BlcmF0b3IgPiAoY29uc3QgdmFsYXJyYXk8dHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZT4mIF9fdiwgY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYg
X19lKSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfVHA7IHR5cGVkZWYgX0Jp
bkNsb3M8Z3JlYXRlcixfVmFsQXJyYXksX0V4cHIsX1RwLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4g
X0V4cHI8X0Nsb3N1cmUsYm9vbD4gKF9DbG9zdXJlIChfX3YsIF9fZSAoKSkpOyB9CiAgICB0ZW1w
bGF0ZTxjbGFzcyBfRG9tMSwgY2xhc3MgX0RvbTI+IGlubGluZSBfRXhwcjxfQmluQ2xvczxsZXNz
X2VxdWFsLF9FeHByLF9FeHByLF9Eb20xLF9Eb20yPiwgYm9vbD4gb3BlcmF0b3IgPD0gKGNvbnN0
IF9FeHByPF9Eb20xLHR5cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBlPiYgX192LCBjb25zdCBfRXhw
cjxfRG9tMix0eXBlbmFtZSBfRG9tMjo6dmFsdWVfdHlwZT4mIF9fdykgeyB0eXBlZGVmIHR5cGVu
YW1lIF9Eb20xOjp2YWx1ZV90eXBlIF9Bcmc7IHR5cGVkZWYgX0JpbkNsb3M8bGVzc19lcXVhbCxf
RXhwcixfRXhwcixfRG9tMSxfRG9tMj4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxi
b29sPiAoX0Nsb3N1cmUgKF9fdiAoKSwgX193ICgpKSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4g
aW5saW5lIF9FeHByPF9CaW5DbG9zPGxlc3NfZXF1YWwsX0V4cHIsX0NvbnN0YW50LF9Eb20sdHlw
ZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4sIGJvb2w+IG9wZXJhdG9yIDw9IChjb25zdCBfRXhwcjxf
RG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YsIGNvbnN0IHR5cGVuYW1lIF9Eb206
OnZhbHVlX3R5cGUmIF9fdCkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX0Fy
ZzsgdHlwZWRlZiBfQmluQ2xvczxsZXNzX2VxdWFsLF9FeHByLF9Db25zdGFudCxfRG9tLF9Bcmc+
IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsYm9vbD4gKF9DbG9zdXJlIChfX3YgKCks
IF9fdCkpOyB9IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluQ2xvczxsZXNz
X2VxdWFsLF9Db25zdGFudCxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlLF9Eb20+LCBi
b29sPiBvcGVyYXRvciA8PSAoY29uc3QgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSYgX190LCBj
b25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX3YpIHsgdHlwZWRl
ZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9Bcmc7IHR5cGVkZWYgX0JpbkNsb3M8bGVzc19l
cXVhbCxfQ29uc3RhbnQsX0V4cHIsX0FyZyxfRG9tPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9D
bG9zdXJlLGJvb2w+IChfQ2xvc3VyZSAoX190LCBfX3YgKCkpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBf
RG9tPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bGVzc19lcXVhbCxfRXhwcixfVmFsQXJyYXksX0Rv
bSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiwgYm9vbD4gb3BlcmF0b3IgPD0gKGNvbnN0IF9F
eHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSwgY29uc3QgdmFsYXJyYXk8
dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206
OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9CaW5DbG9zPGxlc3NfZXF1YWwsX0V4cHIsX1ZhbEFy
cmF5LF9Eb20sX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLGJvb2w+IChfQ2xv
c3VyZSAoX19lICgpLCBfX3YpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8
X0JpbkNsb3M8bGVzc19lcXVhbCxfVmFsQXJyYXksX0V4cHIsdHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZSxfRG9tPiwgYm9vbD4gb3BlcmF0b3IgPD0gKGNvbnN0IHZhbGFycmF5PHR5cGVuYW1lIF9E
b206OnZhbHVlX3R5cGU+JiBfX3YsIGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFs
dWVfdHlwZT4mIF9fZSkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX1RwOyB0
eXBlZGVmIF9CaW5DbG9zPGxlc3NfZXF1YWwsX1ZhbEFycmF5LF9FeHByLF9UcCxfRG9tPiBfQ2xv
c3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLGJvb2w+IChfQ2xvc3VyZSAoX192LCBfX2UgKCkp
KTsgfQogICAgdGVtcGxhdGU8Y2xhc3MgX0RvbTEsIGNsYXNzIF9Eb20yPiBpbmxpbmUgX0V4cHI8
X0JpbkNsb3M8Z3JlYXRlcl9lcXVhbCxfRXhwcixfRXhwcixfRG9tMSxfRG9tMj4sIGJvb2w+IG9w
ZXJhdG9yID49IChjb25zdCBfRXhwcjxfRG9tMSx0eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZT4m
IF9fdiwgY29uc3QgX0V4cHI8X0RvbTIsdHlwZW5hbWUgX0RvbTI6OnZhbHVlX3R5cGU+JiBfX3cp
IHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZSBfQXJnOyB0eXBlZGVmIF9CaW5D
bG9zPGdyZWF0ZXJfZXF1YWwsX0V4cHIsX0V4cHIsX0RvbTEsX0RvbTI+IF9DbG9zdXJlOyByZXR1
cm4gX0V4cHI8X0Nsb3N1cmUsYm9vbD4gKF9DbG9zdXJlIChfX3YgKCksIF9fdyAoKSkpOyB9IHRl
bXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluQ2xvczxncmVhdGVyX2VxdWFsLF9F
eHByLF9Db25zdGFudCxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+LCBib29sPiBvcGVy
YXRvciA+PSAoY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX192
LCBjb25zdCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlJiBfX3QpIHsgdHlwZWRlZiB0eXBlbmFt
ZSBfRG9tOjp2YWx1ZV90eXBlIF9Bcmc7IHR5cGVkZWYgX0JpbkNsb3M8Z3JlYXRlcl9lcXVhbCxf
RXhwcixfQ29uc3RhbnQsX0RvbSxfQXJnPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJl
LGJvb2w+IChfQ2xvc3VyZSAoX192ICgpLCBfX3QpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBp
bmxpbmUgX0V4cHI8X0JpbkNsb3M8Z3JlYXRlcl9lcXVhbCxfQ29uc3RhbnQsX0V4cHIsdHlwZW5h
bWUgX0RvbTo6dmFsdWVfdHlwZSxfRG9tPiwgYm9vbD4gb3BlcmF0b3IgPj0gKGNvbnN0IHR5cGVu
YW1lIF9Eb206OnZhbHVlX3R5cGUmIF9fdCwgY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9t
Ojp2YWx1ZV90eXBlPiYgX192KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBf
QXJnOyB0eXBlZGVmIF9CaW5DbG9zPGdyZWF0ZXJfZXF1YWwsX0NvbnN0YW50LF9FeHByLF9Bcmcs
X0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxib29sPiAoX0Nsb3N1cmUgKF9f
dCwgX192ICgpKSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5DbG9z
PGdyZWF0ZXJfZXF1YWwsX0V4cHIsX1ZhbEFycmF5LF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZT4sIGJvb2w+IG9wZXJhdG9yID49IChjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206
OnZhbHVlX3R5cGU+JiBfX2UsIGNvbnN0IHZhbGFycmF5PHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5
cGU+JiBfX3YpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsgdHlwZWRl
ZiBfQmluQ2xvczxncmVhdGVyX2VxdWFsLF9FeHByLF9WYWxBcnJheSxfRG9tLF9UcD4gX0Nsb3N1
cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxib29sPiAoX0Nsb3N1cmUgKF9fZSAoKSwgX192KSk7
IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5DbG9zPGdyZWF0ZXJfZXF1
YWwsX1ZhbEFycmF5LF9FeHByLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUsX0RvbT4sIGJvb2w+
IG9wZXJhdG9yID49IChjb25zdCB2YWxhcnJheTx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYg
X192LCBjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX2UpIHsg
dHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsgdHlwZWRlZiBfQmluQ2xvczxn
cmVhdGVyX2VxdWFsLF9WYWxBcnJheSxfRXhwcixfVHAsX0RvbT4gX0Nsb3N1cmU7IHJldHVybiBf
RXhwcjxfQ2xvc3VyZSxib29sPiAoX0Nsb3N1cmUgKF9fdiwgX19lICgpKSk7IH0KIyA5NTMgIi91
c3IvaW5jbHVkZS9nKystdjMvYml0cy92YWxhcnJheV9tZXRhLmgiIDMKICAgIHRlbXBsYXRlPGNs
YXNzIF9Eb20+IGlubGluZSBfRXhwcjxfVW5GdW5DbG9zPF9FeHByLF9Eb20+LHR5cGVuYW1lIF9E
b206OnZhbHVlX3R5cGU+IGFicyhjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVl
X3R5cGU+JiBfX2UpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsgdHlw
ZWRlZiBfVW5GdW5DbG9zPF9FeHByLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1
cmUsX1RwPihfQ2xvc3VyZShfX2UoKSwgKF9UcCgqKShfVHApKSgmYWJzKSkpOyB9IHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHByPF9VbkZ1bkNsb3M8X1ZhbEFycmF5LF9UcD4sX1Rw
PiBhYnMoY29uc3QgdmFsYXJyYXk8X1RwPiYgX192KSB7IHR5cGVkZWYgX1VuRnVuQ2xvczxfVmFs
QXJyYXksX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9UcD4gKF9DbG9zdXJl
IChfX3YsIChfVHAoKikoX1RwKSkoJmFicykpKTsgfQogICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4g
aW5saW5lIF9FeHByPF9VbkZ1bkNsb3M8X0V4cHIsX0RvbT4sdHlwZW5hbWUgX0RvbTo6dmFsdWVf
dHlwZT4gY29zKGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9f
ZSkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9VbkZ1
bkNsb3M8X0V4cHIsX0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+KF9D
bG9zdXJlKF9fZSgpLCAoX1RwKCopKF9UcCkpKCZjb3MpKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPiBpbmxpbmUgX0V4cHI8X1VuRnVuQ2xvczxfVmFsQXJyYXksX1RwPixfVHA+IGNvcyhjb25z
dCB2YWxhcnJheTxfVHA+JiBfX3YpIHsgdHlwZWRlZiBfVW5GdW5DbG9zPF9WYWxBcnJheSxfVHA+
IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1RwPiAoX0Nsb3N1cmUgKF9fdiwgKF9U
cCgqKShfVHApKSgmY29zKSkpOyB9CiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4
cHI8X1VuRnVuQ2xvczxfRXhwcixfRG9tPix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiBhY29z
KGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSkgeyB0eXBl
ZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9VbkZ1bkNsb3M8X0V4
cHIsX0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+KF9DbG9zdXJlKF9f
ZSgpLCAoX1RwKCopKF9UcCkpKCZhY29zKSkpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5s
aW5lIF9FeHByPF9VbkZ1bkNsb3M8X1ZhbEFycmF5LF9UcD4sX1RwPiBhY29zKGNvbnN0IHZhbGFy
cmF5PF9UcD4mIF9fdikgeyB0eXBlZGVmIF9VbkZ1bkNsb3M8X1ZhbEFycmF5LF9UcD4gX0Nsb3N1
cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+IChfQ2xvc3VyZSAoX192LCAoX1RwKCopKF9U
cCkpKCZhY29zKSkpOyB9CiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X1Vu
RnVuQ2xvczxfRXhwcixfRG9tPix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiBjb3NoKGNvbnN0
IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSkgeyB0eXBlZGVmIHR5
cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9VbkZ1bkNsb3M8X0V4cHIsX0Rv
bT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+KF9DbG9zdXJlKF9fZSgpLCAo
X1RwKCopKF9UcCkpKCZjb3NoKSkpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9F
eHByPF9VbkZ1bkNsb3M8X1ZhbEFycmF5LF9UcD4sX1RwPiBjb3NoKGNvbnN0IHZhbGFycmF5PF9U
cD4mIF9fdikgeyB0eXBlZGVmIF9VbkZ1bkNsb3M8X1ZhbEFycmF5LF9UcD4gX0Nsb3N1cmU7IHJl
dHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+IChfQ2xvc3VyZSAoX192LCAoX1RwKCopKF9UcCkpKCZj
b3NoKSkpOyB9CiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X1VuRnVuQ2xv
czxfRXhwcixfRG9tPix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiBzaW4oY29uc3QgX0V4cHI8
X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX19lKSB7IHR5cGVkZWYgdHlwZW5hbWUg
X0RvbTo6dmFsdWVfdHlwZSBfVHA7IHR5cGVkZWYgX1VuRnVuQ2xvczxfRXhwcixfRG9tPiBfQ2xv
c3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9UcD4oX0Nsb3N1cmUoX19lKCksIChfVHAoKiko
X1RwKSkoJnNpbikpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSBfRXhwcjxfVW5G
dW5DbG9zPF9WYWxBcnJheSxfVHA+LF9UcD4gc2luKGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikg
eyB0eXBlZGVmIF9VbkZ1bkNsb3M8X1ZhbEFycmF5LF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhw
cjxfQ2xvc3VyZSxfVHA+IChfQ2xvc3VyZSAoX192LCAoX1RwKCopKF9UcCkpKCZzaW4pKSk7IH0K
ICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfVW5GdW5DbG9zPF9FeHByLF9E
b20+LHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+IGFzaW4oY29uc3QgX0V4cHI8X0RvbSx0eXBl
bmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX19lKSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFs
dWVfdHlwZSBfVHA7IHR5cGVkZWYgX1VuRnVuQ2xvczxfRXhwcixfRG9tPiBfQ2xvc3VyZTsgcmV0
dXJuIF9FeHByPF9DbG9zdXJlLF9UcD4oX0Nsb3N1cmUoX19lKCksIChfVHAoKikoX1RwKSkoJmFz
aW4pKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X1VuRnVuQ2xvczxf
VmFsQXJyYXksX1RwPixfVHA+IGFzaW4oY29uc3QgdmFsYXJyYXk8X1RwPiYgX192KSB7IHR5cGVk
ZWYgX1VuRnVuQ2xvczxfVmFsQXJyYXksX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9z
dXJlLF9UcD4gKF9DbG9zdXJlIChfX3YsIChfVHAoKikoX1RwKSkoJmFzaW4pKSk7IH0KICAgIHRl
bXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfVW5GdW5DbG9zPF9FeHByLF9Eb20+LHR5
cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+IHNpbmgoY29uc3QgX0V4cHI8X0RvbSx0eXBlbmFtZSBf
RG9tOjp2YWx1ZV90eXBlPiYgX19lKSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlw
ZSBfVHA7IHR5cGVkZWYgX1VuRnVuQ2xvczxfRXhwcixfRG9tPiBfQ2xvc3VyZTsgcmV0dXJuIF9F
eHByPF9DbG9zdXJlLF9UcD4oX0Nsb3N1cmUoX19lKCksIChfVHAoKikoX1RwKSkoJnNpbmgpKSk7
IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X1VuRnVuQ2xvczxfVmFsQXJy
YXksX1RwPixfVHA+IHNpbmgoY29uc3QgdmFsYXJyYXk8X1RwPiYgX192KSB7IHR5cGVkZWYgX1Vu
RnVuQ2xvczxfVmFsQXJyYXksX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9U
cD4gKF9DbG9zdXJlIChfX3YsIChfVHAoKikoX1RwKSkoJnNpbmgpKSk7IH0KICAgIHRlbXBsYXRl
PGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfVW5GdW5DbG9zPF9FeHByLF9Eb20+LHR5cGVuYW1l
IF9Eb206OnZhbHVlX3R5cGU+IHRhbihjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZh
bHVlX3R5cGU+JiBfX2UpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsg
dHlwZWRlZiBfVW5GdW5DbG9zPF9FeHByLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Ns
b3N1cmUsX1RwPihfQ2xvc3VyZShfX2UoKSwgKF9UcCgqKShfVHApKSgmdGFuKSkpOyB9IHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHByPF9VbkZ1bkNsb3M8X1ZhbEFycmF5LF9UcD4s
X1RwPiB0YW4oY29uc3QgdmFsYXJyYXk8X1RwPiYgX192KSB7IHR5cGVkZWYgX1VuRnVuQ2xvczxf
VmFsQXJyYXksX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9UcD4gKF9DbG9z
dXJlIChfX3YsIChfVHAoKikoX1RwKSkoJnRhbikpKTsgfQogICAgdGVtcGxhdGU8Y2xhc3MgX0Rv
bT4gaW5saW5lIF9FeHByPF9VbkZ1bkNsb3M8X0V4cHIsX0RvbT4sdHlwZW5hbWUgX0RvbTo6dmFs
dWVfdHlwZT4gdGFuaChjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+
JiBfX2UpIHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsgdHlwZWRlZiBf
VW5GdW5DbG9zPF9FeHByLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1Rw
PihfQ2xvc3VyZShfX2UoKSwgKF9UcCgqKShfVHApKSgmdGFuaCkpKTsgfSB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+IGlubGluZSBfRXhwcjxfVW5GdW5DbG9zPF9WYWxBcnJheSxfVHA+LF9UcD4gdGFu
aChjb25zdCB2YWxhcnJheTxfVHA+JiBfX3YpIHsgdHlwZWRlZiBfVW5GdW5DbG9zPF9WYWxBcnJh
eSxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1RwPiAoX0Nsb3N1cmUgKF9f
diwgKF9UcCgqKShfVHApKSgmdGFuaCkpKTsgfQogICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5s
aW5lIF9FeHByPF9VbkZ1bkNsb3M8X0V4cHIsX0RvbT4sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlw
ZT4gYXRhbihjb25zdCBfRXhwcjxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX2Up
IHsgdHlwZWRlZiB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlIF9UcDsgdHlwZWRlZiBfVW5GdW5D
bG9zPF9FeHByLF9Eb20+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1RwPihfQ2xv
c3VyZShfX2UoKSwgKF9UcCgqKShfVHApKSgmYXRhbikpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+IGlubGluZSBfRXhwcjxfVW5GdW5DbG9zPF9WYWxBcnJheSxfVHA+LF9UcD4gYXRhbihjb25z
dCB2YWxhcnJheTxfVHA+JiBfX3YpIHsgdHlwZWRlZiBfVW5GdW5DbG9zPF9WYWxBcnJheSxfVHA+
IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1RwPiAoX0Nsb3N1cmUgKF9fdiwgKF9U
cCgqKShfVHApKSgmYXRhbikpKTsgfQogICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9F
eHByPF9VbkZ1bkNsb3M8X0V4cHIsX0RvbT4sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4gZXhw
KGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSkgeyB0eXBl
ZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9VbkZ1bkNsb3M8X0V4
cHIsX0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+KF9DbG9zdXJlKF9f
ZSgpLCAoX1RwKCopKF9UcCkpKCZleHApKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxp
bmUgX0V4cHI8X1VuRnVuQ2xvczxfVmFsQXJyYXksX1RwPixfVHA+IGV4cChjb25zdCB2YWxhcnJh
eTxfVHA+JiBfX3YpIHsgdHlwZWRlZiBfVW5GdW5DbG9zPF9WYWxBcnJheSxfVHA+IF9DbG9zdXJl
OyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1RwPiAoX0Nsb3N1cmUgKF9fdiwgKF9UcCgqKShfVHAp
KSgmZXhwKSkpOyB9CiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X1VuRnVu
Q2xvczxfRXhwcixfRG9tPix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiBsb2coY29uc3QgX0V4
cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX19lKSB7IHR5cGVkZWYgdHlwZW5h
bWUgX0RvbTo6dmFsdWVfdHlwZSBfVHA7IHR5cGVkZWYgX1VuRnVuQ2xvczxfRXhwcixfRG9tPiBf
Q2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9UcD4oX0Nsb3N1cmUoX19lKCksIChfVHAo
KikoX1RwKSkoJmxvZykpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSBfRXhwcjxf
VW5GdW5DbG9zPF9WYWxBcnJheSxfVHA+LF9UcD4gbG9nKGNvbnN0IHZhbGFycmF5PF9UcD4mIF9f
dikgeyB0eXBlZGVmIF9VbkZ1bkNsb3M8X1ZhbEFycmF5LF9UcD4gX0Nsb3N1cmU7IHJldHVybiBf
RXhwcjxfQ2xvc3VyZSxfVHA+IChfQ2xvc3VyZSAoX192LCAoX1RwKCopKF9UcCkpKCZsb2cpKSk7
IH0KICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfVW5GdW5DbG9zPF9FeHBy
LF9Eb20+LHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+IGxvZzEwKGNvbnN0IF9FeHByPF9Eb20s
dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206
OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9VbkZ1bkNsb3M8X0V4cHIsX0RvbT4gX0Nsb3N1cmU7
IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+KF9DbG9zdXJlKF9fZSgpLCAoX1RwKCopKF9UcCkp
KCZsb2cxMCkpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSBfRXhwcjxfVW5GdW5D
bG9zPF9WYWxBcnJheSxfVHA+LF9UcD4gbG9nMTAoY29uc3QgdmFsYXJyYXk8X1RwPiYgX192KSB7
IHR5cGVkZWYgX1VuRnVuQ2xvczxfVmFsQXJyYXksX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHBy
PF9DbG9zdXJlLF9UcD4gKF9DbG9zdXJlIChfX3YsIChfVHAoKikoX1RwKSkoJmxvZzEwKSkpOyB9
CiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X1VuRnVuQ2xvczxfRXhwcixf
RG9tPix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiBzcXJ0KGNvbnN0IF9FeHByPF9Eb20sdHlw
ZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZh
bHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9VbkZ1bkNsb3M8X0V4cHIsX0RvbT4gX0Nsb3N1cmU7IHJl
dHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+KF9DbG9zdXJlKF9fZSgpLCAoX1RwKCopKF9UcCkpKCZz
cXJ0KSkpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHByPF9VbkZ1bkNsb3M8
X1ZhbEFycmF5LF9UcD4sX1RwPiBzcXJ0KGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgeyB0eXBl
ZGVmIF9VbkZ1bkNsb3M8X1ZhbEFycmF5LF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xv
c3VyZSxfVHA+IChfQ2xvc3VyZSAoX192LCAoX1RwKCopKF9UcCkpKCZzcXJ0KSkpOyB9CiMgMTA1
OCAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3ZhbGFycmF5X21ldGEuaCIgMwp0ZW1wbGF0ZTxj
bGFzcyBfRG9tMSwgY2xhc3MgX0RvbTI+IGlubGluZSBfRXhwcjxfQmluRnVuQ2xvczxfRXhwcixf
RXhwcixfRG9tMSxfRG9tMj4sdHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGU+YXRhbjIgKGNvbnN0
IF9FeHByPF9Eb20xLHR5cGVuYW1lIF9Eb20xOjp2YWx1ZV90eXBlPiYgX19lMSwgY29uc3QgX0V4
cHI8X0RvbTIsdHlwZW5hbWUgX0RvbTI6OnZhbHVlX3R5cGU+JiBfX2UyKSB7IHR5cGVkZWYgdHlw
ZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9CaW5GdW5DbG9zPF9FeHByLF9F
eHByLF9Eb20xLF9Eb20yPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9UcD4gKF9D
bG9zdXJlIChfX2UxICgpLCBfX2UyICgpLCAoX1RwKCopKF9UcCwgX1RwKSkoJmF0YW4yKSkpOyB9
IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluRnVuQ2xvczxfRXhwcixfVmFs
QXJyYXksX0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiwgdHlwZW5hbWUgX0RvbTo6dmFs
dWVfdHlwZT4gYXRhbjIgKGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlw
ZT4mIF9fZSwgY29uc3QgdmFsYXJyYXk8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdikg
eyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9CaW5GdW5D
bG9zPF9FeHByLF9WYWxBcnJheSxfRG9tLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xv
c3VyZSxfVHA+IChfQ2xvc3VyZSAoX19lICgpLCBfX3YsIChfVHAoKikoX1RwLCBfVHApKSgmYXRh
bjIpKSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5GdW5DbG9zPF9W
YWxBcnJheSxfRXhwcix0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlLF9Eb20+LCB0eXBlbmFtZSBf
RG9tOjp2YWx1ZV90eXBlPiBhdGFuMiAoY29uc3QgdmFsYXJyYXk8dHlwZW5hbWUgX0RvbTo6dmFs
YXJyYXk+JiBfX3YsIGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4m
IF9fZSkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9C
aW5GdW5DbG9zPF9WYWxBcnJheSxfRXhwcixfVHAsX0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhw
cjxfQ2xvc3VyZSxfVHA+IChfQ2xvc3VyZSAoX192LCBfX2UgKCksIChfVHAoKikoX1RwLCBfVHAp
KSgmYXRhbjIpKSk7IH0gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5GdW5D
bG9zPF9FeHByLF9Db25zdGFudCxfRG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+LCB0eXBl
bmFtZSBfRG9tOjp2YWx1ZV90eXBlPiBhdGFuMiAoY29uc3QgX0V4cHI8X0RvbSwgdHlwZW5hbWUg
X0RvbTo6dmFsdWVfdHlwZT4mIF9fZSwgY29uc3QgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSYg
X190KSB7IHR5cGVkZWYgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfVHA7IHR5cGVkZWYgX0Jp
bkZ1bkNsb3M8X0V4cHIsX0NvbnN0YW50LF9Eb20sX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHBy
PF9DbG9zdXJlLF9UcD4gKF9DbG9zdXJlIChfX2UgKCksIF9fdCwgKF9UcCgqKShfVHAsIF9UcCkp
KCZhdGFuMikpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgX0V4cHI8X0JpbkZ1bkNs
b3M8X0NvbnN0YW50LF9FeHByLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUsX0RvbT4sIHR5cGVu
YW1lIF9Eb206OnZhbHVlX3R5cGU+IGF0YW4yIChjb25zdCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90
eXBlJiBfX3QsIGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9f
ZSkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9CaW5G
dW5DbG9zPF9Db25zdGFudCxfRXhwcixfVHAsX0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxf
Q2xvc3VyZSxfVHA+IChfQ2xvc3VyZSAoX190LCBfX2UgKCksIChfVHAoKikoX1RwLCBfVHApKSgm
YXRhbjIpKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X0JpbkZ1bkNs
b3M8X1ZhbEFycmF5LF9WYWxBcnJheSxfVHAsX1RwPiwgX1RwPiBhdGFuMiAoY29uc3QgdmFsYXJy
YXk8X1RwPiYgX192LCBjb25zdCB2YWxhcnJheTxfVHA+JiBfX3cpIHsgdHlwZWRlZiBfQmluRnVu
Q2xvczxfVmFsQXJyYXksX1ZhbEFycmF5LF9UcCxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8
X0Nsb3N1cmUsX1RwPiAoX0Nsb3N1cmUgKF9fdiwgX193LCAoX1RwKCopKF9UcCxfVHApKSgmYXRh
bjIpKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X0JpbkZ1bkNsb3M8
X1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPixfVHA+IGF0YW4yIChjb25zdCB2YWxhcnJheTxf
VHA+JiBfX3YsIGNvbnN0IF9UcCYgX190KSB7IHR5cGVkZWYgX0JpbkZ1bkNsb3M8X1ZhbEFycmF5
LF9Db25zdGFudCxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9UcD4g
KF9DbG9zdXJlIChfX3YsIF9fdCwgKF9UcCgqKShfVHAsX1RwKSkoJmF0YW4yKSkpOyB9IHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHByPF9CaW5GdW5DbG9zPF9Db25zdGFudCxfVmFs
QXJyYXksX1RwLF9UcD4sX1RwPiBhdGFuMiAoY29uc3QgX1RwJiBfX3QsIGNvbnN0IHZhbGFycmF5
PF9UcD4mIF9fdikgeyB0eXBlZGVmIF9CaW5GdW5DbG9zPF9Db25zdGFudCxfVmFsQXJyYXksX1Rw
LF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+IChfQ2xvc3VyZSAoX190
LCBfX3YsIChfVHAoKikoX1RwLF9UcCkpKCZhdGFuMikpKTsgfQp0ZW1wbGF0ZTxjbGFzcyBfRG9t
MSwgY2xhc3MgX0RvbTI+IGlubGluZSBfRXhwcjxfQmluRnVuQ2xvczxfRXhwcixfRXhwcixfRG9t
MSxfRG9tMj4sdHlwZW5hbWUgX0RvbTE6OnZhbHVlX3R5cGU+cG93IChjb25zdCBfRXhwcjxfRG9t
MSx0eXBlbmFtZSBfRG9tMTo6dmFsdWVfdHlwZT4mIF9fZTEsIGNvbnN0IF9FeHByPF9Eb20yLHR5
cGVuYW1lIF9Eb20yOjp2YWx1ZV90eXBlPiYgX19lMikgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb20x
Ojp2YWx1ZV90eXBlIF9UcDsgdHlwZWRlZiBfQmluRnVuQ2xvczxfRXhwcixfRXhwcixfRG9tMSxf
RG9tMj4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+IChfQ2xvc3VyZSAoX19l
MSAoKSwgX19lMiAoKSwgKF9UcCgqKShfVHAsIF9UcCkpKCZwb3cpKSk7IH0gdGVtcGxhdGU8Y2xh
c3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5GdW5DbG9zPF9FeHByLF9WYWxBcnJheSxfRG9tLHR5
cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+LCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiBwb3cg
KGNvbnN0IF9FeHByPF9Eb20sdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSwgY29uc3Qg
dmFsYXJyYXk8dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fdikgeyB0eXBlZGVmIHR5cGVu
YW1lIF9Eb206OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9CaW5GdW5DbG9zPF9FeHByLF9WYWxB
cnJheSxfRG9tLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+IChfQ2xv
c3VyZSAoX19lICgpLCBfX3YsIChfVHAoKikoX1RwLCBfVHApKSgmcG93KSkpOyB9IHRlbXBsYXRl
PGNsYXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluRnVuQ2xvczxfVmFsQXJyYXksX0V4cHIsdHlw
ZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSxfRG9tPiwgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4g
cG93IChjb25zdCB2YWxhcnJheTx0eXBlbmFtZSBfRG9tOjp2YWxhcnJheT4mIF9fdiwgY29uc3Qg
X0V4cHI8X0RvbSx0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlPiYgX19lKSB7IHR5cGVkZWYgdHlw
ZW5hbWUgX0RvbTo6dmFsdWVfdHlwZSBfVHA7IHR5cGVkZWYgX0JpbkZ1bkNsb3M8X1ZhbEFycmF5
LF9FeHByLF9UcCxfRG9tPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLF9UcD4gKF9D
bG9zdXJlIChfX3YsIF9fZSAoKSwgKF9UcCgqKShfVHAsIF9UcCkpKCZwb3cpKSk7IH0gdGVtcGxh
dGU8Y2xhc3MgX0RvbT4gaW5saW5lIF9FeHByPF9CaW5GdW5DbG9zPF9FeHByLF9Db25zdGFudCxf
RG9tLHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+LCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBl
PiBwb3cgKGNvbnN0IF9FeHByPF9Eb20sIHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGU+JiBfX2Us
IGNvbnN0IHR5cGVuYW1lIF9Eb206OnZhbHVlX3R5cGUmIF9fdCkgeyB0eXBlZGVmIHR5cGVuYW1l
IF9Eb206OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9CaW5GdW5DbG9zPF9FeHByLF9Db25zdGFu
dCxfRG9tLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+IChfQ2xvc3Vy
ZSAoX19lICgpLCBfX3QsIChfVHAoKikoX1RwLCBfVHApKSgmcG93KSkpOyB9IHRlbXBsYXRlPGNs
YXNzIF9Eb20+IGlubGluZSBfRXhwcjxfQmluRnVuQ2xvczxfQ29uc3RhbnQsX0V4cHIsdHlwZW5h
bWUgX0RvbTo6dmFsdWVfdHlwZSxfRG9tPiwgdHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4gcG93
IChjb25zdCB0eXBlbmFtZSBfRG9tOjp2YWx1ZV90eXBlJiBfX3QsIGNvbnN0IF9FeHByPF9Eb20s
dHlwZW5hbWUgX0RvbTo6dmFsdWVfdHlwZT4mIF9fZSkgeyB0eXBlZGVmIHR5cGVuYW1lIF9Eb206
OnZhbHVlX3R5cGUgX1RwOyB0eXBlZGVmIF9CaW5GdW5DbG9zPF9Db25zdGFudCxfRXhwcixfVHAs
X0RvbT4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+IChfQ2xvc3VyZSAoX190
LCBfX2UgKCksIChfVHAoKikoX1RwLCBfVHApKSgmcG93KSkpOyB9IHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4gaW5saW5lIF9FeHByPF9CaW5GdW5DbG9zPF9WYWxBcnJheSxfVmFsQXJyYXksX1RwLF9U
cD4sIF9UcD4gcG93IChjb25zdCB2YWxhcnJheTxfVHA+JiBfX3YsIGNvbnN0IHZhbGFycmF5PF9U
cD4mIF9fdykgeyB0eXBlZGVmIF9CaW5GdW5DbG9zPF9WYWxBcnJheSxfVmFsQXJyYXksX1RwLF9U
cD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxfVHA+IChfQ2xvc3VyZSAoX192LCBf
X3csIChfVHAoKikoX1RwLF9UcCkpKCZwb3cpKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBp
bmxpbmUgX0V4cHI8X0JpbkZ1bkNsb3M8X1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPixfVHA+
IHBvdyAoY29uc3QgdmFsYXJyYXk8X1RwPiYgX192LCBjb25zdCBfVHAmIF9fdCkgeyB0eXBlZGVm
IF9CaW5GdW5DbG9zPF9WYWxBcnJheSxfQ29uc3RhbnQsX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVy
biBfRXhwcjxfQ2xvc3VyZSxfVHA+IChfQ2xvc3VyZSAoX192LCBfX3QsIChfVHAoKikoX1RwLF9U
cCkpKCZwb3cpKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X0JpbkZ1
bkNsb3M8X0NvbnN0YW50LF9WYWxBcnJheSxfVHAsX1RwPixfVHA+IHBvdyAoY29uc3QgX1RwJiBf
X3QsIGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgeyB0eXBlZGVmIF9CaW5GdW5DbG9zPF9Db25z
dGFudCxfVmFsQXJyYXksX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSxf
VHA+IChfQ2xvc3VyZSAoX190LCBfX3YsIChfVHAoKikoX1RwLF9UcCkpKCZwb3cpKSk7IH0KCgoK
fQojIDg5ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX3ZhbGFycmF5LmgiIDIgMwoKbmFt
ZXNwYWNlIHN0ZAp7CiAgdGVtcGxhdGU8Y2xhc3MgX1RwPiBjbGFzcyB2YWxhcnJheQogIHsKICBw
dWJsaWM6CiAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgoKICAgICAgdmFsYXJyYXkoKTsK
ICAgICAgZXhwbGljaXQgdmFsYXJyYXkoc2l6ZV90KTsKICAgICAgdmFsYXJyYXkoY29uc3QgX1Rw
Jiwgc2l6ZV90KTsKICAgICAgdmFsYXJyYXkoY29uc3QgX1RwKiBfX3Jlc3RyaWN0X18sIHNpemVf
dCk7CiAgICAgIHZhbGFycmF5KGNvbnN0IHZhbGFycmF5Jik7CiAgICAgIHZhbGFycmF5KGNvbnN0
IHNsaWNlX2FycmF5PF9UcD4mKTsKICAgICAgdmFsYXJyYXkoY29uc3QgZ3NsaWNlX2FycmF5PF9U
cD4mKTsKICAgICAgdmFsYXJyYXkoY29uc3QgbWFza19hcnJheTxfVHA+Jik7CiAgICAgIHZhbGFy
cmF5KGNvbnN0IGluZGlyZWN0X2FycmF5PF9UcD4mKTsKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0Rv
bT4KICAgICAgdmFsYXJyYXkoY29uc3QgX0V4cHI8X0RvbSxfVHA+JiBfX2UpOwogICAgIH52YWxh
cnJheSgpOwoKCiAgICAgIHZhbGFycmF5PF9UcD4mIG9wZXJhdG9yPShjb25zdCB2YWxhcnJheTxf
VHA+Jik7CiAgICAgIHZhbGFycmF5PF9UcD4mIG9wZXJhdG9yPShjb25zdCBfVHAmKTsKICAgICAg
dmFsYXJyYXk8X1RwPiYgb3BlcmF0b3I9KGNvbnN0IHNsaWNlX2FycmF5PF9UcD4mKTsKICAgICAg
dmFsYXJyYXk8X1RwPiYgb3BlcmF0b3I9KGNvbnN0IGdzbGljZV9hcnJheTxfVHA+Jik7CiAgICAg
IHZhbGFycmF5PF9UcD4mIG9wZXJhdG9yPShjb25zdCBtYXNrX2FycmF5PF9UcD4mKTsKICAgICAg
dmFsYXJyYXk8X1RwPiYgb3BlcmF0b3I9KGNvbnN0IGluZGlyZWN0X2FycmF5PF9UcD4mKTsKCiAg
ICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+IHZhbGFycmF5PF9UcD4mCiAgICAgICAgb3BlcmF0b3I9
IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mKTsKCgoKICAgICAgY29uc3QgX1RwJiBvcGVyYXRvcltd
KHNpemVfdCkgY29uc3Q7CiAgICAgIF9UcCYgb3BlcmF0b3JbXShzaXplX3QpOwoKICAgICAgX0V4
cHI8X1NDbG9zPF9WYWxBcnJheSxfVHA+LCBfVHA+IG9wZXJhdG9yW10oc2xpY2UpIGNvbnN0Owog
ICAgICBzbGljZV9hcnJheTxfVHA+IG9wZXJhdG9yW10oc2xpY2UpOwogICAgICBfRXhwcjxfR0Ns
b3M8X1ZhbEFycmF5LF9UcD4sIF9UcD4gb3BlcmF0b3JbXShjb25zdCBnc2xpY2UmKSBjb25zdDsK
ICAgICAgZ3NsaWNlX2FycmF5PF9UcD4gb3BlcmF0b3JbXShjb25zdCBnc2xpY2UmKTsKICAgICAg
dmFsYXJyYXk8X1RwPiBvcGVyYXRvcltdKGNvbnN0IHZhbGFycmF5PGJvb2w+JikgY29uc3Q7CiAg
ICAgIG1hc2tfYXJyYXk8X1RwPiBvcGVyYXRvcltdKGNvbnN0IHZhbGFycmF5PGJvb2w+Jik7CiAg
ICAgIF9FeHByPF9JQ2xvczxfVmFsQXJyYXksIF9UcD4sIF9UcD4KICAgICAgICBvcGVyYXRvcltd
KGNvbnN0IHZhbGFycmF5PHNpemVfdD4mKSBjb25zdDsKICAgICAgaW5kaXJlY3RfYXJyYXk8X1Rw
PiBvcGVyYXRvcltdKGNvbnN0IHZhbGFycmF5PHNpemVfdD4mKTsKCgogICAgICBfRXhwcjxfVW5D
bG9zPF9VbmFyeV9wbHVzLF9WYWxBcnJheSxfVHA+LF9UcD4gb3BlcmF0b3IrICgpIGNvbnN0Owog
ICAgICBfRXhwcjxfVW5DbG9zPG5lZ2F0ZSxfVmFsQXJyYXksX1RwPixfVHA+IG9wZXJhdG9yLSAo
KSBjb25zdDsKICAgICAgX0V4cHI8X1VuQ2xvczxfQml0d2lzZV9ub3QsX1ZhbEFycmF5LF9UcD4s
X1RwPiBvcGVyYXRvcn4gKCkgY29uc3Q7CiAgICAgIF9FeHByPF9VbkNsb3M8bG9naWNhbF9ub3Qs
X1ZhbEFycmF5LF9UcD4sYm9vbD4gb3BlcmF0b3IhICgpIGNvbnN0OwoKCiAgICAgIHZhbGFycmF5
PF9UcD4mIG9wZXJhdG9yKj0gKGNvbnN0IF9UcCYpOwogICAgICB2YWxhcnJheTxfVHA+JiBvcGVy
YXRvci89IChjb25zdCBfVHAmKTsKICAgICAgdmFsYXJyYXk8X1RwPiYgb3BlcmF0b3IlPSAoY29u
c3QgX1RwJik7CiAgICAgIHZhbGFycmF5PF9UcD4mIG9wZXJhdG9yKz0gKGNvbnN0IF9UcCYpOwog
ICAgICB2YWxhcnJheTxfVHA+JiBvcGVyYXRvci09IChjb25zdCBfVHAmKTsKICAgICAgdmFsYXJy
YXk8X1RwPiYgb3BlcmF0b3JePSAoY29uc3QgX1RwJik7CiAgICAgIHZhbGFycmF5PF9UcD4mIG9w
ZXJhdG9yJj0gKGNvbnN0IF9UcCYpOwogICAgICB2YWxhcnJheTxfVHA+JiBvcGVyYXRvcnw9IChj
b25zdCBfVHAmKTsKICAgICAgdmFsYXJyYXk8X1RwPiYgb3BlcmF0b3I8PD0oY29uc3QgX1RwJik7
CiAgICAgIHZhbGFycmF5PF9UcD4mIG9wZXJhdG9yPj49KGNvbnN0IF9UcCYpOwogICAgICB2YWxh
cnJheTxfVHA+JiBvcGVyYXRvcio9IChjb25zdCB2YWxhcnJheTxfVHA+Jik7CiAgICAgIHZhbGFy
cmF5PF9UcD4mIG9wZXJhdG9yLz0gKGNvbnN0IHZhbGFycmF5PF9UcD4mKTsKICAgICAgdmFsYXJy
YXk8X1RwPiYgb3BlcmF0b3IlPSAoY29uc3QgdmFsYXJyYXk8X1RwPiYpOwogICAgICB2YWxhcnJh
eTxfVHA+JiBvcGVyYXRvcis9IChjb25zdCB2YWxhcnJheTxfVHA+Jik7CiAgICAgIHZhbGFycmF5
PF9UcD4mIG9wZXJhdG9yLT0gKGNvbnN0IHZhbGFycmF5PF9UcD4mKTsKICAgICAgdmFsYXJyYXk8
X1RwPiYgb3BlcmF0b3JePSAoY29uc3QgdmFsYXJyYXk8X1RwPiYpOwogICAgICB2YWxhcnJheTxf
VHA+JiBvcGVyYXRvcnw9IChjb25zdCB2YWxhcnJheTxfVHA+Jik7CiAgICAgIHZhbGFycmF5PF9U
cD4mIG9wZXJhdG9yJj0gKGNvbnN0IHZhbGFycmF5PF9UcD4mKTsKICAgICAgdmFsYXJyYXk8X1Rw
PiYgb3BlcmF0b3I8PD0oY29uc3QgdmFsYXJyYXk8X1RwPiYpOwogICAgICB2YWxhcnJheTxfVHA+
JiBvcGVyYXRvcj4+PShjb25zdCB2YWxhcnJheTxfVHA+Jik7CgogICAgICB0ZW1wbGF0ZTxjbGFz
cyBfRG9tPgogICAgICAgIHZhbGFycmF5PF9UcD4mIG9wZXJhdG9yKj0gKGNvbnN0IF9FeHByPF9E
b20sX1RwPiYpOwogICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZhbGFycmF5PF9U
cD4mIG9wZXJhdG9yLz0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYpOwogICAgICB0ZW1wbGF0ZTxj
bGFzcyBfRG9tPgogICAgICAgIHZhbGFycmF5PF9UcD4mIG9wZXJhdG9yJT0gKGNvbnN0IF9FeHBy
PF9Eb20sX1RwPiYpOwogICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZhbGFycmF5
PF9UcD4mIG9wZXJhdG9yKz0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYpOwogICAgICB0ZW1wbGF0
ZTxjbGFzcyBfRG9tPgogICAgICAgIHZhbGFycmF5PF9UcD4mIG9wZXJhdG9yLT0gKGNvbnN0IF9F
eHByPF9Eb20sX1RwPiYpOwogICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZhbGFy
cmF5PF9UcD4mIG9wZXJhdG9yXj0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYpOwogICAgICB0ZW1w
bGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZhbGFycmF5PF9UcD4mIG9wZXJhdG9yfD0gKGNvbnN0
IF9FeHByPF9Eb20sX1RwPiYpOwogICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZh
bGFycmF5PF9UcD4mIG9wZXJhdG9yJj0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYpOwogICAgICB0
ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZhbGFycmF5PF9UcD4mIG9wZXJhdG9yPDw9KGNv
bnN0IF9FeHByPF9Eb20sX1RwPiYpOwogICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAg
IHZhbGFycmF5PF9UcD4mIG9wZXJhdG9yPj49KGNvbnN0IF9FeHByPF9Eb20sX1RwPiYpOwoKCgog
ICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogICAgICBfVHAgc3VtKCkgY29uc3Q7CiAgICAgIF9U
cCBtaW4oKSBjb25zdDsKICAgICAgX1RwIG1heCgpIGNvbnN0OwoKCgoKICAgICAgdmFsYXJyYXk8
X1RwPiBzaGlmdCAoaW50KSBjb25zdDsKICAgICAgdmFsYXJyYXk8X1RwPiBjc2hpZnQoaW50KSBj
b25zdDsKICAgICAgX0V4cHI8X1ZhbEZ1bkNsb3M8X1ZhbEFycmF5LF9UcD4sX1RwPiBhcHBseShf
VHAgZnVuYyhfVHApKSBjb25zdDsKICAgICAgX0V4cHI8X1JlZkZ1bkNsb3M8X1ZhbEFycmF5LF9U
cD4sX1RwPiBhcHBseShfVHAgZnVuYyhjb25zdCBfVHAmKSkgY29uc3Q7CiAgICAgIHZvaWQgcmVz
aXplKHNpemVfdCBfX3NpemUsIF9UcCBfX2MgPSBfVHAoKSk7CgogIHByaXZhdGU6CiAgICAgIHNp
emVfdCBfTV9zaXplOwogICAgICBfVHAqIF9fcmVzdHJpY3RfXyBfTV9kYXRhOwoKICAgICAgZnJp
ZW5kIGNsYXNzIF9BcnJheTxfVHA+OwogIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHN0
cnVjdCBfVW5hcnlfcGx1cyA6IHVuYXJ5X2Z1bmN0aW9uPF9UcCxfVHA+IHsKICAgICAgX1RwIG9w
ZXJhdG9yKCkgKGNvbnN0IF9UcCYgX190KSBjb25zdCB7IHJldHVybiBfX3Q7IH0KICB9OwoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHN0cnVjdCBfQml0d2lzZV9hbmQgOiBiaW5hcnlfZnVuY3Rp
b248X1RwLF9UcCxfVHA+IHsKICAgICAgX1RwIG9wZXJhdG9yKCkgKF9UcCBfX3gsIF9UcCBfX3kp
IGNvbnN0IHsgcmV0dXJuIF9feCAmIF9feTsgfQogIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4gc3RydWN0IF9CaXR3aXNlX29yIDogYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsX1RwPiB7CiAg
ICAgIF9UcCBvcGVyYXRvcigpIChfVHAgX194LCBfVHAgX195KSBjb25zdCB7IHJldHVybiBfX3gg
fCBfX3k7IH0KICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHN0cnVjdCBfQml0d2lzZV94
b3IgOiBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxfVHA+IHsKICAgICAgX1RwIG9wZXJhdG9yKCkg
KF9UcCBfX3gsIF9UcCBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCBeIF9feTsgfQogIH07CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4gc3RydWN0IF9CaXR3aXNlX25vdCA6IHVuYXJ5X2Z1bmN0aW9u
PF9UcCxfVHA+IHsKICAgICAgX1RwIG9wZXJhdG9yKCkgKF9UcCBfX3QpIGNvbnN0IHsgcmV0dXJu
IH5fX3Q7IH0KICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHN0cnVjdCBfU2hpZnRfbGVm
dCA6IHVuYXJ5X2Z1bmN0aW9uPF9UcCxfVHA+IHsKICAgICAgX1RwIG9wZXJhdG9yKCkgKF9UcCBf
X3gsIF9UcCBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCA8PCBfX3k7IH0KICB9OwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+IHN0cnVjdCBfU2hpZnRfcmlnaHQgOiB1bmFyeV9mdW5jdGlvbjxfVHAs
X1RwPiB7CiAgICAgIF9UcCBvcGVyYXRvcigpIChfVHAgX194LCBfVHAgX195KSBjb25zdCB7IHJl
dHVybiBfX3ggPj4gX195OyB9CiAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxp
bmUgY29uc3QgX1RwJgogIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yW10gKHNpemVfdCBfX2kpIGNv
bnN0CiAgeyByZXR1cm4gX01fZGF0YVtfX2ldOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICBpbmxpbmUgX1RwJgogIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yW10gKHNpemVfdCBfX2kpCiAg
eyByZXR1cm4gX01fZGF0YVtfX2ldOyB9Cgp9CgojIDEgIi91c3IvaW5jbHVkZS9nKystdjMvYml0
cy9zbGljZS5oIiAxIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3NsaWNlLmgiIDMK
Cm5hbWVzcGFjZSBzdGQKewoKY2xhc3Mgc2xpY2UKewpwdWJsaWM6CiAgICBzbGljZSAoKTsKICAg
IHNsaWNlIChzaXplX3QsIHNpemVfdCwgc2l6ZV90KTsKCiAgICBzaXplX3Qgc3RhcnQgKCkgY29u
c3Q7CiAgICBzaXplX3Qgc2l6ZSAoKSBjb25zdDsKICAgIHNpemVfdCBzdHJpZGUgKCkgY29uc3Q7
Cgpwcml2YXRlOgogICAgc2l6ZV90IF9NX29mZjsKICAgIHNpemVfdCBfTV9zejsKICAgIHNpemVf
dCBfTV9zdDsKfTsKCmlubGluZSBzbGljZTo6c2xpY2UgKCkge30KCmlubGluZSBzbGljZTo6c2xp
Y2UgKHNpemVfdCBfX28sIHNpemVfdCBfX2QsIHNpemVfdCBfX3MpCiAgICAgICAgOiBfTV9vZmYg
KF9fbyksIF9NX3N6IChfX2QpLCBfTV9zdCAoX19zKSB7fQoKaW5saW5lIHNpemVfdApzbGljZTo6
c3RhcnQgKCkgY29uc3QKICB7IHJldHVybiBfTV9vZmY7IH0KCmlubGluZSBzaXplX3QKc2xpY2U6
OnNpemUgKCkgY29uc3QKICB7IHJldHVybiBfTV9zejsgfQoKaW5saW5lIHNpemVfdApzbGljZTo6
c3RyaWRlICgpIGNvbnN0CiAgeyByZXR1cm4gX01fc3Q7IH0KCn0KIyAyNTIgIi91c3IvaW5jbHVk
ZS9nKystdjMvYml0cy9zdGRfdmFsYXJyYXkuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2crKy12
My9iaXRzL3NsaWNlX2FycmF5LmgiIDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMv
c2xpY2VfYXJyYXkuaCIgMwoKbmFtZXNwYWNlIHN0ZAp7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgY2xhc3Mgc2xpY2VfYXJyYXkKICAgIHsKICAgIHB1YmxpYzoKICAgICAgICB0eXBl
ZGVmIF9UcCB2YWx1ZV90eXBlOwoKICAgICAgICB2b2lkIG9wZXJhdG9yPSAoY29uc3QgdmFsYXJy
YXk8X1RwPiYpIGNvbnN0OwogICAgICAgIHZvaWQgb3BlcmF0b3IqPSAoY29uc3QgdmFsYXJyYXk8
X1RwPiYpIGNvbnN0OwogICAgICAgIHZvaWQgb3BlcmF0b3IvPSAoY29uc3QgdmFsYXJyYXk8X1Rw
PiYpIGNvbnN0OwogICAgICAgIHZvaWQgb3BlcmF0b3IlPSAoY29uc3QgdmFsYXJyYXk8X1RwPiYp
IGNvbnN0OwogICAgICAgIHZvaWQgb3BlcmF0b3IrPSAoY29uc3QgdmFsYXJyYXk8X1RwPiYpIGNv
bnN0OwogICAgICAgIHZvaWQgb3BlcmF0b3ItPSAoY29uc3QgdmFsYXJyYXk8X1RwPiYpIGNvbnN0
OwogICAgICAgIHZvaWQgb3BlcmF0b3JePSAoY29uc3QgdmFsYXJyYXk8X1RwPiYpIGNvbnN0Owog
ICAgICAgIHZvaWQgb3BlcmF0b3ImPSAoY29uc3QgdmFsYXJyYXk8X1RwPiYpIGNvbnN0OwogICAg
ICAgIHZvaWQgb3BlcmF0b3J8PSAoY29uc3QgdmFsYXJyYXk8X1RwPiYpIGNvbnN0OwogICAgICAg
IHZvaWQgb3BlcmF0b3I8PD0gKGNvbnN0IHZhbGFycmF5PF9UcD4mKSBjb25zdDsKICAgICAgICB2
b2lkIG9wZXJhdG9yPj49IChjb25zdCB2YWxhcnJheTxfVHA+JikgY29uc3Q7CiAgICAgICAgdm9p
ZCBvcGVyYXRvcj0gKGNvbnN0IF9UcCAmKTsKCgogICAgICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+
CiAgICAgICAgdm9pZCBvcGVyYXRvcj0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYpIGNvbnN0Owog
ICAgICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+CiAgICAgICAgdm9pZCBvcGVyYXRvcio9IChjb25z
dCBfRXhwcjxfRG9tLF9UcD4mKSBjb25zdDsKICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgog
ICAgICAgIHZvaWQgb3BlcmF0b3IvPSAoY29uc3QgX0V4cHI8X0RvbSxfVHA+JikgY29uc3Q7CiAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4KICAgICAgICB2b2lkIG9wZXJhdG9yJT0gKGNvbnN0
IF9FeHByPF9Eb20sX1RwPiYpIGNvbnN0OwogICAgICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+CiAg
ICAgICAgdm9pZCBvcGVyYXRvcis9IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mKSBjb25zdDsKICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZvaWQgb3BlcmF0b3ItPSAoY29uc3Qg
X0V4cHI8X0RvbSxfVHA+JikgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4KICAg
ICAgICB2b2lkIG9wZXJhdG9yXj0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYpIGNvbnN0OwogICAg
ICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+CiAgICAgICAgdm9pZCBvcGVyYXRvciY9IChjb25zdCBf
RXhwcjxfRG9tLF9UcD4mKSBjb25zdDsKICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAg
ICAgIHZvaWQgb3BlcmF0b3J8PSAoY29uc3QgX0V4cHI8X0RvbSxfVHA+JikgY29uc3Q7CiAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4KICAgICAgICB2b2lkIG9wZXJhdG9yPDw9IChjb25zdCBf
RXhwcjxfRG9tLF9UcD4mKSBjb25zdDsKICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAg
ICAgIHZvaWQgb3BlcmF0b3I+Pj0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYpIGNvbnN0OwoKICAg
IHByaXZhdGU6CiAgICAgICAgZnJpZW5kIGNsYXNzIHZhbGFycmF5PF9UcD47CiAgICAgICAgc2xp
Y2VfYXJyYXkoX0FycmF5PF9UcD4sIGNvbnN0IHNsaWNlJik7CgogICAgICAgIGNvbnN0IHNpemVf
dCBfTV9zejsKICAgICAgICBjb25zdCBzaXplX3QgX01fc3RyaWRlOwogICAgICAgIGNvbnN0IF9B
cnJheTxfVHA+IF9NX2FycmF5OwoKCiAgICAgICAgc2xpY2VfYXJyYXkgKGNvbnN0IHNsaWNlX2Fy
cmF5Jik7CgoKICAgICAgICBzbGljZV9hcnJheSAoKTsKICAgICAgICBzbGljZV9hcnJheSYgb3Bl
cmF0b3I9IChjb25zdCBzbGljZV9hcnJheSYpOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgICBpbmxpbmUgc2xpY2VfYXJyYXk8X1RwPjo6c2xpY2VfYXJyYXkgKF9BcnJheTxf
VHA+IF9fYSwgY29uc3Qgc2xpY2UmIF9fcykKICAgICAgICAgICAgOiBfTV9zeiAoX19zLnNpemUg
KCkpLCBfTV9zdHJpZGUgKF9fcy5zdHJpZGUgKCkpLAogICAgICAgICAgICAgIF9NX2FycmF5IChf
X2EuYmVnaW4gKCkgKyBfX3Muc3RhcnQgKCkpIHt9CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIGlubGluZSBzbGljZV9hcnJheTxfVHA+OjpzbGljZV9hcnJheShjb25zdCBzbGljZV9h
cnJheTxfVHA+JiBhKQogICAgICAgICAgICA6IF9NX3N6KGEuX01fc3opLCBfTV9zdHJpZGUoYS5f
TV9zdHJpZGUpLCBfTV9hcnJheShhLl9NX2FycmF5KSB7fQoKCgoKICAgIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIGlubGluZSB2b2lkCiAgICBzbGljZV9hcnJheTxfVHA+OjpvcGVyYXRvcj0g
KGNvbnN0IF9UcCYgX190KQogICAgeyBfX3ZhbGFycmF5X2ZpbGwgKF9NX2FycmF5LCBfTV9zeiwg
X01fc3RyaWRlLCBfX3QpOyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5l
IHZvaWQKICAgIHNsaWNlX2FycmF5PF9UcD46Om9wZXJhdG9yPSAoY29uc3QgdmFsYXJyYXk8X1Rw
PiYgX192KSBjb25zdAogICAgeyBfX3ZhbGFycmF5X2NvcHkgKF9BcnJheTxfVHA+IChfX3YpLCBf
TV9hcnJheSwgX01fc3osIF9NX3N0cmlkZSk7IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgaW5saW5lIHZvaWQKICAgIHNsaWNlX2FycmF5
PF9UcD46Om9wZXJhdG9yPSAoY29uc3QgX0V4cHI8X0RvbSxfVHA+JiBfX2UpIGNvbnN0CiAgICB7
IF9fdmFsYXJyYXlfY29weSAoX19lLCBfTV9zeiwgX01fYXJyYXksIF9NX3N0cmlkZSk7IH0KIyAx
NDUgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zbGljZV9hcnJheS5oIiAzCnRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3IgKj0gKGNv
bnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX211bHRpcGxp
ZXMgKF9NX2FycmF5LCBfTV9zeiwgX01fc3RyaWRlLCBfQXJyYXk8X1RwPiAoX192KSk7fSB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSB2b2lkIHNsaWNl
X2FycmF5PF9UcD46Om9wZXJhdG9yICo9IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mIF9fZSkgY29u
c3QgeyBfQXJyYXlfYXVnbWVudGVkX211bHRpcGxpZXMgKF9NX2FycmF5LCBfTV9zdHJpZGUsIF9f
ZSwgX01fc3opOyB9CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgc2xpY2VfYXJy
YXk8X1RwPjo6b3BlcmF0b3IgLz0gKGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBf
QXJyYXlfYXVnbWVudGVkX2RpdmlkZXMgKF9NX2FycmF5LCBfTV9zeiwgX01fc3RyaWRlLCBfQXJy
YXk8X1RwPiAoX192KSk7fSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHRlbXBsYXRlPGNsYXNzIF9E
b20+IGlubGluZSB2b2lkIHNsaWNlX2FycmF5PF9UcD46Om9wZXJhdG9yIC89IChjb25zdCBfRXhw
cjxfRG9tLF9UcD4mIF9fZSkgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX2RpdmlkZXMgKF9NX2Fy
cmF5LCBfTV9zdHJpZGUsIF9fZSwgX01fc3opOyB9CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5s
aW5lIHZvaWQgc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3IgJT0gKGNvbnN0IHZhbGFycmF5PF9U
cD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX21vZHVsdXMgKF9NX2FycmF5LCBfTV9z
eiwgX01fc3RyaWRlLCBfQXJyYXk8X1RwPiAoX192KSk7fSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSB2b2lkIHNsaWNlX2FycmF5PF9UcD46Om9wZXJh
dG9yICU9IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mIF9fZSkgY29uc3QgeyBfQXJyYXlfYXVnbWVu
dGVkX21vZHVsdXMgKF9NX2FycmF5LCBfTV9zdHJpZGUsIF9fZSwgX01fc3opOyB9CnRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3IgKz0g
KGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX3BsdXMg
KF9NX2FycmF5LCBfTV9zeiwgX01fc3RyaWRlLCBfQXJyYXk8X1RwPiAoX192KSk7fSB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSB2b2lkIHNsaWNlX2Fy
cmF5PF9UcD46Om9wZXJhdG9yICs9IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mIF9fZSkgY29uc3Qg
eyBfQXJyYXlfYXVnbWVudGVkX3BsdXMgKF9NX2FycmF5LCBfTV9zdHJpZGUsIF9fZSwgX01fc3op
OyB9CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgc2xpY2VfYXJyYXk8X1RwPjo6
b3BlcmF0b3IgLT0gKGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVn
bWVudGVkX21pbnVzIChfTV9hcnJheSwgX01fc3osIF9NX3N0cmlkZSwgX0FycmF5PF9UcD4gKF9f
dikpO30gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUg
dm9pZCBzbGljZV9hcnJheTxfVHA+OjpvcGVyYXRvciAtPSAoY29uc3QgX0V4cHI8X0RvbSxfVHA+
JiBfX2UpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9taW51cyAoX01fYXJyYXksIF9NX3N0cmlk
ZSwgX19lLCBfTV9zeik7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBzbGlj
ZV9hcnJheTxfVHA+OjpvcGVyYXRvciBePSAoY29uc3QgdmFsYXJyYXk8X1RwPiYgX192KSBjb25z
dCB7IF9BcnJheV9hdWdtZW50ZWRfeG9yIChfTV9hcnJheSwgX01fc3osIF9NX3N0cmlkZSwgX0Fy
cmF5PF9UcD4gKF9fdikpO30gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBf
RG9tPiBpbmxpbmUgdm9pZCBzbGljZV9hcnJheTxfVHA+OjpvcGVyYXRvciBePSAoY29uc3QgX0V4
cHI8X0RvbSxfVHA+JiBfX2UpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF94b3IgKF9NX2FycmF5
LCBfTV9zdHJpZGUsIF9fZSwgX01fc3opOyB9CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5l
IHZvaWQgc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3IgJj0gKGNvbnN0IHZhbGFycmF5PF9UcD4m
IF9fdikgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX2FuZCAoX01fYXJyYXksIF9NX3N6LCBfTV9z
dHJpZGUsIF9BcnJheTxfVHA+IChfX3YpKTt9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdGVtcGxh
dGU8Y2xhc3MgX0RvbT4gaW5saW5lIHZvaWQgc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3IgJj0g
KGNvbnN0IF9FeHByPF9Eb20sX1RwPiYgX19lKSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfYW5k
IChfTV9hcnJheSwgX01fc3RyaWRlLCBfX2UsIF9NX3N6KTsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+IGlubGluZSB2b2lkIHNsaWNlX2FycmF5PF9UcD46Om9wZXJhdG9yIHw9IChjb25zdCB2YWxh
cnJheTxfVHA+JiBfX3YpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9vciAoX01fYXJyYXksIF9N
X3N6LCBfTV9zdHJpZGUsIF9BcnJheTxfVHA+IChfX3YpKTt9IHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIHZvaWQgc2xpY2VfYXJyYXk8X1RwPjo6b3Bl
cmF0b3IgfD0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYgX19lKSBjb25zdCB7IF9BcnJheV9hdWdt
ZW50ZWRfb3IgKF9NX2FycmF5LCBfTV9zdHJpZGUsIF9fZSwgX01fc3opOyB9CnRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3IgPDw9IChj
b25zdCB2YWxhcnJheTxfVHA+JiBfX3YpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9zaGlmdF9s
ZWZ0IChfTV9hcnJheSwgX01fc3osIF9NX3N0cmlkZSwgX0FycmF5PF9UcD4gKF9fdikpO30gdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgdm9pZCBzbGlj
ZV9hcnJheTxfVHA+OjpvcGVyYXRvciA8PD0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYgX19lKSBj
b25zdCB7IF9BcnJheV9hdWdtZW50ZWRfc2hpZnRfbGVmdCAoX01fYXJyYXksIF9NX3N0cmlkZSwg
X19lLCBfTV9zeik7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBzbGljZV9h
cnJheTxfVHA+OjpvcGVyYXRvciA+Pj0gKGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3Qg
eyBfQXJyYXlfYXVnbWVudGVkX3NoaWZ0X3JpZ2h0IChfTV9hcnJheSwgX01fc3osIF9NX3N0cmlk
ZSwgX0FycmF5PF9UcD4gKF9fdikpO30gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxj
bGFzcyBfRG9tPiBpbmxpbmUgdm9pZCBzbGljZV9hcnJheTxfVHA+OjpvcGVyYXRvciA+Pj0gKGNv
bnN0IF9FeHByPF9Eb20sX1RwPiYgX19lKSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfc2hpZnRf
cmlnaHQgKF9NX2FycmF5LCBfTV9zdHJpZGUsIF9fZSwgX01fc3opOyB9CgoKCn0KIyAyNTMgIi91
c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfdmFsYXJyYXkuaCIgMiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2crKy12My9iaXRzL2dzbGljZS5oIiAxIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2crKy12My9i
aXRzL2dzbGljZS5oIiAzCgpuYW1lc3BhY2Ugc3RkIHsKCiAgICBjbGFzcyBnc2xpY2UKICAgIHsK
ICAgIHB1YmxpYzoKICAgICAgICBnc2xpY2UgKCk7CiAgICAgICAgZ3NsaWNlIChzaXplX3QsIGNv
bnN0IHZhbGFycmF5PHNpemVfdD4mLCBjb25zdCB2YWxhcnJheTxzaXplX3Q+Jik7CgoKCiAgICAg
ICAgZ3NsaWNlKGNvbnN0IGdzbGljZSYpOwogICAgICAgIH5nc2xpY2UoKTsKCgogICAgICAgIGdz
bGljZSYgb3BlcmF0b3I9IChjb25zdCBnc2xpY2UmKTsKCiAgICAgICAgc2l6ZV90IHN0YXJ0ICgp
IGNvbnN0OwogICAgICAgIHZhbGFycmF5PHNpemVfdD4gc2l6ZSAoKSBjb25zdDsKICAgICAgICB2
YWxhcnJheTxzaXplX3Q+IHN0cmlkZSAoKSBjb25zdDsKCiAgICBwcml2YXRlOgogICAgICAgIHN0
cnVjdCBfSW5kZXhlciB7CiAgICAgICAgICAgIHNpemVfdCBfTV9jb3VudDsKICAgICAgICAgICAg
c2l6ZV90IF9NX3N0YXJ0OwogICAgICAgICAgICB2YWxhcnJheTxzaXplX3Q+IF9NX3NpemU7CiAg
ICAgICAgICAgIHZhbGFycmF5PHNpemVfdD4gX01fc3RyaWRlOwogICAgICAgICAgICB2YWxhcnJh
eTxzaXplX3Q+IF9NX2luZGV4OwogICAgICAgICAgICBfSW5kZXhlcihzaXplX3QsIGNvbnN0IHZh
bGFycmF5PHNpemVfdD4mLAogICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxhcnJheTxzaXpl
X3Q+Jik7CiAgICAgICAgICAgIHZvaWQgX01faW5jcmVtZW50X3VzZSgpIHsgKytfTV9jb3VudDsg
fQogICAgICAgICAgICBzaXplX3QgX01fZGVjcmVtZW50X3VzZSgpIHsgcmV0dXJuIC0tX01fY291
bnQ7IH0KICAgICAgICB9OwoKICAgICAgICBfSW5kZXhlciogX01faW5kZXg7CgogICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4gZnJpZW5kIGNsYXNzIHZhbGFycmF5OwogICAgfTsKCiAgICBp
bmxpbmUgc2l6ZV90CiAgICBnc2xpY2U6OnN0YXJ0ICgpIGNvbnN0CiAgICB7IHJldHVybiBfTV9p
bmRleCA/IF9NX2luZGV4LT5fTV9zdGFydCA6IDA7IH0KCiAgICBpbmxpbmUgdmFsYXJyYXk8c2l6
ZV90PgogICAgZ3NsaWNlOjpzaXplICgpIGNvbnN0CiAgICB7IHJldHVybiBfTV9pbmRleCA/IF9N
X2luZGV4LT5fTV9zaXplIDogdmFsYXJyYXk8c2l6ZV90PigpOyB9CgogICAgaW5saW5lIHZhbGFy
cmF5PHNpemVfdD4KICAgIGdzbGljZTo6c3RyaWRlICgpIGNvbnN0CiAgICB7IHJldHVybiBfTV9p
bmRleCA/IF9NX2luZGV4LT5fTV9zdHJpZGUgOiB2YWxhcnJheTxzaXplX3Q+KCk7IH0KCiAgICBp
bmxpbmUgZ3NsaWNlOjpnc2xpY2UgKCkgOiBfTV9pbmRleCgwKSB7fQoKICAgIGlubGluZQogICAg
Z3NsaWNlOjpnc2xpY2Uoc2l6ZV90IF9fbywgY29uc3QgdmFsYXJyYXk8c2l6ZV90PiYgX19sLAog
ICAgICAgICAgICAgICAgICAgY29uc3QgdmFsYXJyYXk8c2l6ZV90PiYgX19zKQogICAgICAgICAg
ICA6IF9NX2luZGV4KG5ldyBnc2xpY2U6Ol9JbmRleGVyKF9fbywgX19sLCBfX3MpKSB7fQoKICAg
IGlubGluZQogICAgZ3NsaWNlOjpnc2xpY2UoY29uc3QgZ3NsaWNlJiBfX2cpIDogX01faW5kZXgo
X19nLl9NX2luZGV4KQogICAgeyBpZiAoX01faW5kZXgpIF9NX2luZGV4LT5fTV9pbmNyZW1lbnRf
dXNlKCk7IH0KCiAgICBpbmxpbmUKICAgIGdzbGljZTo6fmdzbGljZSgpCiAgICB7IGlmIChfTV9p
bmRleCAmJiBfTV9pbmRleC0+X01fZGVjcmVtZW50X3VzZSgpID09IDApIGRlbGV0ZSBfTV9pbmRl
eDsgfQoKICAgIGlubGluZSBnc2xpY2UmCiAgICBnc2xpY2U6Om9wZXJhdG9yPSAoY29uc3QgZ3Ns
aWNlJiBfX2cpCiAgICB7CiAgICAgICAgaWYgKF9fZy5fTV9pbmRleCkgX19nLl9NX2luZGV4LT5f
TV9pbmNyZW1lbnRfdXNlKCk7CiAgICAgICAgaWYgKF9NX2luZGV4ICYmIF9NX2luZGV4LT5fTV9k
ZWNyZW1lbnRfdXNlKCkgPT0gMCkgZGVsZXRlIF9NX2luZGV4OwogICAgICAgIF9NX2luZGV4ID0g
X19nLl9NX2luZGV4OwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCgp9CiMgMjU0ICIvdXNy
L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX3ZhbGFycmF5LmgiIDIgMwojIDEgIi91c3IvaW5jbHVk
ZS9nKystdjMvYml0cy9nc2xpY2VfYXJyYXkuaCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9nKyst
djMvYml0cy9nc2xpY2VfYXJyYXkuaCIgMwoKbmFtZXNwYWNlIHN0ZCB7CgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPiBjbGFzcyBnc2xpY2VfYXJyYXkKICAgIHsKICAgIHB1YmxpYzoKICAgICAg
ICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwoKICAgICAgICB2b2lkIG9wZXJhdG9yPSAoY29uc3Qg
dmFsYXJyYXk8X1RwPiYpIGNvbnN0OwogICAgICAgIHZvaWQgb3BlcmF0b3IqPSAoY29uc3QgdmFs
YXJyYXk8X1RwPiYpIGNvbnN0OwogICAgICAgIHZvaWQgb3BlcmF0b3IvPSAoY29uc3QgdmFsYXJy
YXk8X1RwPiYpIGNvbnN0OwogICAgICAgIHZvaWQgb3BlcmF0b3IlPSAoY29uc3QgdmFsYXJyYXk8
X1RwPiYpIGNvbnN0OwogICAgICAgIHZvaWQgb3BlcmF0b3IrPSAoY29uc3QgdmFsYXJyYXk8X1Rw
PiYpIGNvbnN0OwogICAgICAgIHZvaWQgb3BlcmF0b3ItPSAoY29uc3QgdmFsYXJyYXk8X1RwPiYp
IGNvbnN0OwogICAgICAgIHZvaWQgb3BlcmF0b3JePSAoY29uc3QgdmFsYXJyYXk8X1RwPiYpIGNv
bnN0OwogICAgICAgIHZvaWQgb3BlcmF0b3ImPSAoY29uc3QgdmFsYXJyYXk8X1RwPiYpIGNvbnN0
OwogICAgICAgIHZvaWQgb3BlcmF0b3J8PSAoY29uc3QgdmFsYXJyYXk8X1RwPiYpIGNvbnN0Owog
ICAgICAgIHZvaWQgb3BlcmF0b3I8PD0oY29uc3QgdmFsYXJyYXk8X1RwPiYpIGNvbnN0OwogICAg
ICAgIHZvaWQgb3BlcmF0b3I+Pj0oY29uc3QgdmFsYXJyYXk8X1RwPiYpIGNvbnN0OwogICAgICAg
IHZvaWQgb3BlcmF0b3I9KGNvbnN0IF9UcCYpOwoKICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9t
PgogICAgICAgIHZvaWQgb3BlcmF0b3I9IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mKSBjb25zdDsK
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZvaWQgb3BlcmF0b3IqPSAoY29u
c3QgX0V4cHI8X0RvbSxfVHA+JikgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4K
ICAgICAgICB2b2lkIG9wZXJhdG9yLz0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYpIGNvbnN0Owog
ICAgICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+CiAgICAgICAgdm9pZCBvcGVyYXRvciU9IChjb25z
dCBfRXhwcjxfRG9tLF9UcD4mKSBjb25zdDsKICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgog
ICAgICAgIHZvaWQgb3BlcmF0b3IrPSAoY29uc3QgX0V4cHI8X0RvbSxfVHA+JikgY29uc3Q7CiAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4KICAgICAgICB2b2lkIG9wZXJhdG9yLT0gKGNvbnN0
IF9FeHByPF9Eb20sX1RwPiYpIGNvbnN0OwogICAgICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+CiAg
ICAgICAgdm9pZCBvcGVyYXRvcl49IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mKSBjb25zdDsKICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZvaWQgb3BlcmF0b3ImPSAoY29uc3Qg
X0V4cHI8X0RvbSxfVHA+JikgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4KICAg
ICAgICB2b2lkIG9wZXJhdG9yfD0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYpIGNvbnN0OwogICAg
ICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+CiAgICAgICAgdm9pZCBvcGVyYXRvcjw8PSAoY29uc3Qg
X0V4cHI8X0RvbSxfVHA+JikgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4KICAg
ICAgICB2b2lkIG9wZXJhdG9yPj49IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mKSBjb25zdDsKCiAg
ICBwcml2YXRlOgogICAgICAgIF9BcnJheTxfVHA+IF9NX2FycmF5OwogICAgICAgIGNvbnN0IHZh
bGFycmF5PHNpemVfdD4mIF9NX2luZGV4OwoKICAgICAgICBmcmllbmQgY2xhc3MgdmFsYXJyYXk8
X1RwPjsKCiAgICAgICAgZ3NsaWNlX2FycmF5IChfQXJyYXk8X1RwPiwgY29uc3QgdmFsYXJyYXk8
c2l6ZV90PiYpOwoKCiAgICAgICAgZ3NsaWNlX2FycmF5IChjb25zdCBnc2xpY2VfYXJyYXkmKTsK
CgogICAgICAgIGdzbGljZV9hcnJheSgpOwogICAgICAgIGdzbGljZV9hcnJheSYgb3BlcmF0b3I9
IChjb25zdCBnc2xpY2VfYXJyYXkmKTsKICAgIH07CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgaW5saW5lCiAgICBnc2xpY2VfYXJyYXk8X1RwPjo6Z3NsaWNlX2FycmF5IChfQXJyYXk8
X1RwPiBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxh
cnJheTxzaXplX3Q+JiBfX2kpCiAgICAgICAgICAgIDogX01fYXJyYXkgKF9fYSksIF9NX2luZGV4
IChfX2kpIHt9CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZQogICAgZ3Ns
aWNlX2FycmF5PF9UcD46OmdzbGljZV9hcnJheSAoY29uc3QgZ3NsaWNlX2FycmF5PF9UcD4mIF9f
YSkKICAgICAgICAgICAgOiBfTV9hcnJheSAoX19hLl9NX2FycmF5KSwgX01faW5kZXggKF9fYS5f
TV9pbmRleCkge30KCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHZvaWQK
ICAgIGdzbGljZV9hcnJheTxfVHA+OjpvcGVyYXRvcj0gKGNvbnN0IF9UcCYgX190KQogICAgewog
ICAgICAgIF9fdmFsYXJyYXlfZmlsbCAoX01fYXJyYXksIF9BcnJheTxzaXplX3Q+KF9NX2luZGV4
KSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9NX2luZGV4LnNpemUoKSwgX190KTsKICAgIH0K
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdm9pZAogICAgZ3NsaWNlX2Fy
cmF5PF9UcD46Om9wZXJhdG9yPSAoY29uc3QgdmFsYXJyYXk8X1RwPiYgX192KSBjb25zdAogICAg
ewogICAgICAgIF9fdmFsYXJyYXlfY29weSAoX0FycmF5PF9UcD4gKF9fdiksIF9fdi5zaXplICgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgX01fYXJyYXksIF9BcnJheTxzaXplX3Q+KF9NX2lu
ZGV4KSk7CiAgICB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgdGVtcGxhdGU8Y2xh
c3MgRT4KICAgIGlubGluZSB2b2lkCiAgICBnc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3I9IChj
b25zdCBfRXhwcjxFLCBfVHA+JiBfX2UpIGNvbnN0CiAgICB7CiAgICAgICAgX192YWxhcnJheV9j
b3B5IChfX2UsIF9NX2luZGV4LnNpemUoKSwgX01fYXJyYXksCiAgICAgICAgICAgICAgICAgICAg
ICAgICBfQXJyYXk8c2l6ZV90PihfTV9pbmRleCkpOwogICAgfQojIDE1MiAiL3Vzci9pbmNsdWRl
L2crKy12My9iaXRzL2dzbGljZV9hcnJheS5oIiAzCnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5s
aW5lIHZvaWQgZ3NsaWNlX2FycmF5PF9UcD46Om9wZXJhdG9yICo9IChjb25zdCB2YWxhcnJheTxf
VHA+JiBfX3YpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9tdWx0aXBsaWVzIChfTV9hcnJheSwg
X0FycmF5PHNpemVfdD4oX01faW5kZXgpLCBfQXJyYXk8X1RwPiAoX192KSwgX192LnNpemUgKCkp
OyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdGVtcGxhdGU8Y2xhc3MgRT4gaW5saW5lIHZvaWQg
Z3NsaWNlX2FycmF5PF9UcD46Om9wZXJhdG9yICo9IChjb25zdCBfRXhwcjxFLCBfVHA+JiBfX2Up
IGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9tdWx0aXBsaWVzIChfTV9hcnJheSwgX0FycmF5PHNp
emVfdD4oX01faW5kZXgpLCBfX2UsIF9NX2luZGV4LnNpemUoKSk7IH0KdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPiBpbmxpbmUgdm9pZCBnc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3IgLz0gKGNvbnN0
IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX2RpdmlkZXMgKF9N
X2FycmF5LCBfQXJyYXk8c2l6ZV90PihfTV9pbmRleCksIF9BcnJheTxfVHA+IChfX3YpLCBfX3Yu
c2l6ZSAoKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBFPiBpbmxp
bmUgdm9pZCBnc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3IgLz0gKGNvbnN0IF9FeHByPEUsIF9U
cD4mIF9fZSkgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX2RpdmlkZXMgKF9NX2FycmF5LCBfQXJy
YXk8c2l6ZV90PihfTV9pbmRleCksIF9fZSwgX01faW5kZXguc2l6ZSgpKTsgfQp0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIGdzbGljZV9hcnJheTxfVHA+OjpvcGVyYXRvciAlPSAo
Y29uc3QgdmFsYXJyYXk8X1RwPiYgX192KSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfbW9kdWx1
cyAoX01fYXJyYXksIF9BcnJheTxzaXplX3Q+KF9NX2luZGV4KSwgX0FycmF5PF9UcD4gKF9fdiks
IF9fdi5zaXplICgpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHRlbXBsYXRlPGNsYXNzIEU+
IGlubGluZSB2b2lkIGdzbGljZV9hcnJheTxfVHA+OjpvcGVyYXRvciAlPSAoY29uc3QgX0V4cHI8
RSwgX1RwPiYgX19lKSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfbW9kdWx1cyAoX01fYXJyYXks
IF9BcnJheTxzaXplX3Q+KF9NX2luZGV4KSwgX19lLCBfTV9pbmRleC5zaXplKCkpOyB9CnRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgZ3NsaWNlX2FycmF5PF9UcD46Om9wZXJhdG9y
ICs9IChjb25zdCB2YWxhcnJheTxfVHA+JiBfX3YpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9w
bHVzIChfTV9hcnJheSwgX0FycmF5PHNpemVfdD4oX01faW5kZXgpLCBfQXJyYXk8X1RwPiAoX192
KSwgX192LnNpemUgKCkpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdGVtcGxhdGU8Y2xhc3Mg
RT4gaW5saW5lIHZvaWQgZ3NsaWNlX2FycmF5PF9UcD46Om9wZXJhdG9yICs9IChjb25zdCBfRXhw
cjxFLCBfVHA+JiBfX2UpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9wbHVzIChfTV9hcnJheSwg
X0FycmF5PHNpemVfdD4oX01faW5kZXgpLCBfX2UsIF9NX2luZGV4LnNpemUoKSk7IH0KdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBnc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3Ig
LT0gKGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX21p
bnVzIChfTV9hcnJheSwgX0FycmF5PHNpemVfdD4oX01faW5kZXgpLCBfQXJyYXk8X1RwPiAoX192
KSwgX192LnNpemUgKCkpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdGVtcGxhdGU8Y2xhc3Mg
RT4gaW5saW5lIHZvaWQgZ3NsaWNlX2FycmF5PF9UcD46Om9wZXJhdG9yIC09IChjb25zdCBfRXhw
cjxFLCBfVHA+JiBfX2UpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9taW51cyAoX01fYXJyYXks
IF9BcnJheTxzaXplX3Q+KF9NX2luZGV4KSwgX19lLCBfTV9pbmRleC5zaXplKCkpOyB9CnRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgZ3NsaWNlX2FycmF5PF9UcD46Om9wZXJhdG9y
IF49IChjb25zdCB2YWxhcnJheTxfVHA+JiBfX3YpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF94
b3IgKF9NX2FycmF5LCBfQXJyYXk8c2l6ZV90PihfTV9pbmRleCksIF9BcnJheTxfVHA+IChfX3Yp
LCBfX3Yuc2l6ZSAoKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBF
PiBpbmxpbmUgdm9pZCBnc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3IgXj0gKGNvbnN0IF9FeHBy
PEUsIF9UcD4mIF9fZSkgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX3hvciAoX01fYXJyYXksIF9B
cnJheTxzaXplX3Q+KF9NX2luZGV4KSwgX19lLCBfTV9pbmRleC5zaXplKCkpOyB9CnRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgZ3NsaWNlX2FycmF5PF9UcD46Om9wZXJhdG9yICY9
IChjb25zdCB2YWxhcnJheTxfVHA+JiBfX3YpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9hbmQg
KF9NX2FycmF5LCBfQXJyYXk8c2l6ZV90PihfTV9pbmRleCksIF9BcnJheTxfVHA+IChfX3YpLCBf
X3Yuc2l6ZSAoKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBFPiBp
bmxpbmUgdm9pZCBnc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3IgJj0gKGNvbnN0IF9FeHByPEUs
IF9UcD4mIF9fZSkgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX2FuZCAoX01fYXJyYXksIF9BcnJh
eTxzaXplX3Q+KF9NX2luZGV4KSwgX19lLCBfTV9pbmRleC5zaXplKCkpOyB9CnRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgZ3NsaWNlX2FycmF5PF9UcD46Om9wZXJhdG9yIHw9IChj
b25zdCB2YWxhcnJheTxfVHA+JiBfX3YpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9vciAoX01f
YXJyYXksIF9BcnJheTxzaXplX3Q+KF9NX2luZGV4KSwgX0FycmF5PF9UcD4gKF9fdiksIF9fdi5z
aXplICgpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHRlbXBsYXRlPGNsYXNzIEU+IGlubGlu
ZSB2b2lkIGdzbGljZV9hcnJheTxfVHA+OjpvcGVyYXRvciB8PSAoY29uc3QgX0V4cHI8RSwgX1Rw
PiYgX19lKSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfb3IgKF9NX2FycmF5LCBfQXJyYXk8c2l6
ZV90PihfTV9pbmRleCksIF9fZSwgX01faW5kZXguc2l6ZSgpKTsgfQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+IGlubGluZSB2b2lkIGdzbGljZV9hcnJheTxfVHA+OjpvcGVyYXRvciA8PD0gKGNvbnN0
IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX3NoaWZ0X2xlZnQg
KF9NX2FycmF5LCBfQXJyYXk8c2l6ZV90PihfTV9pbmRleCksIF9BcnJheTxfVHA+IChfX3YpLCBf
X3Yuc2l6ZSAoKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBFPiBp
bmxpbmUgdm9pZCBnc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0b3IgPDw9IChjb25zdCBfRXhwcjxF
LCBfVHA+JiBfX2UpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9zaGlmdF9sZWZ0IChfTV9hcnJh
eSwgX0FycmF5PHNpemVfdD4oX01faW5kZXgpLCBfX2UsIF9NX2luZGV4LnNpemUoKSk7IH0KdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBnc2xpY2VfYXJyYXk8X1RwPjo6b3BlcmF0
b3IgPj49IChjb25zdCB2YWxhcnJheTxfVHA+JiBfX3YpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRl
ZF9zaGlmdF9yaWdodCAoX01fYXJyYXksIF9BcnJheTxzaXplX3Q+KF9NX2luZGV4KSwgX0FycmF5
PF9UcD4gKF9fdiksIF9fdi5zaXplICgpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHRlbXBs
YXRlPGNsYXNzIEU+IGlubGluZSB2b2lkIGdzbGljZV9hcnJheTxfVHA+OjpvcGVyYXRvciA+Pj0g
KGNvbnN0IF9FeHByPEUsIF9UcD4mIF9fZSkgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX3NoaWZ0
X3JpZ2h0IChfTV9hcnJheSwgX0FycmF5PHNpemVfdD4oX01faW5kZXgpLCBfX2UsIF9NX2luZGV4
LnNpemUoKSk7IH0KCgoKfQojIDI1NSAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF92YWxh
cnJheS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvbWFza19hcnJheS5oIiAx
IDMKIyAzNiAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL21hc2tfYXJyYXkuaCIgMwoKbmFtZXNw
YWNlIHN0ZCB7CgogICAgdGVtcGxhdGUgPGNsYXNzIF9UcD4gY2xhc3MgbWFza19hcnJheQogICAg
ewogICAgcHVibGljOgogICAgICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CgogICAgICAgIHZv
aWQgb3BlcmF0b3I9IChjb25zdCB2YWxhcnJheTxfVHA+JikgY29uc3Q7CiAgICAgICAgdm9pZCBv
cGVyYXRvcio9IChjb25zdCB2YWxhcnJheTxfVHA+JikgY29uc3Q7CiAgICAgICAgdm9pZCBvcGVy
YXRvci89IChjb25zdCB2YWxhcnJheTxfVHA+JikgY29uc3Q7CiAgICAgICAgdm9pZCBvcGVyYXRv
ciU9IChjb25zdCB2YWxhcnJheTxfVHA+JikgY29uc3Q7CiAgICAgICAgdm9pZCBvcGVyYXRvcis9
IChjb25zdCB2YWxhcnJheTxfVHA+JikgY29uc3Q7CiAgICAgICAgdm9pZCBvcGVyYXRvci09IChj
b25zdCB2YWxhcnJheTxfVHA+JikgY29uc3Q7CiAgICAgICAgdm9pZCBvcGVyYXRvcl49IChjb25z
dCB2YWxhcnJheTxfVHA+JikgY29uc3Q7CiAgICAgICAgdm9pZCBvcGVyYXRvciY9IChjb25zdCB2
YWxhcnJheTxfVHA+JikgY29uc3Q7CiAgICAgICAgdm9pZCBvcGVyYXRvcnw9IChjb25zdCB2YWxh
cnJheTxfVHA+JikgY29uc3Q7CiAgICAgICAgdm9pZCBvcGVyYXRvcjw8PShjb25zdCB2YWxhcnJh
eTxfVHA+JikgY29uc3Q7CiAgICAgICAgdm9pZCBvcGVyYXRvcj4+PShjb25zdCB2YWxhcnJheTxf
VHA+JikgY29uc3Q7CiAgICAgICAgdm9pZCBvcGVyYXRvcj0gKGNvbnN0IF9UcCYpOwoKCgogICAg
ICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+CiAgICAgICAgdm9pZCBvcGVyYXRvcj0gKGNvbnN0IF9F
eHByPF9Eb20sX1RwPiYpIGNvbnN0OwogICAgICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+CiAgICAg
ICAgdm9pZCBvcGVyYXRvcio9IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mKSBjb25zdDsKICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZvaWQgb3BlcmF0b3IvPSAoY29uc3QgX0V4
cHI8X0RvbSxfVHA+JikgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4KICAgICAg
ICB2b2lkIG9wZXJhdG9yJT0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYpIGNvbnN0OwogICAgICAg
IHRlbXBsYXRlPGNsYXNzIF9Eb20+CiAgICAgICAgdm9pZCBvcGVyYXRvcis9IChjb25zdCBfRXhw
cjxfRG9tLF9UcD4mKSBjb25zdDsKICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAg
IHZvaWQgb3BlcmF0b3ItPSAoY29uc3QgX0V4cHI8X0RvbSxfVHA+JikgY29uc3Q7CiAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgX0RvbT4KICAgICAgICB2b2lkIG9wZXJhdG9yXj0gKGNvbnN0IF9FeHBy
PF9Eb20sX1RwPiYpIGNvbnN0OwogICAgICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+CiAgICAgICAg
dm9pZCBvcGVyYXRvciY9IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mKSBjb25zdDsKICAgICAgICB0
ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZvaWQgb3BlcmF0b3J8PSAoY29uc3QgX0V4cHI8
X0RvbSxfVHA+JikgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4KICAgICAgICB2
b2lkIG9wZXJhdG9yPDw9KGNvbnN0IF9FeHByPF9Eb20sX1RwPiYpIGNvbnN0OwogICAgICAgIHRl
bXBsYXRlPGNsYXNzIF9Eb20+CiAgICAgICAgdm9pZCBvcGVyYXRvcj4+PShjb25zdCBfRXhwcjxf
RG9tLF9UcD4mKSBjb25zdDsKCiAgICBwcml2YXRlOgogICAgICAgIG1hc2tfYXJyYXkgKF9BcnJh
eTxfVHA+LCBzaXplX3QsIF9BcnJheTxib29sPik7CiAgICAgICAgZnJpZW5kIGNsYXNzIHZhbGFy
cmF5PF9UcD47CgogICAgICAgIGNvbnN0IHNpemVfdCBfTV9zejsKICAgICAgICBjb25zdCBfQXJy
YXk8Ym9vbD4gX01fbWFzazsKICAgICAgICBjb25zdCBfQXJyYXk8X1RwPiBfTV9hcnJheTsKCiAg
ICAgICAgbWFza19hcnJheSAoY29uc3QgbWFza19hcnJheSYpOwoKCiAgICAgICAgbWFza19hcnJh
eSAoKTsKICAgICAgICBtYXNrX2FycmF5JiBvcGVyYXRvcj0gKGNvbnN0IG1hc2tfYXJyYXkmKTsK
ICAgIH07CgoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBtYXNrX2FycmF5
PF9UcD46Om1hc2tfYXJyYXkgKGNvbnN0IG1hc2tfYXJyYXk8X1RwPiYgYSkKICAgICAgICAgICAg
OiBfTV9zeiAoYS5fTV9zeiksIF9NX21hc2sgKGEuX01fbWFzayksIF9NX2FycmF5IChhLl9NX2Fy
cmF5KSB7fQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZQogICAgbWFza19h
cnJheTxfVHA+OjptYXNrX2FycmF5IChfQXJyYXk8X1RwPiBfX2EsIHNpemVfdCBfX3MsIF9BcnJh
eTxib29sPiBfX20pCiAgICAgICAgICAgIDogX01fc3ogKF9fcyksIF9NX21hc2sgKF9fbSksIF9N
X2FycmF5IChfX2EpIHt9CgoKCgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5l
IHZvaWQKICAgIG1hc2tfYXJyYXk8X1RwPjo6b3BlcmF0b3I9IChjb25zdCBfVHAmIF9fdCkKICAg
IHsgX192YWxhcnJheV9maWxsIChfTV9hcnJheSwgX01fc3osIF9NX21hc2ssIF9fdCk7IH0KCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdm9pZAogICAgbWFza19hcnJheTxf
VHA+OjpvcGVyYXRvcj0gKGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QKICAgIHsgX192
YWxhcnJheV9jb3B5IChfQXJyYXk8X1RwPiAoX192KSwgX192LnNpemUgKCksIF9NX2FycmF5LCBf
TV9tYXNrKTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHRlbXBsYXRlPGNsYXNz
IEU+CiAgICBpbmxpbmUgdm9pZAogICAgbWFza19hcnJheTxfVHA+OjpvcGVyYXRvcj0gKGNvbnN0
IF9FeHByPEUsIF9UcD4mIF9fZSkgY29uc3QKICAgIHsgX192YWxhcnJheV9jb3B5IChfX2UsIF9f
ZS5zaXplICgpLCBfTV9hcnJheSwgX01fbWFzayk7IH0KIyAxNDMgIi91c3IvaW5jbHVkZS9nKyst
djMvYml0cy9tYXNrX2FycmF5LmgiIDMKdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9p
ZCBtYXNrX2FycmF5PF9UcD46Om9wZXJhdG9yICo9IChjb25zdCB2YWxhcnJheTxfVHA+JiBfX3Yp
IGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9tdWx0aXBsaWVzIChfTV9hcnJheSwgX01fbWFzaywg
X0FycmF5PF9UcD4gKF9fdiksIF9fdi5zaXplICgpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
IHRlbXBsYXRlPGNsYXNzIEU+IGlubGluZSB2b2lkIG1hc2tfYXJyYXk8X1RwPjo6b3BlcmF0b3Ig
Kj0gKGNvbnN0IF9FeHByPEUsIF9UcD4mIF9fZSkgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX211
bHRpcGxpZXMgKF9NX2FycmF5LCBfTV9tYXNrLCBfX2UsIF9fZS5zaXplICgpKTsgfQp0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIG1hc2tfYXJyYXk8X1RwPjo6b3BlcmF0b3IgLz0g
KGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX2Rpdmlk
ZXMgKF9NX2FycmF5LCBfTV9tYXNrLCBfQXJyYXk8X1RwPiAoX192KSwgX192LnNpemUgKCkpOyB9
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdGVtcGxhdGU8Y2xhc3MgRT4gaW5saW5lIHZvaWQgbWFz
a19hcnJheTxfVHA+OjpvcGVyYXRvciAvPSAoY29uc3QgX0V4cHI8RSwgX1RwPiYgX19lKSBjb25z
dCB7IF9BcnJheV9hdWdtZW50ZWRfZGl2aWRlcyAoX01fYXJyYXksIF9NX21hc2ssIF9fZSwgX19l
LnNpemUgKCkpOyB9CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgbWFza19hcnJh
eTxfVHA+OjpvcGVyYXRvciAlPSAoY29uc3QgdmFsYXJyYXk8X1RwPiYgX192KSBjb25zdCB7IF9B
cnJheV9hdWdtZW50ZWRfbW9kdWx1cyAoX01fYXJyYXksIF9NX21hc2ssIF9BcnJheTxfVHA+IChf
X3YpLCBfX3Yuc2l6ZSAoKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxjbGFz
cyBFPiBpbmxpbmUgdm9pZCBtYXNrX2FycmF5PF9UcD46Om9wZXJhdG9yICU9IChjb25zdCBfRXhw
cjxFLCBfVHA+JiBfX2UpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9tb2R1bHVzIChfTV9hcnJh
eSwgX01fbWFzaywgX19lLCBfX2Uuc2l6ZSAoKSk7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBp
bmxpbmUgdm9pZCBtYXNrX2FycmF5PF9UcD46Om9wZXJhdG9yICs9IChjb25zdCB2YWxhcnJheTxf
VHA+JiBfX3YpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9wbHVzIChfTV9hcnJheSwgX01fbWFz
aywgX0FycmF5PF9UcD4gKF9fdiksIF9fdi5zaXplICgpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+IHRlbXBsYXRlPGNsYXNzIEU+IGlubGluZSB2b2lkIG1hc2tfYXJyYXk8X1RwPjo6b3BlcmF0
b3IgKz0gKGNvbnN0IF9FeHByPEUsIF9UcD4mIF9fZSkgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVk
X3BsdXMgKF9NX2FycmF5LCBfTV9tYXNrLCBfX2UsIF9fZS5zaXplICgpKTsgfQp0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIG1hc2tfYXJyYXk8X1RwPjo6b3BlcmF0b3IgLT0gKGNv
bnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX21pbnVzIChf
TV9hcnJheSwgX01fbWFzaywgX0FycmF5PF9UcD4gKF9fdiksIF9fdi5zaXplICgpKTsgfSB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+IHRlbXBsYXRlPGNsYXNzIEU+IGlubGluZSB2b2lkIG1hc2tfYXJy
YXk8X1RwPjo6b3BlcmF0b3IgLT0gKGNvbnN0IF9FeHByPEUsIF9UcD4mIF9fZSkgY29uc3QgeyBf
QXJyYXlfYXVnbWVudGVkX21pbnVzIChfTV9hcnJheSwgX01fbWFzaywgX19lLCBfX2Uuc2l6ZSAo
KSk7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBtYXNrX2FycmF5PF9UcD46
Om9wZXJhdG9yIF49IChjb25zdCB2YWxhcnJheTxfVHA+JiBfX3YpIGNvbnN0IHsgX0FycmF5X2F1
Z21lbnRlZF94b3IgKF9NX2FycmF5LCBfTV9tYXNrLCBfQXJyYXk8X1RwPiAoX192KSwgX192LnNp
emUgKCkpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdGVtcGxhdGU8Y2xhc3MgRT4gaW5saW5l
IHZvaWQgbWFza19hcnJheTxfVHA+OjpvcGVyYXRvciBePSAoY29uc3QgX0V4cHI8RSwgX1RwPiYg
X19lKSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfeG9yIChfTV9hcnJheSwgX01fbWFzaywgX19l
LCBfX2Uuc2l6ZSAoKSk7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBtYXNr
X2FycmF5PF9UcD46Om9wZXJhdG9yICY9IChjb25zdCB2YWxhcnJheTxfVHA+JiBfX3YpIGNvbnN0
IHsgX0FycmF5X2F1Z21lbnRlZF9hbmQgKF9NX2FycmF5LCBfTV9tYXNrLCBfQXJyYXk8X1RwPiAo
X192KSwgX192LnNpemUgKCkpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdGVtcGxhdGU8Y2xh
c3MgRT4gaW5saW5lIHZvaWQgbWFza19hcnJheTxfVHA+OjpvcGVyYXRvciAmPSAoY29uc3QgX0V4
cHI8RSwgX1RwPiYgX19lKSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfYW5kIChfTV9hcnJheSwg
X01fbWFzaywgX19lLCBfX2Uuc2l6ZSAoKSk7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxp
bmUgdm9pZCBtYXNrX2FycmF5PF9UcD46Om9wZXJhdG9yIHw9IChjb25zdCB2YWxhcnJheTxfVHA+
JiBfX3YpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9vciAoX01fYXJyYXksIF9NX21hc2ssIF9B
cnJheTxfVHA+IChfX3YpLCBfX3Yuc2l6ZSAoKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0
ZW1wbGF0ZTxjbGFzcyBFPiBpbmxpbmUgdm9pZCBtYXNrX2FycmF5PF9UcD46Om9wZXJhdG9yIHw9
IChjb25zdCBfRXhwcjxFLCBfVHA+JiBfX2UpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9vciAo
X01fYXJyYXksIF9NX21hc2ssIF9fZSwgX19lLnNpemUgKCkpOyB9CnRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4gaW5saW5lIHZvaWQgbWFza19hcnJheTxfVHA+OjpvcGVyYXRvciA8PD0gKGNvbnN0IHZh
bGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX3NoaWZ0X2xlZnQgKF9N
X2FycmF5LCBfTV9tYXNrLCBfQXJyYXk8X1RwPiAoX192KSwgX192LnNpemUgKCkpOyB9IHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4gdGVtcGxhdGU8Y2xhc3MgRT4gaW5saW5lIHZvaWQgbWFza19hcnJh
eTxfVHA+OjpvcGVyYXRvciA8PD0gKGNvbnN0IF9FeHByPEUsIF9UcD4mIF9fZSkgY29uc3QgeyBf
QXJyYXlfYXVnbWVudGVkX3NoaWZ0X2xlZnQgKF9NX2FycmF5LCBfTV9tYXNrLCBfX2UsIF9fZS5z
aXplICgpKTsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSB2b2lkIG1hc2tfYXJyYXk8
X1RwPjo6b3BlcmF0b3IgPj49IChjb25zdCB2YWxhcnJheTxfVHA+JiBfX3YpIGNvbnN0IHsgX0Fy
cmF5X2F1Z21lbnRlZF9zaGlmdF9yaWdodCAoX01fYXJyYXksIF9NX21hc2ssIF9BcnJheTxfVHA+
IChfX3YpLCBfX3Yuc2l6ZSAoKSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxj
bGFzcyBFPiBpbmxpbmUgdm9pZCBtYXNrX2FycmF5PF9UcD46Om9wZXJhdG9yID4+PSAoY29uc3Qg
X0V4cHI8RSwgX1RwPiYgX19lKSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfc2hpZnRfcmlnaHQg
KF9NX2FycmF5LCBfTV9tYXNrLCBfX2UsIF9fZS5zaXplICgpKTsgfQoKCgp9CiMgMjU2ICIvdXNy
L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX3ZhbGFycmF5LmgiIDIgMwojIDEgIi91c3IvaW5jbHVk
ZS9nKystdjMvYml0cy9pbmRpcmVjdF9hcnJheS5oIiAxIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2cr
Ky12My9iaXRzL2luZGlyZWN0X2FycmF5LmgiIDMKCm5hbWVzcGFjZSBzdGQgewoKICAgIHRlbXBs
YXRlIDxjbGFzcyBfVHA+IGNsYXNzIGluZGlyZWN0X2FycmF5CiAgICB7CiAgICBwdWJsaWM6CiAg
ICAgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKCiAgICAgICAgdm9pZCBvcGVyYXRvcj0gKGNv
bnN0IHZhbGFycmF5PF9UcD4mKSBjb25zdDsKICAgICAgICB2b2lkIG9wZXJhdG9yKj0gKGNvbnN0
IHZhbGFycmF5PF9UcD4mKSBjb25zdDsKICAgICAgICB2b2lkIG9wZXJhdG9yLz0gKGNvbnN0IHZh
bGFycmF5PF9UcD4mKSBjb25zdDsKICAgICAgICB2b2lkIG9wZXJhdG9yJT0gKGNvbnN0IHZhbGFy
cmF5PF9UcD4mKSBjb25zdDsKICAgICAgICB2b2lkIG9wZXJhdG9yKz0gKGNvbnN0IHZhbGFycmF5
PF9UcD4mKSBjb25zdDsKICAgICAgICB2b2lkIG9wZXJhdG9yLT0gKGNvbnN0IHZhbGFycmF5PF9U
cD4mKSBjb25zdDsKICAgICAgICB2b2lkIG9wZXJhdG9yXj0gKGNvbnN0IHZhbGFycmF5PF9UcD4m
KSBjb25zdDsKICAgICAgICB2b2lkIG9wZXJhdG9yJj0gKGNvbnN0IHZhbGFycmF5PF9UcD4mKSBj
b25zdDsKICAgICAgICB2b2lkIG9wZXJhdG9yfD0gKGNvbnN0IHZhbGFycmF5PF9UcD4mKSBjb25z
dDsKICAgICAgICB2b2lkIG9wZXJhdG9yPDw9IChjb25zdCB2YWxhcnJheTxfVHA+JikgY29uc3Q7
CiAgICAgICAgdm9pZCBvcGVyYXRvcj4+PSAoY29uc3QgdmFsYXJyYXk8X1RwPiYpIGNvbnN0Owog
ICAgICAgIHZvaWQgb3BlcmF0b3I9IChjb25zdCBfVHAmKTsKCgogICAgICAgIHRlbXBsYXRlPGNs
YXNzIF9Eb20+CiAgICAgICAgdm9pZCBvcGVyYXRvcj0gKGNvbnN0IF9FeHByPF9Eb20sIF9UcD4m
KSBjb25zdDsKICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZvaWQgb3BlcmF0
b3IqPSAoY29uc3QgX0V4cHI8X0RvbSwgX1RwPiYpIGNvbnN0OwogICAgICAgIHRlbXBsYXRlPGNs
YXNzIF9Eb20+CiAgICAgICAgdm9pZCBvcGVyYXRvci89IChjb25zdCBfRXhwcjxfRG9tLCBfVHA+
JikgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4KICAgICAgICB2b2lkIG9wZXJh
dG9yJT0gKGNvbnN0IF9FeHByPF9Eb20sIF9UcD4mKSBjb25zdDsKICAgICAgICB0ZW1wbGF0ZTxj
bGFzcyBfRG9tPgogICAgICAgIHZvaWQgb3BlcmF0b3IrPSAoY29uc3QgX0V4cHI8X0RvbSwgX1Rw
PiYpIGNvbnN0OwogICAgICAgIHRlbXBsYXRlPGNsYXNzIF9Eb20+CiAgICAgICAgdm9pZCBvcGVy
YXRvci09IChjb25zdCBfRXhwcjxfRG9tLCBfVHA+JikgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgX0RvbT4KICAgICAgICB2b2lkIG9wZXJhdG9yXj0gKGNvbnN0IF9FeHByPF9Eb20sIF9U
cD4mKSBjb25zdDsKICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogICAgICAgIHZvaWQgb3Bl
cmF0b3ImPSAoY29uc3QgX0V4cHI8X0RvbSwgX1RwPiYpIGNvbnN0OwogICAgICAgIHRlbXBsYXRl
PGNsYXNzIF9Eb20+CiAgICAgICAgdm9pZCBvcGVyYXRvcnw9IChjb25zdCBfRXhwcjxfRG9tLCBf
VHA+JikgY29uc3Q7CiAgICAgICAgdGVtcGxhdGU8Y2xhc3MgX0RvbT4KICAgICAgICB2b2lkIG9w
ZXJhdG9yPDw9IChjb25zdCBfRXhwcjxfRG9tLCBfVHA+JikgY29uc3Q7CiAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgX0RvbT4KICAgICAgICB2b2lkIG9wZXJhdG9yPj49IChjb25zdCBfRXhwcjxfRG9t
LCBfVHA+JikgY29uc3Q7CgogICAgcHJpdmF0ZToKICAgIGluZGlyZWN0X2FycmF5IChjb25zdCBp
bmRpcmVjdF9hcnJheSYpOwogICAgaW5kaXJlY3RfYXJyYXkgKF9BcnJheTxfVHA+LCBzaXplX3Qs
IF9BcnJheTxzaXplX3Q+KTsKCiAgICBmcmllbmQgY2xhc3MgdmFsYXJyYXk8X1RwPjsKICAgIGZy
aWVuZCBjbGFzcyBnc2xpY2VfYXJyYXk8X1RwPjsKCiAgICBjb25zdCBzaXplX3QgX01fc3o7CiAg
ICBjb25zdCBfQXJyYXk8c2l6ZV90PiBfTV9pbmRleDsKICAgIGNvbnN0IF9BcnJheTxfVHA+IF9N
X2FycmF5OwoKCiAgICAgICAgaW5kaXJlY3RfYXJyYXkgKCk7CiAgICAgICAgaW5kaXJlY3RfYXJy
YXkmIG9wZXJhdG9yPSAoY29uc3QgaW5kaXJlY3RfYXJyYXkmKTsKICAgIH07CgogICAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGluZGlyZWN0X2FycmF5PF9UcD46OmluZGlyZWN0
X2FycmF5KGNvbnN0IGluZGlyZWN0X2FycmF5PF9UcD4mIF9fYSkKICAgICAgICAgICAgOiBfTV9z
eiAoX19hLl9NX3N6KSwgX01faW5kZXggKF9fYS5fTV9pbmRleCksCiAgICAgICAgICAgICAgX01f
YXJyYXkgKF9fYS5fTV9hcnJheSkge30KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBp
bmxpbmUKICAgIGluZGlyZWN0X2FycmF5PF9UcD46OmluZGlyZWN0X2FycmF5IChfQXJyYXk8X1Rw
PiBfX2EsIHNpemVfdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0FycmF5PHNpemVfdD4gX19pKQogICAgICAgICAgICA6IF9NX3N6IChfX3MpLCBfTV9pbmRl
eCAoX19pKSwgX01fYXJyYXkgKF9fYSkge30KCgoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICBpbmxpbmUgdm9pZAogICAgaW5kaXJlY3RfYXJyYXk8X1RwPjo6b3BlcmF0b3I9IChjb25z
dCBfVHAmIF9fdCkKICAgIHsgX192YWxhcnJheV9maWxsKF9NX2FycmF5LCBfTV9pbmRleCwgX01f
c3osIF9fdCk7IH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdm9pZAog
ICAgaW5kaXJlY3RfYXJyYXk8X1RwPjo6b3BlcmF0b3I9IChjb25zdCB2YWxhcnJheTxfVHA+JiBf
X3YpIGNvbnN0CiAgICB7IF9fdmFsYXJyYXlfY29weSAoX0FycmF5PF9UcD4gKF9fdiksIF9NX3N6
LCBfTV9hcnJheSwgX01faW5kZXgpOyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
dGVtcGxhdGU8Y2xhc3MgX0RvbT4KICAgIGlubGluZSB2b2lkCiAgICBpbmRpcmVjdF9hcnJheTxf
VHA+OjpvcGVyYXRvcj0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYgX19lKSBjb25zdAogICAgeyBf
X3ZhbGFycmF5X2NvcHkgKF9fZSwgX01fc3osIF9NX2FycmF5LCBfTV9pbmRleCk7IH0KIyAxNDMg
Ii91c3IvaW5jbHVkZS9nKystdjMvYml0cy9pbmRpcmVjdF9hcnJheS5oIiAzCnRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgaW5kaXJlY3RfYXJyYXk8X1RwPjo6b3BlcmF0b3IgKj0g
KGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX211bHRp
cGxpZXMgKF9NX2FycmF5LCBfTV9pbmRleCwgX0FycmF5PF9UcD4gKF9fdiksIF9NX3N6KTsgfSB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlubGluZSB2b2lkIGlu
ZGlyZWN0X2FycmF5PF9UcD46Om9wZXJhdG9yICo9IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mIF9f
ZSkgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX211bHRpcGxpZXMgKF9NX2FycmF5LCBfTV9pbmRl
eCwgX19lLCBfTV9zeik7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBpbmRp
cmVjdF9hcnJheTxfVHA+OjpvcGVyYXRvciAvPSAoY29uc3QgdmFsYXJyYXk8X1RwPiYgX192KSBj
b25zdCB7IF9BcnJheV9hdWdtZW50ZWRfZGl2aWRlcyAoX01fYXJyYXksIF9NX2luZGV4LCBfQXJy
YXk8X1RwPiAoX192KSwgX01fc3opOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdGVtcGxhdGU8
Y2xhc3MgX0RvbT4gaW5saW5lIHZvaWQgaW5kaXJlY3RfYXJyYXk8X1RwPjo6b3BlcmF0b3IgLz0g
KGNvbnN0IF9FeHByPF9Eb20sX1RwPiYgX19lKSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfZGl2
aWRlcyAoX01fYXJyYXksIF9NX2luZGV4LCBfX2UsIF9NX3N6KTsgfQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+IGlubGluZSB2b2lkIGluZGlyZWN0X2FycmF5PF9UcD46Om9wZXJhdG9yICU9IChjb25z
dCB2YWxhcnJheTxfVHA+JiBfX3YpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9tb2R1bHVzIChf
TV9hcnJheSwgX01faW5kZXgsIF9BcnJheTxfVHA+IChfX3YpLCBfTV9zeik7IH0gdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgdm9pZCBpbmRpcmVjdF9h
cnJheTxfVHA+OjpvcGVyYXRvciAlPSAoY29uc3QgX0V4cHI8X0RvbSxfVHA+JiBfX2UpIGNvbnN0
IHsgX0FycmF5X2F1Z21lbnRlZF9tb2R1bHVzIChfTV9hcnJheSwgX01faW5kZXgsIF9fZSwgX01f
c3opOyB9CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgaW5kaXJlY3RfYXJyYXk8
X1RwPjo6b3BlcmF0b3IgKz0gKGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJy
YXlfYXVnbWVudGVkX3BsdXMgKF9NX2FycmF5LCBfTV9pbmRleCwgX0FycmF5PF9UcD4gKF9fdiks
IF9NX3N6KTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHRlbXBsYXRlPGNsYXNzIF9Eb20+IGlu
bGluZSB2b2lkIGluZGlyZWN0X2FycmF5PF9UcD46Om9wZXJhdG9yICs9IChjb25zdCBfRXhwcjxf
RG9tLF9UcD4mIF9fZSkgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX3BsdXMgKF9NX2FycmF5LCBf
TV9pbmRleCwgX19lLCBfTV9zeik7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9p
ZCBpbmRpcmVjdF9hcnJheTxfVHA+OjpvcGVyYXRvciAtPSAoY29uc3QgdmFsYXJyYXk8X1RwPiYg
X192KSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfbWludXMgKF9NX2FycmF5LCBfTV9pbmRleCwg
X0FycmF5PF9UcD4gKF9fdiksIF9NX3N6KTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IHRlbXBs
YXRlPGNsYXNzIF9Eb20+IGlubGluZSB2b2lkIGluZGlyZWN0X2FycmF5PF9UcD46Om9wZXJhdG9y
IC09IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mIF9fZSkgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVk
X21pbnVzIChfTV9hcnJheSwgX01faW5kZXgsIF9fZSwgX01fc3opOyB9CnRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4gaW5saW5lIHZvaWQgaW5kaXJlY3RfYXJyYXk8X1RwPjo6b3BlcmF0b3IgXj0gKGNv
bnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVnbWVudGVkX3hvciAoX01f
YXJyYXksIF9NX2luZGV4LCBfQXJyYXk8X1RwPiAoX192KSwgX01fc3opOyB9IHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIHZvaWQgaW5kaXJlY3RfYXJy
YXk8X1RwPjo6b3BlcmF0b3IgXj0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiYgX19lKSBjb25zdCB7
IF9BcnJheV9hdWdtZW50ZWRfeG9yIChfTV9hcnJheSwgX01faW5kZXgsIF9fZSwgX01fc3opOyB9
CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgaW5kaXJlY3RfYXJyYXk8X1RwPjo6
b3BlcmF0b3IgJj0gKGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlfYXVn
bWVudGVkX2FuZCAoX01fYXJyYXksIF9NX2luZGV4LCBfQXJyYXk8X1RwPiAoX192KSwgX01fc3op
OyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIHZv
aWQgaW5kaXJlY3RfYXJyYXk8X1RwPjo6b3BlcmF0b3IgJj0gKGNvbnN0IF9FeHByPF9Eb20sX1Rw
PiYgX19lKSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfYW5kIChfTV9hcnJheSwgX01faW5kZXgs
IF9fZSwgX01fc3opOyB9CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIHZvaWQgaW5kaXJl
Y3RfYXJyYXk8X1RwPjo6b3BlcmF0b3IgfD0gKGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29u
c3QgeyBfQXJyYXlfYXVnbWVudGVkX29yIChfTV9hcnJheSwgX01faW5kZXgsIF9BcnJheTxfVHA+
IChfX3YpLCBfTV9zeik7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBf
RG9tPiBpbmxpbmUgdm9pZCBpbmRpcmVjdF9hcnJheTxfVHA+OjpvcGVyYXRvciB8PSAoY29uc3Qg
X0V4cHI8X0RvbSxfVHA+JiBfX2UpIGNvbnN0IHsgX0FycmF5X2F1Z21lbnRlZF9vciAoX01fYXJy
YXksIF9NX2luZGV4LCBfX2UsIF9NX3N6KTsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGlu
ZSB2b2lkIGluZGlyZWN0X2FycmF5PF9UcD46Om9wZXJhdG9yIDw8PSAoY29uc3QgdmFsYXJyYXk8
X1RwPiYgX192KSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfc2hpZnRfbGVmdCAoX01fYXJyYXks
IF9NX2luZGV4LCBfQXJyYXk8X1RwPiAoX192KSwgX01fc3opOyB9IHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIHZvaWQgaW5kaXJlY3RfYXJyYXk8X1Rw
Pjo6b3BlcmF0b3IgPDw9IChjb25zdCBfRXhwcjxfRG9tLF9UcD4mIF9fZSkgY29uc3QgeyBfQXJy
YXlfYXVnbWVudGVkX3NoaWZ0X2xlZnQgKF9NX2FycmF5LCBfTV9pbmRleCwgX19lLCBfTV9zeik7
IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgdm9pZCBpbmRpcmVjdF9hcnJheTxfVHA+
OjpvcGVyYXRvciA+Pj0gKGNvbnN0IHZhbGFycmF5PF9UcD4mIF9fdikgY29uc3QgeyBfQXJyYXlf
YXVnbWVudGVkX3NoaWZ0X3JpZ2h0IChfTV9hcnJheSwgX01faW5kZXgsIF9BcnJheTxfVHA+IChf
X3YpLCBfTV9zeik7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBfRG9t
PiBpbmxpbmUgdm9pZCBpbmRpcmVjdF9hcnJheTxfVHA+OjpvcGVyYXRvciA+Pj0gKGNvbnN0IF9F
eHByPF9Eb20sX1RwPiYgX19lKSBjb25zdCB7IF9BcnJheV9hdWdtZW50ZWRfc2hpZnRfcmlnaHQg
KF9NX2FycmF5LCBfTV9pbmRleCwgX19lLCBfTV9zeik7IH0KCgoKfQojIDI1NyAiL3Vzci9pbmNs
dWRlL2crKy12My9iaXRzL3N0ZF92YWxhcnJheS5oIiAyIDMKCm5hbWVzcGFjZSBzdGQKewogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgdmFsYXJyYXk8X1RwPjo6dmFsYXJyYXkgKCkg
OiBfTV9zaXplICgwKSwgX01fZGF0YSAoMCkge30KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
IGlubGluZSB2YWxhcnJheTxfVHA+Ojp2YWxhcnJheSAoc2l6ZV90IF9fbikKICAgICAgOiBfTV9z
aXplKF9fbiksIF9NX2RhdGEoX192YWxhcnJheV9nZXRfc3RvcmFnZTxfVHA+KF9fbikpCiAgeyBf
X3ZhbGFycmF5X2RlZmF1bHRfY29uc3RydWN0KF9NX2RhdGEsIF9NX2RhdGEgKyBfX24pOyB9Cgog
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgdmFsYXJyYXk8X1RwPjo6dmFsYXJyYXkg
KGNvbnN0IF9UcCYgX190LCBzaXplX3QgX19uKQogICAgOiBfTV9zaXplKF9fbiksIF9NX2RhdGEo
X192YWxhcnJheV9nZXRfc3RvcmFnZTxfVHA+KF9fbikpCiAgeyBfX3ZhbGFycmF5X2ZpbGxfY29u
c3RydWN0IChfTV9kYXRhLCBfTV9kYXRhICsgX19uLCBfX3QpOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICBpbmxpbmUgdmFsYXJyYXk8X1RwPjo6dmFsYXJyYXkgKGNvbnN0IF9UcCogX19y
ZXN0cmljdF9fIF9fcCwgc2l6ZV90IF9fbikKICAgIDogX01fc2l6ZShfX24pLCBfTV9kYXRhKF9f
dmFsYXJyYXlfZ2V0X3N0b3JhZ2U8X1RwPihfX24pKQogIHsgX192YWxhcnJheV9jb3B5X2NvbnN0
cnVjdCAoX19wLCBfX3AgKyBfX24sIF9NX2RhdGEpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICBpbmxpbmUgdmFsYXJyYXk8X1RwPjo6dmFsYXJyYXkgKGNvbnN0IHZhbGFycmF5PF9UcD4m
IF9fdikKICAgIDogX01fc2l6ZShfX3YuX01fc2l6ZSksIF9NX2RhdGEoX192YWxhcnJheV9nZXRf
c3RvcmFnZTxfVHA+KF9fdi5fTV9zaXplKSkKICB7IF9fdmFsYXJyYXlfY29weV9jb25zdHJ1Y3Qg
KF9fdi5fTV9kYXRhLCBfX3YuX01fZGF0YSArIF9NX3NpemUsIF9NX2RhdGEpOyB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgdmFsYXJyYXk8X1RwPjo6dmFsYXJyYXkgKGNvbnN0
IHNsaWNlX2FycmF5PF9UcD4mIF9fc2EpCiAgICA6IF9NX3NpemUoX19zYS5fTV9zeiksIF9NX2Rh
dGEoX192YWxhcnJheV9nZXRfc3RvcmFnZTxfVHA+KF9fc2EuX01fc3opKQogIHsKICAgIF9fdmFs
YXJyYXlfY29weQogICAgICAoX19zYS5fTV9hcnJheSwgX19zYS5fTV9zeiwgX19zYS5fTV9zdHJp
ZGUsIF9BcnJheTxfVHA+KF9NX2RhdGEpKTsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICBpbmxpbmUgdmFsYXJyYXk8X1RwPjo6dmFsYXJyYXkgKGNvbnN0IGdzbGljZV9hcnJheTxfVHA+
JiBfX2dhKQogICAgOiBfTV9zaXplKF9fZ2EuX01faW5kZXguc2l6ZSgpKSwKICAgICAgX01fZGF0
YShfX3ZhbGFycmF5X2dldF9zdG9yYWdlPF9UcD4oX01fc2l6ZSkpCiAgewogICAgX192YWxhcnJh
eV9jb3B5CiAgICAgIChfX2dhLl9NX2FycmF5LCBfQXJyYXk8c2l6ZV90PihfX2dhLl9NX2luZGV4
KSwKICAgICAgIF9BcnJheTxfVHA+KF9NX2RhdGEpLCBfTV9zaXplKTsKICB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgdmFsYXJyYXk8X1RwPjo6dmFsYXJyYXkgKGNvbnN0IG1h
c2tfYXJyYXk8X1RwPiYgX19tYSkKICAgIDogX01fc2l6ZShfX21hLl9NX3N6KSwgX01fZGF0YShf
X3ZhbGFycmF5X2dldF9zdG9yYWdlPF9UcD4oX19tYS5fTV9zeikpCiAgewogICAgX192YWxhcnJh
eV9jb3B5CiAgICAgIChfX21hLl9NX2FycmF5LCBfX21hLl9NX21hc2ssIF9BcnJheTxfVHA+KF9N
X2RhdGEpLCBfTV9zaXplKTsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUg
dmFsYXJyYXk8X1RwPjo6dmFsYXJyYXkgKGNvbnN0IGluZGlyZWN0X2FycmF5PF9UcD4mIF9faWEp
CiAgICA6IF9NX3NpemUoX19pYS5fTV9zeiksIF9NX2RhdGEoX192YWxhcnJheV9nZXRfc3RvcmFn
ZTxfVHA+KF9faWEuX01fc3opKQogIHsKICAgIF9fdmFsYXJyYXlfY29weQogICAgICAoX19pYS5f
TV9hcnJheSwgX19pYS5fTV9pbmRleCwgX0FycmF5PF9UcD4oX01fZGF0YSksIF9NX3NpemUpOwog
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBfRG9tPgogIGlubGlu
ZSB2YWxhcnJheTxfVHA+Ojp2YWxhcnJheSAoY29uc3QgX0V4cHI8X0RvbSwgX1RwPiYgX19lKQog
ICAgOiBfTV9zaXplKF9fZS5zaXplICgpKSwgX01fZGF0YShfX3ZhbGFycmF5X2dldF9zdG9yYWdl
PF9UcD4oX01fc2l6ZSkpCiAgeyBfX3ZhbGFycmF5X2NvcHkgKF9fZSwgX01fc2l6ZSwgX0FycmF5
PF9UcD4oX01fZGF0YSkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgdmFs
YXJyYXk8X1RwPjo6fnZhbGFycmF5ICgpCiAgewogICAgICBfX3ZhbGFycmF5X2Rlc3Ryb3lfZWxl
bWVudHMoX01fZGF0YSwgX01fZGF0YSArIF9NX3NpemUpOwogICAgICBfX3ZhbGFycmF5X3JlbGVh
c2VfbWVtb3J5KF9NX2RhdGEpOwogIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIGlubGlu
ZSB2YWxhcnJheTxfVHA+JgogIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yPSAoY29uc3QgdmFsYXJy
YXk8X1RwPiYgX192KQogIHsKICAgICAgX192YWxhcnJheV9jb3B5KF9fdi5fTV9kYXRhLCBfTV9z
aXplLCBfTV9kYXRhKTsKICAgICAgcmV0dXJuICp0aGlzOwogIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogIGlubGluZSB2YWxhcnJheTxfVHA+JgogIHZhbGFycmF5PF9UcD46Om9wZXJhdG9y
PSAoY29uc3QgX1RwJiBfX3QpCiAgewogICAgICBfX3ZhbGFycmF5X2ZpbGwgKF9NX2RhdGEsIF9N
X3NpemUsIF9fdCk7CiAgICAgIHJldHVybiAqdGhpczsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICBpbmxpbmUgdmFsYXJyYXk8X1RwPiYKICB2YWxhcnJheTxfVHA+OjpvcGVyYXRvcj0g
KGNvbnN0IHNsaWNlX2FycmF5PF9UcD4mIF9fc2EpCiAgewogICAgICBfX3ZhbGFycmF5X2NvcHkg
KF9fc2EuX01fYXJyYXksIF9fc2EuX01fc3osCiAgICAgICAgICAgICAgX19zYS5fTV9zdHJpZGUs
IF9BcnJheTxfVHA+KF9NX2RhdGEpKTsKICAgICAgcmV0dXJuICp0aGlzOwogIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogIGlubGluZSB2YWxhcnJheTxfVHA+JgogIHZhbGFycmF5PF9UcD46
Om9wZXJhdG9yPSAoY29uc3QgZ3NsaWNlX2FycmF5PF9UcD4mIF9fZ2EpCiAgewogICAgICBfX3Zh
bGFycmF5X2NvcHkgKF9fZ2EuX01fYXJyYXksIF9BcnJheTxzaXplX3Q+KF9fZ2EuX01faW5kZXgp
LAogICAgICAgICAgICAgIF9BcnJheTxfVHA+KF9NX2RhdGEpLCBfTV9zaXplKTsKICAgICAgcmV0
dXJuICp0aGlzOwogIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIGlubGluZSB2YWxhcnJh
eTxfVHA+JgogIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yPSAoY29uc3QgbWFza19hcnJheTxfVHA+
JiBfX21hKQogIHsKICAgICAgX192YWxhcnJheV9jb3B5IChfX21hLl9NX2FycmF5LCBfX21hLl9N
X21hc2ssCiAgICAgICAgICAgICAgX0FycmF5PF9UcD4oX01fZGF0YSksIF9NX3NpemUpOwogICAg
ICByZXR1cm4gKnRoaXM7CiAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgaW5saW5lIHZh
bGFycmF5PF9UcD4mCiAgdmFsYXJyYXk8X1RwPjo6b3BlcmF0b3I9IChjb25zdCBpbmRpcmVjdF9h
cnJheTxfVHA+JiBfX2lhKQogIHsKICAgICAgX192YWxhcnJheV9jb3B5IChfX2lhLl9NX2FycmF5
LCBfX2lhLl9NX2luZGV4LAogICAgICAgICAgICAgICBfQXJyYXk8X1RwPihfTV9kYXRhKSwgX01f
c2l6ZSk7CiAgICAgIHJldHVybiAqdGhpczsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4g
dGVtcGxhdGU8Y2xhc3MgX0RvbT4KICBpbmxpbmUgdmFsYXJyYXk8X1RwPiYKICB2YWxhcnJheTxf
VHA+OjpvcGVyYXRvcj0gKGNvbnN0IF9FeHByPF9Eb20sIF9UcD4mIF9fZSkKICB7CiAgICAgIF9f
dmFsYXJyYXlfY29weSAoX19lLCBfTV9zaXplLCBfQXJyYXk8X1RwPihfTV9kYXRhKSk7CiAgICAg
IHJldHVybiAqdGhpczsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgX0V4
cHI8X1NDbG9zPF9WYWxBcnJheSxfVHA+LCBfVHA+CiAgdmFsYXJyYXk8X1RwPjo6b3BlcmF0b3Jb
XSAoc2xpY2UgX19zKSBjb25zdAogIHsKICAgICAgdHlwZWRlZiBfU0Nsb3M8X1ZhbEFycmF5LF9U
cD4gX0Nsb3N1cmU7CiAgICAgIHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgX1RwPiAoX0Nsb3N1cmUg
KF9BcnJheTxfVHA+KF9NX2RhdGEpLCBfX3MpKTsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICBpbmxpbmUgc2xpY2VfYXJyYXk8X1RwPgogIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yW10g
KHNsaWNlIF9fcykKICB7CiAgICAgIHJldHVybiBzbGljZV9hcnJheTxfVHA+IChfQXJyYXk8X1Rw
PihfTV9kYXRhKSwgX19zKTsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUg
X0V4cHI8X0dDbG9zPF9WYWxBcnJheSxfVHA+LCBfVHA+CiAgdmFsYXJyYXk8X1RwPjo6b3BlcmF0
b3JbXSAoY29uc3QgZ3NsaWNlJiBfX2dzKSBjb25zdAogIHsKICAgICAgdHlwZWRlZiBfR0Nsb3M8
X1ZhbEFycmF5LF9UcD4gX0Nsb3N1cmU7CiAgICAgIHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgX1Rw
PgogICAgICAgICAgKF9DbG9zdXJlIChfQXJyYXk8X1RwPihfTV9kYXRhKSwgX19ncy5fTV9pbmRl
eC0+X01faW5kZXgpKTsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgZ3Ns
aWNlX2FycmF5PF9UcD4KICB2YWxhcnJheTxfVHA+OjpvcGVyYXRvcltdIChjb25zdCBnc2xpY2Um
IF9fZ3MpCiAgewogICAgICByZXR1cm4gZ3NsaWNlX2FycmF5PF9UcD4KICAgICAgICAgIChfQXJy
YXk8X1RwPihfTV9kYXRhKSwgX19ncy5fTV9pbmRleC0+X01faW5kZXgpOwogIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogIGlubGluZSB2YWxhcnJheTxfVHA+CiAgdmFsYXJyYXk8X1RwPjo6
b3BlcmF0b3JbXSAoY29uc3QgdmFsYXJyYXk8Ym9vbD4mIF9fbSkgY29uc3QKICB7CiAgICAgIHNp
emVfdCBfX3MgKDApOwogICAgICBzaXplX3QgX19lIChfX20uc2l6ZSAoKSk7CiAgICAgIGZvciAo
c2l6ZV90IF9faT0wOyBfX2k8X19lOyArK19faSkKICAgICAgICAgIGlmIChfX21bX19pXSkgKytf
X3M7CiAgICAgIHJldHVybiB2YWxhcnJheTxfVHA+IChtYXNrX2FycmF5PF9UcD4gKF9BcnJheTxf
VHA+KF9NX2RhdGEpLCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0FycmF5PGJvb2w+IChfX20pKSk7CiAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
aW5saW5lIG1hc2tfYXJyYXk8X1RwPgogIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yW10gKGNvbnN0
IHZhbGFycmF5PGJvb2w+JiBfX20pCiAgewogICAgICBzaXplX3QgX19zICgwKTsKICAgICAgc2l6
ZV90IF9fZSAoX19tLnNpemUgKCkpOwogICAgICBmb3IgKHNpemVfdCBfX2k9MDsgX19pPF9fZTsg
KytfX2kpCiAgICAgICAgICBpZiAoX19tW19faV0pICsrX19zOwogICAgICByZXR1cm4gbWFza19h
cnJheTxfVHA+IChfQXJyYXk8X1RwPihfTV9kYXRhKSwgX19zLCBfQXJyYXk8Ym9vbD4gKF9fbSkp
OwogIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIGlubGluZSBfRXhwcjxfSUNsb3M8X1Zh
bEFycmF5LF9UcD4sIF9UcD4KICB2YWxhcnJheTxfVHA+OjpvcGVyYXRvcltdIChjb25zdCB2YWxh
cnJheTxzaXplX3Q+JiBfX2kpIGNvbnN0CiAgewogICAgICB0eXBlZGVmIF9JQ2xvczxfVmFsQXJy
YXksX1RwPiBfQ2xvc3VyZTsKICAgICAgcmV0dXJuIF9FeHByPF9DbG9zdXJlLCBfVHA+IChfQ2xv
c3VyZSAoKnRoaXMsIF9faSkpOwogIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogIGlubGlu
ZSBpbmRpcmVjdF9hcnJheTxfVHA+CiAgdmFsYXJyYXk8X1RwPjo6b3BlcmF0b3JbXSAoY29uc3Qg
dmFsYXJyYXk8c2l6ZV90PiYgX19pKQogIHsKICAgICAgcmV0dXJuIGluZGlyZWN0X2FycmF5PF9U
cD4gKF9BcnJheTxfVHA+KF9NX2RhdGEpLCBfX2kuc2l6ZSgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9BcnJheTxzaXplX3Q+IChfX2kpKTsKICB9CgogIHRlbXBsYXRlPGNsYXNz
IF9UcD4KICBpbmxpbmUgc2l6ZV90IHZhbGFycmF5PF9UcD46OnNpemUgKCkgY29uc3QgeyByZXR1
cm4gX01fc2l6ZTsgfQoKICB0ZW1wbGF0ZTxjbGFzcyBfVHA+CiAgaW5saW5lIF9UcAogIHZhbGFy
cmF5PF9UcD46OnN1bSAoKSBjb25zdAogIHsKICAgICAgcmV0dXJuIF9fdmFsYXJyYXlfc3VtKF9N
X2RhdGEsIF9NX2RhdGEgKyBfTV9zaXplKTsKICB9CiMgNDc3ICIvdXNyL2luY2x1ZGUvZysrLXYz
L2JpdHMvc3RkX3ZhbGFycmF5LmgiIDMKICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgogICAgIGlubGlu
ZSB2YWxhcnJheTxfVHA+CiAgICAgdmFsYXJyYXk8X1RwPjo6c2hpZnQoaW50IF9fbikgY29uc3QK
ICAgICB7CiAgICAgICBfVHAqIGNvbnN0IF9fYSA9IHN0YXRpY19jYXN0PF9UcCo+CiAgICAgICAg
IChfX2J1aWx0aW5fYWxsb2NhKHNpemVvZihfVHApICogX01fc2l6ZSkpOwogICAgICAgaWYgKF9f
biA9PSAwKQogICAgICAgICBfX3ZhbGFycmF5X2NvcHlfY29uc3RydWN0KF9NX2RhdGEsIF9NX2Rh
dGEgKyBfTV9zaXplLCBfX2EpOwogICAgICAgZWxzZSBpZiAoX19uID4gMCkKICAgICAgICAgewog
ICAgICAgICAgIGlmIChzaXplX3QoX19uKSA+IF9NX3NpemUpCiAgICAgICAgICAgICBfX3ZhbGFy
cmF5X2RlZmF1bHRfY29uc3RydWN0KF9fYSwgX19hICsgX19uKTsKICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgIF9fdmFsYXJyYXlfY29weV9jb25zdHJ1Y3QoX01f
ZGF0YStfX24sIF9NX2RhdGEgKyBfTV9zaXplLCBfX2EpOwogICAgICAgICAgICAgICBfX3ZhbGFy
cmF5X2RlZmF1bHRfY29uc3RydWN0KF9fYStfTV9zaXplLV9fbiwgX19hICsgX01fc2l6ZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAg
IF9fdmFsYXJyYXlfY29weV9jb25zdHJ1Y3QgKF9NX2RhdGEsIF9NX2RhdGErX01fc2l6ZStfX24s
IF9fYS1fX24pOwogICAgICAgICAgIF9fdmFsYXJyYXlfZGVmYXVsdF9jb25zdHJ1Y3QoX19hLCBf
X2EgLSBfX24pOwogICAgICAgICB9CiAgICAgICByZXR1cm4gdmFsYXJyYXk8X1RwPiAoX19hLCBf
TV9zaXplKTsKICAgICB9CgogIHRlbXBsYXRlIDxjbGFzcyBfVHA+CiAgICAgaW5saW5lIHZhbGFy
cmF5PF9UcD4KICAgICB2YWxhcnJheTxfVHA+Ojpjc2hpZnQgKGludCBfX24pIGNvbnN0CiAgICAg
ewogICAgICAgX1RwKiBjb25zdCBfX2EgPSBzdGF0aWNfY2FzdDxfVHAqPgogICAgICAgICAoX19i
dWlsdGluX2FsbG9jYSAoc2l6ZW9mKF9UcCkgKiBfTV9zaXplKSk7CiAgICAgICBpZiAoX19uID09
IDApCiAgICAgICAgIF9fdmFsYXJyYXlfY29weV9jb25zdHJ1Y3QoX01fZGF0YSwgX01fZGF0YSAr
IF9NX3NpemUsIF9fYSk7CiAgICAgICBlbHNlIGlmIChfX24gPiAwKQogICAgICAgICB7CiAgICAg
ICAgICAgX192YWxhcnJheV9jb3B5X2NvbnN0cnVjdChfTV9kYXRhLCBfTV9kYXRhK19fbiwgX19h
K19NX3NpemUtX19uKTsKICAgICAgICAgICBfX3ZhbGFycmF5X2NvcHlfY29uc3RydWN0KF9NX2Rh
dGErX19uLCBfTV9kYXRhICsgX01fc2l6ZSwgX19hKTsKICAgICAgICAgfQogICAgICAgZWxzZQog
ICAgICAgICB7CiAgICAgICAgICAgX192YWxhcnJheV9jb3B5X2NvbnN0cnVjdAogICAgICAgICAg
ICAgKF9NX2RhdGEgKyBfTV9zaXplK19fbiwgX01fZGF0YSArIF9NX3NpemUsIF9fYSk7CiAgICAg
ICAgICAgX192YWxhcnJheV9jb3B5X2NvbnN0cnVjdAogICAgICAgICAgICAgKF9NX2RhdGEsIF9N
X2RhdGEgKyBfTV9zaXplK19fbiwgX19hIC0gX19uKTsKICAgICAgICAgfQogICAgICAgcmV0dXJu
IHZhbGFycmF5PF9UcD4oX19hLCBfTV9zaXplKTsKICAgICB9CgogIHRlbXBsYXRlIDxjbGFzcyBf
VHA+CiAgaW5saW5lIHZvaWQKICB2YWxhcnJheTxfVHA+OjpyZXNpemUgKHNpemVfdCBfX24sIF9U
cCBfX2MpCiAgewoKCgogICAgX192YWxhcnJheV9kZXN0cm95X2VsZW1lbnRzKF9NX2RhdGEsIF9N
X2RhdGEgKyBfTV9zaXplKTsKICAgIGlmIChfTV9zaXplICE9IF9fbikKICAgICAgewogICAgICAg
IF9fdmFsYXJyYXlfcmVsZWFzZV9tZW1vcnkoX01fZGF0YSk7CiAgICAgICAgX01fc2l6ZSA9IF9f
bjsKICAgICAgICBfTV9kYXRhID0gX192YWxhcnJheV9nZXRfc3RvcmFnZTxfVHA+KF9fbik7CiAg
ICAgIH0KICAgIF9fdmFsYXJyYXlfZmlsbF9jb25zdHJ1Y3QoX01fZGF0YSwgX01fZGF0YSArIF9f
biwgX19jKTsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgX1RwCiAgdmFs
YXJyYXk8X1RwPjo6bWluKCkgY29uc3QKICB7CiAgICAgIHJldHVybiAqbWluX2VsZW1lbnQgKF9N
X2RhdGEsIF9NX2RhdGErX01fc2l6ZSk7CiAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
aW5saW5lIF9UcAogIHZhbGFycmF5PF9UcD46Om1heCgpIGNvbnN0CiAgewogICAgICByZXR1cm4g
Km1heF9lbGVtZW50IChfTV9kYXRhLCBfTV9kYXRhK19NX3NpemUpOwogIH0KCiAgdGVtcGxhdGU8
Y2xhc3MgX1RwPgogIGlubGluZSBfRXhwcjxfVmFsRnVuQ2xvczxfVmFsQXJyYXksX1RwPixfVHA+
CiAgdmFsYXJyYXk8X1RwPjo6YXBwbHkgKF9UcCBmdW5jIChfVHApKSBjb25zdAogIHsKICAgICAg
dHlwZWRlZiBfVmFsRnVuQ2xvczxfVmFsQXJyYXksX1RwPiBfQ2xvc3VyZTsKICAgICAgcmV0dXJu
IF9FeHByPF9DbG9zdXJlLF9UcD4gKF9DbG9zdXJlICgqdGhpcywgZnVuYykpOwogIH0KCiAgdGVt
cGxhdGU8Y2xhc3MgX1RwPgogIGlubGluZSBfRXhwcjxfUmVmRnVuQ2xvczxfVmFsQXJyYXksX1Rw
PixfVHA+CiAgdmFsYXJyYXk8X1RwPjo6YXBwbHkgKF9UcCBmdW5jIChjb25zdCBfVHAgJikpIGNv
bnN0CiAgewogICAgICB0eXBlZGVmIF9SZWZGdW5DbG9zPF9WYWxBcnJheSxfVHA+IF9DbG9zdXJl
OwogICAgICByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsX1RwPiAoX0Nsb3N1cmUgKCp0aGlzLCBmdW5j
KSk7CiAgfQojIDU4MiAiL3Vzci9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF92YWxhcnJheS5oIiAz
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSBfRXhwcjxfVW5DbG9zPF9VbmFyeV9w
bHVzLF9WYWxBcnJheSxfVHA+LCBfVHA+IHZhbGFycmF5PF9UcD46Om9wZXJhdG9yICsoKSBjb25z
dCB7IHR5cGVkZWYgX1VuQ2xvczxfVW5hcnlfcGx1cyxfVmFsQXJyYXksX1RwPiBfQ2xvc3VyZTsg
cmV0dXJuIF9FeHByPF9DbG9zdXJlLCBfVHA+IChfQ2xvc3VyZSAoKnRoaXMpKTsgfQogICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X1VuQ2xvczxuZWdhdGUsX1ZhbEFycmF5
LF9UcD4sIF9UcD4gdmFsYXJyYXk8X1RwPjo6b3BlcmF0b3IgLSgpIGNvbnN0IHsgdHlwZWRlZiBf
VW5DbG9zPG5lZ2F0ZSxfVmFsQXJyYXksX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9z
dXJlLCBfVHA+IChfQ2xvc3VyZSAoKnRoaXMpKTsgfQogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PiBpbmxpbmUgX0V4cHI8X1VuQ2xvczxfQml0d2lzZV9ub3QsX1ZhbEFycmF5LF9UcD4sIF9UcD4g
dmFsYXJyYXk8X1RwPjo6b3BlcmF0b3IgfigpIGNvbnN0IHsgdHlwZWRlZiBfVW5DbG9zPF9CaXR3
aXNlX25vdCxfVmFsQXJyYXksX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLCBf
VHA+IChfQ2xvc3VyZSAoKnRoaXMpKTsgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBp
bmxpbmUgX0V4cHI8X1VuQ2xvczxsb2dpY2FsX25vdCxfVmFsQXJyYXksX1RwPiwgYm9vbD4KICB2
YWxhcnJheTxfVHA+OjpvcGVyYXRvciEoKSBjb25zdAogIHsKICAgICAgdHlwZWRlZiBfVW5DbG9z
PGxvZ2ljYWxfbm90LF9WYWxBcnJheSxfVHA+IF9DbG9zdXJlOwogICAgICByZXR1cm4gX0V4cHI8
X0Nsb3N1cmUsIGJvb2w+IChfQ2xvc3VyZSAoKnRoaXMpKTsKICB9CiMgNjE0ICIvdXNyL2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RkX3ZhbGFycmF5LmgiIDMKdGVtcGxhdGU8Y2xhc3MgX1RwPiBpbmxp
bmUgdmFsYXJyYXk8X1RwPiAmIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yICs9IChjb25zdCBfVHAg
Jl9fdCkgeyBfQXJyYXlfYXVnbWVudGVkX3BsdXMgKF9BcnJheTxfVHA+KF9NX2RhdGEpLCBfTV9z
aXplLCBfX3QpOyByZXR1cm4gKnRoaXM7IH0gdGVtcGxhdGU8Y2xhc3MgX1RwPiBpbmxpbmUgdmFs
YXJyYXk8X1RwPiAmIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yICs9IChjb25zdCB2YWxhcnJheTxf
VHA+ICZfX3YpIHsgX0FycmF5X2F1Z21lbnRlZF9wbHVzIChfQXJyYXk8X1RwPihfTV9kYXRhKSwg
X01fc2l6ZSwgX0FycmF5PF9UcD4oX192Ll9NX2RhdGEpKTsgcmV0dXJuICp0aGlzOyB9CnRlbXBs
YXRlPGNsYXNzIF9UcD4gaW5saW5lIHZhbGFycmF5PF9UcD4gJiB2YWxhcnJheTxfVHA+OjpvcGVy
YXRvciAtPSAoY29uc3QgX1RwICZfX3QpIHsgX0FycmF5X2F1Z21lbnRlZF9taW51cyAoX0FycmF5
PF9UcD4oX01fZGF0YSksIF9NX3NpemUsIF9fdCk7IHJldHVybiAqdGhpczsgfSB0ZW1wbGF0ZTxj
bGFzcyBfVHA+IGlubGluZSB2YWxhcnJheTxfVHA+ICYgdmFsYXJyYXk8X1RwPjo6b3BlcmF0b3Ig
LT0gKGNvbnN0IHZhbGFycmF5PF9UcD4gJl9fdikgeyBfQXJyYXlfYXVnbWVudGVkX21pbnVzIChf
QXJyYXk8X1RwPihfTV9kYXRhKSwgX01fc2l6ZSwgX0FycmF5PF9UcD4oX192Ll9NX2RhdGEpKTsg
cmV0dXJuICp0aGlzOyB9CnRlbXBsYXRlPGNsYXNzIF9UcD4gaW5saW5lIHZhbGFycmF5PF9UcD4g
JiB2YWxhcnJheTxfVHA+OjpvcGVyYXRvciAqPSAoY29uc3QgX1RwICZfX3QpIHsgX0FycmF5X2F1
Z21lbnRlZF9tdWx0aXBsaWVzIChfQXJyYXk8X1RwPihfTV9kYXRhKSwgX01fc2l6ZSwgX190KTsg
cmV0dXJuICp0aGlzOyB9IHRlbXBsYXRlPGNsYXNzIF9UcD4gaW5saW5lIHZhbGFycmF5PF9UcD4g
JiB2YWxhcnJheTxfVHA+OjpvcGVyYXRvciAqPSAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192KSB7
IF9BcnJheV9hdWdtZW50ZWRfbXVsdGlwbGllcyAoX0FycmF5PF9UcD4oX01fZGF0YSksIF9NX3Np
emUsIF9BcnJheTxfVHA+KF9fdi5fTV9kYXRhKSk7IHJldHVybiAqdGhpczsgfQp0ZW1wbGF0ZTxj
bGFzcyBfVHA+IGlubGluZSB2YWxhcnJheTxfVHA+ICYgdmFsYXJyYXk8X1RwPjo6b3BlcmF0b3Ig
Lz0gKGNvbnN0IF9UcCAmX190KSB7IF9BcnJheV9hdWdtZW50ZWRfZGl2aWRlcyAoX0FycmF5PF9U
cD4oX01fZGF0YSksIF9NX3NpemUsIF9fdCk7IHJldHVybiAqdGhpczsgfSB0ZW1wbGF0ZTxjbGFz
cyBfVHA+IGlubGluZSB2YWxhcnJheTxfVHA+ICYgdmFsYXJyYXk8X1RwPjo6b3BlcmF0b3IgLz0g
KGNvbnN0IHZhbGFycmF5PF9UcD4gJl9fdikgeyBfQXJyYXlfYXVnbWVudGVkX2RpdmlkZXMgKF9B
cnJheTxfVHA+KF9NX2RhdGEpLCBfTV9zaXplLCBfQXJyYXk8X1RwPihfX3YuX01fZGF0YSkpOyBy
ZXR1cm4gKnRoaXM7IH0KdGVtcGxhdGU8Y2xhc3MgX1RwPiBpbmxpbmUgdmFsYXJyYXk8X1RwPiAm
IHZhbGFycmF5PF9UcD46Om9wZXJhdG9yICU9IChjb25zdCBfVHAgJl9fdCkgeyBfQXJyYXlfYXVn
bWVudGVkX21vZHVsdXMgKF9BcnJheTxfVHA+KF9NX2RhdGEpLCBfTV9zaXplLCBfX3QpOyByZXR1
cm4gKnRoaXM7IH0gdGVtcGxhdGU8Y2xhc3MgX1RwPiBpbmxpbmUgdmFsYXJyYXk8X1RwPiAmIHZh
bGFycmF5PF9UcD46Om9wZXJhdG9yICU9IChjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YpIHsgX0Fy
cmF5X2F1Z21lbnRlZF9tb2R1bHVzIChfQXJyYXk8X1RwPihfTV9kYXRhKSwgX01fc2l6ZSwgX0Fy
cmF5PF9UcD4oX192Ll9NX2RhdGEpKTsgcmV0dXJuICp0aGlzOyB9CnRlbXBsYXRlPGNsYXNzIF9U
cD4gaW5saW5lIHZhbGFycmF5PF9UcD4gJiB2YWxhcnJheTxfVHA+OjpvcGVyYXRvciBePSAoY29u
c3QgX1RwICZfX3QpIHsgX0FycmF5X2F1Z21lbnRlZF94b3IgKF9BcnJheTxfVHA+KF9NX2RhdGEp
LCBfTV9zaXplLCBfX3QpOyByZXR1cm4gKnRoaXM7IH0gdGVtcGxhdGU8Y2xhc3MgX1RwPiBpbmxp
bmUgdmFsYXJyYXk8X1RwPiAmIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yIF49IChjb25zdCB2YWxh
cnJheTxfVHA+ICZfX3YpIHsgX0FycmF5X2F1Z21lbnRlZF94b3IgKF9BcnJheTxfVHA+KF9NX2Rh
dGEpLCBfTV9zaXplLCBfQXJyYXk8X1RwPihfX3YuX01fZGF0YSkpOyByZXR1cm4gKnRoaXM7IH0K
dGVtcGxhdGU8Y2xhc3MgX1RwPiBpbmxpbmUgdmFsYXJyYXk8X1RwPiAmIHZhbGFycmF5PF9UcD46
Om9wZXJhdG9yICY9IChjb25zdCBfVHAgJl9fdCkgeyBfQXJyYXlfYXVnbWVudGVkX2FuZCAoX0Fy
cmF5PF9UcD4oX01fZGF0YSksIF9NX3NpemUsIF9fdCk7IHJldHVybiAqdGhpczsgfSB0ZW1wbGF0
ZTxjbGFzcyBfVHA+IGlubGluZSB2YWxhcnJheTxfVHA+ICYgdmFsYXJyYXk8X1RwPjo6b3BlcmF0
b3IgJj0gKGNvbnN0IHZhbGFycmF5PF9UcD4gJl9fdikgeyBfQXJyYXlfYXVnbWVudGVkX2FuZCAo
X0FycmF5PF9UcD4oX01fZGF0YSksIF9NX3NpemUsIF9BcnJheTxfVHA+KF9fdi5fTV9kYXRhKSk7
IHJldHVybiAqdGhpczsgfQp0ZW1wbGF0ZTxjbGFzcyBfVHA+IGlubGluZSB2YWxhcnJheTxfVHA+
ICYgdmFsYXJyYXk8X1RwPjo6b3BlcmF0b3IgfD0gKGNvbnN0IF9UcCAmX190KSB7IF9BcnJheV9h
dWdtZW50ZWRfb3IgKF9BcnJheTxfVHA+KF9NX2RhdGEpLCBfTV9zaXplLCBfX3QpOyByZXR1cm4g
KnRoaXM7IH0gdGVtcGxhdGU8Y2xhc3MgX1RwPiBpbmxpbmUgdmFsYXJyYXk8X1RwPiAmIHZhbGFy
cmF5PF9UcD46Om9wZXJhdG9yIHw9IChjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YpIHsgX0FycmF5
X2F1Z21lbnRlZF9vciAoX0FycmF5PF9UcD4oX01fZGF0YSksIF9NX3NpemUsIF9BcnJheTxfVHA+
KF9fdi5fTV9kYXRhKSk7IHJldHVybiAqdGhpczsgfQp0ZW1wbGF0ZTxjbGFzcyBfVHA+IGlubGlu
ZSB2YWxhcnJheTxfVHA+ICYgdmFsYXJyYXk8X1RwPjo6b3BlcmF0b3IgPDw9IChjb25zdCBfVHAg
Jl9fdCkgeyBfQXJyYXlfYXVnbWVudGVkX3NoaWZ0X2xlZnQgKF9BcnJheTxfVHA+KF9NX2RhdGEp
LCBfTV9zaXplLCBfX3QpOyByZXR1cm4gKnRoaXM7IH0gdGVtcGxhdGU8Y2xhc3MgX1RwPiBpbmxp
bmUgdmFsYXJyYXk8X1RwPiAmIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yIDw8PSAoY29uc3QgdmFs
YXJyYXk8X1RwPiAmX192KSB7IF9BcnJheV9hdWdtZW50ZWRfc2hpZnRfbGVmdCAoX0FycmF5PF9U
cD4oX01fZGF0YSksIF9NX3NpemUsIF9BcnJheTxfVHA+KF9fdi5fTV9kYXRhKSk7IHJldHVybiAq
dGhpczsgfQp0ZW1wbGF0ZTxjbGFzcyBfVHA+IGlubGluZSB2YWxhcnJheTxfVHA+ICYgdmFsYXJy
YXk8X1RwPjo6b3BlcmF0b3IgPj49IChjb25zdCBfVHAgJl9fdCkgeyBfQXJyYXlfYXVnbWVudGVk
X3NoaWZ0X3JpZ2h0IChfQXJyYXk8X1RwPihfTV9kYXRhKSwgX01fc2l6ZSwgX190KTsgcmV0dXJu
ICp0aGlzOyB9IHRlbXBsYXRlPGNsYXNzIF9UcD4gaW5saW5lIHZhbGFycmF5PF9UcD4gJiB2YWxh
cnJheTxfVHA+OjpvcGVyYXRvciA+Pj0gKGNvbnN0IHZhbGFycmF5PF9UcD4gJl9fdikgeyBfQXJy
YXlfYXVnbWVudGVkX3NoaWZ0X3JpZ2h0IChfQXJyYXk8X1RwPihfTV9kYXRhKSwgX01fc2l6ZSwg
X0FycmF5PF9UcD4oX192Ll9NX2RhdGEpKTsgcmV0dXJuICp0aGlzOyB9CgoKCgp9CgoKbmFtZXNw
YWNlIHN0ZAp7CiMgNjQzICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX3ZhbGFycmF5Lmgi
IDMKdGVtcGxhdGU8Y2xhc3MgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgdmFsYXJy
YXk8X1RwPiAmIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yICs9IChjb25zdCBfRXhwcjxfRG9tLF9U
cD4gJl9fZSkgeyBfQXJyYXlfYXVnbWVudGVkX3BsdXMgKF9BcnJheTxfVHA+KF9NX2RhdGEpLCBf
X2UsIF9NX3NpemUpOyByZXR1cm4gKnRoaXM7IH0KdGVtcGxhdGU8Y2xhc3MgX1RwPiB0ZW1wbGF0
ZTxjbGFzcyBfRG9tPiBpbmxpbmUgdmFsYXJyYXk8X1RwPiAmIHZhbGFycmF5PF9UcD46Om9wZXJh
dG9yIC09IChjb25zdCBfRXhwcjxfRG9tLF9UcD4gJl9fZSkgeyBfQXJyYXlfYXVnbWVudGVkX21p
bnVzIChfQXJyYXk8X1RwPihfTV9kYXRhKSwgX19lLCBfTV9zaXplKTsgcmV0dXJuICp0aGlzOyB9
CnRlbXBsYXRlPGNsYXNzIF9UcD4gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIHZhbGFycmF5
PF9UcD4gJiB2YWxhcnJheTxfVHA+OjpvcGVyYXRvciAqPSAoY29uc3QgX0V4cHI8X0RvbSxfVHA+
ICZfX2UpIHsgX0FycmF5X2F1Z21lbnRlZF9tdWx0aXBsaWVzIChfQXJyYXk8X1RwPihfTV9kYXRh
KSwgX19lLCBfTV9zaXplKTsgcmV0dXJuICp0aGlzOyB9CnRlbXBsYXRlPGNsYXNzIF9UcD4gdGVt
cGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIHZhbGFycmF5PF9UcD4gJiB2YWxhcnJheTxfVHA+Ojpv
cGVyYXRvciAvPSAoY29uc3QgX0V4cHI8X0RvbSxfVHA+ICZfX2UpIHsgX0FycmF5X2F1Z21lbnRl
ZF9kaXZpZGVzIChfQXJyYXk8X1RwPihfTV9kYXRhKSwgX19lLCBfTV9zaXplKTsgcmV0dXJuICp0
aGlzOyB9CnRlbXBsYXRlPGNsYXNzIF9UcD4gdGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIHZh
bGFycmF5PF9UcD4gJiB2YWxhcnJheTxfVHA+OjpvcGVyYXRvciAlPSAoY29uc3QgX0V4cHI8X0Rv
bSxfVHA+ICZfX2UpIHsgX0FycmF5X2F1Z21lbnRlZF9tb2R1bHVzIChfQXJyYXk8X1RwPihfTV9k
YXRhKSwgX19lLCBfTV9zaXplKTsgcmV0dXJuICp0aGlzOyB9CnRlbXBsYXRlPGNsYXNzIF9UcD4g
dGVtcGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIHZhbGFycmF5PF9UcD4gJiB2YWxhcnJheTxfVHA+
OjpvcGVyYXRvciBePSAoY29uc3QgX0V4cHI8X0RvbSxfVHA+ICZfX2UpIHsgX0FycmF5X2F1Z21l
bnRlZF94b3IgKF9BcnJheTxfVHA+KF9NX2RhdGEpLCBfX2UsIF9NX3NpemUpOyByZXR1cm4gKnRo
aXM7IH0KdGVtcGxhdGU8Y2xhc3MgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgdmFs
YXJyYXk8X1RwPiAmIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yICY9IChjb25zdCBfRXhwcjxfRG9t
LF9UcD4gJl9fZSkgeyBfQXJyYXlfYXVnbWVudGVkX2FuZCAoX0FycmF5PF9UcD4oX01fZGF0YSks
IF9fZSwgX01fc2l6ZSk7IHJldHVybiAqdGhpczsgfQp0ZW1wbGF0ZTxjbGFzcyBfVHA+IHRlbXBs
YXRlPGNsYXNzIF9Eb20+IGlubGluZSB2YWxhcnJheTxfVHA+ICYgdmFsYXJyYXk8X1RwPjo6b3Bl
cmF0b3IgfD0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiAmX19lKSB7IF9BcnJheV9hdWdtZW50ZWRf
b3IgKF9BcnJheTxfVHA+KF9NX2RhdGEpLCBfX2UsIF9NX3NpemUpOyByZXR1cm4gKnRoaXM7IH0K
dGVtcGxhdGU8Y2xhc3MgX1RwPiB0ZW1wbGF0ZTxjbGFzcyBfRG9tPiBpbmxpbmUgdmFsYXJyYXk8
X1RwPiAmIHZhbGFycmF5PF9UcD46Om9wZXJhdG9yIDw8PSAoY29uc3QgX0V4cHI8X0RvbSxfVHA+
ICZfX2UpIHsgX0FycmF5X2F1Z21lbnRlZF9zaGlmdF9sZWZ0IChfQXJyYXk8X1RwPihfTV9kYXRh
KSwgX19lLCBfTV9zaXplKTsgcmV0dXJuICp0aGlzOyB9CnRlbXBsYXRlPGNsYXNzIF9UcD4gdGVt
cGxhdGU8Y2xhc3MgX0RvbT4gaW5saW5lIHZhbGFycmF5PF9UcD4gJiB2YWxhcnJheTxfVHA+Ojpv
cGVyYXRvciA+Pj0gKGNvbnN0IF9FeHByPF9Eb20sX1RwPiAmX19lKSB7IF9BcnJheV9hdWdtZW50
ZWRfc2hpZnRfcmlnaHQgKF9BcnJheTxfVHA+KF9NX2RhdGEpLCBfX2UsIF9NX3NpemUpOyByZXR1
cm4gKnRoaXM7IH0KIyA2ODIgIi91c3IvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfdmFsYXJyYXku
aCIgMwp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxwbHVzLF9W
YWxBcnJheSxfVmFsQXJyYXksX1RwLF9UcD4sIF9UcD4gb3BlcmF0b3IgKyAoY29uc3QgdmFsYXJy
YXk8X1RwPiAmX192LCBjb25zdCB2YWxhcnJheTxfVHA+ICZfX3cpIHsgdHlwZWRlZiBfQmluQ2xv
czxwbHVzLF9WYWxBcnJheSxfVmFsQXJyYXksX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhw
cjxfQ2xvc3VyZSwgX1RwPiAoX0Nsb3N1cmUgKF9fdiwgX193KSk7IH0gdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8cGx1cyxfVmFsQXJyYXksX0NvbnN0YW50LF9U
cCxfVHA+LF9UcD4gb3BlcmF0b3IgKyAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCBf
VHAgJl9fdCkgeyB0eXBlZGVmIF9CaW5DbG9zPHBsdXMsX1ZhbEFycmF5LF9Db25zdGFudCxfVHAs
X1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLCBfVHA+IChfQ2xvc3VyZSAoX192
LCBfX3QpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxw
bHVzLF9Db25zdGFudCxfVmFsQXJyYXksX1RwLF9UcD4sX1RwPiBvcGVyYXRvciArIChjb25zdCBf
VHAgJl9fdCwgY29uc3QgdmFsYXJyYXk8X1RwPiAmX192KSB7IHR5cGVkZWYgX0JpbkNsb3M8cGx1
cyxfQ29uc3RhbnQsX1ZhbEFycmF5LF9UcCxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Ns
b3N1cmUsIF9UcD4gKF9DbG9zdXJlIChfX3QsIF9fdikpOyB9CnRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4gaW5saW5lIF9FeHByPF9CaW5DbG9zPG1pbnVzLF9WYWxBcnJheSxfVmFsQXJyYXksX1RwLF9U
cD4sIF9UcD4gb3BlcmF0b3IgLSAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCB2YWxh
cnJheTxfVHA+ICZfX3cpIHsgdHlwZWRlZiBfQmluQ2xvczxtaW51cyxfVmFsQXJyYXksX1ZhbEFy
cmF5LF9UcCxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIF9UcD4gKF9DbG9z
dXJlIChfX3YsIF9fdykpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHByPF9C
aW5DbG9zPG1pbnVzLF9WYWxBcnJheSxfQ29uc3RhbnQsX1RwLF9UcD4sX1RwPiBvcGVyYXRvciAt
IChjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YsIGNvbnN0IF9UcCAmX190KSB7IHR5cGVkZWYgX0Jp
bkNsb3M8bWludXMsX1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJu
IF9FeHByPF9DbG9zdXJlLCBfVHA+IChfQ2xvc3VyZSAoX192LCBfX3QpKTsgfSB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxtaW51cyxfQ29uc3RhbnQsX1ZhbEFy
cmF5LF9UcCxfVHA+LF9UcD4gb3BlcmF0b3IgLSAoY29uc3QgX1RwICZfX3QsIGNvbnN0IHZhbGFy
cmF5PF9UcD4gJl9fdikgeyB0eXBlZGVmIF9CaW5DbG9zPG1pbnVzLF9Db25zdGFudCxfVmFsQXJy
YXksX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgX1RwPiAoX0Nsb3N1
cmUgKF9fdCwgX192KSk7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X0Jp
bkNsb3M8bXVsdGlwbGllcyxfVmFsQXJyYXksX1ZhbEFycmF5LF9UcCxfVHA+LCBfVHA+IG9wZXJh
dG9yICogKGNvbnN0IHZhbGFycmF5PF9UcD4gJl9fdiwgY29uc3QgdmFsYXJyYXk8X1RwPiAmX193
KSB7IHR5cGVkZWYgX0JpbkNsb3M8bXVsdGlwbGllcyxfVmFsQXJyYXksX1ZhbEFycmF5LF9UcCxf
VHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIF9UcD4gKF9DbG9zdXJlIChfX3Ys
IF9fdykpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHByPF9CaW5DbG9zPG11
bHRpcGxpZXMsX1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPixfVHA+IG9wZXJhdG9yICogKGNv
bnN0IHZhbGFycmF5PF9UcD4gJl9fdiwgY29uc3QgX1RwICZfX3QpIHsgdHlwZWRlZiBfQmluQ2xv
czxtdWx0aXBsaWVzLF9WYWxBcnJheSxfQ29uc3RhbnQsX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVy
biBfRXhwcjxfQ2xvc3VyZSwgX1RwPiAoX0Nsb3N1cmUgKF9fdiwgX190KSk7IH0gdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bXVsdGlwbGllcyxfQ29uc3RhbnQs
X1ZhbEFycmF5LF9UcCxfVHA+LF9UcD4gb3BlcmF0b3IgKiAoY29uc3QgX1RwICZfX3QsIGNvbnN0
IHZhbGFycmF5PF9UcD4gJl9fdikgeyB0eXBlZGVmIF9CaW5DbG9zPG11bHRpcGxpZXMsX0NvbnN0
YW50LF9WYWxBcnJheSxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLCBf
VHA+IChfQ2xvc3VyZSAoX190LCBfX3YpKTsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGlu
ZSBfRXhwcjxfQmluQ2xvczxkaXZpZGVzLF9WYWxBcnJheSxfVmFsQXJyYXksX1RwLF9UcD4sIF9U
cD4gb3BlcmF0b3IgLyAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCB2YWxhcnJheTxf
VHA+ICZfX3cpIHsgdHlwZWRlZiBfQmluQ2xvczxkaXZpZGVzLF9WYWxBcnJheSxfVmFsQXJyYXks
X1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgX1RwPiAoX0Nsb3N1cmUg
KF9fdiwgX193KSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X0JpbkNs
b3M8ZGl2aWRlcyxfVmFsQXJyYXksX0NvbnN0YW50LF9UcCxfVHA+LF9UcD4gb3BlcmF0b3IgLyAo
Y29uc3QgdmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCBfVHAgJl9fdCkgeyB0eXBlZGVmIF9CaW5D
bG9zPGRpdmlkZXMsX1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJu
IF9FeHByPF9DbG9zdXJlLCBfVHA+IChfQ2xvc3VyZSAoX192LCBfX3QpKTsgfSB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxkaXZpZGVzLF9Db25zdGFudCxfVmFs
QXJyYXksX1RwLF9UcD4sX1RwPiBvcGVyYXRvciAvIChjb25zdCBfVHAgJl9fdCwgY29uc3QgdmFs
YXJyYXk8X1RwPiAmX192KSB7IHR5cGVkZWYgX0JpbkNsb3M8ZGl2aWRlcyxfQ29uc3RhbnQsX1Zh
bEFycmF5LF9UcCxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIF9UcD4gKF9D
bG9zdXJlIChfX3QsIF9fdikpOyB9CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHBy
PF9CaW5DbG9zPG1vZHVsdXMsX1ZhbEFycmF5LF9WYWxBcnJheSxfVHAsX1RwPiwgX1RwPiBvcGVy
YXRvciAlIChjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YsIGNvbnN0IHZhbGFycmF5PF9UcD4gJl9f
dykgeyB0eXBlZGVmIF9CaW5DbG9zPG1vZHVsdXMsX1ZhbEFycmF5LF9WYWxBcnJheSxfVHAsX1Rw
PiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLCBfVHA+IChfQ2xvc3VyZSAoX192LCBf
X3cpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxtb2R1
bHVzLF9WYWxBcnJheSxfQ29uc3RhbnQsX1RwLF9UcD4sX1RwPiBvcGVyYXRvciAlIChjb25zdCB2
YWxhcnJheTxfVHA+ICZfX3YsIGNvbnN0IF9UcCAmX190KSB7IHR5cGVkZWYgX0JpbkNsb3M8bW9k
dWx1cyxfVmFsQXJyYXksX0NvbnN0YW50LF9UcCxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8
X0Nsb3N1cmUsIF9UcD4gKF9DbG9zdXJlIChfX3YsIF9fdCkpOyB9IHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4gaW5saW5lIF9FeHByPF9CaW5DbG9zPG1vZHVsdXMsX0NvbnN0YW50LF9WYWxBcnJheSxf
VHAsX1RwPixfVHA+IG9wZXJhdG9yICUgKGNvbnN0IF9UcCAmX190LCBjb25zdCB2YWxhcnJheTxf
VHA+ICZfX3YpIHsgdHlwZWRlZiBfQmluQ2xvczxtb2R1bHVzLF9Db25zdGFudCxfVmFsQXJyYXks
X1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgX1RwPiAoX0Nsb3N1cmUg
KF9fdCwgX192KSk7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X0JpbkNs
b3M8X0JpdHdpc2VfeG9yLF9WYWxBcnJheSxfVmFsQXJyYXksX1RwLF9UcD4sIF9UcD4gb3BlcmF0
b3IgXiAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCB2YWxhcnJheTxfVHA+ICZfX3cp
IHsgdHlwZWRlZiBfQmluQ2xvczxfQml0d2lzZV94b3IsX1ZhbEFycmF5LF9WYWxBcnJheSxfVHAs
X1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLCBfVHA+IChfQ2xvc3VyZSAoX192
LCBfX3cpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxf
Qml0d2lzZV94b3IsX1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPixfVHA+IG9wZXJhdG9yIF4g
KGNvbnN0IHZhbGFycmF5PF9UcD4gJl9fdiwgY29uc3QgX1RwICZfX3QpIHsgdHlwZWRlZiBfQmlu
Q2xvczxfQml0d2lzZV94b3IsX1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPiBfQ2xvc3VyZTsg
cmV0dXJuIF9FeHByPF9DbG9zdXJlLCBfVHA+IChfQ2xvc3VyZSAoX192LCBfX3QpKTsgfSB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxfQml0d2lzZV94b3IsX0Nv
bnN0YW50LF9WYWxBcnJheSxfVHAsX1RwPixfVHA+IG9wZXJhdG9yIF4gKGNvbnN0IF9UcCAmX190
LCBjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YpIHsgdHlwZWRlZiBfQmluQ2xvczxfQml0d2lzZV94
b3IsX0NvbnN0YW50LF9WYWxBcnJheSxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9D
bG9zdXJlLCBfVHA+IChfQ2xvc3VyZSAoX190LCBfX3YpKTsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxfQml0d2lzZV9hbmQsX1ZhbEFycmF5LF9WYWxBcnJh
eSxfVHAsX1RwPiwgX1RwPiBvcGVyYXRvciAmIChjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YsIGNv
bnN0IHZhbGFycmF5PF9UcD4gJl9fdykgeyB0eXBlZGVmIF9CaW5DbG9zPF9CaXR3aXNlX2FuZCxf
VmFsQXJyYXksX1ZhbEFycmF5LF9UcCxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1
cmUsIF9UcD4gKF9DbG9zdXJlIChfX3YsIF9fdykpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4g
aW5saW5lIF9FeHByPF9CaW5DbG9zPF9CaXR3aXNlX2FuZCxfVmFsQXJyYXksX0NvbnN0YW50LF9U
cCxfVHA+LF9UcD4gb3BlcmF0b3IgJiAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCBf
VHAgJl9fdCkgeyB0eXBlZGVmIF9CaW5DbG9zPF9CaXR3aXNlX2FuZCxfVmFsQXJyYXksX0NvbnN0
YW50LF9UcCxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIF9UcD4gKF9DbG9z
dXJlIChfX3YsIF9fdCkpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHByPF9C
aW5DbG9zPF9CaXR3aXNlX2FuZCxfQ29uc3RhbnQsX1ZhbEFycmF5LF9UcCxfVHA+LF9UcD4gb3Bl
cmF0b3IgJiAoY29uc3QgX1RwICZfX3QsIGNvbnN0IHZhbGFycmF5PF9UcD4gJl9fdikgeyB0eXBl
ZGVmIF9CaW5DbG9zPF9CaXR3aXNlX2FuZCxfQ29uc3RhbnQsX1ZhbEFycmF5LF9UcCxfVHA+IF9D
bG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIF9UcD4gKF9DbG9zdXJlIChfX3QsIF9fdikp
OyB9CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHByPF9CaW5DbG9zPF9CaXR3aXNl
X29yLF9WYWxBcnJheSxfVmFsQXJyYXksX1RwLF9UcD4sIF9UcD4gb3BlcmF0b3IgfCAoY29uc3Qg
dmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCB2YWxhcnJheTxfVHA+ICZfX3cpIHsgdHlwZWRlZiBf
QmluQ2xvczxfQml0d2lzZV9vcixfVmFsQXJyYXksX1ZhbEFycmF5LF9UcCxfVHA+IF9DbG9zdXJl
OyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIF9UcD4gKF9DbG9zdXJlIChfX3YsIF9fdykpOyB9IHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHByPF9CaW5DbG9zPF9CaXR3aXNlX29yLF9W
YWxBcnJheSxfQ29uc3RhbnQsX1RwLF9UcD4sX1RwPiBvcGVyYXRvciB8IChjb25zdCB2YWxhcnJh
eTxfVHA+ICZfX3YsIGNvbnN0IF9UcCAmX190KSB7IHR5cGVkZWYgX0JpbkNsb3M8X0JpdHdpc2Vf
b3IsX1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9D
bG9zdXJlLCBfVHA+IChfQ2xvc3VyZSAoX192LCBfX3QpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxfQml0d2lzZV9vcixfQ29uc3RhbnQsX1ZhbEFycmF5
LF9UcCxfVHA+LF9UcD4gb3BlcmF0b3IgfCAoY29uc3QgX1RwICZfX3QsIGNvbnN0IHZhbGFycmF5
PF9UcD4gJl9fdikgeyB0eXBlZGVmIF9CaW5DbG9zPF9CaXR3aXNlX29yLF9Db25zdGFudCxfVmFs
QXJyYXksX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgX1RwPiAoX0Ns
b3N1cmUgKF9fdCwgX192KSk7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8
X0JpbkNsb3M8X1NoaWZ0X2xlZnQsX1ZhbEFycmF5LF9WYWxBcnJheSxfVHAsX1RwPiwgX1RwPiBv
cGVyYXRvciA8PCAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCB2YWxhcnJheTxfVHA+
ICZfX3cpIHsgdHlwZWRlZiBfQmluQ2xvczxfU2hpZnRfbGVmdCxfVmFsQXJyYXksX1ZhbEFycmF5
LF9UcCxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIF9UcD4gKF9DbG9zdXJl
IChfX3YsIF9fdykpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHByPF9CaW5D
bG9zPF9TaGlmdF9sZWZ0LF9WYWxBcnJheSxfQ29uc3RhbnQsX1RwLF9UcD4sX1RwPiBvcGVyYXRv
ciA8PCAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCBfVHAgJl9fdCkgeyB0eXBlZGVm
IF9CaW5DbG9zPF9TaGlmdF9sZWZ0LF9WYWxBcnJheSxfQ29uc3RhbnQsX1RwLF9UcD4gX0Nsb3N1
cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgX1RwPiAoX0Nsb3N1cmUgKF9fdiwgX190KSk7IH0g
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8X1NoaWZ0X2xlZnQs
X0NvbnN0YW50LF9WYWxBcnJheSxfVHAsX1RwPixfVHA+IG9wZXJhdG9yIDw8IChjb25zdCBfVHAg
Jl9fdCwgY29uc3QgdmFsYXJyYXk8X1RwPiAmX192KSB7IHR5cGVkZWYgX0JpbkNsb3M8X1NoaWZ0
X2xlZnQsX0NvbnN0YW50LF9WYWxBcnJheSxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHBy
PF9DbG9zdXJlLCBfVHA+IChfQ2xvc3VyZSAoX190LCBfX3YpKTsgfQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxfU2hpZnRfcmlnaHQsX1ZhbEFycmF5LF9WYWxB
cnJheSxfVHAsX1RwPiwgX1RwPiBvcGVyYXRvciA+PiAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192
LCBjb25zdCB2YWxhcnJheTxfVHA+ICZfX3cpIHsgdHlwZWRlZiBfQmluQ2xvczxfU2hpZnRfcmln
aHQsX1ZhbEFycmF5LF9WYWxBcnJheSxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9D
bG9zdXJlLCBfVHA+IChfQ2xvc3VyZSAoX192LCBfX3cpKTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxfU2hpZnRfcmlnaHQsX1ZhbEFycmF5LF9Db25zdGFu
dCxfVHAsX1RwPixfVHA+IG9wZXJhdG9yID4+IChjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YsIGNv
bnN0IF9UcCAmX190KSB7IHR5cGVkZWYgX0JpbkNsb3M8X1NoaWZ0X3JpZ2h0LF9WYWxBcnJheSxf
Q29uc3RhbnQsX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgX1RwPiAo
X0Nsb3N1cmUgKF9fdiwgX190KSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4
cHI8X0JpbkNsb3M8X1NoaWZ0X3JpZ2h0LF9Db25zdGFudCxfVmFsQXJyYXksX1RwLF9UcD4sX1Rw
PiBvcGVyYXRvciA+PiAoY29uc3QgX1RwICZfX3QsIGNvbnN0IHZhbGFycmF5PF9UcD4gJl9fdikg
eyB0eXBlZGVmIF9CaW5DbG9zPF9TaGlmdF9yaWdodCxfQ29uc3RhbnQsX1ZhbEFycmF5LF9UcCxf
VHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIF9UcD4gKF9DbG9zdXJlIChfX3Qs
IF9fdikpOyB9CiMgNzIwICIvdXNyL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX3ZhbGFycmF5Lmgi
IDMKdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bG9naWNhbF9h
bmQsX1ZhbEFycmF5LF9WYWxBcnJheSxfVHAsX1RwPixib29sPiBvcGVyYXRvciAmJiAoY29uc3Qg
dmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCB2YWxhcnJheTxfVHA+ICZfX3cpIHsgdHlwZWRlZiBf
QmluQ2xvczxsb2dpY2FsX2FuZCxfVmFsQXJyYXksX1ZhbEFycmF5LF9UcCxfVHA+IF9DbG9zdXJl
OyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIGJvb2w+IChfQ2xvc3VyZSAoX192LCBfX3cpKTsgfSB0
ZW1wbGF0ZTxjbGFzcyBfVHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxsb2dpY2FsX2FuZCxfVmFs
QXJyYXksX0NvbnN0YW50LF9UcCxfVHA+LGJvb2w+IG9wZXJhdG9yICYmIChjb25zdCB2YWxhcnJh
eTxfVHA+ICZfX3YsIGNvbnN0IF9UcCAmX190KSB7IHR5cGVkZWYgX0JpbkNsb3M8bG9naWNhbF9h
bmQsX1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9D
bG9zdXJlLCBib29sPiAoX0Nsb3N1cmUgKF9fdiwgX190KSk7IH0gdGVtcGxhdGU8Y2xhc3MgX1Rw
PiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bG9naWNhbF9hbmQsX0NvbnN0YW50LF9WYWxBcnJheSxf
VHAsX1RwPixib29sPiBvcGVyYXRvciAmJiAoY29uc3QgX1RwICZfX3QsIGNvbnN0IHZhbGFycmF5
PF9UcD4gJl9fdikgeyB0eXBlZGVmIF9CaW5DbG9zPGxvZ2ljYWxfYW5kLF9Db25zdGFudCxfVmFs
QXJyYXksX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgYm9vbD4gKF9D
bG9zdXJlIChfX3QsIF9fdikpOyB9CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHBy
PF9CaW5DbG9zPGxvZ2ljYWxfb3IsX1ZhbEFycmF5LF9WYWxBcnJheSxfVHAsX1RwPixib29sPiBv
cGVyYXRvciB8fCAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCB2YWxhcnJheTxfVHA+
ICZfX3cpIHsgdHlwZWRlZiBfQmluQ2xvczxsb2dpY2FsX29yLF9WYWxBcnJheSxfVmFsQXJyYXks
X1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgYm9vbD4gKF9DbG9zdXJl
IChfX3YsIF9fdykpOyB9IHRlbXBsYXRlPGNsYXNzIF9UcD4gaW5saW5lIF9FeHByPF9CaW5DbG9z
PGxvZ2ljYWxfb3IsX1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPixib29sPiBvcGVyYXRvciB8
fCAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCBfVHAgJl9fdCkgeyB0eXBlZGVmIF9C
aW5DbG9zPGxvZ2ljYWxfb3IsX1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPiBfQ2xvc3VyZTsg
cmV0dXJuIF9FeHByPF9DbG9zdXJlLCBib29sPiAoX0Nsb3N1cmUgKF9fdiwgX190KSk7IH0gdGVt
cGxhdGU8Y2xhc3MgX1RwPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bG9naWNhbF9vcixfQ29uc3Rh
bnQsX1ZhbEFycmF5LF9UcCxfVHA+LGJvb2w+IG9wZXJhdG9yIHx8IChjb25zdCBfVHAgJl9fdCwg
Y29uc3QgdmFsYXJyYXk8X1RwPiAmX192KSB7IHR5cGVkZWYgX0JpbkNsb3M8bG9naWNhbF9vcixf
Q29uc3RhbnQsX1ZhbEFycmF5LF9UcCxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1
cmUsIGJvb2w+IChfQ2xvc3VyZSAoX190LCBfX3YpKTsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
IGlubGluZSBfRXhwcjxfQmluQ2xvczxlcXVhbF90byxfVmFsQXJyYXksX1ZhbEFycmF5LF9UcCxf
VHA+LGJvb2w+IG9wZXJhdG9yID09IChjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YsIGNvbnN0IHZh
bGFycmF5PF9UcD4gJl9fdykgeyB0eXBlZGVmIF9CaW5DbG9zPGVxdWFsX3RvLF9WYWxBcnJheSxf
VmFsQXJyYXksX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgYm9vbD4g
KF9DbG9zdXJlIChfX3YsIF9fdykpOyB9IHRlbXBsYXRlPGNsYXNzIF9UcD4gaW5saW5lIF9FeHBy
PF9CaW5DbG9zPGVxdWFsX3RvLF9WYWxBcnJheSxfQ29uc3RhbnQsX1RwLF9UcD4sYm9vbD4gb3Bl
cmF0b3IgPT0gKGNvbnN0IHZhbGFycmF5PF9UcD4gJl9fdiwgY29uc3QgX1RwICZfX3QpIHsgdHlw
ZWRlZiBfQmluQ2xvczxlcXVhbF90byxfVmFsQXJyYXksX0NvbnN0YW50LF9UcCxfVHA+IF9DbG9z
dXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIGJvb2w+IChfQ2xvc3VyZSAoX192LCBfX3QpKTsg
fSB0ZW1wbGF0ZTxjbGFzcyBfVHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxlcXVhbF90byxfQ29u
c3RhbnQsX1ZhbEFycmF5LF9UcCxfVHA+LGJvb2w+IG9wZXJhdG9yID09IChjb25zdCBfVHAgJl9f
dCwgY29uc3QgdmFsYXJyYXk8X1RwPiAmX192KSB7IHR5cGVkZWYgX0JpbkNsb3M8ZXF1YWxfdG8s
X0NvbnN0YW50LF9WYWxBcnJheSxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9z
dXJlLCBib29sPiAoX0Nsb3N1cmUgKF9fdCwgX192KSk7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bm90X2VxdWFsX3RvLF9WYWxBcnJheSxfVmFsQXJyYXks
X1RwLF9UcD4sYm9vbD4gb3BlcmF0b3IgIT0gKGNvbnN0IHZhbGFycmF5PF9UcD4gJl9fdiwgY29u
c3QgdmFsYXJyYXk8X1RwPiAmX193KSB7IHR5cGVkZWYgX0JpbkNsb3M8bm90X2VxdWFsX3RvLF9W
YWxBcnJheSxfVmFsQXJyYXksX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3Vy
ZSwgYm9vbD4gKF9DbG9zdXJlIChfX3YsIF9fdykpOyB9IHRlbXBsYXRlPGNsYXNzIF9UcD4gaW5s
aW5lIF9FeHByPF9CaW5DbG9zPG5vdF9lcXVhbF90byxfVmFsQXJyYXksX0NvbnN0YW50LF9UcCxf
VHA+LGJvb2w+IG9wZXJhdG9yICE9IChjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YsIGNvbnN0IF9U
cCAmX190KSB7IHR5cGVkZWYgX0JpbkNsb3M8bm90X2VxdWFsX3RvLF9WYWxBcnJheSxfQ29uc3Rh
bnQsX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgYm9vbD4gKF9DbG9z
dXJlIChfX3YsIF9fdCkpOyB9IHRlbXBsYXRlPGNsYXNzIF9UcD4gaW5saW5lIF9FeHByPF9CaW5D
bG9zPG5vdF9lcXVhbF90byxfQ29uc3RhbnQsX1ZhbEFycmF5LF9UcCxfVHA+LGJvb2w+IG9wZXJh
dG9yICE9IChjb25zdCBfVHAgJl9fdCwgY29uc3QgdmFsYXJyYXk8X1RwPiAmX192KSB7IHR5cGVk
ZWYgX0JpbkNsb3M8bm90X2VxdWFsX3RvLF9Db25zdGFudCxfVmFsQXJyYXksX1RwLF9UcD4gX0Ns
b3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgYm9vbD4gKF9DbG9zdXJlIChfX3QsIF9fdikp
OyB9CnRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gaW5saW5lIF9FeHByPF9CaW5DbG9zPGxlc3MsX1Zh
bEFycmF5LF9WYWxBcnJheSxfVHAsX1RwPixib29sPiBvcGVyYXRvciA8IChjb25zdCB2YWxhcnJh
eTxfVHA+ICZfX3YsIGNvbnN0IHZhbGFycmF5PF9UcD4gJl9fdykgeyB0eXBlZGVmIF9CaW5DbG9z
PGxlc3MsX1ZhbEFycmF5LF9WYWxBcnJheSxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHBy
PF9DbG9zdXJlLCBib29sPiAoX0Nsb3N1cmUgKF9fdiwgX193KSk7IH0gdGVtcGxhdGU8Y2xhc3Mg
X1RwPiBpbmxpbmUgX0V4cHI8X0JpbkNsb3M8bGVzcyxfVmFsQXJyYXksX0NvbnN0YW50LF9UcCxf
VHA+LGJvb2w+IG9wZXJhdG9yIDwgKGNvbnN0IHZhbGFycmF5PF9UcD4gJl9fdiwgY29uc3QgX1Rw
ICZfX3QpIHsgdHlwZWRlZiBfQmluQ2xvczxsZXNzLF9WYWxBcnJheSxfQ29uc3RhbnQsX1RwLF9U
cD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgYm9vbD4gKF9DbG9zdXJlIChfX3Ys
IF9fdCkpOyB9IHRlbXBsYXRlPGNsYXNzIF9UcD4gaW5saW5lIF9FeHByPF9CaW5DbG9zPGxlc3Ms
X0NvbnN0YW50LF9WYWxBcnJheSxfVHAsX1RwPixib29sPiBvcGVyYXRvciA8IChjb25zdCBfVHAg
Jl9fdCwgY29uc3QgdmFsYXJyYXk8X1RwPiAmX192KSB7IHR5cGVkZWYgX0JpbkNsb3M8bGVzcyxf
Q29uc3RhbnQsX1ZhbEFycmF5LF9UcCxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1
cmUsIGJvb2w+IChfQ2xvc3VyZSAoX190LCBfX3YpKTsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
IGlubGluZSBfRXhwcjxfQmluQ2xvczxncmVhdGVyLF9WYWxBcnJheSxfVmFsQXJyYXksX1RwLF9U
cD4sYm9vbD4gb3BlcmF0b3IgPiAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192LCBjb25zdCB2YWxh
cnJheTxfVHA+ICZfX3cpIHsgdHlwZWRlZiBfQmluQ2xvczxncmVhdGVyLF9WYWxBcnJheSxfVmFs
QXJyYXksX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxfQ2xvc3VyZSwgYm9vbD4gKF9D
bG9zdXJlIChfX3YsIF9fdykpOyB9IHRlbXBsYXRlPGNsYXNzIF9UcD4gaW5saW5lIF9FeHByPF9C
aW5DbG9zPGdyZWF0ZXIsX1ZhbEFycmF5LF9Db25zdGFudCxfVHAsX1RwPixib29sPiBvcGVyYXRv
ciA+IChjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YsIGNvbnN0IF9UcCAmX190KSB7IHR5cGVkZWYg
X0JpbkNsb3M8Z3JlYXRlcixfVmFsQXJyYXksX0NvbnN0YW50LF9UcCxfVHA+IF9DbG9zdXJlOyBy
ZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIGJvb2w+IChfQ2xvc3VyZSAoX192LCBfX3QpKTsgfSB0ZW1w
bGF0ZTxjbGFzcyBfVHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxncmVhdGVyLF9Db25zdGFudCxf
VmFsQXJyYXksX1RwLF9UcD4sYm9vbD4gb3BlcmF0b3IgPiAoY29uc3QgX1RwICZfX3QsIGNvbnN0
IHZhbGFycmF5PF9UcD4gJl9fdikgeyB0eXBlZGVmIF9CaW5DbG9zPGdyZWF0ZXIsX0NvbnN0YW50
LF9WYWxBcnJheSxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLCBib29s
PiAoX0Nsb3N1cmUgKF9fdCwgX192KSk7IH0KdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBpbmxpbmUg
X0V4cHI8X0JpbkNsb3M8bGVzc19lcXVhbCxfVmFsQXJyYXksX1ZhbEFycmF5LF9UcCxfVHA+LGJv
b2w+IG9wZXJhdG9yIDw9IChjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YsIGNvbnN0IHZhbGFycmF5
PF9UcD4gJl9fdykgeyB0eXBlZGVmIF9CaW5DbG9zPGxlc3NfZXF1YWwsX1ZhbEFycmF5LF9WYWxB
cnJheSxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLCBib29sPiAoX0Ns
b3N1cmUgKF9fdiwgX193KSk7IH0gdGVtcGxhdGU8Y2xhc3MgX1RwPiBpbmxpbmUgX0V4cHI8X0Jp
bkNsb3M8bGVzc19lcXVhbCxfVmFsQXJyYXksX0NvbnN0YW50LF9UcCxfVHA+LGJvb2w+IG9wZXJh
dG9yIDw9IChjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YsIGNvbnN0IF9UcCAmX190KSB7IHR5cGVk
ZWYgX0JpbkNsb3M8bGVzc19lcXVhbCxfVmFsQXJyYXksX0NvbnN0YW50LF9UcCxfVHA+IF9DbG9z
dXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIGJvb2w+IChfQ2xvc3VyZSAoX192LCBfX3QpKTsg
fSB0ZW1wbGF0ZTxjbGFzcyBfVHA+IGlubGluZSBfRXhwcjxfQmluQ2xvczxsZXNzX2VxdWFsLF9D
b25zdGFudCxfVmFsQXJyYXksX1RwLF9UcD4sYm9vbD4gb3BlcmF0b3IgPD0gKGNvbnN0IF9UcCAm
X190LCBjb25zdCB2YWxhcnJheTxfVHA+ICZfX3YpIHsgdHlwZWRlZiBfQmluQ2xvczxsZXNzX2Vx
dWFsLF9Db25zdGFudCxfVmFsQXJyYXksX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxf
Q2xvc3VyZSwgYm9vbD4gKF9DbG9zdXJlIChfX3QsIF9fdikpOyB9CnRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4gaW5saW5lIF9FeHByPF9CaW5DbG9zPGdyZWF0ZXJfZXF1YWwsX1ZhbEFycmF5LF9WYWxB
cnJheSxfVHAsX1RwPixib29sPiBvcGVyYXRvciA+PSAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192
LCBjb25zdCB2YWxhcnJheTxfVHA+ICZfX3cpIHsgdHlwZWRlZiBfQmluQ2xvczxncmVhdGVyX2Vx
dWFsLF9WYWxBcnJheSxfVmFsQXJyYXksX1RwLF9UcD4gX0Nsb3N1cmU7IHJldHVybiBfRXhwcjxf
Q2xvc3VyZSwgYm9vbD4gKF9DbG9zdXJlIChfX3YsIF9fdykpOyB9IHRlbXBsYXRlPGNsYXNzIF9U
cD4gaW5saW5lIF9FeHByPF9CaW5DbG9zPGdyZWF0ZXJfZXF1YWwsX1ZhbEFycmF5LF9Db25zdGFu
dCxfVHAsX1RwPixib29sPiBvcGVyYXRvciA+PSAoY29uc3QgdmFsYXJyYXk8X1RwPiAmX192LCBj
b25zdCBfVHAgJl9fdCkgeyB0eXBlZGVmIF9CaW5DbG9zPGdyZWF0ZXJfZXF1YWwsX1ZhbEFycmF5
LF9Db25zdGFudCxfVHAsX1RwPiBfQ2xvc3VyZTsgcmV0dXJuIF9FeHByPF9DbG9zdXJlLCBib29s
PiAoX0Nsb3N1cmUgKF9fdiwgX190KSk7IH0gdGVtcGxhdGU8Y2xhc3MgX1RwPiBpbmxpbmUgX0V4
cHI8X0JpbkNsb3M8Z3JlYXRlcl9lcXVhbCxfQ29uc3RhbnQsX1ZhbEFycmF5LF9UcCxfVHA+LGJv
b2w+IG9wZXJhdG9yID49IChjb25zdCBfVHAgJl9fdCwgY29uc3QgdmFsYXJyYXk8X1RwPiAmX192
KSB7IHR5cGVkZWYgX0JpbkNsb3M8Z3JlYXRlcl9lcXVhbCxfQ29uc3RhbnQsX1ZhbEFycmF5LF9U
cCxfVHA+IF9DbG9zdXJlOyByZXR1cm4gX0V4cHI8X0Nsb3N1cmUsIGJvb2w+IChfQ2xvc3VyZSAo
X190LCBfX3YpKTsgfQoKCgp9CiMgMzIgIi91c3IvaW5jbHVkZS9nKystdjMvdmFsYXJyYXkiIDIg
MwojIDIgInZhbHRlc3QuY3BwIiAyCgppbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQp7
CiAgc3RkOjp2YWxhcnJheTxkb3VibGU+IGEoMS4yLCAxMCk7CiAgc3RkOjp2YWxhcnJheTxkb3Vi
bGU+IGIoMS4yLCAxMCk7CgogIGJvb2wgZXF1YWwgPSAoIGEgPT0gYik7CiAgcmV0dXJuIGludChl
cXVhbCk7Cn0K


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