<?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>230298</bug_id>
          
          <creation_ts>2021-09-15 00:25:29 -0700</creation_ts>
          <short_desc>[JSC] Optimize leaf object creation in JSON.parse</short_desc>
          <delta_ts>2021-09-15 13:18:22 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1793613</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-15 00:25:29 -0700</bug_when>
    <thetext>[JSC] Optimize leaf object creation in JSON.parse</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793614</commentid>
    <comment_count>1</comment_count>
      <attachid>438220</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-15 00:25:50 -0700</bug_when>
    <thetext>Created attachment 438220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793780</commentid>
    <comment_count>2</comment_count>
      <attachid>438266</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-15 11:32:18 -0700</bug_when>
    <thetext>Created attachment 438266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793794</commentid>
    <comment_count>3</comment_count>
      <attachid>438266</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-09-15 12:05:34 -0700</bug_when>
    <thetext>Comment on attachment 438266
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=438266&amp;action=review

r=me

&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:1413
&gt; +            case TokRBracket:
&gt; +                m_parseErrorMessage = &quot;Unexpected token &apos;]&apos;&quot;_s;
&gt; +                return { };

It seems like a lot of the error messages are the same whenever we create an error message for that token. Should we just make a helper, `setErrorMessageForToken` that sets the m_parseErrorMessage when we error on a given token?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793795</commentid>
    <comment_count>4</comment_count>
      <attachid>438266</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-15 12:09:46 -0700</bug_when>
    <thetext>Comment on attachment 438266
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=438266&amp;action=review

&gt;&gt; Source/JavaScriptCore/runtime/LiteralParser.cpp:1413
&gt;&gt; +                return { };
&gt; 
&gt; It seems like a lot of the error messages are the same whenever we create an error message for that token. Should we just make a helper, `setErrorMessageForToken` that sets the m_parseErrorMessage when we error on a given token?

Sounds good! Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793825</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-15 13:17:15 -0700</bug_when>
    <thetext>Committed r282468 (241716@main): &lt;https://commits.webkit.org/241716@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793826</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-15 13:18:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/83164908&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438220</attachid>
            <date>2021-09-15 00:25:50 -0700</date>
            <delta_ts>2021-09-15 11:32:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230298-20210915002550.patch</filename>
            <type>text/plain</type>
            <size>36643</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YzVkMmU2ZGNhYWJlNzJjOGQ5NGJhMWVhMGE1OTUyMDg3YTNjMzkzLi5lMzNhZTNhNjdjZjAyZGZl
ZjQzYjMxMjAxM2JiMmJjZTkyMjU2MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0wOS0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIGxlYWYgb2JqZWN0IGNyZWF0aW9uIGluIEpTT04u
cGFyc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDI5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxD
aGFyVHlwZT46Om1ha2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6aXNKU09OV2hpdGVTcGFj
ZSk6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4KToK
KyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlUHJpbWl0aXZlVmFs
dWUpOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UpOgorICAg
ICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5oOgorCiAyMDIxLTA5LTEzICBYYW4gTMOzcGV6
ICA8eGFuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ11bMzJiaXRdIGluLWJ5LXZhbCBmYWls
cyBpbnNpZGUgZm9yLWluIGxvb3AgYWZ0ZXIgZGVsZXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCmluZGV4IDQ0YjljMWMyNjUxMzJjZTI1ZTE4
M2YwYTUyZGU1NWFlOThkN2U0OGUuLjU2NDg2ZTkzNGY2MjZiZWZhMGFkNjNmZGNlMzExMjZiZDk2
NjI1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJz
ZXIuY3BwCkBAIC01OCwxNCArNTgsNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgY29tcGFyZTRDaGFy
cyhjb25zdCBDaGFyVHlwZSogc291cmNlLCBDaGFyVHlwZSBjMCwgQ2hhclR5cGUgYwogICAgICAg
ICByZXR1cm4gQ09NUEFSRV80VUNIQVJTKHNvdXJjZSwgYzAsIGMxLCBjMiwgYzMpOwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlz
SlNPTldoaXRlU3BhY2UoY29uc3QgQ2hhclR5cGUmIGMpCi17Ci0gICAgLy8gVGhlIEpTT04gUkZD
IDQ2MjcgZGVmaW5lcyBhIGxpc3Qgb2YgYWxsb3dlZCBjaGFyYWN0ZXJzIHRvIGJlIGNvbnNpZGVy
ZWQKLSAgICAvLyBpbnNpZ25pZmljYW50IHdoaXRlIHNwYWNlOiBodHRwOi8vd3d3LmlldGYub3Jn
L3JmYy9yZmM0NjI3LnR4dCAoMi4gSlNPTiBHcmFtbWFyKS4KLSAgICByZXR1cm4gYyA9PSAnICcg
fHwgYyA9PSAweDkgfHwgYyA9PSAweEEgfHwgYyA9PSAweEQ7Ci19Ci0KIHRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyVHlwZT4KIGJvb2wgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnRyeUpTT05QUGFy
c2UoVmVjdG9yPEpTT05QRGF0YT4mIHJlc3VsdHMsIGJvb2wgbmVlZHNGdWxsU291cmNlSW5mbykK
IHsKQEAgLTE0OSw2ICsxNDEsMTUgQEAgYm9vbCBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6dHJ5
SlNPTlBQYXJzZShWZWN0b3I8SlNPTlBEYXRhPiYgcmVzdWx0cywgYm9vbCBuZWUKICAgICB9IHdo
aWxlIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLT50eXBlID09IFRva0lkZW50aWZpZXIpOwogICAg
IHJldHVybiBtX2xleGVyLmN1cnJlbnRUb2tlbigpLT50eXBlID09IFRva0VuZDsKIH0KKwordGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIExpdGVy
YWxQYXJzZXI8Q2hhclR5cGU+OjptYWtlSWRlbnRpZmllcih0eXBlbmFtZSBMZXhlcjo6TGl0ZXJh
bFBhcnNlclRva2VuUHRyIHRva2VuKQoreworICAgIGlmICh0b2tlbi0+c3RyaW5nSXM4Qml0KQor
ICAgICAgICByZXR1cm4gbWFrZUlkZW50aWZpZXIodG9rZW4tPnN0cmluZ1Rva2VuOCwgdG9rZW4t
PnN0cmluZ0xlbmd0aCk7CisgICAgcmV0dXJuIG1ha2VJZGVudGlmaWVyKHRva2VuLT5zdHJpbmdU
b2tlbjE2LCB0b2tlbi0+c3RyaW5nTGVuZ3RoKTsKK30KKwogICAgIAogdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgogdGVtcGxhdGUgPHR5cGVuYW1lIExpdGVyYWxDaGFyVHlwZT4KQEAgLTIw
MCw2ICsyMDEsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGNhbm5vdEJlSWRlbnRQYXJ0
T3JFc2NhcGVTdGFydChVQ2hhcikKIH0KIAogLy8gMjU2IExhdGluLTEgY29kZXMKKy8vIFRoZSBK
U09OIFJGQyA0NjI3IGRlZmluZXMgYSBsaXN0IG9mIGFsbG93ZWQgY2hhcmFjdGVycyB0byBiZSBj
b25zaWRlcmVkCisvLyBpbnNpZ25pZmljYW50IHdoaXRlIHNwYWNlOiBodHRwOi8vd3d3LmlldGYu
b3JnL3JmYy9yZmM0NjI3LnR4dCAoMi4gSlNPTiBHcmFtbWFyKS4KIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgVG9rZW5UeXBlIHRva2VuVHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbMjU2XSA9IHsKIC8q
ICAgMCAtIE51bGwgICAgICAgICAgICAgICAqLyBUb2tFcnJvciwKIC8qICAgMSAtIFN0YXJ0IG9m
IEhlYWRpbmcgICAqLyBUb2tFcnJvciwKQEAgLTIxMCwxMSArMjEzLDExIEBAIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgVG9rZW5UeXBlIHRva2VuVHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbMjU2XSA9
IHsKIC8qICAgNiAtIEFja25vd2xlZGdtZW50ICAgICAqLyBUb2tFcnJvciwKIC8qICAgNyAtIEJl
bGwgICAgICAgICAgICAgICAqLyBUb2tFcnJvciwKIC8qICAgOCAtIEJhY2sgU3BhY2UgICAgICAg
ICAqLyBUb2tFcnJvciwKLS8qICAgOSAtIEhvcml6b250YWwgVGFiICAgICAqLyBUb2tFcnJvciwK
LS8qICAxMCAtIExpbmUgRmVlZCAgICAgICAgICAqLyBUb2tFcnJvciwKKy8qICAgOSAtIEhvcml6
b250YWwgVGFiICAgICAqLyBUb2tTcGFjZSwKKy8qICAxMCAtIExpbmUgRmVlZCAgICAgICAgICAq
LyBUb2tTcGFjZSwKIC8qICAxMSAtIFZlcnRpY2FsIFRhYiAgICAgICAqLyBUb2tFcnJvciwKIC8q
ICAxMiAtIEZvcm0gRmVlZCAgICAgICAgICAqLyBUb2tFcnJvciwKLS8qICAxMyAtIENhcnJpYWdl
IFJldHVybiAgICAqLyBUb2tFcnJvciwKKy8qICAxMyAtIENhcnJpYWdlIFJldHVybiAgICAqLyBU
b2tTcGFjZSwKIC8qICAxNCAtIFNoaWZ0IE91dCAgICAgICAgICAqLyBUb2tFcnJvciwKIC8qICAx
NSAtIFNoaWZ0IEluICAgICAgICAgICAqLyBUb2tFcnJvciwKIC8qICAxNiAtIERhdGEgTGluZSBF
c2NhcGUgICAqLyBUb2tFcnJvciwKQEAgLTIzMyw3ICsyMzYsNyBAQCBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IFRva2VuVHlwZSB0b2tlblR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1Nl0gPSB7CiAv
KiAgMjkgLSBHcm91cCBTZXBhcmF0b3IgICAgKi8gVG9rRXJyb3IsCiAvKiAgMzAgLSBSZWNvcmQg
U2VwYXJhdG9yICAgKi8gVG9rRXJyb3IsCiAvKiAgMzEgLSBVbml0IFNlcGFyYXRvciAgICAgKi8g
VG9rRXJyb3IsCi0vKiAgMzIgLSBTcGFjZSAgICAgICAgICAgICAgKi8gVG9rRXJyb3IsCisvKiAg
MzIgLSBTcGFjZSAgICAgICAgICAgICAgKi8gVG9rU3BhY2UsCiAvKiAgMzMgLSAhICAgICAgICAg
ICAgICAgICAgKi8gVG9rRXJyb3IsCiAvKiAgMzQgLSAiICAgICAgICAgICAgICAgICAgKi8gVG9r
U3RyaW5nLAogLyogIDM1IC0gIyAgICAgICAgICAgICAgICAgICovIFRva0Vycm9yLApAQCAtNzE5
LDYgKzcyMiwxMiBAQCBzdGF0aWMgY29uc3RleHByIGNvbnN0IGJvb2wgc2FmZVN0cmluZ0xhdGlu
MUNoYXJhY3RlcnNJblN0cmljdEpTT05bMjU2XSA9IHsKIC8qIDI1NSAtIExsIGNhdGVnb3J5ICAg
ICAgICAqLyB0cnVlLAogfTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGlj
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0pTT05XaGl0ZVNwYWNlKGNvbnN0IENoYXJUeXBlJiBjKQor
eworICAgIHJldHVybiBpc0xhdGluMShjKSAmJiB0b2tlblR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJz
W2NdID09IFRva1NwYWNlOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiBBTFdB
WVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleChM
aXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+JiB0b2tlbikKIHsKQEAgLTc4Myw2ICs3OTIsNyBA
QCBBTFdBWVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6
OmxleChMaXRlcmFsUGFyc2VyVG9rZW48QwogICAgICAgICAgICAgcmV0dXJuIGxleE51bWJlcih0
b2tlbik7CiAKICAgICAgICAgY2FzZSBUb2tFcnJvcjoKKyAgICAgICAgY2FzZSBUb2tTcGFjZToK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xMTEwLDYgKzExMjAs
OTEgQEAgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4TnVtYmVy
KExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4KICAgICByZXR1cm4gVG9rTnVtYmVyOwogfQog
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgTGl0
ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlUHJpbWl0aXZlVmFsdWUoVk0mIHZtKQoreworICAg
IHN3aXRjaCAobV9sZXhlci5jdXJyZW50VG9rZW4oKS0+dHlwZSkgeworICAgIGNhc2UgVG9rU3Ry
aW5nOiB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmcodm0sIG1ha2VJZGVudGlm
aWVyKG1fbGV4ZXIuY3VycmVudFRva2VuKCkpLnN0cmluZygpKTsKKyAgICAgICAgbV9sZXhlci5u
ZXh0KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGNhc2UgVG9rTnVtYmVy
OiB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobV9sZXhlci5jdXJyZW50VG9r
ZW4oKS0+bnVtYmVyVG9rZW4pOworICAgICAgICBtX2xleGVyLm5leHQoKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisgICAgY2FzZSBUb2tOdWxsOgorICAgICAgICBtX2xleGVyLm5l
eHQoKTsKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIGNhc2UgVG9rVHJ1ZToKKyAgICAg
ICAgbV9sZXhlci5uZXh0KCk7CisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4odHJ1ZSk7CisgICAg
Y2FzZSBUb2tGYWxzZToKKyAgICAgICAgbV9sZXhlci5uZXh0KCk7CisgICAgICAgIHJldHVybiBq
c0Jvb2xlYW4oZmFsc2UpOworICAgIGNhc2UgVG9rUkJyYWNrZXQ6CisgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciX3M7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgY2FzZSBUb2tSQnJhY2U6CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAi
VW5leHBlY3RlZCB0b2tlbiAnfSciX3M7CisgICAgICAgIHJldHVybiB7IH07CisgICAgY2FzZSBU
b2tJZGVudGlmaWVyOiB7CisgICAgICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tl
bigpOworCisgICAgICAgIGF1dG8gdHJ5TWFrZUVycm9yU3RyaW5nID0gWyZdICh1bnNpZ25lZCBs
ZW5ndGgpIC0+IFN0cmluZyB7CisgICAgICAgICAgICBib29sIGFkZEVsbGlwc2lzID0gbGVuZ3Ro
ICE9IHRva2VuLT5zdHJpbmdMZW5ndGg7CisgICAgICAgICAgICBpZiAodG9rZW4tPnN0cmluZ0lz
OEJpdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ5TWFrZVN0cmluZygiVW5leHBlY3RlZCBp
ZGVudGlmaWVyIFwiIiwgU3RyaW5nVmlldyB7IHRva2VuLT5zdHJpbmdUb2tlbjgsIGxlbmd0aCB9
LCBhZGRFbGxpcHNpcyA/ICIuLi4iIDogIiIsICciJyk7CisgICAgICAgICAgICByZXR1cm4gdHJ5
TWFrZVN0cmluZygiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiIiwgU3RyaW5nVmlldyB7IHRva2Vu
LT5zdHJpbmdUb2tlbjE2LCBsZW5ndGggfSwgYWRkRWxsaXBzaXMgPyAiLi4uIiA6ICIiLCAnIicp
OworICAgICAgICB9OworCisgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhMZW5ndGggPSAy
MDA7CisKKyAgICAgICAgU3RyaW5nIGVycm9yU3RyaW5nID0gdHJ5TWFrZUVycm9yU3RyaW5nKHN0
ZDo6bWluKHRva2VuLT5zdHJpbmdMZW5ndGgsIG1heExlbmd0aCkpOworICAgICAgICBpZiAoIWVy
cm9yU3RyaW5nKSB7CisgICAgICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgc2hvcnRMZW5ndGgg
PSAxMDsKKyAgICAgICAgICAgIGlmICh0b2tlbi0+c3RyaW5nTGVuZ3RoID4gc2hvcnRMZW5ndGgp
CisgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSB0cnlNYWtlRXJyb3JTdHJpbmcoc2hvcnRM
ZW5ndGgpOworICAgICAgICAgICAgaWYgKCFlcnJvclN0cmluZykKKyAgICAgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJVbmV4cGVjdGVkIGlkZW50aWZpZXIiOworICAgICAgICB9CisKKyAgICAg
ICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IGVycm9yU3RyaW5nOworICAgICAgICByZXR1cm4geyB9
OworICAgIH0KKyAgICBjYXNlIFRva0NvbG9uOgorICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzonIl9zOworICAgICAgICByZXR1cm4geyB9OworICAgIGNh
c2UgVG9rTFBhcmVuOgorICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQg
dG9rZW4gJygnIl9zOworICAgICAgICByZXR1cm4geyB9OworICAgIGNhc2UgVG9rUlBhcmVuOgor
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJyknIl9zOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIGNhc2UgVG9rQ29tbWE6CisgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLCciX3M7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgY2FzZSBUb2tEb3Q6CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5l
eHBlY3RlZCB0b2tlbiAnLiciX3M7CisgICAgICAgIHJldHVybiB7IH07CisgICAgY2FzZSBUb2tB
c3NpZ246CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
PSciX3M7CisgICAgICAgIHJldHVybiB7IH07CisgICAgY2FzZSBUb2tTZW1pOgorICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIl9zOworICAgICAgICBy
ZXR1cm4geyB9OworICAgIGNhc2UgVG9rRW5kOgorICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgRU9GIl9zOworICAgICAgICByZXR1cm4geyB9OworICAgIGNhc2UgVG9r
RXJyb3I6CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gRXJyb3IKKyAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9ICJDb3VsZCBub3QgcGFyc2UgdmFsdWUgZXhwcmVzc2lvbiJfczsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4K
IEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRp
YWxTdGF0ZSkKIHsKQEAgLTExMjMsMjk3ICsxMjE4LDI1NiBAQCBKU1ZhbHVlIExpdGVyYWxQYXJz
ZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgSGFzaFNl
dDxKU09iamVjdCo+IHZpc2l0ZWRVbmRlcnNjb3JlUHJvdG87CiAgICAgd2hpbGUgKDEpIHsKICAg
ICAgICAgc3dpdGNoKHN0YXRlKSB7Ci0gICAgICAgICAgICBzdGFydFBhcnNlQXJyYXk6Ci0gICAg
ICAgICAgICBjYXNlIFN0YXJ0UGFyc2VBcnJheTogewotICAgICAgICAgICAgICAgIEpTQXJyYXkq
IGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShtX2dsb2JhbE9iamVjdCwgbnVsbHB0cik7Ci0g
ICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLSAg
ICAgICAgICAgICAgICBvYmplY3RTdGFjay5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KGFycmF5
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRvUGFyc2VBcnJheVN0YXJ0RXhwcmVzc2lv
bjoKLSAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSBEb1BhcnNlQXJy
YXlTdGFydEV4cHJlc3Npb246IHsKLSAgICAgICAgICAgICAgICBUb2tlblR5cGUgbGFzdFRva2Vu
ID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS0+dHlwZTsKLSAgICAgICAgICAgICAgICBpZiAobV9s
ZXhlci5uZXh0KCkgPT0gVG9rUkJyYWNrZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxh
c3RUb2tlbiA9PSBUb2tDb21tYSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIGNvbW1hIGF0IHRoZSBlbmQgb2YgYXJyYXkgZXhwcmVz
c2lvbiJfczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGxhc3RWYWx1ZSA9IG9iamVjdFN0YWNrLnRha2VMYXN0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKERvUGFyc2VBcnJheUVuZEV4cHJlc3Npb24pOwotICAg
ICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBjYXNlIERvUGFyc2VBcnJheUVuZEV4cHJlc3Npb246IHsKLSAgICAgICAgICAg
ICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkob2JqZWN0U3RhY2subGFzdCgpKTsKLSAgICAg
ICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgobV9nbG9iYWxPYmplY3QsIGFycmF5LT5s
ZW5ndGgoKSwgbGFzdFZhbHVlKTsKLSAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVu
dFRva2VuKCktPnR5cGUgPT0gVG9rQ29tbWEpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZG9Q
YXJzZUFycmF5U3RhcnRFeHByZXNzaW9uOwotCi0gICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIu
Y3VycmVudFRva2VuKCktPnR5cGUgIT0gVG9rUkJyYWNrZXQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnXSciX3M7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHN0YXJ0UGFyc2VBcnJheToKKyAgICAg
ICAgY2FzZSBTdGFydFBhcnNlQXJyYXk6IHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0g
Y29uc3RydWN0RW1wdHlBcnJheShtX2dsb2JhbE9iamVjdCwgbnVsbHB0cik7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgb2JqZWN0U3Rh
Y2suYXBwZW5kV2l0aENyYXNoT25PdmVyZmxvdyhhcnJheSk7CisgICAgICAgIH0KKyAgICAgICAg
ZG9QYXJzZUFycmF5U3RhcnRFeHByZXNzaW9uOgorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAg
ICAgY2FzZSBEb1BhcnNlQXJyYXlTdGFydEV4cHJlc3Npb246IHsKKyAgICAgICAgICAgIFRva2Vu
VHlwZSBsYXN0VG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLT50eXBlOworICAgICAgICAg
ICAgaWYgKG1fbGV4ZXIubmV4dCgpID09IFRva1JCcmFja2V0KSB7CisgICAgICAgICAgICAgICAg
aWYgKFVOTElLRUxZKGxhc3RUb2tlbiA9PSBUb2tDb21tYSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIGNvbW1hIGF0IHRoZSBlbmQgb2Yg
YXJyYXkgZXhwcmVzc2lvbiJfczsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9sZXhl
ci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2sudGFrZUxh
c3QoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHN0YXJ0UGFyc2VPYmplY3Q6Ci0gICAgICAgICAgICBjYXNlIFN0YXJ0UGFyc2VPYmplY3Q6IHsK
LSAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
bV9nbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLmFwcGVuZFdpdGhD
cmFzaE9uT3ZlcmZsb3cob2JqZWN0KTsKLQotICAgICAgICAgICAgICAgIFRva2VuVHlwZSB0eXBl
ID0gbV9sZXhlci5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gVG9rU3RyaW5n
IHx8IChtX21vZGUgIT0gU3RyaWN0SlNPTiAmJiB0eXBlID09IFRva0lkZW50aWZpZXIpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIExleGVyOjpMaXRlcmFsUGFyc2VyVG9rZW5QdHIg
aWRlbnRpZmllclRva2VuID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGlkZW50aWZpZXJUb2tlbi0+c3RyaW5nSXM4Qml0KQotICAgICAgICAgICAgICAg
ICAgICAgICAgaWRlbnRpZmllclN0YWNrLmFwcGVuZChtYWtlSWRlbnRpZmllcihpZGVudGlmaWVy
VG9rZW4tPnN0cmluZ1Rva2VuOCwgaWRlbnRpZmllclRva2VuLT5zdHJpbmdMZW5ndGgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmll
clN0YWNrLmFwcGVuZChtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyVG9rZW4tPnN0cmluZ1Rva2Vu
MTYsIGlkZW50aWZpZXJUb2tlbi0+c3RyaW5nTGVuZ3RoKSk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgZm9yIGNvbG9uCi0gICAgICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLm5l
eHQoKSAhPSBUb2tDb2xvbikgeworCisgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChEb1Bh
cnNlQXJyYXlFbmRFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJl
c3Npb247CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEb1BhcnNlQXJyYXlFbmRFeHByZXNzaW9u
OiB7CisgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkob2JqZWN0U3RhY2subGFz
dCgpKTsKKyAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChtX2dsb2JhbE9iamVjdCwg
YXJyYXktPmxlbmd0aCgpLCBsYXN0VmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2Vu
KCktPnR5cGUgPT0gVG9rQ29tbWEpCisgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlQXJyYXlT
dGFydEV4cHJlc3Npb247CisKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShtX2xleGVyLmN1cnJl
bnRUb2tlbigpLT50eXBlICE9IFRva1JCcmFja2V0KSkgeworICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ10nIl9zOworICAgICAgICAgICAgICAgIHJldHVy
biB7IH07CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fbGV4ZXIu
bmV4dCgpOworICAgICAgICAgICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2sudGFrZUxhc3QoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN0YXJ0UGFyc2VPYmplY3Q6
CisgICAgICAgIGNhc2UgU3RhcnRQYXJzZU9iamVjdDogeworICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KG1fZ2xvYmFsT2JqZWN0KTsKKworICAgICAg
ICAgICAgVG9rZW5UeXBlIHR5cGUgPSBtX2xleGVyLm5leHQoKTsKKyAgICAgICAgICAgIGlmICh0
eXBlID09IFRva1N0cmluZyB8fCAobV9tb2RlICE9IFN0cmljdEpTT04gJiYgdHlwZSA9PSBUb2tJ
ZGVudGlmaWVyKSkgeworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAg
ICAgICAgICAgIElkZW50aWZpZXIgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihtX2xleGVyLmN1cnJl
bnRUb2tlbigpKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobV9sZXhlci5u
ZXh0KCkgIT0gVG9rQ29sb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIkV4cGVjdGVkICc6JyBiZWZvcmUgdmFsdWUgaW4gb2JqZWN0IHByb3BlcnR5
IGRlZmluaXRpb24iX3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgbV9sZXhlci5u
ZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKERvUGFyc2VPYmpl
Y3RFbmRFeHByZXNzaW9uKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBzdGFydFBhcnNlRXhw
cmVzc2lvbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0g
VG9rUkJyYWNlKSAgewotICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IkV4cGVjdGVkICd9JyJfczsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7Ci0gICAg
ICAgICAgICAgICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRvUGFyc2VPYmplY3RT
dGFydEV4cHJlc3Npb246Ci0gICAgICAgICAgICBjYXNlIERvUGFyc2VPYmplY3RTdGFydEV4cHJl
c3Npb246IHsKLSAgICAgICAgICAgICAgICBUb2tlblR5cGUgdHlwZSA9IG1fbGV4ZXIubmV4dCgp
OwotICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1N0cmluZyAmJiAobV9tb2RlID09IFN0
cmljdEpTT04gfHwgdHlwZSAhPSBUb2tJZGVudGlmaWVyKSkgewotICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBs
aXRlcmFsIl9zOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBMZXhlcjo6TGl0ZXJhbFBhcnNl
clRva2VuUHRyIGlkZW50aWZpZXJUb2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGlkZW50aWZpZXJUb2tlbi0+c3RyaW5nSXM4Qml0KQotICAgICAgICAg
ICAgICAgICAgICBpZGVudGlmaWVyU3RhY2suYXBwZW5kKG1ha2VJZGVudGlmaWVyKGlkZW50aWZp
ZXJUb2tlbi0+c3RyaW5nVG9rZW44LCBpZGVudGlmaWVyVG9rZW4tPnN0cmluZ0xlbmd0aCkpOwot
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllclN0YWNr
LmFwcGVuZChtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyVG9rZW4tPnN0cmluZ1Rva2VuMTYsIGlk
ZW50aWZpZXJUb2tlbi0+c3RyaW5nTGVuZ3RoKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDaGVj
ayBmb3IgY29sb24KLSAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0gVG9rQ29s
b24pIHsKLSAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3Rl
ZCAnOiciX3M7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7Ci0gICAgICAgICAg
ICAgICAgc3RhdGVTdGFjay5hcHBlbmQoRG9QYXJzZU9iamVjdEVuZEV4cHJlc3Npb24pOwotICAg
ICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBjYXNlIERvUGFyc2VPYmplY3RFbmRFeHByZXNzaW9uOgotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmplY3RTdGFj
ay5sYXN0KCkpOwotICAgICAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnQgPSBpZGVudGlmaWVy
U3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9tb2RlICE9IFN0cmljdEpT
T04gJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghdmlzaXRlZFVuZGVyc2NvcmVQcm90by5hZGQob2JqZWN0KS5p
c05ld0VudHJ5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIkF0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVydHkiX3M7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBU
b2tlblR5cGUgbmV4dFR5cGUgPSBtX2xleGVyLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG5leHRUeXBlID09IFRva0xCcmFjZSB8fCBuZXh0VHlwZSA9PSBUb2tMQnJhY2tldCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2suYXBwZW5kV2l0aENyYXNoT25PdmVy
ZmxvdyhvYmplY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllclN0YWNrLmFw
cGVuZChXVEZNb3ZlKGlkZW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNr
LmFwcGVuZChEb1BhcnNlT2JqZWN0RW5kRXhwcmVzc2lvbik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobmV4dFR5cGUgPT0gVG9rTEJyYWNlKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gc3RhcnRQYXJzZU9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChuZXh0VHlwZSA9PSBUb2tMQnJhY2tldCk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IHN0YXJ0UGFyc2VBcnJheTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgIC8vIExlYWYgb2JqZWN0IGNvbnN0cnVjdGlvbiBmYXN0IHBhdGguCisgICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gcGFyc2VQcmltaXRpdmVWYWx1ZSh2bSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghcHJpbWl0aXZlKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgICAgICAgICAgICAgICAgICBpZiAobV9tb2RlICE9IFN0cmlj
dEpTT04gJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXZpc2l0ZWRVbmRlcnNjb3JlUHJv
dG8uYWRkKG9iamVjdCkuaXNOZXdFbnRyeSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkF0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18g
cHJvcGVydHkiX3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KG9iamVjdCwgbV9udWxsT3JDb2RlQmxvY2sgPyBtX251bGxPckNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgOiBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlKG9iamVjdCkucHV0KG1fZ2xvYmFsT2JqZWN0LCBp
ZGVudCwgcHJpbWl0aXZlLCBzbG90KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBwYXJzZUluZGV4KGlkZW50KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVj
dC0+cHV0RGlyZWN0SW5kZXgobV9nbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHByaW1pdGl2
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBpZGVudCwgcHJpbWl0aXZlKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1
cnJlbnRUb2tlbigpLT50eXBlICE9IFRva0NvbW1hKQorICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgbmV4dFR5cGUgPSBtX2xleGVyLm5leHQoKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKG5leHRUeXBlICE9IFRva1N0cmluZyAm
JiAobV9tb2RlID09IFN0cmljdEpTT04gfHwgbmV4dFR5cGUgIT0gVG9rSWRlbnRpZmllcikpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlByb3BlcnR5
IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsIl9zOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9udWxs
T3JDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpIDogZmFs
c2UpOwotICAgICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5sYXN0KCkucHV0KG1fZ2xvYmFs
T2JqZWN0LCBpZGVudCwgbGFzdFZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBwYXJzZUluZGV4KGlkZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+cHV0
RGlyZWN0SW5kZXgobV9nbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIGxhc3RWYWx1ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+
cHV0RGlyZWN0KHZtLCBpZGVudCwgbGFzdFZhbHVlKTsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLSAgICAg
ICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS0+dHlwZSA9PSBUb2tDb21tYSkK
LSAgICAgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlT2JqZWN0U3RhcnRFeHByZXNzaW9uOwot
ICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLT50eXBlICE9IFRva1JC
cmFjZSkgeworCisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fbGV4ZXIuY3VycmVudFRv
a2VuKCktPnR5cGUgIT0gVG9rUkJyYWNlKSkgewogICAgICAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICd9JyJfczsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7Ci0gICAgICAgICAgICAg
ICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgICAgICAgICBs
YXN0VmFsdWUgPSBvYmplY3Q7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBzdGFydFBhcnNlRXhwcmVzc2lvbjoKLSAgICAgICAgICAgIGNhc2UgU3Rh
cnRQYXJzZUV4cHJlc3Npb246IHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fbGV4ZXIuY3Vy
cmVudFRva2VuKCktPnR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tMQnJhY2tl
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUFycmF5OwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIFRva0xCcmFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gc3RhcnRQYXJzZU9iamVjdDsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tTdHJpbmc6
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIExleGVyOjpMaXRlcmFsUGFyc2Vy
VG9rZW5QdHIgc3RyaW5nVG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHN0cmluZ1Rva2VuLT5zdHJpbmdJczhCaXQpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0ganNTdHJpbmcodm0sIG1ha2VJZGVudGlmaWVy
KHN0cmluZ1Rva2VuLT5zdHJpbmdUb2tlbjgsIHN0cmluZ1Rva2VuLT5zdHJpbmdMZW5ndGgpLnN0
cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsYXN0VmFsdWUgPSBqc1N0cmluZyh2bSwgbWFrZUlkZW50aWZpZXIoc3RyaW5n
VG9rZW4tPnN0cmluZ1Rva2VuMTYsIHN0cmluZ1Rva2VuLT5zdHJpbmdMZW5ndGgpLnN0cmluZygp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBUb2tOdW1iZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1l
IExleGVyOjpMaXRlcmFsUGFyc2VyVG9rZW5QdHIgbnVtYmVyVG9rZW4gPSBtX2xleGVyLmN1cnJl
bnRUb2tlbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0ganNOdW1iZXIo
bnVtYmVyVG9rZW4tPm51bWJlclRva2VuKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4
ZXIubmV4dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tOdWxsOgotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0
VmFsdWUgPSBqc051bGwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgVG9rVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
bGV4ZXIubmV4dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0ganNCb29s
ZWFuKHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkodHlwZSAhPSBUb2tSQnJhY2UpKSB7CisgICAgICAgICAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnfSciX3M7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0ZhbHNl
OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsYXN0VmFsdWUgPSBqc0Jvb2xlYW4oZmFsc2UpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNrZXQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQg
dG9rZW4gJ10nIl9zOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2U6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIl9zOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUb2tJZGVudGlmaWVyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHRv
a2VuID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byB0cnlNYWtlRXJyb3JTdHJpbmcgPSBbJl0gKHVuc2lnbmVkIGxlbmd0aCkgLT4gU3RyaW5n
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFkZEVsbGlwc2lzID0gbGVuZ3Ro
ICE9IHRva2VuLT5zdHJpbmdMZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHRva2VuLT5zdHJpbmdJczhCaXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnlNYWtlU3RyaW5nKCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgXCIiLCBTdHJpbmdWaWV3
IHsgdG9rZW4tPnN0cmluZ1Rva2VuOCwgbGVuZ3RoIH0sIGFkZEVsbGlwc2lzID8gIi4uLiIgOiAi
IiwgJyInKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5TWFrZVN0cmlu
ZygiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiIiwgU3RyaW5nVmlldyB7IHRva2VuLT5zdHJpbmdU
b2tlbjE2LCBsZW5ndGggfSwgYWRkRWxsaXBzaXMgPyAiLi4uIiA6ICIiLCAnIicpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RleHBy
IHVuc2lnbmVkIG1heExlbmd0aCA9IDIwMDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIGVycm9yU3RyaW5nID0gdHJ5TWFrZUVycm9yU3RyaW5nKHN0ZDo6bWluKHRva2VuLT5zdHJp
bmdMZW5ndGgsIG1heExlbmd0aCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlcnJv
clN0cmluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBzaG9ydExlbmd0aCA9IDEwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2tl
bi0+c3RyaW5nTGVuZ3RoID4gc2hvcnRMZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVycm9yU3RyaW5nID0gdHJ5TWFrZUVycm9yU3RyaW5nKHNob3J0TGVuZ3RoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9yU3RyaW5nKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmV4cGVjdGVkIGlkZW50aWZpZXIi
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7
CisgICAgICAgICAgICBsYXN0VmFsdWUgPSBvYmplY3Q7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBkb1BhcnNlT2JqZWN0U3RhcnRFeHByZXNzaW9uOgorICAgICAgICBj
YXNlIERvUGFyc2VPYmplY3RTdGFydEV4cHJlc3Npb246IHsKKyAgICAgICAgICAgIFRva2VuVHlw
ZSB0eXBlID0gbV9sZXhlci5uZXh0KCk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodHlwZSAh
PSBUb2tTdHJpbmcgJiYgKG1fbW9kZSA9PSBTdHJpY3RKU09OIHx8IHR5cGUgIT0gVG9rSWRlbnRp
ZmllcikpKSB7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJQcm9wZXJ0
eSBuYW1lIG11c3QgYmUgYSBzdHJpbmcgbGl0ZXJhbCJfczsKKyAgICAgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWRlbnRpZmllclN0YWNrLmFwcGVu
ZChtYWtlSWRlbnRpZmllcihtX2xleGVyLmN1cnJlbnRUb2tlbigpKSk7CiAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBlcnJvclN0cmluZzsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tDb2xvbjoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnOiciX3M7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIFRva0xQYXJlbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKCciX3M7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1JQYXJlbjoK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3Rl
ZCB0b2tlbiAnKSciX3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0NvbW1hOgotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcsJyJfczsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgVG9rRG90OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcuJyJfczsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICc9JyJfczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rU2VtaToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnOyciX3M7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIFRva0VuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3Nh
Z2UgPSAiVW5leHBlY3RlZCBFT0YiX3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0Vycm9yOgotICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXJyb3IKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBh
cnNlIHZhbHVlIGV4cHJlc3Npb24iX3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIC8vIENoZWNrIGZvciBjb2xvbgorICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1f
bGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKSkgeworICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJzonIl9zOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFN0YXJ0UGFyc2VTdGF0ZW1lbnQ6IHsK
LSAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fbGV4ZXIuY3VycmVudFRva2VuKCktPnR5cGUpIHsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tMQnJhY2tldDoKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUb2tOdW1iZXI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rU3RyaW5nOgot
ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzdGFydFBhcnNlRXhwcmVzc2lvbjsKLQotICAg
ICAgICAgICAgICAgICAgICBjYXNlIFRva0xQYXJlbjogewotICAgICAgICAgICAgICAgICAgICAg
ICAgbV9sZXhlci5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLmFw
cGVuZChTdGFydFBhcnNlU3RhdGVtZW50RW5kU3RhdGVtZW50KTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2tldDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciX3M7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIFRva0xCcmFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAneyciX3M7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1JCcmFj
ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBl
Y3RlZCB0b2tlbiAnfSciX3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0lkZW50aWZpZXI6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgaWRlbnRpZmll
ciJfczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgVG9rQ29sb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzonIl9zOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBU
b2tSUGFyZW46Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IlVuZXhwZWN0ZWQgdG9rZW4gJyknIl9zOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tDb21tYToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
LCciX3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIFRva1RydWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ3RydWUnIl9zOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBUb2tGYWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAnZmFsc2UnIl9zOwotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tOdWxsOgotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRv
a2VuICdudWxsJyJfczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRW5kOgotICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiJfczsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
VG9rRG90OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJV
bmV4cGVjdGVkIHRva2VuICcuJyJfczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgotICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9
JyJfczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgVG9rU2VtaToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnOyciX3M7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRv
a0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJDb3VsZCBub3QgcGFyc2Ugc3RhdGVtZW50Il9z
OwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKworICAgICAgICAg
ICAgbV9sZXhlci5uZXh0KCk7CisgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChEb1BhcnNl
T2JqZWN0RW5kRXhwcmVzc2lvbik7CisgICAgICAgICAgICBnb3RvIHN0YXJ0UGFyc2VFeHByZXNz
aW9uOworICAgICAgICB9CisgICAgICAgIGNhc2UgRG9QYXJzZU9iamVjdEVuZEV4cHJlc3Npb246
CisgICAgICAgIHsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmpl
Y3RTdGFjay5sYXN0KCkpOworICAgICAgICAgICAgSWRlbnRpZmllciBpZGVudCA9IGlkZW50aWZp
ZXJTdGFjay50YWtlTGFzdCgpOworICAgICAgICAgICAgaWYgKG1fbW9kZSAhPSBTdHJpY3RKU09O
ICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgeworICAgICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghdmlzaXRlZFVuZGVyc2NvcmVQcm90by5hZGQob2JqZWN0
KS5pc05ld0VudHJ5KSkgeworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIkF0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVydHkiX3M7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgbV9udWxsT3JDb2RlQmxvY2sgPyBtX251
bGxPckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgOiBm
YWxzZSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZShvYmplY3QpLnB1dChtX2dsb2JhbE9iamVj
dCwgaWRlbnQsIGxhc3RWYWx1ZSwgc2xvdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RJbmRleChtX2dsb2JhbE9i
amVjdCwgaW5kZXgudmFsdWUoKSwgbGFzdFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIGlkZW50LCBsYXN0VmFsdWUp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCkt
PnR5cGUgPT0gVG9rQ29tbWEpCisgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlT2JqZWN0U3Rh
cnRFeHByZXNzaW9uOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fbGV4ZXIuY3VycmVudFRv
a2VuKCktPnR5cGUgIT0gVG9rUkJyYWNlKSkgeworICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ30nIl9zOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKKyAgICAgICAgICAg
IGxhc3RWYWx1ZSA9IG9iamVjdFN0YWNrLnRha2VMYXN0KCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBzdGFydFBhcnNlRXhwcmVzc2lvbjoKKyAgICAgICAgY2FzZSBT
dGFydFBhcnNlRXhwcmVzc2lvbjogeworICAgICAgICAgICAgVG9rZW5UeXBlIHR5cGUgPSBtX2xl
eGVyLmN1cnJlbnRUb2tlbigpLT50eXBlOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gVG9rTEJy
YWNrZXQpCisgICAgICAgICAgICAgICAgZ290byBzdGFydFBhcnNlQXJyYXk7CisgICAgICAgICAg
ICBpZiAodHlwZSA9PSBUb2tMQnJhY2UpCisgICAgICAgICAgICAgICAgZ290byBzdGFydFBhcnNl
T2JqZWN0OworICAgICAgICAgICAgbGFzdFZhbHVlID0gcGFyc2VQcmltaXRpdmVWYWx1ZSh2bSk7
CisgICAgICAgICAgICBpZiAoIWxhc3RWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTdGFydFBhcnNl
U3RhdGVtZW50OiB7CisgICAgICAgICAgICBzd2l0Y2ggKG1fbGV4ZXIuY3VycmVudFRva2VuKCkt
PnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgVG9rTEJyYWNrZXQ6CisgICAgICAgICAgICBjYXNl
IFRva051bWJlcjoKKyAgICAgICAgICAgIGNhc2UgVG9rU3RyaW5nOiB7CisgICAgICAgICAgICAg
ICAgbGFzdFZhbHVlID0gcGFyc2VQcmltaXRpdmVWYWx1ZSh2bSk7CisgICAgICAgICAgICAgICAg
aWYgKCFsYXN0VmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFN0YXJ0UGFy
c2VTdGF0ZW1lbnRFbmRTdGF0ZW1lbnQ6IHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoc3RhdGVT
dGFjay5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tl
bigpLT50eXBlICE9IFRva1JQYXJlbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgPT0gVG9rRW5kKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlOwotICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBjb250ZW50IGF0IGVuZCBvZiBKU09OIGxpdGVy
YWwiX3M7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKworICAgICAgICAgICAg
Y2FzZSBUb2tMUGFyZW46IHsKKyAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKKyAgICAg
ICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChTdGFydFBhcnNlU3RhdGVtZW50RW5kU3RhdGVt
ZW50KTsKKyAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0UGFyc2VFeHByZXNzaW9uOwogICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2tldDoKKyAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ10nIl9zOworICAgICAgICAg
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBjYXNlIFRva0xCcmFjZToKKyAgICAgICAg
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ3snIl9zOwor
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBjYXNlIFRva1JCcmFjZToK
KyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4g
J30nIl9zOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBjYXNlIFRv
a0lkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIGlkZW50aWZpZXIiX3M7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgICAgIGNhc2UgVG9rQ29sb246CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyJfczsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9
OworICAgICAgICAgICAgY2FzZSBUb2tSUGFyZW46CisgICAgICAgICAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcpJyJfczsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICAgICAgY2FzZSBUb2tDb21tYToKKyAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIl9zOworICAgICAgICAg
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBjYXNlIFRva1RydWU6CisgICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICd0cnVlJyJfczsK
KyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgY2FzZSBUb2tGYWxzZToK
KyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4g
J2ZhbHNlJyJfczsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgY2Fz
ZSBUb2tOdWxsOgorICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBl
Y3RlZCB0b2tlbiAnbnVsbCciX3M7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgICAgIGNhc2UgVG9rRW5kOgorICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCBFT0YiX3M7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgICAgIGNhc2UgVG9rRG90OgorICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAnLiciX3M7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgorICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnPSciX3M7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgICAgIGNhc2UgVG9rU2VtaToKKyAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIl9zOworICAgICAgICAgICAg
ICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBjYXNlIFRva0Vycm9yOgogICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBhcnNlIHN0
YXRlbWVudCJfczsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTdGFydFBhcnNlU3Rh
dGVtZW50RW5kU3RhdGVtZW50OiB7CisgICAgICAgICAgICBBU1NFUlQoc3RhdGVTdGFjay5pc0Vt
cHR5KCkpOworICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCktPnR5cGUgIT0g
VG9rUlBhcmVuKQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBpZiAo
bV9sZXhlci5uZXh0KCkgPT0gVG9rRW5kKQorICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFs
dWU7CisgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29udGVu
dCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFsIl9zOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoc3RhdGVTdGFjay5pc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4IGNlNjg1MTI4YWI1N2JiZDVlMzc0MTUxNDRh
OTUyY2E5NGRhOWUxNDcuLjY0NzM2M2Y1YzAwNTA2NmE2MDM0MTUzMTQyN2FlMDFhMWE5YjQ3YjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKQEAg
LTUyLDcgKzUyLDcgQEAgZW51bSBUb2tlblR5cGUgOiB1aW50OF90IHsKICAgICBUb2tMQnJhY2tl
dCwgVG9rUkJyYWNrZXQsIFRva0xCcmFjZSwgVG9rUkJyYWNlLAogICAgIFRva1N0cmluZywgVG9r
SWRlbnRpZmllciwgVG9rTnVtYmVyLCBUb2tDb2xvbiwKICAgICBUb2tMUGFyZW4sIFRva1JQYXJl
biwgVG9rQ29tbWEsIFRva1RydWUsIFRva0ZhbHNlLAotICAgIFRva051bGwsIFRva0VuZCwgVG9r
RG90LCBUb2tBc3NpZ24sIFRva1NlbWksIFRva0Vycm9yIH07CisgICAgVG9rTnVsbCwgVG9rRW5k
LCBUb2tEb3QsIFRva0Fzc2lnbiwgVG9rU2VtaSwgVG9rRXJyb3IsIFRva1NwYWNlIH07CiAKIHN0
cnVjdCBKU09OUFBhdGhFbnRyeSB7CiAgICAgSWRlbnRpZmllciBtX3BhdGhFbnRyeU5hbWU7CkBA
IC0xMzgsNyArMTM4LDcgQEAgY2xhc3MgTGl0ZXJhbFBhcnNlciB7CiAgICAgICAgIFRva2VuVHlw
ZSBuZXh0KCk7CiAgICAgICAgIAogI2lmICFBU1NFUlRfRU5BQkxFRAotICAgICAgICB0eXBlZGVm
IGNvbnN0IExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4qIExpdGVyYWxQYXJzZXJUb2tlblB0
cjsKKyAgICAgICAgdXNpbmcgTGl0ZXJhbFBhcnNlclRva2VuUHRyID0gY29uc3QgTGl0ZXJhbFBh
cnNlclRva2VuPENoYXJUeXBlPio7CiAKICAgICAgICAgTGl0ZXJhbFBhcnNlclRva2VuUHRyIGN1
cnJlbnRUb2tlbigpCiAgICAgICAgIHsKQEAgLTE5NSw2ICsxOTUsOSBAQCBjbGFzcyBMaXRlcmFs
UGFyc2VyIHsKICAgICBjbGFzcyBTdGFja0d1YXJkOwogICAgIEpTVmFsdWUgcGFyc2UoUGFyc2Vy
U3RhdGUpOwogCisgICAgSlNWYWx1ZSBwYXJzZVByaW1pdGl2ZVZhbHVlKFZNJik7CisKKyAgICBB
TFdBWVNfSU5MSU5FIElkZW50aWZpZXIgbWFrZUlkZW50aWZpZXIodHlwZW5hbWUgTGV4ZXI6Okxp
dGVyYWxQYXJzZXJUb2tlblB0cik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGl0ZXJhbENoYXJU
eXBlPgogICAgIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBtYWtlSWRlbnRpZmllcihjb25zdCBM
aXRlcmFsQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpOwogCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY3MzM4MDQ5ODI1
OWYzM2Y3NjI0N2E4ZmVlZDVhZWY3NDNiYWM4ZDUuLjQ1NWY0MTFkMmRkNzM3ZWY1ZmY4NzM1NjNk
ODI0YThiMDcyM2ZmOTYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMTUgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBsZWFmIG9iamVj
dCBjcmVhdGlvbiBpbiBKU09OLnBhcnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzAyOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9qc29uLXBhcnNlLWxlYWYtb2JqZWN0
LmpzOiBBZGRlZC4KKwogMjAyMS0wOS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBKU09OLnBhcnNlIG1pY3JvYmVuY2htYXJrcyBmcm9t
IFNwZWVkb21ldGVyMgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvanNvbi1w
YXJzZS1sZWFmLW9iamVjdC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2pzb24tcGFyc2Ut
bGVhZi1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZjOGRjODg4MTI4MWI0YzI2YjE2ZDliZTUzYzVh
YmQ5ZGE2YTNlZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2pz
b24tcGFyc2UtbGVhZi1vYmplY3QuanMKQEAgLTAsMCArMSwxODcgQEAKK3ZhciB0ZXh0ID0gYAor
WworeworIm51bWJlciI6IDAsCisic3RyaW5nIjogInRlc3QiLAorIm51bGwiOiBudWxsLAorImJv
b2xlYW4iOiBmYWxzZQorfSwKK3sKKyJudW1iZXIiOiAwLAorInN0cmluZyI6ICJ0ZXN0IiwKKyJu
dWxsIjogbnVsbCwKKyJib29sZWFuIjogZmFsc2UKK30sCit7CisibnVtYmVyIjogMCwKKyJzdHJp
bmciOiAidGVzdCIsCisibnVsbCI6IG51bGwsCisiYm9vbGVhbiI6IGZhbHNlCit9LAoreworIm51
bWJlciI6IDAsCisic3RyaW5nIjogInRlc3QiLAorIm51bGwiOiBudWxsLAorImJvb2xlYW4iOiBm
YWxzZQorfSwKK3sKKyJudW1iZXIiOiAwLAorInN0cmluZyI6ICJ0ZXN0IiwKKyJudWxsIjogbnVs
bCwKKyJib29sZWFuIjogZmFsc2UKK30sCit7CisibnVtYmVyIjogMCwKKyJzdHJpbmciOiAidGVz
dCIsCisibnVsbCI6IG51bGwsCisiYm9vbGVhbiI6IGZhbHNlCit9LAoreworIm51bWJlciI6MCwK
KyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAorewor
Im51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZh
bHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAor
ImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJu
dWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmci
OiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6
MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAor
eworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4i
OmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxs
LAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwK
KyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJp
bmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJl
ciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9
LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xl
YW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpu
dWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0
IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJz
dHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51
bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNl
Cit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJv
b2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxs
IjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0
ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwK
KyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAorewor
Im51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZh
bHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAor
ImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJu
dWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmci
OiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9CitdCitgOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIEpTT04ucGFyc2UodGV4dCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438266</attachid>
            <date>2021-09-15 11:32:18 -0700</date>
            <delta_ts>2021-09-15 12:05:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230298-20210915113217.patch</filename>
            <type>text/plain</type>
            <size>43723</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YzVkMmU2ZGNhYWJlNzJjOGQ5NGJhMWVhMGE1OTUyMDg3YTNjMzkzLi40ODFjMWNiMmYwZmMyNjEx
OWYxZTZlZThkOTg4ZjgzMDJkN2Q4ZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAyMS0wOS0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIGxlYWYgb2JqZWN0IGNyZWF0aW9uIGluIEpTT04u
cGFyc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDI5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggb3B0aW1pemVzIEpTT04ucGFyc2UuCisKKyAgICAgICAgMS4gVXNlIHRhYmxlIGlu
IGlzSlNPTldoaXRlU3BhY2UuCisgICAgICAgIDIuIEV4dHJhY3QgcHJpbWl0aXZlIHZhbHVlIGNy
ZWF0aW9uIGFzIHBhcnNlUHJpbWl0aXZlVmFsdWUgZnVuY3Rpb24gdG8gdXNlIGl0IGluIGRpZmZl
cmVudCBwbGFjZS4KKyAgICAgICAgMy4gQWRkIGxlYWYtb2JqZWN0IGNyZWF0aW9uIGZhc3QgcGF0
aC4gUHJldmlvdXNseSwgd2hlbiBjcmVhdGluZyBhIGxlYWYtb2JqZWN0IGZyb20gSlNPTi5wYXJz
ZSB3ZQorICAgICAgICAgICBhcmUgdG9vIGdlbmVyaWMgYW5kIGp1bXBpbmcgYXJvdW5kIHRoZSBj
b2RlLiBJbnN0ZWFkIHdlIGFkZCBhIGZhc3QgcGF0aCB0aGF0IGRvZXMgbm90IHBlcmZvcm0KKyAg
ICAgICAgICAgdW5uZWNlc3Nhcnkgb3BlcmF0aW9ucyBhbmQgY29kZSBnZXRzIHRpZ2h0LgorCisg
ICAgICAgIEl0IG9mZmVycyAzLTQlIGltcHJvdmVtZW50IGluIG1pY3JvYmVuY2htYXJrcy4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUb1QgICAgICAgICAgICAgICAgICAgICBQYXRjaGVkCisKKyAgICAgICAgdmFuaWxsYS1lczIw
MTUtYmFiZWwtd2VicGFjay10b2RvbXZjLWpzb24tcGFyc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNC43MTY5Ky0wLjExMTMgICAgIF4g
ICAgMTAxLjQ4MzYrLTAuMjE2OCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDMxOXggZmFzdGVyCisg
ICAgICAgIGZsaWdodC10b2RvbXZjLWpzb24tcGFyc2UgICAgICAgICAgICAgICAgICAgICAgNTMu
OTA3NCstMC4wOTU3ICAgICBeICAgICA1Mi4xMzQ3Ky0wLjA4MDIgICAgICAgIF4gZGVmaW5pdGVs
eSAxLjAzNDB4IGZhc3RlcgorICAgICAgICB2YW5pbGxhLWVzMjAxNS10b2RvbXZjLWpzb24tcGFy
c2UgICAgICAgICAgICAgMTA0LjkzNzMrLTAuMTYzMSAgICAgXiAgICAxMDEuNDk3OCstMC4xMDcz
ICAgICAgICBeIGRlZmluaXRlbHkgMS4wMzM5eCBmYXN0ZXIKKyAgICAgICAgdmFuaWxsYS10b2Rv
bXZjLWpzb24tcGFyc2UgICAgICAgICAgICAgICAgICAgICA3OS4xMzMwKy0wLjA5NjMgICAgIF4g
ICAgIDc2Ljc1NjgrLTAuMTYwNiAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDMxMHggZmFzdGVyCisK
KyAgICAgICAgVGhpcyBvZmZlcnMgMC4yJSBpbXByb3ZlbWVudCBpbiBTcGVlZG9tZXRlcjIuCisK
KyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8ICAgICAgICAgICAgICAgc3VidGVz
dCAgICAgICAgICAgICAgICB8ICAgICBtcyAgICAgIHwgICAgIG1zICAgICAgfCAgYiAvIGEgICB8
IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAg
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgfCBFbG0tVG9kb01WQyAgICAgICAgICAgICAg
ICAgICAgICAgICAgfDExNi44NjAwMDAgICB8MTE2LjgyNTAwMCAgIHwwLjk5OTcwMCAgfCAwLjkw
MTA3MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8
IFZ1ZUpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgICB8MjQuNjU4MzMzICAgIHwyNC43
NjMzMzMgICAgfDEuMDA0MjU4ICB8IDAuNTcxNzI4ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgRW1iZXJKUy1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgICAgIHwxMjYuNjY2NjY3ICAgfDEyNi4zMzUwMDAgICB8MC45OTczODIgIHwgMC4yODk1MTcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBCYWNr
Ym9uZUpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgfDQ4LjQzNTAwMCAgICB8NDguNTIzMzMz
ICAgIHwxLjAwMTgyNCAgfCAwLjQ1NTYzOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICB8IFByZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICB8MTcuNTg1MDAwICAgIHwxNy4zNjgzMzMgICAgfDAuOTg3Njc5ICB8IDAuMjQ3NjU4ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQW5ndWxhckpT
LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgIHwxMjkuNTc2NjY3ICAgfDEyOS4zOTgzMzMgICB8
MC45OTg2MjQgIHwgMC42MjU2MzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2RvTVZDICAgICAgICAgICAgICAgfDYy
Ljc0NjY2NyAgICB8NjIuMjQxNjY3ICAgIHwwLjk5MTk1MiAgfCAwLjAwMDAxOSAoc2lnbmlmaWNh
bnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEluZmVybm8tVG9kb01W
QyAgICAgICAgICAgICAgICAgICAgICB8NjMuNzQxNjY3ICAgIHw2My40OTUwMDAgICAgfDAuOTk2
MTMwICB8IDAuNDQ4ODYxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgRmxpZ2h0LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgIHw3OC4wMjE2
NjcgICAgfDc3LjMwNjY2NyAgICB8MC45OTA4MzYgIHwgMC4wODcxMzcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBBbmd1bGFyMi1UeXBlU2NyaXB0
LVRvZG9NVkMgICAgICAgICAgfDM5LjgyMzMzMyAgICB8MzkuOTIzMzMzICAgIHwxLjAwMjUxMSAg
fCAwLjczNjI3OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICB8IFZhbmlsbGFKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICB8NTAuMDczMzMzICAg
IHw0OS43OTE2NjcgICAgfDAuOTk0Mzc1ICB8IDAuMTM2NDk1ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgalF1ZXJ5LVRvZG9NVkMgICAgICAgICAg
ICAgICAgICAgICAgIHwyMjEuMzAwMDAwICAgfDIyMS41ODY2NjcgICB8MS4wMDEyOTUgIHwgMC40
MTgwMDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
fCBFbWJlckpTLURlYnVnLVRvZG9NVkMgICAgICAgICAgICAgICAgfDM0MC4xNDUwMDAgICB8MzM5
Ljk2NTAwMCAgIHwwLjk5OTQ3MSAgfCAwLjY5MTQ5MCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICB8IFJlYWN0LVRvZG9NVkMgICAgICAgICAgICAgICAg
ICAgICAgICB8ODUuNjk4MzMzICAgIHw4NS42NTAwMDAgICAgfDAuOTk5NDM2ICB8IDAuNzYxNTg2
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgUmVh
Y3QtUmVkdXgtVG9kb01WQyAgICAgICAgICAgICAgICAgIHwxNDAuNTEwMDAwICAgfDE0MC43ODUw
MDAgICB8MS4wMDE5NTcgIHwgMC4yODU5MjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9N
VkMgfDYwLjkyODMzMyAgICB8NjAuNTAwMDAwICAgIHwwLjk5Mjk3MCAgfCAwLjAwMDA2OSAoc2ln
bmlmaWNhbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgICAgICAgIGEgbWVhbiA9IDI2Mi4xNTg0NAorICAgICAgICBiIG1lYW4gPSAyNjIu
NzIyNjEKKyAgICAgICAgcFZhbHVlID0gMC4wNDI4MDUyNDg3CisgICAgICAgIChCaWdnZXIgbWVh
bnMgYXJlIGJldHRlci4pCisgICAgICAgIDEuMDAyIHRpbWVzIGJldHRlcgorICAgICAgICBSZXN1
bHRzIEFSRSBzaWduaWZpY2FudAorCisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46Om1ha2VJZGVudGlmaWVy
KToKKyAgICAgICAgKEpTQzo6aXNKU09OV2hpdGVTcGFjZSk6CisgICAgICAgIChKU0M6OkxpdGVy
YWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4KToKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBh
cnNlcjxDaGFyVHlwZT46OnBhcnNlUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoSlNDOjpMaXRl
cmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBh
cnNlci5oOgorCiAyMDIxLTA5LTEzICBYYW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0pTQ11bMzJiaXRdIGluLWJ5LXZhbCBmYWlscyBpbnNpZGUgZm9yLWluIGxvb3AgYWZ0
ZXIgZGVsZXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRl
cmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJz
ZXIuY3BwCmluZGV4IDQ0YjljMWMyNjUxMzJjZTI1ZTE4M2YwYTUyZGU1NWFlOThkN2U0OGUuLjBh
NGM0YzQ5ZmZlYjNhZDQ3OWI5YTNmZWRiYjJkNWQ0ZjVjZjdiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBAIC01OCwxNCArNTgsNiBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgY29tcGFyZTRDaGFycyhjb25zdCBDaGFyVHlwZSogc291cmNl
LCBDaGFyVHlwZSBjMCwgQ2hhclR5cGUgYwogICAgICAgICByZXR1cm4gQ09NUEFSRV80VUNIQVJT
KHNvdXJjZSwgYzAsIGMxLCBjMiwgYzMpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5
cGU+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzSlNPTldoaXRlU3BhY2UoY29uc3QgQ2hh
clR5cGUmIGMpCi17Ci0gICAgLy8gVGhlIEpTT04gUkZDIDQ2MjcgZGVmaW5lcyBhIGxpc3Qgb2Yg
YWxsb3dlZCBjaGFyYWN0ZXJzIHRvIGJlIGNvbnNpZGVyZWQKLSAgICAvLyBpbnNpZ25pZmljYW50
IHdoaXRlIHNwYWNlOiBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmM0NjI3LnR4dCAoMi4gSlNP
TiBHcmFtbWFyKS4KLSAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAweDkgfHwgYyA9PSAweEEg
fHwgYyA9PSAweEQ7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIGJvb2wgTGl0
ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnRyeUpTT05QUGFyc2UoVmVjdG9yPEpTT05QRGF0YT4mIHJl
c3VsdHMsIGJvb2wgbmVlZHNGdWxsU291cmNlSW5mbykKIHsKQEAgLTE0OSw2ICsxNDEsMTUgQEAg
Ym9vbCBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6dHJ5SlNPTlBQYXJzZShWZWN0b3I8SlNPTlBE
YXRhPiYgcmVzdWx0cywgYm9vbCBuZWUKICAgICB9IHdoaWxlIChtX2xleGVyLmN1cnJlbnRUb2tl
bigpLT50eXBlID09IFRva0lkZW50aWZpZXIpOwogICAgIHJldHVybiBtX2xleGVyLmN1cnJlbnRU
b2tlbigpLT50eXBlID09IFRva0VuZDsKIH0KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBl
PgorQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjptYWtl
SWRlbnRpZmllcih0eXBlbmFtZSBMZXhlcjo6TGl0ZXJhbFBhcnNlclRva2VuUHRyIHRva2VuKQor
eworICAgIGlmICh0b2tlbi0+c3RyaW5nSXM4Qml0KQorICAgICAgICByZXR1cm4gbWFrZUlkZW50
aWZpZXIodG9rZW4tPnN0cmluZ1Rva2VuOCwgdG9rZW4tPnN0cmluZ0xlbmd0aCk7CisgICAgcmV0
dXJuIG1ha2VJZGVudGlmaWVyKHRva2VuLT5zdHJpbmdUb2tlbjE2LCB0b2tlbi0+c3RyaW5nTGVu
Z3RoKTsKK30KKwogICAgIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogdGVtcGxhdGUg
PHR5cGVuYW1lIExpdGVyYWxDaGFyVHlwZT4KQEAgLTIwMCw2ICsyMDEsOCBAQCBzdGF0aWMgQUxX
QVlTX0lOTElORSBib29sIGNhbm5vdEJlSWRlbnRQYXJ0T3JFc2NhcGVTdGFydChVQ2hhcikKIH0K
IAogLy8gMjU2IExhdGluLTEgY29kZXMKKy8vIFRoZSBKU09OIFJGQyA0NjI3IGRlZmluZXMgYSBs
aXN0IG9mIGFsbG93ZWQgY2hhcmFjdGVycyB0byBiZSBjb25zaWRlcmVkCisvLyBpbnNpZ25pZmlj
YW50IHdoaXRlIHNwYWNlOiBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmM0NjI3LnR4dCAoMi4g
SlNPTiBHcmFtbWFyKS4KIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgVG9rZW5UeXBlIHRva2VuVHlw
ZXNPZkxhdGluMUNoYXJhY3RlcnNbMjU2XSA9IHsKIC8qICAgMCAtIE51bGwgICAgICAgICAgICAg
ICAqLyBUb2tFcnJvciwKIC8qICAgMSAtIFN0YXJ0IG9mIEhlYWRpbmcgICAqLyBUb2tFcnJvciwK
QEAgLTIxMCwxMSArMjEzLDExIEBAIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgVG9rZW5UeXBlIHRv
a2VuVHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbMjU2XSA9IHsKIC8qICAgNiAtIEFja25vd2xlZGdt
ZW50ICAgICAqLyBUb2tFcnJvciwKIC8qICAgNyAtIEJlbGwgICAgICAgICAgICAgICAqLyBUb2tF
cnJvciwKIC8qICAgOCAtIEJhY2sgU3BhY2UgICAgICAgICAqLyBUb2tFcnJvciwKLS8qICAgOSAt
IEhvcml6b250YWwgVGFiICAgICAqLyBUb2tFcnJvciwKLS8qICAxMCAtIExpbmUgRmVlZCAgICAg
ICAgICAqLyBUb2tFcnJvciwKKy8qICAgOSAtIEhvcml6b250YWwgVGFiICAgICAqLyBUb2tFcnJv
clNwYWNlLAorLyogIDEwIC0gTGluZSBGZWVkICAgICAgICAgICovIFRva0Vycm9yU3BhY2UsCiAv
KiAgMTEgLSBWZXJ0aWNhbCBUYWIgICAgICAgKi8gVG9rRXJyb3IsCiAvKiAgMTIgLSBGb3JtIEZl
ZWQgICAgICAgICAgKi8gVG9rRXJyb3IsCi0vKiAgMTMgLSBDYXJyaWFnZSBSZXR1cm4gICAgKi8g
VG9rRXJyb3IsCisvKiAgMTMgLSBDYXJyaWFnZSBSZXR1cm4gICAgKi8gVG9rRXJyb3JTcGFjZSwK
IC8qICAxNCAtIFNoaWZ0IE91dCAgICAgICAgICAqLyBUb2tFcnJvciwKIC8qICAxNSAtIFNoaWZ0
IEluICAgICAgICAgICAqLyBUb2tFcnJvciwKIC8qICAxNiAtIERhdGEgTGluZSBFc2NhcGUgICAq
LyBUb2tFcnJvciwKQEAgLTIzMyw3ICsyMzYsNyBAQCBzdGF0aWMgY29uc3RleHByIGNvbnN0IFRv
a2VuVHlwZSB0b2tlblR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1Nl0gPSB7CiAvKiAgMjkgLSBH
cm91cCBTZXBhcmF0b3IgICAgKi8gVG9rRXJyb3IsCiAvKiAgMzAgLSBSZWNvcmQgU2VwYXJhdG9y
ICAgKi8gVG9rRXJyb3IsCiAvKiAgMzEgLSBVbml0IFNlcGFyYXRvciAgICAgKi8gVG9rRXJyb3Is
Ci0vKiAgMzIgLSBTcGFjZSAgICAgICAgICAgICAgKi8gVG9rRXJyb3IsCisvKiAgMzIgLSBTcGFj
ZSAgICAgICAgICAgICAgKi8gVG9rRXJyb3JTcGFjZSwKIC8qICAzMyAtICEgICAgICAgICAgICAg
ICAgICAqLyBUb2tFcnJvciwKIC8qICAzNCAtICIgICAgICAgICAgICAgICAgICAqLyBUb2tTdHJp
bmcsCiAvKiAgMzUgLSAjICAgICAgICAgICAgICAgICAgKi8gVG9rRXJyb3IsCkBAIC03MTksNiAr
NzIyLDEyIEBAIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgYm9vbCBzYWZlU3RyaW5nTGF0aW4xQ2hh
cmFjdGVyc0luU3RyaWN0SlNPTlsyNTZdID0gewogLyogMjU1IC0gTGwgY2F0ZWdvcnkgICAgICAg
ICovIHRydWUsCiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMgQUxX
QVlTX0lOTElORSBib29sIGlzSlNPTldoaXRlU3BhY2UoY29uc3QgQ2hhclR5cGUmIGMpCit7Cisg
ICAgcmV0dXJuIGlzTGF0aW4xKGMpICYmIHRva2VuVHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbY10g
PT0gVG9rRXJyb3JTcGFjZTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogQUxX
QVlTX0lOTElORSBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgo
TGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPiYgdG9rZW4pCiB7CkBAIC03ODMsNiArNzkyLDcg
QEAgQUxXQVlTX0lOTElORSBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVy
OjpsZXgoTGl0ZXJhbFBhcnNlclRva2VuPEMKICAgICAgICAgICAgIHJldHVybiBsZXhOdW1iZXIo
dG9rZW4pOwogCiAgICAgICAgIGNhc2UgVG9rRXJyb3I6CisgICAgICAgIGNhc2UgVG9rRXJyb3JT
cGFjZToKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xMTEwLDYg
KzExMjAsOTEgQEAgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4
TnVtYmVyKExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4KICAgICByZXR1cm4gVG9rTnVtYmVy
OwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitBTFdBWVNfSU5MSU5FIEpTVmFs
dWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlUHJpbWl0aXZlVmFsdWUoVk0mIHZtKQor
eworICAgIHN3aXRjaCAobV9sZXhlci5jdXJyZW50VG9rZW4oKS0+dHlwZSkgeworICAgIGNhc2Ug
VG9rU3RyaW5nOiB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmcodm0sIG1ha2VJ
ZGVudGlmaWVyKG1fbGV4ZXIuY3VycmVudFRva2VuKCkpLnN0cmluZygpKTsKKyAgICAgICAgbV9s
ZXhlci5uZXh0KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGNhc2UgVG9r
TnVtYmVyOiB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobV9sZXhlci5jdXJy
ZW50VG9rZW4oKS0+bnVtYmVyVG9rZW4pOworICAgICAgICBtX2xleGVyLm5leHQoKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgY2FzZSBUb2tOdWxsOgorICAgICAgICBtX2xl
eGVyLm5leHQoKTsKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIGNhc2UgVG9rVHJ1ZToK
KyAgICAgICAgbV9sZXhlci5uZXh0KCk7CisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4odHJ1ZSk7
CisgICAgY2FzZSBUb2tGYWxzZToKKyAgICAgICAgbV9sZXhlci5uZXh0KCk7CisgICAgICAgIHJl
dHVybiBqc0Jvb2xlYW4oZmFsc2UpOworICAgIGNhc2UgVG9rUkJyYWNrZXQ6CisgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciX3M7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgY2FzZSBUb2tSQnJhY2U6CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3Nh
Z2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnfSciX3M7CisgICAgICAgIHJldHVybiB7IH07CisgICAg
Y2FzZSBUb2tJZGVudGlmaWVyOiB7CisgICAgICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLmN1cnJl
bnRUb2tlbigpOworCisgICAgICAgIGF1dG8gdHJ5TWFrZUVycm9yU3RyaW5nID0gWyZdICh1bnNp
Z25lZCBsZW5ndGgpIC0+IFN0cmluZyB7CisgICAgICAgICAgICBib29sIGFkZEVsbGlwc2lzID0g
bGVuZ3RoICE9IHRva2VuLT5zdHJpbmdMZW5ndGg7CisgICAgICAgICAgICBpZiAodG9rZW4tPnN0
cmluZ0lzOEJpdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ5TWFrZVN0cmluZygiVW5leHBl
Y3RlZCBpZGVudGlmaWVyIFwiIiwgU3RyaW5nVmlldyB7IHRva2VuLT5zdHJpbmdUb2tlbjgsIGxl
bmd0aCB9LCBhZGRFbGxpcHNpcyA/ICIuLi4iIDogIiIsICciJyk7CisgICAgICAgICAgICByZXR1
cm4gdHJ5TWFrZVN0cmluZygiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiIiwgU3RyaW5nVmlldyB7
IHRva2VuLT5zdHJpbmdUb2tlbjE2LCBsZW5ndGggfSwgYWRkRWxsaXBzaXMgPyAiLi4uIiA6ICIi
LCAnIicpOworICAgICAgICB9OworCisgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhMZW5n
dGggPSAyMDA7CisKKyAgICAgICAgU3RyaW5nIGVycm9yU3RyaW5nID0gdHJ5TWFrZUVycm9yU3Ry
aW5nKHN0ZDo6bWluKHRva2VuLT5zdHJpbmdMZW5ndGgsIG1heExlbmd0aCkpOworICAgICAgICBp
ZiAoIWVycm9yU3RyaW5nKSB7CisgICAgICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgc2hvcnRM
ZW5ndGggPSAxMDsKKyAgICAgICAgICAgIGlmICh0b2tlbi0+c3RyaW5nTGVuZ3RoID4gc2hvcnRM
ZW5ndGgpCisgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSB0cnlNYWtlRXJyb3JTdHJpbmco
c2hvcnRMZW5ndGgpOworICAgICAgICAgICAgaWYgKCFlcnJvclN0cmluZykKKyAgICAgICAgICAg
ICAgICBlcnJvclN0cmluZyA9ICJVbmV4cGVjdGVkIGlkZW50aWZpZXIiOworICAgICAgICB9CisK
KyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IGVycm9yU3RyaW5nOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKyAgICBjYXNlIFRva0NvbG9uOgorICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzonIl9zOworICAgICAgICByZXR1cm4geyB9Owor
ICAgIGNhc2UgVG9rTFBhcmVuOgorICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhw
ZWN0ZWQgdG9rZW4gJygnIl9zOworICAgICAgICByZXR1cm4geyB9OworICAgIGNhc2UgVG9rUlBh
cmVuOgorICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJykn
Il9zOworICAgICAgICByZXR1cm4geyB9OworICAgIGNhc2UgVG9rQ29tbWE6CisgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLCciX3M7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgY2FzZSBUb2tEb3Q6CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAnLiciX3M7CisgICAgICAgIHJldHVybiB7IH07CisgICAgY2Fz
ZSBUb2tBc3NpZ246CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0
b2tlbiAnPSciX3M7CisgICAgICAgIHJldHVybiB7IH07CisgICAgY2FzZSBUb2tTZW1pOgorICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIl9zOworICAg
ICAgICByZXR1cm4geyB9OworICAgIGNhc2UgVG9rRW5kOgorICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zOworICAgICAgICByZXR1cm4geyB9OworICAgIGNh
c2UgVG9rRXJyb3I6CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gRXJyb3IKKyAgICAgICAgbV9w
YXJzZUVycm9yTWVzc2FnZSA9ICJDb3VsZCBub3QgcGFyc2UgdmFsdWUgZXhwcmVzc2lvbiJfczsK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VHlwZT4KIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRl
IGluaXRpYWxTdGF0ZSkKIHsKQEAgLTExMjMsMjk3ICsxMjE4LDI1NiBAQCBKU1ZhbHVlIExpdGVy
YWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAg
SGFzaFNldDxKU09iamVjdCo+IHZpc2l0ZWRVbmRlcnNjb3JlUHJvdG87CiAgICAgd2hpbGUgKDEp
IHsKICAgICAgICAgc3dpdGNoKHN0YXRlKSB7Ci0gICAgICAgICAgICBzdGFydFBhcnNlQXJyYXk6
Ci0gICAgICAgICAgICBjYXNlIFN0YXJ0UGFyc2VBcnJheTogewotICAgICAgICAgICAgICAgIEpT
QXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShtX2dsb2JhbE9iamVjdCwgbnVsbHB0
cik7Ci0gICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgp
KTsKLSAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93
KGFycmF5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRvUGFyc2VBcnJheVN0YXJ0RXhw
cmVzc2lvbjoKLSAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSBEb1Bh
cnNlQXJyYXlTdGFydEV4cHJlc3Npb246IHsKLSAgICAgICAgICAgICAgICBUb2tlblR5cGUgbGFz
dFRva2VuID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKS0+dHlwZTsKLSAgICAgICAgICAgICAgICBp
ZiAobV9sZXhlci5uZXh0KCkgPT0gVG9rUkJyYWNrZXQpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGxhc3RUb2tlbiA9PSBUb2tDb21tYSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9w
YXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIGNvbW1hIGF0IHRoZSBlbmQgb2YgYXJyYXkg
ZXhwcmVzc2lvbiJfczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGxhc3RWYWx1ZSA9IG9iamVjdFN0YWNrLnRha2VMYXN0
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKERvUGFyc2VBcnJheUVuZEV4cHJlc3Npb24p
OwotICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBjYXNlIERvUGFyc2VBcnJheUVuZEV4cHJlc3Npb246IHsKLSAgICAg
ICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkob2JqZWN0U3RhY2subGFzdCgpKTsK
LSAgICAgICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgobV9nbG9iYWxPYmplY3QsIGFy
cmF5LT5sZW5ndGgoKSwgbGFzdFZhbHVlKTsKLSAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKG1fbGV4ZXIu
Y3VycmVudFRva2VuKCktPnR5cGUgPT0gVG9rQ29tbWEpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gZG9QYXJzZUFycmF5U3RhcnRFeHByZXNzaW9uOwotCi0gICAgICAgICAgICAgICAgaWYgKG1f
bGV4ZXIuY3VycmVudFRva2VuKCktPnR5cGUgIT0gVG9rUkJyYWNrZXQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnXSciX3M7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHN0YXJ0UGFyc2VBcnJheToK
KyAgICAgICAgY2FzZSBTdGFydFBhcnNlQXJyYXk6IHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGFy
cmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShtX2dsb2JhbE9iamVjdCwgbnVsbHB0cik7CisgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgb2Jq
ZWN0U3RhY2suYXBwZW5kV2l0aENyYXNoT25PdmVyZmxvdyhhcnJheSk7CisgICAgICAgIH0KKyAg
ICAgICAgZG9QYXJzZUFycmF5U3RhcnRFeHByZXNzaW9uOgorICAgICAgICBGQUxMVEhST1VHSDsK
KyAgICAgICAgY2FzZSBEb1BhcnNlQXJyYXlTdGFydEV4cHJlc3Npb246IHsKKyAgICAgICAgICAg
IFRva2VuVHlwZSBsYXN0VG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLT50eXBlOworICAg
ICAgICAgICAgaWYgKG1fbGV4ZXIubmV4dCgpID09IFRva1JCcmFja2V0KSB7CisgICAgICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKGxhc3RUb2tlbiA9PSBUb2tDb21tYSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIGNvbW1hIGF0IHRoZSBl
bmQgb2YgYXJyYXkgZXhwcmVzc2lvbiJfczsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
bV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2su
dGFrZUxhc3QoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHN0YXJ0UGFyc2VPYmplY3Q6Ci0gICAgICAgICAgICBjYXNlIFN0YXJ0UGFyc2VPYmpl
Y3Q6IHsKLSAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1wdHlP
YmplY3QobV9nbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLmFwcGVu
ZFdpdGhDcmFzaE9uT3ZlcmZsb3cob2JqZWN0KTsKLQotICAgICAgICAgICAgICAgIFRva2VuVHlw
ZSB0eXBlID0gbV9sZXhlci5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gVG9r
U3RyaW5nIHx8IChtX21vZGUgIT0gU3RyaWN0SlNPTiAmJiB0eXBlID09IFRva0lkZW50aWZpZXIp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIExleGVyOjpMaXRlcmFsUGFyc2VyVG9r
ZW5QdHIgaWRlbnRpZmllclRva2VuID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGlkZW50aWZpZXJUb2tlbi0+c3RyaW5nSXM4Qml0KQotICAgICAgICAg
ICAgICAgICAgICAgICAgaWRlbnRpZmllclN0YWNrLmFwcGVuZChtYWtlSWRlbnRpZmllcihpZGVu
dGlmaWVyVG9rZW4tPnN0cmluZ1Rva2VuOCwgaWRlbnRpZmllclRva2VuLT5zdHJpbmdMZW5ndGgp
KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgaWRl
bnRpZmllclN0YWNrLmFwcGVuZChtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyVG9rZW4tPnN0cmlu
Z1Rva2VuMTYsIGlkZW50aWZpZXJUb2tlbi0+c3RyaW5nTGVuZ3RoKSk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgLy8gQ2hlY2sgZm9yIGNvbG9uCi0gICAgICAgICAgICAgICAgICAgIGlmIChtX2xl
eGVyLm5leHQoKSAhPSBUb2tDb2xvbikgeworCisgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVu
ZChEb1BhcnNlQXJyYXlFbmRFeHByZXNzaW9uKTsKKyAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJz
ZUV4cHJlc3Npb247CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEb1BhcnNlQXJyYXlFbmRFeHBy
ZXNzaW9uOiB7CisgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkob2JqZWN0U3Rh
Y2subGFzdCgpKTsKKyAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChtX2dsb2JhbE9i
amVjdCwgYXJyYXktPmxlbmd0aCgpLCBsYXN0VmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVu
dFRva2VuKCktPnR5cGUgPT0gVG9rQ29tbWEpCisgICAgICAgICAgICAgICAgZ290byBkb1BhcnNl
QXJyYXlTdGFydEV4cHJlc3Npb247CisKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShtX2xleGVy
LmN1cnJlbnRUb2tlbigpLT50eXBlICE9IFRva1JCcmFja2V0KSkgeworICAgICAgICAgICAgICAg
IG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ10nIl9zOworICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1f
bGV4ZXIubmV4dCgpOworICAgICAgICAgICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2sudGFrZUxh
c3QoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN0YXJ0UGFyc2VP
YmplY3Q6CisgICAgICAgIGNhc2UgU3RhcnRQYXJzZU9iamVjdDogeworICAgICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KG1fZ2xvYmFsT2JqZWN0KTsKKwor
ICAgICAgICAgICAgVG9rZW5UeXBlIHR5cGUgPSBtX2xleGVyLm5leHQoKTsKKyAgICAgICAgICAg
IGlmICh0eXBlID09IFRva1N0cmluZyB8fCAobV9tb2RlICE9IFN0cmljdEpTT04gJiYgdHlwZSA9
PSBUb2tJZGVudGlmaWVyKSkgeworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihtX2xleGVy
LmN1cnJlbnRUb2tlbigpKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobV9s
ZXhlci5uZXh0KCkgIT0gVG9rQ29sb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICc6JyBiZWZvcmUgdmFsdWUgaW4gb2JqZWN0IHBy
b3BlcnR5IGRlZmluaXRpb24iX3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgbV9s
ZXhlci5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKERvUGFy
c2VPYmplY3RFbmRFeHByZXNzaW9uKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBzdGFydFBh
cnNlRXhwcmVzc2lvbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHR5
cGUgIT0gVG9rUkJyYWNlKSAgewotICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNz
YWdlID0gIkV4cGVjdGVkICd9JyJfczsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7
Ci0gICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2sudGFrZUxhc3QoKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRvUGFyc2VP
YmplY3RTdGFydEV4cHJlc3Npb246Ci0gICAgICAgICAgICBjYXNlIERvUGFyc2VPYmplY3RTdGFy
dEV4cHJlc3Npb246IHsKLSAgICAgICAgICAgICAgICBUb2tlblR5cGUgdHlwZSA9IG1fbGV4ZXIu
bmV4dCgpOwotICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFRva1N0cmluZyAmJiAobV9tb2Rl
ID09IFN0cmljdEpTT04gfHwgdHlwZSAhPSBUb2tJZGVudGlmaWVyKSkgewotICAgICAgICAgICAg
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0
cmluZyBsaXRlcmFsIl9zOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBMZXhlcjo6TGl0ZXJh
bFBhcnNlclRva2VuUHRyIGlkZW50aWZpZXJUb2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKGlkZW50aWZpZXJUb2tlbi0+c3RyaW5nSXM4Qml0KQotICAg
ICAgICAgICAgICAgICAgICBpZGVudGlmaWVyU3RhY2suYXBwZW5kKG1ha2VJZGVudGlmaWVyKGlk
ZW50aWZpZXJUb2tlbi0+c3RyaW5nVG9rZW44LCBpZGVudGlmaWVyVG9rZW4tPnN0cmluZ0xlbmd0
aCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmll
clN0YWNrLmFwcGVuZChtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyVG9rZW4tPnN0cmluZ1Rva2Vu
MTYsIGlkZW50aWZpZXJUb2tlbi0+c3RyaW5nTGVuZ3RoKSk7Ci0KLSAgICAgICAgICAgICAgICAv
LyBDaGVjayBmb3IgY29sb24KLSAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgIT0g
VG9rQ29sb24pIHsKLSAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJF
eHBlY3RlZCAnOiciX3M7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0g
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7Ci0gICAg
ICAgICAgICAgICAgc3RhdGVTdGFjay5hcHBlbmQoRG9QYXJzZU9iamVjdEVuZEV4cHJlc3Npb24p
OwotICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBjYXNlIERvUGFyc2VPYmplY3RFbmRFeHByZXNzaW9uOgotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmpl
Y3RTdGFjay5sYXN0KCkpOwotICAgICAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnQgPSBpZGVu
dGlmaWVyU3RhY2sudGFrZUxhc3QoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9tb2RlICE9IFN0
cmljdEpTT04gJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghdmlzaXRlZFVuZGVyc2NvcmVQcm90by5hZGQob2Jq
ZWN0KS5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gIkF0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVydHkiX3M7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAg
ICAgICBUb2tlblR5cGUgbmV4dFR5cGUgPSBtX2xleGVyLm5leHQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG5leHRUeXBlID09IFRva0xCcmFjZSB8fCBuZXh0VHlwZSA9PSBUb2tMQnJhY2tl
dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2suYXBwZW5kV2l0aENyYXNo
T25PdmVyZmxvdyhvYmplY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllclN0
YWNrLmFwcGVuZChXVEZNb3ZlKGlkZW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZVN0YWNrLmFwcGVuZChEb1BhcnNlT2JqZWN0RW5kRXhwcmVzc2lvbik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobmV4dFR5cGUgPT0gVG9rTEJyYWNlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZU9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChuZXh0VHlwZSA9PSBUb2tMQnJhY2tldCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIHN0YXJ0UGFyc2VBcnJheTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIC8vIExlYWYgb2JqZWN0IGNvbnN0cnVjdGlvbiBmYXN0IHBhdGguCisgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gcGFyc2VQcmltaXRpdmVWYWx1ZSh2
bSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghcHJpbWl0aXZlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICAgICAgICAgICAgICBpZiAobV9tb2RlICE9
IFN0cmljdEpTT04gJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3Rv
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXZpc2l0ZWRVbmRlcnNj
b3JlUHJvdG8uYWRkKG9iamVjdCkuaXNOZXdFbnRyeSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkF0dGVtcHRlZCB0byByZWRlZmluZSBfX3By
b3RvX18gcHJvcGVydHkiX3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgbV9udWxsT3JDb2RlQmxvY2sgPyBtX251bGxPckNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkgOiBmYWxzZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlKG9iamVjdCkucHV0KG1fZ2xvYmFsT2Jq
ZWN0LCBpZGVudCwgcHJpbWl0aXZlLCBzbG90KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9iamVjdC0+cHV0RGlyZWN0SW5kZXgobV9nbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHBy
aW1pdGl2ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBpZGVudCwgcHJpbWl0aXZl
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChtX2xl
eGVyLmN1cnJlbnRUb2tlbigpLT50eXBlICE9IFRva0NvbW1hKQorICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgbmV4dFR5cGUgPSBtX2xleGVyLm5l
eHQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKG5leHRUeXBlICE9IFRva1N0
cmluZyAmJiAobV9tb2RlID09IFN0cmljdEpTT04gfHwgbmV4dFR5cGUgIT0gVG9rSWRlbnRpZmll
cikpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlBy
b3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsIl9zOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8g
bV9udWxsT3JDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgp
IDogZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5sYXN0KCkucHV0KG1f
Z2xvYmFsT2JqZWN0LCBpZGVudCwgbGFzdFZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG9iamVj
dC0+cHV0RGlyZWN0SW5kZXgobV9nbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIGxhc3RWYWx1
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG9i
amVjdC0+cHV0RGlyZWN0KHZtLCBpZGVudCwgbGFzdFZhbHVlKTsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsK
LSAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5jdXJyZW50VG9rZW4oKS0+dHlwZSA9PSBUb2tD
b21tYSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlT2JqZWN0U3RhcnRFeHByZXNz
aW9uOwotICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJlbnRUb2tlbigpLT50eXBlICE9
IFRva1JCcmFjZSkgeworCisgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fbGV4ZXIuY3Vy
cmVudFRva2VuKCktPnR5cGUgIT0gVG9rUkJyYWNlKSkgewogICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICd9JyJfczsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7Ci0gICAgICAg
ICAgICAgICAgbGFzdFZhbHVlID0gb2JqZWN0U3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgICAg
ICAgICBsYXN0VmFsdWUgPSBvYmplY3Q7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBzdGFydFBhcnNlRXhwcmVzc2lvbjoKLSAgICAgICAgICAgIGNh
c2UgU3RhcnRQYXJzZUV4cHJlc3Npb246IHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fbGV4
ZXIuY3VycmVudFRva2VuKCktPnR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tM
QnJhY2tldDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUFycmF5Owot
ICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0xCcmFjZToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gc3RhcnRQYXJzZU9iamVjdDsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tT
dHJpbmc6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIExleGVyOjpMaXRlcmFs
UGFyc2VyVG9rZW5QdHIgc3RyaW5nVG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZ1Rva2VuLT5zdHJpbmdJczhCaXQpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0ganNTdHJpbmcodm0sIG1ha2VJZGVu
dGlmaWVyKHN0cmluZ1Rva2VuLT5zdHJpbmdUb2tlbjgsIHN0cmluZ1Rva2VuLT5zdHJpbmdMZW5n
dGgpLnN0cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsYXN0VmFsdWUgPSBqc1N0cmluZyh2bSwgbWFrZUlkZW50aWZpZXIo
c3RyaW5nVG9rZW4tPnN0cmluZ1Rva2VuMTYsIHN0cmluZ1Rva2VuLT5zdHJpbmdMZW5ndGgpLnN0
cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBUb2tOdW1iZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVuYW1lIExleGVyOjpMaXRlcmFsUGFyc2VyVG9rZW5QdHIgbnVtYmVyVG9rZW4gPSBtX2xleGVy
LmN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0ganNO
dW1iZXIobnVtYmVyVG9rZW4tPm51bWJlclRva2VuKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1fbGV4ZXIubmV4dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tOdWxsOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsYXN0VmFsdWUgPSBqc051bGwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbGV4ZXIubmV4dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0g
anNCb29sZWFuKHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkodHlwZSAhPSBUb2tSQnJhY2UpKSB7CisgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnfSciX3M7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBjYXNlIFRv
a0ZhbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBsYXN0VmFsdWUgPSBqc0Jvb2xlYW4oZmFsc2UpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNr
ZXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhw
ZWN0ZWQgdG9rZW4gJ10nIl9zOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2U6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIl9z
OwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUb2tJZGVudGlmaWVyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBh
dXRvIHRva2VuID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byB0cnlNYWtlRXJyb3JTdHJpbmcgPSBbJl0gKHVuc2lnbmVkIGxlbmd0aCkgLT4g
U3RyaW5nIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFkZEVsbGlwc2lzID0g
bGVuZ3RoICE9IHRva2VuLT5zdHJpbmdMZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRva2VuLT5zdHJpbmdJczhCaXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnlNYWtlU3RyaW5nKCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgXCIiLCBTdHJp
bmdWaWV3IHsgdG9rZW4tPnN0cmluZ1Rva2VuOCwgbGVuZ3RoIH0sIGFkZEVsbGlwc2lzID8gIi4u
LiIgOiAiIiwgJyInKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ5TWFr
ZVN0cmluZygiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiIiwgU3RyaW5nVmlldyB7IHRva2VuLT5z
dHJpbmdUb2tlbjE2LCBsZW5ndGggfSwgYWRkRWxsaXBzaXMgPyAiLi4uIiA6ICIiLCAnIicpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3RleHByIHVuc2lnbmVkIG1heExlbmd0aCA9IDIwMDsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgU3RyaW5nIGVycm9yU3RyaW5nID0gdHJ5TWFrZUVycm9yU3RyaW5nKHN0ZDo6bWluKHRva2Vu
LT5zdHJpbmdMZW5ndGgsIG1heExlbmd0aCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFlcnJvclN0cmluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0ZXhwciB1
bnNpZ25lZCBzaG9ydExlbmd0aCA9IDEwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh0b2tlbi0+c3RyaW5nTGVuZ3RoID4gc2hvcnRMZW5ndGgpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gdHJ5TWFrZUVycm9yU3RyaW5nKHNob3J0TGVuZ3Ro
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9yU3RyaW5nKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmV4cGVjdGVkIGlkZW50
aWZpZXIiOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9sZXhlci5u
ZXh0KCk7CisgICAgICAgICAgICBsYXN0VmFsdWUgPSBvYmplY3Q7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBkb1BhcnNlT2JqZWN0U3RhcnRFeHByZXNzaW9uOgorICAg
ICAgICBjYXNlIERvUGFyc2VPYmplY3RTdGFydEV4cHJlc3Npb246IHsKKyAgICAgICAgICAgIFRv
a2VuVHlwZSB0eXBlID0gbV9sZXhlci5uZXh0KCk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFko
dHlwZSAhPSBUb2tTdHJpbmcgJiYgKG1fbW9kZSA9PSBTdHJpY3RKU09OIHx8IHR5cGUgIT0gVG9r
SWRlbnRpZmllcikpKSB7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJQ
cm9wZXJ0eSBuYW1lIG11c3QgYmUgYSBzdHJpbmcgbGl0ZXJhbCJfczsKKyAgICAgICAgICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWRlbnRpZmllclN0YWNr
LmFwcGVuZChtYWtlSWRlbnRpZmllcihtX2xleGVyLmN1cnJlbnRUb2tlbigpKSk7CiAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBlcnJvclN0cmluZzsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tDb2xvbjoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnOiciX3M7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIFRva0xQYXJlbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKCciX3M7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1JQ
YXJlbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5l
eHBlY3RlZCB0b2tlbiAnKSciX3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0NvbW1hOgotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcsJyJf
czsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgVG9rRG90OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVy
cm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcuJyJfczsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQXNz
aWduOgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICc9JyJfczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rU2VtaToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnOyciX3M7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIFRva0VuZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBFT0YiX3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0Vycm9yOgotICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXJy
b3IKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiQ291bGQg
bm90IHBhcnNlIHZhbHVlIGV4cHJlc3Npb24iX3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciBjb2xvbgorICAgICAgICAgICAgaWYgKFVOTElL
RUxZKG1fbGV4ZXIubmV4dCgpICE9IFRva0NvbG9uKSkgeworICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJzonIl9zOworICAgICAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFN0YXJ0UGFyc2VTdGF0ZW1l
bnQ6IHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fbGV4ZXIuY3VycmVudFRva2VuKCktPnR5
cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tMQnJhY2tldDoKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUb2tOdW1iZXI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rU3Ry
aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzdGFydFBhcnNlRXhwcmVzc2lvbjsK
LQotICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0xQYXJlbjogewotICAgICAgICAgICAgICAg
ICAgICAgICAgbV9sZXhlci5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0
YWNrLmFwcGVuZChTdGFydFBhcnNlU3RhdGVtZW50RW5kU3RhdGVtZW50KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2tldDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSci
X3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAg
ICAgICAgICAgICBjYXNlIFRva0xCcmFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAneyciX3M7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRv
a1JCcmFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAi
VW5leHBlY3RlZCB0b2tlbiAnfSciX3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0lkZW50aWZpZXI6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgaWRl
bnRpZmllciJfczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQ29sb246Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzonIl9zOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBUb2tSUGFyZW46Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNz
YWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJyknIl9zOwotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tDb21tYToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0
b2tlbiAnLCciX3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIFRva1RydWU6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ3RydWUnIl9zOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUb2tGYWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnZmFsc2UnIl9zOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tOdWxs
OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVj
dGVkIHRva2VuICdudWxsJyJfczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rRW5kOgotICAgICAgICAgICAgICAg
ICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiJfczsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgVG9rRG90OgotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICcuJyJfczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRv
a2VuICc9JyJfczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rU2VtaToKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnOyciX3M7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIFRva0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJDb3VsZCBub3QgcGFyc2Ugc3RhdGVt
ZW50Il9zOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKworICAg
ICAgICAgICAgbV9sZXhlci5uZXh0KCk7CisgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChE
b1BhcnNlT2JqZWN0RW5kRXhwcmVzc2lvbik7CisgICAgICAgICAgICBnb3RvIHN0YXJ0UGFyc2VF
eHByZXNzaW9uOworICAgICAgICB9CisgICAgICAgIGNhc2UgRG9QYXJzZU9iamVjdEVuZEV4cHJl
c3Npb246CisgICAgICAgIHsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVj
dChvYmplY3RTdGFjay5sYXN0KCkpOworICAgICAgICAgICAgSWRlbnRpZmllciBpZGVudCA9IGlk
ZW50aWZpZXJTdGFjay50YWtlTGFzdCgpOworICAgICAgICAgICAgaWYgKG1fbW9kZSAhPSBTdHJp
Y3RKU09OICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgewor
ICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghdmlzaXRlZFVuZGVyc2NvcmVQcm90by5hZGQo
b2JqZWN0KS5pc05ld0VudHJ5KSkgeworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gIkF0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVydHkiX3M7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgbV9udWxsT3JDb2RlQmxvY2sg
PyBtX251bGxPckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0
KCkgOiBmYWxzZSk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZShvYmplY3QpLnB1dChtX2dsb2Jh
bE9iamVjdCwgaWRlbnQsIGxhc3RWYWx1ZSwgc2xvdCk7CisgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChp
ZGVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RJbmRleChtX2ds
b2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgbGFzdFZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIGlkZW50LCBsYXN0
VmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRv
a2VuKCktPnR5cGUgPT0gVG9rQ29tbWEpCisgICAgICAgICAgICAgICAgZ290byBkb1BhcnNlT2Jq
ZWN0U3RhcnRFeHByZXNzaW9uOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fbGV4ZXIuY3Vy
cmVudFRva2VuKCktPnR5cGUgIT0gVG9rUkJyYWNlKSkgeworICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ30nIl9zOworICAgICAgICAgICAgICAgIHJldHVy
biB7IH07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKKyAgICAg
ICAgICAgIGxhc3RWYWx1ZSA9IG9iamVjdFN0YWNrLnRha2VMYXN0KCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBzdGFydFBhcnNlRXhwcmVzc2lvbjoKKyAgICAgICAg
Y2FzZSBTdGFydFBhcnNlRXhwcmVzc2lvbjogeworICAgICAgICAgICAgVG9rZW5UeXBlIHR5cGUg
PSBtX2xleGVyLmN1cnJlbnRUb2tlbigpLT50eXBlOworICAgICAgICAgICAgaWYgKHR5cGUgPT0g
VG9rTEJyYWNrZXQpCisgICAgICAgICAgICAgICAgZ290byBzdGFydFBhcnNlQXJyYXk7CisgICAg
ICAgICAgICBpZiAodHlwZSA9PSBUb2tMQnJhY2UpCisgICAgICAgICAgICAgICAgZ290byBzdGFy
dFBhcnNlT2JqZWN0OworICAgICAgICAgICAgbGFzdFZhbHVlID0gcGFyc2VQcmltaXRpdmVWYWx1
ZSh2bSk7CisgICAgICAgICAgICBpZiAoIWxhc3RWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTdGFy
dFBhcnNlU3RhdGVtZW50OiB7CisgICAgICAgICAgICBzd2l0Y2ggKG1fbGV4ZXIuY3VycmVudFRv
a2VuKCktPnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgVG9rTEJyYWNrZXQ6CisgICAgICAgICAg
ICBjYXNlIFRva051bWJlcjoKKyAgICAgICAgICAgIGNhc2UgVG9rU3RyaW5nOiB7CisgICAgICAg
ICAgICAgICAgbGFzdFZhbHVlID0gcGFyc2VQcmltaXRpdmVWYWx1ZSh2bSk7CisgICAgICAgICAg
ICAgICAgaWYgKCFsYXN0VmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFN0
YXJ0UGFyc2VTdGF0ZW1lbnRFbmRTdGF0ZW1lbnQ6IHsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
c3RhdGVTdGFjay5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIGlmIChtX2xleGVyLmN1cnJl
bnRUb2tlbigpLT50eXBlICE9IFRva1JQYXJlbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgPT0gVG9rRW5k
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlOwotICAgICAgICAgICAgICAg
IG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBjb250ZW50IGF0IGVuZCBvZiBKU09O
IGxpdGVyYWwiX3M7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKworICAgICAg
ICAgICAgY2FzZSBUb2tMUGFyZW46IHsKKyAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsK
KyAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChTdGFydFBhcnNlU3RhdGVtZW50RW5k
U3RhdGVtZW50KTsKKyAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0UGFyc2VFeHByZXNzaW9uOwog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBUb2tSQnJhY2tldDoKKyAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ10nIl9zOworICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBjYXNlIFRva0xCcmFjZToKKyAg
ICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ3sn
Il9zOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBjYXNlIFRva1JC
cmFjZToKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQg
dG9rZW4gJ30nIl9zOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBj
YXNlIFRva0lkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJVbmV4cGVjdGVkIGlkZW50aWZpZXIiX3M7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgICAgIGNhc2UgVG9rQ29sb246CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyJfczsKKyAgICAgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICAgICAgY2FzZSBUb2tSUGFyZW46CisgICAgICAgICAgICAgICAgbV9w
YXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcpJyJfczsKKyAgICAgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgY2FzZSBUb2tDb21tYToKKyAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIl9zOworICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBjYXNlIFRva1RydWU6CisgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICd0cnVl
JyJfczsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgY2FzZSBUb2tG
YWxzZToKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQg
dG9rZW4gJ2ZhbHNlJyJfczsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAg
ICAgY2FzZSBUb2tOdWxsOgorICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAi
VW5leHBlY3RlZCB0b2tlbiAnbnVsbCciX3M7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgICAgIGNhc2UgVG9rRW5kOgorICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSAiVW5leHBlY3RlZCBFT0YiX3M7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgICAgIGNhc2UgVG9rRG90OgorICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciX3M7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgICAgIGNhc2UgVG9rQXNzaWduOgorICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnPSciX3M7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIGNhc2UgVG9rU2VtaToKKyAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIl9zOworICAgICAg
ICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICBjYXNlIFRva0Vycm9yOgogICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBh
cnNlIHN0YXRlbWVudCJfczsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTdGFydFBh
cnNlU3RhdGVtZW50RW5kU3RhdGVtZW50OiB7CisgICAgICAgICAgICBBU1NFUlQoc3RhdGVTdGFj
ay5pc0VtcHR5KCkpOworICAgICAgICAgICAgaWYgKG1fbGV4ZXIuY3VycmVudFRva2VuKCktPnR5
cGUgIT0gVG9rUlBhcmVuKQorICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAg
ICBpZiAobV9sZXhlci5uZXh0KCkgPT0gVG9rRW5kKQorICAgICAgICAgICAgICAgIHJldHVybiBs
YXN0VmFsdWU7CisgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQg
Y29udGVudCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFsIl9zOworICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoc3RhdGVTdGFjay5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4IGNlNjg1MTI4YWI1N2JiZDVlMzc0
MTUxNDRhOTUyY2E5NGRhOWUxNDcuLjQ1ODFkOWE4YWIzNWRmM2IyNmE0NDBjOTgyNGNiMmY0MzE2
M2IyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQ
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2Vy
LmgKQEAgLTUyLDcgKzUyLDcgQEAgZW51bSBUb2tlblR5cGUgOiB1aW50OF90IHsKICAgICBUb2tM
QnJhY2tldCwgVG9rUkJyYWNrZXQsIFRva0xCcmFjZSwgVG9rUkJyYWNlLAogICAgIFRva1N0cmlu
ZywgVG9rSWRlbnRpZmllciwgVG9rTnVtYmVyLCBUb2tDb2xvbiwKICAgICBUb2tMUGFyZW4sIFRv
a1JQYXJlbiwgVG9rQ29tbWEsIFRva1RydWUsIFRva0ZhbHNlLAotICAgIFRva051bGwsIFRva0Vu
ZCwgVG9rRG90LCBUb2tBc3NpZ24sIFRva1NlbWksIFRva0Vycm9yIH07CisgICAgVG9rTnVsbCwg
VG9rRW5kLCBUb2tEb3QsIFRva0Fzc2lnbiwgVG9rU2VtaSwgVG9rRXJyb3IsIFRva0Vycm9yU3Bh
Y2UgfTsKIAogc3RydWN0IEpTT05QUGF0aEVudHJ5IHsKICAgICBJZGVudGlmaWVyIG1fcGF0aEVu
dHJ5TmFtZTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBjbGFzcyBMaXRlcmFsUGFyc2VyIHsKICAgICAg
ICAgVG9rZW5UeXBlIG5leHQoKTsKICAgICAgICAgCiAjaWYgIUFTU0VSVF9FTkFCTEVECi0gICAg
ICAgIHR5cGVkZWYgY29uc3QgTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPiogTGl0ZXJhbFBh
cnNlclRva2VuUHRyOworICAgICAgICB1c2luZyBMaXRlcmFsUGFyc2VyVG9rZW5QdHIgPSBjb25z
dCBMaXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+KjsKIAogICAgICAgICBMaXRlcmFsUGFyc2Vy
VG9rZW5QdHIgY3VycmVudFRva2VuKCkKICAgICAgICAgewpAQCAtMTk1LDYgKzE5NSw5IEBAIGNs
YXNzIExpdGVyYWxQYXJzZXIgewogICAgIGNsYXNzIFN0YWNrR3VhcmQ7CiAgICAgSlNWYWx1ZSBw
YXJzZShQYXJzZXJTdGF0ZSk7CiAKKyAgICBKU1ZhbHVlIHBhcnNlUHJpbWl0aXZlVmFsdWUoVk0m
KTsKKworICAgIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBtYWtlSWRlbnRpZmllcih0eXBlbmFt
ZSBMZXhlcjo6TGl0ZXJhbFBhcnNlclRva2VuUHRyKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBM
aXRlcmFsQ2hhclR5cGU+CiAgICAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIG1ha2VJZGVudGlm
aWVyKGNvbnN0IExpdGVyYWxDaGFyVHlwZSogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCk7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlN2E1MWJiNGY2NmI1MWUzZTNiNzQzMTI0OTYxYjlkODczMjBhMjQ3Li4xY2ZkNzFl
NDAyZTFjZDVmMmE3MmJjMzUzOWVjOTA3MDhmMGIwOGJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMjEtMDktMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBPcHRpbWl6ZSBsZWFmIG9iamVjdCBjcmVhdGlvbiBpbiBKU09OLnBhcnNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAyOTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2RvbS9KU09O
LXBhcnNlLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0wOS0xMyAgQXl1bWkgS29qaW1hICA8YXl1bWlf
a29qaW1hQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBJbnZlc3RpZ2F0ZSB1bmNsYXNzaWZp
ZWQgQ1NTIExheW91dFRlc3QgZmFpbHVyZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9k
b20vSlNPTi1wYXJzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vSlNPTi1wYXJz
ZS1leHBlY3RlZC50eHQKaW5kZXggM2Y2NmZjMGFjYWQ3YzhhODYzNGQ1Zjc3NzVhZDMwZjA1NjY3
NDgxOS4uMmQ0ZDMzZjIxOGQ2NzdjMmMxOTJmYWYwZDZjMmFkOGJjMDUxOGUyMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvanMvZG9tL0pTT04tcGFyc2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2pzL2RvbS9KU09OLXBhcnNlLWV4cGVjdGVkLnR4dApAQCAtODUsNyArODUsNyBAQCBQ
QVNTIHRlc3RzW2ldKG5hdGl2ZUpTT04pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSlNP
TiBQYXJzZSBlcnJvcjogUHJvcGVydAogZnVuY3Rpb24gKGpzb25PYmplY3QpewogICAgICAgICBy
ZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIjo1LCJhIix9Jyk7CiAgICAgfQotUEFTUyB0ZXN0
c1tpXShuYXRpdmVKU09OKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEpTT04gUGFyc2Ug
ZXJyb3I6IEV4cGVjdGVkICc6Jy4KK1BBU1MgdGVzdHNbaV0obmF0aXZlSlNPTikgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVycm9yOiBFeHBlY3RlZCAnOicgYmVmb3Jl
IHZhbHVlIGluIG9iamVjdCBwcm9wZXJ0eSBkZWZpbml0aW9uLgogZnVuY3Rpb24gKGpzb25PYmpl
Y3QpewogICAgICAgICByZXR1cm4ganNvbk9iamVjdC5wYXJzZSgneyJhIjooNSwiYSIpLH0nKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGY3MzM4MDQ5ODI1OWYzM2Y3NjI0N2E4ZmVlZDVhZWY3NDNiYWM4ZDUuLmM3ZjY4N2E4
MTJjNzQxNjAwZWFkNTAxNmY1YzVmYzIwM2JkM2YxZGIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDkt
MTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBP
cHRpbWl6ZSBsZWFmIG9iamVjdCBjcmVhdGlvbiBpbiBKU09OLnBhcnNlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAyOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9qc29u
LXBhcnNlLWxlYWYtb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvanNvbi1wYXJz
ZS1zeW50YXguanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hv
dWxkVGhyb3cuSlNPTi5wYXJzZS5zaG91bGRCZS5KU09OLnN0cmluZ2lmeS5KU09OLnBhcnNlKToK
KyAgICAgICAgKHNob3VsZFRocm93LkpTT04ucGFyc2Uuc2hvdWxkVGhyb3cuSlNPTi5wYXJzZS5z
aG91bGRCZS5KU09OLnN0cmluZ2lmeS5KU09OLnBhcnNlKToKKwogMjAyMS0wOS0xMyAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBKU09OLnBh
cnNlIG1pY3JvYmVuY2htYXJrcyBmcm9tIFNwZWVkb21ldGVyMgpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvanNvbi1wYXJzZS1sZWFmLW9iamVjdC5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2pzb24tcGFyc2UtbGVhZi1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZjOGRj
ODg4MTI4MWI0YzI2YjE2ZDliZTUzYzVhYmQ5ZGE2YTNlZAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2pzb24tcGFyc2UtbGVhZi1vYmplY3QuanMKQEAgLTAsMCAr
MSwxODcgQEAKK3ZhciB0ZXh0ID0gYAorWworeworIm51bWJlciI6IDAsCisic3RyaW5nIjogInRl
c3QiLAorIm51bGwiOiBudWxsLAorImJvb2xlYW4iOiBmYWxzZQorfSwKK3sKKyJudW1iZXIiOiAw
LAorInN0cmluZyI6ICJ0ZXN0IiwKKyJudWxsIjogbnVsbCwKKyJib29sZWFuIjogZmFsc2UKK30s
Cit7CisibnVtYmVyIjogMCwKKyJzdHJpbmciOiAidGVzdCIsCisibnVsbCI6IG51bGwsCisiYm9v
bGVhbiI6IGZhbHNlCit9LAoreworIm51bWJlciI6IDAsCisic3RyaW5nIjogInRlc3QiLAorIm51
bGwiOiBudWxsLAorImJvb2xlYW4iOiBmYWxzZQorfSwKK3sKKyJudW1iZXIiOiAwLAorInN0cmlu
ZyI6ICJ0ZXN0IiwKKyJudWxsIjogbnVsbCwKKyJib29sZWFuIjogZmFsc2UKK30sCit7CisibnVt
YmVyIjogMCwKKyJzdHJpbmciOiAidGVzdCIsCisibnVsbCI6IG51bGwsCisiYm9vbGVhbiI6IGZh
bHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAor
ImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJu
dWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmci
OiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6
MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAor
eworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4i
OmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxs
LAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwK
KyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJp
bmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJl
ciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9
LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xl
YW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpu
dWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0
IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJz
dHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51
bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNl
Cit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJv
b2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxs
IjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0
ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwK
KyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAorewor
Im51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZh
bHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAor
ImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJu
dWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6MCwKKyJzdHJpbmci
OiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAoreworIm51bWJlciI6
MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4iOmZhbHNlCit9LAor
eworIm51bWJlciI6MCwKKyJzdHJpbmciOiJ0ZXN0IiwKKyJudWxsIjpudWxsLAorImJvb2xlYW4i
OmZhbHNlCit9CitdCitgOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIEpT
T04ucGFyc2UodGV4dCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9qc29uLXBhcnNlLXN5
bnRheC5qcyBiL0pTVGVzdHMvc3RyZXNzL2pzb24tcGFyc2Utc3ludGF4LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZkNTFkNjBhMzYwZTMwYWFkOGFjOGIzMDBjZWU3NmQ1Zjc4YzU0ZWYKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9qc29uLXBhcnNlLXN5bnRheC5qcwpAQCAtMCwwICsxLDI1IEBA
CitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJy
b3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAg
ICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1
ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9y
KSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjog
JHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworc2hvdWxkVGhyb3coKCkgPT4gSlNP
Ti5wYXJzZShgeyJvYmplY3QiOiA0MmApLCBgU3ludGF4RXJyb3I6IEpTT04gUGFyc2UgZXJyb3I6
IEV4cGVjdGVkICd9J2ApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSlNPTi5wYXJzZShge31g
KSksIGB7fWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSlNPTi5wYXJzZShgeyJvYmplY3Qi
OiB7fX1gKSksIGB7Im9iamVjdCI6e319YCk7CitzaG91bGRUaHJvdygoKSA9PiBKU09OLnBhcnNl
KGB7Im9iamVjdCI6IDQyLCAidGVzdCI6e31gKSwgYFN5bnRheEVycm9yOiBKU09OIFBhcnNlIGVy
cm9yOiBFeHBlY3RlZCAnfSdgKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEpTT04ucGFyc2Uo
YHsiaGVsbG8iOjQyLCAib2JqZWN0Ijoge319YCkpLCBgeyJoZWxsbyI6NDIsIm9iamVjdCI6e319
YCk7Cg==
</data>
<flag name="review"
          id="461594"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>