public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/8549: --pedantic-errors problems on RedHat 6.1
@ 2002-11-20 6:59 Marc Mengel
0 siblings, 0 replies; 6+ messages in thread
From: Marc Mengel @ 2002-11-20 6:59 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
The following reply was made to PR c++/8549; it has been noted by GNATS.
From: Marc Mengel <mengel@fnal.gov>
To: Zack Weinberg <zack@codesourcery.com>
Cc: bangerth@dealii.org, gcc-bugs@gcc.gnu.org, gcc-gnats@gcc.gnu.org
Subject: Re: c++/8549: --pedantic-errors problems on RedHat 6.1
Date: Wed, 13 Nov 2002 17:24:01 -0600
Zack Weinberg wrote:
> bangerth@dealii.org writes:
>
>
>> So I think, the whole thing is attributable to the following:
>> Somewhen an extension in gcc was deprecated and the kernel
>> folks changed their header files accordingly.I think the
>> only way to make newer gccs work on these old systems
>> would be to fixinclude the respective header files, but I
>> doubt someone would like to put much energy in backporting
>> gcc to such old systems.
>
>
> Note that the kernel has nothing to do with this. The header
> bits/mathinline.h is part of GNU libc.
The point is, this is a case where --pedantic doesn't give
a warning, but --pedantic-errors fails the compile. That's the
bug. The fact that it's in an older glibc header file isn't
neccesarily relevant to that point. Either --pedantic should
give a warning about it too, or --pedantic-errors shouldn't
give an error.
Of course the "old system" issue is relevant to the priority which one places
on fixing the bug, so I'm not saying the origin shouldn't be discussed,
but I just want to remind folks what I thought the issue was.
Marc Mengel
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: c++/8549: --pedantic-errors problems on RedHat 6.1
@ 2002-11-20 6:56 Zack Weinberg
0 siblings, 0 replies; 6+ messages in thread
From: Zack Weinberg @ 2002-11-20 6:56 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
The following reply was made to PR c++/8549; it has been noted by GNATS.
From: Zack Weinberg <zack@codesourcery.com>
To: bangerth@dealii.org
Cc: gcc-bugs@gcc.gnu.org, mengel@fnal.gov, gcc-gnats@gcc.gnu.org
Subject: Re: c++/8549: --pedantic-errors problems on RedHat 6.1
Date: Wed, 13 Nov 2002 15:14:42 -0800
bangerth@dealii.org writes:
> So I think, the whole thing is attributable to the following:
> Somewhen an extension in gcc was deprecated and the kernel
> folks changed their header files accordingly.I think the
> only way to make newer gccs work on these old systems
> would be to fixinclude the respective header files, but I
> doubt someone would like to put much energy in backporting
> gcc to such old systems.
Note that the kernel has nothing to do with this. The header
bits/mathinline.h is part of GNU libc.
zw
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: c++/8549: --pedantic-errors problems on RedHat 6.1
@ 2002-11-19 18:37 bangerth
0 siblings, 0 replies; 6+ messages in thread
From: bangerth @ 2002-11-19 18:37 UTC (permalink / raw)
To: gcc-bugs, gcc-prs, mengel, nobody
Synopsis: --pedantic-errors problems on RedHat 6.1
State-Changed-From-To: feedback->analyzed
State-Changed-By: bangerth
State-Changed-When: Wed Nov 13 09:29:30 2002
State-Changed-Why:
The problem boils down to the following: in cmath, the
isgreaterequal (and other) macros are used, of which the
definition has changed between kernels 2.2 and 2.4. They are
defined in /usr/include/bits/mathinline.h. The
following snippet shows that:
--------------------------------------
// code from /usr/include/bits/mathinline.h
#if 1 // from kernel 2.2
# define isgreaterequal(x, y) \
({ register char __result; \
__asm__ ("fucomip %%st(1), %%st; setae %%al" \
: "=a" (__result) : "u" (y), "t" (x) : "cc", "st"); \
__result; })
#else // from kernel 2.4
# define isgreaterequal(x, y) __builtin_isgreaterequal (x, y)
#endif
int main ()
{
isgreaterequal(1.,2.);
};
---------------------------------------
If compiled as is, I get
tmp/g> /home/bangerth/bin/gcc-3.2.1-pre/bin/c++ -c -O2 --pedantic-errors foo2.cc
foo2.cc: In function `int main()':
foo2.cc:14: ISO C++ forbids braced-groups within expressions
If I change the #if 1 to #if 0 to enable the code that
is in the 2.4 kernel series, I get no errors. This is
the behavior of all gccs since 3.0, but also with 2.95!
So I think, the whole thing is attributable to the following:
Somewhen an extension in gcc was deprecated and the kernel
folks changed their header files accordingly.I think the
only way to make newer gccs work on these old systems
would be to fixinclude the respective header files, but I
doubt someone would like to put much energy in backporting
gcc to such old systems.
What do we do with this report then?
Regards
Wolfgang
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8549
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: c++/8549: --pedantic-errors problems on RedHat 6.1
@ 2002-11-19 18:36 Marc Mengel
0 siblings, 0 replies; 6+ messages in thread
From: Marc Mengel @ 2002-11-19 18:36 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
The following reply was made to PR c++/8549; it has been noted by GNATS.
From: Marc Mengel <mengel@fnal.gov>
To: bangerth@dealii.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org,
mengel@fnal.gov, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org
Cc:
Subject: Re: c++/8549: --pedantic-errors problems on RedHat 6.1
Date: Wed, 13 Nov 2002 10:58:17 -0600
This is a multi-part message in MIME format.
--------------000801000200090106090205
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
bangerth@dealii.org wrote:
> Synopsis: --pedantic-errors problems on RedHat 6.1
>
> State-Changed-From-To: open->feedback
> State-Changed-By: bangerth
> State-Changed-When: Tue Nov 12 10:21:26 2002
> State-Changed-Why:
> You have a very old system... I cannot reproduce this
> problem with a more recent distribtion, neither with
> 3.0, 3.1, or 3.2.
>
> Nevertheless, if you want us
> to look at the problem, please tell us what happens exactly
> at the lines indicated in std_cmath. Probably, there are
> initializers used that come from system headers. Please also
> provide preprocessed files as described on the gcc homepage.
> (However, in this case we would need both information I
> mentioned above.)
>
> Could you please also test 3.2.1 once it will be released in
> a few days?
>
> http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8549
I did not include a preprocessed file, as the problem goes away if you
preprocess it and run on the preprocessed file.
Instead, I have built a tarfile of all the include files touched in the build,
and a script that uses -nostdinc -Ifoo -Ibar ... which reproduces the problem
on other platforms.
As I mentioned this is a very hard to reproduce bug.
Hopefully the attached tarfile makes it clear; unpack it in an empty
directory, and run ./reproduce_it (a shell script).
Marc
--------------000801000200090106090205
Content-Type: application/x-tar;
name="reproduce_it.tar"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="reproduce_it.tar"
Li8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwNDA3NzUA
MDAwMzMwNQAwMDExNjM3ADAwMDAwMDAwMDAwADA3NTY0NTAxNTcxADAxMDA3MwAgNQAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1lbmdl
bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb3NzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuL2xpYi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAMDA0MDc3NQAwMDAzMzA1ADAwMTE2MzcAMDAwMDAwMDAwMDAA
MDc1NjQ1MDA2MzEAMDEwNjM1ACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAHVzdGFyICAAbWVuZ2VsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv
c3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4v
bGliL2djYy1saWIvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDQwNzc1ADAw
MDMzMDUAMDAxMTYzNwAwMDAwMDAwMDAwMAAwNzU2NDUwMDYzMQAwMTIxMzUAIDUAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtZW5nZWwA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9zcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu
dS8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAADAwNDA3NzUAMDAwMzMwNQAwMDExNjM3ADAwMDAwMDAwMDAwADA3
NTY0NTAwNjMxADAxNTE1NQAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAB1c3RhciAgAG1lbmdlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb3Nz
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDA0MDc3NQAwMDAz
MzA1ADAwMTE2MzcAMDAwMDAwMDAwMDAAMDc1NjQ1MDA2MzIAMDE1NDU3ACA1AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWVuZ2VsAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvc3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4vbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4xL3NwZWNzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDMzMDUAMDAxMTYzNwAwMDAwMDAxNDMxNwAwNzQ3
MzA0MjU1MQAwMTY1MjAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAdXN0YXIgIABtZW5nZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9zcwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKmFzbToK
JXt2Oi1WfSAle1F5On0gJXshUW46LVF5fSAle259ICV7VH0gJXtZbSwqfSAle1lkLCp9ICV7
V2EsKjolKn0KCiphc21fZGVidWc6CiV7Z3N0YWJzKjotLWdzdGFic30leyFnc3RhYnMqOiV7
Zyo6LS1nZHdhcmYyfX0KCiphc21fZmluYWw6CiV8CgoqYXNtX29wdGlvbnM6CiVhICVZICV7
YzolV3tvKn0leyFvKjotbyAldyViJU99fSV7IWM6LW8gJWQldyV1JU99CgoqaW52b2tlX2Fz
OgoleyFTOi1vICV7fCFwaXBlOiVnLnN9IHwKIGFzICUoYXNtX29wdGlvbnMpICV7IXBpcGU6
JWcuc30gJUEgfQoKKmNwcDoKJShjcHBfY3B1KSAle2ZQSUM6LURfX1BJQ19fIC1EX19waWNf
X30gJXtmcGljOi1EX19QSUNfXyAtRF9fcGljX199ICV7cG9zaXg6LURfUE9TSVhfU09VUkNF
fSAle3B0aHJlYWQ6LURfUkVFTlRSQU5UfQoKKmNwcF9vcHRpb25zOgolKGNwcF91bmlxdWVf
b3B0aW9ucykgJXtzdGQqfSAle2QqfSAle1cqfSAle3d9ICV7cGVkYW50aWMqfSAle2ZzaG93
LWNvbHVtbn0gJXtmbm8tc2hvdy1jb2x1bW59ICV7ZnNpZ25lZC1jaGFyJmZ1bnNpZ25lZC1j
aGFyfSAle2ZsZWFkaW5nLXVuZGVyc2NvcmV9ICV7Zm5vLWxlYWRpbmctdW5kZXJzY29yZX0g
JXtmbm8tb3BlcmF0b3ItbmFtZXN9ICV7ZnRhYnN0b3A9Kn0KCipjcHBfdW5pcXVlX29wdGlv
bnM6CiV7QzoleyFFOiVlR05VIEMgZG9lcyBub3Qgc3VwcG9ydCAtQyB3aXRob3V0IHVzaW5n
IC1FfX0gJXtub3N0ZGluYyp9ICV7Q30gJXt2fSAle0kqfSAle1B9ICV7JH0gJUkgJXtNRDot
TUQgJVd7IW86ICViLmR9JVd7byo6JS5kJSp9fSAle01NRDotTU1EICVXeyFvOiAlYi5kfSVX
e28qOiUuZCUqfX0gJXtNfSAle01NfSAlV3tNRip9ICV7TUd9ICV7TVB9ICV7TVEqfSAle01U
Kn0gJXshRToleyFNOiV7IU1NOiV7TUR8TU1EOiV7byo6LU1RICUqfX19fX0gJXshbm8tZ2Nj
Oi1EX19HTlVDX189JXYxIC1EX19HTlVDX01JTk9SX189JXYyIC1EX19HTlVDX1BBVENITEVW
RUxfXz0ldjN9ICV7IXVuZGVmOiV7IWFuc2k6JXshc3RkPSo6JXB9JXtzdGQ9Z251KjolcH19
ICVQfSAle3RyaWdyYXBoc30gJXtPczotRF9fT1BUSU1JWkVfU0laRV9ffSAle08qOiV7IU8w
Oi1EX19PUFRJTUlaRV9ffX0gJXtmbm8taW5saW5lfE8wfCFPKjotRF9fTk9fSU5MSU5FX199
ICV7ZmZhc3QtbWF0aDotRF9fRkFTVF9NQVRIX199ICV7ZnNob3J0LXdjaGFyOi1VX19XQ0hB
Ul9UWVBFX18gLURfX1dDSEFSX1RZUEVfXz1zaG9ydFwgdW5zaWduZWRcIGludH0gJXtmZnJl
ZXN0YW5kaW5nOi1EX19TVERDX0hPU1RFRF9fPTB9ICV7Zm5vLWhvc3RlZDotRF9fU1REQ19I
T1NURURfXz0wfSAleyFmZnJlZXN0YW5kaW5nOiV7IWZuby1ob3N0ZWQ6LURfX1NURENfSE9T
VEVEX189MX19ICV7cmVtYXB9ICV7ZzM6LWREfSAle0h9ICVDICV7RComVSomQSp9ICV7aSp9
ICVaICVpICV7RXxNfE1NOiVXe28qfX0KCip0cmFkX2NhcGFibGVfY3BwOgole3RyYWRpdGlv
bmFsfGZ0cmFkaXRpb25hbHx0cmFkaXRpb25hbC1jcHA6dHJhZH1jcHAwCgoqY2MxOgolKGNj
MV9jcHUpICV7cHJvZmlsZTotcH0KCipjYzFfb3B0aW9uczoKJXtwZzole2ZvbWl0LWZyYW1l
LXBvaW50ZXI6JWUtcGcgYW5kIC1mb21pdC1mcmFtZS1wb2ludGVyIGFyZSBpbmNvbXBhdGli
bGV9fSAlMSAleyFROi1xdWlldH0gLWR1bXBiYXNlICVCICV7ZCp9ICV7bSp9ICV7YSp9ICV7
Zyp9ICV7Typ9ICV7Vyp9ICV7d30gJXtwZWRhbnRpYyp9ICV7c3RkKn0gJXthbnNpfSAle3Ry
YWRpdGlvbmFsfSAle3Y6LXZlcnNpb259ICV7cGc6LXB9ICV7cH0gJXtmKn0gJXtRbjotZm5v
LWlkZW50fSAley0taGVscDotLWhlbHB9ICV7LS10YXJnZXQtaGVscDotLXRhcmdldC1oZWxw
fSAleyFmc3ludGF4LW9ubHk6JXtTOiVXe28qfSV7IW8qOi1vICViLnN9fX0gJXtmc3ludGF4
LW9ubHk6LW8gJWp9ICV7LXBhcmFtKn0KCipjYzFwbHVzOgoKCipsaW5rX2djY19jX3NlcXVl
bmNlOgolRyAlTCAlRwoKKmVuZGZpbGU6CiV7IXNoYXJlZDpjcnRlbmQubyVzfSAle3NoYXJl
ZDpjcnRlbmRTLm8lc30gY3J0bi5vJXMKCipsaW5rOgotbSBlbGZfaTM4NiAle3NoYXJlZDot
c2hhcmVkfSAgICV7IXNoYXJlZDogICAgICV7IWliY3M6ICAgICAgICV7IXN0YXRpYzogCSV7
cmR5bmFtaWM6LWV4cG9ydC1keW5hbWljfSAJJXshZHluYW1pYy1saW5rZXI6LWR5bmFtaWMt
bGlua2VyIC9saWIvbGQtbGludXguc28uMn19IAkle3N0YXRpYzotc3RhdGljfX19CgoqbGli
Ogole3NoYXJlZDogLWxjfSAgICAleyFzaGFyZWQ6ICV7bWllZWUtZnA6LWxpZWVlfSAle3B0
aHJlYWQ6LWxwdGhyZWFkfSAJJXtwcm9maWxlOi1sY19wfSAleyFwcm9maWxlOiAtbGN9fQoK
KmxpYmdjYzoKLWxnY2MKCipzdGFydGZpbGU6CiV7IXNoYXJlZDogICAgICAle3BnOmdjcnQx
Lm8lc30gJXshcGc6JXtwOmdjcnQxLm8lc30gCQkgICAgICAgJXshcDole3Byb2ZpbGU6Z2Ny
dDEubyVzfSAJCQkgJXshcHJvZmlsZTpjcnQxLm8lc319fX0gICAgY3J0aS5vJXMgJXtzdGF0
aWM6Y3J0YmVnaW5ULm8lc30gICAleyFzdGF0aWM6JXshc2hhcmVkOmNydGJlZ2luLm8lc30g
JXtzaGFyZWQ6Y3J0YmVnaW5TLm8lc319Cgoqc3dpdGNoZXNfbmVlZF9zcGFjZXM6CgoKKnBy
ZWRlZmluZXM6Ci1EX19FTEZfXyAtRHVuaXggLURfX2dudV9saW51eF9fIC1EbGludXggLUFz
eXN0ZW09cG9zaXgKCipjcm9zc19jb21waWxlOgowCgoqdmVyc2lvbjoKMy4xCgoqbXVsdGls
aWI6Ci4gOwoKKm11bHRpbGliX2RlZmF1bHRzOgoKCiptdWx0aWxpYl9leHRyYToKCgoqbXVs
dGlsaWJfbWF0Y2hlczoKCgoqbXVsdGlsaWJfZXhjbHVzaW9uczoKCgoqbGlua2VyOgpjb2xs
ZWN0MgoKKmxpbmtfbGliZ2NjOgolRAoKKm1kX2V4ZWNfcHJlZml4OgoKCiptZF9zdGFydGZp
bGVfcHJlZml4OgoKCiptZF9zdGFydGZpbGVfcHJlZml4XzE6CgoKKmNwcF9jcHVfZGVmYXVs
dDoKLURfX3R1bmVfaTY4Nl9fIC1EX190dW5lX3BlbnRpdW1wcm9fXwoKKmNwcF9jcHU6CiUo
Y3BwX2NwdTMyKSAlKGNwcF9jcHVjb21tb24pCgoqY3BwX2NwdTMyOgotQWNwdT1pMzg2IC1B
bWFjaGluZT1pMzg2ICV7IWFuc2k6JXshc3RkPWMqOiV7IXN0ZD1pKjotRGkzODZ9fX0gLURf
X2kzODYgLURfX2kzODZfXyAlKGNwcF9jcHUzMnNpemV0KQoKKmNwcF9jcHU2NDoKLUFjcHU9
eDg2XzY0IC1BbWFjaGluZT14ODZfNjQgLURfX3g4Nl82NCAtRF9feDg2XzY0X18gJShjcHBf
Y3B1NjRzaXpldCkKCipjcHBfY3B1MzJzaXpldDoKCgoqY3BwX2NwdTY0c2l6ZXQ6CgoKKmNw
cF9jcHVjb21tb246CiV7bWFyY2g9aTM4NjoleyFtY3B1KjotRF9fdHVuZV9pMzg2X18gfX0l
e21hcmNoPWk0ODY6LURfX2k0ODYgLURfX2k0ODZfXyAleyFtY3B1KjotRF9fdHVuZV9pNDg2
X18gfX0le21hcmNoPXBlbnRpdW18bWFyY2g9aTU4NjotRF9faTU4NiAtRF9faTU4Nl9fIC1E
X19wZW50aXVtIC1EX19wZW50aXVtX18gICAleyFtY3B1KjotRF9fdHVuZV9pNTg2X18gLURf
X3R1bmVfcGVudGl1bV9fIH19JXttYXJjaD1wZW50aXVtLW1teDotRF9faTU4NiAtRF9faTU4
Nl9fIC1EX19wZW50aXVtIC1EX19wZW50aXVtX18gICAtRF9fcGVudGl1bV9fbW14X18gICAl
eyFtY3B1KjotRF9fdHVuZV9pNTg2X18gLURfX3R1bmVfcGVudGl1bV9fIC1EX190dW5lX3Bl
bnRpdW1fbW14X199fSV7bWFyY2g9cGVudGl1bXByb3xtYXJjaD1pNjg2Oi1EX19pNjg2IC1E
X19pNjg2X18gICAtRF9fcGVudGl1bXBybyAtRF9fcGVudGl1bXByb19fICAgJXshbWNwdSo6
LURfX3R1bmVfaTY4Nl9fIC1EX190dW5lX3BlbnRpdW1wcm9fXyB9fSV7bWFyY2g9azY6LURf
X2s2IC1EX19rNl9fICV7IW1jcHUqOi1EX190dW5lX2s2X18gfX0le21hcmNoPWs2LTI6LURf
X2s2IC1EX19rNl9fIC1EX19rNl8yX18gICAleyFtY3B1KjotRF9fdHVuZV9rNl9fIC1EX190
dW5lX2s2XzJfXyB9fSV7bWFyY2g9azYtMzotRF9fazYgLURfX2s2X18gLURfX2s2XzNfXyAg
ICV7IW1jcHUqOi1EX190dW5lX2s2X18gLURfX3R1bmVfazZfM19fIH19JXttYXJjaD1hdGhs
b258bWFyY2g9YXRobG9uLXRiaXJkOi1EX19hdGhsb24gLURfX2F0aGxvbl9fICAgJXshbWNw
dSo6LURfX3R1bmVfYXRobG9uX18gfX0le21hcmNoPWF0aGxvbi00fG1hcmNoPWF0aGxvbi14
cHxtYXJjaD1hdGhsb24tbXA6LURfX2F0aGxvbiAtRF9fYXRobG9uX18gICAtRF9fYXRobG9u
X3NzZV9fICAgJXshbWNwdSo6LURfX3R1bmVfYXRobG9uX18gLURfX3R1bmVfYXRobG9uX3Nz
ZV9fIH19JXttYXJjaD1wZW50aXVtNDotRF9fcGVudGl1bTQgLURfX3BlbnRpdW00X18gJXsh
bWNwdSo6LURfX3R1bmVfcGVudGl1bTRfXyB9fSV7bTM4NnxtY3B1PWkzODY6LURfX3R1bmVf
aTM4Nl9fIH0le200ODZ8bWNwdT1pNDg2Oi1EX190dW5lX2k0ODZfXyB9JXttcGVudGl1bXxt
Y3B1PXBlbnRpdW18bWNwdT1pNTg2fG1jcHU9cGVudGl1bS1tbXg6LURfX3R1bmVfaTU4Nl9f
IC1EX190dW5lX3BlbnRpdW1fXyB9JXttcGVudGl1bXByb3xtY3B1PXBlbnRpdW1wcm98bWNw
dT1pNjg2fGNwdT1wZW50aXVtMnxjcHU9cGVudGl1bTM6LURfX3R1bmVfaTY4Nl9fIC1EX190
dW5lX3BlbnRpdW1wcm9fXyB9JXttY3B1PWs2fG1jcHU9azYtMnxtY3B1PWs2LTM6LURfX3R1
bmVfazZfXyB9JXttY3B1PWF0aGxvbnxtY3B1PWF0aGxvbi10YmlyZHxtY3B1PWF0aGxvbi00
fG1jcHU9YXRobG9uLXhwfG1jcHU9YXRobG9uLW1wOi1EX190dW5lX2F0aGxvbl9fIH0le21j
cHU9YXRobG9uLTR8bWNwdT1hdGhsb24teHB8bWNwdT1hdGhsb24tbXA6LURfX3R1bmVfYXRo
bG9uX3NzZV9fIH0le21jcHU9cGVudGl1bTQ6LURfX3R1bmVfcGVudGl1bTRfXyB9JXttYXJj
aD1hdGhsb24tdGJpcmR8bWFyY2g9YXRobG9uLXhwfG1hcmNoPWF0aGxvbi1tcHxtYXJjaD1w
ZW50aXVtM3xtYXJjaD1wZW50aXVtNDotRF9fU1NFX18gfSV7bWFyY2g9cGVudGl1bS1tbXh8
bWFyY2g9azZ8bWFyY2g9azYtMnxtYXJjaD1rNi0zfG1hcmNoPWF0aGxvbnxtYXJjaD1hdGhs
b24tdGJpcmR8bWFyY2g9YXRobG9uLTR8bWFyY2g9YXRobG9uLXhwfG1hcmNoPWF0aGxvbi1t
cHxtYXJjaD1wZW50aXVtMnxtYXJjaD1wZW50aXVtM3xtYXJjaD1wZW50aXVtNDogLURfX01N
WF9fIH0le21hcmNoPWs2LTJ8bWFyY2g9azYtM3xtYXJjaD1hdGhsb258bWFyY2g9YXRobG9u
LXRiaXJkfG1hcmNoPWF0aGxvbi00fG1hcmNoPWF0aGxvbi14cHxtYXJjaD1hdGhsb24tbXA6
IC1EX18zZE5PV19fIH0le21hcmNoPWF0aGxvbnxtYXJjaD1hdGhsb24tdGJpcmR8bWFyY2g9
YXRobG9uLTR8bWFyY2g9YXRobG9uLXhwfG1hcmNoPWF0aGxvbi1tcDogLURfXzNkTk9XX0Ff
XyB9JXttYXJjaD1wZW50aXVtNDogLURfX1NTRTJfXyB9JXshbWFyY2gqOiV7IW1jcHUqOiV7
IW0zODY6JXshbTQ4NjoleyFtcGVudGl1bSo6JShjcHBfY3B1X2RlZmF1bHQpfX19fX0KCipj
YzFfY3B1OgoleyFtY3B1KjogJXttMzg2Oi1tY3B1PWkzODYgJW5gLW0zODYnIGlzIGRlcHJl
Y2F0ZWQuIFVzZSBgLW1hcmNoPWkzODYnIG9yIGAtbWNwdT1pMzg2JyBpbnN0ZWFkLgp9ICV7
bTQ4NjotbWNwdT1pNDg2ICVuYC1tNDg2JyBpcyBkZXByZWNhdGVkLiBVc2UgYC1tYXJjaD1p
NDg2JyBvciBgLW1jcHU9aTQ4NicgaW5zdGVhZC4KfSAle21wZW50aXVtOi1tY3B1PXBlbnRp
dW0gJW5gLW1wZW50aXVtJyBpcyBkZXByZWNhdGVkLiBVc2UgYC1tYXJjaD1wZW50aXVtJyBv
ciBgLW1jcHU9cGVudGl1bScgaW5zdGVhZC4KfSAle21wZW50aXVtcHJvOi1tY3B1PXBlbnRp
dW1wcm8gJW5gLW1wZW50aXVtcHJvJyBpcyBkZXByZWNhdGVkLiBVc2UgYC1tYXJjaD1wZW50
aXVtcHJvJyBvciBgLW1jcHU9cGVudGl1bXBybycgaW5zdGVhZC4KfX0gJXttaW50ZWwtc3lu
dGF4Oi1tYXNtPWludGVsICVuYC1taW50ZWwtc3ludGF4JyBpcyBkZXByZWNhdGVkLiBVc2Ug
YC1tYXNtPWludGVsJyBpbnN0ZWFkLgp9ICV7bW5vLWludGVsLXN5bnRheDotbWFzbT1hdHQg
JW5gLW1uby1pbnRlbC1zeW50YXgnIGlzIGRlcHJlY2F0ZWQuIFVzZSBgLW1hc209YXR0JyBp
bnN0ZWFkLgp9CgoqbGlua19jb21tYW5kOgoleyFmc3ludGF4LW9ubHk6JXshYzoleyFNOiV7
IU1NOiV7IUU6JXshUzogICAgJShsaW5rZXIpICVsICVYICV7byp9ICV7QX0gJXtkfSAle2Uq
fSAle219ICV7Tn0gJXtufSAle3J9ICV7c30gJXt0fSAgICAle3UqfSAle3h9ICV7en0gJXta
fSAleyFBOiV7IW5vc3RkbGliOiV7IW5vc3RhcnRmaWxlczolU319fSAgICAle3N0YXRpYzp9
ICV7TCp9ICUobGlua19saWJnY2MpICVvICV7IW5vc3RkbGliOiV7IW5vZGVmYXVsdGxpYnM6
JShsaW5rX2djY19jX3NlcXVlbmNlKX19ICAgICV7IUE6JXshbm9zdGRsaWI6JXshbm9zdGFy
dGZpbGVzOiVFfX19ICV7VCp9IH19fX19fQoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAuL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlLwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
MDA0MDc3NQAwMDAzMzA1ADAwMTE2MzcAMDAwMDAwMDAwMDAAMDc1NjQ1MDA2MzIAMDE3MTAy
ACA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy
ICAAbWVuZ2VsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvc3MAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4vbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4xL2luY2x1ZGUvZmxvYXQuaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjY0ADAwMDMzMDUAMDAxMTYzNwAwMDAw
MDAxMDYzNQAwNzQ3MzAyMTcwMgAwMjAzNTUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtZW5nZWwAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAG9zcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAALyogZmxvYXQuaCBmb3IgdGFyZ2V0IHdpdGggSUVFRSAzMi82NCBiaXQgYW5kIElu
dGVsIDM4NiBzdHlsZSA4MCBiaXQKICAgZmxvYXRpbmcgcG9pbnQgZm9ybWF0cyAqLwojaWZu
ZGVmIF9GTE9BVF9IXwojZGVmaW5lIF9GTE9BVF9IXwovKiBQcm9kdWNlZCBieSBlbnF1aXJl
IHZlcnNpb24gNC4zLCBDV0ksIEFtc3RlcmRhbSAqLwoKICAgLyogUmFkaXggb2YgZXhwb25l
bnQgcmVwcmVzZW50YXRpb24gKi8KI3VuZGVmIEZMVF9SQURJWAojZGVmaW5lIEZMVF9SQURJ
WCAyCiAgIC8qIE51bWJlciBvZiBiYXNlLUZMVF9SQURJWCBkaWdpdHMgaW4gdGhlIHNpZ25p
ZmljYW5kIG9mIGEgZmxvYXQgKi8KI3VuZGVmIEZMVF9NQU5UX0RJRwojZGVmaW5lIEZMVF9N
QU5UX0RJRyAyNAogICAvKiBOdW1iZXIgb2YgZGVjaW1hbCBkaWdpdHMgb2YgcHJlY2lzaW9u
IGluIGEgZmxvYXQgKi8KI3VuZGVmIEZMVF9ESUcKI2RlZmluZSBGTFRfRElHIDYKICAgLyog
QWRkaXRpb24gcm91bmRzIHRvIDA6IHplcm8sIDE6IG5lYXJlc3QsIDI6ICtpbmYsIDM6IC1p
bmYsIC0xOiB1bmtub3duICovCiN1bmRlZiBGTFRfUk9VTkRTCiNkZWZpbmUgRkxUX1JPVU5E
UyAxCiAgIC8qIERpZmZlcmVuY2UgYmV0d2VlbiAxLjAgYW5kIHRoZSBtaW5pbXVtIGZsb2F0
IGdyZWF0ZXIgdGhhbiAxLjAgKi8KI3VuZGVmIEZMVF9FUFNJTE9OCiNkZWZpbmUgRkxUX0VQ
U0lMT04gMS4xOTIwOTI5MGUtMDdGCiAgIC8qIE1pbmltdW0gaW50IHggc3VjaCB0aGF0IEZM
VF9SQURJWCoqKHgtMSkgaXMgYSBub3JtYWxpc2VkIGZsb2F0ICovCiN1bmRlZiBGTFRfTUlO
X0VYUAojZGVmaW5lIEZMVF9NSU5fRVhQICgtMTI1KQogICAvKiBNaW5pbXVtIG5vcm1hbGlz
ZWQgZmxvYXQgKi8KI3VuZGVmIEZMVF9NSU4KI2RlZmluZSBGTFRfTUlOIDEuMTc1NDk0MzVl
LTM4RgogICAvKiBNaW5pbXVtIGludCB4IHN1Y2ggdGhhdCAxMCoqeCBpcyBhIG5vcm1hbGlz
ZWQgZmxvYXQgKi8KI3VuZGVmIEZMVF9NSU5fMTBfRVhQCiNkZWZpbmUgRkxUX01JTl8xMF9F
WFAgKC0zNykKICAgLyogTWF4aW11bSBpbnQgeCBzdWNoIHRoYXQgRkxUX1JBRElYKiooeC0x
KSBpcyBhIHJlcHJlc2VudGFibGUgZmxvYXQgKi8KI3VuZGVmIEZMVF9NQVhfRVhQCiNkZWZp
bmUgRkxUX01BWF9FWFAgMTI4CiAgIC8qIE1heGltdW0gZmxvYXQgKi8KI3VuZGVmIEZMVF9N
QVgKI2RlZmluZSBGTFRfTUFYIDMuNDAyODIzNDdlKzM4RgogICAvKiBNYXhpbXVtIGludCB4
IHN1Y2ggdGhhdCAxMCoqeCBpcyBhIHJlcHJlc2VudGFibGUgZmxvYXQgKi8KI3VuZGVmIEZM
VF9NQVhfMTBfRVhQCiNkZWZpbmUgRkxUX01BWF8xMF9FWFAgMzgKCiAgIC8qIE51bWJlciBv
ZiBiYXNlLUZMVF9SQURJWCBkaWdpdHMgaW4gdGhlIHNpZ25pZmljYW5kIG9mIGEgZG91Ymxl
ICovCiN1bmRlZiBEQkxfTUFOVF9ESUcKI2RlZmluZSBEQkxfTUFOVF9ESUcgNTMKICAgLyog
TnVtYmVyIG9mIGRlY2ltYWwgZGlnaXRzIG9mIHByZWNpc2lvbiBpbiBhIGRvdWJsZSAqLwoj
dW5kZWYgREJMX0RJRwojZGVmaW5lIERCTF9ESUcgMTUKICAgLyogRGlmZmVyZW5jZSBiZXR3
ZWVuIDEuMCBhbmQgdGhlIG1pbmltdW0gZG91YmxlIGdyZWF0ZXIgdGhhbiAxLjAgKi8KI3Vu
ZGVmIERCTF9FUFNJTE9OCiNkZWZpbmUgREJMX0VQU0lMT04gMi4yMjA0NDYwNDkyNTAzMTMx
ZS0xNgogICAvKiBNaW5pbXVtIGludCB4IHN1Y2ggdGhhdCBGTFRfUkFESVgqKih4LTEpIGlz
IGEgbm9ybWFsaXNlZCBkb3VibGUgKi8KI3VuZGVmIERCTF9NSU5fRVhQCiNkZWZpbmUgREJM
X01JTl9FWFAgKC0xMDIxKQogICAvKiBNaW5pbXVtIG5vcm1hbGlzZWQgZG91YmxlICovCiN1
bmRlZiBEQkxfTUlOCiNkZWZpbmUgREJMX01JTiAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOAog
ICAvKiBNaW5pbXVtIGludCB4IHN1Y2ggdGhhdCAxMCoqeCBpcyBhIG5vcm1hbGlzZWQgZG91
YmxlICovCiN1bmRlZiBEQkxfTUlOXzEwX0VYUAojZGVmaW5lIERCTF9NSU5fMTBfRVhQICgt
MzA3KQogICAvKiBNYXhpbXVtIGludCB4IHN1Y2ggdGhhdCBGTFRfUkFESVgqKih4LTEpIGlz
IGEgcmVwcmVzZW50YWJsZSBkb3VibGUgKi8KI3VuZGVmIERCTF9NQVhfRVhQCiNkZWZpbmUg
REJMX01BWF9FWFAgMTAyNAogICAvKiBNYXhpbXVtIGRvdWJsZSAqLwojdW5kZWYgREJMX01B
WAojZGVmaW5lIERCTF9NQVggMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgKICAgLyogTWF4aW11
bSBpbnQgeCBzdWNoIHRoYXQgMTAqKnggaXMgYSByZXByZXNlbnRhYmxlIGRvdWJsZSAqLwoj
dW5kZWYgREJMX01BWF8xMF9FWFAKI2RlZmluZSBEQkxfTUFYXzEwX0VYUCAzMDgKCiAgIC8q
IE51bWJlciBvZiBiYXNlLUZMVF9SQURJWCBkaWdpdHMgaW4gdGhlIHNpZ25pZmljYW5kIG9m
IGEgbG9uZyBkb3VibGUgKi8KI3VuZGVmIExEQkxfTUFOVF9ESUcKI2RlZmluZSBMREJMX01B
TlRfRElHIDY0CiAgIC8qIE51bWJlciBvZiBkZWNpbWFsIGRpZ2l0cyBvZiBwcmVjaXNpb24g
aW4gYSBsb25nIGRvdWJsZSAqLwojdW5kZWYgTERCTF9ESUcKI2RlZmluZSBMREJMX0RJRyAx
OAogICAvKiBEaWZmZXJlbmNlIGJldHdlZW4gMS4wIGFuZCB0aGUgbWluaW11bSBsb25nIGRv
dWJsZSBncmVhdGVyIHRoYW4gMS4wICovCiN1bmRlZiBMREJMX0VQU0lMT04KI2RlZmluZSBM
REJMX0VQU0lMT04gMS4wODQyMDIxNzI0ODU1MDQ0MzQwMWUtMTlMCiAgIC8qIE1pbmltdW0g
aW50IHggc3VjaCB0aGF0IEZMVF9SQURJWCoqKHgtMSkgaXMgYSBub3JtYWxpc2VkIGxvbmcg
ZG91YmxlICovCiN1bmRlZiBMREJMX01JTl9FWFAKI2RlZmluZSBMREJMX01JTl9FWFAgKC0x
NjM4MSkKICAgLyogTWluaW11bSBub3JtYWxpc2VkIGxvbmcgZG91YmxlICovCiN1bmRlZiBM
REJMX01JTgojZGVmaW5lIExEQkxfTUlOIDMuMzYyMTAzMTQzMTEyMDkzNTA2MjZlLTQ5MzJM
CiAgIC8qIE1pbmltdW0gaW50IHggc3VjaCB0aGF0IDEwKip4IGlzIGEgbm9ybWFsaXNlZCBs
b25nIGRvdWJsZSAqLwojdW5kZWYgTERCTF9NSU5fMTBfRVhQCiNkZWZpbmUgTERCTF9NSU5f
MTBfRVhQICgtNDkzMSkKICAgLyogTWF4aW11bSBpbnQgeCBzdWNoIHRoYXQgRkxUX1JBRElY
KiooeC0xKSBpcyBhIHJlcHJlc2VudGFibGUgbG9uZyBkb3VibGUgKi8KI3VuZGVmIExEQkxf
TUFYX0VYUAojZGVmaW5lIExEQkxfTUFYX0VYUCAxNjM4NAogICAvKiBNYXhpbXVtIGxvbmcg
ZG91YmxlICovCiN1bmRlZiBMREJMX01BWAojZGVmaW5lIExEQkxfTUFYIDEuMTg5NzMxNDk1
MzU3MjMxNzY1MDJlKzQ5MzJMCiAgIC8qIE1heGltdW0gaW50IHggc3VjaCB0aGF0IDEwKip4
IGlzIGEgcmVwcmVzZW50YWJsZSBsb25nIGRvdWJsZSAqLwojdW5kZWYgTERCTF9NQVhfMTBf
RVhQCiNkZWZpbmUgTERCTF9NQVhfMTBfRVhQIDQ5MzIKCiNpZiBkZWZpbmVkIChfX1NURENf
VkVSU0lPTl9fKSAmJiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwKICAgLyogVGhlIGZs
b2F0aW5nLXBvaW50IGV4cHJlc3Npb24gZXZhbHVhdGlvbiBtZXRob2QuCiAgICAgICAgLTEg
IGluZGV0ZXJtaW5hdGUKICAgICAgICAgMCAgZXZhbHVhdGUgYWxsIG9wZXJhdGlvbnMgYW5k
IGNvbnN0YW50cyBqdXN0IHRvIHRoZSByYW5nZSBhbmQKICAgICAgICAgICAgcHJlY2lzaW9u
IG9mIHRoZSB0eXBlCiAgICAgICAgIDEgIGV2YWx1YXRlIG9wZXJhdGlvbnMgYW5kIGNvbnN0
YW50cyBvZiB0eXBlIGZsb2F0IGFuZCBkb3VibGUKICAgICAgICAgICAgdG8gdGhlIHJhbmdl
IGFuZCBwcmVjaXNpb24gb2YgdGhlIGRvdWJsZSB0eXBlLCBldmFsdWF0ZQogICAgICAgICAg
ICBsb25nIGRvdWJsZSBvcGVyYXRpb25zIGFuZCBjb25zdGFudHMgdG8gdGhlIHJhbmdlIGFu
ZAogICAgICAgICAgICBwcmVjaXNpb24gb2YgdGhlIGxvbmcgZG91YmxlIHR5cGUKICAgICAg
ICAgMiAgZXZhbHVhdGUgYWxsIG9wZXJhdGlvbnMgYW5kIGNvbnN0YW50cyB0byB0aGUgcmFu
Z2UgYW5kCiAgICAgICAgICAgIHByZWNpc2lvbiBvZiB0aGUgbG9uZyBkb3VibGUgdHlwZQog
ICAqLwojIHVuZGVmIEZMVF9FVkFMX01FVEhPRAojIGRlZmluZSBGTFRfRVZBTF9NRVRIT0QJ
MgoKICAgLyogTnVtYmVyIG9mIGRlY2ltYWwgZGlnaXRzIHRvIGVuYWJsZSByb3VuZGluZyB0
byB0aGUgZ2l2ZW4gbnVtYmVyIG9mCiAgICAgIGRlY2ltYWwgZGlnaXRzIHdpdGhvdXQgbG9z
cyBvZiBwcmVjaXNpb24uCiAgICAgICAgIGlmIEZMVF9SQURJWCA9PSAxMF5uOiAgI21hbnRp
c3NhICogbG9nMTAgKEZMVF9SQURJWCkKICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICA6
ICBjZWlsICgxICsgI21hbnRpc3NhICogbG9nMTAgKEZMVF9SQURJWCkpCiAgICAgIHdoZXJl
ICNtYW50aXNzYSBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIG1hbnRpc3NhIG9mIHRo
ZSB3aWRlc3QKICAgICAgc3VwcG9ydGVkIGZsb2F0aW5nLXBvaW50IHR5cGUuCiAgICovCiMg
dW5kZWYgREVDSU1BTF9ESUcKIyBkZWZpbmUgREVDSU1BTF9ESUcJMjEKCiNlbmRpZgkvKiBD
OTkgKi8KCiNlbmRpZiAvKiAgX0ZMT0FUX0hfX18gKi8KAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi9pbmNsdWRlLwAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAADAwNDA3NzUAMDAwMzMwNQAwMDExNjM3ADAwMDAwMDAwMDAwADA3
NTY0NTAwNjMyADAxMTUxMwAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAB1c3RhciAgAG1lbmdlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb3Nz
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuL2lu
Y2x1ZGUvZysrLXYzLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDA0MDc3NQAwMDAz
MzA1ADAwMTE2MzcAMDAwMDAwMDAwMDAAMDc1NjQ1MDA2MzIAMDEyNDE1ACA1AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWVuZ2VsAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvc3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4vaW5jbHVkZS9nKystdjMvY21hdGgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDMzMDUAMDAxMTYzNwAwMDAwMDAzNjAxMAAwNzQ3
MzA0MjY1NwAwMTM0MzYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAdXN0YXIgIABtZW5nZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9zcwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALy8gLSot
IEMrKyAtKi0gQyBmb3J3YXJkaW5nIGhlYWRlci4KCi8vIENvcHlyaWdodCAoQykgMTk5Nywg
MTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMgovLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4KLy8KLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExp
YnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQovLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLy8gdGVybXMgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLy8gRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBv
cHRpb24pCi8vIGFueSBsYXRlciB2ZXJzaW9uLgoKLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi8vIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUKLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KCi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLy8gU29mdHdh
cmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1B
IDAyMTExLTEzMDcsCi8vIFVTQS4KCi8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBt
YXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQovLyBsaWJyYXJ5
IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGlu
c3RhbnRpYXRlCi8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlv
bnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi8vIHRoaXMgZmlsZSBhbmQgbGlu
ayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwov
LyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFi
bGUgdG8gYmUgY292ZXJlZCBieQovLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Uu
ICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi8vIGludmFsaWRhdGUgYW55IG90
aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBi
eQovLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCgovLwovLyBJU08gQysrIDE0
ODgyOiAyNi41ICBDIGxpYnJhcnkKLy8KCi8qKiBAZmlsZSBjbWF0aAogKiAgVGhpcyBpcyBh
IFN0YW5kYXJkIEMrKyBMaWJyYXJ5IGZpbGUuICBZb3Ugc2hvdWxkIEBjICNpbmNsdWRlIHRo
aXMgZmlsZQogKiAgaW4geW91ciBwcm9ncmFtcywgcmF0aGVyIHRoYW4gYW55IG9mIHRoZSAi
Ki5oIiBpbXBsZW1lbnRhdGlvbiBmaWxlcy4KICoKICogIFRoaXMgaXMgdGhlIEMrKyB2ZXJz
aW9uIG9mIHRoZSBTdGFuZGFyZCBDIExpYnJhcnkgaGVhZGVyIEBjIG1hdGguaCwKICogIGFu
ZCBpdHMgY29udGVudHMgYXJlIChtb3N0bHkpIHRoZSBzYW1lIGFzIHRoYXQgaGVhZGVyLCBi
dXQgYXJlIGFsbAogKiAgY29udGFpbmVkIGluIHRoZSBuYW1lc3BhY2UgQGMgc3RkLgogKi8K
CiNpZm5kZWYgX0NQUF9DTUFUSAojZGVmaW5lIF9DUFBfQ01BVEggMQoKI3ByYWdtYSBHQ0Mg
c3lzdGVtX2hlYWRlcgoKI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+CgojaW5jbHVkZSA8
bWF0aC5oPgoKLy8gR2V0IHJpZCBvZiB0aG9zZSBtYWNyb3MgZGVmaW5lZCBpbiA8bWF0aC5o
PiBpbiBsaWV1IG9mIHJlYWwgZnVuY3Rpb25zLgojdW5kZWYgYWJzCiN1bmRlZiBkaXYKI3Vu
ZGVmIGFjb3MKI3VuZGVmIGFzaW4KI3VuZGVmIGF0YW4KI3VuZGVmIGF0YW4yCiN1bmRlZiBj
ZWlsCiN1bmRlZiBjb3MKI3VuZGVmIGNvc2gKI3VuZGVmIGV4cAojdW5kZWYgZmFicwojdW5k
ZWYgZmxvb3IKI3VuZGVmIGZtb2QKI3VuZGVmIGZyZXhwCiN1bmRlZiBsZGV4cAojdW5kZWYg
bG9nCiN1bmRlZiBsb2cxMAojdW5kZWYgbW9kZgojdW5kZWYgcG93CiN1bmRlZiBzaW4KI3Vu
ZGVmIHNpbmgKI3VuZGVmIHNxcnQKI3VuZGVmIHRhbgojdW5kZWYgdGFuaAoKbmFtZXNwYWNl
IHN0ZCAKewogIC8vIEZvcndhcmQgZGVjbGFyYXRpb24gb2YgYSBoZWxwZXIgZnVuY3Rpb24u
ICBUaGlzIHJlYWxseSBzaG91bGQgYmUKICAvLyBhbiBgZXhwb3J0ZWQnIGZvcndhcmQgZGVj
bGFyYXRpb24uCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBfVHAgX19jbWF0aF9wb3dlcihf
VHAsIHVuc2lnbmVkIGludCk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUg
X1RwCiAgICBfX2NtYXRoX2FicyhfVHAgX194KQogICAgewogICAgICByZXR1cm4gX194IDwg
X1RwKCkgPyAtX194IDogX194OwogICAgfQoKICBpbmxpbmUgZG91YmxlCiAgYWJzKGRvdWJs
ZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2ZhYnMoX194KTsgfQoKICBpbmxpbmUgZmxv
YXQKICBhYnMoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzZihfX3gpOyB9
CgogIGlubGluZSBsb25nIGRvdWJsZQogIGFicyhsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1
cm4gX19idWlsdGluX2ZhYnNsKF9feCk7IH0KCiNpZiBfR0xJQkNQUF9IQVZFX0FDT1NGCiAg
aW5saW5lIGZsb2F0IAogIGFjb3MoZmxvYXQgX194KSB7IHJldHVybiA6OmFjb3NmKF9feCk7
IH0KI2Vsc2UKICBpbmxpbmUgZmxvYXQgCiAgYWNvcyhmbG9hdCBfX3gpIHsgcmV0dXJuIDo6
YWNvcyhzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CiNlbmRpZgoKICB1c2luZyA6OmFj
b3M7CiAgCiNpZiBfR0xJQkNQUF9IQVZFX0FDT1NMCiAgaW5saW5lIGxvbmcgZG91YmxlIAog
IGFjb3MobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OmFjb3NsKF9feCk7IH0KI2Vsc2UK
ICBpbmxpbmUgbG9uZyBkb3VibGUgCiAgYWNvcyhsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJu
IDo6YWNvcyhzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CiNlbmRpZgoKICB1c2luZyA6
OmFzaW47CgojaWYgX0dMSUJDUFBfSEFWRV9BU0lORgogIGlubGluZSBmbG9hdCAKICBhc2lu
KGZsb2F0IF9feCkgeyByZXR1cm4gOjphc2luZihfX3gpOyB9CiNlbHNlCiAgaW5saW5lIGZs
b2F0IAogIGFzaW4oZmxvYXQgX194KSB7IHJldHVybiA6OmFzaW4oc3RhdGljX2Nhc3Q8ZG91
YmxlPihfX3gpKTsgfQojZW5kaWYKCiNpZiBfR0xJQkNQUF9IQVZFX0FTSU5MCiAgaW5saW5l
IGxvbmcgZG91YmxlIAogIGFzaW4obG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OmFzaW5s
KF9feCk7IH0KI2Vsc2UKICBpbmxpbmUgbG9uZyBkb3VibGUgCiAgYXNpbihsb25nIGRvdWJs
ZSBfX3gpIHsgcmV0dXJuIDo6YXNpbihzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CiNl
bmRpZgoKICB1c2luZyA6OmF0YW47CgojaWYgX0dMSUJDUFBfSEFWRV9BVEFORgogIGlubGlu
ZSBmbG9hdCAKICBhdGFuKGZsb2F0IF9feCkgeyByZXR1cm4gOjphdGFuZihfX3gpOyB9CiNl
bHNlCiAgaW5saW5lIGZsb2F0IAogIGF0YW4oZmxvYXQgX194KSB7IHJldHVybiA6OmF0YW4o
c3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQojZW5kaWYKCiNpZiBfR0xJQkNQUF9IQVZF
X0FUQU5MCiAgaW5saW5lIGxvbmcgZG91YmxlIAogIGF0YW4obG9uZyBkb3VibGUgX194KSB7
IHJldHVybiA6OmF0YW5sKF9feCk7IH0KI2Vsc2UKICBpbmxpbmUgbG9uZyBkb3VibGUgCiAg
YXRhbihsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6YXRhbihzdGF0aWNfY2FzdDxkb3Vi
bGU+KF9feCkpOyB9CiNlbmRpZgoKICB1c2luZyA6OmF0YW4yOwoKI2lmIF9HTElCQ1BQX0hB
VkVfQVRBTjJGCiAgaW5saW5lIGZsb2F0IAogIGF0YW4yKGZsb2F0IF9feSwgZmxvYXQgX194
KSB7IHJldHVybiA6OmF0YW4yZihfX3ksIF9feCk7IH0KI2Vsc2UKICBpbmxpbmUgZmxvYXQg
CiAgYXRhbjIoZmxvYXQgX195LCBmbG9hdCBfX3gpCiAgeyByZXR1cm4gOjphdGFuMihzdGF0
aWNfY2FzdDxkb3VibGU+KF9feSksIHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0KI2Vu
ZGlmCgojaWYgX0dMSUJDUFBfSEFWRV9BVEFOMkwKICBpbmxpbmUgbG9uZyBkb3VibGUgCiAg
YXRhbjIobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6YXRh
bjJsKF9feSwgX194KTsgfQojZWxzZQogIGlubGluZSBsb25nIGRvdWJsZSAKICBhdGFuMihs
b25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgCiAgeyByZXR1cm4gOjphdGFuMihz
dGF0aWNfY2FzdDxkb3VibGU+KF9feSksIHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0K
I2VuZGlmCgogIHVzaW5nIDo6Y2VpbDsKCiNpZiBfR0xJQkNQUF9IQVZFX0NFSUxGCiAgaW5s
aW5lIGZsb2F0IAogIGNlaWwoZmxvYXQgX194KSB7IHJldHVybiA6OmNlaWxmKF9feCk7IH0K
I2Vsc2UKICBpbmxpbmUgZmxvYXQgCiAgY2VpbChmbG9hdCBfX3gpIHsgcmV0dXJuIDo6Y2Vp
bChzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CiNlbmRpZgoKI2lmIF9HTElCQ1BQX0hB
VkVfQ0VJTEwKICBpbmxpbmUgbG9uZyBkb3VibGUgCiAgY2VpbChsb25nIGRvdWJsZSBfX3gp
IHsgcmV0dXJuIDo6Y2VpbGwoX194KTsgfQojZWxzZQogIGlubGluZSBsb25nIGRvdWJsZSAK
ICBjZWlsKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjpjZWlsKHN0YXRpY19jYXN0PGRv
dWJsZT4oX194KSk7IH0KI2VuZGlmCgogIHVzaW5nIDo6Y29zOwoKICBpbmxpbmUgZmxvYXQK
ICBjb3MoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9jb3NmKF9feCk7IH0KCiAg
aW5saW5lIGxvbmcgZG91YmxlCiAgY29zKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBf
X2J1aWx0aW5fY29zbChfX3gpOyB9CgogIHVzaW5nIDo6Y29zaDsKCiNpZiBfR0xJQkNQUF9I
QVZFX0NPU0hGCiAgaW5saW5lIGZsb2F0IAogIGNvc2goZmxvYXQgX194KSB7IHJldHVybiA6
OmNvc2hmKF9feCk7IH0KI2Vsc2UKICBpbmxpbmUgZmxvYXQgCiAgY29zaChmbG9hdCBfX3gp
IHsgcmV0dXJuIDo6Y29zaChzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CiNlbmRpZgoK
I2lmIF9HTElCQ1BQX0hBVkVfQ09TSEwKICBpbmxpbmUgbG9uZyBkb3VibGUgCiAgY29zaChs
b25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6Y29zaGwoX194KTsgfQojZWxzZQogIGlubGlu
ZSBsb25nIGRvdWJsZSAKICBjb3NoKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjpjb3No
KHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0KI2VuZGlmCgogIHVzaW5nIDo6ZXhwOwoK
I2lmIF9HTElCQ1BQX0hBVkVfRVhQRgogIGlubGluZSBmbG9hdCAKICBleHAoZmxvYXQgX194
KSB7IHJldHVybiA6OmV4cGYoX194KTsgfQojZWxzZQogIGlubGluZSBmbG9hdCAKICBleHAo
ZmxvYXQgX194KSB7IHJldHVybiA6OmV4cChzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9
CiNlbmRpZgoKI2lmIF9HTElCQ1BQX0hBVkVfRVhQTAogIGlubGluZSBsb25nIGRvdWJsZSAK
ICBleHAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OmV4cGwoX194KTsgfQojZWxzZQog
IGlubGluZSBsb25nIGRvdWJsZSAKICBleHAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6
OmV4cChzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CiNlbmRpZgoKICB1c2luZyA6OmZh
YnM7CgogIGlubGluZSBmbG9hdAogIGZhYnMoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVp
bHRpbl9mYWJzZihfX3gpOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQogIGZhYnMobG9uZyBk
b3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbChfX3gpOyB9CgogIHVzaW5n
IDo6Zmxvb3I7CgojaWYgX0dMSUJDUFBfSEFWRV9GTE9PUkYKICBpbmxpbmUgZmxvYXQgCiAg
Zmxvb3IoZmxvYXQgX194KSB7IHJldHVybiA6OmZsb29yZihfX3gpOyB9CiNlbHNlCiAgaW5s
aW5lIGZsb2F0IAogIGZsb29yKGZsb2F0IF9feCkgeyByZXR1cm4gOjpmbG9vcihzdGF0aWNf
Y2FzdDxkb3VibGU+KF9feCkpOyB9CiNlbmRpZgoKI2lmIF9HTElCQ1BQX0hBVkVfRkxPT1JM
CiAgaW5saW5lIGxvbmcgZG91YmxlIAogIGZsb29yKGxvbmcgZG91YmxlIF9feCkgeyByZXR1
cm4gOjpmbG9vcmwoX194KTsgfQojZWxzZQogIGlubGluZSBsb25nIGRvdWJsZSAKICBmbG9v
cihsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6Zmxvb3Ioc3RhdGljX2Nhc3Q8ZG91Ymxl
PihfX3gpKTsgfQojZW5kaWYKCiAgdXNpbmcgOjpmbW9kOwoKI2lmIF9HTElCQ1BQX0hBVkVf
Rk1PREYKICBpbmxpbmUgZmxvYXQgCiAgZm1vZChmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyBy
ZXR1cm4gOjpmbW9kZihfX3gsIF9feSk7IH0KI2Vsc2UKICBpbmxpbmUgZmxvYXQgCiAgZm1v
ZChmbG9hdCBfX3gsIGZsb2F0IF9feSkKICB7IHJldHVybiA6OmZtb2Qoc3RhdGljX2Nhc3Q8
ZG91YmxlPihfX3gpLCBzdGF0aWNfY2FzdDxkb3VibGU+KF9feSkpOyB9CiNlbmRpZgoKI2lm
IF9HTElCQ1BQX0hBVkVfRk1PREwKICBpbmxpbmUgbG9uZyBkb3VibGUgCiAgZm1vZChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgeyByZXR1cm4gOjpmbW9kbChfX3gsIF9f
eSk7IH0KI2Vsc2UKICBpbmxpbmUgbG9uZyBkb3VibGUgCiAgZm1vZChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgCiAgeyByZXR1cm4gOjpmbW9kKHN0YXRpY19jYXN0PGRv
dWJsZT4oX194KSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3kpKTsgfQojZW5kaWYKCiAgdXNp
bmcgOjpmcmV4cDsKCiNpZiBfR0xJQkNQUF9IQVZFX0ZSRVhQRgogIGlubGluZSBmbG9hdCAK
ICBmcmV4cChmbG9hdCBfX3gsIGludCogX19leHApIHsgcmV0dXJuIDo6ZnJleHBmKF9feCwg
X19leHApOyB9CiNlbHNlCiAgaW5saW5lIGZsb2F0IAogIGZyZXhwKGZsb2F0IF9feCwgaW50
KiBfX2V4cCkgeyByZXR1cm4gOjpmcmV4cChfX3gsIF9fZXhwKTsgfQojZW5kaWYKCiNpZiBf
R0xJQkNQUF9IQVZFX0ZSRVhQTAogIGlubGluZSBsb25nIGRvdWJsZSAKICBmcmV4cChsb25n
IGRvdWJsZSBfX3gsIGludCogX19leHApIHsgcmV0dXJuIDo6ZnJleHBsKF9feCwgX19leHAp
OyB9CiNlbHNlCiAgaW5saW5lIGxvbmcgZG91YmxlIAogIGZyZXhwKGxvbmcgZG91YmxlIF9f
eCwgaW50KiBfX2V4cCkgCiAgeyByZXR1cm4gOjpmcmV4cChzdGF0aWNfY2FzdDxkb3VibGU+
KF9feCksIF9fZXhwKTsgfQojZW5kaWYKCiAgdXNpbmcgOjpsZGV4cDsKCiNpZiBfR0xJQkNQ
UF9IQVZFX0xERVhQRgogIGlubGluZSBmbG9hdCAKICBsZGV4cChmbG9hdCBfX3gsIGludCBf
X2V4cCkgeyByZXR1cm4gOjpsZGV4cGYoX194LCBfX2V4cCk7IH0KI2Vsc2UKICBpbmxpbmUg
ZmxvYXQgCiAgbGRleHAoZmxvYXQgX194LCBpbnQgX19leHApCiAgeyByZXR1cm4gOjpsZGV4
cChzdGF0aWNfY2FzdDxkb3VibGU+KF9feCksIF9fZXhwKTsgfQojZW5kaWYKCiNpZiBfR0xJ
QkNQUF9IQVZFX0xERVhQTAogIGlubGluZSBsb25nIGRvdWJsZSAKICBsZGV4cChsb25nIGRv
dWJsZSBfX3gsIGludCBfX2V4cCkgeyByZXR1cm4gOjpsZGV4cGwoX194LCBfX2V4cCk7IH0K
I2Vsc2UKICBpbmxpbmUgbG9uZyBkb3VibGUgCiAgbGRleHAobG9uZyBkb3VibGUgX194LCBp
bnQgX19leHApIAogIHsgcmV0dXJuIDo6bGRleHAoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gp
LCBfX2V4cCk7IH0KI2VuZGlmCgogIHVzaW5nIDo6bG9nOwoKI2lmIF9HTElCQ1BQX0hBVkVf
TE9HRgogIGlubGluZSBmbG9hdCAKICBsb2coZmxvYXQgX194KSB7IHJldHVybiA6OmxvZ2Yo
X194KTsgfQojZWxzZQogIGlubGluZSBmbG9hdCBsb2coZmxvYXQgX194KQogIHsgcmV0dXJu
IDo6bG9nKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0KI2VuZGlmCgojaWYgX0dMSUJD
UFBfSEFWRV9MT0dMCiAgaW5saW5lIGxvbmcgZG91YmxlIAogIGxvZyhsb25nIGRvdWJsZSBf
X3gpIHsgcmV0dXJuIDo6bG9nbChfX3gpOyB9CiNlbHNlCiAgaW5saW5lIGxvbmcgZG91Ymxl
IAogIGxvZyhsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6bG9nKHN0YXRpY19jYXN0PGRv
dWJsZT4oX194KSk7IH0KI2VuZGlmCgogIHVzaW5nIDo6bG9nMTA7CgojaWYgX0dMSUJDUFBf
SEFWRV9MT0cxMEYKICBpbmxpbmUgZmxvYXQgCiAgbG9nMTAoZmxvYXQgX194KSB7IHJldHVy
biA6OmxvZzEwZihfX3gpOyB9CiNlbHNlCiAgaW5saW5lIGZsb2F0IAogIGxvZzEwKGZsb2F0
IF9feCkgeyByZXR1cm4gOjpsb2cxMChzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CiNl
bmRpZgoKI2lmIF9HTElCQ1BQX0hBVkVfTE9HMTBMCiAgaW5saW5lIGxvbmcgZG91YmxlIAog
IGxvZzEwKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjpsb2cxMGwoX194KTsgfQojZWxz
ZQogIGlubGluZSBsb25nIGRvdWJsZSAKICBsb2cxMChsb25nIGRvdWJsZSBfX3gpIHsgcmV0
dXJuIDo6bG9nMTAoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQojZW5kaWYKCiAgdXNp
bmcgOjptb2RmOwoKI2lmIF9HTElCQ1BQX0hBVkVfTU9ERkYKICBpbmxpbmUgZmxvYXQgCiAg
bW9kZihmbG9hdCBfX3gsIGZsb2F0KiBfX2lwdHIpIHsgcmV0dXJuIDo6bW9kZmYoX194LCBf
X2lwdHIpOyB9CiNlbHNlCiAgaW5saW5lIGZsb2F0IAogIG1vZGYoZmxvYXQgX194LCBmbG9h
dCogX19pcHRyKQogIHsKICAgIGRvdWJsZSBfX3RtcDsKICAgIGRvdWJsZSBfX3JlcyA9IDo6
bW9kZihzdGF0aWNfY2FzdDxkb3VibGU+KF9feCksICZfX3RtcCk7CiAgICAqX19pcHRyID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KF9fdG1wKTsKICAgIHJldHVybiBfX3JlczsKICB9CiNlbmRp
ZgoKI2lmIF9HTElCQ1BQX0hBVkVfTU9ERkwKICBpbmxpbmUgbG9uZyBkb3VibGUgCiAgbW9k
Zihsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlKiBfX2lwdHIpIHsgcmV0dXJuIDo6bW9k
ZmwoX194LCBfX2lwdHIpOyB9CiNlbHNlCiAgaW5saW5lIGxvbmcgZG91YmxlIAogIG1vZGYo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSogX19pcHRyKSAKICB7IAogICAgZG91Ymxl
IF9fdG1wOwogICAgZG91YmxlIF9fcmVzID0gOjptb2RmKHN0YXRpY19jYXN0PGRvdWJsZT4o
X194KSwgJl9fdG1wKTsKICAgICogX19pcHRyID0gc3RhdGljX2Nhc3Q8bG9uZyBkb3VibGU+
KF9fdG1wKTsKICAgIHJldHVybiBfX3JlczsKICB9CiNlbmRpZgoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBpbmxpbmUgX1RwCiAgICBfX3Bvd19oZWxwZXIoX1RwIF9feCwgaW50
IF9fbikKICAgIHsKICAgICAgcmV0dXJuIF9fbiA8IDAKICAgICAgICA/IF9UcCgxKS9fX2Nt
YXRoX3Bvd2VyKF9feCwgLV9fbikKICAgICAgICA6IF9fY21hdGhfcG93ZXIoX194LCBfX24p
OwogICAgfQoKICB1c2luZyA6OnBvdzsKCiNpZiBfR0xJQkNQUF9IQVZFX1BPV0YKICBpbmxp
bmUgZmxvYXQgCiAgcG93KGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJldHVybiA6OnBvd2Yo
X194LCBfX3kpOyB9CiNlbHNlCiAgaW5saW5lIGZsb2F0IAogIHBvdyhmbG9hdCBfX3gsIGZs
b2F0IF9feSkKICB7IHJldHVybiA6OnBvdyhzdGF0aWNfY2FzdDxkb3VibGU+KF9feCksIHN0
YXRpY19jYXN0PGRvdWJsZT4oX195KSk7IH0KI2VuZGlmCgojaWYgX0dMSUJDUFBfSEFWRV9Q
T1dMCiAgaW5saW5lIGxvbmcgZG91YmxlIAogIHBvdyhsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgeyByZXR1cm4gOjpwb3dsKF9feCwgX195KTsgfQojZWxzZQogIGlubGlu
ZSBsb25nIGRvdWJsZSAKICBwb3cobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp
IAogIHsgcmV0dXJuIDo6cG93KHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihfX3kpKTsgfQojZW5kaWYKCiAgaW5saW5lIGRvdWJsZSAKICBwb3coZG91
YmxlIF9feCwgaW50IF9faSkKICB7IHJldHVybiBfX3Bvd19oZWxwZXIoX194LCBfX2kpOyB9
CgogIGlubGluZSBmbG9hdCAKICBwb3coZmxvYXQgX194LCBpbnQgX19uKQogIHsgcmV0dXJu
IF9fcG93X2hlbHBlcihfX3gsIF9fbik7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlIAogIHBv
dyhsb25nIGRvdWJsZSBfX3gsIGludCBfX24pCiAgeyByZXR1cm4gX19wb3dfaGVscGVyKF9f
eCwgX19uKTsgfQoKICB1c2luZyA6OnNpbjsKCiAgaW5saW5lIGZsb2F0CiAgc2luKGZsb2F0
IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fc2luZihfX3gpOyB9CgogIGlubGluZSBsb25n
IGRvdWJsZQogIHNpbihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3Np
bmwoX194KTsgfQoKICB1c2luZyA6OnNpbmg7CgojaWYgX0dMSUJDUFBfSEFWRV9TSU5IRgog
IGlubGluZSBmbG9hdCAKICBzaW5oKGZsb2F0IF9feCkgeyByZXR1cm4gOjpzaW5oZihfX3gp
OyB9CiNlbHNlCiAgaW5saW5lIGZsb2F0IAogIHNpbmgoZmxvYXQgX194KSB7IHJldHVybiA6
OnNpbmgoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQojZW5kaWYKCiNpZiBfR0xJQkNQ
UF9IQVZFX1NJTkhMCiAgaW5saW5lIGxvbmcgZG91YmxlIAogIHNpbmgobG9uZyBkb3VibGUg
X194KSB7IHJldHVybiA6OnNpbmhsKF9feCk7IH0KI2Vsc2UKICBpbmxpbmUgbG9uZyBkb3Vi
bGUgCiAgc2luaChsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6c2luaChzdGF0aWNfY2Fz
dDxkb3VibGU+KF9feCkpOyB9CiNlbmRpZgoKICB1c2luZyA6OnNxcnQ7CgogIGlubGluZSBm
bG9hdAogIHNxcnQoZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9zcXJ0ZihfX3gp
OyB9CgogIGlubGluZSBsb25nIGRvdWJsZQogIHNxcnQobG9uZyBkb3VibGUgX194KQogIHsg
cmV0dXJuIF9fYnVpbHRpbl9zcXJ0bChfX3gpOyB9CgogIHVzaW5nIDo6dGFuOwoKI2lmIF9H
TElCQ1BQX0hBVkVfVEFORgogIGlubGluZSBmbG9hdCAKICB0YW4oZmxvYXQgX194KSB7IHJl
dHVybiA6OnRhbmYoX194KTsgfQojZWxzZQogIGlubGluZSBmbG9hdCAKICB0YW4oZmxvYXQg
X194KSB7IHJldHVybiA6OnRhbihzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CiNlbmRp
ZgoKI2lmIF9HTElCQ1BQX0hBVkVfVEFOTAogIGlubGluZSBsb25nIGRvdWJsZSAKICB0YW4o
bG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OnRhbmwoX194KTsgfQojZWxzZQogIGlubGlu
ZSBsb25nIGRvdWJsZSAKICB0YW4obG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OnRhbihz
dGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CiNlbmRpZgoKICB1c2luZyA6OnRhbmg7Cgoj
aWYgX0dMSUJDUFBfSEFWRV9UQU5IRgogIGlubGluZSBmbG9hdCAKICB0YW5oKGZsb2F0IF9f
eCkgeyByZXR1cm4gOjp0YW5oZihfX3gpOyB9CiNlbHNlCiAgaW5saW5lIGZsb2F0IAogIHRh
bmgoZmxvYXQgX194KSB7IHJldHVybiA6OnRhbmgoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gp
KTsgfQojZW5kaWYKCiNpZiBfR0xJQkNQUF9IQVZFX1RBTkhMCiAgaW5saW5lIGxvbmcgZG91
YmxlIAogIHRhbmgobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OnRhbmhsKF9feCk7IH0K
I2Vsc2UKICBpbmxpbmUgbG9uZyBkb3VibGUgCiAgdGFuaChsb25nIGRvdWJsZSBfX3gpIHsg
cmV0dXJuIDo6dGFuaChzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CiNlbmRpZgp9IAoK
CiNpZiBfR0xJQkNQUF9VU0VfQzk5Ci8vIFRoZXNlIGFyZSBwb3NzaWJsZSBtYWNyb3MgaW1w
b3J0ZWQgZnJvbSBDOTktbGFuZC4gRm9yIHN0cmljdAovLyBjb25mb3JtYW5jZSwgcmVtb3Zl
IHBvc3NpYmxlIEM5OS1pbmplY3RlZCBuYW1lcyBmcm9tIHRoZSBnbG9iYWwKLy8gbmFtZXNw
YWNlLCBhbmQgc2VxdWVzdGVyIHRoZW0gaW4gdGhlIF9fZ251X2N4eCBleHRlbnNpb24gbmFt
ZXNwYWNlLiAKbmFtZXNwYWNlIF9fZ251X2N4eAp7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgaW50IAogICAgX19jYXB0dXJlX2ZwY2xhc3NpZnkoX1RwIF9fZikgeyByZXR1cm4g
ZnBjbGFzc2lmeShfX2YpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludCAK
ICAgIF9fY2FwdHVyZV9pc2Zpbml0ZShfVHAgX19mKSB7IHJldHVybiBpc2Zpbml0ZShfX2Yp
OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludCAKICAgIF9fY2FwdHVyZV9p
c2luZihfVHAgX19mKSB7IHJldHVybiBpc2luZihfX2YpOyB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIGludCAKICAgIF9fY2FwdHVyZV9pc25hbihfVHAgX19mKSB7IHJldHVy
biBpc25hbihfX2YpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludCAKICAg
IF9fY2FwdHVyZV9pc25vcm1hbChfVHAgX19mKSB7IHJldHVybiBpc25vcm1hbChfX2YpOyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludCAKICAgIF9fY2FwdHVyZV9zaWdu
Yml0KF9UcCBfX2YpIHsgcmV0dXJuIHNpZ25iaXQoX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBpbnQgCiAgICBfX2NhcHR1cmVfaXNncmVhdGVyKF9UcCBfX2YxLCBf
VHAgX19mMikKICAgIHsgcmV0dXJuIGlzZ3JlYXRlcihfX2YxLCBfX2YyKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICAgaW50IAogICAgIF9fY2FwdHVyZV9pc2dyZWF0ZXJl
cXVhbChfVHAgX19mMSwgX1RwIF9fZjIpIAogICAgIHsgcmV0dXJuIGlzZ3JlYXRlcmVxdWFs
KF9fZjEsIF9fZjIpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICBpbnQgCiAg
ICAgX19jYXB0dXJlX2lzbGVzcyhfVHAgX19mMSwgX1RwIF9fZjIpIHsgcmV0dXJuIGlzbGVz
cyhfX2YxLCBfX2YyKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICAgaW50IAog
ICAgIF9fY2FwdHVyZV9pc2xlc3NlcXVhbChfVHAgX19mMSwgX1RwIF9fZjIpIAogICAgIHsg
cmV0dXJuIGlzbGVzc2VxdWFsKF9fZjEsIF9fZjIpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1l
IF9UcD4KICAgICBpbnQgCiAgICAgX19jYXB0dXJlX2lzbGVzc2dyZWF0ZXIoX1RwIF9fZjEs
IF9UcCBfX2YyKSAKICAgICB7IHJldHVybiBpc2xlc3NncmVhdGVyKF9fZjEsIF9fZjIpOyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICBpbnQgCiAgICAgX19jYXB0dXJlX2lz
dW5vcmRlcmVkKF9UcCBfX2YxLCBfVHAgX19mMikgCiAgICAgeyByZXR1cm4gaXN1bm9yZGVy
ZWQoX19mMSwgX19mMik7IH0KfSAKI2VuZGlmCgojdW5kZWYgZnBjbGFzc2lmeQojdW5kZWYg
aXNmaW5pdGUKI3VuZGVmIGlzaW5mCiN1bmRlZiBpc25hbgojdW5kZWYgaXNub3JtYWwKI3Vu
ZGVmIHNpZ25iaXQKI3VuZGVmIGlzZ3JlYXRlcgojdW5kZWYgaXNncmVhdGVyZXF1YWwKI3Vu
ZGVmIGlzbGVzcwojdW5kZWYgaXNsZXNzZXF1YWwKI3VuZGVmIGlzbGVzc2dyZWF0ZXIKI3Vu
ZGVmIGlzdW5vcmRlcmVkCgojaWYgX0dMSUJDUFBfVVNFX0M5OQpuYW1lc3BhY2UgX19nbnVf
Y3h4CnsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIGZwY2xhc3NpZnko
X1RwIF9fZikgeyByZXR1cm4gX19jYXB0dXJlX2ZwY2xhc3NpZnkoX19mKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIGlzZmluaXRlKF9UcCBfX2YpIHsgcmV0
dXJuIF9fY2FwdHVyZV9pc2Zpbml0ZShfX2YpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cD4KICAgIGludCAKICAgIGlzaW5mKF9UcCBfX2YpIHsgcmV0dXJuIF9fY2FwdHVyZV9pc2lu
ZihfX2YpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludCAKICAgIGlzbmFu
KF9UcCBfX2YpIHsgcmV0dXJuIF9fY2FwdHVyZV9pc25hbihfX2YpOyB9CgogIHRlbXBsYXRl
PHR5cGVuYW1lIF9UcD4KICAgIGludCAKICAgIGlzbm9ybWFsKF9UcCBfX2YpIHsgcmV0dXJu
IF9fY2FwdHVyZV9pc25vcm1hbChfX2YpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIGludCAKICAgIHNpZ25iaXQoX1RwIF9fZikgeyByZXR1cm4gX19jYXB0dXJlX3NpZ25i
aXQoX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQgCiAgICBpc2dy
ZWF0ZXIoX1RwIF9fZjEsIF9UcCBfX2YyKSB7IHJldHVybiBfX2NhcHR1cmVfaXNncmVhdGVy
KF9fZjEsIF9fZjIpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludCAKICAg
IGlzZ3JlYXRlcmVxdWFsKF9UcCBfX2YxLCBfVHAgX19mMikgCiAgICB7IHJldHVybiBfX2Nh
cHR1cmVfaXNncmVhdGVyZXF1YWwoX19mMSwgX19mMik7IH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgaW50IAogICAgaXNsZXNzKF9UcCBfX2YxLCBfVHAgX19mMikgeyByZXR1
cm4gX19jYXB0dXJlX2lzbGVzcyhfX2YxLCBfX2YyKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgICBpbnQgCiAgICBpc2xlc3NlcXVhbChfVHAgX19mMSwgX1RwIF9fZjIpIAog
ICAgeyByZXR1cm4gX19jYXB0dXJlX2lzbGVzc2VxdWFsKF9fZjEsIF9fZjIpOyB9CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludCAKICAgIGlzbGVzc2dyZWF0ZXIoX1RwIF9f
ZjEsIF9UcCBfX2YyKSAKICAgIHsgcmV0dXJuIF9fY2FwdHVyZV9pc2xlc3NncmVhdGVyKF9f
ZjEsIF9fZjIpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludCAKICAgIGlz
dW5vcmRlcmVkKF9UcCBfX2YxLCBfVHAgX19mMikgCiAgICB7IHJldHVybiBfX2NhcHR1cmVf
aXN1bm9yZGVyZWQoX19mMSwgX19mMik7IH0KfQoKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcg
X19nbnVfY3h4OjpmcGNsYXNzaWZ5OwogIHVzaW5nIF9fZ251X2N4eDo6aXNmaW5pdGU7CiAg
dXNpbmcgX19nbnVfY3h4Ojppc2luZjsKICB1c2luZyBfX2dudV9jeHg6OmlzbmFuOwogIHVz
aW5nIF9fZ251X2N4eDo6aXNub3JtYWw7CiAgdXNpbmcgX19nbnVfY3h4OjpzaWduYml0Owog
IHVzaW5nIF9fZ251X2N4eDo6aXNncmVhdGVyOwogIHVzaW5nIF9fZ251X2N4eDo6aXNncmVh
dGVyZXF1YWw7CiAgdXNpbmcgX19nbnVfY3h4Ojppc2xlc3M7CiAgdXNpbmcgX19nbnVfY3h4
Ojppc2xlc3NlcXVhbDsKICB1c2luZyBfX2dudV9jeHg6OmlzbGVzc2dyZWF0ZXI7CiAgdXNp
bmcgX19nbnVfY3h4Ojppc3Vub3JkZXJlZDsKfQojZW5kaWYKICAKI2lmZGVmIF9HTElCQ1BQ
X05PX1RFTVBMQVRFX0VYUE9SVAojICBkZWZpbmUgZXhwb3J0CiMgIGluY2x1ZGUgPGJpdHMv
Y21hdGgudGNjPgojZW5kaWYKCiNlbmRpZgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuL2luY2x1ZGUv
ZysrLXYzL2k2ODYtcGMtbGludXgtZ251LwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDA0MDc3NQAwMDAzMzA1ADAw
MTE2MzcAMDAwMDAwMDAwMDAAMDc1NjQ1MDA2MzIAMDE1NDM1ACA1AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWVuZ2VsAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABvc3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAC4vaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1saW51eC1nbnUvYml0
cy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAwMDQwNzc1ADAwMDMzMDUAMDAxMTYzNwAwMDAwMDAwMDAwMAAwNzU2NDUwMDYz
MgAwMTYzNzYAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAdXN0YXIgIABtZW5nZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9zcwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi9pbmNsdWRlL2cr
Ky12My9pNjg2LXBjLWxpbnV4LWdudS9iaXRzL2MrK2NvbmZpZy5oAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMzMwNQAwMDEx
NjM3ADAwMDAwMTAxMDMwADA3NDczMDQyNjcwADAyMDI3NQAgMAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1lbmdlbAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAb3NzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAvLyBQcmVkZWZpbmVkIHN5bWJvbHMgYW5kIG1hY3JvcyAtKi0gQysr
IC0qLQoKLy8gQ29weXJpZ2h0IChDKSAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgovLwovLyBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi8vIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVy
IHRoZQovLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZQovLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz
aW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLy8gYW55IGxhdGVyIHZlcnNpb24uCgovLyBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQovLyBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLy8gd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZQovLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBT
dWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLy8gVVNBLgoKLy8gQXMgYSBzcGVj
aWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVl
IHNvZnR3YXJlCi8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxs
eSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNy
b3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUK
Ly8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBh
biBleGVjdXRhYmxlLCB0aGlzCi8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRo
ZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci8vIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIK
Ly8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmls
ZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZS4KCiNpZm5kZWYgX0NQUF9DUFBDT05GSUcKI2RlZmluZSBfQ1BQX0NQUENPTkZJRyAxCgov
LyBQaWNrIHVwIGFueSBPUy1zcGVjaWZpYyBkZWZpbml0aW9ucy4KI2luY2x1ZGUgPGJpdHMv
b3NfZGVmaW5lcy5oPgoKLy8gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgQysrIGxpYnJh
cnkgaW4gY29tcHJlc3NlZCBJU08gZGF0ZSBmb3JtYXQuCiNkZWZpbmUgX19HTElCQ1BQX18g
MjAwMjA1MTQKCi8vIFRoaXMgaXMgbmVjZXNzYXJ5IHVudGlsIEdDQyBzdXBwb3J0cyBzZXBh
cmF0ZSB0ZW1wbGF0ZQovLyBjb21waWxhdGlvbi4gIAojZGVmaW5lIF9HTElCQ1BQX05PX1RF
TVBMQVRFX0VYUE9SVCAxCgovLyBUaGlzIGlzIGEgaGFjayBhcm91bmQgbm90IGhhdmluZyBl
aXRoZXIgcHJlLWNvbXBpbGVkIGhlYWRlcnMgb3IKLy8gZXhwb3J0IGNvbXBpbGF0aW9uLiBJ
ZiBkZWZpbmVkLCB0aGUgaW8sIHN0cmluZywgYW5kIHZhbGFycmF5Ci8vIGhlYWRlcnMgd2ls
bCBpbmNsdWRlIGFsbCB0aGUgbmVjZXNzYXJ5IGJpdHMuIElmIG5vdCBkZWZpbmVkLCB0aGUK
Ly8gaW1wbGVtZW50YXRpb24gb3B0aW1pemVzIHRoZSBoZWFkZXJzIGZvciB0aGUgbW9zdCBj
b21tb25seS11c2VkCi8vIHR5cGVzLiBGb3IgdGhlIGlvIGxpYnJhcnksIHRoaXMgbWVhbnMg
dGhhdCBsYXJnZXIsIG91dC1vZi1saW5lCi8vIG1lbWJlciBmdW5jdGlvbnMgYXJlIG9ubHkg
ZGVjbGFyZWQsIGFuZCBkZWZpbml0aW9ucyBhcmUgbm90IHBhcnNlZAovLyBieSB0aGUgY29t
cGlsZXIsIGJ1dCBpbnN0ZWFkIGluc3RhbnRpYXRlZCBpbnRvIHRoZSBsaWJyYXJ5IGJpbmFy
eS4KI2RlZmluZSBfR0xJQkNQUF9GVUxMWV9DT01QTElBTlRfSEVBREVSUyAxCgovLyBUbyBl
bmFibGUgb2xkZXIsIEFSTS1zdHlsZSBpb3N0cmVhbXMgYW5kIG90aGVyIGFuYWNocm9uaXNt
cyB1c2UgdGhpcy4KLy8jZGVmaW5lIF9HTElCQ1BQX0RFUFJFQ0FURUQgMQoKLy8gVXNlIGNv
cnJlY3RlZCBjb2RlIGZyb20gdGhlIGNvbW1pdHRlZSBsaWJyYXJ5IGdyb3VwJ3MgaXNzdWVz
IGxpc3QuCiNkZWZpbmUgX0dMSUJDUFBfUkVTT0xWRV9MSUJfREVGRUNUUyAxCgovLyBJbiB0
aG9zZSBwYXJ0cyBvZiB0aGUgc3RhbmRhcmQgQysrIGxpYnJhcnkgdGhhdCB1c2UgYSBtdXRl
eCBpbnN0ZWFkCi8vIG9mIGEgc3Bpbi1sb2NrLCB3ZSBub3cgdW5jb25kaXRpb25hbGx5IHVz
ZSBHQ0MncyBndGhyLmggbXV0ZXgKLy8gYWJzdHJhY3Rpb24gbGF5ZXIuICBBbGwgc3VwcG9y
dCB0byBkaXJlY3RseSBtYXAgdG8gdmFyaW91cwovLyB0aHJlYWRpbmcgbW9kZWxzIGhhcyBi
ZWVuIHJlbW92ZWQuICBOb3RlOiBndGhyLmggbWF5IHdlbGwgbWFwIHRvCi8vIGd0aHItc2lu
Z2xlLmggd2hpY2ggaXMgYSBjb3JyZWN0IHdheSB0byBleHByZXNzIG5vIHRocmVhZHMgc3Vw
cG9ydAovLyBpbiBnY2MuICBTdXBwb3J0IGZvciB0aGUgdW5kb2N1bWVudGVkIF9OT1RIUkVB
RFMgaGFzIGJlZW4gcmVtb3ZlZC4KCi8vIERlZmF1bHQgdG8gdGhlIHR5cGljYWxseSBoaWdo
LXNwZWVkLCBwb29sLWJhc2VkIGFsbG9jYXRvciAoYXMKLy8gbGlic3RkYysrLXYyKSBpbnN0
ZWFkIG9mIHRoZSBtYWxsb2MtYmFzZWQgYWxsb2NhdG9yIChsaWJzdGRjKystdjMKLy8gc25h
cHNob3RzKS4gIFNlZSBsaWJzdGRjKystdjMvZG9jcy9odG1sLzE3X2ludHJvL2hvd3RvLmh0
bWwgZm9yCi8vIGRldGFpbHMgb24gd2h5IHlvdSBkb24ndCB3YW50IHRvIG92ZXJyaWRlIHRo
aXMgc2V0dGluZy4gIEVuc3VyZQovLyB0aGF0IHRocmVhZHMgYXJlIHByb3Blcmx5IGNvbmZp
Z3VyZWQgb24geW91ciBwbGF0Zm9ybSBiZWZvcmUKLy8gYXNzaWduaW5nIGJsYW1lIHRvIHRo
ZSBTVEwgY29udGFpbmVyLW1lbW9yeSBhbGxvY2F0b3IuICBBZnRlciBkb2luZwovLyBzbywg
cGxlYXNlIHJlcG9ydCBhbnkgcG9zc2libGUgaXNzdWVzIHRvIGxpYnN0ZGMrK0BnY2MuZ251
Lm9yZyAuCi8vIERvIG5vdCBibGluZGx5ICNkZWZpbmUgX19VU0VfTUFMTE9DIGhlcmUgb3Ig
b24gdGhlIGNvbW1hbmQgbGluZS4KCi8vIFRoZSByZW1haW5kZXIgb2YgdGhlIHByZXdyaXR0
ZW4gY29uZmlnIGlzIG1vc3RseSBhdXRvbWF0aWM7IGFsbCB0aGUKLy8gdXNlciBob29rcyBh
cmUgbGlzdGVkIGFib3ZlLgoKLy8gRW5kIG9mIHByZXdyaXR0ZW4gY29uZmlnOyB0aGUgZGlz
Y292ZXJlZCBzZXR0aW5ncyBmb2xsb3cuCi8qIGNvbmZpZy5oLiAgR2VuZXJhdGVkIGF1dG9t
YXRpY2FsbHkgYnkgY29uZmlndXJlLiAgKi8KLyogY29uZmlnLmguaW4uICBHZW5lcmF0ZWQg
YXV0b21hdGljYWxseSBmcm9tIGNvbmZpZ3VyZS5pbiBieSBhdXRvaGVhZGVyLiAgKi8KCi8q
IERlZmluZSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgYG1tYXAnIHN5c3RlbSBjYWxsLiAgKi8K
I2RlZmluZSBfR0xJQkNQUF9IQVZFX01NQVAgMQoKLy8gRGVmaW5lIGlmIEdDQyBzdXBwb3J0
cyB3ZWFrIHN5bWJvbHMuCiNkZWZpbmUgX0dMSUJDUFBfU1VQUE9SVFNfV0VBSyBfX0dYWF9X
RUFLX18KCi8vIERlZmluZSBpZiBndGhyLWRlZmF1bHQuaCBleGlzdHMgKG1lYW5pbmcgdGhh
dCB0aHJlYWRpbmcgc3VwcG9ydCBpcyBlbmFibGVkKS4KI2RlZmluZSBfR0xJQkNQUF9IQVZF
X0dUSFJfREVGQVVMVCAxCgovLyBJbmNsdWRlIEkvTyBzdXBwb3J0IGZvciAnbG9uZyBsb25n
JyBhbmQgJ3Vuc2lnbmVkIGxvbmcgbG9uZycuCiNkZWZpbmUgX0dMSUJDUFBfVVNFX0xPTkdf
TE9ORyAxCgovLyBEZWZpbmUgaWYgQzk5IGZlYXR1cmVzIHN1Y2ggYXMgbGxkaXZfdCwgbGxh
YnMsIGxsZGl2IHNob3VsZCBiZSBleHBvc2VkLgojZGVmaW5lIF9HTElCQ1BQX1VTRV9DOTkg
MQoKLy8gRGVmaW5lIGlmIGNvZGUgc3BlY2lhbGl6ZWQgZm9yIHdjaGFyX3Qgc2hvdWxkIGJl
IHVzZWQuCi8qICN1bmRlZiBfR0xJQkNQUF9VU0VfV0NIQVJfVCAqLwoKLy8gRGVmaW5lIGlm
IHVzaW5nIHNldHJsaW1pdCB0byBsaW1pdCBtZW1vcnkgdXNhZ2UgZHVyaW5nICdtYWtlIGNo
ZWNrJy4KI2RlZmluZSBfR0xJQkNQUF9NRU1fTElNSVRTIDEKCi8vIERlZmluZSB0byB1c2Ug
Y29uY2VwdCBjaGVja2luZyBjb2RlIGZyb20gdGhlIGJvb3N0IGxpYnJhcmllcy4KLyogI3Vu
ZGVmIF9HTElCQ1BQX0NPTkNFUFRfQ0hFQ0tTICovCgovLyBEZWZpbmUgaWYgbWJzdGF0ZV90
IGV4aXN0cyBpbiB3Y2hhci5oLgojZGVmaW5lIF9HTElCQ1BQX0hBVkVfTUJTVEFURV9UIDEK
Ci8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbW9kZmYgZnVuY3Rpb24uCiNkZWZpbmUgX0dM
SUJDUFBfSEFWRV9NT0RGRiAxCgovLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIG1vZGZsIGZ1
bmN0aW9uLgojZGVmaW5lIF9HTElCQ1BQX0hBVkVfTU9ERkwgMQoKLy8gRGVmaW5lIGlmIHlv
dSBoYXZlIHRoZSBleHBmIGZ1bmN0aW9uLgojZGVmaW5lIF9HTElCQ1BQX0hBVkVfRVhQRiAx
CgovLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGV4cGwgZnVuY3Rpb24uCiNkZWZpbmUgX0dM
SUJDUFBfSEFWRV9FWFBMIDEKCi8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgaHlwb3RmIGZ1
bmN0aW9uLgojZGVmaW5lIF9HTElCQ1BQX0hBVkVfSFlQT1RGIDEKCi8vIERlZmluZSBpZiB5
b3UgaGF2ZSB0aGUgaHlwb3RsIGZ1bmN0aW9uLgojZGVmaW5lIF9HTElCQ1BQX0hBVkVfSFlQ
T1RMIDEKCi8vIERlZmluZSBpZiB0aGUgY29tcGlsZXIvaG9zdCBjb21iaW5hdGlvbiBoYXMg
X19idWlsdGluX2FicwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfX19CVUlMVElOX0FCUyAxCgov
LyBEZWZpbmUgaWYgdGhlIGNvbXBpbGVyL2hvc3QgY29tYmluYXRpb24gaGFzIF9fYnVpbHRp
bl9sYWJzCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9fX0JVSUxUSU5fTEFCUyAxCgovLyBEZWZp
bmUgaWYgdGhlIGNvbXBpbGVyL2hvc3QgY29tYmluYXRpb24gaGFzIF9fYnVpbHRpbl9jb3MK
LyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX19CVUlMVElOX0NPUyAqLwoKLy8gRGVmaW5lIGlm
IHRoZSBjb21waWxlci9ob3N0IGNvbWJpbmF0aW9uIGhhcyBfX2J1aWx0aW5fY29zZgovKiAj
dW5kZWYgX0dMSUJDUFBfSEFWRV9fX0JVSUxUSU5fQ09TRiAqLwoKLy8gRGVmaW5lIGlmIHRo
ZSBjb21waWxlci9ob3N0IGNvbWJpbmF0aW9uIGhhcyBfX2J1aWx0aW5fY29zbAovKiAjdW5k
ZWYgX0dMSUJDUFBfSEFWRV9fX0JVSUxUSU5fQ09TTCAqLwoKLy8gRGVmaW5lIGlmIHRoZSBj
b21waWxlci9ob3N0IGNvbWJpbmF0aW9uIGhhcyBfX2J1aWx0aW5fZmFicwojZGVmaW5lIF9H
TElCQ1BQX0hBVkVfX19CVUlMVElOX0ZBQlMgMQoKLy8gRGVmaW5lIGlmIHRoZSBjb21waWxl
ci9ob3N0IGNvbWJpbmF0aW9uIGhhcyBfX2J1aWx0aW5fZmFic2YKI2RlZmluZSBfR0xJQkNQ
UF9IQVZFX19fQlVJTFRJTl9GQUJTRiAxCgovLyBEZWZpbmUgaWYgdGhlIGNvbXBpbGVyL2hv
c3QgY29tYmluYXRpb24gaGFzIF9fYnVpbHRpbl9mYWJzbAojZGVmaW5lIF9HTElCQ1BQX0hB
VkVfX19CVUlMVElOX0ZBQlNMIDEKCi8vIERlZmluZSBpZiB0aGUgY29tcGlsZXIvaG9zdCBj
b21iaW5hdGlvbiBoYXMgX19idWlsdGluX3NpbgovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9f
X0JVSUxUSU5fU0lOICovCgovLyBEZWZpbmUgaWYgdGhlIGNvbXBpbGVyL2hvc3QgY29tYmlu
YXRpb24gaGFzIF9fYnVpbHRpbl9zaW5mCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19fQlVJ
TFRJTl9TSU5GICovCgovLyBEZWZpbmUgaWYgdGhlIGNvbXBpbGVyL2hvc3QgY29tYmluYXRp
b24gaGFzIF9fYnVpbHRpbl9zaW5sCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19fQlVJTFRJ
Tl9TSU5MICovCgovLyBEZWZpbmUgaWYgdGhlIGNvbXBpbGVyL2hvc3QgY29tYmluYXRpb24g
aGFzIF9fYnVpbHRpbl9zcXJ0Ci8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19fQlVJTFRJTl9T
UVJUICovCgovLyBEZWZpbmUgaWYgdGhlIGNvbXBpbGVyL2hvc3QgY29tYmluYXRpb24gaGFz
IF9fYnVpbHRpbl9zcXJ0ZgovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fX0JVSUxUSU5fU1FS
VEYgKi8KCi8vIERlZmluZSBpZiB0aGUgY29tcGlsZXIvaG9zdCBjb21iaW5hdGlvbiBoYXMg
X19idWlsdGluX3NxcnRsCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19fQlVJTFRJTl9TUVJU
TCAqLwoKLy8gRGVmaW5lIGlmIExDX01FU1NBR0VTIGlzIGF2YWlsYWJsZSBpbiA8bG9jYWxl
Lmg+LgojZGVmaW5lIF9HTElCQ1BQX0hBVkVfTENfTUVTU0FHRVMgMQoKLyogRGVmaW5lIGlm
IHlvdSBoYXZlIHRoZSBfX3NpZ25iaXQgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQ
X0hBVkVfX19TSUdOQklUIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgX19zaWduYml0
ZiBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9fX1NJR05CSVRGIDEKCi8q
IERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgX19zaWduYml0bCBmdW5jdGlvbi4gICovCiNkZWZp
bmUgX0dMSUJDUFBfSEFWRV9fX1NJR05CSVRMIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0
aGUgX2Fjb3NmIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX0FDT1NG
ICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9hY29zbCBmdW5jdGlvbi4gICovCi8q
ICN1bmRlZiBfR0xJQkNQUF9IQVZFX19BQ09TTCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZl
IHRoZSBfYXNpbmYgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fQVNJ
TkYgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgX2FzaW5sIGZ1bmN0aW9uLiAgKi8K
LyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX0FTSU5MICovCgovKiBEZWZpbmUgaWYgeW91IGhh
dmUgdGhlIF9hdGFuMmYgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9f
QVRBTjJGICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9hdGFuMmwgZnVuY3Rpb24u
ICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fQVRBTjJMICovCgovKiBEZWZpbmUgaWYg
eW91IGhhdmUgdGhlIF9hdGFuZiBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9I
QVZFX19BVEFORiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfYXRhbmwgZnVuY3Rp
b24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fQVRBTkwgKi8KCi8qIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgX2NlaWxmIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQ
X0hBVkVfX0NFSUxGICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9jZWlsbCBmdW5j
dGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19DRUlMTCAqLwoKLyogRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSBfY29weXNpZ24gZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dM
SUJDUFBfSEFWRV9fQ09QWVNJR04gKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgX2Nv
cHlzaWdubCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19DT1BZU0lH
TkwgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgX2Nvc2YgZnVuY3Rpb24uICAqLwov
KiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fQ09TRiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZl
IHRoZSBfY29zaGYgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fQ09T
SEYgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgX2Nvc2hsIGZ1bmN0aW9uLiAgKi8K
LyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX0NPU0hMICovCgovKiBEZWZpbmUgaWYgeW91IGhh
dmUgdGhlIF9jb3NsIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX0NP
U0wgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgX2V4cGYgZnVuY3Rpb24uICAqLwov
KiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fRVhQRiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZl
IHRoZSBfZXhwbCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19FWFBM
ICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9mYWJzZiBmdW5jdGlvbi4gICovCi8q
ICN1bmRlZiBfR0xJQkNQUF9IQVZFX19GQUJTRiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZl
IHRoZSBfZmFic2wgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fRkFC
U0wgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgX2Zpbml0ZSBmdW5jdGlvbi4gICov
Ci8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19GSU5JVEUgKi8KCi8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgX2Zpbml0ZWYgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFW
RV9fRklOSVRFRiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfZmluaXRlbCBmdW5j
dGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19GSU5JVEVMICovCgovKiBEZWZp
bmUgaWYgeW91IGhhdmUgdGhlIF9mbG9vcmYgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dM
SUJDUFBfSEFWRV9fRkxPT1JGICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9mbG9v
cmwgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fRkxPT1JMICovCgov
KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9mbW9kZiBmdW5jdGlvbi4gICovCi8qICN1bmRl
ZiBfR0xJQkNQUF9IQVZFX19GTU9ERiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBf
Zm1vZGwgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fRk1PREwgKi8K
Ci8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgX2ZwY2xhc3MgZnVuY3Rpb24uICAqLwovKiAj
dW5kZWYgX0dMSUJDUFBfSEFWRV9fRlBDTEFTUyAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZl
IHRoZSBfZnJleHBmIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX0ZS
RVhQRiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfZnJleHBsIGZ1bmN0aW9uLiAg
Ki8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX0ZSRVhQTCAqLwoKLyogRGVmaW5lIGlmIHlv
dSBoYXZlIHRoZSBfaHlwb3QgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFW
RV9fSFlQT1QgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgX2h5cG90ZiBmdW5jdGlv
bi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19IWVBPVEYgKi8KCi8qIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgX2h5cG90bCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQ
UF9IQVZFX19IWVBPVEwgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgX2lzaW5mIGZ1
bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX0lTSU5GICovCgovKiBEZWZp
bmUgaWYgeW91IGhhdmUgdGhlIF9pc2luZmYgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dM
SUJDUFBfSEFWRV9fSVNJTkZGICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9pc2lu
ZmwgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fSVNJTkZMICovCgov
KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9pc25hbiBmdW5jdGlvbi4gICovCi8qICN1bmRl
ZiBfR0xJQkNQUF9IQVZFX19JU05BTiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBf
aXNuYW5mIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX0lTTkFORiAq
LwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfaXNuYW5sIGZ1bmN0aW9uLiAgKi8KLyog
I3VuZGVmIF9HTElCQ1BQX0hBVkVfX0lTTkFOTCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZl
IHRoZSBfbGRleHBmIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX0xE
RVhQRiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfbGRleHBsIGZ1bmN0aW9uLiAg
Ki8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX0xERVhQTCAqLwoKLyogRGVmaW5lIGlmIHlv
dSBoYXZlIHRoZSBfbG9nMTBmIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hB
VkVfX0xPRzEwRiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfbG9nMTBsIGZ1bmN0
aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX0xPRzEwTCAqLwoKLyogRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSBfbG9nZiBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQ
UF9IQVZFX19MT0dGICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9sb2dsIGZ1bmN0
aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX0xPR0wgKi8KCi8qIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgX21vZGZmIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQ
X0hBVkVfX01PREZGICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9tb2RmbCBmdW5j
dGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19NT0RGTCAqLwoKLyogRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSBfcG93ZiBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQ
UF9IQVZFX19QT1dGICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9wb3dsIGZ1bmN0
aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX1BPV0wgKi8KCi8qIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgX3FmcGNsYXNzIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElC
Q1BQX0hBVkVfX1FGUENMQVNTICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9zaW5j
b3MgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fU0lOQ09TICovCgov
KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9zaW5jb3NmIGZ1bmN0aW9uLiAgKi8KLyogI3Vu
ZGVmIF9HTElCQ1BQX0hBVkVfX1NJTkNPU0YgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0
aGUgX3NpbmNvc2wgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fU0lO
Q09TTCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfc2luZiBmdW5jdGlvbi4gICov
Ci8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19TSU5GICovCgovKiBEZWZpbmUgaWYgeW91IGhh
dmUgdGhlIF9zaW5oZiBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19T
SU5IRiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfc2luaGwgZnVuY3Rpb24uICAq
LwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fU0lOSEwgKi8KCi8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgX3NpbmwgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9f
U0lOTCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfc3FydGYgZnVuY3Rpb24uICAq
LwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9fU1FSVEYgKi8KCi8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgX3NxcnRsIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVf
X1NRUlRMICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF90YW5mIGZ1bmN0aW9uLiAg
Ki8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfX1RBTkYgKi8KCi8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgX3RhbmhmIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVf
X1RBTkhGICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF90YW5obCBmdW5jdGlvbi4g
ICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX19UQU5ITCAqLwoKLyogRGVmaW5lIGlmIHlv
dSBoYXZlIHRoZSBfdGFubCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZF
X19UQU5MICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGFjb3NmIGZ1bmN0aW9uLiAg
Ki8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX0FDT1NGIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2
ZSB0aGUgYWNvc2wgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfQUNPU0wg
MQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBhc2luZiBmdW5jdGlvbi4gICovCiNkZWZp
bmUgX0dMSUJDUFBfSEFWRV9BU0lORiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGFz
aW5sIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX0FTSU5MIDEKCi8qIERl
ZmluZSBpZiB5b3UgaGF2ZSB0aGUgYXRhbjJmIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJ
QkNQUF9IQVZFX0FUQU4yRiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGF0YW4ybCBm
dW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9BVEFOMkwgMQoKLyogRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSBhdGFuZiBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBf
SEFWRV9BVEFORiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGF0YW5sIGZ1bmN0aW9u
LiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX0FUQU5MIDEKCi8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgYnRvd2MgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfQlRP
V0MgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBjZWlsZiBmdW5jdGlvbi4gICovCiNk
ZWZpbmUgX0dMSUJDUFBfSEFWRV9DRUlMRiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhl
IGNlaWxsIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX0NFSUxMIDEKCi8q
IERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgY29weXNpZ24gZnVuY3Rpb24uICAqLwojZGVmaW5l
IF9HTElCQ1BQX0hBVkVfQ09QWVNJR04gMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBj
b3B5c2lnbmYgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfQ09QWVNJR05G
IDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgY29weXNpZ25sIGZ1bmN0aW9uLiAgKi8K
I2RlZmluZSBfR0xJQkNQUF9IQVZFX0NPUFlTSUdOTCAxCgovKiBEZWZpbmUgaWYgeW91IGhh
dmUgdGhlIGNvc2YgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfQ09TRiAx
CgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGNvc2hmIGZ1bmN0aW9uLiAgKi8KI2RlZmlu
ZSBfR0xJQkNQUF9IQVZFX0NPU0hGIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgY29z
aGwgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfQ09TSEwgMQoKLyogRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSBjb3NsIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQ
UF9IQVZFX0NPU0wgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBkcmFuZDQ4IGZ1bmN0
aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX0RSQU5ENDggMQoKLyogRGVmaW5lIGlm
IHlvdSBoYXZlIHRoZSBleHBmIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZF
X0VYUEYgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBleHBsIGZ1bmN0aW9uLiAgKi8K
I2RlZmluZSBfR0xJQkNQUF9IQVZFX0VYUEwgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRo
ZSBmYWJzZiBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9GQUJTRiAxCgov
KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGZhYnNsIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBf
R0xJQkNQUF9IQVZFX0ZBQlNMIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZmdldHdj
IGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfRkdFVFdDICovCgovKiBE
ZWZpbmUgaWYgeW91IGhhdmUgdGhlIGZnZXR3cyBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBf
R0xJQkNQUF9IQVZFX0ZHRVRXUyAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBmaW5p
dGUgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfRklOSVRFIDEKCi8qIERl
ZmluZSBpZiB5b3UgaGF2ZSB0aGUgZmluaXRlZiBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dM
SUJDUFBfSEFWRV9GSU5JVEVGIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZmluaXRl
bCBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9GSU5JVEVMIDEKCi8qIERl
ZmluZSBpZiB5b3UgaGF2ZSB0aGUgZmxvb3JmIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJ
QkNQUF9IQVZFX0ZMT09SRiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGZsb29ybCBm
dW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9GTE9PUkwgMQoKLyogRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSBmbW9kZiBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBf
SEFWRV9GTU9ERiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGZtb2RsIGZ1bmN0aW9u
LiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX0ZNT0RMIDEKCi8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgZnBjbGFzcyBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZF
X0ZQQ0xBU1MgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZnB1dHdjIGZ1bmN0aW9u
LiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfRlBVVFdDICovCgovKiBEZWZpbmUgaWYg
eW91IGhhdmUgdGhlIGZwdXR3cyBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9I
QVZFX0ZQVVRXUyAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBmcmV4cGYgZnVuY3Rp
b24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfRlJFWFBGIDEKCi8qIERlZmluZSBpZiB5
b3UgaGF2ZSB0aGUgZnJleHBsIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZF
X0ZSRVhQTCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGZ3aWRlIGZ1bmN0aW9uLiAg
Ki8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfRldJREUgKi8KCi8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgZndwcmludGYgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFW
RV9GV1BSSU5URiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBmd3NjYW5mIGZ1bmN0
aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfRldTQ0FORiAqLwoKLyogRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSBnZXRwYWdlc2l6ZSBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dM
SUJDUFBfSEFWRV9HRVRQQUdFU0laRSAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGdl
dHdjIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfR0VUV0MgKi8KCi8q
IERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZ2V0d2NoYXIgZnVuY3Rpb24uICAqLwovKiAjdW5k
ZWYgX0dMSUJDUFBfSEFWRV9HRVRXQ0hBUiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRo
ZSBoeXBvdCBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9IWVBPVCAxCgov
KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGh5cG90ZiBmdW5jdGlvbi4gICovCiNkZWZpbmUg
X0dMSUJDUFBfSEFWRV9IWVBPVEYgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBoeXBv
dGwgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfSFlQT1RMIDEKCi8qIERl
ZmluZSBpZiB5b3UgaGF2ZSB0aGUgaWNvbnYgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElC
Q1BQX0hBVkVfSUNPTlYgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBpY29udl9jbG9z
ZSBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9JQ09OVl9DTE9TRSAxCgov
KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGljb252X29wZW4gZnVuY3Rpb24uICAqLwojZGVm
aW5lIF9HTElCQ1BQX0hBVkVfSUNPTlZfT1BFTiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIGlzaW5mIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX0lTSU5GIDEK
Ci8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgaXNpbmZmIGZ1bmN0aW9uLiAgKi8KI2RlZmlu
ZSBfR0xJQkNQUF9IQVZFX0lTSU5GRiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGlz
aW5mbCBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9JU0lORkwgMQoKLyog
RGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBpc25hbiBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dM
SUJDUFBfSEFWRV9JU05BTiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGlzbmFuZiBm
dW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9JU05BTkYgMQoKLyogRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSBpc25hbmwgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQ
X0hBVkVfSVNOQU5MIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbGRleHBmIGZ1bmN0
aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX0xERVhQRiAxCgovKiBEZWZpbmUgaWYg
eW91IGhhdmUgdGhlIGxkZXhwbCBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFW
RV9MREVYUEwgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBsb2cxMGYgZnVuY3Rpb24u
ICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfTE9HMTBGIDEKCi8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgbG9nMTBsIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX0xP
RzEwTCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGxvZ2YgZnVuY3Rpb24uICAqLwoj
ZGVmaW5lIF9HTElCQ1BQX0hBVkVfTE9HRiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhl
IGxvZ2wgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfTE9HTCAxCgovKiBE
ZWZpbmUgaWYgeW91IGhhdmUgdGhlIG1icmxlbiBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dM
SUJDUFBfSEFWRV9NQlJMRU4gMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBtYnJ0b3dj
IGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX01CUlRPV0MgMQoKLyogRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSBtYnNpbml0IGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJ
QkNQUF9IQVZFX01CU0lOSVQgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBtYnNydG93
Y3MgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfTUJTUlRPV0NTIDEKCi8q
IERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbW9kZmYgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9H
TElCQ1BQX0hBVkVfTU9ERkYgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBtb2RmbCBm
dW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9NT0RGTCAxCgovKiBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIG5hbiBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFW
RV9OQU4gMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBubF9sYW5naW5mbyBmdW5jdGlv
bi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9OTF9MQU5HSU5GTyAxCgovKiBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIHBvd2YgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hB
VkVfUE9XRiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHBvd2wgZnVuY3Rpb24uICAq
LwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfUE9XTCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIHB1dHdjIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfUFVUV0Mg
Ki8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgcHV0d2NoYXIgZnVuY3Rpb24uICAqLwov
KiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9QVVRXQ0hBUiAqLwoKLyogRGVmaW5lIGlmIHlvdSBo
YXZlIHRoZSBxZnBjbGFzcyBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZF
X1FGUENMQVNTICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNldGVudiBmdW5jdGlv
bi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9TRVRFTlYgMQoKLyogRGVmaW5lIGlmIHlv
dSBoYXZlIHRoZSBzaW5jb3MgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVf
U0lOQ09TIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2luY29zZiBmdW5jdGlvbi4g
ICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9TSU5DT1NGIDEKCi8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgc2luY29zbCBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9T
SU5DT1NMIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2luZiBmdW5jdGlvbi4gICov
CiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9TSU5GIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0
aGUgc2luaGYgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfU0lOSEYgMQoK
LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzaW5obCBmdW5jdGlvbi4gICovCiNkZWZpbmUg
X0dMSUJDUFBfSEFWRV9TSU5ITCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNpbmwg
ZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfU0lOTCAxCgovKiBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIHNxcnRmIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9I
QVZFX1NRUlRGIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3FydGwgZnVuY3Rpb24u
ICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfU1FSVEwgMQoKLyogRGVmaW5lIGlmIHlvdSBo
YXZlIHRoZSBzdHJ0b2YgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfU1RS
VE9GIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3RydG9sZCBmdW5jdGlvbi4gICov
CiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9TVFJUT0xEIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2
ZSB0aGUgc3dwcmludGYgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9T
V1BSSU5URiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzd3NjYW5mIGZ1bmN0aW9u
LiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfU1dTQ0FORiAqLwoKLyogRGVmaW5lIGlm
IHlvdSBoYXZlIHRoZSB0YW5mIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZF
X1RBTkYgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB0YW5oZiBmdW5jdGlvbi4gICov
CiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9UQU5IRiAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIHRhbmhsIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX1RBTkhMIDEK
Ci8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdGFubCBmdW5jdGlvbi4gICovCiNkZWZpbmUg
X0dMSUJDUFBfSEFWRV9UQU5MIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdW5nZXR3
YyBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX1VOR0VUV0MgKi8KCi8q
IERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdmZ3cHJpbnRmIGZ1bmN0aW9uLiAgKi8KLyogI3Vu
ZGVmIF9HTElCQ1BQX0hBVkVfVkZXUFJJTlRGICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIHZmd3NjYW5mIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfVkZX
U0NBTkYgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdnN3cHJpbnRmIGZ1bmN0aW9u
LiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfVlNXUFJJTlRGICovCgovKiBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIHZzd3NjYW5mIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElC
Q1BQX0hBVkVfVlNXU0NBTkYgKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdndwcmlu
dGYgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9WV1BSSU5URiAqLwoK
LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB2d3NjYW5mIGZ1bmN0aW9uLiAgKi8KLyogI3Vu
ZGVmIF9HTElCQ1BQX0hBVkVfVldTQ0FORiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRo
ZSB3Y3J0b21iIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX1dDUlRPTUIg
MQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3Y3NjYXQgZnVuY3Rpb24uICAqLwojZGVm
aW5lIF9HTElCQ1BQX0hBVkVfV0NTQ0FUIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUg
d2NzY2hyIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX1dDU0NIUiAxCgov
KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdjc2NtcCBmdW5jdGlvbi4gICovCiNkZWZpbmUg
X0dMSUJDUFBfSEFWRV9XQ1NDTVAgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3Y3Nj
b2xsIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX1dDU0NPTEwgMQoKLyog
RGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3Y3NjcHkgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9H
TElCQ1BQX0hBVkVfV0NTQ1BZIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2NzY3Nw
biBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9XQ1NDU1BOIDEKCi8qIERl
ZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2NzZnRpbWUgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYg
X0dMSUJDUFBfSEFWRV9XQ1NGVElNRSAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3
Y3NsZW4gZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfV0NTTEVOIDEKCi8q
IERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2NzbmNhdCBmdW5jdGlvbi4gICovCiNkZWZpbmUg
X0dMSUJDUFBfSEFWRV9XQ1NOQ0FUIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2Nz
bmNtcCBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9XQ1NOQ01QIDEKCi8q
IERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2NzbmNweSBmdW5jdGlvbi4gICovCiNkZWZpbmUg
X0dMSUJDUFBfSEFWRV9XQ1NOQ1BZIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2Nz
cGJyayBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9XQ1NQQlJLIDEKCi8q
IERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2NzcmNociBmdW5jdGlvbi4gICovCiNkZWZpbmUg
X0dMSUJDUFBfSEFWRV9XQ1NSQ0hSIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2Nz
cnRvbWJzIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX1dDU1JUT01CUyAx
CgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdjc3NwbiBmdW5jdGlvbi4gICovCiNkZWZp
bmUgX0dMSUJDUFBfSEFWRV9XQ1NTUE4gMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3
Y3NzdHIgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfV0NTU1RSIDEKCi8q
IERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2NzdG9kIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBf
R0xJQkNQUF9IQVZFX1dDU1RPRCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdjc3Rv
ZiBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9XQ1NUT0YgMQoKLyogRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSB3Y3N0b2sgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElC
Q1BQX0hBVkVfV0NTVE9LIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2NzdG9sIGZ1
bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX1dDU1RPTCAxCgovKiBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIHdjc3RvdWwgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQ
X0hBVkVfV0NTVE9VTCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdjc3hmcm0gZnVu
Y3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfV0NTWEZSTSAxCgovKiBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIHdjdG9iIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9I
QVZFX1dDVE9CIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd21lbWNociBmdW5jdGlv
bi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9XTUVNQ0hSIDEKCi8qIERlZmluZSBpZiB5
b3UgaGF2ZSB0aGUgd21lbWNtcCBmdW5jdGlvbi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFW
RV9XTUVNQ01QIDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd21lbWNweSBmdW5jdGlv
bi4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9XTUVNQ1BZIDEKCi8qIERlZmluZSBpZiB5
b3UgaGF2ZSB0aGUgd21lbW1vdmUgZnVuY3Rpb24uICAqLwojZGVmaW5lIF9HTElCQ1BQX0hB
VkVfV01FTU1PVkUgMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3bWVtc2V0IGZ1bmN0
aW9uLiAgKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX1dNRU1TRVQgMQoKLyogRGVmaW5lIGlm
IHlvdSBoYXZlIHRoZSB3cHJpbnRmIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQ
X0hBVkVfV1BSSU5URiAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3c2NhbmYgZnVu
Y3Rpb24uICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9XU0NBTkYgKi8KCi8qIERlZmlu
ZSBpZiB5b3UgaGF2ZSB0aGUgPGVuZGlhbi5oPiBoZWFkZXIgZmlsZS4gICovCiNkZWZpbmUg
X0dMSUJDUFBfSEFWRV9FTkRJQU5fSCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxm
bG9hdC5oPiBoZWFkZXIgZmlsZS4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9GTE9BVF9I
IDEKCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGZwLmg+IGhlYWRlciBmaWxlLiAgKi8K
LyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfRlBfSCAqLwoKLyogRGVmaW5lIGlmIHlvdSBoYXZl
IHRoZSA8Z2NvbnYuaD4gaGVhZGVyIGZpbGUuICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVf
R0NPTlZfSCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxpZWVlZnAuaD4gaGVhZGVy
IGZpbGUuICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9JRUVFRlBfSCAqLwoKLyogRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICAqLwojZGVm
aW5lIF9HTElCQ1BQX0hBVkVfSU5UVFlQRVNfSCAxCgovKiBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIDxsb2NhbGUuaD4gaGVhZGVyIGZpbGUuICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVf
TE9DQUxFX0ggMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8bWFjaGluZS9lbmRpYW4u
aD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9NQUNISU5FX0VO
RElBTl9IICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxtYWNoaW5lL3BhcmFtLmg+
IGhlYWRlciBmaWxlLiAgKi8KLyogI3VuZGVmIF9HTElCQ1BQX0hBVkVfTUFDSElORV9QQVJB
TV9IICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxuYW4uaD4gaGVhZGVyIGZpbGUu
ICAqLwovKiAjdW5kZWYgX0dMSUJDUFBfSEFWRV9OQU5fSCAqLwoKLyogRGVmaW5lIGlmIHlv
dSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAgKi8KLyogI3VuZGVmIF9HTElC
Q1BQX0hBVkVfU1RETElCX0ggKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9p
c2FfZGVmcy5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX1NZ
U19JU0FfREVGU19IICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvbWFjaGlu
ZS5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX1NZU19NQUNI
SU5FX0ggKi8KCi8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9yZXNvdXJjZS5oPiBo
ZWFkZXIgZmlsZS4gICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9TWVNfUkVTT1VSQ0VfSCAx
CgovKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4g
ICovCi8qICN1bmRlZiBfR0xJQkNQUF9IQVZFX1NZU19TVEFUX0ggKi8KCi8qIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRl
ZiBfR0xJQkNQUF9IQVZFX1NZU19UWVBFU19IICovCgovKiBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVf
VU5JU1REX0ggMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8d2NoYXIuaD4gaGVhZGVy
IGZpbGUuICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfV0NIQVJfSCAxCgovKiBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIDx3Y3R5cGUuaD4gaGVhZGVyIGZpbGUuICAqLwojZGVmaW5lIF9H
TElCQ1BQX0hBVkVfV0NUWVBFX0ggMQoKLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBtIGxp
YnJhcnkgKC1sbSkuICAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfTElCTSAxCgovKiBOYW1l
IG9mIHBhY2thZ2UgKi8KI2RlZmluZSBfR0xJQkNQUF9QQUNLQUdFICJsaWJzdGRjKysiCgov
KiBWZXJzaW9uIG51bWJlciBvZiBwYWNrYWdlICovCiNkZWZpbmUgX0dMSUJDUFBfVkVSU0lP
TiAiMy4xLjAiCgovKiBEZWZpbmUgaWYgdGhlIGNvbXBpbGVyIGlzIGNvbmZpZ3VyZWQgZm9y
IHNldGptcC9sb25nam1wIGV4Y2VwdGlvbnMuICovCi8qICN1bmRlZiBfR0xJQkNQUF9TSkxK
X0VYQ0VQVElPTlMgKi8KCi8qIERlZmluZSBpZiBzaWdzZXRqbXAgaXMgYXZhaWxhYmxlLiAg
ICovCiNkZWZpbmUgX0dMSUJDUFBfSEFWRV9TSUdTRVRKTVAgMQoKLyogT25seSB1c2VkIGlu
IGJ1aWxkIGRpcmVjdG9yeSB0ZXN0c3VpdGVfaG9va3MuaC4gKi8KI2RlZmluZSBfR0xJQkNQ
UF9IQVZFX01FTUxJTUlUX0RBVEEgMQoKLyogT25seSB1c2VkIGluIGJ1aWxkIGRpcmVjdG9y
eSB0ZXN0c3VpdGVfaG9va3MuaC4gKi8KI2RlZmluZSBfR0xJQkNQUF9IQVZFX01FTUxJTUlU
X1JTUyAxCgovKiBPbmx5IHVzZWQgaW4gYnVpbGQgZGlyZWN0b3J5IHRlc3RzdWl0ZV9ob29r
cy5oLiAqLwojZGVmaW5lIF9HTElCQ1BQX0hBVkVfTUVNTElNSVRfVk1FTSAwCgovKiBPbmx5
IHVzZWQgaW4gYnVpbGQgZGlyZWN0b3J5IHRlc3RzdWl0ZV9ob29rcy5oLiAqLwojZGVmaW5l
IF9HTElCQ1BQX0hBVkVfTUVNTElNSVRfQVMgMQoKLy8KLy8gU3lzdGVtcyB0aGF0IGhhdmUg
Y2VydGFpbiBub24tc3RhbmRhcmQgZnVuY3Rpb25zIHByZWZpeGVkIHdpdGggYW4KLy8gdW5k
ZXJzY29yZSwgd2UnbGwgaGFuZGxlIHRob3NlIGhlcmUuIE11c3QgY29tZSBhZnRlciBjb25m
aWcuaC5pbi4KLy8KI2lmIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfX0lTTkFOKSAmJiAhIGRl
ZmluZWQgKF9HTElCQ1BQX0hBVkVfSVNOQU4pCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfSVNO
QU4gMQojIGRlZmluZSBpc25hbiBfaXNuYW4KI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJD
UFBfSEFWRV9fSVNOQU5GKSAmJiAhIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfSVNOQU5GKQoj
IGRlZmluZSBfR0xJQkNQUF9IQVZFX0lTTkFORiAxCiMgZGVmaW5lIGlzbmFuZiBfaXNuYW5m
CiNlbmRpZgoKI2lmIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfX0lTTkFOTCkgJiYgISBkZWZp
bmVkIChfR0xJQkNQUF9IQVZFX0lTTkFOTCkKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9JU05B
TkwgMQojIGRlZmluZSBpc25hbmwgX2lzbmFubAojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJ
QkNQUF9IQVZFX19JU0lORikgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX0lTSU5GKQoj
IGRlZmluZSBfR0xJQkNQUF9IQVZFX0lTSU5GIDEKIyBkZWZpbmUgaXNpbmYgX2lzaW5mCiNl
bmRpZgoKI2lmIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfX0lTSU5GRikgJiYgISBkZWZpbmVk
IChfR0xJQkNQUF9IQVZFX0lTSU5GRikKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9JU0lORkYg
MQojIGRlZmluZSBpc2luZmYgX2lzaW5mZgojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJQkNQ
UF9IQVZFX19JU0lORkwpICYmICEgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9JU0lORkwpCiMg
ZGVmaW5lIF9HTElCQ1BQX0hBVkVfSVNJTkZMIDEKIyBkZWZpbmUgaXNpbmZsIF9pc2luZmwK
I2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fQ09QWVNJR04pICYmICEgZGVm
aW5lZCAoX0dMSUJDUFBfSEFWRV9DT1BZU0lHTikKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9D
T1BZU0lHTiAxCiMgZGVmaW5lIGNvcHlzaWduIF9jb3B5c2lnbgojZW5kaWYKCiNpZiBkZWZp
bmVkIChfR0xJQkNQUF9IQVZFX19DT1BZU0lHTkwpICYmICEgZGVmaW5lZCAoX0dMSUJDUFBf
SEFWRV9DT1BZU0lHTkwpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfQ09QWVNJR05MIDEKIyBk
ZWZpbmUgY29weXNpZ25sIF9jb3B5c2lnbmwKI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJD
UFBfSEFWRV9fQ09TRikgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX0NPU0YpCiMgZGVm
aW5lIF9HTElCQ1BQX0hBVkVfQ09TRiAxCiMgZGVmaW5lIGNvc2YgX2Nvc2YKI2VuZGlmCgoj
aWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fQUNPU0YpICYmICEgZGVmaW5lZCAoX0dMSUJD
UFBfSEFWRV9BQ09TRikKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9BQ09TRiAxCiMgZGVmaW5l
IGFjb3NmIF9hY29zZgojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX19BQ09T
TCkgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX0FDT1NMKQojIGRlZmluZSBfR0xJQkNQ
UF9IQVZFX0FDT1NMIDEKIyBkZWZpbmUgYWNvc2wgX2Fjb3NsCiNlbmRpZgoKI2lmIGRlZmlu
ZWQgKF9HTElCQ1BQX0hBVkVfX0FTSU5GKSAmJiAhIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVf
QVNJTkYpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfQVNJTkYgMQojIGRlZmluZSBhc2luZiBf
YXNpbmYKI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fQVNJTkwpICYmICEg
ZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9BU0lOTCkKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9B
U0lOTCAxCiMgZGVmaW5lIGFzaW5sIF9hc2lubAojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJ
QkNQUF9IQVZFX19BVEFORikgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX0FUQU5GKQoj
IGRlZmluZSBfR0xJQkNQUF9IQVZFX0FUQU5GIDEKIyBkZWZpbmUgYXRhbmYgX2F0YW5mCiNl
bmRpZgoKI2lmIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfX0FUQU5MKSAmJiAhIGRlZmluZWQg
KF9HTElCQ1BQX0hBVkVfQVRBTkwpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfQVRBTkwgMQoj
IGRlZmluZSBhdGFubCBfYXRhbmwKI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFW
RV9fQ0VJTEYpICYmICEgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9DRUlMRikKIyBkZWZpbmUg
X0dMSUJDUFBfSEFWRV9DRUlMRiAxCiMgZGVmaW5lIGFjZWlsIF9jZWlsZgojZW5kaWYKCiNp
ZiBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX19DRUlMTCkgJiYgISBkZWZpbmVkIChfR0xJQkNQ
UF9IQVZFX0NFSUxMKQojIGRlZmluZSBfR0xJQkNQUF9IQVZFX0NFSUxMIDEKIyBkZWZpbmUg
YWNlaWwgX2NlaWxsCiNlbmRpZgoKI2lmIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfX0NPU0hG
KSAmJiAhIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfQ09TSEYpCiMgZGVmaW5lIF9HTElCQ1BQ
X0hBVkVfQ09TSEYgMQojIGRlZmluZSBjb3NoZiBfY29zaGYKI2VuZGlmCgojaWYgZGVmaW5l
ZCAoX0dMSUJDUFBfSEFWRV9fQ09TTCkgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX0NP
U0wpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfQ09TTCAxCiMgZGVmaW5lIGNvc2wgX2Nvc2wK
I2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fTE9HRikgJiYgISBkZWZpbmVk
IChfR0xJQkNQUF9IQVZFX0xPR0YpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfTE9HRiAxCiMg
ZGVmaW5lIGxvZ2YgX2xvZ2YKI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9f
Q09TSEwpICYmICEgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9DT1NITCkKIyBkZWZpbmUgX0dM
SUJDUFBfSEFWRV9DT1NITCAxCiMgZGVmaW5lIGNvc2hsIF9jb3NobAojZW5kaWYKCiNpZiBk
ZWZpbmVkIChfR0xJQkNQUF9IQVZFX19FWFBGKSAmJiAhIGRlZmluZWQgKF9HTElCQ1BQX0hB
VkVfRVhQRikKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9FWFBGIDEKIyBkZWZpbmUgZXhwZiBf
ZXhwZgojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX19FWFBMKSAmJiAhIGRl
ZmluZWQgKF9HTElCQ1BQX0hBVkVfRVhQTCkKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9FWFBM
IDEKIyBkZWZpbmUgZXhwbCBfZXhwbAojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJQkNQUF9I
QVZFX19GQUJTRikgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX0ZBQlNGKQojIGRlZmlu
ZSBfR0xJQkNQUF9IQVZFX0ZBQlNGIDEKIyBkZWZpbmUgZmFic2YgX2ZhYnNmCiNlbmRpZgoK
I2lmIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfX0ZBQlNMKSAmJiAhIGRlZmluZWQgKF9HTElC
Q1BQX0hBVkVfRkFCU0wpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfRkFCU0wgMQojIGRlZmlu
ZSBmYWJzbCBfZmFic2wKI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fRkxP
T1JGKSAmJiAhIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfRkxPT1JGKQojIGRlZmluZSBfR0xJ
QkNQUF9IQVZFX0ZMT09SRiAxCiMgZGVmaW5lIGZsb29yZiBfZmxvb3JmCiNlbmRpZgoKI2lm
IGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfX0ZMT09STCkgJiYgISBkZWZpbmVkIChfR0xJQkNQ
UF9IQVZFX0ZMT09STCkKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9GTE9PUkwgMQojIGRlZmlu
ZSBmbG9vcmwgX2Zsb29ybAojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX19G
TU9ERikgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX0ZNT0RGKQojIGRlZmluZSBfR0xJ
QkNQUF9IQVZFX0ZNT0RGIDEKIyBkZWZpbmUgZm1vZGYgX2Ztb2RmCiNlbmRpZgoKI2lmIGRl
ZmluZWQgKF9HTElCQ1BQX0hBVkVfX0ZNT0RMKSAmJiAhIGRlZmluZWQgKF9HTElCQ1BQX0hB
VkVfRk1PREwpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfRk1PREwgMQojIGRlZmluZSBmbW9k
bCBfZm1vZGwKI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fRlJFWFBGKSAm
JiAhIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfRlJFWFBGKQojIGRlZmluZSBfR0xJQkNQUF9I
QVZFX0ZSRVhQRiAxCiMgZGVmaW5lIGZyZXhwZiBfZnJleHBmCiNlbmRpZgoKI2lmIGRlZmlu
ZWQgKF9HTElCQ1BQX0hBVkVfX0ZSRVhQTCkgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZF
X0ZSRVhQTCkKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9GUkVYUEwgMQojIGRlZmluZSBmcmV4
cGwgX2ZyZXhwbAojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX19MREVYUEYp
ICYmICEgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9MREVYUEYpCiMgZGVmaW5lIF9HTElCQ1BQ
X0hBVkVfTERFWFBGIDEKIyBkZWZpbmUgbGRleHBmIF9sZGV4cGYKI2VuZGlmCgojaWYgZGVm
aW5lZCAoX0dMSUJDUFBfSEFWRV9fTERFWFBMKSAmJiAhIGRlZmluZWQgKF9HTElCQ1BQX0hB
VkVfTERFWFBMKQojIGRlZmluZSBfR0xJQkNQUF9IQVZFX0xERVhQTCAxCiMgZGVmaW5lIGxk
ZXhwbCBfbGRleHBsCiNlbmRpZgoKI2lmIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfX0xPRzEw
RikgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX0xPRzEwRikKIyBkZWZpbmUgX0dMSUJD
UFBfSEFWRV9MT0cxMEYgMQojIGRlZmluZSBsb2cxMGYgX2xvZzEwZgojZW5kaWYKCiNpZiBk
ZWZpbmVkIChfR0xJQkNQUF9IQVZFX19MT0dMKSAmJiAhIGRlZmluZWQgKF9HTElCQ1BQX0hB
VkVfTE9HTCkKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9MT0dMIDEKIyBkZWZpbmUgbG9nbCBf
bG9nbAojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX19QT1dGKSAmJiAhIGRl
ZmluZWQgKF9HTElCQ1BQX0hBVkVfUE9XRikKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9QT1dG
IDEKIyBkZWZpbmUgcG93ZiBfcG93ZgojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJQkNQUF9I
QVZFX19MT0cxMEwpICYmICEgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9MT0cxMEwpCiMgZGVm
aW5lIF9HTElCQ1BQX0hBVkVfTE9HMTBMIDEKIyBkZWZpbmUgbG9nMTBsIF9sb2cxMGwKI2Vu
ZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fTU9ERikgJiYgISBkZWZpbmVkIChf
R0xJQkNQUF9IQVZFX01PREYpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfTU9ERiAxCiMgZGVm
aW5lIG1vZGYgX21vZGYKI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fTU9E
TCkgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX01PREwpCiMgZGVmaW5lIF9HTElCQ1BQ
X0hBVkVfTU9ETCAxCiMgZGVmaW5lIG1vZGwgX21vZGwKI2VuZGlmCgojaWYgZGVmaW5lZCAo
X0dMSUJDUFBfSEFWRV9fU0lORikgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX1NJTkYp
CiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfU0lORiAxCiMgZGVmaW5lIHNpbmYgX3NpbmYKI2Vu
ZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fUE9XTCkgJiYgISBkZWZpbmVkIChf
R0xJQkNQUF9IQVZFX1BPV0wpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfUE9XTCAxCiMgZGVm
aW5lIHBvd2wgX3Bvd2wKI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fU0lO
SEYpICYmICEgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9TSU5IRikKIyBkZWZpbmUgX0dMSUJD
UFBfSEFWRV9TSU5IRiAxCiMgZGVmaW5lIHNpbmhmIF9zaW5oZgojZW5kaWYKCiNpZiBkZWZp
bmVkIChfR0xJQkNQUF9IQVZFX19TSU5MKSAmJiAhIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVf
U0lOTCkKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9TSU5MIDEKIyBkZWZpbmUgc2lubCBfc2lu
bAojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX19TUVJURikgJiYgISBkZWZp
bmVkIChfR0xJQkNQUF9IQVZFX1NRUlRGKQojIGRlZmluZSBfR0xJQkNQUF9IQVZFX1NRUlRG
IDEKIyBkZWZpbmUgc3FydGYgX3NxcnRmCiNlbmRpZgoKI2lmIGRlZmluZWQgKF9HTElCQ1BQ
X0hBVkVfX1NJTkhMKSAmJiAhIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfU0lOSEwpCiMgZGVm
aW5lIF9HTElCQ1BQX0hBVkVfU0lOSEwgMQojIGRlZmluZSBzaW5obCBfc2luaGwKI2VuZGlm
CgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fVEFORikgJiYgISBkZWZpbmVkIChfR0xJ
QkNQUF9IQVZFX1RBTkYpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfVEFORiAxCiMgZGVmaW5l
IHRhbmYgX3RhbmYKI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fU1FSVEwp
ICYmICEgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9TUVJUTCkKIyBkZWZpbmUgX0dMSUJDUFBf
SEFWRV9TUVJUTCAxCiMgZGVmaW5lIHNxcnRsIF9zcXJ0bAojZW5kaWYKCiNpZiBkZWZpbmVk
IChfR0xJQkNQUF9IQVZFX19UQU5IRikgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX1RB
TkhGKQojIGRlZmluZSBfR0xJQkNQUF9IQVZFX1RBTkhGIDEKIyBkZWZpbmUgdGFuaGYgX3Rh
bmhmCiNlbmRpZgoKI2lmIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfX1RBTkwpICYmICEgZGVm
aW5lZCAoX0dMSUJDUFBfSEFWRV9UQU5MKQojIGRlZmluZSBfR0xJQkNQUF9IQVZFX1RBTkYg
MQojIGRlZmluZSB0YW5mIF90YW5mCiNlbmRpZgoKI2lmIGRlZmluZWQgKF9HTElCQ1BQX0hB
VkVfX1NUUlRPRikgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX1NUUlRPRikKIyBkZWZp
bmUgX0dMSUJDUFBfSEFWRV9TVFJUT0YgMQojIGRlZmluZSBzdHJ0b2YgX3N0cnRvZgojZW5k
aWYKCiNpZiBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX19UQU5ITCkgJiYgISBkZWZpbmVkIChf
R0xJQkNQUF9IQVZFX1RBTkhMKQojIGRlZmluZSBfR0xJQkNQUF9IQVZFX1RBTkhMIDEKIyBk
ZWZpbmUgdGFuaGwgX3RhbmhsCiNlbmRpZgoKI2lmIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVf
X1NUUlRPTEQpICYmICEgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9TVFJUT0xEKQojIGRlZmlu
ZSBfR0xJQkNQUF9IQVZFX1NUUlRPTEQgMQojIGRlZmluZSBzdHJ0b2xkIF9zdHJ0b2xkCiNl
bmRpZgoKI2lmIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfX1NJTkNPUykgJiYgISBkZWZpbmVk
IChfR0xJQkNQUF9IQVZFX1NJTkNPUykKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9TSU5DT1Mg
MQojIGRlZmluZSBzaW5jb3MgX3NpbmNvcwojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJQkNQ
UF9IQVZFX19TSU5DT1NGKSAmJiAhIGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfU0lOQ09TRikK
IyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9TSU5DT1NGIDEKIyBkZWZpbmUgc2luY29zZiBfc2lu
Y29zZgojZW5kaWYKCiNpZiBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX19TSU5DT1NMKSAmJiAh
IGRlZmluZWQgKF9HTElCQ1BQX0hBVkVfU0lOQ09TTCkKIyBkZWZpbmUgX0dMSUJDUFBfSEFW
RV9TSU5DT1NMIDEKIyBkZWZpbmUgc2luY29zbCBfc2luY29zbAojZW5kaWYKCiNpZiBkZWZp
bmVkIChfR0xJQkNQUF9IQVZFX19GSU5JVEUpICYmICEgZGVmaW5lZCAoX0dMSUJDUFBfSEFW
RV9GSU5JVEUpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfRklOSVRFIDEKIyBkZWZpbmUgZmlu
aXRlIF9maW5pdGUKI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fRklOSVRF
RikgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX0ZJTklURUYpCiMgZGVmaW5lIF9HTElC
Q1BQX0hBVkVfRklOSVRFRiAxCiMgZGVmaW5lIGZpbml0ZWYgX2Zpbml0ZWYKI2VuZGlmCgoj
aWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fRklOSVRFTCkgJiYgISBkZWZpbmVkIChfR0xJ
QkNQUF9IQVZFX0ZJTklURUwpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVfRklOSVRFTCAxCiMg
ZGVmaW5lIGZpbml0ZWwgX2Zpbml0ZWwKI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBf
SEFWRV9fUUZJTklURSkgJiYgISBkZWZpbmVkIChfR0xJQkNQUF9IQVZFX1FGSU5JVEUpCiMg
ZGVmaW5lIF9HTElCQ1BQX0hBVkVfUUZJTklURSAxCiMgZGVmaW5lIHFmaW5pdGUgX3FmaW5p
dGUKI2VuZGlmCgojaWYgZGVmaW5lZCAoX0dMSUJDUFBfSEFWRV9fRlBDTEFTUykgJiYgISBk
ZWZpbmVkIChfR0xJQkNQUF9IQVZFX0ZQQ0xBU1MpCiMgZGVmaW5lIF9HTElCQ1BQX0hBVkVf
RlBDTEFTUyAxCiMgZGVmaW5lIGZwY2xhc3MgX2ZwY2xhc3MKI2VuZGlmCgojaWYgZGVmaW5l
ZCAoX0dMSUJDUFBfSEFWRV9fUUZQQ0xBU1MpICYmICEgZGVmaW5lZCAoX0dMSUJDUFBfSEFW
RV9RRlBDTEFTUykKIyBkZWZpbmUgX0dMSUJDUFBfSEFWRV9RRlBDTEFTUyAxCiMgZGVmaW5l
IHFmcGNsYXNzIF9xZnBjbGFzcwojZW5kaWYKCiNlbmRpZiAvLyBfQ1BQX0NQUENPTkZJR18K
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAuL2luY2x1ZGUvZysrLXYzL2k2ODYtcGMtbGludXgtZ251L2JpdHMvb3NfZGVmaW5lcy5o
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0
NAAwMDAzMzA1ADAwMTE2MzcAMDAwMDAwMDU0MjUAMDc0NzMwNDI2NjcAMDIwNjc2ACAwAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWVu
Z2VsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvc3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8vIFNwZWNpZmljIGRlZmluaXRpb25zIGZv
ciBHTlUvTGludXggIC0qLSBDKysgLSotCgovLyBDb3B5cmlnaHQgKEMpIDIwMDAsIDIwMDEg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi8vCi8vIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLy8g
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5k
ZXIgdGhlCi8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlCi8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl
cnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQovLyBhbnkgbGF0ZXIgdmVyc2lvbi4KCi8v
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAovLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgovLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi8vIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgovLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwovLyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlCi8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAt
IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAovLyBVU0EuCgovLyBBcyBhIHNw
ZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZy
ZWUgc29mdHdhcmUKLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNh
bGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQovLyB0ZW1wbGF0ZXMgb3IgdXNlIG1h
Y3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGls
ZQovLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNl
IGFuIGV4ZWN1dGFibGUsIHRoaXMKLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2Ug
dGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLy8gdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZl
cgovLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBm
aWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlLgoKI2lmbmRlZiBfR0xJQkNQUF9PU19ERUZJTkVTCiNkZWZpbmUgX0dMSUJDUFBfT1Nf
REVGSU5FUyAxCgovLyBTeXN0ZW0tc3BlY2lmaWMgI2RlZmluZSwgdHlwZWRlZnMsIGNvcnJl
Y3Rpb25zLCBldGMsIGdvIGhlcmUuICBUaGlzCi8vIGZpbGUgd2lsbCBjb21lIGJlZm9yZSBh
bGwgb3RoZXJzLgoKLy8gVGhpcyBrZWVwcyBpc2FudW0sIGV0IGFsIGZyb20gYmVpbmcgcHJv
cGFnYXRlZCBhcyBtYWNyb3MuCiNkZWZpbmUgX19OT19DVFlQRSAxCgojaW5jbHVkZSA8ZmVh
dHVyZXMuaD4KCiNpZiAhZGVmaW5lZCAoX19HTElCQ19fKSB8fCAoX19HTElCQ19fID09IDIg
JiYgX19HTElCQ19NSU5PUl9fKyAwID09IDApCgovLyBUaGUgdHlwZXMgX19vZmZfdCBhbmQg
X19vZmY2NF90IGFyZSBub3QgZGVmaW5lZCB0aHJvdWdoIDxzeXMvdHlwZXMuaD4KLy8gYXMg
X0dfY29uZmlnIGFzc3VtZXMuICBGb3IgbGliYzUgYW5kIGdsaWJjIDIuMCBpbnN0ZWFkIHVz
ZQovLyA8Z251L3R5cGVzLmg+IGFuZCB0aGUgb2xkIG5hbWUgZm9yIF9fb2ZmNjRfdC4KI2lu
Y2x1ZGUgPGdudS90eXBlcy5oPgp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRfdDsKCi8vIFRo
ZXNlIHN5c3RlbXMgaGF2ZSBkZWNsYXJhdGlvbnMgbWlzbWF0Y2hpbmcgdGhvc2UgaW4gbGli
aW8uaCBieQovLyBvbWl0dGluZyB0aHJvdyBxdWFsaWZpZXJzLiAgQ2xlYW5lc3Qgd2F5IG91
dCBpcyB0byBub3QgcHJvdmlkZQovLyB0aHJvdy1xdWFsaWZpZXJzIGF0IGFsbC4gIERlZmlu
aW5nIGl0IGFzIGVtcHR5IGhlcmUgd2lsbCBtYWtlIGxpYmlvLmgKLy8gbm90IGRlZmluZSBp
dC4KI3VuZGVmIF9fVEhST1cKI2RlZmluZSBfX1RIUk9XCgovLyBUZWxsIEdsaWJjIG5vdCB0
byB0cnkgdG8gcHJvdmlkZSBpdHMgb3duIGlubGluZSB2ZXJzaW9ucyBvZgovLyBzb21lIG1h
dGggZnVuY3Rpb25zLiAgVGhvc2UgY2F1c2UgYXNzZW1ibHktdGltZSBjbGFzaGVzIHdpdGgK
Ly8gb3VyIGRlZmluaXRpb25zLgojZGVmaW5lIF9fTk9fTUFUSF9JTkxJTkVTCgojZW5kaWYg
CgojaWYgZGVmaW5lZCBfX0dMSUJDX18gJiYgX19HTElCQ19fID49IDIKLy8gV2UgbXVzdCBu
b3Qgc2VlIHRoZSBvcHRpbWl6ZWQgc3RyaW5nIGZ1bmN0aW9ucyBHTlUgbGliYyBkZWZpbmVz
LgojZGVmaW5lIF9fTk9fU1RSSU5HX0lOTElORVMKI2VuZGlmCgojaWYgZGVmaW5lZChfX3Bv
d2VycGM2NF9fKSB8fCBkZWZpbmVkKF9fczM5MHhfXykgfHwgKGRlZmluZWQoX19zcGFyY19f
KSAmJiBkZWZpbmVkKF9fYXJjaDY0X18pKQojZGVmaW5lIF9fZ2xpYmNwcF9sb25nX2JpdHMg
NjQKI2VuZGlmCgojaWYgZGVmaW5lZChfX3NwYXJjX18pICYmICFkZWZpbmVkKF9fYXJjaDY0
X18pCiNkZWZpbmUgX19nbGliY3BwX2xvbmdfZG91YmxlX2JpdHMgNjQKI2VuZGlmCgojZW5k
aWYKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4vaW5jbHVkZS9nKystdjMvYml0cy8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAwMDQwNzc1ADAwMDMzMDUAMDAxMTYzNwAwMDAwMDAwMDAwMAAwNzU2
NDUwMDYzMgAwMTMzNTYAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAdXN0YXIgIABtZW5nZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9zcwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi9pbmNs
dWRlL2crKy12My9iaXRzL2NtYXRoLnRjYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMzMw
NQAwMDExNjM3ADAwMDAwMDAzNDYwADA3NDczMDQyNjYxADAxNTE0NQAgMAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1lbmdlbAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAb3NzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAvLyAtKi0gQysrIC0qLSBDIG1hdGggbGlicmFyeS4KCi8v
IENvcHlyaWdodCAoQykgMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLy8K
Ly8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlz
IGxpYnJhcnkgaXMgZnJlZQovLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLy8gRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi8vIGFu
eSBsYXRlciB2ZXJzaW9uLgoKLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi8vIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK
Ly8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCi8vIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFsb25nCi8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLy8gU29mdHdhcmUgRm91bmRhdGlv
biwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcs
Ci8vIFVTQS4KCi8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMg
ZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQovLyBsaWJyYXJ5IHdpdGhvdXQgcmVz
dHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi8v
IHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlz
IGZpbGUsIG9yIHlvdSBjb21waWxlCi8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90
aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwovLyBmaWxlIGRvZXMg
bm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292
ZXJlZCBieQovLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2Vw
dGlvbiBkb2VzIG5vdCBob3dldmVyCi8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMg
d2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQovLyB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCgovLyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkg
R2FicmllbCBEb3MgUmVpcyA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgojaWZuZGVmIF9DUFBf
QklUU19DTUFUSF9UQ0MKI2RlZmluZSBfQ1BQX0JJVFNfQ01BVEhfVENDIDEKCm5hbWVzcGFj
ZSBzdGQgCnsKICBleHBvcnQgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgX1RwCiAgICBf
X2NtYXRoX3Bvd2VyKF9UcCBfX3gsIHVuc2lnbmVkIGludCBfX24pCiAgICB7CiAgICAgIF9U
cCBfX3kgPSBfX24gJSAyID8gX194IDogMTsKCiAgICAgIHdoaWxlIChfX24gPj49IDEpCiAg
ICAgICAgewogICAgICAgICAgX194ID0gX194ICogX194OwogICAgICAgICAgaWYgKF9fbiAl
IDIpCiAgICAgICAgICAgIF9feSA9IF9feSAqIF9feDsKICAgICAgICB9CgogICAgICByZXR1
cm4gX195OwogICAgfQp9CgojZW5kaWYKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAC4vdXNyLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAwMDQwNzc1ADAwMDMzMDUAMDAxMTYzNwAwMDAwMDAwMDAwMAAwNzU2NDUwMDYz
MgAwMTA3MDEAIDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAdXN0YXIgIABtZW5nZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9zcwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi91c3IvaW5jbHVk
ZS8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwNDA3NzUAMDAwMzMwNQAwMDEx
NjM3ADAwMDAwMDAwMDAwADA3NTY0NTAwNjMyADAxMjMyNAAgNQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1lbmdlbAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAb3NzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAuL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMDEwMDY0NAAwMDAzMzA1ADAwMTE2MzcAMDAwMDAwMjI0NTAAMDc1Mzc3MTUzNDEA
MDE0MzE2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AHVzdGFyICAAbWVuZ2VsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvc3MAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8qIENvcHlyaWdodCAo
QykgMTk5MSw5Miw5Myw5NSw5Niw5Nyw5OCw5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4KICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCgogICBU
aGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogICBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKICAgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoZSBH
TlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsCiAgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAgQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuICAqLwoKI2lmbmRlZglfRkVBVFVSRVNfSAojZGVmaW5lCV9G
RUFUVVJFU19ICTEKCi8qIFRoZXNlIGFyZSBkZWZpbmVkIGJ5IHRoZSB1c2VyIChvciB0aGUg
Y29tcGlsZXIpCiAgIHRvIHNwZWNpZnkgdGhlIGRlc2lyZWQgZW52aXJvbm1lbnQ6CgogICBf
X1NUUklDVF9BTlNJX18JSVNPIFN0YW5kYXJkIEMuCiAgIF9JU09DOTlfU09VUkNFCUV4dGVu
c2lvbnMgdG8gSVNPIEMgODkgZnJvbSBJU08gQyA5OS4KICAgX0lTT0M5WF9TT1VSQ0UJU2lt
aWxhciwga2VwdCBmb3IgY29tcGF0aWJpbGl0eS4KICAgX1BPU0lYX1NPVVJDRQlJRUVFIFN0
ZCAxMDAzLjEuCiAgIF9QT1NJWF9DX1NPVVJDRQlJZiA9PTEsIGxpa2UgX1BPU0lYX1NPVVJD
RTsgaWYgPj0yIGFkZCBJRUVFIFN0ZCAxMDAzLjI7CgkJCWlmID49MTk5MzA5TCwgYWRkIElF
RUUgU3RkIDEwMDMuMWItMTk5MzsKCQkJaWYgPj0xOTk1MDZMLCBhZGQgSUVFRSBTdGQgMTAw
My4xYy0xOTk1CiAgIF9YT1BFTl9TT1VSQ0UJSW5jbHVkZXMgUE9TSVggYW5kIFhQRyB0aGlu
Z3MuICBTZXQgdG8gNTAwIGlmCgkJCVNpbmdsZSBVbml4IGNvbmZvcm1hbmNlIGlzIHdhbnRl
ZC4KICAgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCBYUEcgdGhpbmdzIGFuZCBYL09wZW4gVW5p
eCBleHRlbnNpb25zLgogICBfTEFSR0VGSUxFX1NPVVJDRQlTb21lIG1vcmUgZnVuY3Rpb25z
IGZvciBjb3JyZWN0IHN0YW5kYXJkIEkvTy4KICAgX0xBUkdFRklMRTY0X1NPVVJDRQlBZGRp
dGlvbmFsIGZ1bmN0aW9uYWxpdHkgZnJvbSBMRlMgZm9yIGxhcmdlIGZpbGVzLgogICBfRklM
RV9PRkZTRVRfQklUUz1OCVNlbGVjdCBkZWZhdWx0IGZpbGVzeXN0ZW0gaW50ZXJmYWNlLgog
ICBfQlNEX1NPVVJDRQkJSVNPIEMsIFBPU0lYLCBhbmQgNC4zQlNEIHRoaW5ncy4KICAgX1NW
SURfU09VUkNFCQlJU08gQywgUE9TSVgsIGFuZCBTVklEIHRoaW5ncy4KICAgX0dOVV9TT1VS
Q0UJCUFsbCBvZiB0aGUgYWJvdmUsIHBsdXMgR05VIGV4dGVuc2lvbnMuCiAgIF9SRUVOVFJB
TlQJCVNlbGVjdCBhZGRpdGlvbmFsbHkgcmVlbnRyYW50IG9iamVjdC4KICAgX1RIUkVBRF9T
QUZFCQlTYW1lIGFzIF9SRUVOVFJBTlQsIG9mdGVuIHVzZWQgYnkgb3RoZXIgc3lzdGVtcy4K
CiAgIFRoZSBgLWFuc2knIHN3aXRjaCB0byB0aGUgR05VIEMgY29tcGlsZXIgZGVmaW5lcyBf
X1NUUklDVF9BTlNJX18uCiAgIElmIG5vbmUgb2YgdGhlc2UgYXJlIGRlZmluZWQsIHRoZSBk
ZWZhdWx0IGlzIGFsbCBidXQgX0dOVV9TT1VSQ0UuCiAgIElmIG1vcmUgdGhhbiBvbmUgb2Yg
dGhlc2UgYXJlIGRlZmluZWQsIHRoZXkgYWNjdW11bGF0ZS4KICAgRm9yIGV4YW1wbGUgX19T
VFJJQ1RfQU5TSV9fLCBfUE9TSVhfU09VUkNFIGFuZCBfUE9TSVhfQ19TT1VSQ0UKICAgdG9n
ZXRoZXIgZ2l2ZSB5b3UgSVNPIEMsIDEwMDMuMSwgYW5kIDEwMDMuMiwgYnV0IG5vdGhpbmcg
ZWxzZS4KCiAgIFRoZXNlIGFyZSBkZWZpbmVkIGJ5IHRoaXMgZmlsZSBhbmQgYXJlIHVzZWQg
YnkgdGhlCiAgIGhlYWRlciBmaWxlcyB0byBkZWNpZGUgd2hhdCB0byBkZWNsYXJlIG9yIGRl
ZmluZToKCiAgIF9fVVNFX0lTT0M5WAkJRGVmaW5lIElTTyBDIDlYIHRoaW5ncy4KICAgX19V
U0VfUE9TSVgJCURlZmluZSBJRUVFIFN0ZCAxMDAzLjEgdGhpbmdzLgogICBfX1VTRV9QT1NJ
WDIJCURlZmluZSBJRUVFIFN0ZCAxMDAzLjIgdGhpbmdzLgogICBfX1VTRV9QT1NJWDE5OTMw
OQlEZWZpbmUgSUVFRSBTdGQgMTAwMy4xLCBhbmQgLjFiIHRoaW5ncy4KICAgX19VU0VfUE9T
SVgxOTk1MDYJRGVmaW5lIElFRUUgU3RkIDEwMDMuMSwgLjFiLCAuMWMgYW5kIC4xaSB0aGlu
Z3MuCiAgIF9fVVNFX1hPUEVOCQlEZWZpbmUgWFBHIHRoaW5ncy4KICAgX19VU0VfWE9QRU5f
RVhURU5ERUQJRGVmaW5lIFgvT3BlbiBVbml4IHRoaW5ncy4KICAgX19VU0VfVU5JWDk4CQlE
ZWZpbmUgU2luZ2xlIFVuaXggVjIgdGhpbmdzLgogICBfX1VTRV9MQVJHRUZJTEU2NAlEZWZp
bmUgTEZTIHRoaW5ncyB3aXRoIHNlcGFyYXRlIG5hbWVzLgogICBfX1VTRV9GSUxFX09GRlNF
VDY0CURlZmluZSA2NGJpdCBpbnRlcmZhY2UgYXMgZGVmYXVsdC4KICAgX19VU0VfQlNECQlE
ZWZpbmUgNC4zQlNEIHRoaW5ncy4KICAgX19VU0VfU1ZJRAkJRGVmaW5lIFNWSUQgdGhpbmdz
LgogICBfX1VTRV9NSVNDCQlEZWZpbmUgdGhpbmdzIGNvbW1vbiB0byBCU0QgYW5kIFN5c3Rl
bSBWIFVuaXguCiAgIF9fVVNFX0dOVQkJRGVmaW5lIEdOVSBleHRlbnNpb25zLgogICBfX1VT
RV9SRUVOVFJBTlQJRGVmaW5lIHJlZW50cmFudC90aHJlYWQtc2FmZSAqX3IgZnVuY3Rpb25z
LgogICBfX0ZBVk9SX0JTRAkJRmF2b3IgNC4zQlNEIHRoaW5ncyBpbiBjYXNlcyBvZiBjb25m
bGljdC4KCiAgIFRoZSBtYWNyb3MgYF9fR05VX0xJQlJBUllfXycsIGBfX0dMSUJDX18nLCBh
bmQgYF9fR0xJQkNfTUlOT1JfXycgYXJlCiAgIGRlZmluZWQgYnkgdGhpcyBmaWxlIHVuY29u
ZGl0aW9uYWxseS4gIGBfX0dOVV9MSUJSQVJZX18nIGlzIHByb3ZpZGVkCiAgIG9ubHkgZm9y
IGNvbXBhdGliaWxpdHkuICBBbGwgbmV3IGNvZGUgc2hvdWxkIHVzZSB0aGUgb3RoZXIgc3lt
Ym9scwogICB0byB0ZXN0IGZvciBmZWF0dXJlcy4KCiAgIEFsbCBtYWNyb3MgbGlzdGVkIGFi
b3ZlIGFzIHBvc3NpYmx5IGJlaW5nIGRlZmluZWQgYnkgdGhpcyBmaWxlIGFyZQogICBleHBs
aWNpdGx5IHVuZGVmaW5lZCBpZiB0aGV5IGFyZSBub3QgZXhwbGljaXRseSBkZWZpbmVkLgog
ICBGZWF0dXJlLXRlc3QgbWFjcm9zIHRoYXQgYXJlIG5vdCBkZWZpbmVkIGJ5IHRoZSB1c2Vy
IG9yIGNvbXBpbGVyCiAgIGJ1dCBhcmUgaW1wbGllZCBieSB0aGUgb3RoZXIgZmVhdHVyZS10
ZXN0IG1hY3JvcyBkZWZpbmVkIChvciBieSB0aGUKICAgbGFjayBvZiBhbnkgZGVmaW5pdGlv
bnMpIGFyZSBkZWZpbmVkIGJ5IHRoZSBmaWxlLiAgKi8KCgovKiBVbmRlZmluZSBldmVyeXRo
aW5nLCBzbyB3ZSBnZXQgYSBjbGVhbiBzbGF0ZS4gICovCiN1bmRlZglfX1VTRV9JU09DOVgK
I3VuZGVmCV9fVVNFX1BPU0lYCiN1bmRlZglfX1VTRV9QT1NJWDIKI3VuZGVmCV9fVVNFX1BP
U0lYMTk5MzA5CiN1bmRlZglfX1VTRV9QT1NJWDE5OTUwNgojdW5kZWYJX19VU0VfWE9QRU4K
I3VuZGVmCV9fVVNFX1hPUEVOX0VYVEVOREVECiN1bmRlZglfX1VTRV9VTklYOTgKI3VuZGVm
CV9fVVNFX0xBUkdFRklMRQojdW5kZWYJX19VU0VfTEFSR0VGSUxFNjQKI3VuZGVmCV9fVVNF
X0ZJTEVfT0ZGU0VUNjQKI3VuZGVmCV9fVVNFX0JTRAojdW5kZWYJX19VU0VfU1ZJRAojdW5k
ZWYJX19VU0VfTUlTQwojdW5kZWYJX19VU0VfR05VCiN1bmRlZglfX1VTRV9SRUVOVFJBTlQK
I3VuZGVmCV9fRkFWT1JfQlNECiN1bmRlZglfX0tFUk5FTF9TVFJJQ1RfTkFNRVMKCi8qIFN1
cHByZXNzIGtlcm5lbC1uYW1lIHNwYWNlIHBvbGx1dGlvbiB1bmxlc3MgdXNlciBleHByZXNz
ZWRseSBhc2tzCiAgIGZvciBpdC4gICovCiNpZm5kZWYgX0xPT1NFX0tFUk5FTF9OQU1FUwoj
IGRlZmluZSBfX0tFUk5FTF9TVFJJQ1RfTkFNRVMKI2VuZGlmCgovKiBBbHdheXMgdXNlIElT
TyBDIHRoaW5ncy4gICovCiNkZWZpbmUJX19VU0VfQU5TSQkxCgoKLyogSWYgX0JTRF9TT1VS
Q0Ugd2FzIGRlZmluZWQgYnkgdGhlIHVzZXIsIGZhdm9yIEJTRCBvdmVyIFBPU0lYLiAgKi8K
I2lmIGRlZmluZWQgX0JTRF9TT1VSQ0UgJiYgXAogICAgIShkZWZpbmVkIF9QT1NJWF9TT1VS
Q0UgfHwgZGVmaW5lZCBfUE9TSVhfQ19TT1VSQ0UgfHwgXAogICAgICBkZWZpbmVkIF9YT1BF
Tl9TT1VSQ0UgfHwgZGVmaW5lZCBfWE9QRU5fU09VUkNFX0VYVEVOREVEIHx8IFwKICAgICAg
ZGVmaW5lZCBfR05VX1NPVVJDRSB8fCBkZWZpbmVkIF9TVklEX1NPVVJDRSkKIyBkZWZpbmUg
X19GQVZPUl9CU0QJMQojZW5kaWYKCi8qIElmIF9HTlVfU09VUkNFIHdhcyBkZWZpbmVkIGJ5
IHRoZSB1c2VyLCB0dXJuIG9uIGFsbCB0aGUgb3RoZXIgZmVhdHVyZXMuICAqLwojaWZkZWYg
X0dOVV9TT1VSQ0UKIyB1bmRlZiAgX0lTT0M5WF9TT1VSQ0UKIyBkZWZpbmUgX0lTT0M5WF9T
T1VSQ0UJMQojIHVuZGVmICBfUE9TSVhfU09VUkNFCiMgZGVmaW5lIF9QT1NJWF9TT1VSQ0UJ
MQojIHVuZGVmICBfUE9TSVhfQ19TT1VSQ0UKIyBkZWZpbmUgX1BPU0lYX0NfU09VUkNFCTE5
OTUwNkwKIyB1bmRlZiAgX1hPUEVOX1NPVVJDRQojIGRlZmluZSBfWE9QRU5fU09VUkNFCTUw
MAojIHVuZGVmICBfWE9QRU5fU09VUkNFX0VYVEVOREVECiMgZGVmaW5lIF9YT1BFTl9TT1VS
Q0VfRVhURU5ERUQJMQojIHVuZGVmCSBfTEFSR0VGSUxFNjRfU09VUkNFCiMgZGVmaW5lIF9M
QVJHRUZJTEU2NF9TT1VSQ0UJMQojIHVuZGVmICBfQlNEX1NPVVJDRQojIGRlZmluZSBfQlNE
X1NPVVJDRQkxCiMgdW5kZWYgIF9TVklEX1NPVVJDRQojIGRlZmluZSBfU1ZJRF9TT1VSQ0UJ
MQojZW5kaWYKCi8qIElmIG5vdGhpbmcgKG90aGVyIHRoYW4gX0dOVV9TT1VSQ0UpIGlzIGRl
ZmluZWQsCiAgIGRlZmluZSBfQlNEX1NPVVJDRSBhbmQgX1NWSURfU09VUkNFLiAgKi8KI2lm
ICghZGVmaW5lZCBfX1NUUklDVF9BTlNJX18gJiYgIWRlZmluZWQgX0lTT0M5WF9TT1VSQ0Ug
JiYgXAogICAgICFkZWZpbmVkIF9QT1NJWF9TT1VSQ0UgJiYgIWRlZmluZWQgX1BPU0lYX0Nf
U09VUkNFICYmIFwKICAgICAhZGVmaW5lZCBfWE9QRU5fU09VUkNFICYmICFkZWZpbmVkIF9Y
T1BFTl9TT1VSQ0VfRVhURU5ERUQgJiYgXAogICAgICFkZWZpbmVkIF9CU0RfU09VUkNFICYm
ICFkZWZpbmVkIF9TVklEX1NPVVJDRSkKIyBkZWZpbmUgX0JTRF9TT1VSQ0UJMQojIGRlZmlu
ZSBfU1ZJRF9TT1VSQ0UJMQojZW5kaWYKCi8qIFRoaXMgaXMgdG8gZW5hYmxlIHRoZSBJU08g
QyA5eCBleHRlbnNpb24uICBJdCB3aWxsIGdvIGF3YXkgYXMgc29vbgogICBhcyB0aGlzIHN0
YW5kYXJkIGlzIG9mZmljaWFsbHkgcmVsZWFzZWQuICAqLwojaWYgZGVmaW5lZCBfSVNPQzlY
X1NPVVJDRSB8fCBkZWZpbmVkIF9JU09DOTlfU09VUkNFCiMgZGVmaW5lIF9fVVNFX0lTT0M5
WAkxCiNlbmRpZgoKLyogSWYgbm9uZSBvZiB0aGUgQU5TSS9QT1NJWCBtYWNyb3MgYXJlIGRl
ZmluZWQsIHVzZSBQT1NJWC4xIGFuZCBQT1NJWC4yCiAgIChhbmQgSUVFRSBTdGQgMTAwMy4x
Yi0xOTkzIHVubGVzcyBfWE9QRU5fU09VUkNFIGlzIGRlZmluZWQpLiAgKi8KI2lmICghZGVm
aW5lZCBfX1NUUklDVF9BTlNJX18gJiYgIWRlZmluZWQgX1BPU0lYX1NPVVJDRSAmJiBcCiAg
ICAgIWRlZmluZWQgX1BPU0lYX0NfU09VUkNFKQojIGRlZmluZSBfUE9TSVhfU09VUkNFCTEK
IyBpZiBkZWZpbmVkIF9YT1BFTl9TT1VSQ0UgJiYgKF9YT1BFTl9TT1VSQ0UgLSAwKSAhPSA1
MDAKIyAgZGVmaW5lIF9QT1NJWF9DX1NPVVJDRQkyCiMgZWxzZQojICBkZWZpbmUgX1BPU0lY
X0NfU09VUkNFCTE5OTUwNkwKIyBlbmRpZgojZW5kaWYKCiNpZiBkZWZpbmVkIF9QT1NJWF9T
T1VSQ0UgfHwgX1BPU0lYX0NfU09VUkNFID49IDEgfHwgZGVmaW5lZCBfWE9QRU5fU09VUkNF
CiMgZGVmaW5lIF9fVVNFX1BPU0lYCTEKI2VuZGlmCgojaWYgZGVmaW5lZCBfUE9TSVhfQ19T
T1VSQ0UgJiYgX1BPU0lYX0NfU09VUkNFID49IDIgfHwgZGVmaW5lZCBfWE9QRU5fU09VUkNF
CiMgZGVmaW5lIF9fVVNFX1BPU0lYMgkxCiNlbmRpZgoKI2lmIChfUE9TSVhfQ19TT1VSQ0Ug
LSAwKSA+PSAxOTkzMDlMCiMgZGVmaW5lIF9fVVNFX1BPU0lYMTk5MzA5CTEKI2VuZGlmCgoj
aWYgKF9QT1NJWF9DX1NPVVJDRSAtIDApID49IDE5OTUwNkwKIyBkZWZpbmUgX19VU0VfUE9T
SVgxOTk1MDYJMQojZW5kaWYKCiNpZmRlZglfWE9QRU5fU09VUkNFCiMgZGVmaW5lIF9fVVNF
X1hPUEVOCTEKIyBpZiAoX1hPUEVOX1NPVVJDRSAtIDApID09IDUwMAojICBkZWZpbmUgX19V
U0VfWE9QRU5fRVhURU5ERUQJMQojICBkZWZpbmUgX19VU0VfVU5JWDk4CTEKIyAgdW5kZWYg
X0xBUkdFRklMRV9TT1VSQ0UKIyAgZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCTEKIyBlbHNl
CiMgIGlmZGVmIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQKIyAgIGRlZmluZSBfX1VTRV9YT1BF
Tl9FWFRFTkRFRAkxCiMgIGVuZGlmCiMgZW5kaWYKI2VuZGlmCgojaWZkZWYgX0xBUkdFRklM
RV9TT1VSQ0UKIyBkZWZpbmUgX19VU0VfTEFSR0VGSUxFCTEKI2VuZGlmCgojaWZkZWYgX0xB
UkdFRklMRTY0X1NPVVJDRQojIGRlZmluZSBfX1VTRV9MQVJHRUZJTEU2NAkxCiNlbmRpZgoK
I2lmIGRlZmluZWQgX0ZJTEVfT0ZGU0VUX0JJVFMgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0g
NjQKIyBkZWZpbmUgX19VU0VfRklMRV9PRkZTRVQ2NAkxCiNlbmRpZgoKI2lmIGRlZmluZWQg
X0JTRF9TT1VSQ0UgfHwgZGVmaW5lZCBfU1ZJRF9TT1VSQ0UKIyBkZWZpbmUgX19VU0VfTUlT
QwkxCiNlbmRpZgoKI2lmZGVmCV9CU0RfU09VUkNFCiMgZGVmaW5lIF9fVVNFX0JTRAkxCiNl
bmRpZgoKI2lmZGVmCV9TVklEX1NPVVJDRQojIGRlZmluZSBfX1VTRV9TVklECTEKI2VuZGlm
CgojaWZkZWYJX0dOVV9TT1VSQ0UKIyBkZWZpbmUgX19VU0VfR05VCTEKI2VuZGlmCgojaWYg
ZGVmaW5lZCBfUkVFTlRSQU5UIHx8IGRlZmluZWQgX1RIUkVBRF9TQUZFCiMgZGVmaW5lIF9f
VVNFX1JFRU5UUkFOVAkxCiNlbmRpZgoKLyogV2UgZG8gc3VwcG9ydCB0aGUgSUVDIDU1OSBt
YXRoIGZ1bmN0aW9uYWxpdHksIHJlYWwgYW5kIGNvbXBsZXguICAqLwojZGVmaW5lIF9fU1RE
Q19JRUNfNTU5X18JCTEKI2RlZmluZSBfX1NURENfSUVDXzU1OV9DT01QTEVYX18JMQoKLyog
VGhpcyBtYWNybyBpbmRpY2F0ZXMgdGhhdCB0aGUgaW5zdGFsbGVkIGxpYnJhcnkgaXMgdGhl
IEdOVSBDIExpYnJhcnkuCiAgIEZvciBoaXN0b3JpYyByZWFzb25zIHRoZSB2YWx1ZSBub3cg
aXMgNiBhbmQgdGhpcyB3aWxsIHN0YXkgZnJvbSBub3cKICAgb24uICBUaGUgdXNlIG9mIHRo
aXMgdmFyaWFibGUgaXMgZGVwcmVjYXRlZC4gIFVzZSBfX0dMSUJDX18gYW5kCiAgIF9fR0xJ
QkNfTUlOT1JfXyBub3cgKHNlZSBiZWxvdykgd2hlbiB5b3Ugd2FudCB0byB0ZXN0IGZvciBh
IHNwZWNpZmljCiAgIEdOVSBDIGxpYnJhcnkgdmVyc2lvbiBhbmQgdXNlIHRoZSB2YWx1ZXMg
aW4gPGdudS9saWItbmFtZXMuaD4gdG8gZ2V0CiAgIHRoZSBzb25hbWVzIG9mIHRoZSBzaGFy
ZWQgbGlicmFyaWVzLiAgKi8KI3VuZGVmICBfX0dOVV9MSUJSQVJZX18KI2RlZmluZSBfX0dO
VV9MSUJSQVJZX18gNgoKLyogTWFqb3IgYW5kIG1pbm9yIHZlcnNpb24gbnVtYmVyIG9mIHRo
ZSBHTlUgQyBsaWJyYXJ5IHBhY2thZ2UuICBVc2UKICAgdGhlc2UgbWFjcm9zIHRvIHRlc3Qg
Zm9yIGZlYXR1cmVzIGluIHNwZWNpZmljIHJlbGVhc2VzLiAgKi8KI2RlZmluZQlfX0dMSUJD
X18JMgojZGVmaW5lCV9fR0xJQkNfTUlOT1JfXwkxCgovKiBUaGlzIGlzIGhlcmUgb25seSBi
ZWNhdXNlIGV2ZXJ5IGhlYWRlciBmaWxlIGFscmVhZHkgaW5jbHVkZXMgdGhpcyBvbmUuICAq
LwojaWZuZGVmIF9fQVNTRU1CTEVSX18KIyBpbmNsdWRlIDxzeXMvY2RlZnMuaD4KCi8qIElm
IHdlIGRvbid0IGhhdmUgX19SRURJUkVDVCwgcHJvdG90eXBlcyB3aWxsIGJlIG1pc3Npbmcg
aWYKICAgX19VU0VfRklMRV9PRkZTRVQ2NCBidXQgbm90IF9fVVNFX0xBUkdFRklMRVs2NF0u
ICovCiMgaWYgZGVmaW5lZCBfX1VTRV9GSUxFX09GRlNFVDY0ICYmICFkZWZpbmVkIF9fUkVE
SVJFQ1QKIyAgZGVmaW5lIF9fVVNFX0xBUkdFRklMRQojICBkZWZpbmUgX19VU0VfTEFSR0VG
SUxFNjQKIyBlbmRpZgoKI2VuZGlmCS8qICFBU1NFTUJMRVIgKi8KCi8qIERlY2lkZSB3aGV0
aGVyIHdlIGNhbiBkZWZpbmUgJ2V4dGVybiBpbmxpbmUnIGZ1bmN0aW9ucyBpbiBoZWFkZXJz
LiAgKi8KI2lmIGRlZmluZWQgX19HTlVDX18gJiYgKF9fR05VQ19fID4gMiB8fCBfX0dOVUNf
XyA9PSAyICYmIF9fR05VQ19NSU5PUl9fID49IDcpXAogICAgJiYgZGVmaW5lZCBfX09QVElN
SVpFX18gJiYgIWRlZmluZWQgX19PUFRJTUlaRV9TSVpFX18KIyBkZWZpbmUgX19VU0VfRVhU
RVJOX0lOTElORVMJMQojZW5kaWYKCi8qIFRoaXMgaXMgaGVyZSBvbmx5IGJlY2F1c2UgZXZl
cnkgaGVhZGVyIGZpbGUgYWxyZWFkeSBpbmNsdWRlcyB0aGlzIG9uZS4gICovCiNpZm5kZWYg
X0xJQkMKLyogR2V0IHRoZSBkZWZpbml0aW9ucyBvZiBhbGwgdGhlIGFwcHJvcHJpYXRlIGBf
X3N0dWJfRlVOQ1RJT04nIHN5bWJvbHMuCiAgIDxnbnUvc3R1YnMuaD4gY29udGFpbnMgYCNk
ZWZpbmUgX19zdHViX0ZVTkNUSU9OJyB3aGVuIEZVTkNUSU9OIGlzIGEgc3R1YgogICB3aGlj
aCB3aWxsIGFsd2F5cyByZXR1cm4gZmFpbHVyZSAoYW5kIHNldCBlcnJubyB0byBFTk9TWVMp
LgoKICAgV2UgYXZvaWQgaW5jbHVkaW5nIDxnbnUvc3R1YnMuaD4gd2hlbiBjb21waWxpbmcg
dGhlIEMgbGlicmFyeSBpdHNlbGYgdG8KICAgYXZvaWQgYSBkZXBlbmRlbmN5IGxvb3AuICBz
dHVicy5oIGRlcGVuZHMgb24gZXZlcnkgb2JqZWN0IGZpbGUuICBJZgogICB0aGlzICNpbmNs
dWRlIHdlcmUgZG9uZSBmb3IgdGhlIGxpYnJhcnkgc291cmNlIGNvZGUsIHRoZW4gZXZlcnkg
b2JqZWN0CiAgIGZpbGUgd291bGQgZGVwZW5kIG9uIHN0dWJzLmguICAqLwoKIyBpbmNsdWRl
IDxnbnUvc3R1YnMuaD4KI2VuZGlmCgojZW5kaWYJLyogZmVhdHVyZXMuaCAgKi8KAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi91c3Iv
aW5jbHVkZS9zeXMvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwNDA3NzUAMDAwMzMw
NQAwMDExNjM3ADAwMDAwMDAwMDAwADA3NTY0NTAwNjMyADAxMzE0MgAgNQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1lbmdlbAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAb3NzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAuL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAzMzA1ADAwMTE2MzcAMDAwMDAwMTE1MjcAMDc1Mzc3
MTU0NTQAMDE0NDEyACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAHVzdGFyICAAbWVuZ2VsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvc3MAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8qIENvcHly
aWdodCAoQykgMTk5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4KICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnku
CgogICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogICBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUK
ICAgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAg
IFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsCiAgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAgQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwoKI2lmbmRlZglfU1lTX0NERUZTX0gKI2Rl
ZmluZQlfU1lTX0NERUZTX0gJMQoKLyogV2UgYXJlIGFsbW9zdCBhbHdheXMgaW5jbHVkZWQg
ZnJvbSBmZWF0dXJlcy5oLiAqLwojaWZuZGVmIF9GRUFUVVJFU19ICiNpbmNsdWRlIDxmZWF0
dXJlcy5oPgojZW5kaWYKCi8qIFNvbWUgdXNlciBoZWFkZXIgZmlsZSBtaWdodCBoYXZlIGRl
ZmluZWQgdGhpcyBiZWZvcmUuICAqLwojdW5kZWYJX19QCiN1bmRlZglfX1BNVAoKI2lmZGVm
IF9fR05VQ19fCgovKiBHQ0MgY2FuIGFsd2F5cyBncm9rIHByb3RvdHlwZXMuICBGb3IgQysr
IHByb2dyYW1zIHdlIGFkZCB0aHJvdygpCiAgIHRvIGhlbHAgaXQgb3B0aW1pemUgdGhlIGZ1
bmN0aW9uIGNhbGxzLiAgQnV0IHRoaXMgd29ya3Mgb25seSB3aXRoCiAgIGdjYyAyLjgueCBh
bmQgZWdjcy4gICovCiMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiAoX19HTlVDX18gPj0g
MyB8fCBfX0dOVUNfTUlOT1JfXyA+PSA4KQojICBkZWZpbmUgX19USFJPVwl0aHJvdyAoKQoj
IGVsc2UKIyAgZGVmaW5lIF9fVEhST1cKIyBlbmRpZgojIGRlZmluZSBfX1AoYXJncykJYXJn
cyBfX1RIUk9XCi8qIFRoaXMgbWFjcm8gd2lsbCBiZSB1c2VkIGZvciBmdW5jdGlvbnMgd2hp
Y2ggbWlnaHQgdGFrZSBDKysgY2FsbGJhY2sKICAgZnVuY3Rpb25zLiAgKi8KIyBkZWZpbmUg
X19QTVQoYXJncykJYXJncwojIGRlZmluZSBfX0RPVFMJCSwgLi4uCgojZWxzZQkvKiBOb3Qg
R0NDLiAgKi8KCiMgZGVmaW5lIF9faW5saW5lCQkvKiBObyBpbmxpbmUgZnVuY3Rpb25zLiAg
Ki8KCiMgaWYgKGRlZmluZWQgX19TVERDX18gJiYgX19TVERDX18pIHx8IGRlZmluZWQgX19j
cGx1c3BsdXMKCiMgIGRlZmluZSBfX1AoYXJncykJYXJncwojICBkZWZpbmUgX19QTVQoYXJn
cykJYXJncwojICBkZWZpbmUgX19jb25zdAljb25zdAojICBkZWZpbmUgX19zaWduZWQJc2ln
bmVkCiMgIGRlZmluZSBfX3ZvbGF0aWxlCXZvbGF0aWxlCiMgIGRlZmluZSBfX0RPVFMJLCAu
Li4KCiMgZWxzZQkvKiBOb3QgQU5TSSBDIG9yIEMrKy4gICovCgojICBkZWZpbmUgX19QKGFy
Z3MpCSgpCS8qIE5vIHByb3RvdHlwZXMuICAqLwojICBkZWZpbmUgX19QTVQoYXJncykJKCkK
IyAgZGVmaW5lIF9fY29uc3QJCS8qIE5vIEFOU0kgQyBrZXl3b3Jkcy4gICovCiMgIGRlZmlu
ZSBfX3NpZ25lZAojICBkZWZpbmUgX192b2xhdGlsZQojICBkZWZpbmUgX19ET1RTCgojIGVu
ZGlmCS8qIEFOU0kgQyBvciBDKysuICAqLwoKI2VuZGlmCS8qIEdDQy4gICovCgovKiBGb3Ig
dGhlc2UgdGhpbmdzLCBHQ0MgYmVoYXZlcyB0aGUgQU5TSSB3YXkgbm9ybWFsbHksCiAgIGFu
ZCB0aGUgbm9uLUFOU0kgd2F5IHVuZGVyIC10cmFkaXRpb25hbC4gICovCgojaWYgZGVmaW5l
ZCBfX1NURENfXyAmJiBfX1NURENfXwoKIyBkZWZpbmUgX19DT05DQVQoeCx5KQl4ICMjIHkK
IyBkZWZpbmUgX19TVFJJTkcoeCkJI3gKCi8qIFRoaXMgaXMgbm90IGEgdHlwZWRlZiBzbyBg
Y29uc3QgX19wdHJfdCcgZG9lcyB0aGUgcmlnaHQgdGhpbmcuICAqLwojIGRlZmluZSBfX3B0
cl90IHZvaWQgKgojIGRlZmluZSBfX2xvbmdfZG91YmxlX3QgIGxvbmcgZG91YmxlCgojZWxz
ZQoKIyBkZWZpbmUgX19DT05DQVQoeCx5KQl4LyoqL3kKIyBkZWZpbmUgX19TVFJJTkcoeCkJ
IngiCgojIGRlZmluZSBfX3B0cl90IGNoYXIgKgojIGRlZmluZSBfX2xvbmdfZG91YmxlX3Qg
IGxvbmcgZG91YmxlCgovKiBUaGUgQlNEIGhlYWRlciBmaWxlcyB1c2UgdGhlIEFOU0kga2V5
d29yZHMgdW5tb2RpZmllZCAodGhpcyBtZWFucyB0aGF0CiAgIG9sZCBwcm9ncmFtcyBtYXkg
bG9zZSBpZiB0aGV5IHVzZSB0aGUgbmV3IGtleXdvcmRzIGFzIGlkZW50aWZpZXJzKSwgYnV0
CiAgIHRob3NlIG5hbWVzIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyIC10cmFkaXRpb25hbC4g
IFdlIGRlZmluZSB0aGVtIHRvCiAgIHRoZWlyIF9fIHZlcnNpb25zLCB3aGljaCBhcmUgdGFr
ZW4gY2FyZSBvZiBhYm92ZS4gICovCiNpZmRlZglfX1VTRV9CU0QKIyBkZWZpbmUgY29uc3QJ
CV9fY29uc3QKIyBkZWZpbmUgc2lnbmVkCQlfX3NpZ25lZAojIGRlZmluZSB2b2xhdGlsZQlf
X3ZvbGF0aWxlCiNlbmRpZgoKI2VuZGlmCS8qIF9fU1REQ19fICovCgoKLyogQysrIG5lZWRz
IHRvIGtub3cgdGhhdCB0eXBlcyBhbmQgZGVjbGFyYXRpb25zIGFyZSBDLCBub3QgQysrLiAg
Ki8KI2lmZGVmCV9fY3BsdXNwbHVzCiMgZGVmaW5lIF9fQkVHSU5fREVDTFMJZXh0ZXJuICJD
IiB7CiMgZGVmaW5lIF9fRU5EX0RFQ0xTCX0KI2Vsc2UKIyBkZWZpbmUgX19CRUdJTl9ERUNM
UwojIGRlZmluZSBfX0VORF9ERUNMUwojZW5kaWYKCi8qIF9fYXNtX18gKCJ4eXoiKSBpcyB1
c2VkIHRocm91Z2hvdXQgdGhlIGhlYWRlcnMgdG8gcmVuYW1lIGZ1bmN0aW9ucwogICBhdCB0
aGUgYXNzZW1ibHkgbGFuZ3VhZ2UgbGV2ZWwuICBUaGlzIGlzIHdyYXBwZWQgYnkgdGhlIF9f
UkVESVJFQ1QKICAgbWFjcm8sIGluIG9yZGVyIHRvIHN1cHBvcnQgY29tcGlsZXJzIHRoYXQg
Y2FuIGRvIHRoaXMgc29tZSBvdGhlcgogICB3YXkuICBXaGVuIGNvbXBpbGVycyBkb24ndCBz
dXBwb3J0IGFzbS1uYW1lcyBhdCBhbGwsIHdlIGhhdmUgdG8gZG8KICAgcHJlcHJvY2Vzc29y
IHRyaWNrcyBpbnN0ZWFkICh3aGljaCBkb24ndCBoYXZlIGV4YWN0bHkgdGhlIHJpZ2h0CiAg
IHNlbWFudGljcywgYnV0IGl0J3MgdGhlIGJlc3Qgd2UgY2FuIGRvKS4KCiAgIEV4YW1wbGU6
CiAgIGludCBfX1JFRElSRUNUKHNldHBncnAsIF9fUCgoX19waWRfdCBwaWQsIF9fcGlkX3Qg
cGdycCkpLCBzZXRwZ2lkKTsgKi8KCiNpZiBkZWZpbmVkIF9fR05VQ19fICYmIF9fR05VQ19f
ID49IDIKCiMgZGVmaW5lIF9fUkVESVJFQ1QobmFtZSwgcHJvdG8sIGFsaWFzKSBuYW1lIHBy
b3RvIF9fYXNtX18gKF9fQVNNTkFNRSAoI2FsaWFzKSkKIyBkZWZpbmUgX19BU01OQU1FKGNu
YW1lKSAgX19BU01OQU1FMiAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkKIyBkZWZp
bmUgX19BU01OQU1FMihwcmVmaXgsIGNuYW1lKSBfX1NUUklORyAocHJlZml4KSBjbmFtZQoK
LyoKI2VsaWYgX19TT01FX09USEVSX0NPTVBJTEVSX18KCiMgZGVmaW5lIF9fYXR0cmlidXRl
X18oeHl6KQojIGRlZmluZSBfX1JFRElSRUNUKG5hbWUsIHByb3RvLCBhbGlhcykgbmFtZSBw
cm90bzsgXAoJX1ByYWdtYSgibGV0ICIgI25hbWUgIiA9ICIgI2FsaWFzKQoqLwojZW5kaWYK
Ci8qIEdDQyBoYXMgdmFyaW91cyB1c2VmdWwgZGVjbGFyYXRpb25zIHRoYXQgY2FuIGJlIG1h
ZGUgd2l0aCB0aGUKICAgYF9fYXR0cmlidXRlX18nIHN5bnRheC4gIEFsbCBvZiB0aGUgd2F5
cyB3ZSB1c2UgdGhpcyBkbyBmaW5lIGlmCiAgIHRoZXkgYXJlIG9taXR0ZWQgZm9yIGNvbXBp
bGVycyB0aGF0IGRvbid0IHVuZGVyc3RhbmQgaXQuICovCiNpZiAhZGVmaW5lZCBfX0dOVUNf
XyB8fCBfX0dOVUNfXyA8IDIKCiMgZGVmaW5lIF9fYXR0cmlidXRlX18oeHl6KQkvKiBJZ25v
cmUuICovCgojZW5kaWYKCi8qIEl0IGlzIHBvc3NpYmxlIHRvIGNvbXBpbGUgY29udGFpbmlu
ZyBHQ0MgZXh0ZW5zaW9ucyBldmVuIGlmIEdDQyBpcwogICBydW4gaW4gcGVkYW50aWMgbW9k
ZSBpZiB0aGUgdXNlcyBhcmUgY2FyZWZ1bGx5IG1hcmtlZCB1c2luZyB0aGUKICAgYF9fZXh0
ZW5zaW9uX18nIGtleXdvcmQuICBCdXQgdGhpcyBpcyBub3QgZ2VuZXJhbGx5IGF2YWlsYWJs
ZSBiZWZvcmUKICAgdmVyc2lvbiAyLjguICAqLwojaWYgIWRlZmluZWQgX19HTlVDX18gfHwg
X19HTlVDX18gPCAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fIDwgOCkK
CiMgZGVmaW5lIF9fZXh0ZW5zaW9uX18JCS8qIElnbm9yZSAqLwoKI2VuZGlmCgovKiBfX3Jl
c3RyaWN0IGlzIGtub3duIGluIEVHQ1MgMS4yIGFuZCBhYm92ZS4gKi8KI2lmICFkZWZpbmVk
IF9fR05VQ19fIHx8IF9fR05VQ19fIDwgMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNf
TUlOT1JfXyA8IDkyKQoKIyBkZWZpbmUgX19yZXN0cmljdAkvKiBJZ25vcmUgKi8KCiNlbmRp
ZgoKI2VuZGlmCSAvKiBzeXMvY2RlZnMuaCAqLwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi91c3IvaW5jbHVkZS9nbnUv
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwNDA3NzUAMDAwMzMwNQAwMDExNjM3ADAw
MDAwMDAwMDAwADA3NTY0NTAwNjMyADAxMzExNQAgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1lbmdlbAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAb3NzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAuL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
MDEwMDY0NAAwMDAzMzA1ADAwMTE2MzcAMDAwMDAwMDE3NzUAMDc1Mzc3MTU2MzEAMDE0NDQy
ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy
ICAAbWVuZ2VsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvc3MAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8qIFRoaXMgZmlsZSBpcyBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZC4KICAgSXQgZGVmaW5lcyBhIHN5bWJvbCBgX19zdHViX0ZV
TkNUSU9OJyBmb3IgZWFjaCBmdW5jdGlvbgogICBpbiB0aGUgQyBsaWJyYXJ5IHdoaWNoIGlz
IGEgc3R1YiwgbWVhbmluZyBpdCB3aWxsIGZhaWwKICAgZXZlcnkgdGltZSBjYWxsZWQsIHVz
dWFsbHkgc2V0dGluZyBlcnJubyB0byBFTk9TWVMuICAqLwojZGVmaW5lIF9fc3R1Yl9fX2tl
cm5lbF9jb3NsCiNkZWZpbmUgX19zdHViX19fa2VybmVsX3NpbmwKI2RlZmluZSBfX3N0dWJf
X19rZXJuZWxfdGFubAojZGVmaW5lIF9fc3R1Yl9jaGZsYWdzCiNkZWZpbmUgX19zdHViX2Vy
ZmNsCiNkZWZpbmUgX19zdHViX2VyZmwKI2RlZmluZSBfX3N0dWJfZmF0dGFjaAojZGVmaW5l
IF9fc3R1Yl9mY2hmbGFncwojZGVmaW5lIF9fc3R1Yl9mZGV0YWNoCiNkZWZpbmUgX19zdHVi
X2ZleGVjdmUKI2RlZmluZSBfX3N0dWJfZ2V0Y29udGV4dAojZGVmaW5lIF9fc3R1Yl9nZXRt
c2cKI2RlZmluZSBfX3N0dWJfZ2V0cG1zZwojZGVmaW5lIF9fc3R1Yl9ndHR5CiNkZWZpbmUg
X19zdHViX2owbAojZGVmaW5lIF9fc3R1Yl9qMWwKI2RlZmluZSBfX3N0dWJfam5sCiNkZWZp
bmUgX19zdHViX2xnYW1tYWwKI2RlZmluZSBfX3N0dWJfbGdhbW1hbAojZGVmaW5lIF9fc3R1
Yl9sZ2FtbWFsX3IKI2RlZmluZSBfX3N0dWJfbGdhbW1hbF9yCiNkZWZpbmUgX19zdHViX21h
ZHZpc2UKI2RlZmluZSBfX3N0dWJfbWFrZWNvbnRleHQKI2RlZmluZSBfX3N0dWJfcHV0bXNn
CiNkZWZpbmUgX19zdHViX3B1dHBtc2cKI2RlZmluZSBfX3N0dWJfcmV2b2tlCiNkZWZpbmUg
X19zdHViX3NldGNvbnRleHQKI2RlZmluZSBfX3N0dWJfc2V0bG9naW4KI2RlZmluZSBfX3N0
dWJfc2lncmV0dXJuCiNkZWZpbmUgX19zdHViX3NzdGsKI2RlZmluZSBfX3N0dWJfc3R0eQoj
ZGVmaW5lIF9fc3R1Yl9zd2FwY29udGV4dAojZGVmaW5lIF9fc3R1Yl95MGwKI2RlZmluZSBf
X3N0dWJfeTFsCiNkZWZpbmUgX19zdHViX3lubAoAAAAuL3Vzci9pbmNsdWRlL21hdGguaAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAzMzA1ADAwMTE2MzcAMDAwMDAw
MzIyNDMAMDc1Mzc3MTU0MDcAMDEzNDM1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWVuZ2VsAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAABvc3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAC8qIERlY2xhcmF0aW9ucyBmb3IgbWF0aCBmdW5jdGlvbnMuCiAgIENvcHlyaWdodCAo
QykgMTk5MSw5Miw5Myw5NSw5Niw5Nyw5OCw5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4KICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCgogICBU
aGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogICBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKICAgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoZSBH
TlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsCiAgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAgQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuICAqLwoKLyoKICoJSVNPIEMgU3RhbmRhcmQ6IDQuNSBNQVRI
RU1BVElDUwk8bWF0aC5oPgogKi8KCiNpZm5kZWYJX01BVEhfSAojZGVmaW5lCV9NQVRIX0gJ
MQoKI2luY2x1ZGUgPGZlYXR1cmVzLmg+CgpfX0JFR0lOX0RFQ0xTCgovKiBHZXQgbWFjaGlu
ZS1kZXBlbmRlbnQgSFVHRV9WQUwgdmFsdWUgKHJldHVybmVkIG9uIG92ZXJmbG93KS4KICAg
T24gYWxsIElFRUU3NTQgbWFjaGluZXMsIHRoaXMgaXMgK0luZmluaXR5LiAgKi8KI2luY2x1
ZGUgPGJpdHMvaHVnZV92YWwuaD4KCi8qIEdldCBtYWNoaW5lLWRlcGVuZGVudCBOQU4gdmFs
dWUgKHJldHVybmVkIGZvciBzb21lIGRvbWFpbiBlcnJvcnMpLiAgKi8KI2lmZGVmCSBfX1VT
RV9JU09DOVgKIyBpbmNsdWRlIDxiaXRzL25hbi5oPgojZW5kaWYKLyogR2V0IGdlbmVyYWwg
YW5kIElTTyBDIDlYIHNwZWNpZmljIGluZm9ybWF0aW9uLiAgKi8KI2luY2x1ZGUgPGJpdHMv
bWF0aGRlZi5oPgoKCi8qIFRoZSBmaWxlIDxiaXRzL21hdGhjYWxscy5oPiBjb250YWlucyB0
aGUgcHJvdG90eXBlcyBmb3IgYWxsIHRoZQogICBhY3R1YWwgbWF0aCBmdW5jdGlvbnMuICBU
aGVzZSBtYWNyb3MgYXJlIHVzZWQgZm9yIHRob3NlIHByb3RvdHlwZXMsCiAgIHNvIHdlIGNh
biBlYXNpbHkgZGVjbGFyZSBlYWNoIGZ1bmN0aW9uIGFzIGJvdGggYG5hbWUnIGFuZCBgX19u
YW1lJywKICAgYW5kIGNhbiBkZWNsYXJlIHRoZSBmbG9hdCB2ZXJzaW9ucyBgbmFtZWYnIGFu
ZCBgX19uYW1lZicuICAqLwoKI2RlZmluZSBfX01BVEhDQUxMKGZ1bmN0aW9uLHN1ZmZpeCwg
YXJncykJXAogIF9fTUFUSERFQ0wgKF9NZG91YmxlXyxmdW5jdGlvbixzdWZmaXgsIGFyZ3Mp
CiNkZWZpbmUgX19NQVRIREVDTCh0eXBlLCBmdW5jdGlvbixzdWZmaXgsIGFyZ3MpIFwKICBf
X01BVEhERUNMXzEodHlwZSwgZnVuY3Rpb24sc3VmZml4LCBhcmdzKTsgXAogIF9fTUFUSERF
Q0xfMSh0eXBlLCBfX0NPTkNBVChfXyxmdW5jdGlvbiksc3VmZml4LCBhcmdzKQojZGVmaW5l
IF9fTUFUSENBTExYKGZ1bmN0aW9uLHN1ZmZpeCwgYXJncywgYXR0cmliKQlcCiAgX19NQVRI
REVDTFggKF9NZG91YmxlXyxmdW5jdGlvbixzdWZmaXgsIGFyZ3MsIGF0dHJpYikKI2RlZmlu
ZSBfX01BVEhERUNMWCh0eXBlLCBmdW5jdGlvbixzdWZmaXgsIGFyZ3MsIGF0dHJpYikgXAog
IF9fTUFUSERFQ0xfMSh0eXBlLCBmdW5jdGlvbixzdWZmaXgsIGFyZ3MpIF9fYXR0cmlidXRl
X18gKGF0dHJpYik7IFwKICBfX01BVEhERUNMXzEodHlwZSwgX19DT05DQVQoX18sZnVuY3Rp
b24pLHN1ZmZpeCwgYXJncykgX19hdHRyaWJ1dGVfXyAoYXR0cmliKQojZGVmaW5lIF9fTUFU
SERFQ0xfMSh0eXBlLCBmdW5jdGlvbixzdWZmaXgsIGFyZ3MpIFwKICBleHRlcm4gdHlwZSBf
X01BVEhfUFJFQ05BTUUoZnVuY3Rpb24sc3VmZml4KSBhcmdzCgojZGVmaW5lIF9NZG91Ymxl
XyAJCWRvdWJsZQojZGVmaW5lIF9fTUFUSF9QUkVDTkFNRShuYW1lLHIpCV9fQ09OQ0FUKG5h
bWUscikKI2luY2x1ZGUgPGJpdHMvbWF0aGNhbGxzLmg+CiN1bmRlZglfTWRvdWJsZV8KI3Vu
ZGVmCV9fTUFUSF9QUkVDTkFNRQoKI2lmIGRlZmluZWQgX19VU0VfTUlTQyB8fCBkZWZpbmVk
IF9fVVNFX0lTT0M5WAoKCi8qIEluY2x1ZGUgdGhlIGZpbGUgb2YgZGVjbGFyYXRpb25zIGFn
YWluLCB0aGlzIHRpbWUgdXNpbmcgYGZsb2F0JwogICBpbnN0ZWFkIG9mIGBkb3VibGUnIGFu
ZCBhcHBlbmRpbmcgZiB0byBlYWNoIGZ1bmN0aW9uIG5hbWUuICAqLwoKIyBpZm5kZWYgX01m
bG9hdF8KIyAgZGVmaW5lIF9NZmxvYXRfCQlmbG9hdAojIGVuZGlmCiMgZGVmaW5lIF9NZG91
YmxlXyAJCV9NZmxvYXRfCiMgaWZkZWYgX19TVERDX18KIyAgZGVmaW5lIF9fTUFUSF9QUkVD
TkFNRShuYW1lLHIpIG5hbWUjI2YjI3IKIyBlbHNlCiMgIGRlZmluZSBfX01BVEhfUFJFQ05B
TUUobmFtZSxyKSBuYW1lLyoqL2YvKiovcgojIGVuZGlmCiMgaW5jbHVkZSA8Yml0cy9tYXRo
Y2FsbHMuaD4KIyB1bmRlZglfTWRvdWJsZV8KIyB1bmRlZglfX01BVEhfUFJFQ05BTUUKCiMg
aWYgKF9fU1REQ19fIC0gMCB8fCBfX0dOVUNfXyAtIDApICYmICFkZWZpbmVkIF9fTk9fTE9O
R19ET1VCTEVfTUFUSAovKiBJbmNsdWRlIHRoZSBmaWxlIG9mIGRlY2xhcmF0aW9ucyBhZ2Fp
biwgdGhpcyB0aW1lIHVzaW5nIGBsb25nIGRvdWJsZScKICAgaW5zdGVhZCBvZiBgZG91Ymxl
JyBhbmQgYXBwZW5kaW5nIGwgdG8gZWFjaCBmdW5jdGlvbiBuYW1lLiAgKi8KCiMgIGlmbmRl
ZiBfTWxvbmdfZG91YmxlXwojICAgZGVmaW5lIF9NbG9uZ19kb3VibGVfCWxvbmcgZG91Ymxl
CiMgIGVuZGlmCiMgIGRlZmluZSBfTWRvdWJsZV8gCQlfTWxvbmdfZG91YmxlXwojICBpZmRl
ZiBfX1NURENfXwojICAgZGVmaW5lIF9fTUFUSF9QUkVDTkFNRShuYW1lLHIpIG5hbWUjI2wj
I3IKIyAgZWxzZQojICAgZGVmaW5lIF9fTUFUSF9QUkVDTkFNRShuYW1lLHIpIG5hbWUvKiov
bC8qKi9yCiMgIGVuZGlmCiMgIGluY2x1ZGUgPGJpdHMvbWF0aGNhbGxzLmg+CiMgIHVuZGVm
IF9NZG91YmxlXwojICB1bmRlZiBfX01BVEhfUFJFQ05BTUUKCiMgZW5kaWYgLyogX19TVERD
X18gfHwgX19HTlVDX18gKi8KCiNlbmRpZgkvKiBVc2UgbWlzYyBvciBJU08gQyA5WC4gICov
CiN1bmRlZglfX01BVEhERUNMXzEKI3VuZGVmCV9fTUFUSERFQ0wKI3VuZGVmCV9fTUFUSENB
TEwKCgojaWYgZGVmaW5lZCBfX1VTRV9NSVNDIHx8IGRlZmluZWQgX19VU0VfWE9QRU4gfHwg
ZGVmaW5lZCBfX1VTRV9JU09DOVgKLyogVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGJ5IGBnYW1t
YScgYW5kIGBsZ2FtbWEnLiAgKi8KZXh0ZXJuIGludCBzaWduZ2FtOwojZW5kaWYKCgovKiBJ
U08gQyA5WCBkZWZpbmVzIHNvbWUgZ2VuZXJpYyBtYWNyb3Mgd2hpY2ggd29yayBvbiBhbnkg
ZGF0YSB0eXBlLiAgKi8KI2lmIF9fVVNFX0lTT0M5WAoKLyogR2V0IHRoZSBhcmNoaXRlY3R1
cmUgc3BlY2lmaWMgdmFsdWVzIGRlc2NyaWJpbmcgdGhlIGZsb2F0aW5nLXBvaW50CiAgIGV2
YWx1YXRpb24uICBUaGUgZm9sbG93aW5nIHN5bWJvbHMgd2lsbCBnZXQgZGVmaW5lZDoKCiAg
ICBmbG9hdF90CWZsb2F0aW5nLXBvaW50IHR5cGUgYXQgbGVhc3QgYXMgd2lkZSBhcyBgZmxv
YXQnIHVzZWQKCQl0byBldmFsdWF0ZSBgZmxvYXQnIGV4cHJlc3Npb25zCiAgICBkb3VibGVf
dAlmbG9hdGluZy1wb2ludCB0eXBlIGF0IGxlYXN0IGFzIHdpZGUgYXMgYGRvdWJsZScgdXNl
ZAoJCXRvIGV2YWx1YXRlIGBkb3VibGUnIGV4cHJlc3Npb25zCgogICAgRkxUX0VWQUxfTUVU
SE9ECgkJRGVmaW5lZCB0bwoJCSAgMAlpZiBgZmxvYXRfdCcgaXMgYGZsb2F0JyBhbmQgYGRv
dWJsZV90JyBpcyBgZG91YmxlJwoJCSAgMQlpZiBgZmxvYXRfdCcgYW5kIGBkb3VibGVfdCcg
YXJlIGBkb3VibGUnCgkJICAyCWlmIGBmbG9hdF90JyBhbmQgYGRvdWJsZV90JyBhcmUgYGxv
bmcgZG91YmxlJwoJCSAgZWxzZQlgZmxvYXRfdCcgYW5kIGBkb3VibGVfdCcgYXJlIHVuc3Bl
Y2lmaWVkCgogICAgSU5GSU5JVFkJcmVwcmVzZW50YXRpb24gb2YgdGhlIGluZmluaXR5IHZh
bHVlIG9mIHR5cGUgYGZsb2F0JwoKICAgIEZQX0ZBU1RfRk1BCiAgICBGUF9GQVNUX0ZNQUYK
ICAgIEZQX0ZBU1RfRk1BTAoJCUlmIGRlZmluZWQgaXQgaW5kaWNhdGVzIHRoYXQgdGhlIGBm
bWEnIGZ1bmN0aW9uCgkJZ2VuZXJhbGx5IGV4ZWN1dGVzIGFib3V0IGFzIGZhc3QgYXMgYSBt
dWx0aXBseSBhbmQgYW4gYWRkLgoJCVRoaXMgbWFjcm8gaXMgZGVmaW5lZCBvbmx5IGlmZiB0
aGUgYGZtYScgZnVuY3Rpb24gaXMKCQlpbXBsZW1lbnRlZCBkaXJlY3RseSB3aXRoIGEgaGFy
ZHdhcmUgbXVsdGlwbHktYWRkIGluc3RydWN0aW9ucy4KCiAgICBGUF9JTE9HQjAJRXhwYW5k
cyB0byBhIHZhbHVlIHJldHVybmVkIGJ5IGBpbG9nYiAoMC4wKScuCiAgICBGUF9JTE9HQk5B
TglFeHBhbmRzIHRvIGEgdmFsdWUgcmV0dXJuZWQgYnkgYGlsb2diIChOQU4pJy4KCiAgICBE
RUNJTUFMX0RJRwlOdW1iZXIgb2YgZGVjaW1hbCBkaWdpdHMgc3VwcG9ydGVkIGJ5IGNvbnZl
cnNpb24gYmV0d2VlbgoJCWRlY2ltYWwgYW5kIGFsbCBpbnRlcm5hbCBmbG9hdGluZy1wb2lu
dCBmb3JtYXRzLgoKKi8KCi8qIEFsbCBmbG9hdGluZy1wb2ludCBudW1iZXJzIGNhbiBiZSBw
dXQgaW4gb25lIG9mIHRoZXNlIGNhdGVnb3JpZXMuICAqLwplbnVtCiAgewogICAgRlBfTkFO
LAojIGRlZmluZSBGUF9OQU4gRlBfTkFOCiAgICBGUF9JTkZJTklURSwKIyBkZWZpbmUgRlBf
SU5GSU5JVEUgRlBfSU5GSU5JVEUKICAgIEZQX1pFUk8sCiMgZGVmaW5lIEZQX1pFUk8gRlBf
WkVSTwogICAgRlBfU1VCTk9STUFMLAojIGRlZmluZSBGUF9TVUJOT1JNQUwgRlBfU1VCTk9S
TUFMCiAgICBGUF9OT1JNQUwKIyBkZWZpbmUgRlBfTk9STUFMIEZQX05PUk1BTAogIH07Cgov
KiBSZXR1cm4gbnVtYmVyIG9mIGNsYXNzaWZpY2F0aW9uIGFwcHJvcHJpYXRlIGZvciBYLiAg
Ki8KIyBpZmRlZiBfX05PX0xPTkdfRE9VQkxFX01BVEgKIyAgZGVmaW5lIGZwY2xhc3NpZnko
eCkgXAogICAgIChzaXplb2YgKHgpID09IHNpemVvZiAoZmxvYXQpID8gX19mcGNsYXNzaWZ5
ZiAoeCkgOiBfX2ZwY2xhc3NpZnkgKHgpKQojIGVsc2UKIyAgZGVmaW5lIGZwY2xhc3NpZnko
eCkgXAogICAgIChzaXplb2YgKHgpID09IHNpemVvZiAoZmxvYXQpID8JCQkJCSAgICAgIFwK
ICAgICAgICBfX2ZwY2xhc3NpZnlmICh4KQkJCQkJCSAgICAgIFwKICAgICAgOiBzaXplb2Yg
KHgpID09IHNpemVvZiAoZG91YmxlKSA/CQkJCQkgICAgICBcCiAgICAgICAgX19mcGNsYXNz
aWZ5ICh4KSA6IF9fZnBjbGFzc2lmeWwgKHgpKQojIGVuZGlmCgovKiBSZXR1cm4gbm9uemVy
byB2YWx1ZSBpZiBzaWduIG9mIFggaXMgbmVnYXRpdmUuICAqLwojIGlmZGVmIF9fTk9fTE9O
R19ET1VCTEVfTUFUSAojICBkZWZpbmUgc2lnbmJpdCh4KSBcCiAgICAgKHNpemVvZiAoeCkg
PT0gc2l6ZW9mIChmbG9hdCkgPyBfX3NpZ25iaXRmICh4KSA6IF9fc2lnbmJpdCAoeCkpCiMg
ZWxzZQojICBkZWZpbmUgc2lnbmJpdCh4KSBcCiAgICAgKHNpemVvZiAoeCkgPT0gc2l6ZW9m
IChmbG9hdCkgPwkJCQkJICAgICAgXAogICAgICAgIF9fc2lnbmJpdGYgKHgpCQkJCQkJCSAg
ICAgIFwKICAgICAgOiBzaXplb2YgKHgpID09IHNpemVvZiAoZG91YmxlKSA/CQkJCQkgICAg
ICBcCiAgICAgICAgX19zaWduYml0ICh4KSA6IF9fc2lnbmJpdGwgKHgpKQojIGVuZGlmCgov
KiBSZXR1cm4gbm9uemVybyB2YWx1ZSBpZiBYIGlzIG5vdCArLUluZiBvciBOYU4uICAqLwoj
IGlmZGVmIF9fTk9fTE9OR19ET1VCTEVfTUFUSAojICBkZWZpbmUgaXNmaW5pdGUoeCkgXAog
ICAgIChzaXplb2YgKHgpID09IHNpemVvZiAoZmxvYXQpID8gX19maW5pdGVmICh4KSA6IF9f
ZmluaXRlICh4KSkKIyBlbHNlCiMgIGRlZmluZSBpc2Zpbml0ZSh4KSBcCiAgICAgKHNpemVv
ZiAoeCkgPT0gc2l6ZW9mIChmbG9hdCkgPwkJCQkJICAgICAgXAogICAgICAgIF9fZmluaXRl
ZiAoeCkJCQkJCQkJICAgICAgXAogICAgICA6IHNpemVvZiAoeCkgPT0gc2l6ZW9mIChkb3Vi
bGUpID8JCQkJCSAgICAgIFwKICAgICAgICBfX2Zpbml0ZSAoeCkgOiBfX2Zpbml0ZWwgKHgp
KQojIGVuZGlmCgovKiBSZXR1cm4gbm9uemVybyB2YWx1ZSBpZiBYIGlzIG5laXRoZXIgemVy
bywgc3Vibm9ybWFsLCBJbmYsIG5vciBOYU4uICAqLwojIGRlZmluZSBpc25vcm1hbCh4KSAo
ZnBjbGFzc2lmeSAoeCkgPT0gRlBfTk9STUFMKQoKLyogUmV0dXJuIG5vbnplcm8gdmFsdWUg
aWYgWCBpcyBhIE5hTi4gIFdlIGNvdWxkIHVzZSBgZnBjbGFzc2lmeScgYnV0CiAgIHdlIGFs
cmVhZHkgaGF2ZSB0aGlzIGZ1bmN0aW9ucyBgX19pc25hbicgYW5kIGl0IGlzIGZhc3Rlci4g
ICovCiMgaWZkZWYgX19OT19MT05HX0RPVUJMRV9NQVRICiMgIGRlZmluZSBpc25hbih4KSBc
CiAgICAgKHNpemVvZiAoeCkgPT0gc2l6ZW9mIChmbG9hdCkgPyBfX2lzbmFuZiAoeCkgOiBf
X2lzbmFuICh4KSkKIyBlbHNlCiMgIGRlZmluZSBpc25hbih4KSBcCiAgICAgKHNpemVvZiAo
eCkgPT0gc2l6ZW9mIChmbG9hdCkgPwkJCQkJICAgICAgXAogICAgICAgIF9faXNuYW5mICh4
KQkJCQkJCQkgICAgICBcCiAgICAgIDogc2l6ZW9mICh4KSA9PSBzaXplb2YgKGRvdWJsZSkg
PwkJCQkJICAgICAgXAogICAgICAgIF9faXNuYW4gKHgpIDogX19pc25hbmwgKHgpKQojIGVu
ZGlmCgovKiBSZXR1cm4gbm9uemVybyB2YWx1ZSBpcyBYIGlzIHBvc2l0aXZlIG9yIG5lZ2F0
aXZlIGluZmluaXR5LiAgKi8KIyBpZmRlZiBfX05PX0xPTkdfRE9VQkxFX01BVEgKIyAgZGVm
aW5lIGlzaW5mKHgpIFwKICAgICAoc2l6ZW9mICh4KSA9PSBzaXplb2YgKGZsb2F0KSA/IF9f
aXNpbmZmICh4KSA6IF9faXNpbmYgKHgpKQojIGVsc2UKIyAgZGVmaW5lIGlzaW5mKHgpIFwK
ICAgICAoc2l6ZW9mICh4KSA9PSBzaXplb2YgKGZsb2F0KSA/CQkJCQkgICAgICBcCiAgICAg
ICAgX19pc2luZmYgKHgpCQkJCQkJCSAgICAgIFwKICAgICAgOiBzaXplb2YgKHgpID09IHNp
emVvZiAoZG91YmxlKSA/CQkJCQkgICAgICBcCiAgICAgICAgX19pc2luZiAoeCkgOiBfX2lz
aW5mbCAoeCkpCiMgZW5kaWYKCiNlbmRpZiAvKiBVc2UgSVNPIEMgOVguICAqLwoKI2lmZGVm
CV9fVVNFX01JU0MKLyogU3VwcG9ydCBmb3IgdmFyaW91cyBkaWZmZXJlbnQgc3RhbmRhcmQg
ZXJyb3IgaGFuZGxpbmcgYmVoYXZpb3JzLiAgKi8KdHlwZWRlZiBlbnVtCnsKICBfSUVFRV8g
PSAtMSwJLyogQWNjb3JkaW5nIHRvIElFRUUgNzU0L0lFRUUgODU0LiAgKi8KICBfU1ZJRF8s
CS8qIEFjY29yZGluZyB0byBTeXN0ZW0gViwgcmVsZWFzZSA0LiAgKi8KICBfWE9QRU5fLAkv
KiBOb3dhZGF5cyBhbHNvIFVuaXg5OC4gICovCiAgX1BPU0lYXywKICBfSVNPQ18JLyogQWN0
dWFsbHkgdGhpcyBpcyBJU08gQyA5WC4gICovCn0gX0xJQl9WRVJTSU9OX1RZUEU7CgovKiBU
aGlzIHZhcmlhYmxlIGNhbiBiZSBjaGFuZ2VkIGF0IHJ1bi10aW1lIHRvIGFueSBvZiB0aGUg
dmFsdWVzIGFib3ZlIHRvCiAgIGFmZmVjdCBmbG9hdGluZyBwb2ludCBlcnJvciBoYW5kbGlu
ZyBiZWhhdmlvciAoaXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5CiAgIHRvIGNoYW5nZSB0aGUg
aGFyZHdhcmUgRlBVIGV4Y2VwdGlvbiBzZXR0aW5ncykuICAqLwpleHRlcm4gX0xJQl9WRVJT
SU9OX1RZUEUgX0xJQl9WRVJTSU9OOwojZW5kaWYKCgojaWZkZWYgX19VU0VfU1ZJRAovKiBJ
biBTVklEIGVycm9yIGhhbmRsaW5nLCBgbWF0aGVycicgaXMgY2FsbGVkIHdpdGggdGhpcyBk
ZXNjcmlwdGlvbgogICBvZiB0aGUgZXhjZXB0aW9uYWwgY29uZGl0aW9uLgoKICAgV2UgaGF2
ZSBhIHByb2JsZW0gd2hlbiB1c2luZyBDKysgc2luY2UgYGV4Y2VwdGlvbicgaXMgYSByZXNl
cnZlZAogICBuYW1lIGluIEMrKy4gICovCiMgaWZkZWYgX19jcGx1c3BsdXMKc3RydWN0IF9f
ZXhjZXB0aW9uCiMgZWxzZQpzdHJ1Y3QgZXhjZXB0aW9uCiMgZW5kaWYKICB7CiAgICBpbnQg
dHlwZTsKICAgIGNoYXIgKm5hbWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcy
OwogICAgZG91YmxlIHJldHZhbDsKICB9OwoKIyBpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4g
aW50IG1hdGhlcnIgX19QICgoc3RydWN0IF9fZXhjZXB0aW9uICpfX2V4YykpOwojIGVsc2UK
ZXh0ZXJuIGludCBtYXRoZXJyIF9fUCAoKHN0cnVjdCBleGNlcHRpb24gKl9fZXhjKSk7CiMg
ZW5kaWYKCiMgZGVmaW5lIFhfVExPU1MJMS40MTQ4NDc1NTA0MDU2ODgwMDAwMGUrMTYKCi8q
IFR5cGVzIG9mIGV4Y2VwdGlvbnMgaW4gdGhlIGB0eXBlJyBmaWVsZC4gICovCiMgZGVmaW5l
IERPTUFJTgkJMQojIGRlZmluZSBTSU5HCQkyCiMgZGVmaW5lIE9WRVJGTE9XCTMKIyBkZWZp
bmUgVU5ERVJGTE9XCTQKIyBkZWZpbmUgVExPU1MJCTUKIyBkZWZpbmUgUExPU1MJCTYKCi8q
IFNWSUQgbW9kZSBzcGVjaWZpZXMgcmV0dXJuaW5nIHRoaXMgbGFyZ2UgdmFsdWUgaW5zdGVh
ZCBvZiBpbmZpbml0eS4gICovCiMgZGVmaW5lIEhVR0UJCUZMVF9NQVgKIyBpbmNsdWRlIDxm
bG9hdC5oPgkJLyogRGVmaW5lcyBGTFRfTUFYLiAgKi8KCiNlbHNlCS8qICFTVklEICovCgoj
IGlmZGVmIF9fVVNFX1hPUEVOCi8qIFgvT3BlbiB3YW50cyBhbm90aGVyIHN0cmFuZ2UgY29u
c3RhbnQuICAqLwojICBkZWZpbmUgTUFYRkxPQVQJRkxUX01BWAojICBpbmNsdWRlIDxmbG9h
dC5oPgojIGVuZGlmCgojZW5kaWYJLyogU1ZJRCAqLwoKCi8qIFNvbWUgdXNlZnVsIGNvbnN0
YW50cy4gICovCiNpZiBkZWZpbmVkIF9fVVNFX0JTRCB8fCBkZWZpbmVkIF9fVVNFX1hPUEVO
CiMgZGVmaW5lIE1fRQkJMi43MTgyODE4Mjg0NTkwNDUyMzU0CS8qIGUgKi8KIyBkZWZpbmUg
TV9MT0cyRQkxLjQ0MjY5NTA0MDg4ODk2MzQwNzQJLyogbG9nXzIgZSAqLwojIGRlZmluZSBN
X0xPRzEwRQkwLjQzNDI5NDQ4MTkwMzI1MTgyNzY1CS8qIGxvZ18xMCBlICovCiMgZGVmaW5l
IE1fTE4yCQkwLjY5MzE0NzE4MDU1OTk0NTMwOTQyCS8qIGxvZ19lIDIgKi8KIyBkZWZpbmUg
TV9MTjEwCQkyLjMwMjU4NTA5Mjk5NDA0NTY4NDAyCS8qIGxvZ19lIDEwICovCiMgZGVmaW5l
IE1fUEkJCTMuMTQxNTkyNjUzNTg5NzkzMjM4NDYJLyogcGkgKi8KIyBkZWZpbmUgTV9QSV8y
CQkxLjU3MDc5NjMyNjc5NDg5NjYxOTIzCS8qIHBpLzIgKi8KIyBkZWZpbmUgTV9QSV80CQkw
Ljc4NTM5ODE2MzM5NzQ0ODMwOTYyCS8qIHBpLzQgKi8KIyBkZWZpbmUgTV8xX1BJCQkwLjMx
ODMwOTg4NjE4Mzc5MDY3MTU0CS8qIDEvcGkgKi8KIyBkZWZpbmUgTV8yX1BJCQkwLjYzNjYx
OTc3MjM2NzU4MTM0MzA4CS8qIDIvcGkgKi8KIyBkZWZpbmUgTV8yX1NRUlRQSQkxLjEyODM3
OTE2NzA5NTUxMjU3MzkwCS8qIDIvc3FydChwaSkgKi8KIyBkZWZpbmUgTV9TUVJUMgkxLjQx
NDIxMzU2MjM3MzA5NTA0ODgwCS8qIHNxcnQoMikgKi8KIyBkZWZpbmUgTV9TUVJUMV8yCTAu
NzA3MTA2NzgxMTg2NTQ3NTI0NDAJLyogMS9zcXJ0KDIpICovCiNlbmRpZgoKLyogVGhlIGFi
b3ZlIGNvbnN0YW50cyBhcmUgbm90IGFkZXF1YXRlIGZvciBjb21wdXRhdGlvbiB1c2luZyBg
bG9uZyBkb3VibGUncy4KICAgVGhlcmVmb3JlIHdlIHByb3ZpZGUgYXMgYW4gZXh0ZW5zaW9u
IGNvbnN0YW50cyB3aXRoIHNpbWlsYXIgbmFtZXMgYXMgYQogICBHTlUgZXh0ZW5zaW9uLiAg
UHJvdmlkZSBlbm91Z2ggZGlnaXRzIGZvciB0aGUgMTI4LWJpdCBJRUVFIHF1YWQuICAqLwoj
aWZkZWYgX19VU0VfR05VCiMgZGVmaW5lIE1fRWwJCTIuNzE4MjgxODI4NDU5MDQ1MjM1MzYw
Mjg3NDcxMzUyNjYyNUwgIC8qIGUgKi8KIyBkZWZpbmUgTV9MT0cyRWwJMS40NDI2OTUwNDA4
ODg5NjM0MDczNTk5MjQ2ODEwMDE4OTIyTCAgLyogbG9nXzIgZSAqLwojIGRlZmluZSBNX0xP
RzEwRWwJMC40MzQyOTQ0ODE5MDMyNTE4Mjc2NTExMjg5MTg5MTY2MDUxTCAgLyogbG9nXzEw
IGUgKi8KIyBkZWZpbmUgTV9MTjJsCQkwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEyMTQ1
ODE3NjZMICAvKiBsb2dfZSAyICovCiMgZGVmaW5lIE1fTE4xMGwJMi4zMDI1ODUwOTI5OTQw
NDU2ODQwMTc5OTE0NTQ2ODQzNjQyTCAgLyogbG9nX2UgMTAgKi8KIyBkZWZpbmUgTV9QSWwJ
CTMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTAyOUwgIC8qIHBpICovCiMgZGVm
aW5lIE1fUElfMmwJMS41NzA3OTYzMjY3OTQ4OTY2MTkyMzEzMjE2OTE2Mzk3NTE0TCAgLyog
cGkvMiAqLwojIGRlZmluZSBNX1BJXzRsCTAuNzg1Mzk4MTYzMzk3NDQ4MzA5NjE1NjYwODQ1
ODE5ODc1N0wgIC8qIHBpLzQgKi8KIyBkZWZpbmUgTV8xX1BJbAkwLjMxODMwOTg4NjE4Mzc5
MDY3MTUzNzc2NzUyNjc0NTAyODdMICAvKiAxL3BpICovCiMgZGVmaW5lIE1fMl9QSWwJMC42
MzY2MTk3NzIzNjc1ODEzNDMwNzU1MzUwNTM0OTAwNTc0TCAgLyogMi9waSAqLwojIGRlZmlu
ZSBNXzJfU1FSVFBJbAkxLjEyODM3OTE2NzA5NTUxMjU3Mzg5NjE1ODkwMzEyMTU0NTJMICAv
KiAyL3NxcnQocGkpICovCiMgZGVmaW5lIE1fU1FSVDJsCTEuNDE0MjEzNTYyMzczMDk1MDQ4
ODAxNjg4NzI0MjA5Njk4MUwgIC8qIHNxcnQoMikgKi8KIyBkZWZpbmUgTV9TUVJUMV8ybAkw
LjcwNzEwNjc4MTE4NjU0NzUyNDQwMDg0NDM2MjEwNDg0OTBMICAvKiAxL3NxcnQoMikgKi8K
I2VuZGlmCgoKLyogV2hlbiBjb21waWxpbmcgaW4gc3RyaWN0IElTTyBDIGNvbXBhdGlibGUg
bW9kZSB3ZSBtdXN0IG5vdCB1c2UgdGhlCiAgIGlubGluZSBmdW5jdGlvbnMgc2luY2UgdGhl
eSwgYW1vbmcgb3RoZXIgdGhpbmdzLCBkbyBub3Qgc2V0IHRoZQogICBgZXJybm8nIHZhcmlh
YmxlIGNvcnJlY3RseS4gICovCiNpZiBkZWZpbmVkIF9fU1RSSUNUX0FOU0lfXyAmJiAhZGVm
aW5lZCBfX05PX01BVEhfSU5MSU5FUwojIGRlZmluZSBfX05PX01BVEhfSU5MSU5FUwkxCiNl
bmRpZgoKLyogR2V0IG1hY2hpbmUtZGVwZW5kZW50IGlubGluZSB2ZXJzaW9ucyAoaWYgdGhl
cmUgYXJlIGFueSkuICAqLwojaWZkZWYgX19VU0VfRVhURVJOX0lOTElORVMKIyBpbmNsdWRl
IDxiaXRzL21hdGhpbmxpbmUuaD4KI2VuZGlmCgoKI2lmIF9fVVNFX0lTT0M5WAovKiBJU08g
QyA5WCBkZWZpbmVzIHNvbWUgbWFjcm9zIHRvIGNvbXBhcmUgbnVtYmVyIHdoaWxlIHRha2lu
ZyBjYXJlCiAgIGZvciB1bm9yZGVyZWQgbnVtYmVycy4gIFNpbmNlIG1hbnkgRlBVcyBwcm92
aWRlIHNwZWNpYWwKICAgaW5zdHJ1Y3Rpb25zIHRvIHN1cHBvcnQgdGhlc2Ugb3BlcmF0aW9u
cyBhbmQgdGhlc2UgdGVzdHMgYXJlCiAgIGRlZmluZWQgaW4gPGJpdHMvbWF0aGlubGluZS5o
Piwgd2UgZGVmaW5lIHRoZSBnZW5lcmljIG1hY3JvcyBhdAogICB0aGlzIGxhdGUgcG9pbnQg
YW5kIG9ubHkgaWYgdGhleSBhcmUgbm90IGRlZmluZWQgeWV0LiAgKi8KCi8qIFJldHVybiBu
b256ZXJvIHZhbHVlIGlmIFggaXMgZ3JlYXRlciB0aGFuIFkuICAqLwojIGlmbmRlZiBpc2dy
ZWF0ZXIKIyAgZGVmaW5lIGlzZ3JlYXRlcih4LCB5KSBcCiAgKF9fZXh0ZW5zaW9uX18JCQkJ
CQkJICAgICAgXAogICAoeyBfX3R5cGVvZl9fKHgpIF9feCA9ICh4KTsgX190eXBlb2ZfXyh5
KSBfX3kgPSAoeSk7CQkJICAgICAgXAogICAgICAhaXN1bm9yZGVyZWQgKF9feCwgX195KSAm
JiBfX3ggPiBfX3k7IH0pKQojIGVuZGlmCgovKiBSZXR1cm4gbm9uemVybyB2YWx1ZSBpZiBY
IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBZLiAgKi8KIyBpZm5kZWYgaXNncmVhdGVy
ZXF1YWwKIyAgZGVmaW5lIGlzZ3JlYXRlcmVxdWFsKHgsIHkpIFwKICAoX19leHRlbnNpb25f
XwkJCQkJCQkgICAgICBcCiAgICh7IF9fdHlwZW9mX18oeCkgX194ID0gKHgpOyBfX3R5cGVv
Zl9fKHkpIF9feSA9ICh5KTsJCQkgICAgICBcCiAgICAgICFpc3Vub3JkZXJlZCAoX194LCBf
X3kpICYmIF9feCA+PSBfX3k7IH0pKQojIGVuZGlmCgovKiBSZXR1cm4gbm9uemVybyB2YWx1
ZSBpZiBYIGlzIGxlc3MgdGhhbiBZLiAgKi8KIyBpZm5kZWYgaXNsZXNzCiMgIGRlZmluZSBp
c2xlc3MoeCwgeSkgXAogIChfX2V4dGVuc2lvbl9fCQkJCQkJCSAgICAgIFwKICAgKHsgX190
eXBlb2ZfXyh4KSBfX3ggPSAoeCk7IF9fdHlwZW9mX18oeSkgX195ID0gKHkpOwkJCSAgICAg
IFwKICAgICAgIWlzdW5vcmRlcmVkIChfX3gsIF9feSkgJiYgX194IDwgX195OyB9KSkKIyBl
bmRpZgoKLyogUmV0dXJuIG5vbnplcm8gdmFsdWUgaWYgWCBpcyBsZXNzIHRoYW4gb3IgZXF1
YWwgdG8gWS4gICovCiMgaWZuZGVmIGlzbGVzc2VxdWFsCiMgIGRlZmluZSBpc2xlc3NlcXVh
bCh4LCB5KSBcCiAgKF9fZXh0ZW5zaW9uX18JCQkJCQkJICAgICAgXAogICAoeyBfX3R5cGVv
Zl9fKHgpIF9feCA9ICh4KTsgX190eXBlb2ZfXyh5KSBfX3kgPSAoeSk7CQkJICAgICAgXAog
ICAgICAhaXN1bm9yZGVyZWQgKF9feCwgX195KSAmJiBfX3ggPD0gX195OyB9KSkKIyBlbmRp
ZgoKLyogUmV0dXJuIG5vbnplcm8gdmFsdWUgaWYgZWl0aGVyIFggaXMgbGVzcyB0aGFuIFkg
b3IgWSBpcyBsZXNzIHRoYW4gWC4gICovCiMgaWZuZGVmIGlzbGVzc2dyZWF0ZXIKIyAgZGVm
aW5lIGlzbGVzc2dyZWF0ZXIoeCwgeSkgXAogIChfX2V4dGVuc2lvbl9fCQkJCQkJCSAgICAg
IFwKICAgKHsgX190eXBlb2ZfXyh4KSBfX3ggPSAoeCk7IF9fdHlwZW9mX18oeSkgX195ID0g
KHkpOwkJCSAgICAgIFwKICAgICAgIWlzdW5vcmRlcmVkIChfX3gsIF9feSkgJiYgKF9feCA8
IF9feSB8fCBfX3kgPCBfX3gpOyB9KSkKIyBlbmRpZgoKLyogUmV0dXJuIG5vbnplcm8gdmFs
dWUgaWYgYXJndW1lbnRzIGFyZSB1bm9yZGVyZWQuICAqLwojIGlmbmRlZiBpc3Vub3JkZXJl
ZAojICBkZWZpbmUgaXN1bm9yZGVyZWQodSwgdikgXAogIChfX2V4dGVuc2lvbl9fCQkJCQkJ
CSAgICAgIFwKICAgKHsgX190eXBlb2ZfXyh1KSBfX3UgPSAodSk7IF9fdHlwZW9mX18odikg
X192ID0gKHYpOwkJCSAgICAgIFwKICAgICAgZnBjbGFzc2lmeSAoX191KSA9PSBGUF9OQU4g
fHwgZnBjbGFzc2lmeSAoX192KSA9PSBGUF9OQU47IH0pKQojIGVuZGlmCgojZW5kaWYKCl9f
RU5EX0RFQ0xTCgoKI2VuZGlmIC8qIG1hdGguaCAgKi8KAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAC4vdXNyL2luY2x1ZGUvYml0cy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDQw
Nzc1ADAwMDMzMDUAMDAxMTYzNwAwMDAwMDAwMDAwMAAwNzU2NDUwMTMyMQAwMTMyNjEAIDUA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABt
ZW5nZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9zcwAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi91c3IvaW5jbHVkZS9iaXRzL2h1Z2Vf
dmFsLmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMzMwNQAwMDExNjM3ADAwMDAwMDA0
NjIyADA3NTM3NzE1NDA3ADAxNTIzNwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1lbmdlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAb3NzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAvKiBgSFVHRV9WQUwnIGNvbnN0YW50cyBmb3IgaXg4NiAod2hlcmUgaXQgaXMgaW5maW5p
dHkpLgogICBVc2VkIGJ5IDxzdGRsaWIuaD4gYW5kIDxtYXRoLmg+IGZ1bmN0aW9ucyBmb3Ig
b3ZlcmZsb3cuCiAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5NSwgMTk5NiwgMTk5NyBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEdOVSBDIExpYnJhcnkuCgogICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwog
ICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl
cnNpb24gMiBvZiB0aGUKICAgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KCiAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCiAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgoKICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsCiAgIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1
aXRlIDMzMCwKICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwoKI2lmbmRlZiBf
TUFUSF9ICiMgZXJyb3IgIk5ldmVyIHVzZSA8Yml0cy9odWdlX3ZhbC5oPiBkaXJlY3RseTsg
aW5jbHVkZSA8bWF0aC5oPiBpbnN0ZWFkLiIKI2VuZGlmCgojaW5jbHVkZSA8ZmVhdHVyZXMu
aD4KCi8qIElFRUUgcG9zaXRpdmUgaW5maW5pdHkgKC1IVUdFX1ZBTCBpcyBuZWdhdGl2ZSBp
bmZpbml0eSkuICAqLwoKI2RlZmluZQlfX0hVR0VfVkFMX2J5dGVzCXsgMCwgMCwgMCwgMCwg
MCwgMCwgMHhmMCwgMHg3ZiB9CgojZGVmaW5lIF9faHVnZV92YWxfdAl1bmlvbiB7IHVuc2ln
bmVkIGNoYXIgX19jWzhdOyBkb3VibGUgX19kOyB9CiNpZmRlZglfX0dOVUNfXwojIGRlZmlu
ZSBIVUdFX1ZBTAkoX19leHRlbnNpb25fXyBcCgkJCSAoKF9faHVnZV92YWxfdCkgeyBfX2M6
IF9fSFVHRV9WQUxfYnl0ZXMgfSkuX19kKQojZWxzZQkvKiBOb3QgR0NDLiAgKi8Kc3RhdGlj
IF9faHVnZV92YWxfdCBfX2h1Z2VfdmFsID0geyBfX0hVR0VfVkFMX2J5dGVzIH07CiMgZGVm
aW5lIEhVR0VfVkFMCShfX2h1Z2VfdmFsLl9fZCkKI2VuZGlmCS8qIEdDQy4gICovCgoKLyog
SVNPIEMgOVggZXh0ZW5zaW9uczogKGZsb2F0KSBIVUdFX1ZBTEYgYW5kIChsb25nIGRvdWJs
ZSkgSFVHRV9WQUxMLiAgKi8KCiNpZmRlZiBfX1VTRV9JU09DOVgKCiMgZGVmaW5lIF9fSFVH
RV9WQUxGX2J5dGVzCXsgMCwgMCwgMHg4MCwgMHg3ZiB9CgojIGRlZmluZSBfX2h1Z2VfdmFs
Zl90CXVuaW9uIHsgdW5zaWduZWQgY2hhciBfX2NbNF07IGZsb2F0IF9fZjsgfQojIGlmZGVm
CV9fR05VQ19fCiMgIGRlZmluZSBIVUdFX1ZBTEYJKF9fZXh0ZW5zaW9uX18gXAoJCQkgKChf
X2h1Z2VfdmFsZl90KSB7IF9fYzogX19IVUdFX1ZBTEZfYnl0ZXMgfSkuX19mKQojIGVsc2UJ
LyogTm90IEdDQy4gICovCnN0YXRpYyBfX2h1Z2VfdmFsZl90IF9faHVnZV92YWxmID0geyBf
X0hVR0VfVkFMRl9ieXRlcyB9OwojICBkZWZpbmUgSFVHRV9WQUxGCShfX2h1Z2VfdmFsZi5f
X2YpCiMgZW5kaWYJLyogR0NDLiAgKi8KCgojIGRlZmluZSBfX0hVR0VfVkFMTF9ieXRlcwl7
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB4ODAsIDB4ZmYsIDB4N2YsIDAsIDAgfQoKIyBkZWZp
bmUgX19odWdlX3ZhbGxfdAl1bmlvbiB7IHVuc2lnbmVkIGNoYXIgX19jWzEyXTsgbG9uZyBk
b3VibGUgX19sZDsgfQojIGlmZGVmCV9fR05VQ19fCiMgIGRlZmluZSBIVUdFX1ZBTEwJKF9f
ZXh0ZW5zaW9uX18gXAoJCQkgKChfX2h1Z2VfdmFsbF90KSB7IF9fYzogX19IVUdFX1ZBTExf
Ynl0ZXMgfSkuX19sZCkKIyBlbHNlCS8qIE5vdCBHQ0MuICAqLwpzdGF0aWMgX19odWdlX3Zh
bGxfdCBfX2h1Z2VfdmFsbCA9IHsgX19IVUdFX1ZBTExfYnl0ZXMgfTsKIyAgZGVmaW5lIEhV
R0VfVkFMTAkoX19odWdlX3ZhbGwuX19sZCkKIyBlbmRpZgkvKiBHQ0MuICAqLwoKI2VuZGlm
CS8qIF9fVVNFX0lTT0M5WC4gICovCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi91c3IvaW5jbHVkZS9iaXRzL25hbi5oAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMzMwNQAwMDExNjM3ADAwMDAwMDAzMTIzADA3
NTM3NzE1NDA3ADAxNDIxNAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAB1c3RhciAgAG1lbmdlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb3Nz
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvKiBg
TkFOJyBjb25zdGFudCBmb3IgSUVFRSA3NTQgbWFjaGluZXMuCiAgIENvcHlyaWdodCAoQykg
MTk5MiwgMTk5NiwgMTk5NywgMTk5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCgogICBUaGUgR05V
IEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKICAgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoZSBHTlUgQyBM
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsCiAgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAgQm9zdG9uLCBNQSAwMjEx
MS0xMzA3LCBVU0EuICAqLwoKI2lmbmRlZiBfTUFUSF9ICiMgZXJyb3IgIk5ldmVyIHVzZSA8
Yml0cy9uYW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUgPG1hdGguaD4gaW5zdGVhZC4iCiNlbmRp
ZgoKCi8qIElFRUUgTm90IEEgTnVtYmVyLiAgKi8KCiNpZmRlZglfX0dOVUNfXwoKIyBkZWZp
bmUgTkFOIFwKICAoX19leHRlbnNpb25fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgKCh1bmlvbiB7IHVuc2lnbmVk
IF9fbCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1NJX18pKSk7IGZsb2F0IF9fZDsgfSkg
IFwKICAgIHsgX19sOiAweDdmYzAwMDAwVUwgfSkuX19kKQoKI2Vsc2UKCiMgaW5jbHVkZSA8
ZW5kaWFuLmg+CgojIGlmIF9fQllURV9PUkRFUiA9PSBfX0JJR19FTkRJQU4KIyAgZGVmaW5l
IF9fbmFuX2J5dGVzCQl7IDB4N2YsIDB4YzAsIDAsIDAgfQojIGVuZGlmCiMgaWYgX19CWVRF
X09SREVSID09IF9fTElUVExFX0VORElBTgojICBkZWZpbmUgX19uYW5fYnl0ZXMJCXsgMCwg
MCwgMHhjMCwgMHg3ZiB9CiMgZW5kaWYKCnN0YXRpYyB1bmlvbiB7IHVuc2lnbmVkIGNoYXIg
X19jWzRdOyBmbG9hdCBfX2Q7IH0gX19uYW5fdW5pb24gPSB7IF9fbmFuX2J5dGVzIH07CiMg
ZGVmaW5lIE5BTgkoX19uYW5fdW5pb24uX19kKQoKI2VuZGlmCS8qIEdDQy4gICovCgAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4vdXNyL2lu
Y2x1ZGUvYml0cy9tYXRoZGVmLmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDMzMDUA
MDAxMTYzNwAwMDAwMDAwMzUwNgAwNzUzNzcxNTQwNwAwMTUwNTUAIDAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtZW5nZWwAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAG9zcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAALyogQ29weXJpZ2h0IChDKSAxOTk3LCAxOTk4LCAxOTk5IEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgR05VIEMgTGlicmFyeS4KCiAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz
CiAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg
dmVyc2lvbiAyIG9mIHRoZQogICBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgoKICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCgogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwogICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwKICAgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAogICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCgojaWYgIWRl
ZmluZWQgX01BVEhfSCAmJiAhZGVmaW5lZCBfQ09NUExFWF9ICiMgZXJyb3IgIk5ldmVyIHVz
ZSA8Yml0cy9tYXRoZGVmLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxtYXRoLmg+IGluc3RlYWQi
CiNlbmRpZgoKI2lmIGRlZmluZWQgX19VU0VfSVNPQzlYICYmIGRlZmluZWQgX01BVEhfSCAm
JiAhZGVmaW5lZCBfTUFUSF9IX01BVEhERUYKIyBkZWZpbmUgX01BVEhfSF9NQVRIREVGCTEK
Ci8qIFRoZSBpeDg3IEZQVXMgZXZhbHVhdGUgYWxsIHZhbHVlcyBpbiB0aGUgODAgYml0IGZs
b2F0aW5nLXBvaW50IGZvcm1hdAogICB3aGljaCBpcyBhbHNvIGF2YWlsYWJsZSBmb3IgdGhl
IHVzZXIgYXMgYGxvbmcgZG91YmxlJy4gIFRoZXJlZm9yZSB3ZQogICBkZWZpbmU6ICAqLwp0
eXBlZGVmIGxvbmcgZG91YmxlIGZsb2F0X3Q7CS8qIGBmbG9hdCcgZXhwcmVzc2lvbnMgYXJl
IGV2YWx1YXRlZCBhcwoJCQkJICAgYGxvbmcgZG91YmxlJy4gICovCnR5cGVkZWYgbG9uZyBk
b3VibGUgZG91YmxlX3Q7CS8qIGBkb3VibGUnIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQg
YXMKCQkJCSAgIGBsb25nIGRvdWJsZScuICAqLwoKLyogU2lnbmFsIHRoYXQgYm90aCB0eXBl
cyBhcmUgYGxvbmcgZG91YmxlJy4gICovCiMgZGVmaW5lIEZMVF9FVkFMX01FVEhPRAkyCgov
KiBEZWZpbmUgYElORklOSVRZJyBhcyB2YWx1ZSBvZiB0eXBlIGBmbG9hdCcuICAqLwojIGRl
ZmluZSBJTkZJTklUWQlIVUdFX1ZBTEYKCi8qIFRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgYGls
b2diJyBmb3IgMCBhbmQgTmFOIHJlc3BlY3RpdmVseS4gICovCiMgZGVmaW5lIEZQX0lMT0dC
MAkweDgwMDAwMDAwCiMgZGVmaW5lIEZQX0lMT0dCTkFOCTB4ODAwMDAwMDAKCi8qIE51bWJl
ciBvZiBkZWNpbWFsIGRpZ2l0cyBmb3IgdGhlIGBsb25nIGRvdWJsZScgdHlwZS4gICovCiMg
ZGVmaW5lIERFQ0lNQUxfRElHCTE4CgojZW5kaWYJLyogSVNPIEM5OSAqLwoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAuL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAMDEwMDY0NAAwMDAzMzA1ADAwMTE2MzcAMDAwMDAwMjU0MzcAMDc1Mzc3MTU0MDcA
MDE1NDI0ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AHVzdGFyICAAbWVuZ2VsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvc3MAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8qIFByb3RvdHlwZSBk
ZWNsYXJhdGlvbnMgZm9yIG1hdGggZnVuY3Rpb25zOyBoZWxwZXIgZmlsZSBmb3IgPG1hdGgu
aD4uCiAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4KICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBD
IExpYnJhcnkuCgogICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogICBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g
MiBvZiB0aGUKICAgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KCiAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsCiAgIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz
MCwKICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwoKLyogTk9URTogQmVjYXVz
ZSBvZiB0aGUgc3BlY2lhbCB3YXkgdGhpcyBmaWxlIGlzIHVzZWQgYnkgPG1hdGguaD4sIHRo
aXMKICAgZmlsZSBtdXN0IE5PVCBiZSBwcm90ZWN0ZWQgZnJvbSBtdWx0aXBsZSBpbmNsdXNp
b24gYXMgaGVhZGVyIGZpbGVzCiAgIHVzdWFsbHkgYXJlLgoKICAgVGhpcyBmaWxlIHByb3Zp
ZGVzIHByb3RvdHlwZSBkZWNsYXJhdGlvbnMgZm9yIHRoZSBtYXRoIGZ1bmN0aW9ucy4KICAg
TW9zdCBmdW5jdGlvbnMgYXJlIGRlY2xhcmVkIHVzaW5nIHRoZSBtYWNybzoKCiAgIF9fTUFU
SENBTEwgKE5BTUUsW19yXSwgKEFSR1MuLi4pKTsKCiAgIFRoaXMgbWVhbnMgdGhlcmUgaXMg
YSBmdW5jdGlvbiBgTkFNRScgcmV0dXJuaW5nIGBkb3VibGUnIGFuZCBhIGZ1bmN0aW9uCiAg
IGBOQU1FZicgcmV0dXJuaW5nIGBmbG9hdCcuICBFYWNoIHBsYWNlIGBfTWRvdWJsZV8nIGFw
cGVhcnMgaW4gdGhlCiAgIHByb3RvdHlwZSwgdGhhdCBpcyBhY3R1YWxseSBgZG91YmxlJyBp
biB0aGUgcHJvdG90eXBlIGZvciBgTkFNRScgYW5kCiAgIGBmbG9hdCcgaW4gdGhlIHByb3Rv
dHlwZSBmb3IgYE5BTUVmJy4gIFJlZW50cmFudCB2YXJpYW50IGZ1bmN0aW9ucyBhcmUKICAg
Y2FsbGVkIGBOQU1FX3InIGFuZCBgTkFNRWZfcicuCgogICBGdW5jdGlvbnMgcmV0dXJuaW5n
IG90aGVyIHR5cGVzIGxpa2UgYGludCcgYXJlIGRlY2xhcmVkIHVzaW5nIHRoZSBtYWNybzoK
CiAgIF9fTUFUSERFQ0wgKFRZUEUsIE5BTUUsW19yXSwgKEFSR1MuLi4pKTsKCiAgIFRoaXMg
aXMganVzdCBsaWtlIF9fTUFUSENBTEwgYnV0IGZvciBhIGZ1bmN0aW9uIHJldHVybmluZyBg
VFlQRScKICAgaW5zdGVhZCBvZiBgX01kb3VibGVfJy4gIEluIGFsbCBvZiB0aGVzZSBjYXNl
cywgdGhlcmUgaXMgc3RpbGwKICAgYm90aCBhIGBOQU1FJyBhbmQgYSBgTkFNRWYnIHRoYXQg
dGFrZXMgYGZsb2F0JyBhcmd1bWVudHMuCgogICBOb3RlIHRoYXQgdGhlcmUgbXVzdCBiZSBu
byB3aGl0ZXNwYWNlIGJlZm9yZSB0aGUgYXJndW1lbnQgcGFzc2VkIGZvcgogICBOQU1FLCB0
byBtYWtlIHRva2VuIHBhc3Rpbmcgd29yayB3aXRoIC10cmFkaXRpb25hbC4gICovCgojaWZu
ZGVmIF9NQVRIX0gKICNlcnJvciAiTmV2ZXIgaW5jbHVkZSA8Yml0cy9tYXRoY2FsbHMuaD4g
ZGlyZWN0bHk7IGluY2x1ZGUgPG1hdGguaD4gaW5zdGVhZC4iCiNlbmRpZgoKCi8qIFRyaWdv
bm9tZXRyaWMgZnVuY3Rpb25zLiAgKi8KCi8qIEFyYyBjb3NpbmUgb2YgWC4gICovCl9fTUFU
SENBTEwgKGFjb3MsLCAoX01kb3VibGVfIF9feCkpOwovKiBBcmMgc2luZSBvZiBYLiAgKi8K
X19NQVRIQ0FMTCAoYXNpbiwsIChfTWRvdWJsZV8gX194KSk7Ci8qIEFyYyB0YW5nZW50IG9m
IFguICAqLwpfX01BVEhDQUxMIChhdGFuLCwgKF9NZG91YmxlXyBfX3gpKTsKLyogQXJjIHRh
bmdlbnQgb2YgWS9YLiAgKi8KX19NQVRIQ0FMTCAoYXRhbjIsLCAoX01kb3VibGVfIF9feSwg
X01kb3VibGVfIF9feCkpOwoKLyogQ29zaW5lIG9mIFguICAqLwpfX01BVEhDQUxMIChjb3Ms
LCAoX01kb3VibGVfIF9feCkpOwovKiBTaW5lIG9mIFguICAqLwpfX01BVEhDQUxMIChzaW4s
LCAoX01kb3VibGVfIF9feCkpOwovKiBUYW5nZW50IG9mIFguICAqLwpfX01BVEhDQUxMICh0
YW4sLCAoX01kb3VibGVfIF9feCkpOwoKI2lmZGVmIF9fVVNFX0dOVQovKiBDb3NpbmUgYW5k
IHNpbmUgb2YgWC4gICovCl9fTUFUSERFQ0wgKHZvaWQsc2luY29zLCwKCSAgICAoX01kb3Vi
bGVfIF9feCwgX01kb3VibGVfICpfX3NpbngsIF9NZG91YmxlXyAqX19jb3N4KSk7CiNlbmRp
ZgoKLyogSHlwZXJib2xpYyBmdW5jdGlvbnMuICAqLwoKLyogSHlwZXJib2xpYyBjb3NpbmUg
b2YgWC4gICovCl9fTUFUSENBTEwgKGNvc2gsLCAoX01kb3VibGVfIF9feCkpOwovKiBIeXBl
cmJvbGljIHNpbmUgb2YgWC4gICovCl9fTUFUSENBTEwgKHNpbmgsLCAoX01kb3VibGVfIF9f
eCkpOwovKiBIeXBlcmJvbGljIHRhbmdlbnQgb2YgWC4gICovCl9fTUFUSENBTEwgKHRhbmgs
LCAoX01kb3VibGVfIF9feCkpOwoKI2lmIGRlZmluZWQgX19VU0VfTUlTQyB8fCBkZWZpbmVk
IF9fVVNFX1hPUEVOX0VYVEVOREVEIHx8IGRlZmluZWQgX19VU0VfSVNPQzlYCi8qIEh5cGVy
Ym9saWMgYXJjIGNvc2luZSBvZiBYLiAgKi8KX19NQVRIQ0FMTCAoYWNvc2gsLCAoX01kb3Vi
bGVfIF9feCkpOwovKiBIeXBlcmJvbGljIGFyYyBzaW5lIG9mIFguICAqLwpfX01BVEhDQUxM
IChhc2luaCwsIChfTWRvdWJsZV8gX194KSk7Ci8qIEh5cGVyYm9saWMgYXJjIHRhbmdlbnQg
b2YgWC4gICovCl9fTUFUSENBTEwgKGF0YW5oLCwgKF9NZG91YmxlXyBfX3gpKTsKI2VuZGlm
CgovKiBFeHBvbmVudGlhbCBhbmQgbG9nYXJpdGhtaWMgZnVuY3Rpb25zLiAgKi8KCi8qIEV4
cG9uZW50aWFsIGZ1bmN0aW9uIG9mIFguICAqLwpfX01BVEhDQUxMIChleHAsLCAoX01kb3Vi
bGVfIF9feCkpOwoKI2lmZGVmIF9fVVNFX0dOVQovKiBBIGZ1bmN0aW9uIG1pc3NpbmcgaW4g
YWxsIHN0YW5kYXJkczogY29tcHV0ZSBleHBvbmVudCB0byBiYXNlIHRlbi4gICovCl9fTUFU
SENBTEwgKGV4cDEwLCwgKF9NZG91YmxlXyBfX3gpKTsKLyogQW5vdGhlciBuYW1lIG9jY2Fz
aW9uYWxseSB1c2VkLiAgKi8KX19NQVRIQ0FMTCAocG93MTAsLCAoX01kb3VibGVfIF9feCkp
OwojZW5kaWYKCi8qIEJyZWFrIFZBTFVFIGludG8gYSBub3JtYWxpemVkIGZyYWN0aW9uIGFu
ZCBhbiBpbnRlZ3JhbCBwb3dlciBvZiAyLiAgKi8KX19NQVRIQ0FMTCAoZnJleHAsLCAoX01k
b3VibGVfIF9feCwgaW50ICpfX2V4cG9uZW50KSk7CgovKiBYIHRpbWVzICh0d28gdG8gdGhl
IEVYUCBwb3dlcikuICAqLwpfX01BVEhDQUxMIChsZGV4cCwsIChfTWRvdWJsZV8gX194LCBp
bnQgX19leHBvbmVudCkpOwoKLyogTmF0dXJhbCBsb2dhcml0aG0gb2YgWC4gICovCl9fTUFU
SENBTEwgKGxvZywsIChfTWRvdWJsZV8gX194KSk7CgovKiBCYXNlLXRlbiBsb2dhcml0aG0g
b2YgWC4gICovCl9fTUFUSENBTEwgKGxvZzEwLCwgKF9NZG91YmxlXyBfX3gpKTsKCi8qIEJy
ZWFrIFZBTFVFIGludG8gaW50ZWdyYWwgYW5kIGZyYWN0aW9uYWwgcGFydHMuICAqLwpfX01B
VEhDQUxMIChtb2RmLCwgKF9NZG91YmxlXyBfX3gsIF9NZG91YmxlXyAqX19pcHRyKSk7Cgoj
aWYgZGVmaW5lZCBfX1VTRV9NSVNDIHx8IGRlZmluZWQgX19VU0VfWE9QRU5fRVhURU5ERUQg
fHwgZGVmaW5lZCBfX1VTRV9JU09DOVgKLyogUmV0dXJuIGV4cChYKSAtIDEuICAqLwpfX01B
VEhDQUxMIChleHBtMSwsIChfTWRvdWJsZV8gX194KSk7CgovKiBSZXR1cm4gbG9nKDEgKyBY
KS4gICovCl9fTUFUSENBTEwgKGxvZzFwLCwgKF9NZG91YmxlXyBfX3gpKTsKCi8qIFJldHVy
biB0aGUgYmFzZSAyIHNpZ25lZCBpbnRlZ3JhbCBleHBvbmVudCBvZiBYLiAgKi8KX19NQVRI
Q0FMTCAobG9nYiwsIChfTWRvdWJsZV8gX194KSk7CiNlbmRpZgoKI2lmZGVmIF9fVVNFX0lT
T0M5WAovKiBDb21wdXRlIGJhc2UtMiBleHBvbmVudGlhbCBvZiBYLiAgKi8KX19NQVRIQ0FM
TCAoZXhwMiwsIChfTWRvdWJsZV8gX194KSk7CgovKiBDb21wdXRlIGJhc2UtMiBsb2dhcml0
aG0gb2YgWC4gICovCl9fTUFUSENBTEwgKGxvZzIsLCAoX01kb3VibGVfIF9feCkpOwojZW5k
aWYKCgovKiBQb3dlciBmdW5jdGlvbnMuICAqLwoKLyogUmV0dXJuIFggdG8gdGhlIFkgcG93
ZXIuICAqLwpfX01BVEhDQUxMIChwb3csLCAoX01kb3VibGVfIF9feCwgX01kb3VibGVfIF9f
eSkpOwoKLyogUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiBYLiAgKi8KX19NQVRIQ0FMTCAo
c3FydCwsIChfTWRvdWJsZV8gX194KSk7CgojaWYgZGVmaW5lZCBfX1VTRV9NSVNDIHx8IGRl
ZmluZWQgX19VU0VfWE9QRU4gfHwgZGVmaW5lZCBfX1VTRV9JU09DOVgKLyogUmV0dXJuIGBz
cXJ0KFgqWCArIFkqWSknLiAgKi8KX19NQVRIQ0FMTCAoaHlwb3QsLCAoX01kb3VibGVfIF9f
eCwgX01kb3VibGVfIF9feSkpOwojZW5kaWYKCiNpZiBkZWZpbmVkIF9fVVNFX01JU0MgfHwg
ZGVmaW5lZCBfX1VTRV9YT1BFTl9FWFRFTkRFRCB8fCBkZWZpbmVkIF9fVVNFX0lTT0M5WAov
KiBSZXR1cm4gdGhlIGN1YmUgcm9vdCBvZiBYLiAgKi8KX19NQVRIQ0FMTCAoY2JydCwsIChf
TWRvdWJsZV8gX194KSk7CiNlbmRpZgoKCi8qIE5lYXJlc3QgaW50ZWdlciwgYWJzb2x1dGUg
dmFsdWUsIGFuZCByZW1haW5kZXIgZnVuY3Rpb25zLiAgKi8KCi8qIFNtYWxsZXN0IGludGVn
cmFsIHZhbHVlIG5vdCBsZXNzIHRoYW4gWC4gICovCl9fTUFUSENBTEwgKGNlaWwsLCAoX01k
b3VibGVfIF9feCkpOwoKLyogQWJzb2x1dGUgdmFsdWUgb2YgWC4gICovCl9fTUFUSENBTExY
IChmYWJzLCwgKF9NZG91YmxlXyBfX3gpLCAoX19jb25zdF9fKSk7CgovKiBMYXJnZXN0IGlu
dGVnZXIgbm90IGdyZWF0ZXIgdGhhbiBYLiAgKi8KX19NQVRIQ0FMTCAoZmxvb3IsLCAoX01k
b3VibGVfIF9feCkpOwoKLyogRmxvYXRpbmctcG9pbnQgbW9kdWxvIHJlbWFpbmRlciBvZiBY
L1kuICAqLwpfX01BVEhDQUxMIChmbW9kLCwgKF9NZG91YmxlXyBfX3gsIF9NZG91YmxlXyBf
X3kpKTsKCgovKiBSZXR1cm4gMCBpZiBWQUxVRSBpcyBmaW5pdGUgb3IgTmFOLCArMSBpZiBp
dAogICBpcyArSW5maW5pdHksIC0xIGlmIGl0IGlzIC1JbmZpbml0eS4gICovCl9fTUFUSERF
Q0xfMSAoaW50LF9faXNpbmYsLCAoX01kb3VibGVfIF9fdmFsdWUpKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgovKiBSZXR1cm4gbm9uemVybyBpZiBWQUxVRSBpcyBmaW5pdGUg
YW5kIG5vdCBOYU4uICAqLwpfX01BVEhERUNMXzEgKGludCxfX2Zpbml0ZSwsIChfTWRvdWJs
ZV8gX192YWx1ZSkpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiNpZmRlZiBfX1VT
RV9NSVNDCi8qIFJldHVybiAwIGlmIFZBTFVFIGlzIGZpbml0ZSBvciBOYU4sICsxIGlmIGl0
CiAgIGlzICtJbmZpbml0eSwgLTEgaWYgaXQgaXMgLUluZmluaXR5LiAgKi8KX19NQVRIREVD
TF8xIChpbnQsaXNpbmYsLCAoX01kb3VibGVfIF9fdmFsdWUpKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgovKiBSZXR1cm4gbm9uemVybyBpZiBWQUxVRSBpcyBmaW5pdGUgYW5k
IG5vdCBOYU4uICAqLwpfX01BVEhERUNMXzEgKGludCxmaW5pdGUsLCAoX01kb3VibGVfIF9f
dmFsdWUpKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgovKiBEZWFsIHdpdGggYW4g
aW5maW5pdGUgb3IgTmFOIHJlc3VsdC4KICAgSWYgRVJST1IgaXMgRVJBTkdFLCByZXN1bHQg
aXMgK0luZjsKICAgaWYgRVJST1IgaXMgLSBFUkFOR0UsIHJlc3VsdCBpcyAtSW5mOwogICBv
dGhlcndpc2UgcmVzdWx0IGlzIE5hTi4KICAgVGhpcyB3aWxsIHNldCBgZXJybm8nIHRvIGVp
dGhlciBFUkFOR0Ugb3IgRURPTSwKICAgYW5kIG1heSByZXR1cm4gYW4gaW5maW5pdHkgb3Ig
TmFOLCBvciBtYXkgZG8gc29tZXRoaW5nIGVsc2UuICAqLwpfX01BVEhDQUxMWCAoaW5mbmFu
LCwgKGludCBfX2Vycm9yKSwgKF9fY29uc3RfXykpOwoKLyogUmV0dXJuIHRoZSByZW1haW5k
ZXIgb2YgWC9ZLiAgKi8KX19NQVRIQ0FMTCAoZHJlbSwsIChfTWRvdWJsZV8gX194LCBfTWRv
dWJsZV8gX195KSk7CgoKLyogUmV0dXJuIHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgWCBhZnRl
ciBkaXZpZGluZyBvdXQgYGlsb2diIChYKScuICAqLwpfX01BVEhDQUxMIChzaWduaWZpY2Fu
ZCwsIChfTWRvdWJsZV8gX194KSk7CiNlbmRpZiAvKiBVc2UgbWlzYy4gICovCgojaWYgZGVm
aW5lZCBfX1VTRV9NSVNDIHx8IGRlZmluZWQgX19VU0VfSVNPQzlYCi8qIFJldHVybiBYIHdp
dGggaXRzIHNpZ25lZCBjaGFuZ2VkIHRvIFkncy4gICovCl9fTUFUSENBTExYIChjb3B5c2ln
biwsIChfTWRvdWJsZV8gX194LCBfTWRvdWJsZV8gX195KSwgKF9fY29uc3RfXykpOwojZW5k
aWYKCiNpZmRlZiBfX1VTRV9JU09DOVgKLyogUmV0dXJuIHJlcHJlc2VudGF0aW9uIG9mIE5h
TiBmb3IgZG91YmxlIHR5cGUuICAqLwpfX01BVEhDQUxMWCAobmFuLCwgKF9fY29uc3QgY2hh
ciAqX190YWdiKSwgKF9fY29uc3RfXykpOwojZW5kaWYKCgovKiBSZXR1cm4gbm9uemVybyBp
ZiBWQUxVRSBpcyBub3QgYSBudW1iZXIuICAqLwpfX01BVEhERUNMXzEgKGludCxfX2lzbmFu
LCwgKF9NZG91YmxlXyBfX3ZhbHVlKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
I2lmIGRlZmluZWQgX19VU0VfTUlTQyB8fCBkZWZpbmVkIF9fVVNFX1hPUEVOCi8qIFJldHVy
biBub256ZXJvIGlmIFZBTFVFIGlzIG5vdCBhIG51bWJlci4gICovCl9fTUFUSERFQ0xfMSAo
aW50LGlzbmFuLCwgKF9NZG91YmxlXyBfX3ZhbHVlKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKLyogQmVzc2VsIGZ1bmN0aW9ucy4gICovCl9fTUFUSENBTEwgKGowLCwgKF9N
ZG91YmxlXykpOwpfX01BVEhDQUxMIChqMSwsIChfTWRvdWJsZV8pKTsKX19NQVRIQ0FMTCAo
am4sLCAoaW50LCBfTWRvdWJsZV8pKTsKX19NQVRIQ0FMTCAoeTAsLCAoX01kb3VibGVfKSk7
Cl9fTUFUSENBTEwgKHkxLCwgKF9NZG91YmxlXykpOwpfX01BVEhDQUxMICh5biwsIChpbnQs
IF9NZG91YmxlXykpOwojZW5kaWYKCgojaWYgZGVmaW5lZCBfX1VTRV9NSVNDIHx8IGRlZmlu
ZWQgX19VU0VfWE9QRU4gfHwgZGVmaW5lZCBfX1VTRV9JU09DOVgKLyogRXJyb3IgYW5kIGdh
bW1hIGZ1bmN0aW9ucy4gICovCl9fTUFUSENBTEwgKGVyZiwsIChfTWRvdWJsZV8pKTsKX19N
QVRIQ0FMTCAoZXJmYywsIChfTWRvdWJsZV8pKTsKX19NQVRIQ0FMTCAobGdhbW1hLCwgKF9N
ZG91YmxlXykpOwpfX01BVEhDQUxMICh0Z2FtbWEsLCAoX01kb3VibGVfKSk7CiNlbmRpZgoK
I2lmIGRlZmluZWQgX19VU0VfTUlTQyB8fCBkZWZpbmVkIF9fVVNFX1hPUEVOCi8qIE9ic29s
ZXRlIGFsaWFzIGZvciBgbGdhbW1hJy4gICovCl9fTUFUSENBTEwgKGdhbW1hLCwgKF9NZG91
YmxlXykpOwojZW5kaWYKCiNpZmRlZiBfX1VTRV9NSVNDCi8qIFJlZW50cmFudCB2ZXJzaW9u
IG9mIGxnYW1tYS4gIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgZ2xvYmFsIHZhcmlhYmxlCiAg
IGBzaWduZ2FtJy4gIFRoZSByZWVudHJhbnQgdmVyc2lvbiBpbnN0ZWFkIHRha2VzIGEgcG9p
bnRlciBhbmQgc3RvcmVzCiAgIHRoZSB2YWx1ZSB0aHJvdWdoIGl0LiAgKi8KX19NQVRIQ0FM
TCAobGdhbW1hLF9yLCAoX01kb3VibGVfLCBpbnQgKl9fc2lnbmdhbXApKTsKI2VuZGlmCgoK
I2lmIGRlZmluZWQgX19VU0VfTUlTQyB8fCBkZWZpbmVkIF9fVVNFX1hPUEVOX0VYVEVOREVE
IHx8IGRlZmluZWQgX19VU0VfSVNPQzlYCi8qIFJldHVybiB0aGUgaW50ZWdlciBuZWFyZXN0
IFggaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUKICAgcHJldmFpbGluZyByb3VuZGluZyBtb2Rl
LiAgKi8KX19NQVRIQ0FMTCAocmludCwsIChfTWRvdWJsZV8gX194KSk7CgovKiBSZXR1cm4g
WCArIGVwc2lsb24gaWYgWCA8IFksIFggLSBlcHNpbG9uIGlmIFggPiBZLiAgKi8KX19NQVRI
Q0FMTFggKG5leHRhZnRlciwsIChfTWRvdWJsZV8gX194LCBfTWRvdWJsZV8gX195KSwgKF9f
Y29uc3RfXykpOwojIGlmZGVmIF9fVVNFX0lTT0M5WApfX01BVEhDQUxMWCAobmV4dHRvd2Fy
ZCwsIChfTWRvdWJsZV8gX194LCBsb25nIGRvdWJsZSBfX3kpLCAoX19jb25zdF9fKSk7CiMg
ZW5kaWYKCi8qIFJldHVybiB0aGUgcmVtYWluZGVyIG9mIGludGVnZXIgZGl2aXNvbiBYIC8g
WSB3aXRoIGluZmluaXRlIHByZWNpc2lvbi4gICovCl9fTUFUSENBTEwgKHJlbWFpbmRlciws
IChfTWRvdWJsZV8gX194LCBfTWRvdWJsZV8gX195KSk7CgojIGlmIGRlZmluZWQgX19VU0Vf
TUlTQyB8fCBkZWZpbmVkIF9fVVNFX1hPUEVOX0VYVEVOREVECi8qIFJldHVybiBYIHRpbWVz
ICgyIHRvIHRoZSBOdGggcG93ZXIpLiAgKi8KX19NQVRIQ0FMTCAoc2NhbGIsLCAoX01kb3Vi
bGVfIF9feCwgX01kb3VibGVfIF9fbikpOwojIGVuZGlmCgovKiBSZXR1cm4gWCB0aW1lcyAo
MiB0byB0aGUgTnRoIHBvd2VyKS4gICovCl9fTUFUSENBTEwgKHNjYWxibiwsIChfTWRvdWJs
ZV8gX194LCBpbnQgX19uKSk7CgovKiBSZXR1cm4gdGhlIGJpbmFyeSBleHBvbmVudCBvZiBY
LCB3aGljaCBtdXN0IGJlIG5vbnplcm8uICAqLwpfX01BVEhERUNMIChpbnQsaWxvZ2IsLCAo
X01kb3VibGVfIF9feCkpOwojZW5kaWYKCiNpZmRlZiBfX1VTRV9JU09DOVgKLyogUmV0dXJu
IFggdGltZXMgKDIgdG8gdGhlIE50aCBwb3dlcikuICAqLwpfX01BVEhDQUxMIChzY2FsYmxu
LCwgKF9NZG91YmxlXyBfX3gsIGxvbmcgaW50IF9fbikpOwoKLyogUm91bmQgWCB0byBpbnRl
Z3JhbCB2YWx1ZSBpbiBmbG9hdGluZy1wb2ludCBmb3JtYXQgdXNpbmcgY3VycmVudAogICBy
b3VuZGluZyBkaXJlY3Rpb24sIGJ1dCBkbyBub3QgcmFpc2UgaW5leGFjdCBleGNlcHRpb24u
ICAqLwpfX01BVEhDQUxMIChuZWFyYnlpbnQsLCAoX01kb3VibGVfIF9feCkpOwoKLyogUm91
bmQgWCB0byBuZWFyZXN0IGludGVncmFsIHZhbHVlLCByb3VuZGluZyBoYWxmd2F5IGNhc2Vz
IGF3YXkgZnJvbQogICB6ZXJvLiAgKi8KX19NQVRIQ0FMTCAocm91bmQsLCAoX01kb3VibGVf
IF9feCkpOwoKLyogUm91bmQgWCB0byB0aGUgaW50ZWdyYWwgdmFsdWUgaW4gZmxvYXRpbmct
cG9pbnQgZm9ybWF0IG5lYXJlc3QgYnV0CiAgIG5vdCBsYXJnZXIgaW4gbWFnbml0dWRlLiAg
Ki8KX19NQVRIQ0FMTFggKHRydW5jLCwgKF9NZG91YmxlXyBfX3gpLCAoX19jb25zdF9fKSk7
CgovKiBDb21wdXRlIHJlbWFpbmRlciBvZiBYIGFuZCBZIGFuZCBwdXQgaW4gKlFVTyBhIHZh
bHVlIHdpdGggc2lnbiBvZiB4L3kKICAgYW5kIG1hZ25pdHVkZSBjb25ncnVlbnQgYG1vZCAy
Xm4nIHRvIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGludGVncmFsCiAgIHF1b3RpZW50IHgveSwg
d2l0aCBuID49IDMuICAqLwpfX01BVEhDQUxMIChyZW1xdW8sLCAoX01kb3VibGVfIF9feCwg
X01kb3VibGVfIF9feSwgaW50ICpfX3F1bykpOwoKCi8qIENvbnZlcnNpb24gZnVuY3Rpb25z
LiAgKi8KCi8qIFJvdW5kIFggdG8gbmVhcmVzdCBpbnRlZ3JhbCB2YWx1ZSBhY2NvcmRpbmcg
dG8gY3VycmVudCByb3VuZGluZwogICBkaXJlY3Rpb24uICAqLwpfX01BVEhERUNMIChsb25n
IGludCxscmludCwsIChfTWRvdWJsZV8gX194KSk7Cl9fTUFUSERFQ0wgKGxvbmcgbG9uZyBp
bnQsbGxyaW50LCwgKF9NZG91YmxlXyBfX3gpKTsKCi8qIFJvdW5kIFggdG8gbmVhcmVzdCBp
bnRlZ3JhbCB2YWx1ZSwgcm91bmRpbmcgaGFsZndheSBjYXNlcyBhd2F5IGZyb20KICAgemVy
by4gICovCl9fTUFUSERFQ0wgKGxvbmcgaW50LGxyb3VuZCwsIChfTWRvdWJsZV8gX194KSk7
Cl9fTUFUSERFQ0wgKGxvbmcgbG9uZyBpbnQsbGxyb3VuZCwsIChfTWRvdWJsZV8gX194KSk7
CgoKLyogUmV0dXJuIHBvc2l0aXZlIGRpZmZlcmVuY2UgYmV0d2VlbiBYIGFuZCBZLiAgKi8K
X19NQVRIQ0FMTCAoZmRpbSwsIChfTWRvdWJsZV8gX194LCBfTWRvdWJsZV8gX195KSk7Cgov
KiBSZXR1cm4gbWF4aW11bSBudW1lcmljIHZhbHVlIGZyb20gWCBhbmQgWS4gICovCl9fTUFU
SENBTEwgKGZtYXgsLCAoX01kb3VibGVfIF9feCwgX01kb3VibGVfIF9feSkpOwoKLyogUmV0
dXJuIG1pbmltdW0gbnVtZXJpYyB2YWx1ZSBmcm9tIFggYW5kIFkuICAqLwpfX01BVEhDQUxM
IChmbWluLCwgKF9NZG91YmxlXyBfX3gsIF9NZG91YmxlXyBfX3kpKTsKCgovKiBDbGFzc2lm
eSBnaXZlbiBudW1iZXIuICAqLwpfX01BVEhERUNMXzEgKGludCwgX19mcGNsYXNzaWZ5LCwg
KF9NZG91YmxlXyBfX3ZhbHVlKSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgovKiBUZXN0IGZvciBuZWdhdGl2ZSBudW1iZXIuICAqLwpfX01BVEhERUNMXzEgKGludCwg
X19zaWduYml0LCwgKF9NZG91YmxlXyBfX3ZhbHVlKSkKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKLyogTXVsdGlwbHktYWRkIGZ1bmN0aW9uIGNvbXB1dGVkIGFzIGEg
dGVybmFyeSBvcGVyYXRpb24uICAqLwpfX01BVEhDQUxMIChmbWEsLCAoX01kb3VibGVfIF9f
eCwgX01kb3VibGVfIF9feSwgX01kb3VibGVfIF9feikpOwojZW5kaWYgLyogVXNlIElTTyBD
IDlYLiAgKi8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAALi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADAxMDA2NDQAMDAwMzMwNQAwMDExNjM3ADAwMDAwMDU1MTU3ADA3NTY0NTAx
MzIxADAxNTU3MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAB1c3RhciAgAG1lbmdlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb3NzAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvKiBJbmxpbmUg
bWF0aCBmdW5jdGlvbnMgZm9yIGkzODcuCiAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5Niwg
MTk5NywgMTk5OCwgMTk5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCiAgIENvbnRyaWJ1dGVkIGJ5
IEpvaG4gQy4gQm93bWFuIDxib3dtYW5AbWF0aC51YWxiZXJ0YS5jYT4sIDE5OTUuCgogICBU
aGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogICBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKICAgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoZSBH
TlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsCiAgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAgQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuICAqLwoKI2lmbmRlZiBfTUFUSF9ICiMgZXJyb3IgIk5ldmVy
IHVzZSA8Yml0cy9tYXRoaW5saW5lLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDxtYXRoLmg+IGlu
c3RlYWQuIgojZW5kaWYKCiNpZmRlZiBfX2NwbHVzcGx1cwojIGRlZmluZSBfX01BVEhfSU5M
SU5FIF9faW5saW5lCiNlbHNlCiMgZGVmaW5lIF9fTUFUSF9JTkxJTkUgZXh0ZXJuIF9faW5s
aW5lCiNlbmRpZgoKCiNpZiBkZWZpbmVkIF9fVVNFX0lTT0M5WCAmJiBkZWZpbmVkIF9fR05V
Q19fICYmIF9fR05VQ19fID49IDIKLyogSVNPIEMgOVggZGVmaW5lcyBzb21lIG1hY3JvcyB0
byBwZXJmb3JtIHVub3JkZXJlZCBjb21wYXJpc29ucy4gIFRoZQogICBpeDg3IEZQVSBzdXBw
b3J0cyB0aGlzIHdpdGggc3BlY2lhbCBvcGNvZGVzIGFuZCB3ZSBzaG91bGQgdXNlIHRoZW0u
CiAgIFRoZXNlIG11c3Qgbm90IGJlIGlubGluZSBmdW5jdGlvbnMgc2luY2Ugd2UgaGF2ZSB0
byBiZSBhYmxlIHRvIGhhbmRsZQogICBhbGwgZmxvYXRpbmctcG9pbnQgdHlwZXMuICAqLwoj
IGlmZGVmIF9faTY4Nl9fCi8qIEZvciB0aGUgUGVudGl1bVBybyBhbmQgbW9yZSByZWNlbnQg
cHJvY2Vzc29ycyB3ZSBjYW4gcHJvdmlkZQogICBiZXR0ZXIgY29kZS4gICovCiMgIGRlZmlu
ZSBpc2dyZWF0ZXIoeCwgeSkgXAogICAgICh7IHJlZ2lzdGVyIGNoYXIgX19yZXN1bHQ7CQkJ
CQkJICAgICAgXAoJX19hc21fXyAoImZ1Y29taXAgJSVzdCgxKSwgJSVzdDsgc2V0YSAlJWFs
IgkJCSAgICAgIFwKCQkgOiAiPWEiIChfX3Jlc3VsdCkgOiAidSIgKHkpLCAidCIgKHgpIDog
ImNjIiwgInN0Iik7CSAgICAgIFwKCV9fcmVzdWx0OyB9KQojICBkZWZpbmUgaXNncmVhdGVy
ZXF1YWwoeCwgeSkgXAogICAgICh7IHJlZ2lzdGVyIGNoYXIgX19yZXN1bHQ7CQkJCQkJICAg
ICAgXAoJX19hc21fXyAoImZ1Y29taXAgJSVzdCgxKSwgJSVzdDsgc2V0YWUgJSVhbCIJCQkg
ICAgICBcCgkJIDogIj1hIiAoX19yZXN1bHQpIDogInUiICh5KSwgInQiICh4KSA6ICJjYyIs
ICJzdCIpOwkgICAgICBcCglfX3Jlc3VsdDsgfSkKCiMgIGRlZmluZSBpc2xlc3MoeCwgeSkg
XAogICAgICh7IHJlZ2lzdGVyIGNoYXIgX19yZXN1bHQ7CQkJCQkJICAgICAgXAoJX19hc21f
XyAoImZ1Y29taXAgJSVzdCgxKSwgJSVzdDsgc2V0YSAlJWFsIgkJCSAgICAgIFwKCQkgOiAi
PWEiIChfX3Jlc3VsdCkgOiAidSIgKHgpLCAidCIgKHkpIDogImNjIiwgInN0Iik7CSAgICAg
IFwKCV9fcmVzdWx0OyB9KQoKIyAgZGVmaW5lIGlzbGVzc2VxdWFsKHgsIHkpIFwKICAgICAo
eyByZWdpc3RlciBjaGFyIF9fcmVzdWx0OwkJCQkJCSAgICAgIFwKCV9fYXNtX18gKCJmdWNv
bWlwICUlc3QoMSksICUlc3Q7IHNldGFlICUlYWwiCQkJICAgICAgXAoJCSA6ICI9YSIgKF9f
cmVzdWx0KSA6ICJ1IiAoeCksICJ0IiAoeSkgOiAiY2MiLCAic3QiKTsJICAgICAgXAoJX19y
ZXN1bHQ7IH0pCgojICBkZWZpbmUgaXNsZXNzZ3JlYXRlcih4LCB5KSBcCiAgICAgKHsgcmVn
aXN0ZXIgY2hhciBfX3Jlc3VsdDsJCQkJCQkgICAgICBcCglfX2FzbV9fICgiZnVjb21pcCAl
JXN0KDEpLCAlJXN0OyBzZXRuZSAlJWFsIgkJCSAgICAgIFwKCQkgOiAiPWEiIChfX3Jlc3Vs
dCkgOiAidSIgKHkpLCAidCIgKHgpIDogImNjIiwgInN0Iik7CSAgICAgIFwKCV9fcmVzdWx0
OyB9KQoKIyAgZGVmaW5lIGlzdW5vcmRlcmVkKHgsIHkpIFwKICAgICAoeyByZWdpc3RlciBj
aGFyIF9fcmVzdWx0OwkJCQkJCSAgICAgIFwKCV9fYXNtX18gKCJmdWNvbWlwICUlc3QoMSks
ICUlc3Q7IHNldHAgJSVhbCIJCQkgICAgICBcCgkJIDogIj1hIiAoX19yZXN1bHQpIDogInUi
ICh5KSwgInQiICh4KSA6ICJjYyIsICJzdCIpOwkgICAgICBcCglfX3Jlc3VsdDsgfSkKIyBl
bHNlCi8qIFRoaXMgaXMgdGhlIGR1bWIsIHBvcnRhYmxlIGNvZGUgZm9yIGkzODYgYW5kIGFi
b3ZlLiAgKi8KIyAgZGVmaW5lIGlzZ3JlYXRlcih4LCB5KSBcCiAgICAgKHsgcmVnaXN0ZXIg
Y2hhciBfX3Jlc3VsdDsJCQkJCQkgICAgICBcCglfX2FzbV9fICgiZnVjb21wcDsgZm5zdHN3
OyB0ZXN0YiAkMHg0NSwgJSVhaDsgc2V0eiAlJWFsIgkgICAgICBcCgkJIDogIj1hIiAoX19y
ZXN1bHQpIDogInUiICh5KSwgInQiICh4KSA6ICJjYyIsICJzdCIsICJzdCgxKSIpOyBcCglf
X3Jlc3VsdDsgfSkKCiMgIGRlZmluZSBpc2dyZWF0ZXJlcXVhbCh4LCB5KSBcCiAgICAgKHsg
cmVnaXN0ZXIgY2hhciBfX3Jlc3VsdDsJCQkJCQkgICAgICBcCglfX2FzbV9fICgiZnVjb21w
cDsgZm5zdHN3OyB0ZXN0YiAkMHgwNSwgJSVhaDsgc2V0eiAlJWFsIgkgICAgICBcCgkJIDog
Ij1hIiAoX19yZXN1bHQpIDogInUiICh5KSwgInQiICh4KSA6ICJjYyIsICJzdCIsICJzdCgx
KSIpOyBcCglfX3Jlc3VsdDsgfSkKCiMgIGRlZmluZSBpc2xlc3MoeCwgeSkgXAogICAgICh7
IHJlZ2lzdGVyIGNoYXIgX19yZXN1bHQ7CQkJCQkJICAgICAgXAoJX19hc21fXyAoImZ1Y29t
cHA7IGZuc3RzdzsgdGVzdGIgJDB4NDUsICUlYWg7IHNldHogJSVhbCIJICAgICAgXAoJCSA6
ICI9YSIgKF9fcmVzdWx0KSA6ICJ1IiAoeCksICJ0IiAoeSkgOiAiY2MiLCAic3QiLCAic3Qo
MSkiKTsgXAoJX19yZXN1bHQ7IH0pCgojICBkZWZpbmUgaXNsZXNzZXF1YWwoeCwgeSkgXAog
ICAgICh7IHJlZ2lzdGVyIGNoYXIgX19yZXN1bHQ7CQkJCQkJICAgICAgXAoJX19hc21fXyAo
ImZ1Y29tcHA7IGZuc3RzdzsgdGVzdGIgJDB4MDUsICUlYWg7IHNldHogJSVhbCIJICAgICAg
XAoJCSA6ICI9YSIgKF9fcmVzdWx0KSA6ICJ1IiAoeCksICJ0IiAoeSkgOiAiY2MiLCAic3Qi
LCAic3QoMSkiKTsgXAoJX19yZXN1bHQ7IH0pCgojICBkZWZpbmUgaXNsZXNzZ3JlYXRlcih4
LCB5KSBcCiAgICAgKHsgcmVnaXN0ZXIgY2hhciBfX3Jlc3VsdDsJCQkJCQkgICAgICBcCglf
X2FzbV9fICgiZnVjb21wcDsgZm5zdHN3OyB0ZXN0YiAkMHg0NCwgJSVhaDsgc2V0eiAlJWFs
IgkgICAgICBcCgkJIDogIj1hIiAoX19yZXN1bHQpIDogInUiICh5KSwgInQiICh4KSA6ICJj
YyIsICJzdCIsICJzdCgxKSIpOyBcCglfX3Jlc3VsdDsgfSkKCiMgIGRlZmluZSBpc3Vub3Jk
ZXJlZCh4LCB5KSBcCiAgICAgKHsgcmVnaXN0ZXIgY2hhciBfX3Jlc3VsdDsJCQkJCQkgICAg
ICBcCglfX2FzbV9fICgiZnVjb21wcDsgZm5zdHN3OyBzYWhmOyBzZXRwICUlYWwiCQkJICAg
ICAgXAoJCSA6ICI9YSIgKF9fcmVzdWx0KSA6ICJ1IiAoeSksICJ0IiAoeCkgOiAiY2MiLCAi
c3QiLCAic3QoMSkiKTsgXAoJX19yZXN1bHQ7IH0pCiMgZW5kaWYJLyogX19pNjg2X18gKi8K
Ci8qIFRoZSBnY2MsIHZlcnNpb24gMi43IG9yIGJlbG93LCBoYXMgcHJvYmxlbXMgd2l0aCBh
bGwgdGhpcyBpbmxpbmluZwogICBjb2RlLiAgU28gZGlzYWJsZSBpdCBmb3IgdGhpcyB2ZXJz
aW9uIG9mIHRoZSBjb21waWxlci4gICovCiMgaWYgKF9fR05VQ19fID4gMiB8fCAoX19HTlVD
X18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+IDcpKQovKiBUZXN0IGZvciBuZWdhdGl2ZSBu
dW1iZXIuICBVc2VkIGluIHRoZSBzaWduYml0KCkgbWFjcm8uICAqLwpfX01BVEhfSU5MSU5F
IGludApfX3NpZ25iaXRmIChmbG9hdCBfX3gpCnsKICBfX2V4dGVuc2lvbl9fIHVuaW9uIHsg
ZmxvYXQgX19mOyBpbnQgX19pOyB9IF9fdSA9IHsgX19mOiBfX3ggfTsKICByZXR1cm4gX191
Ll9faSA8IDA7Cn0KX19NQVRIX0lOTElORSBpbnQKX19zaWduYml0IChkb3VibGUgX194KQp7
CiAgX19leHRlbnNpb25fXyB1bmlvbiB7IGRvdWJsZSBfX2Q7IGludCBfX2lbMl07IH0gX191
ID0geyBfX2Q6IF9feCB9OwogIHJldHVybiBfX3UuX19pWzFdIDwgMDsKfQpfX01BVEhfSU5M
SU5FIGludApfX3NpZ25iaXRsIChsb25nIGRvdWJsZSBfX3gpCnsKICBfX2V4dGVuc2lvbl9f
IHVuaW9uIHsgbG9uZyBkb3VibGUgX19sOyBpbnQgX19pWzNdOyB9IF9fdSA9IHsgX19sOiBf
X3ggfTsKICByZXR1cm4gKF9fdS5fX2lbMl0gJiAweDgwMDApICE9IDA7Cn0KIyBlbmRpZgoj
ZW5kaWYKCgovKiBUaGUgZ2NjLCB2ZXJzaW9uIDIuNyBvciBiZWxvdywgaGFzIHByb2JsZW1z
IHdpdGggYWxsIHRoaXMgaW5saW5pbmcKICAgY29kZS4gIFNvIGRpc2FibGUgaXQgZm9yIHRo
aXMgdmVyc2lvbiBvZiB0aGUgY29tcGlsZXIuICAqLwojaWYgZGVmaW5lZCBfX0dOVUNfXyAm
JiAoX19HTlVDX18gPiAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fID4g
NykpCgojaWYgKCghZGVmaW5lZCBfX05PX01BVEhfSU5MSU5FUyB8fCBkZWZpbmVkIF9fTElC
Q19JTlRFUk5BTF9NQVRIX0lOTElORVMpIFwKICAgICAmJiBkZWZpbmVkIF9fT1BUSU1JWkVf
XykKCi8qIEEgbWFjcm8gdG8gZGVmaW5lIGZsb2F0LCBkb3VibGUsIGFuZCBsb25nIGRvdWJs
ZSB2ZXJzaW9ucyBvZiB2YXJpb3VzCiAgIG1hdGggZnVuY3Rpb25zIGZvciB0aGUgaXg4NyBG
UFUuICBGVU5DIGlzIHRoZSBmdW5jdGlvbiBuYW1lICh3aGljaCB3aWxsCiAgIGJlIHN1ZmZp
eGVkIHdpdGggZiBhbmQgbCBmb3IgdGhlIGZsb2F0IGFuZCBsb25nIGRvdWJsZSB2ZXJzaW9u
LAogICByZXNwZWN0aXZlbHkpLiAgT1AgaXMgdGhlIG5hbWUgb2YgdGhlIEZQVSBvcGVyYXRp
b24uICAqLwoKI2lmIGRlZmluZWQgX19VU0VfTUlTQyB8fCBkZWZpbmVkIF9fVVNFX0lTT0M5
WAojIGRlZmluZSBfX2lubGluZV9tYXRob3AoZnVuYywgb3ApIFwKICBfX2lubGluZV9tYXRo
b3BfIChkb3VibGUsIGZ1bmMsIG9wKQkJCQkJICAgICAgXAogIF9faW5saW5lX21hdGhvcF8g
KGZsb2F0LCBfX0NPTkNBVChmdW5jLGYpLCBvcCkJCQkgICAgICBcCiAgX19pbmxpbmVfbWF0
aG9wXyAobG9uZyBkb3VibGUsIF9fQ09OQ0FUKGZ1bmMsbCksIG9wKQojZWxzZQojIGRlZmlu
ZSBfX2lubGluZV9tYXRob3AoZnVuYywgb3ApIFwKICBfX2lubGluZV9tYXRob3BfIChkb3Vi
bGUsIGZ1bmMsIG9wKQojZW5kaWYKCiNkZWZpbmUgX19pbmxpbmVfbWF0aG9wXyhmbG9hdF90
eXBlLCBmdW5jLCBvcCkgXAogIF9faW5saW5lX21hdGhvcF9kZWNsXyAoZmxvYXRfdHlwZSwg
ZnVuYywgb3AsICIwIiAoX194KSkKCgojaWYgZGVmaW5lZCBfX1VTRV9NSVNDIHx8IGRlZmlu
ZWQgX19VU0VfSVNPQzlYCiMgZGVmaW5lIF9faW5saW5lX21hdGhvcF9kZWNsKGZ1bmMsIG9w
LCBwYXJhbXMuLi4pIFwKICBfX2lubGluZV9tYXRob3BfZGVjbF8gKGRvdWJsZSwgZnVuYywg
b3AsIHBhcmFtcykJCQkgICAgICBcCiAgX19pbmxpbmVfbWF0aG9wX2RlY2xfIChmbG9hdCwg
X19DT05DQVQoZnVuYyxmKSwgb3AsIHBhcmFtcykJCSAgICAgIFwKICBfX2lubGluZV9tYXRo
b3BfZGVjbF8gKGxvbmcgZG91YmxlLCBfX0NPTkNBVChmdW5jLGwpLCBvcCwgcGFyYW1zKQoj
ZWxzZQojIGRlZmluZSBfX2lubGluZV9tYXRob3BfZGVjbChmdW5jLCBvcCwgcGFyYW1zLi4u
KSBcCiAgX19pbmxpbmVfbWF0aG9wX2RlY2xfIChkb3VibGUsIGZ1bmMsIG9wLCBwYXJhbXMp
CiNlbmRpZgoKI2RlZmluZSBfX2lubGluZV9tYXRob3BfZGVjbF8oZmxvYXRfdHlwZSwgZnVu
Yywgb3AsIHBhcmFtcy4uLikgXAogIF9fTUFUSF9JTkxJTkUgZmxvYXRfdHlwZSBmdW5jIChm
bG9hdF90eXBlKTsJCQkJICAgICAgXAogIF9fTUFUSF9JTkxJTkUgZmxvYXRfdHlwZSBmdW5j
IChmbG9hdF90eXBlIF9feCkJCQkgICAgICBcCiAgewkJCQkJCQkJCSAgICAgIFwKICAgIHJl
Z2lzdGVyIGZsb2F0X3R5cGUgX19yZXN1bHQ7CQkJCQkgICAgICBcCiAgICBfX2FzbSBfX3Zv
bGF0aWxlX18gKG9wIDogIj10IiAoX19yZXN1bHQpIDogcGFyYW1zKTsJCQkgICAgICBcCiAg
ICByZXR1cm4gX19yZXN1bHQ7CQkJCQkJCSAgICAgIFwKICB9CgoKI2lmIGRlZmluZWQgX19V
U0VfTUlTQyB8fCBkZWZpbmVkIF9fVVNFX0lTT0M5WAojIGRlZmluZSBfX2lubGluZV9tYXRo
Y29kZShmdW5jLCBhcmcsIGNvZGUpIFwKICBfX2lubGluZV9tYXRoY29kZV8gKGRvdWJsZSwg
ZnVuYywgYXJnLCBjb2RlKQkJCQkgICAgICBcCiAgX19pbmxpbmVfbWF0aGNvZGVfIChmbG9h
dCwgX19DT05DQVQoZnVuYyxmKSwgYXJnLCBjb2RlKQkJICAgICAgXAogIF9faW5saW5lX21h
dGhjb2RlXyAobG9uZyBkb3VibGUsIF9fQ09OQ0FUKGZ1bmMsbCksIGFyZywgY29kZSkKIyBk
ZWZpbmUgX19pbmxpbmVfbWF0aGNvZGUyKGZ1bmMsIGFyZzEsIGFyZzIsIGNvZGUpIFwKICBf
X2lubGluZV9tYXRoY29kZTJfIChkb3VibGUsIGZ1bmMsIGFyZzEsIGFyZzIsIGNvZGUpCQkJ
ICAgICAgXAogIF9faW5saW5lX21hdGhjb2RlMl8gKGZsb2F0LCBfX0NPTkNBVChmdW5jLGYp
LCBhcmcxLCBhcmcyLCBjb2RlKQkgICAgICBcCiAgX19pbmxpbmVfbWF0aGNvZGUyXyAobG9u
ZyBkb3VibGUsIF9fQ09OQ0FUKGZ1bmMsbCksIGFyZzEsIGFyZzIsIGNvZGUpCiMgZGVmaW5l
IF9faW5saW5lX21hdGhjb2RlMyhmdW5jLCBhcmcxLCBhcmcyLCBhcmczLCBjb2RlKSBcCiAg
X19pbmxpbmVfbWF0aGNvZGUzXyAoZG91YmxlLCBmdW5jLCBhcmcxLCBhcmcyLCBhcmczLCBj
b2RlKQkJICAgICAgXAogIF9faW5saW5lX21hdGhjb2RlM18gKGZsb2F0LCBfX0NPTkNBVChm
dW5jLGYpLCBhcmcxLCBhcmcyLCBhcmczLCBjb2RlKQkgICAgICBcCiAgX19pbmxpbmVfbWF0
aGNvZGUzXyAobG9uZyBkb3VibGUsIF9fQ09OQ0FUKGZ1bmMsbCksIGFyZzEsIGFyZzIsIGFy
ZzMsIGNvZGUpCiNlbHNlCiMgZGVmaW5lIF9faW5saW5lX21hdGhjb2RlKGZ1bmMsIGFyZywg
Y29kZSkgXAogIF9faW5saW5lX21hdGhjb2RlXyAoZG91YmxlLCBmdW5jLCAoYXJnKSwgY29k
ZSkKIyBkZWZpbmUgX19pbmxpbmVfbWF0aGNvZGUyKGZ1bmMsIGFyZzEsIGFyZzIsIGNvZGUp
IFwKICBfX2lubGluZV9tYXRoY29kZTJfIChkb3VibGUsIGZ1bmMsIGFyZzEsIGFyZzIsIGNv
ZGUpCiMgZGVmaW5lIF9faW5saW5lX21hdGhjb2RlMyhmdW5jLCBhcmcxLCBhcmcyLCBhcmcz
LCBjb2RlKSBcCiAgX19pbmxpbmVfbWF0aGNvZGUzXyAoZG91YmxlLCBmdW5jLCBhcmcxLCBh
cmcyLCBhcmczLCBjb2RlKQojZW5kaWYKCiNkZWZpbmUgX19pbmxpbmVfbWF0aGNvZGVfKGZs
b2F0X3R5cGUsIGZ1bmMsIGFyZywgY29kZSkgXAogIF9fTUFUSF9JTkxJTkUgZmxvYXRfdHlw
ZSBmdW5jIChmbG9hdF90eXBlKTsJCQkJICAgICAgXAogIF9fTUFUSF9JTkxJTkUgZmxvYXRf
dHlwZSBmdW5jIChmbG9hdF90eXBlIGFyZykJCQkgICAgICBcCiAgewkJCQkJCQkJCSAgICAg
IFwKICAgIGNvZGU7CQkJCQkJCQkgICAgICBcCiAgfQoKI2RlZmluZSBfX2lubGluZV9tYXRo
Y29kZTJfKGZsb2F0X3R5cGUsIGZ1bmMsIGFyZzEsIGFyZzIsIGNvZGUpIFwKICBfX01BVEhf
SU5MSU5FIGZsb2F0X3R5cGUgZnVuYyAoZmxvYXRfdHlwZSwgZmxvYXRfdHlwZSk7CQkgICAg
ICBcCiAgX19NQVRIX0lOTElORSBmbG9hdF90eXBlIGZ1bmMgKGZsb2F0X3R5cGUgYXJnMSwg
ZmxvYXRfdHlwZSBhcmcyKQkgICAgICBcCiAgewkJCQkJCQkJCSAgICAgIFwKICAgIGNvZGU7
CQkJCQkJCQkgICAgICBcCiAgfQoKI2RlZmluZSBfX2lubGluZV9tYXRoY29kZTNfKGZsb2F0
X3R5cGUsIGZ1bmMsIGFyZzEsIGFyZzIsIGFyZzMsIGNvZGUpIFwKICBfX01BVEhfSU5MSU5F
IGZsb2F0X3R5cGUgZnVuYyAoZmxvYXRfdHlwZSwgZmxvYXRfdHlwZSwgZmxvYXRfdHlwZSk7
CSAgICAgIFwKICBfX01BVEhfSU5MSU5FIGZsb2F0X3R5cGUgZnVuYyAoZmxvYXRfdHlwZSBh
cmcxLCBmbG9hdF90eXBlIGFyZzIsCSAgICAgIFwKCQkJCSBmbG9hdF90eXBlIGFyZzMpCQkJ
ICAgICAgXAogIHsJCQkJCQkJCQkgICAgICBcCiAgICBjb2RlOwkJCQkJCQkJICAgICAgXAog
IH0KI2VuZGlmCgoKI2lmICFkZWZpbmVkIF9fTk9fTUFUSF9JTkxJTkVTICYmIGRlZmluZWQg
X19PUFRJTUlaRV9fCi8qIE1pc2NlbGxhbmVvdXMgZnVuY3Rpb25zICovCgpfX2lubGluZV9t
YXRoY29kZSAoX19zZ24sIF9feCwgXAogIHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9f
eCA+IDAuMCA/IDEuMCA6IC0xLjApKQoKX19pbmxpbmVfbWF0aGNvZGUgKF9fcG93MiwgX194
LCBcCiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsJCQkJCQkgICAgICBcCiAgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsJCQkJCSAgICAgIFwKICBfX2V4dGVuc2lv
bl9fIGxvbmcgbG9uZyBpbnQgX19wID0gKGxvbmcgbG9uZyBpbnQpIF9feDsJCSAgICAgIFwK
ICBpZiAoX194ID09IChsb25nIGRvdWJsZSkgX19wKQkJCQkJCSAgICAgIFwKICAgIHsJCQkJ
CQkJCQkgICAgICBcCiAgICAgIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCSAgICAgIFwKCSgi
ZnNjYWxlIgkJCQkJCQkgICAgICBcCgkgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoMS4wKSwg
InUiIChfX3gpKTsJCQkgICAgICBcCiAgICAgIHJldHVybiBfX3ZhbHVlOwkJCQkJCQkgICAg
ICBcCiAgICB9CQkJCQkJCQkJICAgICAgXAogIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkg
ICAgICBcCiAgICAoImZsZAklJXN0KDApXG5cdCIJCQkJCQkgICAgICBcCiAgICAgImZybmRp
bnQJCQkjIGludCh4KVxuXHQiCQkJCSAgICAgIFwKICAgICAiZnhjaFxuXHQiCQkJCQkJCQkg
ICAgICBcCiAgICAgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4KVxuXHQiCQkJCSAgICAgIFwK
ICAgICAiZjJ4bTEJCQkjIDJeKGZyYWN0KHgpKSAtIDFcblx0IgkJCSAgICAgIFwKICAgICA6
ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7CQkJICAg
ICAgXAogIF9fdmFsdWUgKz0gMS4wOwkJCQkJCQkgICAgICBcCiAgX19hc20gX192b2xhdGls
ZV9fCQkJCQkJCSAgICAgIFwKICAgICgiZnNjYWxlIgkJCQkJCQkJICAgICAgXAogICAgIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsJCSAg
ICAgIFwKICByZXR1cm4gX192YWx1ZSkKCiNkZWZpbmUgX19zaW5jb3NfY29kZSBcCiAgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgX19jb3NyOwkJCQkJCSAgICAgIFwKICByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3NpbnI7CQkJCQkJICAgICAgXAogIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJ
CQkgICAgICBcCiAgICAoImZzaW5jb3Ncblx0IgkJCQkJCQkgICAgICBcCiAgICAgImZuc3Rz
dwklJWF4XG5cdCIJCQkJCQkgICAgICBcCiAgICAgInRlc3RsCSQweDQwMCwgJSVlYXhcblx0
IgkJCQkJICAgICAgXAogICAgICJqegkxZlxuXHQiCQkJCQkJCSAgICAgIFwKICAgICAiZmxk
cGlcblx0IgkJCQkJCQkgICAgICBcCiAgICAgImZhZGQJJSVzdCgwKVxuXHQiCQkJCQkJICAg
ICAgXAogICAgICJmeGNoCSUlc3QoMSlcblx0IgkJCQkJCSAgICAgIFwKICAgICAiMjogZnBy
ZW0xXG5cdCIJCQkJCQkJICAgICAgXAogICAgICJmbnN0c3cJJSVheFxuXHQiCQkJCQkJICAg
ICAgXAogICAgICJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIJCQkJCSAgICAgIFwKICAgICAi
am56CTJiXG5cdCIJCQkJCQkJICAgICAgXAogICAgICJmc3RwCSUlc3QoMSlcblx0IgkJCQkJ
CSAgICAgIFwKICAgICAiZnNpbmNvc1xuXHQiCQkJCQkJCSAgICAgIFwKICAgICAiMToiCQkJ
CQkJCQkgICAgICBcCiAgICAgOiAiPXQiIChfX2Nvc3IpLCAiPXUiIChfX3NpbnIpIDogIjAi
IChfX3gpKTsJCQkgICAgICBcCiAgKl9fc2lueCA9IF9fc2lucjsJCQkJCQkJICAgICAgXAog
ICpfX2Nvc3ggPSBfX2Nvc3IKCl9fTUFUSF9JTkxJTkUgdm9pZCBfX3NpbmNvcyAoZG91Ymxl
IF9feCwgZG91YmxlICpfX3NpbngsIGRvdWJsZSAqX19jb3N4KTsKX19NQVRIX0lOTElORSB2
b2lkCl9fc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpfX2Nv
c3gpCnsKICBfX3NpbmNvc19jb2RlOwp9CgpfX01BVEhfSU5MSU5FIHZvaWQgX19zaW5jb3Nm
IChmbG9hdCBfX3gsIGZsb2F0ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpOwpfX01BVEhfSU5M
SU5FIHZvaWQKX19zaW5jb3NmIChmbG9hdCBfX3gsIGZsb2F0ICpfX3NpbngsIGZsb2F0ICpf
X2Nvc3gpCnsKICBfX3NpbmNvc19jb2RlOwp9CgpfX01BVEhfSU5MSU5FIHZvaWQgX19zaW5j
b3NsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX3NpbngsCgkJCSAgICAgIGxv
bmcgZG91YmxlICpfX2Nvc3gpOwpfX01BVEhfSU5MSU5FIHZvaWQKX19zaW5jb3NsIChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX3NpbngsIGxvbmcgZG91YmxlICpfX2Nvc3gp
CnsKICBfX3NpbmNvc19jb2RlOwp9CgoKLyogT3B0aW1pemVkIGlubGluZSBpbXBsZW1lbnRh
dGlvbiwgc29tZXRpbWVzIHdpdGggcmVkdWNlZCBwcmVjaXNpb24KICAgYW5kL29yIGFyZ3Vt
ZW50IHJhbmdlLiAgKi8KCiNkZWZpbmUgX19leHBtMV9jb2RlIFwKICByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgIFwKICByZWdpc3RlciBsb25nIGRvdWJsZSBf
X2V4cG9uZW50OwkJCQkJICAgICAgXAogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdGVtcDsJ
CQkJCQkgICAgICBcCiAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgIFwKICAgICgi
ZmxkbDJlCQkJIyBlXnggLSAxID0gMl4oeCAqIGxvZzIoZSkpIC0gMVxuXHQiCSAgICAgIFwK
ICAgICAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIJCQkgICAgICBcCiAgICAg
ImZzdAklJXN0KDEpXG5cdCIJCQkJCQkgICAgICBcCiAgICAgImZybmRpbnQJCQkjIGludCh4
ICogbG9nMihlKSlcblx0IgkJCSAgICAgIFwKICAgICAiZnhjaFxuXHQiCQkJCQkJCQkgICAg
ICBcCiAgICAgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IgkJICAg
ICAgXAogICAgICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0Igkg
ICAgICBcCiAgICAgImZzY2FsZQkJCSMgMl4oeCAqIGxvZzIoZSkpIC0gMl4oaW50KHggKiBs
b2cyKGUpKSlcblx0IiBcCiAgICAgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVu
dCkgOiAiMCIgKF9feCkpOwkJCSAgICAgIFwKICBfX2FzbSBfX3ZvbGF0aWxlX18JCQkJCQkJ
ICAgICAgXAogICAgKCJmc2NhbGUJCQkjIDJeaW50KHggKiBsb2cyKGUpKVxuXHQiCQkgICAg
ICBcCiAgICAgOiAiPXQiIChfX3RlbXApIDogIjAiICgxLjApLCAidSIgKF9fZXhwb25lbnQp
KTsJCQkgICAgICBcCiAgX190ZW1wIC09IDEuMDsJCQkJCQkJICAgICAgXAogIHJldHVybiBf
X3RlbXAgKyBfX3ZhbHVlCl9faW5saW5lX21hdGhjb2RlXyAobG9uZyBkb3VibGUsIF9fZXhw
bTFsLCBfX3gsIF9fZXhwbTFfY29kZSkKCgojZGVmaW5lIF9fZXhwX2NvZGUgXAogIHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CQkJCQkJICAgICAgXAogIHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fZXhwb25lbnQ7CQkJCQkgICAgICBcCiAgX19hc20gX192b2xhdGlsZV9fCQkJ
CQkJCSAgICAgIFwKICAgICgiZmxkbDJlCQkJIyBlXnggPSAyXih4ICogbG9nMihlKSlcblx0
IgkJICAgICAgXAogICAgICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IgkJCSAg
ICAgIFwKICAgICAiZnN0CSUlc3QoMSlcblx0IgkJCQkJCSAgICAgIFwKICAgICAiZnJuZGlu
dAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiCQkJICAgICAgXAogICAgICJmeGNoXG5cdCIJ
CQkJCQkJCSAgICAgIFwKICAgICAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUp
KVxuXHQiCQkgICAgICBcCiAgICAgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkp
IC0gMVxuXHQiCSAgICAgIFwKICAgICA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9u
ZW50KSA6ICIwIiAoX194KSk7CQkJICAgICAgXAogIF9fdmFsdWUgKz0gMS4wOwkJCQkJCQkg
ICAgICBcCiAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgIFwKICAgICgiZnNjYWxl
IgkJCQkJCQkJICAgICAgXAogICAgIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUp
LCAidSIgKF9fZXhwb25lbnQpKTsJCSAgICAgIFwKICByZXR1cm4gX192YWx1ZQpfX2lubGlu
ZV9tYXRoY29kZSAoZXhwLCBfX3gsIF9fZXhwX2NvZGUpCl9faW5saW5lX21hdGhjb2RlXyAo
bG9uZyBkb3VibGUsIF9fZXhwbCwgX194LCBfX2V4cF9jb2RlKQoKCl9faW5saW5lX21hdGhj
b2RlICh0YW4sIF9feCwgXAogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CQkJCQkJ
ICAgICAgXAogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUyIF9fYXR0cmlidXRlX18g
KChfX3VudXNlZF9fKSk7CQkgICAgICBcCiAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAg
ICAgIFwKICAgICgiZnB0YW4iCQkJCQkJCQkgICAgICBcCiAgICAgOiAiPXQiIChfX3ZhbHVl
MiksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsJCQkgICAgICBcCiAgcmV0dXJuIF9f
dmFsdWUpCgoKI2RlZmluZSBfX2F0YW4yX2NvZGUgXAogIHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7CQkJCQkJICAgICAgXAogIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkgICAg
ICBcCiAgICAoImZwYXRhbiIJCQkJCQkJCSAgICAgIFwKICAgICA6ICI9dCIgKF9fdmFsdWUp
IDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsJCSAgICAgIFwKICByZXR1cm4g
X192YWx1ZQpfX2lubGluZV9tYXRoY29kZTIgKGF0YW4yLCBfX3ksIF9feCwgX19hdGFuMl9j
b2RlKQpfX2lubGluZV9tYXRoY29kZTJfIChsb25nIGRvdWJsZSwgX19hdGFuMmwsIF9feSwg
X194LCBfX2F0YW4yX2NvZGUpCgoKX19pbmxpbmVfbWF0aGNvZGUyIChmbW9kLCBfX3gsIF9f
eSwgXAogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CQkJCQkJICAgICAgXAogIF9f
YXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkgICAgICBcCiAgICAoIjE6CWZwcmVtXG5cdCIJCQkJ
CQkgICAgICBcCiAgICAgImZuc3RzdwklJWF4XG5cdCIJCQkJCQkgICAgICBcCiAgICAgInNh
aGZcblx0IgkJCQkJCQkJICAgICAgXAogICAgICJqcAkxYiIJCQkJCQkJICAgICAgXAogICAg
IDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIp
OwkJICAgICAgXAogIHJldHVybiBfX3ZhbHVlKQoKCl9faW5saW5lX21hdGhjb2RlMiAocG93
LCBfX3gsIF9feSwgXAogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CQkJCQkJICAg
ICAgXAogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7CQkJCQkgICAgICBcCiAg
X19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3k7
CQkgICAgICBcCiAgaWYgKF9feCA9PSAwLjAgJiYgX195ID4gMC4wKQkJCQkJCSAgICAgIFwK
ICAgIHJldHVybiAwLjA7CQkJCQkJCQkgICAgICBcCiAgaWYgKF9feSA9PSAoZG91YmxlKSBf
X3ApCQkJCQkJICAgICAgXAogICAgewkJCQkJCQkJCSAgICAgIFwKICAgICAgbG9uZyBkb3Vi
bGUgX19yID0gMS4wOwkJCQkJCSAgICAgIFwKICAgICAgaWYgKF9fcCA9PSAwKQkJCQkJCQkg
ICAgICBcCglyZXR1cm4gMS4wOwkJCQkJCQkgICAgICBcCiAgICAgIGlmIChfX3AgPCAwKQkJ
CQkJCQkgICAgICBcCgl7CQkJCQkJCQkgICAgICBcCgkgIF9fcCA9IC1fX3A7CQkJCQkJCSAg
ICAgIFwKCSAgX194ID0gMS4wIC8gX194OwkJCQkJCSAgICAgIFwKCX0JCQkJCQkJCSAgICAg
IFwKICAgICAgd2hpbGUgKDEpCQkJCQkJCQkgICAgICBcCgl7CQkJCQkJCQkgICAgICBcCgkg
IGlmIChfX3AgJiAxKQkJCQkJCQkgICAgICBcCgkgICAgX19yICo9IF9feDsJCQkJCQkJICAg
ICAgXAoJICBfX3AgPj49IDE7CQkJCQkJCSAgICAgIFwKCSAgaWYgKF9fcCA9PSAwKQkJCQkJ
CQkgICAgICBcCgkgICAgcmV0dXJuIF9fcjsJCQkJCQkJICAgICAgXAoJICBfX3ggKj0gX194
OwkJCQkJCQkgICAgICBcCgl9CQkJCQkJCQkgICAgICBcCiAgICAgIC8qIE5PVFJFQUNIRUQg
Ki8JCQkJCQkJICAgICAgXAogICAgfQkJCQkJCQkJCSAgICAgIFwKICBfX2FzbSBfX3ZvbGF0
aWxlX18JCQkJCQkJICAgICAgXAogICAgKCJmeWwyeCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIw
IiAoX194KSwgInUiICgxLjApIDogInN0KDEpIik7CSAgICAgIFwKICBfX2FzbSBfX3ZvbGF0
aWxlX18JCQkJCQkJICAgICAgXAogICAgKCJmbXVsCSUlc3QoMSkJCSMgeSAqIGxvZzIoeClc
blx0IgkJCSAgICAgIFwKICAgICAiZnN0CSUlc3QoMSlcblx0IgkJCQkJCSAgICAgIFwKICAg
ICAiZnJuZGludAkJCSMgaW50KHkgKiBsb2cyKHgpKVxuXHQiCQkJICAgICAgXAogICAgICJm
eGNoXG5cdCIJCQkJCQkJCSAgICAgIFwKICAgICAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHkg
KiBsb2cyKHgpKVxuXHQiCQkgICAgICBcCiAgICAgImYyeG0xCQkJIyAyXihmcmFjdCh5ICog
bG9nMih4KSkpIC0gMVxuXHQiCSAgICAgIFwKICAgICA6ICI9dCIgKF9fdmFsdWUpLCAiPXUi
IChfX2V4cG9uZW50KSA6ICIwIiAoX195KSwgIjEiIChfX3ZhbHVlKSk7CSAgICAgIFwKICBf
X3ZhbHVlICs9IDEuMDsJCQkJCQkJICAgICAgXAogIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJ
CQkgICAgICBcCiAgICAoImZzY2FsZSIJCQkJCQkJCSAgICAgIFwKICAgICA6ICI9dCIgKF9f
dmFsdWUpIDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7CQkgICAgICBcCiAg
cmV0dXJuIF9fdmFsdWUpCgoKX19pbmxpbmVfbWF0aG9wIChzcXJ0LCAiZnNxcnQiKQpfX2lu
bGluZV9tYXRob3BfIChsb25nIGRvdWJsZSwgX19zcXJ0bCwgImZzcXJ0IikKCiNpZiBkZWZp
bmVkIF9fR05VQ19fICYmIChfX0dOVUNfXyA+IDIgfHwgX19HTlVDX18gPT0gMiAmJiBfX0dO
VUNfTUlOT1JfXyA+PSA4KQpfX2lubGluZV9tYXRoY29kZV8gKGRvdWJsZSwgZmFicywgX194
LCByZXR1cm4gX19idWlsdGluX2ZhYnMgKF9feCkpCl9faW5saW5lX21hdGhjb2RlXyAoZmxv
YXQsIGZhYnNmLCBfX3gsIHJldHVybiBfX2J1aWx0aW5fZmFic2YgKF9feCkpCl9faW5saW5l
X21hdGhjb2RlXyAobG9uZyBkb3VibGUsIGZhYnNsLCBfX3gsIHJldHVybiBfX2J1aWx0aW5f
ZmFic2wgKF9feCkpCl9faW5saW5lX21hdGhjb2RlXyAobG9uZyBkb3VibGUsIF9fZmFic2ws
IF9feCwgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194KSkKI2Vsc2UKX19pbmxpbmVfbWF0
aG9wIChmYWJzLCAiZmFicyIpCl9faW5saW5lX21hdGhvcF8gKGxvbmcgZG91YmxlLCBfX2Zh
YnNsLCAiZmFicyIpCiNlbmRpZgoKLyogVGhlIGFyZ3VtZW50IHJhbmdlIG9mIHRoaXMgaW5s
aW5lIHZlcnNpb24gaXMgcmVkdWNlZC4gICovCl9faW5saW5lX21hdGhvcCAoc2luLCAiZnNp
biIpCi8qIFRoZSBhcmd1bWVudCByYW5nZSBvZiB0aGlzIGlubGluZSB2ZXJzaW9uIGlzIHJl
ZHVjZWQuICAqLwpfX2lubGluZV9tYXRob3AgKGNvcywgImZjb3MiKQoKX19pbmxpbmVfbWF0
aG9wX2RlY2wgKGF0YW4sICJmbGQxOyBmcGF0YW4iLCAiMCIgKF9feCkgOiAic3QoMSkiKQpf
X2lubGluZV9tYXRob3BfZGVjbCAobG9nLCAiZmxkbG4yOyBmeGNoOyBmeWwyeCIsICIwIiAo
X194KSA6ICJzdCgxKSIpCl9faW5saW5lX21hdGhvcF9kZWNsIChsb2cxMCwgImZsZGxnMjsg
ZnhjaDsgZnlsMngiLCAiMCIgKF9feCkgOiAic3QoMSkiKQoKX19pbmxpbmVfbWF0aGNvZGUg
KGFzaW4sIF9feCwgcmV0dXJuIF9fYXRhbjJsIChfX3gsIF9fc3FydGwgKDEuMCAtIF9feCAq
IF9feCkpKQpfX2lubGluZV9tYXRoY29kZSAoYWNvcywgX194LCByZXR1cm4gX19hdGFuMmwg
KF9fc3FydGwgKDEuMCAtIF9feCAqIF9feCksIF9feCkpCgpfX2lubGluZV9tYXRoY29kZV8g
KGxvbmcgZG91YmxlLCBfX3NnbjFsLCBfX3gsIHJldHVybiBfX3ggPj0gMC4wID8gMS4wIDog
LTEuMCkKCgovKiBUaGUgYXJndW1lbnQgcmFuZ2Ugb2YgdGhlIGlubGluZSB2ZXJzaW9uIG9m
IHNpbmhsIGlzIHNsaWdodGx5IHJlZHVjZWQuICAqLwpfX2lubGluZV9tYXRoY29kZSAoc2lu
aCwgX194LCBcCiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKF9f
ZmFic2wgKF9feCkpOwkJICAgICAgXAogIHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9fZXht
MSArIDEuMCkgKyBfX2V4bTEpICogX19zZ24xbCAoX194KSkKCl9faW5saW5lX21hdGhjb2Rl
IChjb3NoLCBfX3gsIFwKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4ID0gX19leHBsIChf
X3gpOwkJCQkgICAgICBcCiAgcmV0dXJuIDAuNSAqIChfX2V4ICsgMS4wIC8gX19leCkpCgpf
X2lubGluZV9tYXRoY29kZSAodGFuaCwgX194LCBcCiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X19leG0xID0gX19leHBtMWwgKC1fX2ZhYnNsIChfX3ggKyBfX3gpKTsJICAgICAgXAogIHJl
dHVybiBfX2V4bTEgLyAoX19leG0xICsgMi4wKSAqIF9fc2duMWwgKC1fX3gpKQoKCl9faW5s
aW5lX21hdGhjb2RlIChmbG9vciwgX194LCBcCiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsJCQkJCQkgICAgICBcCiAgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19j
dzsJCQkJCSAgICAgIFwKICBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1w
OwkJCQkgICAgICBcCiAgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChf
X2N3KSk7CQkJCSAgICAgIFwKICBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAw
OyAvKiByb3VuZGluZyBkb3duICovCQkgICAgICBcCiAgX19hc20gX192b2xhdGlsZSAoImZs
ZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7CQkJICAgICAgXAogIF9fYXNtIF9fdm9sYXRp
bGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsJCSAgICAgIFwK
ICBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsJCQkJICAg
ICAgXAogIHJldHVybiBfX3ZhbHVlKQoKX19pbmxpbmVfbWF0aGNvZGUgKGNlaWwsIF9feCwg
XAogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CQkJCQkJICAgICAgXAogIF9fdm9s
YXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7CQkJCQkgICAgICBcCiAgX192b2xhdGls
ZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsJCQkJICAgICAgXAogIF9fYXNtIF9fdm9s
YXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOwkJCQkgICAgICBcCiAgX19jd3Rt
cCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgLyogcm91bmRpbmcgdXAgKi8JCQkgICAg
ICBcCiAgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7
CQkJICAgICAgXAogIF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFs
dWUpIDogIjAiIChfX3gpKTsJCSAgICAgIFwKICBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cg
JTAiIDogOiAibSIgKF9fY3cpKTsJCQkJICAgICAgXAogIHJldHVybiBfX3ZhbHVlKQoKI2Rl
ZmluZSBfX2xkZXhwX2NvZGUgXAogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7CQkJ
CQkJICAgICAgXAogIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkgICAgICBcCiAgICAoImZz
Y2FsZSIJCQkJCQkJCSAgICAgIFwKICAgICA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gp
LCAidSIgKChsb25nIGRvdWJsZSkgX195KSk7CQkgICAgICBcCiAgcmV0dXJuIF9fdmFsdWUK
Cl9fTUFUSF9JTkxJTkUgZG91YmxlIGxkZXhwIChkb3VibGUgX194LCBpbnQgX195KTsKX19N
QVRIX0lOTElORSBkb3VibGUKbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX3kpCnsKICBfX2xk
ZXhwX2NvZGU7Cn0KCgovKiBPcHRpbWl6ZWQgdmVyc2lvbnMgZm9yIHNvbWUgbm9uLXN0YW5k
YXJkaXplZCBmdW5jdGlvbnMuICAqLwojaWYgZGVmaW5lZCBfX1VTRV9JU09DOVggfHwgZGVm
aW5lZCBfX1VTRV9NSVNDCgpfX2lubGluZV9tYXRoY29kZSAoZXhwbTEsIF9feCwgX19leHBt
MV9jb2RlKQoKLyogV2UgY2Fubm90IHJlbHkgb24gTV9TUVJUIGJlaW5nIGRlZmluZWQuICBT
byB3ZSBkbyBpdCBmb3Igb3Vyc2VsZgogICBoZXJlLiAgKi8KIyBkZWZpbmUgX19NX1NRUlQy
CTEuNDE0MjEzNTYyMzczMDk1MDQ4ODBMCS8qIHNxcnQoMikgKi8KCl9faW5saW5lX21hdGhj
b2RlIChsb2cxcCwgX194LCBcCiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsJCQkJ
CQkgICAgICBcCiAgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogX19NX1NRUlQy
KQkJCQkgICAgICBcCiAgICBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsJCQkJCQkgICAg
ICBcCiAgZWxzZQkJCQkJCQkJCSAgICAgIFwKICAgIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJ
CQkgICAgICBcCiAgICAgICgiZmxkbG4yXG5cdCIJCQkJCQkJICAgICAgXAogICAgICAgImZ4
Y2hcblx0IgkJCQkJCQkgICAgICBcCiAgICAgICAiZnlsMnhwMSIJCQkJCQkJICAgICAgXAog
ICAgICAgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOwkJCQkgICAg
ICBcCiAgcmV0dXJuIF9fdmFsdWUpCgoKLyogVGhlIGFyZ3VtZW50IHJhbmdlIG9mIHRoZSBp
bmxpbmUgdmVyc2lvbiBvZiBhc2luaGwgaXMgc2xpZ2h0bHkgcmVkdWNlZC4gICovCl9faW5s
aW5lX21hdGhjb2RlIChhc2luaCwgX194LCBcCiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgIF9f
eSA9IF9fZmFic2wgKF9feCk7CQkJCSAgICAgIFwKICByZXR1cm4gKGxvZzFwbCAoX195ICog
X195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KQkgICAgICBc
CgkgICogX19zZ24xbCAoX194KSkpCgpfX2lubGluZV9tYXRoY29kZSAoYWNvc2gsIF9feCwg
XAogIHJldHVybiBsb2dsIChfX3ggKyBfX3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAo
X194ICsgMS4wKSkpCgpfX2lubGluZV9tYXRoY29kZSAoYXRhbmgsIF9feCwgXAogIHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7CQkJCSAgICAgIFwKICByZXR1
cm4gLTAuNSAqIGxvZzFwbCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24x
bCAoX194KSkKCi8qIFRoZSBhcmd1bWVudCByYW5nZSBvZiB0aGUgaW5saW5lIHZlcnNpb24g
b2YgaHlwb3RsIGlzIHNsaWdodGx5IHJlZHVjZWQuICAqLwpfX2lubGluZV9tYXRoY29kZTIg
KGh5cG90LCBfX3gsIF9feSwgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9f
eSkpCgpfX2lubGluZV9tYXRoY29kZShsb2diLCBfX3gsIFwKICByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOwkJCQkJCSAgICAgIFwKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1
bms7CQkJCQkJICAgICAgXAogIF9fYXNtIF9fdm9sYXRpbGVfXwkJCQkJCQkgICAgICBcCiAg
ICAoImZ4dHJhY3Rcblx0IgkJCQkJCQkgICAgICBcCiAgICAgOiAiPXQiIChfX2p1bmspLCAi
PXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7CQkJICAgICAgXAogIHJldHVybiBfX3ZhbHVl
KQoKI2VuZGlmCgojaWZkZWYgX19VU0VfSVNPQzlYCl9faW5saW5lX21hdGhvcF9kZWNsIChs
b2cyLCAiZmxkMTsgZnhjaDsgZnlsMngiLCAiMCIgKF9feCkgOiAic3QoMSkiKQoKX19NQVRI
X0lOTElORSBmbG9hdCBsZGV4cGYgKGZsb2F0IF9feCwgaW50IF9feSk7Cl9fTUFUSF9JTkxJ
TkUgZmxvYXQKbGRleHBmIChmbG9hdCBfX3gsIGludCBfX3kpCnsKICBfX2xkZXhwX2NvZGU7
Cn0KCl9fTUFUSF9JTkxJTkUgbG9uZyBkb3VibGUgbGRleHBsIChsb25nIGRvdWJsZSBfX3gs
IGludCBfX3kpOwpfX01BVEhfSU5MSU5FIGxvbmcgZG91YmxlCmxkZXhwbCAobG9uZyBkb3Vi
bGUgX194LCBpbnQgX195KQp7CiAgX19sZGV4cF9jb2RlOwp9CgpfX2lubGluZV9tYXRoY29k
ZTMgKGZtYSwgX194LCBfX3ksIF9feiwgcmV0dXJuIChfX3ggKiBfX3kpICsgX196KQoKX19p
bmxpbmVfbWF0aG9wKHJpbnQsICJmcm5kaW50IikKCiNkZWZpbmUgX19scmludF9jb2RlIFwK
ICBsb25nIGludCBfX2xyaW50cmVzOwkJCQkJCQkgICAgICBcCiAgX19hc21fXyBfX3ZvbGF0
aWxlX18JCQkJCQkJICAgICAgXAogICAgKCJmaXN0cGwgJTAiCQkJCQkJCSAgICAgIFwKICAg
ICA6ICI9bSIgKF9fbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7CQkJCSAgICAgIFwK
ICByZXR1cm4gX19scmludHJlcwpfX01BVEhfSU5MSU5FIGxvbmcgaW50CmxyaW50ZiAoZmxv
YXQgX194KQp7CiAgX19scmludF9jb2RlOwp9Cl9fTUFUSF9JTkxJTkUgbG9uZyBpbnQKbHJp
bnQgKGRvdWJsZSBfX3gpCnsKICBfX2xyaW50X2NvZGU7Cn0KX19NQVRIX0lOTElORSBsb25n
IGludApscmludGwgKGxvbmcgZG91YmxlIF9feCkKewogIF9fbHJpbnRfY29kZTsKfQojdW5k
ZWYgX19scmludF9jb2RlCgojZGVmaW5lIF9fbGxyaW50X2NvZGUgXAogIGxvbmcgbG9uZyBp
bnQgX19sbHJpbnRyZXM7CQkJCQkJICAgICAgXAogIF9fYXNtX18gX192b2xhdGlsZV9fCQkJ
CQkJCSAgICAgIFwKICAgICgiZmlzdHBsbCAlMCIJCQkJCQkJICAgICAgXAogICAgIDogIj1t
IiAoX19sbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7CQkJCSAgICAgIFwKICByZXR1
cm4gX19sbHJpbnRyZXMKX19NQVRIX0lOTElORSBsb25nIGxvbmcgaW50CmxscmludGYgKGZs
b2F0IF9feCkKewogIF9fbGxyaW50X2NvZGU7Cn0KX19NQVRIX0lOTElORSBsb25nIGxvbmcg
aW50CmxscmludCAoZG91YmxlIF9feCkKewogIF9fbGxyaW50X2NvZGU7Cn0KX19NQVRIX0lO
TElORSBsb25nIGxvbmcgaW50CmxscmludGwgKGxvbmcgZG91YmxlIF9feCkKewogIF9fbGxy
aW50X2NvZGU7Cn0KI3VuZGVmIF9fbGxyaW50X2NvZGUKCiNlbmRpZgoKCiNpZmRlZiBfX1VT
RV9NSVNDCgpfX2lubGluZV9tYXRoY29kZTIgKGRyZW0sIF9feCwgX195LCBcCiAgcmVnaXN0
ZXIgZG91YmxlIF9fdmFsdWU7CQkJCQkJICAgICAgXAogIHJlZ2lzdGVyIGludCBfX2Nsb2Ji
ZXJlZDsJCQkJCQkgICAgICBcCiAgX19hc20gX192b2xhdGlsZV9fCQkJCQkJCSAgICAgIFwK
ICAgICgiMToJZnByZW0xXG5cdCIJCQkJCQkgICAgICBcCiAgICAgImZzdHN3CSUlYXhcblx0
IgkJCQkJCSAgICAgIFwKICAgICAic2FoZlxuXHQiCQkJCQkJCQkgICAgICBcCiAgICAgImpw
CTFiIgkJCQkJCQkgICAgICBcCiAgICAgOiAiPXQiIChfX3ZhbHVlKSwgIj0mYSIgKF9fY2xv
YmJlcmVkKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImNjIik7ICAgIFwKICByZXR1cm4g
X192YWx1ZSkKCgovKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gdGhlIGBpc2Zpbml0ZScg
bWFjcm8uICAqLwpfX01BVEhfSU5MSU5FIGludCBfX2Zpbml0ZSAoZG91YmxlIF9feCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpfX01BVEhfSU5MSU5FIGludApfX2Zpbml0ZSAo
ZG91YmxlIF9feCkKewogIHJldHVybiAoX19leHRlbnNpb25fXwoJICAoKCgoKHVuaW9uIHsg
ZG91YmxlIF9fZDsgaW50IF9faVsyXTsgfSkge19fZDogX194fSkuX19pWzFdCgkgICAgIHwg
MHg4MDBmZmZmZnUpICsgMSkgPj4gMzEpKTsKfQoKLyogTWlzY2VsbGFuZW91cyBmdW5jdGlv
bnMgKi8KCl9faW5saW5lX21hdGhjb2RlIChfX2Nvc2htMSwgX194LCBcCiAgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKF9fZmFic2wgKF9feCkpOwkJICAgICAg
XAogIHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkpICogX19leG0xKQoK
X19pbmxpbmVfbWF0aGNvZGUgKF9fYWNvc2gxcCwgX194LCBcCiAgcmV0dXJuIGxvZzFwbCAo
X194ICsgX19zcXJ0bCAoX194KSAqIF9fc3FydGwgKF9feCArIDIuMCkpKQoKI2VuZGlmIC8q
IF9fVVNFX01JU0MgICovCgovKiBVbmRlZmluZSBzb21lIG9mIHRoZSBsYXJnZSBtYWNyb3Mg
d2hpY2ggYXJlIG5vdCB1c2VkIGFueW1vcmUuICAqLwojdW5kZWYgX19leHBtMV9jb2RlCiN1
bmRlZiBfX2V4cF9jb2RlCiN1bmRlZiBfX2F0YW4yX2NvZGUKI3VuZGVmIF9fc2luY29zX2Nv
ZGUKCiNlbmRpZiAvKiBfX05PX01BVEhfSU5MSU5FUyAgKi8KCgovKiBUaGlzIGNvZGUgaXMg
dXNlZCBpbnRlcm5hbGx5IGluIHRoZSBHTlUgbGliYy4gICovCiNpZmRlZiBfX0xJQkNfSU5U
RVJOQUxfTUFUSF9JTkxJTkVTCl9faW5saW5lX21hdGhvcCAoX19pZWVlNzU0X3NxcnQsICJm
c3FydCIpCl9faW5saW5lX21hdGhjb2RlMiAoX19pZWVlNzU0X2F0YW4yLCBfX3ksIF9feCwK
CQkgICAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsKCQkgICAgX19hc20gX192b2xh
dGlsZV9fICgiZnBhdGFuXG5cdCIKCQkJCQk6ICI9dCIgKF9fdmFsdWUpCgkJCQkJOiAiMCIg
KF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOwoJCSAgICByZXR1cm4gX192YWx1ZTspCiNl
bmRpZgoKI2VuZGlmIC8qIF9fR05VQ19fICAqLwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4v
Zm9vLmNjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjY0ADAw
MDMzMDUAMDAxMTYzNwAwMDAwMDAwMDAyMQAwNzU2NDIzMzYxNAAwMTExNTMAIDAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtZW5nZWwA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9zcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2luY2x1ZGUgPGNtYXRoPgoAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuL3Jl
cHJvZHVjZV9pdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDc3NQAwMDAz
MzA1ADAwMTE2MzcAMDAwMDAwMDA1NjMAMDc1NjQ1MDE1NTIAMDEyNTA1ACAwAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbWVuZ2VsAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvc3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAACMhL2Jpbi9zaAoKSU5DTFVERVM9IiAtbm9zdGRpbmMg
LUkuL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMSAtSS4vbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUgLUkuL2luY2x1ZGUvZysrLXYzL2k2ODYt
cGMtbGludXgtZ251IC1JLi9pbmNsdWRlL2crKy12MyAtSS4vdXNyL2luY2x1ZGUiCgplY2hv
IHBsYWluCmcrKyAke0lOQ0xVREVTfSAtYyBmb28uY2MKCmVjaG8gd2l0aCAtTyAtLXBlZGFu
dGljCmcrKyAke0lOQ0xVREVTfSAtYyAtTyAtLXBlZGFudGljIGZvby5jYwoKZWNobyB3aXRo
IC1PIC0tcGVkYW50aWMtZXJyb3JzCmcrKyAke0lOQ0xVREVTfSAtYyAtTyAtLXBlZGFudGlj
LWVycm9ycyBmb28uY2MKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAA==
--------------000801000200090106090205--
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: c++/8549: --pedantic-errors problems on RedHat 6.1
@ 2002-11-19 18:02 bangerth
0 siblings, 0 replies; 6+ messages in thread
From: bangerth @ 2002-11-19 18:02 UTC (permalink / raw)
To: gcc-bugs, gcc-prs, mengel, nobody
Synopsis: --pedantic-errors problems on RedHat 6.1
State-Changed-From-To: open->feedback
State-Changed-By: bangerth
State-Changed-When: Tue Nov 12 10:21:26 2002
State-Changed-Why:
You have a very old system... I cannot reproduce this
problem with a more recent distribtion, neither with
3.0, 3.1, or 3.2.
Nevertheless, if you want us
to look at the problem, please tell us what happens exactly
at the lines indicated in std_cmath. Probably, there are
initializers used that come from system headers. Please also
provide preprocessed files as described on the gcc homepage.
(However, in this case we would need both information I
mentioned above.)
Could you please also test 3.2.1 once it will be released in
a few days?
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8549
^ permalink raw reply [flat|nested] 6+ messages in thread
* c++/8549: --pedantic-errors problems on RedHat 6.1
@ 2002-11-19 16:10 mengel
0 siblings, 0 replies; 6+ messages in thread
From: mengel @ 2002-11-19 16:10 UTC (permalink / raw)
To: gcc-gnats
>Number: 8549
>Category: c++
>Synopsis: --pedantic-errors problems on RedHat 6.1
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Nov 12 09:26:06 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: Marc Mengel
>Release: 3.1
>Organization:
>Environment:
i686-pc-linux-gnu, Red Hat 6.1
>Description:
--pedantic-error causes compilation failures when
--pedantic is silent. This happens only on RedHat 6.1,
not sure why. This fails similarly in 3.0.1 and 3.1.
>How-To-Repeat:
echo "#include <cmath>" > foo.cc
g++ -c -O --pedantic foo.cc
g++ -c -O --pedantic-errors foo.cc
For me, the first yeilds no warnings or errors, while
the second yeilds:
In file included from /afs/fnal.gov/ups/gcc/v3_0_1/Linux+2.2/include/g++-v3/cmath:31,
from foo.cc:1:
/afs/fnal.gov/ups/gcc/v3_0_1/Linux+2.2/include/g++-v3/bits/std_cmath.h: In
function `int __gnu_cxx::__capture_isgreater(_Tp, _Tp)':
/afs/fnal.gov/ups/gcc/v3_0_1/Linux+2.2/include/g++-v3/bits/std_cmath.h:534: ISO C++ forbids braced-groups within expressions
/afs/fnal.gov/ups/gcc/v3_0_1/Linux+2.2/include/g++-v3/bits/std_cmath.h: In
function `int __gnu_cxx::__capture_isgreaterequal(_Tp, _Tp)':
/afs/fnal.gov/ups/gcc/v3_0_1/Linux+2.2/include/g++-v3/bits/std_cmath.h:539: ISO C++ forbids braced-groups within expressions
/afs/fnal.gov/ups/gcc/v3_0_1/Linux+2.2/include/g++-v3/bits/std_cmath.h: In
function `int __gnu_cxx::__capture_isless(_Tp, _Tp)':
/afs/fnal.gov/ups/gcc/v3_0_1/Linux+2.2/include/g++-v3/bits/std_cmath.h:543: ISO C++ forbids braced-groups within expressions
...
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2002-11-13 23:26 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-20 6:59 c++/8549: --pedantic-errors problems on RedHat 6.1 Marc Mengel
-- strict thread matches above, loose matches on Subject: below --
2002-11-20 6:56 Zack Weinberg
2002-11-19 18:37 bangerth
2002-11-19 18:36 Marc Mengel
2002-11-19 18:02 bangerth
2002-11-19 16:10 mengel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).