<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>41048</bug_id>
          
          <creation_ts>2010-06-23 00:21:58 -0700</creation_ts>
          <short_desc>Rename HTML5EntityParser to HTMLEntityParser</short_desc>
          <delta_ts>2010-06-23 00:49:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>241716</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-23 00:21:58 -0700</bug_when>
    <thetext>Rename HTML5EntityParser to HTMLEntityParser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241717</commentid>
    <comment_count>1</comment_count>
      <attachid>59485</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-23 00:23:33 -0700</bug_when>
    <thetext>Created attachment 59485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241718</commentid>
    <comment_count>2</comment_count>
      <attachid>59485</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-23 00:29:23 -0700</bug_when>
    <thetext>Comment on attachment 59485
Patch

LGTM, so long as the consumeHTMLEntity rename won&apos;t conflict with the other entity parser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241720</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-23 00:33:34 -0700</bug_when>
    <thetext>Attachment 59485 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/3334610</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241722</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-23 00:37:19 -0700</bug_when>
    <thetext>Attachment 59485 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3307587</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241726</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-23 00:49:21 -0700</bug_when>
    <thetext>Committed r61672: &lt;http://trac.webkit.org/changeset/61672&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59485</attachid>
            <date>2010-06-23 00:23:33 -0700</date>
            <delta_ts>2010-06-23 00:29:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41048-20100623002331.patch</filename>
            <type>text/plain</type>
            <size>35354</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTY2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDYtMjMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5h
bWUgSFRNTDVFbnRpdHlQYXJzZXIgdG8gSFRNTEVudGl0eVBhcnNlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEwNDgKKworICAgICAgICBNb3N0bHkg
dGhlIHJlc3VsdCBvZiBkby13ZWJjb3JlLXJlbmFtZSwgYnV0IEkgdHdlYWtlZCB0aGUgaGVhZGVy
IGd1YXJkCisgICAgICAgIGFuZCB0aGUgbmFtZSBvZiB0aGUgZnJlZSBmdW5jdGlvbi4KKworICAg
ICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hU
TUw1RW50aXR5UGFyc2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0hUTUw1RW50aXR5
UGFyc2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcDog
Q29waWVkIGZyb20gV2ViQ29yZS9odG1sL0hUTUw1RW50aXR5UGFyc2VyLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN1bWVIVE1MRW50aXR5KToKKyAgICAgICAgKiBodG1sL0hUTUxFbnRpdHlQ
YXJzZXIuaDogQ29waWVkIGZyb20gV2ViQ29yZS9odG1sL0hUTUw1RW50aXR5UGFyc2VyLmguCisg
ICAgICAgICogaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
b2tlbml6ZXI6OnByb2Nlc3NFbnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXpl
cjo6bmV4dFRva2VuKToKKwogMjAxMC0wNi0yMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9B
bmRyb2lkLm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQW5kcm9pZC5tawkocmV2aXNpb24gNjE2
NjcpCisrKyBXZWJDb3JlL0FuZHJvaWQubWsJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw3ICsyNDks
NyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKIAlodG1sL0ZpbGUu
Y3BwIFwKIAlodG1sL0ZpbGVMaXN0LmNwcCBcCiAJaHRtbC9Gb3JtRGF0YUxpc3QuY3BwIFwKLQlo
dG1sL0hUTUw1RW50aXR5UGFyc2VyLmNwcCBcCisJaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcCBc
CiAJaHRtbC9IVE1MVG9rZW5pemVyLmNwcCBcCiAJaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNw
cCBcCiAJaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNwcCBcCkluZGV4OiBXZWJDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDYxNjY3KQorKysgV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTA2
LDcgKzkwNiw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0ZpbGUuY3BwCiAgICAg
aHRtbC9GaWxlTGlzdC5jcHAKICAgICBodG1sL0Zvcm1EYXRhTGlzdC5jcHAKLSAgICBodG1sL0hU
TUw1RW50aXR5UGFyc2VyLmNwcAorICAgIGh0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAKICAgICBo
dG1sL0hUTUxUb2tlbml6ZXIuY3BwCiAgICAgaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcAog
ICAgIGh0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTE3MTIsNyArMTcxMiw3IEBAIEFE
RF9TT1VSQ0VfREVSSVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1IKIEFERF9TT1VSQ0VfREVSSVZF
RF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
IENvbG9yRGF0YS5jcHApCiBBRERfU09VUkNFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09S
RV9ESVJ9L2Nzcy9DU1NQYXJzZXIuY3BwIHRva2VuaXplci5jcHApCiBBRERfU09VUkNFX0RFUklW
RURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2h0bWwvUHJlbG9hZFNjYW5uZXIuY3BwIEhU
TUxFbnRpdHlOYW1lcy5jcHApCi1BRERfU09VUkNFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VC
Q09SRV9ESVJ9L2h0bWwvSFRNTDVFbnRpdHlQYXJzZXIuY3BwIEhUTUxFbnRpdHlOYW1lcy5jcHAp
CitBRERfU09VUkNFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2h0bWwvSFRN
TEVudGl0eVBhcnNlci5jcHAgSFRNTEVudGl0eU5hbWVzLmNwcCkKIEFERF9TT1VSQ0VfREVSSVZF
RF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0vY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIFVz
ZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgVXNlckFnZW50U3R5bGVTaGVldHMuaCkKIAogR0VO
RVJBVEVfRE9NX05BTUVTX0ZBQ1RPUlkoSFRNTCAke1dFQkNPUkVfRElSfS9odG1sL0hUTUxUYWdO
YW1lcy5pbiAke1dFQkNPUkVfRElSfS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiAiJHtIVE1M
X0ZFQVRVUkVTfSIpCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDYxNjY3KQorKysgV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTA4Niw4ICsxMDg2LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlXZWJDb3JlL2h0bWwvRmlsZVRocmVhZFRhc2suaCBcCiAJV2ViQ29yZS9o
dG1sL0Zvcm1EYXRhTGlzdC5jcHAgXAogCVdlYkNvcmUvaHRtbC9Gb3JtRGF0YUxpc3QuaCBcCi0J
V2ViQ29yZS9odG1sL0hUTUw1RW50aXR5UGFyc2VyLmNwcCBcCi0JV2ViQ29yZS9odG1sL0hUTUw1
RW50aXR5UGFyc2VyLmggXAorCVdlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcCBcCisJ
V2ViQ29yZS9odG1sL0hUTUxFbnRpdHlQYXJzZXIuaCBcCiAJV2ViQ29yZS9odG1sL0hUTUxUb2tl
bml6ZXIuY3BwIFwKIAlXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oIFwKIAlXZWJDb3JlL2h0
bWwvSFRNTDVUb2tlbi5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA2MTY2NykKKysrIFdlYkNvcmUvV2Vi
Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcxLDggKzE0NzEsOCBAQAogICAgICAgICAg
ICAgJ2h0bWwvRmlsZVRocmVhZFRhc2suaCcsCiAgICAgICAgICAgICAnaHRtbC9Gb3JtRGF0YUxp
c3QuY3BwJywKICAgICAgICAgICAgICdodG1sL0Zvcm1EYXRhTGlzdC5oJywKLSAgICAgICAgICAg
ICdodG1sL0hUTUw1RW50aXR5UGFyc2VyLmNwcCcsCi0gICAgICAgICAgICAnaHRtbC9IVE1MNUVu
dGl0eVBhcnNlci5oJywKKyAgICAgICAgICAgICdodG1sL0hUTUxFbnRpdHlQYXJzZXIuY3BwJywK
KyAgICAgICAgICAgICdodG1sL0hUTUxFbnRpdHlQYXJzZXIuaCcsCiAgICAgICAgICAgICAnaHRt
bC9IVE1MVG9rZW5pemVyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MVG9rZW5pemVyLmgn
LAogICAgICAgICAgICAgJ2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAnLApJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZp
c2lvbiA2MTY2NykKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTYx
MSw3ICs2MTEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL0ZpbGVTdHJlYW1Qcm94eS5jcHAg
XAogICAgIGh0bWwvRmlsZVRocmVhZC5jcHAgXAogICAgIGh0bWwvRm9ybURhdGFMaXN0LmNwcCBc
Ci0gICAgaHRtbC9IVE1MNUVudGl0eVBhcnNlci5jcHAgXAorICAgIGh0bWwvSFRNTEVudGl0eVBh
cnNlci5jcHAgXAogICAgIGh0bWwvSFRNTFRva2VuaXplci5jcHAgXAogICAgIGh0bWwvSFRNTDVE
b2N1bWVudFBhcnNlci5jcHAgXAogICAgIGh0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgXApJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2MTY2NykK
KysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkK
QEAgLTMzMzg1LDExICszMzM4NSwxMSBAQAogCQkJCT4NCiAgICAgICAgICAgICA8L0ZpbGU+DQog
ICAgICAgICAgICAgPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUw1RW50aXR5
UGFyc2VyLmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxFbnRpdHlQYXJzZXIu
Y3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0i
Li5caHRtbFxIVE1MNUVudGl0eVBhcnNlci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
SFRNTEVudGl0eVBhcnNlci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQpJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDYx
NjY3KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTI1NTQsOCArMjU1NCw4IEBACiAJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5
MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTczRTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9h
ZE5vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTc2RTJCQTcxMUNBRTRERTAwNkM1NkEwIC8qIENTU1ByZWxvYWRTY2FubmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkUyQkE1MTFD
QUU0REUwMDZDNTZBMCAvKiBDU1NQcmVsb2FkU2Nhbm5lci5jcHAgKi87IH07CiAJCTk3NkUyQkE4
MTFDQUU0REUwMDZDNTZBMCAvKiBDU1NQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RTJCQTYxMUNBRTRERTAwNkM1NkEwIC8q
IENTU1ByZWxvYWRTY2FubmVyLmggKi87IH07Ci0JCTk3NkU4OTYwMTFDMENBM0EwMEVBOUNBOSAv
KiBIVE1MNUVudGl0eVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzZFODk1RTExQzBDQTNBMDBFQTlDQTkgLyogSFRNTDVFbnRpdHlQYXJz
ZXIuY3BwICovOyB9OwotCQk5NzZFODk2MTExQzBDQTNBMDBFQTlDQTkgLyogSFRNTDVFbnRpdHlQ
YXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
NkU4OTVGMTFDMENBM0EwMEVBOUNBOSAvKiBIVE1MNUVudGl0eVBhcnNlci5oICovOyB9OworCQk5
NzZFODk2MDExQzBDQTNBMDBFQTlDQTkgLyogSFRNTEVudGl0eVBhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZFODk1RTExQzBDQTNBMDBF
QTlDQTkgLyogSFRNTEVudGl0eVBhcnNlci5jcHAgKi87IH07CisJCTk3NkU4OTYxMTFDMENBM0Ew
MEVBOUNBOSAvKiBIVE1MRW50aXR5UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZFODk1RjExQzBDQTNBMDBFQTlDQTkgLyogSFRNTEVudGl0
eVBhcnNlci5oICovOyB9OwogCQk5NzlGNDNEMzEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RT
Y2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCAqLzsg
fTsKIAkJOTc5RjQzRDQxMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzlGNDNEMjEwNzVF
NDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0MwNzg1MDExNjVENUJFMDAzQTMyRUYgLyog
U3VmZml4VHJlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTdDMDc4NEYxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCAqLzsgfTsKQEAgLTgx
NjAsOCArODE2MCw4IEBACiAJCTk3M0UzMjU1MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxv
YWROb3RpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxv
YWROb3RpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzZFMkJBNTExQ0FF
NERFMDA2QzU2QTAgLyogQ1NTUHJlbG9hZFNjYW5uZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzZFMkJBNjExQ0FFNERFMDA2QzU2QTAgLyogQ1NTUHJlbG9hZFNjYW5u
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUHJlbG9hZFNjYW5uZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTc2RTg5NUUxMUMwQ0EzQTAwRUE5Q0E5
IC8qIEhUTUw1RW50aXR5UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUw1RW50aXR5UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOTc2RTg5NUYxMUMwQ0EzQTAwRUE5Q0E5IC8qIEhUTUw1RW50aXR5UGFyc2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUw1RW50aXR5UGFyc2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NkU4OTVFMTFDMENBM0EwMEVBOUNBOSAvKiBIVE1MRW50
aXR5UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxF
bnRpdHlQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzZFODk1RjEx
QzBDQTNBMDBFQTlDQTkgLyogSFRNTEVudGl0eVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIVE1MRW50aXR5UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3OUY0M0QxMTA3NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWRpcmVjdFNjaGVkdWxlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgz
QiAvKiBSZWRpcmVjdFNjaGVkdWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWRpcmVjdFNjaGVkdWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0Mw
Nzg0RjExNjVENUJFMDAzQTMyRUYgLyogU3VmZml4VHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdWZmaXhUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMzQ3OSw4ICsxMzQ3OSw4IEBACiAJCQkJQTgxMzZEMzYwOTczQThFNzAwRDc0NDYzIC8qIEZv
cm1EYXRhTGlzdC5oICovLAogCQkJCUE4NzEwMzg4MTFBMjk0NzAwMERCRDUwRSAvKiBIVE1MNURv
Y3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCQlBODcxMDM4OTExQTI5NDcwMDBEQkQ1MEUgLyogSFRN
TDVEb2N1bWVudFBhcnNlci5oICovLAotCQkJCTk3NkU4OTVFMTFDMENBM0EwMEVBOUNBOSAvKiBI
VE1MNUVudGl0eVBhcnNlci5jcHAgKi8sCi0JCQkJOTc2RTg5NUYxMUMwQ0EzQTAwRUE5Q0E5IC8q
IEhUTUw1RW50aXR5UGFyc2VyLmggKi8sCisJCQkJOTc2RTg5NUUxMUMwQ0EzQTAwRUE5Q0E5IC8q
IEhUTUxFbnRpdHlQYXJzZXIuY3BwICovLAorCQkJCTk3NkU4OTVGMTFDMENBM0EwMEVBOUNBOSAv
KiBIVE1MRW50aXR5UGFyc2VyLmggKi8sCiAJCQkJOTdFOEIzNTQxMUEyM0NFMjAwMTY5NDA5IC8q
IEhUTUxUb2tlbml6ZXIuY3BwICovLAogCQkJCTk3RThCMzU1MTFBMjNDRTIwMDE2OTQwOSAvKiBI
VE1MVG9rZW5pemVyLmggKi8sCiAJCQkJOTdFNzkzNjMxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1
UHJlbG9hZFNjYW5uZXIuY3BwICovLApAQCAtMTgwNDYsNyArMTgwNDYsNyBAQAogCQkJCTkzMDdG
MUQ4MEFGMkQ1OTAwMERCQTMxQSAvKiBIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzNCQzI5QzBFOTFBQjBGMDA4MzU1ODggLyogSG9zdFdpbmRvdy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTg3MTAzOEIxMUEyOTQ3MDAwREJENTBFIC8qIEhUTUw1RG9jdW1lbnRQYXJzZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTk3NkU4OTYxMTFDMENBM0EwMEVBOUNBOSAvKiBIVE1MNUVudGl0
eVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTc2RTg5NjExMUMwQ0EzQTAwRUE5Q0E5IC8q
IEhUTUxFbnRpdHlQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3RThCMzU3MTFBMjNDRTIw
MDE2OTQwOSAvKiBIVE1MVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0U3OTM2NjEx
QzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgzQjNBRjExMUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTIwMzg3LDcgKzIwMzg3LDcgQEAKIAkJCQk5MzYzQjYyQzBGOEU4RkUwMDA4
MDM4MTAgLyogSGlzdG9yeVByb3BlcnR5TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzA3
RjFENzBBRjJENTkwMDBEQkEzMUEgLyogSGl0VGVzdFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODcxMDM4QTExQTI5NDcwMDBEQkQ1MEUgLyogSFRNTDVEb2N1bWVudFBhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk5NzZFODk2MDExQzBDQTNBMDBFQTlDQTkgLyogSFRNTDVFbnRp
dHlQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTc2RTg5NjAxMUMwQ0EzQTAwRUE5Q0E5
IC8qIEhUTUxFbnRpdHlQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdFOEIzNTYxMUEy
M0NFMjAwMTY5NDA5IC8qIEhUTUxUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdF
NzkzNjUxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTgzQjNBRjAxMUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVy
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9odG1sL0hUTUw1RW50aXR5UGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTDVFbnRpdHlQYXJzZXIuY3BwCShy
ZXZpc2lvbiA2MTY2NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MNUVudGl0eVBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsMjQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IFRv
cmNoIE1vYmlsZSwgSW5jLiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJIVE1MNUVudGl0eVBhcnNlci5oIgotCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
Ci0vLyBVc2UgX19HTlVDX18gaW5zdGVhZCBvZiBQTEFURk9STShHQ0MpIHRvIHN0YXkgY29uc2lz
dGVudCB3aXRoIHRoZSBncGVyZiBnZW5lcmF0ZWQgYyBmaWxlCi0jaWZkZWYgX19HTlVDX18KLS8v
IFRoZSBtYWluIHBhcnNlciBpbmNsdWRlcyB0aGlzIHRvbyBzbyB3ZSBhcmUgZ2V0dGluZyB0d28g
Y29waWVzIG9mIHRoZSBkYXRhLiBIb3dldmVyLCB0aGlzIHdheSB0aGUgY29kZSBnZXRzIGlubGlu
ZWQuCi0jaW5jbHVkZSAiSFRNTEVudGl0eU5hbWVzLmNwcCIKLSNlbHNlCi0vLyBOb3QgaW5saW5l
ZCBmb3Igbm9uLUdDQyBjb21waWxlcnMKLXN0cnVjdCBFbnRpdHkgewotICAgIGNvbnN0IGNoYXIq
IG5hbWU7Ci0gICAgaW50IGNvZGU7Ci19OwotY29uc3Qgc3RydWN0IEVudGl0eSogZmluZEVudGl0
eShyZWdpc3RlciBjb25zdCBjaGFyKiBzdHIsIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBsZW4pOwot
I2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
bmFtZXNwYWNlIHsKLQotc3RhdGljIGNvbnN0IFVDaGFyIHdpbmRvd3NMYXRpbjFFeHRlbnNpb25B
cnJheVszMl0gPSB7Ci0gICAgMHgyMEFDLCAweDAwODEsIDB4MjAxQSwgMHgwMTkyLCAweDIwMUUs
IDB4MjAyNiwgMHgyMDIwLCAweDIwMjEsIC8vIDgwLTg3Ci0gICAgMHgwMkM2LCAweDIwMzAsIDB4
MDE2MCwgMHgyMDM5LCAweDAxNTIsIDB4MDA4RCwgMHgwMTdELCAweDAwOEYsIC8vIDg4LThGCi0g
ICAgMHgwMDkwLCAweDIwMTgsIDB4MjAxOSwgMHgyMDFDLCAweDIwMUQsIDB4MjAyMiwgMHgyMDEz
LCAweDIwMTQsIC8vIDkwLTk3Ci0gICAgMHgwMkRDLCAweDIxMjIsIDB4MDE2MSwgMHgyMDNBLCAw
eDAxNTMsIDB4MDA5RCwgMHgwMTdFLCAweDAxNzgsIC8vIDk4LTlGCi19OwotCi1pbmxpbmUgVUNo
YXIgYWRqdXN0RW50aXR5KHVuc2lnbmVkIHZhbHVlKQotewotICAgIGlmICgodmFsdWUgJiB+MHgx
RikgIT0gMHgwMDgwKQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgcmV0dXJuIHdpbmRvd3NM
YXRpbjFFeHRlbnNpb25BcnJheVt2YWx1ZSAtIDB4ODBdOwotfQotCi1pbmxpbmUgdW5zaWduZWQg
bGVnYWxFbnRpdHlGb3IodW5zaWduZWQgdmFsdWUpCi17Ci0gICAgLy8gRklYTUU6IEEgbnVtYmVy
IG9mIHNwZWNpZmljIGVudGl0eSB2YWx1ZXMgZ2VuZXJhdGUgcGFyc2UgZXJyb3JzLgotICAgIGlm
ICh2YWx1ZSA9PSAwIHx8IHZhbHVlID4gMHgxMEZGRkYgfHwgKHZhbHVlID49IDB4RDgwMCAmJiB2
YWx1ZSA8PSAweERGRkYpKQotICAgICAgICByZXR1cm4gMHhGRkZEOwotICAgIGlmICh2YWx1ZSA8
IDB4RkZGRikKLSAgICAgICAgcmV0dXJuIGFkanVzdEVudGl0eSh2YWx1ZSk7Ci0gICAgcmV0dXJu
IHZhbHVlOwotfQotCi1pbmxpbmUgYm9vbCBpc0hleERpZ2l0KFVDaGFyIGNjKQotewotICAgIHJl
dHVybiAoY2MgPj0gJzAnICYmIGNjIDw9ICc5JykgfHwgKGNjID49ICdhJyAmJiBjYyA8PSAnZicp
IHx8IChjYyA+PSAnQScgJiYgY2MgPD0gJ0YnKTsKLX0KLQotaW5saW5lIGJvb2wgaXNBbHBoYU51
bWVyaWMoVUNoYXIgY2MpCi17Ci0gICAgcmV0dXJuIChjYyA+PSAnMCcgJiYgY2MgPD0gJzknKSB8
fCAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgfHwgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpOwot
fQotCi12b2lkIHVuY29uc3VtZUNoYXJhY3RlcnMoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IFZlY3RvcjxVQ2hhciwgMTA+JiBjb25zdW1lZENoYXJhY3RlcnMpCi17Ci0gICAgaWYgKGNv
bnN1bWVkQ2hhcmFjdGVycy5zaXplKCkgPT0gMSkKLSAgICAgICAgc291cmNlLnB1c2goY29uc3Vt
ZWRDaGFyYWN0ZXJzWzBdKTsKLSAgICBlbHNlIGlmIChjb25zdW1lZENoYXJhY3RlcnMuc2l6ZSgp
ID09IDIpIHsKLSAgICAgICAgc291cmNlLnB1c2goY29uc3VtZWRDaGFyYWN0ZXJzWzBdKTsKLSAg
ICAgICAgc291cmNlLnB1c2goY29uc3VtZWRDaGFyYWN0ZXJzWzFdKTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgc291cmNlLnByZXBlbmQoU2VnbWVudGVkU3RyaW5nKFN0cmluZyhjb25zdW1lZENoYXJh
Y3RlcnMuZGF0YSgpLCBjb25zdW1lZENoYXJhY3RlcnMuc2l6ZSgpKSkpOwotfQotCi19Ci0KLXVu
c2lnbmVkIGNvbnN1bWVIVE1MNUVudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCYg
bm90RW5vdWdoQ2hhcmFjdGVycywgVUNoYXIgYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIpCi17
Ci0gICAgQVNTRVJUKCFhZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciB8fCBhZGRpdGlvbmFsQWxs
b3dlZENoYXJhY3RlciA9PSAnIicgfHwgYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJ1wn
JyB8fCBhZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnPicpOwotICAgIEFTU0VSVCghbm90
RW5vdWdoQ2hhcmFjdGVycyk7Ci0KLSAgICBlbnVtIEVudGl0eVN0YXRlIHsKLSAgICAgICAgSW5p
dGlhbCwKLSAgICAgICAgTnVtYmVyVHlwZSwKLSAgICAgICAgTWF5YmVIZXhMb3dlckNhc2VYLAot
ICAgICAgICBNYXliZUhleFVwcGVyQ2FzZVgsCi0gICAgICAgIEhleCwKLSAgICAgICAgRGVjaW1h
bCwKLSAgICAgICAgTmFtZWQKLSAgICB9OwotICAgIEVudGl0eVN0YXRlIGVudGl0eVN0YXRlID0g
SW5pdGlhbDsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIFZlY3RvcjxVQ2hhciwgMTA+
IGNvbnN1bWVkQ2hhcmFjdGVyczsKLSAgICBWZWN0b3I8Y2hhciwgMTA+IGVudGl0eU5hbWU7Ci0K
LSAgICB3aGlsZSAoIXNvdXJjZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgVUNoYXIgY2MgPSAqc291
cmNlOwotICAgICAgICBzd2l0Y2ggKGVudGl0eVN0YXRlKSB7Ci0gICAgICAgIGNhc2UgSW5pdGlh
bDogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2Mg
PT0gJ1x4MEMnIHx8IGNjID09ICcgJyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJyYnKQotICAgICAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxBbGxvd2VkQ2hh
cmFjdGVyICYmIGNjID09IGFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyKQotICAgICAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICAgICAgaWYgKGNjID09ICcjJykgewotICAgICAgICAgICAg
ICAgIGVudGl0eVN0YXRlID0gTnVtYmVyVHlwZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgfHwg
KGNjID49ICdBJyAmJiBjYyA8PSAnWicpKSB7Ci0gICAgICAgICAgICAgICAgZW50aXR5U3RhdGUg
PSBOYW1lZDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTnVtYmVyVHlwZTogewot
ICAgICAgICAgICAgaWYgKGNjID09ICd4JykgewotICAgICAgICAgICAgICAgIGVudGl0eVN0YXRl
ID0gTWF5YmVIZXhMb3dlckNhc2VYOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKGNjID09ICdYJykgewotICAgICAgICAgICAgICAgIGVudGl0
eVN0YXRlID0gTWF5YmVIZXhVcHBlckNhc2VYOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNjID49ICcwJyAmJiBjYyA8PSAnOScpIHsKLSAg
ICAgICAgICAgICAgICBlbnRpdHlTdGF0ZSA9IERlY2ltYWw7Ci0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzb3VyY2UucHVzaCgnIycpOwotICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBNYXliZUhleExvd2Vy
Q2FzZVg6IHsKLSAgICAgICAgICAgIGlmIChpc0hleERpZ2l0KGNjKSkgewotICAgICAgICAgICAg
ICAgIGVudGl0eVN0YXRlID0gSGV4OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgc291cmNlLnB1c2goJyMnKTsKLSAgICAgICAgICAgIHNvdXJj
ZS5wdXNoKCd4Jyk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIE1heWJlSGV4VXBwZXJDYXNlWDogewotICAgICAgICAgICAgaWYgKGlzSGV4RGlnaXQoY2Mp
KSB7Ci0gICAgICAgICAgICAgICAgZW50aXR5U3RhdGUgPSBIZXg7Ci0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzb3VyY2UucHVzaCgnIycpOwot
ICAgICAgICAgICAgc291cmNlLnB1c2goJ1gnKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgSGV4OiB7Ci0gICAgICAgICAgICBpZiAoY2MgPj0gJzAnICYm
IGNjIDw9ICc5JykKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxNiArIGNjIC0g
JzAnOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICdmJykKLSAgICAg
ICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxNiArIDEwICsgY2MgLSAnYSc7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ0YnKQotICAgICAgICAgICAgICAgIHJl
c3VsdCA9IHJlc3VsdCAqIDE2ICsgMTAgKyBjYyAtICdBJzsKLSAgICAgICAgICAgIGVsc2UgaWYg
KGNjID09ICc7JykgewotICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlUGFzdE5vbk5ld2xp
bmUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKLSAg
ICAgICAgICAgIH0gZWxzZSAKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3Io
cmVzdWx0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRGVj
aW1hbDogewotICAgICAgICAgICAgaWYgKGNjID49ICcwJyAmJiBjYyA8PSAnOScpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMTAgKyBjYyAtICcwJzsKLSAgICAgICAgICAgIGVs
c2UgaWYgKGNjID09ICc7JykgewotICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlUGFzdE5v
bk5ld2xpbmUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0
KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBsZWdhbEVudGl0
eUZvcihyZXN1bHQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBOYW1lZDogewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyB3cm9uZy4gV2Ug
bmVlZCB0byBmaW5kIHRoZSBsb25nZXN0IG1hdGNoaW5nIGVudGl0eS4KLSAgICAgICAgICAgIC8v
ICAgICAgICBUaGUgZXhhbXBsZXMgZnJvbSB0aGUgc3BlYyBhcmU6Ci0gICAgICAgICAgICAvLyAg
ICAgICAgICAgIEknbSAmbm90aXQ7IEkgdGVsbCB5b3UKLSAgICAgICAgICAgIC8vICAgICAgICAg
ICAgSSdtICZub3RpbjsgSSB0ZWxsIHlvdQotICAgICAgICAgICAgLy8gICAgICAgIEluIHRoZSBm
aXJzdCBjYXNlLCAiJm5vdCIgaXMgdGhlIGVudGl0eS4gIEluIHRoZSBzZWNvbmQKLSAgICAgICAg
ICAgIC8vICAgICAgICBjYXNlLCAiJm5vdGluOyIgaXMgdGhlIGVudGl0eS4KLSAgICAgICAgICAg
IC8vIEZJWE1FOiBPdXIgbGlzdCBvZiBIVE1MIGVudGl0aWVzIGlzIGluY29tcGxldGUuCi0gICAg
ICAgICAgICAvLyBGSVhNRTogVGhlIG51bWJlciA4IGJlbG93IGlzIGJvZ3VzLgotICAgICAgICAg
ICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpICYmIGVudGl0eU5hbWUuc2l6ZSgpIDw9IDgpIHsK
LSAgICAgICAgICAgICAgICBjYyA9ICpzb3VyY2U7Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09
ICc7JykgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBFbnRpdHkqIGVudGl0eSA9IGZpbmRF
bnRpdHkoZW50aXR5TmFtZS5kYXRhKCksIGVudGl0eU5hbWUuc2l6ZSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGVudGl0eSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmFk
dmFuY2VBbmRBU1NFUlQoJzsnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRp
dHktPmNvZGU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghaXNBbHBoYU51bWVy
aWMoY2MpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IEVudGl0eSogZW50aXR5ID0gZmlu
ZEVudGl0eShlbnRpdHlOYW1lLmRhdGEoKSwgZW50aXR5TmFtZS5zaXplKCkpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoZW50aXR5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBIVE1M
NSB0ZWxscyB1cyB0byBpZ25vcmUgdGhpcyBlbnRpdHksIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgbG9va2hlYWQgY2hhcmFjdGVyIGlz
ICc9Jy4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZGRpdGlvbmFsQWxsb3dlZENoYXJh
Y3RlciAmJiBjYyA9PSAnPScpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50aXR5LT5jb2RlOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBlbnRpdHlOYW1lLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAg
Y29uc3VtZWRDaGFyYWN0ZXJzLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgc291cmNlLmFk
dmFuY2VBbmRBU1NFUlQoY2MpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbm90RW5vdWdo
Q2hhcmFjdGVycyA9IHNvdXJjZS5pc0VtcHR5KCk7Ci0gICAgICAgICAgICB1bmNvbnN1bWVDaGFy
YWN0ZXJzKHNvdXJjZSwgY29uc3VtZWRDaGFyYWN0ZXJzKTsKLSAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3VtZWRDaGFyYWN0ZXJzLmFwcGVu
ZChjYyk7Ci0gICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKGNjKTsKLSAgICB9Ci0gICAg
QVNTRVJUKHNvdXJjZS5pc0VtcHR5KCkpOwotICAgIG5vdEVub3VnaENoYXJhY3RlcnMgPSB0cnVl
OwotICAgIHVuY29uc3VtZUNoYXJhY3RlcnMoc291cmNlLCBjb25zdW1lZENoYXJhY3RlcnMpOwot
ICAgIHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTDVFbnRpdHlQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TDVFbnRpdHlQYXJzZXIuaAkocmV2aXNpb24gNjE2NjcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTDVF
bnRpdHlQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSFRNTDVFbnRpdHlQ
YXJzZXJfaAotI2RlZmluZSBIVE1MNUVudGl0eVBhcnNlcl9oCi0KLSNpbmNsdWRlICJTZWdtZW50
ZWRTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11bnNpZ25lZCBjb25zdW1lSFRN
TDVFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycywgVUNo
YXIgYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnXDAnKTsKLQotfQotCi0jZW5kaWYKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAJKHJldmlzaW9uIDYxNjY3KQkoZnJvbSBXZWJD
b3JlL2h0bWwvSFRNTDVFbnRpdHlQYXJzZXIuY3BwOjYxNjY3KQorKysgV2ViQ29yZS9odG1sL0hU
TUxFbnRpdHlQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gaHR0cDovL3d3dy50b3JjaG1v
YmlsZS5jb20vCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTDVFbnRpdHlQYXJzZXIuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworLy8gVXNlIF9fR05VQ19fIGluc3RlYWQgb2YgUExBVEZP
Uk0oR0NDKSB0byBzdGF5IGNvbnNpc3RlbnQgd2l0aCB0aGUgZ3BlcmYgZ2VuZXJhdGVkIGMgZmls
ZQorI2lmZGVmIF9fR05VQ19fCisvLyBUaGUgbWFpbiBwYXJzZXIgaW5jbHVkZXMgdGhpcyB0b28g
c28gd2UgYXJlIGdldHRpbmcgdHdvIGNvcGllcyBvZiB0aGUgZGF0YS4gSG93ZXZlciwgdGhpcyB3
YXkgdGhlIGNvZGUgZ2V0cyBpbmxpbmVkLgorI2luY2x1ZGUgIkhUTUxFbnRpdHlOYW1lcy5jcHAi
CisjZWxzZQorLy8gTm90IGlubGluZWQgZm9yIG5vbi1HQ0MgY29tcGlsZXJzCitzdHJ1Y3QgRW50
aXR5IHsKKyAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIGludCBjb2RlOworfTsKK2NvbnN0IHN0
cnVjdCBFbnRpdHkqIGZpbmRFbnRpdHkocmVnaXN0ZXIgY29uc3QgY2hhciogc3RyLCByZWdpc3Rl
ciB1bnNpZ25lZCBpbnQgbGVuKTsKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisKK3N0YXRpYyBjb25zdCBVQ2hhciB3
aW5kb3dzTGF0aW4xRXh0ZW5zaW9uQXJyYXlbMzJdID0geworICAgIDB4MjBBQywgMHgwMDgxLCAw
eDIwMUEsIDB4MDE5MiwgMHgyMDFFLCAweDIwMjYsIDB4MjAyMCwgMHgyMDIxLCAvLyA4MC04Nwor
ICAgIDB4MDJDNiwgMHgyMDMwLCAweDAxNjAsIDB4MjAzOSwgMHgwMTUyLCAweDAwOEQsIDB4MDE3
RCwgMHgwMDhGLCAvLyA4OC04RgorICAgIDB4MDA5MCwgMHgyMDE4LCAweDIwMTksIDB4MjAxQywg
MHgyMDFELCAweDIwMjIsIDB4MjAxMywgMHgyMDE0LCAvLyA5MC05NworICAgIDB4MDJEQywgMHgy
MTIyLCAweDAxNjEsIDB4MjAzQSwgMHgwMTUzLCAweDAwOUQsIDB4MDE3RSwgMHgwMTc4LCAvLyA5
OC05RgorfTsKKworaW5saW5lIFVDaGFyIGFkanVzdEVudGl0eSh1bnNpZ25lZCB2YWx1ZSkKK3sK
KyAgICBpZiAoKHZhbHVlICYgfjB4MUYpICE9IDB4MDA4MCkKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIHJldHVybiB3aW5kb3dzTGF0aW4xRXh0ZW5zaW9uQXJyYXlbdmFsdWUgLSAweDgwXTsK
K30KKworaW5saW5lIHVuc2lnbmVkIGxlZ2FsRW50aXR5Rm9yKHVuc2lnbmVkIHZhbHVlKQorewor
ICAgIC8vIEZJWE1FOiBBIG51bWJlciBvZiBzcGVjaWZpYyBlbnRpdHkgdmFsdWVzIGdlbmVyYXRl
IHBhcnNlIGVycm9ycy4KKyAgICBpZiAodmFsdWUgPT0gMCB8fCB2YWx1ZSA+IDB4MTBGRkZGIHx8
ICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhERkZGKSkKKyAgICAgICAgcmV0dXJuIDB4
RkZGRDsKKyAgICBpZiAodmFsdWUgPCAweEZGRkYpCisgICAgICAgIHJldHVybiBhZGp1c3RFbnRp
dHkodmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworaW5saW5lIGJvb2wgaXNIZXhEaWdp
dChVQ2hhciBjYykKK3sKKyAgICByZXR1cm4gKGNjID49ICcwJyAmJiBjYyA8PSAnOScpIHx8IChj
YyA+PSAnYScgJiYgY2MgPD0gJ2YnKSB8fCAoY2MgPj0gJ0EnICYmIGNjIDw9ICdGJyk7Cit9CisK
K2lubGluZSBib29sIGlzQWxwaGFOdW1lcmljKFVDaGFyIGNjKQoreworICAgIHJldHVybiAoY2Mg
Pj0gJzAnICYmIGNjIDw9ICc5JykgfHwgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHx8IChjYyA+
PSAnQScgJiYgY2MgPD0gJ1onKTsKK30KKwordm9pZCB1bmNvbnN1bWVDaGFyYWN0ZXJzKFNlZ21l
bnRlZFN0cmluZyYgc291cmNlLCBjb25zdCBWZWN0b3I8VUNoYXIsIDEwPiYgY29uc3VtZWRDaGFy
YWN0ZXJzKQoreworICAgIGlmIChjb25zdW1lZENoYXJhY3RlcnMuc2l6ZSgpID09IDEpCisgICAg
ICAgIHNvdXJjZS5wdXNoKGNvbnN1bWVkQ2hhcmFjdGVyc1swXSk7CisgICAgZWxzZSBpZiAoY29u
c3VtZWRDaGFyYWN0ZXJzLnNpemUoKSA9PSAyKSB7CisgICAgICAgIHNvdXJjZS5wdXNoKGNvbnN1
bWVkQ2hhcmFjdGVyc1swXSk7CisgICAgICAgIHNvdXJjZS5wdXNoKGNvbnN1bWVkQ2hhcmFjdGVy
c1sxXSk7CisgICAgfSBlbHNlCisgICAgICAgIHNvdXJjZS5wcmVwZW5kKFNlZ21lbnRlZFN0cmlu
ZyhTdHJpbmcoY29uc3VtZWRDaGFyYWN0ZXJzLmRhdGEoKSwgY29uc3VtZWRDaGFyYWN0ZXJzLnNp
emUoKSkpKTsKK30KKworfQorCit1bnNpZ25lZCBjb25zdW1lSFRNTDVFbnRpdHkoU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMsIFVDaGFyIGFkZGl0aW9u
YWxBbGxvd2VkQ2hhcmFjdGVyKQoreworICAgIEFTU0VSVCghYWRkaXRpb25hbEFsbG93ZWRDaGFy
YWN0ZXIgfHwgYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJyInIHx8IGFkZGl0aW9uYWxB
bGxvd2VkQ2hhcmFjdGVyID09ICdcJycgfHwgYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0g
Jz4nKTsKKyAgICBBU1NFUlQoIW5vdEVub3VnaENoYXJhY3RlcnMpOworCisgICAgZW51bSBFbnRp
dHlTdGF0ZSB7CisgICAgICAgIEluaXRpYWwsCisgICAgICAgIE51bWJlclR5cGUsCisgICAgICAg
IE1heWJlSGV4TG93ZXJDYXNlWCwKKyAgICAgICAgTWF5YmVIZXhVcHBlckNhc2VYLAorICAgICAg
ICBIZXgsCisgICAgICAgIERlY2ltYWwsCisgICAgICAgIE5hbWVkCisgICAgfTsKKyAgICBFbnRp
dHlTdGF0ZSBlbnRpdHlTdGF0ZSA9IEluaXRpYWw7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsK
KyAgICBWZWN0b3I8VUNoYXIsIDEwPiBjb25zdW1lZENoYXJhY3RlcnM7CisgICAgVmVjdG9yPGNo
YXIsIDEwPiBlbnRpdHlOYW1lOworCisgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIFVDaGFyIGNjID0gKnNvdXJjZTsKKyAgICAgICAgc3dpdGNoIChlbnRpdHlTdGF0ZSkg
eworICAgICAgICBjYXNlIEluaXRpYWw6IHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScg
fHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcgfHwgY2MgPT0gJzwn
IHx8IGNjID09ICcmJykKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlm
IChhZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciAmJiBjYyA9PSBhZGRpdGlvbmFsQWxsb3dlZENo
YXJhY3RlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChjYyA9
PSAnIycpIHsKKyAgICAgICAgICAgICAgICBlbnRpdHlTdGF0ZSA9IE51bWJlclR5cGU7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGNjID49
ICdhJyAmJiBjYyA8PSAneicpIHx8IChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSkgeworICAgICAg
ICAgICAgICAgIGVudGl0eVN0YXRlID0gTmFtZWQ7CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIE51bWJlclR5cGU6IHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAneCcpIHsKKyAgICAg
ICAgICAgICAgICBlbnRpdHlTdGF0ZSA9IE1heWJlSGV4TG93ZXJDYXNlWDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjYyA9PSAnWCcpIHsK
KyAgICAgICAgICAgICAgICBlbnRpdHlTdGF0ZSA9IE1heWJlSGV4VXBwZXJDYXNlWDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjYyA+PSAn
MCcgJiYgY2MgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgZW50aXR5U3RhdGUgPSBEZWNpbWFs
OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c291cmNlLnB1c2goJyMnKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgTWF5YmVIZXhMb3dlckNhc2VYOiB7CisgICAgICAgICAgICBpZiAoaXNIZXhEaWdp
dChjYykpIHsKKyAgICAgICAgICAgICAgICBlbnRpdHlTdGF0ZSA9IEhleDsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNvdXJjZS5wdXNoKCcj
Jyk7CisgICAgICAgICAgICBzb3VyY2UucHVzaCgneCcpOworICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBNYXliZUhleFVwcGVyQ2FzZVg6IHsKKyAgICAgICAg
ICAgIGlmIChpc0hleERpZ2l0KGNjKSkgeworICAgICAgICAgICAgICAgIGVudGl0eVN0YXRlID0g
SGV4OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgc291cmNlLnB1c2goJyMnKTsKKyAgICAgICAgICAgIHNvdXJjZS5wdXNoKCdYJyk7CisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEhleDogeworICAgICAg
ICAgICAgaWYgKGNjID49ICcwJyAmJiBjYyA8PSAnOScpCisgICAgICAgICAgICAgICAgcmVzdWx0
ID0gcmVzdWx0ICogMTYgKyBjYyAtICcwJzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNjID49ICdh
JyAmJiBjYyA8PSAnZicpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMTYgKyAx
MCArIGNjIC0gJ2EnOworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdG
JykKKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxNiArIDEwICsgY2MgLSAnQSc7
CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnOycpIHsKKyAgICAgICAgICAgICAgICBzb3Vy
Y2UuYWR2YW5jZVBhc3ROb25OZXdsaW5lKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2Fs
RW50aXR5Rm9yKHJlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICAgICAg
cmV0dXJuIGxlZ2FsRW50aXR5Rm9yKHJlc3VsdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIERlY2ltYWw6IHsKKyAgICAgICAgICAgIGlmIChjYyA+PSAnMCcg
JiYgY2MgPD0gJzknKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDEwICsgY2Mg
LSAnMCc7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnOycpIHsKKyAgICAgICAgICAgICAg
ICBzb3VyY2UuYWR2YW5jZVBhc3ROb25OZXdsaW5lKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGxlZ2FsRW50aXR5Rm9yKHJlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgTmFtZWQ6IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGNvZGUgaXMgd3JvbmcuIFdlIG5lZWQgdG8gZmluZCB0aGUgbG9uZ2VzdCBtYXRjaGluZyBl
bnRpdHkuCisgICAgICAgICAgICAvLyAgICAgICAgVGhlIGV4YW1wbGVzIGZyb20gdGhlIHNwZWMg
YXJlOgorICAgICAgICAgICAgLy8gICAgICAgICAgICBJJ20gJm5vdGl0OyBJIHRlbGwgeW91Cisg
ICAgICAgICAgICAvLyAgICAgICAgICAgIEknbSAmbm90aW47IEkgdGVsbCB5b3UKKyAgICAgICAg
ICAgIC8vICAgICAgICBJbiB0aGUgZmlyc3QgY2FzZSwgIiZub3QiIGlzIHRoZSBlbnRpdHkuICBJ
biB0aGUgc2Vjb25kCisgICAgICAgICAgICAvLyAgICAgICAgY2FzZSwgIiZub3RpbjsiIGlzIHRo
ZSBlbnRpdHkuCisgICAgICAgICAgICAvLyBGSVhNRTogT3VyIGxpc3Qgb2YgSFRNTCBlbnRpdGll
cyBpcyBpbmNvbXBsZXRlLgorICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBudW1iZXIgOCBiZWxv
dyBpcyBib2d1cy4KKyAgICAgICAgICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSAmJiBlbnRp
dHlOYW1lLnNpemUoKSA8PSA4KSB7CisgICAgICAgICAgICAgICAgY2MgPSAqc291cmNlOworICAg
ICAgICAgICAgICAgIGlmIChjYyA9PSAnOycpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RW50aXR5KiBlbnRpdHkgPSBmaW5kRW50aXR5KGVudGl0eU5hbWUuZGF0YSgpLCBlbnRpdHlOYW1l
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCc7Jyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZW50aXR5LT5jb2RlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBpZiAoIWlzQWxwaGFOdW1lcmljKGNjKSkgeworICAgICAgICAgICAgICAgICAgICBjb25z
dCBFbnRpdHkqIGVudGl0eSA9IGZpbmRFbnRpdHkoZW50aXR5TmFtZS5kYXRhKCksIGVudGl0eU5h
bWUuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSFRNTDUgdGVsbHMgdXMgdG8gaWdub3JlIHRoaXMgZW50aXR5LCBm
b3IgaGlzdG9yaWNhbCByZWFzb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhl
IGxvb2toZWFkIGNoYXJhY3RlciBpcyAnPScuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
YWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgJiYgY2MgPT0gJz0nKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0
eS0+Y29kZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZW50aXR5TmFtZS5hcHBlbmQo
Y2MpOworICAgICAgICAgICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVycy5hcHBlbmQoY2MpOworICAg
ICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKGNjKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG5vdEVub3VnaENoYXJhY3RlcnMgPSBzb3VyY2UuaXNFbXB0eSgpOworICAg
ICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNv
bnN1bWVkQ2hhcmFjdGVycy5hcHBlbmQoY2MpOworICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFT
U0VSVChjYyk7CisgICAgfQorICAgIEFTU0VSVChzb3VyY2UuaXNFbXB0eSgpKTsKKyAgICBub3RF
bm91Z2hDaGFyYWN0ZXJzID0gdHJ1ZTsKKyAgICB1bmNvbnN1bWVDaGFyYWN0ZXJzKHNvdXJjZSwg
Y29uc3VtZWRDaGFyYWN0ZXJzKTsKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcAkocmV2aXNpb24gNjE2Njcp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRN
TDVFbnRpdHlQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MRW50aXR5UGFyc2VyLmgiCiAKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCB1bmNvbnN1bWVDaGFy
YWN0ZXJzKFNlZ21lbnRlZFN0cmluZwogCiB9CiAKLXVuc2lnbmVkIGNvbnN1bWVIVE1MNUVudGl0
eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycywgVUNo
YXIgYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIpCit1bnNpZ25lZCBjb25zdW1lSFRNTEVudGl0
eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycywgVUNo
YXIgYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIpCiB7CiAgICAgQVNTRVJUKCFhZGRpdGlvbmFs
QWxsb3dlZENoYXJhY3RlciB8fCBhZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnIicgfHwg
YWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJ1wnJyB8fCBhZGRpdGlvbmFsQWxsb3dlZENo
YXJhY3RlciA9PSAnPicpOwogICAgIEFTU0VSVCghbm90RW5vdWdoQ2hhcmFjdGVycyk7CkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTEVudGl0eVBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MRW50aXR5UGFyc2VyLmgJKHJldmlzaW9uIDYxNjY3KQkoZnJvbSBXZWJDb3JlL2h0
bWwvSFRNTDVFbnRpdHlQYXJzZXIuaDo2MTY2NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MRW50aXR5
UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEhUTUw1RW50aXR5UGFyc2Vy
X2gKKyNkZWZpbmUgSFRNTDVFbnRpdHlQYXJzZXJfaAorCisjaW5jbHVkZSAiU2VnbWVudGVkU3Ry
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordW5zaWduZWQgY29uc3VtZUhUTUw1RW50
aXR5KFNlZ21lbnRlZFN0cmluZyYsIGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMsIFVDaGFyIGFk
ZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJ1wwJyk7CisKK30KKworI2VuZGlmCkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTEVudGl0eVBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MRW50aXR5UGFyc2VyLmgJKHJldmlzaW9uIDYxNjY3KQorKysgV2ViQ29yZS9odG1sL0hU
TUxFbnRpdHlQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTQgKzI0LDE0IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEhUTUw1RW50aXR5UGFyc2VyX2gKLSNkZWZpbmUg
SFRNTDVFbnRpdHlQYXJzZXJfaAorI2lmbmRlZiBIVE1MRW50aXR5UGFyc2VyX2gKKyNkZWZpbmUg
SFRNTEVudGl0eVBhcnNlcl9oCiAKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi11bnNpZ25lZCBjb25zdW1lSFRNTDVFbnRpdHkoU2VnbWVudGVk
U3RyaW5nJiwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycywgVUNoYXIgYWRkaXRpb25hbEFsbG93
ZWRDaGFyYWN0ZXIgPSAnXDAnKTsKK3Vuc2lnbmVkIGNvbnN1bWVIVE1MRW50aXR5KFNlZ21lbnRl
ZFN0cmluZyYsIGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMsIFVDaGFyIGFkZGl0aW9uYWxBbGxv
d2VkQ2hhcmFjdGVyID0gJ1wwJyk7CiAKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUb2tl
bml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAko
cmV2aXNpb24gNjE2NjcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEhUTUxUb2tlbml6ZXI6OnJlc2V0KCkK
IGlubGluZSBib29sIEhUTUxUb2tlbml6ZXI6OnByb2Nlc3NFbnRpdHkoU2VnbWVudGVkU3RyaW5n
JiBzb3VyY2UpCiB7CiAgICAgYm9vbCBub3RFbm91Z2hDaGFyYWN0ZXJzID0gZmFsc2U7Ci0gICAg
dW5zaWduZWQgdmFsdWUgPSBjb25zdW1lSFRNTDVFbnRpdHkoc291cmNlLCBub3RFbm91Z2hDaGFy
YWN0ZXJzKTsKKyAgICB1bnNpZ25lZCB2YWx1ZSA9IGNvbnN1bWVIVE1MRW50aXR5KHNvdXJjZSwg
bm90RW5vdWdoQ2hhcmFjdGVycyk7CiAgICAgaWYgKG5vdEVub3VnaENoYXJhY3RlcnMpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXZhbHVlKQpAQCAtOTE4LDcgKzkxOCw3IEBAIGJv
b2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFMKIAogICAgIEJFR0lOX1NUQVRF
KENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSkgewogICAgICAgICBib29s
IG5vdEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsKLSAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBj
b25zdW1lSFRNTDVFbnRpdHkoc291cmNlLCBub3RFbm91Z2hDaGFyYWN0ZXJzLCBtX2FkZGl0aW9u
YWxBbGxvd2VkQ2hhcmFjdGVyKTsKKyAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBjb25zdW1lSFRN
TEVudGl0eShzb3VyY2UsIG5vdEVub3VnaENoYXJhY3RlcnMsIG1fYWRkaXRpb25hbEFsbG93ZWRD
aGFyYWN0ZXIpOwogICAgICAgICBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKICAgICAgICAgICAg
IHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwogICAgICAg
ICBpZiAoIXZhbHVlKQo=
</data>
<flag name="review"
          id="46367"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>