<?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>140292</bug_id>
          
          <creation_ts>2015-01-09 09:40:48 -0800</creation_ts>
          <short_desc>REGRESSION(r178154): Still multiple assertion failures on tests (Requested by ap on #webkit).</short_desc>
          <delta_ts>2015-01-09 09:44:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140166</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060148</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-09 09:40:48 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/178154 broke the build:
Still multiple assertion failures on tests (Requested by ap on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060150</commentid>
    <comment_count>1</comment_count>
      <attachid>244345</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-09 09:41:18 -0800</bug_when>
    <thetext>Created attachment 244345
ROLLOUT of r178154

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060154</commentid>
    <comment_count>2</comment_count>
      <attachid>244345</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-09 09:44:37 -0800</bug_when>
    <thetext>Comment on attachment 244345
ROLLOUT of r178154

Clearing flags on attachment: 244345

Committed r178173: &lt;http://trac.webkit.org/changeset/178173&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060155</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-09 09:44:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244345</attachid>
            <date>2015-01-09 09:41:18 -0800</date>
            <delta_ts>2015-01-09 09:44:37 -0800</delta_ts>
            <desc>ROLLOUT of r178154</desc>
            <filename>bug-140292-20150109094122.patch</filename>
            <type>text/plain</type>
            <size>211312</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4MTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZmNzAwNTI2MzYwNTlkZGQ3YTlhZTQ5
M2RkMzM3N2EzMWRmNzRjYmIuLjk4OTcxMmI2Yjc1MzQ2ODhkYTIzMmJlZjQwMzM1OTNkY2M0MDVh
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDEtMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
NzgxNTQsIHIxNzgxNjMsIGFuZCByMTc4MTY0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMjkyCisKKyAgICAgICAgU3RpbGwgbXVsdGlwbGUgYXNz
ZXJ0aW9uIGZhaWx1cmVzIG9uIHRlc3RzIChSZXF1ZXN0ZWQgYnkgYXAgb24KKyAgICAgICAgI3dl
YmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAiTW9kZXJu
aXplIGFuZCBzdHJlYW1saW5lIEhUTUxUb2tlbml6ZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAxNjYKKyAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTc4MTU0CisKKyAgICAgICAgIlVucmV2aWV3ZWQgc3BlY3VsYXRp
dmUgYnVpbGRmaXggYWZ0ZXIgcjE3ODE1NC4iCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzE3ODE2MworCisgICAgICAgICJPbmUgbW9yZSB1bnJldmlld2VkIHNwZWN1
bGF0aXZlIGJ1aWxkZml4IGFmdGVyIHIxNzgxNTQuIgorICAgICAgICBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xNzgxNjQKKwogMjAxNS0wMS0wOCAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuaXplIGFuZCBzdHJlYW1saW5lIEhUTUxUb2tl
bml6ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA0YWI4YTJkZTBjYjEwMjNjYzRhMjg2OTUxMjk3OWM1M2M3YWJi
MTc0Li44NzY5YzcyZjA4ZmFlYjg5MmI4OWY2Yjk3ZmJjMzc2NzFhNWE1NWI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDEtMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNzgxNTQs
IHIxNzgxNjMsIGFuZCByMTc4MTY0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQwMjkyCisKKyAgICAgICAgU3RpbGwgbXVsdGlwbGUgYXNzZXJ0aW9u
IGZhaWx1cmVzIG9uIHRlc3RzIChSZXF1ZXN0ZWQgYnkgYXAgb24KKyAgICAgICAgI3dlYmtpdCku
CisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAiTW9kZXJuaXplIGFu
ZCBzdHJlYW1saW5lIEhUTUxUb2tlbml6ZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAxNjYKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTc4MTU0CisKKyAgICAgICAgIlVucmV2aWV3ZWQgc3BlY3VsYXRpdmUgYnVp
bGRmaXggYWZ0ZXIgcjE3ODE1NC4iCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzE3ODE2MworCisgICAgICAgICJPbmUgbW9yZSB1bnJldmlld2VkIHNwZWN1bGF0aXZl
IGJ1aWxkZml4IGFmdGVyIHIxNzgxNTQuIgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xNzgxNjQKKwogMjAxNS0wMS0wOSAgQmFydGxvbWllaiBHYWpkYSAgPGIuZ2Fq
ZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW01TRV0gSW1wbGVtZW50IEFwcGVuZCBXaW5kb3cg
c3VwcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9X
VEYvd3RmL0ZvcndhcmQuaAppbmRleCA2YWVmYTFkZWYyY2RmMDg5NDIzY2UwZDEyZmNmMmRkNTU2
ODc5ZTE4Li40OWE5MmM1MjhlMTVmZjk5N2VhMzMzZjY2ZTdhYWJhYjJjMGNmNmQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oCkBAIC0zMCw2ICszMCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIExhenlOZXZl
ckRlc3Ryb3llZDsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE5ldmVyRGVzdHJveWVkOwog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgT3duUHRyOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Y2xhc3MgUGFzc093blB0cjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWY7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOwogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgUmVmUHRyOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmOwpAQCAtNDQs
MTMgKzQ1LDExIEBAIGNsYXNzIENTdHJpbmc7CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRW5jb2Rl
cjsKIGNsYXNzIEZ1bmN0aW9uRGlzcGF0Y2hlcjsKLWNsYXNzIE9yZGluYWxOdW1iZXI7CiBjbGFz
cyBQcmludFN0cmVhbTsKIGNsYXNzIFN0cmluZzsKIGNsYXNzIFN0cmluZ0J1aWxkZXI7CiBjbGFz
cyBTdHJpbmdJbXBsOwogY2xhc3MgU3RyaW5nVmlldzsKLWNsYXNzIFRleHRQb3NpdGlvbjsKIAog
fQogCkBAIC02NCw5ICs2Myw5IEBAIHVzaW5nIFdURjo6RnVuY3Rpb247CiB1c2luZyBXVEY6OkZ1
bmN0aW9uRGlzcGF0Y2hlcjsKIHVzaW5nIFdURjo6TGF6eU5ldmVyRGVzdHJveWVkOwogdXNpbmcg
V1RGOjpOZXZlckRlc3Ryb3llZDsKLXVzaW5nIFdURjo6T3JkaW5hbE51bWJlcjsKIHVzaW5nIFdU
Rjo6T3duUHRyOwogdXNpbmcgV1RGOjpQYXNzT3duUHRyOwordXNpbmcgV1RGOjpQYXNzUmVmOwog
dXNpbmcgV1RGOjpQYXNzUmVmUHRyOwogdXNpbmcgV1RGOjpQcmludFN0cmVhbTsKIHVzaW5nIFdU
Rjo6UmVmOwpAQCAtNzYsNyArNzUsNiBAQCB1c2luZyBXVEY6OlN0cmluZ0J1ZmZlcjsKIHVzaW5n
IFdURjo6U3RyaW5nQnVpbGRlcjsKIHVzaW5nIFdURjo6U3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6
U3RyaW5nVmlldzsKLXVzaW5nIFdURjo6VGV4dFBvc2l0aW9uOwogdXNpbmcgV1RGOjpWZWN0b3I7
CiAKICNlbmRpZiAvLyBXVEZfRm9yd2FyZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0F0b21pY0hUTUxUb2tlbi5oCmluZGV4IGNjNWEyMTU1NWIwODU4ZWUzNmEyMDJkOTUyMWMzYWVi
ZmY1M2FmNTUuLjVlNjFmYmExYjhkMGM4YmEyZjViYjQxOTBhNmRkMzMxZjc3NzU3MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCkBAIC0xOTEsNiAr
MTkxLDExIEBAIGlubGluZSB2b2lkIEF0b21pY0hUTUxUb2tlbjo6aW5pdGlhbGl6ZUF0dHJpYnV0
ZXMoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0CiAgICAgICAgIGlmIChhdHRyaWJ1dGUu
bmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAorICAgICAgICBBU1NFUlQo
YXR0cmlidXRlLm5hbWVSYW5nZS5zdGFydCk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUubmFt
ZVJhbmdlLmVuZCk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUudmFsdWVSYW5nZS5zdGFydCk7
CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUudmFsdWVSYW5nZS5lbmQpOworCiAgICAgICAgIFF1
YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwgQXRvbWljU3RyaW5nKGF0dHJpYnV0ZS5uYW1lKSwg
bnVsbEF0b20pOwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIE5eMiBmb3IgdGhlIG51bWJl
ciBvZiBhdHRyaWJ1dGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAKaW5kZXggODEyYzljNWJlMDBiMDZlZTI0YmJiZWZjNzJkN2NlOGM0
MzRmMWRjMS4uZDk2NDNjZDJhZDI5ZGI0YTk5NjUyY2MzYWUzYzFkYjZmYjE4NjY4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBA
IC0zOSw2ICszOSwyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKKy8vIFRoaXMgaXMgYSBkaXJlY3QgdHJhbnNjcmlwdGlvbiBvZiBzdGVwIDQg
ZnJvbToKKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5o
dG1sI3BhcnNpbmctaHRtbC1mcmFnbWVudHMKK3N0YXRpYyBIVE1MVG9rZW5pemVyOjpTdGF0ZSB0
b2tlbml6ZXJTdGF0ZUZvckNvbnRleHRFbGVtZW50KEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBi
b29sIHJlcG9ydEVycm9ycywgY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMpCit7Cisg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgY29udGV4dFRhZyA9IGNvbnRleHRFbGVtZW50LnRhZ1FO
YW1lKCk7CisKKyAgICBpZiAoY29udGV4dFRhZy5tYXRjaGVzKHRpdGxlVGFnKSB8fCBjb250ZXh0
VGFnLm1hdGNoZXModGV4dGFyZWFUYWcpKQorICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplcjo6
UkNEQVRBU3RhdGU7CisgICAgaWYgKGNvbnRleHRUYWcubWF0Y2hlcyhzdHlsZVRhZykKKyAgICAg
ICAgfHwgY29udGV4dFRhZy5tYXRjaGVzKHhtcFRhZykKKyAgICAgICAgfHwgY29udGV4dFRhZy5t
YXRjaGVzKGlmcmFtZVRhZykKKyAgICAgICAgfHwgKGNvbnRleHRUYWcubWF0Y2hlcyhub2VtYmVk
VGFnKSAmJiBvcHRpb25zLnBsdWdpbnNFbmFibGVkKQorICAgICAgICB8fCAoY29udGV4dFRhZy5t
YXRjaGVzKG5vc2NyaXB0VGFnKSAmJiBvcHRpb25zLnNjcmlwdEVuYWJsZWQpCisgICAgICAgIHx8
IGNvbnRleHRUYWcubWF0Y2hlcyhub2ZyYW1lc1RhZykpCisgICAgICAgIHJldHVybiByZXBvcnRF
cnJvcnMgPyBIVE1MVG9rZW5pemVyOjpSQVdURVhUU3RhdGUgOiBIVE1MVG9rZW5pemVyOjpQTEFJ
TlRFWFRTdGF0ZTsKKyAgICBpZiAoY29udGV4dFRhZy5tYXRjaGVzKHNjcmlwdFRhZykpCisgICAg
ICAgIHJldHVybiByZXBvcnRFcnJvcnMgPyBIVE1MVG9rZW5pemVyOjpTY3JpcHREYXRhU3RhdGUg
OiBIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZTsKKyAgICBpZiAoY29udGV4dFRhZy5tYXRj
aGVzKHBsYWludGV4dFRhZykpCisgICAgICAgIHJldHVybiBIVE1MVG9rZW5pemVyOjpQTEFJTlRF
WFRTdGF0ZTsKKyAgICByZXR1cm4gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlOworfQorCiBIVE1M
RG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV9vcHRp
b25zKGRvY3VtZW50KQpAQCAtNjMsOSArODUsOCBAQCBpbmxpbmUgSFRNTERvY3VtZW50UGFyc2Vy
OjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbgog
ICAgICwgbV90cmVlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRo
aXMsIGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29w
dGlvbnMpKQogICAgICwgbV94c3NBdWRpdG9yRGVsZWdhdGUoZnJhZ21lbnQuZG9jdW1lbnQoKSkK
IHsKLSAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXgu
aHRtbCNwYXJzaW5nLWh0bWwtZnJhZ21lbnRzCi0gICAgaWYgKGNvbnRleHRFbGVtZW50LmlzSFRN
TEVsZW1lbnQoKSkKLSAgICAgICAgbV90b2tlbml6ZXIudXBkYXRlU3RhdGVGb3IoY29udGV4dEVs
ZW1lbnQudGFnUU5hbWUoKS5sb2NhbE5hbWUoKSk7CisgICAgYm9vbCByZXBvcnRFcnJvcnMgPSBm
YWxzZTsgLy8gRm9yIG5vdyBkb2N1bWVudCBmcmFnbWVudCBwYXJzaW5nIG5ldmVyIHJlcG9ydHMg
ZXJyb3JzLgorICAgIG1fdG9rZW5pemVyLnNldFN0YXRlKHRva2VuaXplclN0YXRlRm9yQ29udGV4
dEVsZW1lbnQoY29udGV4dEVsZW1lbnQsIHJlcG9ydEVycm9ycywgbV9vcHRpb25zKSk7CiAgICAg
bV94c3NBdWRpdG9yLmluaXRGb3JGcmFnbWVudCgpOwogfQogCkBAIC0yNTgsMjIgKzI3OSwyMiBA
QCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUg
bW9kZSkKIAogICAgIHdoaWxlIChjYW5UYWtlTmV4dFRva2VuKG1vZGUsIHNlc3Npb24pICYmICFz
ZXNzaW9uLm5lZWRzWWllbGQpIHsKICAgICAgICAgaWYgKCFpc1BhcnNpbmdGcmFnbWVudCgpKQot
ICAgICAgICAgICAgbV9zb3VyY2VUcmFja2VyLnN0YXJ0VG9rZW4obV9pbnB1dC5jdXJyZW50KCks
IG1fdG9rZW5pemVyKTsKKyAgICAgICAgICAgIG1fc291cmNlVHJhY2tlci5zdGFydChtX2lucHV0
LmN1cnJlbnQoKSwgJm1fdG9rZW5pemVyLCBtX3Rva2VuKTsKIAotICAgICAgICBhdXRvIHRva2Vu
ID0gbV90b2tlbml6ZXIubmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgpKTsKLSAgICAgICAgaWYg
KCF0b2tlbikKKyAgICAgICAgaWYgKCFtX3Rva2VuaXplci5uZXh0VG9rZW4obV9pbnB1dC5jdXJy
ZW50KCksIG1fdG9rZW4pKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgaWYgKCFpc1Bh
cnNpbmdGcmFnbWVudCgpKSB7Ci0gICAgICAgICAgICBtX3NvdXJjZVRyYWNrZXIuZW5kVG9rZW4o
bV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5pemVyKTsKKyAgICAgICAgICAgIG1fc291cmNlVHJh
Y2tlci5lbmQobV9pbnB1dC5jdXJyZW50KCksICZtX3Rva2VuaXplciwgbV90b2tlbik7CiAKICAg
ICAgICAgICAgIC8vIFdlIGRvIG5vdCBYU1MgZmlsdGVyIGlubmVySFRNTCwgd2hpY2ggbWVhbnMg
d2UgKGludGVudGlvbmFsbHkpIGZhaWwKICAgICAgICAgICAgIC8vIGh0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9kb20td3JpdGUtaW5uZXJIVE1MLmh0bWwKLSAgICAgICAgICAgIGlmIChh
dXRvIHhzc0luZm8gPSBtX3hzc0F1ZGl0b3IuZmlsdGVyVG9rZW4oRmlsdGVyVG9rZW5SZXF1ZXN0
KCp0b2tlbiwgbV9zb3VyY2VUcmFja2VyLCBtX3Rva2VuaXplci5zaG91bGRBbGxvd0NEQVRBKCkp
KSkKKyAgICAgICAgICAgIGlmIChhdXRvIHhzc0luZm8gPSBtX3hzc0F1ZGl0b3IuZmlsdGVyVG9r
ZW4oRmlsdGVyVG9rZW5SZXF1ZXN0KG1fdG9rZW4sIG1fc291cmNlVHJhY2tlciwgbV90b2tlbml6
ZXIuc2hvdWxkQWxsb3dDREFUQSgpKSkpCiAgICAgICAgICAgICAgICAgbV94c3NBdWRpdG9yRGVs
ZWdhdGUuZGlkQmxvY2tTY3JpcHQoKnhzc0luZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgY29u
c3RydWN0VHJlZUZyb21IVE1MVG9rZW4odG9rZW4pOworICAgICAgICBjb25zdHJ1Y3RUcmVlRnJv
bUhUTUxUb2tlbihtX3Rva2VuKTsKKyAgICAgICAgQVNTRVJUKG1fdG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6VW5pbml0aWFsaXplZCk7CiAgICAgfQogCiAgICAgLy8gRW5zdXJlIHdlIGhhdmVu
J3QgYmVlbiB0b3RhbGx5IGRlcmVmJ2VkIGFmdGVyIHB1bXBpbmcuIEFueSBjYWxsZXIgb2YgdGhp
cwpAQCAtMjg3LDIwICszMDgsMjAgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tl
bml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAgICAgICAgIG1fcGFyc2VyU2NoZWR1bGVyLT5z
Y2hlZHVsZUZvclJlc3VtZSgpOwogCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewot
ICAgICAgICBBU1NFUlQobV90b2tlbml6ZXIuaXNJbkRhdGFTdGF0ZSgpKTsKKyAgICAgICAgQVNT
RVJUKG1fdG9rZW5pemVyLnN0YXRlKCkgPT0gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKICAg
ICAgICAgaWYgKCFtX3ByZWxvYWRTY2FubmVyKSB7CiAgICAgICAgICAgICBtX3ByZWxvYWRTY2Fu
bmVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9j
dW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAg
ICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQobV9pbnB1dC5jdXJyZW50KCkpOwog
ICAgICAgICB9Ci0gICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAq
ZG9jdW1lbnQoKSk7CisgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4obV9wcmVsb2FkZXIu
Z2V0KCksICpkb2N1bWVudCgpKTsKICAgICB9CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFdyaXRlSFRNTChjb29raWUsIG1faW5wdXQuY3VycmVudCgpLmN1cnJlbnRMaW5lKCku
emVyb0Jhc2VkSW50KCkpOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6Y29uc3RydWN0
VHJlZUZyb21IVE1MVG9rZW4oSFRNTFRva2VuaXplcjo6VG9rZW5QdHImIHJhd1Rva2VuKQordm9p
ZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tSFRNTFRva2VuKEhUTUxUb2tl
biYgcmF3VG9rZW4pCiB7Ci0gICAgQXRvbWljSFRNTFRva2VuIHRva2VuKCpyYXdUb2tlbik7Cisg
ICAgQXRvbWljSFRNTFRva2VuIHRva2VuKHJhd1Rva2VuKTsKIAogICAgIC8vIFdlIGNsZWFyIHRo
ZSByYXdUb2tlbiBpbiBjYXNlIGNvbnN0cnVjdFRyZWVGcm9tQXRvbWljVG9rZW4KICAgICAvLyBz
eW5jaHJvbm91c2x5IHJlLWVudGVycyB0aGUgcGFyc2VyLiBXZSBkb24ndCBjbGVhciB0aGUgdG9r
ZW4gaW1tZWRhdGVseQpAQCAtMzEyLDEzICszMzMsMTUgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OmNvbnN0cnVjdFRyZWVGcm9tSFRNTFRva2VuKEhUTUxUb2tlbml6ZXI6OlRva2VuUHRyJiBy
YXcKICAgICAvLyBGSVhNRTogU3RvcCBjbGVhcmluZyB0aGUgcmF3VG9rZW4gb25jZSB3ZSBzdGFy
dCBydW5uaW5nIHRoZSBwYXJzZXIgb2ZmCiAgICAgLy8gdGhlIG1haW4gdGhyZWFkIG9yIG9uY2Ug
d2Ugc3RvcCBhbGxvd2luZyBzeW5jaHJvbm91cyBKYXZhU2NyaXB0CiAgICAgLy8gZXhlY3V0aW9u
IGZyb20gcGFyc2VBdHRyaWJ1dGUuCi0gICAgaWYgKHJhd1Rva2VuLT50eXBlKCkgIT0gSFRNTFRv
a2VuOjpDaGFyYWN0ZXIpIHsKLSAgICAgICAgLy8gQ2xlYXJpbmcgdGhlIFRva2VuUHRyIG1ha2Vz
IHN1cmUgd2UgZG9uJ3QgY2xlYXIgdGhlIEhUTUxUb2tlbiBhIHNlY29uZCB0aW1lCi0gICAgICAg
IC8vIGxhdGVyIHdoZW4gdGhlIFRva2VuUHRyIGlzIGRlc3Ryb3llZC4KKyAgICBpZiAocmF3VG9r
ZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQogICAgICAgICByYXdUb2tlbi5jbGVh
cigpOwotICAgIH0KIAogICAgIG1fdHJlZUJ1aWxkZXItPmNvbnN0cnVjdFRyZWUodG9rZW4pOwor
CisgICAgaWYgKHJhd1Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQpIHsK
KyAgICAgICAgQVNTRVJUKHJhd1Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7
CisgICAgICAgIHJhd1Rva2VuLmNsZWFyKCk7CisgICAgfQogfQogCiBib29sIEhUTUxEb2N1bWVu
dFBhcnNlcjo6aGFzSW5zZXJ0aW9uUG9pbnQoKQpAQCAtMzUwLDcgKzM3Myw3IEBAIHZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAg
ICAgICAgIGlmICghbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lcikKICAgICAgICAgICAgIG1faW5z
ZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5l
cj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CiAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5k
KHNvdXJjZSk7Ci0gICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJl
bG9hZGVyLCAqZG9jdW1lbnQoKSk7CisgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIt
PnNjYW4obV9wcmVsb2FkZXIuZ2V0KCksICpkb2N1bWVudCgpKTsKICAgICB9CiAKICAgICBlbmRJ
ZkRlbGF5ZWQoKTsKQEAgLTM3NSw3ICszOTgsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6
YXBwZW5kKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW5wdXRTb3VyY2UpCiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5hcHBlbmRUb0VuZChzb3VyY2UpOwog
ICAgICAgICAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkKLSAgICAgICAgICAgICAgICBt
X3ByZWxvYWRTY2FubmVyLT5zY2FuKCptX3ByZWxvYWRlciwgKmRvY3VtZW50KCkpOworICAgICAg
ICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4obV9wcmVsb2FkZXIuZ2V0KCksICpkb2N1
bWVudCgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTEwLDcgKzUzMyw3IEBAIHZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjphcHBlbmRDdXJyZW50SW5wdXRTdHJlYW1Ub1ByZWxvYWRTY2FubmVy
QW5kU2NhbigpCiB7CiAgICAgQVNTRVJUKG1fcHJlbG9hZFNjYW5uZXIpOwogICAgIG1fcHJlbG9h
ZFNjYW5uZXItPmFwcGVuZFRvRW5kKG1faW5wdXQuY3VycmVudCgpKTsKLSAgICBtX3ByZWxvYWRT
Y2FubmVyLT5zY2FuKCptX3ByZWxvYWRlciwgKmRvY3VtZW50KCkpOworICAgIG1fcHJlbG9hZFNj
YW5uZXItPnNjYW4obV9wcmVsb2FkZXIuZ2V0KCksICpkb2N1bWVudCgpKTsKIH0KIAogdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBjYWNoZWRS
ZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmgKaW5kZXggZmUwNDM1YWQ3Yjc0Mjg0MzA1NGZiYWZkOTRhOTZlZmY0MDc3ZDU2Ny4uNDQ2
MzFmZDIyZjU3N2NlYjJjYzZkMmEzN2IzZThhMzY4YTJlZWExNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAgLTEwMyw3ICsxMDMsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgY2FuVGFrZU5leHRUb2tlbihTeW5jaHJvbm91c01vZGUsIFB1
bXBTZXNzaW9uJik7CiAgICAgdm9pZCBwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSk7CiAg
ICAgdm9pZCBwdW1wVG9rZW5pemVySWZQb3NzaWJsZShTeW5jaHJvbm91c01vZGUpOwotICAgIHZv
aWQgY29uc3RydWN0VHJlZUZyb21IVE1MVG9rZW4oSFRNTFRva2VuaXplcjo6VG9rZW5QdHImKTsK
KyAgICB2b2lkIGNvbnN0cnVjdFRyZWVGcm9tSFRNTFRva2VuKEhUTUxUb2tlbiYpOwogCiAgICAg
dm9pZCBydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIoKTsKICAgICB2b2lkIHJlc3VtZVBh
cnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigpOwpAQCAtMTIxLDYgKzEyMSw3IEBAIHByaXZhdGU6
CiAgICAgSFRNTFBhcnNlck9wdGlvbnMgbV9vcHRpb25zOwogICAgIEhUTUxJbnB1dFN0cmVhbSBt
X2lucHV0OwogCisgICAgSFRNTFRva2VuIG1fdG9rZW47CiAgICAgSFRNTFRva2VuaXplciBtX3Rv
a2VuaXplcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SFRNTFNjcmlwdFJ1bm5lcj4gbV9zY3JpcHRS
dW5uZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhUTUxUcmVlQnVpbGRlcj4gbV90cmVlQnVpbGRl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbnRpdHlQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVudGl0eVBhcnNlci5jcHAK
aW5kZXggZGZkZmQ2YzE4YjdhMjQ1MzlmMDU2ZjVjNmM0ZjVkZDc5YThiYmVmOS4uYTAxNjA1MDZj
Yzg0OTdmOThjYTliNjliZDgwOWVkNDBmYjc5MTZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTEVudGl0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTEVudGl0eVBhcnNlci5jcHAKQEAgLTYwLDkgKzYwLDkgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gd2luZG93c0xhdGluMUV4dGVuc2lvbkFycmF5W3ZhbHVlIC0gMHg4
MF07CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgYWNjZXB0TWFsZm9ybWVkKCkgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGlubGluZSBzdGF0aWMgYm9vbCBhY2NlcHRNYWxmb3JtZWQoKSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICBzdGF0aWMgYm9vbCBjb25zdW1lTmFtZWRFbnRpdHkoU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIFN0cmluZ0J1aWxkZXImIGRlY29kZWRFbnRpdHksIGJvb2wmIG5vdEVu
b3VnaENoYXJhY3RlcnMsIFVDaGFyIGFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyLCBVQ2hhciYg
Y2MpCisgICAgaW5saW5lIHN0YXRpYyBib29sIGNvbnN1bWVOYW1lZEVudGl0eShTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSwgU3RyaW5nQnVpbGRlciYgZGVjb2RlZEVudGl0eSwgYm9vbCYgbm90RW5v
dWdoQ2hhcmFjdGVycywgVUNoYXIgYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIsIFVDaGFyJiBj
YykKICAgICB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgY29uc3VtZWRDaGFyYWN0ZXJzOwogICAg
ICAgICBIVE1MRW50aXR5U2VhcmNoIGVudGl0eVNlYXJjaDsKQEAgLTcyLDcgKzcyLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgaWYgKCFlbnRpdHlTZWFyY2guaXNFbnRpdHlQcmVmaXgoKSkKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVycy5hcHBl
bmQoY2MpOwotICAgICAgICAgICAgc291cmNlLmFkdmFuY2UoKTsKKyAgICAgICAgICAgIHNvdXJj
ZS5hZHZhbmNlQW5kQVNTRVJUKGNjKTsKICAgICAgICAgfQogICAgICAgICBub3RFbm91Z2hDaGFy
YWN0ZXJzID0gc291cmNlLmlzRW1wdHkoKTsKICAgICAgICAgaWYgKG5vdEVub3VnaENoYXJhY3Rl
cnMpIHsKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNjID0gc291
cmNlLmN1cnJlbnRDaGFyKCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZWZlcmVu
Y2UsIGNjID09ICpyZWZlcmVuY2UrKyk7CiAgICAgICAgICAgICAgICAgY29uc3VtZWRDaGFyYWN0
ZXJzLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2UoKTsKKyAgICAg
ICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVChjYyk7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKCFzb3VyY2UuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNj
ID0gc291cmNlLmN1cnJlbnRDaGFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MSW5wdXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxJbnB1dFN0cmVhbS5oCmluZGV4IGU3MzhmNWYzNDgwZDM3NDY4YzNkZGE0ZWRhNTExMzg5Yzlh
NmZhMmMuLmE3Yjg2YjNiYWZmMGYxZjU1MGViYThhZGIyYWQ0Y2Q3YzNmYWQzNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJbnB1dFN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJbnB1dFN0cmVhbS5oCkBAIC0yOCw3ICsyOCw2
IEBACiAKICNpbmNsdWRlICJJbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5oIgogI2luY2x1ZGUgIlNl
Z21lbnRlZFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCmluZGV4IDc1MmRiZWVkYjE3NzhlODFiYjY0YzJi
Nzc1YjA2MjYzYjUwNjAyOTcuLjExZTE0YTQ2ZTE2ZTNmNDFkNDBjZDMzZjgwMDIyNWJmMGI2YTZi
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNl
dFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFy
c2V0UGFyc2VyLmNwcApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI5LDI2ICsyOCw0MSBAQAogCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIkhUTUxUb2tlbml6ZXIuaCIKKyNp
bmNsdWRlICJUZXh0Q29kZWMuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmdSZWdpc3RyeS5oIgog
Cit1c2luZyBuYW1lc3BhY2UgV1RGOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIEhUTUxNZXRhQ2hhcnNldFBhcnNlcjo6SFRNTE1ldGFDaGFy
c2V0UGFyc2VyKCkKLSAgICA6IG1fY29kZWMobmV3VGV4dENvZGVjKExhdGluMUVuY29kaW5nKCkp
KQorICAgIDogbV90b2tlbml6ZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MVG9rZW5pemVyPihIVE1M
UGFyc2VyT3B0aW9ucygpKSkKKyAgICAsIG1fYXNzdW1lZENvZGVjKG5ld1RleHRDb2RlYyhMYXRp
bjFFbmNvZGluZygpKSkKKyAgICAsIG1faW5IZWFkU2VjdGlvbih0cnVlKQorICAgICwgbV9kb25l
Q2hlY2tpbmcoZmFsc2UpCit7Cit9CisKK0hUTUxNZXRhQ2hhcnNldFBhcnNlcjo6fkhUTUxNZXRh
Q2hhcnNldFBhcnNlcigpCiB7CiB9CiAKLXN0YXRpYyBTdHJpbmdWaWV3IGV4dHJhY3RDaGFyc2V0
KGNvbnN0IFN0cmluZyYgdmFsdWUpCitzdGF0aWMgY29uc3QgY2hhciBjaGFyc2V0U3RyaW5nW10g
PSAiY2hhcnNldCI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IGNoYXJzZXRMZW5ndGggPSBzaXplb2Yo
ImNoYXJzZXQiKSAtIDE7CisKK1N0cmluZyBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmV4dHJhY3RD
aGFyc2V0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CisgICAgc2l6ZV90IHBvcyA9IDA7CiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7Ci0gICAgZm9yIChzaXplX3QgcG9zID0g
MDsgcG9zIDwgbGVuZ3RoOyApIHsKLSAgICAgICAgcG9zID0gdmFsdWUuZmluZCgiY2hhcnNldCIs
IHBvcywgZmFsc2UpOworCisgICAgd2hpbGUgKHBvcyA8IGxlbmd0aCkgeworICAgICAgICBwb3Mg
PSB2YWx1ZS5maW5kKGNoYXJzZXRTdHJpbmcsIHBvcywgZmFsc2UpOwogICAgICAgICBpZiAocG9z
ID09IG5vdEZvdW5kKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBjaGFyc2V0TGVuZ3RoID0gc2l6ZW9mKCJjaGFyc2V0IikgLSAxOwogICAgICAgICBw
b3MgKz0gY2hhcnNldExlbmd0aDsKIAogICAgICAgICAvLyBTa2lwIHdoaXRlc3BhY2UuCkBAIC02
MywxMCArNzcsMTIgQEAgc3RhdGljIFN0cmluZ1ZpZXcgZXh0cmFjdENoYXJzZXQoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICAgICAgd2hpbGUgKHBvcyA8IGxlbmd0aCAmJiB2YWx1ZVtwb3NdIDw9
ICcgJykKICAgICAgICAgICAgICsrcG9zOwogCi0gICAgICAgIFVDaGFyIHF1b3RlTWFyayA9IDA7
Ci0gICAgICAgIGlmIChwb3MgPCBsZW5ndGggJiYgKHZhbHVlW3Bvc10gPT0gJyInIHx8IHZhbHVl
W3Bvc10gPT0gJ1wnJykpCi0gICAgICAgICAgICBxdW90ZU1hcmsgPSB2YWx1ZVtwb3MrK107Ci0K
KyAgICAgICAgY2hhciBxdW90ZU1hcmsgPSAwOworICAgICAgICBpZiAocG9zIDwgbGVuZ3RoICYm
ICh2YWx1ZVtwb3NdID09ICciJyB8fCB2YWx1ZVtwb3NdID09ICdcJycpKSB7CisgICAgICAgICAg
ICBxdW90ZU1hcmsgPSBzdGF0aWNfY2FzdDxjaGFyPih2YWx1ZVtwb3MrK10pOworICAgICAgICAg
ICAgQVNTRVJUKCEocXVvdGVNYXJrICYgMHg4MCkpOworICAgICAgICB9CisgICAgICAgICAgICAK
ICAgICAgICAgaWYgKHBvcyA9PSBsZW5ndGgpCiAgICAgICAgICAgICBicmVhazsKIApAQCAtNzcs
MTcgKzkzLDE5IEBAIHN0YXRpYyBTdHJpbmdWaWV3IGV4dHJhY3RDaGFyc2V0KGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgICAgIGlmIChxdW90ZU1hcmsgJiYgKGVuZCA9PSBsZW5ndGgpKQogICAg
ICAgICAgICAgYnJlYWs7IC8vIENsb3NlIHF1b3RlIG5vdCBmb3VuZC4KIAotICAgICAgICByZXR1
cm4gU3RyaW5nVmlldyh2YWx1ZSkuc3Vic3RyaW5nKHBvcywgZW5kIC0gcG9zKTsKKyAgICAgICAg
cmV0dXJuIHZhbHVlLnN1YnN0cmluZyhwb3MsIGVuZCAtIHBvcyk7CiAgICAgfQotICAgIHJldHVy
biBTdHJpbmdWaWV3KCk7CisKKyAgICByZXR1cm4gIiI7CiB9CiAKLWJvb2wgSFRNTE1ldGFDaGFy
c2V0UGFyc2VyOjpwcm9jZXNzTWV0YShIVE1MVG9rZW4mIHRva2VuKQorYm9vbCBIVE1MTWV0YUNo
YXJzZXRQYXJzZXI6OnByb2Nlc3NNZXRhKCkKIHsKKyAgICBjb25zdCBIVE1MVG9rZW46OkF0dHJp
YnV0ZUxpc3QmIHRva2VuQXR0cmlidXRlcyA9IG1fdG9rZW4uYXR0cmlidXRlcygpOwogICAgIEF0
dHJpYnV0ZUxpc3QgYXR0cmlidXRlczsKLSAgICBmb3IgKGF1dG8mIGF0dHJpYnV0ZSA6IHRva2Vu
LmF0dHJpYnV0ZXMoKSkgewotICAgICAgICBTdHJpbmcgYXR0cmlidXRlTmFtZSA9IFN0cmluZ0lt
cGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKGF0dHJpYnV0ZS5uYW1lKTsKLSAgICAgICAgU3RyaW5n
IGF0dHJpYnV0ZVZhbHVlID0gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoYXR0cmli
dXRlLnZhbHVlKTsKKyAgICBmb3IgKEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdDo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IHRva2VuQXR0cmlidXRlcy5iZWdpbigpOyBpdGVyICE9IHRva2VuQXR0cmli
dXRlcy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIFN0cmluZyBhdHRyaWJ1dGVOYW1lID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoaXRlci0+bmFtZSk7CisgICAgICAgIFN0cmlu
ZyBhdHRyaWJ1dGVWYWx1ZSA9IFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKGl0ZXIt
PnZhbHVlKTsKICAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoYXR0cmli
dXRlTmFtZSwgYXR0cmlidXRlVmFsdWUpKTsKICAgICB9CiAKQEAgLTk4LDEyICsxMTYsMTIgQEAg
Ym9vbCBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OnByb2Nlc3NNZXRhKEhUTUxUb2tlbiYgdG9rZW4p
CiBUZXh0RW5jb2RpbmcgSFRNTE1ldGFDaGFyc2V0UGFyc2VyOjplbmNvZGluZ0Zyb21NZXRhQXR0
cmlidXRlcyhjb25zdCBBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKQogewogICAgIGJvb2wgZ290
UHJhZ21hID0gZmFsc2U7Ci0gICAgZW51bSB7IE5vbmUsIENoYXJzZXQsIFByYWdtYSB9IG1vZGUg
PSBOb25lOwotICAgIFN0cmluZ1ZpZXcgY2hhcnNldDsKKyAgICBNb2RlIG1vZGUgPSBOb25lOwor
ICAgIFN0cmluZyBjaGFyc2V0OwogCi0gICAgZm9yIChhdXRvJiBhdHRyaWJ1dGUgOiBhdHRyaWJ1
dGVzKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZS5m
aXJzdDsKLSAgICAgICAgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSA9IGF0dHJpYnV0ZS5z
ZWNvbmQ7CisgICAgZm9yIChBdHRyaWJ1dGVMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gYXR0
cmlidXRlcy5iZWdpbigpOyBpdGVyICE9IGF0dHJpYnV0ZXMuZW5kKCk7ICsraXRlcikgeworICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUgPSBpdGVyLT5maXJzdDsKKyAg
ICAgICAgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSA9IGl0ZXItPnNlY29uZDsKIAogICAg
ICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBodHRwX2VxdWl2QXR0cikgewogICAgICAgICAgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHJpYnV0ZVZhbHVlLCAiY29udGVudC10eXBlIikpCkBA
IC0xMjEsMTEgKzEzOSwxMyBAQCBUZXh0RW5jb2RpbmcgSFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpl
bmNvZGluZ0Zyb21NZXRhQXR0cmlidXRlcyhjb25zdCBBdHRyaWJ1dGVMaQogICAgIH0KIAogICAg
IGlmIChtb2RlID09IENoYXJzZXQgfHwgKG1vZGUgPT0gUHJhZ21hICYmIGdvdFByYWdtYSkpCi0g
ICAgICAgIHJldHVybiBUZXh0RW5jb2Rpbmcoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKGNoYXJzZXQudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSk7CisgICAgICAgIHJldHVybiBU
ZXh0RW5jb2Rpbmcoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGNoYXJzZXQpKTsK
IAogICAgIHJldHVybiBUZXh0RW5jb2RpbmcoKTsKIH0KIAorc3RhdGljIGNvbnN0IGludCBieXRl
c1RvQ2hlY2tVbmNvbmRpdGlvbmFsbHkgPSAxMDI0OyAvLyBUaGF0IG1hbnkgaW5wdXQgYnl0ZXMg
d2lsbCBiZSBjaGVja2VkIGZvciBtZXRhIGNoYXJzZXQgZXZlbiBpZiA8aGVhZD4gc2VjdGlvbiBp
cyBvdmVyLgorCiBib29sIEhUTUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRhQ2hhcnNl
dChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmIChtX2RvbmVDaGVj
a2luZykKQEAgLTEzNiwzMiArMTU2LDMwIEBAIGJvb2wgSFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpj
aGVja0Zvck1ldGFDaGFyc2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAgICAg
Ly8gV2Ugc3RpbGwgZG9uJ3QgaGF2ZSBhbiBlbmNvZGluZywgYW5kIGFyZSBpbiB0aGUgaGVhZC4K
ICAgICAvLyBUaGUgZm9sbG93aW5nIHRhZ3MgYXJlIGFsbG93ZWQgaW4gPGhlYWQ+OgogICAgIC8v
IFNDUklQVHxTVFlMRXxNRVRBfExJTkt8T0JKRUNUfFRJVExFfEJBU0UKLSAgICAvLworCiAgICAg
Ly8gV2Ugc3RvcCBzY2FubmluZyB3aGVuIGEgdGFnIHRoYXQgaXMgbm90IHBlcm1pdHRlZCBpbiA8
aGVhZD4KICAgICAvLyBpcyBzZWVuLCByYXRoZXIgd2hlbiA8L2hlYWQ+IGlzIHNlZW4sIGJlY2F1
c2UgdGhhdCBtb3JlIGNsb3NlbHkKICAgICAvLyBtYXRjaGVzIGJlaGF2aW9yIGluIG90aGVyIGJy
b3dzZXJzOyBtb3JlIGRldGFpbHMgaW4KICAgICAvLyA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzU5MD4uCi0gICAgLy8KKwogICAgIC8vIEFkZGl0aW9uYWxseSwgd2Ug
aWdub3JlIHRoaW5ncyB0aGF0IGxvb2tzIGxpa2UgdGFncyBpbiA8dGl0bGU+LCA8c2NyaXB0Pgog
ICAgIC8vIGFuZCA8bm9zY3JpcHQ+OyBzZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ1NjA+LAogICAgIC8vIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjE2NT4gYW5kCiAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMzg5Pi4KLSAgICAvLworCiAgICAgLy8gU2luY2UgbWFueSBzaXRlcyBoYXZl
IGNoYXJzZXQgZGVjbGFyYXRpb25zIGFmdGVyIDxib2R5PiBvciBvdGhlciB0YWdzCiAgICAgLy8g
dGhhdCBhcmUgZGlzYWxsb3dlZCBpbiA8aGVhZD4sIHdlIGRvbid0IGJhaWwgb3V0IHVudGlsIHdl
J3ZlIGNoZWNrZWQgYXQKICAgICAvLyBsZWFzdCBieXRlc1RvQ2hlY2tVbmNvbmRpdGlvbmFsbHkg
Ynl0ZXMgb2YgaW5wdXQuCiAKLSAgICBzdGF0aWMgY29uc3QgaW50IGJ5dGVzVG9DaGVja1VuY29u
ZGl0aW9uYWxseSA9IDEwMjQ7Ci0KLSAgICBtX2lucHV0LmFwcGVuZChTZWdtZW50ZWRTdHJpbmco
bV9jb2RlYy0+ZGVjb2RlKGRhdGEsIGxlbmd0aCkpKTsKKyAgICBtX2lucHV0LmFwcGVuZChTZWdt
ZW50ZWRTdHJpbmcobV9hc3N1bWVkQ29kZWMtPmRlY29kZShkYXRhLCBsZW5ndGgpKSk7CiAKLSAg
ICB3aGlsZSAoYXV0byB0b2tlbiA9IG1fdG9rZW5pemVyLm5leHRUb2tlbihtX2lucHV0KSkgewot
ICAgICAgICBib29sIGlzRW5kID0gdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZzsK
LSAgICAgICAgaWYgKGlzRW5kIHx8IHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRh
ZykgewotICAgICAgICAgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUodG9rZW4tPm5hbWUoKSk7Ci0g
ICAgICAgICAgICBpZiAoIWlzRW5kKSB7Ci0gICAgICAgICAgICAgICAgbV90b2tlbml6ZXIudXBk
YXRlU3RhdGVGb3IodGFnTmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHRhZ05hbWUgPT0gbWV0
YVRhZyAmJiBwcm9jZXNzTWV0YSgqdG9rZW4pKSB7CisgICAgd2hpbGUgKG1fdG9rZW5pemVyLT5u
ZXh0VG9rZW4obV9pbnB1dCwgbV90b2tlbikpIHsKKyAgICAgICAgYm9vbCBlbmQgPSBtX3Rva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZzsKKyAgICAgICAgaWYgKGVuZCB8fCBtX3Rva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKSB7CisgICAgICAgICAgICBBdG9taWNTdHJp
bmcgdGFnTmFtZShtX3Rva2VuLm5hbWUoKSk7CisgICAgICAgICAgICBpZiAoIWVuZCkgeworICAg
ICAgICAgICAgICAgIG1fdG9rZW5pemVyLT51cGRhdGVTdGF0ZUZvcih0YWdOYW1lKTsKKyAgICAg
ICAgICAgICAgICBpZiAodGFnTmFtZSA9PSBtZXRhVGFnICYmIHByb2Nlc3NNZXRhKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgbV9kb25lQ2hlY2tpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CkBAIC0xNzEsOCArMTg5LDcgQEAg
Ym9vbCBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0YUNoYXJzZXQoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgICAgICAgICAmJiB0YWdOYW1lICE9IHN0
eWxlVGFnICYmIHRhZ05hbWUgIT0gbGlua1RhZwogICAgICAgICAgICAgICAgICYmIHRhZ05hbWUg
IT0gbWV0YVRhZyAmJiB0YWdOYW1lICE9IG9iamVjdFRhZwogICAgICAgICAgICAgICAgICYmIHRh
Z05hbWUgIT0gdGl0bGVUYWcgJiYgdGFnTmFtZSAhPSBiYXNlVGFnCi0gICAgICAgICAgICAgICAg
JiYgKGlzRW5kIHx8IHRhZ05hbWUgIT0gaHRtbFRhZykKLSAgICAgICAgICAgICAgICAmJiAoaXNF
bmQgfHwgdGFnTmFtZSAhPSBoZWFkVGFnKSkgeworICAgICAgICAgICAgICAgICYmIChlbmQgfHwg
dGFnTmFtZSAhPSBodG1sVGFnKSAmJiAoZW5kIHx8IHRhZ05hbWUgIT0gaGVhZFRhZykpIHsKICAg
ICAgICAgICAgICAgICBtX2luSGVhZFNlY3Rpb24gPSBmYWxzZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMTgxLDYgKzE5OCw4IEBAIGJvb2wgSFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpj
aGVja0Zvck1ldGFDaGFyc2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAgICAg
ICAgICAgICBtX2RvbmVDaGVja2luZyA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQorCisgICAgICAgIG1fdG9rZW4uY2xlYXIoKTsKICAgICB9CiAKICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0
YUNoYXJzZXRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hh
cnNldFBhcnNlci5oCmluZGV4IDJjNmQ3YzU3ZTgwNzZkOWZlZjA1OGI2NzhhODdlMjNhZmIyNDVl
ZGEuLmRlMDI4YmIwYmNhMDI2NmZiNmQ0Zjc4YWE0ZjA3MjQwYTIzMjk1OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oCkBAIC0y
NiwzNiArMjYsNDkgQEAKICNpZm5kZWYgSFRNTE1ldGFDaGFyc2V0UGFyc2VyX2gKICNkZWZpbmUg
SFRNTE1ldGFDaGFyc2V0UGFyc2VyX2gKIAotI2luY2x1ZGUgIkhUTUxUb2tlbml6ZXIuaCIKKyNp
bmNsdWRlICJIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKICNpbmNs
dWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MVG9rZW5pemVyOwogY2xhc3MgVGV4dENvZGVj
OwogCiBjbGFzcyBIVE1MTWV0YUNoYXJzZXRQYXJzZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEhUTUxNZXRhQ2hhcnNldFBhcnNlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIEhUTUxNZXRhQ2hhcnNldFBhcnNlcigpOworICAgIH5IVE1MTWV0YUNoYXJzZXRQ
YXJzZXIoKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBkb25lIGNoZWNraW5nLCByZWdhcmRs
ZXNzIHdoZXRoZXIgYW4gZW5jb2RpbmcgaXMgZm91bmQuCiAgICAgYm9vbCBjaGVja0Zvck1ldGFD
aGFyc2V0KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogCiAgICAgY29uc3QgVGV4dEVuY29kaW5nJiBl
bmNvZGluZygpIHsgcmV0dXJuIG1fZW5jb2Rpbmc7IH0KIAotICAgIC8vIFRoZSByZXR1cm5lZCBl
bmNvZGluZyBtaWdodCBub3QgYmUgdmFsaWQuCiAgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgU3RyaW5nPj4gQXR0cmlidXRlTGlzdDsKLSAgICBzdGF0aWMgVGV4dEVuY29kaW5n
IGVuY29kaW5nRnJvbU1ldGFBdHRyaWJ1dGVzKGNvbnN0IEF0dHJpYnV0ZUxpc3QmKTsKKyAgICAv
LyBUaGUgcmV0dXJuZWQgZW5jb2RpbmcgbWlnaHQgbm90IGJlIHZhbGlkLgorICAgIHN0YXRpYyBU
ZXh0RW5jb2RpbmcgZW5jb2RpbmdGcm9tTWV0YUF0dHJpYnV0ZXMoY29uc3QgQXR0cmlidXRlTGlz
dCYKKyk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBwcm9jZXNzTWV0YShIVE1MVG9rZW4mKTsKKyAg
ICBib29sIHByb2Nlc3NNZXRhKCk7CisgICAgc3RhdGljIFN0cmluZyBleHRyYWN0Q2hhcnNldChj
b25zdCBTdHJpbmcmKTsKIAotICAgIEhUTUxUb2tlbml6ZXIgbV90b2tlbml6ZXI7Ci0gICAgY29u
c3Qgc3RkOjp1bmlxdWVfcHRyPFRleHRDb2RlYz4gbV9jb2RlYzsKKyAgICBlbnVtIE1vZGUgewor
ICAgICAgICBOb25lLAorICAgICAgICBDaGFyc2V0LAorICAgICAgICBQcmFnbWEsCisgICAgfTsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxIVE1MVG9rZW5pemVyPiBtX3Rva2VuaXplcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiBtX2Fzc3VtZWRDb2RlYzsKICAgICBTZWdtZW50ZWRT
dHJpbmcgbV9pbnB1dDsKLSAgICBib29sIG1faW5IZWFkU2VjdGlvbiB7IHRydWUgfTsKLSAgICBi
b29sIG1fZG9uZUNoZWNraW5nIHsgZmFsc2UgfTsKKyAgICBIVE1MVG9rZW4gbV90b2tlbjsKKyAg
ICBib29sIG1faW5IZWFkU2VjdGlvbjsKKworICAgIGJvb2wgbV9kb25lQ2hlY2tpbmc7CiAgICAg
VGV4dEVuY29kaW5nIG1fZW5jb2Rpbmc7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCA0NzAzMWIxMjg3NjFiZjBlYTkw
YzUzYzFhYTI2NDM5NzFjOTdiM2RjLi4xNDllNDBjZDgwZDA4ODBhOTc1MDgyZTQ5OTJjZDFhNzNj
MjhkNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9h
ZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAKQEAgLTI0Miw4ICsyNDIsNDAgQEAgcHJpdmF0ZToKIAogVG9rZW5QcmVsb2Fk
U2Nhbm5lcjo6VG9rZW5QcmVsb2FkU2Nhbm5lcihjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICA6IG1fZG9jdW1lbnRVUkwoZG9jdW1lbnRVUkwpCisg
ICAgLCBtX2luU3R5bGUoZmFsc2UpCiAgICAgLCBtX2RldmljZVNjYWxlRmFjdG9yKGRldmljZVNj
YWxlRmFjdG9yKQorI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQorICAgICwgbV90ZW1wbGF0
ZUNvdW50KDApCisjZW5kaWYKK3sKK30KKworVG9rZW5QcmVsb2FkU2Nhbm5lcjo6flRva2VuUHJl
bG9hZFNjYW5uZXIoKQoreworfQorCitUb2tlblByZWxvYWRTY2FubmVyQ2hlY2twb2ludCBUb2tl
blByZWxvYWRTY2FubmVyOjpjcmVhdGVDaGVja3BvaW50KCkKK3sKKyAgICBUb2tlblByZWxvYWRT
Y2FubmVyQ2hlY2twb2ludCBjaGVja3BvaW50ID0gbV9jaGVja3BvaW50cy5zaXplKCk7CisgICAg
bV9jaGVja3BvaW50cy5hcHBlbmQoQ2hlY2twb2ludChtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJM
LCBtX2luU3R5bGUKKyNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICwgbV90ZW1wbGF0ZUNvdW50CisjZW5kaWYKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpOworICAgIHJldHVybiBjaGVja3BvaW50Owor
fQorCit2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnJld2luZFRvKFRva2VuUHJlbG9hZFNjYW5u
ZXJDaGVja3BvaW50IGNoZWNrcG9pbnRJbmRleCkKIHsKKyAgICBBU1NFUlQoY2hlY2twb2ludElu
ZGV4IDwgbV9jaGVja3BvaW50cy5zaXplKCkpOyAvLyBJZiB0aGlzIEFTU0VSVCBmaXJlcywgY2hl
Y2twb2ludEluZGV4IGlzIGludmFsaWQuCisgICAgY29uc3QgQ2hlY2twb2ludCYgY2hlY2twb2lu
dCA9IG1fY2hlY2twb2ludHNbY2hlY2twb2ludEluZGV4XTsKKyAgICBtX3ByZWRpY3RlZEJhc2VF
bGVtZW50VVJMID0gY2hlY2twb2ludC5wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTDsKKyAgICBtX2lu
U3R5bGUgPSBjaGVja3BvaW50LmluU3R5bGU7CisjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQp
CisgICAgbV90ZW1wbGF0ZUNvdW50ID0gY2hlY2twb2ludC50ZW1wbGF0ZUNvdW50OworI2VuZGlm
CisgICAgbV9jc3NTY2FubmVyLnJlc2V0KCk7CisgICAgbV9jaGVja3BvaW50cy5jbGVhcigpOwog
fQogCiB2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnNjYW4oY29uc3QgSFRNTFRva2VuJiB0b2tl
biwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQcmVsb2FkUmVxdWVzdD4+JiByZXF1ZXN0cywgRG9j
dW1lbnQmIGRvY3VtZW50KQpAQCAtMzE3LDcgKzM0OSwxMSBAQCB2b2lkIFRva2VuUHJlbG9hZFNj
YW5uZXI6OnVwZGF0ZVByZWRpY3RlZEJhc2VVUkwoY29uc3QgSFRNTFRva2VuJiB0b2tlbikKIAog
SFRNTFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIoY29uc3QgSFRNTFBhcnNlck9w
dGlvbnMmIG9wdGlvbnMsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yKQogICAgIDogbV9zY2FubmVyKGRvY3VtZW50VVJMLCBkZXZpY2VTY2FsZUZhY3RvcikK
LSAgICAsIG1fdG9rZW5pemVyKG9wdGlvbnMpCisgICAgLCBtX3Rva2VuaXplcihzdGQ6Om1ha2Vf
dW5pcXVlPEhUTUxUb2tlbml6ZXI+KG9wdGlvbnMpKQoreworfQorCitIVE1MUHJlbG9hZFNjYW5u
ZXI6On5IVE1MUHJlbG9hZFNjYW5uZXIoKQogewogfQogCkBAIC0zMjYsNyArMzYyLDcgQEAgdm9p
ZCBIVE1MUHJlbG9hZFNjYW5uZXI6OmFwcGVuZFRvRW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYg
c291cmNlKQogICAgIG1fc291cmNlLmFwcGVuZChzb3VyY2UpOwogfQogCi12b2lkIEhUTUxQcmVs
b2FkU2Nhbm5lcjo6c2NhbihIVE1MUmVzb3VyY2VQcmVsb2FkZXImIHByZWxvYWRlciwgRG9jdW1l
bnQmIGRvY3VtZW50KQordm9pZCBIVE1MUHJlbG9hZFNjYW5uZXI6OnNjYW4oSFRNTFJlc291cmNl
UHJlbG9hZGVyKiBwcmVsb2FkZXIsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOyAvLyBIVE1MVG9rZW5pemVyOjp1cGRhdGVTdGF0ZUZvciBvbmx5IHdv
cmtzIG9uIHRoZSBtYWluIHRocmVhZC4KIApAQCAtMzM4LDEzICszNzQsMTQgQEAgdm9pZCBIVE1M
UHJlbG9hZFNjYW5uZXI6OnNjYW4oSFRNTFJlc291cmNlUHJlbG9hZGVyJiBwcmVsb2FkZXIsIERv
Y3VtZW50JiBkb2N1bWUKIAogICAgIFByZWxvYWRSZXF1ZXN0U3RyZWFtIHJlcXVlc3RzOwogCi0g
ICAgd2hpbGUgKGF1dG8gdG9rZW4gPSBtX3Rva2VuaXplci5uZXh0VG9rZW4obV9zb3VyY2UpKSB7
Ci0gICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpCi0gICAg
ICAgICAgICBtX3Rva2VuaXplci51cGRhdGVTdGF0ZUZvcihBdG9taWNTdHJpbmcodG9rZW4tPm5h
bWUoKSkpOwotICAgICAgICBtX3NjYW5uZXIuc2NhbigqdG9rZW4sIHJlcXVlc3RzLCBkb2N1bWVu
dCk7CisgICAgd2hpbGUgKG1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9zb3VyY2UsIG1fdG9rZW4p
KSB7CisgICAgICAgIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKQor
ICAgICAgICAgICAgbV90b2tlbml6ZXItPnVwZGF0ZVN0YXRlRm9yKEF0b21pY1N0cmluZyhtX3Rv
a2VuLm5hbWUoKSkpOworICAgICAgICBtX3NjYW5uZXIuc2NhbihtX3Rva2VuLCByZXF1ZXN0cywg
ZG9jdW1lbnQpOworICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CiAgICAgfQogCi0gICAgcHJlbG9h
ZGVyLnByZWxvYWQoV1RGOjptb3ZlKHJlcXVlc3RzKSk7CisgICAgcHJlbG9hZGVyLT5wcmVsb2Fk
KFdURjo6bW92ZShyZXF1ZXN0cykpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oCmluZGV4IDFhOWMyODM5MDMxMWIxOGRiYmRkZTY5
MzE1MWQwMDQ5Y2NlNTc0YWMuLjlkZDZjZmMwZWIwOTU3Yzk0NDk0MzBiYTg4MGFmY2NhYjhmMjYw
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5l
ci5oCkBAIC0yOCwyMCArMjgsNDAgQEAKICNkZWZpbmUgSFRNTFByZWxvYWRTY2FubmVyX2gKIAog
I2luY2x1ZGUgIkNTU1ByZWxvYWRTY2FubmVyLmgiCi0jaW5jbHVkZSAiSFRNTFRva2VuaXplci5o
IgorI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0eXBlZGVm
IHNpemVfdCBUb2tlblByZWxvYWRTY2FubmVyQ2hlY2twb2ludDsKKworY2xhc3MgSFRNTFBhcnNl
ck9wdGlvbnM7CitjbGFzcyBIVE1MVG9rZW5pemVyOworY2xhc3MgU2VnbWVudGVkU3RyaW5nOwor
Y2xhc3MgRnJhbWU7CisKIGNsYXNzIFRva2VuUHJlbG9hZFNjYW5uZXIgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFRva2VuUHJlbG9hZFNjYW5uZXIpOworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFRva2VuUHJlbG9hZFNjYW5uZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBUb2tlblByZWxvYWRTY2FubmVyKGNvbnN0IFVSTCYgZG9jdW1lbnRV
UkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMS4wKTsKKyAgICB+VG9rZW5QcmVsb2FkU2Nh
bm5lcigpOwogCi0gICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxUb2tlbiYsIFByZWxvYWRSZXF1ZXN0
U3RyZWFtJiwgRG9jdW1lbnQmKTsKKyAgICB2b2lkIHNjYW4oY29uc3QgSFRNTFRva2VuJiwgUHJl
bG9hZFJlcXVlc3RTdHJlYW0mIHJlcXVlc3RzLCBEb2N1bWVudCYpOwogCiAgICAgdm9pZCBzZXRQ
cmVkaWN0ZWRCYXNlRWxlbWVudFVSTChjb25zdCBVUkwmIHVybCkgeyBtX3ByZWRpY3RlZEJhc2VF
bGVtZW50VVJMID0gdXJsOyB9CiAKKyAgICAvLyBBIFRva2VuUHJlbG9hZFNjYW5uZXJDaGVja3Bv
aW50IGlzIHZhbGlkIHVudGlsIHRoZSBuZXh0IGNhbGwgdG8gcmV3aW5kVG8sCisgICAgLy8gYXQg
d2hpY2ggcG9pbnQgYWxsIG91dHN0YW5kaW5nIGNoZWNrcG9pbnRzIGFyZSBpbnZhbGlkYXRlZC4K
KyAgICBUb2tlblByZWxvYWRTY2FubmVyQ2hlY2twb2ludCBjcmVhdGVDaGVja3BvaW50KCk7Cisg
ICAgdm9pZCByZXdpbmRUbyhUb2tlblByZWxvYWRTY2FubmVyQ2hlY2twb2ludCk7CisKKyAgICBi
b29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpCisgICAgeworICAgICAgICByZXR1cm4g
bV9kb2N1bWVudFVSTC5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKQorICAgICAgICAgICAg
JiYgbV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTC5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQo
KTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBUYWdJZCB7CiAgICAgICAgIC8v
IFRoZXNlIHRhZ3MgYXJlIHNjYW5uZWQgYnkgdGhlIFN0YXJ0VGFnU2Nhbm5lci4KQEAgLTY1LDI5
ICs4NSw1NCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVQcmVkaWN0ZWRCYXNlVVJMKGNv
bnN0IEhUTUxUb2tlbiYpOwogCisgICAgc3RydWN0IENoZWNrcG9pbnQgeworICAgICAgICBDaGVj
a3BvaW50KGNvbnN0IFVSTCYgcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwsIGJvb2wgaW5TdHlsZQor
I2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQorICAgICAgICAgICAgLCBzaXplX3QgdGVtcGxh
dGVDb3VudAorI2VuZGlmCisgICAgICAgICAgICApCisgICAgICAgICAgICA6IHByZWRpY3RlZEJh
c2VFbGVtZW50VVJMKHByZWRpY3RlZEJhc2VFbGVtZW50VVJMKQorICAgICAgICAgICAgLCBpblN0
eWxlKGluU3R5bGUpCisjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCisgICAgICAgICAgICAs
IHRlbXBsYXRlQ291bnQodGVtcGxhdGVDb3VudCkKKyNlbmRpZgorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICBVUkwgcHJlZGljdGVkQmFzZUVsZW1lbnRVUkw7CisgICAgICAgIGJvb2wg
aW5TdHlsZTsKKyNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKKyAgICAgICAgc2l6ZV90IHRl
bXBsYXRlQ291bnQ7CisjZW5kaWYKKyAgICB9OworCiAgICAgQ1NTUHJlbG9hZFNjYW5uZXIgbV9j
c3NTY2FubmVyOwogICAgIGNvbnN0IFVSTCBtX2RvY3VtZW50VVJMOwotICAgIGNvbnN0IGZsb2F0
IG1fZGV2aWNlU2NhbGVGYWN0b3IgeyAxIH07Ci0KICAgICBVUkwgbV9wcmVkaWN0ZWRCYXNlRWxl
bWVudFVSTDsKLSAgICBib29sIG1faW5TdHlsZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2luU3R5
bGU7CisgICAgZmxvYXQgbV9kZXZpY2VTY2FsZUZhY3RvcjsKKwogI2lmIEVOQUJMRShURU1QTEFU
RV9FTEVNRU5UKQotICAgIHVuc2lnbmVkIG1fdGVtcGxhdGVDb3VudCB7IDAgfTsKKyAgICBzaXpl
X3QgbV90ZW1wbGF0ZUNvdW50OwogI2VuZGlmCisKKyAgICBWZWN0b3I8Q2hlY2twb2ludD4gbV9j
aGVja3BvaW50czsKIH07CiAKIGNsYXNzIEhUTUxQcmVsb2FkU2Nhbm5lciB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTFByZWxvYWRT
Y2FubmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSFRNTFByZWxv
YWRTY2FubmVyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiwgY29uc3QgVVJMJiBkb2N1bWVudFVS
TCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxLjApOworICAgIH5IVE1MUHJlbG9hZFNjYW5u
ZXIoKTsKIAogICAgIHZvaWQgYXBwZW5kVG9FbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7Ci0g
ICAgdm9pZCBzY2FuKEhUTUxSZXNvdXJjZVByZWxvYWRlciYsIERvY3VtZW50Jik7CisgICAgdm9p
ZCBzY2FuKEhUTUxSZXNvdXJjZVByZWxvYWRlciosIERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAg
ICAgVG9rZW5QcmVsb2FkU2Nhbm5lciBtX3NjYW5uZXI7CiAgICAgU2VnbWVudGVkU3RyaW5nIG1f
c291cmNlOwotICAgIEhUTUxUb2tlbml6ZXIgbV90b2tlbml6ZXI7CisgICAgSFRNTFRva2VuIG1f
dG9rZW47CisgICAgc3RkOjp1bmlxdWVfcHRyPEhUTUxUb2tlbml6ZXI+IG1fdG9rZW5pemVyOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291
cmNlUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJj
ZVByZWxvYWRlci5jcHAKaW5kZXggM2M3YjdhZDFiODkyYzU1NDExYjRlNzJiNjM5MTMxMGY5Yzk2
Y2VjYS4uMTZlYTc2MTJkM2FhNjMzOTIwOGI2OTk3MGFiYzFlMjc4YTI5MjRkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3Bw
CkBAIC0zNSw2ICszNSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgUHJlbG9h
ZFJlcXVlc3Q6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW5pdGlhdG9yLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpCisgICAgICAgICYm
IG1fY2hhcnNldC5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKQorICAgICAgICAmJiBtX3Jl
c291cmNlVVJMLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpCisgICAgICAgICYmIG1fbWVk
aWFBdHRyaWJ1dGUuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkKKyAgICAgICAgJiYgbV9i
YXNlVVJMLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOworfQorCiBVUkwgUHJlbG9hZFJl
cXVlc3Q6OmNvbXBsZXRlVVJMKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gZG9j
dW1lbnQuY29tcGxldGVVUkwobV9yZXNvdXJjZVVSTCwgbV9iYXNlVVJMLmlzRW1wdHkoKSA/IGRv
Y3VtZW50LnVybCgpIDogbV9iYXNlVVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgKaW5kZXggMmE4YjZjODc0MTdjMTg5OTNmN2Y5
ZTM1ZGVjOTg1NjlhNWI5Y2ViOS4uZjkzYTA5M2JkNjA5OWRlZTFhMjNmYjk0MGVmNDRlOTViOTY2
ZTRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNl
UHJlbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNl
UHJlbG9hZGVyLmgKQEAgLTM1LDE0ICszNSwxNiBAQCBjbGFzcyBQcmVsb2FkUmVxdWVzdCB7CiBw
dWJsaWM6CiAgICAgUHJlbG9hZFJlcXVlc3QoY29uc3QgU3RyaW5nJiBpbml0aWF0b3IsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VVUkwsIGNvbnN0IFVSTCYgYmFzZVVSTCwgQ2FjaGVkUmVzb3VyY2U6
OlR5cGUgcmVzb3VyY2VUeXBlLCBjb25zdCBTdHJpbmcmIG1lZGlhQXR0cmlidXRlKQogICAgICAg
ICA6IG1faW5pdGlhdG9yKGluaXRpYXRvcikKLSAgICAgICAgLCBtX3Jlc291cmNlVVJMKHJlc291
cmNlVVJMKQorICAgICAgICAsIG1fcmVzb3VyY2VVUkwocmVzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5
KCkpCiAgICAgICAgICwgbV9iYXNlVVJMKGJhc2VVUkwuY29weSgpKQogICAgICAgICAsIG1fcmVz
b3VyY2VUeXBlKHJlc291cmNlVHlwZSkKLSAgICAgICAgLCBtX21lZGlhQXR0cmlidXRlKG1lZGlh
QXR0cmlidXRlKQorICAgICAgICAsIG1fbWVkaWFBdHRyaWJ1dGUobWVkaWFBdHRyaWJ1dGUuaXNv
bGF0ZWRDb3B5KCkpCiAgICAgICAgICwgbV9jcm9zc09yaWdpbk1vZGVBbGxvd3NDb29raWVzKGZh
bHNlKQogICAgIHsKICAgICB9CiAKKyAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpIGNvbnN0OworCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChE
b2N1bWVudCYpOwogCiAgICAgY29uc3QgU3RyaW5nJiBjaGFyc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9jaGFyc2V0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
U291cmNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNl
VHJhY2tlci5jcHAKaW5kZXggMGM5YTA0NjMyNzBkY2FhMmIxZmVmNTllNDUyY2Y2NWE1OTUzZDJk
Ny4uZjQ4ZDg3YzQxMDdlMmU2OTE0ZTAwZWU3MzAxMjE2MzBmMmFlODQ5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFja2VyLmNwcApAQCAtMSw2ICsx
LDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQWRhbSBCYXJ0aC4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI1LDYgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxTb3VyY2VUcmFja2VyLmgiCi0K
ICNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCkBAIC0zNiw0MSArMzQsMzYgQEAgSFRNTFNvdXJjZVRyYWNrZXI6OkhUTUxTb3Vy
Y2VUcmFja2VyKCkKIHsKIH0KIAotdm9pZCBIVE1MU291cmNlVHJhY2tlcjo6c3RhcnRUb2tlbihT
ZWdtZW50ZWRTdHJpbmcmIGN1cnJlbnRJbnB1dCwgSFRNTFRva2VuaXplciYgdG9rZW5pemVyKQor
dm9pZCBIVE1MU291cmNlVHJhY2tlcjo6c3RhcnQoU2VnbWVudGVkU3RyaW5nJiBjdXJyZW50SW5w
dXQsIEhUTUxUb2tlbml6ZXIqIHRva2VuaXplciwgSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBp
ZiAoIW1fc3RhcnRlZCkgewotICAgICAgICBpZiAodG9rZW5pemVyLm51bWJlck9mQnVmZmVyZWRD
aGFyYWN0ZXJzKCkpCi0gICAgICAgICAgICBtX3ByZXZpb3VzU291cmNlID0gdG9rZW5pemVyLmJ1
ZmZlcmVkQ2hhcmFjdGVycygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3ByZXZpb3Vz
U291cmNlLmNsZWFyKCk7Ci0gICAgICAgIG1fc3RhcnRlZCA9IHRydWU7CisgICAgaWYgKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgbV9wcmV2aW91
c1NvdXJjZS5jbGVhcigpOworICAgICAgICBpZiAodG9rZW5pemVyLT5udW1iZXJPZkJ1ZmZlcmVk
Q2hhcmFjdGVycygpKQorICAgICAgICAgICAgbV9wcmV2aW91c1NvdXJjZSA9IHRva2VuaXplci0+
YnVmZmVyZWRDaGFyYWN0ZXJzKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fcHJldmlvdXNTb3Vy
Y2UuYXBwZW5kKG1fY3VycmVudFNvdXJjZSk7CiAKICAgICBtX2N1cnJlbnRTb3VyY2UgPSBjdXJy
ZW50SW5wdXQ7Ci0gICAgbV90b2tlblN0YXJ0ID0gbV9jdXJyZW50U291cmNlLm51bWJlck9mQ2hh
cmFjdGVyc0NvbnN1bWVkKCkgLSBtX3ByZXZpb3VzU291cmNlLmxlbmd0aCgpOworICAgIHRva2Vu
LnNldEJhc2VPZmZzZXQobV9jdXJyZW50U291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVk
KCkgLSBtX3ByZXZpb3VzU291cmNlLmxlbmd0aCgpKTsKIH0KIAotdm9pZCBIVE1MU291cmNlVHJh
Y2tlcjo6ZW5kVG9rZW4oU2VnbWVudGVkU3RyaW5nJiBjdXJyZW50SW5wdXQsIEhUTUxUb2tlbml6
ZXImIHRva2VuaXplcikKK3ZvaWQgSFRNTFNvdXJjZVRyYWNrZXI6OmVuZChTZWdtZW50ZWRTdHJp
bmcmIGN1cnJlbnRJbnB1dCwgSFRNTFRva2VuaXplciogdG9rZW5pemVyLCBIVE1MVG9rZW4mIHRv
a2VuKQogewotICAgIEFTU0VSVChtX3N0YXJ0ZWQpOwotICAgIG1fc3RhcnRlZCA9IGZhbHNlOwot
Ci0gICAgbV90b2tlbkVuZCA9IGN1cnJlbnRJbnB1dC5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1l
ZCgpIC0gdG9rZW5pemVyLm51bWJlck9mQnVmZmVyZWRDaGFyYWN0ZXJzKCk7CiAgICAgbV9jYWNo
ZWRTb3VyY2VGb3JUb2tlbiA9IFN0cmluZygpOworCisgICAgLy8gRklYTUU6IFRoaXMgd29yayBz
aG91bGQgcmVhbGx5IGJlIGRvbmUgYnkgdGhlIEhUTUxUb2tlbml6ZXIuCisgICAgdG9rZW4uc2V0
RW5kT2Zmc2V0KGN1cnJlbnRJbnB1dC5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpIC0gdG9r
ZW5pemVyLT5udW1iZXJPZkJ1ZmZlcmVkQ2hhcmFjdGVycygpKTsKIH0KIAotU3RyaW5nIEhUTUxT
b3VyY2VUcmFja2VyOjpzb3VyY2UoY29uc3QgSFRNTFRva2VuJiB0b2tlbikKK1N0cmluZyBIVE1M
U291cmNlVHJhY2tlcjo6c291cmNlRm9yVG9rZW4oY29uc3QgSFRNTFRva2VuJiB0b2tlbikKIHsK
LSAgICBBU1NFUlQoIW1fc3RhcnRlZCk7Ci0KICAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxU
b2tlbjo6RW5kT2ZGaWxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7IC8vIEhpZGVzIHRoZSBu
dWxsIGNoYXJhY3RlciB3ZSB1c2UgdG8gbWFyayB0aGUgZW5kIG9mIGZpbGUuCiAKICAgICBpZiAo
IW1fY2FjaGVkU291cmNlRm9yVG9rZW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9jYWNo
ZWRTb3VyY2VGb3JUb2tlbjsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fdG9rZW5FbmQgLSBt
X3Rva2VuU3RhcnQ7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9rZW4ubGVuZ3RoKCk7CiAKICAg
ICBTdHJpbmdCdWlsZGVyIHNvdXJjZTsKICAgICBzb3VyY2UucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0
aCk7CkBAIC05MCw5ICs4Myw0IEBAIFN0cmluZyBIVE1MU291cmNlVHJhY2tlcjo6c291cmNlKGNv
bnN0IEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgcmV0dXJuIG1fY2FjaGVkU291cmNlRm9yVG9rZW47
CiB9CiAKLVN0cmluZyBIVE1MU291cmNlVHJhY2tlcjo6c291cmNlKGNvbnN0IEhUTUxUb2tlbiYg
dG9rZW4sIHVuc2lnbmVkIGF0dHJpYnV0ZVN0YXJ0LCB1bnNpZ25lZCBhdHRyaWJ1dGVFbmQpCi17
Ci0gICAgcmV0dXJuIHNvdXJjZSh0b2tlbikuc3Vic3RyaW5nKGF0dHJpYnV0ZVN0YXJ0IC0gbV90
b2tlblN0YXJ0LCBhdHRyaWJ1dGVFbmQgLSBhdHRyaWJ1dGVTdGFydCk7Ci19Ci0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFja2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5oCmluZGV4IDM2MDFl
MjVkYmE1ODQ5ZWI5OTQ4MDg4ZTFhOTg1N2JlMzIyNjc0OTUuLjdmMDM3OGI4ZjYxOTUwN2RhOTI2
MTYxY2MzZjgxNDgxODViYWZiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxTb3VyY2VUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFNvdXJjZVRyYWNrZXIuaApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQWRhbSBCYXJ0aC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI3LDExICsyNiwxMSBAQAogI2lmbmRlZiBIVE1MU291cmNlVHJhY2tl
cl9oCiAjZGVmaW5lIEhUTUxTb3VyY2VUcmFja2VyX2gKIAorI2luY2x1ZGUgIkhUTUxUb2tlbi5o
IgogI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEhUTUxUb2tlbjsKIGNsYXNzIEhUTUxUb2tlbml6ZXI7CiAKIGNsYXNzIEhUTUxTb3Vy
Y2VUcmFja2VyIHsKQEAgLTM5LDE4ICszOCwxNSBAQCBjbGFzcyBIVE1MU291cmNlVHJhY2tlciB7
CiBwdWJsaWM6CiAgICAgSFRNTFNvdXJjZVRyYWNrZXIoKTsKIAotICAgIHZvaWQgc3RhcnRUb2tl
bihTZWdtZW50ZWRTdHJpbmcmLCBIVE1MVG9rZW5pemVyJik7Ci0gICAgdm9pZCBlbmRUb2tlbihT
ZWdtZW50ZWRTdHJpbmcmLCBIVE1MVG9rZW5pemVyJik7CisgICAgLy8gRklYTUU6IE9uY2Ugd2Ug
bW92ZSAiZW5kIiBpbnRvIEhUTUxUb2tlbml6ZXIsIHJlbmFtZSAic3RhcnQiIHRvCisgICAgLy8g
c29tZXRoaW5nIHRoYXQgbWFrZXMgaXQgb2J2aW91cyB0aGF0IHRoaXMgbWV0aG9kIGNhbiBiZSBj
YWxsZWQgbXVsdGlwbGUKKyAgICAvLyB0aW1lcy4KKyAgICB2b2lkIHN0YXJ0KFNlZ21lbnRlZFN0
cmluZyYsIEhUTUxUb2tlbml6ZXIqLCBIVE1MVG9rZW4mKTsKKyAgICB2b2lkIGVuZChTZWdtZW50
ZWRTdHJpbmcmLCBIVE1MVG9rZW5pemVyKiwgSFRNTFRva2VuJik7CiAKLSAgICBTdHJpbmcgc291
cmNlKGNvbnN0IEhUTUxUb2tlbiYpOwotICAgIFN0cmluZyBzb3VyY2UoY29uc3QgSFRNTFRva2Vu
JiwgdW5zaWduZWQgYXR0cmlidXRlU3RhcnQsIHVuc2lnbmVkIGF0dHJpYnV0ZUVuZCk7CisgICAg
U3RyaW5nIHNvdXJjZUZvclRva2VuKGNvbnN0IEhUTUxUb2tlbiYpOwogCiBwcml2YXRlOgotICAg
IGJvb2wgbV9zdGFydGVkIHsgZmFsc2UgfTsKLQotICAgIHVuc2lnbmVkIG1fdG9rZW5TdGFydDsK
LSAgICB1bnNpZ25lZCBtX3Rva2VuRW5kOwotCiAgICAgU2VnbWVudGVkU3RyaW5nIG1fcHJldmlv
dXNTb3VyY2U7CiAgICAgU2VnbWVudGVkU3RyaW5nIG1fY3VycmVudFNvdXJjZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAppbmRleCA2MTcxNzIxODFkODNkNzZlMjNhZTlj
YjkxYTkzMDU0YWYwZGVlYzY0Li44YTAzNDljMGFiODllMjAxMjQ3ZDNkNjAzNGU5MjBmNWRlZWJj
NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtNTMsMTIgKzUz
LDE1IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RydWN0IEF0dHJpYnV0ZSB7CisgICAgICAg
IHN0cnVjdCBSYW5nZSB7CisgICAgICAgICAgICB1bnNpZ25lZCBzdGFydDsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGVuZDsKKyAgICAgICAgfTsKKworICAgICAgICBSYW5nZSBuYW1lUmFuZ2U7Cisg
ICAgICAgIFJhbmdlIHZhbHVlUmFuZ2U7CiAgICAgICAgIFZlY3RvcjxVQ2hhciwgMzI+IG5hbWU7
CiAgICAgICAgIFZlY3RvcjxVQ2hhciwgMzI+IHZhbHVlOwotCi0gICAgICAgIC8vIFVzZWQgYnkg
SFRNTFNvdXJjZVRyYWNrZXIuCi0gICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0OwotICAgICAg
ICB1bnNpZ25lZCBlbmRPZmZzZXQ7CiAgICAgfTsKIAogICAgIHR5cGVkZWYgVmVjdG9yPEF0dHJp
YnV0ZSwgMTA+IEF0dHJpYnV0ZUxpc3Q7CkBAIC03MCw2ICs3MywxMSBAQCBwdWJsaWM6CiAKICAg
ICBUeXBlIHR5cGUoKSBjb25zdDsKIAorICAgIC8vIFVzZWQgYnkgSFRNTFNvdXJjZVRyYWNrZXIu
CisgICAgdm9pZCBzZXRCYXNlT2Zmc2V0KHVuc2lnbmVkKTsgLy8gQmFzZSBmb3IgYXR0cmlidXRl
IG9mZnNldHMsIGFuZCB0aGUgZW5kIG9mIHRva2VuIG9mZnNldC4KKyAgICB2b2lkIHNldEVuZE9m
ZnNldCh1bnNpZ25lZCk7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisKICAgICAvLyBF
bmRPZkZpbGUKIAogICAgIHZvaWQgbWFrZUVuZE9mRmlsZSgpOwpAQCAtMTA1LDEwICsxMTMsMTUg
QEAgcHVibGljOgogICAgIHZvaWQgYmVnaW5FbmRUYWcoTENoYXIpOwogICAgIHZvaWQgYmVnaW5F
bmRUYWcoY29uc3QgVmVjdG9yPExDaGFyLCAzMj4mKTsKIAotICAgIHZvaWQgYmVnaW5BdHRyaWJ1
dGUodW5zaWduZWQgb2Zmc2V0KTsKKyAgICB2b2lkIGFkZE5ld0F0dHJpYnV0ZSgpOworCisgICAg
dm9pZCBiZWdpbkF0dHJpYnV0ZU5hbWUodW5zaWduZWQgb2Zmc2V0KTsKICAgICB2b2lkIGFwcGVu
ZFRvQXR0cmlidXRlTmFtZShVQ2hhcik7CisgICAgdm9pZCBlbmRBdHRyaWJ1dGVOYW1lKHVuc2ln
bmVkIG9mZnNldCk7CisKKyAgICB2b2lkIGJlZ2luQXR0cmlidXRlVmFsdWUodW5zaWduZWQgb2Zm
c2V0KTsKICAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlVmFsdWUoVUNoYXIpOwotICAgIHZvaWQg
ZW5kQXR0cmlidXRlKHVuc2lnbmVkIG9mZnNldCk7CisgICAgdm9pZCBlbmRBdHRyaWJ1dGVWYWx1
ZSh1bnNpZ25lZCBvZmZzZXQpOwogCiAgICAgdm9pZCBzZXRTZWxmQ2xvc2luZygpOwogCkBAIC0x
NDEsNiArMTU0LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKIAorICAg
IHVuc2lnbmVkIG1fYmFzZU9mZnNldDsKKyAgICB1bnNpZ25lZCBtX2xlbmd0aDsKKwogICAgIERh
dGFWZWN0b3IgbV9kYXRhOwogICAgIFVDaGFyIG1fZGF0YThCaXRDaGVjazsKIApAQCAtMTU2LDkg
KzE3Miw4IEBAIHByaXZhdGU6CiBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSogZmluZEF0dHJp
YnV0ZShjb25zdCBWZWN0b3I8SFRNTFRva2VuOjpBdHRyaWJ1dGU+JiwgU3RyaW5nVmlldyBuYW1l
KTsKIAogaW5saW5lIEhUTUxUb2tlbjo6SFRNTFRva2VuKCkKLSAgICA6IG1fdHlwZShVbmluaXRp
YWxpemVkKQotICAgICwgbV9kYXRhOEJpdENoZWNrKDApCiB7CisgICAgY2xlYXIoKTsKIH0KIAog
aW5saW5lIHZvaWQgSFRNTFRva2VuOjpjbGVhcigpCkBAIC0xNjYsNiArMTgxLDkgQEAgaW5saW5l
IHZvaWQgSFRNTFRva2VuOjpjbGVhcigpCiAgICAgbV90eXBlID0gVW5pbml0aWFsaXplZDsKICAg
ICBtX2RhdGEuY2xlYXIoKTsKICAgICBtX2RhdGE4Qml0Q2hlY2sgPSAwOworCisgICAgbV9sZW5n
dGggPSAwOworICAgIG1fYmFzZU9mZnNldCA9IDA7CiB9CiAKIGlubGluZSBIVE1MVG9rZW46OlR5
cGUgSFRNTFRva2VuOjp0eXBlKCkgY29uc3QKQEAgLTE3OSw2ICsxOTcsMjEgQEAgaW5saW5lIHZv
aWQgSFRNTFRva2VuOjptYWtlRW5kT2ZGaWxlKCkKICAgICBtX3R5cGUgPSBFbmRPZkZpbGU7CiB9
CiAKK2lubGluZSB1bnNpZ25lZCBIVE1MVG9rZW46Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fbGVuZ3RoOworfQorCitpbmxpbmUgdm9pZCBIVE1MVG9rZW46OnNldEJhc2VPZmZzZXQo
dW5zaWduZWQgb2Zmc2V0KQoreworICAgIG1fYmFzZU9mZnNldCA9IG9mZnNldDsKK30KKworaW5s
aW5lIHZvaWQgSFRNTFRva2VuOjpzZXRFbmRPZmZzZXQodW5zaWduZWQgZW5kT2Zmc2V0KQorewor
ICAgIG1fbGVuZ3RoID0gZW5kT2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OworfQorCiBpbmxpbmUgY29u
c3QgSFRNTFRva2VuOjpEYXRhVmVjdG9yJiBIVE1MVG9rZW46Om5hbWUoKSBjb25zdAogewogICAg
IEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyB8fCBtX3R5cGUg
PT0gRE9DVFlQRSk7CkBAIC0yNjcsMTEgKzMwMCw4IEBAIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6
YmVnaW5TdGFydFRhZyhVQ2hhciBjaGFyYWN0ZXIpCiAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmlu
aXRpYWxpemVkKTsKICAgICBtX3R5cGUgPSBTdGFydFRhZzsKICAgICBtX3NlbGZDbG9zaW5nID0g
ZmFsc2U7Ci0gICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7Ci0KLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gbnVsbHB0cjsKLSNlbmRpZgorICAgIG1fYXR0cmli
dXRlcy5jbGVhcigpOwogCiAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwogICAgIG1fZGF0
YThCaXRDaGVjayA9IGNoYXJhY3RlcjsKQEAgLTI4MiwxMSArMzEyLDggQEAgaW5saW5lIHZvaWQg
SFRNTFRva2VuOjpiZWdpbkVuZFRhZyhMQ2hhciBjaGFyYWN0ZXIpCiAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBVbmluaXRpYWxpemVkKTsKICAgICBtX3R5cGUgPSBFbmRUYWc7CiAgICAgbV9zZWxmQ2xv
c2luZyA9IGZhbHNlOwotICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwotCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IG51bGxwdHI7Ci0jZW5kaWYKKyAgICBt
X2F0dHJpYnV0ZXMuY2xlYXIoKTsKIAogICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKIH0K
QEAgLTI5Niw0MSArMzIzLDY0IEBAIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5FbmRUYWco
Y29uc3QgVmVjdG9yPExDaGFyLCAzMj4mIGNoYXJhY3RlcnMpCiAgICAgQVNTRVJUKG1fdHlwZSA9
PSBVbmluaXRpYWxpemVkKTsKICAgICBtX3R5cGUgPSBFbmRUYWc7CiAgICAgbV9zZWxmQ2xvc2lu
ZyA9IGZhbHNlOworICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IG51bGxwdHI7CiAgICAgbV9hdHRy
aWJ1dGVzLmNsZWFyKCk7CiAKKyAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOwor
fQorCitpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmFkZE5ld0F0dHJpYnV0ZSgpCit7CisgICAgQVNT
RVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKKyAgICBtX2F0dHJp
YnV0ZXMuZ3JvdyhtX2F0dHJpYnV0ZXMuc2l6ZSgpICsgMSk7CisgICAgbV9jdXJyZW50QXR0cmli
dXRlID0gJm1fYXR0cmlidXRlcy5sYXN0KCk7CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAg
bV9jdXJyZW50QXR0cmlidXRlID0gbnVsbHB0cjsKKyAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm5h
bWVSYW5nZS5zdGFydCA9IDA7CisgICAgbV9jdXJyZW50QXR0cmlidXRlLT5uYW1lUmFuZ2UuZW5k
ID0gMDsKKyAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPnZhbHVlUmFuZ2Uuc3RhcnQgPSAwOworICAg
IG1fY3VycmVudEF0dHJpYnV0ZS0+dmFsdWVSYW5nZS5lbmQgPSAwOwogI2VuZGlmCit9CiAKLSAg
ICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworaW5saW5lIHZvaWQgSFRNTFRva2Vu
OjpiZWdpbkF0dHJpYnV0ZU5hbWUodW5zaWduZWQgb2Zmc2V0KQoreworICAgIEFTU0VSVChvZmZz
ZXQpOworICAgIEFTU0VSVCghbV9jdXJyZW50QXR0cmlidXRlLT5uYW1lUmFuZ2Uuc3RhcnQpOwor
ICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bmFtZVJhbmdlLnN0YXJ0ID0gb2Zmc2V0IC0gbV9iYXNl
T2Zmc2V0OwogfQogCi1pbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luQXR0cmlidXRlKHVuc2ln
bmVkIG9mZnNldCkKK2lubGluZSB2b2lkIEhUTUxUb2tlbjo6ZW5kQXR0cmlidXRlTmFtZSh1bnNp
Z25lZCBvZmZzZXQpCiB7Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUg
PT0gRW5kVGFnKTsKICAgICBBU1NFUlQob2Zmc2V0KTsKKyAgICBBU1NFUlQobV9jdXJyZW50QXR0
cmlidXRlLT5uYW1lUmFuZ2Uuc3RhcnQpOworICAgIEFTU0VSVCghbV9jdXJyZW50QXR0cmlidXRl
LT5uYW1lUmFuZ2UuZW5kKTsKIAotICAgIG1fYXR0cmlidXRlcy5ncm93KG1fYXR0cmlidXRlcy5z
aXplKCkgKyAxKTsKLSAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAmbV9hdHRyaWJ1dGVzLmxhc3Qo
KTsKKyAgICB1bnNpZ25lZCBhZGp1c3RlZE9mZnNldCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsK
KyAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm5hbWVSYW5nZS5lbmQgPSBhZGp1c3RlZE9mZnNldDsK
IAotICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+c3RhcnRPZmZzZXQgPSBvZmZzZXQ7CisgICAgLy8g
RklYTUU6IElzIHRoaXMgaW50ZW50aW9uYWw/IFdoeSBwb2ludCB0aGUgdmFsdWUgYXQgdGhlIGVu
ZCBvZiB0aGUgbmFtZT8KKyAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPnZhbHVlUmFuZ2Uuc3RhcnQg
PSBhZGp1c3RlZE9mZnNldDsKKyAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPnZhbHVlUmFuZ2UuZW5k
ID0gYWRqdXN0ZWRPZmZzZXQ7CiB9CiAKLWlubGluZSB2b2lkIEhUTUxUb2tlbjo6ZW5kQXR0cmli
dXRlKHVuc2lnbmVkIG9mZnNldCkKK2lubGluZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5BdHRyaWJ1
dGVWYWx1ZSh1bnNpZ25lZCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKG9mZnNldCk7Ci0gICAgQVNT
RVJUKG1fY3VycmVudEF0dHJpYnV0ZSk7Ci0gICAgbV9jdXJyZW50QXR0cmlidXRlLT5lbmRPZmZz
ZXQgPSBvZmZzZXQ7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIG1fY3VycmVudEF0dHJpYnV0
ZSA9IG51bGxwdHI7Ci0jZW5kaWYKKyAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPnZhbHVlUmFuZ2Uu
c3RhcnQgPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Cit9CisKK2lubGluZSB2b2lkIEhUTUxUb2tl
bjo6ZW5kQXR0cmlidXRlVmFsdWUodW5zaWduZWQgb2Zmc2V0KQoreworICAgIEFTU0VSVChvZmZz
ZXQpOworICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+dmFsdWVSYW5nZS5lbmQgPSBvZmZzZXQgLSBt
X2Jhc2VPZmZzZXQ7CiB9CiAKIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6YXBwZW5kVG9BdHRyaWJ1
dGVOYW1lKFVDaGFyIGNoYXJhY3RlcikKIHsKICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKICAgICBB
U1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwotICAgIEFTU0VS
VChtX2N1cnJlbnRBdHRyaWJ1dGUpOworICAgIEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm5h
bWVSYW5nZS5zdGFydCk7CiAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5uYW1lLmFwcGVuZChjaGFy
YWN0ZXIpOwogfQogCkBAIC0zMzgsNyArMzg4LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjph
cHBlbmRUb0F0dHJpYnV0ZVZhbHVlKFVDaGFyIGNoYXJhY3RlcikKIHsKICAgICBBU1NFUlQoY2hh
cmFjdGVyKTsKICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRU
YWcpOwotICAgIEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUpOworICAgIEFTU0VSVChtX2N1cnJl
bnRBdHRyaWJ1dGUtPnZhbHVlUmFuZ2Uuc3RhcnQpOwogICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+
dmFsdWUuYXBwZW5kKGNoYXJhY3Rlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRva2VuaXplci5jcHAKaW5kZXggNDg5ZTZjNTFhNTgyZTBjNDk3ZjkzZmZkNDhjODcw
ZmVlMGIzMjliNi4uMDYzYmFiODRkNzY0Zjg3ZmQ1MWNiNDY2OGMxNjAxY2Y0NzJiOGU3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuIGh0
dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLwogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKQEAgLTI5LDkgKzI5LDEyIEBACiAjaW5jbHVk
ZSAiSFRNTFRva2VuaXplci5oIgogCiAjaW5jbHVkZSAiSFRNTEVudGl0eVBhcnNlci5oIgotI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlci5oIgogI2luY2x1
ZGUgIk1hcmt1cFRva2VuaXplcklubGluZXMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RG
OwogCkBAIC0zOSw5NSArNDIsNjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgaW5saW5lIExDaGFyIGNvbnZlcnRBU0NJSUFscGhh
VG9Mb3dlcihVQ2hhciBjaGFyYWN0ZXIpCitzdGF0aWMgaW5saW5lIFVDaGFyIHRvTG93ZXJDYXNl
KFVDaGFyIGNjKQogewotICAgIEFTU0VSVChpc0FTQ0lJQWxwaGEoY2hhcmFjdGVyKSk7Ci0gICAg
cmV0dXJuIHRvQVNDSUlMb3dlclVuY2hlY2tlZChjaGFyYWN0ZXIpOworICAgIEFTU0VSVChpc0FT
Q0lJVXBwZXIoY2MpKTsKKyAgICBjb25zdCBpbnQgbG93ZXJDYXNlT2Zmc2V0ID0gMHgyMDsKKyAg
ICByZXR1cm4gY2MgKyBsb3dlckNhc2VPZmZzZXQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCB2
ZWN0b3JFcXVhbHNTdHJpbmcoY29uc3QgVmVjdG9yPExDaGFyLCAzMj4mIHZlY3RvciwgY29uc3Qg
Y2hhciogc3RyaW5nKQorc3RhdGljIGlubGluZSBib29sIHZlY3RvckVxdWFsc1N0cmluZyhjb25z
dCBWZWN0b3I8TENoYXIsIDMyPiYgdmVjdG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAg
ICB1bnNpZ25lZCBzaXplID0gdmVjdG9yLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmICghc3RyaW5nW2ldIHx8IHZlY3RvcltpXSAh
PSBzdHJpbmdbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVy
biAhc3RyaW5nW3NpemVdOworICAgIGlmICh2ZWN0b3Iuc2l6ZSgpICE9IHN0cmluZy5sZW5ndGgo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGVxdWFsKHN0cmluZy5pbXBsKCksIHZl
Y3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpOwogfQogCi1pbmxpbmUgYm9vbCBIVE1MVG9rZW5p
emVyOjppbkVuZFRhZ0J1ZmZlcmluZ1N0YXRlKCkgY29uc3QKK3N0YXRpYyBpbmxpbmUgYm9vbCBp
c0VuZFRhZ0J1ZmZlcmluZ1N0YXRlKEhUTUxUb2tlbml6ZXI6OlN0YXRlIHN0YXRlKQogewotICAg
IHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2UgUkNEQVRBRW5kVGFnT3BlblN0YXRlOgotICAg
IGNhc2UgUkNEQVRBRW5kVGFnTmFtZVN0YXRlOgotICAgIGNhc2UgUkFXVEVYVEVuZFRhZ09wZW5T
dGF0ZToKLSAgICBjYXNlIFJBV1RFWFRFbmRUYWdOYW1lU3RhdGU6Ci0gICAgY2FzZSBTY3JpcHRE
YXRhRW5kVGFnT3BlblN0YXRlOgotICAgIGNhc2UgU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZToK
LSAgICBjYXNlIFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlOgotICAgIGNhc2UgU2Ny
aXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGU6CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAg
IGNhc2UgSFRNTFRva2VuaXplcjo6UkNEQVRBRW5kVGFnT3BlblN0YXRlOgorICAgIGNhc2UgSFRN
TFRva2VuaXplcjo6UkNEQVRBRW5kVGFnTmFtZVN0YXRlOgorICAgIGNhc2UgSFRNTFRva2VuaXpl
cjo6UkFXVEVYVEVuZFRhZ09wZW5TdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tlbml6ZXI6OlJBV1RF
WFRFbmRUYWdOYW1lU3RhdGU6CisgICAgY2FzZSBIVE1MVG9rZW5pemVyOjpTY3JpcHREYXRhRW5k
VGFnT3BlblN0YXRlOgorICAgIGNhc2UgSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YUVuZFRhZ05h
bWVTdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFFc2NhcGVkRW5kVGFn
T3BlblN0YXRlOgorICAgIGNhc2UgSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YUVzY2FwZWRFbmRU
YWdOYW1lU3RhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKKyNkZWZpbmUgSFRNTF9CRUdJTl9TVEFURShzdGF0
ZU5hbWUpIEJFR0lOX1NUQVRFKEhUTUxUb2tlbml6ZXIsIHN0YXRlTmFtZSkKKyNkZWZpbmUgSFRN
TF9SRUNPTlNVTUVfSU4oc3RhdGVOYW1lKSBSRUNPTlNVTUVfSU4oSFRNTFRva2VuaXplciwgc3Rh
dGVOYW1lKQorI2RlZmluZSBIVE1MX0FEVkFOQ0VfVE8oc3RhdGVOYW1lKSBBRFZBTkNFX1RPKEhU
TUxUb2tlbml6ZXIsIHN0YXRlTmFtZSkKKyNkZWZpbmUgSFRNTF9TV0lUQ0hfVE8oc3RhdGVOYW1l
KSBTV0lUQ0hfVE8oSFRNTFRva2VuaXplciwgc3RhdGVOYW1lKQorCiBIVE1MVG9rZW5pemVyOjpI
VE1MVG9rZW5pemVyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zKQotICAgIDogbV9w
cmVwcm9jZXNzb3IoKnRoaXMpCisgICAgOiBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yKHRoaXMp
CiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKIHsKKyAgICByZXNldCgpOwogfQogCi1pbmxpbmUg
dm9pZCBIVE1MVG9rZW5pemVyOjpidWZmZXJBU0NJSUNoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIp
Ci17Ci0gICAgQVNTRVJUKGNoYXJhY3RlciAhPSBrRW5kT2ZGaWxlTWFya2VyKTsKLSAgICBBU1NF
UlQoaXNBU0NJSShjaGFyYWN0ZXIpKTsKLSAgICBMQ2hhciBuYXJyb3dlZENoYXJhY3RlciA9IGNo
YXJhY3RlcjsKLSAgICBtX3Rva2VuLmFwcGVuZFRvQ2hhcmFjdGVyKG5hcnJvd2VkQ2hhcmFjdGVy
KTsKLX0KLQotaW5saW5lIHZvaWQgSFRNTFRva2VuaXplcjo6YnVmZmVyQ2hhcmFjdGVyKFVDaGFy
IGNoYXJhY3RlcikKLXsKLSAgICBBU1NFUlQoY2hhcmFjdGVyICE9IGtFbmRPZkZpbGVNYXJrZXIp
OwotICAgIG1fdG9rZW4uYXBwZW5kVG9DaGFyYWN0ZXIoY2hhcmFjdGVyKTsKLX0KLQotaW5saW5l
IGJvb2wgSFRNTFRva2VuaXplcjo6ZW1pdEFuZFJlc3VtZUluRGF0YVN0YXRlKFNlZ21lbnRlZFN0
cmluZyYgc291cmNlKQotewotICAgIHNhdmVFbmRUYWdOYW1lSWZOZWVkZWQoKTsKLSAgICBtX3N0
YXRlID0gRGF0YVN0YXRlOwotICAgIHNvdXJjZS5hZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlcigp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjplbWl0
QW5kUmVjb25zdW1lSW5EYXRhU3RhdGUoKQotewotICAgIHNhdmVFbmRUYWdOYW1lSWZOZWVkZWQo
KTsKLSAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxp
bmUgYm9vbCBIVE1MVG9rZW5pemVyOjplbWl0RW5kT2ZGaWxlKFNlZ21lbnRlZFN0cmluZyYgc291
cmNlKQotewotICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgaWYgKGhhdmVCdWZmZXJlZENo
YXJhY3RlclRva2VuKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHNvdXJjZS5hZHZhbmNl
KCk7Ci0gICAgbV90b2tlbi5jbGVhcigpOwotICAgIG1fdG9rZW4ubWFrZUVuZE9mRmlsZSgpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgdm9pZCBIVE1MVG9rZW5pemVyOjpzYXZlRW5k
VGFnTmFtZUlmTmVlZGVkKCkKK0hUTUxUb2tlbml6ZXI6On5IVE1MVG9rZW5pemVyKCkKIHsKLSAg
ICBBU1NFUlQobV90b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkKTsKLSAg
ICBpZiAobV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykKLSAgICAgICAgbV9h
cHByb3ByaWF0ZUVuZFRhZ05hbWUgPSBtX3Rva2VuLm5hbWUoKTsKIH0KIAotaW5saW5lIGJvb2wg
SFRNTFRva2VuaXplcjo6aGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKSBjb25zdAordm9pZCBI
VE1MVG9rZW5pemVyOjpyZXNldCgpCiB7Ci0gICAgcmV0dXJuIG1fdG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6Q2hhcmFjdGVyOworICAgIG1fc3RhdGUgPSBIVE1MVG9rZW5pemVyOjpEYXRhU3Rh
dGU7CisgICAgbV90b2tlbiA9IDA7CisgICAgbV9mb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVu
dCA9IGZhbHNlOworICAgIG1fc2hvdWxkQWxsb3dDREFUQSA9IGZhbHNlOworICAgIG1fYWRkaXRp
b25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnXDAnOwogfQogCiBpbmxpbmUgYm9vbCBIVE1MVG9rZW5p
emVyOjpwcm9jZXNzRW50aXR5KFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQpAQCAtMTQ3LDEyNDYg
KzExOSwxNDI2IEBAIGlubGluZSBib29sIEhUTUxUb2tlbml6ZXI6OnByb2Nlc3NFbnRpdHkoU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSFRNTFRv
a2VuaXplcjo6Zmx1c2hCdWZmZXJlZEVuZFRhZygpCitib29sIEhUTUxUb2tlbml6ZXI6OmZsdXNo
QnVmZmVyZWRFbmRUYWcoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiB7Ci0gICAgbV90b2tlbi5i
ZWdpbkVuZFRhZyhtX2J1ZmZlcmVkRW5kVGFnTmFtZSk7CisgICAgQVNTRVJUKG1fdG9rZW4tPnR5
cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlciB8fCBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuOjpVbmluaXRpYWxpemVkKTsKKyAgICBzb3VyY2UuYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1i
ZXIoKTsKKyAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhtX2J1ZmZlcmVk
RW5kVGFnTmFtZSk7CiAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKICAgICBtX2Fw
cHJvcHJpYXRlRW5kVGFnTmFtZS5jbGVhcigpOwogICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFy
KCk7Ci19Ci0KLWJvb2wgSFRNTFRva2VuaXplcjo6Y29tbWl0VG9QYXJ0aWFsRW5kVGFnKFNlZ21l
bnRlZFN0cmluZyYgc291cmNlLCBVQ2hhciBjaGFyYWN0ZXIsIFN0YXRlIHN0YXRlKQotewotICAg
IEFTU0VSVChzb3VyY2UuY3VycmVudENoYXIoKSA9PSBjaGFyYWN0ZXIpOwotICAgIGFwcGVuZFRv
VGVtcG9yYXJ5QnVmZmVyKGNoYXJhY3Rlcik7Ci0gICAgc291cmNlLmFkdmFuY2VBbmRVcGRhdGVM
aW5lTnVtYmVyKCk7Ci0KLSAgICBpZiAoaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKSkgewot
ICAgICAgICAvLyBFbWl0IHRoZSBidWZmZXJlZCBjaGFyYWN0ZXIgdG9rZW4uCi0gICAgICAgIC8v
IFRoZSBuZXh0IGNhbGwgdG8gcHJvY2Vzc1Rva2VuIHdpbGwgZmx1c2ggdGhlIGJ1ZmZlcmVkIGVu
ZCB0YWcgYW5kIGNvbnRpbnVlIHBhcnNpbmcgaXQuCi0gICAgICAgIG1fc3RhdGUgPSBzdGF0ZTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgZmx1c2hCdWZmZXJlZEVuZFRhZygp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBIVE1MVG9rZW5pemVyOjpjb21taXRUb0Nv
bXBsZXRlRW5kVGFnKFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQorI2RlZmluZSBGTFVTSF9BTkRf
QURWQU5DRV9UTyhzdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0gSFRNTFRva2VuaXplcjo6
c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGZsdXNo
QnVmZmVyZWRFbmRUYWcoc291cmNlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IHx8ICFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLnBlZWsoc291cmNlKSkgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2MgPSBtX2lucHV0U3RyZWFt
UHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3RlcigpOyAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworYm9vbCBIVE1MVG9rZW5pemVy
OjpmbHVzaEVtaXRBbmRSZXN1bWVJbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2Vu
aXplcjo6U3RhdGUgc3RhdGUpCiB7Ci0gICAgQVNTRVJUKHNvdXJjZS5jdXJyZW50Q2hhcigpID09
ICc+Jyk7Ci0gICAgYXBwZW5kVG9UZW1wb3JhcnlCdWZmZXIoJz4nKTsKLSAgICBzb3VyY2UuYWR2
YW5jZSgpOwotCi0gICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLQotICAgIGlmIChoYXZlQnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbigpKSB7Ci0gICAgICAgIC8vIEVtaXQgdGhlIGNoYXJhY3RlciB0b2tl
biB3ZSBhbHJlYWR5IGhhdmUuCi0gICAgICAgIC8vIFRoZSBuZXh0IGNhbGwgdG8gcHJvY2Vzc1Rv
a2VuIHdpbGwgZmx1c2ggdGhlIGJ1ZmZlcmVkIGVuZCB0YWcgYW5kIGVtaXQgaXQuCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKKyAgICBt
X3N0YXRlID0gc3RhdGU7CisgICAgZmx1c2hCdWZmZXJlZEVuZFRhZyhzb3VyY2UpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxUb2tlbml6ZXI6OnByb2Nlc3NUb2tlbihTZWdtZW50
ZWRTdHJpbmcmIHNvdXJjZSkKK2Jvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRl
ZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogewotICAgIGlmICghbV9idWZmZXJl
ZEVuZFRhZ05hbWUuaXNFbXB0eSgpICYmICFpbkVuZFRhZ0J1ZmZlcmluZ1N0YXRlKCkpIHsKLSAg
ICAgICAgLy8gV2UgYXJlIGJhY2sgaGVyZSBhZnRlciBlbWl0dGluZyBhIGNoYXJhY3RlciB0b2tl
biB0aGF0IGNhbWUganVzdCBiZWZvcmUgYW4gZW5kIHRhZy4KLSAgICAgICAgLy8gVG8gY29udGlu
dWUgcGFyc2luZyB0aGUgZW5kIHRhZyB3ZSBuZWVkIHRvIG1vdmUgdGhlIGJ1ZmZlcmVkIHRhZyBu
YW1lIGludG8gdGhlIHRva2VuLgotICAgICAgICBmbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0KLSAg
ICAgICAgLy8gSWYgd2UgYXJlIGluIHRoZSBkYXRhIHN0YXRlLCB0aGUgZW5kIHRhZyBpcyBhbHJl
YWR5IGNvbXBsZXRlIGFuZCB3ZSBzaG91bGQgZW1pdCBpdAotICAgICAgICAvLyBub3csIG90aGVy
d2lzZSwgd2Ugd2FudCB0byByZXN1bWUgcGFyc2luZyB0aGUgcGFydGlhbCBlbmQgdGFnLgotICAg
ICAgICBpZiAobV9zdGF0ZSA9PSBEYXRhU3RhdGUpCisgICAgLy8gSWYgd2UgaGF2ZSBhIHRva2Vu
IGluIHByb2dyZXNzLCB0aGVuIHdlJ3JlIHN1cHBvc2VkIHRvIGJlIGNhbGxlZCBiYWNrCisgICAg
Ly8gd2l0aCB0aGUgc2FtZSB0b2tlbiBzbyB3ZSBjYW4gZmluaXNoIGl0LgorICAgIEFTU0VSVCgh
bV90b2tlbiB8fCBtX3Rva2VuID09ICZ0b2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
OjpVbmluaXRpYWxpemVkKTsKKyAgICBtX3Rva2VuID0gJnRva2VuOworCisgICAgaWYgKCFtX2J1
ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkgJiYgIWlzRW5kVGFnQnVmZmVyaW5nU3RhdGUobV9z
dGF0ZSkpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGNhbGwgZmx1c2hCdWZmZXJl
ZEVuZFRhZygpLgorICAgICAgICAvLyBXZSBzdGFydGVkIGFuIGVuZCB0YWcgZHVyaW5nIG91ciBs
YXN0IGl0ZXJhdGlvbi4KKyAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWcobV9idWZmZXJlZEVu
ZFRhZ05hbWUpOworICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOworICAgICAg
ICBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZS5jbGVhcigpOworICAgICAgICBtX3RlbXBvcmFyeUJ1
ZmZlci5jbGVhcigpOworICAgICAgICBpZiAobV9zdGF0ZSA9PSBIVE1MVG9rZW5pemVyOjpEYXRh
U3RhdGUpIHsKKyAgICAgICAgICAgIC8vIFdlJ3JlIGJhY2sgaW4gdGhlIGRhdGEgc3RhdGUsIHNv
IHdlIG11c3QgYmUgZG9uZSB3aXRoIHRoZSB0YWcuCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghbV9wcmVwcm9jZXNzb3IucGVlayhzb3VyY2Us
IGlzTnVsbENoYXJhY3RlclNraXBwaW5nU3RhdGUobV9zdGF0ZSkpKQorICAgIGlmIChzb3VyY2Uu
aXNFbXB0eSgpIHx8ICFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLnBlZWsoc291cmNlKSkKICAg
ICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgVUNoYXIgY2hh
cmFjdGVyID0gbV9wcmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7CisgICAgVUNoYXIg
Y2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3RlcigpOwogCi0g
ICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdG9rZW5pemF0aW9uCisgICAgLy8g
U291cmNlOiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3Jr
LyN0b2tlbmlzYXRpb24wCiAgICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0KLSAgICBCRUdJTl9TVEFU
RShEYXRhU3RhdGUpCi0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJyYnKQotICAgICAgICAgICAg
QURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSk7Ci0gICAgICAgIGlmIChj
aGFyYWN0ZXIgPT0gJzwnKSB7Ci0gICAgICAgICAgICBpZiAoaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVy
VG9rZW4oKSkKLSAgICAgICAgICAgICAgICBSRVRVUk5fSU5fQ1VSUkVOVF9TVEFURSh0cnVlKTsK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnT3BlblN0YXRlKTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgSFRNTF9CRUdJTl9TVEFU
RShEYXRhU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICcmJykKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2Ug
aWYgKGNjID09ICc8JykgeworICAgICAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1M
VG9rZW46OkNoYXJhY3RlcikgeworICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBidW5jaCBv
ZiBjaGFyYWN0ZXIgdG9rZW5zIHF1ZXVlZCB1cCB0aGF0IHdlCisgICAgICAgICAgICAgICAgLy8g
YXJlIGVtaXR0aW5nIGxhemlseSBoZXJlLgorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFRhZ09wZW5TdGF0ZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKICAgICAgICAgICAg
IHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIGJ1ZmZlckNoYXJhY3Rlcihj
aGFyYWN0ZXIpOwotICAgICAgICBBRFZBTkNFX1RPKERhdGFTdGF0ZSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhEYXRhU3RhdGUpOworICAgICAgICB9CisgICAgfQogICAgIEVORF9TVEFURSgpCiAK
LSAgICBCRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSkKKyAgICBIVE1M
X0JFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRlKSB7CiAgICAgICAgIGlm
ICghcHJvY2Vzc0VudGl0eShzb3VyY2UpKQotICAgICAgICAgICAgUkVUVVJOX0lOX0NVUlJFTlRf
U1RBVEUoaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKSk7Ci0gICAgICAgIFNXSVRDSF9UTyhE
YXRhU3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2Vu
KCk7CisgICAgICAgIEhUTUxfU1dJVENIX1RPKERhdGFTdGF0ZSk7CisgICAgfQogICAgIEVORF9T
VEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShSQ0RBVEFTdGF0ZSkKLSAgICAgICAgaWYgKGNoYXJh
Y3RlciA9PSAnJicpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUlu
UkNEQVRBU3RhdGUpOwotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICc8JykKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oUkNEQVRBTGVzc1RoYW5TaWduU3RhdGUpOwotICAgICAgICBpZiAoY2hhcmFj
dGVyID09IGtFbmRPZkZpbGVNYXJrZXIpCi0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0
YXRlKTsKLSAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFEVkFO
Q0VfVE8oUkNEQVRBU3RhdGUpOworICAgIEhUTUxfQkVHSU5fU1RBVEUoUkNEQVRBU3RhdGUpIHsK
KyAgICAgICAgaWYgKGNjID09ICcmJykKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDaGFy
YWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwn
KQorICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJDREFUQUxlc3NUaGFuU2lnblN0YXRlKTsK
KyAgICAgICAgZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
YnVmZmVyQ2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQ0RBVEFT
dGF0ZSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NU
QVRFKENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGUpCisgICAgSFRNTF9CRUdJTl9TVEFU
RShDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRlKSB7CiAgICAgICAgIGlmICghcHJvY2Vz
c0VudGl0eShzb3VyY2UpKQotICAgICAgICAgICAgUkVUVVJOX0lOX0NVUlJFTlRfU1RBVEUoaGF2
ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKSk7Ci0gICAgICAgIFNXSVRDSF9UTyhSQ0RBVEFTdGF0
ZSk7Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKFJBV1RFWFRTdGF0ZSkKLSAg
ICAgICAgaWYgKGNoYXJhY3RlciA9PSAnPCcpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RF
WFRMZXNzVGhhblNpZ25TdGF0ZSk7Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0ga0VuZE9mRmls
ZU1hcmtlcikKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBi
dWZmZXJDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKLSAgICAgICAgQURWQU5DRV9UTyhSQVdURVhUU3Rh
dGUpOwotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhU3RhdGUp
Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJzwnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhT
Y3JpcHREYXRhTGVzc1RoYW5TaWduU3RhdGUpOwotICAgICAgICBpZiAoY2hhcmFjdGVyID09IGtF
bmRPZkZpbGVNYXJrZXIpCi0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKLSAg
ICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YVN0YXRlKTsKLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoUExBSU5U
RVhUU3RhdGUpCi0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikKLSAg
ICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBidWZmZXJDaGFyYWN0
ZXIoY2hhcmFjdGVyKTsKLSAgICAgICAgQURWQU5DRV9UTyhQTEFJTlRFWFRTdGF0ZSk7Ci0gICAg
RU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKFRhZ09wZW5TdGF0ZSkKLSAgICAgICAgaWYg
KGNoYXJhY3RlciA9PSAnIScpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKE1hcmt1cERlY2xhcmF0
aW9uT3BlblN0YXRlKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnLycpCi0gICAgICAgICAg
ICBBRFZBTkNFX1RPKEVuZFRhZ09wZW5TdGF0ZSk7Ci0gICAgICAgIGlmIChpc0FTQ0lJQWxwaGEo
Y2hhcmFjdGVyKSkgewotICAgICAgICAgICAgbV90b2tlbi5iZWdpblN0YXJ0VGFnKGNvbnZlcnRB
U0NJSUFscGhhVG9Mb3dlcihjaGFyYWN0ZXIpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFn
TmFtZVN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tl
bigpOworICAgICAgICBIVE1MX1NXSVRDSF9UTyhSQ0RBVEFTdGF0ZSk7CisgICAgfQorICAgIEVO
RF9TVEFURSgpCisKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFJBV1RFWFRTdGF0ZSkgeworICAgICAg
ICBpZiAoY2MgPT0gJzwnKQorICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJBV1RFWFRMZXNz
VGhhblNpZ25TdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIp
CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oUkFXVEVYVFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBpZiAoY2hhcmFjdGVy
ID09ICc/JykgeworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgSFRNTF9CRUdJTl9TVEFU
RShTY3JpcHREYXRhU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICc8JykKKyAgICAgICAgICAg
IEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICBl
bHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRF
bmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBidWZmZXJDaGFy
YWN0ZXIoY2MpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEhUTUxfQkVHSU5fU1RB
VEUoUExBSU5URVhUU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIp
CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICBidWZm
ZXJDaGFyYWN0ZXIoY2MpOworICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUExBSU5URVhUU3RhdGUp
OworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgSFRNTF9CRUdJTl9TVEFURShUYWdPcGVu
U3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICchJykKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09
ICcvJykKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhFbmRUYWdPcGVuU3RhdGUpOworICAg
ICAgICBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5i
ZWdpblN0YXJ0VGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7
CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpblN0YXJ0VGFnKGNjKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc/
JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgLy8gVGhlIHNwZWMg
Y29uc3VtZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGJlZm9yZSBzd2l0Y2hpbmcKICAgICAgICAg
ICAgIC8vIHRvIHRoZSBib2d1cyBjb21tZW50IHN0YXRlLCBidXQgaXQncyBlYXNpZXIgdG8gaW1w
bGVtZW50CiAgICAgICAgICAgICAvLyBpZiB3ZSByZWNvbnN1bWUgdGhlIGN1cnJlbnQgY2hhcmFj
dGVyLgotICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVudFN0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVudFN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIGJ1ZmZlckFTQ0lJ
Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUp
OwogICAgICAgICB9Ci0gICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgYnVmZmVyQVNDSUlD
aGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgfQog
ICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShFbmRUYWdPcGVuU3RhdGUpCi0gICAg
ICAgIGlmIChpc0FTQ0lJQWxwaGEoY2hhcmFjdGVyKSkgewotICAgICAgICAgICAgbV90b2tlbi5i
ZWdpbkVuZFRhZyhjb252ZXJ0QVNDSUlBbHBoYVRvTG93ZXIoY2hhcmFjdGVyKSk7CisgICAgSFRN
TF9CRUdJTl9TVEFURShFbmRUYWdPcGVuU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlVcHBl
cihjYykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKHN0YXRpY19jYXN0PExD
aGFyPih0b0xvd2VyQ2FzZShjYykpKTsKICAgICAgICAgICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdO
YW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnPicpIHsKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlMb3dl
cihjYykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKHN0YXRpY19jYXN0PExD
aGFyPihjYykpOworICAgICAgICAgICAgbV9hcHByb3ByaWF0ZUVuZFRhZ05hbWUuY2xlYXIoKTsK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhEYXRhU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFyYWN0
ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERh
dGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikgewog
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgYnVmZmVyQVNDSUlDaGFyYWN0
ZXIoJzwnKTsKICAgICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCcvJyk7Ci0gICAgICAg
ICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1F
X0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9y
KCk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICBSRUNPTlNVTUVfSU4oQm9n
dXNDb21tZW50U3RhdGUpOworICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RB
VEUoVGFnTmFtZVN0YXRlKQotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNoYXJh
Y3RlcikpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7
Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJy8nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhT
ZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICc+JykK
LSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW5EYXRhU3RhdGUoc291cmNlKTsKLSAg
ICAgICAgaWYgKG1fb3B0aW9ucy51c2VQcmVIVE1MNVBhcnNlclF1aXJrcyAmJiBjaGFyYWN0ZXIg
PT0gJzwnKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbkRhdGFTdGF0ZSgp
OwotICAgICAgICBpZiAoY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwor
ICAgIEhUTUxfQkVHSU5fU1RBVEUoVGFnTmFtZVN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2Vu
aXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJlZm9yZUF0
dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICBl
bHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNv
dXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAobV9vcHRp
b25zLnVzZVByZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNjID09ICc8JykKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUp
OworICAgICAgICBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CisgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb05hbWUodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZp
bGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEhUTUxf
UkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb05hbWUoY2MpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFRh
Z05hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgbV90b2tlbi5hcHBlbmRUb05hbWUodG9B
U0NJSUxvd2VyKGNoYXJhY3RlcikpOwotICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7
CisgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShSQ0RBVEFMZXNzVGhh
blNpZ25TdGF0ZSkKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnLycpIHsKKyAgICBIVE1MX0JF
R0lOX1NUQVRFKFJDREFUQUxlc3NUaGFuU2lnblN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAn
LycpIHsKICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7CiAgICAgICAgICAg
ICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oUkNEQVRBRW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhSQ0RBVEFFbmRUYWdPcGVuU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgYnVmZmVyQVNDSUlDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1F
X0lOKFJDREFUQVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3Rl
cignPCcpOwotICAgICAgICBSRUNPTlNVTUVfSU4oUkNEQVRBU3RhdGUpOworICAgIH0KICAgICBF
TkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoUkNEQVRBRW5kVGFnT3BlblN0YXRlKQotICAg
ICAgICBpZiAoaXNBU0NJSUFscGhhKGNoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIGFwcGVuZFRv
VGVtcG9yYXJ5QnVmZmVyKGNoYXJhY3Rlcik7Ci0gICAgICAgICAgICBhcHBlbmRUb1Bvc3NpYmxl
RW5kVGFnKGNvbnZlcnRBU0NJSUFscGhhVG9Mb3dlcihjaGFyYWN0ZXIpKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKKyAgICBIVE1MX0JFR0lOX1NUQVRF
KFJDREFUQUVuZFRhZ09wZW5TdGF0ZSkgeworICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNjKSkg
eworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFy
PihjYykpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhzdGF0aWNfY2FzdDxMQ2hh
cj4odG9Mb3dlckNhc2UoY2MpKSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUkNEQVRB
RW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7
CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+
KGNjKSk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHN0YXRpY19jYXN0PExDaGFy
PihjYykpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0
ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3Rlcign
PCcpOworICAgICAgICAgICAgYnVmZmVyQVNDSUlDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAg
IEhUTUxfUkVDT05TVU1FX0lOKFJDREFUQVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBidWZm
ZXJBU0NJSUNoYXJhY3RlcignPCcpOwotICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3RlcignLycp
OwotICAgICAgICBSRUNPTlNVTUVfSU4oUkNEQVRBU3RhdGUpOworICAgIH0KICAgICBFTkRfU1RB
VEUoKQogCi0gICAgQkVHSU5fU1RBVEUoUkNEQVRBRW5kVGFnTmFtZVN0YXRlKQotICAgICAgICBp
ZiAoaXNBU0NJSUFscGhhKGNoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIGFwcGVuZFRvVGVtcG9y
YXJ5QnVmZmVyKGNoYXJhY3Rlcik7Ci0gICAgICAgICAgICBhcHBlbmRUb1Bvc3NpYmxlRW5kVGFn
KGNvbnZlcnRBU0NJSUFscGhhVG9Mb3dlcihjaGFyYWN0ZXIpKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNU
b2tlbml6ZXJXaGl0ZXNwYWNlKGNoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIGlmIChpc0FwcHJv
cHJpYXRlRW5kVGFnKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29tbWl0VG9QYXJ0aWFsRW5k
VGFnKHNvdXJjZSwgY2hhcmFjdGVyLCBCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBTV0lUQ0hfVE8oQmVm
b3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlm
IChjaGFyYWN0ZXIgPT0gJy8nKSB7Ci0gICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRh
ZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbW1pdFRvUGFydGlhbEVuZFRhZyhzb3VyY2Us
ICcvJywgU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgU1dJVENIX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdT
dGF0ZSk7CisgICAgSFRNTF9CRUdJTl9TVEFURShSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpIHsKKyAg
ICAgICAgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVm
ZmVyLmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oY2MpKTsKKyAgICAgICAgICAgIGFkZFRvUG9z
c2libGVFbmRUYWcoc3RhdGljX2Nhc3Q8TENoYXI+KHRvTG93ZXJDYXNlKGNjKSkpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNjKSkgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZm
ZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjYykpOworICAgICAgICAgICAgYWRkVG9Qb3Nz
aWJsZUVuZFRhZyhzdGF0aWNfY2FzdDxMQ2hhcj4oY2MpKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fdGVtcG9y
YXJ5QnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oY2MpKTsKKyAgICAgICAgICAgICAg
ICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykgeworICAg
ICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjYykpOwor
ICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0
VGFnU3RhdGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJz4nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkgewor
ICAgICAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nhc3Q8
TENoYXI+KGNjKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbHVzaEVtaXRBbmRSZXN1
bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PSAnPicpIHsK
LSAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGNvbW1pdFRvQ29tcGxldGVFbmRUYWcoc291cmNlKTsKKyAgICAgICAgICAgIGJ1ZmZl
ckFTQ0lJQ2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3Rlcign
LycpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlC
dWZmZXIpOworICAgICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKKyAgICAg
ICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICBIVE1MX1JFQ09O
U1VNRV9JTihSQ0RBVEFTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgYnVmZmVyQVNDSUlDaGFy
YWN0ZXIoJzwnKTsKLSAgICAgICAgYnVmZmVyQVNDSUlDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAg
bV90b2tlbi5hcHBlbmRUb0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7Ci0gICAgICAgIG1f
YnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNs
ZWFyKCk7Ci0gICAgICAgIFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7CisgICAgfQogICAgIEVO
RF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShSQVdURVhUTGVzc1RoYW5TaWduU3RhdGUpCi0g
ICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJy8nKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShSQVdU
RVhUTGVzc1RoYW5TaWduU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICcvJykgewogICAgICAg
ICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKICAgICAgICAgICAgIEFTU0VSVChtX2J1
ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdU
RVhURW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQVdURVhU
RW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlckFT
Q0lJQ2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihSQVdURVhU
U3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCc8Jyk7Ci0g
ICAgICAgIFJFQ09OU1VNRV9JTihSQVdURVhUU3RhdGUpOworICAgIH0KICAgICBFTkRfU1RBVEUo
KQogCi0gICAgQkVHSU5fU1RBVEUoUkFXVEVYVEVuZFRhZ09wZW5TdGF0ZSkKLSAgICAgICAgaWYg
KGlzQVNDSUlBbHBoYShjaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBhcHBlbmRUb1RlbXBvcmFy
eUJ1ZmZlcihjaGFyYWN0ZXIpOwotICAgICAgICAgICAgYXBwZW5kVG9Qb3NzaWJsZUVuZFRhZyhj
b252ZXJ0QVNDSUlBbHBoYVRvTG93ZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgICAgICBBRFZBTkNF
X1RPKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUpOworICAgIEhUTUxfQkVHSU5fU1RBVEUoUkFXVEVY
VEVuZFRhZ09wZW5TdGF0ZSkgeworICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgeworICAg
ICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjYykp
OworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhzdGF0aWNfY2FzdDxMQ2hhcj4odG9M
b3dlckNhc2UoY2MpKSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUkFXVEVYVEVuZFRh
Z05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxvd2VyKGNjKSkgeworICAg
ICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjYykp
OworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhzdGF0aWNfY2FzdDxMQ2hhcj4oY2Mp
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCc8Jyk7
CisgICAgICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3RlcignLycpOworICAgICAgICAgICAgSFRN
TF9SRUNPTlNVTUVfSU4oUkFXVEVYVFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBidWZmZXJB
U0NJSUNoYXJhY3RlcignPCcpOwotICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3RlcignLycpOwot
ICAgICAgICBSRUNPTlNVTUVfSU4oUkFXVEVYVFN0YXRlKTsKKyAgICB9CiAgICAgRU5EX1NUQVRF
KCkKIAotICAgIEJFR0lOX1NUQVRFKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUpCi0gICAgICAgIGlm
IChpc0FTQ0lJQWxwaGEoY2hhcmFjdGVyKSkgewotICAgICAgICAgICAgYXBwZW5kVG9UZW1wb3Jh
cnlCdWZmZXIoY2hhcmFjdGVyKTsKLSAgICAgICAgICAgIGFwcGVuZFRvUG9zc2libGVFbmRUYWco
Y29udmVydEFTQ0lJQWxwaGFUb0xvd2VyKGNoYXJhY3RlcikpOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNU
b2tlbml6ZXJXaGl0ZXNwYWNlKGNoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIGlmIChpc0FwcHJv
cHJpYXRlRW5kVGFnKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29tbWl0VG9QYXJ0aWFsRW5k
VGFnKHNvdXJjZSwgY2hhcmFjdGVyLCBCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBTV0lUQ0hfVE8oQmVm
b3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlm
IChjaGFyYWN0ZXIgPT0gJy8nKSB7Ci0gICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRh
ZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbW1pdFRvUGFydGlhbEVuZFRhZyhzb3VyY2Us
ICcvJywgU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgU1dJVENIX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdT
dGF0ZSk7CisgICAgSFRNTF9CRUdJTl9TVEFURShSQVdURVhURW5kVGFnTmFtZVN0YXRlKSB7Cisg
ICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1
ZmZlci5hcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNjKSk7CisgICAgICAgICAgICBhZGRUb1Bv
c3NpYmxlRW5kVGFnKHN0YXRpY19jYXN0PExDaGFyPih0b0xvd2VyQ2FzZShjYykpKTsKKyAgICAg
ICAgICAgIEhUTUxfQURWQU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIGlmIChpc0FTQ0lJTG93ZXIoY2MpKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1
ZmZlci5hcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNjKSk7CisgICAgICAgICAgICBhZGRUb1Bv
c3NpYmxlRW5kVGFnKHN0YXRpY19jYXN0PExDaGFyPihjYykpOworICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oY2MpKTsKKyAgICAgICAgICAg
ICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykgewor
ICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjYykp
OworICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0
YXJ0VGFnU3RhdGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkg
eworICAgICAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nh
c3Q8TENoYXI+KGNjKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbHVzaEVtaXRBbmRS
ZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PSAnPicp
IHsKLSAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGNvbW1pdFRvQ29tcGxldGVFbmRUYWcoc291cmNlKTsKKyAgICAgICAgICAgIGJ1
ZmZlckFTQ0lJQ2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3Rl
cignLycpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3Jh
cnlCdWZmZXIpOworICAgICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKKyAg
ICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICBIVE1MX1JF
Q09OU1VNRV9JTihSQVdURVhUU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGJ1ZmZlckFTQ0lJ
Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCcvJyk7Ci0gICAg
ICAgIG1fdG9rZW4uYXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwotICAgICAg
ICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZl
ci5jbGVhcigpOwotICAgICAgICBSRUNPTlNVTUVfSU4oUkFXVEVYVFN0YXRlKTsKKyAgICB9CiAg
ICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFMZXNzVGhhblNpZ25T
dGF0ZSkKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnLycpIHsKKyAgICBIVE1MX0JFR0lOX1NU
QVRFKFNjcmlwdERhdGFMZXNzVGhhblNpZ25TdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy8n
KSB7CiAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwogICAgICAgICAgICAg
QVNTRVJUKG1fYnVmZmVyZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFFbmRUYWdPcGVuU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChjaGFyYWN0ZXIgPT0gJyEnKSB7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0
RGF0YUVuZFRhZ09wZW5TdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyEnKSB7CiAg
ICAgICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3RlcignPCcpOwogICAgICAgICAgICAgYnVmZmVy
QVNDSUlDaGFyYWN0ZXIoJyEnKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVz
Y2FwZVN0YXJ0U3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFF
c2NhcGVTdGFydFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlckFT
Q0lJQ2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHRE
YXRhU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCc8Jyk7
Ci0gICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgIH0KICAgICBFTkRf
U1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVuZFRhZ09wZW5TdGF0ZSkKLSAg
ICAgICAgaWYgKGlzQVNDSUlBbHBoYShjaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBhcHBlbmRU
b1RlbXBvcmFyeUJ1ZmZlcihjaGFyYWN0ZXIpOwotICAgICAgICAgICAgYXBwZW5kVG9Qb3NzaWJs
ZUVuZFRhZyhjb252ZXJ0QVNDSUlBbHBoYVRvTG93ZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgICAg
ICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGUpOworICAgIEhUTUxfQkVHSU5f
U1RBVEUoU2NyaXB0RGF0YUVuZFRhZ09wZW5TdGF0ZSkgeworICAgICAgICBpZiAoaXNBU0NJSVVw
cGVyKGNjKSkgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHN0YXRpY19j
YXN0PExDaGFyPihjYykpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhzdGF0aWNf
Y2FzdDxMQ2hhcj4odG9Mb3dlckNhc2UoY2MpKSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJ
SUxvd2VyKGNjKSkgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHN0YXRp
Y19jYXN0PExDaGFyPihjYykpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhzdGF0
aWNfY2FzdDxMQ2hhcj4oY2MpKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHRE
YXRhRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZl
ckFTQ0lJQ2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3Rlcign
LycpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKICAg
ICAgICAgfQotICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3RlcignPCcpOwotICAgICAgICBidWZm
ZXJBU0NJSUNoYXJhY3RlcignLycpOwotICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0
YXRlKTsKKyAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERh
dGFFbmRUYWdOYW1lU3RhdGUpCi0gICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoY2hhcmFjdGVyKSkg
ewotICAgICAgICAgICAgYXBwZW5kVG9UZW1wb3JhcnlCdWZmZXIoY2hhcmFjdGVyKTsKLSAgICAg
ICAgICAgIGFwcGVuZFRvUG9zc2libGVFbmRUYWcoY29udmVydEFTQ0lJQWxwaGFUb0xvd2VyKGNo
YXJhY3RlcikpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0
YXRlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNoYXJh
Y3RlcikpIHsKLSAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoY29tbWl0VG9QYXJ0aWFsRW5kVGFnKHNvdXJjZSwgY2hhcmFjdGVyLCBC
ZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgICAgICBTV0lUQ0hfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gJy8nKSB7Ci0g
ICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGNvbW1pdFRvUGFydGlhbEVuZFRhZyhzb3VyY2UsICcvJywgU2VsZkNsb3NpbmdTdGFydFRh
Z1N0YXRlKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAg
ICAgU1dJVENIX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgSFRNTF9CRUdJTl9T
VEFURShTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlKSB7CisgICAgICAgIGlmIChpc0FTQ0lJVXBw
ZXIoY2MpKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nh
c3Q8TENoYXI+KGNjKSk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHN0YXRpY19j
YXN0PExDaGFyPih0b0xvd2VyQ2FzZShjYykpKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9U
TyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJ
TG93ZXIoY2MpKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoc3RhdGlj
X2Nhc3Q8TENoYXI+KGNjKSk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHN0YXRp
Y19jYXN0PExDaGFyPihjYykpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERh
dGFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGlz
VG9rZW5pemVyV2hpdGVzcGFjZShjYykpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3By
aWF0ZUVuZFRhZygpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFw
cGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oY2MpKTsKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hf
QU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykgeworICAgICAgICAgICAgICAg
IGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV90ZW1w
b3JhcnlCdWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjYykpOworICAgICAgICAgICAg
ICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkgeworICAgICAgICAgICAg
ICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNjKSk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbHVzaEVtaXRBbmRSZXN1bWVJbihzb3VyY2Us
IEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PSAnPicpIHsKLSAgICAgICAgICAg
IGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1p
dFRvQ29tcGxldGVFbmRUYWcoc291cmNlKTsKKyAgICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFj
dGVyKCc8Jyk7CisgICAgICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3RlcignLycpOworICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOworICAg
ICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKKyAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihTY3Jp
cHREYXRhU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCc8
Jyk7Ci0gICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgIG1fdG9rZW4u
YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwotICAgICAgICBtX2J1ZmZlcmVk
RW5kVGFnTmFtZS5jbGVhcigpOwotICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwot
ICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICB9CiAgICAgRU5EX1NU
QVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVTdGFydFN0YXRlKQotICAg
ICAgICBpZiAoY2hhcmFjdGVyID09ICctJykgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0
RGF0YUVzY2FwZVN0YXJ0U3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICctJykgewogICAgICAg
ICAgICAgYnVmZmVyQVNDSUlDaGFyYWN0ZXIoJy0nKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
U2NyaXB0RGF0YUVzY2FwZVN0YXJ0RGFzaFN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUpOwogICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgICAgICAgICAgSFRN
TF9SRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICB9CiAgICAgRU5EX1NUQVRFKCkK
IAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVTdGFydERhc2hTdGF0ZSkKLSAgICAg
ICAgaWYgKGNoYXJhY3RlciA9PSAnLScpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERh
dGFFc2NhcGVTdGFydERhc2hTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CiAgICAg
ICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3RlcignLScpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICAgICAgSFRNTF9BRFZB
TkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAgICAgICBI
VE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgIH0KICAgICBFTkRfU1RBVEUo
KQogCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSkKLSAgICAgICAgaWYg
KGNoYXJhY3RlciA9PSAnLScpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2Nh
cGVkU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICctJykgewogICAgICAgICAgICAgYnVmZmVy
QVNDSUlDaGFyYWN0ZXIoJy0nKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVz
Y2FwZWREYXNoU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJzwn
KQotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0
YXRlKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUpOworICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhT
Y3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2Mg
PT0ga0VuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAg
ICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VN
RV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYnVmZmVyQ2hh
cmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBl
ZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2hhcmFjdGVyKTsK
LSAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICB9CiAgICAg
RU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkRGFzaFN0YXRl
KQotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICctJykgeworICAgIEhUTUxfQkVHSU5fU1RBVEUo
U2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICctJykgewog
ICAgICAgICAgICAgYnVmZmVyQVNDSUlDaGFyYWN0ZXIoJy0nKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoY2hhcmFjdGVyID09ICc8JykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0ga0Vu
ZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFF
c2NhcGVkRGFzaERhc2hTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKQorICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3Rh
dGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
KyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGJ1
ZmZlckNoYXJhY3RlcihjaGFyYWN0ZXIpOwotICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFF
c2NhcGVkU3RhdGUpOworICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUo
U2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlKQotICAgICAgICBpZiAoY2hhcmFjdGVyID09
ICctJykgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0
YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnLScpIHsKICAgICAgICAgICAgIGJ1ZmZlckFTQ0lJ
Q2hhcmFjdGVyKCctJyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVk
RGFzaERhc2hTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnPCcp
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3Rh
dGUpOwotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICc+JykgeworICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJzwnKQorICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFF
c2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsK
ICAgICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCc+Jyk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNoYXJhY3Rl
ciA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2Ny
aXB0RGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2Vy
KSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4o
RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOworICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9
Ci0gICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjaGFyYWN0ZXIpOwotICAgICAgICBBRFZBTkNFX1RP
KFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAg
QkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSkKLSAgICAgICAg
aWYgKGNoYXJhY3RlciA9PSAnLycpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFF
c2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICcvJykgewogICAg
ICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKICAgICAgICAgICAgIEFTU0VSVCht
X2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhT
Y3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KGlzQVNDSUlBbHBoYShjaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
U2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGlz
QVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCc8Jyk7
Ci0gICAgICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3RlcihjaGFyYWN0ZXIpOworICAgICAgICAg
ICAgYnVmZmVyQVNDSUlDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZm
ZXIuY2xlYXIoKTsKLSAgICAgICAgICAgIGFwcGVuZFRvVGVtcG9yYXJ5QnVmZmVyKGNvbnZlcnRB
U0NJSUFscGhhVG9Mb3dlcihjaGFyYWN0ZXIpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOworICAgICAgICAgICAgbV90ZW1wb3JhcnlC
dWZmZXIuYXBwZW5kKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOworICAgICAgICB9IGVsc2UgaWYg
KGlzQVNDSUlMb3dlcihjYykpIHsKKyAgICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCc8
Jyk7CisgICAgICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBt
X3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIu
YXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjYykpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBIVE1M
X1JFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAg
ICBidWZmZXJBU0NJSUNoYXJhY3RlcignPCcpOwotICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0
RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9T
VEFURShTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZSkKLSAgICAgICAgaWYgKGlzQVND
SUlBbHBoYShjaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICBhcHBlbmRUb1RlbXBvcmFyeUJ1ZmZl
cihjaGFyYWN0ZXIpOwotICAgICAgICAgICAgYXBwZW5kVG9Qb3NzaWJsZUVuZFRhZyhjb252ZXJ0
QVNDSUlBbHBoYVRvTG93ZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNj
cmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNj
cmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlKSB7CisgICAgICAgIGlmIChpc0FTQ0lJVXBw
ZXIoY2MpKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nh
c3Q8TENoYXI+KGNjKSk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHN0YXRpY19j
YXN0PExDaGFyPih0b0xvd2VyQ2FzZShjYykpKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9U
TyhTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
aXNBU0NJSUxvd2VyKGNjKSkgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5k
KHN0YXRpY19jYXN0PExDaGFyPihjYykpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRh
ZyhzdGF0aWNfY2FzdDxMQ2hhcj4oY2MpKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhT
Y3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3RlcignPCcpOworICAgICAgICAgICAgYnVmZmVyQVND
SUlDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKFNjcmlwdERh
dGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVy
KCc8Jyk7Ci0gICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgIFJFQ09O
U1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICB9CiAgICAgRU5EX1NUQVRFKCkK
IAotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKQotICAg
ICAgICBpZiAoaXNBU0NJSUFscGhhKGNoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIGFwcGVuZFRv
VGVtcG9yYXJ5QnVmZmVyKGNoYXJhY3Rlcik7Ci0gICAgICAgICAgICBhcHBlbmRUb1Bvc3NpYmxl
RW5kVGFnKGNvbnZlcnRBU0NJSUFscGhhVG9Mb3dlcihjaGFyYWN0ZXIpKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2hhcmFjdGVyKSkgewotICAgICAg
ICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkgewotICAgICAgICAgICAgICAgIGlmIChj
b21taXRUb1BhcnRpYWxFbmRUYWcoc291cmNlLCBjaGFyYWN0ZXIsIEJlZm9yZUF0dHJpYnV0ZU5h
bWVTdGF0ZSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
ICAgIFNXSVRDSF9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PSAnLycpIHsKLSAgICAgICAgICAgIGlmIChp
c0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29tbWl0VG9QYXJ0
aWFsRW5kVGFnKHNvdXJjZSwgJy8nLCBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBTV0lUQ0hfVE8oU2Vs
ZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNjcmlwdERhdGFF
c2NhcGVkRW5kVGFnTmFtZVN0YXRlKSB7CisgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7
CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+
KGNjKSk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHN0YXRpY19jYXN0PExDaGFy
Pih0b0xvd2VyQ2FzZShjYykpKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHRE
YXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUxv
d2VyKGNjKSkgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHN0YXRpY19j
YXN0PExDaGFyPihjYykpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhzdGF0aWNf
Y2FzdDxMQ2hhcj4oY2MpKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRh
RXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
ZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgeworICAgICAgICAgICAgICAgIGlmIChpc0Fw
cHJvcHJpYXRlRW5kVGFnKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZm
ZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjYykpOworICAgICAgICAgICAgICAgICAgICBG
TFVTSF9BTkRfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkgeworICAgICAgICAgICAgICAgICAgICBt
X3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNjKSk7CisgICAgICAg
ICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0
ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicp
IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7CisgICAgICAg
ICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4o
Y2MpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsdXNoRW1pdEFuZFJlc3VtZUluKHNv
dXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09ICc+JykgewotICAgICAg
ICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
Y29tbWl0VG9Db21wbGV0ZUVuZFRhZyhzb3VyY2UpOworICAgICAgICAgICAgYnVmZmVyQVNDSUlD
aGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCcvJyk7Cisg
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7
CisgICAgICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOworICAgICAgICAgICAg
bV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lO
KFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGJ1ZmZlckFTQ0lJ
Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCcvJyk7Ci0gICAg
ICAgIG1fdG9rZW4uYXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwotICAgICAg
ICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZl
ci5jbGVhcigpOwotICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7
CisgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91
YmxlRXNjYXBlU3RhcnRTdGF0ZSkKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShj
aGFyYWN0ZXIpIHx8IGNoYXJhY3RlciA9PSAnLycgfHwgY2hhcmFjdGVyID09ICc+JykgewotICAg
ICAgICAgICAgYnVmZmVyQVNDSUlDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKLSAgICAgICAgICAgIGlm
ICh0ZW1wb3JhcnlCdWZmZXJJcygic2NyaXB0IikpCi0gICAgICAgICAgICAgICAgQURWQU5DRV9U
TyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNj
cmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXpl
cldoaXRlc3BhY2UoY2MpIHx8IGNjID09ICcvJyB8fCBjYyA9PSAnPicpIHsKKyAgICAgICAgICAg
IGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIGlmICh0ZW1wb3JhcnlCdWZm
ZXJJcyhzY3JpcHRUYWcubG9jYWxOYW1lKCkpKQorICAgICAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoY2hhcmFjdGVyKSkgewotICAgICAgICAgICAg
YnVmZmVyQVNDSUlDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKLSAgICAgICAgICAgIGFwcGVuZFRvVGVt
cG9yYXJ5QnVmZmVyKGNvbnZlcnRBU0NJSUFscGhhVG9Mb3dlcihjaGFyYWN0ZXIpKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOwotICAg
ICAgICB9Ci0gICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAg
ICAgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgeworICAgICAgICAgICAgYnVmZmVy
QVNDSUlDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5k
KHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0
YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlMb3dl
cihjYykpIHsKKyAgICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKGNjKTsKKyAgICAgICAg
ICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oY2MpKTsKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0
ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oU2NyaXB0
RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9T
VEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKQotICAgICAgICBpZiAoY2hhcmFjdGVy
ID09ICctJykgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRT
dGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAgICBidWZmZXJBU0NJ
SUNoYXJhY3RlcignLScpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91Ymxl
RXNjYXBlZERhc2hTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAn
PCcpIHsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBl
ZERhc2hTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CiAgICAgICAgICAg
ICBidWZmZXJBU0NJSUNoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3Jp
cHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBw
YXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAg
ICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGJ1
ZmZlckNoYXJhY3RlcihjaGFyYWN0ZXIpOwotICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVkU3RhdGUpOworICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5f
U1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoU3RhdGUpCi0gICAgICAgIGlmIChjaGFy
YWN0ZXIgPT0gJy0nKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNj
YXBlZERhc2hTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAgICBi
dWZmZXJBU0NJSUNoYXJhY3RlcignLScpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChj
aGFyYWN0ZXIgPT0gJzwnKSB7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0
YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAn
PCcpIHsKICAgICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAg
ICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgewor
ICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1Ro
YW5TaWduU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIp
IHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihE
YXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7CisgICAgICAg
ICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFEVkFO
Q0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CisgICAgfQogICAgIEVORF9TVEFU
RSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3Rh
dGUpCi0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJy0nKSB7CisgICAgSFRNTF9CRUdJTl9TVEFU
RShTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpIHsKKyAgICAgICAgaWYgKGNj
ID09ICctJykgewogICAgICAgICAgICAgYnVmZmVyQVNDSUlDaGFyYWN0ZXIoJy0nKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRlKTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICc8JykgeworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CiAgICAgICAgICAgICBidWZmZXJBU0NJSUNo
YXJhY3RlcignPCcpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNj
YXBlZExlc3NUaGFuU2lnblN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2hhcmFjdGVy
ID09ICc+JykgeworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVF
c2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykg
ewogICAgICAgICAgICAgYnVmZmVyQVNDSUlDaGFyYWN0ZXIoJz4nKTsKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oU2NyaXB0RGF0YVN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2hhcmFj
dGVyID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhT
Y3JpcHREYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJr
ZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihEYXRhU3RhdGUpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFE
VkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CisgICAgfQogICAgIEVORF9T
VEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFu
U2lnblN0YXRlKQotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICcvJykgeworICAgIEhUTUxfQkVH
SU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSkgeworICAg
ICAgICBpZiAoY2MgPT0gJy8nKSB7CiAgICAgICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3Rlcign
LycpOwogICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKTsKLSAgICAgICAgfQot
ICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihTY3JpcHREYXRh
RG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lO
X1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmRTdGF0ZSkKLSAgICAgICAgaWYgKGlzVG9r
ZW5pemVyV2hpdGVzcGFjZShjaGFyYWN0ZXIpIHx8IGNoYXJhY3RlciA9PSAnLycgfHwgY2hhcmFj
dGVyID09ICc+JykgewotICAgICAgICAgICAgYnVmZmVyQVNDSUlDaGFyYWN0ZXIoY2hhcmFjdGVy
KTsKLSAgICAgICAgICAgIGlmICh0ZW1wb3JhcnlCdWZmZXJJcygic2NyaXB0IikpCi0gICAgICAg
ICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICBIVE1MX0JF
R0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmRTdGF0ZSkgeworICAgICAgICBpZiAo
aXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSB8fCBjYyA9PSAnLycgfHwgY2MgPT0gJz4nKSB7Cisg
ICAgICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBpZiAodGVt
cG9yYXJ5QnVmZmVySXMoc2NyaXB0VGFnLmxvY2FsTmFtZSgpKSkKKyAgICAgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRl
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNBU0NJSUFscGhhKGNoYXJhY3RlcikpIHsKLSAg
ICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKGNoYXJhY3Rlcik7Ci0gICAgICAgICAgICBh
cHBlbmRUb1RlbXBvcmFyeUJ1ZmZlcihjb252ZXJ0QVNDSUlBbHBoYVRvTG93ZXIoY2hhcmFjdGVy
KSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmRTdGF0
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFEb3VibGVFc2Nh
cGVkU3RhdGUpOworICAgICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91
YmxlRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7
CisgICAgICAgICAgICBidWZmZXJBU0NJSUNoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBtX3Rl
bXBvcmFyeUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOworICAgICAgICB9IGVs
c2UgaWYgKGlzQVNDSUlMb3dlcihjYykpIHsKKyAgICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFj
dGVyKGNjKTsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChzdGF0aWNfY2Fz
dDxMQ2hhcj4oY2MpKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRG91
YmxlRXNjYXBlRW5kU3RhdGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIEhUTUxfUkVD
T05TVU1FX0lOKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOworICAgIH0KICAgICBFTkRf
U1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKQotICAg
ICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNoYXJhY3RlcikpCi0gICAgICAgICAgICBB
RFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7Ci0gICAgICAgIGlmIChjaGFyYWN0
ZXIgPT0gJy8nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3Rh
dGUpOwotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVzdW1lSW5EYXRhU3RhdGUoc291cmNlKTsKLSAgICAgICAgaWYgKG1fb3B0aW9ucy51
c2VQcmVIVE1MNVBhcnNlclF1aXJrcyAmJiBjaGFyYWN0ZXIgPT0gJzwnKQotICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbkRhdGFTdGF0ZSgpOwotICAgICAgICBpZiAoY2hhcmFj
dGVyID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAg
ICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChjaGFyYWN0ZXIgPT0gJyInIHx8IGNoYXJhY3RlciA9PSAnXCcnIHx8IGNoYXJhY3RlciA9PSAn
PCcgfHwgY2hhcmFjdGVyID09ICc9JykKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAg
ICAgbV90b2tlbi5iZWdpbkF0dHJpYnV0ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3Vt
ZWQoKSk7Ci0gICAgICAgIG1fdG9rZW4uYXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRvQVNDSUlMb3dl
cihjaGFyYWN0ZXIpKTsKLSAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwot
ICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShBdHRyaWJ1dGVOYW1lU3RhdGUpCi0g
ICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2hhcmFjdGVyKSkKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICBpZiAoY2hhcmFj
dGVyID09ICcvJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0
YXRlKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnPScpCi0gICAgICAgICAgICBBRFZBTkNF
X1RPKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpOwotICAgICAgICBpZiAoY2hhcmFjdGVyID09
ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW5EYXRhU3RhdGUoc291cmNl
KTsKLSAgICAgICAgaWYgKG1fb3B0aW9ucy51c2VQcmVIVE1MNVBhcnNlclF1aXJrcyAmJiBjaGFy
YWN0ZXIgPT0gJzwnKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbkRhdGFT
dGF0ZSgpOwotICAgICAgICBpZiAoY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKLSAg
ICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3Rh
dGUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJyInIHx8IGNoYXJhY3Rl
ciA9PSAnXCcnIHx8IGNoYXJhY3RlciA9PSAnPCcgfHwgY2hhcmFjdGVyID09ICc9JykKLSAgICAg
ICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgbV90b2tlbi5hcHBlbmRUb0F0dHJpYnV0ZU5h
bWUodG9BU0NJSUxvd2VyKGNoYXJhY3RlcikpOwotICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0
ZU5hbWVTdGF0ZSk7Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKEFmdGVyQXR0
cmlidXRlTmFtZVN0YXRlKQotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNoYXJh
Y3RlcikpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlKTsK
LSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnLycpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNl
bGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJz0nKQot
ICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKLSAgICAg
ICAgaWYgKGNoYXJhY3RlciA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3Vt
ZUluRGF0YVN0YXRlKHNvdXJjZSk7Ci0gICAgICAgIGlmIChtX29wdGlvbnMudXNlUHJlSFRNTDVQ
YXJzZXJRdWlya3MgJiYgY2hhcmFjdGVyID09ICc8JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVjb25zdW1lSW5EYXRhU3RhdGUoKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBrRW5k
T2ZGaWxlTWFya2VyKSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBS
RUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEJlZm9yZUF0dHJp
YnV0ZU5hbWVTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkK
KyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwor
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
U2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQor
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXI6
OkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKG1fb3B0aW9ucy51c2VQcmVIVE1MNVBhcnNl
clF1aXJrcyAmJiBjYyA9PSAnPCcpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3Vt
ZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
aXNBU0NJSVVwcGVyKGNjKSkgeworICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRl
KCk7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJl
ck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9B
dHRyaWJ1dGVOYW1lKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBrRW5kT2ZG
aWxlTWFya2VyKSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICBIVE1M
X1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBjYyA9PSAnPScpCisg
ICAgICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3
QXR0cmlidXRlKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZU5hbWUoc291
cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNjKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhB
dHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0g
JyInIHx8IGNoYXJhY3RlciA9PSAnXCcnIHx8IGNoYXJhY3RlciA9PSAnPCcpCi0gICAgICAgICAg
ICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIG1fdG9rZW4uYmVnaW5BdHRyaWJ1dGUoc291cmNlLm51
bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwotICAgICAgICBtX3Rva2VuLmFwcGVuZFRvQXR0
cmlidXRlTmFtZSh0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgIEFEVkFOQ0VfVE8o
QXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lO
X1NUQVRFKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpCi0gICAgICAgIGlmIChpc1Rva2VuaXpl
cldoaXRlc3BhY2UoY2hhcmFjdGVyKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0
cmlidXRlVmFsdWVTdGF0ZSk7Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJyInKQotICAgICAg
ICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsKLSAgICAg
ICAgaWYgKGNoYXJhY3RlciA9PSAnJicpCi0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oQXR0cmli
dXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnXCcnKQot
ICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsK
LSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnPicpIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW5EYXRhU3RhdGUoc291cmNlKTsK
KyAgICBIVE1MX0JFR0lOX1NUQVRFKEF0dHJpYnV0ZU5hbWVTdGF0ZSkgeworICAgICAgICBpZiAo
aXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgeworICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0
cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CisgICAgICAg
ICAgICBIVE1MX0FEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9
IGVsc2UgaWYgKGNjID09ICcvJykgeworICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRl
TmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPScpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZU5hbWUo
c291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICc+JykgeworICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShzb3Vy
Y2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CisgICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIGlmIChtX29wdGlvbnMudXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgJiYgY2MgPT0gJzwn
KSB7CisgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJP
ZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25z
dW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2Ug
aWYgKGlzQVNDSUlVcHBlcihjYykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0
cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmls
ZU1hcmtlcikgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tl
bi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7
CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8
JyB8fCBjYyA9PSAnPScpCisgICAgICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNjKTsKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChj
aGFyYWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgewotICAgICAgICAgICAgcGFyc2VFcnJvcigp
OwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgfQorICAgIEVORF9T
VEFURSgpCisKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlKSB7
CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJy8nKQorICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRU
YWdTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc9JykKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhU
TUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKG1fb3B0aW9ucy51c2VQ
cmVIVE1MNVBhcnNlclF1aXJrcyAmJiBjYyA9PSAnPCcpCisgICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAg
ICAgZWxzZSBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgeworICAgICAgICAgICAgbV90b2tlbi0+YWRk
TmV3QXR0cmlidXRlKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZU5hbWUo
c291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAg
ICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JykKKyAg
ICAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5hZGROZXdB
dHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luQXR0cmlidXRlTmFtZShzb3Vy
Y2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CisgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2MpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEF0
dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAn
PCcgfHwgY2hhcmFjdGVyID09ICc9JyB8fCBjaGFyYWN0ZXIgPT0gJ2AnKQotICAgICAgICAgICAg
cGFyc2VFcnJvcigpOwotICAgICAgICBtX3Rva2VuLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2hh
cmFjdGVyKTsKLSAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUp
OworICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQXR0cmlidXRlVmFs
dWVEb3VibGVRdW90ZWRTdGF0ZSkKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnIicpIHsKLSAg
ICAgICAgICAgIG1fdG9rZW4uZW5kQXR0cmlidXRlKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnND
b25zdW1lZCgpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1
b3RlZFN0YXRlKTsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3Rh
dGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgIGVs
c2UgaWYgKGNjID09ICciJykgeworICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5BdHRyaWJ1dGVW
YWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSArIDEpOworICAgICAgICAg
ICAgSFRNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpOworICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICcmJykgeworICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5B
dHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CisgICAg
ICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJl
Z2luQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkgKyAx
KTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3Rl
ZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBI
VE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRP
ZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEhU
TUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAoY2MgPT0gJzwnIHx8IGNjID09ICc9JyB8fCBjYyA9PSAnYCcpCisgICAgICAgICAgICAg
ICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5BdHRyaWJ1dGVWYWx1
ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CisgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGlm
IChjaGFyYWN0ZXIgPT0gJyYnKSB7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBIVE1M
X0JFR0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpIHsKKyAgICAgICAg
aWYgKGNjID09ICciJykgeworICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlVmFsdWUo
c291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJyYnKSB7CiAgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFj
dGVyID0gJyInOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0
dHJpYnV0ZVZhbHVlU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0g
a0VuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENoYXJhY3Rl
clJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0ga0VuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAg
ICAgICAgbV90b2tlbi5lbmRBdHRyaWJ1dGUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1
bWVkKCkpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAg
ICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29u
c3VtZWQoKSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1
ZShjYyk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVEb3VibGVR
dW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgbV90b2tlbi5hcHBlbmRUb0F0dHJpYnV0
ZVZhbHVlKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVEb3Vi
bGVRdW90ZWRTdGF0ZSk7CisgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFU
RShBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKQotICAgICAgICBpZiAoY2hhcmFjdGVy
ID09ICdcJycpIHsKLSAgICAgICAgICAgIG1fdG9rZW4uZW5kQXR0cmlidXRlKHNvdXJjZS5udW1i
ZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJB
dHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2hhcmFj
dGVyID09ICcmJykgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQXR0cmlidXRlVmFsdWVTaW5nbGVR
dW90ZWRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJ1wnJykgeworICAgICAgICAgICAgbV90
b2tlbi0+ZW5kQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVk
KCkpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlVmFsdWVRdW90
ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyYnKSB7CiAgICAgICAgICAgICBt
X2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJ1wnJzsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAg
IEhUTUxfQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUp
OworICAgICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9rZW4uZW5kQXR0cmlidXRlKHNvdXJj
ZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihEYXRhU3RhdGUpOworICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlVmFsdWUoc291
cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAgICAgSFRNTF9SRUNP
TlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAg
IG1fdG9rZW4uYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjaGFyYWN0ZXIpOwotICAgICAgICBBRFZB
TkNFX1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOworICAgIH0KICAgICBFTkRf
U1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKQot
ICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNoYXJhY3RlcikpIHsKLSAgICAgICAg
ICAgIG1fdG9rZW4uZW5kQXR0cmlidXRlKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1l
ZCgpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICcmJykgeworICAgIEhUTUxfQkVH
SU5fU1RBVEUoQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rv
a2VuaXplcldoaXRlc3BhY2UoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1
dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnJicpIHsKICAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFy
YWN0ZXIgPSAnPic7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUlu
QXR0cmlidXRlVmFsdWVTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNoYXJhY3RlciA9
PSAnPicpIHsKLSAgICAgICAgICAgIG1fdG9rZW4uZW5kQXR0cmlidXRlKHNvdXJjZS5udW1iZXJP
ZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1l
SW5EYXRhU3RhdGUoc291cmNlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2hhcmFjdGVyID09
IGtFbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgIG1fdG9rZW4uZW5kQXR0cmlidXRlKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1l
ZCgpKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5l
bmRBdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6
RGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7
CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRy
aWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CisgICAgICAg
ICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBjYyA9
PSAnPScgfHwgY2MgPT0gJ2AnKQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnIicgfHwgY2hhcmFjdGVyID09ICdcJycgfHwgY2hh
cmFjdGVyID09ICc8JyB8fCBjaGFyYWN0ZXIgPT0gJz0nIHx8IGNoYXJhY3RlciA9PSAnYCcpCi0g
ICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIG1fdG9rZW4uYXBwZW5kVG9BdHRyaWJ1
dGVWYWx1ZShjaGFyYWN0ZXIpOwotICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlVW5x
dW90ZWRTdGF0ZSk7CisgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShD
aGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpCisgICAgSFRNTF9CRUdJTl9T
VEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpIHsKICAgICAgICAg
Ym9vbCBub3RFbm91Z2hDaGFyYWN0ZXJzID0gZmFsc2U7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
ZGVjb2RlZEVudGl0eTsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gY29uc3VtZUhUTUxFbnRpdHko
c291cmNlLCBkZWNvZGVkRW50aXR5LCBub3RFbm91Z2hDaGFyYWN0ZXJzLCBtX2FkZGl0aW9uYWxB
bGxvd2VkQ2hhcmFjdGVyKTsKICAgICAgICAgaWYgKG5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAg
ICAgICAgICBSRVRVUk5fSU5fQ1VSUkVOVF9TVEFURShoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tl
bigpKTsKKyAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwog
ICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgICAgIEFTU0VSVChkZWNvZGVkRW50aXR5
LmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBtX3Rva2VuLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUo
JyYnKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoJyYnKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBk
ZWNvZGVkRW50aXR5Lmxlbmd0aCgpOyArK2kpCi0gICAgICAgICAgICAgICAgbV90b2tlbi5hcHBl
bmRUb0F0dHJpYnV0ZVZhbHVlKGRlY29kZWRFbnRpdHlbaV0pOworICAgICAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoZGVjb2RlZEVudGl0eVtpXSk7CiAgICAgICAg
IH0KICAgICAgICAgLy8gV2UncmUgc3VwcG9zZWQgdG8gc3dpdGNoIGJhY2sgdG8gdGhlIGF0dHJp
YnV0ZSB2YWx1ZSBzdGF0ZSB0aGF0CiAgICAgICAgIC8vIHdlIHdlcmUgaW4gd2hlbiB3ZSB3ZXJl
IHN3aXRjaGVkIGludG8gdGhpcyBzdGF0ZS4gUmF0aGVyIHRoYW4KICAgICAgICAgLy8ga2VlcGlu
ZyB0cmFjayBvZiB0aGlzIGV4cGxpY3RseSwgd2Ugb2JzZXJ2ZSB0aGF0IHRoZSBwcmV2aW91cwog
ICAgICAgICAvLyBzdGF0ZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBtX2FkZGl0aW9uYWxBbGxvd2Vk
Q2hhcmFjdGVyLgogICAgICAgICBpZiAobV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAn
IicpCi0gICAgICAgICAgICBTV0lUQ0hfVE8oQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0
ZSk7Ci0gICAgICAgIGlmIChtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09ICdcJycpCi0g
ICAgICAgICAgICBTV0lUQ0hfVE8oQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSk7Ci0g
ICAgICAgIEFTU0VSVChtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09ICc+Jyk7Ci0gICAg
ICAgIFNXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUpOwotICAgIEVORF9TVEFU
RSgpCi0KLSAgICBCRUdJTl9TVEFURShBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpCi0g
ICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2hhcmFjdGVyKSkKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgaWYgKGNoYXJh
Y3RlciA9PSAnLycpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdT
dGF0ZSk7Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZXN1bWVJbkRhdGFTdGF0ZShzb3VyY2UpOwotICAgICAgICBpZiAobV9vcHRpb25z
LnVzZVByZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNoYXJhY3RlciA9PSAnPCcpCi0gICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluRGF0YVN0YXRlKCk7Ci0gICAgICAgIGlmIChjaGFy
YWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cGFyc2VFcnJvcigpOwotICAgICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0
YXRlKTsKKyAgICAgICAgICAgIEhUTUxfU1dJVENIX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVv
dGVkU3RhdGUpOworICAgICAgICBlbHNlIGlmIChtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVy
ID09ICdcJycpCisgICAgICAgICAgICBIVE1MX1NXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmds
ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAobV9hZGRpdGlvbmFsQWxsb3dlZENoYXJh
Y3RlciA9PSAnPicpCisgICAgICAgICAgICBIVE1MX1NXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZVVu
cXVvdGVkU3RhdGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKFNlbGZDbG9z
aW5nU3RhcnRUYWdTdGF0ZSkKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnPicpIHsKLSAgICAg
ICAgICAgIG1fdG9rZW4uc2V0U2VsZkNsb3NpbmcoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVzdW1lSW5EYXRhU3RhdGUoc291cmNlKTsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEFmdGVy
QXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVO
YW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhU
TUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKG1fb3B0aW9ucy51c2VQ
cmVIVE1MNVBhcnNlclF1aXJrcyAmJiBjYyA9PSAnPCcpCisgICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAg
ICAgZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgcGFyc2VF
cnJvcigpOworICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEhUTUxf
UkVDT05TVU1FX0lOKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKGNoYXJhY3RlciA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CisgICAgfQorICAgIEVORF9T
VEFURSgpCisKKyAgICBIVE1MX0JFR0lOX1NUQVRFKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSkg
eworICAgICAgICBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRTZWxm
Q2xvc2luZygpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhU
TUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9m
RmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVD
T05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRh
U3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAg
ICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKICAg
ICAgICAgfQotICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIFJFQ09OU1VNRV9JTihCZWZv
cmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVH
SU5fU1RBVEUoQm9ndXNDb21tZW50U3RhdGUpCi0gICAgICAgIG1fdG9rZW4uYmVnaW5Db21tZW50
KCk7Ci0gICAgICAgIFJFQ09OU1VNRV9JTihDb250aW51ZUJvZ3VzQ29tbWVudFN0YXRlKTsKKyAg
ICBIVE1MX0JFR0lOX1NUQVRFKEJvZ3VzQ29tbWVudFN0YXRlKSB7CisgICAgICAgIG1fdG9rZW4t
PmJlZ2luQ29tbWVudCgpOworICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihDb250aW51ZUJvZ3Vz
Q29tbWVudFN0YXRlKTsKKyAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRF
KENvbnRpbnVlQm9ndXNDb21tZW50U3RhdGUpCi0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJz4n
KQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbkRhdGFTdGF0ZShzb3VyY2UpOwot
ICAgICAgICBpZiAoY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJrZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluRGF0YVN0YXRlKCk7Ci0gICAgICAgIG1fdG9rZW4uYXBw
ZW5kVG9Db21tZW50KGNoYXJhY3Rlcik7Ci0gICAgICAgIEFEVkFOQ0VfVE8oQ29udGludWVCb2d1
c0NvbW1lbnRTdGF0ZSk7CisgICAgSFRNTF9CRUdJTl9TVEFURShDb250aW51ZUJvZ3VzQ29tbWVu
dFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAg
ZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29udGludWVCb2d1c0NvbW1lbnRTdGF0ZSk7CisgICAg
ICAgIH0KKyAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKE1hcmt1cERl
Y2xhcmF0aW9uT3BlblN0YXRlKQotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICctJykgewotICAg
ICAgICAgICAgYXV0byByZXN1bHQgPSBzb3VyY2UuYWR2YW5jZVBhc3QoIi0tIik7CisgICAgSFRN
TF9CRUdJTl9TVEFURShNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSkgeworICAgICAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkYXNoRGFzaFN0cmluZywgKEFTQ0lJ
TGl0ZXJhbCgiLS0iKSkpOworICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBkb2N0eXBlU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJkb2N0eXBlIikpKTsKKyAgICAg
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY2RhdGFTdHJpbmcsIChB
U0NJSUxpdGVyYWwoIltDREFUQVsiKSkpOworICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CisgICAg
ICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2Uu
bG9va0FoZWFkKGRhc2hEYXNoU3RyaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2Vn
bWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgewotICAgICAgICAgICAgICAgIG1fdG9rZW4uYmVnaW5D
b21tZW50KCk7Ci0gICAgICAgICAgICAgICAgU1dJVENIX1RPKENvbW1lbnRTdGFydFN0YXRlKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5n
OjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIFJFVFVSTl9JTl9DVVJSRU5U
X1NUQVRFKGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCkpOwotICAgICAgICB9IGVsc2UgaWYg
KGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyLCAnZCcpKSB7Ci0gICAgICAgICAg
ICBhdXRvIHJlc3VsdCA9IHNvdXJjZS5hZHZhbmNlUGFzdElnbm9yaW5nQ2FzZSgiZG9jdHlwZSIp
OwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKQot
ICAgICAgICAgICAgICAgIFNXSVRDSF9UTyhET0NUWVBFU3RhdGUpOwotICAgICAgICAgICAgaWYg
KHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAg
ICAgICAgICAgUkVUVVJOX0lOX0NVUlJFTlRfU1RBVEUoaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9r
ZW4oKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09ICdbJyAmJiBzaG91bGRBbGxv
d0NEQVRBKCkpIHsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gc291cmNlLmFkdmFuY2VQYXN0
KCJbQ0RBVEFbIik7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6
RGlkTWF0Y2gpCi0gICAgICAgICAgICAgICAgU1dJVENIX1RPKENEQVRBU2VjdGlvblN0YXRlKTsK
LSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFy
YWN0ZXJzKQotICAgICAgICAgICAgICAgIFJFVFVSTl9JTl9DVVJSRU5UX1NUQVRFKGhhdmVCdWZm
ZXJlZENoYXJhY3RlclRva2VuKCkpOworICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5k
QVNTRVJUKCctJyk7CisgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy0n
KTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKKyAgICAgICAgICAg
ICAgICBIVE1MX1NXSVRDSF9UTyhDb21tZW50U3RhcnRTdGF0ZSk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJ0QnIHx8IGNjID09ICdkJykgeworICAgICAgICAgICAgU2Vn
bWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZEln
bm9yaW5nQ2FzZShkb2N0eXBlU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2Vn
bWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdB
bmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAiZG9jdHlwZSIpOworICAgICAgICAgICAgICAg
IEhUTUxfU1dJVENIX1RPKERPQ1RZUEVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJl
c3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJ1snICYmIHNob3VsZEFsbG93Q0RBVEEoKSkgeworICAgICAgICAgICAgU2Vn
bWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChj
ZGF0YVN0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6
RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJj
ZSwgIltDREFUQVsiKTsKKyAgICAgICAgICAgICAgICBIVE1MX1NXSVRDSF9UTyhDREFUQVNlY3Rp
b25TdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJp
bmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZm
ZXJlZENoYXJhY3RlclRva2VuKCk7CiAgICAgICAgIH0KICAgICAgICAgcGFyc2VFcnJvcigpOwot
ICAgICAgICBSRUNPTlNVTUVfSU4oQm9ndXNDb21tZW50U3RhdGUpOworICAgICAgICBIVE1MX1JF
Q09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7CisgICAgfQogICAgIEVORF9TVEFURSgpCiAK
LSAgICBCRUdJTl9TVEFURShDb21tZW50U3RhcnRTdGF0ZSkKLSAgICAgICAgaWYgKGNoYXJhY3Rl
ciA9PSAnLScpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGFydERhc2hTdGF0ZSk7
Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJz4nKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShD
b21tZW50U3RhcnRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0nKQorICAgICAgICAgICAg
SFRNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGFydERhc2hTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYg
KGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZXN1bWVJbkRhdGFTdGF0ZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChjaGFyYWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFy
c2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbkRhdGFTdGF0
ZSgpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxU
b2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENv
bW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgbV90b2tlbi5hcHBlbmRUb0NvbW1lbnQo
Y2hhcmFjdGVyKTsKLSAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOworICAgIH0KICAg
ICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ29tbWVudFN0YXJ0RGFzaFN0YXRlKQot
ICAgICAgICBpZiAoY2hhcmFjdGVyID09ICctJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29t
bWVudEVuZFN0YXRlKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnPicpIHsKKyAgICBIVE1M
X0JFR0lOX1NUQVRFKENvbW1lbnRTdGFydERhc2hTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0g
Jy0nKQorICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbkRhdGFTdGF0ZShzb3VyY2UpOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgeworICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXI6OkRhdGFT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikgewogICAg
ICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1
bWVJbkRhdGFTdGF0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihz
b3VyY2UsIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKKyAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQ29t
bWVudFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBtX3Rva2VuLmFwcGVuZFRvQ29tbWVudCgn
LScpOwotICAgICAgICBtX3Rva2VuLmFwcGVuZFRvQ29tbWVudChjaGFyYWN0ZXIpOwotICAgICAg
ICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CisgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAg
ICBCRUdJTl9TVEFURShDb21tZW50U3RhdGUpCi0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJy0n
KQotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKLSAgICAgICAg
aWYgKGNoYXJhY3RlciA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CisgICAgSFRNTF9CRUdJTl9TVEFU
RShDb21tZW50U3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICctJykKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2Mg
PT0ga0VuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbkRhdGFTdGF0ZSgpOworICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0
ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1l
bnQoY2MpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgbV90b2tlbi5hcHBlbmRUb0NvbW1lbnQoY2hhcmFjdGVyKTsKLSAgICAg
ICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOworICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0g
ICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZERhc2hTdGF0ZSkKLSAgICAgICAgaWYgKGNoYXJhY3Rl
ciA9PSAnLScpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7Ci0gICAg
ICAgIGlmIChjaGFyYWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgeworICAgIEhUTUxfQkVHSU5f
U1RBVEUoQ29tbWVudEVuZERhc2hTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0nKQorICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CisgICAgICAgIGVsc2Ug
aWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsK
LSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW5EYXRhU3RhdGUoKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpE
YXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9Db21tZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2Mp
OworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgbV90b2tlbi5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgbV90b2tlbi5h
cHBlbmRUb0NvbW1lbnQoY2hhcmFjdGVyKTsKLSAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3Rh
dGUpOworICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQ29tbWVudEVu
ZFN0YXRlKQotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICc+JykKLSAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVzdW1lSW5EYXRhU3RhdGUoc291cmNlKTsKLSAgICAgICAgaWYgKGNoYXJhY3Rl
ciA9PSAnIScpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENvbW1lbnRFbmRTdGF0ZSkgeworICAg
ICAgICBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihz
b3VyY2UsIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09
ICchJykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhDb21tZW50RW5kQmFuZ1N0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2hhcmFjdGVy
ID09ICctJykgeworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRFbmRCYW5nU3Rh
dGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICctJykgewogICAgICAgICAgICAgcGFyc2VF
cnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZFN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQ29tbWVudCgnLScpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1l
bnRFbmRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikg
ewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZWNvbnN1bWVJbkRhdGFTdGF0ZSgpOwotICAgICAgICB9Ci0gICAgICAgIHBhcnNlRXJyb3IoKTsK
LSAgICAgICAgbV90b2tlbi5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgbV90b2tlbi5h
cHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgbV90b2tlbi5hcHBlbmRUb0NvbW1lbnQoY2hh
cmFjdGVyKTsKLSAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwotICAgIEVORF9TVEFU
RSgpCi0KLSAgICBCRUdJTl9TVEFURShDb21tZW50RW5kQmFuZ1N0YXRlKQotICAgICAgICBpZiAo
Y2hhcmFjdGVyID09ICctJykgewotICAgICAgICAgICAgbV90b2tlbi5hcHBlbmRUb0NvbW1lbnQo
Jy0nKTsKLSAgICAgICAgICAgIG1fdG9rZW4uYXBwZW5kVG9Db21tZW50KCctJyk7Ci0gICAgICAg
ICAgICBtX3Rva2VuLmFwcGVuZFRvQ29tbWVudCgnIScpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhDb21tZW50RW5kRGFzaFN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2hhcmFjdGVy
ID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW5EYXRhU3RhdGUoc291
cmNlKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CisgICAg
ICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6
RGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsK
LSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW5EYXRhU3RhdGUoKTsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOworICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9Db21tZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0Nv
bW1lbnQoY2MpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgbV90b2tlbi5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAg
bV90b2tlbi5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgbV90b2tlbi5hcHBlbmRUb0Nv
bW1lbnQoJyEnKTsKLSAgICAgICAgbV90b2tlbi5hcHBlbmRUb0NvbW1lbnQoY2hhcmFjdGVyKTsK
LSAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOworICAgIH0KICAgICBFTkRfU1RBVEUo
KQogCi0gICAgQkVHSU5fU1RBVEUoRE9DVFlQRVN0YXRlKQotICAgICAgICBpZiAoaXNUb2tlbml6
ZXJXaGl0ZXNwYWNlKGNoYXJhY3RlcikpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURP
Q1RZUEVOYW1lU3RhdGUpOwotICAgICAgICBpZiAoY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJr
ZXIpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENvbW1lbnRFbmRCYW5nU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50
KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnIScpOworICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKENvbW1lbnRFbmREYXNoU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICc+JykKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9r
ZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFy
a2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLmJl
Z2luRE9DVFlQRSgpOwotICAgICAgICAgICAgbV90b2tlbi5zZXRGb3JjZVF1aXJrcygpOwotICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbkRhdGFTdGF0ZSgpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXI6OkRhdGFT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0Nv
bW1lbnQoJy0nKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwor
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCchJyk7CisgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAg
ICBSRUNPTlNVTUVfSU4oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgfQogICAgIEVORF9T
VEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShCZWZvcmVET0NUWVBFTmFtZVN0YXRlKQotICAgICAg
ICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNoYXJhY3RlcikpCi0gICAgICAgICAgICBBRFZB
TkNFX1RPKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpOwotICAgICAgICBpZiAoY2hhcmFjdGVyID09
ICc+JykgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoRE9DVFlQRVN0YXRlKSB7CisgICAgICAgIGlm
IChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RP
KEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSBrRW5kT2ZG
aWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rv
a2VuLmJlZ2luRE9DVFlQRSgpOwotICAgICAgICAgICAgbV90b2tlbi5zZXRGb3JjZVF1aXJrcygp
OwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbkRhdGFTdGF0ZShzb3VyY2UpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgewor
ICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKCk7CisgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJ
bihzb3VyY2UsIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLmJlZ2luRE9DVFlQ
RSgpOwotICAgICAgICAgICAgbV90b2tlbi5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbkRhdGFTdGF0ZSgpOworICAgICAgICAgICAgSFRNTF9S
RUNPTlNVTUVfSU4oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAg
bV90b2tlbi5iZWdpbkRPQ1RZUEUodG9BU0NJSUxvd2VyKGNoYXJhY3RlcikpOwotICAgICAgICBB
RFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOworICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0g
ICAgQkVHSU5fU1RBVEUoRE9DVFlQRU5hbWVTdGF0ZSkKLSAgICAgICAgaWYgKGlzVG9rZW5pemVy
V2hpdGVzcGFjZShjaGFyYWN0ZXIpKQotICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZ
UEVOYW1lU3RhdGUpOwotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICc+JykKLSAgICAgICAgICAg
IHJldHVybiBlbWl0QW5kUmVzdW1lSW5EYXRhU3RhdGUoc291cmNlKTsKLSAgICAgICAgaWYgKGNo
YXJhY3RlciA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShCZWZv
cmVET0NUWVBFTmFtZVN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2Uo
Y2MpKQorICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUp
OworICAgICAgICBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CisgICAgICAgICAgICBtX3Rv
a2VuLT5iZWdpbkRPQ1RZUEUodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicp
IHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2lu
RE9DVFlQRSgpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpEYXRh
U3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAg
ICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9rZW4uc2V0Rm9yY2VRdWly
a3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW5EYXRhU3RhdGUoKTsK
KyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRSgpOworICAgICAgICAgICAgbV90b2tl
bi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1l
SW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKGNjKTsKKyAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBtX3Rva2Vu
LmFwcGVuZFRvTmFtZSh0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyKSk7Ci0gICAgICAgIEFEVkFOQ0Vf
VE8oRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJ
Tl9TVEFURShBZnRlckRPQ1RZUEVOYW1lU3RhdGUpCi0gICAgICAgIGlmIChpc1Rva2VuaXplcldo
aXRlc3BhY2UoY2hhcmFjdGVyKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBF
TmFtZVN0YXRlKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnPicpCi0gICAgICAgICAgICBy
ZXR1cm4gZW1pdEFuZFJlc3VtZUluRGF0YVN0YXRlKHNvdXJjZSk7Ci0gICAgICAgIGlmIChjaGFy
YWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoRE9DVFlQ
RU5hbWVTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOworICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUlu
KHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoaXNB
U0NJSVVwcGVyKGNjKSkgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKHRvTG93
ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0
ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikgewogICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi5zZXRGb3JjZVF1aXJrcygp
OwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbkRhdGFTdGF0ZSgpOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJhY3Rlciwg
J3AnKSkgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBzb3VyY2UuYWR2YW5jZVBhc3RJZ25v
cmluZ0Nhc2UoInB1YmxpYyIpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRT
dHJpbmc6OkRpZE1hdGNoKQotICAgICAgICAgICAgICAgIFNXSVRDSF9UTyhBZnRlckRPQ1RZUEVQ
dWJsaWNLZXl3b3JkU3RhdGUpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRT
dHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgUkVUVVJOX0lOX0NV
UlJFTlRfU1RBVEUoaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXIsICdzJykpIHsKLSAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gc291cmNlLmFkdmFuY2VQYXN0SWdub3JpbmdDYXNlKCJzeXN0
ZW0iKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRj
aCkKLSAgICAgICAgICAgICAgICBTV0lUQ0hfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0
YXRlKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91
Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIFJFVFVSTl9JTl9DVVJSRU5UX1NUQVRFKGhh
dmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCkpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9y
Y2VRdWlya3MoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNl
LCBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9U
TyhET0NUWVBFTmFtZVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBwYXJzZUVycm9yKCk7Ci0g
ICAgICAgIG1fdG9rZW4uc2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgQURWQU5DRV9UTyhCb2d1
c0RPQ1RZUEVTdGF0ZSk7CisgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFU
RShBZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGUpCi0gICAgICAgIGlmIChpc1Rva2VuaXpl
cldoaXRlc3BhY2UoY2hhcmFjdGVyKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9D
VFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJyIn
KSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVOYW1lU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgaWYgKGNjID09ICc+JykKKyAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpE
YXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLnNldFB1YmxpY0lk
ZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQ
dWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChjaGFyYWN0ZXIgPT0gJ1wnJykgeworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWly
a3MoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1M
VG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHVibGljU3RyaW5nLCAoQVNDSUlM
aXRlcmFsKCJwdWJsaWMiKSkpOworICAgICAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgc3lzdGVtU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJzeXN0ZW0iKSkpOwor
ICAgICAgICAgICAgaWYgKGNjID09ICdQJyB8fCBjYyA9PSAncCcpIHsKKyAgICAgICAgICAgICAg
ICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0Fo
ZWFkSWdub3JpbmdDYXNlKHB1YmxpY1N0cmluZyk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgIGFk
dmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAicHVibGljIik7CisgICAg
ICAgICAgICAgICAgICAgIEhUTUxfU1dJVENIX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRT
dGF0ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3Ry
aW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGF2
ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
J1MnIHx8IGNjID09ICdzJykgeworICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9v
a0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2Uoc3lzdGVt
U3RyaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6
RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVEln
bm9yaW5nQ2FzZShzb3VyY2UsICJzeXN0ZW0iKTsKKyAgICAgICAgICAgICAgICAgICAgSFRNTF9T
V0lUQ0hfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3Rl
cnMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tl
bigpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgbV90b2tlbi5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsK
KyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBIVE1M
X0FEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChj
aGFyYWN0ZXIgPT0gJz4nKSB7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBIVE1MX0JF
R0lOX1NUQVRFKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSkgeworICAgICAgICBpZiAo
aXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhC
ZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJyInKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2Vu
LnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluRGF0
YVN0YXRlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBrRW5k
T2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVy
VG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVQdWJs
aWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICdcJycpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4t
PnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0g
ICAgICAgICAgICBtX3Rva2VuLnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZW1pdEFuZFJlY29uc3VtZUluRGF0YVN0YXRlKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRG
b3JjZVF1aXJrcygpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2Us
IEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0Vu
ZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAg
bV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVj
b25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0
Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVT
dGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICBtX3Rva2Vu
LnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUp
OworICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQ
RVB1YmxpY0lkZW50aWZpZXJTdGF0ZSkKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFj
ZShjaGFyYWN0ZXIpKQotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFUHVibGlj
SWRlbnRpZmllclN0YXRlKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnIicpIHsKLSAgICAg
ICAgICAgIG1fdG9rZW4uc2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnXCcnKSB7Ci0gICAgICAg
ICAgICBtX3Rva2VuLnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUp
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJz4nKSB7CisgICAgSFRNTF9C
RUdJTl9TVEFURShCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKSB7CisgICAgICAg
IGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIGlm
IChjYyA9PSAnIicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJU
b0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVB1Ymxp
Y0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
J1wnJykgeworICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlT
dHJpbmcoKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRp
ZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsK
ICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9rZW4uc2V0Rm9yY2VR
dWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW5EYXRhU3RhdGUoc291
cmNlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJr
ZXIpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLnNldEZvcmNlUXVpcmtzKCk7
Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluRGF0YVN0YXRlKCk7CisgICAg
ICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rv
a2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEJvZ3Vz
RE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAg
IG1fdG9rZW4uc2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZ
UEVTdGF0ZSk7CisgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShET0NU
WVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKQotICAgICAgICBpZiAoY2hhcmFj
dGVyID09ICciJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFUHVibGljSWRl
bnRpZmllclN0YXRlKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnPicpIHsKKyAgICBIVE1M
X0JFR0lOX1NUQVRFKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpIHsK
KyAgICAgICAgaWYgKGNjID09ICciJykKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRl
ckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAn
PicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9rZW4uc2V0
Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW5EYXRhU3Rh
dGUoc291cmNlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2hhcmFjdGVyID09IGtFbmRPZkZp
bGVNYXJrZXIpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAg
ICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0
YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLnNldEZvcmNlUXVp
cmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluRGF0YVN0YXRlKCk7
CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lk
ZW50aWZpZXIoY2MpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJ
ZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIG1fdG9rZW4u
YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFEVkFOQ0VfVE8o
RE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgfQogICAgIEVO
RF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShET0NUWVBFUHVibGljSWRlbnRpZmllclNpbmds
ZVF1b3RlZFN0YXRlKQotICAgICAgICBpZiAoY2hhcmFjdGVyID09ICdcJycpCi0gICAgICAgICAg
ICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAg
IGlmIChjaGFyYWN0ZXIgPT0gJz4nKSB7CisgICAgSFRNTF9CRUdJTl9TVEFURShET0NUWVBFUHVi
bGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXCcn
KQorICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZp
ZXJTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFy
c2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi5zZXRGb3JjZVF1aXJrcygpOwotICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbkRhdGFTdGF0ZShzb3VyY2UpOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAg
ICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5k
UmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICB9IGVs
c2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKLSAgICAgICAgICAgIG1fdG9rZW4uc2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJl
dHVybiBlbWl0QW5kUmVjb25zdW1lSW5EYXRhU3RhdGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4t
PnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUlu
KHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHVibGljSWRlbnRpZmllcihjYyk7CisgICAgICAg
ICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRT
dGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgbV90b2tlbi5hcHBlbmRUb1B1YmxpY0lkZW50aWZp
ZXIoY2hhcmFjdGVyKTsKLSAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmll
clNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lO
X1NUQVRFKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSkKLSAgICAgICAgaWYgKGlz
VG9rZW5pemVyV2hpdGVzcGFjZShjaGFyYWN0ZXIpKQotICAgICAgICAgICAgQURWQU5DRV9UTyhC
ZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUpOwotICAgICAgICBp
ZiAoY2hhcmFjdGVyID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW5E
YXRhU3RhdGUoc291cmNlKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnIicpIHsKKyAgICBI
VE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSkgeworICAg
ICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhCZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUpOwor
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
c3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJyInKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBt
X3Rva2VuLnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJ1wnJykgeworICAgICAgICAgICAgbV90
b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEhU
TUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9y
KCk7Ci0gICAgICAgICAgICBtX3Rva2VuLnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5n
KCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xl
UXVvdGVkU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0ga0VuZE9m
RmlsZU1hcmtlcikgeworICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRv
RW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVt
SWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBr
RW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAg
ICBtX3Rva2VuLnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
Y29uc3VtZUluRGF0YVN0YXRlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyc2VFcnJvcigpOwot
ICAgICAgICBtX3Rva2VuLnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgIEFEVkFOQ0VfVE8oQm9n
dXNET0NUWVBFU3RhdGUpOwotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShCZXR3
ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUpCi0gICAgICAgIGlmIChp
c1Rva2VuaXplcldoaXRlc3BhY2UoY2hhcmFjdGVyKSkKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
QmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKTsKLSAgICAgICAg
aWYgKGNoYXJhY3RlciA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUlu
RGF0YVN0YXRlKHNvdXJjZSk7Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJyInKSB7Ci0gICAg
ICAgICAgICBtX3Rva2VuLnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3Rh
dGUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJ1wnJykgewotICAgICAg
ICAgICAgbV90b2tlbi5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAg
ICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRl
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJrZXIp
IHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgIG1fdG9rZW4uc2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5k
UmVjb25zdW1lSW5EYXRhU3RhdGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVp
cmtzKCk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwog
ICAgICAgICB9Ci0gICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgbV90b2tlbi5zZXRGb3Jj
ZVF1aXJrcygpOwotICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVN5c3RlbUtl
eXdvcmRTdGF0ZSkKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjaGFyYWN0ZXIp
KQotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0
YXRlKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnIicpIHsKKyAgICBIVE1MX0JFR0lOX1NU
QVRFKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZSkgeworICAg
ICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhCZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUpOwor
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
c3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJyInKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVy
VG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICdcJycpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5
U3RyaW5nKCk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50
aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9m
RmlsZU1hcmtlcikgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90
b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25z
dW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi5zZXRTeXN0
ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NU
WVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIG1fdG9r
ZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNE
T0NUWVBFU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJ1wnJykg
eworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgSFRNTF9CRUdJTl9TVEFURShBZnRlckRP
Q1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVz
cGFjZShjYykpCisgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5c3Rl
bUlkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgewogICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi5zZXRTeXN0ZW1JZGVudGlm
aWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVt
SWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2hh
cmFjdGVyID09ICc+JykgeworICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmll
clRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFU3lz
dGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnXCcnKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2Vu
LnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluRGF0
YVN0YXRlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBrRW5k
T2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVy
VG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICc+JykgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+
c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291
cmNlLCBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09
IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgIG1fdG9rZW4uc2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5k
UmVjb25zdW1lSW5EYXRhU3RhdGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVp
cmtzKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRN
TFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAg
ICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9Ci0g
ICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgbV90b2tlbi5zZXRGb3JjZVF1aXJrcygpOwot
ICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICB9CiAgICAgRU5EX1NU
QVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3Rh
dGUpCi0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2hhcmFjdGVyKSkKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7Ci0g
ICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJyInKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLnNldFN5
c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERP
Q1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChjaGFyYWN0ZXIgPT0gJ1wnJykgewotICAgICAgICAgICAgbV90b2tlbi5zZXRTeXN0
ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NU
WVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoY2hhcmFjdGVyID09ICc+JykgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoQmVmb3JlRE9D
VFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lz
dGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgaWYgKGNjID09ICciJykgeworICAgICAgICAg
ICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0
YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CisgICAgICAgICAgICBtX3Rv
a2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigp
OwotICAgICAgICAgICAgbV90b2tlbi5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZXN1bWVJbkRhdGFTdGF0ZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChjaGFyYWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgbV90b2tl
bi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4o
c291cmNlLCBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNj
ID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICByZXR1cm4gZW1p
dEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9r
ZW4uc2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1l
SW5EYXRhU3RhdGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Cisg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9
Ci0gICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgbV90b2tlbi5zZXRGb3JjZVF1aXJrcygp
OwotICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICB9CiAgICAgRU5E
X1NUQVRFKCkKIAotICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91Ymxl
UXVvdGVkU3RhdGUpCi0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJyInKQotICAgICAgICAgICAg
QURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOwotICAgICAgICBp
ZiAoY2hhcmFjdGVyID09ICc+JykgeworICAgIEhUTUxfQkVHSU5fU1RBVEUoRE9DVFlQRVN5c3Rl
bUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJyInKQor
ICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJT
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VF
cnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbkRhdGFTdGF0ZShzb3VyY2UpOwotICAgICAgICB9Ci0g
ICAgICAgIGlmIChjaGFyYWN0ZXIgPT0ga0VuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAg
bV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVz
dW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2Ug
aWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsK
LSAgICAgICAgICAgIG1fdG9rZW4uc2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVjb25zdW1lSW5EYXRhU3RhdGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNl
dEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNv
dXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihjYyk7CisgICAgICAgICAg
ICBIVE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgbV90b2tlbi5hcHBlbmRUb1N5c3RlbUlkZW50aWZpZXIo
Y2hhcmFjdGVyKTsKLSAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRv
dWJsZVF1b3RlZFN0YXRlKTsKKyAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAotICAgIEJFR0lOX1NU
QVRFKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpCi0gICAgICAgIGlm
IChjaGFyYWN0ZXIgPT0gJ1wnJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBF
U3lzdGVtSWRlbnRpZmllclN0YXRlKTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnPicpIHsK
KyAgICBIVE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVk
U3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICdcJycpCisgICAgICAgICAgICBIVE1MX0FEVkFO
Q0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBt
X3Rva2VuLnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3Vt
ZUluRGF0YVN0YXRlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNoYXJhY3RlciA9
PSBrRW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJr
cygpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tl
bml6ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1h
cmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi5z
ZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbkRh
dGFTdGF0ZSgpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpE
YXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9TeXN0ZW1JZGVudGlmaWVyKGNjKTsKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhET0NU
WVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAg
ICBtX3Rva2VuLmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihjaGFyYWN0ZXIpOwotICAgICAgICBB
RFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAg
IH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lzdGVt
SWRlbnRpZmllclN0YXRlKQotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNoYXJh
Y3RlcikpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZp
ZXJTdGF0ZSk7Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJz4nKQotICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZXN1bWVJbkRhdGFTdGF0ZShzb3VyY2UpOwotICAgICAgICBpZiAoY2hhcmFj
dGVyID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9D
VFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAg
ICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplcjo6RGF0YVN0
YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikgewogICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi5zZXRGb3JjZVF1aXJrcygp
OwotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbkRhdGFTdGF0ZSgpOworICAg
ICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBwYXJz
ZUVycm9yKCk7Ci0gICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgIH0K
ICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5fU1RBVEUoQm9ndXNET0NUWVBFU3RhdGUpCi0g
ICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZXN1bWVJbkRhdGFTdGF0ZShzb3VyY2UpOwotICAgICAgICBpZiAoY2hhcmFjdGVyID09IGtFbmRP
ZkZpbGVNYXJrZXIpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluRGF0YVN0
YXRlKCk7Ci0gICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgIEhUTUxf
QkVHSU5fU1RBVEUoQm9ndXNET0NUWVBFU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICc+JykK
KyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVy
OjpEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQor
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6
ZXI6OkRhdGFTdGF0ZSk7CisgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0
ZSk7CisgICAgfQogICAgIEVORF9TVEFURSgpCiAKLSAgICBCRUdJTl9TVEFURShDREFUQVNlY3Rp
b25TdGF0ZSkKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnXScpCi0gICAgICAgICAgICBBRFZB
TkNFX1RPKENEQVRBU2VjdGlvblJpZ2h0U3F1YXJlQnJhY2tldFN0YXRlKTsKLSAgICAgICAgaWYg
KGNoYXJhY3RlciA9PSBrRW5kT2ZGaWxlTWFya2VyKQotICAgICAgICAgICAgUkVDT05TVU1FX0lO
KERhdGFTdGF0ZSk7Ci0gICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjaGFyYWN0ZXIpOwotICAgICAg
ICBBRFZBTkNFX1RPKENEQVRBU2VjdGlvblN0YXRlKTsKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENE
QVRBU2VjdGlvblN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXScpCisgICAgICAgICAgICBI
VE1MX0FEVkFOQ0VfVE8oQ0RBVEFTZWN0aW9uUmlnaHRTcXVhcmVCcmFja2V0U3RhdGUpOworICAg
ICAgICBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgSFRNTF9S
RUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBidWZm
ZXJDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENEQVRBU2VjdGlv
blN0YXRlKTsKKyAgICAgICAgfQorICAgIH0KICAgICBFTkRfU1RBVEUoKQogCi0gICAgQkVHSU5f
U1RBVEUoQ0RBVEFTZWN0aW9uUmlnaHRTcXVhcmVCcmFja2V0U3RhdGUpCi0gICAgICAgIGlmIChj
aGFyYWN0ZXIgPT0gJ10nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhDREFUQVNlY3Rpb25Eb3Vi
bGVSaWdodFNxdWFyZUJyYWNrZXRTdGF0ZSk7Ci0gICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVy
KCddJyk7Ci0gICAgICAgIFJFQ09OU1VNRV9JTihDREFUQVNlY3Rpb25TdGF0ZSk7Ci0gICAgRU5E
X1NUQVRFKCkKKyAgICBIVE1MX0JFR0lOX1NUQVRFKENEQVRBU2VjdGlvblJpZ2h0U3F1YXJlQnJh
Y2tldFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXScpCisgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oQ0RBVEFTZWN0aW9uRG91YmxlUmlnaHRTcXVhcmVCcmFja2V0U3RhdGUpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCddJyk7CisgICAg
ICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihDREFUQVNlY3Rpb25TdGF0ZSk7CisgICAgICAgIH0K
KyAgICB9CiAKLSAgICBCRUdJTl9TVEFURShDREFUQVNlY3Rpb25Eb3VibGVSaWdodFNxdWFyZUJy
YWNrZXRTdGF0ZSkKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnPicpCi0gICAgICAgICAgICBB
RFZBTkNFX1RPKERhdGFTdGF0ZSk7Ci0gICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCddJyk7
Ci0gICAgICAgIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKCddJyk7Ci0gICAgICAgIFJFQ09OU1VNRV9J
TihDREFUQVNlY3Rpb25TdGF0ZSk7CisgICAgSFRNTF9CRUdJTl9TVEFURShDREFUQVNlY3Rpb25E
b3VibGVSaWdodFNxdWFyZUJyYWNrZXRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJz4nKQor
ICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERhdGFTdGF0ZSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgYnVmZmVyQVNDSUlDaGFyYWN0ZXIoJ10nKTsKKyAgICAgICAgICAgIGJ1ZmZl
ckFTQ0lJQ2hhcmFjdGVyKCddJyk7CisgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihDREFU
QVNlY3Rpb25TdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAogICAg
IH0KQEAgLTE0MDksNDUgKzE1NjEsMzkgQEAgU3RyaW5nIEhUTUxUb2tlbml6ZXI6OmJ1ZmZlcmVk
Q2hhcmFjdGVycygpIGNvbnN0CiB2b2lkIEhUTUxUb2tlbml6ZXI6OnVwZGF0ZVN0YXRlRm9yKGNv
bnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKIHsKICAgICBpZiAodGFnTmFtZSA9PSB0ZXh0YXJl
YVRhZyB8fCB0YWdOYW1lID09IHRpdGxlVGFnKQotICAgICAgICBtX3N0YXRlID0gUkNEQVRBU3Rh
dGU7CisgICAgICAgIHNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlKTsKICAgICBl
bHNlIGlmICh0YWdOYW1lID09IHBsYWludGV4dFRhZykKLSAgICAgICAgbV9zdGF0ZSA9IFBMQUlO
VEVYVFN0YXRlOworICAgICAgICBzZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0
ZSk7CiAgICAgZWxzZSBpZiAodGFnTmFtZSA9PSBzY3JpcHRUYWcpCi0gICAgICAgIG1fc3RhdGUg
PSBTY3JpcHREYXRhU3RhdGU7CisgICAgICAgIHNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNjcmlw
dERhdGFTdGF0ZSk7CiAgICAgZWxzZSBpZiAodGFnTmFtZSA9PSBzdHlsZVRhZwogICAgICAgICB8
fCB0YWdOYW1lID09IGlmcmFtZVRhZwogICAgICAgICB8fCB0YWdOYW1lID09IHhtcFRhZwogICAg
ICAgICB8fCAodGFnTmFtZSA9PSBub2VtYmVkVGFnICYmIG1fb3B0aW9ucy5wbHVnaW5zRW5hYmxl
ZCkKICAgICAgICAgfHwgdGFnTmFtZSA9PSBub2ZyYW1lc1RhZwogICAgICAgICB8fCAodGFnTmFt
ZSA9PSBub3NjcmlwdFRhZyAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCi0gICAgICAgIG1f
c3RhdGUgPSBSQVdURVhUU3RhdGU7Ci19Ci0KLWlubGluZSB2b2lkIEhUTUxUb2tlbml6ZXI6OmFw
cGVuZFRvVGVtcG9yYXJ5QnVmZmVyKFVDaGFyIGNoYXJhY3RlcikKLXsKLSAgICBBU1NFUlQoaXNB
U0NJSShjaGFyYWN0ZXIpKTsKLSAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVy
KTsKKyAgICAgICAgc2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkFXVEVYVFN0YXRlKTsKIH0KIAot
aW5saW5lIGJvb2wgSFRNTFRva2VuaXplcjo6dGVtcG9yYXJ5QnVmZmVySXMoY29uc3QgY2hhciog
ZXhwZWN0ZWRTdHJpbmcpCitpbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjp0ZW1wb3JhcnlCdWZm
ZXJJcyhjb25zdCBTdHJpbmcmIGV4cGVjdGVkU3RyaW5nKQogewogICAgIHJldHVybiB2ZWN0b3JF
cXVhbHNTdHJpbmcobV90ZW1wb3JhcnlCdWZmZXIsIGV4cGVjdGVkU3RyaW5nKTsKIH0KIAotaW5s
aW5lIHZvaWQgSFRNTFRva2VuaXplcjo6YXBwZW5kVG9Qb3NzaWJsZUVuZFRhZyhVQ2hhciBjaGFy
YWN0ZXIpCitpbmxpbmUgdm9pZCBIVE1MVG9rZW5pemVyOjphZGRUb1Bvc3NpYmxlRW5kVGFnKExD
aGFyIGNjKQogewotICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOwotICAgIG1fYnVmZmVy
ZWRFbmRUYWdOYW1lLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIEFTU0VSVChpc0VuZFRhZ0J1ZmZl
cmluZ1N0YXRlKG1fc3RhdGUpKTsKKyAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5hcHBlbmQoY2Mp
OwogfQogCi1pbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjppc0FwcHJvcHJpYXRlRW5kVGFnKCkg
Y29uc3QKK2lubGluZSBib29sIEhUTUxUb2tlbml6ZXI6OmlzQXBwcm9wcmlhdGVFbmRUYWcoKQog
ewogICAgIGlmIChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5zaXplKCkgIT0gbV9hcHByb3ByaWF0ZUVu
ZFRhZ05hbWUuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBz
aXplID0gbV9idWZmZXJlZEVuZFRhZ05hbWUuc2l6ZSgpOworICAgIHNpemVfdCBudW1DaGFyYWN0
ZXJzID0gbV9idWZmZXJlZEVuZFRhZ05hbWUuc2l6ZSgpOwogCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hh
cmFjdGVyczsgaSsrKSB7CiAgICAgICAgIGlmIChtX2J1ZmZlcmVkRW5kVGFnTmFtZVtpXSAhPSBt
X2FwcHJvcHJpYXRlRW5kVGFnTmFtZVtpXSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC0xNDU3LDYgKzE2MDMsNyBAQCBpbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjppc0Fw
cHJvcHJpYXRlRW5kVGFnKCkgY29uc3QKIAogaW5saW5lIHZvaWQgSFRNTFRva2VuaXplcjo6cGFy
c2VFcnJvcigpCiB7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oCmluZGV4IGZlZDIxMTg4ZGI0ZjZlMjcxZjEx
NDEyNjQwYjM5OGYwOTA3MTc1YTcuLjNkNDM1Njg0MzEwN2E0Y2UyN2VlNDFhM2NjZDIxMmU4M2Ux
ZDEwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE1IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMCw1NCArMzAsMTkgQEAK
ICNpbmNsdWRlICJIVE1MUGFyc2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgog
I2luY2x1ZGUgIklucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmgiCisjaW5jbHVkZSAiU2VnbWVudGVk
U3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2VnbWVudGVkU3RyaW5n
OwotCiBjbGFzcyBIVE1MVG9rZW5pemVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIVE1M
VG9rZW5pemVyKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBIVE1MVG9rZW5pemVyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiA9IEhUTUxQYXJz
ZXJPcHRpb25zKCkpOwotCi0gICAgLy8gSWYgd2UgY2FuJ3QgcGFyc2UgYSB3aG9sZSB0b2tlbiwg
dGhpcyByZXR1cm5zIG51bGwuCi0gICAgY2xhc3MgVG9rZW5QdHI7Ci0gICAgVG9rZW5QdHIgbmV4
dFRva2VuKFNlZ21lbnRlZFN0cmluZyYpOwotCi0gICAgLy8gUmV0dXJucyBhIGNvcHkgb2YgYW55
IGNoYXJhY3RlcnMgYnVmZmVyZWQgaW50ZXJuYWxseSBieSB0aGUgdG9rZW5pemVyLgotICAgIC8v
IFRoZSB0b2tlbml6ZXIgYnVmZmVycyBjaGFyYWN0ZXJzIHdoZW4gc2VhcmNoaW5nIGZvciB0aGUg
PC9zY3JpcHQ+IHRva2VuIHRoYXQgdGVybWluYXRlcyBhIHNjcmlwdCBlbGVtZW50LgotICAgIFN0
cmluZyBidWZmZXJlZENoYXJhY3RlcnMoKSBjb25zdDsKLSAgICBzaXplX3QgbnVtYmVyT2ZCdWZm
ZXJlZENoYXJhY3RlcnMoKSBjb25zdDsKLQotICAgIC8vIFVwZGF0ZXMgdGhlIHRva2VuaXplcidz
IHN0YXRlIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gdGFnIG5hbWUuIFRoaXMgaXMgYW4gYXBwcm94
aW1hdGlvbiBvZiBob3cgdGhlIHRyZWUKLSAgICAvLyBidWlsZGVyIHdvdWxkIHVwZGF0ZSB0aGUg
dG9rZW5pemVyJ3Mgc3RhdGUuIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBmb3IgYXBwcm94aW1hdGlu
ZyBIVE1MIHRva2VuaXphdGlvbi4KLSAgICAvLyBUbyBnZXQgZXhhY3RseSB0aGUgY29ycmVjdCB0
b2tlbml6YXRpb24sIHlvdSBuZWVkIHRoZSByZWFsIHRyZWUgYnVpbGRlci4KLSAgICAvLwotICAg
IC8vIFRoZSBtYWluIGZhaWx1cmVzIGluIHRoZSBhcHByb3hpbWF0aW9uIGFyZSBhcyBmb2xsb3dz
OgotICAgIC8vCi0gICAgLy8gICogVGhlIGZpcnN0IHNldCBvZiBjaGFyYWN0ZXIgdG9rZW5zIGVt
aXR0ZWQgZm9yIGEgPHByZT4gZWxlbWVudCBtaWdodCBjb250YWluIGFuIGV4dHJhIGxlYWRpbmcg
bmV3bGluZS4KLSAgICAvLyAgKiBUaGUgcmVwbGFjZW1lbnQgb2YgVSswMDAwIHdpdGggVStGRkZE
IHdpbGwgbm90IGJlIHNlbnNpdGl2ZSB0byB0aGUgdHJlZSBidWlsZGVyJ3MgaW5zZXJ0aW9uIG1v
ZGUuCi0gICAgLy8gICogQ0RBVEEgc2VjdGlvbnMgaW4gZm9yZWlnbiBjb250ZW50IHdpbGwgYmUg
dG9rZW5pemVkIGFzIGJvZ3VzIGNvbW1lbnRzIGluc3RlYWQgb2YgYXMgY2hhcmFjdGVyIHRva2Vu
cy4KLSAgICAvLwotICAgIC8vIFRoaXMgYXBwcm94aW1hdGlvbiBpcyBhbHNvIHRoZSBhbGdvcml0
aG0gY2FsbGVkIGZvciB3aGVuIHBhcnNpbmcgYW4gSFRNTCBmcmFnbWVudC4KLSAgICAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLWh0
bWwtZnJhZ21lbnRzCi0gICAgdm9pZCB1cGRhdGVTdGF0ZUZvcihjb25zdCBBdG9taWNTdHJpbmcm
IHRhZ05hbWUpOworICAgIGV4cGxpY2l0IEhUTUxUb2tlbml6ZXIoY29uc3QgSFRNTFBhcnNlck9w
dGlvbnMmKTsKKyAgICB+SFRNTFRva2VuaXplcigpOwogCi0gICAgdm9pZCBzZXRGb3JjZU51bGxD
aGFyYWN0ZXJSZXBsYWNlbWVudChib29sKTsKKyAgICB2b2lkIHJlc2V0KCk7CiAKLSAgICBib29s
IHNob3VsZEFsbG93Q0RBVEEoKSBjb25zdDsKLSAgICB2b2lkIHNldFNob3VsZEFsbG93Q0RBVEEo
Ym9vbCk7Ci0KLSAgICBib29sIGlzSW5EYXRhU3RhdGUoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0
RGF0YVN0YXRlKCk7Ci0gICAgdm9pZCBzZXRQTEFJTlRFWFRTdGF0ZSgpOwotICAgIHZvaWQgc2V0
UkFXVEVYVFN0YXRlKCk7Ci0gICAgdm9pZCBzZXRSQ0RBVEFTdGF0ZSgpOwotICAgIHZvaWQgc2V0
U2NyaXB0RGF0YVN0YXRlKCk7Ci0KLSAgICBib29sIG5ldmVyU2tpcE51bGxDaGFyYWN0ZXJzKCkg
Y29uc3Q7Ci0KLXByaXZhdGU6CiAgICAgZW51bSBTdGF0ZSB7CiAgICAgICAgIERhdGFTdGF0ZSwK
ICAgICAgICAgQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGUsCkBAIC0xMjMsNyArODgsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlLAogICAg
ICAgICBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUsCiAgICAgICAgIEJvZ3VzQ29tbWVudFN0YXRl
LAotICAgICAgICBDb250aW51ZUJvZ3VzQ29tbWVudFN0YXRlLCAvLyBOb3QgaW4gdGhlIEhUTUwg
c3BlYywgdXNlZCBpbnRlcm5hbGx5IHRvIHRyYWNrIHdoZXRoZXIgd2Ugc3RhcnRlZCB0aGUgYm9n
dXMgY29tbWVudCB0b2tlbi4KKyAgICAgICAgLy8gVGhlIENvbnRpbnVlQm9ndXNDb21tZW50U3Rh
dGUgaXMgbm90IGluIHRoZSBIVE1MNSBzcGVjLCBidXQgd2UgdXNlCisgICAgICAgIC8vIGl0IGlu
dGVybmFsbHkgdG8ga2VlcCB0cmFjayBvZiB3aGV0aGVyIHdlJ3ZlIHN0YXJ0ZWQgdGhlIGJvZ3Vz
CisgICAgICAgIC8vIGNvbW1lbnQgdG9rZW4geWV0LgorICAgICAgICBDb250aW51ZUJvZ3VzQ29t
bWVudFN0YXRlLAogICAgICAgICBNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSwKICAgICAgICAg
Q29tbWVudFN0YXJ0U3RhdGUsCiAgICAgICAgIENvbW1lbnRTdGFydERhc2hTdGF0ZSwKQEAgLTE1
MywxOTcgKzEyMSwxNTUgQEAgcHJpdmF0ZToKICAgICAgICAgQ0RBVEFTZWN0aW9uRG91YmxlUmln
aHRTcXVhcmVCcmFja2V0U3RhdGUsCiAgICAgfTsKIAotICAgIGJvb2wgcHJvY2Vzc1Rva2VuKFNl
Z21lbnRlZFN0cmluZyYpOwotICAgIGJvb2wgcHJvY2Vzc0VudGl0eShTZWdtZW50ZWRTdHJpbmcm
KTsKLQotICAgIHZvaWQgcGFyc2VFcnJvcigpOwotCi0gICAgdm9pZCBidWZmZXJBU0NJSUNoYXJh
Y3RlcihVQ2hhcik7Ci0gICAgdm9pZCBidWZmZXJDaGFyYWN0ZXIoVUNoYXIpOwotCi0gICAgYm9v
bCBlbWl0QW5kUmVzdW1lSW5EYXRhU3RhdGUoU2VnbWVudGVkU3RyaW5nJik7Ci0gICAgYm9vbCBl
bWl0QW5kUmVjb25zdW1lSW5EYXRhU3RhdGUoKTsKLSAgICBib29sIGVtaXRFbmRPZkZpbGUoU2Vn
bWVudGVkU3RyaW5nJik7Ci0KLSAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB3ZSB3aWwgZW1pdCBhIGNo
YXJhY3RlciB0b2tlbiBiZWZvcmUgZGVhbGluZyB3aXRoIHRoZSBidWZmZXJlZCBlbmQgdGFnLgot
ICAgIHZvaWQgZmx1c2hCdWZmZXJlZEVuZFRhZygpOwotICAgIGJvb2wgY29tbWl0VG9QYXJ0aWFs
RW5kVGFnKFNlZ21lbnRlZFN0cmluZyYsIFVDaGFyLCBTdGF0ZSk7Ci0gICAgYm9vbCBjb21taXRU
b0NvbXBsZXRlRW5kVGFnKFNlZ21lbnRlZFN0cmluZyYpOwotCi0gICAgdm9pZCBhcHBlbmRUb1Rl
bXBvcmFyeUJ1ZmZlcihVQ2hhcik7Ci0gICAgYm9vbCB0ZW1wb3JhcnlCdWZmZXJJcyhjb25zdCBj
aGFyKik7Ci0KLSAgICAvLyBTb21ldGltZXMgd2Ugc3BlY3VsYXRpdmVseSBjb25zdW1lIGlucHV0
IGNoYXJhY3RlcnMgYW5kIHdlIGRvbid0IGtub3cgd2hldGhlciB0aGV5IHJlcHJlc2VudAotICAg
IC8vIGVuZCB0YWdzIG9yIFJDREFUQSwgZXRjLiBUaGVzZSBmdW5jdGlvbnMgaGVscCBtYW5hZ2Ug
dGhlc2Ugc3RhdGUuCi0gICAgYm9vbCBpbkVuZFRhZ0J1ZmZlcmluZ1N0YXRlKCkgY29uc3Q7Ci0g
ICAgdm9pZCBhcHBlbmRUb1Bvc3NpYmxlRW5kVGFnKFVDaGFyKTsKLSAgICB2b2lkIHNhdmVFbmRU
YWdOYW1lSWZOZWVkZWQoKTsKLSAgICBib29sIGlzQXBwcm9wcmlhdGVFbmRUYWcoKSBjb25zdDsK
KyAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiBpdCBlbWl0cyBhIHRva2VuLiBP
dGhlcndpc2UsIGNhbGxlcnMKKyAgICAvLyBtdXN0IHByb3ZpZGUgdGhlIHNhbWUgKGluIHByb2dy
ZXNzKSB0b2tlbiBvbiB0aGUgbmV4dCBjYWxsICh1bmxlc3MKKyAgICAvLyB0aGV5IGNhbGwgcmVz
ZXQoKSBmaXJzdCkuCisgICAgYm9vbCBuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiwgSFRNTFRv
a2VuJik7CiAKLSAgICBib29sIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCkgY29uc3Q7Ci0K
LSAgICBzdGF0aWMgYm9vbCBpc051bGxDaGFyYWN0ZXJTa2lwcGluZ1N0YXRlKFN0YXRlKTsKLQot
ICAgIFN0YXRlIG1fc3RhdGUgeyBEYXRhU3RhdGUgfTsKLSAgICBib29sIG1fZm9yY2VOdWxsQ2hh
cmFjdGVyUmVwbGFjZW1lbnQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9zaG91bGRBbGxvd0NEQVRB
IHsgZmFsc2UgfTsKLQotICAgIG11dGFibGUgSFRNTFRva2VuIG1fdG9rZW47Ci0KLSAgICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhZGRpdGlvbmFsLWFsbG93ZWQtY2hhcmFjdGVy
Ci0gICAgVUNoYXIgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciB7IDAgfTsKLQotICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3ByZXByb2Nlc3NpbmctdGhlLWlucHV0LXN0
cmVhbQotICAgIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yPEhUTUxUb2tlbml6ZXI+IG1fcHJlcHJv
Y2Vzc29yOwotCi0gICAgVmVjdG9yPFVDaGFyLCAzMj4gbV9hcHByb3ByaWF0ZUVuZFRhZ05hbWU7
Ci0KLSAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0ZW1wb3JhcnktYnVmZmVy
Ci0gICAgVmVjdG9yPExDaGFyLCAzMj4gbV90ZW1wb3JhcnlCdWZmZXI7Ci0KLSAgICAvLyBXZSBv
Y2Nhc2lvbmFsbHkgd2FudCB0byBlbWl0IGJvdGggYSBjaGFyYWN0ZXIgdG9rZW4gYW5kIGFuIGVu
ZCB0YWcKLSAgICAvLyB0b2tlbiAoZS5nLiwgd2hlbiBsZXhpbmcgc2NyaXB0KS4gV2UgYnVmZmVy
IHRoZSBuYW1lIG9mIHRoZSBlbmQgdGFnCi0gICAgLy8gdG9rZW4gaGVyZSBzbyB3ZSByZW1lbWJl
ciBpdCBuZXh0IHRpbWUgd2UgcmUtZW50ZXIgdGhlIHRva2VuaXplci4KLSAgICBWZWN0b3I8TENo
YXIsIDMyPiBtX2J1ZmZlcmVkRW5kVGFnTmFtZTsKKyAgICAvLyBSZXR1cm5zIGEgY29weSBvZiBh
bnkgY2hhcmFjdGVycyBidWZmZXJlZCBpbnRlcm5hbGx5IGJ5IHRoZSB0b2tlbml6ZXIuCisgICAg
Ly8gVGhlIHRva2VuaXplciBidWZmZXJzIGNoYXJhY3RlcnMgd2hlbiBzZWFyY2hpbmcgZm9yIHRo
ZSA8L3NjcmlwdD4gdG9rZW4KKyAgICAvLyB0aGF0IHRlcm1pbmF0ZXMgYSBzY3JpcHQgZWxlbWVu
dC4KKyAgICBTdHJpbmcgYnVmZmVyZWRDaGFyYWN0ZXJzKCkgY29uc3Q7CiAKLSAgICBjb25zdCBI
VE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7Ci19OworICAgIHNpemVfdCBudW1iZXJPZkJ1ZmZl
cmVkQ2hhcmFjdGVycygpIGNvbnN0CisgICAgeworICAgICAgICAvLyBOb3RpY2UgdGhhdCB3ZSBh
ZGQgMiB0byB0aGUgbGVuZ3RoIG9mIHRoZSBtX3RlbXBvcmFyeUJ1ZmZlciB0bworICAgICAgICAv
LyBhY2NvdW50IGZvciB0aGUgIjwvIiBjaGFyYWN0ZXJzLCB3aGljaCBhcmUgZWZmZWNpdHZlbHkg
YnVmZmVyZWQgaW4KKyAgICAgICAgLy8gdGhlIHRva2VuaXplcidzIHN0YXRlIG1hY2hpbmUuCisg
ICAgICAgIHJldHVybiBtX3RlbXBvcmFyeUJ1ZmZlci5zaXplKCkgPyBtX3RlbXBvcmFyeUJ1ZmZl
ci5zaXplKCkgKyAyIDogMDsKKyAgICB9CiAKLWNsYXNzIEhUTUxUb2tlbml6ZXI6OlRva2VuUHRy
IHsKLXB1YmxpYzoKLSAgICBUb2tlblB0cigpOwotICAgIH5Ub2tlblB0cigpOworICAgIC8vIFVw
ZGF0ZXMgdGhlIHRva2VuaXplcidzIHN0YXRlIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gdGFnIG5h
bWUuIFRoaXMgaXMKKyAgICAvLyBhbiBhcHByb3hpbWF0aW9uIG9mIGhvdyB0aGUgdHJlZSBidWls
ZGVyIHdvdWxkIHVwZGF0ZSB0aGUgdG9rZW5pemVyJ3MKKyAgICAvLyBzdGF0ZS4gVGhpcyBtZXRo
b2QgaXMgdXNlZnVsIGZvciBhcHByb3hpbWF0aW5nIEhUTUwgdG9rZW5pemF0aW9uLiBUbworICAg
IC8vIGdldCBleGFjdGx5IHRoZSBjb3JyZWN0IHRva2VuaXphdGlvbiwgeW91IG5lZWQgdGhlIHJl
YWwgdHJlZSBidWlsZGVyLgorICAgIC8vCisgICAgLy8gVGhlIG1haW4gZmFpbHVyZXMgaW4gdGhl
IGFwcHJveGltYXRpb24gYXJlIGFzIGZvbGxvd3M6CisgICAgLy8KKyAgICAvLyAgKiBUaGUgZmly
c3Qgc2V0IG9mIGNoYXJhY3RlciB0b2tlbnMgZW1pdHRlZCBmb3IgYSA8cHJlPiBlbGVtZW50IG1p
Z2h0CisgICAgLy8gICAgY29udGFpbiBhbiBleHRyYSBsZWFkaW5nIG5ld2xpbmUuCisgICAgLy8g
ICogVGhlIHJlcGxhY2VtZW50IG9mIFUrMDAwMCB3aXRoIFUrRkZGRCB3aWxsIG5vdCBiZSBzZW5z
aXRpdmUgdG8gdGhlCisgICAgLy8gICAgdHJlZSBidWlsZGVyJ3MgaW5zZXJ0aW9uIG1vZGUuCisg
ICAgLy8gICogQ0RBVEEgc2VjdGlvbnMgaW4gZm9yZWlnbiBjb250ZW50IHdpbGwgYmUgdG9rZW5p
emVkIGFzIGJvZ3VzIGNvbW1lbnRzCisgICAgLy8gICAgaW5zdGVhZCBvZiBhcyBjaGFyYWN0ZXIg
dG9rZW5zLgorICAgIC8vCisgICAgdm9pZCB1cGRhdGVTdGF0ZUZvcihjb25zdCBBdG9taWNTdHJp
bmcmIHRhZ05hbWUpOwogCi0gICAgVG9rZW5QdHIoVG9rZW5QdHImJik7Ci0gICAgVG9rZW5QdHIm
IG9wZXJhdG9yPShUb2tlblB0ciYmKSA9IGRlbGV0ZTsKKyAgICBib29sIGZvcmNlTnVsbENoYXJh
Y3RlclJlcGxhY2VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mb3JjZU51bGxDaGFyYWN0ZXJSZXBs
YWNlbWVudDsgfQorICAgIHZvaWQgc2V0Rm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQoYm9v
bCB2YWx1ZSkgeyBtX2ZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50ID0gdmFsdWU7IH0KIAot
ICAgIHZvaWQgY2xlYXIoKTsKKyAgICBib29sIHNob3VsZEFsbG93Q0RBVEEoKSBjb25zdCB7IHJl
dHVybiBtX3Nob3VsZEFsbG93Q0RBVEE7IH0KKyAgICB2b2lkIHNldFNob3VsZEFsbG93Q0RBVEEo
Ym9vbCB2YWx1ZSkgeyBtX3Nob3VsZEFsbG93Q0RBVEEgPSB2YWx1ZTsgfQogCi0gICAgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0OworICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZTsgfQorICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUgc3RhdGUpIHsgbV9zdGF0ZSA9IHN0YXRlOyB9
CiAKLSAgICBIVE1MVG9rZW4mIG9wZXJhdG9yKigpIGNvbnN0OwotICAgIEhUTUxUb2tlbiogb3Bl
cmF0b3ItPigpIGNvbnN0OworICAgIGlubGluZSBib29sIHNob3VsZFNraXBOdWxsQ2hhcmFjdGVy
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIW1fZm9yY2VOdWxsQ2hhcmFjdGVyUmVw
bGFjZW1lbnQKKyAgICAgICAgICAgICYmIChtX3N0YXRlID09IEhUTUxUb2tlbml6ZXI6OkRhdGFT
dGF0ZQorICAgICAgICAgICAgICAgIHx8IG1fc3RhdGUgPT0gSFRNTFRva2VuaXplcjo6UkNEQVRB
U3RhdGUKKyAgICAgICAgICAgICAgICB8fCBtX3N0YXRlID09IEhUTUxUb2tlbml6ZXI6OlJBV1RF
WFRTdGF0ZSk7CisgICAgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBIVE1MVG9rZW5p
emVyOwotICAgIGV4cGxpY2l0IFRva2VuUHRyKEhUTUxUb2tlbiopOworICAgIGlubGluZSBib29s
IHByb2Nlc3NFbnRpdHkoU2VnbWVudGVkU3RyaW5nJik7CiAKLSAgICBIVE1MVG9rZW4qIG1fdG9r
ZW4geyBudWxscHRyIH07Ci19OwotCi1pbmxpbmUgSFRNTFRva2VuaXplcjo6VG9rZW5QdHI6OlRv
a2VuUHRyKCkKLXsKLX0KKyAgICBpbmxpbmUgdm9pZCBwYXJzZUVycm9yKCk7CiAKLWlubGluZSBI
VE1MVG9rZW5pemVyOjpUb2tlblB0cjo6VG9rZW5QdHIoSFRNTFRva2VuKiB0b2tlbikKLSAgICA6
IG1fdG9rZW4odG9rZW4pCi17Ci19Ci0KLWlubGluZSBIVE1MVG9rZW5pemVyOjpUb2tlblB0cjo6
flRva2VuUHRyKCkKLXsKLSAgICBpZiAobV90b2tlbikKLSAgICAgICAgbV90b2tlbi0+Y2xlYXIo
KTsKLX0KKyAgICB2b2lkIGJ1ZmZlckFTQ0lJQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKKyAg
ICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIgIT0ga0VuZE9mRmlsZU1hcmtlcik7CisgICAg
ICAgIEFTU0VSVChpc0FTQ0lJKGNoYXJhY3RlcikpOworICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0NoYXJhY3RlcihzdGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyKSk7CisgICAgfQogCi1pbmxp
bmUgSFRNTFRva2VuaXplcjo6VG9rZW5QdHI6OlRva2VuUHRyKFRva2VuUHRyJiYgb3RoZXIpCi0g
ICAgOiBtX3Rva2VuKG90aGVyLm1fdG9rZW4pCi17Ci0gICAgb3RoZXIubV90b2tlbiA9IG51bGxw
dHI7Ci19CisgICAgdm9pZCBidWZmZXJDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGNoYXJhY3RlciAhPSBrRW5kT2ZGaWxlTWFya2VyKTsKKyAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIoY2hhcmFjdGVyKTsKKyAgICB9CisgICAgdm9pZCBi
dWZmZXJDaGFyYWN0ZXIoY2hhcikgPSBkZWxldGU7CisgICAgdm9pZCBidWZmZXJDaGFyYWN0ZXIo
TENoYXIpID0gZGVsZXRlOworCisgICAgaW5saW5lIGJvb2wgZW1pdEFuZFJlc3VtZUluKFNlZ21l
bnRlZFN0cmluZyYgc291cmNlLCBTdGF0ZSBzdGF0ZSkKKyAgICB7CisgICAgICAgIHNhdmVFbmRU
YWdOYW1lSWZOZWVkZWQoKTsKKyAgICAgICAgbV9zdGF0ZSA9IHN0YXRlOworICAgICAgICBzb3Vy
Y2UuYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXIoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIGlubGluZSBib29sIGVtaXRBbmRSZWNvbnN1bWVJbihTZWdtZW50ZWRT
dHJpbmcmLCBTdGF0ZSBzdGF0ZSkKKyAgICB7CisgICAgICAgIHNhdmVFbmRUYWdOYW1lSWZOZWVk
ZWQoKTsKKyAgICAgICAgbV9zdGF0ZSA9IHN0YXRlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CiAKLWlubGluZSB2b2lkIEhUTUxUb2tlbml6ZXI6OlRva2VuUHRyOjpjbGVhcigpCi17Ci0g
ICAgaWYgKG1fdG9rZW4pIHsKKyAgICBpbmxpbmUgYm9vbCBlbWl0RW5kT2ZGaWxlKFNlZ21lbnRl
ZFN0cmluZyYgc291cmNlKQorICAgIHsKKyAgICAgICAgaWYgKGhhdmVCdWZmZXJlZENoYXJhY3Rl
clRva2VuKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgbV9zdGF0ZSA9IEhU
TUxUb2tlbml6ZXI6OkRhdGFTdGF0ZTsKKyAgICAgICAgc291cmNlLmFkdmFuY2VBbmRVcGRhdGVM
aW5lTnVtYmVyKCk7CiAgICAgICAgIG1fdG9rZW4tPmNsZWFyKCk7Ci0gICAgICAgIG1fdG9rZW4g
PSBudWxscHRyOworICAgICAgICBtX3Rva2VuLT5tYWtlRW5kT2ZGaWxlKCk7CisgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KLX0KIAotaW5saW5lIEhUTUxUb2tlbml6ZXI6OlRva2VuUHRyOjpv
cGVyYXRvciBib29sKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90b2tlbjsKLX0KLQotaW5saW5l
IEhUTUxUb2tlbiYgSFRNTFRva2VuaXplcjo6VG9rZW5QdHI6Om9wZXJhdG9yKigpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKG1fdG9rZW4pOwotICAgIHJldHVybiAqbV90b2tlbjsKLX0KLQotaW5saW5l
IEhUTUxUb2tlbiogSFRNTFRva2VuaXplcjo6VG9rZW5QdHI6Om9wZXJhdG9yLT4oKSBjb25zdAot
ewotICAgIEFTU0VSVChtX3Rva2VuKTsKLSAgICByZXR1cm4gbV90b2tlbjsKLX0KKyAgICBpbmxp
bmUgYm9vbCBmbHVzaEVtaXRBbmRSZXN1bWVJbihTZWdtZW50ZWRTdHJpbmcmLCBTdGF0ZSk7CiAK
LWlubGluZSBIVE1MVG9rZW5pemVyOjpUb2tlblB0ciBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4o
U2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCi17Ci0gICAgcmV0dXJuIFRva2VuUHRyKHByb2Nlc3NU
b2tlbihzb3VyY2UpID8gJm1fdG9rZW4gOiBudWxscHRyKTsKLX0KKyAgICAvLyBSZXR1cm4gd2hl
dGhlciB3ZSBuZWVkIHRvIGVtaXQgYSBjaGFyYWN0ZXIgdG9rZW4gYmVmb3JlIGRlYWxpbmcgd2l0
aAorICAgIC8vIHRoZSBidWZmZXJlZCBlbmQgdGFnLgorICAgIGlubGluZSBib29sIGZsdXNoQnVm
ZmVyZWRFbmRUYWcoU2VnbWVudGVkU3RyaW5nJik7CisgICAgaW5saW5lIGJvb2wgdGVtcG9yYXJ5
QnVmZmVySXMoY29uc3QgU3RyaW5nJik7CiAKLWlubGluZSBzaXplX3QgSFRNTFRva2VuaXplcjo6
bnVtYmVyT2ZCdWZmZXJlZENoYXJhY3RlcnMoKSBjb25zdAotewotICAgIC8vIE5vdGljZSB0aGF0
IHdlIGFkZCAyIHRvIHRoZSBsZW5ndGggb2YgdGhlIG1fdGVtcG9yYXJ5QnVmZmVyIHRvCi0gICAg
Ly8gYWNjb3VudCBmb3IgdGhlICI8LyIgY2hhcmFjdGVycywgd2hpY2ggYXJlIGVmZmVjaXR2ZWx5
IGJ1ZmZlcmVkIGluCi0gICAgLy8gdGhlIHRva2VuaXplcidzIHN0YXRlIG1hY2hpbmUuCi0gICAg
cmV0dXJuIG1fdGVtcG9yYXJ5QnVmZmVyLnNpemUoKSA/IG1fdGVtcG9yYXJ5QnVmZmVyLnNpemUo
KSArIDIgOiAwOwotfQorICAgIC8vIFNvbWV0aW1lcyB3ZSBzcGVjdWxhdGl2ZWx5IGNvbnN1bWUg
aW5wdXQgY2hhcmFjdGVycyBhbmQgd2UgZG9uJ3QKKyAgICAvLyBrbm93IHdoZXRoZXIgdGhleSBy
ZXByZXNlbnQgZW5kIHRhZ3Mgb3IgUkNEQVRBLCBldGMuIFRoZXNlCisgICAgLy8gZnVuY3Rpb25z
IGhlbHAgbWFuYWdlIHRoZXNlIHN0YXRlLgorICAgIGlubGluZSB2b2lkIGFkZFRvUG9zc2libGVF
bmRUYWcoTENoYXIgY2MpOwogCi1pbmxpbmUgdm9pZCBIVE1MVG9rZW5pemVyOjpzZXRGb3JjZU51
bGxDaGFyYWN0ZXJSZXBsYWNlbWVudChib29sIHZhbHVlKQotewotICAgIG1fZm9yY2VOdWxsQ2hh
cmFjdGVyUmVwbGFjZW1lbnQgPSB2YWx1ZTsKLX0KKyAgICBpbmxpbmUgdm9pZCBzYXZlRW5kVGFn
TmFtZUlmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkgIT0g
SFRNTFRva2VuOjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW46OlN0YXJ0VGFnKQorICAgICAgICAgICAgbV9hcHByb3ByaWF0ZUVuZFRhZ05h
bWUgPSBtX3Rva2VuLT5uYW1lKCk7CisgICAgfQorICAgIGlubGluZSBib29sIGlzQXBwcm9wcmlh
dGVFbmRUYWcoKTsKIAotaW5saW5lIGJvb2wgSFRNTFRva2VuaXplcjo6c2hvdWxkQWxsb3dDREFU
QSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hvdWxkQWxsb3dDREFUQTsKLX0KIAotaW5saW5l
IHZvaWQgSFRNTFRva2VuaXplcjo6c2V0U2hvdWxkQWxsb3dDREFUQShib29sIHZhbHVlKQotewot
ICAgIG1fc2hvdWxkQWxsb3dDREFUQSA9IHZhbHVlOwotfQorICAgIGlubGluZSBib29sIGhhdmVC
dWZmZXJlZENoYXJhY3RlclRva2VuKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Rva2VuLT50
eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXI7CisgICAgfQogCi1pbmxpbmUgYm9vbCBIVE1M
VG9rZW5pemVyOjppc0luRGF0YVN0YXRlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGF0ZSA9
PSBEYXRhU3RhdGU7Ci19CisgICAgU3RhdGUgbV9zdGF0ZTsKKyAgICBib29sIG1fZm9yY2VOdWxs
Q2hhcmFjdGVyUmVwbGFjZW1lbnQ7CisgICAgYm9vbCBtX3Nob3VsZEFsbG93Q0RBVEE7CiAKLWlu
bGluZSB2b2lkIEhUTUxUb2tlbml6ZXI6OnNldERhdGFTdGF0ZSgpCi17Ci0gICAgbV9zdGF0ZSA9
IERhdGFTdGF0ZTsKLX0KKyAgICAvLyBtX3Rva2VuIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIuIElm
IG5leHRUb2tlbiBpcyBub3Qgb24gdGhlIHN0YWNrLAorICAgIC8vIHRoaXMgbWVtYmVyIG1pZ2h0
IGJlIHBvaW50aW5nIHRvIHVuYWxsb2NhdGVkIG1lbW9yeS4KKyAgICBIVE1MVG9rZW4qIG1fdG9r
ZW47CiAKLWlubGluZSB2b2lkIEhUTUxUb2tlbml6ZXI6OnNldFBMQUlOVEVYVFN0YXRlKCkKLXsK
LSAgICBtX3N0YXRlID0gUExBSU5URVhUU3RhdGU7Ci19CisgICAgLy8gaHR0cDovL3d3dy53aGF0
d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jYWRkaXRpb25hbC1hbGxvd2VkLWNo
YXJhY3RlcgorICAgIFVDaGFyIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXI7CiAKLWlubGlu
ZSB2b2lkIEhUTUxUb2tlbml6ZXI6OnNldFJBV1RFWFRTdGF0ZSgpCi17Ci0gICAgbV9zdGF0ZSA9
IFJBV1RFWFRTdGF0ZTsKLX0KKyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrLyNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0KKyAgICBJ
bnB1dFN0cmVhbVByZXByb2Nlc3NvcjxIVE1MVG9rZW5pemVyPiBtX2lucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yOwogCi1pbmxpbmUgdm9pZCBIVE1MVG9rZW5pemVyOjpzZXRSQ0RBVEFTdGF0ZSgpCi17
Ci0gICAgbV9zdGF0ZSA9IFJDREFUQVN0YXRlOwotfQorICAgIFZlY3RvcjxVQ2hhciwgMzI+IG1f
YXBwcm9wcmlhdGVFbmRUYWdOYW1lOwogCi1pbmxpbmUgdm9pZCBIVE1MVG9rZW5pemVyOjpzZXRT
Y3JpcHREYXRhU3RhdGUoKQotewotICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhU3RhdGU7Ci19Cisg
ICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8j
dGVtcG9yYXJ5LWJ1ZmZlcgorICAgIFZlY3RvcjxMQ2hhciwgMzI+IG1fdGVtcG9yYXJ5QnVmZmVy
OwogCi1pbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjppc051bGxDaGFyYWN0ZXJTa2lwcGluZ1N0
YXRlKFN0YXRlIHN0YXRlKQotewotICAgIHJldHVybiBzdGF0ZSA9PSBEYXRhU3RhdGUgfHwgc3Rh
dGUgPT0gUkNEQVRBU3RhdGUgfHwgc3RhdGUgPT0gUkFXVEVYVFN0YXRlOwotfQorICAgIC8vIFdl
IG9jY2F0aW9uYWxseSB3YW50IHRvIGVtaXQgYm90aCBhIGNoYXJhY3RlciB0b2tlbiBhbmQgYW4g
ZW5kIHRhZworICAgIC8vIHRva2VuIChlLmcuLCB3aGVuIGxleGluZyBzY3JpcHQpLiBXZSBidWZm
ZXIgdGhlIG5hbWUgb2YgdGhlIGVuZCB0YWcKKyAgICAvLyB0b2tlbiBoZXJlIHNvIHdlIHJlbWVt
YmVyIGl0IG5leHQgdGltZSB3ZSByZS1lbnRlciB0aGUgdG9rZW5pemVyLgorICAgIFZlY3RvcjxM
Q2hhciwgMzI+IG1fYnVmZmVyZWRFbmRUYWdOYW1lOwogCi1pbmxpbmUgYm9vbCBIVE1MVG9rZW5p
emVyOjpuZXZlclNraXBOdWxsQ2hhcmFjdGVycygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZm9y
Y2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQ7Ci19CisgICAgSFRNTFBhcnNlck9wdGlvbnMgbV9v
cHRpb25zOworfTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRy
ZWVCdWlsZGVyLmNwcAppbmRleCAwNDJjYTBlYzkxNDFjNzM2NDE0ZGFmYjUwNDQxZDdmNjJjMTgw
ZTk1Li5lYWNhMGViMjBhNzM0ZTBkZTlhYmRlMjgxNDJlODljZGIwZmVhYzE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTY5NSw3ICs2
OTUsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBwbGFpbnRleHRU
YWcpIHsKICAgICAgICAgcHJvY2Vzc0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgpOwogICAg
ICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQoJnRva2VuKTsKLSAgICAgICAgbV9wYXJzZXIu
dG9rZW5pemVyKCkuc2V0UExBSU5URVhUU3RhdGUoKTsKKyAgICAgICAgbV9wYXJzZXIudG9rZW5p
emVyKCkuc2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gYnV0dG9uVGFnKSB7CkBAIC03
OTksNyArNzk5LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0Zvcklu
Qm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gdGV4
dGFyZWFUYWcpIHsKICAgICAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KCZ0b2tlbik7CiAg
ICAgICAgIG1fc2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lID0gdHJ1ZTsKLSAgICAgICAgbV9wYXJz
ZXIudG9rZW5pemVyKCkuc2V0UkNEQVRBU3RhdGUoKTsKKyAgICAgICAgbV9wYXJzZXIudG9rZW5p
emVyKCkuc2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkNEQVRBU3RhdGUpOwogICAgICAgICBtX29y
aWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKICAgICAgICAgbV9mcmFtZXNl
dE9rID0gZmFsc2U7CiAgICAgICAgIG1faW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGU6OlRl
eHQ7CkBAIC0yMTM3LDggKzIxMzcsOCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Vu
ZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgLy8gc2VsZi1jbG9zaW5n
IHNjcmlwdCB0YWcgd2FzIGVuY291bnRlcmVkIGFuZCBwcmUtSFRNTDUgcGFyc2VyCiAgICAgICAg
ICAgICAvLyBxdWlya3MgYXJlIGVuYWJsZWQuIFdlIG11c3Qgc2V0IHRoZSB0b2tlbml6ZXIncyBz
dGF0ZSB0bwogICAgICAgICAgICAgLy8gRGF0YVN0YXRlIGV4cGxpY2l0bHkgaWYgdGhlIHRva2Vu
aXplciBkaWRuJ3QgaGF2ZSBhIGNoYW5jZSB0by4KLSAgICAgICAgICAgIEFTU0VSVChtX3BhcnNl
ci50b2tlbml6ZXIoKS5pc0luRGF0YVN0YXRlKCkgfHwgbV9vcHRpb25zLnVzZVByZUhUTUw1UGFy
c2VyUXVpcmtzKTsKLSAgICAgICAgICAgIG1fcGFyc2VyLnRva2VuaXplcigpLnNldERhdGFTdGF0
ZSgpOworICAgICAgICAgICAgQVNTRVJUKG1fcGFyc2VyLnRva2VuaXplcigpLnN0YXRlKCkgPT0g
SFRNTFRva2VuaXplcjo6RGF0YVN0YXRlIHx8IG1fb3B0aW9ucy51c2VQcmVIVE1MNVBhcnNlclF1
aXJrcyk7CisgICAgICAgICAgICBtX3BhcnNlci50b2tlbml6ZXIoKS5zZXRTdGF0ZShIVE1MVG9r
ZW5pemVyOjpEYXRhU3RhdGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS5wb3AoKTsKQEAgLTI3MzksNyArMjczOSw3IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKEF0b21pY0hU
TUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46
OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQoJnRva2VuKTsKLSAgICBt
X3BhcnNlci50b2tlbml6ZXIoKS5zZXRSQ0RBVEFTdGF0ZSgpOworICAgIG1fcGFyc2VyLnRva2Vu
aXplcigpLnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlKTsKICAgICBtX29yaWdp
bmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKICAgICBtX2luc2VydGlvbk1vZGUg
PSBJbnNlcnRpb25Nb2RlOjpUZXh0OwogfQpAQCAtMjc0OCw3ICsyNzQ4LDcgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tl
biYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0
VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQoJnRva2VuKTsKLSAgICBtX3BhcnNl
ci50b2tlbml6ZXIoKS5zZXRSQVdURVhUU3RhdGUoKTsKKyAgICBtX3BhcnNlci50b2tlbml6ZXIo
KS5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQVdURVhUU3RhdGUpOwogICAgIG1fb3JpZ2luYWxJ
bnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwogICAgIG1faW5zZXJ0aW9uTW9kZSA9IElu
c2VydGlvbk1vZGU6OlRleHQ7CiB9CkBAIC0yNzU3LDcgKzI3NTcsNyBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc1NjcmlwdFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7
CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBt
X3RyZWUuaW5zZXJ0U2NyaXB0RWxlbWVudCgmdG9rZW4pOwotICAgIG1fcGFyc2VyLnRva2VuaXpl
cigpLnNldFNjcmlwdERhdGFTdGF0ZSgpOworICAgIG1fcGFyc2VyLnRva2VuaXplcigpLnNldFN0
YXRlKEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFTdGF0ZSk7CiAgICAgbV9vcmlnaW5hbEluc2Vy
dGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7CiAKICAgICBUZXh0UG9zaXRpb24gcG9zaXRpb24g
PSBtX3BhcnNlci50ZXh0UG9zaXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9JbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5oCmluZGV4IDYyOTBjMTUxY2ViZGVlNjE4
Yjc1MDI1MjNjN2RhZTQ5Y2Q1ZDc1NmEuLmZmZDYzOWFiZTBkOTI3NzAxMTlhOTNmYmI0OTczMGRi
OTFmNDhkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0lucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3IuaApAQCAtNDAsNyArNDAsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VG9rZW5pemVyPgogY2xhc3MgSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKElucHV0U3RyZWFtUHJlcHJvY2Vzc29yKTsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBJbnB1dFN0cmVhbVByZXByb2Nlc3NvcihUb2tlbml6ZXImIHRva2VuaXplcikKKyAgICBJ
bnB1dFN0cmVhbVByZXByb2Nlc3NvcihUb2tlbml6ZXIqIHRva2VuaXplcikKICAgICAgICAgOiBt
X3Rva2VuaXplcih0b2tlbml6ZXIpCiAgICAgewogICAgICAgICByZXNldCgpOwpAQCAtNTEsMTEg
KzUxLDggQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgd2hldGhlciB3ZSBzdWNjZWVkZWQgaW4g
cGVla2luZyBhdCB0aGUgbmV4dCBjaGFyYWN0ZXIuCiAgICAgLy8gVGhlIG9ubHkgd2F5IHdlIGNh
biBmYWlsIHRvIHBlZWsgaXMgaWYgdGhlcmUgYXJlIG5vIG1vcmUKICAgICAvLyBjaGFyYWN0ZXJz
IGluIHxzb3VyY2V8IChhZnRlciBjb2xsYXBzaW5nIFxyXG4sIGV0YykuCi0gICAgQUxXQVlTX0lO
TElORSBib29sIHBlZWsoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGJvb2wgc2tpcE51bGxDaGFy
YWN0ZXJzID0gZmFsc2UpCisgICAgQUxXQVlTX0lOTElORSBib29sIHBlZWsoU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UpCiAgICAgewotICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9IHNv
dXJjZS5jdXJyZW50Q2hhcigpOwogCiAgICAgICAgIC8vIEV2ZXJ5IGJyYW5jaCBpbiB0aGlzIGZ1
bmN0aW9uIGlzIGV4cGVuc2l2ZSwgc28gd2UgaGF2ZSBhCkBAIC02NywxNCArNjQsMTYgQEAgcHVi
bGljOgogICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwcm9jZXNzTmV4dElucHV0
Q2hhcmFjdGVyKHNvdXJjZSwgc2tpcE51bGxDaGFyYWN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIHBy
b2Nlc3NOZXh0SW5wdXRDaGFyYWN0ZXIoc291cmNlKTsKICAgICB9CiAKICAgICAvLyBSZXR1cm5z
IHdoZXRoZXIgdGhlcmUgYXJlIG1vcmUgY2hhcmFjdGVycyBpbiB8c291cmNlfCBhZnRlciBhZHZh
bmNpbmcuCi0gICAgQUxXQVlTX0lOTElORSBib29sIGFkdmFuY2UoU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIGJvb2wgc2tpcE51bGxDaGFyYWN0ZXJzID0gZmFsc2UpCisgICAgQUxXQVlTX0lOTElO
RSBib29sIGFkdmFuY2UoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgewogICAgICAgICBz
b3VyY2UuYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXIoKTsKLSAgICAgICAgcmV0dXJuIHBlZWso
c291cmNlLCBza2lwTnVsbENoYXJhY3RlcnMpOworICAgICAgICBpZiAoc291cmNlLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHBlZWsoc291cmNl
KTsKICAgICB9CiAKICAgICBib29sIHNraXBOZXh0TmV3TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2tpcE5leHROZXdMaW5lOyB9CkBAIC04Niw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgYm9vbCBwcm9jZXNzTmV4dElucHV0Q2hhcmFjdGVyKFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlLCBib29sIHNraXBOdWxsQ2hhcmFjdGVycykKKyAgICBib29sIHByb2Nlc3NOZXh0
SW5wdXRDaGFyYWN0ZXIoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgewogICAgIFByb2Nl
c3NBZ2FpbjoKICAgICAgICAgQVNTRVJUKG1fbmV4dElucHV0Q2hhcmFjdGVyID09IHNvdXJjZS5j
dXJyZW50Q2hhcigpKTsKQEAgLTEwOCw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Ly8gYnkgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rlci4gV2Ugc3VzcGVjdCB0aGlzIGlzIGEgcHJv
YmxlbSB3aXRoIHRoZSBzcGVjIGFzIGRvaW5nCiAgICAgICAgICAgICAvLyB0aGF0IGZpbHRlcmlu
ZyBicmVha3Mgc3Vycm9nYXRlIHBhaXIgaGFuZGxpbmcgYW5kIGNhdXNlcyB1cyBub3QgdG8gbWF0
Y2ggTWluZWZpZWxkLgogICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyID09ICdc
MCcgJiYgIXNob3VsZFRyZWF0TnVsbEFzRW5kT2ZGaWxlTWFya2VyKHNvdXJjZSkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoc2tpcE51bGxDaGFyYWN0ZXJzICYmICFtX3Rva2VuaXplci5uZXZlclNr
aXBOdWxsQ2hhcmFjdGVycygpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fdG9rZW5pemVyLT5z
aG91bGRTa2lwTnVsbENoYXJhY3RlcnMoKSkgewogICAgICAgICAgICAgICAgICAgICBzb3VyY2Uu
YWR2YW5jZVBhc3ROb25OZXdsaW5lKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2Uu
aXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI2
LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBzb3VyY2UuaXNDbG9zZWQoKSAm
JiBzb3VyY2UubGVuZ3RoKCkgPT0gMTsKICAgICB9CiAKLSAgICBUb2tlbml6ZXImIG1fdG9rZW5p
emVyOworICAgIFRva2VuaXplciogbV90b2tlbml6ZXI7CiAKICAgICAvLyBodHRwOi8vd3d3Lndo
YXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNuZXh0LWlucHV0LWNoYXJhY3Rl
cgogICAgIFVDaGFyIG1fbmV4dElucHV0Q2hhcmFjdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNWZhNjJhMzIyYTM2Mzg5
MzcxNmQ1MTVjODJkMzU2ZTgwNzhlZDc0Zi4uOWRmNjk5NjExYzkzMzZkZWNmNTM1M2ViMjAyNjgw
NTUyM2Y3ZWJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERv
Y3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9j
dW1lbnRQYXJzZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgVGV4dERvY3VtZW50UGFyc2Vy
OjppbnNlcnRGYWtlUHJlRWxlbWVudCgpCiAKICAgICAvLyBBbHRob3VnaCBUZXh0IERvY3VtZW50
cyBleHBvc2UgYSAicHJlIiBlbGVtZW50IGluIHRoZWlyIERPTSwgdGhleQogICAgIC8vIGFjdCBs
aWtlIGEgPHBsYWludGV4dD4gdGFnLCBzbyB3ZSBoYXZlIHRvIGZvcmNlIHBsYWludGV4dCBtb2Rl
LgotICAgIHRva2VuaXplcigpLnNldFBMQUlOVEVYVFN0YXRlKCk7CisgICAgdG9rZW5pemVyKCku
c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGUpOwogCiAgICAgbV9oYXZlSW5z
ZXJ0ZWRGYWtlUHJlRWxlbWVudCA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuY3BwCmluZGV4IDcyMjAyMWI0MGZkYmY0OWI1NDM4OTRhMDYzMzIzNGI1MWYx
YjZiZGQuLjI5OGM4YzY0ODg4M2I5YTllYWRiNzA4Y2NlZmQ1NGEyNzhlMmNiNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC01NjYsNyArNTY2LDcgQEAg
Ym9vbCBYU1NBdWRpdG9yOjplcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQoY29uc3QgRmlsdGVyVG9r
ZW5SZXF1ZXN0JiByZXF1ZXN0LCBjb24KIFN0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVkU25pcHBl
dEZvck5hbWUoY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIC8vIEdy
YWIgYSBmaXhlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRo
ZSB0b2tlbidzIG5hbWUgcGx1cyBvbmUgKHRvIGFjY291bnQgZm9yIHRoZSAiPCIpLgotICAgIHJl
dHVybiBmdWxseURlY29kZVN0cmluZyhyZXF1ZXN0LnNvdXJjZVRyYWNrZXIuc291cmNlKHJlcXVl
c3QudG9rZW4pLCBtX2VuY29kaW5nKS5zdWJzdHJpbmcoMCwgcmVxdWVzdC50b2tlbi5uYW1lKCku
c2l6ZSgpICsgMSk7CisgICAgcmV0dXJuIGZ1bGx5RGVjb2RlU3RyaW5nKHJlcXVlc3Quc291cmNl
VHJhY2tlci5zb3VyY2VGb3JUb2tlbihyZXF1ZXN0LnRva2VuKSwgbV9lbmNvZGluZykuc3Vic3Ry
aW5nKDAsIHJlcXVlc3QudG9rZW4ubmFtZSgpLnNpemUoKSArIDEpOwogfQogCiBTdHJpbmcgWFNT
QXVkaXRvcjo6ZGVjb2RlZFNuaXBwZXRGb3JBdHRyaWJ1dGUoY29uc3QgRmlsdGVyVG9rZW5SZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlLCBBdHRy
aWJ1dGVLaW5kIHRyZWF0bWVudCkKQEAgLTU3NSw5ICs1NzUsOSBAQCBTdHJpbmcgWFNTQXVkaXRv
cjo6ZGVjb2RlZFNuaXBwZXRGb3JBdHRyaWJ1dGUoY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiBy
ZXF1ZXN0LAogICAgIC8vIGZvciBhbiBpbnB1dCBvZiB8bmFtZT0idmFsdWUifCwgdGhlIHNuaXBw
ZXQgaXMgfG5hbWU9InZhbHVlfC4gRm9yIGFuCiAgICAgLy8gdW5xdW90ZWQgaW5wdXQgb2YgfG5h
bWU9dmFsdWUgfCwgdGhlIHNuaXBwZXQgaXMgfG5hbWU9dmFsdWV8LgogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgZ3JhYiBvbmUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgbmFtZSBhbHNvLgotICAgIHVu
c2lnbmVkIHN0YXJ0ID0gYXR0cmlidXRlLnN0YXJ0T2Zmc2V0OwotICAgIHVuc2lnbmVkIGVuZCA9
IGF0dHJpYnV0ZS5lbmRPZmZzZXQ7Ci0gICAgU3RyaW5nIGRlY29kZWRTbmlwcGV0ID0gZnVsbHlE
ZWNvZGVTdHJpbmcocmVxdWVzdC5zb3VyY2VUcmFja2VyLnNvdXJjZShyZXF1ZXN0LnRva2VuLCBz
dGFydCwgZW5kKSwgbV9lbmNvZGluZyk7CisgICAgdW5zaWduZWQgc3RhcnQgPSBhdHRyaWJ1dGUu
bmFtZVJhbmdlLnN0YXJ0OworICAgIHVuc2lnbmVkIGVuZCA9IGF0dHJpYnV0ZS52YWx1ZVJhbmdl
LmVuZDsKKyAgICBTdHJpbmcgZGVjb2RlZFNuaXBwZXQgPSBmdWxseURlY29kZVN0cmluZyhyZXF1
ZXN0LnNvdXJjZVRyYWNrZXIuc291cmNlRm9yVG9rZW4ocmVxdWVzdC50b2tlbikuc3Vic3RyaW5n
KHN0YXJ0LCBlbmQgLSBzdGFydCksIG1fZW5jb2RpbmcpOwogICAgIGRlY29kZWRTbmlwcGV0LnRy
dW5jYXRlKGtNYXhpbXVtRnJhZ21lbnRMZW5ndGhUYXJnZXQpOwogICAgIGlmICh0cmVhdG1lbnQg
PT0gU3JjTGlrZUF0dHJpYnV0ZSkgewogICAgICAgICBpbnQgc2xhc2hDb3VudCA9IDA7CkBAIC02
MzAsNyArNjMwLDcgQEAgU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZWRTbmlwcGV0Rm9yQXR0cmli
dXRlKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCwKIAogU3RyaW5nIFhTU0F1ZGl0
b3I6OmRlY29kZWRTbmlwcGV0Rm9ySmF2YVNjcmlwdChjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgU3RyaW5nIHN0cmluZyA9IHJlcXVlc3Quc291cmNlVHJhY2tlci5z
b3VyY2UocmVxdWVzdC50b2tlbik7CisgICAgU3RyaW5nIHN0cmluZyA9IHJlcXVlc3Quc291cmNl
VHJhY2tlci5zb3VyY2VGb3JUb2tlbihyZXF1ZXN0LnRva2VuKTsKICAgICBzaXplX3Qgc3RhcnRQ
b3NpdGlvbiA9IDA7CiAgICAgc2l6ZV90IGVuZFBvc2l0aW9uID0gc3RyaW5nLmxlbmd0aCgpOwog
ICAgIHNpemVfdCBmb3VuZFBvc2l0aW9uID0gbm90Rm91bmQ7CkBAIC03MzcsNCArNzM3LDEyIEBA
IGJvb2wgWFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwp
CiAgICAgcmV0dXJuIChtX2RvY3VtZW50VVJMLmhvc3QoKSA9PSByZXNvdXJjZVVSTC5ob3N0KCkg
JiYgcmVzb3VyY2VVUkwucXVlcnkoKS5pc0VtcHR5KCkpOwogfQogCitib29sIFhTU0F1ZGl0b3I6
OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZG9j
dW1lbnRVUkwuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkKKyAgICAgICAgJiYgbV9kZWNv
ZGVkVVJMLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpCisgICAgICAgICYmIG1fZGVjb2Rl
ZEhUVFBCb2R5LmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpCisgICAgICAgICYmIG1fY2Fj
aGVkRGVjb2RlZFNuaXBwZXQuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3Iu
aAppbmRleCAzNGI2YThmOTNkOTZjOTA5YTRjZjNhZWFmYTIwOTFjMmZmZTgwNzdkLi4yYzU0MWEy
NzliODQzZGU0NDY2MmJjNDI0ZDA2YTQxZWMxMDFmZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvWFNTQXVkaXRvci5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGlu
aXRGb3JGcmFnbWVudCgpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFhTU0luZm8+IGZpbHRlclRv
a2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYpOworICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9B
bm90aGVyVGhyZWFkKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBrTWF4aW11bUZyYWdtZW50TGVuZ3RoVGFyZ2V0ID0gMTAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwCmluZGV4IDBjYjE5ZTg1ZjUzNWViNjE2MGQ4
Y2IzM2RhZGJiOGExNzU3OTJhMWQuLjU2Y2UwOGEwY2U0ZjE4NzY4MzUzMzA5MjYxNWMzOTNiMTNm
YzlhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW5p
emVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5j
cHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQpAQCAtNDEsMTUgKzQxLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
I2RlZmluZSBXRUJWVFRfQURWQU5DRV9UTyhzdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICBBU1NFUlQoIW1faW5wdXQuaXNFbXB0eSgpKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICBtX3ByZXByb2Nlc3Nvci5hZHZhbmNlKG1faW5wdXQp
OyAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjaGFyYWN0ZXIgPSBtX3ByZXByb2Nlc3Nv
ci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsgICAgXAotICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBXRUJWVFRfQkVHSU5f
U1RBVEUoc3RhdGVOYW1lKSBjYXNlIHN0YXRlTmFtZTogc3RhdGVOYW1lOgorI2RlZmluZSBXRUJW
VFRfQURWQU5DRV9UTyhzdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHN0YXRlID0gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBBU1NFUlQoIW1faW5wdXQuaXNFbXB0
eSgpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9pbnB1dFN0
cmVhbVByZXByb2Nlc3Nvci5hZHZhbmNlKG1faW5wdXQpOyAgICAgICAgICAgICAgICBcCisgICAg
ICAgIGNjID0gbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsg
ICAgICAgXAorICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKKwogICAgIAotdGVtcGxh
dGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PiBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWxMaXRl
cmFsKGNvbnN0IFN0cmluZ0J1aWxkZXImIHMsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFy
YWN0ZXJzQ291bnRdKQordGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgorQUxXQVlT
X0lOTElORSBib29sIGVxdWFsTGl0ZXJhbChjb25zdCBTdHJpbmdCdWlsZGVyJiBzLCBjb25zdCBj
aGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKIHsKICAgICByZXR1cm4gV1RGOjpl
cXVhbChzLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGNoYXJh
Y3RlcnNDb3VudCAtIDEpOwogfQpAQCAtNzUsNyArNzksNyBAQCBpbmxpbmUgYm9vbCBhZHZhbmNl
QW5kRW1pdFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBXZWJWVFRUb2tlbiYgcmVzdWx0
VG9rZQogCiBXZWJWVFRUb2tlbml6ZXI6OldlYlZUVFRva2VuaXplcihjb25zdCBTdHJpbmcmIGlu
cHV0KQogICAgIDogbV9pbnB1dChpbnB1dCkKLSAgICAsIG1fcHJlcHJvY2Vzc29yKCp0aGlzKQor
ICAgICwgbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvcih0aGlzKQogewogICAgIC8vIEFwcGVuZCBh
biBFT0YgbWFya2VyIGFuZCBjbG9zZSB0aGUgaW5wdXQgInN0cmVhbSIuCiAgICAgQVNTRVJUKCFt
X2lucHV0LmlzQ2xvc2VkKCkpOwpAQCAtODUsMTIgKzg5LDEyIEBAIFdlYlZUVFRva2VuaXplcjo6
V2ViVlRUVG9rZW5pemVyKGNvbnN0IFN0cmluZyYgaW5wdXQpCiAKIGJvb2wgV2ViVlRUVG9rZW5p
emVyOjpuZXh0VG9rZW4oV2ViVlRUVG9rZW4mIHRva2VuKQogewotICAgIGlmIChtX2lucHV0Lmlz
RW1wdHkoKSB8fCAhbV9wcmVwcm9jZXNzb3IucGVlayhtX2lucHV0KSkKKyAgICBpZiAobV9pbnB1
dC5pc0VtcHR5KCkgfHwgIW1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IucGVlayhtX2lucHV0KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgVUNoYXIgY2hhcmFjdGVyID0gbV9wcmVwcm9j
ZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7Ci0gICAgaWYgKGNoYXJhY3RlciA9PSBrRW5kT2ZG
aWxlTWFya2VyKSB7Ci0gICAgICAgIG1fcHJlcHJvY2Vzc29yLmFkdmFuY2UobV9pbnB1dCk7Cisg
ICAgVUNoYXIgY2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3Rl
cigpOworICAgIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgIG1faW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3IuYWR2YW5jZShtX2lucHV0KTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtOTgsMTM0ICsxMDIsMTY5IEBAIGJvb2wgV2ViVlRUVG9rZW5pemVyOjpu
ZXh0VG9rZW4oV2ViVlRUVG9rZW4mIHRva2VuKQogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0Owog
ICAgIFN0cmluZ0J1aWxkZXIgY2xhc3NlczsKIAotLy8gNC44LjEwLjEzLjQgV2ViVlRUIGN1ZSB0
ZXh0IHRva2VuaXplcgotRGF0YVN0YXRlOgotICAgIGlmIChjaGFyYWN0ZXIgPT0gJyYnKSB7Ci0g
ICAgICAgIGJ1ZmZlci5hcHBlbmQoJyYnKTsKLSAgICAgICAgV0VCVlRUX0FEVkFOQ0VfVE8oRXNj
YXBlU3RhdGUpOwotICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09ICc8JykgewotICAgICAgICBp
ZiAocmVzdWx0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIFdFQlZUVF9BRFZBTkNFX1RPKFRhZ1N0
YXRlKTsKKyAgICBlbnVtIHsKKyAgICAgICAgRGF0YVN0YXRlLAorICAgICAgICBFc2NhcGVTdGF0
ZSwKKyAgICAgICAgVGFnU3RhdGUsCisgICAgICAgIFN0YXJ0VGFnU3RhdGUsCisgICAgICAgIFN0
YXJ0VGFnQ2xhc3NTdGF0ZSwKKyAgICAgICAgU3RhcnRUYWdBbm5vdGF0aW9uU3RhdGUsCisgICAg
ICAgIEVuZFRhZ1N0YXRlLAorICAgICAgICBUaW1lc3RhbXBUYWdTdGF0ZSwKKyAgICB9IHN0YXRl
ID0gRGF0YVN0YXRlOworCisgICAgLy8gNC44LjEwLjEzLjQgV2ViVlRUIGN1ZSB0ZXh0IHRva2Vu
aXplcgorICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBXRUJWVFRfQkVHSU5fU1RBVEUoRGF0YVN0
YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnJicpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBl
bmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNjKSk7CisgICAgICAgICAgICBXRUJWVFRfQURWQU5DRV9U
TyhFc2NhcGVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAg
ICAgICBpZiAocmVzdWx0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBXRUJWVFRfQURWQU5D
RV9UTyhUYWdTdGF0ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvIGFkdmFuY2UgaW5wdXQgb3IgcGVyZm9ybSBhIHN0YXRlIHRyYW5zaXRp
b24gLSBqdXN0IHJldHVybiBhIChuZXcpIHRva2VuLgorICAgICAgICAgICAgICAgIC8vIChPbiB0
aGUgbmV4dCBjYWxsIHRvIG5leHRUb2tlbiB3ZSB3aWxsIHNlZSAnPCcgYWdhaW4sIGJ1dCB0YWtl
IHRoZSBvdGhlciBicmFuY2ggaW4gdGhpcyBpZiBpbnN0ZWFkLikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZW1pdFRva2VuKHRva2VuLCBXZWJWVFRUb2tlbjo6U3RyaW5nVG9rZW4ocmVzdWx0LnRv
U3RyaW5nKCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBrRW5k
T2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgcmV0dXJuIGFkdmFuY2VBbmRFbWl0VG9rZW4obV9p
bnB1dCwgdG9rZW4sIFdlYlZUVFRva2VuOjpTdHJpbmdUb2tlbihyZXN1bHQudG9TdHJpbmcoKSkp
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYWR2YW5j
ZSBpbnB1dCBvciBwZXJmb3JtIGEgc3RhdGUgdHJhbnNpdGlvbiAtIGp1c3QgcmV0dXJuIGEgKG5l
dykgdG9rZW4uCi0gICAgICAgICAgICAvLyAoT24gdGhlIG5leHQgY2FsbCB0byBuZXh0VG9rZW4g
d2Ugd2lsbCBzZWUgJzwnIGFnYWluLCBidXQgdGFrZSB0aGUgb3RoZXIgYnJhbmNoIGluIHRoaXMg
aWYgaW5zdGVhZC4pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNjKTsKKyAgICAgICAgICAg
IFdFQlZUVF9BRFZBTkNFX1RPKERhdGFTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5E
X1NUQVRFKCkKKworICAgIFdFQlZUVF9CRUdJTl9TVEFURShFc2NhcGVTdGF0ZSkgeworICAgICAg
ICBpZiAoY2MgPT0gJzsnKSB7CisgICAgICAgICAgICBpZiAoZXF1YWxMaXRlcmFsKGJ1ZmZlciwg
IiZhbXAiKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcmJyk7CisgICAgICAgICAg
ICBlbHNlIGlmIChlcXVhbExpdGVyYWwoYnVmZmVyLCAiJmx0IikpCisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnPCcpOworICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxMaXRlcmFsKGJ1
ZmZlciwgIiZndCIpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJz4nKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGVxdWFsTGl0ZXJhbChidWZmZXIsICImbHJtIikpCisgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChsZWZ0VG9SaWdodE1hcmspOworICAgICAgICAgICAgZWxzZSBp
ZiAoZXF1YWxMaXRlcmFsKGJ1ZmZlciwgIiZybG0iKSkKKyAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHJpZ2h0VG9MZWZ0TWFyayk7CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbExpdGVy
YWwoYnVmZmVyLCAiJm5ic3AiKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vQnJl
YWtTcGFjZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBw
ZW5kKHN0YXRpY19jYXN0PExDaGFyPihjYykpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoYnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlci5jbGVhcigpOwor
ICAgICAgICAgICAgV0VCVlRUX0FEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNl
IGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKGNjKSkgeworICAgICAgICAgICAgYnVmZmVyLmFwcGVu
ZChzdGF0aWNfY2FzdDxMQ2hhcj4oY2MpKTsKKyAgICAgICAgICAgIFdFQlZUVF9BRFZBTkNFX1RP
KEVzY2FwZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgICAgIHJldHVybiBlbWl0VG9rZW4o
dG9rZW4sIFdlYlZUVFRva2VuOjpTdHJpbmdUb2tlbihyZXN1bHQudG9TdHJpbmcoKSkpOworICAg
ICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybiBhZHZhbmNlQW5kRW1pdFRv
a2VuKG1faW5wdXQsIHRva2VuLCBXZWJWVFRUb2tlbjo6U3RyaW5nVG9rZW4ocmVzdWx0LnRvU3Ry
aW5nKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnVm
ZmVyKTsKKyAgICAgICAgICAgIGJ1ZmZlci5jbGVhcigpOworCisgICAgICAgICAgICBpZiAoY2Mg
PT0gJyYnKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hh
cj4oY2MpKTsKKyAgICAgICAgICAgICAgICBXRUJWVFRfQURWQU5DRV9UTyhFc2NhcGVTdGF0ZSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNjKTsKKyAgICAgICAg
ICAgIFdFQlZUVF9BRFZBTkNFX1RPKERhdGFTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
RU5EX1NUQVRFKCkKKworICAgIFdFQlZUVF9CRUdJTl9TVEFURShUYWdTdGF0ZSkgeworICAgICAg
ICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgeworICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdC5pc0VtcHR5KCkpOworICAgICAgICAgICAgV0VCVlRUX0FEVkFOQ0VfVE8oU3RhcnRUYWdB
bm5vdGF0aW9uU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcuJykgeworICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdC5pc0VtcHR5KCkpOworICAgICAgICAgICAgV0VCVlRUX0FEVkFO
Q0VfVE8oU3RhcnRUYWdDbGFzc1N0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycp
IHsKKyAgICAgICAgICAgIFdFQlZUVF9BRFZBTkNFX1RPKEVuZFRhZ1N0YXRlKTsKKyAgICAgICAg
fSBlbHNlIGlmIChXVEY6OmlzQVNDSUlEaWdpdChjYykpIHsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoY2MpOworICAgICAgICAgICAgV0VCVlRUX0FEVkFOQ0VfVE8oVGltZXN0YW1wVGFnU3Rh
dGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFy
a2VyKSB7CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0LmlzRW1wdHkoKSk7CisgICAgICAgICAg
ICByZXR1cm4gYWR2YW5jZUFuZEVtaXRUb2tlbihtX2lucHV0LCB0b2tlbiwgV2ViVlRUVG9rZW46
OlN0YXJ0VGFnKHJlc3VsdC50b1N0cmluZygpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIFdFQlZUVF9BRFZBTkNFX1RPKFN0
YXJ0VGFnU3RhdGUpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT0ga0Vu
ZE9mRmlsZU1hcmtlcikKLSAgICAgICAgcmV0dXJuIGFkdmFuY2VBbmRFbWl0VG9rZW4obV9pbnB1
dCwgdG9rZW4sIFdlYlZUVFRva2VuOjpTdHJpbmdUb2tlbihyZXN1bHQudG9TdHJpbmcoKSkpOwot
ICAgIGVsc2UgewotICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgICAgIFdF
QlZUVF9BRFZBTkNFX1RPKERhdGFTdGF0ZSk7CiAgICAgfQorICAgIEVORF9TVEFURSgpCiAKLUVz
Y2FwZVN0YXRlOgotICAgIGlmIChjaGFyYWN0ZXIgPT0gJzsnKSB7Ci0gICAgICAgIGlmIChlcXVh
bExpdGVyYWwoYnVmZmVyLCAiJmFtcCIpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJicp
OwotICAgICAgICBlbHNlIGlmIChlcXVhbExpdGVyYWwoYnVmZmVyLCAiJmx0IikpCi0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCc8Jyk7Ci0gICAgICAgIGVsc2UgaWYgKGVxdWFsTGl0ZXJhbChi
dWZmZXIsICImZ3QiKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJz4nKTsKLSAgICAgICAg
ZWxzZSBpZiAoZXF1YWxMaXRlcmFsKGJ1ZmZlciwgIiZscm0iKSkKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQobGVmdFRvUmlnaHRNYXJrKTsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxMaXRlcmFs
KGJ1ZmZlciwgIiZybG0iKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmlnaHRUb0xlZnRN
YXJrKTsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxMaXRlcmFsKGJ1ZmZlciwgIiZuYnNwIikpCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vQnJlYWtTcGFjZSk7CisgICAgV0VCVlRUX0JFR0lO
X1NUQVRFKFN0YXJ0VGFnU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFj
ZShjYykpCisgICAgICAgICAgICBXRUJWVFRfQURWQU5DRV9UTyhTdGFydFRhZ0Fubm90YXRpb25T
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcuJykKKyAgICAgICAgICAgIFdFQlZUVF9B
RFZBTkNFX1RPKFN0YXJ0VGFnQ2xhc3NTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+
JyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgcmV0dXJuIGFkdmFuY2VB
bmRFbWl0VG9rZW4obV9pbnB1dCwgdG9rZW4sIFdlYlZUVFRva2VuOjpTdGFydFRhZyhyZXN1bHQu
dG9TdHJpbmcoKSkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQo
Y2hhcmFjdGVyKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoY2MpOworICAgICAgICAgICAgV0VCVlRUX0FEVkFOQ0VfVE8oU3Rh
cnRUYWdTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgYnVmZmVyLmNsZWFyKCk7Ci0gICAgICAg
IFdFQlZUVF9BRFZBTkNFX1RPKERhdGFTdGF0ZSk7Ci0gICAgfSBlbHNlIGlmIChpc0FTQ0lJQWxw
aGFudW1lcmljKGNoYXJhY3RlcikpIHsKLSAgICAgICAgYnVmZmVyLmFwcGVuZChjaGFyYWN0ZXIp
OwotICAgICAgICBXRUJWVFRfQURWQU5DRV9UTyhFc2NhcGVTdGF0ZSk7Ci0gICAgfSBlbHNlIGlm
IChjaGFyYWN0ZXIgPT0gJzwnKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKLSAg
ICAgICAgcmV0dXJuIGVtaXRUb2tlbih0b2tlbiwgV2ViVlRUVG9rZW46OlN0cmluZ1Rva2VuKHJl
c3VsdC50b1N0cmluZygpKSk7Ci0gICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT0ga0VuZE9mRmls
ZU1hcmtlcikgewotICAgICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVy
biBhZHZhbmNlQW5kRW1pdFRva2VuKG1faW5wdXQsIHRva2VuLCBXZWJWVFRUb2tlbjo6U3RyaW5n
VG9rZW4ocmVzdWx0LnRvU3RyaW5nKCkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQu
YXBwZW5kKGJ1ZmZlcik7Ci0gICAgICAgIGJ1ZmZlci5jbGVhcigpOwotCi0gICAgICAgIGlmIChj
aGFyYWN0ZXIgPT0gJyYnKSB7Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKCcmJyk7Ci0gICAg
ICAgICAgICBXRUJWVFRfQURWQU5DRV9UTyhFc2NhcGVTdGF0ZSk7CisgICAgfQorICAgIEVORF9T
VEFURSgpCisKKyAgICBXRUJWVFRfQkVHSU5fU1RBVEUoU3RhcnRUYWdDbGFzc1N0YXRlKSB7Cisg
ICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSB7CisgICAgICAgICAgICBhZGRO
ZXdDbGFzcyhjbGFzc2VzLCBidWZmZXIpOworICAgICAgICAgICAgYnVmZmVyLmNsZWFyKCk7Cisg
ICAgICAgICAgICBXRUJWVFRfQURWQU5DRV9UTyhTdGFydFRhZ0Fubm90YXRpb25TdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy4nKSB7CisgICAgICAgICAgICBhZGROZXdDbGFzcyhj
bGFzc2VzLCBidWZmZXIpOworICAgICAgICAgICAgYnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAg
ICBXRUJWVFRfQURWQU5DRV9UTyhTdGFydFRhZ0NsYXNzU3RhdGUpOworICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICc+JyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBh
ZGROZXdDbGFzcyhjbGFzc2VzLCBidWZmZXIpOworICAgICAgICAgICAgYnVmZmVyLmNsZWFyKCk7
CisgICAgICAgICAgICByZXR1cm4gYWR2YW5jZUFuZEVtaXRUb2tlbihtX2lucHV0LCB0b2tlbiwg
V2ViVlRUVG9rZW46OlN0YXJ0VGFnKHJlc3VsdC50b1N0cmluZygpLCBjbGFzc2VzLnRvQXRvbWlj
U3RyaW5nKCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQo
Y2MpOworICAgICAgICAgICAgV0VCVlRUX0FEVkFOQ0VfVE8oU3RhcnRUYWdDbGFzc1N0YXRlKTsK
ICAgICAgICAgfQotICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgICAgIFdF
QlZUVF9BRFZBTkNFX1RPKERhdGFTdGF0ZSk7CisKICAgICB9CisgICAgRU5EX1NUQVRFKCkKIAot
VGFnU3RhdGU6Ci0gICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjaGFyYWN0ZXIpKSB7Ci0g
ICAgICAgIEFTU0VSVChyZXN1bHQuaXNFbXB0eSgpKTsKKyAgICBXRUJWVFRfQkVHSU5fU1RBVEUo
U3RhcnRUYWdBbm5vdGF0aW9uU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICc+JyB8fCBjYyA9
PSBrRW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICByZXR1cm4gYWR2YW5jZUFuZEVtaXRU
b2tlbihtX2lucHV0LCB0b2tlbiwgV2ViVlRUVG9rZW46OlN0YXJ0VGFnKHJlc3VsdC50b1N0cmlu
ZygpLCBjbGFzc2VzLnRvQXRvbWljU3RyaW5nKCksIGJ1ZmZlci50b0F0b21pY1N0cmluZygpKSk7
CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAgIFdFQlZUVF9B
RFZBTkNFX1RPKFN0YXJ0VGFnQW5ub3RhdGlvblN0YXRlKTsKLSAgICB9IGVsc2UgaWYgKGNoYXJh
Y3RlciA9PSAnLicpIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5pc0VtcHR5KCkpOwotICAgICAg
ICBXRUJWVFRfQURWQU5DRV9UTyhTdGFydFRhZ0NsYXNzU3RhdGUpOwotICAgIH0gZWxzZSBpZiAo
Y2hhcmFjdGVyID09ICcvJykgeworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorICAgIAorICAgIFdF
QlZUVF9CRUdJTl9TVEFURShFbmRUYWdTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJz4nIHx8
IGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICByZXR1cm4gYWR2YW5jZUFuZEVt
aXRUb2tlbihtX2lucHV0LCB0b2tlbiwgV2ViVlRUVG9rZW46OkVuZFRhZyhyZXN1bHQudG9TdHJp
bmcoKSkpOworICAgICAgICByZXN1bHQuYXBwZW5kKGNjKTsKICAgICAgICAgV0VCVlRUX0FEVkFO
Q0VfVE8oRW5kVGFnU3RhdGUpOwotICAgIH0gZWxzZSBpZiAoV1RGOjppc0FTQ0lJRGlnaXQoY2hh
cmFjdGVyKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgICAgIFdF
QlZUVF9BRFZBTkNFX1RPKFRpbWVzdGFtcFRhZ1N0YXRlKTsKLSAgICB9IGVsc2UgaWYgKGNoYXJh
Y3RlciA9PSAnPicgfHwgY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAg
QVNTRVJUKHJlc3VsdC5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4gYWR2YW5jZUFuZEVtaXRU
b2tlbihtX2lucHV0LCB0b2tlbiwgV2ViVlRUVG9rZW46OlN0YXJ0VGFnKHJlc3VsdC50b1N0cmlu
ZygpKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIpOwot
ICAgICAgICBXRUJWVFRfQURWQU5DRV9UTyhTdGFydFRhZ1N0YXRlKTsKICAgICB9CisgICAgRU5E
X1NUQVRFKCkKIAotU3RhcnRUYWdTdGF0ZToKLSAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNl
KGNoYXJhY3RlcikpCi0gICAgICAgIFdFQlZUVF9BRFZBTkNFX1RPKFN0YXJ0VGFnQW5ub3RhdGlv
blN0YXRlKTsKLSAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gJy4nKQotICAgICAgICBXRUJWVFRf
QURWQU5DRV9UTyhTdGFydFRhZ0NsYXNzU3RhdGUpOwotICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9
PSAnPicgfHwgY2hhcmFjdGVyID09IGtFbmRPZkZpbGVNYXJrZXIpCi0gICAgICAgIHJldHVybiBh
ZHZhbmNlQW5kRW1pdFRva2VuKG1faW5wdXQsIHRva2VuLCBXZWJWVFRUb2tlbjo6U3RhcnRUYWco
cmVzdWx0LnRvU3RyaW5nKCkpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChj
aGFyYWN0ZXIpOwotICAgICAgICBXRUJWVFRfQURWQU5DRV9UTyhTdGFydFRhZ1N0YXRlKTsKKyAg
ICBXRUJWVFRfQkVHSU5fU1RBVEUoVGltZXN0YW1wVGFnU3RhdGUpIHsKKyAgICAgICAgaWYgKGNj
ID09ICc+JyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgcmV0dXJuIGFk
dmFuY2VBbmRFbWl0VG9rZW4obV9pbnB1dCwgdG9rZW4sIFdlYlZUVFRva2VuOjpUaW1lc3RhbXBU
YWcocmVzdWx0LnRvU3RyaW5nKCkpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjYyk7CisgICAg
ICAgIFdFQlZUVF9BRFZBTkNFX1RPKFRpbWVzdGFtcFRhZ1N0YXRlKTsKICAgICB9CisgICAgRU5E
X1NUQVRFKCkKIAotU3RhcnRUYWdDbGFzc1N0YXRlOgotICAgIGlmIChpc1Rva2VuaXplcldoaXRl
c3BhY2UoY2hhcmFjdGVyKSkgewotICAgICAgICBhZGROZXdDbGFzcyhjbGFzc2VzLCBidWZmZXIp
OwotICAgICAgICBidWZmZXIuY2xlYXIoKTsKLSAgICAgICAgV0VCVlRUX0FEVkFOQ0VfVE8oU3Rh
cnRUYWdBbm5vdGF0aW9uU3RhdGUpOwotICAgIH0gZWxzZSBpZiAoY2hhcmFjdGVyID09ICcuJykg
ewotICAgICAgICBhZGROZXdDbGFzcyhjbGFzc2VzLCBidWZmZXIpOwotICAgICAgICBidWZmZXIu
Y2xlYXIoKTsKLSAgICAgICAgV0VCVlRUX0FEVkFOQ0VfVE8oU3RhcnRUYWdDbGFzc1N0YXRlKTsK
LSAgICB9IGVsc2UgaWYgKGNoYXJhY3RlciA9PSAnPicgfHwgY2hhcmFjdGVyID09IGtFbmRPZkZp
bGVNYXJrZXIpIHsKLSAgICAgICAgYWRkTmV3Q2xhc3MoY2xhc3NlcywgYnVmZmVyKTsKLSAgICAg
ICAgYnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgIHJldHVybiBhZHZhbmNlQW5kRW1pdFRva2VuKG1f
aW5wdXQsIHRva2VuLCBXZWJWVFRUb2tlbjo6U3RhcnRUYWcocmVzdWx0LnRvU3RyaW5nKCksIGNs
YXNzZXMudG9BdG9taWNTdHJpbmcoKSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1ZmZlci5h
cHBlbmQoY2hhcmFjdGVyKTsKLSAgICAgICAgV0VCVlRUX0FEVkFOQ0VfVE8oU3RhcnRUYWdDbGFz
c1N0YXRlKTsKICAgICB9CiAKLVN0YXJ0VGFnQW5ub3RhdGlvblN0YXRlOgotICAgIGlmIChjaGFy
YWN0ZXIgPT0gJz4nIHx8IGNoYXJhY3RlciA9PSBrRW5kT2ZGaWxlTWFya2VyKQotICAgICAgICBy
ZXR1cm4gYWR2YW5jZUFuZEVtaXRUb2tlbihtX2lucHV0LCB0b2tlbiwgV2ViVlRUVG9rZW46OlN0
YXJ0VGFnKHJlc3VsdC50b1N0cmluZygpLCBjbGFzc2VzLnRvQXRvbWljU3RyaW5nKCksIGJ1ZmZl
ci50b0F0b21pY1N0cmluZygpKSk7Ci0gICAgYnVmZmVyLmFwcGVuZChjaGFyYWN0ZXIpOwotICAg
IFdFQlZUVF9BRFZBTkNFX1RPKFN0YXJ0VGFnQW5ub3RhdGlvblN0YXRlKTsKLQotRW5kVGFnU3Rh
dGU6Ci0gICAgaWYgKGNoYXJhY3RlciA9PSAnPicgfHwgY2hhcmFjdGVyID09IGtFbmRPZkZpbGVN
YXJrZXIpCi0gICAgICAgIHJldHVybiBhZHZhbmNlQW5kRW1pdFRva2VuKG1faW5wdXQsIHRva2Vu
LCBXZWJWVFRUb2tlbjo6RW5kVGFnKHJlc3VsdC50b1N0cmluZygpKSk7Ci0gICAgcmVzdWx0LmFw
cGVuZChjaGFyYWN0ZXIpOwotICAgIFdFQlZUVF9BRFZBTkNFX1RPKEVuZFRhZ1N0YXRlKTsKLQot
VGltZXN0YW1wVGFnU3RhdGU6Ci0gICAgaWYgKGNoYXJhY3RlciA9PSAnPicgfHwgY2hhcmFjdGVy
ID09IGtFbmRPZkZpbGVNYXJrZXIpCi0gICAgICAgIHJldHVybiBhZHZhbmNlQW5kRW1pdFRva2Vu
KG1faW5wdXQsIHRva2VuLCBXZWJWVFRUb2tlbjo6VGltZXN0YW1wVGFnKHJlc3VsdC50b1N0cmlu
ZygpKSk7Ci0gICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIFdFQlZUVF9BRFZBTkNF
X1RPKFRpbWVzdGFtcFRhZ1N0YXRlKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUVG9rZW5pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRv
a2VuaXplci5oCmluZGV4IDZjMWRkYTNlYTg0NDQzYmFjMDIzMWYyMzNhNjQ2MmQ2NTM5ZTM2ODIu
LmE5Nzc5N2VlZTIzMjUwMjU3YzdiZjE4N2U2YTRiOGIzY2I1ZTQ3OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuaApAQCAtNDAsMTUgKzQwLDE5IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYlZUVFRva2VuaXplciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV2ViVlRUVG9rZW5pemVyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBX
ZWJWVFRUb2tlbml6ZXIoY29uc3QgU3RyaW5nJik7CisKICAgICBib29sIG5leHRUb2tlbihXZWJW
VFRUb2tlbiYpOwogCi0gICAgc3RhdGljIGJvb2wgbmV2ZXJTa2lwTnVsbENoYXJhY3RlcnMoKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGlubGluZSBib29sIHNob3VsZFNraXBOdWxsQ2hhcmFjdGVy
cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKICAgICBTZWdtZW50ZWRTdHJp
bmcgbV9pbnB1dDsKLSAgICBJbnB1dFN0cmVhbVByZXByb2Nlc3NvcjxXZWJWVFRUb2tlbml6ZXI+
IG1fcHJlcHJvY2Vzc29yOworCisgICAgLy8gOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFw
cHMvY3VycmVudC13b3JrLyNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0KKyAgICBJbnB1
dFN0cmVhbVByZXByb2Nlc3NvcjxXZWJWVFRUb2tlbml6ZXI+IG1faW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3I7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1NlZ21lbnRlZFN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21l
bnRlZFN0cmluZy5jcHAKaW5kZXggNDkxZDE2Y2NkNWMxM2MyMmY4MDFmYzA3NTk0YmFlMGNlZWI0
OGE1Zi4uYjBkYzNkM2RkZjQ2NjRhODgwMDc3NzcyMjcwZDYwOGU5Y2NmMDY2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcApAQCAtMjAs
OCArMjAsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmlu
Zy5oIgogCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU2VnbWVudGVkU3RyaW5nOjpTZWdtZW50ZWRTdHJpbmcoY29uc3QgU2VnbWVu
dGVkU3RyaW5nJiBvdGhlcikKQEAgLTQ2LDcgKzQ0LDcgQEAgU2VnbWVudGVkU3RyaW5nOjpTZWdt
ZW50ZWRTdHJpbmcoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBvdGhlcikKICAgICAgICAgbV9jdXJy
ZW50Q2hhciA9IG1fY3VycmVudFN0cmluZy5tX2xlbmd0aCA/IG1fY3VycmVudFN0cmluZy5nZXRD
dXJyZW50Q2hhcigpIDogMDsKIH0KIAotU2VnbWVudGVkU3RyaW5nJiBTZWdtZW50ZWRTdHJpbmc6
Om9wZXJhdG9yPShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIG90aGVyKQorY29uc3QgU2VnbWVudGVk
U3RyaW5nJiBTZWdtZW50ZWRTdHJpbmc6Om9wZXJhdG9yPShjb25zdCBTZWdtZW50ZWRTdHJpbmcm
IG90aGVyKQogewogICAgIG1fcHVzaGVkQ2hhcjEgPSBvdGhlci5tX3B1c2hlZENoYXIxOwogICAg
IG1fcHVzaGVkQ2hhcjIgPSBvdGhlci5tX3B1c2hlZENoYXIyOwpAQCAtMTMyLDE0ICsxMzAsMTQg
QEAgdm9pZCBTZWdtZW50ZWRTdHJpbmc6OmFwcGVuZChjb25zdCBTZWdtZW50ZWRTdWJzdHJpbmcm
IHMpCiAgICAgbV9lbXB0eSA9IGZhbHNlOwogfQogCi12b2lkIFNlZ21lbnRlZFN0cmluZzo6cHVz
aEJhY2soY29uc3QgU2VnbWVudGVkU3Vic3RyaW5nJiBzKQordm9pZCBTZWdtZW50ZWRTdHJpbmc6
OnByZXBlbmQoY29uc3QgU2VnbWVudGVkU3Vic3RyaW5nJiBzKQogewotICAgIEFTU0VSVCghbV9w
dXNoZWRDaGFyMSk7CisgICAgQVNTRVJUKCFlc2NhcGVkKCkpOwogICAgIEFTU0VSVCghcy5udW1i
ZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKICAgICBpZiAoIXMubV9sZW5ndGgpCiAgICAgICAg
IHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSdyZSBhc3N1bWluZyB0aGF0IHRoZSBjaGFyYWN0
ZXJzIHdlcmUgb3JpZ2luYWxseSBjb25zdW1lZCBieQorICAgIC8vIEZJWE1FOiBXZSdyZSBhc3N1
bWluZyB0aGF0IHRoZSBwcmVwZW5kIHdlcmUgb3JpZ2luYWxseSBjb25zdW1lZCBieQogICAgIC8v
ICAgICAgICB0aGlzIFNlZ21lbnRlZFN0cmluZy4gIFdlJ3JlIGFsc28gQVNTRVJUaW5nIHRoYXQg
cyBpcyBhIGZyZXNoCiAgICAgLy8gICAgICAgIFNlZ21lbnRlZFN1YnN0cmluZy4gIFRoZXNlIGFz
c3VtcHRpb25zIGFyZSBzdWZmaWNpZW50IGZvciBvdXIKICAgICAvLyAgICAgICAgY3VycmVudCB1
c2UsIGJ1dCB3ZSBtaWdodCBuZWVkIHRvIGhhbmRsZSB0aGUgbW9yZSBlbGFib3JhdGUKQEAgLTE2
OCw3ICsxNjYsNyBAQCB2b2lkIFNlZ21lbnRlZFN0cmluZzo6Y2xvc2UoKQogdm9pZCBTZWdtZW50
ZWRTdHJpbmc6OmFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHMpCiB7CiAgICAgQVNTRVJU
KCFtX2Nsb3NlZCk7Ci0gICAgQVNTRVJUKCFzLm1fcHVzaGVkQ2hhcjEpOworICAgIEFTU0VSVCgh
cy5lc2NhcGVkKCkpOwogICAgIGFwcGVuZChzLm1fY3VycmVudFN0cmluZyk7CiAgICAgaWYgKHMu
aXNDb21wb3NpdGUoKSkgewogICAgICAgICBEZXF1ZTxTZWdtZW50ZWRTdWJzdHJpbmc+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IHMubV9zdWJzdHJpbmdzLmJlZ2luKCk7CkBAIC0xNzksMTcgKzE3Nywx
NyBAQCB2b2lkIFNlZ21lbnRlZFN0cmluZzo6YXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYg
cykKICAgICBtX2N1cnJlbnRDaGFyID0gbV9wdXNoZWRDaGFyMSA/IG1fcHVzaGVkQ2hhcjEgOiAo
bV9jdXJyZW50U3RyaW5nLm1fbGVuZ3RoID8gbV9jdXJyZW50U3RyaW5nLmdldEN1cnJlbnRDaGFy
KCkgOiAwKTsKIH0KIAotdm9pZCBTZWdtZW50ZWRTdHJpbmc6OnB1c2hCYWNrKGNvbnN0IFNlZ21l
bnRlZFN0cmluZyYgcykKK3ZvaWQgU2VnbWVudGVkU3RyaW5nOjpwcmVwZW5kKGNvbnN0IFNlZ21l
bnRlZFN0cmluZyYgcykKIHsKLSAgICBBU1NFUlQoIW1fcHVzaGVkQ2hhcjEpOwotICAgIEFTU0VS
VCghcy5tX3B1c2hlZENoYXIxKTsKKyAgICBBU1NFUlQoIWVzY2FwZWQoKSk7CisgICAgQVNTRVJU
KCFzLmVzY2FwZWQoKSk7CiAgICAgaWYgKHMuaXNDb21wb3NpdGUoKSkgewogICAgICAgICBEZXF1
ZTxTZWdtZW50ZWRTdWJzdHJpbmc+Ojpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGl0ID0gcy5tX3N1
YnN0cmluZ3MucmJlZ2luKCk7CiAgICAgICAgIERlcXVlPFNlZ21lbnRlZFN1YnN0cmluZz46OmNv
bnN0X3JldmVyc2VfaXRlcmF0b3IgZSA9IHMubV9zdWJzdHJpbmdzLnJlbmQoKTsKICAgICAgICAg
Zm9yICg7IGl0ICE9IGU7ICsraXQpCi0gICAgICAgICAgICBwdXNoQmFjaygqaXQpOworICAgICAg
ICAgICAgcHJlcGVuZCgqaXQpOwogICAgIH0KLSAgICBwdXNoQmFjayhzLm1fY3VycmVudFN0cmlu
Zyk7CisgICAgcHJlcGVuZChzLm1fY3VycmVudFN0cmluZyk7CiAgICAgbV9jdXJyZW50Q2hhciA9
IG1fcHVzaGVkQ2hhcjEgPyBtX3B1c2hlZENoYXIxIDogKG1fY3VycmVudFN0cmluZy5tX2xlbmd0
aCA/IG1fY3VycmVudFN0cmluZy5nZXRDdXJyZW50Q2hhcigpIDogMCk7CiB9CiAKQEAgLTIzMCwx
MiArMjI4LDEyIEBAIFN0cmluZyBTZWdtZW50ZWRTdHJpbmc6OnRvU3RyaW5nKCkgY29uc3QKICAg
ICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgU2VnbWVudGVkU3RyaW5nOjph
ZHZhbmNlUGFzdE5vbk5ld2xpbmVzKHVuc2lnbmVkIGNvdW50LCBVQ2hhciogY29uc3VtZWRDaGFy
YWN0ZXJzKQordm9pZCBTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2UodW5zaWduZWQgY291bnQsIFVD
aGFyKiBjb25zdW1lZENoYXJhY3RlcnMpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oY291bnQgPD0gbGVuZ3RoKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb3VudDsgKytpKSB7CiAgICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVyc1tpXSA9IGN1cnJlbnRD
aGFyKCk7Ci0gICAgICAgIGFkdmFuY2VQYXN0Tm9uTmV3bGluZSgpOworICAgICAgICBhZHZhbmNl
KCk7CiAgICAgfQogfQogCkBAIC0zNTUsNyArMzUzLDggQEAgT3JkaW5hbE51bWJlciBTZWdtZW50
ZWRTdHJpbmc6OmN1cnJlbnRMaW5lKCkgY29uc3QKIAogT3JkaW5hbE51bWJlciBTZWdtZW50ZWRT
dHJpbmc6OmN1cnJlbnRDb2x1bW4oKSBjb25zdAogewotICAgIHJldHVybiBPcmRpbmFsTnVtYmVy
Ojpmcm9tWmVyb0Jhc2VkSW50KG51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkgLSBtX251bWJl
ck9mQ2hhcmFjdGVyc0NvbnN1bWVkUHJpb3JUb0N1cnJlbnRMaW5lKTsKKyAgICBpbnQgemVyb0Jh
c2VkQ29sdW1uID0gbnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSAtIG1fbnVtYmVyT2ZDaGFy
YWN0ZXJzQ29uc3VtZWRQcmlvclRvQ3VycmVudExpbmU7CisgICAgcmV0dXJuIE9yZGluYWxOdW1i
ZXI6OmZyb21aZXJvQmFzZWRJbnQoemVyb0Jhc2VkQ29sdW1uKTsKIH0KIAogdm9pZCBTZWdtZW50
ZWRTdHJpbmc6OnNldEN1cnJlbnRQb3NpdGlvbihPcmRpbmFsTnVtYmVyIGxpbmUsIE9yZGluYWxO
dW1iZXIgY29sdW1uQWZ0cmVQcm9sb2csIGludCBwcm9sb2dMZW5ndGgpCkBAIC0zNjQsMTggKzM2
Myw0IEBAIHZvaWQgU2VnbWVudGVkU3RyaW5nOjpzZXRDdXJyZW50UG9zaXRpb24oT3JkaW5hbE51
bWJlciBsaW5lLCBPcmRpbmFsTnVtYmVyIGNvbHVtCiAgICAgbV9udW1iZXJPZkNoYXJhY3RlcnND
b25zdW1lZFByaW9yVG9DdXJyZW50TGluZSA9IG51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkg
KyBwcm9sb2dMZW5ndGggLSBjb2x1bW5BZnRyZVByb2xvZy56ZXJvQmFzZWRJbnQoKTsKIH0KIAot
U2VnbWVudGVkU3RyaW5nOjpBZHZhbmNlUGFzdFJlc3VsdCBTZWdtZW50ZWRTdHJpbmc6OmFkdmFu
Y2VQYXN0U2xvd0Nhc2UoY29uc3QgY2hhciogbGl0ZXJhbCwgYm9vbCBjYXNlU2Vuc2l0aXZlKQot
ewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihsaXRlcmFsKTsKLSAgICBpZiAobGVuZ3Ro
ID4gdGhpcy0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBOb3RFbm91Z2hDaGFyYWN0ZXJzOwot
ICAgIFVDaGFyKiBjb25zdW1lZENoYXJhY3RlcnM7Ci0gICAgU3RyaW5nIGNvbnN1bWVkU3RyaW5n
ID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgY29uc3VtZWRDaGFyYWN0ZXJz
KTsKLSAgICBhZHZhbmNlUGFzdE5vbk5ld2xpbmVzKGxlbmd0aCwgY29uc3VtZWRDaGFyYWN0ZXJz
KTsKLSAgICBpZiAoY29uc3VtZWRTdHJpbmcuc3RhcnRzV2l0aChsaXRlcmFsLCBjYXNlU2Vuc2l0
aXZlKSkKLSAgICAgICAgcmV0dXJuIERpZE1hdGNoOwotICAgIHB1c2hCYWNrKFNlZ21lbnRlZFN0
cmluZyhjb25zdW1lZFN0cmluZykpOwotICAgIHJldHVybiBEaWROb3RNYXRjaDsKLX0KLQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmgKaW5kZXgg
MDgxM2Q2MGNlNzQ0OTY2NDhhOTBjZDBhNTk0YmNlZTc2ODhjZWQ2Yy4uZDVmZTM2N2IzMjg5MGQx
MjI3ODQ0NTA0ZDY3OGM1N2ZmYjI5YTk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1NlZ21lbnRlZFN0cmluZy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDQtMjAwOCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjIsOCBA
QAogCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE2OCwxNCAr
MTcwLDE2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBTZWdtZW50ZWRTdHJpbmcoY29uc3QgU2Vn
bWVudGVkU3RyaW5nJik7Ci0gICAgU2VnbWVudGVkU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgU2Vn
bWVudGVkU3RyaW5nJik7CisKKyAgICBjb25zdCBTZWdtZW50ZWRTdHJpbmcmIG9wZXJhdG9yPShj
b25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKIAogICAgIHZvaWQgY2xlYXIoKTsKICAgICB2b2lkIGNs
b3NlKCk7CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKLSAgICB2
b2lkIHB1c2hCYWNrKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOworICAgIHZvaWQgcHJlcGVuZChj
b25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKIAorICAgIGJvb2wgZXhjbHVkZUxpbmVOdW1iZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3RyaW5nLmV4Y2x1ZGVMaW5lTnVtYmVycygpOyB9CiAg
ICAgdm9pZCBzZXRFeGNsdWRlTGluZU51bWJlcnMoKTsKIAogICAgIHZvaWQgcHVzaChVQ2hhciBj
KQpAQCAtMTk1LDkgKzE5OSwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQ2xvc2VkKCkgY29u
c3QgeyByZXR1cm4gbV9jbG9zZWQ7IH0KIAotICAgIGVudW0gQWR2YW5jZVBhc3RSZXN1bHQgeyBE
aWROb3RNYXRjaCwgRGlkTWF0Y2gsIE5vdEVub3VnaENoYXJhY3RlcnMgfTsKLSAgICB0ZW1wbGF0
ZTx1bnNpZ25lZCBsZW5ndGg+IEFkdmFuY2VQYXN0UmVzdWx0IGFkdmFuY2VQYXN0KGNvbnN0IGNo
YXIgKCZsaXRlcmFsKVtsZW5ndGhdKSB7IHJldHVybiBhZHZhbmNlUGFzdChsaXRlcmFsLCBsZW5n
dGggLSAxLCB0cnVlKTsgfQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gQWR2YW5jZVBh
c3RSZXN1bHQgYWR2YW5jZVBhc3RJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciAoJmxpdGVyYWwpW2xl
bmd0aF0pIHsgcmV0dXJuIGFkdmFuY2VQYXN0KGxpdGVyYWwsIGxlbmd0aCAtIDEsIGZhbHNlKTsg
fQorICAgIGVudW0gTG9va0FoZWFkUmVzdWx0IHsKKyAgICAgICAgRGlkTm90TWF0Y2gsCisgICAg
ICAgIERpZE1hdGNoLAorICAgICAgICBOb3RFbm91Z2hDaGFyYWN0ZXJzLAorICAgIH07CisKKyAg
ICBMb29rQWhlYWRSZXN1bHQgbG9va0FoZWFkKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IHJldHVy
biBsb29rQWhlYWRJbmxpbmUoc3RyaW5nLCB0cnVlKTsgfQorICAgIExvb2tBaGVhZFJlc3VsdCBs
b29rQWhlYWRJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsgcmV0dXJuIGxvb2tB
aGVhZElubGluZShzdHJpbmcsIGZhbHNlKTsgfQogCiAgICAgdm9pZCBhZHZhbmNlKCkKICAgICB7
CkBAIC0yMTcsNyArMjI2LDcgQEAgcHVibGljOgogICAgICAgICAodGhpcy0+Km1fYWR2YW5jZUZ1
bmMpKCk7CiAgICAgfQogCi0gICAgdm9pZCBhZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlcigpCisg
ICAgaW5saW5lIHZvaWQgYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXIoKQogICAgIHsKICAgICAg
ICAgaWYgKG1fZmFzdFBhdGhGbGFncyAmIFVzZThCaXRBZHZhbmNlKSB7CiAgICAgICAgICAgICBB
U1NFUlQoIW1fcHVzaGVkQ2hhcjEpOwpAQCAtMjQ0LDYgKzI1MywxOCBAQCBwdWJsaWM6CiAgICAg
ICAgICh0aGlzLT4qbV9hZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlckZ1bmMpKCk7CiAgICAgfQog
CisgICAgdm9pZCBhZHZhbmNlQW5kQVNTRVJUKFVDaGFyIGV4cGVjdGVkQ2hhcmFjdGVyKQorICAg
IHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChleHBlY3RlZENoYXJhY3RlciwgY3VycmVudENoYXIo
KSA9PSBleHBlY3RlZENoYXJhY3Rlcik7CisgICAgICAgIGFkdmFuY2UoKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFkdmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoVUNoYXIgZXhwZWN0ZWRDaGFyYWN0
ZXIpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGV4cGVjdGVkQ2hhcmFjdGVyLCB1X2Zv
bGRDYXNlKGN1cnJlbnRDaGFyKCksIFVfRk9MRF9DQVNFX0RFRkFVTFQpID09IHVfZm9sZENhc2Uo
ZXhwZWN0ZWRDaGFyYWN0ZXIsIFVfRk9MRF9DQVNFX0RFRkFVTFQpKTsKKyAgICAgICAgYWR2YW5j
ZSgpOworICAgIH0KKwogICAgIHZvaWQgYWR2YW5jZVBhc3ROb25OZXdsaW5lKCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjdXJyZW50Q2hhcigpICE9ICdcbicpOwpAQCAtMjY1LDYgKzI4NiwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIGFkdmFuY2VBbmRVcGRhdGVMaW5lTnVtYmVyU2xvd0Nhc2UoKTsK
ICAgICB9CiAKKyAgICAvLyBXcml0ZXMgdGhlIGNvbnN1bWVkIGNoYXJhY3RlcnMgaW50byBjb25z
dW1lZENoYXJhY3RlcnMsIHdoaWNoIG11c3QKKyAgICAvLyBoYXZlIHNwYWNlIGZvciBhdCBsZWFz
dCB8Y291bnR8IGNoYXJhY3RlcnMuCisgICAgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGNvdW50LCBV
Q2hhciogY29uc3VtZWRDaGFyYWN0ZXJzKTsKKworICAgIGJvb2wgZXNjYXBlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHVzaGVkQ2hhcjE7IH0KKwogICAgIGludCBudW1iZXJPZkNoYXJhY3RlcnNDb25z
dW1lZCgpIGNvbnN0CiAgICAgewogICAgICAgICBpbnQgbnVtYmVyT2ZQdXNoZWRDaGFyYWN0ZXJz
ID0gMDsKQEAgLTI4MCwxMiArMzA3LDEyIEBAIHB1YmxpYzoKIAogICAgIFVDaGFyIGN1cnJlbnRD
aGFyKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q2hhcjsgfSAgICAKIAorICAgIC8vIFRoZSBt
ZXRob2QgaXMgbW9kZXJhdGVseSBzbG93LCBjb21wYXJpbmcgdG8gY3VycmVudExpbmUgbWV0aG9k
LgogICAgIE9yZGluYWxOdW1iZXIgY3VycmVudENvbHVtbigpIGNvbnN0OwogICAgIE9yZGluYWxO
dW1iZXIgY3VycmVudExpbmUoKSBjb25zdDsKLQotICAgIC8vIFNldHMgdmFsdWUgb2YgbGluZS9j
b2x1bW4gdmFyaWFibGVzLiBDb2x1bW4gaXMgc3BlY2lmaWVkIGluZGlyZWN0bHkgYnkgYSBwYXJh
bWV0ZXIgY29sdW1uQWZ0ZXJQcm9sb2cKKyAgICAvLyBTZXRzIHZhbHVlIG9mIGxpbmUvY29sdW1u
IHZhcmlhYmxlcy4gQ29sdW1uIGlzIHNwZWNpZmllZCBpbmRpcmVjdGx5IGJ5IGEgcGFyYW1ldGVy
IGNvbHVtbkFmdHJlUHJvbG9nCiAgICAgLy8gd2hpY2ggaXMgYSB2YWx1ZSBvZiBjb2x1bW4gdGhh
dCB3ZSBzaG91bGQgZ2V0IGFmdGVyIGEgcHJvbG9nIChmaXJzdCBwcm9sb2dMZW5ndGggY2hhcmFj
dGVycykgaGFzIGJlZW4gY29uc3VtZWQuCi0gICAgdm9pZCBzZXRDdXJyZW50UG9zaXRpb24oT3Jk
aW5hbE51bWJlciBsaW5lLCBPcmRpbmFsTnVtYmVyIGNvbHVtbkFmdGVyUHJvbG9nLCBpbnQgcHJv
bG9nTGVuZ3RoKTsKKyAgICB2b2lkIHNldEN1cnJlbnRQb3NpdGlvbihPcmRpbmFsTnVtYmVyIGxp
bmUsIE9yZGluYWxOdW1iZXIgY29sdW1uQWZ0cmVQcm9sb2csIGludCBwcm9sb2dMZW5ndGgpOwog
CiBwcml2YXRlOgogICAgIGVudW0gRmFzdFBhdGhGbGFncyB7CkBAIC0yOTUsNyArMzIyLDcgQEAg
cHJpdmF0ZToKICAgICB9OwogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU2VnbWVudGVkU3Vic3Ry
aW5nJik7Ci0gICAgdm9pZCBwdXNoQmFjayhjb25zdCBTZWdtZW50ZWRTdWJzdHJpbmcmKTsKKyAg
ICB2b2lkIHByZXBlbmQoY29uc3QgU2VnbWVudGVkU3Vic3RyaW5nJik7CiAKICAgICB2b2lkIGFk
dmFuY2U4KCk7CiAgICAgdm9pZCBhZHZhbmNlMTYoKTsKQEAgLTM0NywxMiArMzc0LDMxIEBAIHBy
aXZhdGU6CiAgICAgICAgIHVwZGF0ZVNsb3dDYXNlRnVuY3Rpb25Qb2ludGVycygpOwogICAgIH0K
IAotICAgIC8vIFdyaXRlcyBjb25zdW1lZCBjaGFyYWN0ZXJzIGludG8gY29uc3VtZWRDaGFyYWN0
ZXJzLCB3aGljaCBtdXN0IGhhdmUgc3BhY2UgZm9yIGF0IGxlYXN0IHxjb3VudHwgY2hhcmFjdGVy
cy4KLSAgICB2b2lkIGFkdmFuY2VQYXN0Tm9uTmV3bGluZXModW5zaWduZWQgY291bnQpOwotICAg
IHZvaWQgYWR2YW5jZVBhc3ROb25OZXdsaW5lcyh1bnNpZ25lZCBjb3VudCwgVUNoYXIqIGNvbnN1
bWVkQ2hhcmFjdGVycyk7Ci0KLSAgICBBZHZhbmNlUGFzdFJlc3VsdCBhZHZhbmNlUGFzdChjb25z
dCBjaGFyKiBsaXRlcmFsLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgY2FzZVNlbnNpdGl2ZSk7Ci0g
ICAgQWR2YW5jZVBhc3RSZXN1bHQgYWR2YW5jZVBhc3RTbG93Q2FzZShjb25zdCBjaGFyKiBsaXRl
cmFsLCBib29sIGNhc2VTZW5zaXRpdmUpOworICAgIGlubGluZSBMb29rQWhlYWRSZXN1bHQgbG9v
a0FoZWFkSW5saW5lKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUpCisg
ICAgeworICAgICAgICBpZiAoIW1fcHVzaGVkQ2hhcjEgJiYgc3RyaW5nLmxlbmd0aCgpIDw9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1cnJlbnRTdHJpbmcubV9sZW5ndGgpKSB7CisgICAgICAg
ICAgICBTdHJpbmcgY3VycmVudFN1YnN0cmluZyA9IG1fY3VycmVudFN0cmluZy5jdXJyZW50U3Vi
U3RyaW5nKHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgICAgICBpZiAoY3VycmVudFN1YnN0cmlu
Zy5zdGFydHNXaXRoKHN0cmluZywgY2FzZVNlbnNpdGl2ZSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIERpZE1hdGNoOworICAgICAgICAgICAgcmV0dXJuIERpZE5vdE1hdGNoOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBsb29rQWhlYWRTbG93Q2FzZShzdHJpbmcsIGNhc2VTZW5zaXRpdmUp
OworICAgIH0KKyAgICAKKyAgICBMb29rQWhlYWRSZXN1bHQgbG9va0FoZWFkU2xvd0Nhc2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgY2FzZVNlbnNpdGl2ZSkKKyAgICB7CisgICAgICAgIHVu
c2lnbmVkIGNvdW50ID0gc3RyaW5nLmxlbmd0aCgpOworICAgICAgICBpZiAoY291bnQgPiBsZW5n
dGgoKSkKKyAgICAgICAgICAgIHJldHVybiBOb3RFbm91Z2hDaGFyYWN0ZXJzOworICAgICAgICBV
Q2hhciogY29uc3VtZWRDaGFyYWN0ZXJzOworICAgICAgICBTdHJpbmcgY29uc3VtZWRTdHJpbmcg
PSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoY291bnQsIGNvbnN1bWVkQ2hhcmFjdGVycyk7
CisgICAgICAgIGFkdmFuY2UoY291bnQsIGNvbnN1bWVkQ2hhcmFjdGVycyk7CisgICAgICAgIExv
b2tBaGVhZFJlc3VsdCByZXN1bHQgPSBEaWROb3RNYXRjaDsKKyAgICAgICAgaWYgKGNvbnN1bWVk
U3RyaW5nLnN0YXJ0c1dpdGgoc3RyaW5nLCBjYXNlU2Vuc2l0aXZlKSkKKyAgICAgICAgICAgIHJl
c3VsdCA9IERpZE1hdGNoOworICAgICAgICBwcmVwZW5kKFNlZ21lbnRlZFN0cmluZyhjb25zdW1l
ZFN0cmluZykpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIGJvb2wgaXND
b21wb3NpdGUoKSBjb25zdCB7IHJldHVybiAhbV9zdWJzdHJpbmdzLmlzRW1wdHkoKTsgfQogCkBA
IC0zNzEsMjcgKzQxNyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCAoU2VnbWVudGVkU3RyaW5nOjoq
bV9hZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlckZ1bmMpKCk7CiB9OwogCi1pbmxpbmUgdm9pZCBT
ZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VQYXN0Tm9uTmV3bGluZXModW5zaWduZWQgY291bnQpCi17
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIGFkdmFu
Y2VQYXN0Tm9uTmV3bGluZSgpOwotfQotCi1pbmxpbmUgU2VnbWVudGVkU3RyaW5nOjpBZHZhbmNl
UGFzdFJlc3VsdCBTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VQYXN0KGNvbnN0IGNoYXIqIGxpdGVy
YWwsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBjYXNlU2Vuc2l0aXZlKQotewotICAgIEFTU0VSVChz
dHJsZW4obGl0ZXJhbCkgPT0gbGVuZ3RoKTsKLSAgICBBU1NFUlQoIXN0cmNocihsaXRlcmFsLCAn
XG4nKSk7Ci0gICAgaWYgKCFtX3B1c2hlZENoYXIxKSB7Ci0gICAgICAgIGlmIChsZW5ndGggPD0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudFN0cmluZy5tX2xlbmd0aCkpIHsKLSAgICAg
ICAgICAgIGlmICghbV9jdXJyZW50U3RyaW5nLmN1cnJlbnRTdWJTdHJpbmcobGVuZ3RoKS5zdGFy
dHNXaXRoKGxpdGVyYWwsIGNhc2VTZW5zaXRpdmUpKQotICAgICAgICAgICAgICAgIHJldHVybiBE
aWROb3RNYXRjaDsKLSAgICAgICAgICAgIGFkdmFuY2VQYXN0Tm9uTmV3bGluZXMobGVuZ3RoKTsK
LSAgICAgICAgICAgIHJldHVybiBEaWRNYXRjaDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gYWR2YW5jZVBhc3RTbG93Q2FzZShsaXRlcmFsLCBjYXNlU2Vuc2l0aXZlKTsKLX0KLQogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9DaGFy
YWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmgKaW5kZXggYWY4NmY4YWI0NzIzOGI5ZGQ3YzBj
NDFhNTFiMzg4YTgzZmUwNDQ4Ny4uNjgxZWIzM2FlNDFlZmM1YzVjZWU1ODlhMGZlMDliOTRjYmI0
MGUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZl
cmVuY2VQYXJzZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9DaGFy
YWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmgKQEAgLTMxLDYgKzMxLDExIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAoraW5saW5lIGJvb2wgaXNIZXhEaWdpdChVQ2hhciBjYykKK3sKKyAg
ICByZXR1cm4gKGNjID49ICcwJyAmJiBjYyA8PSAnOScpIHx8IChjYyA+PSAnYScgJiYgY2MgPD0g
J2YnKSB8fCAoY2MgPj0gJ0EnICYmIGNjIDw9ICdGJyk7Cit9CisKIGlubGluZSB2b2lkIHVuY29u
c3VtZUNoYXJhY3RlcnMoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ0J1aWxk
ZXImIGNvbnN1bWVkQ2hhcmFjdGVycykKIHsKICAgICBpZiAoY29uc3VtZWRDaGFyYWN0ZXJzLmxl
bmd0aCgpID09IDEpCkBAIC0zOSw3ICs0NCw3IEBAIGlubGluZSB2b2lkIHVuY29uc3VtZUNoYXJh
Y3RlcnMoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ0J1aWxkZXImIGNvCiAg
ICAgICAgIHNvdXJjZS5wdXNoKGNvbnN1bWVkQ2hhcmFjdGVyc1swXSk7CiAgICAgICAgIHNvdXJj
ZS5wdXNoKGNvbnN1bWVkQ2hhcmFjdGVyc1sxXSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHNvdXJj
ZS5wdXNoQmFjayhTZWdtZW50ZWRTdHJpbmcoY29uc3VtZWRDaGFyYWN0ZXJzLnRvU3RyaW5nUHJl
c2VydmVDYXBhY2l0eSgpKSk7CisgICAgICAgIHNvdXJjZS5wcmVwZW5kKFNlZ21lbnRlZFN0cmlu
Zyhjb25zdW1lZENoYXJhY3RlcnMudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCkpKTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFBhcnNlckZ1bmN0aW9ucz4KQEAgLTQ5LDcgKzU0LDcgQEAgYm9v
bCBjb25zdW1lQ2hhcmFjdGVyUmVmZXJlbmNlKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBTdHJp
bmdCdWlsZGVyJiBkZWNvZGVkQ2gKICAgICBBU1NFUlQoIW5vdEVub3VnaENoYXJhY3RlcnMpOwog
ICAgIEFTU0VSVChkZWNvZGVkQ2hhcmFjdGVyLmlzRW1wdHkoKSk7CiAgICAgCi0gICAgZW51bSB7
CisgICAgZW51bSBFbnRpdHlTdGF0ZSB7CiAgICAgICAgIEluaXRpYWwsCiAgICAgICAgIE51bWJl
ciwKICAgICAgICAgTWF5YmVIZXhMb3dlckNhc2VYLApAQCAtNTcsOTcgKzYyLDExMSBAQCBib29s
IGNvbnN1bWVDaGFyYWN0ZXJSZWZlcmVuY2UoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIFN0cmlu
Z0J1aWxkZXImIGRlY29kZWRDaAogICAgICAgICBIZXgsCiAgICAgICAgIERlY2ltYWwsCiAgICAg
ICAgIE5hbWVkCi0gICAgfSBzdGF0ZSA9IEluaXRpYWw7CisgICAgfTsKKyAgICBFbnRpdHlTdGF0
ZSBlbnRpdHlTdGF0ZSA9IEluaXRpYWw7CiAgICAgVUNoYXIzMiByZXN1bHQgPSAwOworICAgIGJv
b2wgb3ZlcmZsb3cgPSBmYWxzZTsKKyAgICBjb25zdCBVQ2hhcjMyIGhpZ2hlc3RWYWxpZENoYXJh
Y3RlciA9IDB4MTBGRkZGOwogICAgIFN0cmluZ0J1aWxkZXIgY29uc3VtZWRDaGFyYWN0ZXJzOwog
ICAgIAogICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSkgewotICAgICAgICBVQ2hhciBjaGFy
YWN0ZXIgPSBzb3VyY2UuY3VycmVudENoYXIoKTsKLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewot
ICAgICAgICBjYXNlIEluaXRpYWw6Ci0gICAgICAgICAgICBpZiAoY2hhcmFjdGVyID09ICdceDA5
JyB8fCBjaGFyYWN0ZXIgPT0gJ1x4MEEnIHx8IGNoYXJhY3RlciA9PSAnXHgwQycgfHwgY2hhcmFj
dGVyID09ICcgJyB8fCBjaGFyYWN0ZXIgPT0gJzwnIHx8IGNoYXJhY3RlciA9PSAnJicpCisgICAg
ICAgIFVDaGFyIGNjID0gc291cmNlLmN1cnJlbnRDaGFyKCk7CisgICAgICAgIHN3aXRjaCAoZW50
aXR5U3RhdGUpIHsKKyAgICAgICAgY2FzZSBJbml0aWFsOiB7CisgICAgICAgICAgICBpZiAoY2Mg
PT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnIHx8
IGNjID09ICc8JyB8fCBjYyA9PSAnJicpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyICYmIGNoYXJhY3RlciA9
PSBhZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlcikKKyAgICAgICAgICAgIGlmIChhZGRpdGlvbmFs
QWxsb3dlZENoYXJhY3RlciAmJiBjYyA9PSBhZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlcikKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoY2hhcmFjdGVyID09
ICcjJykgewotICAgICAgICAgICAgICAgIHN0YXRlID0gTnVtYmVyOworICAgICAgICAgICAgaWYg
KGNjID09ICcjJykgeworICAgICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gTnVtYmVyOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzQVND
SUlBbHBoYShjaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBOYW1lZDsKLSAg
ICAgICAgICAgICAgICBnb3RvIE5hbWVkOworICAgICAgICAgICAgaWYgKChjYyA+PSAnYScgJiYg
Y2MgPD0gJ3onKSB8fCAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykpIHsKKyAgICAgICAgICAgICAg
ICBlbnRpdHlTdGF0ZSA9IE5hbWVkOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIE51bWJlcjoK
LSAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJ3gnKSB7Ci0gICAgICAgICAgICAgICAgc3Rh
dGUgPSBNYXliZUhleExvd2VyQ2FzZVg7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBOdW1iZXI6
IHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAneCcpIHsKKyAgICAgICAgICAgICAgICBlbnRpdHlT
dGF0ZSA9IE1heWJlSGV4TG93ZXJDYXNlWDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJ1gnKSB7Ci0gICAgICAgICAg
ICAgICAgc3RhdGUgPSBNYXliZUhleFVwcGVyQ2FzZVg7CisgICAgICAgICAgICBpZiAoY2MgPT0g
J1gnKSB7CisgICAgICAgICAgICAgICAgZW50aXR5U3RhdGUgPSBNYXliZUhleFVwcGVyQ2FzZVg7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAo
aXNBU0NJSURpZ2l0KGNoYXJhY3RlcikpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IERlY2lt
YWw7Ci0gICAgICAgICAgICAgICAgZ290byBEZWNpbWFsOworICAgICAgICAgICAgaWYgKGNjID49
ICcwJyAmJiBjYyA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBlbnRpdHlTdGF0ZSA9IERlY2lt
YWw7CisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBzb3VyY2UucHVzaCgnIycpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBj
YXNlIE1heWJlSGV4TG93ZXJDYXNlWDoKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQo
Y2hhcmFjdGVyKSkgewotICAgICAgICAgICAgICAgIHN0YXRlID0gSGV4OwotICAgICAgICAgICAg
ICAgIGdvdG8gSGV4OworICAgICAgICB9CisgICAgICAgIGNhc2UgTWF5YmVIZXhMb3dlckNhc2VY
OiB7CisgICAgICAgICAgICBpZiAoaXNIZXhEaWdpdChjYykpIHsKKyAgICAgICAgICAgICAgICBl
bnRpdHlTdGF0ZSA9IEhleDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHNvdXJjZS5wdXNoKCcjJyk7CiAgICAgICAgICAgICBzb3VyY2UucHVz
aCgneCcpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIE1heWJlSGV4
VXBwZXJDYXNlWDoKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoY2hhcmFjdGVyKSkg
ewotICAgICAgICAgICAgICAgIHN0YXRlID0gSGV4OwotICAgICAgICAgICAgICAgIGdvdG8gSGV4
OworICAgICAgICB9CisgICAgICAgIGNhc2UgTWF5YmVIZXhVcHBlckNhc2VYOiB7CisgICAgICAg
ICAgICBpZiAoaXNIZXhEaWdpdChjYykpIHsKKyAgICAgICAgICAgICAgICBlbnRpdHlTdGF0ZSA9
IEhleDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHNvdXJjZS5wdXNoKCcjJyk7CiAgICAgICAgICAgICBzb3VyY2UucHVzaCgnWCcpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIEhleDoKLSAgICAgICAgSGV4Ogot
ICAgICAgICAgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChjaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMTYgKyB0b0FTQ0lJSGV4VmFsdWUoY2hhcmFjdGVyKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChj
aGFyYWN0ZXIgPT0gJzsnKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2UoKTsKLSAg
ICAgICAgICAgICAgICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVuZChQYXJzZXJGdW5jdGlvbnM6Omxl
Z2FsRW50aXR5Rm9yKHJlc3VsdCkpOworICAgICAgICB9CisgICAgICAgIGNhc2UgSGV4OiB7Cisg
ICAgICAgICAgICBpZiAoY2MgPj0gJzAnICYmIGNjIDw9ICc5JykKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSByZXN1bHQgKiAxNiArIGNjIC0gJzAnOworICAgICAgICAgICAgZWxzZSBpZiAoY2Mg
Pj0gJ2EnICYmIGNjIDw9ICdmJykKKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAx
NiArIDEwICsgY2MgLSAnYSc7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2Mg
PD0gJ0YnKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDE2ICsgMTAgKyBjYyAt
ICdBJzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc7JykgeworICAgICAgICAgICAgICAg
IHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKGNjKTsKKyAgICAgICAgICAgICAgICBkZWNvZGVkQ2hh
cmFjdGVyLmFwcGVuZChQYXJzZXJGdW5jdGlvbnM6OmxlZ2FsRW50aXR5Rm9yKG92ZXJmbG93ID8g
MCA6IHJlc3VsdCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKFBhcnNlckZ1bmN0aW9uczo6YWNjZXB0TWFsZm9ybWVkKCkpIHsK
LSAgICAgICAgICAgICAgICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVuZChQYXJzZXJGdW5jdGlvbnM6
OmxlZ2FsRW50aXR5Rm9yKHJlc3VsdCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChQYXJzZXJG
dW5jdGlvbnM6OmFjY2VwdE1hbGZvcm1lZCgpKSB7CisgICAgICAgICAgICAgICAgZGVjb2RlZENo
YXJhY3Rlci5hcHBlbmQoUGFyc2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0eUZvcihvdmVyZmxvdyA/
IDAgOiByZXN1bHQpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNv
bnN1bWVkQ2hhcmFjdGVycyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVk
Q2hhcmFjdGVycyk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgRGVj
aW1hbDoKLSAgICAgICAgRGVjaW1hbDoKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoY2hh
cmFjdGVyKSkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGFib3V0IG92ZXJmbG93
PwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDEwICsgY2hhcmFjdGVyIC0gJzAn
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KGNoYXJhY3RlciA9PSAnOycpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZSgpOwot
ICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyYWN0ZXIuYXBwZW5kKFBhcnNlckZ1bmN0aW9uczo6
bGVnYWxFbnRpdHlGb3IocmVzdWx0KSk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID4gaGlnaGVz
dFZhbGlkQ2hhcmFjdGVyKQorICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRGVjaW1hbDogeworICAgICAg
ICAgICAgaWYgKGNjID49ICcwJyAmJiBjYyA8PSAnOScpCisgICAgICAgICAgICAgICAgcmVzdWx0
ID0gcmVzdWx0ICogMTAgKyBjYyAtICcwJzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc7
JykgeworICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKGNjKTsKKyAgICAg
ICAgICAgICAgICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVuZChQYXJzZXJGdW5jdGlvbnM6OmxlZ2Fs
RW50aXR5Rm9yKG92ZXJmbG93ID8gMCA6IHJlc3VsdCkpOwogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChQYXJzZXJGdW5jdGlvbnM6OmFjY2VwdE1h
bGZvcm1lZCgpKSB7CisgICAgICAgICAgICAgICAgZGVjb2RlZENoYXJhY3Rlci5hcHBlbmQoUGFy
c2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0eUZvcihvdmVyZmxvdyA/IDAgOiByZXN1bHQpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKFBhcnNlckZ1bmN0aW9uczo6YWNjZXB0TWFsZm9ybWVkKCkpCi0gICAgICAgICAgICAg
ICAgZGVjb2RlZENoYXJhY3Rlci5hcHBlbmQoUGFyc2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0eUZv
cihyZXN1bHQpKTsKLSAgICAgICAgICAgIHVuY29uc3VtZUNoYXJhY3RlcnMoc291cmNlLCBjb25z
dW1lZENoYXJhY3RlcnMpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNl
IE5hbWVkOgotICAgICAgICBOYW1lZDoKLSAgICAgICAgICAgIHJldHVybiBQYXJzZXJGdW5jdGlv
bnM6OmNvbnN1bWVOYW1lZEVudGl0eShzb3VyY2UsIGRlY29kZWRDaGFyYWN0ZXIsIG5vdEVub3Vn
aENoYXJhY3RlcnMsIGFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyLCBjaGFyYWN0ZXIpOworICAg
ICAgICAgICAgaWYgKHJlc3VsdCA+IGhpZ2hlc3RWYWxpZENoYXJhY3RlcikKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIE5hbWVkOiB7CisgICAgICAgICAgICByZXR1cm4gUGFyc2VyRnVuY3Rpb25zOjpj
b25zdW1lTmFtZWRFbnRpdHkoc291cmNlLCBkZWNvZGVkQ2hhcmFjdGVyLCBub3RFbm91Z2hDaGFy
YWN0ZXJzLCBhZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciwgY2MpOworICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgY29uc3VtZWRDaGFyYWN0ZXJzLmFwcGVuZChjaGFyYWN0ZXIpOwotICAg
ICAgICBzb3VyY2UuYWR2YW5jZSgpOworICAgICAgICBjb25zdW1lZENoYXJhY3RlcnMuYXBwZW5k
KGNjKTsKKyAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoY2MpOwogICAgIH0KICAgICBB
U1NFUlQoc291cmNlLmlzRW1wdHkoKSk7CiAgICAgbm90RW5vdWdoQ2hhcmFjdGVycyA9IHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXplcklu
bGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5l
cy5oCmluZGV4IDk4NzUxMGU4YTA3ODZjZmNmOTc1M2M4NjBjZTgzMTQxMWFlZmJkNDAuLmUwYjMx
NTZiYjU0MDM4MGNkYmIwZDM0N2NlMDM4NjkwODA5ZjIyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lcy5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8KICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCkBAIC0zMCw2MSArMzAsNjQgQEAKIAogI2luY2x1ZGUg
IlNlZ21lbnRlZFN0cmluZy5oIgogCi0jaWYgQ09NUElMRVIoTVNWQykKLS8vIERpc2FibGUgdGhl
ICJ1bnJlYWNoYWJsZSBjb2RlIiB3YXJuaW5nIHNvIHdlIGNhbiBjb21waWxlIHRoZSBBU1NFUlRf
Tk9UX1JFQUNIRUQgaW4gdGhlIEVORF9TVEFURSBtYWNyby4KLSNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOiA0NzAyKQotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIGJvb2wg
aXNUb2tlbml6ZXJXaGl0ZXNwYWNlKFVDaGFyIGNoYXJhY3RlcikKK2lubGluZSBib29sIGlzVG9r
ZW5pemVyV2hpdGVzcGFjZShVQ2hhciBjYykKIHsKLSAgICByZXR1cm4gY2hhcmFjdGVyID09ICcg
JyB8fCBjaGFyYWN0ZXIgPT0gJ1x4MEEnIHx8IGNoYXJhY3RlciA9PSAnXHgwOScgfHwgY2hhcmFj
dGVyID09ICdceDBDJzsKKyAgICByZXR1cm4gY2MgPT0gJyAnIHx8IGNjID09ICdceDBBJyB8fCBj
YyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEMnOwogfQogCi0jZGVmaW5lIEJFR0lOX1NUQVRFKHN0
YXRlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNhc2Ugc3Rh
dGVOYW1lOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICBzdGF0ZU5hbWU6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgIGNvbnN0IGF1dG8gY3VycmVudFN0YXRlID0gc3RhdGVOYW1lOyAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICBVTlVTRURfUEFSQU0oY3VycmVudFN0YXRlKTsKK2lu
bGluZSB2b2lkIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIGNvbnN0IGNoYXIqIGV4cGVjdGVkQ2hhcmFjdGVycykKK3sKKyAgICB3aGls
ZSAoKmV4cGVjdGVkQ2hhcmFjdGVycykKKyAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlRJ
Z25vcmluZ0Nhc2UoKmV4cGVjdGVkQ2hhcmFjdGVycysrKTsKK30KIAotI2RlZmluZSBFTkRfU1RB
VEUoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIH0KK2lubGluZSB2b2lkIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlQo
U2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGNvbnN0IGNoYXIqIGV4cGVjdGVkQ2hhcmFjdGVycykK
K3sKKyAgICB3aGlsZSAoKmV4cGVjdGVkQ2hhcmFjdGVycykKKyAgICAgICAgc291cmNlLmFkdmFu
Y2VBbmRBU1NFUlQoKmV4cGVjdGVkQ2hhcmFjdGVycysrKTsKK30KIAotI2RlZmluZSBSRVRVUk5f
SU5fQ1VSUkVOVF9TVEFURShleHByZXNzaW9uKSAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBk
byB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIG1fc3RhdGUgPSBjdXJyZW50U3RhdGU7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gZXhwcmVzc2lvbjsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKKyNpZiBDT01QSUxF
UihNU1ZDKQorLy8gV2UgbmVlZCB0byBkaXNhYmxlIHRoZSAidW5yZWFjaGFibGUgY29kZSIgd2Fy
bmluZyBiZWNhdXNlIHdlIHdhbnQgdG8gYXNzZXJ0CisvLyB0aGF0IHNvbWUgY29kZSBwb2ludHMg
YXJlbid0IHJlYWNoZWQgaW4gdGhlIHN0YXRlIG1hY2hpbmUuCisjcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZTogNDcwMikKKyNlbmRpZgorCisjZGVmaW5lIEJFR0lOX1NUQVRFKHByZWZpeCwgc3RhdGVO
YW1lKSBjYXNlIHByZWZpeDo6c3RhdGVOYW1lOiBzdGF0ZU5hbWU6CisjZGVmaW5lIEVORF9TVEFU
RSgpIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBicmVhazsKIAotLy8gV2UgdXNlIHRoaXMgbWFjcm8g
d2hlbiB0aGUgSFRNTCBzcGVjIHNheXMgInJlY29uc3VtZSB0aGUgY3VycmVudCBpbnB1dCBjaGFy
YWN0ZXIgaW4gdGhlIDxtdW1ibGU+IHN0YXRlLiIKLSNkZWZpbmUgUkVDT05TVU1FX0lOKG5ld1N0
YXRlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBnb3RvIG5ld1N0YXRlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKy8vIFdlIHVzZSB0aGlzIG1hY3JvIHdoZW4gdGhlIEhUTUw1IHNwZWMgc2F5cyAicmVjb25z
dW1lIHRoZSBjdXJyZW50IGlucHV0CisvLyBjaGFyYWN0ZXIgaW4gdGhlIDxtdW1ibGU+IHN0YXRl
LiIKKyNkZWZpbmUgUkVDT05TVU1FX0lOKHByZWZpeCwgc3RhdGVOYW1lKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9z
dGF0ZSA9IHByZWZpeDo6c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAotLy8g
V2UgdXNlIHRoaXMgbWFjcm8gd2hlbiB0aGUgSFRNTCBzcGVjIHNheXMgImNvbnN1bWUgdGhlIG5l
eHQgaW5wdXQgY2hhcmFjdGVyIC4uLiBhbmQgc3dpdGNoIHRvIHRoZSA8bXVtYmxlPiBzdGF0ZS4i
Ci0jZGVmaW5lIEFEVkFOQ0VfVE8obmV3U3RhdGUpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKCFtX3ByZXByb2Nlc3Nvci5hZHZhbmNl
KHNvdXJjZSwgaXNOdWxsQ2hhcmFjdGVyU2tpcHBpbmdTdGF0ZShuZXdTdGF0ZSkpKSB7IFwKLSAg
ICAgICAgICAgIG1fc3RhdGUgPSBuZXdTdGF0ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsg
ICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY2hhcmFjdGVyID0gbV9wcmVwcm9j
ZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7ICAgICAgICBcCi0gICAgICAgIGdvdG8gbmV3U3Rh
dGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLy8gV2UgdXNl
IHRoaXMgbWFjcm8gd2hlbiB0aGUgSFRNTDUgc3BlYyBzYXlzICJjb25zdW1lIHRoZSBuZXh0IGlu
cHV0CisvLyBjaGFyYWN0ZXIgLi4uIGFuZCBzd2l0Y2ggdG8gdGhlIDxtdW1ibGU+IHN0YXRlLiIK
KyNkZWZpbmUgQURWQU5DRV9UTyhwcmVmaXgsIHN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9zdGF0
ZSA9IHByZWZpeDo6c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgaWYgKCFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmFkdmFuY2Uoc291
cmNlKSkgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
Y2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3RlcigpOyAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAot
Ly8gRm9yIG1vcmUgY29tcGxleCBjYXNlcywgY2FsbGVyIGNvbnN1bWVzIHRoZSBjaGFyYWN0ZXJz
IGZpcnN0IGFuZCB0aGVuIHVzZXMgdGhpcyBtYWNyby4KLSNkZWZpbmUgU1dJVENIX1RPKG5ld1N0
YXRlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICBpZiAoIW1fcHJlcHJvY2Vzc29yLnBlZWsoc291cmNlLCBpc051bGxDaGFyYWN0ZXJTa2lw
cGluZ1N0YXRlKG5ld1N0YXRlKSkpIHsgXAotICAgICAgICAgICAgbV9zdGF0ZSA9IG5ld1N0YXRl
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBo
YXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOyAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICBjaGFyYWN0ZXIgPSBtX3ByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsg
ICAgICAgIFwKLSAgICAgICAgZ290byBuZXdTdGF0ZTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisvLyBTb21ldGltZXMgdGhlcmUncyBtb3JlIGNvbXBsaWNhdGVk
IGxvZ2ljIGluIHRoZSBzcGVjIHRoYXQgc2VwYXJhdGVzIHdoZW4KKy8vIHdlIGNvbnN1bWUgdGhl
IG5leHQgaW5wdXQgY2hhcmFjdGVyIGFuZCB3aGVuIHdlIHN3aXRjaCB0byBhIHBhcnRpY3VsYXIK
Ky8vIHN0YXRlLiBXZSBoYW5kbGUgdGhvc2UgY2FzZXMgYnkgYWR2YW5jaW5nIHRoZSBzb3VyY2Ug
ZGlyZWN0bHkgYW5kIHVzaW5nCisvLyB0aGlzIG1hY3JvIHRvIHN3aXRjaCB0byB0aGUgaW5kaWNh
dGVkIHN0YXRlLgorI2RlZmluZSBTV0lUQ0hfVE8ocHJlZml4LCBzdGF0ZU5hbWUpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBtX3N0YXRlID0gcHJlZml4OjpzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8fCAhbV9pbnB1
dFN0cmVhbVByZXByb2Nlc3Nvci5wZWVrKHNvdXJjZSkpICAgXAorICAgICAgICAgICAgcmV0dXJu
IGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFj
dGVyKCk7ICAgICAgICAgICAgICAgXAorICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUg
KGZhbHNlKQogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>