public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: Marc Mengel <mengel@fnal.gov> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, Subject: Re: c++/8549: --pedantic-errors problems on RedHat 6.1 Date: Tue, 19 Nov 2002 18:36:00 -0000 [thread overview] Message-ID: <20021113170602.22163.qmail@sources.redhat.com> (raw) 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--
next reply other threads:[~2002-11-13 17:06 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-11-19 18:36 Marc Mengel [this message] -- strict thread matches above, loose matches on Subject: below -- 2002-11-20 6:59 Marc Mengel 2002-11-20 6:56 Zack Weinberg 2002-11-19 18:37 bangerth 2002-11-19 18:02 bangerth 2002-11-19 16:10 mengel
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20021113170602.22163.qmail@sources.redhat.com \ --to=mengel@fnal.gov \ --cc=gcc-prs@gcc.gnu.org \ --cc=nobody@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).