<?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>226838</bug_id>
          
          <creation_ts>2021-06-09 12:37:13 -0700</creation_ts>
          <short_desc>[LayoutTests] Delete unused LayoutTests/resources resources</short_desc>
          <delta_ts>2021-06-10 10:32:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Jenner">jenner</reporter>
          <assigned_to name="Robert Jenner">jenner</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jbedard</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1768284</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Jenner">jenner</who>
    <bug_when>2021-06-09 12:37:13 -0700</bug_when>
    <thetext>There are a number of unused resources in LayoutTests/resources, we should delete them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768285</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-09 12:37:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/79092535&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768287</commentid>
    <comment_count>2</comment_count>
      <attachid>430995</attachid>
    <who name="Robert Jenner">jenner</who>
    <bug_when>2021-06-09 12:39:14 -0700</bug_when>
    <thetext>Created attachment 430995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768368</commentid>
    <comment_count>3</comment_count>
      <attachid>430995</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-09 15:33:10 -0700</bug_when>
    <thetext>Comment on attachment 430995
Patch

This probably isn&apos;t going to work, the script generating this patch isn&apos;t aware of the fact that these resources may be used in other layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768602</commentid>
    <comment_count>4</comment_count>
    <who name="Robert Jenner">jenner</who>
    <bug_when>2021-06-10 10:32:22 -0700</bug_when>
    <thetext>Yep. As we had discussed in conversations, it looks like the LayoutTests/resources folder doesn&apos;t work so well will the delete-unused.py script. We will skip this one for a future project.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430995</attachid>
            <date>2021-06-09 12:39:14 -0700</date>
            <delta_ts>2021-06-09 13:57:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226838-20210609123913.patch</filename>
            <type>text/plain</type>
            <size>457354</size>
            <attacher name="Robert Jenner">jenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjY3CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTg3NjZmODFjMDVmMzkxZjdkOTQ2
ODZjOWMzYmE4NTlkYmVmNzE3MS4uMGJiM2YzYWU3NWI1NjJhMzRiNzQyYWRlODA2MmNlN2YyZjEz
MWQ3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTA2LTA5ICBSb2JlcnQgSmVubmVyICA8
amVubmVyQGFwcGxlLmNvbT4KKworICAgICAgICBbTGF5b3V0VGVzdHNdIERlbGV0ZSB1bnVzZWQg
TGF5b3V0VGVzdHMvcmVzb3VyY2VzIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2ODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsZXRlIHVudXNlZCBwaHAgcmVzb3VyY2VzIGFmdGVy
IHRlc3RzIHdlcmUgY29udmVydGVkIHRvIFB5dGhvbi4KKworICAgICAgICAqIHJlc291cmNlcy9B
aGVtLm90ZjogUmVtb3ZlZC4KKyAgICAgICAgKiByZXNvdXJjZXMvQWhlbS50dGY6IFJlbW92ZWQu
CisgICAgICAgICogcmVzb3VyY2VzL0FoZW0ud29mZjogUmVtb3ZlZC4KKyAgICAgICAgKiByZXNv
dXJjZXMvQWhlbV9DSksudHRmOiBSZW1vdmVkLgorICAgICAgICAqIHJlc291cmNlcy9TcGFjZU9u
bHkub3RmOiBSZW1vdmVkLgorICAgICAgICAqIHJlc291cmNlcy9XZWJJRExQYXJzZXIuanM6IFJl
bW92ZWQuCisgICAgICAgICogcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzOiBSZW1v
dmVkLgorICAgICAgICAqIHJlc291cmNlcy9iYXNpYy1nZXN0dXJlcy5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiByZXNvdXJjZXMvY2hlY2stbGF5b3V0LXRoLmpzOiBSZW1vdmVkLgorICAgICAgICAq
IHJlc291cmNlcy9jaGVjay1sYXlvdXQuanM6IFJlbW92ZWQuCisgICAgICAgICogcmVzb3VyY2Vz
L2R1bXAtYXMtbWFya3VwLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHJlc291cmNlcy9nYy5qczog
UmVtb3ZlZC4KKyAgICAgICAgKiByZXNvdXJjZXMvaWRsaGFybmVzcy5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiByZXNvdXJjZXMvaW1hZ2UtcHJlbG9hZC1oZWxwZXIuanM6IFJlbW92ZWQuCisgICAg
ICAgICogcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1hc3luYy5qczogUmVtb3ZlZC4KKyAgICAgICAg
KiByZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzOiBSZW1vdmVkLgorICAgICAgICAqIHJlc291cmNl
cy9qcy10ZXN0LXByZS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiByZXNvdXJjZXMvanMtdGVzdC5q
czogUmVtb3ZlZC4KKyAgICAgICAgKiByZXNvdXJjZXMvbWFnbml0dWRlLXBlcmYuanM6IFJlbW92
ZWQuCisgICAgICAgICogcmVzb3VyY2VzL3BsYXRmb3JtLWhlbHBlci5qczogUmVtb3ZlZC4KKyAg
ICAgICAgKiByZXNvdXJjZXMvcGx1Z2luLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHJlc291cmNl
cy9yZWdyZXNzLXBvc3QuanM6IFJlbW92ZWQuCisgICAgICAgICogcmVzb3VyY2VzL3JlZ3Jlc3Mt
cHJlLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHJlc291cmNlcy9zcmNzZXQtaGVscGVyLmpzOiBS
ZW1vdmVkLgorICAgICAgICAqIHJlc291cmNlcy9zdGFuZGFsb25lLXBvc3QuanM6IFJlbW92ZWQu
CisgICAgICAgICogcmVzb3VyY2VzL3N0YW5kYWxvbmUtcHJlLmpzOiBSZW1vdmVkLgorICAgICAg
ICAqIHJlc291cmNlcy90ZXN0LnN3ZjogUmVtb3ZlZC4KKyAgICAgICAgKiByZXNvdXJjZXMvdGVz
dGhhcm5lc3MuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIHJlc291cmNlcy91aS1kZWJ1Z2dpbmcu
anM6IFJlbW92ZWQuCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczogUmVtb3ZlZC4K
KyAgICAgICAgKiByZXNvdXJjZXMvd2FzbS1idWlsZGVyLmpzOiBSZW1vdmVkLgorICAgICAgICAq
IHJlc291cmNlcy93aW5kb3ctcG9zdG1lc3NhZ2Utb3Blbi1jbG9zZS5odG1sOiBSZW1vdmVkLgor
CiAyMDIxLTA2LTA5ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAg
ICAgU2tpcCBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL3BsdWdpbi1kb2VzbnQtY3Jhc2gu
aHRtbCBvbiBhcm02NApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL0FoZW0ub3Rm
IGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL0FoZW0ub3RmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2ZGQ0YmEyYWM2ZjA3OTVjNWYxM2M1YzdkNmYwNTQyYWI3MTIwOTBiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDYxNzYKemNtZUhMWD4/Ulk3WEU1XjJfY1hUZjxQaj92
X01xV0I8ekJLQXo9I3lORHZWYVViPGg+RSRNfGBOQ0w9P0VSanQ+CnpIZHohQTV5WFdjaXp1SzE1
KkprNTVKPmB6QmFTbDtkUEQqa2QrekoqTEJ5RmVYTVFscEAkbVo4dDZSNWplUmI+Qgp6dCRWOXFj
NVpHcUF+NmpEP2IwKGQpcjtFTT9tKD85QWhKOSZHazBLRHs8PEJnLXgpdytwV1lkbiVtaGo4aFNY
TkcKemJLMGdCNUFEQWxVQEVvOG4oZG5Ge0U/cHUwQSlBOC1CdysqZUJZejxVI1Z7Jm01eD9vZ3g4
al9NRV5qZ25icXpzCnotbjBAQTVuZTdKJUkjWFEzbHwxYzdjPW1+OUdZRSFWWFNXb3dXazVIdiYt
cjZgbHB+aT5EUCstUldMKWUoVyk2Ngp6IT91bHk/c2ZyQDt2OHtzV1gtcGN6dHNORDsrIzthVD9e
ZGMobkk1Zj5aZGdZPD5fcjhVSGhCfE5SSkR8O15HYHoKejQyNmgmZF9KYG8xIzVOKXNaMDxURzlv
eHw4dHtBISlWeyRNRmd6X0M9bjJ6IzktMiRWVGNtUHFQWkFJK1g9TUQyCnpkRiRpSHRNZWFZOCR2
WEw8UCQ/UU0+dDs7cTZLMzNvKTlmYj1BI2c7QWQtSTxxUWY5WGMhLVc2eDxRREpNWXcxZwp6cVRg
NilvcHpsV2BtPVMwUVVSS3c3SSVlY2p3bjdnTDxee1ZNVG5McFF5IXVmR35nI2ZiUXRrI0xVYXNq
aTg+KVYKejdFdk4wTThePzc0RmxuWDJWU3koOENHYTtRISFJcEMoMSl5Z1FIWEpyQ3lgZlZXK25U
PEtZWVN3Ris+SFhfTzlFCnowSTNCcygyTHI+MEZIcy1mUTYoPylOZ196VXFvb096PkVmI20yQFp+
dTEyKGg7LUdQRFhAcWBGVFNZITs7dGI2Rwp6UGhJaT9CWGtySm1WPjAqNVhMWVhxbSEoVXhXKlZL
aldWPTF1KUcxZTAmMUhCTkdeSk5oLWRKZmdrYjFXNXxBQGkKej0/VU5zNCROdkhKVlBeTTY/cjcx
Qjl9JjMwX3t4RiFiKHp4MkY2XiElbygmO0kmJGN6UXFjKDJNPX4xQ21yVkV1CnptYShRSHFKdnw5
dCFFb3hBZX1WVFl9TVNGKntpIWZzXi0+SnVUQHVkeVhxUDVxZ0U/YkZFO0JndWk3R2BtKVltbAp6
Um4xe2hPKWdVX3dhOThTVFVDJE1TKV4obnYrblM9d2RqRmImMzhOUDBoQno9cVppczdkSy0wXk42
K15hc2AqYTAKej5lVzQ3bzE7S0FKTURETlpDO3p4cD9YUkBVZnUzI3FZaWRFRWszaHVRUyhhRlQm
S21OV0A9V3FMdzUmOWw0OXZPCnpJY2tuKF9xakQmdlBhRXhKQnZLajheV1hvXiRQZUFNWTNMMm8h
JiFmO1JTKXNHOF8jPF4jV2deTSNRfVZnQlk2PQp6Kz9XKkZqMSk1MSkjM00mSDRNI0MrTjd2S3NI
PEpVPUQkWTNIUkZEeCV5a0k9UFBnbUNqUG57U2lOTz1pM1hLeSsKenloS1E1MWtwaGhlSDI4WTEq
WDh5UWRrWnZXez5oQ3szdCZxbVdlSDVwRSNoI3NQKXl4WTdeQ0B3b3UhdFVEZSk2CnpybGJ9b1pW
RUYrbzhuQjNPLSlRS08/XiNjT31ncCg9SD0oUC0lcSRJWnBRfH44eWRobk9uOUdOZ0k3OyZzM3hq
dgp6MEkkb2hATTJBa3VIc24mYzx9ckVyfk9zX3tyLWkxaHJobytyUkx8Rk8qUC12YmdwVWspOSN3
NiU5XlR1UmVQIy0KelNNOTFRdEorJCV2MSliWXRDZ0U4RGs9X0ZkYE5uTD5iKGB+RCZ8em9JYHpY
ekhSaFg4V0hZK3srb3U3SGpDMXtTCnpoRURTWW9UY359TSY8aDY+KU1QOXNmMn4yUnomVHtJKDRJ
PlZgQWcjKXNKcypPVCRLdTZCMksyKG97X3stUFd2bQp6aXsjdHl4VSolZSlAfENoT0chO0AtPVNs
dCZSeDNSKXZmIzhKJG0tS0MhRz4ocFQ3UDI1NkJ1Z0QwfWRicCpndzMKej9qMyZMaTJGeTU4dk91
ZiZVJCQ2O15re0x0YmJ6VGxUU1ZVJTtxaTZacmwzWV83YDR5YW1VV0dKLWhlNUB+S25ICnolUmt7
O1hTWV4qM2NpfVg7IW16flV0N0ZZWEhMS09yTEUtTU99bk95OWU0SlBLZm0rZiNMdmV9b3c0a3wh
REhgIwp6XnpqRUR6V2tUaFVhIUN4ci0wOFU5Uks5eF5tKV9mJnZ8NlEhcVB7VlYjJXUyRUJDKXk/
bF5xcHQpalAmOS1gJE0KejkhSE9WbDk3WGRgJXViflYybWsmcXJmPHNFVlZpbilvSEF7SitKTntz
XmpJQT1zSUczOWEoeTEpYUEqUyU5S1EyCnpIIyFsQk5mYlpFQ1piK3E8ZzstfEZ2aThBMFRPVTRk
MEphXk1pMkJzSHR3Z21ISUFhejZ3SmdORVdtUUMjZDx1Qwp6bSN+d35Wc3FJZTR5UGx9dCF2e2Jq
Q2Zwe1M/e2VFZGJNbzNVWkE7YkYzcyg9WEB3U0JlIWVSWk91UWJTLUw0czcKeiM7c1h3V3ttPDt6
Umg5dG1lP0YjeX0rIyVZQXpCaSkreVctSS1LND5VOHM5SjBpdUFXcH0taHFJdyRJbTAtZU1RCnpe
K0NoM3ZJK2BJVC1NYSF5SXVRRy1KeCRUWD1tNW1oSGBHKj52S0RMWEprPG5gR1pBVFc5TmZgJl5S
IWhKVnNJcwp6M1BVJnxQQEM/VmJ4QFpnUVohO3todlFJPnszeER3YFc4QlVqbko1T0pkeVVpMzdT
JWpOdXIjNjg9OWR4I2pqLVkKemdGQTMxVDJkQm9PKEQ1MCtFR3xlTUg8P3AxM0lEO2BBOFJaI2Et
eHo/em8lJHI2KHJpOTtCbDstM2M8dWQtfGR1CnpgZU9qSD07a3FxZH0lTy1QIWg8WWReKEpSeyYz
dWY1IyhQWkYkJHljMExITDY3KSR2d2tDS0UxOHp7SFYjSXE+SAp6Z0lJeTV2NTlXV1B2Q0pwZylN
WTxUfWZIZ2pvRWslaSVeVnBTYzhxMmd6ZWFoWkZtOUNrJD12fGlgWXFDeCZ2ansKemdPey1qeVJq
TzNAZnUjQ2Qrfm19aWY3MjEtXjQrQGp5R19LeW1+cF8jIz1hd2NUdFhhdW8mOypMbWIyVl95Q3th
CnpJNmxKMSpvO3FjNX0pQSZ6UUVebjNZT3dERG99fGtvV1lZNnY2ZiZWbWY8al52bmlPMT42bjM4
YllgYUZWTEIpQwp6Km5DUUZeQytwK3E3LVBPNkUlVHVOYU5gflFpNiRlIVYybG12NUorbE43dz9r
a1MkYDEqJUowQlRnc05QPD9KIUsKek9FfW1Id3Z3JTR0SnhhJUk5clBnIyhfMDl1cWthO09XSyVE
djxjfkNATjY+Zk5IU3dWOzk2NWMpNlhVJkUrSGVYCnpCX25NaSk5ZlNAOUs7Yj89eTYmfkNCRFFy
X3pvOVEhdnU/OShKWT1OdXEya3VUQys2UGg0bys9WXljYT1oT15Qawp6JXh1aWJkfjZiJSZnUEoh
T0clO2lZIWxuY1VTengydEx6UFNscFNMcXZ5PCNKYC09VUlVMVQqfUBDWTh3PDlQeTQKejs+by08
UHZjIzk1MXpwWEBHTCUqLV5VLXw3WEJjMkBkPG5+cFRYenlnP3QlYiV7VEM7YDhOSSUtXzJqK1p9
TXtmCnpLTDNQJiFPIXE+ezlGRDV6YnFpYUw+JjwpOGoyPk9uWWRINTZDRmkyKE1KcHZJYnd0dUJY
bHVOajJBYFhBdSZfVAp6Nk58KWh1fF87MEhqQyVQNHpXazw3bCp7IztzZiFpSTM+PUN1Zl5aUjEj
dnwoODd9TH1kYXt2aER4MXJlR0RVV2gKei1EU0ckQyRyQCtJWnxxfUstIzU4bWRMNGN3ayh4UDxP
O2J+WmpAVyheS3okck1JTXcjPGgkfj9KUnZMUG0rfjk9CnpveENWKDZybl5ZKE1yNk1wZD1+RE5e
MiFlPjd3KmRHTCErejVNe1ZCU31gaiYjaXtzfE55PkMoajxQXm1zO3BBaAp6RTFRKGYkfWBHI3JB
Km5ZOThlQmxqQlJqZiMtKn5GOERTUz1ZZFhiT0AyI0h1KTg2bz9zN3F5MXQkcCtUaHE2R2EKekgx
aFB0UVE8ZGFSV302bWNrWUhZV3laYmQjQE8/QnpWd15YO2VUZDwoKkcyV0ZIZiN0OGg+Un0+RSsz
I1ZXbzl5CnopNzg3NGFkRDZNZEdjbFlnJlNZYmpLNGNrUkQlRERqMTxyNHN+dWhPaU5+cGd7dHpB
M2NhPEJCOW5MVyRqUVQrOQpmdF5NZUcrQyM+ZHdWVU9wNFF+M3R8Qm53Qz1oeFY7WW9DN3JkTGw+
fgoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9BaGVtLnR0ZiBiL0xheW91dFRl
c3RzL3Jlc291cmNlcy9BaGVtLnR0ZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM4
MWNiMDMxNjVhYjgzMWEzNmFiYjU5MTQ1ZmY3YTJmNTY3NWZiOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2Qw
MDAwMQoKbGl0ZXJhbCAxMjQ4MAp6Y21lSE5aRm0mYjZAS1NxWEZxYD9WI0o4X1d7WigzMjc7QyVy
Tn5GNU5EK31CcU5VMHZKSU15S3lLIzQ4ZiZ4V3IKeilrZ1UhVDgmQzZCNyVZPDNSKG44NWZLNFZz
aXRUVm1vIT5VWkImWTJlR3BqUkozQTIrK2RxQiRWTFArVz8ze2I8Cnp5PVR0Nz1iZH1jP3p+VXtf
JVJiMmBkKDdqcihlVV5RTF9NTDBKVzFWcU1fT0B5WWZjPnR7VDhkUkUzaFlJMGFzeQp6P0BIRl5S
TWt3YXlsN1F3SHgwQV4xPnVNcDNoIURwcmFTQV9eWHdtPyF0Sy1aREllaDNHWklaVEpSPmxqX0x+
NSQKenhoN3JfNV9NKz1mdWQ2QytNfVV7VDZgKylFOFc7JCM2blNYTSVPI20wS05NMXsqbF52R0Jz
PUc+NVZgIWA+V2pgCnplT0U5bkAwM2ZjdUlAN0VBaVA9fEhDUHFEYFUtajdjK1Q+UmZYbzFgTyVw
Nj9QXkZkIWApTUxHZlp0WW9lb0lUbwp6OXx0WVhMM3Ijd1UjO2l1d0tpb2dUb2wlO15heWpaU0xK
IzFRIzVMIWF+JCVSMnxTKHlHMTRtVj4rKkFsMTRBSjgKenNrUlJTVExxTmRBKnxEYzwqQmVkPDIr
P09sd0xaZ0dZMVheelRGcyprOH0zYU44MmstY1dTdHtzNntZVHBNMmd+CnpgMDg0dGE1MmRxOWFw
PH0hWD97TmdVKXJ5ZlNhcUFUIVZhRS12ajdgJmdnPDE8UlQ5enAoez5DS0cqVllJMjhwcgp6NGMm
MSVkZis8e0NgMXQ3TU5nYzhCQWtne18jViF9KzMxYVBQPmVxNGl4VHcxeGl9QnNNfVBiUDE4X2JE
OylmVzcKekE3TDtxO0pQKnghIVI3QnhEWEBvVn5vVF83PUBvO0clbSYlVCFPSzw2eXMyYUB3Zn5W
YTUqTzgzUzVid1ZpSkNhCnp0OGdfWSk4NyF2UUdxWl9SSDZ6SVJBVU9SS0BGbWFBJnkjSGl2KkhM
cCReeGY5dTFnXj52MDM3YWJLQiVwTDRsPQp6NkYxQH1gfm8tUUUmTEw8Ozh4cyp4QTd9OTsoZ3FY
Sko1eiVfeV5pQzgqfWd1LW9AWTBqSzU8cGV2UXtLNHxuMSYKenswNFg5Sl5UcUQ7OG9tJUNacmpx
YCoxKHo8N0s+cEtWdWkoeitkb05FV3EjWkFyQGpNVEpab3tASy1BJGQkMCh2CnpWPmtCVktgaDJZ
U2MwV143Pns1WG1nNy04I3heVlBJOUIyYkpjKDZVamk+TjVldmRWSDI1WWc3SkV1LUdmVWBBKAp6
UVM4aHAlc0BzZFFPY0FDV3VFJGl4PW5wY3lHd2dTVGQhPnRJaWptNTVJc2F0NnA2bEtwZVFYMjc4
Vjg3cGJfajYKeiVuS0YtZGohdThqdG91P24hKXtOWX5RRDVHUEVsZyh9bEQqJmEkX0tfVEQoby1i
dGRIPXFgazFAQkE7PiVNRzZUCnpnfXR6NDUxQ0JuP015M28qYyZzYEc3fmN3MDd1JCs0bkFfJDtu
JDlJLUo1Q0kxaGxNZ1M9WHxyPD8pdUtFZXJOTwp6eVo1bmxZa0VnfG16PH5jX1ZrQUlMK1FyIXQj
NXR5WDN3MERZfX04TWJAR3M0bWdqTkQoY3xSZiNkYiNGI04lR1oKelFSM2hNTSowcyNMbkNvOG0r
YHpDbn45MDFoPn1AJjBiN1pUSW1GMiMmaUB1LXBiNld0NEtFU31fYzMtNEdVXmhLCnp3LWI+fGlP
SSFgPTVqbGw4O0g7cVJ6Jjkkc21+S3hQZ3JyUyFiV1QmP3k4QzFEYTdxSE1EOUZkeDBkTFkqaTh8
PQp6NjEjc1NkWiFZPCpBdSVwNUpgNzMoJGcmakthMXl4cyNVfjc3OCZiXmxDPjd6VU1GNVIpN1NT
TGx3PD8kcHlXVEkKekw/KXVsQmVpUVohOE9iY29TUiNpZHEhYnk7ZEolR0JYZzdrTSsySFQrJWxh
ajRreXlpbCh8US1RSzhtJHhFbXtGCnpDaHBZOVVsN2lgSUdBdnIyV0tzQykmZ2dMYVE0UDtJNEB3
PCFUcStSQE1MU3grM01zVio/JSRyWExBc1NgXjBzJQp6I21QT0xvWlFLfm8hP140P0A7R0FffUE8
WS0qNjcle057SzUyWGcpY2I4O3t6MlhrXlRDa0p6S0ZlZUI1SCNyIXsKekMmKyQrV0MjckEreHsj
MD8oO2duYkRoV2NtQER7KFlDR1NVemwjSGtzXmxtPWwtfGxmV3UhN2UyYGRSQHJaUVdaCnp1UGpz
NkN8aV9mckImSWQ5OTA4cWYhYSYkdWE+SWcpWDhkMG91KVJiUDNqVkx3WW97JnNpeEktXl5vUyNe
MGw1Pwp6S1cmSU1Nd19IZihIZ1d7XyNTKGF3bz09bT9hKzQ5KEAlNj0mKG5vb3RQaiNoPUBhI15w
M3JDTnYtU0Q8R0pURHsKek1RXyR5Xj9td0xTSE0tXj5nRFMxRHNfIT5PP0pneChfRD9OQ2Y1P3pZ
UyQqJFBGTEYxP21BPzZqQ2BZfihhI3VTCnpqND50fFE7WWBWN1VNMnNrK0lVKVZDKm48OCpSb1ha
cno+ZDdWY3ZBQW9uUXVNMGNlLTwtVzsxKlMpfn5zQyV0QAp6dDl6SUc5cnUwQEplQHQ9SiFnM2FA
SDRfUS1jIzxXXn5+X3g7a25RQXU7KiNkWDN3amg3U0QmQyEoTn1hbzQzZSYKem9fQ21jdG9KSCFq
clYlKlpRaUBSaUBpXkpIK288OD8oeDN3e25UZ3B5ODQyP3pQYGJ9KFlgQnY1I00jYm58PD9xCnoz
dzxrbT53VmpPWn17SHo5cV9DRTlEZmdnWn5zOTVOZEUrWCpxYHZ2XncwTHNfYj5DV0BvKGByYCY8
M3t7Nl88VQp6S3RaNWFwbnNxPUZmSzRUNURRRVRHek9YaU85SEN7bip1dW49fEZxblAkeTVQezd5
WVBePHlAMG5zViROe1F7UD0KemhYUmslUUJ1KWFTel94bzJ4WVlgPnVsMyglUCE8QWR1LVhEZSFx
T1d0bTc1c2tTIX5HJWV+RShSaytvY1kqfEImCnorSEFgQCtxYDRURjhJfEJFfXVkRCRGQEYpXjFw
MDNtdiVuMDx2aSRgJURxaklUcz51aFg0bz52cUEjeyhqenhkZQp6bU5eIUV0dTFwYmBmZ2sxU29C
c349Mi1Na1o4LS1YbTs0YDcrUnNJMm0mY2Ejc0x2LU9DVHtVcTFpMXdmdko0VkQKekU2NUhvRXE7
cnpHJHNUITUkWGliRDhHfkI1WSpYcXkpQTc2ZHpvWXhxKnk4PD9gOX49YihTNHpCU3pNT0FnOEM2
CnpyKSp6T1l0X35yckw3MmtzSFprV1N6M3YpVW11SG1iRjNgTFpiLTE1eW5CWik8eUhAcT8xcE9n
RzA2PVFXYmBCewp6UnIyMDdFTEV+YyFzPW1DcFIoRmp2MFB6VWwzYSkrYnk2UnYxP2tJRnREUEtX
KHl9KyF4QCh5QnEtU3l6PCFtRiEKejlnNEZnJU9tSlRnc3IzcEA/T1g4blZxcldXRXohR1UmZU0o
K0wxRntPOyVIcXhebH5VSj5fZylJcSUyKEVhb2dxCno4JlJeQU90TyZWbX1HPHxTZ29iIVMrN2d6
WCRoQCR3Qz1jbWVMSzdNVik5cjtNSUA5NlJpdztCUWlLd3dOSlVJeAp6TW4mQDRJK2w3MXYhVE1R
T15Lb2xoZ1FfM09jOUVPTVgpeTVUaHZGWUQ8VUVwaVB3dXp2Y2ltfGBoLXBFRGs+QjQKenNBWikq
bHIoRnFWYGowcUVOTkVPKXJpVj9MWnItT3N5YkZCRCZrU0hYc2M3ekB0ODxYT3tVQ2Z2Ukk1dyNL
VXpKCnpXPn1PQDczMVVLdW93fUZCd31WRittbnRCRkRueWVwPWV6cVJERVZybHFjZiNOIUhwbmkt
JChjPXMyXmd0fHBZMgp6en5NO0tDQi1FfHNeeGl7dTB2KEZtUE98Jl88d3kwekliTjd7RGdIcEwy
N24wJGxTb3A7c2hjWEgzejl3JCFfXkYKeit3dDRQYm9fNjVqeUdCeU42QiEhalUyV3thQDF5Iz1f
WXhNY2FyMEZrSHJeVE5jUCh6aS0jIXJobXc2THhyYlIrCnoqOz15VnAwZ05tK25BcmRoI2gjejt5
M09qXllKeHVBfD1vOWImS2hebzFEciRXSypXZVhfUEYtSHU1Rmt3PlhwXgp6a2FfbkpfVGl0e2tC
YGFuS1pzQVB4Smg+N0kmJFM2Q2E+KiZpfDRyNlZtZHhnTSYyZn1AME9FbXd9QXx9Xjw+UjgKemsh
ZzE/eHB3byZ1YmdBQ0ZQRDt3X2JPUiomeXE+NkQhTS1BdmVCY31rPmo8fTNyRXdzWDBoXmZwcGVn
fmVHVSFICkJjQGg4cwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9BaGVtLndv
ZmYgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvQWhlbS53b2ZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwYmM4MDkzNTI4ODVlNzcxYjllY2E2YTM4M2EyYWRiODU0OGRhMjExLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDI5NzIKemNtWnV6Y3tKNFA4eXx6dylNVSVQNDNS
OHhXZ2o9bypoNGpvRj9MMntFZTImN09QVjJMJVQ3JXFqSj1YJldPUCNfCnpZbXV4S0EqN0BkZ1dP
MSYtP3d9M3BUR0I8Ji0xPnw9WHs+ZWQpey1OXlBWUkxXb3dKVjtaUHZaZmZDUkc1VWB7YQp6ZjUt
b350WlohK0tfR3EoMDFUaVhgMGwlQ1lITiEtNFY/Vnx6MShtNzNHTkVEdiRuQVhJQk90PjE1bzVx
MGBafW8KenZ+QHVzOXMtYyMwMShKbmhrTHxPLSo2QyFjTnlSfUtfS3UyUFhFdXFBYiglTGkpU0M4
MHJWaWw0UmdkdzVJX1EpCnozNlJTSUkzbHAwUGI0VGJrX19CSTBkbkE4LWhwYTU9dSlVSjhTdndB
MXZ0bioqZ31JeXpNPWpBKjkhT3BldGRgfgp6TFI0YVMqdV9aVDRLc2t8NUNCRFBCMW53PGhEaCl1
NUQwfU9RPzJ5Uyg8YmE4N1lKIWQ1LUNEa1dYP3E+RkxOY0gKell0ekxrb2BSNjB4b1YpMGVYeWUt
KDA/YGY/SiVBcktGNXohPn0/QDk0aTU7YyQpXm4xcUN1ZG9lPkc8bHBDRzh6CnpBfVRkbCRWcmx5
KlVKMSNmWE0pJT1QNjlncFJuS3VOYF5wYVRWVTlKSTFEWEpUNnh8JS0meXtSbihuczE9STc7UQp6
ZzFlI281TCppWWhfTEthVUpGfUx5JURVUHszWitBT3F4YypzI1IzYWo0RmpFRExHMVpTP054TTZD
emckZTl0NWwKeigrWEJ2dFViVipySHExZGdyail7aztQei1gWWV4Q0pET0tJdmNRK0BlODgrdlh4
VHJfSGxGc3xJYXEob1BzRkNhCnpWbUZxZTs0eVd3R3gyaDBaU3E+ZyR6U3UjZXl7ZmxvOC0ofTBf
Ry1mWWU8dXU/THJDaj4rcjN2KllHdnZKJkJPZwp6Ulh6UlB5NjF2MUw4QHd8ZjxaPilqfWEmMzU7
Kk9kQ0VEPD9RNDd4T1ZyYjloKnFQYz1QRCsxI3RMKTxxdmNrR2kKejxRYmFnJU57VyYyTjdyVCo9
P3wmTlIkWSpBPnp3amJvVGd8bWNic1dadUE1V1N+TClPdlIwb3VyPFN2KnJiZDtZCnpQYn1aam4k
LVFlKz5RK2pHOG9veXIyYSszSio1cm4rWmsyUER6clh0d0c0dloxNG16KHlsPWEte0FmWlpTcHpS
bQp6YT02WUthZyVxZFg5bWdgd01WJClpJEIpMTQjWlM9OXBWX1BxKF4lI2JkMSQpNHdvejA7NDRs
e3VST3JWU35+cmQKek0pQUZ9SDdYZytCZ05GTEdATUprZWJHOVM2ZnpWYzxCYWlpXmYkaEo8cU9Y
QkxMMkt+JEtnUlFQNStfUCtKZzRfCnpsdUQlcTN1Q0RaSHY9TEQzPU9wRzQ2aVpGJlJBOz1BMWdS
RXNNKnI7ZTgyU2l7aTBhcmB2Pip5NSp+clFOeUxLZAp6ZUYwR2NgYGVDcklGanJWRmdMMndSVGlj
KThjKmVPK3pSbjJ4R3hVcVRjPkpHdk5tY21UOWdOdzFGZCt0dkNmRCEKekUxJFAyWDtidXRyTyZs
cGBaODh4TkVoNmB0fXglN0ROVTNuUFdFcmVoSUZnVD1KYSpje0sodnlnV1pmbUlxVyUyCnptaiR6
VnRhbzRGfExzRXBBJUhAVmhTKH1UPiFrQygqR2J5Wnl2bD1vbGs/PHZae31FSlJiKCVpUn57eEZD
LU5eSQp6c2FaVXdkU2dgPTw/SD5kQlh4KDhMYGgwWkRvaVIjJTE8Z3pxOXpxM1dpcypeI2k5a0dI
JH5hYHglcXxwQ0haYW4KenNue2chP0o/RHRQNzNycnUwWmpmJmhqVHNwZGZHSSRxcGlObGNhYjxe
eyEldFZyNG5WYTlGaDAjNnJjc0p5eEJ0CnpEWWVKdGF5aV4mP2tATkh1aUBSYnR2U3ZibzkpUGJ5
bkJBIzwtPjNgSks7T21ZO3UkRUY8RC15JjN0bCR1JDl+Xgp6NmZpcCVlfGhJb3tQKm5IaGtQNDR4
b0BNdy1haCZ9VU1xJEBnQks8cmdiSzchcT59azBNKHRxNkZuP0dNKXB4S0QKeklUQ0pyRyhaQXg3
ITQ2VF45S3A7Wkk7TW1hb0FTYHFaMHdPUn1ZcVVHbWhvQVFTbGRkSGkkWlNTfVJvRSVrJmJqCnps
YGA+PWxpdE14aj5wYytkWXAoQ3V1fjBgYlROdCVMVFFJN18/VUFrbyNwZW5CVGJ5TnIqK0hwTmQj
QF9UM2FeTQp6RE52aXY0cXM9ZTRCfEM/OS1KSGNlRSpBSyRlWkBxRlZ7Kj5NMU9zSnRCaFY0JjVa
T1dfNUZKSD9QSjR1bk9GejsKejI2a2g5d0VINFRAN1ZBa3YpPFFwZXtGTV5kVCEzRmNWQk1TJFJX
c2tUfTV7IXdMfDBZdVpAX31QUSp3e2txVyZZCnpNP1krNFJAYH0xJVc4fXReUHtFZjFyQU1LZXZm
PEd5cj8+V0RsXiMrMC1OYHd7X3tUdGZSZWN7Vk07TElRJmZAUQp6JHBeVHZfYHE7K1hSKkIoVElw
MHxraX5JfjtYWjQxPkpjJUZ1IXY8SStLUjkwTDJUSU8jPUpyRmNNLTVmbTM9SkUKek4qaz43Mis5
YD5SeXZMM3ZxdGpTNVR2NHtxVWEqeVJ+SWltUyNNLS1TRlhHJFZLT2hTTzxqRGY4eE9VbHIxfHlC
Cnpic3NwWlNTNDBsandzNlRYbkJZNEs7UjJ8dHY4KVZtMmlldGBzXnhuQTUla1Q5ZUpPOzdyI1pH
eFoycTkwUD9QRAp6X2phWT5KQzZQPnRCVn5KIVIzcyVXTGBJXmJrQn5JWExRPD5ZZyY8T2l1YDFY
c2VWZSR4TXRiaGIkXiozQ3QxVigKentFP31uUT1HfVR1KlFXay1jPF9lNFFYflVHQjhsITZrQmgo
c2lGTSFvb056I2MlcWIpeCpEPERHSGI+dntyTEEzCnpaRShVZzR5aCRheXRAQjB5bG4yP1ErUmlh
MkhmK3JVWW9DMyFZNzZFK256TXtSaD5CaG4lYWpadkRBe24pTWxHTwp6X1FnQS1VKFBZIXZvTkRU
bmRwJmtRRCs9Y1hCPHtQdXxrSU9Ec1RRfUNFbHQodEZNMmVlKzFTVFEyKTdSNnNPbVIKenhKcWQt
YVFMI2s/K3ZZSHg1V0p5QD5oKkpEU0pBdigjPzMhXkU2QTJIY1ZSOCpKIXlHYHMwemZiNCVuUEkk
N0dACnp5fmZ7OXp8XzVNWlglPysjYVhocmQrcCUxUipWI1FYbit+Z2VPQEtfbDE4VWFpOTd6KnRH
VHR2YjYoJSUjc2xkPgp6Rn1MJGViIytAfHYkRmI4Rl5wPmU4KylGRStxRDUkYHAqOHBVKW03bmc+
JSE4TTtLXm1rd30oQ1U0fDZTM0hCTyEKemRjeU1WKiZwXjM3RzVVUlFhTFVxPUUtcCp4cylHZGlH
dzQ7Uy1Fd1E5MjEjSlhmWj1OendvSExxT3wlKzhePjE1CnpeUXs8fTs3ck1OKEtpKlEtdVNwIXt2
RVAtPjQ8ZGpHR2spPTtPeDNnb1Q5d3hzQUYpdyY8fT0hP3Vmei12T01vYAp6O3BEPXs1YUtAQ1N0
OzdNZWgxWCsoLTZOWlVmRHlQcS1RQmI/UkN3R0JGbW17MHhKKj5eJTA/KGJiNXZqSnlWQSkKekd9
dFYkKmQqYEtCKDhBdz1HZXptRD9SWSl2MDFnQSNEcHU0Q1I2PHBseHs+P1A2U19TNlErSSNrXlJt
fHR7WW5ZCnpJUiVrOTk0Xy1ROTh5TXZLa21HYSRUYHJTY0M3dE1XNE4/enhjS1hKZ0w/fiokQ3k5
Vkk8Km9+WipJZGA+dD9HMgp6dm4yeDBuSnpUeE1zXzs9aXUhPXdBeGAkakdndlh5SmZLfHA3RStr
PnA+QXteS2BpOUdANylWQDBZU31iO1VVSjkKemUoS1ZnTmlrey0lY0U3RSh6PyVrSjRpPlhxUHEz
IXdla0ojPT5vcHBIMGEmaHJ7QEBIIUlkWU10M1ljRm8kX31ICnprQGNzcVhfIzMmNXlMaVU7ZyM8
PiZ3b1dYJD5FNCkqa29eUDx4RyMpTyFwPFJpVn1uazJHKXl9USRaXmtSTn5HIwp6JUJ5OT9wP3pl
S1I/alIqOCYwYD5xdD9ZV0dGcz9eNFVETVBsO3w8PEtkdCtoXi1GNjlCVEdyNkxmYGJuRn4qQ1UK
ejhORSVlNjgpbUNPNlU4cVpYVTB3KXk7NnQoayZ3SSliUy1oV21pZzh6KXB6aCVAPDJlezJ8Z0ZM
JDg8KEEoR1NtCnpnM1FHZyp1JjB5T3xtUDd5THJGNTV7Y0R2Q1B7WGlHOTd9S1gtNHh8dT9PQjN2
bGhLI1FNYUI1dFNgKldFQU9iPwp6OHRtVkVtSDtVbWwtJjRgYUIhfVp3TFk2KlpyKzlCRm49bnMy
aVBCQ3dveU1fXzkpayhxSXJ5cklgeipQYWcyJX0KenJGPExOUVNWNjZTKH5zdGI7dHApX0E0JX5O
fmx4OVBCdGY+T0o/PnVHfitgPVB4UWJlJn5vQ25KO285Q29gO05qCnp5Jl9PRWt+UiNfMyhfaD96
cT9scHB0PX50ZzhHKCo2fiVFc3AoeileVCZyclV6cDh5ODl9dmN2R1grZTRzOzdwXwp6diMxTm5H
aXQwcyVVRVFoNT16M2soTXp8IXN3bnwkam9JMlRaMDs0dnNPM2Z8d3cheUpaJn4zU0Mmeld0SW51
QGIKeiM1a09uUX11JUBHT15MY2Q3ISR7K3k/S3JgIXMhZDZDYSR8ZkRXMDtNRiVJVURUI1U2JVJm
MyM2SSNWd1ViPXEhCnpNOVlRYEBAdlhaVkFBXzw0eEh5YjN4eDwxJkp5XiN3Mnt4ak9GQUhzVT59
YnZBT0hyPy09V1crSFNsfDloV1dWdApsLWFFREsqYU5rUlB0YiF1bGM+SThJcXh0Z2s7bklTMV85
Rz1STV88NXt7VXRuSV42Jk8KCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvQWhl
bV9DSksudHRmIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL0FoZW1fQ0pLLnR0ZgpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMzA2ZjA2NWVmNWJmMTEwMWVjNzBjY2E0OWNhMTg3NDI3ZDg5
OGNmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyMjU3Mgp6Y21lSFAzNEIhNSlq
I2pPKj1HVT81Q3wwVUI/MUNVR1RBMTh3aCohYXtWKmIlTFRoIUJPY3QyVGpHMlRXM1BtYXwKenMx
Kz09P3JwNldhbDt+NTdxb1JqZngwMFRrUj9RPWlXVnMlU1FvPGt7XnU+M215bDM/c0s0KjR6Yz0l
bis7Z3xICnotRTszZkA0VEIhMHVneT5BeFkjdmVAYSRQeXl9YWVxaHVYXm1zWnBUVjxwOUYhYkMh
VUJLeUdWVV8zXkIkVzchSgp6Z1prdl5AYTB0YHJ9YWFBNT5kYTtZZUs9d29zKFckT08hcXleP0Ax
YEk2YnllJFMqe0dVYDxgYSs9MChZY08hb3YKemsqeld1dHE4dDRjMXVzOSE3ZF4odVAhKEAyMT52
YDxYcDZ1QmYrfVI9RXN0SEJtWXlQdm9tQVNjKkI/QCVSVktWCnpkTHQzPU5ZWWtlRGNSOT9vd3gp
JlpxYHleSj4+YHpPMzgqb3t3eVJ+bH1ze29yRzc1VkVzfCpyJDtUOClSej83cQp6T2RGS3NxZlIw
UENDR3VnK0VCel9WNGAwNSViTXklSGhWSmtGJE5oWUZidCp6XmdIQEp7ZWtZSWB7fEZnZip6b2kK
el5kTFAlNTdRJmBENk9LJD11aC1HdClhRV8xcFMkd3FeSWE8ZEl0Sl5tWSQ9KCZ8bTMhZFZ5WX5f
NEcybUxLfG8hCnpaS0EpP3RNbXJGTnRAe3tgYThXJVRXSzNAcip+KjQ/VntiKE9uYXo+LWxnfkdl
Y0RVXnBiekxuK0Q5TUpLV1JVRwp6TGpSKEpeZUcqcCYqKDU2cTBpfnheYVh1TVUociEmckRMUUIq
fUBjSXU1Z1JedmlPUilRUVJUITZuQlpjclJDRTcKeihoNnkldmArZX4/MnheM2xBSjh9bEthYTI8
TjxQcUpYclMycXZZY0JqUCRgN1Z1bUI1ZHF6cXxrQnEoPHtXMW4qCnpvUnUqPzxJOz4hIy1UeCp7
TiM2KlFKR1pjRjF4dHcjPEp4WCUpWCMqTzV5WnYofDJCWWRpOVc1ISlERDY9ZiEzKAp6N2B6flIh
UDtlOzR+b1lXTVMoX1Q4bHIwTy1WPHRZXj8lZ2hPQzI9JG55JGV1Q0pwWDVwJDAhekhGJSY0NFN3
Q0cKeiFPMTJLWnRwfmNxVUBHXiZ8cHRGNEkxbiglYz0lUG89fTY4cj1VUyU0SnoqfD88cnBAaG17
dGtSciFlZUQ3JXMwCnpxa04kM1MzWEFXOWRhbX1tMGdzb3lzaGp8LWNiR3REXjYwakRaOGx+YDJj
YjBVZ2NlN3lLPVgoVWJ6Y0I/P2xOPwp6cSZ0LVolNXI2d0B7YU9+dkp+KGR3MFQ+KDByZDdORTBw
ViVZbkFLdHpZbllNSEVuPDJQIzlqVXw5dD0kN2MwTHwKenUyeDxHaDJKWXpET1Z+TkRXaDlJWCs2
QHF6cVByd3JGRERqPyQjZiojIygyJDRtLU1+d083bUdtUDBMez9OTTRACnpYaiRDeVl8RlpxWElo
P1lTPUYrbDwoQHN5P3xHIzh6MjtZJnc+SDFzeXQ/YE49R1U0eEg5eXlVZkFmOyZZaj1PVwp6Yktz
bERIcnBOLTk9RU9qWVcyZ2I9ZDhZTCkhbk9aZWBNbz5gNDB8VmRGYntKWn5mQGptQ0pXNXk/ND40
aSN9V3cKempFK3dKbSsta2RyKHVORj1ObzgxQXtVbjBXRCtvK0J8ITdCV1h7R0tEcSk0Qis/NGNg
TEZwOyFeVGgrTEh3JVo0CnpgNlQmaCVZMVAjWWhEPjQ/TmkkazhsX0E3ajs1aDkmOG8zPFZBKzgr
N3AoUWJTYCkyKGZ4YnQzQllYQHpPSiUzMAp6cyhid2dKVnNlUXo8O2p9RnFwQENaIVExNUA+dCVl
SDUpREt3VnBrIVhBa1N5IStRM3hvO3xFKmtNR203aFpTZSsKeiM5T3l3dHlhOSppbiZ8dzlzWnhh
ZGw4bU9gXjFZbFIrT1UwaW99YndYd2ZPdVkqMHBeN3IlfDdwMUNQIVl9bHx0CnpiQDFffF9pZmd3
dWBDaTYoeV9jSG49YXtvP2gkZkpgfW0jTzxJemlJYVFmMmpoWCVHaVUjb0YyRjJ4NWlGI1FhSQp6
KzgoYDdWKlV0eVFIRlBGOUI7OUhtSlRjJV8mKFNHJnU4SlZIa1FKOSRiNXowM2pEQ3BRNit4KHUk
OyF7SkNKejsKemFKS3pHcjxlWHNyJVhEQiM/diRecnpsLVgqVkM7eS19RCR4RU4jTGBxYGYjX2JX
SEZIWH5Hfk9NO0krazZsTXJqCnpMUj9yViskN3V+dFBzYCsma0xeJEpCNUExNW02TW9pfllyK1Zu
OGVzQ3k1dH12JjFJeFlIXnUoa05BLUlxX3wjdQp6T1dZJnc3ciZHb1FjcyteOFpNMkojenxBOXBj
SWo9a2drKHtFIWBgdiFrTUl2KHBLcXg+N2RrVl5Wb1haJmFuQXkKektlWVlXY0E+NChjQTBIfj9G
UVJ6dyk8X1haR1ctN1lKMTFfZiRjTHAqXn0pMz59VDVaPzFsQytgJW1tT19EMV82CnpgXzE7ZD4/
YGUwKms4MjJZMlIpQyojMiphJjVgMDU7NWZATSFjcFJ3PzZ8fWNjM2tlYiNfPW8xPztNWGZvXzQo
QQp6X2BCbT4je3RMSlBNMCYpbmM+V0dwNmlfOG9iSWV9Iys+dD1PUHMlUC1pUG0+b1g8SmA9R15a
NWh4M3FBYXJzPCoKelU0dmJAdH0oOWpUcip3T3RfSWd0dTN4KERiVW9sJj53M1pVaEhJRFdCaUg5
eyQoYCZ6JXt8T3I7NFhHdztRcEM9Cnp3dEtGN3ZIS1NIWmB9e09wS2B6Sy1ye2E/Zjh6ZWk8TWow
TXE8Yjx3PVhsMEByZ19SZVFPfWowPnBpITZ7QHs3Ywp6XlE+bytYUGFsUT1UcHh5dWgqT0E5cHVn
TmpgbUxVJmhTPXc8S0JoZG80ans7UzlzVFdwWkM3Ki1SYSV1Sj5uQzYKei1GXkxpTHd4flhRSjNG
SXpLZWFjZGAtVHFlYW4zSl8jV34tPjA5cjYlZVRrMy19aHliQmRLU1NvSFJVWFJNTlBsCnpzWSRg
NE5ZV0wmUXdlPzUoO3NaNjlyaThOYXQ4YGVzM30oO0ckNkVld2RGK1dDVlpqU05SJU51Ymw2NU5h
ZmxBdgp6RE5YZTJ1bWsxZWI9Wl5nc0VDdD8+Yz5rMWRtaHVfWlp4QDlNakpuMF5sSCN5Zm8hUV45
VHYlJThxO0JrUWN8MEEKeipvSFJPPjlDIUFzVzxBZDFMZTJydSFrdTFFKjx0I2syYmcpNE5aTWlG
SGM3TVo5MUYrVDAzPlAyZz1gckh6TD9ACnomUVVtK2BoZ0JaQ3c7YytGbSUkVlMlO3lNS0twZVRJ
IVd1TSFfWX11WnlrbkMobFRgekkhTyFZRm15Nj51TVJeZQp6ISgyTD9Pcy0pd2J2VDgoNEorNS05
dz84fFJIfnM2JHlCSk9iJTNnezRuKEt7UCZzUENZT2IyJSRUdEF5emdtd04KekhLSWtCWU4tT0ht
OGgkdUFhVzZgQ15BaHpEJF57cXNZaDhIXzF2eGplO0s9bXRwQEZ4NCk+SyY4ZFk9a3BqclhBCno4
WVEoZlB2eCNfU342TlRwPUFoazteM143ViEjIUo2YjdlcDYrO3pqIWhxcypjM1hgbVlnbT1CM0gx
QHNsJkpgcQp6TE1tc3FHKUxgUTFibFYpOGwyQldYKzNoeElyQUR1PnczS2h3fit6SUBNWWFGI1pm
NCFmb3UmWjglMF84YSp1TTwKeldUSk9fWUFrdHpSd2k9dztFSD4me3pBYWNeMkFaWG5xZS02THc/
cGZeT3tCMyEwQVdZc0ozQj10NUYrUEhPa3g/Cno8MitmZFg7ZTk+cnxIUEN7PFA3TlJWP3x5bGR1
YjtVc28tU2BWLWpgXlR7TDZkQCMzY1RRUWBTQ0BaSlNAcG1kcAp6RCVFQGArU1koNFpEZClhNXct
azB3QTAzc01+V0AmSmstc19jKGJtPFk4JVo/Ki1GRX0mdnc4WFZAcW9TIyMlTWMKeihzdHhUTXIk
NG8hJlo1V217dE08an5Ie1EmNDVQbSNNbEBVJVRiUnNnd2N+eCU0T05tQWItc2s3WDxiPnN4JjtC
CnpNI35YeD9GPjFNUztvNEc+bSR6K1hxYT1fK0gzOFlZZlhiWjJXTyp8WDNHV15qakszYTJEQE5l
V3kmRkZFZU9tRgp6a2Ridzd0fkU8cHQ9N2pOR3QwIVExSXgqP0xET2prWUJjKzJUJCZ2amU2bUg9
S3twek9Bb3tWRkYmQWtRZGEqXjwKenM1cDZVaEVARWB1X2p8entPfUI2dDtDU0JvU09id1prfV9S
SDY+T200T2JROVcod2A0V0c7QzhtPFElOShXPkpwCno4OUZvYyR5KF5SWnR4MWdTfnE2PUcmK2xU
b1FBYDxWa25eNmZkLUd6TzlORWVSJDJnaShiXlZKTm4yQFE4LV5rcAp6KE48YzdkOTFaOUhEU282
VDtPMTlWPUNFezUyeykjaEkzNmQxdHdoQ0chcEhNVU9BWG0wbGdRKTE/XzRebnNVWCEKelZhUWZZ
I2NlZ1l6P1d5cjZAcz5iSnJ7ZkBGbWYofEZfKkBJVVpRMFlCc1glYk4wIWNAJEdIUnp0djEwOCpB
e2xACnpUaHkqXkxjaVNDSlc4QjFZbEhMVmtASkkjX0kkQ3QzQkZoK0d1TF9UX3t7RXJvJTNldzhh
SWpsb2JPbmx1byZodgp6OCgpSnU9Z2hvd0tFV0kzJSlEe2x0T3YkNioySEBiSThSc3sqOU97MiZp
T25PP1NOXlZ4cGlxZlVoKi12M0ZAcHYKenpzVkJ2ej1eUl52aDhhNWd2RHo0Z3NwSHMtKCspfkE3
UWN7JllQXztBRj44YShyTmpHJkdQS1hMbU5aJGBEazVpCno7IW4jYnczQ216WX0zcE9BZklFPlJz
ZyYoTWd2fn5xJStlV2lRZEh+ZFpudUwjIyo3fWFAeUBSb3YoVzRSbiVDYwp6SSRIX2pTZy0xXkdI
SSk7d20welpzUUVAbCYjcVREX0Z5dmYtdz1JMF5WM2sodm5jfl4tdjhLXzxDVX09WWMyMG8KelU5
RzApc0NaJjNKYEVSWk41ZUkjNEdacm55eCpgNyFqUl9zRnk3PHd4OEVaKnsyTlg5aShtXlUhciM3
c1hCNW1GCnpGbipSZjBeMldGX2ZxcVk4JkBAPD9kX1UkeW4+JilyVkwrYHl9VmxOZHp5fmZTM1go
I3JJLXU2T0xXZUk7Y3NZcQp6SHYxK2xYOT1rQXAyPyRZbVdrSVRVS3ZrfWxnQlUmSkt6eUs5eTl3
JVUxODRjMGB1YD5lPn49P3V0TjU1TEtxKi0KekQ7b35ATUFZKVNwbDBaWGIqKmBVPzM+Zz5tZCsk
OSNoQ0VaJmRFfkVLU2A+RiYhK2lTb2wlfHd1SThSSi1NfnJHCnpXIzRWQ1pmfjd5bloyKkIkSXpI
XzlvTDdCVDRtM0BzIUtaS1ZMUG56dUlVdD5xJiUhWV83Kmo3dWNKTDBeR3gjegp6amR8OVVlVUFN
UEc8a2tASGN9SComeX1CVCo7ezB2VDY9bXZve3FMZGVqNilDZHg/eWRWLWA1JUB6YjdLNV5LNjIK
ekpKKlM0Ynl1PT11RURQOTZyVW9VYW5LI2w/JUJ8QWd7bnBOO2QhTnpAIzgodG0/PWY3ZSkpZTYq
ezlIYVBmYSNuCnpCUSkhK2ZnYnBvYTJgXiY0aDtgSyo+RVlaQTNUb1F2KiF0U3Z7fVBVSjVCKDtQ
N1okRzlrdG1Wc0loblBUflJ4RQp6alpjSGRjLV8jVk1yTz8kdDZmNiM5MDkwQG9fUGtHdmVwLUBI
Uip3JG81c1F+PzVLeHRnQSk5bzElb0AjVmh7TWMKenFMdGwmN0MrZzIrcTV6PDMoUWZlQ2lvYWxA
SCgzP1MxT1FkdjhWUUoqakpqUHc9cjV8VmE9Rj1aeCteWlo1REJTCnppc0x1RD97ZSs9Rz5LKilD
UmokfSRUUEpqQnAyMyU+ZzF8dXEoTHFaZ2A8KGB4WkR0eDgmREJ6RUR6VUskZCVFJAp6VX5NRSpv
KUQyfEhQK1kwRHtDdG5ZTkhWfXN8aHhzUipwbSk8b1p4V3ZecjhkdVJ8fDYrN3Q9WiQ3XmIxYTxx
eigKeiN6UyZkWjgjSl5UY3VESDRUcXltd1VLSk1zNkdeSXNHU3AlaT11VVBqQ15MT0p9T3MrRCNG
MmZSNzR8a0ZjdTVmCnpoVEB+LW51ZG5oc0kwN1R1c29od3A/OW0kZFN5b0l0RnlwIUM9dzZGdipy
UUNAVE1USldAVHNrdmxgPUI7WlN1agp6VG9KN2R2Q05aMClzNFZEOXNEdT0/OTY8PnN0Y3wmN2pq
O3crMEBqTypfMnpzV2J+NUMmPldQZ2JjPzE7JHpuQ2UKenZ4NFo2UmRvS084NTdGSmN9JTFqWT5R
WUtROTNQLSF8TlM7eUlMZlVwOTxMSFBRKkBsP2R2LTckfXlxfFNRKUotCnp1TkNEcittalhMP2Ri
VSMoTkhWT1llampqRDZiWGV3VzdTKjh3eEZ8WWVqaHpaeHBSNHVOSUB9RUMkOz9OXjM9Vgp6K2Vj
KXJENmJYZUhBbkdgJFYzXlEkanh0T2o5OFd0KTMmMCNUfVBJVWgrMD1Wakh0UmpKfm5QZWQ5X214
e0VvPHEKekBfdig7dks4ZjNfanhQSWB3aW1jfDNeXz95IzNKUHptcE1QdFg5dW9AaV95ZGxyUVg1
S2d0ejJpUWRVYT0hK0F4CnpCNXdBU2FJdlNJOUpwVzNoMSl7Q2UzSyNXR3doQiM9dSlUJF4rZk1m
PlchTzkpMkpgP3FhUlJ6SSprVTw+RGN3cwp6NWtvKE4yR1N0aCs8N002MHU3fk1jbkA/by1qcnF7
RCRTPmFhQDEyQWU3YntBTTIqQ0doSThtI2BYVCpATSQ7SloKeiVGbjlCPmloRj9JM3F1U2VvWCZF
NkxJM09PcFJ6P0skOCptb3tHMGkpOUZJRzJvZGc/XmJgNmlUfShmdE9YeU5XCnp6ez9Sd1hUUC15
OHNJbGh2KyZqYGpGPnBAOTVJfjY8NVAkWSg5SW1nK34/dkgtYU5WalhZbDlhcDMkRzw4cT0lagp6
N2ohaShyZmNYcm9YY05BSF8lUD1PSWt8SD12TyRVe35ObFM/JEt9NDxRcXgoQ1F7PWJRdGtIOXIq
VnFeI2RiSDEKenpEQlI+d35jT1RjaVpUVzQpPX1uOWl0IVh3flFYPmMrYVJ7NllUMHVyX2JPSClD
Y0lkYlNKSUd0KjAta3d8MV9sCnpNWSFZaVRISn5IdlU9eX5JPVljPXFkVnchKz9hWGAtOTxPa2F7
NHY/X3UobnJjWiZOXjFxWD9PUSphNHghR3IlWgp6QENpdm1IPSg8YkVUamxNZ3F9aCNBeXchdF51
aGxoXmNESUVLTT92MHJ3SWR1KCo7PmI3Y3p1MWdue19LZ3UlakAKeiFWcURvRmliZWhSeUorb0w+
RiRWam4oQWo8PzRWeCZqOWtwQGwmUFpsOE1nN05OczZKWChee1VldChYaD1JVXZsCnpwNjJVbUt1
PF5OWGAhQnU8dXVwdF9xJjV0d1k3b2xLcEBZX1BfOTNsWXd9OWBla35uUXF+fSEoYEdJMSFYSXt4
agp6bH5SNm9wamZZMElZM15vJnNXUnliTXNWdXBqNSFeJnxnZ3B7OTN5fVFMYyg3UD4/ZiU+cWxs
NnRMXmcodlEtS0YKaXhySilgS3cqeGBkN3gxMWhqTFpJZnw5WCVueGpmdVA/RFJDYFNgeiZCY04+
bgoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9TcGFjZU9ubHkub3RmIGIvTGF5
b3V0VGVzdHMvcmVzb3VyY2VzL1NwYWNlT25seS5vdGYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDViMTM0M2M5YzFjMzRjNmI5N2ZjMDZjZDg2YmFkNTY3YThmZDNjYTMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMTc0MAp6Y21kczJQaVJ5fTgyYDxDWmBVTm9CJk1kZF89
S1RhaH0zTX1DUEIqTEt9PmR3TVUjTmhYZk9KNy1+SXZqNTFSPjUKem4/aipiKUwya1lVYzQ1KGx0
T2I2VDx+QkUjZmFeKEp0PHhrdDB4Tl44fWpfaythVkBJSmJDSW9YMT9GfCYyUFQ+Cnp6THtAISQw
akRtKDJqM21XOFpLbEJYNXNlS0xEYHswR15IPEtKVyNsME9FP1dDNmsjcmxzIUgmTmAwMlBKOWZC
Iwp6OzdFQWxaJkV6IUMmelE/PzRKdT98SEFwfSlPVmpRYEJpTVBlKj5KSTxtQGo1ZXM9TjIkS1A7
bmZxaFNiMjdBYHQKeiE4d1FlJk8lOUAtUzd0eTsmKFo7bD5EPCpTbVQ3RVJ+eVRJRGZzemJUUHlW
fGZPV042bk5zMlI3LVlOISZQeUdzCno/d3otODk1flVyX2dgJFpwVXtIKWBGez9zbUt3OVF6LWpg
JCMrS3BkX15RZExSZU1fOSRZZE92QDdQYm9PVD8mTAp6dlRqcXErPzMpV2w3ak9WOyo4STxIRDJg
VDswYDJZYkZYekEmUDRsbTtIT0F4IVUhJUlFWU9PXzI2R2VxWFJ3Vj0KeiNpK3AhVEV6dX1XOVNt
fDJGR2R0aSNJR0I5aDwofUNLbCslMUF7R0EhRT1MY2U5MnN6OTAlUCg4NjFOWSo5P3grCnp7d3Mh
MkxqV0kmVzB2dXMhYTB0fFBeN0psXkMpMU5gZWRaI2lEbyNYWHFDdklMV1lXRDRTQkFZNyhmQ1pX
aUpfdQp6VWxsM3peVUUyb21ROEt+UT93QE5Bc314VEZrQjBLNj1kYjliTWpjeEZQfD89JVNwZVNt
b3I2R2tlTnpaV2glOU4KekFPe2tqPkA2ciZQNClOWlh3N01CVmsoeT8yWn47Zkw/UClBJnFONiZY
KTNGdEl1bTNHNEBJXmpRen1zanZjK2wyCnpjamJ7e0Y2JilOVytqb3Q1YyppVmVhemFVI3d1UExX
PWdKWEVtSlolKUhtMlM7M1l8MD97UmdJTTtUO3xyJkVtMQp6T3d6YVp1RnE5fTU7eip2cml6dWFe
dEAha15FX0pLP1UyPT8+IXNPVVEmRD8kNzB+OXcoTE9ta2t1SmxLOHByVUYKelZNNF4kS1BQaDVI
MHxudC10LUJ3aDJRYk0tKk8tVjRvXl5zd3Z8ZjxwUDt+SmpaUVNTaUgyKTZ3JWQpNW9YaFFFCnpq
eEZabSQ0KGRNYSZkRkJpeHdBO3g/JEBEWF5kaj5lWX1SMUt2c1pgVSUoUkxsZmspcUJWOEJ1YHI+
QHV1N0NKeQp6WXZibmYpXzhxc3JsKmwhb0xAP0I9bTskcEUtbV4hO2opNld3QXxEMllJZSg5JnM9
KyhjSmUwdz07RDlCU21Fb14Kbnp0Y35SZUQ9JiNrSTA9YT5IblRDPkwyTHg9UE83S3JLQ3dQcF9m
N2JZVX08USZMMH4yCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL1dlYklETFBh
cnNlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9XZWJJRExQYXJzZXIuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNTA0ZmM2ZTFmZGVmZDE5Y2M3ZjcxODIyZTNkYmZkNGJl
NWU2NzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvcmVzb3VyY2VzL1dlYklETFBhcnNlci5qcworKysgL2Rldi9udWxsCkBAIC0xLDEw
MTIgKzAsMCBAQAotCi0KLShmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHRva2VuaXNlID0gZnVuY3Rp
b24gKHN0cikgewotICAgICAgICB2YXIgdG9rZW5zID0gW10KLSAgICAgICAgLCAgIHJlID0gewot
ICAgICAgICAgICAgICAgICJmbG9hdCI6ICAgICAgICAvXi0/KChbMC05XStcLlswLTldKnxbMC05
XSpcLlswLTldKykoW0VlXVstK10/WzAtOV0rKT98WzAtOV0rW0VlXVstK10/WzAtOV0rKS8KLSAg
ICAgICAgICAgICwgICAiaW50ZWdlciI6ICAgICAgL14tPygwKFtYeF1bMC05QS1GYS1mXSt8WzAt
N10qKXxbMS05XVswLTldKikvCi0gICAgICAgICAgICAsICAgImlkZW50aWZpZXIiOiAgIC9eW0Et
Wl9hLXpdWzAtOUEtWl9hLXpdKi8KLSAgICAgICAgICAgICwgICAic3RyaW5nIjogICAgICAgL14i
W14iXSoiLwotICAgICAgICAgICAgLCAgICJ3aGl0ZXNwYWNlIjogICAvXig/OltcdFxuXHIgXSt8
W1x0XG5cciBdKigoXC9cLy4qfFwvXCooLnxcbnxccikqP1wqXC8pW1x0XG5cciBdKikpKy8KLSAg
ICAgICAgICAgICwgICAib3RoZXIiOiAgICAgICAgL15bXlx0XG5cciAwLTlBLVpfYS16XS8KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgLCAgIHR5cGVzID0gW10KLSAgICAgICAgOwotICAgICAgICBm
b3IgKHZhciBrIGluIHJlKSB0eXBlcy5wdXNoKGspOwotICAgICAgICB3aGlsZSAoc3RyLmxlbmd0
aCA+IDApIHsKLSAgICAgICAgICAgIHZhciBtYXRjaGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBm
b3IgKHZhciBpID0gMCwgbiA9IHR5cGVzLmxlbmd0aDsgaSA8IG47IGkrKykgewotICAgICAgICAg
ICAgICAgIHZhciB0eXBlID0gdHlwZXNbaV07Ci0gICAgICAgICAgICAgICAgc3RyID0gc3RyLnJl
cGxhY2UocmVbdHlwZV0sIGZ1bmN0aW9uICh0b2spIHsKLSAgICAgICAgICAgICAgICAgICAgdG9r
ZW5zLnB1c2goeyB0eXBlOiB0eXBlLCB2YWx1ZTogdG9rIH0pOwotICAgICAgICAgICAgICAgICAg
ICBtYXRjaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiOwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkKSBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtYXRjaGVkKSBjb250aW51ZTsKLSAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiVG9rZW4gc3RyZWFtIG5vdCBwcm9ncmVzc2luZyIpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0b2tlbnM7Ci0gICAgfTsKLSAgICAKLSAgICB2YXIgcGFyc2Ug
PSBmdW5jdGlvbiAodG9rZW5zLCBvcHQpIHsKLSAgICAgICAgdmFyIGxpbmUgPSAxOwotICAgICAg
ICB0b2tlbnMgPSB0b2tlbnMuc2xpY2UoKTsKLSAgICAgICAgCi0gICAgICAgIHZhciBGTE9BVCA9
ICJmbG9hdCIKLSAgICAgICAgLCAgIElOVCA9ICJpbnRlZ2VyIgotICAgICAgICAsICAgSUQgPSAi
aWRlbnRpZmllciIKLSAgICAgICAgLCAgIFNUUiA9ICJzdHJpbmciCi0gICAgICAgICwgICBPVEhF
UiA9ICJvdGhlciIKLSAgICAgICAgOwotICAgICAgICAKLSAgICAgICAgdmFyIFdlYklETFBhcnNl
RXJyb3IgPSBmdW5jdGlvbiAoc3RyLCBsaW5lLCBpbnB1dCwgdG9rZW5zKSB7Ci0gICAgICAgICAg
ICB0aGlzLm1lc3NhZ2UgPSBzdHI7Ci0gICAgICAgICAgICB0aGlzLmxpbmUgPSBsaW5lOwotICAg
ICAgICAgICAgdGhpcy5pbnB1dCA9IGlucHV0OwotICAgICAgICAgICAgdGhpcy50b2tlbnMgPSB0
b2tlbnM7Ci0gICAgICAgIH07Ci0gICAgICAgIFdlYklETFBhcnNlRXJyb3IucHJvdG90eXBlLnRv
U3RyaW5nID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZSAr
ICIsIGxpbmUgIiArIHRoaXMubGluZSArICIgKHRva2VuczogJyIgKyB0aGlzLmlucHV0ICsgIicp
XG4iICsKLSAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnRva2VucywgbnVs
bCwgNCk7Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgZXJyb3IgPSBmdW5jdGlv
biAoc3RyKSB7Ci0gICAgICAgICAgICB2YXIgdG9rID0gIiIsIG51bVRva2VucyA9IDAsIG1heFRv
a2VucyA9IDU7Ci0gICAgICAgICAgICB3aGlsZSAobnVtVG9rZW5zIDwgbWF4VG9rZW5zICYmIHRv
a2Vucy5sZW5ndGggPiBudW1Ub2tlbnMpIHsKLSAgICAgICAgICAgICAgICB0b2sgKz0gdG9rZW5z
W251bVRva2Vuc10udmFsdWU7Ci0gICAgICAgICAgICAgICAgbnVtVG9rZW5zKys7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0aHJvdyBuZXcgV2ViSURMUGFyc2VFcnJvcihzdHIsIGxpbmUs
IHRvaywgdG9rZW5zLnNsaWNlKDAsIDUpKTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAg
IHZhciBsYXN0X3Rva2VuID0gbnVsbDsKLSAgICAgICAgCi0gICAgICAgIHZhciBjb25zdW1lID0g
ZnVuY3Rpb24gKHR5cGUsIHZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAoIXRva2Vucy5sZW5ndGgg
fHwgdG9rZW5zWzBdLnR5cGUgIT09IHR5cGUpIHJldHVybjsKLSAgICAgICAgICAgIGlmICh0eXBl
b2YgdmFsdWUgPT09ICJ1bmRlZmluZWQiIHx8IHRva2Vuc1swXS52YWx1ZSA9PT0gdmFsdWUpIHsK
LSAgICAgICAgICAgICAgICAgbGFzdF90b2tlbiA9IHRva2Vucy5zaGlmdCgpOwotICAgICAgICAg
ICAgICAgICBpZiAodHlwZSA9PT0gSUQpIGxhc3RfdG9rZW4udmFsdWUgPSBsYXN0X3Rva2VuLnZh
bHVlLnJlcGxhY2UoL15fLywgIiIpOwotICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdF90b2tl
bjsKLSAgICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgd3Mg
PSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBpZiAoIXRva2Vucy5sZW5ndGgpIHJldHVybjsK
LSAgICAgICAgICAgIGlmICh0b2tlbnNbMF0udHlwZSA9PT0gIndoaXRlc3BhY2UiKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIHQgPSB0b2tlbnMuc2hpZnQoKTsKLSAgICAgICAgICAgICAgICB0LnZh
bHVlLnJlcGxhY2UoL1xuL2csIGZ1bmN0aW9uIChtKSB7IGxpbmUrKzsgcmV0dXJuIG07IH0pOwot
ICAgICAgICAgICAgICAgIHJldHVybiB0OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAg
ICAgICAKLSAgICAgICAgdmFyIGFsbF93cyA9IGZ1bmN0aW9uIChzdG9yZSwgcGVhKSB7IC8vIHBl
YSA9PSBwb3N0IGV4dGVuZGVkIGF0dHJpYnV0ZSwgdHBlYSA9IHNhbWUgZm9yIHR5cGVzCi0gICAg
ICAgICAgICB2YXIgdCA9IHsgdHlwZTogIndoaXRlc3BhY2UiLCB2YWx1ZTogIiIgfTsKLSAgICAg
ICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHcgPSB3cygpOwotICAg
ICAgICAgICAgICAgIGlmICghdykgYnJlYWs7Ci0gICAgICAgICAgICAgICAgdC52YWx1ZSArPSB3
LnZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHQudmFsdWUubGVuZ3RoID4g
MCkgewotICAgICAgICAgICAgICAgIGlmIChzdG9yZSkgewotICAgICAgICAgICAgICAgICAgICB2
YXIgdyA9IHQudmFsdWUKLSAgICAgICAgICAgICAgICAgICAgLCAgIHJlID0gewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ3cyI6ICAgICAgICAgICAgICAgICAgIC9eKFtcdFxuXHIgXSsp
LwotICAgICAgICAgICAgICAgICAgICAgICAgLCAgICJsaW5lLWNvbW1lbnQiOiAgICAgICAgIC9e
XC9cLyguKilcbj8vbQotICAgICAgICAgICAgICAgICAgICAgICAgLCAgICJtdWx0aWxpbmUtY29t
bWVudCI6ICAgIC9eXC9cKigoPzoufFxufFxyKSo/KVwqXC8vCi0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICwgICB3c1R5cGVzID0gW10KLSAgICAgICAgICAg
ICAgICAgICAgOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrIGluIHJlKSB3c1R5cGVz
LnB1c2goayk7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICh3Lmxlbmd0aCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gd3NUeXBlcy5sZW5ndGg7IGkgPCBuOyBpKyspIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHdzVHlwZXNbaV07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHcucmVwbGFjZShyZVt0eXBlXSwgZnVuY3Rpb24g
KHRvaywgbTEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUucHVzaCh7
IHR5cGU6IHR5cGUgKyAocGVhID8gKCItIiArIHBlYSkgOiAiIiksIHZhbHVlOiBtMSB9KTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiIjsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlZCkgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bWF0Y2hlZCkgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIlN1cnByaXNpbmcgd2hpdGUgc3BhY2UgY29uc3RydWN0LiIpOyAvLyB0aGlzIHNob3VsZG4n
dCBoYXBwZW4KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICByZXR1cm4gdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAg
Ci0gICAgICAgIHZhciBpbnRlZ2VyX3R5cGUgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2
YXIgcmV0ID0gIiI7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25z
dW1lKElELCAidW5zaWduZWQiKSkgcmV0ID0gInVuc2lnbmVkICI7Ci0gICAgICAgICAgICBhbGxf
d3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAic2hvcnQiKSkgcmV0dXJuIHJldCAr
ICJzaG9ydCI7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgImxvbmciKSkgewotICAgICAg
ICAgICAgICAgIHJldCArPSAibG9uZyI7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJsb25nIikpIHJldHVybiByZXQgKyAiIGxvbmci
OwotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAocmV0KSBlcnJvcigiRmFpbGVkIHRvIHBhcnNlIGludGVnZXIgdHlwZSIpOwotICAgICAg
ICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGZsb2F0X3R5cGUgPSBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICB2YXIgcmV0ID0gIiI7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAg
ICAgIGlmIChjb25zdW1lKElELCAidW5yZXN0cmljdGVkIikpIHJldCA9ICJ1bnJlc3RyaWN0ZWQg
IjsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJm
bG9hdCIpKSByZXR1cm4gcmV0ICsgImZsb2F0IjsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElE
LCAiZG91YmxlIikpIHJldHVybiByZXQgKyAiZG91YmxlIjsKLSAgICAgICAgICAgIGlmIChyZXQp
IGVycm9yKCJGYWlsZWQgdG8gcGFyc2UgZmxvYXQgdHlwZSIpOwotICAgICAgICB9OwotICAgICAg
ICAKLSAgICAgICAgdmFyIHByaW1pdGl2ZV90eXBlID0gZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgdmFyIG51bV90eXBlID0gaW50ZWdlcl90eXBlKCkgfHwgZmxvYXRfdHlwZSgpOwotICAgICAg
ICAgICAgaWYgKG51bV90eXBlKSByZXR1cm4gbnVtX3R5cGU7Ci0gICAgICAgICAgICBhbGxfd3Mo
KTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAiYm9vbGVhbiIpKSByZXR1cm4gImJvb2xl
YW4iOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJieXRlIikpIHJldHVybiAiYnl0ZSI7
Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgIm9jdGV0IikpIHJldHVybiAib2N0ZXQiOwot
ICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGNvbnN0X3ZhbHVlID0gZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJ0cnVlIikpIHJldHVybiB7IHR5cGU6
ICJib29sZWFuIiwgdmFsdWU6IHRydWUgfTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAi
ZmFsc2UiKSkgcmV0dXJuIHsgdHlwZTogImJvb2xlYW4iLCB2YWx1ZTogZmFsc2UgfTsKLSAgICAg
ICAgICAgIGlmIChjb25zdW1lKElELCAibnVsbCIpKSByZXR1cm4geyB0eXBlOiAibnVsbCIgfTsK
LSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAiSW5maW5pdHkiKSkgcmV0dXJuIHsgdHlwZTog
IkluZmluaXR5IiwgbmVnYXRpdmU6IGZhbHNlIH07Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJ
RCwgIk5hTiIpKSByZXR1cm4geyB0eXBlOiAiTmFOIiB9OwotICAgICAgICAgICAgdmFyIHJldCA9
IGNvbnN1bWUoRkxPQVQpIHx8IGNvbnN1bWUoSU5UKTsKLSAgICAgICAgICAgIGlmIChyZXQpIHJl
dHVybiB7IHR5cGU6ICJudW1iZXIiLCB2YWx1ZTogMSAqIHJldC52YWx1ZSB9OwotICAgICAgICAg
ICAgdmFyIHRvayA9IGNvbnN1bWUoT1RIRVIsICItIik7Ci0gICAgICAgICAgICBpZiAodG9rKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJJbmZpbml0eSIpKSByZXR1cm4geyB0
eXBlOiAiSW5maW5pdHkiLCBuZWdhdGl2ZTogdHJ1ZSB9OwotICAgICAgICAgICAgICAgIGVsc2Ug
dG9rZW5zLnVuc2hpZnQodG9rKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAg
Ci0gICAgICAgIHZhciB0eXBlX3N1ZmZpeCA9IGZ1bmN0aW9uIChvYmopIHsKLSAgICAgICAgICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGNvbnN1bWUoT1RIRVIsICI/IikpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG9i
ai5udWxsYWJsZSkgZXJyb3IoIkNhbid0IG51bGxhYmxlIG1vcmUgdGhhbiBvbmNlIik7Ci0gICAg
ICAgICAgICAgICAgICAgIG9iai5udWxsYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoT1RIRVIsICJbIikpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIs
ICJdIikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBhcnJheSB0eXBlIik7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghb2JqLmFycmF5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvYmouYXJy
YXkgPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgb2JqLm51bGxhYmxlQXJyYXkgPSBbb2Jq
Lm51bGxhYmxlXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9iai5hcnJheSsrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgb2JqLm51bGxhYmxlQXJyYXkucHVzaChvYmoubnVsbGFibGUpOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG9iai5udWxsYWJsZSA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBzaW5nbGVfdHlwZSA9
IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHZhciBwcmltID0gcHJpbWl0aXZlX3R5cGUoKQot
ICAgICAgICAgICAgLCAgIHJldCA9IHsgc2VxdWVuY2U6IGZhbHNlLCBnZW5lcmljOiBudWxsLCBu
dWxsYWJsZTogZmFsc2UsIGFycmF5OiBmYWxzZSwgdW5pb246IGZhbHNlIH0KLSAgICAgICAgICAg
ICwgICBuYW1lCi0gICAgICAgICAgICAsICAgdmFsdWUKLSAgICAgICAgICAgIDsKLSAgICAgICAg
ICAgIGlmIChwcmltKSB7Ci0gICAgICAgICAgICAgICAgcmV0LmlkbFR5cGUgPSBwcmltOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9IGNvbnN1bWUoSUQpKSB7Ci0g
ICAgICAgICAgICAgICAgdmFsdWUgPSBuYW1lLnZhbHVlOwotICAgICAgICAgICAgICAgIGFsbF93
cygpOwotICAgICAgICAgICAgICAgIC8vIEdlbmVyaWMgdHlwZXMKLSAgICAgICAgICAgICAgICBp
ZiAoY29uc3VtZShPVEhFUiwgIjwiKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBiYWNrd2Fy
ZHMgY29tcGF0Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gInNlcXVlbmNlIikg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnNlcXVlbmNlID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXQuZ2VuZXJpYyA9IHZhbHVlOwot
ICAgICAgICAgICAgICAgICAgICByZXQuaWRsVHlwZSA9IHR5cGUoKSB8fCBlcnJvcigiRXJyb3Ig
cGFyc2luZyBnZW5lcmljIHR5cGUgIiArIHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgYWxs
X3dzKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZShPVEhFUiwgIj4iKSkgZXJy
b3IoIlVudGVybWluYXRlZCBnZW5lcmljIHR5cGUgIiArIHZhbHVlKTsKLSAgICAgICAgICAgICAg
ICAgICAgdHlwZV9zdWZmaXgocmV0KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldC5pZGxUeXBlID0gdmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdHlwZV9zdWZmaXgocmV0KTsKLSAgICAgICAgICAgIGlmIChy
ZXQubnVsbGFibGUgJiYgIXJldC5hcnJheSAmJiByZXQuaWRsVHlwZSA9PT0gImFueSIpIGVycm9y
KCJUeXBlIGFueSBjYW5ub3QgYmUgbWFkZSBudWxsYWJsZSIpOwotICAgICAgICAgICAgcmV0dXJu
IHJldDsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciB1bmlvbl90eXBlID0gZnVu
Y3Rpb24gKCkgewotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoT1RIRVIsICIoIikpIHJldHVybjsKLSAgICAgICAgICAgIHZhciByZXQgPSB7IHNlcXVlbmNl
OiBmYWxzZSwgZ2VuZXJpYzogbnVsbCwgbnVsbGFibGU6IGZhbHNlLCBhcnJheTogZmFsc2UsIHVu
aW9uOiB0cnVlLCBpZGxUeXBlOiBbXSB9OwotICAgICAgICAgICAgdmFyIGZzdCA9IHR5cGUoKSB8
fCBlcnJvcigiVW5pb24gdHlwZSB3aXRoIG5vIGNvbnRlbnQiKTsKLSAgICAgICAgICAgIHJldC5p
ZGxUeXBlLnB1c2goZnN0KTsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAg
ICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKElELCAib3IiKSkg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgdmFyIHR5cCA9IHR5cGUoKSB8fCBlcnJvcigiTm8gdHlw
ZSBhZnRlciAnb3InIGluIHVuaW9uIHR5cGUiKTsKLSAgICAgICAgICAgICAgICByZXQuaWRsVHlw
ZS5wdXNoKHR5cCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoT1RI
RVIsICIpIikpIGVycm9yKCJVbnRlcm1pbmF0ZWQgdW5pb24gdHlwZSIpOwotICAgICAgICAgICAg
dHlwZV9zdWZmaXgocmV0KTsKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH07Ci0g
ICAgICAgIAotICAgICAgICB2YXIgdHlwZSA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJl
dHVybiBzaW5nbGVfdHlwZSgpIHx8IHVuaW9uX3R5cGUoKTsKLSAgICAgICAgfTsKLSAgICAgICAg
Ci0gICAgICAgIHZhciBhcmd1bWVudCA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAg
dmFyIHJldCA9IHsgb3B0aW9uYWw6IGZhbHNlLCB2YXJpYWRpYzogZmFsc2UgfTsKLSAgICAgICAg
ICAgIHJldC5leHRBdHRycyA9IGV4dGVuZGVkX2F0dHJzKHN0b3JlKTsKLSAgICAgICAgICAgIGFs
bF93cyhzdG9yZSwgInBlYSIpOwotICAgICAgICAgICAgdmFyIG9wdF90b2tlbiA9IGNvbnN1bWUo
SUQsICJvcHRpb25hbCIpOwotICAgICAgICAgICAgaWYgKG9wdF90b2tlbikgewotICAgICAgICAg
ICAgICAgIHJldC5vcHRpb25hbCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXQuaWRsVHlwZSA9IHR5cGUoKTsKLSAgICAgICAg
ICAgIGlmICghcmV0LmlkbFR5cGUpIHsKLSAgICAgICAgICAgICAgICBpZiAob3B0X3Rva2VuKSB0
b2tlbnMudW5zaGlmdChvcHRfdG9rZW4pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHZhciB0eXBlX3Rva2VuID0gbGFzdF90b2tlbjsKLSAgICAg
ICAgICAgIGlmICghcmV0Lm9wdGlvbmFsKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPj0gMyAmJgotICAgICAgICAgICAgICAg
ICAgICB0b2tlbnNbMF0udHlwZSA9PT0gIm90aGVyIiAmJiB0b2tlbnNbMF0udmFsdWUgPT09ICIu
IiAmJgotICAgICAgICAgICAgICAgICAgICB0b2tlbnNbMV0udHlwZSA9PT0gIm90aGVyIiAmJiB0
b2tlbnNbMV0udmFsdWUgPT09ICIuIiAmJgotICAgICAgICAgICAgICAgICAgICB0b2tlbnNbMl0u
dHlwZSA9PT0gIm90aGVyIiAmJiB0b2tlbnNbMl0udmFsdWUgPT09ICIuIgotICAgICAgICAgICAg
ICAgICAgICApIHsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnNoaWZ0KCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHRva2Vucy5zaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICB0b2tlbnMu
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0LnZhcmlhZGljID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAg
ICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCk7Ci0gICAgICAgICAgICBpZiAoIW5hbWUpIHsK
LSAgICAgICAgICAgICAgICBpZiAob3B0X3Rva2VuKSB0b2tlbnMudW5zaGlmdChvcHRfdG9rZW4p
OwotICAgICAgICAgICAgICAgIHRva2Vucy51bnNoaWZ0KHR5cGVfdG9rZW4pOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldC5uYW1lID0gbmFt
ZS52YWx1ZTsKLSAgICAgICAgICAgIGlmIChyZXQub3B0aW9uYWwpIHsKLSAgICAgICAgICAgICAg
ICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICByZXRbImRlZmF1bHQiXSA9IGRlZmF1bHRfKCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9OwotICAg
ICAgICAKLSAgICAgICAgdmFyIGFyZ3VtZW50X2xpc3QgPSBmdW5jdGlvbiAoc3RvcmUpIHsKLSAg
ICAgICAgICAgIHZhciByZXQgPSBbXQotICAgICAgICAgICAgLCAgIGFyZyA9IGFyZ3VtZW50KHN0
b3JlID8gcmV0IDogbnVsbCkKLSAgICAgICAgICAgIDsKLSAgICAgICAgICAgIGlmICghYXJnKSBy
ZXR1cm47Ci0gICAgICAgICAgICByZXQucHVzaChhcmcpOwotICAgICAgICAgICAgd2hpbGUgKHRy
dWUpIHsKLSAgICAgICAgICAgICAgICBhbGxfd3Moc3RvcmUgPyByZXQgOiBudWxsKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICIsIikpIHJldHVybiByZXQ7Ci0gICAgICAg
ICAgICAgICAgdmFyIG54dCA9IGFyZ3VtZW50KHN0b3JlID8gcmV0IDogbnVsbCkgfHwgZXJyb3Io
IlRyYWlsaW5nIGNvbW1hIGluIGFyZ3VtZW50cyBsaXN0Iik7Ci0gICAgICAgICAgICAgICAgcmV0
LnB1c2gobnh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAg
IHZhciB0eXBlX3BhaXIgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAg
ICAgICAgICAgIHZhciBrID0gdHlwZSgpOwotICAgICAgICAgICAgaWYgKCFrKSByZXR1cm47Ci0g
ICAgICAgICAgICBhbGxfd3MoKQotICAgICAgICAgICAgaWYgKCFjb25zdW1lKE9USEVSLCAiLCIp
KSByZXR1cm47Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciB2ID0gdHlw
ZSgpOwotICAgICAgICAgICAgaWYgKCF2KSByZXR1cm47Ci0gICAgICAgICAgICByZXR1cm4gW2ss
IHZdOwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIHNpbXBsZV9leHRlbmRlZF9h
dHRyID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAg
ICAgIHZhciBuYW1lID0gY29uc3VtZShJRCk7Ci0gICAgICAgICAgICBpZiAoIW5hbWUpIHJldHVy
bjsKLSAgICAgICAgICAgIHZhciByZXQgPSB7Ci0gICAgICAgICAgICAgICAgbmFtZTogbmFtZS52
YWx1ZQotICAgICAgICAgICAgLCAgICJhcmd1bWVudHMiOiBudWxsCi0gICAgICAgICAgICB9Owot
ICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB2YXIgZXEgPSBjb25zdW1lKE9USEVS
LCAiPSIpOwotICAgICAgICAgICAgaWYgKGVxKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJoczsK
LSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICBpZiAocmhzID0gY29u
c3VtZShJRCkpIHsKLSAgICAgICAgICAgICAgICAgIHJldC5yaHMgPSByaHMKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShPVEhFUiwgIigiKSkgewot
ICAgICAgICAgICAgICAgICAgICAvLyBbRXhwb3NlZD0oV2luZG93LFdvcmtlcildCi0gICAgICAg
ICAgICAgICAgICAgIHJocyA9IFtdOwotICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBjb25z
dW1lKElEKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlkKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgcmhzID0gW2lkLnZhbHVlXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBpZGVudGlmaWVycyhyaHMpOwotICAgICAgICAgICAgICAgICAgICBjb25zdW1l
KE9USEVSLCAiKSIpIHx8IGVycm9yKCJVbmV4cGVjdGVkIHRva2VuIGluIGV4dGVuZGVkIGF0dHJp
YnV0ZSBhcmd1bWVudCBsaXN0IG9yIHR5cGUgcGFpciIpOwotICAgICAgICAgICAgICAgICAgICBy
ZXQucmhzID0gewotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogImlkZW50aWZpZXItbGlz
dCIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmhzCi0gICAgICAgICAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghcmV0LnJocykg
cmV0dXJuIGVycm9yKCJObyByaWdodCBoYW5kIHNpZGUgdG8gZXh0ZW5kZWQgYXR0cmlidXRlIGFz
c2lnbm1lbnQiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAg
ICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICIoIikpIHsKLSAgICAgICAgICAgICAgICB2YXIgYXJn
cywgcGFpcjsKLSAgICAgICAgICAgICAgICAvLyBbQ29uc3RydWN0b3IoRE9NU3RyaW5nIHN0cild
Ci0gICAgICAgICAgICAgICAgaWYgKGFyZ3MgPSBhcmd1bWVudF9saXN0KHN0b3JlKSkgewotICAg
ICAgICAgICAgICAgICAgICByZXRbImFyZ3VtZW50cyJdID0gYXJnczsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgLy8gW01hcENsYXNzKERPTVN0cmluZywgRE9NU3RyaW5nKV0K
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChwYWlyID0gdHlwZV9wYWlyKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0LnR5cGVQYWlyID0gcGFpcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgLy8gW0NvbnN0cnVjdG9yKCldCi0gICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldFsiYXJndW1lbnRzIl0gPSBbXTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgY29uc3VtZShP
VEhFUiwgIikiKSB8fCBlcnJvcigiVW5leHBlY3RlZCB0b2tlbiBpbiBleHRlbmRlZCBhdHRyaWJ1
dGUgYXJndW1lbnQgbGlzdCBvciB0eXBlIHBhaXIiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICAvLyBOb3RlOiB3
ZSBwYXJzZSBzb21ldGhpbmcgc2ltcGxlciB0aGFuIHRoZSBvZmZpY2lhbCBzeW50YXguIEl0J3Mg
YWxsIHRoYXQgZXZlcgotICAgICAgICAvLyBzZWVtcyB0byBiZSB1c2VkCi0gICAgICAgIHZhciBl
eHRlbmRlZF9hdHRycyA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAgdmFyIGVhcyA9
IFtdOwotICAgICAgICAgICAgYWxsX3dzKHN0b3JlKTsKLSAgICAgICAgICAgIGlmICghY29uc3Vt
ZShPVEhFUiwgIlsiKSkgcmV0dXJuIGVhczsKLSAgICAgICAgICAgIGVhc1swXSA9IHNpbXBsZV9l
eHRlbmRlZF9hdHRyKHN0b3JlKSB8fCBlcnJvcigiRXh0ZW5kZWQgYXR0cmlidXRlIHdpdGggbm90
IGNvbnRlbnQiKTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgd2hpbGUgKGNv
bnN1bWUoT1RIRVIsICIsIikpIHsKLSAgICAgICAgICAgICAgICBlYXMucHVzaChzaW1wbGVfZXh0
ZW5kZWRfYXR0cihzdG9yZSkgfHwgZXJyb3IoIlRyYWlsaW5nIGNvbW1hIGluIGV4dGVuZGVkIGF0
dHJpYnV0ZSIpKTsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICJdIikgfHwgZXJyb3IoIk5vIGVuZCBvZiBleHRlbmRl
ZCBhdHRyaWJ1dGUiKTsKLSAgICAgICAgICAgIHJldHVybiBlYXM7Ci0gICAgICAgIH07Ci0gICAg
ICAgIAotICAgICAgICB2YXIgZGVmYXVsdF8gPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBh
bGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiPSIpKSB7Ci0gICAgICAg
ICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgdmFyIGRlZiA9IGNvbnN0X3ZhbHVl
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGRlZikgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZGVmOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25z
dW1lKE9USEVSLCAiWyIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZShPVEhF
UiwgIl0iKSkgZXJyb3IoIkRlZmF1bHQgc2VxdWVuY2UgdmFsdWUgbXVzdCBiZSBlbXB0eSIpOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAic2VxdWVuY2UiLCB2YWx1ZTogW10g
fTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBzdHIgPSBjb25zdW1lKFNUUikgfHwgZXJyb3IoIk5vIHZhbHVlIGZvciBk
ZWZhdWx0Iik7Ci0gICAgICAgICAgICAgICAgICAgIHN0ci52YWx1ZSA9IHN0ci52YWx1ZS5yZXBs
YWNlKC9eIi8sICIiKS5yZXBsYWNlKC8iJC8sICIiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0cjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0g
ICAgICAgIAotICAgICAgICB2YXIgY29uc3RfID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAg
ICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZShJRCwg
ImNvbnN0IikpIHJldHVybjsKLSAgICAgICAgICAgIHZhciByZXQgPSB7IHR5cGU6ICJjb25zdCIs
IG51bGxhYmxlOiBmYWxzZSB9OwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB2
YXIgdHlwID0gcHJpbWl0aXZlX3R5cGUoKTsKLSAgICAgICAgICAgIGlmICghdHlwKSB7Ci0gICAg
ICAgICAgICAgICAgdHlwID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIk5vIHR5cGUgZm9yIGNvbnN0
Iik7Ci0gICAgICAgICAgICAgICAgdHlwID0gdHlwLnZhbHVlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcmV0LmlkbFR5cGUgPSB0eXA7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAg
ICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiPyIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0Lm51
bGxhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIk5vIG5hbWUgZm9y
IGNvbnN0Iik7Ci0gICAgICAgICAgICByZXQubmFtZSA9IG5hbWUudmFsdWU7Ci0gICAgICAgICAg
ICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI9IikgfHwgZXJyb3IoIk5v
IHZhbHVlIGFzc2lnbm1lbnQgZm9yIGNvbnN0Iik7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAg
ICAgICAgICAgIHZhciBjbnQgPSBjb25zdF92YWx1ZSgpOwotICAgICAgICAgICAgaWYgKGNudCkg
cmV0LnZhbHVlID0gY250OwotICAgICAgICAgICAgZWxzZSBlcnJvcigiTm8gdmFsdWUgZm9yIGNv
bnN0Iik7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIs
ICI7IikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBjb25zdCIpOwotICAgICAgICAgICAgcmV0dXJu
IHJldDsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBpbmhlcml0YW5jZSA9IGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgaWYgKGNvbnN1
bWUoT1RIRVIsICI6IikpIHsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAg
ICAgICB2YXIgaW5oID0gY29uc3VtZShJRCkgfHwgZXJyb3IgKCJObyB0eXBlIGluIGluaGVyaXRh
bmNlIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGluaC52YWx1ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBvcGVyYXRpb25fcmVzdCA9IGZ1bmN0
aW9uIChyZXQsIHN0b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlm
ICghcmV0KSByZXQgPSB7fTsKLSAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCk7Ci0g
ICAgICAgICAgICByZXQubmFtZSA9IG5hbWUgPyBuYW1lLnZhbHVlIDogbnVsbDsKLSAgICAgICAg
ICAgIGFsbF93cygpOwotICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIigiKSB8fCBlcnJvcigi
SW52YWxpZCBvcGVyYXRpb24iKTsKLSAgICAgICAgICAgIHJldFsiYXJndW1lbnRzIl0gPSBhcmd1
bWVudF9saXN0KHN0b3JlKSB8fCBbXTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAg
ICAgY29uc3VtZShPVEhFUiwgIikiKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIG9wZXJhdGlvbiIp
OwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIp
IHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQgb3BlcmF0aW9uIik7Ci0gICAgICAgICAgICByZXR1cm4g
cmV0OwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rp
b24gKHN0b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKLSAgICAgICAg
ICAgIHZhciByZXQ7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoSUQsICJjYWxsYmFjayIpKSBy
ZXR1cm47Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciB0b2sgPSBjb25z
dW1lKElELCAiaW50ZXJmYWNlIik7Ci0gICAgICAgICAgICBpZiAodG9rKSB7Ci0gICAgICAgICAg
ICAgICAgdG9rZW5zLnVuc2hpZnQodG9rKTsKLSAgICAgICAgICAgICAgICByZXQgPSBpbnRlcmZh
Y2VfKCk7Ci0gICAgICAgICAgICAgICAgcmV0LnR5cGUgPSAiY2FsbGJhY2sgaW50ZXJmYWNlIjsK
LSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
dmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJvcigiTm8gbmFtZSBmb3IgY2FsbGJhY2siKTsK
LSAgICAgICAgICAgIHJldCA9IHsgdHlwZTogImNhbGxiYWNrIiwgbmFtZTogbmFtZS52YWx1ZSB9
OwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiPSIp
IHx8IGVycm9yKCJObyBhc3NpZ25tZW50IGluIGNhbGxiYWNrIik7Ci0gICAgICAgICAgICBhbGxf
d3MoKTsKLSAgICAgICAgICAgIHJldC5pZGxUeXBlID0gcmV0dXJuX3R5cGUoKTsKLSAgICAgICAg
ICAgIGFsbF93cygpOwotICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIigiKSB8fCBlcnJvcigi
Tm8gYXJndW1lbnRzIGluIGNhbGxiYWNrIik7Ci0gICAgICAgICAgICByZXRbImFyZ3VtZW50cyJd
ID0gYXJndW1lbnRfbGlzdChzdG9yZSkgfHwgW107Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAg
ICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICIpIikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBjYWxs
YmFjayIpOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVS
LCAiOyIpIHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQgY2FsbGJhY2siKTsKLSAgICAgICAgICAgIHJl
dHVybiByZXQ7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdmFyIGF0dHJpYnV0ZSA9IGZ1bmN0aW9u
IChzdG9yZSkgewotICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAg
ICB2YXIgZ3JhYmJlZCA9IFtdCi0gICAgICAgICAgICAsICAgcmV0ID0gewotICAgICAgICAgICAg
ICAgIHR5cGU6ICAgICAgICAgICAiYXR0cmlidXRlIgotICAgICAgICAgICAgLCAgICJzdGF0aWMi
OiAgICAgICBmYWxzZQotICAgICAgICAgICAgLCAgIHN0cmluZ2lmaWVyOiAgICBmYWxzZQotICAg
ICAgICAgICAgLCAgIGluaGVyaXQ6ICAgICAgICBmYWxzZQotICAgICAgICAgICAgLCAgIHJlYWRv
bmx5OiAgICAgICBmYWxzZQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmIChjb25zdW1l
KElELCAic3RhdGljIikpIHsKLSAgICAgICAgICAgICAgICByZXRbInN0YXRpYyJdID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICBncmFiYmVkLnB1c2gobGFzdF90b2tlbik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKElELCAic3RyaW5naWZpZXIiKSkgewotICAg
ICAgICAgICAgICAgIHJldC5zdHJpbmdpZmllciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZ3Jh
YmJlZC5wdXNoKGxhc3RfdG9rZW4pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIHcg
PSBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmICh3KSBncmFiYmVkLnB1c2godyk7Ci0gICAgICAg
ICAgICBpZiAoY29uc3VtZShJRCwgImluaGVyaXQiKSkgewotICAgICAgICAgICAgICAgIGlmIChy
ZXRbInN0YXRpYyJdIHx8IHJldC5zdHJpbmdpZmllcikgZXJyb3IoIkNhbm5vdCBoYXZlIGEgc3Rh
dGljIG9yIHN0cmluZ2lmaWVyIGluaGVyaXQiKTsKLSAgICAgICAgICAgICAgICByZXQuaW5oZXJp
dCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZ3JhYmJlZC5wdXNoKGxhc3RfdG9rZW4pOwotICAg
ICAgICAgICAgICAgIHZhciB3ID0gYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHcpIGdy
YWJiZWQucHVzaCh3KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjb25zdW1lKElE
LCAicmVhZG9ubHkiKSkgewotICAgICAgICAgICAgICAgIHJldC5yZWFkb25seSA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgZ3JhYmJlZC5wdXNoKGxhc3RfdG9rZW4pOwotICAgICAgICAgICAgICAg
IHZhciB3ID0gYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHcpIGdyYWJiZWQucHVzaCh3
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghY29uc3VtZShJRCwgImF0dHJpYnV0
ZSIpKSB7Ci0gICAgICAgICAgICAgICAgdG9rZW5zID0gZ3JhYmJlZC5jb25jYXQodG9rZW5zKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhbGxf
d3MoKTsKLSAgICAgICAgICAgIHJldC5pZGxUeXBlID0gdHlwZSgpIHx8IGVycm9yKCJObyB0eXBl
IGluIGF0dHJpYnV0ZSIpOwotICAgICAgICAgICAgaWYgKHJldC5pZGxUeXBlLnNlcXVlbmNlKSBl
cnJvcigiQXR0cmlidXRlcyBjYW5ub3QgYWNjZXB0IHNlcXVlbmNlIHR5cGVzIik7Ci0gICAgICAg
ICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwgZXJy
b3IoIk5vIG5hbWUgaW4gYXR0cmlidXRlIik7Ci0gICAgICAgICAgICByZXQubmFtZSA9IG5hbWUu
dmFsdWU7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIs
ICI7IikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBhdHRyaWJ1dGUiKTsKLSAgICAgICAgICAgIHJl
dHVybiByZXQ7Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgcmV0dXJuX3R5cGUg
PSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIgdHlwID0gdHlwZSgpOwotICAgICAgICAg
ICAgaWYgKCF0eXApIHsKLSAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgInZvaWQiKSkg
ewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gInZvaWQiOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBlbHNlIGVycm9yKCJObyByZXR1cm4gdHlwZSIpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuIHR5cDsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAg
ICAgIHZhciBvcGVyYXRpb24gPSBmdW5jdGlvbiAoc3RvcmUpIHsKLSAgICAgICAgICAgIGFsbF93
cyhzdG9yZSwgInBlYSIpOwotICAgICAgICAgICAgdmFyIHJldCA9IHsKLSAgICAgICAgICAgICAg
ICB0eXBlOiAgICAgICAgICAgIm9wZXJhdGlvbiIKLSAgICAgICAgICAgICwgICBnZXR0ZXI6ICAg
ICAgICAgZmFsc2UKLSAgICAgICAgICAgICwgICBzZXR0ZXI6ICAgICAgICAgZmFsc2UKLSAgICAg
ICAgICAgICwgICBjcmVhdG9yOiAgICAgICAgZmFsc2UKLSAgICAgICAgICAgICwgICBkZWxldGVy
OiAgICAgICAgZmFsc2UKLSAgICAgICAgICAgICwgICBsZWdhY3ljYWxsZXI6ICAgZmFsc2UKLSAg
ICAgICAgICAgICwgICAic3RhdGljIjogICAgICAgZmFsc2UKLSAgICAgICAgICAgICwgICBzdHJp
bmdpZmllcjogICAgZmFsc2UKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB3aGlsZSAodHJ1
ZSkgewotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGlmIChjb25z
dW1lKElELCAiZ2V0dGVyIikpIHJldC5nZXR0ZXIgPSB0cnVlOwotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGNvbnN1bWUoSUQsICJzZXR0ZXIiKSkgcmV0LnNldHRlciA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShJRCwgImNyZWF0b3IiKSkgcmV0LmNyZWF0b3IgPSB0
cnVlOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoSUQsICJkZWxldGVyIikpIHJl
dC5kZWxldGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKElELCAi
bGVnYWN5Y2FsbGVyIikpIHJldC5sZWdhY3ljYWxsZXIgPSB0cnVlOwotICAgICAgICAgICAgICAg
IGVsc2UgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocmV0LmdldHRlciB8
fCByZXQuc2V0dGVyIHx8IHJldC5jcmVhdG9yIHx8IHJldC5kZWxldGVyIHx8IHJldC5sZWdhY3lj
YWxsZXIpIHsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICByZXQu
aWRsVHlwZSA9IHJldHVybl90eXBlKCk7Ci0gICAgICAgICAgICAgICAgb3BlcmF0aW9uX3Jlc3Qo
cmV0LCBzdG9yZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAic3RhdGljIikpIHsKLSAgICAgICAgICAgICAg
ICByZXRbInN0YXRpYyJdID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXQuaWRsVHlwZSA9IHJl
dHVybl90eXBlKCk7Ci0gICAgICAgICAgICAgICAgb3BlcmF0aW9uX3Jlc3QocmV0LCBzdG9yZSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGVsc2UgaWYgKGNvbnN1bWUoSUQsICJzdHJpbmdpZmllciIpKSB7Ci0gICAgICAgICAgICAgICAg
cmV0LnN0cmluZ2lmaWVyID0gdHJ1ZTstCi0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICI7IikpIHJldHVybiByZXQ7Ci0gICAgICAg
ICAgICAgICAgcmV0LmlkbFR5cGUgPSByZXR1cm5fdHlwZSgpOwotICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbl9yZXN0KHJldCwgc3RvcmUpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXQuaWRsVHlwZSA9IHJldHVybl90eXBlKCk7Ci0g
ICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAiaXRlcmF0
b3IiKSkgewotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIHJldC50
eXBlID0gIml0ZXJhdG9yIjsKLSAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgIm9iamVj
dCIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldC5pdGVyYXRvck9iamVjdCA9ICJvYmplY3Qi
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKE9U
SEVSLCAiPSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAg
ICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJObyByaWdodCBoYW5kIHNp
ZGUgaW4gaXRlcmF0b3IiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0Lml0ZXJhdG9yT2JqZWN0
ID0gbmFtZS52YWx1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYWxsX3dz
KCk7Ci0gICAgICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIjsiKSB8fCBlcnJvcigiVW50ZXJt
aW5hdGVkIGl0ZXJhdG9yIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG9wZXJhdGlvbl9yZXN0
KHJldCwgc3RvcmUpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgaWRlbnRpZmllcnMgPSBmdW5jdGlv
biAoYXJyKSB7Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIGFs
bF93cygpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiLCIpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9
IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJUcmFpbGluZyBjb21tYSBpbiBpZGVudGlmaWVycyBsaXN0
Iik7Ci0gICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKG5hbWUudmFsdWUpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIHNlcmlhbGlzZXIgPSBmdW5jdGlvbiAoc3Rv
cmUpIHsKLSAgICAgICAgICAgIGFsbF93cyhzdG9yZSwgInBlYSIpOwotICAgICAgICAgICAgaWYg
KCFjb25zdW1lKElELCAic2VyaWFsaXplciIpKSByZXR1cm47Ci0gICAgICAgICAgICB2YXIgcmV0
ID0geyB0eXBlOiAic2VyaWFsaXplciIgfTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAg
ICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICI9IikpIHsKLSAgICAgICAgICAgICAgICBhbGxfd3Mo
KTsKLSAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgInsiKSkgewotICAgICAgICAg
ICAgICAgICAgICByZXQucGF0dGVybk1hcCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGFs
bF93cygpOwotICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBjb25zdW1lKElEKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGlkICYmIGlkLnZhbHVlID09PSAiZ2V0dGVyIikgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0Lm5hbWVzID0gWyJnZXR0ZXIiXTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpZCAmJiBpZC52YWx1ZSA9PT0g
ImluaGVyaXQiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXQubmFtZXMgPSBbImluaGVy
aXQiXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJzKHJldC5uYW1lcyk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaWQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldC5uYW1lcyA9IFtpZC52YWx1ZV07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZGVudGlmaWVycyhyZXQubmFtZXMpOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0Lm5hbWVzID0gW107Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICJ9Iikg
fHwgZXJyb3IoIlVudGVybWluYXRlZCBzZXJpYWxpemVyIHBhdHRlcm4gbWFwIik7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoT1RIRVIsICJbIikp
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0LnBhdHRlcm5MaXN0ID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IGNvbnN1
bWUoSUQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoaWQgJiYgaWQudmFsdWUgPT09ICJnZXR0
ZXIiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXQubmFtZXMgPSBbImdldHRlciJdOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlkKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXQubmFtZXMgPSBbaWQudmFsdWVdOwotICAgICAg
ICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMocmV0Lm5hbWVzKTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldC5uYW1lcyA9IFtdOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiXSIp
IHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQgc2VyaWFsaXplciBwYXR0ZXJuIGxpc3QiKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIkludmFsaWQgc2VyaWFsaXplciIpOwot
ICAgICAgICAgICAgICAgICAgICByZXQubmFtZSA9IG5hbWUudmFsdWU7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUo
T1RIRVIsICI7IikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBzZXJpYWxpemVyIik7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYg
KGNvbnN1bWUoT1RIRVIsICI7IikpIHsKLSAgICAgICAgICAgICAgICAvLyBub29wLCBqdXN0IHBh
cnNpbmcKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IHJldC5pZGxUeXBlID0gcmV0dXJuX3R5cGUoKTsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsK
LSAgICAgICAgICAgICAgICByZXQub3BlcmF0aW9uID0gb3BlcmF0aW9uX3Jlc3QobnVsbCwgc3Rv
cmUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsK
LQotICAgICAgICB2YXIgaXRlcmFibGVfdHlwZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
aWYgKGNvbnN1bWUoSUQsICJpdGVyYWJsZSIpKSByZXR1cm4gIml0ZXJhYmxlIjsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKGNvbnN1bWUoSUQsICJsZWdhY3lpdGVyYWJsZSIpKSByZXR1cm4gImxlZ2Fj
eWl0ZXJhYmxlIjsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoSUQsICJtYXBsaWtlIikp
IHJldHVybiAibWFwbGlrZSI7Ci0gICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKElELCAic2V0
bGlrZSIpKSByZXR1cm4gInNldGxpa2UiOwotICAgICAgICAgICAgZWxzZSByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICB2YXIgcmVhZG9ubHlfaXRlcmFibGVfdHlwZSA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJtYXBsaWtlIikpIHJldHVybiAibWFwbGlr
ZSI7Ci0gICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKElELCAic2V0bGlrZSIpKSByZXR1cm4g
InNldGxpa2UiOwotICAgICAgICAgICAgZWxzZSByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICB2YXIgaXRlcmFibGUgPSBmdW5jdGlvbiAoc3RvcmUpIHsKLSAgICAgICAgICAgIGFsbF93cyhz
dG9yZSwgInBlYSIpOwotICAgICAgICAgICAgdmFyIGdyYWJiZWQgPSBbXSwKLSAgICAgICAgICAg
ICAgICByZXQgPSB7dHlwZTogbnVsbCwgaWRsVHlwZTogbnVsbCwgcmVhZG9ubHk6IGZhbHNlfTsK
LSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAicmVhZG9ubHkiKSkgewotICAgICAgICAgICAg
ICAgIHJldC5yZWFkb25seSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZ3JhYmJlZC5wdXNoKGxh
c3RfdG9rZW4pOwotICAgICAgICAgICAgICAgIHZhciB3ID0gYWxsX3dzKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHcpIGdyYWJiZWQucHVzaCh3KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHZhciBjb25zdW1lSXRUeXBlID0gcmV0LnJlYWRvbmx5ID8gcmVhZG9ubHlfaXRlcmFibGVfdHlw
ZSA6IGl0ZXJhYmxlX3R5cGU7Ci0KLSAgICAgICAgICAgIHZhciBpdHR5cGUgPSBjb25zdW1lSXRU
eXBlKCk7Ci0gICAgICAgICAgICBpZiAoIWl0dHlwZSkgewotICAgICAgICAgICAgICAgIHRva2Vu
cyA9IGdyYWJiZWQuY29uY2F0KHRva2Vucyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgc2Vjb25kVHlwZVJlcXVpcmVkID0gaXR0eXBl
ID09PSAibWFwbGlrZSI7Ci0gICAgICAgICAgICB2YXIgc2Vjb25kVHlwZUFsbG93ZWQgPSBzZWNv
bmRUeXBlUmVxdWlyZWQgfHwgaXR0eXBlID09PSAiaXRlcmFibGUiOwotICAgICAgICAgICAgcmV0
LnR5cGUgPSBpdHR5cGU7Ci0gICAgICAgICAgICBpZiAocmV0LnR5cGUgIT09ICdtYXBsaWtlJyAm
JiByZXQudHlwZSAhPT0gJ3NldGxpa2UnKQotICAgICAgICAgICAgICAgIGRlbGV0ZSByZXQucmVh
ZG9ubHk7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKE9U
SEVSLCAiPCIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0LmlkbFR5cGUgPSB0eXBlKCkgfHwgZXJy
b3IoIkVycm9yIHBhcnNpbmcgIiArIGl0dHlwZSArICIgZGVjbGFyYXRpb24iKTsKLSAgICAgICAg
ICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICBpZiAoc2Vjb25kVHlwZUFsbG93ZWQp
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUyID0gbnVsbDsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICIsIikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTIgPSB0eXBlKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsgICAgICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAodHlwZTIpCi0gICAg
ICAgICAgICAgICAgICAgICAgICByZXQuaWRsVHlwZSA9IFtyZXQuaWRsVHlwZSwgdHlwZTJdOwot
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZWNvbmRUeXBlUmVxdWlyZWQpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvcigiTWlzc2luZyBzZWNvbmQgdHlwZSBhcmd1bWVudCBpbiAi
ICsgaXR0eXBlICsgIiBkZWNsYXJhdGlvbiIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICI+IikpIGVycm9yKCJVbnRlcm1pbmF0ZWQgIiAr
IGl0dHlwZSArICIgZGVjbGFyYXRpb24iKTsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICI7IikpIGVycm9yKCJNaXNzaW5nIHNl
bWljb2xvbiBhZnRlciAiICsgaXR0eXBlICsgIiBkZWNsYXJhdGlvbiIpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGVycm9yKCJFcnJvciBwYXJzaW5n
ICIgKyBpdHR5cGUgKyAiIGRlY2xhcmF0aW9uIik7Ci0KLSAgICAgICAgICAgIHJldHVybiByZXQ7
ICAgICAgICAgICAgCi0gICAgICAgIH0gICAgICAgIAotICAgICAgICAKLSAgICAgICAgdmFyIGlu
dGVyZmFjZV8gPSBmdW5jdGlvbiAoaXNQYXJ0aWFsLCBzdG9yZSkgewotICAgICAgICAgICAgYWxs
X3dzKGlzUGFydGlhbCA/IG51bGwgOiBzdG9yZSwgInBlYSIpOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKElELCAiaW50ZXJmYWNlIikpIHJldHVybjsKLSAgICAgICAgICAgIGFsbF93cygpOwot
ICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJvcigiTm8gbmFtZSBmb3Ig
aW50ZXJmYWNlIik7Ci0gICAgICAgICAgICB2YXIgbWVtcyA9IFtdCi0gICAgICAgICAgICAsICAg
cmV0ID0gewotICAgICAgICAgICAgICAgIHR5cGU6ICAgImludGVyZmFjZSIKLSAgICAgICAgICAg
ICwgICBuYW1lOiAgIG5hbWUudmFsdWUKLSAgICAgICAgICAgICwgICBwYXJ0aWFsOiAgICBmYWxz
ZQotICAgICAgICAgICAgLCAgIG1lbWJlcnM6ICAgIG1lbXMKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICBpZiAoIWlzUGFydGlhbCkgcmV0LmluaGVyaXRhbmNlID0gaW5oZXJpdGFuY2UoKSB8
fCBudWxsOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVS
LCAieyIpIHx8IGVycm9yKCJCb2R5bGVzcyBpbnRlcmZhY2UiKTsKLSAgICAgICAgICAgIHdoaWxl
ICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKHN0b3JlID8gbWVtcyA6IG51bGwpOwot
ICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAifSIpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIp
IHx8IGVycm9yKCJNaXNzaW5nIHNlbWljb2xvbiBhZnRlciBpbnRlcmZhY2UiKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgdmFyIGVhID0gZXh0ZW5kZWRfYXR0cnMoc3RvcmUgPyBtZW1zIDogbnVsbCk7Ci0gICAgICAg
ICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgdmFyIGNudCA9IGNvbnN0XyhzdG9y
ZSA/IG1lbXMgOiBudWxsKTsKLSAgICAgICAgICAgICAgICBpZiAoY250KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNudC5leHRBdHRycyA9IGVhOwotICAgICAgICAgICAgICAgICAgICByZXQubWVt
YmVycy5wdXNoKGNudCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YXIgbWVtID0gKG9wdC5hbGxvd05lc3RlZFR5cGVk
ZWZzICYmIHR5cGVkZWYoc3RvcmUgPyBtZW1zIDogbnVsbCkpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGl0ZXJhYmxlKHN0b3JlID8gbWVtcyA6IG51bGwpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlcmlhbGlzZXIoc3RvcmUgPyBtZW1zIDogbnVsbCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlKHN0b3JlID8gbWVtcyA6IG51bGwpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbihzdG9yZSA/IG1lbXMgOiBudWxsKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiVW5rbm93biBtZW1iZXIiKTsKLSAgICAg
ICAgICAgICAgICBtZW0uZXh0QXR0cnMgPSBlYTsKLSAgICAgICAgICAgICAgICByZXQubWVtYmVy
cy5wdXNoKG1lbSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAg
ICB2YXIgcGFydGlhbCA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAgYWxsX3dzKHN0
b3JlLCAicGVhIik7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoSUQsICJwYXJ0aWFsIikpIHJl
dHVybjsKLSAgICAgICAgICAgIHZhciB0aGluZyA9IGRpY3Rpb25hcnkodHJ1ZSwgc3RvcmUpIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VfKHRydWUsIHN0b3JlKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIlBhcnRpYWwgZG9lc24ndCBhcHBseSB0byBhbnl0
aGluZyIpOwotICAgICAgICAgICAgdGhpbmcucGFydGlhbCA9IHRydWU7Ci0gICAgICAgICAgICBy
ZXR1cm4gdGhpbmc7Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgZGljdGlvbmFy
eSA9IGZ1bmN0aW9uIChpc1BhcnRpYWwsIHN0b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3MoaXNQ
YXJ0aWFsID8gbnVsbCA6IHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUo
SUQsICJkaWN0aW9uYXJ5IikpIHJldHVybjsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAg
ICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJvcigiTm8gbmFtZSBmb3IgZGljdGlv
bmFyeSIpOwotICAgICAgICAgICAgdmFyIG1lbXMgPSBbXQotICAgICAgICAgICAgLCAgIHJldCA9
IHsKLSAgICAgICAgICAgICAgICB0eXBlOiAgICJkaWN0aW9uYXJ5IgotICAgICAgICAgICAgLCAg
IG5hbWU6ICAgbmFtZS52YWx1ZQotICAgICAgICAgICAgLCAgIHBhcnRpYWw6ICAgIGZhbHNlCi0g
ICAgICAgICAgICAsICAgbWVtYmVyczogICAgbWVtcwotICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIGlmICghaXNQYXJ0aWFsKSByZXQuaW5oZXJpdGFuY2UgPSBpbmhlcml0YW5jZSgpIHx8IG51
bGw7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICJ7
IikgfHwgZXJyb3IoIkJvZHlsZXNzIGRpY3Rpb25hcnkiKTsKLSAgICAgICAgICAgIHdoaWxlICh0
cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKHN0b3JlID8gbWVtcyA6IG51bGwpOwotICAg
ICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAifSIpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8
IGVycm9yKCJNaXNzaW5nIHNlbWljb2xvbiBhZnRlciBkaWN0aW9uYXJ5Iik7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHZhciBlYSA9IGV4dGVuZGVkX2F0dHJzKHN0b3JlID8gbWVtcyA6IG51bGwpOwotICAgICAgICAg
ICAgICAgIGFsbF93cyhzdG9yZSA/IG1lbXMgOiBudWxsLCAicGVhIik7Ci0gICAgICAgICAgICAg
ICAgdmFyIHJlcXVpcmVkID0gY29uc3VtZShJRCwgInJlcXVpcmVkIik7Ci0gICAgICAgICAgICAg
ICAgdmFyIHR5cCA9IHR5cGUoKSB8fCBlcnJvcigiTm8gdHlwZSBmb3IgZGljdGlvbmFyeSBtZW1i
ZXIiKTsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICB2YXIgbmFt
ZSA9IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJObyBuYW1lIGZvciBkaWN0aW9uYXJ5IG1lbWJlciIp
OwotICAgICAgICAgICAgICAgIHZhciBkZmx0ID0gZGVmYXVsdF8oKTsKLSAgICAgICAgICAgICAg
ICBpZiAocmVxdWlyZWQgJiYgZGZsdCkgZXJyb3IoIlJlcXVpcmVkIG1lbWJlciBtdXN0IG5vdCBo
YXZlIGEgZGVmYXVsdCIpOwotICAgICAgICAgICAgICAgIHJldC5tZW1iZXJzLnB1c2goewotICAg
ICAgICAgICAgICAgICAgICB0eXBlOiAgICAgICAiZmllbGQiCi0gICAgICAgICAgICAgICAgLCAg
IG5hbWU6ICAgICAgIG5hbWUudmFsdWUKLSAgICAgICAgICAgICAgICAsICAgcmVxdWlyZWQ6ICAg
ISFyZXF1aXJlZAotICAgICAgICAgICAgICAgICwgICBpZGxUeXBlOiAgICB0eXAKLSAgICAgICAg
ICAgICAgICAsICAgZXh0QXR0cnM6ICAgZWEKLSAgICAgICAgICAgICAgICAsICAgImRlZmF1bHQi
OiAgZGZsdAotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGFsbF93cygpOwot
ICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIlVudGVybWluYXRl
ZCBkaWN0aW9uYXJ5IG1lbWJlciIpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAg
ICAKLSAgICAgICAgdmFyIGV4Y2VwdGlvbiA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAg
ICAgYWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoSUQsICJl
eGNlcHRpb24iKSkgcmV0dXJuOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB2
YXIgbmFtZSA9IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJObyBuYW1lIGZvciBleGNlcHRpb24iKTsK
LSAgICAgICAgICAgIHZhciBtZW1zID0gW10KLSAgICAgICAgICAgICwgICByZXQgPSB7Ci0gICAg
ICAgICAgICAgICAgdHlwZTogICAiZXhjZXB0aW9uIgotICAgICAgICAgICAgLCAgIG5hbWU6ICAg
bmFtZS52YWx1ZQotICAgICAgICAgICAgLCAgIG1lbWJlcnM6ICAgIG1lbXMKLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICByZXQuaW5oZXJpdGFuY2UgPSBpbmhlcml0YW5jZSgpIHx8IG51bGw7
Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICJ7Iikg
fHwgZXJyb3IoIkJvZHlsZXNzIGV4Y2VwdGlvbiIpOwotICAgICAgICAgICAgd2hpbGUgKHRydWUp
IHsKLSAgICAgICAgICAgICAgICBhbGxfd3Moc3RvcmUgPyBtZW1zIDogbnVsbCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICJ9IikpIHsKLSAgICAgICAgICAgICAgICAgICAg
YWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI7IikgfHwgZXJy
b3IoIk1pc3Npbmcgc2VtaWNvbG9uIGFmdGVyIGV4Y2VwdGlvbiIpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YXIg
ZWEgPSBleHRlbmRlZF9hdHRycyhzdG9yZSA/IG1lbXMgOiBudWxsKTsKLSAgICAgICAgICAgICAg
ICBhbGxfd3Moc3RvcmUgPyBtZW1zIDogbnVsbCwgInBlYSIpOwotICAgICAgICAgICAgICAgIHZh
ciBjbnQgPSBjb25zdF8oKTsKLSAgICAgICAgICAgICAgICBpZiAoY250KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNudC5leHRBdHRycyA9IGVhOwotICAgICAgICAgICAgICAgICAgICByZXQubWVt
YmVycy5wdXNoKGNudCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICB2YXIgdHlwID0gdHlwZSgpOwotICAgICAgICAgICAgICAg
ICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElE
KTsKLSAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghdHlwIHx8ICFuYW1lIHx8ICFjb25zdW1lKE9USEVSLCAiOyIpKSBlcnJvcigiVW5rbm93biBt
ZW1iZXIgaW4gZXhjZXB0aW9uIGJvZHkiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0Lm1lbWJl
cnMucHVzaCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAgICAgICAiZmllbGQiCi0g
ICAgICAgICAgICAgICAgICAgICwgICBuYW1lOiAgICAgICBuYW1lLnZhbHVlCi0gICAgICAgICAg
ICAgICAgICAgICwgICBpZGxUeXBlOiAgICB0eXAKLSAgICAgICAgICAgICAgICAgICAgLCAgIGV4
dEF0dHJzOiAgIGVhCi0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBlbnVtXyA9
IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoSUQsICJlbnVtIikpIHJldHVybjsKLSAgICAgICAgICAg
IGFsbF93cygpOwotICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJvcigi
Tm8gbmFtZSBmb3IgZW51bSIpOwotICAgICAgICAgICAgdmFyIHZhbHMgPSBbXQotICAgICAgICAg
ICAgLCAgIHJldCA9IHsKLSAgICAgICAgICAgICAgICB0eXBlOiAgICJlbnVtIgotICAgICAgICAg
ICAgLCAgIG5hbWU6ICAgbmFtZS52YWx1ZQotICAgICAgICAgICAgLCAgIHZhbHVlczogdmFscwot
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgY29uc3Vt
ZShPVEhFUiwgInsiKSB8fCBlcnJvcigiTm8gY3VybHkgZm9yIGVudW0iKTsKLSAgICAgICAgICAg
IHZhciBzYXdfY29tbWEgPSBmYWxzZTsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgICAgICAgICAgYWxsX3dzKHN0b3JlID8gdmFscyA6IG51bGwpOwotICAgICAgICAgICAgICAg
IGlmIChjb25zdW1lKE9USEVSLCAifSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cygp
OwotICAgICAgICAgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJObyBz
ZW1pY29sb24gYWZ0ZXIgZW51bSIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YXIgdmFsID0gY29uc3VtZShTVFIp
IHx8IGVycm9yKCJVbmV4cGVjdGVkIHZhbHVlIGluIGVudW0iKTsKLSAgICAgICAgICAgICAgICBy
ZXQudmFsdWVzLnB1c2godmFsLnZhbHVlLnJlcGxhY2UoLyIvZywgIiIpKTsKLSAgICAgICAgICAg
ICAgICBhbGxfd3Moc3RvcmUgPyB2YWxzIDogbnVsbCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNv
bnN1bWUoT1RIRVIsICIsIikpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHN0b3JlKSB2YWxz
LnB1c2goeyB0eXBlOiAiLCIgfSk7Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cyhzdG9yZSA/
IHZhbHMgOiBudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgc2F3X2NvbW1hID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHNhd19jb21tYSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciB0eXBlZGVmID0gZnVuY3Rpb24gKHN0
b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZShJRCwgInR5cGVkZWYiKSkgcmV0dXJuOwotICAgICAgICAgICAgdmFyIHJldCA9
IHsKLSAgICAgICAgICAgICAgICB0eXBlOiAgICJ0eXBlZGVmIgotICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgcmV0LnR5cGVFeHRBdHRycyA9IGV4dGVu
ZGVkX2F0dHJzKCk7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJ0cGVhIik7Ci0gICAgICAg
ICAgICByZXQuaWRsVHlwZSA9IHR5cGUoKSB8fCBlcnJvcigiTm8gdHlwZSBpbiB0eXBlZGVmIik7
Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJ
RCkgfHwgZXJyb3IoIk5vIG5hbWUgaW4gdHlwZWRlZiIpOwotICAgICAgICAgICAgcmV0Lm5hbWUg
PSBuYW1lLnZhbHVlOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1l
KE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQgdHlwZWRlZiIpOwotICAgICAgICAg
ICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBpbXBsZW1l
bnRzXyA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVh
Iik7Ci0gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY29uc3VtZShJRCk7Ci0gICAgICAgICAgICBp
ZiAoIXRhcmdldCkgcmV0dXJuOwotICAgICAgICAgICAgdmFyIHcgPSBhbGxfd3MoKTsKLSAgICAg
ICAgICAgIGlmIChjb25zdW1lKElELCAiaW1wbGVtZW50cyIpKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIHJldCA9IHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZTogICAiaW1wbGVtZW50cyIKLSAg
ICAgICAgICAgICAgICAsICAgdGFyZ2V0OiB0YXJnZXQudmFsdWUKLSAgICAgICAgICAgICAgICB9
OwotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIHZhciBpbXAgPSBj
b25zdW1lKElEKSB8fCBlcnJvcigiSW5jb21wbGV0ZSBpbXBsZW1lbnRzIHN0YXRlbWVudCIpOwot
ICAgICAgICAgICAgICAgIHJldFsiaW1wbGVtZW50cyJdID0gaW1wLnZhbHVlOwotICAgICAgICAg
ICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI7IikgfHwg
ZXJyb3IoIk5vIHRlcm1pbmF0aW5nIDsgZm9yIGltcGxlbWVudHMgc3RhdGVtZW50Iik7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgIC8vIHJvbGxiYWNrCi0gICAgICAgICAgICAgICAgdG9rZW5zLnVu
c2hpZnQodyk7Ci0gICAgICAgICAgICAgICAgdG9rZW5zLnVuc2hpZnQodGFyZ2V0KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBkZWZpbml0aW9uID0g
ZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICByZXR1cm4gIGNhbGxiYWNrKHN0b3JlKSAg
ICAgICAgICAgICB8fAotICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VfKGZhbHNlLCBzdG9y
ZSkgICAgfHwKLSAgICAgICAgICAgICAgICAgICAgcGFydGlhbChzdG9yZSkgICAgICAgICAgICAg
IHx8Ci0gICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnkoZmFsc2UsIHN0b3JlKSAgICB8fAot
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24oc3RvcmUpICAgICAgICAgICAgfHwKLSAgICAg
ICAgICAgICAgICAgICAgZW51bV8oc3RvcmUpICAgICAgICAgICAgICAgIHx8Ci0gICAgICAgICAg
ICAgICAgICAgIHR5cGVkZWYoc3RvcmUpICAgICAgICAgICAgICB8fAotICAgICAgICAgICAgICAg
ICAgICBpbXBsZW1lbnRzXyhzdG9yZSkKLSAgICAgICAgICAgICAgICAgICAgOwotICAgICAgICB9
OwotICAgICAgICAKLSAgICAgICAgdmFyIGRlZmluaXRpb25zID0gZnVuY3Rpb24gKHN0b3JlKSB7
Ci0gICAgICAgICAgICBpZiAoIXRva2Vucy5sZW5ndGgpIHJldHVybiBbXTsKLSAgICAgICAgICAg
IHZhciBkZWZzID0gW107Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAg
ICAgIHZhciBlYSA9IGV4dGVuZGVkX2F0dHJzKHN0b3JlID8gZGVmcyA6IG51bGwpCi0gICAgICAg
ICAgICAgICAgLCAgIGRlZiA9IGRlZmluaXRpb24oc3RvcmUgPyBkZWZzIDogbnVsbCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFkZWYpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVhLmxlbmd0
aCkgZXJyb3IoIlN0cmF5IGV4dGVuZGVkIGF0dHJpYnV0ZXMiKTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlZi5leHRBdHRy
cyA9IGVhOwotICAgICAgICAgICAgICAgIGRlZnMucHVzaChkZWYpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIGRlZnM7Ci0gICAgICAgIH07Ci0gICAgICAgIHZhciByZXMgPSBk
ZWZpbml0aW9ucyhvcHQud3MpOwotICAgICAgICBpZiAodG9rZW5zLmxlbmd0aCkgZXJyb3IoIlVu
cmVjb2duaXNlZCB0b2tlbnMiKTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9OwotCi0gICAg
dmFyIGluTm9kZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmluZWQiICYmIG1vZHVsZS5leHBv
cnRzCi0gICAgLCAgIG9iaiA9IHsKLSAgICAgICAgICAgIHBhcnNlOiAgZnVuY3Rpb24gKHN0ciwg
b3B0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFvcHQpIG9wdCA9IHt9OwotICAgICAgICAgICAg
ICAgIHZhciB0b2tlbnMgPSB0b2tlbmlzZShzdHIpOwotICAgICAgICAgICAgICAgIHJldHVybiBw
YXJzZSh0b2tlbnMsIG9wdCk7Ci0gICAgICAgICAgICB9Ci0gICAgfTsKLQotICAgIGlmIChpbk5v
ZGUpIG1vZHVsZS5leHBvcnRzID0gb2JqOwotICAgIGVsc2UgICAgICAgIHNlbGYuV2ViSURMMiA9
IG9iajsKLX0oKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvYWNjZXNzaWJp
bGl0eS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxw
ZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyZWVhZDVhOGJiNTljZTI5ZDk0
OWNmZjhjZDkyMmNiMDdiOWQ1Y2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8vIER1bXBzIHRoZSBhY2Nlc3NpYmls
aXR5IHRyZWUgaGllcmFyY2h5IGZvciB0aGUgZ2l2ZW4gYWNjZXNzaWJpbGl0eU9iamVjdCBpbnRv
Ci0vLyBhbiBlbGVtZW50IHdpdGggaWQ9InRyZWUiLCBlLmcuLCA8cHJlIGlkPSJ0cmVlIj48L3By
ZT4uIEluIGFkZGl0aW9uLCBpdAotLy8gcmV0dXJucyBhIHR3byBlbGVtZW50IGFycmF5IHdpdGgg
dGhlIGZpcnN0IGVsZW1lbnQgWzBdIGJlaW5nIGZhbHNlIGlmIHRoZQotLy8gdHJhdmVyc2FsIG9m
IHRoZSB0cmVlIHdhcyBzdG9wcGVkIGF0IHRoZSBzdG9wRWxlbWVudCwgYW5kIHNlY29uZCBlbGVt
ZW50IFsxXSwKLS8vIHRoZSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhY2Nlc3NpYmlsaXR5IHRy
ZWUuCi1mdW5jdGlvbiBkdW1wQWNjZXNzaWJpbGl0eVRyZWUoYWNjZXNzaWJpbGl0eU9iamVjdCwg
c3RvcEVsZW1lbnQsIGluZGVudCwgYWxsQXR0cmlidXRlc0lmTmVlZGVkLCBnZXRWYWx1ZUZyb21U
aXRsZSwgaW5jbHVkZVN1YnJvbGUpIHsKLSAgICB2YXIgc3RyID0gIiI7Ci0gICAgdmFyIGkgPSAw
OwotCi0gICAgZm9yIChpID0gMDsgaSA8IGluZGVudDsgaSsrKQotICAgICAgICBzdHIgKz0gIiAg
ICAiOwotICAgIHN0ciArPSBhY2Nlc3NpYmlsaXR5T2JqZWN0LnJvbGU7Ci0gICAgaWYgKGluY2x1
ZGVTdWJyb2xlID09PSB0cnVlICYmIGFjY2Vzc2liaWxpdHlPYmplY3Quc3Vicm9sZSkKLSAgICAg
ICAgc3RyICs9ICIgIiArIGFjY2Vzc2liaWxpdHlPYmplY3Quc3Vicm9sZTsKLSAgICBzdHIgKz0g
IiAiICsgKGdldFZhbHVlRnJvbVRpdGxlID09PSB0cnVlID8gYWNjZXNzaWJpbGl0eU9iamVjdC50
aXRsZSA6IGFjY2Vzc2liaWxpdHlPYmplY3Quc3RyaW5nVmFsdWUpOwotICAgIHN0ciArPSBhbGxB
dHRyaWJ1dGVzSWZOZWVkZWQgJiYgYWNjZXNzaWJpbGl0eU9iamVjdC5yb2xlID09ICcnID8gYWNj
ZXNzaWJpbGl0eU9iamVjdC5hbGxBdHRyaWJ1dGVzKCkgOiAnJzsKLSAgICBzdHIgKz0gIlxuIjsK
LQotICAgIHZhciBvdXRwdXRUcmVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyZWUiKTsK
LSAgICBpZiAob3V0cHV0VHJlZSkKLSAgICAgICAgb3V0cHV0VHJlZS5pbm5lclRleHQgKz0gc3Ry
OwotCi0gICAgaWYgKHN0b3BFbGVtZW50ICYmIHN0b3BFbGVtZW50LmlzRXF1YWwoYWNjZXNzaWJp
bGl0eU9iamVjdCkpCi0gICAgICAgIHJldHVybiBbZmFsc2UsIHN0cl07Ci0KLSAgICB2YXIgY291
bnQgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0LmNoaWxkcmVuQ291bnQ7Ci0gICAgZm9yIChpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgY2hpbGRSZXQgPSBkdW1wQWNjZXNzaWJpbGl0eVRy
ZWUoYWNjZXNzaWJpbGl0eU9iamVjdC5jaGlsZEF0SW5kZXgoaSksIHN0b3BFbGVtZW50LCBpbmRl
bnQgKyAxLCBhbGxBdHRyaWJ1dGVzSWZOZWVkZWQsIGdldFZhbHVlRnJvbVRpdGxlLCBpbmNsdWRl
U3Vicm9sZSk7Ci0gICAgICAgIGlmICghY2hpbGRSZXRbMF0pCi0gICAgICAgICAgICByZXR1cm4g
W2ZhbHNlLCBzdHJdOwotICAgICAgICBzdHIgKz0gY2hpbGRSZXRbMV07Ci0gICAgfQotCi0gICAg
cmV0dXJuIFt0cnVlLCBzdHJdOwotfQotCi1mdW5jdGlvbiB0b3VjaEFjY2Vzc2liaWxpdHlUcmVl
KGFjY2Vzc2liaWxpdHlPYmplY3QpIHsKLSAgICB2YXIgY291bnQgPSBhY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNoaWxkcmVuQ291bnQ7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7
Ci0gICAgICAgIGlmICghdG91Y2hBY2Nlc3NpYmlsaXR5VHJlZShhY2Nlc3NpYmlsaXR5T2JqZWN0
LmNoaWxkQXRJbmRleChpKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHBsYXRmb3JtVmFsdWVGb3JXM0NOYW1lKGFj
Y2Vzc2liaWxpdHlPYmplY3QsIGluY2x1ZGVTb3VyY2U9ZmFsc2UpIHsKLSAgICB2YXIgcmVzdWx0
OwotICAgIGlmIChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5wbGF0Zm9ybU5hbWUgPT0gImF0ayIp
Ci0gICAgICAgIHJlc3VsdCA9IGFjY2Vzc2liaWxpdHlPYmplY3QudGl0bGUKLSAgICBlbHNlCi0g
ICAgICAgIHJlc3VsdCA9IGFjY2Vzc2liaWxpdHlPYmplY3QuZGVzY3JpcHRpb24KLQotICAgIGlm
ICghaW5jbHVkZVNvdXJjZSkgewotICAgICAgICB2YXIgc3BsaXRSZXN1bHQgPSByZXN1bHQuc3Bs
aXQoIjogIik7Ci0gICAgICAgIHJldHVybiBzcGxpdFJlc3VsdFsxXTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1mdW5jdGlvbiBwbGF0Zm9ybVZhbHVlRm9yVzNDRGVzY3JpcHRp
b24oYWNjZXNzaWJpbGl0eU9iamVjdCwgaW5jbHVkZVNvdXJjZT1mYWxzZSkgewotICAgIHZhciBy
ZXN1bHQ7Ci0gICAgaWYgKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnBsYXRmb3JtTmFtZSA9PSAi
YXRrIikKLSAgICAgICAgcmVzdWx0ID0gYWNjZXNzaWJpbGl0eU9iamVjdC5kZXNjcmlwdGlvbgot
ICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gYWNjZXNzaWJpbGl0eU9iamVjdC5oZWxwVGV4dDsK
LQotICAgIGlmICghaW5jbHVkZVNvdXJjZSkgewotICAgICAgICB2YXIgc3BsaXRSZXN1bHQgPSBy
ZXN1bHQuc3BsaXQoIjogIik7Ci0gICAgICAgIHJldHVybiBzcGxpdFJlc3VsdFsxXTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mdW5jdGlvbiBwbGF0Zm9ybVRleHRBbHRlcm5h
dGl2ZXMoYWNjZXNzaWJpbGl0eU9iamVjdCwgaW5jbHVkZVRpdGxlVUlFbGVtZW50PWZhbHNlKSB7
Ci0gICAgaWYgKCFhY2Nlc3NpYmlsaXR5T2JqZWN0KQotICAgICAgICByZXR1cm4gIkVsZW1lbnQg
bm90IGV4cG9zZWQiOwotCi0gICAgcmVzdWx0ID0gIlx0IiArIGFjY2Vzc2liaWxpdHlPYmplY3Qu
dGl0bGUgKyAiXG5cdCIgKyBhY2Nlc3NpYmlsaXR5T2JqZWN0LmRlc2NyaXB0aW9uOwotICAgIGlm
IChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5wbGF0Zm9ybU5hbWUgPT0gIm1hYyIpCi0gICAgICAg
cmVzdWx0ICs9ICJcblx0IiArIGFjY2Vzc2liaWxpdHlPYmplY3QuaGVscFRleHQ7Ci0gICAgaWYg
KGluY2x1ZGVUaXRsZVVJRWxlbWVudCkKLSAgICAgICAgcmVzdWx0ICs9ICJcblx0QVhUaXRsZVVJ
RWxlbWVudDogIiArIChhY2Nlc3NpYmlsaXR5T2JqZWN0LnRpdGxlVUlFbGVtZW50KCkgPyAibm9u
LW51bGwiIDogIm51bGwiKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mdW5jdGlvbiBwbGF0
Zm9ybVJvbGVGb3JDb21ib0JveCgpIHsKLSAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIucGxhdGZvcm1OYW1lID09ICJhdGsiID8gIkFYUm9sZTogQVhDb21ib0JveCIgOiAiQVhSb2xl
OiBBWFBvcFVwQnV0dG9uIjsKLX0KLQotZnVuY3Rpb24gcGxhdGZvcm1Sb2xlRm9yU3RhdGljVGV4
dCgpIHsKLSAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucGxhdGZvcm1OYW1lID09
ICJhdGsiID8gIkFYUm9sZTogQVhTdGF0aWMiIDogIkFYUm9sZTogQVhTdGF0aWNUZXh0IjsKLX0K
LQotZnVuY3Rpb24gc3Bpbm5lckZvclRleHRJbnB1dChhY2Nlc3NpYmlsaXR5T2JqZWN0KSB7Ci0g
ICAgdmFyIGluZGV4ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucGxhdGZvcm1OYW1lID09ICJh
dGsiID8gMCA6IDE7Ci0gICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlPYmplY3QuY2hpbGRBdEluZGV4
KGluZGV4KTsKLX0KLQotZnVuY3Rpb24gd2FpdEZvcihjb25kaXRpb24pCi17Ci0gICAgcmV0dXJu
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgbGV0IGludGVydmFs
ID0gc2V0SW50ZXJ2YWwoKCkgPT4gewotICAgICAgICAgICAgaWYgKGNvbmRpdGlvbigpKSB7Ci0g
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAgICAgICAgICAgICAg
cmVzb2x2ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9LCAwKTsKLSAgICB9KTsKLX0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9iYXNpYy1nZXN0dXJlcy5qcyBiL0xheW91
dFRlc3RzL3Jlc291cmNlcy9iYXNpYy1nZXN0dXJlcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDNlNWEwY2QxOTdjZjI3YzQwNmViMTBjNDVlODU2ZmM4OThiMmY4NC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9yZXNv
dXJjZXMvYmFzaWMtZ2VzdHVyZXMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyNjggKzAsMCBAQAot
ZnVuY3Rpb24gZGlkU2hvd0tleWJvYXJkKCkKLXsKLSAgICByZXR1cm4gbmV3IFByb21pc2UocmVz
b2x2ZSA9PiB7Ci0gICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAgICAgICAg
KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5kaWRTaG93S2V5Ym9h
cmRDYWxsYmFjayA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xs
ZXIudWlTY3JpcHRDb21wbGV0ZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0p
KCk7YCwgcmVzb2x2ZSk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGRvdWJsZVRhcFRvWm9vbUF0
UG9pbnQoeCwgeSkKLXsKLSAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAg
ICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgIGxldCBjb21wbGV0aW9uQ291bnQgPSAwOwotICAgICAgICAgICAgICAg
IGNvbnN0IGNoZWNrRG9uZSA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCsrY29t
cGxldGlvbkNvdW50ID09IDMpCi0gICAgICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIu
dWlTY3JpcHRDb21wbGV0ZSgpOwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAg
dWlDb250cm9sbGVyLmRpZEVuZFpvb21pbmdDYWxsYmFjayA9IGNoZWNrRG9uZTsKLSAgICAgICAg
ICAgICAgICB1aUNvbnRyb2xsZXIuc2luZ2xlVGFwQXRQb2ludCgke3h9LCAke3l9LCBjaGVja0Rv
bmUpOwotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5zaW5nbGVUYXBBdFBvaW50KCR7eH0s
ICR7eX0sIGNoZWNrRG9uZSk7Ci0gICAgICAgICAgICB9KSgpO2AsIHJlc29sdmUpOwotICAgIH0p
OwotfQotCi1mdW5jdGlvbiBkb3VibGVUYXBBdFBvaW50KHgsIHkpCi17Ci0gICAgcmV0dXJuIG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAK
LSAgICAgICAgICAgIChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIu
ZG91YmxlVGFwQXRQb2ludCgke3h9LCAke3l9LCAwLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKLSAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIH0pKCk7YCwgcmVzb2x2ZSk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0
aW9uIGxvbmdQcmVzc0F0UG9pbnQoeCwgeSkKLXsKLSAgICByZXR1cm4gbmV3IFByb21pc2UocmVz
b2x2ZSA9PiB7Ci0gICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAgICAgICAg
KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5sb25nUHJlc3NBdFBv
aW50KCR7eH0sICR7eX0sIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB1aUNvbnRy
b2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgfSkoKTtgLCByZXNvbHZlKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gbGlmdFVwQXRQb2lu
dCh4LCB5KQotewotICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAg
dGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgCi0gICAgICAgICAgICAoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgdWlDb250cm9sbGVyLmxpZnRVcEF0UG9pbnQoJHt4fSwgJHt5fSwgMSwgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBs
ZXRlKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KSgpO2AsIHJlc29sdmUp
OwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBsb25nUHJlc3NBbmRIb2xkQXRQb2ludCh4LCB5KQot
ewotICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdChgCi0gICAgICAgICAgICAoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgY29uc3QgZXZlbnRTdHJlYW0gPSB7Ci0gICAgICAgICAgICAgICAgICAgIGV2ZW50cyA6IFsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnRlcnBvbGF0ZSA6ICJsaW5lYXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGVwOiAwLjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZVNwYWNlIDog
ImNvbnRlbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RXZlbnQgOiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0VHlwZSA6ICJoYW5kIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZU9mZnNldCA6IDAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRvdWNoZXMgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5w
dXRUeXBlIDogImZpbmdlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGhhc2UgOiAiYmVnYW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlkIDogMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4IDog
JHt4fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5IDogJHt5fSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzc3VyZSA6IDAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW5kRXZlbnQgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlucHV0VHlwZSA6ICJoYW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZU9mZnNldCA6IDIuMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91
Y2hlcyA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFR5cGUgOiAiZmluZ2VyIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaGFzZSA6ICJtb3ZlZCIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgOiAxLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggOiAke3h9LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHkgOiAke3l9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByZXNzdXJlIDogMAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgIHVp
Q29udHJvbGxlci5zZW5kRXZlbnRTdHJlYW0oSlNPTi5zdHJpbmdpZnkoZXZlbnRTdHJlYW0pLCAo
KSA9PiB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpKTsKLSAgICAgICAgICAgIH0pKCk7
YCwgcmVzb2x2ZSk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHRhcEF0UG9pbnQoeCwgeSkKLXsK
LSAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgIHRlc3RSdW5uZXIu
cnVuVUlTY3JpcHQoYAotICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
IHVpQ29udHJvbGxlci5zaW5nbGVUYXBBdFBvaW50KCR7eH0sICR7eX0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSkoKTtgLCByZXNvbHZlKTsKLSAgICB9KTsK
LX0KLQotZnVuY3Rpb24gdG91Y2hBbmREcmFnRnJvbVBvaW50VG9Qb2ludChzdGFydFgsIHN0YXJ0
WSwgZW5kWCwgZW5kWSkKLXsKLSAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0g
ICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAgICAgICAgKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50U3RyZWFtID0gewotICAgICAgICAgICAgICAg
ICAgICBldmVudHMgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50ZXJwb2xhdGUgOiAibGluZWFyIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lc3RlcDogMC4xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
b3JkaW5hdGVTcGFjZSA6ICJjb250ZW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydEV2ZW50IDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFR5cGUg
OiAiaGFuZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVPZmZzZXQgOiAw
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3VjaGVzIDogWwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlucHV0VHlwZSA6ICJmaW5nZXIiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBoYXNlIDogImJlZ2FuIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZCA6IDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeCA6ICR7c3RhcnRYfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB5IDogJHtzdGFydFl9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByZXNzdXJlIDogMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRFdmVudCA6IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRUeXBlIDogImhhbmQiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lT2Zmc2V0IDogMC41LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b3VjaGVzIDogWwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlucHV0VHlwZSA6ICJmaW5nZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBoYXNlIDogIm1vdmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZCA6IDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eCA6ICR7ZW5kWH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA6
ICR7ZW5kWX0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3N1
cmUgOiAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAg
ICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnNlbmRFdmVudFN0cmVh
bShKU09OLnN0cmluZ2lmeShldmVudFN0cmVhbSksICgpID0+IHVpQ29udHJvbGxlci51aVNjcmlw
dENvbXBsZXRlKCkpOwotICAgICAgICAgICAgfSkoKTtgLCByZXNvbHZlKTsKLSAgICB9KTsKLX0K
LQotZnVuY3Rpb24gaG9sZEF0UG9pbnQoeCwgeSkKLXsKLSAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB7Ci0gICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAgICAg
ICAgKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50U3RyZWFtID0gewot
ICAgICAgICAgICAgICAgICAgICBldmVudHMgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwb2xhdGUgOiAibGluZWFyIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RlcDogMC4xLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvb3JkaW5hdGVTcGFjZSA6ICJjb250ZW50IiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGFydEV2ZW50IDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnB1dFR5cGUgOiAiaGFuZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVPZmZzZXQgOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3VjaGVz
IDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0VHlwZSA6ICJmaW5nZXIiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoYXNlIDogIm1vdmVkIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA6IDEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA6ICR7eH0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeSA6ICR7eX0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJlc3N1cmUgOiAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEV2ZW50
IDogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFR5cGUgOiAiaGFuZCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVPZmZzZXQgOiA1LjAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdWNoZXMgOiBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5wdXRUeXBlIDogImZpbmdlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGhhc2UgOiAibW92ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlkIDogMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4IDogJHt4fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5
IDogJHt5fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzc3Vy
ZSA6IDAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAg
ICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc2VuZEV2ZW50U3RyZWFt
KEpTT04uc3RyaW5naWZ5KGV2ZW50U3RyZWFtKSwgKCkgPT4gdWlDb250cm9sbGVyLnVpU2NyaXB0
Q29tcGxldGUoKSk7Ci0gICAgICAgICAgICB9KSgpO2AsIHJlc29sdmUpOwotICAgIH0pOwotfQot
Ci1mdW5jdGlvbiBjb250aW51ZVRvdWNoQW5kRHJhZ0Zyb21Qb2ludFRvUG9pbnQoc3RhcnRYLCBz
dGFydFksIGVuZFgsIGVuZFkpCi17Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
ewotICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAgICAgIChmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBldmVudFN0cmVhbSA9IHsKLSAgICAgICAgICAg
ICAgICAgICAgZXZlbnRzIDogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludGVycG9sYXRlIDogImxpbmVhciIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGltZXN0ZXA6IDAuMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb29yZGluYXRlU3BhY2UgOiAiY29udGVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhcnRFdmVudCA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRU
eXBlIDogImhhbmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lT2Zmc2V0
IDogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hlcyA6IFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnB1dFR5cGUgOiAiZmluZ2VyIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwaGFzZSA6ICJtb3ZlZCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWQgOiAxLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHggOiAke3N0YXJ0WH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeSA6ICR7c3RhcnRZfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmVzc3VyZSA6IDAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kRXZlbnQg
OiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0VHlwZSA6ICJoYW5kIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZU9mZnNldCA6IDAuNSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2hlcyA6IFsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnB1dFR5cGUgOiAiZmluZ2VyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwaGFzZSA6ICJtb3ZlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWQgOiAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHggOiAke2VuZFh9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHkgOiAke2VuZFl9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
ZXNzdXJlIDogMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBdCi0gICAg
ICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5zZW5kRXZlbnRT
dHJlYW0oSlNPTi5zdHJpbmdpZnkoZXZlbnRTdHJlYW0pLCAoKSA9PiB1aUNvbnRyb2xsZXIudWlT
Y3JpcHRDb21wbGV0ZSgpKTsKLSAgICAgICAgICAgIH0pKCk7YCwgcmVzb2x2ZSk7Ci0gICAgfSk7
Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvY2hlY2stbGF5b3V0LXRoLmpz
IGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2NoZWNrLWxheW91dC10aC5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNmVjNzBhMjNlODI4MDM0MTUzNTRkZDM1ODQ0MTE1MmQ5ODIyZmRl
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvY2hlY2stbGF5b3V0LXRoLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjA0
ICswLDAgQEAKLShmdW5jdGlvbigpIHsKLS8vIFRlc3QgaXMgaW5pdGlhdGVkIGZyb20gYm9keS5v
bmxvYWQsIHNvIGV4cGxpY2l0IGRvbmUoKSBjYWxsIGlzIHJlcXVpcmVkLgotc2V0dXAoeyBleHBs
aWNpdF9kb25lOiB0cnVlIH0pOwotCi1mdW5jdGlvbiBjaGVja1N1YnRyZWVFeHBlY3RlZFZhbHVl
cyh0LCBwYXJlbnQsIHByZWZpeCkKLXsKLSAgICB2YXIgY2hlY2tlZExheW91dCA9IGNoZWNrRXhw
ZWN0ZWRWYWx1ZXModCwgcGFyZW50LCBwcmVmaXgpOwotICAgIEFycmF5LnByb3RvdHlwZS5mb3JF
YWNoLmNhbGwocGFyZW50LmNoaWxkTm9kZXMsIGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgY2hl
Y2tlZExheW91dCB8PSBjaGVja1N1YnRyZWVFeHBlY3RlZFZhbHVlcyh0LCBub2RlLCBwcmVmaXgp
OwotICAgIH0pOwotICAgIHJldHVybiBjaGVja2VkTGF5b3V0OwotfQotCi1mdW5jdGlvbiBjaGVj
a0F0dHJpYnV0ZShvdXRwdXQsIG5vZGUsIGF0dHJpYnV0ZSkKLXsKLSAgICB2YXIgcmVzdWx0ID0g
bm9kZS5nZXRBdHRyaWJ1dGUgJiYgbm9kZS5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTsKLSAgICBv
dXRwdXQuY2hlY2tlZCB8PSAhIXJlc3VsdDsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mdW5j
dGlvbiBhc3NlcnRfdG9sZXJhbmNlKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpCi17Ci0gICAg
aWYgKGlzTmFOKGV4cGVjdGVkKSB8fCBNYXRoLmFicyhhY3R1YWwgLSBleHBlY3RlZCkgPj0gMSkg
ewotICAgICAgICBhc3NlcnRfZXF1YWxzKGFjdHVhbCwgTnVtYmVyKGV4cGVjdGVkKSwgbWVzc2Fn
ZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjaGVja0V4cGVjdGVkVmFsdWVzKHQsIG5vZGUsIHBy
ZWZpeCkKLXsKLSAgICB2YXIgb3V0cHV0ID0geyBjaGVja2VkOiBmYWxzZSB9OwotCi0gICAgdmFy
IGV4cGVjdGVkV2lkdGggPSBjaGVja0F0dHJpYnV0ZShvdXRwdXQsIG5vZGUsICJkYXRhLWV4cGVj
dGVkLXdpZHRoIik7Ci0gICAgaWYgKGV4cGVjdGVkV2lkdGgpIHsKLSAgICAgICAgYXNzZXJ0X3Rv
bGVyYW5jZShub2RlLm9mZnNldFdpZHRoLCBleHBlY3RlZFdpZHRoLCBwcmVmaXggKyAid2lkdGgi
KTsKLSAgICB9Ci0KLSAgICB2YXIgZXhwZWN0ZWRIZWlnaHQgPSBjaGVja0F0dHJpYnV0ZShvdXRw
dXQsIG5vZGUsICJkYXRhLWV4cGVjdGVkLWhlaWdodCIpOwotICAgIGlmIChleHBlY3RlZEhlaWdo
dCkgewotICAgICAgICBhc3NlcnRfdG9sZXJhbmNlKG5vZGUub2Zmc2V0SGVpZ2h0LCBleHBlY3Rl
ZEhlaWdodCwgcHJlZml4ICsgImhlaWdodCIpOwotICAgIH0KLQotICAgIHZhciBleHBlY3RlZE9m
ZnNldCA9IGNoZWNrQXR0cmlidXRlKG91dHB1dCwgbm9kZSwgImRhdGEtb2Zmc2V0LXgiKTsKLSAg
ICBpZiAoZXhwZWN0ZWRPZmZzZXQpIHsKLSAgICAgICAgYXNzZXJ0X3RvbGVyYW5jZShub2RlLm9m
ZnNldExlZnQsIGV4cGVjdGVkT2Zmc2V0LCBwcmVmaXggKyAib2Zmc2V0TGVmdCIpOwotICAgIH0K
LQotICAgIHZhciBleHBlY3RlZE9mZnNldCA9IGNoZWNrQXR0cmlidXRlKG91dHB1dCwgbm9kZSwg
ImRhdGEtb2Zmc2V0LXkiKTsKLSAgICBpZiAoZXhwZWN0ZWRPZmZzZXQpIHsKLSAgICAgICAgYXNz
ZXJ0X3RvbGVyYW5jZShub2RlLm9mZnNldFRvcCwgZXhwZWN0ZWRPZmZzZXQsIHByZWZpeCArICJv
ZmZzZXRUb3AiKTsKLSAgICB9Ci0KLSAgICB2YXIgZXhwZWN0ZWRXaWR0aCA9IGNoZWNrQXR0cmli
dXRlKG91dHB1dCwgbm9kZSwgImRhdGEtZXhwZWN0ZWQtY2xpZW50LXdpZHRoIik7Ci0gICAgaWYg
KGV4cGVjdGVkV2lkdGgpIHsKLSAgICAgICAgYXNzZXJ0X3RvbGVyYW5jZShub2RlLmNsaWVudFdp
ZHRoLCBleHBlY3RlZFdpZHRoLCBwcmVmaXggKyAiY2xpZW50V2lkdGgiKTsKLSAgICB9Ci0KLSAg
ICB2YXIgZXhwZWN0ZWRIZWlnaHQgPSBjaGVja0F0dHJpYnV0ZShvdXRwdXQsIG5vZGUsICJkYXRh
LWV4cGVjdGVkLWNsaWVudC1oZWlnaHQiKTsKLSAgICBpZiAoZXhwZWN0ZWRIZWlnaHQpIHsKLSAg
ICAgICAgYXNzZXJ0X3RvbGVyYW5jZShub2RlLmNsaWVudEhlaWdodCwgZXhwZWN0ZWRIZWlnaHQs
IHByZWZpeCArICJjbGllbnRIZWlnaHQiKTsKLSAgICB9Ci0KLSAgICB2YXIgZXhwZWN0ZWRXaWR0
aCA9IGNoZWNrQXR0cmlidXRlKG91dHB1dCwgbm9kZSwgImRhdGEtZXhwZWN0ZWQtc2Nyb2xsLXdp
ZHRoIik7Ci0gICAgaWYgKGV4cGVjdGVkV2lkdGgpIHsKLSAgICAgICAgYXNzZXJ0X3RvbGVyYW5j
ZShub2RlLnNjcm9sbFdpZHRoLCBleHBlY3RlZFdpZHRoLCBwcmVmaXggKyAic2Nyb2xsV2lkdGgi
KTsKLSAgICB9Ci0KLSAgICB2YXIgZXhwZWN0ZWRIZWlnaHQgPSBjaGVja0F0dHJpYnV0ZShvdXRw
dXQsIG5vZGUsICJkYXRhLWV4cGVjdGVkLXNjcm9sbC1oZWlnaHQiKTsKLSAgICBpZiAoZXhwZWN0
ZWRIZWlnaHQpIHsKLSAgICAgICAgYXNzZXJ0X3RvbGVyYW5jZShub2RlLnNjcm9sbEhlaWdodCwg
ZXhwZWN0ZWRIZWlnaHQsIHByZWZpeCArICJzY3JvbGxIZWlnaHQiKTsKLSAgICB9Ci0KLSAgICB2
YXIgZXhwZWN0ZWRXaWR0aCA9IGNoZWNrQXR0cmlidXRlKG91dHB1dCwgbm9kZSwgImRhdGEtZXhw
ZWN0ZWQtYm91bmRpbmctY2xpZW50LXJlY3Qtd2lkdGgiKTsKLSAgICBpZiAoZXhwZWN0ZWRXaWR0
aCkgewotICAgICAgICBhc3NlcnRfdG9sZXJhbmNlKG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkud2lkdGgsIGV4cGVjdGVkV2lkdGgsIHByZWZpeCArICJnZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS53aWR0aCIpOwotICAgIH0KLQotICAgIHZhciBleHBlY3RlZE9mZnNldCA9IGNoZWNrQXR0cmli
dXRlKG91dHB1dCwgbm9kZSwgImRhdGEtdG90YWwteCIpOwotICAgIGlmIChleHBlY3RlZE9mZnNl
dCkgewotICAgICAgICB2YXIgdG90YWxMZWZ0ID0gbm9kZS5jbGllbnRMZWZ0ICsgbm9kZS5vZmZz
ZXRMZWZ0OwotICAgICAgICBhc3NlcnRfdG9sZXJhbmNlKHRvdGFsTGVmdCwgZXhwZWN0ZWRPZmZz
ZXQsIHByZWZpeCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgImNsaWVudExlZnQrb2Zmc2V0
TGVmdCAoIiArIG5vZGUuY2xpZW50TGVmdCArICIgKyAiICsgbm9kZS5vZmZzZXRMZWZ0ICsgIiki
KTsKLSAgICB9Ci0KLSAgICB2YXIgZXhwZWN0ZWRPZmZzZXQgPSBjaGVja0F0dHJpYnV0ZShvdXRw
dXQsIG5vZGUsICJkYXRhLXRvdGFsLXkiKTsKLSAgICBpZiAoZXhwZWN0ZWRPZmZzZXQpIHsKLSAg
ICAgICAgdmFyIHRvdGFsVG9wID0gbm9kZS5jbGllbnRUb3AgKyBub2RlLm9mZnNldFRvcDsKLSAg
ICAgICAgYXNzZXJ0X3RvbGVyYW5jZSh0b3RhbFRvcCwgZXhwZWN0ZWRPZmZzZXQsIHByZWZpeCAr
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgImNsaWVudFRvcCtvZmZzZXRUb3AgKCIgKyBub2Rl
LmNsaWVudFRvcCArICIgKyAiICsgbm9kZS5vZmZzZXRUb3AgKyAiKSIpOwotICAgIH0KLQotICAg
IHZhciBleHBlY3RlZERpc3BsYXkgPSBjaGVja0F0dHJpYnV0ZShvdXRwdXQsIG5vZGUsICJkYXRh
LWV4cGVjdGVkLWRpc3BsYXkiKTsKLSAgICBpZiAoZXhwZWN0ZWREaXNwbGF5KSB7Ci0gICAgICAg
IHZhciBhY3R1YWxEaXNwbGF5ID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5kaXNwbGF5OwotICAg
ICAgICBhc3NlcnRfZXF1YWxzKGFjdHVhbERpc3BsYXksIGV4cGVjdGVkRGlzcGxheSwgcHJlZml4
ICsgImRpc3BsYXkiKTsKLSAgICB9Ci0KLSAgICB2YXIgZXhwZWN0ZWRQYWRkaW5nVG9wID0gY2hl
Y2tBdHRyaWJ1dGUob3V0cHV0LCBub2RlLCAiZGF0YS1leHBlY3RlZC1wYWRkaW5nLXRvcCIpOwot
ICAgIGlmIChleHBlY3RlZFBhZGRpbmdUb3ApIHsKLSAgICAgICAgdmFyIGFjdHVhbFBhZGRpbmdU
b3AgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpLnBhZGRpbmdUb3A7Ci0gICAgICAgIC8vIFRyaW0g
dGhlIHVuaXQgInB4IiBmcm9tIHRoZSBvdXRwdXQuCi0gICAgICAgIGFjdHVhbFBhZGRpbmdUb3Ag
PSBhY3R1YWxQYWRkaW5nVG9wLnNsaWNlKDAsIC0yKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhh
Y3R1YWxQYWRkaW5nVG9wLCBleHBlY3RlZFBhZGRpbmdUb3AsIHByZWZpeCArICJwYWRkaW5nLXRv
cCIpOwotICAgIH0KLQotICAgIHZhciBleHBlY3RlZFBhZGRpbmdCb3R0b20gPSBjaGVja0F0dHJp
YnV0ZShvdXRwdXQsIG5vZGUsICJkYXRhLWV4cGVjdGVkLXBhZGRpbmctYm90dG9tIik7Ci0gICAg
aWYgKGV4cGVjdGVkUGFkZGluZ0JvdHRvbSkgewotICAgICAgICB2YXIgYWN0dWFsUGFkZGluZ0Jv
dHRvbSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSkucGFkZGluZ0JvdHRvbTsKLSAgICAgICAgLy8g
VHJpbSB0aGUgdW5pdCAicHgiIGZyb20gdGhlIG91dHB1dC4KLSAgICAgICAgYWN0dWFsUGFkZGlu
Z0JvdHRvbSA9IGFjdHVhbFBhZGRpbmdCb3R0b20uc2xpY2UoMCwgLTIpOwotICAgICAgICBhc3Nl
cnRfZXF1YWxzKGFjdHVhbFBhZGRpbmdCb3R0b20sIGV4cGVjdGVkUGFkZGluZ0JvdHRvbSwgcHJl
Zml4ICsgInBhZGRpbmctYm90dG9tIik7Ci0gICAgfQotCi0gICAgdmFyIGV4cGVjdGVkUGFkZGlu
Z0xlZnQgPSBjaGVja0F0dHJpYnV0ZShvdXRwdXQsIG5vZGUsICJkYXRhLWV4cGVjdGVkLXBhZGRp
bmctbGVmdCIpOwotICAgIGlmIChleHBlY3RlZFBhZGRpbmdMZWZ0KSB7Ci0gICAgICAgIHZhciBh
Y3R1YWxQYWRkaW5nTGVmdCA9IGdldENvbXB1dGVkU3R5bGUobm9kZSkucGFkZGluZ0xlZnQ7Ci0g
ICAgICAgIC8vIFRyaW0gdGhlIHVuaXQgInB4IiBmcm9tIHRoZSBvdXRwdXQuCi0gICAgICAgIGFj
dHVhbFBhZGRpbmdMZWZ0ID0gYWN0dWFsUGFkZGluZ0xlZnQuc2xpY2UoMCwgLTIpOwotICAgICAg
ICBhc3NlcnRfZXF1YWxzKGFjdHVhbFBhZGRpbmdMZWZ0LCBleHBlY3RlZFBhZGRpbmdMZWZ0LCBw
cmVmaXggKyAicGFkZGluZy1sZWZ0Iik7Ci0gICAgfQotCi0gICAgdmFyIGV4cGVjdGVkUGFkZGlu
Z1JpZ2h0ID0gY2hlY2tBdHRyaWJ1dGUob3V0cHV0LCBub2RlLCAiZGF0YS1leHBlY3RlZC1wYWRk
aW5nLXJpZ2h0Iik7Ci0gICAgaWYgKGV4cGVjdGVkUGFkZGluZ1JpZ2h0KSB7Ci0gICAgICAgIHZh
ciBhY3R1YWxQYWRkaW5nUmlnaHQgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpLnBhZGRpbmdSaWdo
dDsKLSAgICAgICAgLy8gVHJpbSB0aGUgdW5pdCAicHgiIGZyb20gdGhlIG91dHB1dC4KLSAgICAg
ICAgYWN0dWFsUGFkZGluZ1JpZ2h0ID0gYWN0dWFsUGFkZGluZ1JpZ2h0LnNsaWNlKDAsIC0yKTsK
LSAgICAgICAgYXNzZXJ0X2VxdWFscyhhY3R1YWxQYWRkaW5nUmlnaHQsIGV4cGVjdGVkUGFkZGlu
Z1JpZ2h0LCBwcmVmaXggKyAicGFkZGluZy1yaWdodCIpOwotICAgIH0KLQotICAgIHZhciBleHBl
Y3RlZE1hcmdpblRvcCA9IGNoZWNrQXR0cmlidXRlKG91dHB1dCwgbm9kZSwgImRhdGEtZXhwZWN0
ZWQtbWFyZ2luLXRvcCIpOwotICAgIGlmIChleHBlY3RlZE1hcmdpblRvcCkgewotICAgICAgICB2
YXIgYWN0dWFsTWFyZ2luVG9wID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5tYXJnaW5Ub3A7Ci0g
ICAgICAgIC8vIFRyaW0gdGhlIHVuaXQgInB4IiBmcm9tIHRoZSBvdXRwdXQuCi0gICAgICAgIGFj
dHVhbE1hcmdpblRvcCA9IGFjdHVhbE1hcmdpblRvcC5zbGljZSgwLCAtMik7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHMoYWN0dWFsTWFyZ2luVG9wLCBleHBlY3RlZE1hcmdpblRvcCwgcHJlZml4ICsg
Im1hcmdpbi10b3AiKTsKLSAgICB9Ci0KLSAgICB2YXIgZXhwZWN0ZWRNYXJnaW5Cb3R0b20gPSBj
aGVja0F0dHJpYnV0ZShvdXRwdXQsIG5vZGUsICJkYXRhLWV4cGVjdGVkLW1hcmdpbi1ib3R0b20i
KTsKLSAgICBpZiAoZXhwZWN0ZWRNYXJnaW5Cb3R0b20pIHsKLSAgICAgICAgdmFyIGFjdHVhbE1h
cmdpbkJvdHRvbSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSkubWFyZ2luQm90dG9tOwotICAgICAg
ICAvLyBUcmltIHRoZSB1bml0ICJweCIgZnJvbSB0aGUgb3V0cHV0LgotICAgICAgICBhY3R1YWxN
YXJnaW5Cb3R0b20gPSBhY3R1YWxNYXJnaW5Cb3R0b20uc2xpY2UoMCwgLTIpOwotICAgICAgICBh
c3NlcnRfZXF1YWxzKGFjdHVhbE1hcmdpbkJvdHRvbSwgZXhwZWN0ZWRNYXJnaW5Cb3R0b20sIHBy
ZWZpeCArICJtYXJnaW4tYm90dG9tIik7Ci0gICAgfQotCi0gICAgdmFyIGV4cGVjdGVkTWFyZ2lu
TGVmdCA9IGNoZWNrQXR0cmlidXRlKG91dHB1dCwgbm9kZSwgImRhdGEtZXhwZWN0ZWQtbWFyZ2lu
LWxlZnQiKTsKLSAgICBpZiAoZXhwZWN0ZWRNYXJnaW5MZWZ0KSB7Ci0gICAgICAgIHZhciBhY3R1
YWxNYXJnaW5MZWZ0ID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5tYXJnaW5MZWZ0OwotICAgICAg
ICAvLyBUcmltIHRoZSB1bml0ICJweCIgZnJvbSB0aGUgb3V0cHV0LgotICAgICAgICBhY3R1YWxN
YXJnaW5MZWZ0ID0gYWN0dWFsTWFyZ2luTGVmdC5zbGljZSgwLCAtMik7Ci0gICAgICAgIGFzc2Vy
dF9lcXVhbHMoYWN0dWFsTWFyZ2luTGVmdCwgZXhwZWN0ZWRNYXJnaW5MZWZ0LCBwcmVmaXggKyAi
bWFyZ2luLWxlZnQiKTsKLSAgICB9Ci0KLSAgICB2YXIgZXhwZWN0ZWRNYXJnaW5SaWdodCA9IGNo
ZWNrQXR0cmlidXRlKG91dHB1dCwgbm9kZSwgImRhdGEtZXhwZWN0ZWQtbWFyZ2luLXJpZ2h0Iik7
Ci0gICAgaWYgKGV4cGVjdGVkTWFyZ2luUmlnaHQpIHsKLSAgICAgICAgdmFyIGFjdHVhbE1hcmdp
blJpZ2h0ID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5tYXJnaW5SaWdodDsKLSAgICAgICAgLy8g
VHJpbSB0aGUgdW5pdCAicHgiIGZyb20gdGhlIG91dHB1dC4KLSAgICAgICAgYWN0dWFsTWFyZ2lu
UmlnaHQgPSBhY3R1YWxNYXJnaW5SaWdodC5zbGljZSgwLCAtMik7Ci0gICAgICAgIGFzc2VydF9l
cXVhbHMoYWN0dWFsTWFyZ2luUmlnaHQsIGV4cGVjdGVkTWFyZ2luUmlnaHQsIHByZWZpeCArICJt
YXJnaW4tcmlnaHQiKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gb3V0cHV0LmNoZWNrZWQ7Ci19Ci0K
LWxldCB0ZXN0TnVtYmVycyA9IG5ldyBNYXAoKTsKLQotd2luZG93LmNoZWNrTGF5b3V0ID0gZnVu
Y3Rpb24oc2VsZWN0b3JMaXN0LCBvdXRwdXRDb250YWluZXIpCi17Ci0gICAgaWYgKCFzZWxlY3Rv
ckxpc3QpIHsKLSAgICAgICAgY29uc29sZS5lcnJvcigiWW91IG11c3QgcHJvdmlkZSBhIENTUyBz
ZWxlY3RvciBvZiBub2RlcyB0byBjaGVjay4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICB2YXIgbm9kZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yTGlzdCk7Ci0K
LSAgICBsZXQgdGVzdE51bWJlciA9IDA7Ci0gICAgaWYgKHRlc3ROdW1iZXJzLmhhcygiIiArIHNl
bGVjdG9yTGlzdCkpCi0gICAgICAgIHRlc3ROdW1iZXIgPSB0ZXN0TnVtYmVycy5nZXQoIiIgKyBz
ZWxlY3Rvckxpc3QpOwotCi0gICAgbm9kZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChu
b2Rlcyk7Ci0gICAgbm9kZXMucmV2ZXJzZSgpOwotICAgIHZhciBjaGVja2VkTGF5b3V0ID0gZmFs
c2U7Ci0gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChub2RlcywgZnVuY3Rpb24obm9k
ZSkgewotICAgICAgICB0ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgIHZhciBjb250YWlu
ZXIgPSBub2RlLnBhcmVudE5vZGUuY2xhc3NOYW1lID09ICdjb250YWluZXInID8gbm9kZS5wYXJl
bnROb2RlIDogbm9kZTsKLSAgICAgICAgICAgIHZhciBwcmVmaXggPSAiXG4iICsgY29udGFpbmVy
Lm91dGVySFRNTCArICJcbiI7Ci0gICAgICAgICAgICB2YXIgcGFzc2VkID0gZmFsc2U7Ci0gICAg
ICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGNoZWNrZWRMYXlvdXQgfD0gY2hlY2tFeHBl
Y3RlZFZhbHVlcyh0LCBub2RlLnBhcmVudE5vZGUsIHByZWZpeCk7Ci0gICAgICAgICAgICAgICAg
Y2hlY2tlZExheW91dCB8PSBjaGVja1N1YnRyZWVFeHBlY3RlZFZhbHVlcyh0LCBub2RlLCBwcmVm
aXgpOwotICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7Ci0gICAgICAgICAgICB9IGZpbmFs
bHkgewotICAgICAgICAgICAgICAgIGNoZWNrZWRMYXlvdXQgfD0gIXBhc3NlZDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSwgc2VsZWN0b3JMaXN0ICsgJyAnICsgU3RyaW5nKCsrdGVzdE51bWJl
cikpOwotICAgIH0pOwotICAgIGlmICghY2hlY2tlZExheW91dCkgewotICAgICAgICBjb25zb2xl
LmVycm9yKCJObyB2YWxpZCBkYXRhLSogYXR0cmlidXRlcyBmb3VuZCBpbiBzZWxlY3RvciBsaXN0
IDogIiArIHNlbGVjdG9yTGlzdCk7Ci0gICAgfQotCi0gICAgdGVzdE51bWJlcnMuc2V0KCIiICsg
c2VsZWN0b3JMaXN0LCB0ZXN0TnVtYmVyKTsKLQotICAgIGRvbmUoKTsKLX07Ci0KLX0pKCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvY2hlY2stbGF5b3V0LmpzIGIvTGF5b3V0
VGVzdHMvcmVzb3VyY2VzL2NoZWNrLWxheW91dC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTY4NzNmOGFmMjZlMzY0Yjk5MTFlMjkxNWQ3NDBmNDkzNzgzMTE2OS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJj
ZXMvY2hlY2stbGF5b3V0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjE2ICswLDAgQEAKLWlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQotKGZ1bmN0
aW9uKCkgewotCi1mdW5jdGlvbiBpbnNlcnRBZnRlcihub2RlVG9BZGQsIHJlZmVyZW5jZU5vZGUp
Ci17Ci0gICAgaWYgKHJlZmVyZW5jZU5vZGUgPT0gZG9jdW1lbnQuYm9keSkgewotICAgICAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vZGVUb0FkZCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAocmVmZXJlbmNlTm9kZS5uZXh0U2libGluZykKLSAgICAgICAgcmVmZXJl
bmNlTm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlVG9BZGQsIHJlZmVyZW5jZU5vZGUu
bmV4dFNpYmxpbmcpOwotICAgIGVsc2UKLSAgICAgICAgcmVmZXJlbmNlTm9kZS5wYXJlbnROb2Rl
LmFwcGVuZENoaWxkKG5vZGVUb0FkZCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrU3VidHJlZUV4cGVj
dGVkVmFsdWVzKHBhcmVudCwgZmFpbHVyZXMpCi17Ci0gICAgdmFyIGNoZWNrZWRMYXlvdXQgPSBj
aGVja0V4cGVjdGVkVmFsdWVzKHBhcmVudCwgZmFpbHVyZXMpOwotICAgIEFycmF5LnByb3RvdHlw
ZS5mb3JFYWNoLmNhbGwocGFyZW50LmNoaWxkTm9kZXMsIGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAg
ICAgY2hlY2tlZExheW91dCB8PSBjaGVja1N1YnRyZWVFeHBlY3RlZFZhbHVlcyhub2RlLCBmYWls
dXJlcyk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNoZWNrZWRMYXlvdXQ7Ci19Ci0KLWZ1bmN0aW9u
IGNoZWNrQXR0cmlidXRlKG91dHB1dCwgbm9kZSwgYXR0cmlidXRlKQotewotICAgIHZhciByZXN1
bHQgPSBub2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwot
ICAgIG91dHB1dC5jaGVja2VkIHw9ICEhcmVzdWx0OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LWZ1bmN0aW9uIGNoZWNrRXhwZWN0ZWRWYWx1ZXMobm9kZSwgZmFpbHVyZXMpCi17Ci0gICAgdmFy
IG91dHB1dCA9IHsgY2hlY2tlZDogZmFsc2UgfTsKLSAgICB2YXIgZXhwZWN0ZWRXaWR0aCA9IGNo
ZWNrQXR0cmlidXRlKG91dHB1dCwgbm9kZSwgImRhdGEtZXhwZWN0ZWQtd2lkdGgiKTsKLSAgICBp
ZiAoZXhwZWN0ZWRXaWR0aCkgewotICAgICAgICBpZiAoTWF0aC5yb3VuZChub2RlLm9mZnNldFdp
ZHRoKSAhPSBwYXJzZUludChleHBlY3RlZFdpZHRoKSkKLSAgICAgICAgICAgIGZhaWx1cmVzLnB1
c2goIkV4cGVjdGVkICIgKyBleHBlY3RlZFdpZHRoICsgIiBmb3Igd2lkdGgsIGJ1dCBnb3QgIiAr
IG5vZGUub2Zmc2V0V2lkdGggKyAiLiAiKTsKLSAgICB9Ci0KLSAgICB2YXIgZXhwZWN0ZWRIZWln
aHQgPSBjaGVja0F0dHJpYnV0ZShvdXRwdXQsIG5vZGUsICJkYXRhLWV4cGVjdGVkLWhlaWdodCIp
OwotICAgIGlmIChleHBlY3RlZEhlaWdodCkgewotICAgICAgICBpZiAoTWF0aC5yb3VuZChub2Rl
Lm9mZnNldEhlaWdodCkgIT0gcGFyc2VJbnQoZXhwZWN0ZWRIZWlnaHQpKQotICAgICAgICAgICAg
ZmFpbHVyZXMucHVzaCgiRXhwZWN0ZWQgIiArIGV4cGVjdGVkSGVpZ2h0ICsgIiBmb3IgaGVpZ2h0
LCBidXQgZ290ICIgKyBub2RlLm9mZnNldEhlaWdodCArICIuICIpOwotICAgIH0KLQotICAgIHZh
ciBleHBlY3RlZE9mZnNldCA9IGNoZWNrQXR0cmlidXRlKG91dHB1dCwgbm9kZSwgImRhdGEtb2Zm
c2V0LXgiKTsKLSAgICBpZiAoZXhwZWN0ZWRPZmZzZXQpIHsKLSAgICAgICAgaWYgKE1hdGgucm91
bmQobm9kZS5vZmZzZXRMZWZ0KSAhPSBwYXJzZUludChleHBlY3RlZE9mZnNldCkpCi0gICAgICAg
ICAgICBmYWlsdXJlcy5wdXNoKCJFeHBlY3RlZCAiICsgZXhwZWN0ZWRPZmZzZXQgKyAiIGZvciBv
ZmZzZXRMZWZ0LCBidXQgZ290ICIgKyBub2RlLm9mZnNldExlZnQgKyAiLiAiKTsKLSAgICB9Ci0K
LSAgICB2YXIgZXhwZWN0ZWRPZmZzZXQgPSBjaGVja0F0dHJpYnV0ZShvdXRwdXQsIG5vZGUsICJk
YXRhLW9mZnNldC15Iik7Ci0gICAgaWYgKGV4cGVjdGVkT2Zmc2V0KSB7Ci0gICAgICAgIGlmIChN
YXRoLnJvdW5kKG5vZGUub2Zmc2V0VG9wKSAhPSBwYXJzZUludChleHBlY3RlZE9mZnNldCkpCi0g
ICAgICAgICAgICBmYWlsdXJlcy5wdXNoKCJFeHBlY3RlZCAiICsgZXhwZWN0ZWRPZmZzZXQgKyAi
IGZvciBvZmZzZXRUb3AsIGJ1dCBnb3QgIiArIG5vZGUub2Zmc2V0VG9wICsgIi4gIik7Ci0gICAg
fQotCi0gICAgdmFyIGV4cGVjdGVkV2lkdGggPSBjaGVja0F0dHJpYnV0ZShvdXRwdXQsIG5vZGUs
ICJkYXRhLWV4cGVjdGVkLWNsaWVudC13aWR0aCIpOwotICAgIGlmIChleHBlY3RlZFdpZHRoKSB7
Ci0gICAgICAgIGlmIChNYXRoLnJvdW5kKG5vZGUuY2xpZW50V2lkdGgpICE9IHBhcnNlSW50KGV4
cGVjdGVkV2lkdGgpKQotICAgICAgICAgICAgZmFpbHVyZXMucHVzaCgiRXhwZWN0ZWQgIiArIGV4
cGVjdGVkV2lkdGggKyAiIGZvciBjbGllbnRXaWR0aCwgYnV0IGdvdCAiICsgbm9kZS5jbGllbnRX
aWR0aCArICIuICIpOwotICAgIH0KLQotICAgIHZhciBleHBlY3RlZEhlaWdodCA9IGNoZWNrQXR0
cmlidXRlKG91dHB1dCwgbm9kZSwgImRhdGEtZXhwZWN0ZWQtY2xpZW50LWhlaWdodCIpOwotICAg
IGlmIChleHBlY3RlZEhlaWdodCkgewotICAgICAgICBpZiAoTWF0aC5yb3VuZChub2RlLmNsaWVu
dEhlaWdodCkgIT0gcGFyc2VJbnQoZXhwZWN0ZWRIZWlnaHQpKQotICAgICAgICAgICAgZmFpbHVy
ZXMucHVzaCgiRXhwZWN0ZWQgIiArIGV4cGVjdGVkSGVpZ2h0ICsgIiBmb3IgY2xpZW50SGVpZ2h0
LCBidXQgZ290ICIgKyBub2RlLmNsaWVudEhlaWdodCArICIuICIpOwotICAgIH0KLQotICAgIHZh
ciBleHBlY3RlZFdpZHRoID0gY2hlY2tBdHRyaWJ1dGUob3V0cHV0LCBub2RlLCAiZGF0YS1leHBl
Y3RlZC1zY3JvbGwtd2lkdGgiKTsKLSAgICBpZiAoZXhwZWN0ZWRXaWR0aCkgewotICAgICAgICBp
ZiAoTWF0aC5yb3VuZChub2RlLnNjcm9sbFdpZHRoKSAhPSBwYXJzZUludChleHBlY3RlZFdpZHRo
KSkKLSAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goIkV4cGVjdGVkICIgKyBleHBlY3RlZFdpZHRo
ICsgIiBmb3Igc2Nyb2xsV2lkdGgsIGJ1dCBnb3QgIiArIG5vZGUuc2Nyb2xsV2lkdGggKyAiLiAi
KTsKLSAgICB9Ci0KLSAgICB2YXIgZXhwZWN0ZWRIZWlnaHQgPSBjaGVja0F0dHJpYnV0ZShvdXRw
dXQsIG5vZGUsICJkYXRhLWV4cGVjdGVkLXNjcm9sbC1oZWlnaHQiKTsKLSAgICBpZiAoZXhwZWN0
ZWRIZWlnaHQpIHsKLSAgICAgICAgaWYgKE1hdGgucm91bmQobm9kZS5zY3JvbGxIZWlnaHQpICE9
IHBhcnNlSW50KGV4cGVjdGVkSGVpZ2h0KSkKLSAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goIkV4
cGVjdGVkICIgKyBleHBlY3RlZEhlaWdodCArICIgZm9yIHNjcm9sbEhlaWdodCwgYnV0IGdvdCAi
ICsgbm9kZS5zY3JvbGxIZWlnaHQgKyAiLiAiKTsKLSAgICB9Ci0KLSAgICB2YXIgZXhwZWN0ZWRP
ZmZzZXQgPSBjaGVja0F0dHJpYnV0ZShvdXRwdXQsIG5vZGUsICJkYXRhLXRvdGFsLXgiKTsKLSAg
ICBpZiAoZXhwZWN0ZWRPZmZzZXQpIHsKLSAgICAgICAgdmFyIHRvdGFsTGVmdCA9IG5vZGUuY2xp
ZW50TGVmdCArIG5vZGUub2Zmc2V0TGVmdDsKLSAgICAgICAgaWYgKE1hdGgucm91bmQodG90YWxM
ZWZ0KSAhPSBwYXJzZUludChleHBlY3RlZE9mZnNldCkpCi0gICAgICAgICAgICBmYWlsdXJlcy5w
dXNoKCJFeHBlY3RlZCAiICsgZXhwZWN0ZWRPZmZzZXQgKyAiIGZvciBjbGllbnRMZWZ0K29mZnNl
dExlZnQsIGJ1dCBnb3QgIiArIHRvdGFsTGVmdCArICIsIGNsaWVudExlZnQ6ICIgKyBub2RlLmNs
aWVudExlZnQgKyAiLCBvZmZzZXRMZWZ0OiAiICsgbm9kZS5vZmZzZXRMZWZ0ICsgIi4gIik7Ci0g
ICAgfQotCi0gICAgdmFyIGV4cGVjdGVkT2Zmc2V0ID0gY2hlY2tBdHRyaWJ1dGUob3V0cHV0LCBu
b2RlLCAiZGF0YS10b3RhbC15Iik7Ci0gICAgaWYgKGV4cGVjdGVkT2Zmc2V0KSB7Ci0gICAgICAg
IHZhciB0b3RhbFRvcCA9IG5vZGUuY2xpZW50VG9wICsgbm9kZS5vZmZzZXRUb3A7Ci0gICAgICAg
IGlmIChNYXRoLnJvdW5kKHRvdGFsVG9wKSAhPSBwYXJzZUludChleHBlY3RlZE9mZnNldCkpCi0g
ICAgICAgICAgICBmYWlsdXJlcy5wdXNoKCJFeHBlY3RlZCAiICsgZXhwZWN0ZWRPZmZzZXQgKyAi
IGZvciBjbGllbnRUb3Arb2Zmc2V0VG9wLCBidXQgZ290ICIgKyB0b3RhbFRvcCArICIsIGNsaWVu
dFRvcDogIiArIG5vZGUuY2xpZW50VG9wICsgIiwgKyBvZmZzZXRUb3A6ICIgKyBub2RlLm9mZnNl
dFRvcCArICIuICIpOwotICAgIH0KLQotICAgIHZhciBleHBlY3RlZERpc3BsYXkgPSBjaGVja0F0
dHJpYnV0ZShvdXRwdXQsIG5vZGUsICJkYXRhLWV4cGVjdGVkLWRpc3BsYXkiKTsKLSAgICBpZiAo
ZXhwZWN0ZWREaXNwbGF5KSB7Ci0gICAgICAgIHZhciBhY3R1YWxEaXNwbGF5ID0gZ2V0Q29tcHV0
ZWRTdHlsZShub2RlKS5kaXNwbGF5OwotICAgICAgICBpZiAoYWN0dWFsRGlzcGxheSAhPSBleHBl
Y3RlZERpc3BsYXkpCi0gICAgICAgICAgICBmYWlsdXJlcy5wdXNoKCJFeHBlY3RlZCAiICsgZXhw
ZWN0ZWREaXNwbGF5ICsgIiBmb3IgZGlzcGxheSwgYnV0IGdvdCAiICsgYWN0dWFsRGlzcGxheSAr
ICIuICIpOwotICAgIH0KLQotICAgIHZhciBleHBlY3RlZFBhZGRpbmdUb3AgPSBjaGVja0F0dHJp
YnV0ZShvdXRwdXQsIG5vZGUsICJkYXRhLWV4cGVjdGVkLXBhZGRpbmctdG9wIik7Ci0gICAgaWYg
KGV4cGVjdGVkUGFkZGluZ1RvcCkgewotICAgICAgICB2YXIgYWN0dWFsUGFkZGluZ1RvcCA9IGdl
dENvbXB1dGVkU3R5bGUobm9kZSkucGFkZGluZ1RvcDsKLSAgICAgICAgLy8gVHJpbSB0aGUgdW5p
dCAicHgiIGZyb20gdGhlIG91dHB1dC4KLSAgICAgICAgYWN0dWFsUGFkZGluZ1RvcCA9IGFjdHVh
bFBhZGRpbmdUb3Auc3Vic3RyaW5nKDAsIGFjdHVhbFBhZGRpbmdUb3AubGVuZ3RoIC0gMik7Ci0g
ICAgICAgIGlmIChhY3R1YWxQYWRkaW5nVG9wICE9IGV4cGVjdGVkUGFkZGluZ1RvcCkKLSAgICAg
ICAgICAgIGZhaWx1cmVzLnB1c2goIkV4cGVjdGVkICIgKyBleHBlY3RlZFBhZGRpbmdUb3AgKyAi
IGZvciBwYWRkaW5nLXRvcCwgYnV0IGdvdCAiICsgYWN0dWFsUGFkZGluZ1RvcCArICIuICIpOwot
ICAgIH0KLQotICAgIHZhciBleHBlY3RlZFBhZGRpbmdCb3R0b20gPSBjaGVja0F0dHJpYnV0ZShv
dXRwdXQsIG5vZGUsICJkYXRhLWV4cGVjdGVkLXBhZGRpbmctYm90dG9tIik7Ci0gICAgaWYgKGV4
cGVjdGVkUGFkZGluZ0JvdHRvbSkgewotICAgICAgICB2YXIgYWN0dWFsUGFkZGluZ0JvdHRvbSA9
IGdldENvbXB1dGVkU3R5bGUobm9kZSkucGFkZGluZ0JvdHRvbTsKLSAgICAgICAgLy8gVHJpbSB0
aGUgdW5pdCAicHgiIGZyb20gdGhlIG91dHB1dC4KLSAgICAgICAgYWN0dWFsUGFkZGluZ0JvdHRv
bSA9IGFjdHVhbFBhZGRpbmdCb3R0b20uc3Vic3RyaW5nKDAsIGFjdHVhbFBhZGRpbmdCb3R0b20u
bGVuZ3RoIC0gMik7Ci0gICAgICAgIGlmIChhY3R1YWxQYWRkaW5nQm90dG9tICE9IGV4cGVjdGVk
UGFkZGluZ0JvdHRvbSkKLSAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goIkV4cGVjdGVkICIgKyBl
eHBlY3RlZFBhZGRpbmdCb3R0b20gKyAiIGZvciBwYWRkaW5nLWJvdHRvbSwgYnV0IGdvdCAiICsg
YWN0dWFsUGFkZGluZ0JvdHRvbSArICIuICIpOwotICAgIH0KLQotICAgIHZhciBleHBlY3RlZFBh
ZGRpbmdMZWZ0ID0gY2hlY2tBdHRyaWJ1dGUob3V0cHV0LCBub2RlLCAiZGF0YS1leHBlY3RlZC1w
YWRkaW5nLWxlZnQiKTsKLSAgICBpZiAoZXhwZWN0ZWRQYWRkaW5nTGVmdCkgewotICAgICAgICB2
YXIgYWN0dWFsUGFkZGluZ0xlZnQgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpLnBhZGRpbmdMZWZ0
OwotICAgICAgICAvLyBUcmltIHRoZSB1bml0ICJweCIgZnJvbSB0aGUgb3V0cHV0LgotICAgICAg
ICBhY3R1YWxQYWRkaW5nTGVmdCA9IGFjdHVhbFBhZGRpbmdMZWZ0LnN1YnN0cmluZygwLCBhY3R1
YWxQYWRkaW5nTGVmdC5sZW5ndGggLSAyKTsKLSAgICAgICAgaWYgKGFjdHVhbFBhZGRpbmdMZWZ0
ICE9IGV4cGVjdGVkUGFkZGluZ0xlZnQpCi0gICAgICAgICAgICBmYWlsdXJlcy5wdXNoKCJFeHBl
Y3RlZCAiICsgZXhwZWN0ZWRQYWRkaW5nTGVmdCArICIgZm9yIHBhZGRpbmctbGVmdCwgYnV0IGdv
dCAiICsgYWN0dWFsUGFkZGluZ0xlZnQgKyAiLiAiKTsKLSAgICB9Ci0KLSAgICB2YXIgZXhwZWN0
ZWRQYWRkaW5nUmlnaHQgPSBjaGVja0F0dHJpYnV0ZShvdXRwdXQsIG5vZGUsICJkYXRhLWV4cGVj
dGVkLXBhZGRpbmctcmlnaHQiKTsKLSAgICBpZiAoZXhwZWN0ZWRQYWRkaW5nUmlnaHQpIHsKLSAg
ICAgICAgdmFyIGFjdHVhbFBhZGRpbmdSaWdodCA9IGdldENvbXB1dGVkU3R5bGUobm9kZSkucGFk
ZGluZ1JpZ2h0OwotICAgICAgICAvLyBUcmltIHRoZSB1bml0ICJweCIgZnJvbSB0aGUgb3V0cHV0
LgotICAgICAgICBhY3R1YWxQYWRkaW5nUmlnaHQgPSBhY3R1YWxQYWRkaW5nUmlnaHQuc3Vic3Ry
aW5nKDAsIGFjdHVhbFBhZGRpbmdSaWdodC5sZW5ndGggLSAyKTsKLSAgICAgICAgaWYgKGFjdHVh
bFBhZGRpbmdSaWdodCAhPSBleHBlY3RlZFBhZGRpbmdSaWdodCkKLSAgICAgICAgICAgIGZhaWx1
cmVzLnB1c2goIkV4cGVjdGVkICIgKyBleHBlY3RlZFBhZGRpbmdSaWdodCArICIgZm9yIHBhZGRp
bmctcmlnaHQsIGJ1dCBnb3QgIiArIGFjdHVhbFBhZGRpbmdSaWdodCArICIuICIpOwotICAgIH0K
LQotICAgIHZhciBleHBlY3RlZE1hcmdpblRvcCA9IGNoZWNrQXR0cmlidXRlKG91dHB1dCwgbm9k
ZSwgImRhdGEtZXhwZWN0ZWQtbWFyZ2luLXRvcCIpOwotICAgIGlmIChleHBlY3RlZE1hcmdpblRv
cCkgewotICAgICAgICB2YXIgYWN0dWFsTWFyZ2luVG9wID0gZ2V0Q29tcHV0ZWRTdHlsZShub2Rl
KS5tYXJnaW5Ub3A7Ci0gICAgICAgIC8vIFRyaW0gdGhlIHVuaXQgInB4IiBmcm9tIHRoZSBvdXRw
dXQuCi0gICAgICAgIGFjdHVhbE1hcmdpblRvcCA9IGFjdHVhbE1hcmdpblRvcC5zdWJzdHJpbmco
MCwgYWN0dWFsTWFyZ2luVG9wLmxlbmd0aCAtIDIpOwotICAgICAgICBpZiAoYWN0dWFsTWFyZ2lu
VG9wICE9IGV4cGVjdGVkTWFyZ2luVG9wKQotICAgICAgICAgICAgZmFpbHVyZXMucHVzaCgiRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkTWFyZ2luVG9wICsgIiBmb3IgbWFyZ2luLXRvcCwgYnV0IGdvdCAi
ICsgYWN0dWFsTWFyZ2luVG9wICsgIi4gIik7Ci0gICAgfQotCi0gICAgdmFyIGV4cGVjdGVkTWFy
Z2luQm90dG9tID0gY2hlY2tBdHRyaWJ1dGUob3V0cHV0LCBub2RlLCAiZGF0YS1leHBlY3RlZC1t
YXJnaW4tYm90dG9tIik7Ci0gICAgaWYgKGV4cGVjdGVkTWFyZ2luQm90dG9tKSB7Ci0gICAgICAg
IHZhciBhY3R1YWxNYXJnaW5Cb3R0b20gPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpLm1hcmdpbkJv
dHRvbTsKLSAgICAgICAgLy8gVHJpbSB0aGUgdW5pdCAicHgiIGZyb20gdGhlIG91dHB1dC4KLSAg
ICAgICAgYWN0dWFsTWFyZ2luQm90dG9tID0gYWN0dWFsTWFyZ2luQm90dG9tLnN1YnN0cmluZygw
LCBhY3R1YWxNYXJnaW5Cb3R0b20ubGVuZ3RoIC0gMik7Ci0gICAgICAgIGlmIChhY3R1YWxNYXJn
aW5Cb3R0b20gIT0gZXhwZWN0ZWRNYXJnaW5Cb3R0b20pCi0gICAgICAgICAgICBmYWlsdXJlcy5w
dXNoKCJFeHBlY3RlZCAiICsgZXhwZWN0ZWRNYXJnaW5Cb3R0b20gKyAiIGZvciBtYXJnaW4tYm90
dG9tLCBidXQgZ290ICIgKyBhY3R1YWxNYXJnaW5Cb3R0b20gKyAiLiAiKTsKLSAgICB9Ci0KLSAg
ICB2YXIgZXhwZWN0ZWRNYXJnaW5MZWZ0ID0gY2hlY2tBdHRyaWJ1dGUob3V0cHV0LCBub2RlLCAi
ZGF0YS1leHBlY3RlZC1tYXJnaW4tbGVmdCIpOwotICAgIGlmIChleHBlY3RlZE1hcmdpbkxlZnQp
IHsKLSAgICAgICAgdmFyIGFjdHVhbE1hcmdpbkxlZnQgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUp
Lm1hcmdpbkxlZnQ7Ci0gICAgICAgIC8vIFRyaW0gdGhlIHVuaXQgInB4IiBmcm9tIHRoZSBvdXRw
dXQuCi0gICAgICAgIGFjdHVhbE1hcmdpbkxlZnQgPSBhY3R1YWxNYXJnaW5MZWZ0LnN1YnN0cmlu
ZygwLCBhY3R1YWxNYXJnaW5MZWZ0Lmxlbmd0aCAtIDIpOwotICAgICAgICBpZiAoYWN0dWFsTWFy
Z2luTGVmdCAhPSBleHBlY3RlZE1hcmdpbkxlZnQpCi0gICAgICAgICAgICBmYWlsdXJlcy5wdXNo
KCJFeHBlY3RlZCAiICsgZXhwZWN0ZWRNYXJnaW5MZWZ0ICsgIiBmb3IgbWFyZ2luLWxlZnQsIGJ1
dCBnb3QgIiArIGFjdHVhbE1hcmdpbkxlZnQgKyAiLiAiKTsKLSAgICB9Ci0KLSAgICB2YXIgZXhw
ZWN0ZWRNYXJnaW5SaWdodCA9IGNoZWNrQXR0cmlidXRlKG91dHB1dCwgbm9kZSwgImRhdGEtZXhw
ZWN0ZWQtbWFyZ2luLXJpZ2h0Iik7Ci0gICAgaWYgKGV4cGVjdGVkTWFyZ2luUmlnaHQpIHsKLSAg
ICAgICAgdmFyIGFjdHVhbE1hcmdpblJpZ2h0ID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5tYXJn
aW5SaWdodDsKLSAgICAgICAgLy8gVHJpbSB0aGUgdW5pdCAicHgiIGZyb20gdGhlIG91dHB1dC4K
LSAgICAgICAgYWN0dWFsTWFyZ2luUmlnaHQgPSBhY3R1YWxNYXJnaW5SaWdodC5zdWJzdHJpbmco
MCwgYWN0dWFsTWFyZ2luUmlnaHQubGVuZ3RoIC0gMik7Ci0gICAgICAgIGlmIChhY3R1YWxNYXJn
aW5SaWdodCAhPSBleHBlY3RlZE1hcmdpblJpZ2h0KQotICAgICAgICAgICAgZmFpbHVyZXMucHVz
aCgiRXhwZWN0ZWQgIiArIGV4cGVjdGVkTWFyZ2luUmlnaHQgKyAiIGZvciBtYXJnaW4tcmlnaHQs
IGJ1dCBnb3QgIiArIGFjdHVhbE1hcmdpblJpZ2h0ICsgIi4gIik7Ci0gICAgfQotCi0gICAgcmV0
dXJuIG91dHB1dC5jaGVja2VkOwotfQotCi13aW5kb3cuY2hlY2tMYXlvdXQgPSBmdW5jdGlvbihz
ZWxlY3Rvckxpc3QsIG92ZXJyaWRlQ29udGFpbmVyKQotewotICAgIGlmICghc2VsZWN0b3JMaXN0
KSB7Ci0gICAgICAgIGNvbnNvbGUuZXJyb3IoIllvdSBtdXN0IHByb3ZpZGUgYSBDU1Mgc2VsZWN0
b3Igb2Ygbm9kZXMgdG8gY2hlY2suIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFy
IG5vZGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvckxpc3QpOwotICAgIG5v
ZGVzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobm9kZXMpOwotICAgIG5vZGVzLnJldmVy
c2UoKTsKLSAgICB2YXIgY2hlY2tlZExheW91dCA9IGZhbHNlOwotICAgIEFycmF5LnByb3RvdHlw
ZS5mb3JFYWNoLmNhbGwobm9kZXMsIGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgdmFyIGZhaWx1
cmVzID0gW107Ci0gICAgICAgIGNoZWNrZWRMYXlvdXQgfD0gY2hlY2tFeHBlY3RlZFZhbHVlcyhu
b2RlLnBhcmVudE5vZGUsIGZhaWx1cmVzKTsKLSAgICAgICAgY2hlY2tlZExheW91dCB8PSBjaGVj
a1N1YnRyZWVFeHBlY3RlZFZhbHVlcyhub2RlLCBmYWlsdXJlcyk7Ci0KLSAgICAgICAgdmFyIGNv
bnRhaW5lciA9IG92ZXJyaWRlQ29udGFpbmVyIHx8IChub2RlLnBhcmVudE5vZGUuY2xhc3NOYW1l
ID09ICdjb250YWluZXInID8gbm9kZS5wYXJlbnROb2RlIDogbm9kZSk7Ci0KLSAgICAgICAgdmFy
IHByZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ByZScpOwotICAgICAgICBpZiAoZmFpbHVy
ZXMubGVuZ3RoKQotICAgICAgICAgICAgcHJlLmNsYXNzTmFtZSA9ICdGQUlMJzsKLSAgICAgICAg
cHJlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGZhaWx1cmVzLmxlbmd0aCA/
ICJGQUlMOlxuIiArIGZhaWx1cmVzLmpvaW4oJ1xuJykgKyAnXG5cbicgKyBjb250YWluZXIub3V0
ZXJIVE1MIDogIlBBU1MiKSk7Ci0gICAgICAgIGluc2VydEFmdGVyKHByZSwgY29udGFpbmVyKTsK
LSAgICB9KTsKLQotICAgIGlmICghY2hlY2tlZExheW91dCkgewotICAgICAgICBkb2N1bWVudC5i
b2R5LmlubmVySFRNTCA9ICJGQUlMOiBObyB2YWxpZCBkYXRhLSogYXR0cmlidXRlcyBmb3VuZCBp
biBzZWxlY3RvciBsaXN0IDogIiArIHNlbGVjdG9yTGlzdDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIHZhciBwcmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuRkFJTCcpOwotICAg
IGlmIChwcmUpCi0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHByZS5wcmV2aW91c1Np
Ymxpbmcuc2Nyb2xsSW50b1ZpZXcoKTsgfSwgMCk7Ci19Ci0KLX0pKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMgYi9MYXlvdXRUZXN0cy9yZXNv
dXJjZXMvZHVtcC1hcy1tYXJrdXAuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1
YTc0NzRmZjc4YTlmOTA3YTQwMjM5ZTRlYjE2MWY5MTZhOTIzZDQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAt
YXMtbWFya3VwLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzg0ICswLDAgQEAKLS8qKgotICogVGhl
cmUgYXJlIHRocmVlIGJhc2ljIHVzZSBjYXNlcyBvZiBkdW1wQXNNYXJrdXAKLSAqCi0gKiAxLiBE
dW1wIHRoZSBlbnRpcmUgRE9NIHdoZW4gdGhlIHBhZ2UgaXMgbG9hZGVkCi0gKiAgICBXaGVuIHRo
aXMgc2NyaXB0IGlzIGluY2x1ZGVkIGJ1dCBubyBtZXRob2Qgb2YgTWFya3VwIGlzIGNhbGxlZCwK
LSAqICAgIGl0IGR1bXBzIHRoZSBET00gb2YgZWFjaCBmcmFtZSBsb2FkZWQuCi0gKgotICogMi4g
RHVtcCB0aGUgY29udGVudCBvZiBhIHNwZWNpZmljIGVsZW1lbnQgd2hlbiB0aGUgcGFnZSBpcyBs
b2FkZWQKLSAqICAgIFdoZW4gTWFya3VwLnNldE5vZGVUb0R1bXAgaXMgY2FsbGVkIHdpdGggc29t
ZSBlbGVtZW50IG9yIHRoZSBpZCBvZiBzb21lIGVsZW1lbnQsCi0gKiAgICBpdCBkdW1wcyB0aGUg
Y29udGVudCBvZiB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgYXMgc3VwcG9zZWQgdG8gdGhlIGVudGly
ZSBET00gdHJlZS4KLSAqCi0gKiAzLiBEdW1wIHRoZSBjb250ZW50IG9mIGEgc3BlY2lmaWMgZWxl
bWVudCBtdWx0aXBsZSB0aW1lcyB3aGlsZSB0aGUgcGFnZSBpcyBsb2FkaW5nCi0gKiAgICBDYWxs
aW5nIE1hcmt1cC5kdW1wIHdvdWxkIGR1bXAgdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgc2V0
IGJ5IHNldE5vZGVUb0R1bXAgb3IgdGhlIGVudGlyZSBET00uCi0gKiAgICBPcHRpb25hbGx5IHNw
ZWNpZnkgdGhlIG5vZGUgdG8gZHVtcCBhbmQgdGhlIGRlc2NyaXB0aW9uIGZvciBlYWNoIGNhbGwg
b2YgZHVtcC4KLSAqLwotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci0KLS8vIE5hbWVzcGFjZQotLy8gRklYTUU6IFJlbmFtZSBkdW1wLWFzLW1h
cmt1cC5qcyB0byBkdW1wLWRvbS5qcyBhbmQgTWFya3VwIHRvIERPTS4KLXZhciBNYXJrdXAgPSB7
fTsKLQotLy8gVGhlIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhpcyB0ZXN0IGlzIHRlc3RpbmcuIEdl
dHMgcHJlcGVuZGVkIHRvIHRoZSBkdW1wZWQgbWFya3VwLgotTWFya3VwLmRlc2NyaXB0aW9uID0g
ZnVuY3Rpb24oZGVzY3JpcHRpb24pCi17Ci0gICAgTWFya3VwLl90ZXN0X2Rlc2NyaXB0aW9uID0g
ZGVzY3JpcHRpb247Ci19Ci0KLS8vIER1bXBzIHRoZSBtYXJrdXAgZm9yIHRoZSBnaXZlbiBub2Rl
IChIVE1MIGVsZW1lbnQgaWYgbm8gbm9kZSBpcyBnaXZlbikuCi0vLyBPdmVyLXdyaXRlcyB0aGUg
Ym9keSdzIGNvbnRlbnQgd2l0aCB0aGUgbWFya3VwIGluIGxheW91dCB0ZXN0IG1vZGUuIEFwcGVu
ZHMKLS8vIGEgcHJlIGVsZW1lbnQgd2hlbiBsb2FkZWQgbWFudWFsbHksIGluIG9yZGVyIHRvIGFp
ZCBkZWJ1Z2dpbmcuCi1NYXJrdXAuZHVtcCA9IGZ1bmN0aW9uKG9wdF9ub2RlLCBvcHRfZGVzY3Jp
cHRpb24pCi17Ci0gICAgaWYgKHR5cGVvZiBvcHRfbm9kZSA9PSAnc3RyaW5nJykKLSAgICAgICAg
b3B0X25vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRfbm9kZSk7Ci0KLSAgICB2YXIg
bm9kZSA9IG9wdF9ub2RlIHx8IGRvY3VtZW50Ci0gICAgdmFyIG1hcmt1cCA9ICIiOwotCi0gICAg
TWFya3VwLl9kdW1wQ2FsbHMrKzsKLQotICAgIGlmIChNYXJrdXAuX2R1bXBDYWxscyA+IDEgfHwg
b3B0X2Rlc2NyaXB0aW9uKSB7Ci0gICAgICAgIGlmICghb3B0X2Rlc2NyaXB0aW9uKQotICAgICAg
ICAgICAgb3B0X2Rlc2NyaXB0aW9uID0gIkR1bXAgb2YgbWFya3VwICIgKyBNYXJrdXAuX2R1bXBD
YWxscwotICAgICAgICBpZiAoTWFya3VwLl9kdW1wQ2FsbHMgPiAxKQotICAgICAgICAgICAgbWFy
a3VwICs9ICdcbic7Ci0gICAgICAgIG1hcmt1cCArPSAnXG4nICsgb3B0X2Rlc2NyaXB0aW9uICsg
Jzpcbic7Ci0gICAgfSBlbHNlCi0gICAgICAgIE1hcmt1cC5fZmlyc3RDYWxsRGlkTm90SGF2ZURl
c2NyaXB0aW9uID0gdHJ1ZTsKLQotICAgIG1hcmt1cCArPSBNYXJrdXAuZ2V0KG5vZGUpOwotCi0g
ICAgaWYgKCFNYXJrdXAuX2NvbnRhaW5lcikgewotICAgICAgICBNYXJrdXAuX2NvbnRhaW5lciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ByZScpOwotICAgICAgICBNYXJrdXAuX2NvbnRhaW5l
ci5zdHlsZS53aWR0aCA9ICcxMDAlJzsKLSAgICB9Ci0KLSAgICBpZiAoTWFya3VwLl9kdW1wQ2Fs
bHMgPT0gMiAmJiBNYXJrdXAuX2ZpcnN0Q2FsbERpZE5vdEhhdmVEZXNjcmlwdGlvbikgewotICAg
ICAgICB2YXIgd3JhcHBlciA9IE1hcmt1cC5fY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoJ2R1bXAtYXMtbWFya3VwLXNwYW4nKVswXTsKLSAgICAgICAgd3JhcHBlci5pbnNlcnRCZWZv
cmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1xuRHVtcCBvZiBtYXJrdXAgMTpcbicpLCB3cmFw
cGVyLmZpcnN0Q2hpbGQpOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBIYXZlIHRoaXMgcmVzcGVj
dCB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dD8KLSAgICAvLyBGSVhNRTogU2hvdWxk
IHdlIGNhcmUgYWJvdXQgZnJhbWVzZXRzPwotICAgIC8vIERvY3VtZW50RnJhZ21lbnQgZG9lc24n
dCBoYXZlIGEgZ2V0RWxlbWVudHNCeVRhZ05hbWUgbWV0aG9kLgotICAgIGlmIChub2RlLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKSB7Ci0gICAgICAgIHZhciBpZnJhbWVzID0gbm9kZS5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnaWZyYW1lJyk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWZyYW1l
cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgbWFya3VwICs9ICdcblxuRlJBTUUgJyArIGkg
KyAnOlxuJwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBtYXJrdXAgKz0gTWFy
a3VwLmdldChpZnJhbWVzW2ldLmNvbnRlbnREb2N1bWVudC5ib2R5LnBhcmVudEVsZW1lbnQpOwot
ICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgIG1hcmt1cCArPSAnRklY
TUU6IEFkZCBtZXRob2QgdG8gbGF5b3V0IHRlc3QgY29udHJvbGxlciB0byBnZXQgYWNjZXNzIHRv
IGNyb3NzLW9yaWdpbiBmcmFtZXMuJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmIChNYXJrdXAuX3Rlc3RfZGVzY3JpcHRpb24gJiYgTWFya3VwLl9kdW1wQ2FsbHMg
PT0gMSkKLSAgICAgICAgTWFya3VwLl9jb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoTWFya3VwLl90ZXN0X2Rlc2NyaXB0aW9uICsgJ1xuJykpCi0KLSAgICB2YXIg
d3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKLSAgICB3cmFwcGVyLmNs
YXNzTmFtZSA9ICdkdW1wLWFzLW1hcmt1cC1zcGFuJzsKLSAgICB3cmFwcGVyLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1hcmt1cCkpOwotICAgIE1hcmt1cC5fY29udGFpbmVy
LmFwcGVuZENoaWxkKHdyYXBwZXIpOwotfQotCi1NYXJrdXAubm9BdXRvRHVtcCA9IGZ1bmN0aW9u
KCkKLXsKLSAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZCcsIE1hcmt1cC5ub3Rp
ZnlEb25lLCBmYWxzZSk7Ci19Ci0KLU1hcmt1cC53YWl0VW50aWxEb25lID0gZnVuY3Rpb24oKQot
ewotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci0gICAgTWFya3VwLm5vQXV0b0R1bXAoKTsKLX0KLQotTWFya3VwLm5vdGlmeURv
bmUgPSBmdW5jdGlvbigpCi17Ci0gICAgLy8gTmVlZCB0byB3YWl0VW50aWxEb25lIG9yIHNvbWUg
dGVzdHMgd29uJ3QgZmluaXNoIGFwcGVuZGluZyB0aGUgbWFya3VwIGJlZm9yZSB0aGUgdGV4dCBp
cyBkdW1wZWQuCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLQotICAgIC8vIElmIGR1bXAgaGFzIGFscmVhZHkgYmVlbiBjYWxs
ZWQsIGRvbid0IGJvdGhlciB0byBkdW1wIGFnYWluCi0gICAgaWYgKCFNYXJrdXAuX2R1bXBDYWxs
cykKLSAgICAgICAgTWFya3VwLmR1bXAoKTsKLQotICAgIC8vIEluIG5vbi1sYXlvdXQgdGVzdCBt
b2RlLCBhcHBlbmQgdGhlIHJlc3VsdHMgaW4gYSBwcmUgc28gdGhhdCB3ZSBkb24ndAotICAgIC8v
IGNsb2JiZXIgdGhlIHRlc3QgaXRzZWxmLiBCdXQgd2hlbiBpbiBsYXlvdXQgdGVzdCBtb2RlLCB3
ZSBkb24ndCB3YW50Ci0gICAgLy8gc2lkZSBlZmZlY3RzIGZyb20gdGhlIHRlc3QgdG8gYmUgaW5j
bHVkZWQgaW4gdGhlIHJlc3VsdHMuCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICcnOwotCi0gICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChNYXJrdXAuX2NvbnRhaW5lcik7Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQotCi1NYXJrdXAudXNlSFRNTDVs
aWJPdXRwdXRGb3JtYXQgPSBmdW5jdGlvbigpCi17Ci0gICAgTWFya3VwLl91c2VIVE1MNWxpYk91
dHB1dEZvcm1hdCA9IHRydWU7Ci19Ci0KLU1hcmt1cC5nZXQgPSBmdW5jdGlvbihub2RlKQotewot
ICAgIHZhciBzaGFkb3dSb290TGlzdCA9IHt9OwotICAgIHZhciBtYXJrdXAgPSBNYXJrdXAuX2dl
dFNoYWRvd0hvc3RJZlBvc3NpYmxlKG5vZGUsIDAsIHNoYWRvd1Jvb3RMaXN0KTsKLSAgICBpZiAo
bWFya3VwKQotICAgICAgICByZXR1cm4gbWFya3VwLnN1YnN0cmluZygxKTsKLQotICAgIGlmICgh
bm9kZS5maXJzdENoaWxkKQotICAgICAgICByZXR1cm4gJ3wgJzsKLQotICAgIC8vIERvbid0IHBy
aW50IGFueSBtYXJrdXAgZm9yIHRoZSByb290IG5vZGUuCi0KLSAgICB2YXIgbGVuID0gbm9kZS5j
aGlsZE5vZGVzLmxlbmd0aDsKLSAgICB2YXIgaSA9IDA7Ci0gICAgZm9yICg7IGkgPCBsZW47IGkr
KykgewotICAgICAgICBtYXJrdXAgKz0gTWFya3VwLl9nZXRTZWxlY3Rpb25NYXJrZXJXaXRoSWRl
bnRhdGlvbihub2RlLCBpLCAwKTsKLSAgICAgICAgbWFya3VwICs9IE1hcmt1cC5fZ2V0KG5vZGUu
Y2hpbGROb2Rlc1tpXSwgMCwgc2hhZG93Um9vdExpc3QpOwotICAgIH0KLSAgICBtYXJrdXAgKz0g
TWFya3VwLl9nZXRTZWxlY3Rpb25NYXJrZXJXaXRoSWRlbnRhdGlvbihub2RlLCBsZW4sIDApOwot
Ci0gICAgcmV0dXJuIG1hcmt1cC5zdWJzdHJpbmcoMSk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIG1h
cmt1cCBmb3IgdGhlIGdpdmVuIG5vZGUuIFRvIGJlIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGEgdGVz
dCBuZWVkcwotLy8gdG8gZ2V0IHRoZSBtYXJrdXAgYnV0IG5vdCBjbG9iYmVyIHRoZSB3aG9sZSBw
YWdlLgotTWFya3VwLl9nZXQgPSBmdW5jdGlvbihub2RlLCBkZXB0aCwgc2hhZG93Um9vdExpc3Qp
Ci17Ci0gICAgdmFyIHN0ciA9IE1hcmt1cC5faW5kZW50KGRlcHRoKTsKLQotICAgIHN3aXRjaCAo
bm9kZS5ub2RlVHlwZSkgewotICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6Ci0gICAg
ICAgIHN0ciArPSAnPCFET0NUWVBFICcgKyBub2RlLm5vZGVOYW1lOwotICAgICAgICAvLyBGSVhN
RTogVGhlIGFjdHVhbCBNYXJrdXBBY2N1bXVsYXRvciBpbiBXZWJLaXQgaGFuZGxlcyB0aGVzZSBx
dWl0ZSBkaWZmZXJlbnRseS4KLSAgICAgICAgLy8gU2hvdWxkIHdlIGNoYW5nZSB0byBtYXRjaCB0
aGF0IGZvcm1hdD8gV291bGQgcHJvYmFibHkgbmVlZCB0byBjaGFuZ2UgdGVzdCByZXN1bHRzLAot
ICAgICAgICAvLyBidXQgaXQgY291bGQgaGVscCB1cyBkaXN0aW5ndWlzaCBlbXB0eSBzdHJpbmdz
IGZyb20gbWlzc2luZyBwcm9wZXJ0aWVzIGFuZAotICAgICAgICAvLyB3b3VsZCBpbmNsdWRlIGlu
dGVybmFsU3Vic2V0LCB3aGljaCB0aGlzIG9taXRzLgotICAgICAgICBpZiAobm9kZS5wdWJsaWNJ
ZCB8fCBub2RlLnN5c3RlbUlkKSB7Ci0gICAgICAgICAgICBzdHIgKz0gJyAiJyArIChub2RlLnB1
YmxpY0lkIHx8ICcnKSArICciJzsKLSAgICAgICAgICAgIHN0ciArPSAnICInICsgKG5vZGUuc3lz
dGVtSWQgfHwgJycpICsgJyInOwotICAgICAgICB9Ci0gICAgICAgIHN0ciArPSAnPic7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBOb2RlLkNPTU1FTlRfTk9ERToKLSAgICAgICAgdHJ5IHsK
LSAgICAgICAgICAgIHN0ciArPSAnPCEtLSAnICsgbm9kZS5ub2RlVmFsdWUgKyAnIC0tPic7Ci0g
ICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIHN0ciArPSAnPCEtLSAgLS0+JzsKLSAg
ICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE5vZGUuUFJPQ0VTU0lOR19JTlNU
UlVDVElPTl9OT0RFOgotICAgICAgICBzdHIgKz0gJzw/JyArIG5vZGUubm9kZU5hbWUgKyBub2Rl
Lm5vZGVWYWx1ZSArICc+JzsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE5vZGUuQ0RBVEFf
U0VDVElPTl9OT0RFOgotICAgICAgICBzdHIgKz0gJzwhW0NEQVRBWyAnICsgbm9kZS5ub2RlVmFs
dWUgKyAnIF1dPic7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBOb2RlLlRFWFRfTk9ERToK
LSAgICAgICAgc3RyICs9ICciJyArIE1hcmt1cC5fZ2V0TWFya3VwRm9yVGV4dE5vZGUobm9kZSkg
KyAnIic7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKLSAg
ICAgICAgc3RyICs9ICI8IjsKLSAgICAgICAgc3RyICs9IE1hcmt1cC5fbmFtZXNwYWNlKG5vZGUp
Ci0KLSAgICAgICAgaWYgKG5vZGUubG9jYWxOYW1lICYmIG5vZGUubmFtZXNwYWNlVVJJICYmIG5v
ZGUubmFtZXNwYWNlVVJJICE9IG51bGwpCi0gICAgICAgICAgICBzdHIgKz0gbm9kZS5sb2NhbE5h
bWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ciArPSBNYXJrdXAuX3RvQXNjaWlMb3dl
ckNhc2Uobm9kZS5ub2RlTmFtZSk7Ci0KLSAgICAgICAgc3RyICs9ICc+JzsKLQotICAgICAgICBp
ZiAobm9kZS5hdHRyaWJ1dGVzKSB7Ci0gICAgICAgICAgICB2YXIgYXR0ck5hbWVzID0gW107Ci0g
ICAgICAgICAgICB2YXIgYXR0clBvcyA9IHt9OwotICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCBub2RlLmF0dHJpYnV0ZXMubGVuZ3RoOyBqICs9IDEpIHsKLSAgICAgICAgICAgICAgICBp
ZiAobm9kZS5hdHRyaWJ1dGVzW2pdLnNwZWNpZmllZCkgewotICAgICAgICAgICAgICAgICAgICB2
YXIgbmFtZSA9IE1hcmt1cC5fbmFtZXNwYWNlKG5vZGUuYXR0cmlidXRlc1tqXSkKLSAgICAgICAg
ICAgICAgICAgICAgbmFtZSArPSBub2RlLmF0dHJpYnV0ZXNbal0ubG9jYWxOYW1lIHx8IG5vZGUu
YXR0cmlidXRlc1tqXS5ub2RlTmFtZTsKLSAgICAgICAgICAgICAgICAgICAgYXR0ck5hbWVzLnB1
c2gobmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIGF0dHJQb3NbbmFtZV0gPSBqOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChhdHRyTmFtZXMubGVu
Z3RoID4gMCkgewotICAgICAgICAgICAgICBhdHRyTmFtZXMuc29ydCgpOwotICAgICAgICAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IGF0dHJOYW1lcy5sZW5ndGg7IGogKz0gMSkgewotICAgICAg
ICAgICAgICAgIHN0ciArPSBNYXJrdXAuX2luZGVudChkZXB0aCArIDEpICsgYXR0ck5hbWVzW2pd
OwotICAgICAgICAgICAgICAgIHN0ciArPSAnPSInICsgbm9kZS5hdHRyaWJ1dGVzW2F0dHJQb3Nb
YXR0ck5hbWVzW2pdXV0ubm9kZVZhbHVlICsgJyInOwotICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIU1hcmt1cC5fdXNlSFRNTDVsaWJPdXRw
dXRGb3JtYXQgJiYgd2luZG93LmludGVybmFscykgewotICAgICAgICAgICAgdmFyIHBzZXVkb0lk
ID0gd2luZG93LmludGVybmFscy5zaGFkb3dQc2V1ZG9JZChub2RlKTsKLSAgICAgICAgICAgIGlm
IChwc2V1ZG9JZCkKLSAgICAgICAgICAgICAgICBzdHIgKz0gTWFya3VwLl9pbmRlbnQoZGVwdGgg
KyAxKSArICdzaGFkb3c6cHNldWRvSWQ9IicgKyBwc2V1ZG9JZCArICciJzsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghTWFya3VwLl91c2VIVE1MNWxpYk91dHB1dEZvcm1hdCkKLSAgICAgICAg
ICAgIGlmIChub2RlLm5vZGVOYW1lID09ICJJTlBVVCIgfHwgbm9kZS5ub2RlTmFtZSA9PSAiVEVY
VEFSRUEiKQotICAgICAgICAgICAgICAgIHN0ciArPSBNYXJrdXAuX2luZGVudChkZXB0aCArIDEp
ICsgJ3RoaXMudmFsdWU9IicgKyBub2RlLnZhbHVlICsgJyInOwotCi0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBpZiAoc2hhZG93
Um9vdExpc3QgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMuYWRkcmVzcyhub2RlKSBp
biBzaGFkb3dSb290TGlzdCkKLSAgICAgICAgICBzdHIgKz0gIjxzaGFkb3c6cm9vdD4iOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgc3RyICs9ICJjb250ZW50IjsKLSAgICB9Ci0KLSAgICBpZiAo
bm9kZS5uYW1lc3BhY2VVUkkgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgJiYgbm9k
ZS50YWdOYW1lID09ICdURU1QTEFURScpCi0gICAgICAgIHN0ciArPSBNYXJrdXAuX2dldChub2Rl
LmNvbnRlbnQsIGRlcHRoICsgMSwgc2hhZG93Um9vdExpc3QpOwotCi0gICAgZm9yICh2YXIgaSA9
IDAsIGxlbiA9IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykgewotICAgICAg
ICBzdHIgKz0gTWFya3VwLl9nZXRTZWxlY3Rpb25NYXJrZXJXaXRoSWRlbnRhdGlvbihub2RlLCBp
LCBkZXB0aCArIDEpOwotICAgICAgICBzdHIgKz0gTWFya3VwLl9nZXQobm9kZS5jaGlsZE5vZGVz
W2ldLCBkZXB0aCArIDEsIHNoYWRvd1Jvb3RMaXN0KTsKLSAgICB9Ci0gICAgCi0gICAgc3RyICs9
IE1hcmt1cC5fZ2V0U2hhZG93SG9zdElmUG9zc2libGUobm9kZSwgZGVwdGgsIHNoYWRvd1Jvb3RM
aXN0KTsKLSAgICBzdHIgKz0gTWFya3VwLl9nZXRTZWxlY3Rpb25NYXJrZXJXaXRoSWRlbnRhdGlv
bihub2RlLCBpLCBkZXB0aCArIDEpOwotCi0gICAgcmV0dXJuIHN0cjsKLX0KLQotTWFya3VwLl9n
ZXRTaGFkb3dIb3N0SWZQb3NzaWJsZSA9IGZ1bmN0aW9uIChub2RlLCBkZXB0aCwgc2hhZG93Um9v
dExpc3QpCi17Ci0gICAgaWYgKCFNYXJrdXAuX3VzZUhUTUw1bGliT3V0cHV0Rm9ybWF0ICYmIG5v
ZGUubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREUgJiYgd2luZG93LmludGVybmFscykgewot
ICAgICAgICB2YXIgcm9vdCA9IHdpbmRvdy5pbnRlcm5hbHMuc2hhZG93Um9vdChub2RlKTsKLSAg
ICAgICAgaWYgKHJvb3QpIHsKLSAgICAgICAgICAgIHNoYWRvd1Jvb3RMaXN0W2ludGVybmFscy5h
ZGRyZXNzKHJvb3QpXSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gTWFya3VwLl9nZXQocm9v
dCwgZGVwdGggKyAxLCBzaGFkb3dSb290TGlzdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0
dXJuICcnOwotfQotCi1NYXJrdXAuX25hbWVzcGFjZSA9IGZ1bmN0aW9uKG5vZGUpCi17Ci0gICAg
aWYgKE1hcmt1cC5fTkFNRVNQQUNFX1VSSV9NQVBbbm9kZS5uYW1lc3BhY2VVUkldKQotICAgICAg
ICByZXR1cm4gTWFya3VwLl9OQU1FU1BBQ0VfVVJJX01BUFtub2RlLm5hbWVzcGFjZVVSSV0gKyAn
ICc7Ci0gICAgcmV0dXJuICcnOwotfQotCi1NYXJrdXAuX2R1bXBDYWxscyA9IDAKLQotTWFya3Vw
Ll9pbmRlbnQgPSBmdW5jdGlvbihkZXB0aCkKLXsKLSAgICByZXR1cm4gIlxufCAiICsgbmV3IEFy
cmF5KGRlcHRoICogMiArIDEpLmpvaW4oJyAnKTsKLX0KLQotTWFya3VwLl90b0FzY2lpTG93ZXJD
YXNlID0gZnVuY3Rpb24gKHN0cikgewotICB2YXIgb3V0cHV0ID0gIiI7Ci0gIGZvciAodmFyIGkg
PSAwLCBsZW4gPSB0aGlzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgaWYgKHN0ci5jaGFy
Q29kZUF0KGkpID49IDB4NDEgJiYgc3RyLmNoYXJDb2RlQXQoaSkgPD0gMHg1QSkKLSAgICAgIG91
dHB1dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHN0ci5jaGFyQ29kZUF0KGkpICsgMHgyMCkKLSAg
ICBlbHNlCi0gICAgICBvdXRwdXQgKz0gc3RyLmNoYXJBdChpKTsKLSAgfQotICByZXR1cm4gb3V0
cHV0OwotfQotCi1NYXJrdXAuX05BTUVTUEFDRV9VUklfTUFQID0gewotICAgICJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyI6ICJzdmciLAotICAgICJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01h
dGgvTWF0aE1MIjogIm1hdGgiLAotICAgICJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1l
c3BhY2UiOiAieG1sIiwKLSAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iOiAieG1s
bnMiLAotICAgICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIjogInhsaW5rIgotfQotCi1N
YXJrdXAuX2dldFNlbGVjdGlvbkZyb21Ob2RlID0gZnVuY3Rpb24obm9kZSkKLXsKLSAgICByZXR1
cm4gbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3ID8gbm9kZS5vd25lckRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldFNlbGVjdGlvbigpIDogbnVsbDsKLX0KLQotTWFya3VwLl9TRUxFQ1RJT05f
Rk9DVVMgPSAnPCNzZWxlY3Rpb24tZm9jdXM+JzsKLU1hcmt1cC5fU0VMRUNUSU9OX0FOQ0hPUiA9
ICc8I3NlbGVjdGlvbi1hbmNob3I+JzsKLU1hcmt1cC5fU0VMRUNUSU9OX0NBUkVUID0gJzwjc2Vs
ZWN0aW9uLWNhcmV0Pic7Ci0KLU1hcmt1cC5fZ2V0TWFya3VwRm9yVGV4dE5vZGUgPSBmdW5jdGlv
bihub2RlKQotewotICAgIGlubmVyTWFya3VwID0gbm9kZS5ub2RlVmFsdWU7Ci0gICAgdmFyIHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIHN0YXJ0VGV4dCwgZW5kVGV4dDsKLQotICAgIHZhciBzZWwg
PSBNYXJrdXAuX2dldFNlbGVjdGlvbkZyb21Ob2RlKG5vZGUpOwotICAgIC8vIEZpcmVmb3ggZG9l
c24ndCBoYXZlIGEgc2VsIGluIGEgZGlzcGxheTpub25lIGlmcmFtZS4KLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM2NTUKLSAgICBpZiAoc2VsKSB7Ci0g
ICAgICAgIGlmIChub2RlID09IHNlbC5hbmNob3JOb2RlICYmIG5vZGUgPT0gc2VsLmZvY3VzTm9k
ZSkgewotICAgICAgICAgICAgaWYgKHNlbC5pc0NvbGxhcHNlZCkgewotICAgICAgICAgICAgICAg
IHN0YXJ0T2Zmc2V0ID0gc2VsLmFuY2hvck9mZnNldDsKLSAgICAgICAgICAgICAgICBzdGFydFRl
eHQgPSBNYXJrdXAuX1NFTEVDVElPTl9DQVJFVDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHNlbC5mb2N1c09mZnNldCA+IHNlbC5hbmNob3JPZmZzZXQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSBzZWwuYW5jaG9yT2Zmc2V0OwotICAgICAg
ICAgICAgICAgICAgICBlbmRPZmZzZXQgPSBzZWwuZm9jdXNPZmZzZXQ7Ci0gICAgICAgICAgICAg
ICAgICAgIHN0YXJ0VGV4dCA9IE1hcmt1cC5fU0VMRUNUSU9OX0FOQ0hPUjsKLSAgICAgICAgICAg
ICAgICAgICAgZW5kVGV4dCA9IE1hcmt1cC5fU0VMRUNUSU9OX0ZPQ1VTOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gc2VsLmZvY3Vz
T2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBlbmRPZmZzZXQgPSBzZWwuYW5jaG9yT2Zmc2V0
OwotICAgICAgICAgICAgICAgICAgICBzdGFydFRleHQgPSBNYXJrdXAuX1NFTEVDVElPTl9GT0NV
UzsKLSAgICAgICAgICAgICAgICAgICAgZW5kVGV4dCA9IE1hcmt1cC5fU0VMRUNUSU9OX0FOQ0hP
UjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAo
bm9kZSA9PSBzZWwuZm9jdXNOb2RlKSB7Ci0gICAgICAgICAgICBzdGFydE9mZnNldCA9IHNlbC5m
b2N1c09mZnNldDsKLSAgICAgICAgICAgIHN0YXJ0VGV4dCA9IE1hcmt1cC5fU0VMRUNUSU9OX0ZP
Q1VTOwotICAgICAgICB9IGVsc2UgaWYgKG5vZGUgPT0gc2VsLmFuY2hvck5vZGUpIHsKLSAgICAg
ICAgICAgIHN0YXJ0T2Zmc2V0ID0gc2VsLmFuY2hvck9mZnNldDsKLSAgICAgICAgICAgIHN0YXJ0
VGV4dCA9IE1hcmt1cC5fU0VMRUNUSU9OX0FOQ0hPUjsKLSAgICAgICAgfQotICAgIH0KLSAgICAK
LSAgICBpZiAoc3RhcnRUZXh0ICYmIGVuZFRleHQpCi0gICAgICAgIGlubmVyTWFya3VwID0gaW5u
ZXJNYXJrdXAuc3Vic3RyaW5nKDAsIHN0YXJ0T2Zmc2V0KSArIHN0YXJ0VGV4dCArIGlubmVyTWFy
a3VwLnN1YnN0cmluZyhzdGFydE9mZnNldCwgZW5kT2Zmc2V0KSArIGVuZFRleHQgKyBpbm5lck1h
cmt1cC5zdWJzdHJpbmcoZW5kT2Zmc2V0KTsgICAgICAgICAgICAgICAgICAgICAgIAotICAgIGVs
c2UgaWYgKHN0YXJ0VGV4dCkKLSAgICAgICAgaW5uZXJNYXJrdXAgPSBpbm5lck1hcmt1cC5zdWJz
dHJpbmcoMCwgc3RhcnRPZmZzZXQpICsgc3RhcnRUZXh0ICsgaW5uZXJNYXJrdXAuc3Vic3RyaW5n
KHN0YXJ0T2Zmc2V0KTsKLQotICAgIGlmICghTWFya3VwLl91c2VIVE1MNWxpYk91dHB1dEZvcm1h
dCkKLSAgICAgICAgaW5uZXJNYXJrdXAgPSBpbm5lck1hcmt1cC5yZXBsYWNlKC9cXC9nLCAiXFxc
XCIpLnJlcGxhY2UoL1xuL2csICJcXG4iKTsKLQotICAgIHJldHVybiBpbm5lck1hcmt1cDsKLX0K
LQotTWFya3VwLl9nZXRTZWxlY3Rpb25NYXJrZXJXaXRoSWRlbnRhdGlvbiA9IGZ1bmN0aW9uKG5v
ZGUsIGluZGV4LCBkZXB0aCkKLXsKLSAgICB2YXIgc2VsZWN0aW9uID0gTWFya3VwLl9nZXRTZWxl
Y3Rpb25NYXJrZXIobm9kZSwgaW5kZXgpOwotICAgIGlmICghc2VsZWN0aW9uKQotICAgICAgICBy
ZXR1cm4gc2VsZWN0aW9uOwotICAgIHJldHVybiBNYXJrdXAuX2luZGVudChkZXB0aCkgKyBzZWxl
Y3Rpb247Ci19Ci0KLU1hcmt1cC5fZ2V0U2VsZWN0aW9uTWFya2VyID0gZnVuY3Rpb24obm9kZSwg
aW5kZXgpCi17Ci0gICAgaWYgKG5vZGUubm9kZVR5cGUgIT0gMSkKLSAgICAgICAgcmV0dXJuICcn
OwotCi0gICAgdmFyIHNlbCA9IE1hcmt1cC5fZ2V0U2VsZWN0aW9uRnJvbU5vZGUobm9kZSk7Owot
Ci0gICAgLy8gRmlyZWZveCBkb2Vzbid0IGhhdmUgYSBzZWwgaW4gYSBkaXNwbGF5Om5vbmUgaWZy
YW1lLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzY1
NQotICAgIGlmICghc2VsKQotICAgICAgICByZXR1cm4gJyc7Ci0KLSAgICBpZiAoaW5kZXggPT0g
c2VsLmFuY2hvck9mZnNldCAmJiBub2RlID09IHNlbC5hbmNob3JOb2RlKSB7Ci0gICAgICAgIGlm
IChzZWwuaXNDb2xsYXBzZWQpCi0gICAgICAgICAgICByZXR1cm4gTWFya3VwLl9TRUxFQ1RJT05f
Q0FSRVQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBNYXJrdXAuX1NFTEVDVElP
Tl9BTkNIT1I7Ci0gICAgfSBlbHNlIGlmIChpbmRleCA9PSBzZWwuZm9jdXNPZmZzZXQgJiYgbm9k
ZSA9PSBzZWwuZm9jdXNOb2RlKQotICAgICAgICByZXR1cm4gTWFya3VwLl9TRUxFQ1RJT05fRk9D
VVM7Ci0KLSAgICByZXR1cm4gJyc7Ci19Ci0KLXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2Fk
JywgTWFya3VwLm5vdGlmeURvbmUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jl
c291cmNlcy9nYy5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9nYy5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNTJiODI2NDU5Y2QyMTBjZjdiNmQ5YjQ3NTZmMzJiNTlmNjUxMzFh
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvZ2MuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vLyBJ
ZiB0aGVyZSBpcyBubyB3aW5kb3cuZ2MoKSBhbHJlYWR5IGRlZmluZWQsIGRlZmluZSBvbmUgdXNp
bmcgdGhlIGJlc3QKLS8vIG1ldGhvZCB3ZSBjYW4gZmluZC4KLS8vIFRoZSBzbG93IGZhbGxiYWNr
IHNob3VsZCBub3QgaGl0IGluIHRoZSBhY3R1YWwgdGVzdCBlbnZpcm9ubWVudC4KLWlmICghd2lu
ZG93LmdjKQotewotICAgIHdpbmRvdy5nYyA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlm
ICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5j
b2xsZWN0KCk7Ci0KLSAgICAgICAgY29uc29sZS53YXJuKCdUZXN0cyBhcmUgcnVubmluZyB3aXRo
b3V0IHRoZSBhYmlsaXR5IHRvIGRvIG1hbnVhbCBnYXJiYWdlIGNvbGxlY3Rpb24uIFRoZXkgd2ls
bCBzdGlsbCB3b3JrLCBidXQgY292ZXJhZ2Ugd2lsbCBiZSBzdWJvcHRpbWFsLicpOwotICAgICAg
ICBmdW5jdGlvbiBnY1JlYyhuKSB7Ci0gICAgICAgICAgICBpZiAobiA8IDEpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHt9OwotICAgICAgICAgICAgdmFyIHRlbXAgPSB7aTogImFiIiArIGkgKyAo
aSAvIDEwMDAwMCl9OwotICAgICAgICAgICAgdGVtcCArPSAiZm9vIjsKLSAgICAgICAgICAgIGdj
UmVjKG4tMSk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
aSsrKQotICAgICAgICAgICAgZ2NSZWMoMTApOwotICAgIH0KLX0KLQotLy8gRmlsbCBhcnJheSB3
aXRoIG51bGwgdG8gYXZvaWQgcG90ZW50aWFsIEdDIHJlYWNoYWJpbGl0eS4gZnJhbWVzID0gbnVs
bCBjYW4gYmUgZW5vdWdoIGluIDk5LjklIGNhc2VzLAotLy8gYnV0IHdlIGFyZSBleHRyYSBjYXJl
ZnVsIHRvIG1ha2UgdGVzdHMgbm9uLWZsYWt5OiBjb25zaWRlcmluZyBhYm91dCB0aGUgY2FzZSB0
aGF0IGFycmF5IGlzIGNhcHR1cmVkCi0vLyBzb21ld2hlcmUgKGxpa2UgREZHIGNvbnN0YW50cyku
Ci1mdW5jdGlvbiBudWtlQXJyYXkoYXJyYXkpCi17Ci0gICAgZm9yIChsZXQgaW5kZXggPSAwOyBp
bmRleCA8IGFycmF5Lmxlbmd0aDsgKytpbmRleCkKLSAgICAgICAgYXJyYXlbaW5kZXhdID0gbnVs
bDsKLSAgICBhcnJheS5sZW5ndGggPSAwOwotfQotCi1hc3luYyBmdW5jdGlvbiB0ZXN0RG9jdW1l
bnRJc05vdExlYWtlZChpbml0LCBvcHRpb25zID0ge30pCi17Ci0gICAgbGV0IGdjQ291bnQgPSBv
cHRpb25zLmdjQ291bnQgPz8gNTA7Ci0gICAgbGV0IGRvY3VtZW50Q291bnQgPSBvcHRpb25zLmRv
Y3VtZW50Q291bnQgPz8gMjA7Ci0gICAgbGV0IGFkZGl0aW9uYWxDaGVjayA9IG9wdGlvbnMuYWRk
aXRpb25hbENoZWNrID8/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07Ci0KLSAgICBmdW5j
dGlvbiB3YWl0Rm9yKGR1cmF0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNl
KChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIGR1cmF0aW9uKSk7Ci0gICAgfQotCi0g
ICAgbGV0IGZyYW1lSWRlbnRpZmllcnMgPSBhd2FpdCBpbml0KGRvY3VtZW50Q291bnQpOwotICAg
IGZvciAobGV0IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgZ2NDb3VudDsgKytjb3VudGVyKSB7Ci0g
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZG9jdW1lbnRDb3VudDsgKytpKSB7Ci0gICAgICAg
ICAgICBsZXQgZnJhbWVJZGVudGlmaWVyID0gZnJhbWVJZGVudGlmaWVyc1tpXTsKLSAgICAgICAg
ICAgIGlmICghaW50ZXJuYWxzLmlzRG9jdW1lbnRBbGl2ZShmcmFtZUlkZW50aWZpZXIpICYmIGFk
ZGl0aW9uYWxDaGVjaygpKQotICAgICAgICAgICAgICAgIHJldHVybiAiRG9jdW1lbnQgZGlkIG5v
dCBsZWFrIjsKLSAgICAgICAgfQotICAgICAgICBnYygpOwotICAgICAgICBhd2FpdCB3YWl0Rm9y
KDUwKTsKLSAgICB9Ci0KLSAgICB0aHJvdyBuZXcgRXJyb3IoIkRvY3VtZW50IGlzIGxlYWtlZCIp
OwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2lkbGhhcm5lc3MuanMgYi9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvaWRsaGFybmVzcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjViOWFmNWMzZTc5ZGNjZDBiMTIyMjM1YjkwZDYwMDA2YTM2M2RlZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9yZXNv
dXJjZXMvaWRsaGFybmVzcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDE5NTYgKzAsMCBAQAotLyoK
LURpc3RyaWJ1dGVkIHVuZGVyIGJvdGggdGhlIFczQyBUZXN0IFN1aXRlIExpY2Vuc2UgWzFdIGFu
ZCB0aGUgVzNDCi0zLWNsYXVzZSBCU0QgTGljZW5zZSBbMl0uIFRvIGNvbnRyaWJ1dGUgdG8gYSBX
M0MgVGVzdCBTdWl0ZSwgc2VlIHRoZQotcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBb
M10uCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDgvMDQtdGVz
dHN1aXRlLWxpY2Vuc2UKLVsyXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIw
MDgvMDMtYnNkLWxpY2Vuc2UKLVszXSBodHRwOi8vd3d3LnczLm9yZy8yMDA0LzEwLzI3LXRlc3Rj
YXNlcwotKi8KLQotLyogRm9yIHVzZXIgZG9jdW1lbnRhdGlvbiBzZWUgZG9jcy9pZGxoYXJuZXNz
Lm1kICovCi0KLS8qKgotICogTm90ZXMgZm9yIHBlb3BsZSB3aG8gd2FudCB0byBlZGl0IHRoaXMg
ZmlsZSAobm90IGp1c3QgdXNlIGl0IGFzIGEgbGlicmFyeSk6Ci0gKgotICogTW9zdCBvZiB0aGUg
aW50ZXJlc3Rpbmcgc3R1ZmYgaGFwcGVucyBpbiB0aGUgZGVyaXZlZCBjbGFzc2VzIG9mIElkbE9i
amVjdCwKLSAqIGVzcGVjaWFsbHkgSWRsSW50ZXJmYWNlLiAgVGhlIGVudHJ5IHBvaW50IGZvciBh
bGwgSWRsT2JqZWN0cyBpcyAudGVzdCgpLAotICogd2hpY2ggaXMgY2FsbGVkIGJ5IElkbEFycmF5
LnRlc3QoKS4gIEFuIElkbE9iamVjdCBpcyBjb25jZXB0dWFsbHkganVzdAotICogInRoaW5nIHdl
IHdhbnQgdG8gcnVuIHRlc3RzIG9uIiwgYW5kIGFuIElkbEFycmF5IGlzIGFuIGFycmF5IG9mIElk
bE9iamVjdHMKLSAqIHdpdGggc29tZSBhZGRpdGlvbmFsIGRhdGEgdGhyb3duIGluLgotICoKLSAq
IFRoZSBvYmplY3QgbW9kZWwgaXMgYmFzZWQgb24gd2hhdCBXZWJJRExQYXJzZXIuanMgcHJvZHVj
ZXMsIHdoaWNoIGlzIGluIHR1cm4KLSAqIGJhc2VkIG9uIGl0cyBwZWdqcyBncmFtbWFyLiAgSWYg
eW91IHdhbnQgdG8gZmlndXJlIG91dCB3aGF0IHByb3BlcnRpZXMgYW4KLSAqIG9iamVjdCB3aWxs
IGhhdmUgZnJvbSBXZWJJRExQYXJzZXIuanMsIHRoZSBiZXN0IHdheSBpcyB0byBsb29rIGF0IHRo
ZQotICogZ3JhbW1hcjoKLSAqCi0gKiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJvYmluL3dlYmlk
bC5qcy9ibG9iL21hc3Rlci9saWIvZ3JhbW1hci5wZWcKLSAqCi0gKiBTbyBmb3IgaW5zdGFuY2U6
Ci0gKgotICogICAvLyBpbnRlcmZhY2UgZGVmaW5pdGlvbgotICogICBpbnRlcmZhY2UKLSAqICAg
ICAgID0gICBleHRBdHRyczpleHRlbmRlZEF0dHJpYnV0ZUxpc3Q/IFM/ICJpbnRlcmZhY2UiIFMg
bmFtZTppZGVudGlmaWVyIHcgaGVyaXQ6aWZJbmhlcml0YW5jZT8gdyAieyIgdyBtZW06aWZNZW1i
ZXIqIHcgIn0iIHcgIjsiIHcKLSAqICAgICAgICAgICB7IHJldHVybiB7IHR5cGU6ICJpbnRlcmZh
Y2UiLCBuYW1lOiBuYW1lLCBpbmhlcml0YW5jZTogaGVyaXQsIG1lbWJlcnM6IG1lbSwgZXh0QXR0
cnM6IGV4dEF0dHJzIH07IH0KLSAqCi0gKiBUaGlzIG1lYW5zIHRoYXQgYW4gImludGVyZmFjZSIg
b2JqZWN0IHdpbGwgaGF2ZSBhIC50eXBlIHByb3BlcnR5IGVxdWFsIHRvCi0gKiB0aGUgc3RyaW5n
ICJpbnRlcmZhY2UiLCBhIC5uYW1lIHByb3BlcnR5IGVxdWFsIHRvIHRoZSBpZGVudGlmaWVyIHRo
YXQgdGhlCi0gKiBwYXJzZXIgZm91bmQsIGFuIC5pbmhlcml0YW5jZSBwcm9wZXJ0eSBlcXVhbCB0
byBlaXRoZXIgbnVsbCBvciB0aGUgcmVzdWx0IG9mCi0gKiB0aGUgImlmSW5oZXJpdGFuY2UiIHBy
b2R1Y3Rpb24gZm91bmQgZWxzZXdoZXJlIGluIHRoZSBncmFtbWFyLCBhbmQgc28gb24uCi0gKiBB
ZnRlciBlYWNoIGdyYW1tYXRpY2FsIHByb2R1Y3Rpb24gaXMgYSBKYXZhU2NyaXB0IGZ1bmN0aW9u
IGluIGN1cmx5IGJyYWNlcwotICogdGhhdCBnZXRzIGNhbGxlZCB3aXRoIHN1aXRhYmxlIGFyZ3Vt
ZW50cyBhbmQgcmV0dXJucyBzb21lIEphdmFTY3JpcHQgdmFsdWUuCi0gKgotICogKE5vdGUgdGhh
dCB0aGUgdmVyc2lvbiBvZiBXZWJJRExQYXJzZXIuanMgd2UgdXNlIG1pZ2h0IHNvbWV0aW1lcyBi
ZQotICogb3V0LW9mLWRhdGUgb3IgZm9ya2VkLikKLSAqCi0gKiBUaGUgbWVtYmVycyBhbmQgbWV0
aG9kcyBvZiB0aGUgY2xhc3NlcyBkZWZpbmVkIGJ5IHRoaXMgZmlsZSBhcmUgYWxsIGF0IGxlYXN0
Ci0gKiBicmllZmx5IGRvY3VtZW50ZWQsIGhvcGVmdWxseS4KLSAqLwotKGZ1bmN0aW9uKCl7Ci0i
dXNlIHN0cmljdCI7Ci0vLy8gSGVscGVycyAvLy8KLWZ1bmN0aW9uIGNvbnN0VmFsdWUgKGNudCkK
LS8vQHsKLXsKLSAgICBpZiAoY250LnR5cGUgPT09ICJudWxsIikgcmV0dXJuIG51bGw7Ci0gICAg
aWYgKGNudC50eXBlID09PSAiTmFOIikgcmV0dXJuIE5hTjsKLSAgICBpZiAoY250LnR5cGUgPT09
ICJJbmZpbml0eSIpIHJldHVybiBjbnQubmVnYXRpdmUgPyAtSW5maW5pdHkgOiBJbmZpbml0eTsK
LSAgICByZXR1cm4gY250LnZhbHVlOwotfQotCi0vL0B9Ci1mdW5jdGlvbiBtaW5PdmVybG9hZExl
bmd0aChvdmVybG9hZHMpCi0vL0B7Ci17Ci0gICAgaWYgKCFvdmVybG9hZHMubGVuZ3RoKSB7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiBvdmVybG9hZHMubWFwKGZ1bmN0
aW9uKGF0dHIpIHsKLSAgICAgICAgcmV0dXJuIGF0dHIuYXJndW1lbnRzID8gYXR0ci5hcmd1bWVu
dHMuZmlsdGVyKGZ1bmN0aW9uKGFyZykgewotICAgICAgICAgICAgcmV0dXJuICFhcmcub3B0aW9u
YWwgJiYgIWFyZy52YXJpYWRpYzsKLSAgICAgICAgfSkubGVuZ3RoIDogMDsKLSAgICB9KQotICAg
IC5yZWR1Y2UoZnVuY3Rpb24obSwgbikgeyByZXR1cm4gTWF0aC5taW4obSwgbik7IH0pOwotfQot
Ci0vL0B9Ci1mdW5jdGlvbiB0aHJvd09yUmVqZWN0KGFfdGVzdCwgb3BlcmF0aW9uLCBmbiwgb2Jq
LCBhcmdzLCAgbWVzc2FnZSwgY2IpCi0vL0B7Ci17Ci0gICAgaWYgKG9wZXJhdGlvbi5pZGxUeXBl
LmdlbmVyaWMgIT09ICJQcm9taXNlIikgewotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBmbi5hcHBseShvYmosIGFyZ3MpOwot
ICAgICAgICB9LCBtZXNzYWdlKTsKLSAgICAgICAgY2IoKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICB0cnkgewotICAgICAgICAgICAgcHJvbWlzZV9yZWplY3RzKGFfdGVzdCwgbmV3IFR5cGVFcnJv
cigpLCBmbi5hcHBseShvYmosIGFyZ3MpKS50aGVuKGNiLCBjYik7Ci0gICAgICAgIH0gY2F0Y2gg
KGUpewotICAgICAgICAgICAgYV90ZXN0LnN0ZXAoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0X3VucmVhY2hlZCgiVGhyb3dzIFwiIiArIGUgKyAiXCIgaW5zdGVhZCBvZiByZWpl
Y3RpbmcgcHJvbWlzZSIpOwotICAgICAgICAgICAgICAgIGNiKCk7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotLy9AfQotZnVuY3Rpb24gYXdhaXROQ2FsbGJhY2tzKG4s
IGNiLCBjdHgpCi0vL0B7Ci17Ci0gICAgdmFyIGNvdW50ZXIgPSAwOwotICAgIHJldHVybiBmdW5j
dGlvbigpIHsKLSAgICAgICAgY291bnRlcisrOwotICAgICAgICBpZiAoY291bnRlciA+PSBuKSB7
Ci0gICAgICAgICAgICBjYigpOwotICAgICAgICB9Ci0gICAgfTsKLX0KLQotLy9AfQotdmFyIGZy
b3VuZCA9Ci0vL0B7Ci0oZnVuY3Rpb24oKXsKLSAgICBpZiAoTWF0aC5mcm91bmQpIHJldHVybiBN
YXRoLmZyb3VuZDsKLQotICAgIHZhciBhcnIgPSBuZXcgRmxvYXQzMkFycmF5KDEpOwotICAgIHJl
dHVybiBmdW5jdGlvbiBmcm91bmQobikgewotICAgICAgICBhcnJbMF0gPSBuOwotICAgICAgICBy
ZXR1cm4gYXJyWzBdOwotICAgIH07Ci19KSgpOwotLy9AfQotCi0vLy8gSWRsQXJyYXkgLy8vCi0v
LyBFbnRyeSBwb2ludAotc2VsZi5JZGxBcnJheSA9IGZ1bmN0aW9uKCkKLS8vQHsKLXsKLSAgICAv
KioKLSAgICAgKiBBIG1hcCBmcm9tIHN0cmluZ3MgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbmFtZWQg
SWRsT2JqZWN0LCBzdWNoIGFzCi0gICAgICogSWRsSW50ZXJmYWNlIG9yIElkbEV4Y2VwdGlvbi4g
IFRoZXNlIGFyZSB0aGUgdGhpbmdzIHRoYXQgdGVzdCgpIHdpbGwgcnVuCi0gICAgICogdGVzdHMg
b24uCi0gICAgICovCi0gICAgdGhpcy5tZW1iZXJzID0ge307Ci0KLSAgICAvKioKLSAgICAgKiBB
IG1hcCBmcm9tIHN0cmluZ3MgdG8gYXJyYXlzIG9mIHN0cmluZ3MuICBUaGUga2V5cyBhcmUgaW50
ZXJmYWNlIG9yCi0gICAgICogZXhjZXB0aW9uIG5hbWVzLCBhbmQgYXJlIGV4cGVjdGVkIHRvIGFs
c28gZXhpc3QgYXMga2V5cyBpbiB0aGlzLm1lbWJlcnMKLSAgICAgKiAob3RoZXJ3aXNlIHRoZXkn
bGwgYmUgaWdub3JlZCkuICBUaGlzIGlzIHBvcHVsYXRlZCBieSBhZGRfb2JqZWN0cygpIC0tCi0g
ICAgICogc2VlIGRvY3VtZW50YXRpb24gYXQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLiAgVGhlIGFj
dHVhbCB0ZXN0cyB3aWxsIGJlCi0gICAgICogcnVuIGJ5IGNhbGxpbmcgdGhpcy5tZW1iZXJzW25h
bWVdLnRlc3Rfb2JqZWN0KG9iaikgZm9yIGVhY2ggb2JqIGluCi0gICAgICogdGhpcy5vYmplY3Rz
W25hbWVdLiAgb2JqIGlzIGEgc3RyaW5nIHRoYXQgd2lsbCBiZSBldmFsJ2QgdG8gcHJvZHVjZSBh
Ci0gICAgICogSmF2YVNjcmlwdCB2YWx1ZSwgd2hpY2ggaXMgc3VwcG9zZWQgdG8gYmUgYW4gb2Jq
ZWN0IGltcGxlbWVudGluZyB0aGUKLSAgICAgKiBnaXZlbiBJZGxPYmplY3QgKGludGVyZmFjZSwg
ZXhjZXB0aW9uLCBldGMuKS4KLSAgICAgKi8KLSAgICB0aGlzLm9iamVjdHMgPSB7fTsKLQotICAg
IC8qKgotICAgICAqIFdoZW4gYWRkaW5nIG11bHRpcGxlIGNvbGxlY3Rpb25zIG9mIElETHMgb25l
IGF0IGEgdGltZSwgYW4gZWFybGllciBvbmUKLSAgICAgKiBtaWdodCBjb250YWluIGEgcGFydGlh
bCBpbnRlcmZhY2Ugb3IgaW1wbGVtZW50cyBzdGF0ZW1lbnQgdGhhdCBkZXBlbmRzCi0gICAgICog
b24gYSBsYXRlciBvbmUuICBTYXZlIHRoZXNlIHVwIGFuZCBoYW5kbGUgdGhlbSByaWdodCBiZWZv
cmUgd2UgcnVuCi0gICAgICogdGVzdHMuCi0gICAgICoKLSAgICAgKiAucGFydGlhbHMgaXMgc2lt
cGx5IGFuIGFycmF5IG9mIG9iamVjdHMgZnJvbSBXZWJJRExQYXJzZXIuanMnCi0gICAgICogInBh
cnRpYWxpbnRlcmZhY2UiIHByb2R1Y3Rpb24uICAuaW1wbGVtZW50cyBtYXBzIHN0cmluZ3MgdG8g
YXJyYXlzIG9mCi0gICAgICogc3RyaW5ncywgc3VjaCB0aGF0Ci0gICAgICoKLSAgICAgKiAgIEEg
aW1wbGVtZW50cyBCOwotICAgICAqICAgQSBpbXBsZW1lbnRzIEM7Ci0gICAgICogICBEIGltcGxl
bWVudHMgRTsKLSAgICAgKgotICAgICAqIHJlc3VsdHMgaW4geyBBOiBbIkIiLCAiQyJdLCBEOiBb
IkUiXSB9LgotICAgICAqLwotICAgIHRoaXMucGFydGlhbHMgPSBbXTsKLSAgICB0aGlzWyJpbXBs
ZW1lbnRzIl0gPSB7fTsKLX07Ci0KLS8vQH0KLUlkbEFycmF5LnByb3RvdHlwZS5hZGRfaWRscyA9
IGZ1bmN0aW9uKHJhd19pZGxzKQotLy9AewotewotICAgIC8qKiBFbnRyeSBwb2ludC4gIFNlZSBk
b2N1bWVudGF0aW9uIGF0IGJlZ2lubmluZyBvZiBmaWxlLiAqLwotICAgIHRoaXMuaW50ZXJuYWxf
YWRkX2lkbHMoV2ViSURMMi5wYXJzZShyYXdfaWRscykpOwotfTsKLQotLy9AfQotSWRsQXJyYXku
cHJvdG90eXBlLmFkZF91bnRlc3RlZF9pZGxzID0gZnVuY3Rpb24ocmF3X2lkbHMpCi0vL0B7Ci17
Ci0gICAgLyoqIEVudHJ5IHBvaW50LiAgU2VlIGRvY3VtZW50YXRpb24gYXQgYmVnaW5uaW5nIG9m
IGZpbGUuICovCi0gICAgdmFyIHBhcnNlZF9pZGxzID0gV2ViSURMMi5wYXJzZShyYXdfaWRscyk7
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJzZWRfaWRscy5sZW5ndGg7IGkrKykKLSAgICB7
Ci0gICAgICAgIHBhcnNlZF9pZGxzW2ldLnVudGVzdGVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKCJt
ZW1iZXJzIiBpbiBwYXJzZWRfaWRsc1tpXSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh2
YXIgaiA9IDA7IGogPCBwYXJzZWRfaWRsc1tpXS5tZW1iZXJzLmxlbmd0aDsgaisrKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHBhcnNlZF9pZGxzW2ldLm1lbWJlcnNbal0udW50ZXN0
ZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHRoaXMuaW50
ZXJuYWxfYWRkX2lkbHMocGFyc2VkX2lkbHMpOwotfTsKLQotLy9AfQotSWRsQXJyYXkucHJvdG90
eXBlLmludGVybmFsX2FkZF9pZGxzID0gZnVuY3Rpb24ocGFyc2VkX2lkbHMpCi0vL0B7Ci17Ci0g
ICAgLyoqCi0gICAgICogSW50ZXJuYWwgaGVscGVyIGNhbGxlZCBieSBhZGRfaWRscygpIGFuZCBh
ZGRfdW50ZXN0ZWRfaWRscygpLgotICAgICAqIHBhcnNlZF9pZGxzIGlzIGFuIGFycmF5IG9mIG9i
amVjdHMgdGhhdCBjb21lIGZyb20gV2ViSURMUGFyc2VyLmpzJ3MKLSAgICAgKiAiZGVmaW5pdGlv
bnMiIHByb2R1Y3Rpb24uICBUaGUgYWRkX3VudGVzdGVkX2lkbHMoKSBlbnRyeSBwb2ludAotICAg
ICAqIGFkZGl0aW9uYWxseSBzZXRzIGFuIC51bnRlc3RlZCBwcm9wZXJ0eSBvbiBlYWNoIG9iamVj
dCAoYW5kIGl0cwotICAgICAqIC5tZW1iZXJzKSBzbyB0aGF0IHRoZXknbGwgYmUgc2tpcHBlZCBi
eSB0ZXN0KCkgLS0gdGhleSdsbCBvbmx5IGJlCi0gICAgICogdXNlZCBmb3IgYmFzZSBpbnRlcmZh
Y2VzIG9mIHRlc3RlZCBpbnRlcmZhY2VzLCByZXR1cm4gdHlwZXMsIGV0Yy4KLSAgICAgKi8KLSAg
ICBwYXJzZWRfaWRscy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnNlZF9pZGwpCi0gICAgewotICAgICAg
ICBpZiAocGFyc2VkX2lkbC50eXBlID09ICJpbnRlcmZhY2UiICYmIHBhcnNlZF9pZGwucGFydGlh
bCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5wYXJ0aWFscy5wdXNoKHBhcnNlZF9pZGwp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBhcnNlZF9p
ZGwudHlwZSA9PSAiaW1wbGVtZW50cyIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghKHBh
cnNlZF9pZGwudGFyZ2V0IGluIHRoaXNbImltcGxlbWVudHMiXSkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgdGhpc1siaW1wbGVtZW50cyJdW3BhcnNlZF9pZGwudGFyZ2V0XSA9IFtd
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpc1siaW1wbGVtZW50cyJdW3BhcnNlZF9p
ZGwudGFyZ2V0XS5wdXNoKHBhcnNlZF9pZGxbImltcGxlbWVudHMiXSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBwYXJzZWRfaWRsLmFycmF5ID0gdGhpczsKLSAg
ICAgICAgaWYgKHBhcnNlZF9pZGwubmFtZSBpbiB0aGlzLm1lbWJlcnMpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHRocm93ICJEdXBsaWNhdGUgaWRlbnRpZmllciAiICsgcGFyc2VkX2lkbC5uYW1l
OwotICAgICAgICB9Ci0gICAgICAgIHN3aXRjaChwYXJzZWRfaWRsLnR5cGUpCi0gICAgICAgIHsK
LSAgICAgICAgY2FzZSAiaW50ZXJmYWNlIjoKLSAgICAgICAgICAgIHRoaXMubWVtYmVyc1twYXJz
ZWRfaWRsLm5hbWVdID0KLSAgICAgICAgICAgICAgICBuZXcgSWRsSW50ZXJmYWNlKHBhcnNlZF9p
ZGwsIC8qIGlzX2NhbGxiYWNrID0gKi8gZmFsc2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSAiZGljdGlvbmFyeSI6Ci0gICAgICAgICAgICAvLyBOb3RoaW5nIHRvIHRlc3Qs
IGJ1dCB3ZSBuZWVkIHRoZSBkaWN0aW9uYXJ5IGluZm8gYXJvdW5kIGZvciB0eXBlCi0gICAgICAg
ICAgICAvLyBjaGVja3MKLSAgICAgICAgICAgIHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVd
ID0gbmV3IElkbERpY3Rpb25hcnkocGFyc2VkX2lkbCk7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlICJ0eXBlZGVmIjoKLSAgICAgICAgICAgIHRoaXMubWVtYmVyc1twYXJzZWRf
aWRsLm5hbWVdID0gbmV3IElkbFR5cGVkZWYocGFyc2VkX2lkbCk7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlICJjYWxsYmFjayI6Ci0gICAgICAgICAgICAvLyBUT0RPCi0gICAg
ICAgICAgICBjb25zb2xlLmxvZygiY2FsbGJhY2sgbm90IHlldCBzdXBwb3J0ZWQiKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgImVudW0iOgotICAgICAgICAgICAgdGhpcy5t
ZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0gPSBuZXcgSWRsRW51bShwYXJzZWRfaWRsKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgImNhbGxiYWNrIGludGVyZmFjZSI6Ci0gICAg
ICAgICAgICB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1lXSA9Ci0gICAgICAgICAgICAgICAg
bmV3IElkbEludGVyZmFjZShwYXJzZWRfaWRsLCAvKiBpc19jYWxsYmFjayA9ICovIHRydWUpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHRocm93
IHBhcnNlZF9pZGwubmFtZSArICI6ICIgKyBwYXJzZWRfaWRsLnR5cGUgKyAiIG5vdCB5ZXQgc3Vw
cG9ydGVkIjsKLSAgICAgICAgfQotICAgIH0uYmluZCh0aGlzKSk7Ci19OwotCi0vL0B9Ci1JZGxB
cnJheS5wcm90b3R5cGUuYWRkX29iamVjdHMgPSBmdW5jdGlvbihkaWN0KQotLy9AewotewotICAg
IC8qKiBFbnRyeSBwb2ludC4gIFNlZSBkb2N1bWVudGF0aW9uIGF0IGJlZ2lubmluZyBvZiBmaWxl
LiAqLwotICAgIGZvciAodmFyIGsgaW4gZGljdCkKLSAgICB7Ci0gICAgICAgIGlmIChrIGluIHRo
aXMub2JqZWN0cykKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5vYmplY3RzW2tdID0gdGhp
cy5vYmplY3RzW2tdLmNvbmNhdChkaWN0W2tdKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMub2JqZWN0c1trXSA9IGRpY3Rba107Ci0gICAgICAg
IH0KLSAgICB9Ci19OwotCi0vL0B9Ci1JZGxBcnJheS5wcm90b3R5cGUucHJldmVudF9tdWx0aXBs
ZV90ZXN0aW5nID0gZnVuY3Rpb24obmFtZSkKLS8vQHsKLXsKLSAgICAvKiogRW50cnkgcG9pbnQu
ICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBiZWdpbm5pbmcgb2YgZmlsZS4gKi8KLSAgICB0aGlzLm1l
bWJlcnNbbmFtZV0ucHJldmVudF9tdWx0aXBsZV90ZXN0aW5nID0gdHJ1ZTsKLX07Ci0KLS8vQH0K
LUlkbEFycmF5LnByb3RvdHlwZS5yZWN1cnNpdmVseV9nZXRfaW1wbGVtZW50cyA9IGZ1bmN0aW9u
KGludGVyZmFjZV9uYW1lKQotLy9AewotewotICAgIC8qKgotICAgICAqIEhlbHBlciBmdW5jdGlv
biBmb3IgdGVzdCgpLiAgUmV0dXJucyBhbiBhcnJheSBvZiB0aGluZ3MgdGhhdCBpbXBsZW1lbnQK
LSAgICAgKiBpbnRlcmZhY2VfbmFtZSwgc28gaWYgdGhlIElETCBjb250YWlucwotICAgICAqCi0g
ICAgICogICBBIGltcGxlbWVudHMgQjsKLSAgICAgKiAgIEIgaW1wbGVtZW50cyBDOwotICAgICAq
ICAgQiBpbXBsZW1lbnRzIEQ7Ci0gICAgICoKLSAgICAgKiB0aGVuIHJlY3Vyc2l2ZWx5X2dldF9p
bXBsZW1lbnRzKCJBIikgc2hvdWxkIHJldHVybiBbIkIiLCAiQyIsICJEIl0uCi0gICAgICovCi0g
ICAgdmFyIHJldCA9IHRoaXNbImltcGxlbWVudHMiXVtpbnRlcmZhY2VfbmFtZV07Ci0gICAgaWYg
KHJldCA9PT0gdW5kZWZpbmVkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFtdOwotICAgIH0KLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXNbImltcGxlbWVudHMiXVtpbnRlcmZhY2VfbmFtZV0u
bGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgICByZXQgPSByZXQuY29uY2F0KHRoaXMucmVjdXJz
aXZlbHlfZ2V0X2ltcGxlbWVudHMocmV0W2ldKSk7Ci0gICAgICAgIGlmIChyZXQuaW5kZXhPZihy
ZXRbaV0pICE9IHJldC5sYXN0SW5kZXhPZihyZXRbaV0pKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB0aHJvdyAiQ2lyY3VsYXIgaW1wbGVtZW50cyBzdGF0ZW1lbnRzIGludm9sdmluZyAiICsgcmV0
W2ldOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXQ7Ci19OwotCi1mdW5jdGlvbiBl
eHBvc2VkX2luKGdsb2JhbHMpIHsKLSAgICBpZiAoJ2RvY3VtZW50JyBpbiBzZWxmKSB7Ci0gICAg
ICAgIHJldHVybiBnbG9iYWxzLmluZGV4T2YoIldpbmRvdyIpID49IDA7Ci0gICAgfQotICAgIGlm
ICgnRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUnIGluIHNlbGYgJiYKLSAgICAgICAgc2VsZiBp
bnN0YW5jZW9mIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKSB7Ci0gICAgICAgIHJldHVybiBn
bG9iYWxzLmluZGV4T2YoIldvcmtlciIpID49IDAgfHwKLSAgICAgICAgICAgICAgIGdsb2JhbHMu
aW5kZXhPZigiRGVkaWNhdGVkV29ya2VyIikgPj0gMDsKLSAgICB9Ci0gICAgaWYgKCdTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZScgaW4gc2VsZiAmJgotICAgICAgICBzZWxmIGluc3RhbmNlb2YgU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUpIHsKLSAgICAgICAgcmV0dXJuIGdsb2JhbHMuaW5kZXhPZigi
V29ya2VyIikgPj0gMCB8fAotICAgICAgICAgICAgICAgZ2xvYmFscy5pbmRleE9mKCJTaGFyZWRX
b3JrZXIiKSA+PSAwOwotICAgIH0KLSAgICBpZiAoJ1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZScg
aW4gc2VsZiAmJgotICAgICAgICBzZWxmIGluc3RhbmNlb2YgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKSB7Ci0gICAgICAgIHJldHVybiBnbG9iYWxzLmluZGV4T2YoIldvcmtlciIpID49IDAgfHwK
LSAgICAgICAgICAgICAgIGdsb2JhbHMuaW5kZXhPZigiU2VydmljZVdvcmtlciIpID49IDA7Ci0g
ICAgfQotICAgIHRocm93ICJVbmV4cGVjdGVkIGdsb2JhbCBvYmplY3QiOwotfQotCi0vL0B9Ci1J
ZGxBcnJheS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkKLS8vQHsKLXsKLSAgICAvKiogRW50
cnkgcG9pbnQuICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBiZWdpbm5pbmcgb2YgZmlsZS4gKi8KLQot
ICAgIC8vIEZpcnN0IG1lcmdlIGluIGFsbCB0aGUgcGFydGlhbCBpbnRlcmZhY2VzIGFuZCBpbXBs
ZW1lbnRzIHN0YXRlbWVudHMgd2UKLSAgICAvLyBlbmNvdW50ZXJlZC4KLSAgICB0aGlzLnBhcnRp
YWxzLmZvckVhY2goZnVuY3Rpb24ocGFyc2VkX2lkbCkKLSAgICB7Ci0gICAgICAgIGlmICghKHBh
cnNlZF9pZGwubmFtZSBpbiB0aGlzLm1lbWJlcnMpCi0gICAgICAgIHx8ICEodGhpcy5tZW1iZXJz
W3BhcnNlZF9pZGwubmFtZV0gaW5zdGFuY2VvZiBJZGxJbnRlcmZhY2UpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICB0aHJvdyAiUGFydGlhbCBpbnRlcmZhY2UgIiArIHBhcnNlZF9pZGwubmFtZSAr
ICIgd2l0aCBubyBvcmlnaW5hbCBpbnRlcmZhY2UiOwotICAgICAgICB9Ci0gICAgICAgIGlmIChw
YXJzZWRfaWRsLmV4dEF0dHJzKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXJzZWRfaWRsLmV4
dEF0dHJzLmZvckVhY2goZnVuY3Rpb24oZXh0QXR0cikKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1lXS5leHRBdHRycy5wdXNoKGV4dEF0
dHIpOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotICAgICAgICBwYXJz
ZWRfaWRsLm1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbihtZW1iZXIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdLm1lbWJlcnMucHVzaChuZXcgSWRs
SW50ZXJmYWNlTWVtYmVyKG1lbWJlcikpOwotICAgICAgICB9LmJpbmQodGhpcykpOwotICAgIH0u
YmluZCh0aGlzKSk7Ci0gICAgdGhpcy5wYXJ0aWFscyA9IFtdOwotCi0gICAgZm9yICh2YXIgbGhz
IGluIHRoaXNbImltcGxlbWVudHMiXSkKLSAgICB7Ci0gICAgICAgIHRoaXMucmVjdXJzaXZlbHlf
Z2V0X2ltcGxlbWVudHMobGhzKS5mb3JFYWNoKGZ1bmN0aW9uKHJocykKLSAgICAgICAgewotICAg
ICAgICAgICAgdmFyIGVyclN0ciA9IGxocyArICIgaW1wbGVtZW50cyAiICsgcmhzICsgIiwgYnV0
ICI7Ci0gICAgICAgICAgICBpZiAoIShsaHMgaW4gdGhpcy5tZW1iZXJzKSkgdGhyb3cgZXJyU3Ry
ICsgbGhzICsgIiBpcyB1bmRlZmluZWQuIjsKLSAgICAgICAgICAgIGlmICghKHRoaXMubWVtYmVy
c1tsaHNdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkgdGhyb3cgZXJyU3RyICsgbGhzICsgIiBp
cyBub3QgYW4gaW50ZXJmYWNlLiI7Ci0gICAgICAgICAgICBpZiAoIShyaHMgaW4gdGhpcy5tZW1i
ZXJzKSkgdGhyb3cgZXJyU3RyICsgcmhzICsgIiBpcyB1bmRlZmluZWQuIjsKLSAgICAgICAgICAg
IGlmICghKHRoaXMubWVtYmVyc1tyaHNdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkgdGhyb3cg
ZXJyU3RyICsgcmhzICsgIiBpcyBub3QgYW4gaW50ZXJmYWNlLiI7Ci0gICAgICAgICAgICB0aGlz
Lm1lbWJlcnNbcmhzXS5tZW1iZXJzLmZvckVhY2goZnVuY3Rpb24obWVtYmVyKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1tsaHNdLm1lbWJlcnMucHVzaChuZXcg
SWRsSW50ZXJmYWNlTWVtYmVyKG1lbWJlcikpOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsK
LSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9Ci0gICAgdGhpc1siaW1wbGVtZW50cyJdID0g
e307Ci0KLSAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLm1lbWJlcnMpLmZvckVh
Y2goZnVuY3Rpb24obWVtYmVyTmFtZSkgewotICAgICAgICB2YXIgbWVtYmVyID0gdGhpcy5tZW1i
ZXJzW21lbWJlck5hbWVdOwotICAgICAgICBpZiAoIShtZW1iZXIgaW5zdGFuY2VvZiBJZGxJbnRl
cmZhY2UpKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIg
ZXhwb3NlZCA9IG1lbWJlci5leHRBdHRycy5maWx0ZXIoZnVuY3Rpb24oYSkgeyByZXR1cm4gYS5u
YW1lID09ICJFeHBvc2VkIiB9KTsKLSAgICAgICAgaWYgKGV4cG9zZWQubGVuZ3RoID4gMSkgewot
ICAgICAgICAgICAgdGhyb3cgIlVuZXhwZWN0ZWQgRXhwb3NlZCBleHRlbmRlZCBhdHRyaWJ1dGVz
IG9uICIgKyBtZW1iZXJOYW1lICsgIjogIiArIGV4cG9zZWQ7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2YXIgZ2xvYmFscyA9IGV4cG9zZWQubGVuZ3RoID09PSAxCi0gICAgICAgICAgICAgICAgICAg
ID8gZXhwb3NlZFswXS5yaHMudmFsdWUKLSAgICAgICAgICAgICAgICAgICAgOiBbIldpbmRvdyJd
OwotICAgICAgICBtZW1iZXIuZXhwb3NlZCA9IGV4cG9zZWRfaW4oZ2xvYmFscyk7Ci0gICAgfS5i
aW5kKHRoaXMpKTsKLQotICAgIC8vIE5vdyBydW4gdGVzdCgpIG9uIGV2ZXJ5IG1lbWJlciwgYW5k
IHRlc3Rfb2JqZWN0KCkgZm9yIGV2ZXJ5IG9iamVjdC4KLSAgICBmb3IgKHZhciBuYW1lIGluIHRo
aXMubWVtYmVycykKLSAgICB7Ci0gICAgICAgIHRoaXMubWVtYmVyc1tuYW1lXS50ZXN0KCk7Ci0g
ICAgICAgIGlmIChuYW1lIGluIHRoaXMub2JqZWN0cykKLSAgICAgICAgewotICAgICAgICAgICAg
dGhpcy5vYmplY3RzW25hbWVdLmZvckVhY2goZnVuY3Rpb24oc3RyKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1tuYW1lXS50ZXN0X29iamVjdChzdHIpOwotICAg
ICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLS8vQH0KLUlk
bEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcyA9IGZ1bmN0aW9uKHZhbHVlLCB0eXBlKQot
Ly9AewotewotICAgIC8qKgotICAgICAqIEhlbHBlciBmdW5jdGlvbiB0aGF0IHRlc3RzIHRoYXQg
dmFsdWUgaXMgYW4gaW5zdGFuY2Ugb2YgdHlwZSBhY2NvcmRpbmcKLSAgICAgKiB0byB0aGUgcnVs
ZXMgb2YgV2ViSURMLiAgdmFsdWUgaXMgYW55IEphdmFTY3JpcHQgdmFsdWUsIGFuZCB0eXBlIGlz
IGFuCi0gICAgICogb2JqZWN0IHByb2R1Y2VkIGJ5IFdlYklETFBhcnNlci5qcycgInR5cGUiIHBy
b2R1Y3Rpb24uICBUaGF0IHByb2R1Y3Rpb24KLSAgICAgKiBpcyBmYWlybHkgZWxhYm9yYXRlIGR1
ZSB0byB0aGUgY29tcGxleGl0eSBvZiBXZWJJREwncyB0eXBlcywgc28gaXQncwotICAgICAqIGJl
c3QgdG8gbG9vayBhdCB0aGUgZ3JhbW1hciB0byBmaWd1cmUgb3V0IHdoYXQgcHJvcGVydGllcyBp
dCBtaWdodCBoYXZlLgotICAgICAqLwotICAgIGlmICh0eXBlLmlkbFR5cGUgPT0gImFueSIpCi0g
ICAgewotICAgICAgICAvLyBObyBhc3NlcnRpb25zIHRvIG1ha2UKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmICh0eXBlLm51bGxhYmxlICYmIHZhbHVlID09PSBudWxsKQotICAgIHsK
LSAgICAgICAgLy8gVGhpcyBpcyBmaW5lCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAodHlwZS5hcnJheSkKLSAgICB7Ci0gICAgICAgIC8vIFRPRE86IG5vdCBzdXBwb3J0ZWQgeWV0
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodHlwZS5zZXF1ZW5jZSkKLSAgICB7
Ci0gICAgICAgIGFzc2VydF90cnVlKEFycmF5LmlzQXJyYXkodmFsdWUpLCAiaXMgbm90IGFycmF5
Iik7Ci0gICAgICAgIGlmICghdmFsdWUubGVuZ3RoKQotICAgICAgICB7Ci0gICAgICAgICAgICAv
LyBOb3RoaW5nIHdlIGNhbiBkby4KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICB0aGlzLmFzc2VydF90eXBlX2lzKHZhbHVlWzBdLCB0eXBlLmlkbFR5cGUuaWRsVHlwZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodHlwZS5nZW5lcmljID09PSAiUHJv
bWlzZSIpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUoInRoZW4iIGluIHZhbHVlLCAiQXR0cmlidXRl
IHdpdGggYSBQcm9taXNlIHR5cGUgaGFzIGEgdGhlbiBwcm9wZXJ0eSIpOwotICAgICAgICAvLyBU
T0RPOiBJZGVhbGx5LCB3ZSB3b3VsZCBjaGVjayBvbiBwcm9qZWN0IGZ1bGZpbGxtZW50Ci0gICAg
ICAgIC8vIHRoYXQgd2UgZ2V0IHRoZSByaWdodCB0eXBlCi0gICAgICAgIC8vIGJ1dCB0aGF0IHdv
dWxkIHJlcXVpcmUgbWFraW5nIHRoZSB0eXBlIGNoZWNrIGFzeW5jCi0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICB0eXBlID0gdHlwZS5pZGxUeXBlOwotCi0gICAgc3dpdGNoKHR5cGUpCi0g
ICAgewotICAgICAgICBjYXNlICJ2b2lkIjoKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFs
dWUsIHVuZGVmaW5lZCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY2FzZSAiYm9v
bGVhbiI6Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgImJvb2xlYW4i
KTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjYXNlICJieXRlIjoKLSAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0gICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgIm5vdCBhbiBpbnRlZ2VyIik7
Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSgtMTI4IDw9IHZhbHVlICYmIHZhbHVlIDw9IDEyNywg
ImJ5dGUgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWy0xMjgsIDEyN10iKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBjYXNlICJvY3RldCI6Ci0gICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJub3QgYW4gaW50ZWdlciIpOwotICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAyNTUsICJvY3RldCAiICsgdmFs
dWUgKyAiIG5vdCBpbiByYW5nZSBbMCwgMjU1XSIpOwotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGNhc2UgInNob3J0IjoKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZh
bHVlLCAibnVtYmVyIik7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZs
b29yKHZhbHVlKSwgIm5vdCBhbiBpbnRlZ2VyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSgt
MzI3NjggPD0gdmFsdWUgJiYgdmFsdWUgPD0gMzI3NjcsICJzaG9ydCAiICsgdmFsdWUgKyAiIG5v
dCBpbiByYW5nZSBbLTMyNzY4LCAzMjc2N10iKTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBjYXNlICJ1bnNpZ25lZCBzaG9ydCI6Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwg
TWF0aC5mbG9vcih2YWx1ZSksICJub3QgYW4gaW50ZWdlciIpOwotICAgICAgICAgICAgYXNzZXJ0
X3RydWUoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSA2NTUzNSwgInVuc2lnbmVkIHNob3J0ICIgKyB2
YWx1ZSArICIgbm90IGluIHJhbmdlIFswLCA2NTUzNV0iKTsKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBjYXNlICJsb25nIjoKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9m
IHZhbHVlLCAibnVtYmVyIik7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRo
LmZsb29yKHZhbHVlKSwgIm5vdCBhbiBpbnRlZ2VyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1
ZSgtMjE0NzQ4MzY0OCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAyMTQ3NDgzNjQ3LCAibG9uZyAiICsg
dmFsdWUgKyAiIG5vdCBpbiByYW5nZSBbLTIxNDc0ODM2NDgsIDIxNDc0ODM2NDddIik7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY2FzZSAidW5zaWduZWQgbG9uZyI6Ci0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJub3QgYW4gaW50ZWdlciIp
OwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSA0Mjk0OTY3
Mjk1LCAidW5zaWduZWQgbG9uZyAiICsgdmFsdWUgKyAiIG5vdCBpbiByYW5nZSBbMCwgNDI5NDk2
NzI5NV0iKTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjYXNlICJsb25nIGxvbmci
OgotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjYXNlICJ1bnNpZ25lZCBsb25nIGxvbmciOgot
ICAgICAgICBjYXNlICJET01UaW1lU3RhbXAiOgotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0gdmFs
dWUsICJ1bnNpZ25lZCBsb25nIGxvbmcgaXMgbmVnYXRpdmUiKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBjYXNlICJmbG9hdCI6Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwg
ZnJvdW5kKHZhbHVlKSwgImZsb2F0IHJvdW5kZWQgdG8gMzItYml0IGZsb2F0IHNob3VsZCBiZSBp
dHNlbGYiKTsKLSAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCBJbmZpbml0eSk7
Ci0gICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1ZSwgLUluZmluaXR5KTsKLSAgICAg
ICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCBOYU4pOwotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGNhc2UgIkRPTUhpZ2hSZXNUaW1lU3RhbXAiOgotICAgICAgICBjYXNlICJk
b3VibGUiOgotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIi
KTsKLSAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCBJbmZpbml0eSk7Ci0gICAg
ICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1ZSwgLUluZmluaXR5KTsKLSAgICAgICAgICAg
IGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCBOYU4pOwotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGNhc2UgInVucmVzdHJpY3RlZCBmbG9hdCI6Ci0gICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2
YWx1ZSwgZnJvdW5kKHZhbHVlKSwgInVucmVzdHJpY3RlZCBmbG9hdCByb3VuZGVkIHRvIDMyLWJp
dCBmbG9hdCBzaG91bGQgYmUgaXRzZWxmIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgY2FzZSAidW5yZXN0cmljdGVkIGRvdWJsZSI6Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGNhc2UgIkRPTVN0cmluZyI6Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1
ZSwgInN0cmluZyIpOwotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNhc2UgIkJ5dGVT
dHJpbmciOgotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJzdHJpbmci
KTsKLSAgICAgICAgICAgIGFzc2VydF9yZWdleHBfbWF0Y2godmFsdWUsIC9eW1x4MDAtXHg3Rl0q
JC8pOwotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNhc2UgIlVTVlN0cmluZyI6Ci0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgInN0cmluZyIpOwotICAgICAg
ICAgICAgYXNzZXJ0X3JlZ2V4cF9tYXRjaCh2YWx1ZSwgL14oW1x4MDAtXHVkN2ZmXHVlMDAwLVx1
ZmZmZl18W1x1ZDgwMC1cdWRiZmZdW1x1ZGMwMC1cdWRmZmZdKSokLyk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgY2FzZSAib2JqZWN0IjoKLSAgICAgICAgICAgIGFzc2VydF90cnVl
KHR5cGVvZiB2YWx1ZSA9PSAib2JqZWN0IiB8fCB0eXBlb2YgdmFsdWUgPT0gImZ1bmN0aW9uIiwg
Indyb25nIHR5cGU6IG5vdCBvYmplY3Qgb3IgZnVuY3Rpb24iKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoISh0eXBlIGluIHRoaXMubWVtYmVycykpCi0gICAgewotICAg
ICAgICB0aHJvdyAiVW5yZWNvZ25pemVkIHR5cGUgIiArIHR5cGU7Ci0gICAgfQotCi0gICAgaWYg
KHRoaXMubWVtYmVyc1t0eXBlXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkKLSAgICB7Ci0gICAg
ICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcnVuIHRoZSBmdWxsCi0gICAgICAgIC8vIElkbEludGVy
ZmFjZS5wcm90b3R5cGUudGVzdF9pbnN0YW5jZV9vZiwgYmVjYXVzZSB0aGF0IGNvdWxkIHJlc3Vs
dAotICAgICAgICAvLyBpbiBhbiBpbmZpbml0ZSBsb29wLiAgVE9ETzogVGhpcyBtZWFucyB3ZSBk
b24ndCBoYXZlIHRlc3RzIGZvcgotICAgICAgICAvLyBOb0ludGVyZmFjZU9iamVjdCBpbnRlcmZh
Y2VzLCBhbmQgd2UgYWxzbyBjYW4ndCB0ZXN0IG9iamVjdHMgdGhhdAotICAgICAgICAvLyBjb21l
IGZyb20gYW5vdGhlciBzZWxmLgotICAgICAgICBhc3NlcnRfdHJ1ZSh0eXBlb2YgdmFsdWUgPT0g
Im9iamVjdCIgfHwgdHlwZW9mIHZhbHVlID09ICJmdW5jdGlvbiIsICJ3cm9uZyB0eXBlOiBub3Qg
b2JqZWN0IG9yIGZ1bmN0aW9uIik7Ci0gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVj
dAotICAgICAgICAmJiAhdGhpcy5tZW1iZXJzW3R5cGVdLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUo
Ik5vSW50ZXJmYWNlT2JqZWN0IikKLSAgICAgICAgJiYgdHlwZSBpbiBzZWxmKQotICAgICAgICB7
Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSh2YWx1ZSBpbnN0YW5jZW9mIHNlbGZbdHlwZV0sICJu
b3QgaW5zdGFuY2VvZiAiICsgdHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAo
dGhpcy5tZW1iZXJzW3R5cGVdIGluc3RhbmNlb2YgSWRsRW51bSkKLSAgICB7Ci0gICAgICAgIGFz
c2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAic3RyaW5nIik7Ci0gICAgfQotICAgIGVsc2UgaWYg
KHRoaXMubWVtYmVyc1t0eXBlXSBpbnN0YW5jZW9mIElkbERpY3Rpb25hcnkpCi0gICAgewotICAg
ICAgICAvLyBUT0RPOiBUZXN0IHdoZW4gd2UgYWN0dWFsbHkgaGF2ZSBzb21ldGhpbmcgdG8gdGVz
dCB0aGlzIG9uCi0gICAgfQotICAgIGVsc2UgaWYgKHRoaXMubWVtYmVyc1t0eXBlXSBpbnN0YW5j
ZW9mIElkbFR5cGVkZWYpCi0gICAgewotICAgICAgICAvLyBUT0RPOiBUZXN0IHdoZW4gd2UgYWN0
dWFsbHkgaGF2ZSBzb21ldGhpbmcgdG8gdGVzdCB0aGlzIG9uCi0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIHRocm93ICJUeXBlICIgKyB0eXBlICsgIiBpc24ndCBhbiBpbnRlcmZhY2Ug
b3IgZGljdGlvbmFyeSI7Ci0gICAgfQotfTsKLS8vQH0KLQotLy8vIElkbE9iamVjdCAvLy8KLWZ1
bmN0aW9uIElkbE9iamVjdCgpIHt9Ci1JZGxPYmplY3QucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlv
bigpCi0vL0B7Ci17Ci0gICAgLyoqCi0gICAgICogQnkgZGVmYXVsdCwgdGhpcyBkb2VzIG5vdGhp
bmcsIHNvIG5vIGFjdHVhbCB0ZXN0cyBhcmUgcnVuIGZvciBJZGxPYmplY3RzCi0gICAgICogdGhh
dCBkb24ndCBkZWZpbmUgYW55IChlLmcuLCBJZGxEaWN0aW9uYXJ5IGF0IHRoZSB0aW1lIG9mIHRo
aXMgd3JpdGluZykuCi0gICAgICovCi19OwotCi0vL0B9Ci1JZGxPYmplY3QucHJvdG90eXBlLmhh
c19leHRlbmRlZF9hdHRyaWJ1dGUgPSBmdW5jdGlvbihuYW1lKQotLy9AewotewotICAgIC8qKgot
ICAgICAqIFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZvciB0aGluZ3MgdGhhdCBzdXBwb3J0IGV4
dGVuZGVkIGF0dHJpYnV0ZXMsCi0gICAgICogc3VjaCBhcyBpbnRlcmZhY2VzLCBleGNlcHRpb25z
LCBhbmQgbWVtYmVycy4KLSAgICAgKi8KLSAgICByZXR1cm4gdGhpcy5leHRBdHRycy5zb21lKGZ1
bmN0aW9uKG8pCi0gICAgewotICAgICAgICByZXR1cm4gby5uYW1lID09IG5hbWU7Ci0gICAgfSk7
Ci19OwotCi0vL0B9Ci0KLS8vLyBJZGxEaWN0aW9uYXJ5IC8vLwotLy8gVXNlZCBmb3IgSWRsQXJy
YXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lzCi1mdW5jdGlvbiBJZGxEaWN0aW9uYXJ5KG9iaikK
LS8vQHsKLXsKLSAgICAvKioKLSAgICAgKiBvYmogaXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5IHRo
ZSBXZWJJRExQYXJzZXIuanMgImRpY3Rpb25hcnkiCi0gICAgICogcHJvZHVjdGlvbi4KLSAgICAg
Ki8KLQotICAgIC8qKiBTZWxmLWV4cGxhbmF0b3J5LiAqLwotICAgIHRoaXMubmFtZSA9IG9iai5u
YW1lOwotCi0gICAgLyoqIEFuIGFycmF5IG9mIG9iamVjdHMgcHJvZHVjZWQgYnkgdGhlICJkaWN0
aW9uYXJ5TWVtYmVyIiBwcm9kdWN0aW9uLiAqLwotICAgIHRoaXMubWVtYmVycyA9IG9iai5tZW1i
ZXJzOwotCi0gICAgLyoqCi0gICAgICogVGhlIG5hbWUgKGFzIGEgc3RyaW5nKSBvZiB0aGUgZGlj
dGlvbmFyeSB0eXBlIHdlIGluaGVyaXQgZnJvbSwgb3IgbnVsbAotICAgICAqIGlmIHRoZXJlIGlz
IG5vbmUuCi0gICAgICovCi0gICAgdGhpcy5iYXNlID0gb2JqLmluaGVyaXRhbmNlOwotfQotCi0v
L0B9Ci1JZGxEaWN0aW9uYXJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSWRsT2JqZWN0LnBy
b3RvdHlwZSk7Ci0KLS8vLyBJZGxJbnRlcmZhY2UgLy8vCi1mdW5jdGlvbiBJZGxJbnRlcmZhY2Uo
b2JqLCBpc19jYWxsYmFjaykKLS8vQHsKLXsKLSAgICAvKioKLSAgICAgKiBvYmogaXMgYW4gb2Jq
ZWN0IHByb2R1Y2VkIGJ5IHRoZSBXZWJJRExQYXJzZXIuanMgImludGVyZmFjZSIgcHJvZHVjdGlv
bi4KLSAgICAgKi8KLQotICAgIC8qKiBTZWxmLWV4cGxhbmF0b3J5LiAqLwotICAgIHRoaXMubmFt
ZSA9IG9iai5uYW1lOwotCi0gICAgLyoqIEEgYmFjay1yZWZlcmVuY2UgdG8gb3VyIElkbEFycmF5
LiAqLwotICAgIHRoaXMuYXJyYXkgPSBvYmouYXJyYXk7Ci0KLSAgICAvKioKLSAgICAgKiBBbiBp
bmRpY2F0b3Igb2Ygd2hldGhlciB3ZSBzaG91bGQgcnVuIHRlc3RzIG9uIHRoZSBpbnRlcmZhY2Ug
b2JqZWN0IGFuZAotICAgICAqIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0LiBUZXN0cyBvbiBt
ZW1iZXJzIGFyZSBjb250cm9sbGVkIGJ5IC51bnRlc3RlZAotICAgICAqIG9uIGVhY2ggbWVtYmVy
LCBub3QgdGhpcy4KLSAgICAgKi8KLSAgICB0aGlzLnVudGVzdGVkID0gb2JqLnVudGVzdGVkOwot
Ci0gICAgLyoqIEFuIGFycmF5IG9mIG9iamVjdHMgcHJvZHVjZWQgYnkgdGhlICJFeHRBdHRyIiBw
cm9kdWN0aW9uLiAqLwotICAgIHRoaXMuZXh0QXR0cnMgPSBvYmouZXh0QXR0cnM7Ci0KLSAgICAv
KiogQW4gYXJyYXkgb2YgSWRsSW50ZXJmYWNlTWVtYmVycy4gKi8KLSAgICB0aGlzLm1lbWJlcnMg
PSBvYmoubWVtYmVycy5tYXAoZnVuY3Rpb24obSl7cmV0dXJuIG5ldyBJZGxJbnRlcmZhY2VNZW1i
ZXIobSk7IH0pOwotICAgIGlmICh0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIlVuZm9yZ2Vh
YmxlIikpIHsKLSAgICAgICAgdGhpcy5tZW1iZXJzCi0gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0
aW9uKG0pIHsgcmV0dXJuICFtWyJzdGF0aWMiXSAmJiAobS50eXBlID09ICJhdHRyaWJ1dGUiIHx8
IG0udHlwZSA9PSAib3BlcmF0aW9uIik7IH0pCi0gICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlv
bihtKSB7IHJldHVybiBtLmlzVW5mb3JnZWFibGUgPSB0cnVlOyB9KTsKLSAgICB9Ci0KLSAgICAv
KioKLSAgICAgKiBUaGUgbmFtZSAoYXMgYSBzdHJpbmcpIG9mIHRoZSB0eXBlIHdlIGluaGVyaXQg
ZnJvbSwgb3IgbnVsbCBpZiB0aGVyZSBpcwotICAgICAqIG5vbmUuCi0gICAgICovCi0gICAgdGhp
cy5iYXNlID0gb2JqLmluaGVyaXRhbmNlOwotCi0gICAgdGhpcy5faXNfY2FsbGJhY2sgPSBpc19j
YWxsYmFjazsKLX0KLS8vQH0KLUlkbEludGVyZmFjZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KElkbE9iamVjdC5wcm90b3R5cGUpOwotSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5pc19jYWxsYmFj
ayA9IGZ1bmN0aW9uKCkKLS8vQHsKLXsKLSAgICByZXR1cm4gdGhpcy5faXNfY2FsbGJhY2s7Ci19
OwotLy9AfQotCi1JZGxJbnRlcmZhY2UucHJvdG90eXBlLmhhc19jb25zdGFudHMgPSBmdW5jdGlv
bigpCi0vL0B7Ci17Ci0gICAgcmV0dXJuIHRoaXMubWVtYmVycy5zb21lKGZ1bmN0aW9uKG1lbWJl
cikgewotICAgICAgICByZXR1cm4gbWVtYmVyLnR5cGUgPT09ICJjb25zdCI7Ci0gICAgfSk7Ci19
OwotLy9AfQotCi1JZGxJbnRlcmZhY2UucHJvdG90eXBlLmlzX2dsb2JhbCA9IGZ1bmN0aW9uKCkK
LS8vQHsKLXsKLSAgICByZXR1cm4gdGhpcy5leHRBdHRycy5zb21lKGZ1bmN0aW9uKGF0dHJpYnV0
ZSkgewotICAgICAgICByZXR1cm4gYXR0cmlidXRlLm5hbWUgPT09ICJHbG9iYWwiIHx8Ci0gICAg
ICAgICAgICAgICBhdHRyaWJ1dGUubmFtZSA9PT0gIlByaW1hcnlHbG9iYWwiOwotICAgIH0pOwot
fTsKLS8vQH0KLQotSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKQotLy9A
ewotewotICAgIGlmICh0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIk5vSW50ZXJmYWNlT2Jq
ZWN0IikpCi0gICAgewotICAgICAgICAvLyBObyB0ZXN0cyB0byBkbyB3aXRob3V0IGFuIGluc3Rh
bmNlLiAgVE9ETzogV2Ugc2hvdWxkIHN0aWxsIGJlIGFibGUKLSAgICAgICAgLy8gdG8gcnVuIHRl
c3RzIG9uIHRoZSBwcm90b3R5cGUgb2JqZWN0LCBpZiB3ZSBvYnRhaW4gb25lIHRocm91Z2ggc29t
ZQotICAgICAgICAvLyBvdGhlciBtZWFucy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghdGhpcy5leHBvc2VkKSB7Ci0gICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBhc3NlcnRfZmFsc2UodGhpcy5uYW1lIGluIHNlbGYpOwotICAgICAgICB9LmJpbmQodGhp
cyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2Yg
aW50ZXJmYWNlIG9iamVjdCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCF0
aGlzLnVudGVzdGVkKQotICAgIHsKLSAgICAgICAgLy8gRmlyc3QgdGVzdCB0aGluZ3MgdG8gZG8g
d2l0aCB0aGUgZXhjZXB0aW9uL2ludGVyZmFjZSBvYmplY3QgYW5kCi0gICAgICAgIC8vIGV4Y2Vw
dGlvbi9pbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdC4KLSAgICAgICAgdGhpcy50ZXN0X3NlbGYo
KTsKLSAgICB9Ci0gICAgLy8gVGhlbiB0ZXN0IHRoaW5ncyB0byBkbyB3aXRoIGl0cyBtZW1iZXJz
IChjb25zdGFudHMsIGZpZWxkcywgYXR0cmlidXRlcywKLSAgICAvLyBvcGVyYXRpb25zLCAuIC4g
LikuICBUaGVzZSBhcmUgcnVuIGV2ZW4gaWYgLnVudGVzdGVkIGlzIHRydWUsIGJlY2F1c2UKLSAg
ICAvLyBtZW1iZXJzIG1pZ2h0IHRoZW1zZWx2ZXMgYmUgbWFya2VkIGFzIC51bnRlc3RlZC4gIFRo
aXMgbWlnaHQgaGFwcGVuIHRvCi0gICAgLy8gaW50ZXJmYWNlcyBpZiB0aGUgaW50ZXJmYWNlIGl0
c2VsZiBpcyB1bnRlc3RlZCBidXQgYSBwYXJ0aWFsIGludGVyZmFjZQotICAgIC8vIHRoYXQgZXh0
ZW5kcyBpdCBpcyB0ZXN0ZWQgLS0gdGhlbiB0aGUgaW50ZXJmYWNlIGl0c2VsZiBhbmQgaXRzIGlu
aXRpYWwKLSAgICAvLyBtZW1iZXJzIHdpbGwgYmUgbWFya2VkIGFzIHVudGVzdGVkLCBidXQgdGhl
IG1lbWJlcnMgYWRkZWQgYnkgdGhlIHBhcnRpYWwKLSAgICAvLyBpbnRlcmZhY2UgYXJlIHN0aWxs
IHRlc3RlZC4KLSAgICB0aGlzLnRlc3RfbWVtYmVycygpOwotfTsKLS8vQH0KLQotSWRsSW50ZXJm
YWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBmdW5jdGlvbigpCi0vL0B7Ci17Ci0gICAgdGVzdChm
dW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklETCBh
cyBvZiAyMDE1LTAxLTEzLgotCi0gICAgICAgIC8vICJGb3IgZXZlcnkgaW50ZXJmYWNlIHRoYXQg
aXMgZXhwb3NlZCBpbiBhIGdpdmVuIEVDTUFTY3JpcHQgZ2xvYmFsCi0gICAgICAgIC8vIGVudmly
b25tZW50IGFuZDoKLSAgICAgICAgLy8gKiBpcyBhIGNhbGxiYWNrIGludGVyZmFjZSB0aGF0IGhh
cyBjb25zdGFudHMgZGVjbGFyZWQgb24gaXQsIG9yCi0gICAgICAgIC8vICogaXMgYSBub24tY2Fs
bGJhY2sgaW50ZXJmYWNlIHRoYXQgaXMgbm90IGRlY2xhcmVkIHdpdGggdGhlCi0gICAgICAgIC8v
ICAgW05vSW50ZXJmYWNlT2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGUsCi0gICAgICAgIC8vIGEg
Y29ycmVzcG9uZGluZyBwcm9wZXJ0eSBNVVNUIGV4aXN0IG9uIHRoZSBFQ01BU2NyaXB0IGdsb2Jh
bCBvYmplY3QuCi0gICAgICAgIC8vIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBpcyB0aGUgaWRl
bnRpZmllciBvZiB0aGUgaW50ZXJmYWNlLCBhbmQgaXRzCi0gICAgICAgIC8vIHZhbHVlIGlzIGFu
IG9iamVjdCBjYWxsZWQgdGhlIGludGVyZmFjZSBvYmplY3QuCi0gICAgICAgIC8vIFRoZSBwcm9w
ZXJ0eSBoYXMgdGhlIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IHRydWUsCi0gICAgICAgIC8v
IFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9LiIKLSAgICAg
ICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSAmJiAhdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRPRE86IFNob3VsZCB3
ZSB0ZXN0IGhlcmUgdGhhdCB0aGUgcHJvcGVydHkgaXMgYWN0dWFsbHkgd3JpdGFibGUKLSAgICAg
ICAgLy8gZXRjLiwgb3IgdHJ1c3QgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPwotICAgICAgICBh
c3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVl
KHRoaXMubmFtZSkpOwotICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3Ioc2VsZiwgdGhpcy5uYW1lKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGlu
IGRlc2MsICJzZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBo
YXMgZ2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAic2VsZidz
IHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgaGFzIHNldHRlciIpOwot
ICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLndyaXRhYmxlLCAic2VsZidzIHByb3BlcnR5ICIgKyBm
b3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgaXMgbm90IHdyaXRhYmxlIik7Ci0gICAgICAgIGFz
c2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsICJzZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1hdF92
YWx1ZSh0aGlzLm5hbWUpICsgIiBpcyBlbnVtZXJhYmxlIik7Ci0gICAgICAgIGFzc2VydF90cnVl
KGRlc2MuY29uZmlndXJhYmxlLCAic2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhp
cy5uYW1lKSArICIgaXMgbm90IGNvbmZpZ3VyYWJsZSIpOwotCi0gICAgICAgIGlmICh0aGlzLmlz
X2NhbGxiYWNrKCkpIHsKLSAgICAgICAgICAgIC8vICJUaGUgaW50ZXJuYWwgW1tQcm90b3R5cGVd
XSBwcm9wZXJ0eSBvZiBhbiBpbnRlcmZhY2Ugb2JqZWN0IGZvcgotICAgICAgICAgICAgLy8gYSBj
YWxsYmFjayBpbnRlcmZhY2UgbXVzdCBiZSB0aGUgRnVuY3Rpb24ucHJvdG90eXBlIG9iamVjdC4i
Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQcm90b3R5cGVPZihzZWxmW3Ro
aXMubmFtZV0pLCBGdW5jdGlvbi5wcm90b3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJwcm90b3R5cGUgb2Ygc2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1l
KSArICIgaXMgbm90IE9iamVjdC5wcm90b3R5cGUiKTsKLQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gIlRoZSBpbnRlcmZhY2Ugb2JqZWN0IGZvciBhIGdpdmVu
IG5vbi1jYWxsYmFjayBpbnRlcmZhY2UgaXMgYQotICAgICAgICAvLyBmdW5jdGlvbiBvYmplY3Qu
IgotICAgICAgICAvLyAiSWYgYW4gb2JqZWN0IGlzIGRlZmluZWQgdG8gYmUgYSBmdW5jdGlvbiBv
YmplY3QsIHRoZW4gaXQgaGFzCi0gICAgICAgIC8vIGNoYXJhY3RlcmlzdGljcyBhcyBmb2xsb3dz
OiIKLQotICAgICAgICAvLyBJdHMgW1tQcm90b3R5cGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBpcyBv
dGhlcndpc2Ugc3BlY2lmaWVkIChzZWUKLSAgICAgICAgLy8gYmVsb3cpLgotCi0gICAgICAgIC8v
ICIqIEl0cyBbW0dldF1dIGludGVybmFsIHByb3BlcnR5IGlzIHNldCBhcyBkZXNjcmliZWQgaW4g
RUNNQS0yNjIKLSAgICAgICAgLy8gICAgc2VjdGlvbiA5LjEuOC4iCi0gICAgICAgIC8vIE5vdCBt
dWNoIHRvIHRlc3QgZm9yIHRoaXMuCi0KLSAgICAgICAgLy8gIiogSXRzIFtbQ29uc3RydWN0XV0g
aW50ZXJuYWwgcHJvcGVydHkgaXMgc2V0IGFzIGRlc2NyaWJlZCBpbgotICAgICAgICAvLyAgICBF
Q01BLTI2MiBzZWN0aW9uIDE5LjIuMi4zLiIKLSAgICAgICAgLy8gVGVzdGVkIGJlbG93IGlmIG5v
IGNvbnN0cnVjdG9yIGlzIGRlZmluZWQuICBUT0RPOiB0ZXN0IGNvbnN0cnVjdG9ycwotICAgICAg
ICAvLyBpZiBkZWZpbmVkLgotCi0gICAgICAgIC8vICIqIEl0cyBAQGhhc0luc3RhbmNlIHByb3Bl
cnR5IGlzIHNldCBhcyBkZXNjcmliZWQgaW4gRUNNQS0yNjIKLSAgICAgICAgLy8gICAgc2VjdGlv
biAxOS4yLjMuOCwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuIgotICAgICAgICAvLyBUT0RP
Ci0KLSAgICAgICAgLy8gRVM2IChyZXYgMzApIDE5LjEuMy42OgotICAgICAgICAvLyAiRWxzZSwg
aWYgTyBoYXMgYSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2QsIHRoZW4gbGV0IGJ1aWx0aW5UYWcg
YmUKLSAgICAgICAgLy8gIkZ1bmN0aW9uIi4iCi0gICAgICAgIGFzc2VydF9jbGFzc19zdHJpbmco
c2VsZlt0aGlzLm5hbWVdLCAiRnVuY3Rpb24iLCAiY2xhc3Mgc3RyaW5nIG9mICIgKyB0aGlzLm5h
bWUpOwotCi0gICAgICAgIC8vICJUaGUgW1tQcm90b3R5cGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBv
ZiBhbiBpbnRlcmZhY2Ugb2JqZWN0IGZvciBhCi0gICAgICAgIC8vIG5vbi1jYWxsYmFjayBpbnRl
cmZhY2UgaXMgZGV0ZXJtaW5lZCBhcyBmb2xsb3dzOiIKLSAgICAgICAgdmFyIHByb3RvdHlwZSA9
IE9iamVjdC5nZXRQcm90b3R5cGVPZihzZWxmW3RoaXMubmFtZV0pOwotICAgICAgICBpZiAodGhp
cy5iYXNlKSB7Ci0gICAgICAgICAgICAvLyAiKiBJZiB0aGUgaW50ZXJmYWNlIGluaGVyaXRzIGZy
b20gc29tZSBvdGhlciBpbnRlcmZhY2UsIHRoZQotICAgICAgICAgICAgLy8gICAgdmFsdWUgb2Yg
W1tQcm90b3R5cGVdXSBpcyB0aGUgaW50ZXJmYWNlIG9iamVjdCBmb3IgdGhhdCBvdGhlcgotICAg
ICAgICAgICAgLy8gICAgaW50ZXJmYWNlLiIKLSAgICAgICAgICAgIHZhciBoYXNfaW50ZXJmYWNl
X29iamVjdCA9Ci0gICAgICAgICAgICAgICAgIXRoaXMuYXJyYXkKLSAgICAgICAgICAgICAgICAg
ICAgIC5tZW1iZXJzW3RoaXMuYmFzZV0KLSAgICAgICAgICAgICAgICAgICAgIC5oYXNfZXh0ZW5k
ZWRfYXR0cmlidXRlKCJOb0ludGVyZmFjZU9iamVjdCIpOwotICAgICAgICAgICAgaWYgKGhhc19p
bnRlcmZhY2Vfb2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShz
ZWxmLCB0aGlzLmJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hv
dWxkIGluaGVyaXQgZnJvbSAnICsgdGhpcy5iYXNlICsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcsIGJ1dCBzZWxmIGhhcyBubyBzdWNoIHByb3BlcnR5Jyk7Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm90b3R5cGUsIHNlbGZbdGhpcy5iYXNlXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdwcm90b3R5cGUgb2YgJyArIHRoaXMubmFtZSArICcg
aXMgbm90ICcgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXNlKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vICJJZiB0aGUgaW50
ZXJmYWNlIGRvZXNuJ3QgaW5oZXJpdCBmcm9tIGFueSBvdGhlciBpbnRlcmZhY2UsIHRoZQotICAg
ICAgICAgICAgLy8gdmFsdWUgb2YgW1tQcm90b3R5cGVdXSBpcyAlRnVuY3Rpb25Qcm90b3R5cGUl
IChbRUNNQS0yNjJdLAotICAgICAgICAgICAgLy8gc2VjdGlvbiA2LjEuNy40KS4iCi0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHByb3RvdHlwZSwgRnVuY3Rpb24ucHJvdG90eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAicHJvdG90eXBlIG9mIHNlbGYncyBwcm9wZXJ0eSAiICsgZm9y
bWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIGlzIG5vdCBGdW5jdGlvbi5wcm90b3R5cGUiKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICghdGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJDb25z
dHJ1Y3RvciIpKSB7Ci0gICAgICAgICAgICAvLyAiVGhlIGludGVybmFsIFtbQ2FsbF1dIG1ldGhv
ZCBvZiB0aGUgaW50ZXJmYWNlIG9iamVjdCBiZWhhdmVzIGFzCi0gICAgICAgICAgICAvLyBmb2xs
b3dzIC4gLiAuCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gIklmIEkgd2FzIG5vdCBk
ZWNsYXJlZCB3aXRoIGEgW0NvbnN0cnVjdG9yXSBleHRlbmRlZCBhdHRyaWJ1dGUsCi0gICAgICAg
ICAgICAvLyB0aGVuIHRocm93IGEgVHlwZUVycm9yLiIKLSAgICAgICAgICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBzZWxmW3Ro
aXMubmFtZV0oKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgImludGVyZmFjZSBvYmplY3Qg
ZGlkbid0IHRocm93IFR5cGVFcnJvciB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9uIik7Ci0gICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgbmV3IHNlbGZbdGhpcy5uYW1lXSgpOwotICAgICAgICAgICAgfS5iaW5kKHRo
aXMpLCAiaW50ZXJmYWNlIG9iamVjdCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIHdoZW4gY2FsbGVk
IGFzIGEgY29uc3RydWN0b3IiKTsKLSAgICAgICAgfQotICAgIH0uYmluZCh0aGlzKSwgdGhpcy5u
YW1lICsgIiBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ug
b2JqZWN0Iik7Ci0KLSAgICBpZiAoIXRoaXMuaXNfY2FsbGJhY2soKSkgewotICAgICAgICB0ZXN0
KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0ZXN0cyBXZWJJREwg
YXMgb2YgMjAxNC0xMC0yNS4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI2VzLWludGVyZmFjZS1jYWxsCi0KLSAgICAgICAgICAgIGFzc2VydF9vd25fcHJv
cGVydHkoc2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFt
ZSkpOwotCi0gICAgICAgICAgICAvLyAiSW50ZXJmYWNlIG9iamVjdHMgZm9yIG5vbi1jYWxsYmFj
ayBpbnRlcmZhY2VzIE1VU1QgaGF2ZSBhCi0gICAgICAgICAgICAvLyBwcm9wZXJ0eSBuYW1lZCDi
gJxsZW5ndGjigJ0gd2l0aCBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxzZSwKLSAgICAg
ICAgICAgIC8vIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9
IHdob3NlIHZhbHVlIGlzCi0gICAgICAgICAgICAvLyBhIE51bWJlci4iCi0gICAgICAgICAgICBh
c3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgImxlbmd0aCIpOwotICAgICAgICAg
ICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbdGhpcy5u
YW1lXSwgImxlbmd0aCIpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2Ms
IHRoaXMubmFtZSArICIubGVuZ3RoIGhhcyBnZXR0ZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF9m
YWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLmxlbmd0aCBoYXMgc2V0dGVyIik7Ci0g
ICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgdGhpcy5uYW1lICsgIi5sZW5n
dGggaXMgd3JpdGFibGUiKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFi
bGUsIHRoaXMubmFtZSArICIubGVuZ3RoIGlzIGVudW1lcmFibGUiKTsKLSAgICAgICAgICAgIGFz
c2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlzLm5hbWUgKyAiLmxlbmd0aCBpcyBub3Qg
Y29uZmlndXJhYmxlIik7Ci0KLSAgICAgICAgICAgIHZhciBjb25zdHJ1Y3RvcnMgPSB0aGlzLmV4
dEF0dHJzCi0gICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihhdHRyKSB7IHJldHVybiBh
dHRyLm5hbWUgPT0gIkNvbnN0cnVjdG9yIjsgfSk7Ci0gICAgICAgICAgICB2YXIgZXhwZWN0ZWRf
bGVuZ3RoID0gbWluT3ZlcmxvYWRMZW5ndGgoY29uc3RydWN0b3JzKTsKLSAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoc2VsZlt0aGlzLm5hbWVdLmxlbmd0aCwgZXhwZWN0ZWRfbGVuZ3RoLCAid3Jv
bmcgdmFsdWUgZm9yICIgKyB0aGlzLm5hbWUgKyAiLmxlbmd0aCIpOwotICAgICAgICB9LmJpbmQo
dGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGgiKTsKLSAgICB9Ci0K
LSAgICBpZiAoIXRoaXMuaXNfY2FsbGJhY2soKSB8fCB0aGlzLmhhc19jb25zdGFudHMoKSkgewot
ICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0
ZXN0cyBXZWJJREwgYXMgb2YgMjAxNS0xMS0xNy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1vYmplY3QKLQotICAgICAgICAgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFs
dWUodGhpcy5uYW1lKSk7Ci0KLSAgICAgICAgICAgIC8vICJBbGwgaW50ZXJmYWNlIG9iamVjdHMg
bXVzdCBoYXZlIGEgcHJvcGVydHkgbmFtZWQg4oCcbmFtZeKAnSB3aXRoCi0gICAgICAgICAgICAv
LyBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxzZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNl
LAotICAgICAgICAgICAgLy8gW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9IHdob3NlIHZhbHVlIGlz
IHRoZSBpZGVudGlmaWVyIG9mIHRoZQotICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBpbnRl
cmZhY2UuIgotCi0gICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1l
XSwgIm5hbWUiKTsKLSAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihzZWxmW3RoaXMubmFtZV0sICJuYW1lIik7Ci0gICAgICAgICAgICBhc3NlcnRf
ZmFsc2UoImdldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5uYW1lIGhhcyBnZXR0ZXIiKTsKLSAg
ICAgICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLm5hbWUg
aGFzIHNldHRlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsIHRo
aXMubmFtZSArICIubmFtZSBpcyB3cml0YWJsZSIpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNl
KGRlc2MuZW51bWVyYWJsZSwgdGhpcy5uYW1lICsgIi5uYW1lIGlzIGVudW1lcmFibGUiKTsKLSAg
ICAgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlzLm5hbWUgKyAiLm5h
bWUgaXMgbm90IGNvbmZpZ3VyYWJsZSIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxm
W3RoaXMubmFtZV0ubmFtZSwgdGhpcy5uYW1lLCAid3JvbmcgdmFsdWUgZm9yICIgKyB0aGlzLm5h
bWUgKyAiLm5hbWUiKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVy
ZmFjZSBvYmplY3QgbmFtZSIpOwotICAgIH0KLQotICAgIC8vIFRPRE86IFRlc3QgbmFtZWQgY29u
c3RydWN0b3JzIGlmIEkgZmluZCBhbnkgaW50ZXJmYWNlcyB0aGF0IGhhdmUgdGhlbS4KLQotICAg
IHRlc3QoZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0ZXN0cyBX
ZWJJREwgYXMgb2YgMjAxNS0wMS0yMS4KLSAgICAgICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHVi
LmlvL3dlYmlkbC8jaW50ZXJmYWNlLW9iamVjdAotCi0gICAgICAgIGlmICh0aGlzLmlzX2NhbGxi
YWNrKCkgJiYgIXRoaXMuaGFzX2NvbnN0YW50cygpKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9w
ZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOwotCi0gICAgICAgIGlmICh0aGlzLmlz
X2NhbGxiYWNrKCkpIHsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiBz
ZWxmW3RoaXMubmFtZV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJyBz
aG91bGQgbm90IGhhdmUgYSAicHJvdG90eXBlIiBwcm9wZXJ0eScpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gIkFuIGludGVyZmFjZSBvYmplY3QgZm9yIGEg
bm9uLWNhbGxiYWNrIGludGVyZmFjZSBtdXN0IGhhdmUgYQotICAgICAgICAvLyBwcm9wZXJ0eSBu
YW1lZCDigJxwcm90b3R5cGXigJ0gd2l0aCBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxz
ZSwKLSAgICAgICAgLy8gW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiBm
YWxzZSB9IHdob3NlIHZhbHVlIGlzIGFuCi0gICAgICAgIC8vIG9iamVjdCBjYWxsZWQgdGhlIGlu
dGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0LiBUaGlzIG9iamVjdCBoYXMKLSAgICAgICAgLy8gcHJv
cGVydGllcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIHJlZ3VsYXIgYXR0cmlidXRlcyBhbmQgcmVn
dWxhcgotICAgICAgICAvLyBvcGVyYXRpb25zIGRlZmluZWQgb24gdGhlIGludGVyZmFjZSwgYW5k
IGlzIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbAotICAgICAgICAvLyBpbiBzZWN0aW9uIDQuNS40
IGJlbG93LiIKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sICJw
cm90b3R5cGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcmZhY2UgIicgKyB0
aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAicHJvdG90eXBlIicpOwot
ICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZlt0
aGlzLm5hbWVdLCAicHJvdG90eXBlIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBk
ZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBoYXMgZ2V0dGVyIik7Ci0gICAgICAgIGFzc2Vy
dF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBoYXMgc2V0dGVy
Iik7Ci0gICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCB0aGlzLm5hbWUgKyAiLnBy
b3RvdHlwZSBpcyB3cml0YWJsZSIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJh
YmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBpcyBlbnVtZXJhYmxlIik7Ci0gICAgICAgIGFz
c2VydF9mYWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUgaXMg
Y29uZmlndXJhYmxlIik7Ci0KLSAgICAgICAgLy8gTmV4dCwgdGVzdCB0aGF0IHRoZSBbW1Byb3Rv
dHlwZV1dIG9mIHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdAotICAgICAgICAvLyBpcyBj
b3JyZWN0LiAoVGhpcyBpcyBtYWRlIHNvbWV3aGF0IGRpZmZpY3VsdCBieSB0aGUgZXhpc3RlbmNl
IG9mCi0gICAgICAgIC8vIFtOb0ludGVyZmFjZU9iamVjdF0uKQotICAgICAgICAvLyBUT0RPOiBB
cnllaCB0aGlua3MgdGhlcmUncyBhdCBsZWFzdCBvdGhlciBwbGFjZSBpbiB0aGlzIGZpbGUgd2hl
cmUKLSAgICAgICAgLy8gICAgICAgd2UgdHJ5IHRvIGZpZ3VyZSBvdXQgaWYgYW4gaW50ZXJmYWNl
IHByb3RvdHlwZSBvYmplY3QgaXMKLSAgICAgICAgLy8gICAgICAgY29ycmVjdC4gQ29uc29saWRh
dGUgdGhhdCBjb2RlLgotCi0gICAgICAgIC8vICJUaGUgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmpl
Y3QgZm9yIGEgZ2l2ZW4gaW50ZXJmYWNlIEEgbXVzdCBoYXZlIGFuCi0gICAgICAgIC8vIGludGVy
bmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgcmV0dXJuZWQgZnJvbSB0
aGUKLSAgICAgICAgLy8gZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICAvLyAiSWYgQSBpcyBkZWNs
YXJlZCB3aXRoIHRoZSBbR2xvYmFsXSBvciBbUHJpbWFyeUdsb2JhbF0gZXh0ZW5kZWQKLSAgICAg
ICAgLy8gYXR0cmlidXRlLCBhbmQgQSBzdXBwb3J0cyBuYW1lZCBwcm9wZXJ0aWVzLCB0aGVuIHJl
dHVybiB0aGUgbmFtZWQKLSAgICAgICAgLy8gcHJvcGVydGllcyBvYmplY3QgZm9yIEEsIGFzIGRl
ZmluZWQgaW4gc2VjdGlvbiA0LjUuNSBiZWxvdy4KLSAgICAgICAgLy8gIk90aGVyd2lzZSwgaWYg
QSBpcyBkZWNsYXJlZCB0byBpbmhlcml0IGZyb20gYW5vdGhlciBpbnRlcmZhY2UsIHRoZW4KLSAg
ICAgICAgLy8gcmV0dXJuIHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBmb3IgdGhlIGlu
aGVyaXRlZCBpbnRlcmZhY2UuCi0gICAgICAgIC8vICJPdGhlcndpc2UsIGlmIEEgaXMgZGVjbGFy
ZWQgd2l0aCB0aGUgW0FycmF5Q2xhc3NdIGV4dGVuZGVkCi0gICAgICAgIC8vIGF0dHJpYnV0ZSwg
dGhlbiByZXR1cm4gJUFycmF5UHJvdG90eXBlJSAoW0VDTUEtMjYyXSwgc2VjdGlvbgotICAgICAg
ICAvLyA2LjEuNy40KS4KLSAgICAgICAgLy8gIk90aGVyd2lzZSwgcmV0dXJuICVPYmplY3RQcm90
b3R5cGUlIChbRUNNQS0yNjJdLCBzZWN0aW9uIDYuMS43LjQpLgotICAgICAgICAvLyAoW0VDTUEt
MjYyXSwgc2VjdGlvbiAxNS4yLjQpLgotICAgICAgICBpZiAodGhpcy5uYW1lID09PSAiV2luZG93
IikgewotICAgICAgICAgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhPYmplY3QuZ2V0UHJvdG90eXBl
T2Yoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdXaW5kb3dQcm9wZXJ0aWVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0NsYXNzIG5hbWUgZm9yIHByb3RvdHlwZSBvZiBXaW5kb3cnICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJy5wcm90b3R5cGUgaXMgbm90ICJXaW5kb3dQcm9wZXJ0aWVzIicp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIGluaGVyaXRfaW50ZXJmYWNlLCBp
bmhlcml0X2ludGVyZmFjZV9oYXNfaW50ZXJmYWNlX29iamVjdDsKLSAgICAgICAgICAgIGlmICh0
aGlzLmJhc2UpIHsKLSAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZSA9IHRoaXMuYmFz
ZTsKLSAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZV9oYXNfaW50ZXJmYWNlX29iamVj
dCA9Ci0gICAgICAgICAgICAgICAgICAgICF0aGlzLmFycmF5Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgLm1lbWJlcnNbaW5oZXJpdF9pbnRlcmZhY2VdCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIk5vSW50ZXJmYWNlT2JqZWN0Iik7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgnQXJyYXlDbGFzcycp
KSB7Ci0gICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2UgPSAnQXJyYXknOwotICAgICAg
ICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlX2hhc19pbnRlcmZhY2Vfb2JqZWN0ID0gdHJ1ZTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2Ug
PSAnT2JqZWN0JzsKLSAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZV9oYXNfaW50ZXJm
YWNlX29iamVjdCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaW5oZXJp
dF9pbnRlcmZhY2VfaGFzX2ludGVyZmFjZV9vYmplY3QpIHsKLSAgICAgICAgICAgICAgICBhc3Nl
cnRfb3duX3Byb3BlcnR5KHNlbGYsIGluaGVyaXRfaW50ZXJmYWNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBpbmhlcml0IGZyb20gJyArIGluaGVyaXRfaW50
ZXJmYWNlICsgJywgYnV0IHNlbGYgaGFzIG5vIHN1Y2ggcHJvcGVydHknKTsKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbaW5oZXJpdF9pbnRlcmZhY2VdLCAncHJvdG90
eXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG91bGQgaW5oZXJp
dCBmcm9tICcgKyBpbmhlcml0X2ludGVyZmFjZSArICcsIGJ1dCB0aGF0IG9iamVjdCBoYXMgbm8g
InByb3RvdHlwZSIgcHJvcGVydHknKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9i
amVjdC5nZXRQcm90b3R5cGVPZihzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGZbaW5oZXJpdF9pbnRlcmZhY2VdLnByb3RvdHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm90b3R5cGUgb2YgJyArIHRoaXMubmFt
ZSArICcucHJvdG90eXBlIGlzIG5vdCAnICsgaW5oZXJpdF9pbnRlcmZhY2UgKyAnLnByb3RvdHlw
ZScpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCB0
ZXN0IHRoYXQgd2UgZ2V0IHRoZSBjb3JyZWN0IG9iamVjdCwgYmVjYXVzZSB0aGlzIGlzIHRoZQot
ICAgICAgICAgICAgICAgIC8vIG9ubHkgd2F5IHRvIGdldCBvdXIgaGFuZHMgb24gaXQuIFdlIG9u
bHkgdGVzdCB0aGF0IGl0cyBjbGFzcwotICAgICAgICAgICAgICAgIC8vIHN0cmluZywgYXQgbGVh
c3QsIGlzIGNvcnJlY3QuCi0gICAgICAgICAgICAgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhPYmpl
Y3QuZ2V0UHJvdG90eXBlT2Yoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZSArICdQcm90b3R5cGUn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NsYXNzIG5hbWUgZm9yIHBy
b3RvdHlwZSBvZiAnICsgdGhpcy5uYW1lICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcucHJvdG90eXBlIGlzIG5vdCAiJyArIGluaGVyaXRfaW50ZXJmYWNlICsgJ1Byb3Rv
dHlwZSInKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0uYmluZCh0aGlzKSwgdGhp
cy5uYW1lICsgIiBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCIpOwotCi0gICAgdGVzdChmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygpICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkgewot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXNzZXJ0X293bl9wcm9w
ZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYg
ZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsK
LQotICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygpKSB7Ci0gICAgICAgICAgICBhc3NlcnRf
ZmFsc2UoInByb3RvdHlwZSIgaW4gc2VsZlt0aGlzLm5hbWVdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMubmFtZSArICcgc2hvdWxkIG5vdCBoYXZlIGEgInByb3RvdHlwZSIgcHJvcGVy
dHknKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGFzc2VydF9v
d25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCAicHJvdG90eXBlIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2
ZSBvd24gcHJvcGVydHkgInByb3RvdHlwZSInKTsKLQotICAgICAgICAvLyAiSWYgdGhlIFtOb0lu
dGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlIHdhcyBub3Qgc3BlY2lmaWVkIG9uCi0g
ICAgICAgIC8vIHRoZSBpbnRlcmZhY2UsIHRoZW4gdGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2Jq
ZWN0IG11c3QgYWxzbyBoYXZlIGEKLSAgICAgICAgLy8gcHJvcGVydHkgbmFtZWQg4oCcY29uc3Ry
dWN0b3LigJ0gd2l0aCBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiB0cnVlLAotICAgICAgICAv
LyBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IHRydWUgfSB3aG9zZSB2
YWx1ZSBpcyBhCi0gICAgICAgIC8vIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJmYWNlIG9iamVjdCBm
b3IgdGhlIGludGVyZmFjZS4iCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlz
Lm5hbWVdLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZSBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAi
Y29uc3RydWN0b3IiJyk7Ci0gICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLCAiY29uc3RydWN0b3IiKTsKLSAg
ICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIucHJvdG90eXBl
LmNvbnN0cnVjdG9yIGhhcyBnZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGlu
IGRlc2MsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIGhhcyBzZXR0ZXIiKTsK
LSAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy53cml0YWJsZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5
cGUuY29uc3RydWN0b3IgaXMgbm90IHdyaXRhYmxlIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZShk
ZXNjLmVudW1lcmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIGVu
dW1lcmFibGUiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsIHRoaXMu
bmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIGluIG5vdCBjb25maWd1cmFibGUiKTsKLSAg
ICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLmNvbnN0cnVjdG9y
LCBzZWxmW3RoaXMubmFtZV0sCi0gICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5w
cm90b3R5cGUuY29uc3RydWN0b3IgaXMgbm90IHRoZSBzYW1lIG9iamVjdCBhcyAnICsgdGhpcy5u
YW1lKTsKLSAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICcgaW50ZXJmYWNlOiBleGlzdGVu
Y2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3RcJ3MgImNvbnN0
cnVjdG9yIiBwcm9wZXJ0eScpOwotfTsKLQotLy9AfQotSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50
ZXN0X21lbWJlcl9jb25zdCA9IGZ1bmN0aW9uKG1lbWJlcikKLS8vQHsKLXsKLSAgICBpZiAoIXRo
aXMuaGFzX2NvbnN0YW50cygpKSB7Ci0gICAgICAgIHRocm93ICJJbnRlcm5hbCBlcnJvcjogdGVz
dF9tZW1iZXJfY29uc3QgY2FsbGVkIHdpdGhvdXQgYW55IGNvbnN0YW50cyI7Ci0gICAgfQotCi0g
ICAgdGVzdChmdW5jdGlvbigpCi0gICAgewotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNl
bGYsIHRoaXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5v
dCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOwotCi0gICAg
ICAgIC8vICJGb3IgZWFjaCBjb25zdGFudCBkZWZpbmVkIG9uIGFuIGludGVyZmFjZSBBLCB0aGVy
ZSBtdXN0IGJlCi0gICAgICAgIC8vIGEgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBvbiB0aGUgaW50
ZXJmYWNlIG9iamVjdCwgaWYgaXQKLSAgICAgICAgLy8gZXhpc3RzLiIKLSAgICAgICAgYXNzZXJ0
X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sIG1lbWJlci5uYW1lKTsKLSAgICAgICAgLy8g
IlRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaXMgdGhhdCB3aGljaCBpcyBvYnRhaW5lZCBieQot
ICAgICAgICAvLyBjb252ZXJ0aW5nIHRoZSBjb25zdGFudOKAmXMgSURMIHZhbHVlIHRvIGFuIEVD
TUFTY3JpcHQKLSAgICAgICAgLy8gdmFsdWUuIgotICAgICAgICBhc3NlcnRfZXF1YWxzKHNlbGZb
dGhpcy5uYW1lXVttZW1iZXIubmFtZV0sIGNvbnN0VmFsdWUobWVtYmVyLnZhbHVlKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAicHJvcGVydHkgaGFzIHdyb25nIHZhbHVlIik7Ci0gICAgICAgIC8v
ICJUaGUgcHJvcGVydHkgaGFzIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLAotICAg
ICAgICAvLyBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogZmFsc2UgfS4i
Ci0gICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxm
W3RoaXMubmFtZV0sIG1lbWJlci5uYW1lKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGlu
IGRlc2MsICJwcm9wZXJ0eSBoYXMgZ2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0
IiBpbiBkZXNjLCAicHJvcGVydHkgaGFzIHNldHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2Uo
ZGVzYy53cml0YWJsZSwgInByb3BlcnR5IGlzIHdyaXRhYmxlIik7Ci0gICAgICAgIGFzc2VydF90
cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7Ci0gICAg
ICAgIGFzc2VydF9mYWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgInByb3BlcnR5IGlzIGNvbmZpZ3Vy
YWJsZSIpOwotICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGNvbnN0
YW50ICIgKyBtZW1iZXIubmFtZSArICIgb24gaW50ZXJmYWNlIG9iamVjdCIpOwotCi0gICAgLy8g
IkluIGFkZGl0aW9uLCBhIHByb3BlcnR5IHdpdGggdGhlIHNhbWUgY2hhcmFjdGVyaXN0aWNzIG11
c3QKLSAgICAvLyBleGlzdCBvbiB0aGUgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QuIgotICAg
IHRlc3QoZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxm
LCB0aGlzLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3Qg
aGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKLQotICAgICAg
ICBpZiAodGhpcy5pc19jYWxsYmFjaygpKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UoInBy
b3RvdHlwZSIgaW4gc2VsZlt0aGlzLm5hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMubmFtZSArICcgc2hvdWxkIG5vdCBoYXZlIGEgInByb3RvdHlwZSIgcHJvcGVydHknKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVy
dHkoc2VsZlt0aGlzLm5hbWVdLCAicHJvdG90eXBlIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2ZSBvd24gcHJv
cGVydHkgInByb3RvdHlwZSInKTsKLQotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZb
dGhpcy5uYW1lXS5wcm90b3R5cGUsIG1lbWJlci5uYW1lKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFs
cyhzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlW21lbWJlci5uYW1lXSwgY29uc3RWYWx1ZShtZW1i
ZXIudmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSBoYXMgd3JvbmcgdmFs
dWUiKTsKLSAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHNlbGZbdGhpcy5uYW1lXSwgbWVtYmVyLm5hbWUpOwotICAgICAgICBhc3NlcnRfZmFsc2UoImdl
dCIgaW4gZGVzYywgInByb3BlcnR5IGhhcyBnZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNl
KCJzZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBoYXMgc2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF9m
YWxzZShkZXNjLndyaXRhYmxlLCAicHJvcGVydHkgaXMgd3JpdGFibGUiKTsKLSAgICAgICAgYXNz
ZXJ0X3RydWUoZGVzYy5lbnVtZXJhYmxlLCAicHJvcGVydHkgaXMgbm90IGVudW1lcmFibGUiKTsK
LSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuY29uZmlndXJhYmxlLCAicHJvcGVydHkgaXMgY29u
ZmlndXJhYmxlIik7Ci0gICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTog
Y29uc3RhbnQgIiArIG1lbWJlci5uYW1lICsgIiBvbiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVj
dCIpOwotfTsKLQotCi0vL0B9Ci1JZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX2F0
dHJpYnV0ZSA9IGZ1bmN0aW9uKG1lbWJlcikKLS8vQHsKLSAgewotICAgIHZhciBhX3Rlc3QgPSBh
c3luY190ZXN0KHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgIiArIG1lbWJlci5u
YW1lKTsKLSAgICBhX3Rlc3Quc3RlcChmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhp
cy5pc19jYWxsYmFjaygpICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkgewotICAgICAgICAgICAg
YV90ZXN0LmRvbmUoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
YXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1
ZSh0aGlzLm5hbWUpKTsKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFt
ZV0sICJwcm90b3R5cGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcmZhY2Ug
IicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAicHJvdG90eXBl
IicpOwotCi0gICAgICAgIGlmIChtZW1iZXJbInN0YXRpYyJdKSB7Ci0gICAgICAgICAgICBhc3Nl
cnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgbWVtYmVyLm5hbWUsCi0gICAgICAgICAg
ICAgICAgIlRoZSBpbnRlcmZhY2Ugb2JqZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICIgKwotICAg
ICAgICAgICAgICAgIGZvcm1hdF92YWx1ZShtZW1iZXIubmFtZSkpOwotICAgICAgICAgICAgYV90
ZXN0LmRvbmUoKTsKLSAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzX2dsb2JhbCgpKSB7Ci0gICAg
ICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIG1lbWJlci5uYW1lLAotICAgICAgICAg
ICAgICAgICJUaGUgZ2xvYmFsIG9iamVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0eSAiICsKLSAgICAg
ICAgICAgICAgICBmb3JtYXRfdmFsdWUobWVtYmVyLm5hbWUpKTsKLSAgICAgICAgICAgIGFzc2Vy
dF9mYWxzZShtZW1iZXIubmFtZSBpbiBzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLAotICAgICAg
ICAgICAgICAgICJUaGUgcHJvdG90eXBlIG9iamVjdCBtdXN0IG5vdCBoYXZlIGEgcHJvcGVydHkg
IiArCi0gICAgICAgICAgICAgICAgZm9ybWF0X3ZhbHVlKG1lbWJlci5uYW1lKSk7Ci0KLSAgICAg
ICAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGYs
IG1lbWJlci5uYW1lKS5nZXQ7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZihnZXR0
ZXIpLCAiZnVuY3Rpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfdmFsdWUo
bWVtYmVyLm5hbWUpICsgIiBtdXN0IGhhdmUgYSBnZXR0ZXIiKTsKLQotICAgICAgICAgICAgLy8g
VHJ5L2NhdGNoIGFyb3VuZCB0aGUgZ2V0IGhlcmUsIHNpbmNlIGl0IGNhbiBsZWdpdGltYXRlbHkg
dGhyb3cuCi0gICAgICAgICAgICAvLyBJZiBpdCBkb2VzLCB3ZSBvYnZpb3VzbHkgY2FuJ3QgY2hl
Y2sgZm9yIGVxdWFsaXR5IHdpdGggZGlyZWN0Ci0gICAgICAgICAgICAvLyBpbnZvY2F0aW9uIG9m
IHRoZSBnZXR0ZXIuCi0gICAgICAgICAgICB2YXIgZ290VmFsdWU7Ci0gICAgICAgICAgICB2YXIg
cHJvcFZhbDsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcHJvcFZhbCA9IHNl
bGZbbWVtYmVyLm5hbWVdOwotICAgICAgICAgICAgICAgIGdvdFZhbHVlID0gdHJ1ZTsKLSAgICAg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICBnb3RWYWx1ZSA9IGZhbHNlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGdvdFZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhwcm9wVmFsLCBnZXR0ZXIuY2FsbCh1bmRlZmluZWQpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkdldHMgb24gYSBnbG9iYWwgc2hvdWxkIG5vdCByZXF1
aXJlIGFuIGV4cGxpY2l0IHRoaXMiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8g
ZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzIG11c3QgYmUgdGhlIGxhc3QgdGhpbmcgd2Ug
ZG8sCi0gICAgICAgICAgICAvLyBzaW5jZSBpdCB3aWxsIGNhbGwgZG9uZSgpIG9uIGFfdGVzdC4K
LSAgICAgICAgICAgIHRoaXMuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzKHNlbGYsIG1l
bWJlciwgYV90ZXN0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFzc2VydF90cnVl
KG1lbWJlci5uYW1lIGluIHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsCi0gICAgICAgICAgICAg
ICAgIlRoZSBwcm90b3R5cGUgb2JqZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICIgKwotICAgICAg
ICAgICAgICAgIGZvcm1hdF92YWx1ZShtZW1iZXIubmFtZSkpOwotCi0gICAgICAgICAgICBpZiAo
IW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZW5pZW50VGhpcyIpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG1lbWJlci5pZGxUeXBlLmdlbmVyaWMgIT09ICJQcm9taXNlIikgewotICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlW21l
bWJlci5uYW1lXTsKLSAgICAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiZ2V0dGluZyBw
cm9wZXJ0eSBvbiBwcm90b3R5cGUgb2JqZWN0IG11c3QgdGhyb3cgVHlwZUVycm9yIik7Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIGRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyBtdXN0IGJl
IHRoZSBsYXN0IHRoaW5nIHdlCi0gICAgICAgICAgICAgICAgICAgIC8vIGRvLCBzaW5jZSBpdCB3
aWxsIGNhbGwgZG9uZSgpIG9uIGFfdGVzdC4KLSAgICAgICAgICAgICAgICAgICAgdGhpcy5kb19p
bnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwgbWVt
YmVyLCBhX3Rlc3QpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHByb21pc2VfcmVqZWN0cyhhX3Rlc3QsIG5ldyBUeXBlRXJyb3IoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGVbbWVtYmVy
Lm5hbWVdKQotICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRz
IG11c3QgYmUgdGhlIGxhc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGluZyB3
ZSBkbywgc2luY2UgaXQgd2lsbCBjYWxsIGRvbmUoKSBvbiBhX3Rlc3QuCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMoc2VsZlt0
aGlzLm5hbWVdLnByb3RvdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIsIGFfdGVzdCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9LmJpbmQodGhpcykpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW3RoaXMubmFt
ZV0ucHJvdG90eXBlW21lbWJlci5uYW1lXSwgdW5kZWZpbmVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImdldHRpbmcgcHJvcGVydHkgb24gcHJvdG90eXBlIG9iamVjdCBtdXN0IHJl
dHVybiB1bmRlZmluZWQiKTsKLSAgICAgICAgICAgICAgLy8gZG9faW50ZXJmYWNlX2F0dHJpYnV0
ZV9hc3NlcnRzIG11c3QgYmUgdGhlIGxhc3QgdGhpbmcgd2UgZG8sCi0gICAgICAgICAgICAgIC8v
IHNpbmNlIGl0IHdpbGwgY2FsbCBkb25lKCkgb24gYV90ZXN0LgotICAgICAgICAgICAgICB0aGlz
LmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyhzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBl
LCBtZW1iZXIsIGFfdGVzdCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfQotICAgIH0uYmlu
ZCh0aGlzKSk7Ci19OwotCi0vL0B9Ci1JZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVy
X29wZXJhdGlvbiA9IGZ1bmN0aW9uKG1lbWJlcikKLS8vQHsKLXsKLSAgICB2YXIgYV90ZXN0ID0g
YXN5bmNfdGVzdCh0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogb3BlcmF0aW9uICIgKyBtZW1iZXIu
bmFtZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIigiICsgbWVtYmVyLmFyZ3VtZW50
cy5tYXAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKG0pIHtyZXR1
cm4gbS5pZGxUeXBlLmlkbFR5cGU7IH0gKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsi
KSIpOwotICAgIGFfdGVzdC5zdGVwKGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMg
ZnVuY3Rpb24gdGVzdHMgV2ViSURMIGFzIG9mIDIwMTUtMTItMjkuCi0gICAgICAgIC8vIGh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2VzLW9wZXJhdGlvbnMKLQotICAgICAgICBpZiAo
dGhpcy5pc19jYWxsYmFjaygpICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkgewotICAgICAgICAg
ICAgYV90ZXN0LmRvbmUoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRf
dmFsdWUodGhpcy5uYW1lKSk7Ci0KLSAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSkgewot
ICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHNlbGZbdGhpcy5uYW1lXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnIHNob3VsZCBub3QgaGF2ZSBh
ICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7Ci0gICAgICAgICAgICBhX3Rlc3QuZG9uZSgpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0
eShzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5cGUiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93biBwcm9w
ZXJ0eSAicHJvdG90eXBlIicpOwotCi0gICAgICAgIC8vICJGb3IgZWFjaCB1bmlxdWUgaWRlbnRp
ZmllciBvZiBhbiBleHBvc2VkIG9wZXJhdGlvbiBkZWZpbmVkIG9uIHRoZQotICAgICAgICAvLyBp
bnRlcmZhY2UsIHRoZXJlIG11c3QgZXhpc3QgYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5LCB1bmxl
c3MgdGhlCi0gICAgICAgIC8vIGVmZmVjdGl2ZSBvdmVybG9hZCBzZXQgZm9yIHRoYXQgaWRlbnRp
ZmllciBhbmQgb3BlcmF0aW9uIGFuZCB3aXRoIGFuCi0gICAgICAgIC8vIGFyZ3VtZW50IGNvdW50
IG9mIDAgaGFzIG5vIGVudHJpZXMuIgotCi0gICAgICAgIC8vIFRPRE86IENvbnNpZGVyIFtFeHBv
c2VkXS4KLQotICAgICAgICAvLyAiVGhlIGxvY2F0aW9uIG9mIHRoZSBwcm9wZXJ0eSBpcyBkZXRl
cm1pbmVkIGFzIGZvbGxvd3M6IgotICAgICAgICB2YXIgbWVtYmVySG9sZGVyT2JqZWN0OwotICAg
ICAgICAvLyAiKiBJZiB0aGUgb3BlcmF0aW9uIGlzIHN0YXRpYywgdGhlbiB0aGUgcHJvcGVydHkg
ZXhpc3RzIG9uIHRoZQotICAgICAgICAvLyAgICBpbnRlcmZhY2Ugb2JqZWN0LiIKLSAgICAgICAg
aWYgKG1lbWJlclsic3RhdGljIl0pIHsKLSAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHko
c2VsZlt0aGlzLm5hbWVdLCBtZW1iZXIubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgImludGVy
ZmFjZSBvYmplY3QgbWlzc2luZyBzdGF0aWMgb3BlcmF0aW9uIik7Ci0gICAgICAgICAgICBtZW1i
ZXJIb2xkZXJPYmplY3QgPSBzZWxmW3RoaXMubmFtZV07Ci0gICAgICAgIC8vICIqIE90aGVyd2lz
ZSwgWy4uLl0gaWYgdGhlIGludGVyZmFjZSB3YXMgZGVjbGFyZWQgd2l0aCB0aGUgW0dsb2JhbF0K
LSAgICAgICAgLy8gICAgb3IgW1ByaW1hcnlHbG9iYWxdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhl
biB0aGUgcHJvcGVydHkgZXhpc3RzCi0gICAgICAgIC8vICAgIG9uIGV2ZXJ5IG9iamVjdCB0aGF0
IGltcGxlbWVudHMgdGhlIGludGVyZmFjZS4iCi0gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc19n
bG9iYWwoKSkgewotICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCBtZW1iZXIu
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgImdsb2JhbCBvYmplY3QgbWlzc2luZyBub24tc3Rh
dGljIG9wZXJhdGlvbiIpOwotICAgICAgICAgICAgbWVtYmVySG9sZGVyT2JqZWN0ID0gc2VsZjsK
LSAgICAgICAgLy8gIiogT3RoZXJ3aXNlLCB0aGUgcHJvcGVydHkgZXhpc3RzIHNvbGVseSBvbiB0
aGUgaW50ZXJmYWNl4oCZcwotICAgICAgICAvLyAgICBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVj
dC4iCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNl
bGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsIG1lbWJlci5uYW1lLAotICAgICAgICAgICAgICAgICAg
ICAiaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlv
biIpOwotICAgICAgICAgICAgbWVtYmVySG9sZGVyT2JqZWN0ID0gc2VsZlt0aGlzLm5hbWVdLnBy
b3RvdHlwZTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLmRvX21lbWJlcl9vcGVyYXRpb25fYXNz
ZXJ0cyhtZW1iZXJIb2xkZXJPYmplY3QsIG1lbWJlciwgYV90ZXN0KTsKLSAgICB9LmJpbmQodGhp
cykpOwotfTsKLQotLy9AfQotSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19tZW1iZXJfb3BlcmF0
aW9uX2Fzc2VydHMgPSBmdW5jdGlvbihtZW1iZXJIb2xkZXJPYmplY3QsIG1lbWJlciwgYV90ZXN0
KQotLy9AewotewotICAgIHZhciBkb25lID0gYV90ZXN0LmRvbmUuYmluZChhX3Rlc3QpOwotICAg
IHZhciBvcGVyYXRpb25VbmZvcmdlYWJsZSA9IG1lbWJlci5pc1VuZm9yZ2VhYmxlOwotICAgIHZh
ciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtZW1iZXJIb2xkZXJPYmpl
Y3QsIG1lbWJlci5uYW1lKTsKLSAgICAvLyAiVGhlIHByb3BlcnR5IGhhcyBhdHRyaWJ1dGVzIHsg
W1tXcml0YWJsZV1dOiBCLAotICAgIC8vIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3Vy
YWJsZV1dOiBCIH0sIHdoZXJlIEIgaXMgZmFsc2UgaWYgdGhlCi0gICAgLy8gb3BlcmF0aW9uIGlz
IHVuZm9yZ2VhYmxlIG9uIHRoZSBpbnRlcmZhY2UsIGFuZCB0cnVlIG90aGVyd2lzZSIuCi0gICAg
YXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBoYXMgZ2V0dGVyIik7Ci0gICAg
YXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBoYXMgc2V0dGVyIik7Ci0gICAg
YXNzZXJ0X2VxdWFscyhkZXNjLndyaXRhYmxlLCAhb3BlcmF0aW9uVW5mb3JnZWFibGUsCi0gICAg
ICAgICAgICAgICAgICAicHJvcGVydHkgc2hvdWxkIGJlIHdyaXRhYmxlIGlmIGFuZCBvbmx5IGlm
IG5vdCB1bmZvcmdlYWJsZSIpOwotICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInBy
b3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7Ci0gICAgYXNzZXJ0X2VxdWFscyhkZXNjLmNvbmZp
Z3VyYWJsZSwgIW9wZXJhdGlvblVuZm9yZ2VhYmxlLAotICAgICAgICAgICAgICAgICAgInByb3Bl
cnR5IHNob3VsZCBiZSBjb25maWd1cmFibGUgaWYgYW5kIG9ubHkgaWYgbm90IHVuZm9yZ2VhYmxl
Iik7Ci0gICAgLy8gIlRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaXMgYSBGdW5jdGlvbiBvYmpl
Y3Qgd2hvc2UKLSAgICAvLyBiZWhhdmlvciBpcyBhcyBmb2xsb3dzIC4gLiAuIgotICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIG1lbWJlckhvbGRlck9iamVjdFttZW1iZXIubmFtZV0sICJmdW5jdGlv
biIsCi0gICAgICAgICAgICAgICAgICAicHJvcGVydHkgbXVzdCBiZSBhIGZ1bmN0aW9uIik7Ci0g
ICAgLy8gIlRoZSB2YWx1ZSBvZiB0aGUgRnVuY3Rpb24gb2JqZWN04oCZcyDigJxsZW5ndGjigJ0g
cHJvcGVydHkgaXMKLSAgICAvLyBhIE51bWJlciBkZXRlcm1pbmVkIGFzIGZvbGxvd3M6Ci0gICAg
Ly8gIi4gLiAuCi0gICAgLy8gIlJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBzaG9ydGVzdCBhcmd1
bWVudCBsaXN0IG9mIHRoZQotICAgIC8vIGVudHJpZXMgaW4gUy4iCi0gICAgYXNzZXJ0X2VxdWFs
cyhtZW1iZXJIb2xkZXJPYmplY3RbbWVtYmVyLm5hbWVdLmxlbmd0aCwKLSAgICAgICAgbWluT3Zl
cmxvYWRMZW5ndGgodGhpcy5tZW1iZXJzLmZpbHRlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gbS50eXBlID09ICJvcGVyYXRpb24iICYmIG0ubmFtZSA9PSBtZW1iZXIubmFtZTsK
LSAgICAgICAgfSkpLAotICAgICAgICAicHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGgiKTsKLQot
ICAgIC8vIE1ha2Ugc29tZSBzdWl0YWJsZSBhcmd1bWVudHMKLSAgICB2YXIgYXJncyA9IG1lbWJl
ci5hcmd1bWVudHMubWFwKGZ1bmN0aW9uKGFyZykgewotICAgICAgICByZXR1cm4gY3JlYXRlX3N1
aXRhYmxlX29iamVjdChhcmcuaWRsVHlwZSk7Ci0gICAgfSk7Ci0KLSAgICAvLyAiTGV0IE8gYmUg
YSB2YWx1ZSBkZXRlcm1pbmVkIGFzIGZvbGxvd3M6Ci0gICAgLy8gIi4gLiAuCi0gICAgLy8gIk90
aGVyd2lzZSwgdGhyb3cgYSBUeXBlRXJyb3IuIgotICAgIC8vIFRoaXMgc2hvdWxkIGJlIGhpdCBp
ZiB0aGUgb3BlcmF0aW9uIGlzIG5vdCBzdGF0aWMsIHRoZXJlIGlzCi0gICAgLy8gbm8gW0ltcGxp
Y2l0VGhpc10gYXR0cmlidXRlLCBhbmQgdGhlIHRoaXMgdmFsdWUgaXMgbnVsbC4KLSAgICAvLwot
ICAgIC8vIFRPRE86IFdlIGN1cnJlbnRseSBpZ25vcmUgdGhlIFtJbXBsaWNpdFRoaXNdIGNhc2Uu
ICBFeGNlcHQgd2UgbWFudWFsbHkKLSAgICAvLyBjaGVjayBmb3IgZ2xvYmFscywgc2luY2Ugb3Ro
ZXJ3aXNlIHdlJ2xsIGludm9rZSB3aW5kb3cuY2xvc2UoKS4gIEFuZCB3ZQotICAgIC8vIGhhdmUg
dG8gc2tpcCB0aGlzIHRlc3QgZm9yIGFueXRoaW5nIHRoYXQgb24gdGhlIHByb3RvIGNoYWluIG9m
ICJzZWxmIiwKLSAgICAvLyBzaW5jZSB0aGF0IGRvZXMgaW4gZmFjdCBoYXZlIGltcGxpY2l0LXRo
aXMgYmVoYXZpb3IuCi0gICAgaWYgKCFtZW1iZXJbInN0YXRpYyJdKSB7Ci0gICAgICAgIHZhciBj
YjsKLSAgICAgICAgaWYgKCF0aGlzLmlzX2dsb2JhbCgpICYmCi0gICAgICAgICAgICBtZW1iZXJI
b2xkZXJPYmplY3RbbWVtYmVyLm5hbWVdICE9IHNlbGZbbWVtYmVyLm5hbWVdKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjYiA9IGF3YWl0TkNhbGxiYWNrcygyLCBkb25lKTsKLSAgICAgICAgICAg
IHRocm93T3JSZWplY3QoYV90ZXN0LCBtZW1iZXIsIG1lbWJlckhvbGRlck9iamVjdFttZW1iZXIu
bmFtZV0sIG51bGwsIGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsaW5nIG9w
ZXJhdGlvbiB3aXRoIHRoaXMgPSBudWxsIGRpZG4ndCB0aHJvdyBUeXBlRXJyb3IiLCBjYik7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjYiA9IGF3YWl0TkNhbGxiYWNrcygxLCBkb25l
KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vICIuIC4gLiBJZiBPIGlzIG5vdCBudWxsIGFuZCBp
cyBhbHNvIG5vdCBhIHBsYXRmb3JtIG9iamVjdAotICAgICAgICAvLyB0aGF0IGltcGxlbWVudHMg
aW50ZXJmYWNlIEksIHRocm93IGEgVHlwZUVycm9yLiIKLSAgICAgICAgLy8KLSAgICAgICAgLy8g
VE9ETzogVGVzdCBhIHBsYXRmb3JtIG9iamVjdCB0aGF0IGltcGxlbWVudHMgc29tZSBvdGhlcgot
ICAgICAgICAvLyBpbnRlcmZhY2UuICAoSGF2ZSB0byBiZSBzdXJlIHRvIGdldCBpbmhlcml0YW5j
ZSByaWdodC4pCi0gICAgICAgIHRocm93T3JSZWplY3QoYV90ZXN0LCBtZW1iZXIsIG1lbWJlckhv
bGRlck9iamVjdFttZW1iZXIubmFtZV0sIHt9LCBhcmdzLAotICAgICAgICAgICAgICAgICAgICAg
ICJjYWxsaW5nIG9wZXJhdGlvbiB3aXRoIHRoaXMgPSB7fSBkaWRuJ3QgdGhyb3cgVHlwZUVycm9y
IiwgY2IpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLS8vQH0K
LUlkbEludGVyZmFjZS5wcm90b3R5cGUuYWRkX2l0ZXJhYmxlX21lbWJlcnMgPSBmdW5jdGlvbiht
ZW1iZXIpCi0vL0B7Ci17Ci0gICAgdGhpcy5tZW1iZXJzLnB1c2goe3R5cGU6ICJvcGVyYXRpb24i
LCBuYW1lOiAiZW50cmllcyIsIGlkbFR5cGU6ICJpdGVyYXRvciIsIGFyZ3VtZW50czogW119KTsK
LSAgICB0aGlzLm1lbWJlcnMucHVzaCh7dHlwZTogIm9wZXJhdGlvbiIsIG5hbWU6ICJrZXlzIiwg
aWRsVHlwZTogIml0ZXJhdG9yIiwgYXJndW1lbnRzOiBbXX0pOwotICAgIHRoaXMubWVtYmVycy5w
dXNoKHt0eXBlOiAib3BlcmF0aW9uIiwgbmFtZTogInZhbHVlcyIsIGlkbFR5cGU6ICJpdGVyYXRv
ciIsIGFyZ3VtZW50czogW119KTsKLSAgICB0aGlzLm1lbWJlcnMucHVzaCh7dHlwZTogIm9wZXJh
dGlvbiIsIG5hbWU6ICJmb3JFYWNoIiwgaWRsVHlwZTogInZvaWQiLCBhcmd1bWVudHM6Ci0gICAg
ICAgIFt7IG5hbWU6ICJjYWxsYmFjayIsIGlkbFR5cGU6IHtpZGxUeXBlOiAiZnVuY3Rpb24ifX0s
Ci0gICAgICAgIHsgbmFtZTogInRoaXNWYWx1ZSIsIGlkbFR5cGU6IHtpZGxUeXBlOiAiYW55In0s
IG9wdGlvbmFsOiB0cnVlfV19KTsKLX07Ci0KLS8vQH0KLUlkbEludGVyZmFjZS5wcm90b3R5cGUu
dGVzdF9tZW1iZXJfaXRlcmFibGUgPSBmdW5jdGlvbihtZW1iZXIpCi0vL0B7Ci17Ci0gICAgdmFy
IGludGVyZmFjZU5hbWUgPSB0aGlzLm5hbWU7Ci0gICAgdmFyIGlzUGFpckl0ZXJhdG9yID0gbWVt
YmVyLmlkbFR5cGUgaW5zdGFuY2VvZiBBcnJheTsKLSAgICB0ZXN0KGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihzZWxmW2ludGVyZmFjZU5hbWVdLnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yKTsKLSAgICAg
ICAgYXNzZXJ0X3RydWUoZGVzY3JpcHRvci53cml0YWJsZSwgInByb3BlcnR5IGlzIG5vdCB3cml0
YWJsZSIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSwgInBy
b3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Ny
aXB0b3IuZW51bWVyYWJsZSwgInByb3BlcnR5IGlzIGVudW1lcmFibGUiKTsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyhzZWxmW2ludGVyZmFjZU5hbWVdLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3Jd
Lm5hbWUsIGlzUGFpckl0ZXJhdG9yID8gImVudHJpZXMiIDogInZhbHVlcyIsICJAQGl0ZXJhdG9y
IGZ1bmN0aW9uIGRvZXMgbm90IGhhdmUgdGhlIHJpZ2h0IG5hbWUiKTsKLSAgICB9LCAiVGVzdGlu
ZyBTeW1ib2wuaXRlcmF0b3IgcHJvcGVydHkgb2YgaXRlcmFibGUgaW50ZXJmYWNlICIgKyBpbnRl
cmZhY2VOYW1lKTsKLQotICAgIGlmIChpc1BhaXJJdGVyYXRvcikgewotICAgICAgICB0ZXN0KGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW2ludGVyZmFjZU5hbWVd
LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLCBzZWxmW2ludGVyZmFjZU5hbWVdLnByb3RvdHlw
ZVsiZW50cmllcyJdLCAiZW50cmllcyBtZXRob2QgaXMgbm90IHRoZSBzYW1lIGFzIEBAaXRlcmF0
b3IiKTsKLSAgICAgICAgfSwgIlRlc3RpbmcgcGFpciBpdGVyYWJsZSBpbnRlcmZhY2UgIiArIGlu
dGVyZmFjZU5hbWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBbImVudHJpZXMiLCAia2V5cyIsICJ2YWx1ZXMiLCAiZm9yRWFjaCIsIFN5bWJv
bC5JdGVyYXRvcl0uZm9yRWFjaChmdW5jdGlvbihwcm9wZXJ0eSkgewotICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoc2VsZltpbnRlcmZhY2VOYW1lXS5wcm90b3R5cGVbcHJvcGVydHldLCBB
cnJheS5wcm90b3R5cGVbcHJvcGVydHldLCBwcm9wZXJ0eSArICIgZnVuY3Rpb24gaXMgbm90IHRo
ZSBzYW1lIGFzIEFycmF5IG9uZSIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJUZXN0
aW5nIHZhbHVlIGl0ZXJhYmxlIGludGVyZmFjZSAiICsgaW50ZXJmYWNlTmFtZSk7Ci0gICAgfQot
fTsKLQotLy9AfQotSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9zdHJpbmdpZmll
ciA9IGZ1bmN0aW9uKG1lbWJlcikKLS8vQHsKLXsKLSAgICB0ZXN0KGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkgJiYgIXRoaXMuaGFzX2NvbnN0YW50cygp
KSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhc3NlcnRfb3du
X3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFt
ZSkpOwotCi0gICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkpIHsKLSAgICAgICAgICAgIGFz
c2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiBzZWxmW3RoaXMubmFtZV0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5uYW1lICsgJyBzaG91bGQgbm90IGhhdmUgYSAicHJvdG90eXBlIiBw
cm9wZXJ0eScpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5cGUiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5v
dCBoYXZlIG93biBwcm9wZXJ0eSAicHJvdG90eXBlIicpOwotCi0gICAgICAgIC8vICIuIC4gLiB0
aGUgcHJvcGVydHkgZXhpc3RzIG9uIHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdC4iCi0g
ICAgICAgIHZhciBpbnRlcmZhY2VQcm90b3R5cGVPYmplY3QgPSBzZWxmW3RoaXMubmFtZV0ucHJv
dG90eXBlOwotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXS5wcm90
b3R5cGUsICJ0b1N0cmluZyIsCi0gICAgICAgICAgICAgICAgImludGVyZmFjZSBwcm90b3R5cGUg
b2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24iKTsKLQotICAgICAgICB2YXIgc3Ry
aW5naWZpZXJVbmZvcmdlYWJsZSA9IG1lbWJlci5pc1VuZm9yZ2VhYmxlOwotICAgICAgICB2YXIg
ZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaW50ZXJmYWNlUHJvdG90eXBl
T2JqZWN0LCAidG9TdHJpbmciKTsKLSAgICAgICAgLy8gIlRoZSBwcm9wZXJ0eSBoYXMgYXR0cmli
dXRlcyB7IFtbV3JpdGFibGVdXTogQiwKLSAgICAgICAgLy8gW1tFbnVtZXJhYmxlXV06IHRydWUs
IFtbQ29uZmlndXJhYmxlXV06IEIgfSwgd2hlcmUgQiBpcyBmYWxzZSBpZiB0aGUKLSAgICAgICAg
Ly8gc3RyaW5naWZpZXIgaXMgdW5mb3JnZWFibGUgb24gdGhlIGludGVyZmFjZSwgYW5kIHRydWUg
b3RoZXJ3aXNlLiIKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm9wZXJ0
eSBoYXMgZ2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAicHJv
cGVydHkgaGFzIHNldHRlciIpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Mud3JpdGFibGUs
ICFzdHJpbmdpZmllclVuZm9yZ2VhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0
eSBzaG91bGQgYmUgd3JpdGFibGUgaWYgYW5kIG9ubHkgaWYgbm90IHVuZm9yZ2VhYmxlIik7Ci0g
ICAgICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3BlcnR5IGlzIG5vdCBlbnVt
ZXJhYmxlIik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5jb25maWd1cmFibGUsICFzdHJp
bmdpZmllclVuZm9yZ2VhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSBzaG91
bGQgYmUgY29uZmlndXJhYmxlIGlmIGFuZCBvbmx5IGlmIG5vdCB1bmZvcmdlYWJsZSIpOwotICAg
ICAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpcyBhIEZ1bmN0aW9uIG9iamVjdCwg
d2hpY2ggYmVoYXZlcyBhcwotICAgICAgICAvLyBmb2xsb3dzIC4gLiAuIgotICAgICAgICBhc3Nl
cnRfZXF1YWxzKHR5cGVvZiBpbnRlcmZhY2VQcm90b3R5cGVPYmplY3QudG9TdHJpbmcsICJmdW5j
dGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5IG11c3QgYmUgYSBmdW5jdGlv
biIpOwotICAgICAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBGdW5jdGlvbiBvYmplY3TigJlzIOKA
nGxlbmd0aOKAnSBwcm9wZXJ0eSBpcyB0aGUgTnVtYmVyCi0gICAgICAgIC8vIHZhbHVlIDAuIgot
ICAgICAgICBhc3NlcnRfZXF1YWxzKGludGVyZmFjZVByb3RvdHlwZU9iamVjdC50b1N0cmluZy5s
ZW5ndGgsIDAsCi0gICAgICAgICAgICAicHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGgiKTsKLQot
ICAgICAgICAvLyAiTGV0IE8gYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRo
ZSB0aGlzIHZhbHVlLiIKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZS50b1N0cmlu
Zy5hcHBseShudWxsLCBbXSk7Ci0gICAgICAgIH0sICJjYWxsaW5nIHN0cmluZ2lmaWVyIHdpdGgg
dGhpcyA9IG51bGwgZGlkbid0IHRocm93IFR5cGVFcnJvciIpOwotCi0gICAgICAgIC8vICJJZiBP
IGlzIG5vdCBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2Ugb24gd2hpY2gg
dGhlCi0gICAgICAgIC8vIHN0cmluZ2lmaWVyIHdhcyBkZWNsYXJlZCwgdGhlbiB0aHJvdyBhIFR5
cGVFcnJvci4iCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFRPRE86IFRlc3QgYSBwbGF0Zm9ybSBv
YmplY3QgdGhhdCBpbXBsZW1lbnRzIHNvbWUgb3RoZXIKLSAgICAgICAgLy8gaW50ZXJmYWNlLiAg
KEhhdmUgdG8gYmUgc3VyZSB0byBnZXQgaW5oZXJpdGFuY2UgcmlnaHQuKQotICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBzZWxm
W3RoaXMubmFtZV0ucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHt9LCBbXSk7Ci0gICAgICAgIH0s
ICJjYWxsaW5nIHN0cmluZ2lmaWVyIHdpdGggdGhpcyA9IHt9IGRpZG4ndCB0aHJvdyBUeXBlRXJy
b3IiKTsKLSAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBzdHJpbmdp
ZmllciIpOwotfTsKLQotLy9AfQotSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcnMg
PSBmdW5jdGlvbigpCi0vL0B7Ci17Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1lbWJl
cnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgICB2YXIgbWVtYmVyID0gdGhpcy5tZW1iZXJz
W2ldOwotICAgICAgICBzd2l0Y2ggKG1lbWJlci50eXBlKSB7Ci0gICAgICAgIGNhc2UgIml0ZXJh
YmxlIjoKLSAgICAgICAgICAgIHRoaXMuYWRkX2l0ZXJhYmxlX21lbWJlcnMobWVtYmVyKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAvLyBUT0RPOiBhZGQgc2V0bGlrZSBhbmQgbWFwbGlr
ZSBoYW5kbGluZy4KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1lbWJlcnMubGVuZ3Ro
OyBpKyspCi0gICAgewotICAgICAgICB2YXIgbWVtYmVyID0gdGhpcy5tZW1iZXJzW2ldOwotICAg
ICAgICBpZiAobWVtYmVyLnVudGVzdGVkKSB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHN3aXRjaCAobWVtYmVyLnR5cGUpIHsKLSAgICAgICAgY2FzZSAiY29u
c3QiOgotICAgICAgICAgICAgdGhpcy50ZXN0X21lbWJlcl9jb25zdChtZW1iZXIpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAiYXR0cmlidXRlIjoKLSAgICAgICAgICAgIC8v
IEZvciB1bmZvcmdlYWJsZSBhdHRyaWJ1dGVzLCB3ZSBkbyB0aGUgY2hlY2tzIGluCi0gICAgICAg
ICAgICAvLyB0ZXN0X2ludGVyZmFjZV9vZiBpbnN0ZWFkLgotICAgICAgICAgICAgaWYgKCFtZW1i
ZXIuaXNVbmZvcmdlYWJsZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLnRl
c3RfbWVtYmVyX2F0dHJpYnV0ZShtZW1iZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKG1lbWJlci5zdHJpbmdpZmllcikgewotICAgICAgICAgICAgICAgIHRoaXMudGVzdF9tZW1i
ZXJfc3RyaW5naWZpZXIobWVtYmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgIm9wZXJhdGlvbiI6Ci0gICAgICAgICAgICAvLyBUT0RPOiBOZWVk
IHRvIGNvcnJlY3RseSBoYW5kbGUgbXVsdGlwbGUgb3BlcmF0aW9ucyB3aXRoIHRoZSBzYW1lCi0g
ICAgICAgICAgICAvLyBpZGVudGlmaWVyLgotICAgICAgICAgICAgLy8gRm9yIHVuZm9yZ2VhYmxl
IG9wZXJhdGlvbnMsIHdlIGRvIHRoZSBjaGVja3MgaW4KLSAgICAgICAgICAgIC8vIHRlc3RfaW50
ZXJmYWNlX29mIGluc3RlYWQuCi0gICAgICAgICAgICBpZiAobWVtYmVyLm5hbWUpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIW1lbWJlci5pc1VuZm9yZ2VhYmxlKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXN0X21lbWJlcl9vcGVyYXRpb24obWVtYmVyKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1lbWJlci5zdHJpbmdp
ZmllcikgewotICAgICAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfc3RyaW5naWZpZXIobWVt
YmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2Ug
Iml0ZXJhYmxlIjoKLSAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfaXRlcmFibGUobWVtYmVy
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgLy8g
VE9ETzogY2hlY2sgbW9yZSBtZW1iZXIgdHlwZXMuCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLX07Ci0KLS8vQH0KLUlkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9vYmpl
Y3QgPSBmdW5jdGlvbihkZXNjKQotLy9AewotewotICAgIHZhciBvYmosIGV4Y2VwdGlvbiA9IG51
bGw7Ci0gICAgdHJ5Ci0gICAgewotICAgICAgICBvYmogPSBldmFsKGRlc2MpOwotICAgIH0KLSAg
ICBjYXRjaChlKQotICAgIHsKLSAgICAgICAgZXhjZXB0aW9uID0gZTsKLSAgICB9Ci0KLSAgICB2
YXIgZXhwZWN0ZWRfdHlwZW9mID0KLSAgICAgICAgdGhpcy5tZW1iZXJzLnNvbWUoZnVuY3Rpb24o
bWVtYmVyKSB7IHJldHVybiBtZW1iZXIubGVnYWN5Y2FsbGVyOyB9KQotICAgICAgICA/ICJmdW5j
dGlvbiIKLSAgICAgICAgOiAib2JqZWN0IjsKLQotICAgIHRoaXMudGVzdF9wcmltYXJ5X2ludGVy
ZmFjZV9vZihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0ZWRfdHlwZW9mKTsKLSAgICB2YXIg
Y3VycmVudF9pbnRlcmZhY2UgPSB0aGlzOwotICAgIHdoaWxlIChjdXJyZW50X2ludGVyZmFjZSkK
LSAgICB7Ci0gICAgICAgIGlmICghKGN1cnJlbnRfaW50ZXJmYWNlLm5hbWUgaW4gdGhpcy5hcnJh
eS5tZW1iZXJzKSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgIkludGVyZmFjZSAiICsg
Y3VycmVudF9pbnRlcmZhY2UubmFtZSArICIgbm90IGZvdW5kIChpbmhlcml0ZWQgYnkgIiArIHRo
aXMubmFtZSArICIpIjsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3VycmVudF9pbnRlcmZhY2Uu
cHJldmVudF9tdWx0aXBsZV90ZXN0aW5nICYmIGN1cnJlbnRfaW50ZXJmYWNlLmFscmVhZHlfdGVz
dGVkKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
Y3VycmVudF9pbnRlcmZhY2UudGVzdF9pbnRlcmZhY2Vfb2YoZGVzYywgb2JqLCBleGNlcHRpb24s
IGV4cGVjdGVkX3R5cGVvZik7Ci0gICAgICAgIGN1cnJlbnRfaW50ZXJmYWNlID0gdGhpcy5hcnJh
eS5tZW1iZXJzW2N1cnJlbnRfaW50ZXJmYWNlLmJhc2VdOwotICAgIH0KLX07Ci0KLS8vQH0KLUlk
bEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9wcmltYXJ5X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9u
KGRlc2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3RlZF90eXBlb2YpCi0vL0B7Ci17Ci0gICAgLy8g
V2UgY2FuJ3QgZWFzaWx5IHRlc3QgdGhhdCBpdHMgcHJvdG90eXBlIGlzIGNvcnJlY3QgaWYgdGhl
cmUncyBubwotICAgIC8vIGludGVyZmFjZSBvYmplY3QsIG9yIHRoZSBvYmplY3QgaXMgZnJvbSBh
IGRpZmZlcmVudCBnbG9iYWwgZW52aXJvbm1lbnQKLSAgICAvLyAobm90IGluc3RhbmNlb2YgT2Jq
ZWN0KS4gIFRPRE86IHRlc3QgaW4gdGhpcyBjYXNlIHRoYXQgaXRzIHByb3RvdHlwZSBhdAotICAg
IC8vIGxlYXN0IGxvb2tzIGNvcnJlY3QsIGV2ZW4gaWYgd2UgY2FuJ3QgdGVzdCB0aGF0IGl0J3Mg
YWN0dWFsbHkgY29ycmVjdC4KLSAgICBpZiAoIXRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgi
Tm9JbnRlcmZhY2VPYmplY3QiKQotICAgICYmICh0eXBlb2Ygb2JqICE9IGV4cGVjdGVkX3R5cGVv
ZiB8fCBvYmogaW5zdGFuY2VvZiBPYmplY3QpKQotICAgIHsKLSAgICAgICAgdGVzdChmdW5jdGlv
bigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBudWxs
LCAiVW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOwotICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygb2JqLCBleHBlY3RlZF90eXBlb2YsICJ3cm9uZyB0
eXBlb2Ygb2JqZWN0Iik7Ci0gICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRo
aXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3Qg
aGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKLSAgICAgICAg
ICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCAicHJvdG90eXBlIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFtZSAr
ICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5cGUiJyk7Ci0KLSAgICAgICAg
ICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkg
b2YgdGhlCi0gICAgICAgICAgICAvLyBwbGF0Zm9ybSBvYmplY3QgaXMgdGhlIGludGVyZmFjZSBw
cm90b3R5cGUgb2JqZWN0IG9mIHRoZSBwcmltYXJ5Ci0gICAgICAgICAgICAvLyBpbnRlcmZhY2Ug
ZnJvbSB0aGUgcGxhdGZvcm0gb2JqZWN04oCZcyBhc3NvY2lhdGVkIGdsb2JhbAotICAgICAgICAg
ICAgLy8gZW52aXJvbm1lbnQuIgotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0
UHJvdG90eXBlT2Yob2JqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZlt0aGlzLm5h
bWVdLnByb3RvdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYyArICIncyBwcm90
b3R5cGUgaXMgbm90ICIgKyB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSIpOwotICAgICAgICB9LmJp
bmQodGhpcyksIHRoaXMubmFtZSArICIgbXVzdCBiZSBwcmltYXJ5IGludGVyZmFjZSBvZiAiICsg
ZGVzYyk7Ci0gICAgfQotCi0gICAgLy8gIlRoZSBjbGFzcyBzdHJpbmcgb2YgYSBwbGF0Zm9ybSBv
YmplY3QgdGhhdCBpbXBsZW1lbnRzIG9uZSBvciBtb3JlCi0gICAgLy8gaW50ZXJmYWNlcyBtdXN0
IGJlIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBwcmltYXJ5IGludGVyZmFjZSBvZiB0aGUKLSAgICAv
LyBwbGF0Zm9ybSBvYmplY3QuIgotICAgIHRlc3QoZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
YXNzZXJ0X2VxdWFscyhleGNlcHRpb24sIG51bGwsICJVbmV4cGVjdGVkIGV4Y2VwdGlvbiB3aGVu
IGV2YWx1YXRpbmcgb2JqZWN0Iik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG9iaiwg
ZXhwZWN0ZWRfdHlwZW9mLCAid3JvbmcgdHlwZW9mIG9iamVjdCIpOwotICAgICAgICBhc3NlcnRf
Y2xhc3Nfc3RyaW5nKG9iaiwgdGhpcy5uYW1lLCAiY2xhc3Mgc3RyaW5nIG9mICIgKyBkZXNjKTsK
LSAgICAgICAgaWYgKCF0aGlzLmhhc19zdHJpbmdpZmllcigpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKFN0cmluZyhvYmopLCAiW29iamVjdCAiICsgdGhpcy5uYW1lICsg
Il0iLCAiU3RyaW5nKCIgKyBkZXNjICsgIikiKTsKLSAgICAgICAgfQotICAgIH0uYmluZCh0aGlz
KSwgIlN0cmluZ2lmaWNhdGlvbiBvZiAiICsgZGVzYyk7Ci19OwotCi0vL0B9Ci1JZGxJbnRlcmZh
Y2UucHJvdG90eXBlLnRlc3RfaW50ZXJmYWNlX29mID0gZnVuY3Rpb24oZGVzYywgb2JqLCBleGNl
cHRpb24sIGV4cGVjdGVkX3R5cGVvZikKLS8vQHsKLXsKLSAgICAvLyBUT0RPOiBJbmRleGVkIGFu
ZCBuYW1lZCBwcm9wZXJ0aWVzLCBtb3JlIGNoZWNrcyBvbiBpbnRlcmZhY2UgbWVtYmVycwotICAg
IHRoaXMuYWxyZWFkeV90ZXN0ZWQgPSB0cnVlOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLm1lbWJlcnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgICB2YXIgbWVtYmVyID0gdGhp
cy5tZW1iZXJzW2ldOwotICAgICAgICBpZiAobWVtYmVyLnR5cGUgPT0gImF0dHJpYnV0ZSIgJiYg
bWVtYmVyLmlzVW5mb3JnZWFibGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBhX3Rlc3Qg
PSBhc3luY190ZXN0KHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiAiICsgZGVzYyArICcgbXVzdCBo
YXZlIG93biBwcm9wZXJ0eSAiJyArIG1lbWJlci5uYW1lICsgJyInKTsKLSAgICAgICAgICAgIGFf
dGVzdC5zdGVwKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhj
ZXB0aW9uLCBudWxsLCAiVW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVj
dCIpOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG9iaiwgZXhwZWN0ZWRf
dHlwZW9mLCAid3JvbmcgdHlwZW9mIG9iamVjdCIpOwotICAgICAgICAgICAgICAgIC8vIENhbGwg
ZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzIGxhc3QsIHNpbmNlIGl0IHdpbGwgY2FsbCBh
X3Rlc3QuZG9uZSgpCi0gICAgICAgICAgICAgICAgdGhpcy5kb19pbnRlcmZhY2VfYXR0cmlidXRl
X2Fzc2VydHMob2JqLCBtZW1iZXIsIGFfdGVzdCk7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcykp
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG1lbWJlci50eXBlID09ICJvcGVyYXRpb24i
ICYmCi0gICAgICAgICAgICAgICAgIG1lbWJlci5uYW1lICYmCi0gICAgICAgICAgICAgICAgIG1l
bWJlci5pc1VuZm9yZ2VhYmxlKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgYV90ZXN0ID0g
YXN5bmNfdGVzdCh0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3QgaGF2
ZSBvd24gcHJvcGVydHkgIicgKyBtZW1iZXIubmFtZSArICciJyk7Ci0gICAgICAgICAgICBhX3Rl
c3Quc3RlcChmdW5jdGlvbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhleGNlcHRpb24sIG51bGwsICJVbmV4cGVjdGVkIGV4Y2VwdGlvbiB3aGVuIGV2YWx1
YXRpbmcgb2JqZWN0Iik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygb2Jq
LCBleHBlY3RlZF90eXBlb2YsICJ3cm9uZyB0eXBlb2Ygb2JqZWN0Iik7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0X293bl9wcm9wZXJ0eShvYmosIG1lbWJlci5uYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkRvZXNuJ3QgaGF2ZSB0aGUgdW5mb3JnZWFibGUgb3BlcmF0
aW9uIHByb3BlcnR5Iik7Ci0gICAgICAgICAgICAgICAgdGhpcy5kb19tZW1iZXJfb3BlcmF0aW9u
X2Fzc2VydHMob2JqLCBtZW1iZXIsIGFfdGVzdCk7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcykp
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKChtZW1iZXIudHlwZSA9PSAiY29uc3QiCi0g
ICAgICAgIHx8IG1lbWJlci50eXBlID09ICJhdHRyaWJ1dGUiCi0gICAgICAgIHx8IG1lbWJlci50
eXBlID09ICJvcGVyYXRpb24iKQotICAgICAgICAmJiBtZW1iZXIubmFtZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgdGVzdChmdW5jdGlvbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhleGNlcHRpb24sIG51bGwsICJVbmV4cGVjdGVkIGV4Y2VwdGlvbiB3
aGVuIGV2YWx1YXRpbmcgb2JqZWN0Iik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2Ygb2JqLCBleHBlY3RlZF90eXBlb2YsICJ3cm9uZyB0eXBlb2Ygb2JqZWN0Iik7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFtZW1iZXJbInN0YXRpYyJdKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghdGhpcy5pc19nbG9iYWwoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
X2luaGVyaXRzKG9iaiwgbWVtYmVyLm5hbWUpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShvYmosIG1lbWJl
ci5uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlm
IChtZW1iZXIudHlwZSA9PSAiY29uc3QiKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG9ialttZW1iZXIubmFtZV0sIGNvbnN0VmFs
dWUobWVtYmVyLnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG1lbWJlci50eXBlID09ICJhdHRyaWJ1dGUiKQotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBBdHRyaWJ1dGVzIGFyZSBhY2Nlc3NvciBw
cm9wZXJ0aWVzLCBzbyB0aGV5IG1pZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBsZWdp
dGltYXRlbHkgdGhyb3cgYW4gZXhjZXB0aW9uIHJhdGhlciB0aGFuIHJldHVybmluZwotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYW55dGhpbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICB2
YXIgcHJvcGVydHksIHRocm93biA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5
Ci0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHkgPSBvYmpbbWVtYmVyLm5hbWVdOwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpCi0gICAgICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3duID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhyb3duKQot
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMuYXJyYXkuYXNzZXJ0X3R5cGVfaXMocHJvcGVydHksIG1lbWJlci5pZGxUeXBlKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBpZiAobWVtYmVyLnR5cGUgPT0gIm9wZXJhdGlvbiIpCi0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG9ialtt
ZW1iZXIubmFtZV0sICJmdW5jdGlvbiIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVy
ZmFjZTogIiArIGRlc2MgKyAnIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiJyArIG1lbWJlci5uYW1l
ICsgJyIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgKCcgKyBpICsgJyknKTsKLSAgICAgICAgfQotICAg
ICAgICAvLyBUT0RPOiBUaGlzIGlzIHdyb25nIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBvcGVyYXRp
b25zIHdpdGggdGhlIHNhbWUKLSAgICAgICAgLy8gaWRlbnRpZmllci4KLSAgICAgICAgLy8gVE9E
TzogVGVzdCBwYXNzaW5nIGFyZ3VtZW50cyBvZiB0aGUgd3JvbmcgdHlwZS4KLSAgICAgICAgaWYg
KG1lbWJlci50eXBlID09ICJvcGVyYXRpb24iICYmIG1lbWJlci5uYW1lICYmIG1lbWJlci5hcmd1
bWVudHMubGVuZ3RoKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgYV90ZXN0ID0gYXN5bmNf
dGVzdCggdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGNhbGxpbmcgIiArIG1lbWJlci5uYW1lICsK
LSAgICAgICAgICAgICIoIiArIG1lbWJlci5hcmd1bWVudHMubWFwKGZ1bmN0aW9uKG0pIHsgcmV0
dXJuIG0uaWRsVHlwZS5pZGxUeXBlOyB9KSArCi0gICAgICAgICAgICAiKSBvbiAiICsgZGVzYyAr
ICIgd2l0aCB0b28gZmV3IGFyZ3VtZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciIpOwotICAgICAg
ICAgICAgYV90ZXN0LnN0ZXAoZnVuY3Rpb24oKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBudWxsLCAiVW5leHBlY3RlZCBleGNlcHRpb24g
d2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
dHlwZW9mIG9iaiwgZXhwZWN0ZWRfdHlwZW9mLCAid3JvbmcgdHlwZW9mIG9iamVjdCIpOwotICAg
ICAgICAgICAgICAgIGlmICghbWVtYmVyWyJzdGF0aWMiXSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoIXRoaXMuaXNfZ2xvYmFsKCkgJiYgIW1lbWJlci5pc1VuZm9yZ2VhYmxlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBhc3NlcnRfaW5oZXJpdHMob2JqLCBtZW1iZXIubmFtZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfb3duX3Byb3BlcnR5KG9iaiwgbWVtYmVyLm5hbWUpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZShtZW1iZXIubmFtZSBpbiBvYmop
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHZhciBtaW5MZW5ndGggPSBt
aW5PdmVybG9hZExlbmd0aCh0aGlzLm1lbWJlcnMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG0udHlwZSA9PSAib3BlcmF0aW9uIiAmJiBtLm5hbWUgPT0g
bWVtYmVyLm5hbWU7Ci0gICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgICAgIHZhciBh
cmdzID0gW107Ci0gICAgICAgICAgICAgICAgdmFyIGNiID0gYXdhaXROQ2FsbGJhY2tzKG1pbkxl
bmd0aCwgYV90ZXN0LmRvbmUuYmluZChhX3Rlc3QpKTsKLSAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG1pbkxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93
T3JSZWplY3QoYV90ZXN0LCBtZW1iZXIsIG9ialttZW1iZXIubmFtZV0sIG9iaiwgYXJncywgICJD
YWxsZWQgd2l0aCAiICsgaSArICIgYXJndW1lbnRzIiwgY2IpOwotCi0gICAgICAgICAgICAgICAg
ICAgIGFyZ3MucHVzaChjcmVhdGVfc3VpdGFibGVfb2JqZWN0KG1lbWJlci5hcmd1bWVudHNbaV0u
aWRsVHlwZSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAobWluTGVu
Z3RoID09PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNiKCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLS8v
QH0KLUlkbEludGVyZmFjZS5wcm90b3R5cGUuaGFzX3N0cmluZ2lmaWVyID0gZnVuY3Rpb24oKQot
Ly9AewotewotICAgIGlmICh0aGlzLm1lbWJlcnMuc29tZShmdW5jdGlvbihtZW1iZXIpIHsgcmV0
dXJuIG1lbWJlci5zdHJpbmdpZmllcjsgfSkpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIGlmICh0aGlzLmJhc2UgJiYKLSAgICAgICAgdGhpcy5hcnJheS5tZW1iZXJzW3RoaXMu
YmFzZV0uaGFzX3N0cmluZ2lmaWVyKCkpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIHJldHVybiBmYWxzZTsKLX07Ci0KLS8vQH0KLUlkbEludGVyZmFjZS5wcm90b3R5cGUuZG9f
aW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzID0gZnVuY3Rpb24ob2JqLCBtZW1iZXIsIGFfdGVz
dCkKLS8vQHsKLXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE1
LTAxLTI3LgotICAgIC8vIFRPRE86IENvbnNpZGVyIFtFeHBvc2VkXS4KLQotICAgIC8vIFRoaXMg
aXMgY2FsbGVkIGJ5IHRlc3RfbWVtYmVyX2F0dHJpYnV0ZSgpIHdpdGggdGhlIHByb3RvdHlwZSBh
cyBvYmogaWYKLSAgICAvLyBpdCBpcyBub3QgYSBnbG9iYWwsIGFuZCB0aGUgZ2xvYmFsIG90aGVy
d2lzZSwgYW5kIGJ5IHRlc3RfaW50ZXJmYWNlX29mKCkKLSAgICAvLyB3aXRoIHRoZSBvYmplY3Qg
YXMgb2JqLgotCi0gICAgdmFyIHBlbmRpbmdQcm9taXNlcyA9IFtdOwotCi0gICAgLy8gIkZvciBl
YWNoIGV4cG9zZWQgYXR0cmlidXRlIG9mIHRoZSBpbnRlcmZhY2UsIHdoZXRoZXIgaXQgd2FzIGRl
Y2xhcmVkIG9uCi0gICAgLy8gdGhlIGludGVyZmFjZSBpdHNlbGYgb3Igb25lIG9mIGl0cyBjb25z
ZXF1ZW50aWFsIGludGVyZmFjZXMsIHRoZXJlIE1VU1QKLSAgICAvLyBleGlzdCBhIGNvcnJlc3Bv
bmRpbmcgcHJvcGVydHkuIFRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhpcyBwcm9wZXJ0eSBhcmUK
LSAgICAvLyBhcyBmb2xsb3dzOiIKLQotICAgIC8vICJUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkg
aXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIGF0dHJpYnV0ZS4iCi0gICAgYXNzZXJ0X293bl9wcm9w
ZXJ0eShvYmosIG1lbWJlci5uYW1lKTsKLQotICAgIC8vICJUaGUgcHJvcGVydHkgaGFzIGF0dHJp
YnV0ZXMgeyBbW0dldF1dOiBHLCBbW1NldF1dOiBTLCBbW0VudW1lcmFibGVdXToKLSAgICAvLyB0
cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiBjb25maWd1cmFibGUgfSwgd2hlcmU6Ci0gICAgLy8gImNv
bmZpZ3VyYWJsZSBpcyBmYWxzZSBpZiB0aGUgYXR0cmlidXRlIHdhcyBkZWNsYXJlZCB3aXRoIHRo
ZQotICAgIC8vIFtVbmZvcmdlYWJsZV0gZXh0ZW5kZWQgYXR0cmlidXRlIGFuZCB0cnVlIG90aGVy
d2lzZTsKLSAgICAvLyAiRyBpcyB0aGUgYXR0cmlidXRlIGdldHRlciwgZGVmaW5lZCBiZWxvdzsg
YW5kCi0gICAgLy8gIlMgaXMgdGhlIGF0dHJpYnV0ZSBzZXR0ZXIsIGFsc28gZGVmaW5lZCBiZWxv
dy4iCi0gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwg
bWVtYmVyLm5hbWUpOwotICAgIGFzc2VydF9mYWxzZSgidmFsdWUiIGluIGRlc2MsICdwcm9wZXJ0
eSBkZXNjcmlwdG9yIGhhcyB2YWx1ZSBidXQgaXMgc3VwcG9zZWQgdG8gYmUgYWNjZXNzb3InKTsK
LSAgICBhc3NlcnRfZmFsc2UoIndyaXRhYmxlIiBpbiBkZXNjLCAncHJvcGVydHkgZGVzY3JpcHRv
ciBoYXMgIndyaXRhYmxlIiBmaWVsZCBidXQgaXMgc3VwcG9zZWQgdG8gYmUgYWNjZXNzb3InKTsK
LSAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0eSBpcyBub3QgZW51bWVy
YWJsZSIpOwotICAgIGlmIChtZW1iZXIuaXNVbmZvcmdlYWJsZSkKLSAgICB7Ci0gICAgICAgIGFz
c2VydF9mYWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgIltVbmZvcmdlYWJsZV0gcHJvcGVydHkgbXVz
dCBub3QgYmUgY29uZmlndXJhYmxlIik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAg
IGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCAicHJvcGVydHkgbXVzdCBiZSBjb25maWd1
cmFibGUiKTsKLSAgICB9Ci0KLQotICAgIC8vICJUaGUgYXR0cmlidXRlIGdldHRlciBpcyBhIEZ1
bmN0aW9uIG9iamVjdCB3aG9zZSBiZWhhdmlvciB3aGVuIGludm9rZWQKLSAgICAvLyBpcyBhcyBm
b2xsb3dzOiIKLSAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBkZXNjLmdldCwgImZ1bmN0aW9uIiwg
ImdldHRlciBtdXN0IGJlIEZ1bmN0aW9uIik7Ci0KLSAgICAvLyAiSWYgdGhlIGF0dHJpYnV0ZSBp
cyBhIHJlZ3VsYXIgYXR0cmlidXRlLCB0aGVuOiIKLSAgICBpZiAoIW1lbWJlclsic3RhdGljIl0p
IHsKLSAgICAgICAgLy8gIklmIE8gaXMgbm90IGEgcGxhdGZvcm0gb2JqZWN0IHRoYXQgaW1wbGVt
ZW50cyBJLCB0aGVuOgotICAgICAgICAvLyAiSWYgdGhlIGF0dHJpYnV0ZSB3YXMgc3BlY2lmaWVk
IHdpdGggdGhlIFtMZW5pZW50VGhpc10gZXh0ZW5kZWQKLSAgICAgICAgLy8gYXR0cmlidXRlLCB0
aGVuIHJldHVybiB1bmRlZmluZWQuCi0gICAgICAgIC8vICJPdGhlcndpc2UsIHRocm93IGEgVHlw
ZUVycm9yLiIKLSAgICAgICAgaWYgKCFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVu
aWVudFRoaXMiKSkgewotICAgICAgICAgICAgaWYgKG1lbWJlci5pZGxUeXBlLmdlbmVyaWMgIT09
ICJQcm9taXNlIikgewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVzYy5nZXQuY2FsbCh7fSk7
Ci0gICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiY2FsbGluZyBnZXR0ZXIgb24gd3Jvbmcg
b2JqZWN0IHR5cGUgbXVzdCB0aHJvdyBUeXBlRXJyb3IiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2VzLnB1c2goCi0gICAgICAgICAgICAgICAg
ICAgIHByb21pc2VfcmVqZWN0cyhhX3Rlc3QsIG5ldyBUeXBlRXJyb3IoKSwgZGVzYy5nZXQuY2Fs
bCh7fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGluZyBnZXR0
ZXIgb24gd3Jvbmcgb2JqZWN0IHR5cGUgbXVzdCByZWplY3QgdGhlIHJldHVybiBwcm9taXNlIHdp
dGggVHlwZUVycm9yIikpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLmdldC5jYWxsKHt9KSwgdW5kZWZpbmVkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAiY2FsbGluZyBnZXR0ZXIgb24gd3Jvbmcgb2JqZWN0IHR5cGUg
bXVzdCByZXR1cm4gdW5kZWZpbmVkIik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyAiVGhl
IHZhbHVlIG9mIHRoZSBGdW5jdGlvbiBvYmplY3TigJlzIOKAnGxlbmd0aOKAnSBwcm9wZXJ0eSBp
cyB0aGUgTnVtYmVyCi0gICAgLy8gdmFsdWUgMC4iCi0gICAgYXNzZXJ0X2VxdWFscyhkZXNjLmdl
dC5sZW5ndGgsIDAsICJnZXR0ZXIgbGVuZ3RoIG11c3QgYmUgMCIpOwotCi0KLSAgICAvLyBUT0RP
OiBUZXN0IGNhbGxpbmcgc2V0dGVyIG9uIHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIChzaG91bGQg
dGhyb3cKLSAgICAvLyBUeXBlRXJyb3IgaW4gbW9zdCBjYXNlcykuCi0gICAgaWYgKG1lbWJlci5y
ZWFkb25seQotICAgICYmICFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiUHV0Rm9yd2Fy
ZHMiKQotICAgICYmICFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiUmVwbGFjZWFibGUi
KSkKLSAgICB7Ci0gICAgICAgIC8vICJUaGUgYXR0cmlidXRlIHNldHRlciBpcyB1bmRlZmluZWQg
aWYgdGhlIGF0dHJpYnV0ZSBpcyBkZWNsYXJlZAotICAgICAgICAvLyByZWFkb25seSBhbmQgaGFz
IG5laXRoZXIgYSBbUHV0Rm9yd2FyZHNdIG5vciBhIFtSZXBsYWNlYWJsZV0KLSAgICAgICAgLy8g
ZXh0ZW5kZWQgYXR0cmlidXRlIGRlY2xhcmVkIG9uIGl0LiIKLSAgICAgICAgYXNzZXJ0X2VxdWFs
cyhkZXNjLnNldCwgdW5kZWZpbmVkLCAic2V0dGVyIG11c3QgYmUgdW5kZWZpbmVkIGZvciByZWFk
b25seSBhdHRyaWJ1dGVzIik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIC8vICJP
dGhlcndpc2UsIGl0IGlzIGEgRnVuY3Rpb24gb2JqZWN0IHdob3NlIGJlaGF2aW9yIHdoZW4KLSAg
ICAgICAgLy8gaW52b2tlZCBpcyBhcyBmb2xsb3dzOiIKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgZGVzYy5zZXQsICJmdW5jdGlvbiIsICJzZXR0ZXIgbXVzdCBiZSBmdW5jdGlvbiBmb3Ig
UHV0Rm9yd2FyZHMsIFJlcGxhY2VhYmxlLCBvciBub24tcmVhZG9ubHkgYXR0cmlidXRlcyIpOwot
Ci0gICAgICAgIC8vICJJZiB0aGUgYXR0cmlidXRlIGlzIGEgcmVndWxhciBhdHRyaWJ1dGUsIHRo
ZW46IgotICAgICAgICBpZiAoIW1lbWJlclsic3RhdGljIl0pIHsKLSAgICAgICAgICAgIC8vICJJ
ZiAvdmFsaWRUaGlzLyBpcyBmYWxzZSBhbmQgdGhlIGF0dHJpYnV0ZSB3YXMgbm90IHNwZWNpZmll
ZAotICAgICAgICAgICAgLy8gd2l0aCB0aGUgW0xlbmllbnRUaGlzXSBleHRlbmRlZCBhdHRyaWJ1
dGUsIHRoZW4gdGhyb3cgYQotICAgICAgICAgICAgLy8gVHlwZUVycm9yLiIKLSAgICAgICAgICAg
IC8vICJJZiB0aGUgYXR0cmlidXRlIGlzIGRlY2xhcmVkIHdpdGggYSBbUmVwbGFjZWFibGVdIGV4
dGVuZGVkCi0gICAgICAgICAgICAvLyBhdHRyaWJ1dGUsIHRoZW46IC4uLiIKLSAgICAgICAgICAg
IC8vICJJZiB2YWxpZFRoaXMgaXMgZmFsc2UsIHRoZW4gcmV0dXJuLiIKLSAgICAgICAgICAgIGlm
ICghbWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxlbmllbnRUaGlzIikpIHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGRlc2Muc2V0LmNhbGwoe30pOwotICAgICAgICAgICAgICAgIH0u
YmluZCh0aGlzKSwgImNhbGxpbmcgc2V0dGVyIG9uIHdyb25nIG9iamVjdCB0eXBlIG11c3QgdGhy
b3cgVHlwZUVycm9yIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoZGVzYy5zZXQuY2FsbCh7fSksIHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJjYWxsaW5nIHNldHRlciBvbiB3cm9uZyBvYmplY3QgdHlwZSBtdXN0
IHJldHVybiB1bmRlZmluZWQiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IC8vICJUaGUgdmFsdWUgb2YgdGhlIEZ1bmN0aW9uIG9iamVjdOKAmXMg4oCcbGVuZ3Ro4oCdIHBy
b3BlcnR5IGlzIHRoZSBOdW1iZXIKLSAgICAgICAgLy8gdmFsdWUgMS4iCi0gICAgICAgIGFzc2Vy
dF9lcXVhbHMoZGVzYy5zZXQubGVuZ3RoLCAxLCAic2V0dGVyIGxlbmd0aCBtdXN0IGJlIDEiKTsK
LSAgICB9Ci0KLSAgICBQcm9taXNlLmFsbChwZW5kaW5nUHJvbWlzZXMpLnRoZW4oYV90ZXN0LmRv
bmUuYmluZChhX3Rlc3QpKTsKLX0KLS8vQH0KLQotLy8vIElkbEludGVyZmFjZU1lbWJlciAvLy8K
LWZ1bmN0aW9uIElkbEludGVyZmFjZU1lbWJlcihvYmopCi0vL0B7Ci17Ci0gICAgLyoqCi0gICAg
ICogb2JqIGlzIGFuIG9iamVjdCBwcm9kdWNlZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJpZk1l
bWJlciIgcHJvZHVjdGlvbi4KLSAgICAgKiBXZSBqdXN0IGZvcndhcmQgYWxsIHByb3BlcnRpZXMg
dG8gdGhpcyBvYmplY3Qgd2l0aG91dCBtb2RpZmljYXRpb24sCi0gICAgICogZXhjZXB0IGZvciBz
cGVjaWFsIGV4dEF0dHJzIGhhbmRsaW5nLgotICAgICAqLwotICAgIGZvciAodmFyIGsgaW4gb2Jq
KQotICAgIHsKLSAgICAgICAgdGhpc1trXSA9IG9ialtrXTsKLSAgICB9Ci0gICAgaWYgKCEoImV4
dEF0dHJzIiBpbiB0aGlzKSkKLSAgICB7Ci0gICAgICAgIHRoaXMuZXh0QXR0cnMgPSBbXTsKLSAg
ICB9Ci0KLSAgICB0aGlzLmlzVW5mb3JnZWFibGUgPSB0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1
dGUoIlVuZm9yZ2VhYmxlIik7Ci19Ci0KLS8vQH0KLUlkbEludGVyZmFjZU1lbWJlci5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKElkbE9iamVjdC5wcm90b3R5cGUpOwotCi0vLy8gSW50ZXJuYWwg
aGVscGVyIGZ1bmN0aW9ucyAvLy8KLWZ1bmN0aW9uIGNyZWF0ZV9zdWl0YWJsZV9vYmplY3QodHlw
ZSkKLS8vQHsKLXsKLSAgICAvKioKLSAgICAgKiB0eXBlIGlzIGFuIG9iamVjdCBwcm9kdWNlZCBi
eSB0aGUgV2ViSURMUGFyc2VyLmpzICJ0eXBlIiBwcm9kdWN0aW9uLiAgV2UKLSAgICAgKiByZXR1
cm4gYSBKYXZhU2NyaXB0IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgdHlwZSwgaWYgd2UgY2FuIGZp
Z3VyZSBvdXQKLSAgICAgKiBob3cuCi0gICAgICovCi0gICAgaWYgKHR5cGUubnVsbGFibGUpCi0g
ICAgewotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gICAgc3dpdGNoICh0eXBlLmlkbFR5
cGUpCi0gICAgewotICAgICAgICBjYXNlICJhbnkiOgotICAgICAgICBjYXNlICJib29sZWFuIjoK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGNhc2UgImJ5dGUiOiBjYXNlICJv
Y3RldCI6IGNhc2UgInNob3J0IjogY2FzZSAidW5zaWduZWQgc2hvcnQiOgotICAgICAgICBjYXNl
ICJsb25nIjogY2FzZSAidW5zaWduZWQgbG9uZyI6IGNhc2UgImxvbmcgbG9uZyI6Ci0gICAgICAg
IGNhc2UgInVuc2lnbmVkIGxvbmcgbG9uZyI6IGNhc2UgImZsb2F0IjogY2FzZSAiZG91YmxlIjoK
LSAgICAgICAgY2FzZSAidW5yZXN0cmljdGVkIGZsb2F0IjogY2FzZSAidW5yZXN0cmljdGVkIGRv
dWJsZSI6Ci0gICAgICAgICAgICByZXR1cm4gNzsKLQotICAgICAgICBjYXNlICJET01TdHJpbmci
OgotICAgICAgICBjYXNlICJCeXRlU3RyaW5nIjoKLSAgICAgICAgY2FzZSAiVVNWU3RyaW5nIjoK
LSAgICAgICAgICAgIHJldHVybiAiZm9vIjsKLQotICAgICAgICBjYXNlICJvYmplY3QiOgotICAg
ICAgICAgICAgcmV0dXJuIHthOiAiYiJ9OwotCi0gICAgICAgIGNhc2UgIk5vZGUiOgotICAgICAg
ICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJhYmMiKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG51bGw7Ci19Ci0vL0B9Ci0KLS8vLyBJZGxFbnVtIC8vLwotLy8gVXNlZCBmb3IgSWRs
QXJyYXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lzCi1mdW5jdGlvbiBJZGxFbnVtKG9iaikKLS8v
QHsKLXsKLSAgICAvKioKLSAgICAgKiBvYmogaXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5IHRoZSBX
ZWJJRExQYXJzZXIuanMgImRpY3Rpb25hcnkiCi0gICAgICogcHJvZHVjdGlvbi4KLSAgICAgKi8K
LQotICAgIC8qKiBTZWxmLWV4cGxhbmF0b3J5LiAqLwotICAgIHRoaXMubmFtZSA9IG9iai5uYW1l
OwotCi0gICAgLyoqIEFuIGFycmF5IG9mIHZhbHVlcyBwcm9kdWNlZCBieSB0aGUgImVudW0iIHBy
b2R1Y3Rpb24uICovCi0gICAgdGhpcy52YWx1ZXMgPSBvYmoudmFsdWVzOwotCi19Ci0vL0B9Ci0K
LUlkbEVudW0ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJZGxPYmplY3QucHJvdG90eXBlKTsK
LQotLy8vIElkbFR5cGVkZWYgLy8vCi0vLyBVc2VkIGZvciBJZGxBcnJheS5wcm90b3R5cGUuYXNz
ZXJ0X3R5cGVfaXMKLWZ1bmN0aW9uIElkbFR5cGVkZWYob2JqKQotLy9AewotewotICAgIC8qKgot
ICAgICAqIG9iaiBpcyBhbiBvYmplY3QgcHJvZHVjZWQgYnkgdGhlIFdlYklETFBhcnNlci5qcyAi
dHlwZWRlZiIKLSAgICAgKiBwcm9kdWN0aW9uLgotICAgICAqLwotCi0gICAgLyoqIFNlbGYtZXhw
bGFuYXRvcnkuICovCi0gICAgdGhpcy5uYW1lID0gb2JqLm5hbWU7Ci0KLSAgICAvKiogQW4gYXJy
YXkgb2YgdmFsdWVzIHByb2R1Y2VkIGJ5IHRoZSAidHlwZWRlZiIgcHJvZHVjdGlvbi4gKi8KLSAg
ICB0aGlzLnZhbHVlcyA9IG9iai52YWx1ZXM7Ci0KLX0KLS8vQH0KLQotSWRsVHlwZWRlZi5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKElkbE9iamVjdC5wcm90b3R5cGUpOwotCi19KCkpOwotLy8g
dmltOiBzZXQgZXhwYW5kdGFiIHNoaWZ0d2lkdGg9NCB0YWJzdG9wPTQgZm9sZG1hcmtlcj1AeyxA
fSBmb2xkbWV0aG9kPW1hcmtlcjoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9p
bWFnZS1wcmVsb2FkLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9pbWFnZS1wcmVs
b2FkLWhlbHBlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZmYWZkY2M3YmNj
Y2U3NzY4NGNiNzlhMTIwNGQ5MjIxZTg1YmRkZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvaW1hZ2UtcHJlbG9hZC1o
ZWxwZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vLyBUaGlzIGlzIHVzZWQg
Ynkgc2V2ZXJhbCB0ZXN0cyB0byBoZWxwIGdldCBpbWFnZXMgcmVsaWFibHkgcHJlbG9hZGVkLgot
Ci0vLyBHaXZlbiBhIG5vZGUsIGxvYWRzIGFsbCB1cmxzIHNwZWNpZmllZCBpbiBzdHlsZSBkZWNs
YXJhdGlvbnMKLS8vIGF0dGFjaGVkIHRvIHRoZSBub2RlIG9yIGl0J3MgZGVjZW5kYW50cy4KLS8v
IGltYWdlQ291bnQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgaW1hZ2VzIHdlIGV4cGVjdCB0byBm
aW5kICh0byB0cnkgdG8gYWRkIHNvbWUKLS8vIHByb3RlY3Rpb24gYWdhaW5zdCBicml0dGxlbmVz
cyBkdWUgdG8gaW1wZXJmZWN0IHVybCBwYXJzaW5nLCBzaW5jZSBvdGhlciBtaXNzaW5nIGEgcHJl
bG9hZAotLy8gd2lsbCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgdGVzdCB0aGF0IGZhaWxzIG9ubHkg
b2NjYXNpb25hbGx5KS4KLS8vIElmIGZhaWxQYXR0ZXJuIGlzIHNwZWNpZmllZCwgdGhlbiBhbnkg
dXJsIHRoYXQgbWF0Y2hlcyB0aGUgcmVnZXgKLS8vIHdpbGwgYmUgZXhwZWN0ZWQgdG8gZmFpbCB0
byBsb2FkLgotZnVuY3Rpb24gcHJlbG9hZEltYWdlc0Zyb21TdHlsZShyb290Tm9kZSwgaW1hZ2VD
b3VudCwgb25Db21wbGV0ZSwgZmFpbFBhdHRlcm4pIHsKLSAgICB2YXIgYmFzZVBhdGggPSBsb2Nh
dGlvbi5ocmVmLnN1YnN0cmluZygwLCBsb2NhdGlvbi5ocmVmLmxhc3RJbmRleE9mKCcvJykgKyAx
KTsKLSAgICB2YXIgbm9kZXMgPSByb290Tm9kZS5xdWVyeVNlbGVjdG9yQWxsKCdbc3R5bGVdJyk7
Ci0gICAgdmFyIGltYWdlc1RvTG9hZCA9IFtdOwotICAgIHZhciBzZWVuVXJscyA9IHt9OwotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdmFyIHVy
bHMgPSBub2Rlc1tpXS5zdHlsZS5jc3NUZXh0LnNwbGl0KC91cmxcdypcKCIoW14pXSopIlwpLyk7
Ci0gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgdXJscy5sZW5ndGg7IGogKz0gMikgewotICAg
ICAgICAgICAgLy8gQXR0ZW1wdCB0byBjb252ZXJ0IFVSTCB0byBhIHJlbGF0aXZlIHBhdGggaW4g
b3JkZXIgdG8gaGF2ZSBkZXRlcm1pbmlzdGljIGVycm9yIG1lc3NhZ2VzLgotICAgICAgICAgICAg
dmFyIHVybCA9IHVybHNbal07Ci0gICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoYmFzZVBhdGgp
ID09IDApCi0gICAgICAgICAgICAgICAgdXJsID0gdXJsLnN1YnN0cmluZyhiYXNlUGF0aC5sZW5n
dGgpOwotCi0gICAgICAgICAgICB2YXIgZXJyb3IgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChm
YWlsUGF0dGVybiAmJiBmYWlsUGF0dGVybi50ZXN0KHVybCkpCi0gICAgICAgICAgICAgICAgZXJy
b3IgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHVybCBpbiBzZWVuVXJscykKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHNlZW5VcmxzW3VybF0gPSB0cnVlOwotICAgICAg
ICAgICAgaW1hZ2VzVG9Mb2FkLnB1c2goe3VybDogdXJsLCBlcnJvcjogZXJyb3J9KTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGlmIChpbWFnZUNvdW50ICE9IGltYWdlc1RvTG9hZC5sZW5ndGgp
IHsKLSAgICAgICAgdmFyIG1zZyA9ICdGb3VuZCB0aGUgZm9sbG93aW5nICcgKyBpbWFnZXNUb0xv
YWQubGVuZ3RoICsgJyBpbWFnZXMsIHdoZW4gZXhwZWN0aW5nICcgKyBpbWFnZUNvdW50ICsgJzog
JzsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbWFnZXNUb0xvYWQubGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgICAgIG1zZyArPSAnXG4nICsgaW1hZ2VzVG9Mb2FkW2ldLnVybDsKLSAgICAg
ICAgfQotICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7Ci0gICAgfQotCi0gICAgbG9hZEltYWdlcyhp
bWFnZXNUb0xvYWQsIG9uQ29tcGxldGUpOwotfQotCi0vLyBGb3IgZWFjaCBvYmplY3QgaW4gdGhl
IGdpdmVuIGFycmF5LCBhdHRlbXB0IHRvIGxvYWQgdGhlIGltYWdlIHNwZWNpZmllZCBieSB0aGUK
LS8vIHVybCBwcm9wZXJ0eS4gIElmIHRoZSBlcnJvciBwcm9wZXJ0eSBpcyBzcGVjaWZpZWQgYW5k
IHRydWUsIHRoZW4gdGhlIGxvYWQgaXMKLS8vIGV4cGVjdGVkIHRvIGZhaWwuICBPbmNlIGFsbCBs
b2FkcyBoYXZlIGNvbXBsZXRlZCBvciBmYWlsZWQsIG9uQ29tcGxldGUgaXMgaW52b2tlZC4KLWZ1
bmN0aW9uIGxvYWRJbWFnZXMoaW1hZ2VzVG9Mb2FkLCBvbkNvbXBsZXRlKSB7Ci0KLSAgICB2YXIg
aW1hZ2VzTGVmdFRvTG9hZCA9IGltYWdlc1RvTG9hZC5sZW5ndGg7Ci0KLSAgICBmdW5jdGlvbiBv
bkltYWdlTG9hZCh1cmwsIHN1Y2Nlc3MsIGUpIHsKLSAgICAgICAgLy8gVGhpcyBkZWJ1ZyBvdXRw
dXQgb3JkZXIgaXMgbm9uLWRldGVybWluaXN0aWMgLSBvbmx5IHNob3cgd2hlbiBub3QgcnVubmlu
ZyBpbiBEUlQKLSAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIGRl
YnVnKCAnRXZlbnQgIicgKyBlLnR5cGUgKyAnIjogJyArIHVybCk7Ci0KLSAgICAgICAgaWYgKCFz
dWNjZXNzKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgXCcnICsgZS50
eXBlICsgJ1wnIGV2ZW50IGZvciBpbWFnZTogJyArIHVybCk7Ci0gICAgICAgIAotICAgICAgICBp
bWFnZXNMZWZ0VG9Mb2FkLS07Ci0gICAgICAgIGlmIChpbWFnZXNMZWZ0VG9Mb2FkID09IDApIHsK
LSAgICAgICAgICAgIG9uQ29tcGxldGUoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW1hZ2Vz
TGVmdFRvTG9hZCA8IDApCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCdHb3QgbW9yZSBsb2FkL2Vy
cm9yIGNhbGxiYWNrcyB0aGFuIGV4cGVjdGVkLicpOwotICAgIH0KLQotICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgaW1hZ2VzVG9Mb2FkLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHZhciBpbWcgPSBu
ZXcgSW1hZ2UoKTsKLSAgICAgICAgdmFyIGV4cGVjdEVycm9yID0gaW1hZ2VzVG9Mb2FkW2ldLmVy
cm9yOwotICAgICAgICBpbWcuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIG9uSW1hZ2VMb2FkLmJp
bmQodW5kZWZpbmVkLCBpbWFnZXNUb0xvYWRbaV0udXJsLCAhZXhwZWN0RXJyb3IpKTsKLSAgICAg
ICAgaW1nLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25JbWFnZUxvYWQuYmluZCh1bmRlZmlu
ZWQsIGltYWdlc1RvTG9hZFtpXS51cmwsICEhZXhwZWN0RXJyb3IpKTsKLSAgICAgICAgaW1nLnNy
YyA9IGltYWdlc1RvTG9hZFtpXS51cmw7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1hc3luYy5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QtYXN5bmMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5
MzNkNzAwN2RlODcxYTRlZGY4OTRkZWVjZDQxYjI0NjNiOWYzZTguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC1hc3luYy5qcworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotaWYgKCFlcnJv
ck1lc3NhZ2UpCi0gICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLXNob3VsZEJlVHJ1ZSgi
c3VjY2Vzc2Z1bGx5UGFyc2VkIik7Ci1kZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRF
U1QgQ09NUExFVEU8L3NwYW4+Jyk7Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmY3NDA0ZTA2ODlkZDcwMzVmMGRiZWIyYTU1
YTI0OWQxMzdkNTNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMKKysrIC9kZXYvbnVsbApA
QCAtMSw5ICswLDAgQEAKLXdhc1Bvc3RUZXN0U2NyaXB0UGFyc2VkID0gdHJ1ZTsKLQotaWYgKHdp
bmRvdy5qc1Rlc3RJc0FzeW5jKSB7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBpZiAod2luZG93Lndhc0ZpbmlzaEpT
VGVzdENhbGxlZCkKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci19IGVsc2UKLSAgICBmaW5pc2hK
U1Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzFmYjgzODQwNzAwYmYxOTA1NmRiMTZhZmU4NTA4MWU4NThhMTM5OS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKKysrIC9kZXYvbnVsbApAQCAtMSw4MzkgKzAsMCBA
QAotLy8gc3ZnL2R5bmFtaWMtdXBkYXRlcyB0ZXN0cyBzZXQgZW5hYmxlUGl4ZWxUZXN0aW5nPXRy
dWUsIGFzIHdlIHdhbnQgdG8gZHVtcCB0ZXh0ICsgcGl4ZWwgcmVzdWx0cwotaWYgKHNlbGYudGVz
dFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoc2VsZi5lbmFibGVQaXhlbFRlc3Rp
bmcpOwotCi12YXIgZGVzY3JpcHRpb24sIGRlYnVnLCBzdWNjZXNzZnVsbHlQYXJzZWQsIGVycm9y
TWVzc2FnZSwgc2lsZW50VGVzdFBhc3MsIGRpZFBhc3NTb21lVGVzdHNTaWxlbnRseSwgZGlkRmFp
bFNvbWVUZXN0czsKLQotc2lsZW50VGVzdFBhc3MgPSBmYWxzZTsKLWRpZFBhc3NTb21lVGVzdHNT
aWxlbnRseSA9IGZhbHNlOwotZGlkRmFpbFNvbWVUZXN0cyA9IGZhbHNlOwotCi0oZnVuY3Rpb24o
KSB7Ci0KLSAgICBmdW5jdGlvbiBjcmVhdGVIVE1MRWxlbWVudCh0YWdOYW1lKQotICAgIHsKLSAg
ICAgICAgLy8gRklYTUU6IEluIGFuIFhNTCBkb2N1bWVudCwgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgpIGNyZWF0ZXMgYW4gZWxlbWVudCB3aXRoIGEgbnVsbCBuYW1lc3BhY2UgVVJJLgotICAgICAg
ICAvLyBTbywgd2UgbmVlZCB1c2UgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCkgdG8gZXhwbGlj
aXRseSBjcmVhdGUgYW4gZWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQKLSAgICAgICAgLy8gdGFn
IG5hbWUgaW4gdGhlIEhUTUwgbmFtZXNwYWNlLiBXZSBjYW4gcmVtb3ZlIHRoaXMgZnVuY3Rpb24g
YW5kIHVzZSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCkKLSAgICAgICAgLy8gZGlyZWN0bHkgb25j
ZSB3ZSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEwNzQ+
LgotICAgICAgICBpZiAoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKQotICAgICAgICAgICAgcmV0
dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCIsIHRhZ05hbWUpOwotICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdO
YW1lKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBnZXRPckNyZWF0ZShpZCwgdGFnTmFtZSkKLSAg
ICB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwot
ICAgICAgICBpZiAoZWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwotCi0gICAg
ICAgIGVsZW1lbnQgPSBjcmVhdGVIVE1MRWxlbWVudCh0YWdOYW1lKTsKLSAgICAgICAgZWxlbWVu
dC5pZCA9IGlkOwotICAgICAgICB2YXIgcmVmTm9kZTsKLSAgICAgICAgdmFyIHBhcmVudCA9IGRv
Y3VtZW50LmJvZHkgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwotICAgICAgICBpZiAoaWQg
PT0gImRlc2NyaXB0aW9uIikKLSAgICAgICAgICAgIHJlZk5vZGUgPSBnZXRPckNyZWF0ZSgiY29u
c29sZSIsICJkaXYiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVmTm9kZSA9IHBhcmVu
dC5maXJzdENoaWxkOwotCi0gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgcmVm
Tm9kZSk7Ci0gICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0KLQotICAgIGRlc2NyaXB0aW9u
ID0gZnVuY3Rpb24gZGVzY3JpcHRpb24obXNnLCBxdWlldCkKLSAgICB7Ci0gICAgICAgIC8vIEZv
ciBNU0lFIDYgY29tcGF0aWJpbGl0eQotICAgICAgICB2YXIgc3BhbiA9IGNyZWF0ZUhUTUxFbGVt
ZW50KCJzcGFuIik7Ci0gICAgICAgIGlmIChxdWlldCkKLSAgICAgICAgICAgIHNwYW4uaW5uZXJI
VE1MID0gJzxwPicgKyBtc2cgKyAnPC9wPjxwPk9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBubyAi
PHNwYW4gY2xhc3M9ImZhaWwiPkZBSUw8L3NwYW4+IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIjxz
cGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPiIuPC9wPic7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHNwYW4uaW5uZXJIVE1MID0gJzxwPicgKyBtc2cgKyAnPC9wPjxwPk9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiPHNwYW4gY2xhc3M9InBhc3MiPlBB
U1M8L3NwYW4+IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIjxzcGFuIGNsYXNzPSJwYXNzIj5URVNU
IENPTVBMRVRFPC9zcGFuPiIuPC9wPic7Ci0KLSAgICAgICAgdmFyIGRlc2NyaXB0aW9uID0gZ2V0
T3JDcmVhdGUoImRlc2NyaXB0aW9uIiwgInAiKTsKLSAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmZp
cnN0Q2hpbGQpCi0gICAgICAgICAgICBkZXNjcmlwdGlvbi5yZXBsYWNlQ2hpbGQoc3BhbiwgZGVz
Y3JpcHRpb24uZmlyc3RDaGlsZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRlc2NyaXB0
aW9uLmFwcGVuZENoaWxkKHNwYW4pOwotICAgIH07Ci0KLSAgICBkZWJ1ZyA9IGZ1bmN0aW9uIGRl
YnVnKG1zZykKLSAgICB7Ci0gICAgICAgIHZhciBzcGFuID0gY3JlYXRlSFRNTEVsZW1lbnQoInNw
YW4iKTsKLSAgICAgICAgZ2V0T3JDcmVhdGUoImNvbnNvbGUiLCAiZGl2IikuYXBwZW5kQ2hpbGQo
c3Bhbik7IC8vIGluc2VydCBpdCBmaXJzdCBzbyBYSFRNTCBrbm93cyB0aGUgbmFtZXNwYWNlCi0g
ICAgICAgIHNwYW4uaW5uZXJIVE1MID0gbXNnICsgJzxiciAvPic7Ci0gICAgfTsKLQotICAgIHZh
ciBjc3MgPQotICAgICAgICAiLnBhc3MgeyIgKwotICAgICAgICAgICAgImZvbnQtd2VpZ2h0OiBi
b2xkOyIgKwotICAgICAgICAgICAgImNvbG9yOiBncmVlbjsiICsKLSAgICAgICAgIn0iICsKLSAg
ICAgICAgIi5mYWlsIHsiICsKLSAgICAgICAgICAgICJmb250LXdlaWdodDogYm9sZDsiICsKLSAg
ICAgICAgICAgICJjb2xvcjogcmVkOyIgKwotICAgICAgICAifSIgKwotICAgICAgICAiI2NvbnNv
bGUgeyIgKwotICAgICAgICAgICAgIndoaXRlLXNwYWNlOiBwcmUtd3JhcDsiICsKLSAgICAgICAg
ICAgICJmb250LWZhbWlseTogbW9ub3NwYWNlOyIgKwotICAgICAgICAifSI7Ci0KLSAgICBmdW5j
dGlvbiBpbnNlcnRTdHlsZVNoZWV0KCkKLSAgICB7Ci0gICAgICAgIHZhciBzdHlsZUVsZW1lbnQg
PSBjcmVhdGVIVE1MRWxlbWVudCgic3R5bGUiKTsKLSAgICAgICAgc3R5bGVFbGVtZW50LnRleHRD
b250ZW50ID0gY3NzOwotICAgICAgICAoZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQpLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7Ci0gICAgfQotCi0gICAgaWYgKCFp
c1dvcmtlcigpKQotICAgICAgICBpbnNlcnRTdHlsZVNoZWV0KCk7Ci0KLSAgICBzZWxmLm9uZXJy
b3IgPSBmdW5jdGlvbihtZXNzYWdlKQotICAgIHsKLSAgICAgICAgZXJyb3JNZXNzYWdlID0gbWVz
c2FnZTsKLSAgICB9OwotCi19KSgpOwotCi1mdW5jdGlvbiBpc1dvcmtlcigpCi17Ci0gICAgLy8g
SXQncyBjb25jZWl2YWJsZSB0aGF0IHNvbWVvbmUgd291bGQgc3R1YiBvdXQgJ2RvY3VtZW50JyBp
biBhIHdvcmtlciBzbwotICAgIC8vIGFsc28gY2hlY2sgZm9yIGNoaWxkTm9kZXMsIGFuIGFyYml0
cmFyeSBET00tcmVsYXRlZCBvYmplY3QgdGhhdCBpcwotICAgIC8vIG1lYW5pbmdsZXNzIGluIGEg
V29ya2VyQ29udGV4dC4KLSAgICByZXR1cm4gKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5l
ZCcgfHwgdHlwZW9mIGRvY3VtZW50LmNoaWxkTm9kZXMgPT09ICd1bmRlZmluZWQnKSAmJiAhIXNl
bGYuaW1wb3J0U2NyaXB0czsKLX0KLQotZnVuY3Rpb24gZGVzY3JpcHRpb25RdWlldChtc2cpIHsg
ZGVzY3JpcHRpb24obXNnLCB0cnVlKTsgfQotCi1mdW5jdGlvbiBlc2NhcGVIVE1MKHRleHQpCi17
Ci0gICAgcmV0dXJuIHRleHQucmVwbGFjZSgvJi9nLCAiJmFtcDsiKS5yZXBsYWNlKC88L2csICIm
bHQ7IikucmVwbGFjZSgvXDAvZywgIlxcMCIpOwotfQotCi1mdW5jdGlvbiBlc2NhcGVIVE1MQW5k
U3RyaXBGaWxlVVJMcyh0ZXh0KQotewotICAgIHJldHVybiBlc2NhcGVIVE1MKHRleHQpLnJlcGxh
Y2UoL2ZpbGU6XC9cLy4qTGF5b3V0VGVzdHMvZywgImZpbGU6Ly8vTGF5b3V0VGVzdHMiKTsKLX0K
LQotZnVuY3Rpb24gdGVzdFBhc3NlZChtc2cpCi17Ci0gICAgaWYgKHNpbGVudFRlc3RQYXNzKQot
ICAgICAgICBkaWRQYXNzU29tZVRlc3RzU2lsZW50bHkgPSB0cnVlOwotICAgIGVsc2UKLSAgICAg
ICAgZGVidWcoJzxzcGFuPjxzcGFuIGNsYXNzPSJwYXNzIj5QQVNTPC9zcGFuPiAnICsgZXNjYXBl
SFRNTEFuZFN0cmlwRmlsZVVSTHMobXNnKSArICc8L3NwYW4+Jyk7Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RGYWlsZWQobXNnKQotewotICAgIGRpZEZhaWxTb21lVGVzdHMgPSB0cnVlOwotICAgIGRlYnVn
KCc8c3Bhbj48c3BhbiBjbGFzcz0iZmFpbCI+RkFJTDwvc3Bhbj4gJyArIGVzY2FwZUhUTUxBbmRT
dHJpcEZpbGVVUkxzKG1zZykgKyAnPC9zcGFuPicpOwotfQotCi1mdW5jdGlvbiBhcmVOdW1iZXJz
RXF1YWwoX2FjdHVhbCwgX2V4cGVjdGVkKQotewotICAgIGlmIChfZXhwZWN0ZWQgPT09IDApCi0g
ICAgICAgIHJldHVybiBfYWN0dWFsID09PSBfZXhwZWN0ZWQgJiYgKDEvX2FjdHVhbCkgPT09ICgx
L19leHBlY3RlZCk7Ci0gICAgaWYgKF9hY3R1YWwgPT09IF9leHBlY3RlZCkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKHR5cGVvZihfZXhwZWN0ZWQpID09ICJudW1iZXIiICYmIGlzTmFO
KF9leHBlY3RlZCkpCi0gICAgICAgIHJldHVybiB0eXBlb2YoX2FjdHVhbCkgPT0gIm51bWJlciIg
JiYgaXNOYU4oX2FjdHVhbCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1mdW5jdGlvbiBhcmVB
cnJheXNFcXVhbChfYSwgX2IpCi17Ci0gICAgdHJ5IHsKLSAgICAgICAgaWYgKF9hLmxlbmd0aCAh
PT0gX2IubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IF9hLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgaWYgKCFhcmVOdW1iZXJz
RXF1YWwoX2FbaV0sIF9iW2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fSBjYXRjaCAoZXgpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotZnVuY3Rpb24gaXNNaW51c1plcm8obikKLXsKLSAgICAvLyB0aGUgb25seSB3
YXkgdG8gdGVsbCAwIGZyb20gLTAgaW4gSlMgaXMgdGhlIGZhY3QgdGhhdCAxLy0wIGlzCi0gICAg
Ly8gLUluZmluaXR5IGluc3RlYWQgb2YgSW5maW5pdHkKLSAgICByZXR1cm4gbiA9PT0gMCAmJiAx
L24gPCAwOwotfQotCi1mdW5jdGlvbiBpc1R5cGVkQXJyYXkoYXJyYXkpCi17Ci0gICAgcmV0dXJu
IGFycmF5IGluc3RhbmNlb2YgSW50OEFycmF5Ci0gICAgICAgIHx8IGFycmF5IGluc3RhbmNlb2Yg
SW50MTZBcnJheQotICAgICAgICB8fCBhcnJheSBpbnN0YW5jZW9mIEludDMyQXJyYXkKLSAgICAg
ICAgfHwgYXJyYXkgaW5zdGFuY2VvZiBVaW50OEFycmF5Ci0gICAgICAgIHx8IGFycmF5IGluc3Rh
bmNlb2YgVWludDhDbGFtcGVkQXJyYXkKLSAgICAgICAgfHwgYXJyYXkgaW5zdGFuY2VvZiBVaW50
MTZBcnJheQotICAgICAgICB8fCBhcnJheSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5Ci0gICAgICAg
IHx8IGFycmF5IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5Ci0gICAgICAgIHx8IGFycmF5IGluc3Rh
bmNlb2YgRmxvYXQ2NEFycmF5OwotfQotCi1mdW5jdGlvbiBpc1Jlc3VsdENvcnJlY3QoX2FjdHVh
bCwgX2V4cGVjdGVkKQotewotICAgIGlmIChhcmVOdW1iZXJzRXF1YWwoX2FjdHVhbCwgX2V4cGVj
dGVkKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKF9leHBlY3RlZAotICAgICAgICAm
JiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKF9leHBlY3RlZCkgPT0KLSAgICAgICAg
ICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChbXSkKLSAgICAgICAgICAgIHx8IGlz
VHlwZWRBcnJheShfZXhwZWN0ZWQpKSkKLSAgICAgICAgcmV0dXJuIGFyZUFycmF5c0VxdWFsKF9h
Y3R1YWwsIF9leHBlY3RlZCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1mdW5jdGlvbiBzdHJp
bmdpZnkodikKLXsKLSAgICBpZiAodiA9PT0gMCAmJiAxL3YgPCAwKQotICAgICAgICByZXR1cm4g
Ii0wIjsKLSAgICBlbHNlIGlmIChpc1R5cGVkQXJyYXkodikpCi0gICAgICAgIHJldHVybiB2Ll9f
cHJvdG9fXy5jb25zdHJ1Y3Rvci5uYW1lICsgIjpbIiArIEFycmF5LnByb3RvdHlwZS5qb2luLmNh
bGwodiwgIiwiKSArICJdIjsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAiIiArIHY7Ci19Ci0K
LWZ1bmN0aW9uIGV2YWxBbmRMb2coX2EsIF9xdWlldCkKLXsKLSAgICBpZiAodHlwZW9mIF9hICE9
ICJzdHJpbmciKQotICAgICAgICBkZWJ1ZygiV0FSTjogZXZhbEFuZExvZygpIGV4cGVjdHMgYSBz
dHJpbmcgYXJndW1lbnQiKTsKLQotICAgIC8vIExvZyBmaXJzdCBpbiBjYXNlIHRoaW5ncyBnbyBo
b3JyaWJseSB3cm9uZyBvciB0aGlzIGNhdXNlcyBhIHN5bmMgZXZlbnQuCi0gICAgaWYgKCFfcXVp
ZXQpCi0gICAgICAgIGRlYnVnKF9hKTsKLQotICAgIHZhciBfYXY7Ci0gICAgdHJ5IHsKLSAgICAg
ICAgX2F2ID0gZXZhbChfYSk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0RmFpbGVk
KF9hICsgIiB0aHJldyBleGNlcHRpb24gIiArIGUpOwotICAgIH0KLSAgICByZXR1cm4gX2F2Owot
fQotCi1mdW5jdGlvbiBldmFsQW5kTG9nUmVzdWx0KF9hKQotewotICAgIGlmICh0eXBlb2YgX2Eg
IT0gInN0cmluZyIpCi0gICAgICAgIGRlYnVnKCJXQVJOOiBldmFsQW5kTG9nUmVzdWx0KCkgZXhw
ZWN0cyBhIHN0cmluZyBhcmd1bWVudCIpOwotCi0gICAgdmFyIF9hdjsKLSAgICB0cnkgewotICAg
ICAgICBfYXYgPSBldmFsKF9hKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RGYWls
ZWQoX2EgKyAiIHRocmV3IGV4Y2VwdGlvbiAiICsgZSk7Ci0gICAgfQotCi0gICAgZGVidWcoJzxz
cGFuPicgKyBfYSArICIgaXMgIiArIGVzY2FwZUhUTUxBbmRTdHJpcEZpbGVVUkxzKF9hdikgKyAn
PC9zcGFuPicpOwotfQotCi1mdW5jdGlvbiBzaG91bGRCZShfYSwgX2IsIF9xdWlldCkKLXsKLSAg
ICBpZiAoKHR5cGVvZiBfYSAhPSAiZnVuY3Rpb24iICYmIHR5cGVvZiBfYSAhPSAic3RyaW5nIikg
fHwgKHR5cGVvZiBfYiAhPSAiZnVuY3Rpb24iICYmIHR5cGVvZiBfYiAhPSAic3RyaW5nIikpCi0g
ICAgICAgIGRlYnVnKCJXQVJOOiBzaG91bGRCZSgpIGV4cGVjdHMgZnVuY3Rpb24gb3Igc3RyaW5n
IGFyZ3VtZW50cyIpOwotICAgIHZhciBfZXhjZXB0aW9uOwotICAgIHZhciBfYXY7Ci0gICAgdHJ5
IHsKLSAgICAgICAgX2F2ID0gKHR5cGVvZiBfYSA9PSAiZnVuY3Rpb24iID8gX2EoKSA6IGV2YWwo
X2EpKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIF9leGNlcHRpb24gPSBlOwotICAgIH0K
LSAgICB2YXIgX2J2ID0gKHR5cGVvZiBfYiA9PSAiZnVuY3Rpb24iID8gX2IoKSA6IGV2YWwoX2Ip
KTsKLQotICAgIGlmIChfZXhjZXB0aW9uKQotICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91
bGQgYmUgIiArIHN0cmluZ2lmeShfYnYpICsgIi4gVGhyZXcgZXhjZXB0aW9uICIgKyBfZXhjZXB0
aW9uKTsKLSAgICBlbHNlIGlmIChpc1Jlc3VsdENvcnJlY3QoX2F2LCBfYnYpKSB7Ci0gICAgICAg
IGlmICghX3F1aWV0KSB7Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyAiICsgKHR5
cGVvZiBfYiA9PSAiZnVuY3Rpb24iID8gX2J2IDogX2IpKTsKLSAgICAgICAgfQotICAgIH0gZWxz
ZSBpZiAodHlwZW9mKF9hdikgPT0gdHlwZW9mKF9idikpCi0gICAgICAgIHRlc3RGYWlsZWQoX2Eg
KyAiIHNob3VsZCBiZSAiICsgc3RyaW5naWZ5KF9idikgKyAiLiBXYXMgIiArIHN0cmluZ2lmeShf
YXYpICsgIi4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBi
ZSAiICsgc3RyaW5naWZ5KF9idikgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2J2ICsgIikuIFdh
cyAiICsgX2F2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9hdiArICIpLiIpOwotfQotCi1mdW5j
dGlvbiBkZmdTaG91bGRCZSh0aGVGdW5jdGlvbiwgX2EsIF9iKQotewotICAgIGlmICh0eXBlb2Yg
dGhlRnVuY3Rpb24gIT0gImZ1bmN0aW9uIiB8fCB0eXBlb2YgX2EgIT0gInN0cmluZyIgfHwgdHlw
ZW9mIF9iICE9ICJzdHJpbmciKQotICAgICAgICBkZWJ1ZygiV0FSTjogZGZnU2hvdWxkQmUoKSBl
eHBlY3RzIGEgZnVuY3Rpb24gYW5kIHR3byBzdHJpbmdzIik7Ci0gICAgbm9JbmxpbmUodGhlRnVu
Y3Rpb24pOwotICAgIHZhciBleGNlcHRpb247Ci0gICAgdmFyIHZhbHVlcyA9IFtdOwotCi0gICAg
Ly8gRGVmZW5kIGFnYWluc3QgdGVzdHMgdGhhdCBtdWNrIHdpdGggbnVtZXJpYyBwcm9wZXJ0aWVz
IG9uIGFycmF5LnByb3RvdHlwZS4KLSAgICB2YWx1ZXMuX19wcm90b19fID0gbnVsbDsKLSAgICB2
YWx1ZXMucHVzaCA9IEFycmF5LnByb3RvdHlwZS5wdXNoOwotCi0gICAgdHJ5IHsKLSAgICAgICAg
d2hpbGUgKCFkZmdDb21waWxlZCh7Zjp0aGVGdW5jdGlvbn0pKQotICAgICAgICAgICAgdmFsdWVz
LnB1c2goZXZhbChfYSkpOwotICAgICAgICB2YWx1ZXMucHVzaChldmFsKF9hKSk7Ci0gICAgfSBj
YXRjaCAoZSkgewotICAgICAgICBleGNlcHRpb24gPSBlOwotICAgIH0KLQotICAgIHZhciBfYnYg
PSBldmFsKF9iKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICB0ZXN0RmFpbGVkKF9hICsg
IiBzaG91bGQgYmUgIiArIHN0cmluZ2lmeShfYnYpICsgIi4gT24gaXRlcmF0aW9uICIgKyAodmFs
dWVzLmxlbmd0aCArIDEpICsgIiwgdGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwotICAg
IGVsc2UgewotICAgICAgICB2YXIgYWxsUGFzc2VkID0gdHJ1ZTsKLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBfYXYgPSB2
YWx1ZXNbaV07Ci0gICAgICAgICAgICBpZiAoaXNSZXN1bHRDb3JyZWN0KF9hdiwgX2J2KSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICh0eXBlb2YoX2F2KSA9PSB0
eXBlb2YoX2J2KSkKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUg
IiArIHN0cmluZ2lmeShfYnYpICsgIi4gT24gaXRlcmF0aW9uICIgKyAoaSArIDEpICsgIiwgd2Fz
ICIgKyBzdHJpbmdpZnkoX2F2KSArICIuIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlICIgKyBzdHJpbmdpZnkoX2J2KSArICIg
KG9mIHR5cGUgIiArIHR5cGVvZiBfYnYgKyAiKS4gT24gaXRlcmF0aW9uICIgKyAoaSArIDEpICsg
Iiwgd2FzICIgKyBfYXYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2F2ICsgIikuIik7Ci0gICAg
ICAgICAgICBhbGxQYXNzZWQgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYWxsUGFz
c2VkKQotICAgICAgICAgICAgdGVzdFBhc3NlZChfYSArICIgaXMgIiArIF9iICsgIiBvbiBhbGwg
aXRlcmF0aW9ucyBpbmNsdWRpbmcgYWZ0ZXIgREZHIHRpZXItdXAuIik7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHZhbHVlcy5sZW5ndGg7Ci19Ci0KLS8vIEV4ZWN1dGUgY29uZGl0aW9uIGV2ZXJ5IDUg
bWlsbGlzZWNvbmRzIHVudGlsIGl0IHN1Y2NlZWRzLgotZnVuY3Rpb24gX3dhaXRGb3JDb25kaXRp
b24oY29uZGl0aW9uLCBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoY29uZGl0aW9uKCkp
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgZWxzZQotICAgICAgICBzZXRUaW1l
b3V0KF93YWl0Rm9yQ29uZGl0aW9uLCA1LCBjb25kaXRpb24sIGNvbXBsZXRpb25IYW5kbGVyKTsK
LX0KLQotZnVuY3Rpb24gc2hvdWxkQmVjb21lRXF1YWwoX2EsIF9iLCBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBpZiAodHlwZW9mIF9hICE9ICJzdHJpbmciIHx8IHR5cGVvZiBfYiAhPSAic3Ry
aW5nIikKLSAgICAgICAgZGVidWcoIldBUk46IHNob3VsZEJlY29tZUVxdWFsKCkgZXhwZWN0cyBz
dHJpbmcgYXJndW1lbnRzIik7Ci0KLSAgICBmdW5jdGlvbiBjb25kaXRpb24oKSB7Ci0gICAgICAg
IHZhciBleGNlcHRpb247Ci0gICAgICAgIHZhciBfYXY7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICBfYXYgPSBldmFsKF9hKTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAg
ZXhjZXB0aW9uID0gZTsKLSAgICAgICAgfQotICAgICAgICB2YXIgX2J2ID0gZXZhbChfYik7Ci0g
ICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91
bGQgYmVjb21lICIgKyBfYnYgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbik7Ci0g
ICAgICAgIGlmIChpc1Jlc3VsdENvcnJlY3QoX2F2LCBfYnYpKSB7Ci0gICAgICAgICAgICB0ZXN0
UGFzc2VkKF9hICsgIiBiZWNhbWUgIiArIF9iKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgc2V0VGltZW91dChf
d2FpdEZvckNvbmRpdGlvbiwgMCwgY29uZGl0aW9uLCBjb21wbGV0aW9uSGFuZGxlcik7Ci19Ci0K
LWZ1bmN0aW9uIHNob3VsZEJlY29tZUVxdWFsVG9TdHJpbmcodmFsdWUsIHJlZmVyZW5jZSwgY29t
cGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gInN0cmluZyIgfHwg
dHlwZW9mIHJlZmVyZW5jZSAhPT0gInN0cmluZyIpCi0gICAgICAgIGRlYnVnKCJXQVJOOiBzaG91
bGRCZWNvbWVFcXVhbFRvU3RyaW5nKCkgZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzIik7Ci0gICAg
dmFyIHVuZXZhbGVkU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlKTsKLSAgICBzaG91
bGRCZWNvbWVFcXVhbCh2YWx1ZSwgdW5ldmFsZWRTdHJpbmcsIGNvbXBsZXRpb25IYW5kbGVyKTsK
LX0KLQotZnVuY3Rpb24gc2hvdWxkQmVUeXBlKF9hLCBfdHlwZSkgewotICAgIHZhciBleGNlcHRp
b247Ci0gICAgdmFyIF9hdjsKLSAgICB0cnkgewotICAgICAgICBfYXYgPSBldmFsKF9hKTsKLSAg
ICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGV4Y2VwdGlvbiA9IGU7Ci0gICAgfQotCi0gICAgdmFy
IF90eXBldiA9IGV2YWwoX3R5cGUpOwotICAgIGlmIChfYXYgaW5zdGFuY2VvZiBfdHlwZXYpIHsK
LSAgICAgICAgdGVzdFBhc3NlZChfYSArICIgaXMgYW4gaW5zdGFuY2Ugb2YgIiArIF90eXBlKTsK
LSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBpcyBub3QgYW4gaW5zdGFu
Y2Ugb2YgIiArIF90eXBlKTsKLSAgICB9Ci19Ci0KLS8vIFZhcmlhbnQgb2Ygc2hvdWxkQmUoKS0t
Y29uZmlybXMgdGhhdCByZXN1bHQgb2YgZXZhbChfdG9fZXZhbCkgaXMgd2l0aGluCi0vLyBudW1l
cmljIF90b2xlcmFuY2Ugb2YgbnVtZXJpYyBfdGFyZ2V0LgotZnVuY3Rpb24gc2hvdWxkQmVDbG9z
ZVRvKF90b19ldmFsLCBfdGFyZ2V0LCBfdG9sZXJhbmNlLCBxdWlldCkKLXsKLSAgICBpZiAodHlw
ZW9mIF90b19ldmFsICE9ICJzdHJpbmciKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoInNob3VsZEJl
Q2xvc2VUbygpIHJlcXVpcmVzIHN0cmluZyBhcmd1bWVudCBfdG9fZXZhbC4gd2FzIHR5cGUgIiAr
IHR5cGVvZiBfdG9fZXZhbCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHR5cGVv
ZiBfdGFyZ2V0ICE9ICJudW1iZXIiKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoInNob3VsZEJlQ2xv
c2VUbygpIHJlcXVpcmVzIG51bWVyaWMgYXJndW1lbnQgX3RhcmdldC4gd2FzIHR5cGUgIiArIHR5
cGVvZiBfdGFyZ2V0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAodHlwZW9mIF90
b2xlcmFuY2UgIT0gIm51bWJlciIpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgic2hvdWxkQmVDbG9z
ZVRvKCkgcmVxdWlyZXMgbnVtZXJpYyBhcmd1bWVudCBfdG9sZXJhbmNlLiB3YXMgdHlwZSAiICsg
dHlwZW9mIF90b2xlcmFuY2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIF9y
ZXN1bHQ7Ci0gICAgdHJ5IHsKLSAgICAgICAgX3Jlc3VsdCA9IGV2YWwoX3RvX2V2YWwpOwotICAg
IH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdEZhaWxlZChfdG9fZXZhbCArICIgc2hvdWxkIGJl
IHdpdGhpbiAiICsgX3RvbGVyYW5jZSArICIgb2YgIgotICAgICAgICAgICAgICAgICAgICsgX3Rh
cmdldCArICIuIFRocmV3IGV4Y2VwdGlvbiAiICsgZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAodHlwZW9mKF9yZXN1bHQpICE9IHR5cGVvZihfdGFyZ2V0KSkgewotICAgICAg
ICB0ZXN0RmFpbGVkKF90b19ldmFsICsgIiBzaG91bGQgYmUgb2YgdHlwZSAiICsgdHlwZW9mIF90
YXJnZXQKLSAgICAgICAgICAgICAgICAgICArICIgYnV0IHdhcyBvZiB0eXBlICIgKyB0eXBlb2Yg
X3Jlc3VsdCk7Ci0gICAgfSBlbHNlIGlmIChNYXRoLmFicyhfcmVzdWx0IC0gX3RhcmdldCkgPD0g
X3RvbGVyYW5jZSkgewotICAgICAgICBpZiAoIXF1aWV0KSB7Ci0gICAgICAgICAgICB0ZXN0UGFz
c2VkKF90b19ldmFsICsgIiBpcyB3aXRoaW4gIiArIF90b2xlcmFuY2UgKyAiIG9mICIgKyBfdGFy
Z2V0KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoX3RvX2V2
YWwgKyAiIHNob3VsZCBiZSB3aXRoaW4gIiArIF90b2xlcmFuY2UgKyAiIG9mICIgKyBfdGFyZ2V0
Ci0gICAgICAgICAgICAgICAgICAgKyAiLiBXYXMgIiArIF9yZXN1bHQgKyAiLiIpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gc2hvdWxkTm90QmUoX2EsIF9iLCBfcXVpZXQpCi17Ci0gICAgaWYgKCh0
eXBlb2YgX2EgIT0gImZ1bmN0aW9uIiAmJiB0eXBlb2YgX2EgIT0gInN0cmluZyIpIHx8ICh0eXBl
b2YgX2IgIT0gImZ1bmN0aW9uIiAmJiB0eXBlb2YgX2IgIT0gInN0cmluZyIpKQotICAgICAgICBk
ZWJ1ZygiV0FSTjogc2hvdWxkTm90QmUoKSBleHBlY3RzIGZ1bmN0aW9uIG9yIHN0cmluZyBhcmd1
bWVudHMiKTsKLSAgICB2YXIgX2V4Y2VwdGlvbjsKLSAgICB2YXIgX2F2OwotICAgIHRyeSB7Ci0g
ICAgICAgIF9hdiA9ICh0eXBlb2YgX2EgPT0gImZ1bmN0aW9uIiA/IF9hKCkgOiBldmFsKF9hKSk7
Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBfZXhjZXB0aW9uID0gZTsKLSAgICB9Ci0gICAg
dmFyIF9idiA9ICh0eXBlb2YgX2IgPT0gImZ1bmN0aW9uIiA/IF9iKCkgOiBldmFsKF9iKSk7Ci0K
LSAgICBpZiAoX2V4Y2VwdGlvbikKLSAgICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIG5v
dCBiZSAiICsgX2J2ICsgIi4gVGhyZXcgZXhjZXB0aW9uICIgKyBfZXhjZXB0aW9uKTsKLSAgICBl
bHNlIGlmICghaXNSZXN1bHRDb3JyZWN0KF9hdiwgX2J2KSkgewotICAgICAgICBpZiAoIV9xdWll
dCkgewotICAgICAgICAgICAgdGVzdFBhc3NlZChfYSArICIgaXMgbm90ICIgKyAodHlwZW9mIF9i
ID09ICJmdW5jdGlvbiIgPyBfYnYgOiBfYikpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAg
ICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBub3QgYmUgIiArIF9idiArICIuIik7Ci19Ci0K
LWZ1bmN0aW9uIHNob3VsZEJlY29tZURpZmZlcmVudChfYSwgX2IsIGNvbXBsZXRpb25IYW5kbGVy
KQotewotICAgIGlmICh0eXBlb2YgX2EgIT0gInN0cmluZyIgfHwgdHlwZW9mIF9iICE9ICJzdHJp
bmciKQotICAgICAgICBkZWJ1ZygiV0FSTjogc2hvdWxkQmVjb21lRGlmZmVyZW50KCkgZXhwZWN0
cyBzdHJpbmcgYXJndW1lbnRzIik7Ci0KLSAgICBmdW5jdGlvbiBjb25kaXRpb24oKSB7Ci0gICAg
ICAgIHZhciBleGNlcHRpb247Ci0gICAgICAgIHZhciBfYXY7Ci0gICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICBfYXYgPSBldmFsKF9hKTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAg
ICAgZXhjZXB0aW9uID0gZTsKLSAgICAgICAgfQotICAgICAgICB2YXIgX2J2ID0gZXZhbChfYik7
Ci0gICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBz
aG91bGQgYmVjYW1lIG5vdCBlcXVhbCB0byAiICsgX2J2ICsgIi4gVGhyZXcgZXhjZXB0aW9uICIg
KyBleGNlcHRpb24pOwotICAgICAgICBpZiAoIWlzUmVzdWx0Q29ycmVjdChfYXYsIF9idikpIHsK
LSAgICAgICAgICAgIHRlc3RQYXNzZWQoX2EgKyAiIGJlY2FtZSBkaWZmZXJlbnQgZnJvbSAiICsg
X2IpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICBzZXRUaW1lb3V0KF93YWl0Rm9yQ29uZGl0aW9uLCAwLCBjb25k
aXRpb24sIGNvbXBsZXRpb25IYW5kbGVyKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVUcnVlKF9h
KSB7IHNob3VsZEJlKF9hLCAidHJ1ZSIpOyB9Ci1mdW5jdGlvbiBzaG91bGRCZVRydWVRdWlldChf
YSkgeyBzaG91bGRCZShfYSwgInRydWUiLCB0cnVlKTsgfQotZnVuY3Rpb24gc2hvdWxkQmVGYWxz
ZShfYSkgeyBzaG91bGRCZShfYSwgImZhbHNlIik7IH0KLWZ1bmN0aW9uIHNob3VsZEJlTmFOKF9h
KSB7IHNob3VsZEJlKF9hLCAiTmFOIik7IH0KLWZ1bmN0aW9uIHNob3VsZEJlTnVsbChfYSkgeyBz
aG91bGRCZShfYSwgIm51bGwiKTsgfQotZnVuY3Rpb24gc2hvdWxkQmVaZXJvKF9hKSB7IHNob3Vs
ZEJlKF9hLCAiMCIpOyB9Ci0KLWZ1bmN0aW9uIHNob3VsZEJlRXF1YWxUb1N0cmluZyhhLCBiKQot
ewotICAgIGlmICh0eXBlb2YgYSAhPT0gInN0cmluZyIgfHwgdHlwZW9mIGIgIT09ICJzdHJpbmci
KQotICAgICAgICBkZWJ1ZygiV0FSTjogc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCkgZXhwZWN0cyBz
dHJpbmcgYXJndW1lbnRzIik7Ci0gICAgdmFyIHVuZXZhbGVkU3RyaW5nID0gSlNPTi5zdHJpbmdp
ZnkoYik7Ci0gICAgc2hvdWxkQmUoYSwgdW5ldmFsZWRTdHJpbmcpOwotfQotCi1mdW5jdGlvbiBz
aG91bGROb3RCZUVxdWFsVG9TdHJpbmcoYSwgYikKLXsKLSAgICBpZiAodHlwZW9mIGEgIT09ICJz
dHJpbmciIHx8IHR5cGVvZiBiICE9PSAic3RyaW5nIikKLSAgICAgICAgZGVidWcoIldBUk46IHNo
b3VsZEJlRXF1YWxUb1N0cmluZygpIGV4cGVjdHMgc3RyaW5nIGFyZ3VtZW50cyIpOwotICAgIHZh
ciB1bmV2YWxlZFN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGIpOwotICAgIHNob3VsZE5vdEJlKGEs
IHVuZXZhbGVkU3RyaW5nKTsKLX0KLWZ1bmN0aW9uIHNob3VsZEJlRW1wdHlTdHJpbmcoX2EpIHsg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKF9hLCAiIik7IH0KLQotZnVuY3Rpb24gc2hvdWxkRXZhbHVh
dGVUbyhhY3R1YWwsIGV4cGVjdGVkKQotewotICAgIC8vIEEgZ2VuZXJhbC1wdXJwb3NlIGNvbXBh
cmF0b3IuICAnYWN0dWFsJyBzaG91bGQgYmUgYSBzdHJpbmcgdG8gYmUKLSAgICAvLyBldmFsdWF0
ZWQsIGFzIGZvciBzaG91bGRCZSgpLiAnZXhwZWN0ZWQnIG1heSBiZSBhbnkgdHlwZSBhbmQgd2ls
bCBiZQotICAgIC8vIHVzZWQgd2l0aG91dCBiZWluZyBldmFsJ2VkLgotICAgIGlmIChleHBlY3Rl
ZCA9PSBudWxsKSB7Ci0gICAgICAgIC8vIERvIHRoaXMgYmVmb3JlIHRoZSBvYmplY3QgdGVzdCwg
c2luY2UgbnVsbCBpcyBvZiB0eXBlICdvYmplY3QnLgotICAgICAgICBzaG91bGRCZU51bGwoYWN0
dWFsKTsKLSAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBlY3RlZCA9PSAidW5kZWZpbmVkIikgewot
ICAgICAgICBzaG91bGRCZVVuZGVmaW5lZChhY3R1YWwpOwotICAgIH0gZWxzZSBpZiAodHlwZW9m
IGV4cGVjdGVkID09ICJmdW5jdGlvbiIpIHsKLSAgICAgICAgLy8gQWxsIHRoaXMgZnVzcyBpcyB0
byBhdm9pZCB0aGUgc3RyaW5nLWFyZyB3YXJuaW5nIGZyb20gc2hvdWxkQmUoKS4KLSAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgIGFjdHVhbFZhbHVlID0gZXZhbChhY3R1YWwpOwotICAgICAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJFdmFsdWF0aW5nICIgKyBhY3R1
YWwgKyAiOiBUaHJldyBleGNlcHRpb24gIiArIGUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIHNob3VsZEJlKCInIiArIGFjdHVhbFZhbHVlLnRvU3RyaW5nKCkucmVw
bGFjZSgvXG4vZywgIiIpICsgIiciLAotICAgICAgICAgICAgICAgICAiJyIgKyBleHBlY3RlZC50
b1N0cmluZygpLnJlcGxhY2UoL1xuL2csICIiKSArICInIik7Ci0gICAgfSBlbHNlIGlmICh0eXBl
b2YgZXhwZWN0ZWQgPT0gIm9iamVjdCIpIHsKLSAgICAgICAgc2hvdWxkQmVUcnVlKGFjdHVhbCAr
ICIgPT0gJyIgKyBleHBlY3RlZCArICInIik7Ci0gICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwZWN0
ZWQgPT0gInN0cmluZyIpIHsKLSAgICAgICAgc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCk7Ci0g
ICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT0gImJvb2xlYW4iKSB7Ci0gICAgICAgIHNo
b3VsZEJlKCJ0eXBlb2YgIiArIGFjdHVhbCwgIidib29sZWFuJyIpOwotICAgICAgICBpZiAoZXhw
ZWN0ZWQpCi0gICAgICAgICAgICBzaG91bGRCZVRydWUoYWN0dWFsKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgc2hvdWxkQmVGYWxzZShhY3R1YWwpOwotICAgIH0gZWxzZSBpZiAodHlwZW9m
IGV4cGVjdGVkID09ICJudW1iZXIiKSB7Ci0gICAgICAgIHNob3VsZEJlKGFjdHVhbCwgc3RyaW5n
aWZ5KGV4cGVjdGVkKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGVidWcoZXhwZWN0ZWQgKyAi
IGlzIHVua25vd24gdHlwZSAiICsgdHlwZW9mIGV4cGVjdGVkKTsKLSAgICAgICAgc2hvdWxkQmVU
cnVlKGFjdHVhbCwgIiciICArZXhwZWN0ZWQudG9TdHJpbmcoKSArICInIik7Ci0gICAgfQotfQot
Ci1mdW5jdGlvbiBzaG91bGRCZU5vblplcm8oX2EpCi17Ci0gICAgdmFyIGV4Y2VwdGlvbjsKLSAg
ICB2YXIgX2F2OwotICAgIHRyeSB7Ci0gICAgICAgIF9hdiA9IGV2YWwoX2EpOwotICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgZXhjZXB0aW9uID0gZTsKLSAgICB9Ci0KLSAgICBpZiAoZXhjZXB0
aW9uKQotICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgbm9uLXplcm8uIFRocmV3
IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKLSAgICBlbHNlIGlmIChfYXYgIT0gMCkKLSAgICAg
ICAgdGVzdFBhc3NlZChfYSArICIgaXMgbm9uLXplcm8uIik7Ci0gICAgZWxzZQotICAgICAgICB0
ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgbm9uLXplcm8uIFdhcyAiICsgX2F2KTsKLX0KLQot
ZnVuY3Rpb24gc2hvdWxkQmVOb25OdWxsKF9hKQotewotICAgIHZhciBleGNlcHRpb247Ci0gICAg
dmFyIF9hdjsKLSAgICB0cnkgewotICAgICAgICBfYXYgPSBldmFsKF9hKTsKLSAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgIGV4Y2VwdGlvbiA9IGU7Ci0gICAgfQotCi0gICAgaWYgKGV4Y2VwdGlv
bikKLSAgICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5vbi1udWxsLiBUaHJldyBl
eGNlcHRpb24gIiArIGV4Y2VwdGlvbik7Ci0gICAgZWxzZSBpZiAoX2F2ICE9IG51bGwpCi0gICAg
ICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIG5vbi1udWxsLiIpOwotICAgIGVsc2UKLSAgICAgICAg
dGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5vbi1udWxsLiBXYXMgIiArIF9hdik7Ci19Ci0K
LWZ1bmN0aW9uIHNob3VsZEJlVW5kZWZpbmVkKF9hKQotewotICAgIHZhciBleGNlcHRpb247Ci0g
ICAgdmFyIF9hdjsKLSAgICB0cnkgewotICAgICAgICBfYXYgPSBldmFsKF9hKTsKLSAgICB9IGNh
dGNoIChlKSB7Ci0gICAgICAgIGV4Y2VwdGlvbiA9IGU7Ci0gICAgfQotCi0gICAgaWYgKGV4Y2Vw
dGlvbikKLSAgICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIHVuZGVmaW5lZC4gVGhy
ZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwotICAgIGVsc2UgaWYgKHR5cGVvZiBfYXYgPT0g
InVuZGVmaW5lZCIpCi0gICAgICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIHVuZGVmaW5lZC4iKTsK
LSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSB1bmRlZmluZWQu
IFdhcyAiICsgX2F2KTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVEZWZpbmVkKF9hKQotewotICAg
IHZhciBleGNlcHRpb247Ci0gICAgdmFyIF9hdjsKLSAgICB0cnkgewotICAgICAgICBfYXYgPSBl
dmFsKF9hKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGV4Y2VwdGlvbiA9IGU7Ci0gICAg
fQotCi0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxk
IGJlIGRlZmluZWQuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKLSAgICBlbHNlIGlm
IChfYXYgIT09IHVuZGVmaW5lZCkKLSAgICAgICAgdGVzdFBhc3NlZChfYSArICIgaXMgZGVmaW5l
ZC4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSBkZWZp
bmVkLiBXYXMgIiArIF9hdik7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZEJlR3JlYXRlclRoYW5PckVx
dWFsKF9hLCBfYikgewotICAgIGlmICh0eXBlb2YgX2EgIT0gInN0cmluZyIgfHwgdHlwZW9mIF9i
ICE9ICJzdHJpbmciKQotICAgICAgICBkZWJ1ZygiV0FSTjogc2hvdWxkQmVHcmVhdGVyVGhhbk9y
RXF1YWwgZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzIik7Ci0KLSAgICB2YXIgZXhjZXB0aW9uOwot
ICAgIHZhciBfYXY7Ci0gICAgdHJ5IHsKLSAgICAgICAgX2F2ID0gZXZhbChfYSk7Ci0gICAgfSBj
YXRjaCAoZSkgewotICAgICAgICBleGNlcHRpb24gPSBlOwotICAgIH0KLSAgICB2YXIgX2J2ID0g
ZXZhbChfYik7Ci0KLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICB0ZXN0RmFpbGVkKF9hICsg
IiBzaG91bGQgYmUgPj0gIiArIF9iICsgIi4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24p
OwotICAgIGVsc2UgaWYgKHR5cGVvZiBfYXYgPT0gInVuZGVmaW5lZCIgfHwgX2F2IDwgX2J2KQot
ICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgPj0gIiArIF9iICsgIi4gV2FzICIg
KyBfYXYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2F2ICsgIikuIik7Ci0gICAgZWxzZQotICAg
ICAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyA+PSAiICsgX2IpOwotfQotCi1mdW5jdGlvbiBleHBl
Y3RUcnVlKHYsIG1zZykgewotICAgIGlmICh2KSB7Ci0gICAgICAgIHRlc3RQYXNzZWQobXNnKTsK
LSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7Ci0gICAgfQotfQotCi1mdW5j
dGlvbiBzaG91bGROb3RUaHJvdyhfYSwgX21lc3NhZ2UpIHsKLSAgICB0cnkgewotICAgICAgICB0
eXBlb2YgX2EgPT0gImZ1bmN0aW9uIiA/IF9hKCkgOiBldmFsKF9hKTsKLSAgICAgICAgdGVzdFBh
c3NlZCgoX21lc3NhZ2UgPyBfbWVzc2FnZSA6IF9hKSArICIgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uIik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0RmFpbGVkKChfbWVzc2FnZSA/
IF9tZXNzYWdlIDogX2EpICsgIiBzaG91bGQgbm90IHRocm93IGV4Y2VwdGlvbi4gVGhyZXcgZXhj
ZXB0aW9uICIgKyBlICsgIi4iKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZFRocm93KF9h
LCBfZSwgX21lc3NhZ2UpCi17Ci0gICAgdmFyIF9leGNlcHRpb247Ci0gICAgdmFyIF9hdjsKLSAg
ICB0cnkgewotICAgICAgICBfYXYgPSB0eXBlb2YgX2EgPT0gImZ1bmN0aW9uIiA/IF9hKCkgOiBl
dmFsKF9hKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIF9leGNlcHRpb24gPSBlOwotICAg
IH0KLQotICAgIHZhciBfZXY7Ci0gICAgaWYgKF9lKQotICAgICAgICBfZXYgPSBldmFsKF9lKTsK
LQotICAgIGlmIChfZXhjZXB0aW9uKSB7Ci0gICAgICAgIGlmICh0eXBlb2YgX2UgPT0gInVuZGVm
aW5lZCIgfHwgX2V4Y2VwdGlvbiA9PSBfZXYpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKChfbWVz
c2FnZSA/IF9tZXNzYWdlIDogX2EpICsgIiB0aHJldyBleGNlcHRpb24gIiArIF9leGNlcHRpb24g
KyAiLiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKChfbWVzc2FnZSA/
IF9tZXNzYWdlIDogX2EpICsgIiBzaG91bGQgdGhyb3cgIiArICh0eXBlb2YgX2UgPT0gInVuZGVm
aW5lZCIgPyAiYW4gZXhjZXB0aW9uIiA6IF9ldikgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIF9l
eGNlcHRpb24gKyAiLiIpOwotICAgIH0gZWxzZSBpZiAodHlwZW9mIF9hdiA9PSAidW5kZWZpbmVk
IikKLSAgICAgICAgdGVzdEZhaWxlZCgoX21lc3NhZ2UgPyBfbWVzc2FnZSA6IF9hKSArICIgc2hv
dWxkIHRocm93ICIgKyAodHlwZW9mIF9lID09ICJ1bmRlZmluZWQiID8gImFuIGV4Y2VwdGlvbiIg
OiBfZXYpICsgIi4gV2FzIHVuZGVmaW5lZC4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWls
ZWQoKF9tZXNzYWdlID8gX21lc3NhZ2UgOiBfYSkgKyAiIHNob3VsZCB0aHJvdyAiICsgKHR5cGVv
ZiBfZSA9PSAidW5kZWZpbmVkIiA/ICJhbiBleGNlcHRpb24iIDogX2V2KSArICIuIFdhcyAiICsg
X2F2ICsgIi4iKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkUmVqZWN0KF9hLCBfbWVzc2FnZSkKLXsK
LSAgICB2YXIgX2V4Y2VwdGlvbjsKLSAgICB2YXIgX2F2OwotICAgIHRyeSB7Ci0gICAgICAgIF9h
diA9IHR5cGVvZiBfYSA9PSAiZnVuY3Rpb24iID8gX2EoKSA6IGV2YWwoX2EpOwotICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgoX21lc3NhZ2UgPyBfbWVzc2FnZSA6IF9hKSAr
ICIgc2hvdWxkIG5vdCB0aHJvdyBleGNlcHRpb24uIFRocmV3IGV4Y2VwdGlvbiAiICsgZSArICIu
Iik7Ci0gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gX2F2LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoKF9tZXNz
YWdlID8gX21lc3NhZ2UgOiBfYSkgKyAiIHNob3VsZCByZWplY3QgcHJvbWlzZS4gUmVzb2x2ZWQg
d2l0aCAiICsgcmVzdWx0ICsgIi4iKTsKLSAgICB9LCBmdW5jdGlvbihlcnJvcikgewotICAgICAg
ICB0ZXN0UGFzc2VkKChfbWVzc2FnZSA/IF9tZXNzYWdlIDogX2EpICsgIiByZWplY3RlZCBwcm9t
aXNlICB3aXRoICIgKyBlcnJvciArICIuIik7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHNob3Vs
ZFRocm93RXJyb3JOYW1lKF9hLCBfbmFtZSkKLXsKLSAgICB2YXIgX2V4Y2VwdGlvbjsKLSAgICB0
cnkgewotICAgICAgICB0eXBlb2YgX2EgPT0gImZ1bmN0aW9uIiA/IF9hKCkgOiBldmFsKF9hKTsK
LSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIF9leGNlcHRpb24gPSBlOwotICAgIH0KLQotICAg
IGlmIChfZXhjZXB0aW9uKSB7Ci0gICAgICAgIGlmIChfZXhjZXB0aW9uLm5hbWUgPT0gX25hbWUp
Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKF9hICsgIiB0aHJldyBleGNlcHRpb24gIiArIF9leGNl
cHRpb24gKyAiLiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKF9hICsg
IiBzaG91bGQgdGhyb3cgYSAiICsgX25hbWUgKyAiLiBUaHJldyBhICIgKyBfZXhjZXB0aW9uLm5h
bWUgKyAiLiIpOwotICAgIH0gZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQg
dGhyb3cgYSAiICsgX25hbWUgKyAiLiBEaWQgbm90IHRocm93LiIpOwotfQotCi1mdW5jdGlvbiBz
aG91bGRIYXZlSGFkRXJyb3IobWVzc2FnZSkKLXsKLSAgICBpZiAoZXJyb3JNZXNzYWdlKSB7Ci0g
ICAgICAgIGlmICghbWVzc2FnZSkKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIkdvdCBleHBlY3Rl
ZCBlcnJvciIpOwotICAgICAgICBlbHNlIGlmIChlcnJvck1lc3NhZ2UuaW5kZXhPZihtZXNzYWdl
KSAhPT0gLTEpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJHb3QgZXhwZWN0ZWQgZXJyb3I6ICci
ICsgbWVzc2FnZSArICInIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQo
IlVuZXhwZXh0ZWQgZXJyb3IgJyIgKyBtZXNzYWdlICsgIiciKTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgdGVzdEZhaWxlZCgiTWlzc2luZyBleHBleHRlZCBlcnJvciIpOwotICAgIGVycm9yTWVzc2Fn
ZSA9IHVuZGVmaW5lZDsKLX0KLQotZnVuY3Rpb24gZ2MoKSB7Ci0gICAgaWYgKHR5cGVvZiBHQ0Nv
bnRyb2xsZXIgIT09ICJ1bmRlZmluZWQiKQotICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgp
OwotICAgIGVsc2UgewotICAgICAgICB2YXIgZ2NSZWMgPSBmdW5jdGlvbiAobikgewotICAgICAg
ICAgICAgaWYgKG4gPCAxKQotICAgICAgICAgICAgICAgIHJldHVybiB7fTsKLSAgICAgICAgICAg
IHZhciB0ZW1wID0ge2k6ICJhYiIgKyBpICsgKGkgLyAxMDAwMDApfTsKLSAgICAgICAgICAgIHRl
bXAgKz0gImZvbyI7Ci0gICAgICAgICAgICBnY1JlYyhuLTEpOwotICAgICAgICB9OwotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykKLSAgICAgICAgICAgIGdjUmVjKDEwKQot
ICAgIH0KLX0KLQotZnVuY3Rpb24gZGZnQ29tcGlsZWQoYXJndW1lbnQpCi17Ci0gICAgdmFyIG51
bWJlck9mQ29tcGlsZXMgPSAiY29tcGlsZXMiIGluIGFyZ3VtZW50ID8gYXJndW1lbnQuY29tcGls
ZXMgOiAxOwotCi0gICAgaWYgKCEoImYiIGluIGFyZ3VtZW50KSkKLSAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJkZmdDb21waWxlZCBjYWxsZWQgd2l0aCBpbnZhbGlkIGFyZ3VtZW50LiIpOwotCi0g
ICAgaWYgKGFyZ3VtZW50LmYgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGFyZ3VtZW50LmYubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICh0ZXN0
UnVubmVyLm51bWJlck9mREZHQ29tcGlsZXMoYXJndW1lbnQuZltpXSkgPCBudW1iZXJPZkNvbXBp
bGVzKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGlmICh0ZXN0UnVubmVyLm51bWJlck9mREZHQ29tcGlsZXMoYXJndW1lbnQu
ZikgPCBudW1iZXJPZkNvbXBpbGVzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1mdW5jdGlvbiBkZmdJbmNyZW1lbnQoYXJndW1lbnQp
Ci17Ci0gICAgaWYgKCFzZWxmLnRlc3RSdW5uZXIpCi0gICAgICAgIHJldHVybiBhcmd1bWVudC5p
OwotCi0gICAgaWYgKGFyZ3VtZW50LmkgPCBhcmd1bWVudC5uKQotICAgICAgICByZXR1cm4gYXJn
dW1lbnQuaTsKLQotICAgIGlmIChkaWRGYWlsU29tZVRlc3RzKQotICAgICAgICByZXR1cm4gYXJn
dW1lbnQuaTsKLQotICAgIGlmICghZGZnQ29tcGlsZWQoYXJndW1lbnQpKQotICAgICAgICByZXR1
cm4gInN0YXJ0IiBpbiBhcmd1bWVudCA/IGFyZ3VtZW50LnN0YXJ0IDogMDsKLQotICAgIHJldHVy
biBhcmd1bWVudC5pOwotfQotCi1mdW5jdGlvbiBub0lubGluZSh0aGVGdW5jdGlvbikKLXsKLSAg
ICBpZiAoIXNlbGYudGVzdFJ1bm5lcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdGVzdFJ1bm5l
ci5uZXZlcklubGluZUZ1bmN0aW9uKHRoZUZ1bmN0aW9uKTsKLX0KLQotZnVuY3Rpb24gaXNTdWNj
ZXNzZnVsbHlQYXJzZWQoKQotewotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhbmQgb25seSBy
ZXBvcnQgdW5leHBlY3RlZCBzeW50YXggZXJyb3JzLgotICAgIGlmICghZXJyb3JNZXNzYWdlKQot
ICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotICAgIHNob3VsZEJlVHJ1ZSgic3Vj
Y2Vzc2Z1bGx5UGFyc2VkIik7Ci0gICAgaWYgKHNpbGVudFRlc3RQYXNzICYmIGRpZFBhc3NTb21l
VGVzdHNTaWxlbnRseSkKLSAgICAgICAgZGVidWcoIlBhc3NlZCBzb21lIHRlc3RzIHNpbGVudGx5
LiIpOwotICAgIGlmIChzaWxlbnRUZXN0UGFzcyAmJiBkaWRGYWlsU29tZVRlc3RzKQotICAgICAg
ICBkZWJ1ZygiU29tZSB0ZXN0cyBmYWlsZWQuIik7Ci0gICAgZGVidWcoJzxiciAvPjxzcGFuIGNs
YXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPicpOwotfQotCi1mdW5jdGlvbiBhc3luY1Rl
c3RTdGFydCgpIHsKLSAgICBpZiAoc2VsZi50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24gYXN5bmNUZXN0UGFzc2VkKCkgewotICAg
IGlmIChzZWxmLnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
fQotCi0vLyBJdCdzIHBvc3NpYmxlIGZvciBhbiBhc3luYyB0ZXN0IHRvIGNhbGwgZmluaXNoSlNU
ZXN0KCkgYmVmb3JlIGpzLXRlc3QtcG9zdC5qcwotLy8gaGFzIGJlZW4gcGFyc2VkLgotZnVuY3Rp
b24gZmluaXNoSlNUZXN0KCkKLXsKLSAgICB3YXNGaW5pc2hKU1Rlc3RDYWxsZWQgPSB0cnVlOwot
ICAgIGlmICghc2VsZi53YXNQb3N0VGVzdFNjcmlwdFBhcnNlZCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0gICAgaWYgKHNlbGYuanNUZXN0SXNBc3luYyAm
JiBzZWxmLnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfQot
Ci1mdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQotewotICAgIHNlbGYuanNUZXN0
SXNBc3luYyA9IHRydWU7Ci0gICAgZGVidWcoJ1N0YXJ0aW5nIHdvcmtlcjogJyArIHRlc3RTY3Jp
cHRVUkwpOwotICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKHRlc3RTY3JpcHRVUkwpOwotICAg
IHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciB3
b3JrZXJQcmVmaXggPSAiW1dvcmtlcl0gIjsKLSAgICAgICAgaWYgKGV2ZW50LmRhdGEubGVuZ3Ro
IDwgNSB8fCBldmVudC5kYXRhLmNoYXJBdCg0KSAhPSAnOicpIHsKLSAgICAgICAgICAgIGRlYnVn
KHdvcmtlclByZWZpeCArIGV2ZW50LmRhdGEpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIHZhciBjb2RlID0gZXZlbnQuZGF0YS5zdWJzdHJpbmcoMCwgNCk7Ci0gICAg
ICAgIHZhciBwYXlsb2FkID0gd29ya2VyUHJlZml4ICsgZXZlbnQuZGF0YS5zdWJzdHJpbmcoNSk7
Ci0gICAgICAgIGlmIChjb2RlID09ICJQQVNTIikKLSAgICAgICAgICAgIHRlc3RQYXNzZWQocGF5
bG9hZCk7Ci0gICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIkZBSUwiKQotICAgICAgICAgICAgdGVz
dEZhaWxlZChwYXlsb2FkKTsKLSAgICAgICAgZWxzZSBpZiAoY29kZSA9PSAiREVTQyIpCi0gICAg
ICAgICAgICBkZXNjcmlwdGlvbihwYXlsb2FkKTsKLSAgICAgICAgZWxzZSBpZiAoY29kZSA9PSAi
RE9ORSIpCi0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZGVidWcod29ya2VyUHJlZml4ICsgZXZlbnQuZGF0YSk7Ci0gICAgfTsKLQotICAgIHdv
cmtlci5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBkZWJ1ZygnR290
IGVycm9yIGZyb20gd29ya2VyOiAnICsgZXZlbnQubWVzc2FnZSk7Ci0gICAgICAgIGZpbmlzaEpT
VGVzdCgpOwotICAgIH0KLQotICAgIHJldHVybiB3b3JrZXI7Ci19Ci0KLWlmIChpc1dvcmtlcigp
KSB7Ci0gICAgdmFyIHdvcmtlclBvcnQgPSBzZWxmOwotICAgIGRlc2NyaXB0aW9uID0gZnVuY3Rp
b24obXNnLCBxdWlldCkgewotICAgICAgICB3b3JrZXJQb3J0LnBvc3RNZXNzYWdlKCdERVNDOicg
KyBtc2cpOwotICAgIH0KLSAgICB0ZXN0RmFpbGVkID0gZnVuY3Rpb24obXNnKSB7Ci0gICAgICAg
IHdvcmtlclBvcnQucG9zdE1lc3NhZ2UoJ0ZBSUw6JyArIG1zZyk7Ci0gICAgfQotICAgIHRlc3RQ
YXNzZWQgPSBmdW5jdGlvbihtc2cpIHsKLSAgICAgICAgd29ya2VyUG9ydC5wb3N0TWVzc2FnZSgn
UEFTUzonICsgbXNnKTsKLSAgICB9Ci0gICAgZmluaXNoSlNUZXN0ID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHdvcmtlclBvcnQucG9zdE1lc3NhZ2UoJ0RPTkU6Jyk7Ci0gICAgfQotICAgIGRlYnVn
ID0gZnVuY3Rpb24obXNnKSB7Ci0gICAgICAgIHdvcmtlclBvcnQucG9zdE1lc3NhZ2UobXNnKTsK
LSAgICB9Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvanMtdGVzdC5qcyBi
L0xheW91dFRlc3RzL3Jlc291cmNlcy9qcy10ZXN0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlNTRmZWIzMjIxZjU2ZjQwOTQ0YWVhNzM4MTYyMzIxODFiNTNhOGZjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3Jlc291
cmNlcy9qcy10ZXN0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsOTM2ICswLDAgQEAKLWlmIChzZWxm
LnRlc3RSdW5uZXIpIHsKLQkvLyBzdmcvZHluYW1pYy11cGRhdGVzIHRlc3RzIHNldCBlbmFibGVQ
aXhlbFRlc3Rpbmc9dHJ1ZSwgYXMgd2Ugd2FudCB0byBkdW1wIHRleHQgKyBwaXhlbCByZXN1bHRz
Ci0gICAgaWYgKHNlbGYuZW5hYmxlUGl4ZWxUZXN0aW5nKQotICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHRXaXRoUGl4ZWxSZXN1bHRzKCk7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLX0KLQotdmFyIGRlc2NyaXB0aW9uLCBkZWJ1ZywgZGlkRmFpbFNvbWVU
ZXN0cywgc3VjY2Vzc2Z1bGx5UGFyc2VkOwotCi1kaWRGYWlsU29tZVRlc3RzID0gZmFsc2U7Ci0K
LXZhciBleHBlY3RpbmdFcnJvcjsgLy8gc2V0IGJ5IHNob3VsZEhhdmVFcnJvcigpCi12YXIgZXhw
ZWN0ZWRFcnJvck1lc3NhZ2U7IC8vIHNldCBieSBvbmVycm9yIHdoZW4gZXhwZWN0aW5nRXJyb3Ig
aXMgdHJ1ZQotdmFyIHVuZXhwZWN0ZWRFcnJvck1lc3NhZ2U7IC8vIHNldCBieSBvbmVycm9yIHdo
ZW4gZXhwZWN0aW5nRXJyb3IgaXMgbm90IHRydWUKLQotKGZ1bmN0aW9uKCkgewotCi0gICAgZnVu
Y3Rpb24gY3JlYXRlSFRNTEVsZW1lbnQodGFnTmFtZSkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1F
OiBJbiBhbiBYTUwgZG9jdW1lbnQsIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoKSBjcmVhdGVzIGFu
IGVsZW1lbnQgd2l0aCBhIG51bGwgbmFtZXNwYWNlIFVSSS4KLSAgICAgICAgLy8gU28sIHdlIG5l
ZWQgdXNlIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygpIHRvIGV4cGxpY2l0bHkgY3JlYXRlIGFu
IGVsZW1lbnQgd2l0aCB0aGUgc3BlY2lmaWVkCi0gICAgICAgIC8vIHRhZyBuYW1lIGluIHRoZSBI
VE1MIG5hbWVzcGFjZS4gV2UgY2FuIHJlbW92ZSB0aGlzIGZ1bmN0aW9uIGFuZCB1c2UgZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgpCi0gICAgICAgIC8vIGRpcmVjdGx5IG9uY2Ugd2UgZml4IDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMDc0Pi4KLSAgICAgICAgaWYg
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUykKLSAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCB0YWdOYW1lKTsK
LSAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7Ci0gICAgfQot
Ci0gICAgdmFyIHJvb3RFbGVtZW50ID0gbnVsbDsKLSAgICBmdW5jdGlvbiBlbnN1cmVSb290RWxl
bWVudCgpCi0gICAgewotICAgICAgICBpZiAoIXJvb3RFbGVtZW50IHx8ICFyb290RWxlbWVudC5p
c0Nvbm5lY3RlZCkgewotICAgICAgICAgICAgcm9vdEVsZW1lbnQgPSBkb2N1bWVudC5ib2R5IHx8
IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKLSAgICAgICAgICAgIGlmIChkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJID09ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycp
IHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGUgdGVzdCBoYXJuZXNzIHVzZSBT
VkcgZWxlbWVudHMgbmFpdmVseS4KLSAgICAgICAgICAgICAgICB2YXIgZm9yZWlnbk9iamVjdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAn
Zm9yZWlnbk9iamVjdCcpOwotICAgICAgICAgICAgICAgIGZvcmVpZ25PYmplY3Quc2V0QXR0cmli
dXRlKCd4JywgJzBweCcpOwotICAgICAgICAgICAgICAgIGZvcmVpZ25PYmplY3Quc2V0QXR0cmli
dXRlKCd5JywgJzBweCcpOwotICAgICAgICAgICAgICAgIGZvcmVpZ25PYmplY3Quc2V0QXR0cmli
dXRlKCd3aWR0aCcsICcxMDAlJyk7Ci0gICAgICAgICAgICAgICAgZm9yZWlnbk9iamVjdC5zZXRB
dHRyaWJ1dGUoJ2hlaWdodCcsICcxMDAlJyk7Ci0gICAgICAgICAgICAgICAgZm9yZWlnbk9iamVj
dC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3BhZGRpbmc6IDEwcHg7IGJhY2tncm91bmQtY29sb3I6
IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KScpOwotICAgICAgICAgICAgICAgIGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChmb3JlaWduT2JqZWN0KTsKLSAgICAgICAgICAgICAg
ICByb290RWxlbWVudCA9IGZvcmVpZ25PYmplY3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIHJvb3RFbGVtZW50OwotICAgIH0KLQotICAgIG1vdmVGb3JlaWduT2Jq
ZWN0VG9Ub3BJZk5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgaWYgKHJvb3RFbGVtZW50
ICYmIHJvb3RFbGVtZW50LmxvY2FsTmFtZSA9PSAnZm9yZWlnbk9iamVjdCcpCi0gICAgICAgICAg
ICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQpOwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGdldE9yQ3JlYXRlKGlkLCB0YWdOYW1lKQotICAgIHsKLSAgICAg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7Ci0gICAgICAgIGlm
IChlbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0KLSAgICAgICAgZWxlbWVu
dCA9IGNyZWF0ZUhUTUxFbGVtZW50KHRhZ05hbWUpOwotICAgICAgICBlbGVtZW50LmlkID0gaWQ7
Ci0gICAgICAgIHZhciByZWZOb2RlOwotICAgICAgICB2YXIgcGFyZW50ID0gZW5zdXJlUm9vdEVs
ZW1lbnQoKTsKLQotICAgICAgICBpZiAoaWQgPT0gImRlc2NyaXB0aW9uIikKLSAgICAgICAgICAg
IHJlZk5vZGUgPSBnZXRPckNyZWF0ZSgiY29uc29sZSIsICJkaXYiKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcmVmTm9kZSA9IHBhcmVudC5maXJzdENoaWxkOwotCi0gICAgICAgIHBhcmVu
dC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgcmVmTm9kZSk7Ci0gICAgICAgIHJldHVybiBlbGVtZW50
OwotICAgIH0KLQotICAgIGRlc2NyaXB0aW9uID0gZnVuY3Rpb24gZGVzY3JpcHRpb24obXNnLCBx
dWlldCkKLSAgICB7Ci0gICAgICAgIC8vIEZvciBNU0lFIDYgY29tcGF0aWJpbGl0eQotICAgICAg
ICB2YXIgc3BhbiA9IGNyZWF0ZUhUTUxFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIGlmIChxdWll
dCkKLSAgICAgICAgICAgIHNwYW4uaW5uZXJIVE1MID0gJzxwPicgKyBtc2cgKyAnPC9wPjxwPk9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBubyAiPHNwYW4gY2xhc3M9ImZhaWwiPkZBSUw8L3NwYW4+
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRF
PC9zcGFuPiIuPC9wPic7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNwYW4uaW5uZXJIVE1M
ID0gJzxwPicgKyBtc2cgKyAnPC9wPjxwPk9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiPHNwYW4gY2xhc3M9InBhc3MiPlBBU1M8L3NwYW4+IiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPiIuPC9wPic7Ci0KLSAg
ICAgICAgdmFyIGRlc2NyaXB0aW9uID0gZ2V0T3JDcmVhdGUoImRlc2NyaXB0aW9uIiwgInAiKTsK
LSAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmZpcnN0Q2hpbGQpCi0gICAgICAgICAgICBkZXNjcmlw
dGlvbi5yZXBsYWNlQ2hpbGQoc3BhbiwgZGVzY3JpcHRpb24uZmlyc3RDaGlsZCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uLmFwcGVuZENoaWxkKHNwYW4pOwotICAgIH07
Ci0KLSAgICBkZWJ1ZyA9IGZ1bmN0aW9uIGRlYnVnKG1zZykKLSAgICB7Ci0gICAgICAgIHZhciBz
cGFuID0gY3JlYXRlSFRNTEVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgc3Bhbi5pbm5lckhUTUwg
PSBtc2cgKyAnPGJyIC8+JzsKLSAgICAgICAgZ2V0T3JDcmVhdGUoImNvbnNvbGUiLCAiZGl2Iiku
YXBwZW5kQ2hpbGQoc3Bhbik7Ci0gICAgfTsKLQotICAgIHZhciBjc3MgPQotICAgICAgICAiLnBh
c3MgeyIgKwotICAgICAgICAgICAgImZvbnQtd2VpZ2h0OiBib2xkOyIgKwotICAgICAgICAgICAg
ImNvbG9yOiBncmVlbjsiICsKLSAgICAgICAgIn0iICsKLSAgICAgICAgIi5mYWlsIHsiICsKLSAg
ICAgICAgICAgICJmb250LXdlaWdodDogYm9sZDsiICsKLSAgICAgICAgICAgICJjb2xvcjogcmVk
OyIgKwotICAgICAgICAifSIgKwotICAgICAgICAiI2NvbnNvbGUgeyIgKwotICAgICAgICAgICAg
IndoaXRlLXNwYWNlOiBwcmUtd3JhcDsiICsKLSAgICAgICAgICAgICJmb250LWZhbWlseTogbW9u
b3NwYWNlOyIgKwotICAgICAgICAifSI7Ci0KLSAgICBmdW5jdGlvbiBpbnNlcnRTdHlsZVNoZWV0
KCkKLSAgICB7Ci0gICAgICAgIHZhciBzdHlsZUVsZW1lbnQgPSBjcmVhdGVIVE1MRWxlbWVudCgi
c3R5bGUiKTsKLSAgICAgICAgc3R5bGVFbGVtZW50LnRleHRDb250ZW50ID0gY3NzOwotICAgICAg
ICAoZG9jdW1lbnQuaGVhZCB8fCBlbnN1cmVSb290RWxlbWVudCgpKS5hcHBlbmRDaGlsZChzdHls
ZUVsZW1lbnQpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGhhbmRsZVRlc3RGaW5pc2hlZCgpCi0g
ICAgewotICAgICAgICAvLyBGSVhNRTogR2V0IHJpZCBvZiB0aGlzIGJvb2xlYW4uCi0gICAgICAg
IHdhc1Bvc3RUZXN0U2NyaXB0UGFyc2VkID0gdHJ1ZTsKLSAgICAgICAgaWYgKHdpbmRvdy5qc1Rl
c3RJc0FzeW5jKSB7Ci0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICBpZiAod2lu
ZG93Lndhc0ZpbmlzaEpTVGVzdENhbGxlZCkKLSAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci0K
LSAgICBpZiAoIWlzV29ya2VyKCkpIHsKLSAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIC8vIENhbGwgd2Fp
dFVudGlsRG9uZSgpIGFzIGVhcmx5IGFzIHBvc3NpYmxlIG90aGVyd2lzZSBzb21lIHRlc3RzIG1h
eSBjb21wbGV0ZSBiZWZvcmUKLSAgICAgICAgICAgIC8vIHRoZSBsb2FkIGV2ZW50IGhhcyBmaXJl
ZC4KLSAgICAgICAgICAgIGlmICh3aW5kb3cuanNUZXN0SXNBc3luYyAmJiB3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotICAg
ICAgICAgICAgLy8gU29tZSB0ZXN0cyBzZXQganNUZXN0SXNBc3luYyBpbiBsb2FkIGV2ZW50IGhh
bmRsZXIuIEFkZGluZyB0aGUgbGlzdGVuZXIgbGF0ZQotICAgICAgICAgICAgLy8gbWFrZXMgaGFu
ZGxlVGVzdEZpbmlzaGVkKCkgcnVuIGFmdGVyIHRoZSB0ZXN0IGhhbmRsZXMgbG9hZCBldmVudHMu
Ci0gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGhhbmRsZVRlc3RG
aW5pc2hlZCwgZmFsc2UpOwotICAgICAgICB9LCBmYWxzZSk7Ci0gICAgICAgIGluc2VydFN0eWxl
U2hlZXQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIXNlbGYuaXNPbkVycm9yVGVzdCkgewotICAgICAg
ICBzZWxmLm9uZXJyb3IgPSBmdW5jdGlvbihtZXNzYWdlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoc2VsZi5leHBlY3RpbmdFcnJvcikgewotICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0
ZWRFcnJvck1lc3NhZ2UgPSBtZXNzYWdlOwotICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0aW5n
RXJyb3IgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzZWxmLnVuZXhwZWN0ZWRFcnJvck1lc3NhZ2UgPSBtZXNzYWdlOwotICAgICAg
ICAgICAgaWYgKHNlbGYuanNUZXN0SXNBc3luYykgewotICAgICAgICAgICAgICAgIHNlbGYudGVz
dEZhaWxlZCgiVW5leHBlY3RlZCBlcnJvcjogIiArIG1lc3NhZ2UpOwotICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0KLX0pKCk7
Ci0KLWZ1bmN0aW9uIGlzV29ya2VyKCkKLXsKLSAgICAvLyBJdCdzIGNvbmNlaXZhYmxlIHRoYXQg
c29tZW9uZSB3b3VsZCBzdHViIG91dCAnZG9jdW1lbnQnIGluIGEgd29ya2VyIHNvCi0gICAgLy8g
YWxzbyBjaGVjayBmb3IgY2hpbGROb2RlcywgYW4gYXJiaXRyYXJ5IERPTS1yZWxhdGVkIG9iamVj
dCB0aGF0IGlzCi0gICAgLy8gbWVhbmluZ2xlc3MgaW4gYSBXb3JrZXJDb250ZXh0LgotICAgIHJl
dHVybiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgZG9jdW1lbnQu
Y2hpbGROb2RlcyA9PT0gJ3VuZGVmaW5lZCcpICYmICEhc2VsZi5pbXBvcnRTY3JpcHRzOwotfQot
Ci1mdW5jdGlvbiBkZXNjcmlwdGlvblF1aWV0KG1zZykgeyBkZXNjcmlwdGlvbihtc2csIHRydWUp
OyB9Ci0KLWZ1bmN0aW9uIGVzY2FwZUhUTUwodGV4dCkKLXsKLSAgICByZXR1cm4gdGV4dC5yZXBs
YWNlKC8mL2csICImYW1wOyIpLnJlcGxhY2UoLzwvZywgIiZsdDsiKS5yZXBsYWNlKC9cMC9nLCAi
XFwwIik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RQYXNzZWQobXNnKQotewotICAgIGRlYnVnKCc8c3Bh
bj48c3BhbiBjbGFzcz0icGFzcyI+UEFTUzwvc3Bhbj4gJyArIGVzY2FwZUhUTUwobXNnKSArICc8
L3NwYW4+Jyk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RGYWlsZWQobXNnKQotewotICAgIGRpZEZhaWxT
b21lVGVzdHMgPSB0cnVlOwotICAgIGRlYnVnKCc8c3Bhbj48c3BhbiBjbGFzcz0iZmFpbCI+RkFJ
TDwvc3Bhbj4gJyArIGVzY2FwZUhUTUwobXNnKSArICc8L3NwYW4+Jyk7Ci19Ci0KLWZ1bmN0aW9u
IGFyZUFycmF5c0VxdWFsKGEsIGIpCi17Ci0gICAgdHJ5IHsKLSAgICAgICAgaWYgKGEubGVuZ3Ro
ICE9PSBiLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgaWYgKGFbaV0gIT09IGJb
aV0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gY2F0Y2ggKGV4KSB7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0
aW9uIGlzTWludXNaZXJvKG4pCi17Ci0gICAgLy8gdGhlIG9ubHkgd2F5IHRvIHRlbGwgMCBmcm9t
IC0wIGluIEpTIGlzIHRoZSBmYWN0IHRoYXQgMS8tMCBpcwotICAgIC8vIC1JbmZpbml0eSBpbnN0
ZWFkIG9mIEluZmluaXR5Ci0gICAgcmV0dXJuIG4gPT09IDAgJiYgMS9uIDwgMDsKLX0KLQotZnVu
Y3Rpb24gaXNOZXdTVkdUZWFyT2ZmVHlwZSh2KQotewotICAgIHJldHVybiBbJ1tvYmplY3QgU1ZH
TGVuZ3RoXScsICdbb2JqZWN0IFNWR0xlbmd0aExpc3RdJywgJ1tvYmplY3QgU1ZHUG9pbnRdJywg
J1tvYmplY3QgU1ZHUG9pbnRMaXN0XScsICdbb2JqZWN0IFNWR051bWJlcl0nXS5pbmRleE9mKCIi
K3YpICE9IC0xOwotfQotCi1mdW5jdGlvbiBpc1Jlc3VsdENvcnJlY3QoYWN0dWFsLCBleHBlY3Rl
ZCkKLXsKLSAgICBpZiAoZXhwZWN0ZWQgPT09IDApCi0gICAgICAgIHJldHVybiBhY3R1YWwgPT09
IGV4cGVjdGVkICYmICgxL2FjdHVhbCkgPT09ICgxL2V4cGVjdGVkKTsKLSAgICBpZiAoYWN0dWFs
ID09PSBleHBlY3RlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgLy8gaHR0cDovL2NyYnVn
LmNvbS8zMDg4MTggOiBUaGUgbmV3IGltcGxlbWVudGF0aW9uIG9mIFNWR0xpc3RQcm9wZXJ0aWVz
IGRvIG5vdCBuZWNlc3NhcnkgcmV0dXJuIHRoZSBzYW1lIHdyYXBwZXIgb2JqZWN0LCBzbyA9PT0g
b3BlcmF0b3Igd291bGQgbm90IHdvcmsuIFdlIGNvbXBhcmUgZm9yIHRoZWlyIHN0cmluZyByZXBy
ZXNlbnRhdGlvbiBpbnN0ZWFkLgotICAgIGlmIChpc05ld1NWR1RlYXJPZmZUeXBlKGV4cGVjdGVk
KSAmJiB0eXBlb2YoZXhwZWN0ZWQpID09IHR5cGVvZihhY3R1YWwpICYmIGFjdHVhbC52YWx1ZUFz
U3RyaW5nID09IGV4cGVjdGVkLnZhbHVlQXNTdHJpbmcpCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGlmICh0eXBlb2YoZXhwZWN0ZWQpID09ICJudW1iZXIiICYmIGlzTmFOKGV4cGVjdGVkKSkK
LSAgICAgICAgcmV0dXJuIHR5cGVvZihhY3R1YWwpID09ICJudW1iZXIiICYmIGlzTmFOKGFjdHVh
bCk7Ci0gICAgaWYgKGV4cGVjdGVkICYmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo
ZXhwZWN0ZWQpID09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChbXSkpKQotICAgICAg
ICByZXR1cm4gYXJlQXJyYXlzRXF1YWwoYWN0dWFsLCBleHBlY3RlZCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1mdW5jdGlvbiBzdHJpbmdpZnkodikKLXsKLSAgICBpZiAoaXNOZXdTVkdUZWFy
T2ZmVHlwZSh2KSkKLSAgICAgICAgcmV0dXJuIHYudmFsdWVBc1N0cmluZzsKLSAgICBpZiAodiA9
PT0gMCAmJiAxL3YgPCAwKQotICAgICAgICByZXR1cm4gIi0wIjsKLSAgICBlbHNlIHJldHVybiAi
IiArIHY7Ci19Ci0KLWZ1bmN0aW9uIGV2YWxBbmRMb2coX2EsIF9xdWlldCkKLXsKLSAgaWYgKHR5
cGVvZiBfYSAhPSAic3RyaW5nIikKLSAgICBkZWJ1ZygiV0FSTjogdHJ5QW5kTG9nKCkgZXhwZWN0
cyBhIHN0cmluZyBhcmd1bWVudCIpOwotCi0gIC8vIExvZyBmaXJzdCBpbiBjYXNlIHRoaW5ncyBn
byBob3JyaWJseSB3cm9uZyBvciB0aGlzIGNhdXNlcyBhIHN5bmMgZXZlbnQuCi0gIGlmICghX3F1
aWV0KQotICAgIGRlYnVnKF9hKTsKLQotICB2YXIgX2F2OwotICB0cnkgewotICAgICBfYXYgPSBl
dmFsKF9hKTsKLSAgfSBjYXRjaCAoZSkgewotICAgIHRlc3RGYWlsZWQoX2EgKyAiIHRocmV3IGV4
Y2VwdGlvbiAiICsgZSk7Ci0gIH0KLSAgcmV0dXJuIF9hdjsKLX0KLQotZnVuY3Rpb24gc2hvdWxk
QmUoX2EsIF9iLCBfcXVpZXQpCi17Ci0gICAgaWYgKCh0eXBlb2YgX2EgIT0gImZ1bmN0aW9uIiAm
JiB0eXBlb2YgX2EgIT0gInN0cmluZyIpIHx8ICh0eXBlb2YgX2IgIT0gImZ1bmN0aW9uIiAmJiB0
eXBlb2YgX2IgIT0gInN0cmluZyIpKQotICAgICAgICBkZWJ1ZygiV0FSTjogc2hvdWxkQmUoKSBl
eHBlY3RzIGZ1bmN0aW9uIG9yIHN0cmluZyBhcmd1bWVudHMiKTsKLSAgICB2YXIgX2V4Y2VwdGlv
bjsKLSAgICB2YXIgX2F2OwotICAgIHRyeSB7Ci0gICAgICAgIF9hdiA9ICh0eXBlb2YgX2EgPT0g
ImZ1bmN0aW9uIiA/IF9hKCkgOiBldmFsKF9hKSk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAg
ICBfZXhjZXB0aW9uID0gZTsKLSAgICB9Ci0gICAgdmFyIF9idiA9ICh0eXBlb2YgX2IgPT0gImZ1
bmN0aW9uIiA/IF9iKCkgOiBldmFsKF9iKSk7Ci0KLSAgICBpZiAoX2V4Y2VwdGlvbikKLSAgICAg
ICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlICIgKyBzdHJpbmdpZnkoX2J2KSArICIuIFRo
cmV3IGV4Y2VwdGlvbiAiICsgX2V4Y2VwdGlvbik7Ci0gICAgZWxzZSBpZiAoaXNSZXN1bHRDb3Jy
ZWN0KF9hdiwgX2J2KSkgewotICAgICAgICBpZiAoIV9xdWlldCkgewotICAgICAgICAgICAgdGVz
dFBhc3NlZChfYSArICIgaXMgIiArICh0eXBlb2YgX2IgPT0gImZ1bmN0aW9uIiA/IF9idiA6IF9i
KSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHR5cGVvZihfYXYpID09IHR5cGVvZihfYnYp
KQotICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgIiArIHN0cmluZ2lmeShfYnYp
ICsgIi4gV2FzICIgKyBzdHJpbmdpZnkoX2F2KSArICIuIik7Ci0gICAgZWxzZQotICAgICAgICB0
ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgIiArIHN0cmluZ2lmeShfYnYpICsgIiAob2YgdHlw
ZSAiICsgdHlwZW9mIF9idiArICIpLiBXYXMgIiArIF9hdiArICIgKG9mIHR5cGUgIiArIHR5cGVv
ZiBfYXYgKyAiKS4iKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVPbmVPZlZhbHVlcyhfYSwgX3Zh
bHVlcykKLXsKLSAgICBpZiAoKHR5cGVvZiBfYSAhPSAiZnVuY3Rpb24iICYmIHR5cGVvZiBfYSAh
PSAic3RyaW5nIikpCi0gICAgICAgIGRlYnVnKCJXQVJOOiBzaG91bGRCZU9uZU9mVmFsdWVzKCkg
ZXhwZWN0cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYmUgYSBmdW5jdGlvbiBvciBhIHN0cmluZyIp
OwotICAgIGlmICghQXJyYXkuaXNBcnJheShfdmFsdWVzKSkgewotICAgICAgICB0ZXN0RmFpbGVk
KCJUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIHNob3VsZEJlT25lT2ZWYWx1ZXMoKSBtdXN0IGJlIGFu
IGFycmF5IG9mIHZhbHVlcyIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIF9l
eGNlcHRpb247Ci0gICAgdmFyIF9hdjsKLSAgICB0cnkgewotICAgICAgICBfYXYgPSAodHlwZW9m
IF9hID09ICJmdW5jdGlvbiIgPyBfYSgpIDogZXZhbChfYSkpOwotICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgX2V4Y2VwdGlvbiA9IGU7Ci0gICAgfQotCi0gICAgdmFyIHN0cmluZ2lmaWVkVmFs
dWVzID0gJyc7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfdmFsdWVzLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgICBpZiAoaSArIDEgPT0gX3ZhbHVlcy5sZW5n
dGgpCi0gICAgICAgICAgICAgICAgc3RyaW5naWZpZWRWYWx1ZXMgKz0gJywgYW5kICc7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RyaW5naWZpZWRWYWx1ZXMgKz0gJywnCi0g
ICAgICAgIH0KLSAgICAgICAgc3RyaW5naWZpZWRWYWx1ZXMgKz0gImAiICsgc3RyaW5naWZ5KF92
YWx1ZXNbaV0pICsgImAiOwotICAgIH0KLSAgICBpZiAoX2V4Y2VwdGlvbikKLSAgICAgICAgdGVz
dEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG9uZSBvZiAiICsgc3RyaW5naWZpZWRWYWx1ZXMgKyAi
LiBUaHJldyBleGNlcHRpb24gIiArIF9leGNlcHRpb24pOwotICAgIGVsc2UgewotICAgICAgICB2
YXIgbWF0Y2hlZFZhbHVlID0gX3ZhbHVlcy5maW5kKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4g
aXNSZXN1bHRDb3JyZWN0KF9hdiwgdmFsdWUpOyB9KTsKLSAgICAgICAgaWYgKG1hdGNoZWRWYWx1
ZSAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBvbmUg
b2YgIiArIHN0cmluZ2lmaWVkVmFsdWVzKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSBvbmUgb2YgIiArIHN0cmluZ2lmaWVkVmFsdWVz
ICsgIi4gV2FzICIgKyBzdHJpbmdpZnkoX2F2KSArICIuIik7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLS8vIEV4ZWN1dGUgY29uZGl0aW9uIGV2ZXJ5IDUgbWlsbGlzZWNvbmRzIHVudGlsIGl0IHN1
Y2NlZWRzLgotZnVuY3Rpb24gX3dhaXRGb3JDb25kaXRpb24oY29uZGl0aW9uLCBjb21wbGV0aW9u
SGFuZGxlcikKLXsKLSAgaWYgKGNvbmRpdGlvbigpKQotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
Ci0gIGVsc2UKLSAgICBzZXRUaW1lb3V0KF93YWl0Rm9yQ29uZGl0aW9uLCA1LCBjb25kaXRpb24s
IGNvbXBsZXRpb25IYW5kbGVyKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVjb21lRXF1YWwoX2Es
IF9iLCBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgaWYgKHR5cGVvZiBfYSAhPSAic3RyaW5nIiB8
fCB0eXBlb2YgX2IgIT0gInN0cmluZyIpCi0gICAgZGVidWcoIldBUk46IHNob3VsZEJlY29tZUVx
dWFsKCkgZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzIik7Ci0KLSAgZnVuY3Rpb24gY29uZGl0aW9u
KCkgewotICAgIHZhciBleGNlcHRpb247Ci0gICAgdmFyIF9hdjsKLSAgICB0cnkgewotICAgICAg
X2F2ID0gZXZhbChfYSk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgZXhjZXB0aW9uID0gZTsK
LSAgICB9Ci0gICAgdmFyIF9idiA9IGV2YWwoX2IpOwotICAgIGlmIChleGNlcHRpb24pCi0gICAg
ICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmVjb21lICIgKyBfYnYgKyAiLiBUaHJldyBleGNl
cHRpb24gIiArIGV4Y2VwdGlvbik7Ci0gICAgaWYgKGlzUmVzdWx0Q29ycmVjdChfYXYsIF9idikp
IHsKLSAgICAgIHRlc3RQYXNzZWQoX2EgKyAiIGJlY2FtZSAiICsgX2IpOwotICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBzZXRUaW1lb3V0KF93YWl0
Rm9yQ29uZGl0aW9uLCAwLCBjb25kaXRpb24sIGNvbXBsZXRpb25IYW5kbGVyKTsKLX0KLQotZnVu
Y3Rpb24gc2hvdWxkQmVjb21lRXF1YWxUb1N0cmluZyh2YWx1ZSwgcmVmZXJlbmNlLCBjb21wbGV0
aW9uSGFuZGxlcikKLXsKLSAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gInN0cmluZyIgfHwgdHlwZW9m
IHJlZmVyZW5jZSAhPT0gInN0cmluZyIpCi0gICAgZGVidWcoIldBUk46IHNob3VsZEJlY29tZUVx
dWFsVG9TdHJpbmcoKSBleHBlY3RzIHN0cmluZyBhcmd1bWVudHMiKTsKLSAgdmFyIHVuZXZhbGVk
U3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlKTsKLSAgc2hvdWxkQmVjb21lRXF1YWwo
dmFsdWUsIHVuZXZhbGVkU3RyaW5nLCBjb21wbGV0aW9uSGFuZGxlcik7Ci19Ci0KLWZ1bmN0aW9u
IHNob3VsZEJlVHlwZShfYSwgX3R5cGUpIHsKLSAgdmFyIF9leGNlcHRpb247Ci0gIHZhciBfYXY7
Ci0gIHRyeSB7Ci0gICAgX2F2ID0gZXZhbChfYSk7Ci0gIH0gY2F0Y2ggKGUpIHsKLSAgICBfZXhj
ZXB0aW9uID0gZTsKLSAgfQotCi0gIHZhciBfdHlwZXYgPSBldmFsKF90eXBlKTsKLSAgaWYgKF9h
diBpbnN0YW5jZW9mIF90eXBldikgewotICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIGFuIGluc3Rh
bmNlIG9mICIgKyBfdHlwZSk7Ci0gIH0gZWxzZSB7Ci0gICAgdGVzdEZhaWxlZChfYSArICIgaXMg
bm90IGFuIGluc3RhbmNlIG9mICIgKyBfdHlwZSk7Ci0gIH0KLX0KLQotLy8gVmFyaWFudCBvZiBz
aG91bGRCZSgpLS1jb25maXJtcyB0aGF0IHJlc3VsdCBvZiBldmFsKF90b19ldmFsKSBpcyB3aXRo
aW4KLS8vIG51bWVyaWMgX3RvbGVyYW5jZSBvZiBudW1lcmljIF90YXJnZXQuCi1mdW5jdGlvbiBz
aG91bGRCZUNsb3NlVG8oX3RvX2V2YWwsIF90YXJnZXQsIF90b2xlcmFuY2UsIF9xdWlldCkKLXsK
LSAgaWYgKHR5cGVvZiBfdG9fZXZhbCAhPSAic3RyaW5nIikgewotICAgIHRlc3RGYWlsZWQoInNo
b3VsZEJlQ2xvc2VUbygpIHJlcXVpcmVzIHN0cmluZyBhcmd1bWVudCBfdG9fZXZhbC4gd2FzIHR5
cGUgIiArIHR5cGVvZiBfdG9fZXZhbCk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIGlmICh0eXBlb2Yg
X3RhcmdldCAhPSAibnVtYmVyIikgewotICAgIHRlc3RGYWlsZWQoInNob3VsZEJlQ2xvc2VUbygp
IHJlcXVpcmVzIG51bWVyaWMgYXJndW1lbnQgX3RhcmdldC4gd2FzIHR5cGUgIiArIHR5cGVvZiBf
dGFyZ2V0KTsKLSAgICByZXR1cm47Ci0gIH0KLSAgaWYgKHR5cGVvZiBfdG9sZXJhbmNlICE9ICJu
dW1iZXIiKSB7Ci0gICAgdGVzdEZhaWxlZCgic2hvdWxkQmVDbG9zZVRvKCkgcmVxdWlyZXMgbnVt
ZXJpYyBhcmd1bWVudCBfdG9sZXJhbmNlLiB3YXMgdHlwZSAiICsgdHlwZW9mIF90b2xlcmFuY2Up
OwotICAgIHJldHVybjsKLSAgfQotCi0gIHZhciBfcmVzdWx0OwotICB0cnkgewotICAgICBfcmVz
dWx0ID0gZXZhbChfdG9fZXZhbCk7Ci0gIH0gY2F0Y2ggKGUpIHsKLSAgICB0ZXN0RmFpbGVkKF90
b19ldmFsICsgIiBzaG91bGQgYmUgd2l0aGluICIgKyBfdG9sZXJhbmNlICsgIiBvZiAiCi0gICAg
ICAgICAgICAgICArIF90YXJnZXQgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIGUpOwotICAgIHJl
dHVybjsKLSAgfQotCi0gIGlmICh0eXBlb2YoX3Jlc3VsdCkgIT0gdHlwZW9mKF90YXJnZXQpKSB7
Ci0gICAgdGVzdEZhaWxlZChfdG9fZXZhbCArICIgc2hvdWxkIGJlIG9mIHR5cGUgIiArIHR5cGVv
ZiBfdGFyZ2V0Ci0gICAgICAgICAgICAgICArICIgYnV0IHdhcyBvZiB0eXBlICIgKyB0eXBlb2Yg
X3Jlc3VsdCk7Ci0gIH0gZWxzZSBpZiAoTWF0aC5hYnMoX3Jlc3VsdCAtIF90YXJnZXQpIDw9IF90
b2xlcmFuY2UpIHsKLSAgICBpZiAoIV9xdWlldCkgewotICAgICAgICB0ZXN0UGFzc2VkKF90b19l
dmFsICsgIiBpcyB3aXRoaW4gIiArIF90b2xlcmFuY2UgKyAiIG9mICIgKyBfdGFyZ2V0KTsKLSAg
ICB9Ci0gIH0gZWxzZSB7Ci0gICAgdGVzdEZhaWxlZChfdG9fZXZhbCArICIgc2hvdWxkIGJlIHdp
dGhpbiAiICsgX3RvbGVyYW5jZSArICIgb2YgIiArIF90YXJnZXQKLSAgICAgICAgICAgICAgICsg
Ii4gV2FzICIgKyBfcmVzdWx0ICsgIi4iKTsKLSAgfQotfQotCi1mdW5jdGlvbiBzaG91bGROb3RC
ZShfYSwgX2IsIF9xdWlldCkKLXsKLSAgICBpZiAoKHR5cGVvZiBfYSAhPSAiZnVuY3Rpb24iICYm
IHR5cGVvZiBfYSAhPSAic3RyaW5nIikgfHwgKHR5cGVvZiBfYiAhPSAiZnVuY3Rpb24iICYmIHR5
cGVvZiBfYiAhPSAic3RyaW5nIikpCi0gICAgICAgIGRlYnVnKCJXQVJOOiBzaG91bGROb3RCZSgp
IGV4cGVjdHMgZnVuY3Rpb24gb3Igc3RyaW5nIGFyZ3VtZW50cyIpOwotICAgIHZhciBfZXhjZXB0
aW9uOwotICAgIHZhciBfYXY7Ci0gICAgdHJ5IHsKLSAgICAgICAgX2F2ID0gKHR5cGVvZiBfYSA9
PSAiZnVuY3Rpb24iID8gX2EoKSA6IGV2YWwoX2EpKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAg
ICAgIF9leGNlcHRpb24gPSBlOwotICAgIH0KLSAgICB2YXIgX2J2ID0gKHR5cGVvZiBfYiA9PSAi
ZnVuY3Rpb24iID8gX2IoKSA6IGV2YWwoX2IpKTsKLQotICAgIGlmIChfZXhjZXB0aW9uKQotICAg
ICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgbm90IGJlICIgKyBfYnYgKyAiLiBUaHJldyBl
eGNlcHRpb24gIiArIF9leGNlcHRpb24pOwotICAgIGVsc2UgaWYgKCFpc1Jlc3VsdENvcnJlY3Qo
X2F2LCBfYnYpKSB7Ci0gICAgICAgIGlmICghX3F1aWV0KSB7Ci0gICAgICAgICAgICB0ZXN0UGFz
c2VkKF9hICsgIiBpcyBub3QgIiArICh0eXBlb2YgX2IgPT0gImZ1bmN0aW9uIiA/IF9idiA6IF9i
KSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hv
dWxkIG5vdCBiZSAiICsgX2J2ICsgIi4iKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVjb21lRGlm
ZmVyZW50KF9hLCBfYiwgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gIGlmICh0eXBlb2YgX2EgIT0g
InN0cmluZyIgfHwgdHlwZW9mIF9iICE9ICJzdHJpbmciKQotICAgIGRlYnVnKCJXQVJOOiBzaG91
bGRCZWNvbWVEaWZmZXJlbnQoKSBleHBlY3RzIHN0cmluZyBhcmd1bWVudHMiKTsKLQotICBmdW5j
dGlvbiBjb25kaXRpb24oKSB7Ci0gICAgdmFyIGV4Y2VwdGlvbjsKLSAgICB2YXIgX2F2OwotICAg
IHRyeSB7Ci0gICAgICBfYXYgPSBldmFsKF9hKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICBl
eGNlcHRpb24gPSBlOwotICAgIH0KLSAgICB2YXIgX2J2ID0gZXZhbChfYik7Ci0gICAgaWYgKGV4
Y2VwdGlvbikKLSAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZWNhbWUgbm90IGVxdWFs
IHRvICIgKyBfYnYgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbik7Ci0gICAgaWYg
KCFpc1Jlc3VsdENvcnJlY3QoX2F2LCBfYnYpKSB7Ci0gICAgICB0ZXN0UGFzc2VkKF9hICsgIiBi
ZWNhbWUgZGlmZmVyZW50IGZyb20gIiArIF9iKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgc2V0VGltZW91dChfd2FpdEZvckNvbmRpdGlvbiwg
MCwgY29uZGl0aW9uLCBjb21wbGV0aW9uSGFuZGxlcik7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZEJl
VHJ1ZShhLCBxdWlldCkgeyBzaG91bGRCZShhLCAidHJ1ZSIsIHF1aWV0KTsgfQotZnVuY3Rpb24g
c2hvdWxkQmVUcnVlUXVpZXQoYSkgeyBzaG91bGRCZShhLCAidHJ1ZSIsIHRydWUpOyB9Ci1mdW5j
dGlvbiBzaG91bGRCZUZhbHNlKGEsIHF1aWV0KSB7IHNob3VsZEJlKGEsICJmYWxzZSIsIHF1aWV0
KTsgfQotZnVuY3Rpb24gc2hvdWxkQmVOYU4oYSwgcXVpZXQpIHsgc2hvdWxkQmUoYSwgIk5hTiIs
IHF1aWV0KTsgfQotZnVuY3Rpb24gc2hvdWxkQmVOdWxsKGEsIHF1aWV0KSB7IHNob3VsZEJlKGEs
ICJudWxsIiwgcXVpZXQpOyB9Ci1mdW5jdGlvbiBzaG91bGRCZVplcm8oYSwgcXVpZXQpIHsgc2hv
dWxkQmUoYSwgIjAiLCBxdWlldCk7IH0KLQotZnVuY3Rpb24gc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KGEsIGIpCi17Ci0gIGlmICh0eXBlb2YgYSAhPT0gInN0cmluZyIgfHwgdHlwZW9mIGIgIT09ICJz
dHJpbmciKQotICAgIGRlYnVnKCJXQVJOOiBzaG91bGRCZUVxdWFsVG9TdHJpbmcoKSBleHBlY3Rz
IHN0cmluZyBhcmd1bWVudHMiKTsKLSAgdmFyIHVuZXZhbGVkU3RyaW5nID0gSlNPTi5zdHJpbmdp
ZnkoYik7Ci0gIHNob3VsZEJlKGEsIHVuZXZhbGVkU3RyaW5nKTsKLX0KLQotZnVuY3Rpb24gc2hv
dWxkQmVFcXVhbFRvTnVtYmVyKGEsIGIpCi17Ci0gIGlmICh0eXBlb2YgYSAhPT0gInN0cmluZyIg
fHwgdHlwZW9mIGIgIT09ICJudW1iZXIiKQotICAgIGRlYnVnKCJXQVJOOiBzaG91bGRCZUVxdWFs
VG9OdW1iZXIoKSBleHBlY3RzIGEgc3RyaW5nIGFuZCBhIG51bWJlciBhcmd1bWVudHMiKTsKLSAg
dmFyIHVuZXZhbGVkU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoYik7Ci0gIHNob3VsZEJlKGEsIHVu
ZXZhbGVkU3RyaW5nKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVFbXB0eVN0cmluZyhhKSB7IHNo
b3VsZEJlRXF1YWxUb1N0cmluZyhhLCAiIik7IH0KLQotZnVuY3Rpb24gc2hvdWxkRXZhbHVhdGVU
byhhY3R1YWwsIGV4cGVjdGVkKSB7Ci0gIC8vIEEgZ2VuZXJhbC1wdXJwb3NlIGNvbXBhcmF0b3Iu
ICAnYWN0dWFsJyBzaG91bGQgYmUgYSBzdHJpbmcgdG8gYmUKLSAgLy8gZXZhbHVhdGVkLCBhcyBm
b3Igc2hvdWxkQmUoKS4gJ2V4cGVjdGVkJyBtYXkgYmUgYW55IHR5cGUgYW5kIHdpbGwgYmUKLSAg
Ly8gdXNlZCB3aXRob3V0IGJlaW5nIGV2YWwnZWQuCi0gIGlmIChleHBlY3RlZCA9PSBudWxsKSB7
Ci0gICAgLy8gRG8gdGhpcyBiZWZvcmUgdGhlIG9iamVjdCB0ZXN0LCBzaW5jZSBudWxsIGlzIG9m
IHR5cGUgJ29iamVjdCcuCi0gICAgc2hvdWxkQmVOdWxsKGFjdHVhbCk7Ci0gIH0gZWxzZSBpZiAo
dHlwZW9mIGV4cGVjdGVkID09ICJ1bmRlZmluZWQiKSB7Ci0gICAgc2hvdWxkQmVVbmRlZmluZWQo
YWN0dWFsKTsKLSAgfSBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT0gImZ1bmN0aW9uIikgewot
ICAgIC8vIEFsbCB0aGlzIGZ1c3MgaXMgdG8gYXZvaWQgdGhlIHN0cmluZy1hcmcgd2FybmluZyBm
cm9tIHNob3VsZEJlKCkuCi0gICAgdHJ5IHsKLSAgICAgIHZhciBhY3R1YWxWYWx1ZSA9IGV2YWwo
YWN0dWFsKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICB0ZXN0RmFpbGVkKCJFdmFsdWF0aW5n
ICIgKyBhY3R1YWwgKyAiOiBUaHJldyBleGNlcHRpb24gIiArIGUpOwotICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBzaG91bGRCZSgiJyIgKyBhY3R1YWxWYWx1ZS50b1N0cmluZygpLnJlcGxhY2Uo
L1xuL2csICIiKSArICInIiwKLSAgICAgICAgICAgICAiJyIgKyBleHBlY3RlZC50b1N0cmluZygp
LnJlcGxhY2UoL1xuL2csICIiKSArICInIik7Ci0gIH0gZWxzZSBpZiAodHlwZW9mIGV4cGVjdGVk
ID09ICJvYmplY3QiKSB7Ci0gICAgc2hvdWxkQmVUcnVlKGFjdHVhbCArICIgPT0gJyIgKyBleHBl
Y3RlZCArICInIik7Ci0gIH0gZWxzZSBpZiAodHlwZW9mIGV4cGVjdGVkID09ICJzdHJpbmciKSB7
Ci0gICAgc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCk7Ci0gIH0gZWxzZSBpZiAodHlwZW9mIGV4
cGVjdGVkID09ICJib29sZWFuIikgewotICAgIHNob3VsZEJlKCJ0eXBlb2YgIiArIGFjdHVhbCwg
Iidib29sZWFuJyIpOwotICAgIGlmIChleHBlY3RlZCkKLSAgICAgIHNob3VsZEJlVHJ1ZShhY3R1
YWwpOwotICAgIGVsc2UKLSAgICAgIHNob3VsZEJlRmFsc2UoYWN0dWFsKTsKLSAgfSBlbHNlIGlm
ICh0eXBlb2YgZXhwZWN0ZWQgPT0gIm51bWJlciIpIHsKLSAgICBzaG91bGRCZShhY3R1YWwsIHN0
cmluZ2lmeShleHBlY3RlZCkpOwotICB9IGVsc2UgewotICAgIGRlYnVnKGV4cGVjdGVkICsgIiBp
cyB1bmtub3duIHR5cGUgIiArIHR5cGVvZiBleHBlY3RlZCk7Ci0gICAgc2hvdWxkQmVUcnVlKGFj
dHVhbCwgIiciICArZXhwZWN0ZWQudG9TdHJpbmcoKSArICInIik7Ci0gIH0KLX0KLQotZnVuY3Rp
b24gc2hvdWxkQmVOb25aZXJvKF9hKQotewotICB2YXIgX2V4Y2VwdGlvbjsKLSAgdmFyIF9hdjsK
LSAgdHJ5IHsKLSAgICAgX2F2ID0gZXZhbChfYSk7Ci0gIH0gY2F0Y2ggKGUpIHsKLSAgICAgX2V4
Y2VwdGlvbiA9IGU7Ci0gIH0KLQotICBpZiAoX2V4Y2VwdGlvbikKLSAgICB0ZXN0RmFpbGVkKF9h
ICsgIiBzaG91bGQgYmUgbm9uLXplcm8uIFRocmV3IGV4Y2VwdGlvbiAiICsgX2V4Y2VwdGlvbik7
Ci0gIGVsc2UgaWYgKF9hdiAhPSAwKQotICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIG5vbi16ZXJv
LiIpOwotICBlbHNlCi0gICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5vbi16ZXJvLiBX
YXMgIiArIF9hdik7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZEJlTm9uTnVsbChfYSkKLXsKLSAgdmFy
IF9leGNlcHRpb247Ci0gIHZhciBfYXY7Ci0gIHRyeSB7Ci0gICAgIF9hdiA9IGV2YWwoX2EpOwot
ICB9IGNhdGNoIChlKSB7Ci0gICAgIF9leGNlcHRpb24gPSBlOwotICB9Ci0KLSAgaWYgKF9leGNl
cHRpb24pCi0gICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5vbi1udWxsLiBUaHJldyBl
eGNlcHRpb24gIiArIF9leGNlcHRpb24pOwotICBlbHNlIGlmIChfYXYgIT0gbnVsbCkKLSAgICB0
ZXN0UGFzc2VkKF9hICsgIiBpcyBub24tbnVsbC4iKTsKLSAgZWxzZQotICAgIHRlc3RGYWlsZWQo
X2EgKyAiIHNob3VsZCBiZSBub24tbnVsbC4gV2FzICIgKyBfYXYpOwotfQotCi1mdW5jdGlvbiBz
aG91bGRCZVVuZGVmaW5lZChfYSkKLXsKLSAgdmFyIF9leGNlcHRpb247Ci0gIHZhciBfYXY7Ci0g
IHRyeSB7Ci0gICAgIF9hdiA9IGV2YWwoX2EpOwotICB9IGNhdGNoIChlKSB7Ci0gICAgICBfZXhj
ZXB0aW9uID0gZTsKLSAgfQotCi0gIGlmIChfZXhjZXB0aW9uKQotICAgIHRlc3RGYWlsZWQoX2Eg
KyAiIHNob3VsZCBiZSB1bmRlZmluZWQuIFRocmV3IGV4Y2VwdGlvbiAiICsgX2V4Y2VwdGlvbik7
Ci0gIGVsc2UgaWYgKHR5cGVvZiBfYXYgPT0gInVuZGVmaW5lZCIpCi0gICAgdGVzdFBhc3NlZChf
YSArICIgaXMgdW5kZWZpbmVkLiIpOwotICBlbHNlCi0gICAgdGVzdEZhaWxlZChfYSArICIgc2hv
dWxkIGJlIHVuZGVmaW5lZC4gV2FzICIgKyBfYXYpOwotfQotCi1mdW5jdGlvbiBzaG91bGRCZURl
ZmluZWQoX2EpCi17Ci0gIHZhciBfZXhjZXB0aW9uOwotICB2YXIgX2F2OwotICB0cnkgewotICAg
ICBfYXYgPSBldmFsKF9hKTsKLSAgfSBjYXRjaCAoZSkgewotICAgICBfZXhjZXB0aW9uID0gZTsK
LSAgfQotCi0gIGlmIChfZXhjZXB0aW9uKQotICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBi
ZSBkZWZpbmVkLiBUaHJldyBleGNlcHRpb24gIiArIF9leGNlcHRpb24pOwotICBlbHNlIGlmIChf
YXYgIT09IHVuZGVmaW5lZCkKLSAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBkZWZpbmVkLiIpOwot
ICBlbHNlCi0gICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIGRlZmluZWQuIFdhcyAiICsg
X2F2KTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoX2EsIF9iKSB7
Ci0gICAgaWYgKHR5cGVvZiBfYSAhPSAic3RyaW5nIiB8fCB0eXBlb2YgX2IgIT0gInN0cmluZyIp
Ci0gICAgICAgIGRlYnVnKCJXQVJOOiBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCBleHBlY3Rz
IHN0cmluZyBhcmd1bWVudHMiKTsKLQotICAgIHZhciBfZXhjZXB0aW9uOwotICAgIHZhciBfYXY7
Ci0gICAgdHJ5IHsKLSAgICAgICAgX2F2ID0gZXZhbChfYSk7Ci0gICAgfSBjYXRjaCAoZSkgewot
ICAgICAgICBfZXhjZXB0aW9uID0gZTsKLSAgICB9Ci0gICAgdmFyIF9idiA9IGV2YWwoX2IpOwot
Ci0gICAgaWYgKF9leGNlcHRpb24pCi0gICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBi
ZSA+PSAiICsgX2IgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIF9leGNlcHRpb24pOwotICAgIGVs
c2UgaWYgKHR5cGVvZiBfYXYgPT0gInVuZGVmaW5lZCIgfHwgX2F2IDwgX2J2KQotICAgICAgICB0
ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgPj0gIiArIF9iICsgIi4gV2FzICIgKyBfYXYgKyAi
IChvZiB0eXBlICIgKyB0eXBlb2YgX2F2ICsgIikuIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0
UGFzc2VkKF9hICsgIiBpcyA+PSAiICsgX2IpOwotfQotCi1mdW5jdGlvbiBzaG91bGRCZUxlc3NU
aGFuT3JFcXVhbChfYSwgX2IpIHsKLSAgICBpZiAodHlwZW9mIF9hICE9ICJzdHJpbmciIHx8IHR5
cGVvZiBfYiAhPSAic3RyaW5nIikKLSAgICAgICAgZGVidWcoIldBUk46IHNob3VsZEJlTGVzc1Ro
YW5PckVxdWFsIGV4cGVjdHMgc3RyaW5nIGFyZ3VtZW50cyIpOwotCi0gICAgdmFyIF9leGNlcHRp
b247Ci0gICAgdmFyIF9hdjsKLSAgICB0cnkgewotICAgICAgICBfYXYgPSBldmFsKF9hKTsKLSAg
ICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIF9leGNlcHRpb24gPSBlOwotICAgIH0KLSAgICB2YXIg
X2J2ID0gZXZhbChfYik7Ci0KLSAgICBpZiAoX2V4Y2VwdGlvbikKLSAgICAgICAgdGVzdEZhaWxl
ZChfYSArICIgc2hvdWxkIGJlIDw9ICIgKyBfYiArICIuIFRocmV3IGV4Y2VwdGlvbiAiICsgX2V4
Y2VwdGlvbik7Ci0gICAgZWxzZSBpZiAodHlwZW9mIF9hdiA9PSAidW5kZWZpbmVkIiB8fCBfYXYg
PiBfYnYpCi0gICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSA8PSAiICsgX2IgKyAi
LiBXYXMgIiArIF9hdiArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYXYgKyAiKS4iKTsKLSAgICBl
bHNlCi0gICAgICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIDw9ICIgKyBfYik7Ci19Ci0KLWZ1bmN0
aW9uIGV4cGVjdFRydWUodiwgbXNnKSB7Ci0gIGlmICh2KSB7Ci0gICAgdGVzdFBhc3NlZChtc2cp
OwotICB9IGVsc2UgewotICAgIHRlc3RGYWlsZWQobXNnKTsKLSAgfQotfQotCi1mdW5jdGlvbiBz
aG91bGROb3RUaHJvdyhfYSwgX21lc3NhZ2UpIHsKLSAgICB0cnkgewotICAgICAgICB0eXBlb2Yg
X2EgPT0gImZ1bmN0aW9uIiA/IF9hKCkgOiBldmFsKF9hKTsKLSAgICAgICAgdGVzdFBhc3NlZCgo
X21lc3NhZ2UgPyBfbWVzc2FnZSA6IF9hKSArICIgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uIik7
Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0ZXN0RmFpbGVkKChfbWVzc2FnZSA/IF9tZXNz
YWdlIDogX2EpICsgIiBzaG91bGQgbm90IHRocm93IGV4Y2VwdGlvbi4gVGhyZXcgZXhjZXB0aW9u
ICIgKyBlICsgIi4iKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZFRocm93KF9hLCBfZSwg
X21lc3NhZ2UpCi17Ci0gICAgdmFyIF9leGNlcHRpb247Ci0gICAgdmFyIF9hdjsKLSAgICB0cnkg
ewotICAgICAgICBfYXYgPSB0eXBlb2YgX2EgPT0gImZ1bmN0aW9uIiA/IF9hKCkgOiBldmFsKF9h
KTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIF9leGNlcHRpb24gPSBlOwotICAgIH0KLQot
ICAgIHZhciBfZXY7Ci0gICAgaWYgKF9lKQotICAgICAgICBfZXYgPSBldmFsKF9lKTsKLQotICAg
IGlmIChfZXhjZXB0aW9uKSB7Ci0gICAgICAgIGlmICh0eXBlb2YgX2UgPT0gInVuZGVmaW5lZCIg
fHwgX2V4Y2VwdGlvbiA9PSBfZXYpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKChfbWVzc2FnZSA/
IF9tZXNzYWdlIDogX2EpICsgIiB0aHJldyBleGNlcHRpb24gIiArIF9leGNlcHRpb24gKyAiLiIp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKChfbWVzc2FnZSA/IF9tZXNz
YWdlIDogX2EpICsgIiBzaG91bGQgdGhyb3cgIiArICh0eXBlb2YgX2UgPT0gInVuZGVmaW5lZCIg
PyAiYW4gZXhjZXB0aW9uIiA6IF9ldikgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIF9leGNlcHRp
b24gKyAiLiIpOwotICAgIH0gZWxzZSBpZiAodHlwZW9mIF9hdiA9PSAidW5kZWZpbmVkIikKLSAg
ICAgICAgdGVzdEZhaWxlZCgoX21lc3NhZ2UgPyBfbWVzc2FnZSA6IF9hKSArICIgc2hvdWxkIHRo
cm93ICIgKyAodHlwZW9mIF9lID09ICJ1bmRlZmluZWQiID8gImFuIGV4Y2VwdGlvbiIgOiBfZXYp
ICsgIi4gV2FzIHVuZGVmaW5lZC4iKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoKF9t
ZXNzYWdlID8gX21lc3NhZ2UgOiBfYSkgKyAiIHNob3VsZCB0aHJvdyAiICsgKHR5cGVvZiBfZSA9
PSAidW5kZWZpbmVkIiA/ICJhbiBleGNlcHRpb24iIDogX2V2KSArICIuIFdhcyAiICsgX2F2ICsg
Ii4iKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVOb3coYSwgZGVsdGEpCi17Ci0gICAgLy8gUmln
aHQgbm93LCBWOCBhbmQgQ2hyb21pdW0gLyBCbGluayB1c2UgdHdvIGRpZmZlcmVudCBjbG9jawot
ICAgIC8vIGltcGxlbWVudGF0aW9ucy4gT24gV2luZG93cywgdGhlIGltcGxlbWVudGF0aW9ucyBh
cmUgbm9uLXRyaXZpYWwgYW5kIGNhbgotICAgIC8vIGJlIHNsaWdodGx5IG91dCBvZiBzeW5jLiBU
aGUgZGVsdGEgaXMgaW50ZW5kZWQgdG8gY29tcGVuc2F0ZSBmb3IgdGhhdC4KLSAgICAvLwotICAg
IC8vIEZJWE1FOiByZWNvbnNpZGVyIHRoaXMgd2hlbiB0aGUgVjggYW5kIEJsaW5rIGNsb2NrcyBn
ZXQgdW5pZmllZCwgc2VlIGh0dHA6Ly9jcmJ1Zy5jb20vMzI0MTEwCi0gICAgaWYgKGRlbHRhID09
PSB1bmRlZmluZWQpCi0gICAgICAgIGRlbHRhID0gMTAwMDsKLQotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDsgKytpKSB7Ci0gICAgICAgIHZhciBzdGFydERhdGUgPSBEYXRlLm5vdygpOwot
ICAgICAgICB2YXIgYXYgPSBldmFsKGEpOwotICAgICAgICB2YXIgZGF0ZSA9IGF2LnZhbHVlT2Yo
KTsKLSAgICAgICAgdmFyIGVuZERhdGUgPSBEYXRlLm5vdygpOwotCi0gICAgICAgIC8vIE9uIHNv
bWUgb2NjYXNpb25zIHN1Y2ggYXMgTlRQIHVwZGF0ZXMsIHRoZSBjdXJyZW50IHRpbWUgY2FuIGdv
Ci0gICAgICAgIC8vIGJhY2t3YXJkcy4gVGhpcyBzaG91bGQgb25seSBoYXBwZW4gcmFyZWx5LCBz
byB3ZSBjYW4gZ2V0IGF3YXkgd2l0aAotICAgICAgICAvLyByZXRyeWluZyB0aGUgdGVzdCBhIGZl
dyB0aW1lcyBpZiB3ZSBkZXRlY3QgdGhlIHRpbWUgZ29pbmcgYmFja3dhcmRzLgotICAgICAgICBp
ZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IGlmICh0eXBlb2YgZGF0ZSAhPT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQo
YSArICIgaXMgbm90IGEgbnVtYmVyIG9yIGEgRGF0ZS4gR290ICIgKyBhdik7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRhdGUgPCBzdGFydERhdGUgLSBkZWx0
YSkgewotICAgICAgICAgICAgdGVzdEZhaWxlZChhICsgIiBpcyBub3QgdGhlIGN1cmVudCB0aW1l
LiBHb3QgIiArIGF2ICsgIiB3aGljaCBpcyAiICsgKHN0YXJ0RGF0ZSAtIGRhdGUpIC8gMTAwMCAr
ICIgc2Vjb25kcyBpbiB0aGUgcGFzdC4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBpZiAoZGF0ZSA+IGVuZERhdGUgKyBkZWx0YSkgewotICAgICAgICAgICAgdGVz
dEZhaWxlZChhICsgIiBpcyBub3QgdGhlIGN1cnJlbnQgdGltZS4gR290ICIgKyBhdiArICIgd2hp
Y2ggaXMgIiArIChkYXRlIC0gZW5kRGF0ZSkgLyAxMDAwICsgIiBzZWNvbmRzIGluIHRoZSBmdXR1
cmUuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB0ZXN0UGFz
c2VkKGEgKyAiIGlzIGVxdWl2YWxlbnQgdG8gRGF0ZS5ub3coKS4iKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICB0ZXN0RmFpbGVkKGEgKyAiIGNhbm5vdCBiZSB0ZXN0ZWQgYWdhaW5zdCB0
aGUgY3VycmVudCB0aW1lLiBUaGUgY2xvY2sgaXMgZ29pbmcgYmFja3dhcmRzIHRvbyBvZnRlbi4i
KTsKLX0KLQotZnVuY3Rpb24gZXhwZWN0RXJyb3IoKQotewotICAgIGlmIChleHBlY3RpbmdFcnJv
cikgewotICAgICAgICB0ZXN0RmFpbGVkKCJzaG91bGRIYXZlRXJyb3IoKSBjYWxsZWQgdHdpY2Ug
YmVmb3JlIGFuIGVycm9yIG9jY3VycmVkISIpOwotICAgIH0KLSAgICBleHBlY3RpbmdFcnJvciA9
IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZFJlamVjdChfYSwgX21lc3NhZ2UpCi17Ci0gICAg
cmV0dXJuIHNob3VsZFJlamVjdFdpdGhFcnJvck5hbWUoX2EsIHVuZGVmaW5lZCwgX21lc3NhZ2Up
OwotfQotCi1mdW5jdGlvbiBzaG91bGRSZWplY3RXaXRoRXJyb3JOYW1lKF9hLCBfbmFtZSwgX21l
c3NhZ2UpCi17Ci0gICAgdmFyIF9leGNlcHRpb247Ci0gICAgdmFyIF9hdjsKLSAgICB0cnkgewot
ICAgICAgICBfYXYgPSB0eXBlb2YgX2EgPT0gImZ1bmN0aW9uIiA/IF9hKCkgOiBldmFsKF9hKTsK
LSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoKF9tZXNzYWdlID8gX21lc3Nh
Z2UgOiBfYSkgKyAiIHNob3VsZCBub3QgdGhyb3cgZXhjZXB0aW9uLiBUaHJldyBleGNlcHRpb24g
IiArIGUgKyAiLiIpOwotICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIF9hdi50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICB0ZXN0RmFp
bGVkKChfbWVzc2FnZSA/IF9tZXNzYWdlIDogX2EpICsgIiBzaG91bGQgcmVqZWN0IHByb21pc2Uu
IFJlc29sdmVkIHdpdGggIiArIHJlc3VsdCArICIuIik7Ci0gICAgfSwgZnVuY3Rpb24oZXJyb3Ip
IHsKLSAgICAgICAgaWYgKF9uYW1lID09PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgIHRlc3RQ
YXNzZWQoKF9tZXNzYWdlID8gX21lc3NhZ2UgOiBfYSkgKyAiIHJlamVjdGVkIHByb21pc2UuIik7
Ci0gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JbJ25hbWUnXSA9PT0gX25hbWUpIHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIGV4dHJhIHNwYWNlIGFuZCAnLicgKERPTUV4Y2VwdGlv
biBkZXNjcmlwdGlvbnMgYWxyZWFkeSBlbmQgd2l0aCBwZXJpb2RzKSB0aGVuIHJlYmFzZSB0ZXN0
cy4KLSAgICAgICAgICAgIHRlc3RQYXNzZWQoKF9tZXNzYWdlID8gX21lc3NhZ2UgOiBfYSkgKyAi
IHJlamVjdGVkIHByb21pc2UgIHdpdGggIiArIGVycm9yICsgIi4iKTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKChfbWVzc2FnZSA/IF9tZXNzYWdlIDogX2EpICsgIiBz
aG91bGQgcmVqZWN0IHByb21pc2Ugd2l0aCAiICsgX25hbWUgKyAiLiBSZWplY3RlZCB3aXRoICIg
KyBlcnJvclsnbmFtZSddICsgIiBpbnN0ZWFkLiIpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBz
aG91bGRUaHJvd0Vycm9yTmFtZShfYSwgX25hbWUpCi17Ci0gICAgdmFyIF9leGNlcHRpb247Ci0g
ICAgdHJ5IHsKLSAgICAgICAgdHlwZW9mIF9hID09ICJmdW5jdGlvbiIgPyBfYSgpIDogZXZhbChf
YSk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBfZXhjZXB0aW9uID0gZTsKLSAgICB9Ci0K
LSAgICBpZiAoX2V4Y2VwdGlvbikgewotICAgICAgICBpZiAoX2V4Y2VwdGlvbi5uYW1lID09IF9u
YW1lKQotICAgICAgICAgICAgdGVzdFBhc3NlZChfYSArICIgdGhyZXcgZXhjZXB0aW9uICIgKyBf
ZXhjZXB0aW9uICsgIi4iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZChf
YSArICIgc2hvdWxkIHRocm93IGEgIiArIF9uYW1lICsgIi4gVGhyZXcgYSAiICsgX2V4Y2VwdGlv
bi5uYW1lICsgIi4iKTsKLSAgICB9IGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hv
dWxkIHRocm93IGEgIiArIF9uYW1lICsgIi4gRGlkIG5vdCB0aHJvdy4iKTsKLX0KLQotZnVuY3Rp
b24gc2hvdWxkSGF2ZUhhZEVycm9yKG1lc3NhZ2UpCi17Ci0gICAgaWYgKGV4cGVjdGluZ0Vycm9y
KSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIk5vIGVycm9yIHRocm93biBiZXR3ZWVuIGV4cGVjdEVy
cm9yKCkgYW5kIHNob3VsZEhhdmVIYWRFcnJvcigpIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoZXhwZWN0ZWRFcnJvck1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFtZXNzYWdl
KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiR290IGV4cGVjdGVkIGVycm9yIik7Ci0gICAgICAg
IGVsc2UgaWYgKGV4cGVjdGVkRXJyb3JNZXNzYWdlLmluZGV4T2YobWVzc2FnZSkgIT09IC0xKQot
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiR290IGV4cGVjdGVkIGVycm9yOiAnIiArIG1lc3NhZ2Ug
KyAiJyIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVk
IGVycm9yICciICsgbWVzc2FnZSArICInIik7Ci0gICAgICAgIGV4cGVjdGVkRXJyb3JNZXNzYWdl
ID0gdW5kZWZpbmVkOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdGVzdEZhaWxlZCgi
ZXhwZWN0RXJyb3IoKSBub3QgY2FsbGVkIGJlZm9yZSBzaG91bGRIYXZlSGFkRXJyb3IoKSIpOwot
fQotCi1mdW5jdGlvbiBnYygpIHsKLSAgICBpZiAodHlwZW9mIEdDQ29udHJvbGxlciAhPT0gInVu
ZGVmaW5lZCIpCi0gICAgICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIHZhciBnY1JlYyA9IGZ1bmN0aW9uIChuKSB7Ci0gICAgICAgICAgICBpZiAobiA8IDEp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHt9OwotICAgICAgICAgICAgdmFyIHRlbXAgPSB7aTog
ImFiIiArIGkgKyAoaSAvIDEwMDAwMCl9OwotICAgICAgICAgICAgdGVtcCArPSAiZm9vIjsKLSAg
ICAgICAgICAgIGdjUmVjKG4tMSk7Ci0gICAgICAgIH07Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDsgaSsrKQotICAgICAgICAgICAgZ2NSZWMoMTApOwotICAgIH0KLX0KLQotZnVu
Y3Rpb24gbWlub3JHQygpIHsKLSAgICBpZiAodHlwZW9mIEdDQ29udHJvbGxlciAhPT0gInVuZGVm
aW5lZCIpCi0gICAgICAgIEdDQ29udHJvbGxlci5taW5vckNvbGxlY3QoKTsKLSAgICBlbHNlCi0g
ICAgICAgIHRlc3RGYWlsZWQoIk1pbm9yIEdDIGlzIGF2YWlsYWJsZSBvbmx5IHdoZW4geW91IGVu
YWJsZSB0aGUgLS1leHBvc2UtZ2Mgb3B0aW9uIGluIFY4LiIpOwotfQotCi1mdW5jdGlvbiBpc1N1
Y2Nlc3NmdWxseVBhcnNlZCgpCi17Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFuZCBvbmx5
IHJlcG9ydCB1bmV4cGVjdGVkIHN5bnRheCBlcnJvcnMuCi0gICAgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gIXVuZXhwZWN0ZWRFcnJvck1lc3NhZ2U7Ci0gICAgc2hvdWxkQmVUcnVlKCJzdWNjZXNzZnVs
bHlQYXJzZWQiKTsKLSAgICBpZiAoZGlkRmFpbFNvbWVUZXN0cykKLSAgICAgICAgZGVidWcoIlNv
bWUgdGVzdHMgZmFpbGVkLiIpOwotICAgIGRlYnVnKCc8YnIgLz48c3BhbiBjbGFzcz0icGFzcyI+
VEVTVCBDT01QTEVURTwvc3Bhbj4nKTsKLX0KLQotLy8gSXQncyBwb3NzaWJsZSBmb3IgYW4gYXN5
bmMgdGVzdCB0byBjYWxsIGZpbmlzaEpTVGVzdCgpIGJlZm9yZSBqcy10ZXN0LXBvc3QuanMKLS8v
IGhhcyBiZWVuIHBhcnNlZC4KLWZ1bmN0aW9uIGZpbmlzaEpTVGVzdCgpCi17Ci0gICAgd2FzRmlu
aXNoSlNUZXN0Q2FsbGVkID0gdHJ1ZTsKLSAgICBpZiAoIXNlbGYud2FzUG9zdFRlc3RTY3JpcHRQ
YXJzZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwotICAg
IG1vdmVGb3JlaWduT2JqZWN0VG9Ub3BJZk5lZWRlZCgpOwotICAgIGlmIChzZWxmLmpzVGVzdElz
QXN5bmMgJiYgc2VsZi50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLX0KLQotZnVuY3Rpb24gYXJlT2JqZWN0c0VxdWFsKGEsIGIpIHsKLQlmb3IgKHZhciBwcm9w
ZXJ0eSBpbiBhKSB7Ci0JCWlmICghYi5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpCi0JCQlyZXR1
cm4gZmFsc2U7Ci0KLQkJc3dpdGNoICh0eXBlb2YgKGFbcHJvcGVydHldKSkgewotCQljYXNlICdm
dW5jdGlvbic6Ci0JCQlpZiAodHlwZW9mIGJbcHJvcGVydHldID09ICd1bmRlZmluZWQnIHx8IGFb
cHJvcGVydHldLnRvU3RyaW5nKCkgIT0gYltwcm9wZXJ0eV0udG9TdHJpbmcoKSkKLQkJCQlyZXR1
cm4gZmFsc2U7Ci0JCQlicmVhazsKLQkJY2FzZSAnb2JqZWN0JzoKLQkJCWlmICghYXJlT2JqZWN0
c0VxdWFsKGEsIGIpKQotCQkJCXJldHVybiBmYWxzZTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0Ogot
CQkJaWYgKGFbcHJvcGVydHldICE9IGJbcHJvcGVydHldKQotCQkJCXJldHVybiBmYWxzZTsKLQkJ
fQotCX0KLSAKLQlmb3IgKHZhciBwcm9wZXJ0eSBpbiBiKSB7Ci0JCWlmICghYS5oYXNPd25Qcm9w
ZXJ0eShwcm9wZXJ0eSkpCi0JCQlyZXR1cm4gZmFsc2U7Ci0JfQotCQotCXJldHVybiB0cnVlOwot
fTsKLQotZnVuY3Rpb24gc3RhcnRXb3JrZXIodGVzdFNjcmlwdFVSTCkKLXsKLSAgICBzZWxmLmpz
VGVzdElzQXN5bmMgPSB0cnVlOwotICAgIGRlYnVnKCdTdGFydGluZyB3b3JrZXI6ICcgKyB0ZXN0
U2NyaXB0VVJMKTsKLSAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcih0ZXN0U2NyaXB0VVJMKTsK
LSAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB2
YXIgd29ya2VyUHJlZml4ID0gIltXb3JrZXJdICI7Ci0gICAgICAgIGlmIChldmVudC5kYXRhLmxl
bmd0aCA8IDUgfHwgZXZlbnQuZGF0YS5jaGFyQXQoNCkgIT0gJzonKSB7Ci0gICAgICAgICAgZGVi
dWcod29ya2VyUHJlZml4ICsgZXZlbnQuZGF0YSk7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIHZhciBjb2RlID0gZXZlbnQuZGF0YS5zdWJzdHJpbmcoMCwgNCk7Ci0gICAg
ICAgIHZhciBwYXlsb2FkID0gd29ya2VyUHJlZml4ICsgZXZlbnQuZGF0YS5zdWJzdHJpbmcoNSk7
Ci0gICAgICAgIGlmIChjb2RlID09ICJQQVNTIikKLSAgICAgICAgICAgIHRlc3RQYXNzZWQocGF5
bG9hZCk7Ci0gICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIkZBSUwiKQotICAgICAgICAgICAgdGVz
dEZhaWxlZChwYXlsb2FkKTsKLSAgICAgICAgZWxzZSBpZiAoY29kZSA9PSAiREVTQyIpCi0gICAg
ICAgICAgICBkZXNjcmlwdGlvbihwYXlsb2FkKTsKLSAgICAgICAgZWxzZSBpZiAoY29kZSA9PSAi
RE9ORSIpCi0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZGVidWcod29ya2VyUHJlZml4ICsgZXZlbnQuZGF0YSk7Ci0gICAgfTsKLQotICAgIHdv
cmtlci5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBkZWJ1ZygnR290
IGVycm9yIGZyb20gd29ya2VyOiAnICsgZXZlbnQubWVzc2FnZSk7Ci0gICAgICAgIGZpbmlzaEpT
VGVzdCgpOwotICAgIH07Ci0KLSAgICByZXR1cm4gd29ya2VyOwotfQotCi1pZiAoaXNXb3JrZXIo
KSkgewotICAgIHZhciB3b3JrZXJQb3J0ID0gc2VsZjsKLSAgICBkZXNjcmlwdGlvbiA9IGZ1bmN0
aW9uKG1zZywgcXVpZXQpIHsKLSAgICAgICAgd29ya2VyUG9ydC5wb3N0TWVzc2FnZSgnREVTQzon
ICsgbXNnKTsKLSAgICB9OwotICAgIHRlc3RGYWlsZWQgPSBmdW5jdGlvbihtc2cpIHsKLSAgICAg
ICAgd29ya2VyUG9ydC5wb3N0TWVzc2FnZSgnRkFJTDonICsgbXNnKTsKLSAgICB9OwotICAgIHRl
c3RQYXNzZWQgPSBmdW5jdGlvbihtc2cpIHsKLSAgICAgICAgd29ya2VyUG9ydC5wb3N0TWVzc2Fn
ZSgnUEFTUzonICsgbXNnKTsKLSAgICB9OwotICAgIGZpbmlzaEpTVGVzdCA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICB3b3JrZXJQb3J0LnBvc3RNZXNzYWdlKCdET05FOicpOwotICAgIH07Ci0gICAg
ZGVidWcgPSBmdW5jdGlvbihtc2cpIHsKLSAgICAgICAgd29ya2VyUG9ydC5wb3N0TWVzc2FnZSht
c2cpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGRvd25ncmFkZVJlZmVycmVyQ2FsbGJhY2socG9s
aWN5LCBob3N0KSB7Ci0gICAgbGV0IHNjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzY3JpcHQiKTsKLSAgICBzY3JpcHRFbGVtZW50LnNyYyA9ICJodHRwOi8vIi5jb25jYXQo
aG9zdCwgIjo4MDAwL3JlZmVycmVyLXBvbGljeS9yZXNvdXJjZXMvc2NyaXB0LnB5Iik7Ci0gICAg
c2NyaXB0RWxlbWVudC5yZWZlcnJlclBvbGljeSA9IHBvbGljeTsKLSAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKHNjcmlwdEVsZW1lbnQpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL21hZ25pdHVkZS1wZXJmLmpzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL21hZ25p
dHVkZS1wZXJmLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjg2YTQ3NmE2NTQ0
NDgwZjZiYzNkOTRjNzhiMmUyNWE3MDYwYjc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9tYWduaXR1ZGUtcGVyZi5q
cworKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi0vLyBNYWduaXR1ZGUgZ2l2ZXMgYSBi
ZXN0IGd1ZXNzIGVzdGltYXRlIG9mIHRoZSBydW50aW1lIG9mIGEgZnVuY3Rpb24uCi0vLyBNYWdu
aXR1ZGUucnVuIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaW4gYSBzaW5nbGUgdGVzdCBp
ZiBkZXNpcmVkLgotLy8KLS8vIFVzYWdlOgotLy8gPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9t
YWduaXR1ZGUtcGVyZi5qcyI+PC9zY3JpcHQ+Ci0vLyA8c2NyaXB0PgotLy8gLi4uCi0vLyBNYWdu
aXR1ZGUucnVuKHNldHVwLCB0ZXN0LCBleHBlY3RlZCkKLS8vIDwvc2NyaXB0PgotLy8KLS8vIC1z
ZXR1cCBpcyB0aGUgZnVuY3Rpb24gdG8gcnVuIG9uY2UgYmVmb3JlIHRoZSB0ZXN0LWxvb3AuIEl0
IHRha2VzIGEgbWFnbml0dWRlIGFyZ3VtZW50Ci0vLyB0aGF0IGlzIHRoZSB2YWx1ZSBvZiAibiIu
Ci0vLyAtdGVzdCBpcyB0aGUgY29kZSB3aG9zZSBydW50aW1lIGlzIGJlaW5nIHRlc3RzLiBJdCBh
bHNvIHRha2VzIGEgbWFnbml0dWRlIGFyZ3VtZW50LgotLy8gLWV4cGVjdGVkIGlzIG9uZSBvZiB0
aGUgcnVuLXRpbWUgY29uc3RhbnRzIGxpc3RlZCBiZWxvdyAoZS5nLiBNYWduaXR1ZGUuQ09OU1RB
TlQpLgotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci0KLS8vIE5hbWVzcGFjZS4KLXZhciBNYWduaXR1ZGUgPSB7fTsKLQotLy8gVGhlIGRlc2Ny
aXB0aW9uIG9mIHdoYXQgdGhpcyB0ZXN0IGlzIHRlc3RpbmcuIEdldHMgcHJlcGVuZGVkIHRvIHRo
ZSBkdW1wZWQgbWFya3VwLgotTWFnbml0dWRlLmRlc2NyaXB0aW9uID0gZnVuY3Rpb24oZGVzY3Jp
cHRpb24pCi17Ci0gICAgTWFnbml0dWRlLl9sb2coZGVzY3JpcHRpb24pOwotfQotCi1NYWduaXR1
ZGUubnVtUG9pbnRzID0gODsKLU1hZ25pdHVkZS5taWxsaXNlY29uZHNQZXJJdGVyYXRpb24gPSAy
NTsKLU1hZ25pdHVkZS5pbml0aWFsTWFnbml0dWRlID0gMTsKLQotTWFnbml0dWRlLkNPTlNUQU5U
ID0gIk8oMSkiOwotTWFnbml0dWRlLkxJTkVBUiA9ICJPKG4pIjsKLU1hZ25pdHVkZS5MT0dBUklU
SE1JQyA9ICJPKGxvZyBuKSI7Ci1NYWduaXR1ZGUuUE9MWU5PTUlBTCA9ICI+PU8obl4yKSI7Ci1N
YWduaXR1ZGUuSU5ERVRFUk1JTkFURSA9ICJpbmRldGVybWluYXRlIHJlc3VsdCI7Ci0KLU1hZ25p
dHVkZS5fb3JkZXIgPSB7fQotTWFnbml0dWRlLl9vcmRlcltNYWduaXR1ZGUuQ09OU1RBTlRdID0g
MTsKLU1hZ25pdHVkZS5fb3JkZXJbTWFnbml0dWRlLkxJTkVBUl0gPSAyOwotTWFnbml0dWRlLl9v
cmRlcltNYWduaXR1ZGUuTE9HQVJJVEhNSUNdID0gMzsKLU1hZ25pdHVkZS5fb3JkZXJbTWFnbml0
dWRlLlBPTFlOT01JQUxdID0gNDsKLU1hZ25pdHVkZS5fb3JkZXJbTWFnbml0dWRlLklOREVURVJN
SU5BVEVdID0gNTsKLQotTWFnbml0dWRlLl9sb2cgPSBmdW5jdGlvbihtc2cpCi17Ci0gICAgaWYg
KCFNYWduaXR1ZGUuX2NvbnRhaW5lcikKLSAgICAgICAgTWFnbml0dWRlLl9jb250YWluZXIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKLSAgICBNYWduaXR1ZGUuX2NvbnRhaW5lci5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAnXG4nKSk7Ci19Ci0KLU1h
Z25pdHVkZS5fZGVidWcgPSBmdW5jdGlvbihtc2cpCi17Ci0gICAgTWFnbml0dWRlLl9kZWJ1Z0xv
ZyArPSBtc2cgKyAnXG4nOwotfQotCi1NYWduaXR1ZGUucnVuID0gZnVuY3Rpb24oc2V0dXAsIHRl
c3QsIGV4cGVjdGVkKQotewotICAgIE1hZ25pdHVkZS5fZGVidWdMb2cgPSAiXG5ERUJVRyBMT0c6
XG4iOwotCi0gICAgTWFnbml0dWRlLl9tYWduaXR1ZGVzID0gW107Ci0gICAgZm9yICh2YXIgaSA9
IE1hZ25pdHVkZS5pbml0aWFsTWFnbml0dWRlOyBpIDwgTWFnbml0dWRlLm51bVBvaW50cyArIE1h
Z25pdHVkZS5pbml0aWFsTWFnbml0dWRlOyBpKyspCi0gICAgICAgIE1hZ25pdHVkZS5fbWFnbml0
dWRlcy5wdXNoKE1hdGgucG93KDIsIGkpKTsKLQotICAgIHZhciBudW1UcmllcyA9IDM7Ci0gICAg
TWFnbml0dWRlLl9ydW4oc2V0dXAsIHRlc3QsIGV4cGVjdGVkLCBudW1Ucmllcyk7Ci19Ci0KLU1h
Z25pdHVkZS5fcnVuID0gZnVuY3Rpb24oc2V0dXAsIHRlc3QsIGV4cGVjdGVkLCBudW1Ucmllc0xl
ZnQpCi17Ci0gICAgTWFnbml0dWRlLl9pdGVyYXRpb25zID0ge307Ci0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBNYWduaXR1ZGUuX21hZ25pdHVkZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdmFy
IG1hZ25pdHVkZSA9IE1hZ25pdHVkZS5fbWFnbml0dWRlc1tpXTsKLSAgICAgICAgTWFnbml0dWRl
Ll9pdGVyYXRpb25zW21hZ25pdHVkZV0gPSBNYWduaXR1ZGUuX3J1bkl0ZXJhdGlvbihzZXR1cCwg
dGVzdCwgbWFnbml0dWRlKTsKLSAgICB9Ci0KLSAgICBNYWduaXR1ZGUuX2xvZ0l0ZXJhdGlvbklu
Zm8oKTsKLQotICAgIG51bVRyaWVzTGVmdC0tOwotICAgIHZhciBiaWdPID0gTWFnbml0dWRlLl9i
aWdPR3Vlc3MoKTsKLSAgICB2YXIgcGFzc2VkID0gTWFnbml0dWRlLl9vcmRlcltiaWdPXSA8PSBN
YWduaXR1ZGUuX29yZGVyW2V4cGVjdGVkXTsKLSAgICBpZiAocGFzc2VkIHx8IG51bVRyaWVzTGVm
dCA8IDEpIHsKLSAgICAgICAgTWFnbml0dWRlLl9sb2cocGFzc2VkID8gIlBBU1MiIDogIkZBSUw6
IGdvdCAiICsgYmlnTyArICIgZXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKLQotICAgICAgICAvLyBC
eSBkZWZhdWx0IGRvbid0IGxvZyBkZXRhaWxlZCBpbmZvcm1hdGlvbiB0byBsYXlvdXQgdGVzdCBy
ZXN1bHRzIHRvIGtlZXAgZXhwZWN0ZWQgcmVzdWx0cwotICAgICAgICAvLyBjb25zaXN0ZW50IGZy
b20gcnVuIHRvIHJ1bi4KLSAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhcGFzc2Vk
KQotICAgICAgICAgICAgTWFnbml0dWRlLl9sb2coTWFnbml0dWRlLl9kZWJ1Z0xvZyk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgTWFnbml0dWRlLl9kZWJ1ZygibnVtVHJpZXNMZWZ0OiAiICsgbnVt
VHJpZXNMZWZ0KTsKLSAgICAgICAgYXJndW1lbnRzLmNhbGxlZShzZXR1cCwgdGVzdCwgZXhwZWN0
ZWQsIG51bVRyaWVzTGVmdCk7Ci0gICAgfQotfQotCi1NYWduaXR1ZGUuX3JTcXVhcmVkID0gZnVu
Y3Rpb24ob3B0X3hUcmFuc2Zvcm0sIG9wdF95VHJhbnNmb3JtKQotewotICAgIC8vIEltcGxlbWVu
dCBodHRwOi8vd3d3LmVhc3ljYWxjdWxhdGlvbi5jb20vc3RhdGlzdGljcy9sZWFybi1jb3JyZWxh
dGlvbi5waHAuCi0gICAgLy8geCA9IG1hZ25pdHVkZQotICAgIC8vIHkgPSBpdGVyYXRpb25zCi0g
ICAgdmFyIHN1bVggPSAwOwotICAgIHZhciBzdW1ZID0gMDsKLSAgICB2YXIgc3VtWFNxdWFyZWQg
PSAwOwotICAgIHZhciBzdW1ZU3F1YXJlZCA9IDA7Ci0gICAgdmFyIHN1bVhUaW1lc1kgPSAwOwot
Ci0gICAgdmFyIG51bVBvaW50cyA9IE1hZ25pdHVkZS5fbWFnbml0dWRlcy5sZW5ndGg7Ci0KLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVBvaW50czsgaSsrKSB7Ci0gICAgICAgIHZhciB4ID0g
TWFnbml0dWRlLl9tYWduaXR1ZGVzW2ldOwotICAgICAgICBpZiAob3B0X3hUcmFuc2Zvcm0pCi0g
ICAgICAgICAgICB4ID0gb3B0X3hUcmFuc2Zvcm0oeCk7Ci0KLSAgICAgICAgdmFyIHkgPSBNYWdu
aXR1ZGUubWlsbGlzZWNvbmRzUGVySXRlcmF0aW9uIC8gTWFnbml0dWRlLl9pdGVyYXRpb25zW01h
Z25pdHVkZS5fbWFnbml0dWRlc1tpXV07Ci0gICAgICAgIGlmIChvcHRfeVRyYW5zZm9ybSkKLSAg
ICAgICAgICAgIHkgPSBvcHRfeVRyYW5zZm9ybSh5KTsKLQotICAgICAgICBzdW1YICs9IHg7Ci0g
ICAgICAgIHN1bVkgKz0geTsKLSAgICAgICAgc3VtWFNxdWFyZWQgKz0geCAqIHg7Ci0gICAgICAg
IHN1bVlTcXVhcmVkICs9IHkgKiB5OwotICAgICAgICBzdW1YVGltZXNZICs9IHggKiB5OwotICAg
IH0KLQotICAgIHZhciByID0gKG51bVBvaW50cyAqIHN1bVhUaW1lc1kgLSBzdW1YICogc3VtWSkg
LwotICAgICAgICBNYXRoLnNxcnQoKG51bVBvaW50cyAqIHN1bVhTcXVhcmVkIC0gc3VtWCAqIHN1
bVgpICoKLSAgICAgICAgICAgICAgICAgIChudW1Qb2ludHMgKiBzdW1ZU3F1YXJlZCAtIHN1bVkg
KiBzdW1ZKSk7Ci0KLSAgICBpZiAoaXNOYU4ocikgfHwgciA9PSBNYXRoLkluZmluaXR5KQotICAg
ICAgICByID0gMDsKLQotICAgIHJTcXVhcmVkID0gciAqIHI7Ci0KLSAgICB2YXIgc2xvcGUgPSAo
bnVtUG9pbnRzICogc3VtWFRpbWVzWSAtIHN1bVggKiBzdW1ZKSAvCi0gICAgICAgIChudW1Qb2lu
dHMgKiBzdW1YU3F1YXJlZCAtIHN1bVggKiBzdW1YKTsKLSAgICB2YXIgaW50ZXJjZXB0ID0gc3Vt
WSAvIG51bVBvaW50cyAtIHNsb3BlICogc3VtWCAvIG51bVBvaW50czsKLSAgICBNYWduaXR1ZGUu
X2RlYnVnKCJudW1Qb2ludHMgIiArIG51bVBvaW50cyArICIgc2xvcGUgIiArIHNsb3BlICsgIiBp
bnRlcmNlcHQgIiArIGludGVyY2VwdCArICIgclNxdWFyZWQgIiArIHJTcXVhcmVkKTsKLQotICAg
IHJldHVybiByU3F1YXJlZDsKLX0KLQotTWFnbml0dWRlLl9sb2dJdGVyYXRpb25JbmZvID0gZnVu
Y3Rpb24oKQotewotICAgIHZhciBpdGVyYXRpb25zQXJyYXkgPSBbXTsKLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IE1hZ25pdHVkZS5fbWFnbml0dWRlcy5sZW5ndGg7IGkrKykgewotICAgICAgICB2
YXIgbWFnbml0dWRlID0gTWFnbml0dWRlLl9tYWduaXR1ZGVzW2ldOwotICAgICAgICB2YXIgaXRl
cmF0aW9ucyA9IE1hZ25pdHVkZS5faXRlcmF0aW9uc1ttYWduaXR1ZGVdOwotICAgICAgICBpdGVy
YXRpb25zQXJyYXkucHVzaChpdGVyYXRpb25zKTsKLSAgICB9Ci0KLSAgICAvLyBQcmludCBvdXQg
dGhlIG1hZ25pdHVkZXMvYXJyYXlzIGluIENTViB0byBhZmZvcmQgZWFzeSBjb3B5LXBhc3RlIHRv
IGEgY2hhcnRpbmcgYXBwbGljYXRpb24uCi0gICAgTWFnbml0dWRlLl9kZWJ1ZygibWFnbml0dWRl
czogIiArIE1hZ25pdHVkZS5fbWFnbml0dWRlcy5qb2luKCcsJykpOwotICAgIE1hZ25pdHVkZS5f
ZGVidWcoIml0ZXJhdGlvbnM6ICIgKyBpdGVyYXRpb25zQXJyYXkuam9pbignLCcpKTsKLX0KLQot
TWFnbml0dWRlLl9iaWdPR3Vlc3MgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIHJTcXVhcmVkID0g
TWFnbml0dWRlLl9yU3F1YXJlZCgpOwotICAgIHZhciByU3F1YXJlZFhMb2cgPSBNYWduaXR1ZGUu
X3JTcXVhcmVkKE1hdGgubG9nKTsKLSAgICB2YXIgclNxdWFyZWRYWUxvZyA9IE1hZ25pdHVkZS5f
clNxdWFyZWQoTWF0aC5sb2csIE1hdGgubG9nKTsKLSAgICBNYWduaXR1ZGUuX2RlYnVnKCJyU3F1
YXJlZCAiICsgclNxdWFyZWQgKyAiIHJTcXVhcmVkWExvZyAiICsgclNxdWFyZWRYTG9nICsgIiBy
U3F1YXJlZFhZTG9nICIgKyByU3F1YXJlZFhZTG9nKTsKLQotICAgIHZhciByU3F1YXJlZE1heCA9
IE1hdGgubWF4KHJTcXVhcmVkLCByU3F1YXJlZFhMb2csIHJTcXVhcmVkWFlMb2cpOwotCi0gICAg
dmFyIGJpZ08gPSBNYWduaXR1ZGUuSU5ERVRFUk1JTkFURTsKLQotICAgIC8vIEZJWE1FOiBUaGVz
ZSBudW1iZXJzIHdlcmUgY2hvc2VuIGFyYml0cmFyaWx5LgotICAgIC8vIEFyZSB0aGVyZSBhIGJl
dHRlciB2YWx1ZSB0byBjaGVjayBhZ2FpbnN0PyBEbyB3ZSBuZWVkIHRvIGNoZWNrIHJTcXVhcmVk
TWF4PwotICAgIGlmIChyU3F1YXJlZCA8IDAuOCAmJiByU3F1YXJlZE1heCA8IDAuOSkKLSAgICAg
ICAgYmlnTyA9IE1hZ25pdHVkZS5DT05TVEFOVDsKLSAgICBlbHNlIGlmIChyU3F1YXJlZE1heCA+
IDAuOSkgewotICAgICAgICBpZiAoclNxdWFyZWQgPT0gclNxdWFyZWRNYXgpCi0gICAgICAgICAg
ICBiaWdPID0gTWFnbml0dWRlLkxJTkVBUjsKLSAgICAgICAgZWxzZSBpZiAoclNxdWFyZWRYTG9n
ID09IHJTcXVhcmVkTWF4KQotICAgICAgICAgICAgYmlnTyA9IE1hZ25pdHVkZS5MT0dBUklUSE1J
QzsKLSAgICAgICAgZWxzZSBpZiAoclNxdWFyZWRYWUxvZyA9PSByU3F1YXJlZE1heCkKLSAgICAg
ICAgICAgIGJpZ08gPSBNYWduaXR1ZGUuUE9MWU5PTUlBTDsKLSAgICB9Ci0KLSAgICByZXR1cm4g
YmlnTzsKLX0KLQotTWFnbml0dWRlLl9ydW5JdGVyYXRpb24gPSBmdW5jdGlvbihzZXR1cCwgdGVz
dCwgbWFnbml0dWRlKQotewotICAgIHNldHVwKG1hZ25pdHVkZSk7Ci0KLSAgICB2YXIgZGVidWdT
dHIgPSAncnVuIGl0ZXJhdGlvbi4gbWFnbml0dWRlICcgKyBtYWduaXR1ZGU7Ci0gICAgaWYgKHdp
bmRvdy5HQ0NvbnRyb2xsZXIpIHsKLSAgICAgICAgaWYgKEdDQ29udHJvbGxlci5nZXRKU09iamVj
dENvdW50KQotICAgICAgICAgICAgZGVidWdTdHIgKz0gIiBqc09iamVjdENvdW50QmVmb3JlICIg
KyBHQ0NvbnRyb2xsZXIuZ2V0SlNPYmplY3RDb3VudCgpOwotCi0gICAgICAgIC8vIERvIGEgZ2Mg
dG8gcmVkdWNlIGxpa2VsaWhvb2Qgb2YgZ2MgZHVyaW5nIHRoZSB0ZXN0IHJ1bi4KLSAgICAgICAg
Ly8gRG8gbXVsdGlwbGUgZ2MncyBmb3IgVjggdG8gY2xlYXIgRE9NIHdyYXBwZXJzLgotICAgICAg
ICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwotICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgp
OwotICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwotCi0gICAgICAgIGlmIChHQ0NvbnRy
b2xsZXIuZ2V0SlNPYmplY3RDb3VudCkKLSAgICAgICAgICAgIGRlYnVnU3RyICs9ICIganNPYmpl
Y3RDb3VudEFmdGVyICIgKyBHQ0NvbnRyb2xsZXIuZ2V0SlNPYmplY3RDb3VudCgpOwotICAgIH0K
LQotICAgIE1hZ25pdHVkZS5fZGVidWcoZGVidWdTdHIpOwotCi0gICAgdmFyIGl0ZXJhdGlvbnMg
PSAwOwotICAgIHZhciBub3dGdW5jdGlvbiA9IHdpbmRvdy5wZXJmb3JtYW5jZSAmJiB3aW5kb3cu
cGVyZm9ybWFuY2Uubm93ID8gd2luZG93LnBlcmZvcm1hbmNlLm5vdy5iaW5kKHdpbmRvdy5wZXJm
b3JtYW5jZSkgOiBEYXRlLm5vdzsKLSAgICB2YXIgc3RhcnQgPSBub3dGdW5jdGlvbigpOwotICAg
IHdoaWxlIChub3dGdW5jdGlvbigpIC0gc3RhcnQgPCBNYWduaXR1ZGUubWlsbGlzZWNvbmRzUGVy
SXRlcmF0aW9uKSB7Ci0gICAgICAgIHRlc3QobWFnbml0dWRlKTsKLSAgICAgICAgaXRlcmF0aW9u
cysrOwotICAgIH0KLSAgICByZXR1cm4gaXRlcmF0aW9uczsKLX0KLQotd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKLSAgICAvLyBGSVhNRTogQWRkIE1hZ25pdHVk
ZS53YWl0VW50aWxEb25lL25vdGlmeURvbmUgZm9yIHRlc3RzIHRoYXQgbmVlZCB0byBvcGVyYXRl
IGFmdGVyIHRoZSBsb2FkIGV2ZW50IGhhcyBmaXJlZC4KLSAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJyc7Ci0gICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChNYWduaXR1ZGUuX2NvbnRhaW5lcik7Ci19LCBmYWxzZSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvcGxhdGZvcm0taGVscGVyLmpzIGIvTGF5b3V0
VGVzdHMvcmVzb3VyY2VzL3BsYXRmb3JtLWhlbHBlci5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTczYTU1YmFhMGFhOGVmMjI5ZjI2ZTFkNjQ4MzY0MWRkNzlkMWMzNy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9yZXNv
dXJjZXMvcGxhdGZvcm0taGVscGVyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAot
ZnVuY3Rpb24gaXNHdGsoKQotewotICAgIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50LmluY2x1
ZGVzKCJXZWJLaXRUZXN0UnVubmVyR1RLIik7Ci19Ci0KLWZ1bmN0aW9uIHZpZGVvQ2FudmFzUGl4
ZWxDb21wYXJpc29uVG9sZXJhbmNlKCkKLXsKLSAgICBpZiAoaXNHdGsoKSkKLSAgICAgICAgcmV0
dXJuIDY7Ci0KLSAgICByZXR1cm4gMjsKLX0KLQotZnVuY3Rpb24gY2hlY2tQaXhlbENvbG9yV2l0
aFRvbGVyYW5jZShwaXhlbCwgciwgZywgYiwgYSkKLXsKLSAgICBjb25zdCB0b2xlcmFuY2UgPSB2
aWRlb0NhbnZhc1BpeGVsQ29tcGFyaXNvblRvbGVyYW5jZSgpOwotICAgIHJldHVybiBNYXRoLmFi
cyhwaXhlbFswXSAtIHIpIDw9IHRvbGVyYW5jZQotICAgICAgICAmJiBNYXRoLmFicyhwaXhlbFsx
XSAtIGcpIDw9IHRvbGVyYW5jZQotICAgICAgICAmJiBNYXRoLmFicyhwaXhlbFsyXSAtIGIpIDw9
IHRvbGVyYW5jZQotICAgICAgICAmJiBNYXRoLmFicyhwaXhlbFszXSAtIGEpIDw9IHRvbGVyYW5j
ZTsKLX0KLQotZnVuY3Rpb24gaXNQaXhlbEJsYWNrKHBpeGVsKQotewotICAgIHJldHVybiBjaGVj
a1BpeGVsQ29sb3JXaXRoVG9sZXJhbmNlKHBpeGVsLCAwLCAwLCAwLCAyNTUpOwotfQotCi1mdW5j
dGlvbiBpc1BpeGVsVHJhbnNwYXJlbnQocGl4ZWwpCi17Ci0gICAgcmV0dXJuIGNoZWNrUGl4ZWxD
b2xvcldpdGhUb2xlcmFuY2UocGl4ZWwsIDAsIDAsIDAsIDApOwotfQotCi1mdW5jdGlvbiBpc1Bp
eGVsV2hpdGUocGl4ZWwpCi17Ci0gICAgcmV0dXJuIGNoZWNrUGl4ZWxDb2xvcldpdGhUb2xlcmFu
Y2UocGl4ZWwsIDI1NSwgMjU1LCAyNTUsIDI1NSk7Ci19Ci0KLWZ1bmN0aW9uIGlzUGl4ZWxHcmF5
KHBpeGVsKQotewotICAgIHJldHVybiBjaGVja1BpeGVsQ29sb3JXaXRoVG9sZXJhbmNlKHBpeGVs
LCAxMjgsIDEyOCwgMTI4LCAyNTUpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3Vy
Y2VzL3BsdWdpbi5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9wbHVnaW4uanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMDNlOGI5MzNmYTY1YzYzNTY0NDc2NGI0OTAyYTkzM2Yz
ZjQ5YzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvcmVzb3VyY2VzL3BsdWdpbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAg
QEAKLS8vIFdhaXQgZm9yIHRoZSBsb2FkIGV2ZW50LCBydW4gcG9zdCBsYXlvdXQgdGFza3MsIHJ1
biB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uLAotLy8gYW5kIG5vdGlmeSB0aGUgdGVzdCBydW5uZXIg
dGhhdCB0aGUgdGVzdCBpcyBkb25lLgotCi12YXIgTm90aWZ5RG9uZSA9IHRydWU7Ci12YXIgRG9O
b3ROb3RpZnlEb25lID0gZmFsc2U7Ci0KLWZ1bmN0aW9uIHJ1bkFmdGVyUGx1Z2luTG9hZChmdW5j
LCBub3RpZnlEb25lLCBub2RlKSB7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLQotICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQot
ICAgICAgICAgICAgaW50ZXJuYWxzLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
c0FuZFJ1blBvc3RMYXlvdXRUYXNrcyhub2RlKTsKLQotICAgICAgICBpZiAoZnVuYykKLSAgICAg
ICAgICAgIGZ1bmMoKTsKLQotICAgICAgICBpZiAobm90aWZ5RG9uZSAmJiB3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIGZhbHNl
KTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMg
Yi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhOGI5MTkxYWYxZDQzM2FkMmVjYjFlYjEwMTk3YTk3OTc3NzE1MDNlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAK
LWlmIChfSlNSZWdyZXNzX2RpZFN1Y2NlZWQpCi0gICAgZGVidWcoIlBBU1Mgbm8gZXhjZXB0aW9u
IHRocm93biIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3JlZ3Jlc3MtcHJl
LmpzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyZjU4N2JmMjVjODhiYTA0MjJhOWY2OGYwNDE0ZTZlZjBkNTNkNTk2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAg
QEAKLWRlc2NyaXB0aW9uKCJKU1JlZ3Jlc3MvIiArICgiIiArIHdpbmRvdy5sb2NhdGlvbikuc3Bs
aXQoJy8nKS5wb3AoKS5zcGxpdCgnLicpWzBdKTsKLV9KU1JlZ3Jlc3NfZGlkU3VjY2VlZCA9IHRy
dWU7Ci1fSlNSZWdyZXNzX29sZE9uRXJyb3IgPSB3aW5kb3cub25lcnJvcjsKLXdpbmRvdy5vbmVy
cm9yID0gZnVuY3Rpb24obWVzc2FnZSkgewotICAgIGRlYnVnKCJGQUlMIGNhdWdodCBleGNlcHRp
b246ICIgKyBtZXNzYWdlKTsKLSAgICBfSlNSZWdyZXNzX2RpZFN1Y2NlZWQgPSBmYWxzZTsKLSAg
ICBfSlNSZWdyZXNzX29sZE9uRXJyb3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLX0KLQotaWYg
KHR5cGVvZiBub0lubGluZSA9PSAidW5kZWZpbmVkIikgewotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgbm9JbmxpbmUgPXdpbmRvdy50ZXN0UnVubmVyLm5ldmVySW5saW5lRnVu
Y3Rpb24gfHwgZnVuY3Rpb24oKXt9OwotICAgIGVsc2UKLSAgICAgICAgbm9JbmxpbmUgPSBmdW5j
dGlvbigpe30KLX0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3NyY3NldC1o
ZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvc3Jjc2V0LWhlbHBlci5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUxMTY4OGM2NDczZDRkNTFmYjlmMWJiOTY0NWY0OThj
OGE1NzlkMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvc3Jjc2V0LWhlbHBlci5qcworKysgL2Rldi9udWxsCkBAIC0x
LDMzICswLDAgQEAKLXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24gKCkg
ewotICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy5zZXNzaW9uU3RvcmFnZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF3aW5kb3cudGFyZ2V0U2NhbGVGYWN0b3IpCi0g
ICAgICAgIHdpbmRvdy50YXJnZXRTY2FsZUZhY3RvciA9IDI7Ci0KLSAgICB2YXIgbmVlZHNCYWNr
aW5nU2NhbGVGYWN0b3JDaGFuZ2UgPSB3aW5kb3cudGFyZ2V0U2NhbGVGYWN0b3IgIT0gMSAmJiAh
c2Vzc2lvblN0b3JhZ2UucGFnZVJlbG9hZGVkOwotCi0gICAgaWYgKG5lZWRzQmFja2luZ1NjYWxl
RmFjdG9yQ2hhbmdlKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAg
ICAgICB0ZXN0UnVubmVyLnNldEJhY2tpbmdTY2FsZUZhY3Rvcih0YXJnZXRTY2FsZUZhY3Rvciwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAvLyBSaWdodCBub3cgdGhlcmUgaXMgYSBidWcgdGhh
dCBzcmNzZXQgZG9lcyBub3QgcHJvcGVybHkgZGVhbCB3aXRoIGR5bmFtaWMgY2hhbmdlcyB0byB0
aGUgc2NhbGUgZmFjdG9yLAotICAgICAgICAgICAgLy8gc28gdG8gd29yayBhcm91bmQgdGhhdCwg
d2UgbXVzdCByZWxvYWQgdGhlIHBhZ2UgdG8gZ2V0IHRoZSBuZXcgaW1hZ2UuCi0gICAgICAgICAg
ICBzZXNzaW9uU3RvcmFnZS5wYWdlUmVsb2FkZWQgPSB0cnVlOwotICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKHRydWUpIH0sIDApOwot
ICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAg
IGlmICh3aW5kb3cucnVuVGVzdCkKLSAgICAgICAgICAgIHJ1blRlc3QoKTsKLSAgICB9IGNhdGNo
IChleCkgewotICAgICAgICB0ZXN0RmFpbGVkKCJVbmNhdWdodCBleGNlcHRpb24iICsgZXgpOwot
ICAgIH0KLQotICAgIHZhciBkaWRSZWxvYWQgPSBzZXNzaW9uU3RvcmFnZS5wYWdlUmVsb2FkZWQ7
Ci0gICAgZGVsZXRlIHNlc3Npb25TdG9yYWdlLnBhZ2VSZWxvYWRlZDsKLQotICAgIGlmIChkaWRS
ZWxvYWQpCi0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotfSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1wb3N0LmpzIGIvTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL3N0YW5kYWxvbmUtcG9zdC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTNjNzc5YTdmMDMxZmI0YmZkMjc3NWQwZjg2YjcxNjFmZTMyYmFkYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMv
c3RhbmRhbG9uZS1wb3N0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi13YXNQb3N0
VGVzdFNjcmlwdFBhcnNlZCA9IHRydWU7Ci0KLWlmICh0aGlzLmpzVGVzdElzQXN5bmMpIHsKLSAg
ICBpZiAodGhpcy53YXNGaW5pc2hKU1Rlc3RDYWxsZWQpCi0gICAgICAgIGZpbmlzaEpTVGVzdCgp
OwotfSBlbHNlCi0gICAgZmluaXNoSlNUZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9y
ZXNvdXJjZXMvc3RhbmRhbG9uZS1wcmUuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvc3RhbmRh
bG9uZS1wcmUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0NTY4ODFiMDJiYjcx
MDFmM2UzMGE0MzMyZTJiMjI3N2FjMzg1OGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3N0YW5kYWxvbmUtcHJlLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsMzcxICswLDAgQEAKLXZhciB3YXNQb3N0VGVzdFNjcmlwdFBh
cnNlZCA9IGZhbHNlOwotdmFyIGVycm9yTWVzc2FnZTsKLXZhciBzZWxmID0gdGhpczsKLQotc2Vs
Zi50ZXN0UnVubmVyID0gewotICAgIG5ldmVySW5saW5lRnVuY3Rpb246IG5ldmVySW5saW5lRnVu
Y3Rpb24sCi0gICAgbnVtYmVyT2ZERkdDb21waWxlczogbnVtYmVyT2ZERkdDb21waWxlcywKLSAg
ICBmYWlsTmV4dE5ld0NvZGVCbG9jazogZmFpbE5leHROZXdDb2RlQmxvY2sKLX07Ci0KLXZhciBz
aWxlbnRUZXN0UGFzcywgZGlkUGFzc1NvbWVUZXN0c1NpbGVudGx5LCBkaWRGYWlsU29tZVRlc3Rz
LCBzdWNjZXNzZnVsbHlQYXJzZWQ7Ci1zaWxlbnRUZXN0UGFzcyA9IGZhbHNlOwotZGlkUGFzc1Nv
bWVUZXN0c1NpbGVudGx5ID0gZmFsc2U7Ci1kaWRGYWlsU29tZVRlc3RzID0gZmFsc2U7Ci0KLWZ1
bmN0aW9uIGRlc2NyaXB0aW9uKG1zZykKLXsKLSAgICBwcmludChtc2cpOwotICAgIHByaW50KCJc
bk9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiBcIlBBU1NcIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgXCJURVNUIENPTVBMRVRFXCIuXG4iKTsKLSAgICBwcmludCgpOwotfQotCi1m
dW5jdGlvbiBkZWJ1Zyhtc2cpCi17Ci0gICAgcHJpbnQobXNnKTsKLX0KLQotZnVuY3Rpb24gZXNj
YXBlU3RyaW5nKHRleHQpCi17Ci0gICAgcmV0dXJuIHRleHQucmVwbGFjZSgvXDAvZywgIiIpOwot
fQotCi1mdW5jdGlvbiB0ZXN0UGFzc2VkKG1zZykKLXsKLSAgICBpZiAoc2lsZW50VGVzdFBhc3Mp
Ci0gICAgICAgIGRpZFBhc3NTb21lVGVzdHNTaWxlbnRseSA9IHRydWU7Ci0gICAgZWxzZQotICAg
ICAgICBwcmludCgiUEFTUyIsIGVzY2FwZVN0cmluZyhtc2cpKTsKLX0KLQotZnVuY3Rpb24gdGVz
dEZhaWxlZChtc2cpCi17Ci0gICAgZGlkRmFpbFNvbWVUZXN0cyA9IHRydWU7Ci0gICAgcHJpbnQo
IkZBSUwiLCBlc2NhcGVTdHJpbmcobXNnKSk7Ci19Ci0KLWZ1bmN0aW9uIGFyZU51bWJlcnNFcXVh
bChfYWN0dWFsLCBfZXhwZWN0ZWQpCi17Ci0gICAgaWYgKF9leHBlY3RlZCA9PT0gMCkKLSAgICAg
ICAgcmV0dXJuIF9hY3R1YWwgPT09IF9leHBlY3RlZCAmJiAoMS9fYWN0dWFsKSA9PT0gKDEvX2V4
cGVjdGVkKTsKLSAgICBpZiAoX2FjdHVhbCA9PT0gX2V4cGVjdGVkKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAodHlwZW9mKF9leHBlY3RlZCkgPT0gIm51bWJlciIgJiYgaXNOYU4oX2V4
cGVjdGVkKSkKLSAgICAgICAgcmV0dXJuIHR5cGVvZihfYWN0dWFsKSA9PSAibnVtYmVyIiAmJiBp
c05hTihfYWN0dWFsKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGFyZUFycmF5
c0VxdWFsKF9hLCBfYikKLXsKLSAgICB0cnkgewotICAgICAgICBpZiAoX2EubGVuZ3RoICE9PSBf
Yi5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgX2EubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICBpZiAoIWFyZU51bWJlcnNFcXVh
bChfYVtpXSwgX2JbaV0pKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGNh
dGNoIChleCkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVl
OwotfQotCi1mdW5jdGlvbiBpc01pbnVzWmVybyhuKQotewotICAgIC8vIHRoZSBvbmx5IHdheSB0
byB0ZWxsIDAgZnJvbSAtMCBpbiBKUyBpcyB0aGUgZmFjdCB0aGF0IDEvLTAgaXMKLSAgICAvLyAt
SW5maW5pdHkgaW5zdGVhZCBvZiBJbmZpbml0eQotICAgIHJldHVybiBuID09PSAwICYmIDEvbiA8
IDA7Ci19Ci0KLWZ1bmN0aW9uIGlzVHlwZWRBcnJheShhcnJheSkKLXsKLSAgICByZXR1cm4gYXJy
YXkgaW5zdGFuY2VvZiBJbnQ4QXJyYXkKLSAgICAgICAgfHwgYXJyYXkgaW5zdGFuY2VvZiBJbnQx
NkFycmF5Ci0gICAgICAgIHx8IGFycmF5IGluc3RhbmNlb2YgSW50MzJBcnJheQotICAgICAgICB8
fCBhcnJheSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkKLSAgICAgICAgfHwgYXJyYXkgaW5zdGFuY2Vv
ZiBVaW50OENsYW1wZWRBcnJheQotICAgICAgICB8fCBhcnJheSBpbnN0YW5jZW9mIFVpbnQxNkFy
cmF5Ci0gICAgICAgIHx8IGFycmF5IGluc3RhbmNlb2YgVWludDMyQXJyYXkKLSAgICAgICAgfHwg
YXJyYXkgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkKLSAgICAgICAgfHwgYXJyYXkgaW5zdGFuY2Vv
ZiBGbG9hdDY0QXJyYXk7Ci19Ci0KLWZ1bmN0aW9uIGlzUmVzdWx0Q29ycmVjdChfYWN0dWFsLCBf
ZXhwZWN0ZWQpCi17Ci0gICAgaWYgKGFyZU51bWJlcnNFcXVhbChfYWN0dWFsLCBfZXhwZWN0ZWQp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoX2V4cGVjdGVkCi0gICAgICAgICYmIChP
YmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoX2V4cGVjdGVkKSA9PQotICAgICAgICAgICAg
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFtdKQotICAgICAgICAgICAgfHwgaXNUeXBl
ZEFycmF5KF9leHBlY3RlZCkpKQotICAgICAgICByZXR1cm4gYXJlQXJyYXlzRXF1YWwoX2FjdHVh
bCwgX2V4cGVjdGVkKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIHN0cmluZ2lm
eSh2KQotewotICAgIGlmICh2ID09PSAwICYmIDEvdiA8IDApCi0gICAgICAgIHJldHVybiAiLTAi
OwotICAgIGVsc2UgaWYgKGlzVHlwZWRBcnJheSh2KSkKLSAgICAgICAgcmV0dXJuIHYuX19wcm90
b19fLmNvbnN0cnVjdG9yLm5hbWUgKyAiOlsiICsgQXJyYXkucHJvdG90eXBlLmpvaW4uY2FsbCh2
LCAiLCIpICsgIl0iOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuICIiICsgdjsKLX0KLQotZnVu
Y3Rpb24gc2hvdWxkQmUoX2EsIF9iLCBfcXVpZXQpCi17Ci0gICAgaWYgKCh0eXBlb2YgX2EgIT0g
ImZ1bmN0aW9uIiAmJiB0eXBlb2YgX2EgIT0gInN0cmluZyIpIHx8ICh0eXBlb2YgX2IgIT0gImZ1
bmN0aW9uIiAmJiB0eXBlb2YgX2IgIT0gInN0cmluZyIpKQotICAgICAgICBkZWJ1ZygiV0FSTjog
c2hvdWxkQmUoKSBleHBlY3RzIGZ1bmN0aW9uIG9yIHN0cmluZyBhcmd1bWVudHMiKTsKLSAgICB2
YXIgX2V4Y2VwdGlvbjsKLSAgICB2YXIgX2F2OwotICAgIHRyeSB7Ci0gICAgICAgIF9hdiA9ICh0
eXBlb2YgX2EgPT0gImZ1bmN0aW9uIiA/IF9hKCkgOiBldmFsKF9hKSk7Ci0gICAgfSBjYXRjaCAo
ZSkgewotICAgICAgICBfZXhjZXB0aW9uID0gZTsKLSAgICB9Ci0gICAgdmFyIF9idiA9ICh0eXBl
b2YgX2IgPT0gImZ1bmN0aW9uIiA/IF9iKCkgOiBldmFsKF9iKSk7Ci0KLSAgICBpZiAoX2V4Y2Vw
dGlvbikKLSAgICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlICIgKyBzdHJpbmdpZnko
X2J2KSArICIuIFRocmV3IGV4Y2VwdGlvbiAiICsgX2V4Y2VwdGlvbik7Ci0gICAgZWxzZSBpZiAo
aXNSZXN1bHRDb3JyZWN0KF9hdiwgX2J2KSkgewotICAgICAgICBpZiAoIV9xdWlldCkgewotICAg
ICAgICAgICAgdGVzdFBhc3NlZChfYSArICIgaXMgIiArICh0eXBlb2YgX2IgPT0gImZ1bmN0aW9u
IiA/IF9idiA6IF9iKSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHR5cGVvZihfYXYpID09
IHR5cGVvZihfYnYpKQotICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgIiArIHN0
cmluZ2lmeShfYnYpICsgIi4gV2FzICIgKyBzdHJpbmdpZnkoX2F2KSArICIuIik7Ci0gICAgZWxz
ZQotICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgIiArIHN0cmluZ2lmeShfYnYp
ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9idiArICIpLiBXYXMgIiArIF9hdiArICIgKG9mIHR5
cGUgIiArIHR5cGVvZiBfYXYgKyAiKS4iKTsKLX0KLQotZnVuY3Rpb24gZGZnU2hvdWxkQmUodGhl
RnVuY3Rpb24sIF9hLCBfYikKLXsKLSAgaWYgKHR5cGVvZiB0aGVGdW5jdGlvbiAhPSAiZnVuY3Rp
b24iIHx8IHR5cGVvZiBfYSAhPSAic3RyaW5nIiB8fCB0eXBlb2YgX2IgIT0gInN0cmluZyIpCi0g
ICAgZGVidWcoIldBUk46IGRmZ1Nob3VsZEJlKCkgZXhwZWN0cyBhIGZ1bmN0aW9uIGFuZCB0d28g
c3RyaW5ncyIpOwotICBub0lubGluZSh0aGVGdW5jdGlvbik7Ci0gIHZhciBleGNlcHRpb247Ci0g
IHZhciB2YWx1ZXMgPSBbXTsKLQotICAvLyBEZWZlbmQgYWdhaW5zdCB0ZXN0cyB0aGF0IG11Y2sg
d2l0aCBudW1lcmljIHByb3BlcnRpZXMgb24gYXJyYXkucHJvdG90eXBlLgotICB2YWx1ZXMuX19w
cm90b19fID0gbnVsbDsKLSAgdmFsdWVzLnB1c2ggPSBBcnJheS5wcm90b3R5cGUucHVzaDsKLSAg
Ci0gIHRyeSB7Ci0gICAgd2hpbGUgKCFkZmdDb21waWxlZCh7Zjp0aGVGdW5jdGlvbn0pKQotICAg
ICAgdmFsdWVzLnB1c2goZXZhbChfYSkpOwotICAgIHZhbHVlcy5wdXNoKGV2YWwoX2EpKTsKLSAg
fSBjYXRjaCAoZSkgewotICAgIGV4Y2VwdGlvbiA9IGU7Ci0gIH0KLQotICB2YXIgX2J2ID0gZXZh
bChfYik7Ci0gIGlmIChleGNlcHRpb24pCi0gICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJl
ICIgKyBzdHJpbmdpZnkoX2J2KSArICIuIE9uIGl0ZXJhdGlvbiAiICsgKHZhbHVlcy5sZW5ndGgg
KyAxKSArICIsIHRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKLSAgZWxzZSB7Ci0gICAg
dmFyIGFsbFBhc3NlZCA9IHRydWU7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVu
Z3RoOyArK2kpIHsKLSAgICAgIHZhciBfYXYgPSB2YWx1ZXNbaV07Ci0gICAgICBpZiAoaXNSZXN1
bHRDb3JyZWN0KF9hdiwgX2J2KSkKLSAgICAgICAgY29udGludWU7Ci0gICAgICBpZiAodHlwZW9m
KF9hdikgPT0gdHlwZW9mKF9idikpCi0gICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBi
ZSAiICsgc3RyaW5naWZ5KF9idikgKyAiLiBPbiBpdGVyYXRpb24gIiArIChpICsgMSkgKyAiLCB3
YXMgIiArIHN0cmluZ2lmeShfYXYpICsgIi4iKTsKLSAgICAgIGVsc2UKLSAgICAgICAgdGVzdEZh
aWxlZChfYSArICIgc2hvdWxkIGJlICIgKyBzdHJpbmdpZnkoX2J2KSArICIgKG9mIHR5cGUgIiAr
IHR5cGVvZiBfYnYgKyAiKS4gT24gaXRlcmF0aW9uICIgKyAoaSArIDEpICsgIiwgd2FzICIgKyBf
YXYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2F2ICsgIikuIik7Ci0gICAgICBhbGxQYXNzZWQg
PSBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGFsbFBhc3NlZCkKLSAgICAgIHRlc3RQYXNzZWQoX2Eg
KyAiIGlzICIgKyBfYiArICIgb24gYWxsIGl0ZXJhdGlvbnMgaW5jbHVkaW5nIGFmdGVyIERGRyB0
aWVyLXVwLiIpOwotICB9Ci0gIAotICByZXR1cm4gdmFsdWVzLmxlbmd0aDsKLX0KLQotZnVuY3Rp
b24gc2hvdWxkQmVUeXBlKF9hLCBfdHlwZSkgewotICB2YXIgZXhjZXB0aW9uOwotICB2YXIgX2F2
OwotICB0cnkgewotICAgIF9hdiA9IGV2YWwoX2EpOwotICB9IGNhdGNoIChlKSB7Ci0gICAgZXhj
ZXB0aW9uID0gZTsKLSAgfQotCi0gIHZhciBfdHlwZXYgPSBldmFsKF90eXBlKTsKLSAgaWYgKF9h
diBpbnN0YW5jZW9mIF90eXBldikgewotICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIGFuIGluc3Rh
bmNlIG9mICIgKyBfdHlwZSk7Ci0gIH0gZWxzZSB7Ci0gICAgdGVzdEZhaWxlZChfYSArICIgaXMg
bm90IGFuIGluc3RhbmNlIG9mICIgKyBfdHlwZSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gc2hvdWxk
Tm90QmUoX2EsIF9iLCBfcXVpZXQpCi17Ci0gICAgaWYgKCh0eXBlb2YgX2EgIT0gImZ1bmN0aW9u
IiAmJiB0eXBlb2YgX2EgIT0gInN0cmluZyIpIHx8ICh0eXBlb2YgX2IgIT0gImZ1bmN0aW9uIiAm
JiB0eXBlb2YgX2IgIT0gInN0cmluZyIpKQotICAgICAgICBkZWJ1ZygiV0FSTjogc2hvdWxkTm90
QmUoKSBleHBlY3RzIGZ1bmN0aW9uIG9yIHN0cmluZyBhcmd1bWVudHMiKTsKLSAgICB2YXIgX2V4
Y2VwdGlvbjsKLSAgICB2YXIgX2F2OwotICAgIHRyeSB7Ci0gICAgICAgIF9hdiA9ICh0eXBlb2Yg
X2EgPT0gImZ1bmN0aW9uIiA/IF9hKCkgOiBldmFsKF9hKSk7Ci0gICAgfSBjYXRjaCAoZSkgewot
ICAgICAgICBfZXhjZXB0aW9uID0gZTsKLSAgICB9Ci0gICAgdmFyIF9idiA9ICh0eXBlb2YgX2Ig
PT0gImZ1bmN0aW9uIiA/IF9iKCkgOiBldmFsKF9iKSk7Ci0KLSAgICBpZiAoX2V4Y2VwdGlvbikK
LSAgICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIG5vdCBiZSAiICsgX2J2ICsgIi4gVGhy
ZXcgZXhjZXB0aW9uICIgKyBfZXhjZXB0aW9uKTsKLSAgICBlbHNlIGlmICghaXNSZXN1bHRDb3Jy
ZWN0KF9hdiwgX2J2KSkgewotICAgICAgICBpZiAoIV9xdWlldCkgewotICAgICAgICAgICAgdGVz
dFBhc3NlZChfYSArICIgaXMgbm90ICIgKyAodHlwZW9mIF9iID09ICJmdW5jdGlvbiIgPyBfYnYg
OiBfYikpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQoX2EgKyAi
IHNob3VsZCBub3QgYmUgIiArIF9idiArICIuIik7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZEJlVHJ1
ZShfYSkgeyBzaG91bGRCZShfYSwgInRydWUiKTsgfQotZnVuY3Rpb24gc2hvdWxkQmVGYWxzZShf
YSkgeyBzaG91bGRCZShfYSwgImZhbHNlIik7IH0KLWZ1bmN0aW9uIHNob3VsZEJlTmFOKF9hKSB7
IHNob3VsZEJlKF9hLCAiTmFOIik7IH0KLWZ1bmN0aW9uIHNob3VsZEJlTnVsbChfYSkgeyBzaG91
bGRCZShfYSwgIm51bGwiKTsgfQotCi1mdW5jdGlvbiBzaG91bGRCZUVxdWFsVG9TdHJpbmcoYSwg
YikKLXsKLSAgaWYgKHR5cGVvZiBhICE9PSAic3RyaW5nIiB8fCB0eXBlb2YgYiAhPT0gInN0cmlu
ZyIpCi0gICAgZGVidWcoIldBUk46IHNob3VsZEJlRXF1YWxUb1N0cmluZygpIGV4cGVjdHMgc3Ry
aW5nIGFyZ3VtZW50cyIpOwotICB2YXIgdW5ldmFsZWRTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShi
KTsKLSAgc2hvdWxkQmUoYSwgdW5ldmFsZWRTdHJpbmcpOwotfQotCi1mdW5jdGlvbiBzaG91bGRC
ZVVuZGVmaW5lZChfYSkKLXsKLSAgdmFyIGV4Y2VwdGlvbjsKLSAgdmFyIF9hdjsKLSAgdHJ5IHsK
LSAgICAgX2F2ID0gZXZhbChfYSk7Ci0gIH0gY2F0Y2ggKGUpIHsKLSAgICAgZXhjZXB0aW9uID0g
ZTsKLSAgfQotCi0gIGlmIChleGNlcHRpb24pCi0gICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxk
IGJlIHVuZGVmaW5lZC4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwotICBlbHNlIGlm
ICh0eXBlb2YgX2F2ID09ICJ1bmRlZmluZWQiKQotICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIHVu
ZGVmaW5lZC4iKTsKLSAgZWxzZQotICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSB1bmRl
ZmluZWQuIFdhcyAiICsgX2F2KTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVEZWZpbmVkKF9hKQot
ewotICB2YXIgZXhjZXB0aW9uOwotICB2YXIgX2F2OwotICB0cnkgewotICAgICBfYXYgPSBldmFs
KF9hKTsKLSAgfSBjYXRjaCAoZSkgewotICAgICBleGNlcHRpb24gPSBlOwotICB9Ci0KLSAgaWYg
KGV4Y2VwdGlvbikKLSAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgZGVmaW5lZC4gVGhy
ZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOwotICBlbHNlIGlmIChfYXYgIT09IHVuZGVmaW5l
ZCkKLSAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBkZWZpbmVkLiIpOwotICBlbHNlCi0gICAgdGVz
dEZhaWxlZChfYSArICIgc2hvdWxkIGJlIGRlZmluZWQuIFdhcyAiICsgX2F2KTsKLX0KLQotZnVu
Y3Rpb24gc2hvdWxkTm90VGhyb3coX2EsIF9tZXNzYWdlKSB7Ci0gICAgdHJ5IHsKLSAgICAgICAg
dHlwZW9mIF9hID09ICJmdW5jdGlvbiIgPyBfYSgpIDogZXZhbChfYSk7Ci0gICAgICAgIHRlc3RQ
YXNzZWQoKF9tZXNzYWdlID8gX21lc3NhZ2UgOiBfYSkgKyAiIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLiIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgoX21lc3NhZ2Ug
PyBfbWVzc2FnZSA6IF9hKSArICIgc2hvdWxkIG5vdCB0aHJvdyBleGNlcHRpb24uIFRocmV3IGV4
Y2VwdGlvbiAiICsgZSArICIuIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBzaG91bGRUaHJvdyhf
YSwgX2UsIF9tZXNzYWdlKQotewotICAgIHZhciBfZXhjZXB0aW9uOwotICAgIHZhciBfYXY7Ci0g
ICAgdHJ5IHsKLSAgICAgICAgX2F2ID0gdHlwZW9mIF9hID09ICJmdW5jdGlvbiIgPyBfYSgpIDog
ZXZhbChfYSk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBfZXhjZXB0aW9uID0gZTsKLSAg
ICB9Ci0KLSAgICB2YXIgX2V2OwotICAgIGlmIChfZSkKLSAgICAgICAgX2V2ID0gZXZhbChfZSk7
Ci0KLSAgICBpZiAoX2V4Y2VwdGlvbikgewotICAgICAgICBpZiAodHlwZW9mIF9lID09ICJ1bmRl
ZmluZWQiIHx8IF9leGNlcHRpb24gPT0gX2V2KQotICAgICAgICAgICAgdGVzdFBhc3NlZCgoX21l
c3NhZ2UgPyBfbWVzc2FnZSA6IF9hKSArICIgdGhyZXcgZXhjZXB0aW9uICIgKyBfZXhjZXB0aW9u
ICsgIi4iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEZhaWxlZCgoX21lc3NhZ2Ug
PyBfbWVzc2FnZSA6IF9hKSArICIgc2hvdWxkIHRocm93ICIgKyAodHlwZW9mIF9lID09ICJ1bmRl
ZmluZWQiID8gImFuIGV4Y2VwdGlvbiIgOiBfZXYpICsgIi4gVGhyZXcgZXhjZXB0aW9uICIgKyBf
ZXhjZXB0aW9uICsgIi4iKTsKLSAgICB9IGVsc2UgaWYgKHR5cGVvZiBfYXYgPT0gInVuZGVmaW5l
ZCIpCi0gICAgICAgIHRlc3RGYWlsZWQoKF9tZXNzYWdlID8gX21lc3NhZ2UgOiBfYSkgKyAiIHNo
b3VsZCB0aHJvdyAiICsgKHR5cGVvZiBfZSA9PSAidW5kZWZpbmVkIiA/ICJhbiBleGNlcHRpb24i
IDogX2V2KSArICIuIFdhcyB1bmRlZmluZWQuIik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFp
bGVkKChfbWVzc2FnZSA/IF9tZXNzYWdlIDogX2EpICsgIiBzaG91bGQgdGhyb3cgIiArICh0eXBl
b2YgX2UgPT0gInVuZGVmaW5lZCIgPyAiYW4gZXhjZXB0aW9uIiA6IF9ldikgKyAiLiBXYXMgIiAr
IF9hdiArICIuIik7Ci19Ci0KLWZ1bmN0aW9uIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCkKLXsKLSAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYW5kIG9ubHkgcmVwb3J0IHVuZXhwZWN0ZWQgc3ludGF4
IGVycm9ycy4KLSAgICBpZiAoIWVycm9yTWVzc2FnZSkKLSAgICAgICAgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKLSAgICBzaG91bGRCZVRydWUoInN1Y2Nlc3NmdWxseVBhcnNlZCIpOwotICAg
IGlmIChzaWxlbnRUZXN0UGFzcyAmJiBkaWRQYXNzU29tZVRlc3RzU2lsZW50bHkpCi0gICAgICAg
IGRlYnVnKCJQYXNzZWQgc29tZSB0ZXN0cyBzaWxlbnRseS4iKTsKLSAgICBpZiAoc2lsZW50VGVz
dFBhc3MgJiYgZGlkRmFpbFNvbWVUZXN0cykKLSAgICAgICAgZGVidWcoIlNvbWUgdGVzdHMgZmFp
bGVkLiIpOwotICAgIGRlYnVnKCJcblRFU1QgQ09NUExFVEVcbiIpOwotfQotCi0KLWZ1bmN0aW9u
IGRmZ0NvbXBpbGVkKGFyZ3VtZW50KQotewotICAgIHZhciBudW1iZXJPZkNvbXBpbGVzID0gImNv
bXBpbGVzIiBpbiBhcmd1bWVudCA/IGFyZ3VtZW50LmNvbXBpbGVzIDogMTsKLSAgICAKLSAgICBp
ZiAoISgiZiIgaW4gYXJndW1lbnQpKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImRmZ0NvbXBp
bGVkIGNhbGxlZCB3aXRoIGludmFsaWQgYXJndW1lbnQuIik7Ci0gICAgCi0gICAgaWYgKGFyZ3Vt
ZW50LmYgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFy
Z3VtZW50LmYubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLm51bWJl
ck9mREZHQ29tcGlsZXMoYXJndW1lbnQuZltpXSkgPCBudW1iZXJPZkNvbXBpbGVzKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmICh0ZXN0UnVubmVyLm51bWJlck9mREZHQ29tcGlsZXMoYXJndW1lbnQuZikgPCBudW1iZXJP
ZkNvbXBpbGVzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gZGZnSW5jcmVtZW50KGFyZ3VtZW50KQotewotICAg
IGlmICghc2VsZi50ZXN0UnVubmVyKQotICAgICAgICByZXR1cm4gYXJndW1lbnQuaTsKLSAgICAK
LSAgICBpZiAoYXJndW1lbnQuaSA8IGFyZ3VtZW50Lm4pCi0gICAgICAgIHJldHVybiBhcmd1bWVu
dC5pOwotICAgIAotICAgIGlmIChkaWRGYWlsU29tZVRlc3RzKQotICAgICAgICByZXR1cm4gYXJn
dW1lbnQuaTsKLSAgICAKLSAgICBpZiAoIWRmZ0NvbXBpbGVkKGFyZ3VtZW50KSkKLSAgICAgICAg
cmV0dXJuICJzdGFydCIgaW4gYXJndW1lbnQgPyBhcmd1bWVudC5zdGFydCA6IDA7Ci0gICAgCi0g
ICAgcmV0dXJuIGFyZ3VtZW50Lmk7Ci19Ci0KLWZ1bmN0aW9uIG5vSW5saW5lKHRoZUZ1bmN0aW9u
KQotewotICAgIGlmICghc2VsZi50ZXN0UnVubmVyKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgdGVzdFJ1bm5lci5uZXZlcklubGluZUZ1bmN0aW9uKHRoZUZ1bmN0aW9uKTsKLX0KLQotLy8g
SXQncyBwb3NzaWJsZSBmb3IgYW4gYXN5bmMgdGVzdCB0byBjYWxsIGZpbmlzaEpTVGVzdCgpIGJl
Zm9yZSBqcy10ZXN0LXBvc3QuanMKLS8vIGhhcyBiZWVuIHBhcnNlZC4KLWZ1bmN0aW9uIGZpbmlz
aEpTVGVzdCgpCi17Ci0gICAgd2FzRmluaXNoSlNUZXN0Q2FsbGVkID0gdHJ1ZTsKLSAgICBpZiAo
IXdhc1Bvc3RUZXN0U2NyaXB0UGFyc2VkKQotICAgICAgICByZXR1cm47Ci0gICAgaXNTdWNjZXNz
ZnVsbHlQYXJzZWQoKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0
LnN3ZiBiL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0LnN3ZgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODk1Mjk4MjcxYWI2ZDZjNWFmODllMzExOGM2NTkxMTU4ZWFmYzdjNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAxMDA4NQp6Y21WLXJDent3cFM1cFJpRSZ1Pntv
YjdwTVAqaEV+P3coOzdhdTg0P0JULWE5ZjwjRnNhKiFaTmF2YjZpQiM2TCgKenE5N25CQk47KH4w
WXJqaUJxTn5ZQ148YCVFSUgyRWdSa0dHLSN4ZUx7eTBfViZuPTJ3ejFDamN6MURpMyl3X0VkCnoz
NlFZQEtwcF40KEwtKVJ1fkA3Tzl1KXVwKFBaRipmRXMpTkgqUlpiMU1Ha2RYJkA7OEttWnRvPlpZ
P1IoJUlGXwp6LUFlMW1VRVVrYzR3ZThQVTx7Wjd7eS13bzA/MHM7QVheWXhzMGg+bVk3ZFFyZXVm
U35WUilRKVh1SylCJWRqJDcKejR+emp7OFElZWE4bE44PzM3PigjQmJYIzBDbG49QUFwQWhNT1E9
RFZPRWdEaE5TczdHTXRuZmJNez1LfWg9aCFrCno1fStqR1pPPzxuOUhgPllie0g/djx3IzNBYXVG
Nyk5SztEVEdLcz4jKlMyX08+dU8lV0JadUElPnJHPUpLS254VAp6YzdQKU1icmBPJTlTbElLdyFT
ej9Eczt1RyFKdFJXKz9iMEJVNnxTKT1CUUFmNzFxcnFgalQzX3ctdXJgSiZ6ai0KejtUKCVwbDt4
Z3xjNSl9Qjs8MkhCTzZfM0ZIT21xbXkoJUpfMCpQV0pxKUJRKW44TExuOU4qKVZnTnJ8RVZJSFRy
CnptazwpU3RNMWl0OT5QbWBpfksmbF50Pm5XQkhmeHVtcSV4VmZDUHJHV34+XmhkaWRiJipwPWZB
eCNqeSNnJngjYQp6NTZQVk5Mbn5AP3VnYztrdD8qaGBNOCQxPCF4V2Y0SWU5WTw+OW4tenU+Zn1W
WWpTUyRhazBpfClXX1c8YCtRKHkKeiUwV1hITmZ8SkAhXlhNQmRfM2VsN0lLMH1hVitMMz18ZT94
byM8VXVqZVVEOT8zfF40X2MyZWZ1eCEydjNsY1pGCnpvdDY/Znk2KDxCJSNlUFRLKHUxbitub2tI
QyNgKmkpQVpwKCVDbmFAb1Y0NCo/NDtpY0t2Qj9LTGdGc0lzNSZsSwp6YmFoX3olQ09OK19haSVu
RFFeIWRFPTdFcXZEZX1DY1I5SCFqXyV7fllNVE5lKWQpK1lxdTBkX2BIcyRVe20yTWwKejlyQnpr
NlY8Q0V6U0NNd2glPDVPTDhfNl5LRzNSLVNndSZWcFU1KmUrbHNSdjtvRD15SWQmQz9PZGVUNG95
JlNBCnpMeVdQM2VwJT8wZzRtZ0hoUX1fbkV5YnMpO2djblJqZWgjcyk4MWZtc2ptKUhEMTcwczxB
VUZ2UUhubFh1JC0lPgp6dH5uVm5KbjFeMDFIKUtERDI4SFhZKnU1VU1eQFNQd1R5OGQqckM4RlRL
cE0/e2ltT050OVZXPmBZTmZCKWh1NkQKemF8U1I/XyUtOUtLYGhRMCtifj0+MUpUaD05TzlhNVB8
dCQzS3YzKFQwcm40T0hqTD5rV0gpTSFrblZRZnpuan1ZCnohRnklWVk/Q144SH0qfUxQWip6MDdT
N2E4PDFgdXVIUnpPb0RTc2whdkNFQ0B7JGklODRjeHl4eEJJUylSN0J+UQp6eXY3WGFyaTthUTZ7
TWNubjtjZntYOSNYMUZ5QW9IKjlpeHY/PWFAaWdPPWw3ZDdLNG9abEZsPG81TVM5X2g0dzEKejBG
XnEzMGNYITNOM0MkaElVKVBPSHM1d1psS2Y8bWRNflFjaUI+RDNPJmFiWkplQUhaRWVuQyQ1eXlQ
RSY9RmUxCno7Qi1fYT9RPGlkQ0ExP0s4OXM4PjJScSNkVmdDLWRHSEhZO01tM1VYcndmbDlSI0tp
NyVZUSo2eGBPZF45fnY3Mwp6OT08RiE3IUskM0JnLVFTZSsxJEUjbjEmQDlAbSZrbUlvODNaajE2
JjdMfmRANllPbHNZK0ktK0JmMmJlJXokRWMKejtwdTR1aGwqNHF4PTg1aStBOGA4bHxWYV4heFU3
MEE5REEtYEhNKSMoXjV2QE1YeEskaWhwZiFFRndMVm00OWNvCnpYNl94TjxYaWxSO2Z2P1MtPzA2
b0h4KEd0TihHY3NEWW1qP3hoNV8tUEEofVBBQWFZVChpNXxQbmU0RHlTJEl3Tgp6JWVDc09fPjhx
fk1COzg3dm1kYy1WU3R+RXp9YE5URytqNXFyclprK1ROPCplZFc5ciUwOzwmdjg/ZkFIZGhKezMK
ekh4ei1ZOU41cFlFMTVJUlV1ND8hUEMtfWUwbUd1V2JSVlNIdXhibD1uPnJpT2ttbzVfTExUZGlh
QFF5NG9YJUVnCnpoVTYmbV98SWlSTmB+U20/RU5yS3QmQEArYmxmaHFeJlA0fFV4Xz51YURfJUpY
ViRYS1UqZmE2Kzl2NzA/ZWR2Iwp6bTJLfW5CUTlSMl8tTGU+RlApdX1VZkc2IzQ3MCR7PXRzOCZr
UUBZVXg3bnI1bmRnPXpIel5sN1Y/KWE7Q3tCdzQKekBkQzZMJWVKcU5TVCp1O1ZpcnFfRE5DR0lQ
Q1poemY5NHtEPEMlSVVVWSpEViVWfTFOMWk0RzhLa1pFISF4dW05CnoqNFNnOUFCNntGMmgzUExL
UDJmKTJ0ajJwKko3IztTTEhAKVIyVVFqTihKSDVuZEUoNGFvUi1KJjkhWWxYUUwlKgp6bVA4RlM0
PEc3UjZCMCk9YT5HWFd4VVhuUmsxRjk0MV5uZG1ObTEoRVNOezNCPyErU301Zl9HZmJ3bk5LLWo3
WjMKekpZOUJ3dUhmVUUhdVhSbXNJKTBATEFMa3YpdzZwJFNyMHFQcC09bUxWdXFARFNOeUdPVmVg
VDxre1owVEN6R0ZmCnpvfDFMfWIyXjljNTJMYl5DfHVmYTBxZCY0aXF9JlFnb0FEa1VuPDEqRCo5
Ukt0NDNLdV8oaE1Kc35ub1hnLV5LZwp6cHc2PSkjfWs1YHY+aW8lTTRHPUtCI3U+e2hvTVAqaDEw
dzV1bmR7UWRVfWpfZnpwXm0qSlZ6PXN6R3MrVn0zeWAKelk4ZUZfZGJYbUdOSHQ8VlF+OChfQDBZ
VUFLOSpFSzdzblJNREwpMnRlUFI4Q2pifUpHbjZAOEAqbFJ8eU1MSjtRCnozVmU+Xik9Nmg/U09s
QG1PUCN3YXRObUhHakFNZXYtSmU/aEBnQmRed1J+SSYqazx6flJZU2EwLXZjY2d7Rmt6JAp6MTh2
UGJUQXchU1JyOCRKZXlrKVdhVyNKVT4yVXRwJVYhOGZSYV5+I2FNMSYxe1U7QDc2ekVGeV8jTWBZ
M01GK3IKek1iMzR1JSVzPmRIfWl+VWQka0hoV2NfP3g+RkhHSkhKOHg/TnMxKjgjJWZ2fC0kcyZV
bmpVQ1NPRnBhOElVWHt0CnpnSj0kRW5NT1N0KCM1dmchZCtlR2Q1JitANWd7aDIoZzBfN09pNGct
QVFZbn5SPiEkKDtIK0JBSm1MXklvNT8+Tgp6YXdGNEgkZ2Elejh3S0x0MTBzdmxQdnEoOSlKWm1m
az59YD1hPz1Oc2Y9TmdzeC04NX5qdnZqY2lGXyo9XlRPYjYKelNANl9OWWwldklBVEgpOz80RFQ+
TVZiQE0wSXMpJVF9TWNEamI7dW9TQTIzKjU9bD8/VWhCTn1hb2tsSnZkYmBoCnpVSTAjMT9tYilN
NllRcj1mQDNIR19yK34tV307ZGl1TF5kJERCM3dUc3chO3dGVC0/KFVfWUlZSTc0MGxULSs7dgp6
X0psWGNUcEdtVDxfT0B0ezZkeTxAJCZmOSo3c3JnbiQzNzBOazRUI3RtPERtOEgraUAkQFdkZTh8
YE9lcXhWU0QKekVSJj1ZcWNDK29LYGYoeyRjfjwlJDBaYHU8YWZXeXUqWGk8MTtlZG5kYW9mTz9E
Ykp4Q1duRj11fnIwJkVKND4jCnp4cERRXjlPVn07OExsYlVaKn0mN25NZj5hZG5tYEIjKEgtaCUp
fWRkWFhvdUZIRm9ZNVdzbEt6MEFhY1M7JEV9JQp6aVVIS2hkREM0eU01RnJFcDchWmxXKmctWHJl
IXBAbSNhYzAxVFgmYiZUNUIhMV4rJH4lSHBMWCpYPV5qPEc0fD4KekdaTDJDVTlebXBYTjUjfXo9
ZCgydEd6V1RVfCQ1Xz0xRDgzM3ZsN3puV3QtY2toPD4xPks4dHo8WVk9RGNEZ1MwCnpgaHNnV28k
RUtRUl8mTWdAZ01MK2M3c1UzT3BUVkttVkI+PnVvUT1RM25ZRSZCNWp8PEVjUDtGcG9DM1BTeT9z
VQp6Iy0rSmUrRFBjRlp+UEg7OG0+Q1ooUmdta3YlKnpfSlNNKXBCQVQyMkV3fkk9XkJvfm92MEV4
fU9FTUJtLXRrLTEKeld5M319MGIqbGJQUjNxVlMrV2AlJH1hZDlGJXQ8Ym50X0d8PjE4NykjZ0tK
ZTEqcFNZPiR0RnJVeFo+SEB6V2tkCnp1PVpQY3pJb1NuWUw9VUwybU5CMSU8T21NV2kxcHtIdF9A
MXQpcTxjZVcrVCNKSlhiMkpxZndXZDNXezBtcnU9Owp6ZzRITDNlTDN3Nkp7TkxQQyRrNjZoUz99
T1pmR2g7PTBybEk9bz4tI0ZpWGQqY1J4UWNCR0ZBakc3RzF2UF9ga2MKejZUeX0jYjJQOURzUjdH
YyVLZWlKQHBXP0pASShoYWhjPF54JlFPRDBOPChiMyhiSl5wQERMO0hmT2N9Vih5SV9JCnpHLT1q
SitJSmt3WX40WT8raDdVdU0/ekw8ejVieHJBPGlOPmdWKzRZbDBkPk1ya18ra3ImR0xPTjMyYChk
PGRQQgp6Kyo5VD4pKncmKE1ZSmI0e157djFNKHFTIyFPeX4rNDheeFhIX0YxTkMzNnwmQUtyQUtK
MDA4cmQ/XnQrRlJ+UF4KektZQ08qeTl+K0lKJncoUiZzeVZpaSkqQGFpelh7b0YkQXgmQ3J+dGF5
enhBOXk0NWhCdTB0eU49bDEwcURRJlJ6CnoxcXBhNE5jOWEmQjxsJFYpRVppKm0heDFYTWMoUllR
Q1dadTs7Z05xPiE1Vz9wUWFNfTM2VldePSFIPWskYERQKQp6d3IkMCl5Kih5aGgrdXFfc3VEO0A+
S2gzQzd+KnlIS1RLOzQmfTNCSyhzfWljK3ZSKDA2TWZsTDBeeXxvSU0xem0Kej5laGRJYXBCYTkr
a0ZFeUhGe0o1d0k9YGVMU1leQjt4Zz95M1VMM3VxQlByK09+dEY9TXItK2FPeDFVUGB8KDlhCnp7
MVBRWUpCcHVLRnFQJUI0d1FOenp6UUErcXlhaEwyNT1MJjE+NlNpMDFBTDJwYWR1YkR1NjFXMkIt
clhmRl9ePwp6WGFoUWNFfSMjWDBUekhJVTxLRiF3ZzNYSzJPSSFMenpKeyRrYm89VDJEayRjMDF2
PCRwa3JsWlduel4lN1leWGcKekFeK3pnPGV+KSs+ckgyKnc9MlROKX0yKkFUd0xARHRLaWtFMDwx
VHpULXxMITNzeDFDbnwhUXQ0aTJvUkNUXl4qCnpSJkd8VjkjKW9vfDJGeTh1JmY5LVJ4PygyUzJJ
ZzFNPkFKQFIlaCNmOCk8dFp0PXcydTVSTTNVdXJxKiNfSkotegp6TDNjeGpRSXx+ajBEUiZYNVd2
UzNWR0VnclB8PSUxMXJeUEAmIT13ZDFWPipaeFhZIVRmKFpSS2RGSFctYVVQdksKemdrSEdlRiN1
NClzMDFWM1pAMlpHYjtTck8hPUd1NDBeOFBVaClAa3tjM0V+QkJgTT4jTC1fWVd5RVpyX0lOc0Z8
CnolM2VCNzZ1cXM3b0cjP04pckRKV0p5NlY5b3c8bTE3U1A2PmgoZjglVF44fEpqaEpRZVVoU1E7
LTFIVjRgM3UyPgp6YnJebyN1djhSaSFiblBlZ1ohUTlrTSY7Sz5fISFCI2MlO2M2STJpWj5CYkUr
Nk1nYWRUZGRuOGB5UE5MIVd7d2UKeno7dVZlO1NleEg4WDlkYFN4Xi1MQ3g/TGdeVEk4UjJ0Yncr
MEJaMlhLczV8LXkhQ252c3FGeyQwSSo8S1hXeT9ACnp0a3U2JGpnNyRmNmZ0SFl7SX1qaWUhZ2lr
PX4pRGc/K3pPezQ+JHlYNTU5ZDBoZU4/KDBOZjs0QjJuLU8yZW5iUwp6PkZAI2FvJTBLKXYkUjU/
cmEmeTU5MG4+fDBpWUhqMjtUYmpoTUY4ND5YKE9iZTZWamIraHY5ND9ZME0lS249aSUKekpKU0xS
a1Z1ZWh6eH14S1JObUY0TFR1RjFzUXs9VWxtSU9WMGV+MUZCKjBtflBRXz5mMDVFWk5jNko5Q3Fs
cDIpCnohVTE3bnVXZT1uczZ+VU9DZ3UpaVBXQ2BOWGJwdEo7aVJEYjctP0hURWllZ0EkTzA7ZjBN
QzxsMkxJKlVkO21nJgp6SjVOS3tDJWJLKW0lcEw8O25pbzBpPGIodDBiTEcoNkZ+cjZHOWlCbyZf
NHd7UDxWbjlWNndwZntALTcye3IzKzQKejYkK1NmczJQQ0VFKXZMYE1fcG9EMmpHN2MzV1d4aSk5
Xy1IRGt+N0MlRjFhZGNUZVp1SDhgRVRsPEB9eVNQZnluCnppYlJ6YXI8WEZPbEx4fUQ1blBOQ2tZ
K2pxZ3BtbVY1M2FuSSgtbnxuSXNAfHVkNHV+Mmc5Sm57N3teKi1mYykoIwp6WDx4I2JAaiYlQ001
NjMzZS11SVlwYWVLXzZYRV5vRlcjUyM7UWc2O3kjS2s+fDlmY2RLUFViMGZBYXdIcnkyMDQKejg3
e0dqVjBAJjJRfUBJY3VtTFdXQ01ZbnM1dlJGNTQ+PUY5ZylxXn5xQWF7REV2cHxqMHRvaiRoZW1Y
eTFLM0lvCnozMk91RjkyJGVXVm4zenlvJDN0b0xvQlBAYCVGSXZjT21OPjhqSExpVWs1VXdFTTY5
fHA4IU9WT2pzTkc8KiVOPAp6WXlpWnNyJGJ8cU9re1VyTk07UnlpMG5afWhQNE9EO1FCWjshYnx+
XmVed0gqLXp5MHpLJkp2fDs2UWw9WEM/O3EKel5nVTFtKVVSTVhQRW88YiNZZy1yekJidV4zeXwx
OTFnUHlGMC1vP0dNOHRuV0J0dXZUJk9yYFh6QWx5VjMkZXcrCno2YChjbGFURThyMEk7NDdANyhx
SyhTdzhAJjshZUZ3YiMxPFhpJFlwQklKZlFOfEg4NXZKST9vQH1gbCk+TTtXfgp6en5HSzc2WitC
e0s+Kk1hTU1SLV5VTFhtfnc9PipPMEV5aC0oMWZSQ3dxaC1EKT5YV01BZ3lLO0t3UHBTaHtWP34K
ejAreC03UiNFX25fTVIqUmMqUHlqMjdZISEyUFZmYCZaLUxtMDFYNEs2V2tXPjxITyFVUyUzdE4+
bEEyPkxzU1pNCnprT0h1IWlGcEYjVGNRQWJBYG5oMjdKRDd8M2N3KUxmKD91RXFFRkt3P3pLYDwh
ezF6cjQlVlRiRVB1RUtFNnA9NAp6Rk59ck52NyozfkdrYC0teyQ1bmMwYkpfd3olbDckbDJ2ZjJr
QVg5amdZVFFVdFFGKEpaM3xOViR2XjVCPiZYQUMKejI9WUpxTmQ5TDxrcEZpVFEzSjM7MHBKWFB5
eGhXeGU+SElMRzsobkgxRHxLa3JlWVFTVyMobTBGIXlGT2JUPXwtCno+dXp3YnFVKjxfRGM8clAt
Xk9CR0dqaG4lIz05eXktdGBrblpBekpFWkxqSHtsI35aS1A4VE5sPHReRGNLYmo9agp6dVVVc3xp
YXhkMUIzNnl+LVhgIU5KP1FkcXh8OW9Ddmp5XmlrZVk+KXlzfngwJlkqKkJISEtSJlpwTVBGP1Ra
ZTkKelhEYD5jM29CfVo4ITZSPyN7U30/JiNxT2BZYlNBLWxmR1BfQjRmPypQVF4ySiorfGdpPzBz
d2Bfbkdsc0FGdH1BCnpoVzlzR2thVU1WJHlKKmlTUj1MWiY+RlhVKTNGYUVUVVclfV8pdkYwbk9a
V1hpPGg3VVRkYjIqIXZ4LX1OX1AwcAp6PD9tdyg7dE05Nk4rS3ZjZV9sSEZXOXZpXnlGK0BkcFk+
OXl5P1lRclVLcmxhPkFDYU1CMEleSWhNeyZOMyFERmYKej9+Unt5WnR8O3lmWll7KHxHRzVVd1Ep
OXcmMEs3JW0jYm19VXNtWmVFNkY3ay1JaCMrPWdtakRTfFRRbmNVfk4oCnpEbkM+X0JqTCpAIWB7
SjF8R0c8Mz55Mm8kcVQ1JFI8SVdFMz48Ti0tcV9zT2FyfVgxa00mYkNRPnBWeEoqbG8+Ngp6M3ZZ
SX56VFlRMHs3anRuSVhrOE4ySiQ3UC0+WSVTOF9zQnlYT3B6I1hIVWgzb3hFSyh8NlBLUk9VVmY7
QnU/Q2YKelprbVNQSnIkPFVqRkZgKmJ1MC16Yz9WZE5jc0lMX2xpSnZ8SlMyRENgcXRhSDU0VzhZ
RnBjSXJXKG12Zjs/YjVuCnomYjxQWHRyenVRPXp4Y3IxQm4jI2t6MDhzSjBBOW52SlA8cD8kTVgk
Ym8yNEwkIzVMN1liRkdWMCYpWU8hViFmbgp6WGYkQihaPSUkd3BDRn5+ciZlfmZ3d2JWSFJMTlA0
M2NNcEQ4K0BnQilPJSU1YGolUStLRWJpdStwUHhYdyRBNyEKek14VENAcX07YllwMzlpZz8xUTAl
QDUxbV5RJGA+eDxqSzNoRSRlZk10WTJhK150R3NUenFSYTc2TERAcWV3Xm8hCnpYKEtmZDMmXnEx
WiFvSEZTYXFXYkdiKWRyT1olfjdgM1dyKipDYyg1clB1ejtmRnghP0dffVBvVH1BR2Q2alUrbwp6
WUBSa3UoUG1uQjFANH01TSFEYDRgQ1Q9TmxHaEJnd2BXRDlKbVBmaUQ0cnNsZzdHKmVqdUtxJTF1
eyh6WXkqUDQKell2aEY8WT0mJkF1MGMteCFZPiZLWD85dGVsZTRlbyZNc0ZEWmpEQnY5fiRpRC1F
YGJiZVh+SGRoP21qI0d6VmBpCnpCfjw5S04kcUYlJCMtNGgzNihjMD1Kak1ueClufUBZfig4IXkl
TmBLaVJAPzNjc2ZZQTJkbTM3UHVFN3hwa2x9eQp6Y0J9aCEhJG9YMyEjTkgkKGU3XjVUKWV9VD1A
T0piSW9VZWNTWWRxJGJ5P3hmUEo2cEdoJEZTKFhgJnheU2MqLSoKemo8cChaI0NScXxFZ2NmSD1O
aSZHMDNVWHVUVnpidVclZ0k2ezk9O1d0I2lDKGVMTk9mNWlodlpFOCRuSDBgY3IyCnp5KDZUOG5o
OTA0bFhDVUY3RWVwaGN3I29tIXowRlhaSXpKLS1LdEcpJjNXaEdhPkM1P1leaEB9YERuMklKfXBX
Zgp6WmZldkomSipRVVV4dFRaTU1FWjN1P3dha2BkN2hhZipPWkA3Xz0qWkAtT3Qke0FHN3NkNWdN
UlF7dERTQlFISHcKekF6fTR4TXQ/R3lvV0M8aDtLJFE0cmZ1V2wjLUJ2LUJYKHFMaUBgb3RkZmE9
bEpZODBwMztUJklEXj9gKS1sfCFQCnp6KjYoYGk9amYrdGl2WEtha1JtUHlBaz1CLUhSWG1yI1No
eUZjVjheT34/VFUtI2R3K2R9b35JTTl8IUl1P05VYQp6WCV9WX4ka2d5Z2NQQyRzKFpXMEpoM1ZT
KyZ0elg5ZjxvSi11NHp5WDZ+KjxxdjteQ1YjNkFpLWVAP2ZLWldYPHoKelMpOShSaSV+cUo1QjtY
KTJYQWc8Pi1ObWotT1BARV94O0lkVGo/dVctdXlxM1JpOUt5eWNMZGIxVW1LIW5TQ2JtCnpkfX52
cT1SOFNuOFZfJV87YSU0VkU1LWxIbi0wJVZrWmhDfVorTG9qdighdCF1JXFsbWI/U044bG12XjlK
enE8Swp6V3BfKTQzRk5YJlo5SzdvR2QjPEMycWorYCFqfH13Z2taKU5DV2lmYV9ebldDb2Y+YEFp
OVd2WExxRj4+O1VlWG4KemtoPVM+c1c8aGo9YD9LV0cyaFVhOHVQOVIoQHk2UCg8TyFYUjlla0Ni
N1R5PzwpK2tjUEktdyhkOGAtUVNMd0NpCnp7Z01+N1FwbC1ve0JCSztXUX5iIW8mXihWaUt1VStK
WHJFVj12M1A7UGpJaVNRUntKXipPZmpUIWQ/Jk8tTFZAKQp6Qnt0WEg9ZVR7flpuVnRNOE9zcGVO
XmR2SFUpNmx7am0zVDdVZ2RaKG9OfkJEUSh6KiNSejAkRTtoNmZ+d21oPmMKeiRBaXBOOE92OF52
XnI/YWVWPE55V1BNUVR1R1BeQl8pO1ktR1JCPSM5M2BaND1WKGZHSGBtUWc7NWIrbWFBWkZxCnpz
TCh0TXZQSi04NEdvU3AjJn1fPCRpRz9oe0FRQ1lYS2lPMiRlTWN+WWN4biRyR0IkVTk+PHpuSGE8
UnVzUkVASAp6M25Cd285Vjw2Qy1JTV5eY0MwKG8tSyRtX0lpc0o4OSt5VlorJndwXkIzRHdDQTs/
Y3p5MzFtOUg/PkMoK29OUSUKenM5TXQ+X2hjJH1AKnFfRm9INSYybjxKT3tWfVlab0BoOCpjKHxD
Mm8tJjVaaGBIZ2huJUlhPUptNkhkc183Vj5+CnpoWUVNRCk5bk5iY00reWR1XndKKmU0KjlTZXB5
YTFuS1ZgU3klMWliN3tBPjJzST84WHZUVHs/NFl6NGo3VWtpeQp6a2dBdllUR2tDcG04fGcmXkBN
NlpgTU5ofTxEVyRiZW5KZGE0TGByRzhxQCNJPDUwOEhpKWdFXjVKOHwldXxscSMKekJCZE5TYj5i
cUIxc3htcnZmUnZ0NiNBMiFOZExTeCo2QlFSZX0xV2BzO1Rfc2lHTl4+ZT1+b18lJTBTRGlIN2ZY
Cnp2TzxQcG1tZUpFdHNHfj4tPVlzKWVVJE96YHswMGM/Zzw7V0Ewb1lZO2whUGU8RE5qRzNoIUF+
aztzWlEzfFZRJQp6P1RRPDA3fUJRYHFzY0sxPjh0YVkpcWBXWUJkTn5xNmFWZWpgSSFPRGRxWis+
Z2E9KEp0KW1qey1vZENjVkNaVSsKem9SZUFPe1IhR2ZvZmVlfEV7UW92VjlmXkRjO007MUwlWiVR
ZnFYe0JeRDBUYDE+cUtrV1R2UyZla1g2ISk4RXk7Cnp2fVp7c1RjKkI5PjR5IWtpcFBZV2RoalFr
JUVFaXdjaXlPU2MpbX1TUTdDfDBiUCN3UGVmZlcyNFRtUFBXYXFfTgp6YTY1RHYtMUQzVDR8UHYq
SkoyKEBHZ2xCQzQrNElEeyVLSkVacU5YQD9OSlItMiE1Tiswbll4RV5CYkc0c0swb1kKek8jV1F8
PkFhZE5IfnI2NyVwWD1xbzBIXiRMSUthMG8tR3dPNnxeWHFxZXQ3QWBrNFlRNHE5JXZDfkopd2pJ
USszCno0bGdfITVHcENKRWFfaXZsQHpJcmEmPm07WWJfeHBPRUEkYSVfRUR0Znt1RW9eNnZWRHB7
dCZMND1eTGF6Nz43MAp6WXRQOT9RI0xSIWJBKHFkOT41JXAyOzspVTl6QXNSelRTcE8lbmdIKyZm
VCVSYk9CdnsqMz9QXndreGlAYko8XmkKemFGZjY+TUI5LWZaQGliPGFydz9qKE1haTtZUjR6TTEk
NCtIdzFJdikwdjtWfT1WdWwzb2pHZVNAI3lzZy1ee0A2CnpzdkEqYFJHayR8R3x5Y2JecHAlXkVt
dF9QYl9+aCVVdHp1OU1pJXxzJVUpfWxjSV9hUDJWfWZRRVdVWDUqRCk7bAp6NFlAb0Z2YmxlaHU9
PCRuZU5ZcntUdHVYYmg/cjdwa3ZHM056ZUROamFQckZUTGBsISh0bC09TyQrQHdHZk9HTX0KelNg
YG5TIy05OSRpP3N9Pit6UXY4NVBSRHsrfUpHO3tvYUFhZGdmJWZJPkdLUjteYVB5UV9lX3lFVnRu
fkwyMncjCnpgO2xyfE96Q1kzPDFFYnwmazMlaTxXdUpxI1Y/Q0lsSGhTbVd6YndERn09ZTdtVCU+
IXc5P2xBT0BtSTNuNERFYwp6KiV9fVYxZGJONDk8RWtAUStvYXsrKVQ0eCYkSH5ATylla3NmMTZ5
T2JOIyZQQGF3eDUkTU0tKWxufDwkQnMqK2cKemo8VEQqNiFkZGoxRz4/bDQhNyQqXlg0Uk14QSEo
VGRoKFN8bHNQJnwjMD9SYXNYeDU8SyhMT21HXzJuRShSTEo0CnooY2dYTEM9RT8mUnlzQGorRT5j
eyF6UGh9dUFRdykzIzkoTCtzbyhhNF4oRWFRMzUoS1pfSHo7cHZgdzhaXjdragp6RWY1cWxANi02
KzJxdDhrNC1ZdHcmMjJJSit4M0xDRX5RJCNNb1I1SnNUcHZSO2shZkstendrPilva09UZ2JrUVYK
ejl0b31RKCtefGJASkVYdWY4Sj5qeDJPTikoa2RwY3BMamB2SW1JTEsoPyh7a3M8Y15rPWd+LWxt
V1ZkPzEkeHxQCnpkPyFqVClEVWtpLWA4X1Uoc2dGLVFndWM3YntBKiQlI35yWnFvRFZDSClIKXti
QTtycnlRMUc3ZVkpLWNzSFg3NAp6NXMmKWt1PnZQR3kkRDNRdntiM30pe3NfdCteWX1sTz9NNko8
em1VVnhIQXlmJGhFUzltKWVXbVF7VFIqRjY1ZWoKekhQIy1aeCtwT2xROy09X1Q5P3l9c2dAZiFx
fFAtYWEjfnZhPFRVUC16MmJBaEAjZEwwOGEpTVQoezhANGF2I0E8CnozZkJUTHk4UyN6dStGTU14
WHVJQzJpNEFYQzRaazRFYzZMPkYlWWZuQ3hPWFo4VUJ9Z2l9NmVoNHFQUlA2SUVfNgp6V2JZUEJa
bU5EPFlQQE9PRHpVM0tQfmFZYWQpeEs2aHh8cVVIOylBRkhzbDlrblBMSHRkdW9hdnZGY3MkWHch
QE4KelBUc2U+UzxFJUhsK0RxOEMwLUJtK2RJRnJ1NEtOODt2XiNePy0xcT5LV0JJK1crTnxBSkAm
VGZ4KCMxJDxZKiNTCnpEKE9wM2F6I1I0JEN8R1p3KSQqbTQ8QWo/QUx0bW1GWWwpOTlqWG1rT0Y1
SEBwbD5rU2JJdWpZZEUwWFpkZjBDcQp6cjVGfFo2KlBfJkVGYmd3T1BsMzJtWWNeO3ZPQilAXygr
bUwjYjBtNVF9XzVLSnVMJDczO2xXZyZQN01lJHc7SEoKekN+VXFPSndhY2k3NE0od3M5QFB3Y1d5
ayZeaVhHTT9iR3NYWl82eU5OT3lGK1VzcENqSjNgNy0pR1QzZjgoR2tOCnpCWClTZ3habHQqLSkr
VW1HamdYeyYwaDQ1bWlGT0YhV1ktVGRiXlBuc2dNOXMrT21SLTdTWlJPdUVvUWJpezJmPQp6KGww
OFM/WDdTcF9OKG1fek88SG9xMHtyeWg8VXhxcF96JHZ6cUU4c0dDaWJUT3RCMT0rbHJ+PjlSbmZz
QTQyK24KekFIRn16cWNtWFBRRj87OGFZOUZsTSFpKj1yUnZMKz9ZfGMzRk1nKVQ4QEU8QWZFZHlO
SGg0MXAtJGVpMyRmPH52CnojMVJyOXVAN3RhRlEkQyRfX3wzJVFWZ1RFVl9Ecj01VkJgZ3RCSiVN
UjZ4SUBuZXpNNyZ1QU8tcnJtb0xuYHhuKQp6RV8hViRDKXUlenRrNn5SSUNeYnwhfT9JM2lYenMy
PTlSVmk7MDAtTW1CRzhsSUBmeVUoUnAwUSNmMk40JnItd3sKejJ1JllhdlVSIWdlNz0pVWpjNFYy
KiQqMms7VUQkbnloUzkoZ3J1Ukk7Tj40QlV5QjFydUJ6cUQldVQjRWBqSUBoCno/Z35Za2khTXZX
d0F7fjFaK2Y+a2w+Z01lVVVafn1zKDsxMnM1cEJzUHlYOWlmT2ZUdXB9aVFnfDNobGg8Xz5tfgp6
K0llWjcmSnMyWjlgMT8xaXhgeXRiZnpga3pnRHY7R2pRTm5qQHM/MzdFPD54YWNtRSZhWUtseE4j
OTBTSzZuc08KeitWczxvQWRWeGhGIT0zcVZXKl9JTGtVKSp7cFcwI0dpRztnbmMpKkBGWUFiSHtw
TzI8Xk50K29WSiskJFQ1azwrCnpxOD1wcT92IUhrZ3hhfGNQTndwIS1nbHE0eTRme2I8fEBCRDNf
bl5kaUwmYjk2KFNmNStGUjVOZDlyd1prO152Twp6V35GRFhOdzdRSHtgJkJCOWNHM1ZFUz5BZ1Er
WT5PdWNRWV8lQ0dyUVNgTEFGUEFqRk97b154dmo+KDVTe0BJfXwKejRiOEZfdll1Vj0oV05jVGo3
SSV+QnQ3OEZ0S3FyUjh2KjxVckUrWHUrPEJyOWlpYUNTSW5WVzM1T084JjB2K1gjCnokMX51TF9R
V0gqS0I4a352QHxLJSZrOFRidiNsI0J5Xzc3N2R1T2tiRT5iPmBRKTUpUVQ4T09pSkAzNFluTEFY
Ygp6cF5TQiZkODZkd3lUQ0pycDRIS0AocDl+S1A8SGp+SFQxdX1kJSEqJXRScENabDRHMUlqM3RY
SlhuYkFjVXNXdkEKekpWYDN0TGkreTkmKzhWX1VyViF4KncyUkV1UVR2PnQ/O3dpJjVga2BDKE5u
fkcwQjNQQE44dG81TGJOMFI1ODNLCnpvVWxBbik9RD1oPSp0KlNYT1g3QCN1N3ZoWjUhUEJkfT0j
PXZIZFR3S2Q4ZVZMUmF1R3txWDg4eTAlZzBCZWUlNwp6YWsmYnJUbUZ4Rmp5KXhYT2pkXm0rUVds
RmpyaHI9KmJxUENjRHtiLWEmeFIlS0RoYz8+M2VtQyFOajFWZFoqZ2YKem9rQ35vclUqeSQqPlUj
RE1PcmZDNFFHLWBaYz52djdULSpaIVZCYWY0Pn54T05PR3dPdzgpbEopUD9vRzMzd2A3Cnp6JmFm
dFBabVZOMXN8bk81aWVIT3hWfm5oa3JYYnkoIU5QSDdIXz1RcWAjRnRtbXVqRWBxPypPTFg+NUQ0
P1IkUwp6S2VfJXZ1UD5rUWVuNUxaa3hwPyp0RyFgYDdWQzI0aUlVQUdIQzIoWUhsZn05TSEkWTgp
Z1MlMW5nb3kyMDBaRmsKejt8JXZFVWU0YzBEKCY1a3lGJkpzI3BlUDtQQ1A7KkBlK2ZiMjNLRnIq
Yj00MzBCY2Y+dTlvam1mTzg5Uj1KVEdBCnpNOFR1OWQyfWdIZERDVyNwKyk9Zip3I3FQektrIX4w
b35lR21pM3xmUypscGlRSC1FVlFwNHAqXnZib09iVkU1fgp6TWRjMHVVYylAYi1He2YpazxrbHRO
PHhJM2k0cVNYQl84QGVZdTB1cFoxIXBiR0tsMSZaJUojamhkKzg1cF9oQmQKej9wJDJwbWh8X1hx
cWE0WmxpZXAmTFhWQGNIP0NDY25DYkl3bWxDdWkjZyhZNU9Md0NxbChmQFI8KlZxV3tSbn1RCno5
bl9GeDU+PTwlMXwkK2hhfV8lKzZtfDxsXlgpamEqIWY4RCFPNj9xdE5Lfk0/Nz57KlYjekBLbDJp
NDIyZ3hKKQp6YUd6RHg9VGt+Jkw9LXImdXN3fDxiOGpqMCozT3g9YVczd2AlPkEyakJ9KFNYSjcx
I0tOUVpXeHUyJEdVY2Q8XkoKeip3dktlcmY9VUJXNz1DSkdjTjNyWiNURV5YaX5JVHUtdzY5QzV7
ci1TKWFxQnU4QjNNbThwNDFVTHtEQGB+fV9pCnpWQTwkWG0hSDdNT0B6cTM8ejJzbmlCQ0BhT0NR
Ql5wWH04JXRhUW82UCRqMCFlWng7NTk1TVd1dnlGSUp7MXdaMgp6Wjk2WE9LSTBYX1luUHx3P1Vq
d1VFM09vYCNTcDY4dFhBYk1GO2pFOEFlbnpgZCM1ZV8yNSVSTFpZX3V8Qmo3OV4KemBUeShtS2tJ
Wj1hcCFCfFY1bnBBKTxMQjJHYUBOMGBeZlV6OGhnZVBtJjlaSkdSM3M3QkpISGs8UChLMksyMUZ0
CnpXKyVDdCRTVHYrMmwwSW14S1RSMXtII1dyTmlIZGYmYkw0fThqKXI3JUo5QmBEdjEmUGAxdnhM
ejJ3X1AjYjc9eQp6SzVPUyNyeyRqQUNjKH5oNlhCdGVFbnxrfEAlPUp2VUlWNkBZVVlHR0gofTh3
cW1BNFZySWVGWFZyVmNuOTdrYUoKej81Q0RZWjB6Znw/XjE0UiZSeVI1RENtNElBNEpnJU0zRCl3
Szl0VnJEZ0VgYDFTclgjM21rZUVsNm1Te1B3RjEoCnpCJj04Pi0jWnUmQG1DZExEOyNBb0g3OFly
MzMlMnsmd2N2Z09KQ2tOPTAtPVBTNHZYU0F0QWwzTSE1eUBHaTw4Jgp6WCVvRzM7I1JXUTRLKUwy
Nj0wc2N5ejElcFJ7VjcpTnR1MkxkVlUjbHNMK1BFR21fbWlkJEJMI2l7a2VNZUZPYTgKenlpVns5
SFQ8ZEtVJiFQb3ErSWNPb045Mnl0K0tjQjxWKX1JN2dHIzstNnV4biFzNEBQc1QpTWErI1F4ISRP
TXpeCnp6UVVVKFJrNm4meiV6VGo0OHlhVW1Cd0I3em5VJD9aKm5oUXkzd1hFcn0wYEt7KWZPITMq
aWU2cD02ans9TmRfQgp6WlNUKWZCU2cqODRKdkpEdD5CY1pDQiUmZFpBVWZGQl9eKjFqT3ItYEx6
eGFuZGkmJEFxfkBWTWV8QkVJeUtCP34KejZ4JTJ3M0xiTnkjP29IVHo+YlF3b1JeUGtJNSFHS013
Z31lWF8oMzB0UFJ1KFY3fWUjSHkoTWojPHchUXVEa3wjCnpmcTBzUkJIUjVwbzxJRU8qS31xOERR
WClJYUZOSVU+dkFMI2cxZFM7TCNOO3NsIW88c2Y7akk4TjZfa2phRD1uJgp6bzU4JC1QKGQoTUkz
PkVvZyZhSVNMWkFTXjAmd0FPNzlycHt2WE9mPFlFfE0lb3tnKzU1RHYkT3tHKjdBX3p5KnsKel5N
NUVsJWx3QzhrbVd4ViVVR051PnxZOEl5c0QoWFdNMUZEV25IUGlXel5XO144Mkt9PHZ5ZG88ckFq
QVdJXj4zCnpfcksoS0pBY2JOOSlIUHZRQTFzX3xKPGRXOTxJOyo+dV5vYHlLKCteZ1lJe097JiQx
bmNaMmJGZ1h5MXAxVD5yKwp6M2N9Vns2Z0dURSNFJiFoKjlGRHRCP1I9PillIVBlVmRmOXZwWDsp
SmdzKj1IUF9hTFM0fVM9RmpESEd8dlZhVTgKel56X2Q3Mn5HKzdiJSVIazA8eGV7Tkg4dT1UcClF
Rjc1K2Jacn19JXN8SCgxYHhCaFQhZkQjYWN8S3h2WTBwUHk/CkgkVmJ1UUZWVVI7CgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyBiL0xheW91dFRlc3Rz
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDM2NTA4NGYzZjgyMTE2Zjg1ZjBhNWVjYzVhZDc4OGJmOGNkYTQ3MTIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLWh0bWwgewotICAg
IGZvbnQtZmFtaWx5OkRlamFWdSBTYW5zLCBCaXRzdHJlYW0gVmVyYSBTYW5zLCBBcmlhbCwgU2Fu
czsKLX0KLQotI2xvZyAud2FybmluZywKLSNsb2cgLndhcm5pbmcgYSB7Ci0gIGNvbG9yOiBibGFj
azsKLSAgYmFja2dyb3VuZDogeWVsbG93OwotfQotCi0jbG9nIC5lcnJvciwKLSNsb2cgLmVycm9y
IGEgewotICBjb2xvcjogd2hpdGU7Ci0gIGJhY2tncm91bmQ6IHJlZDsKLX0KLQotI2xvZyBwcmUg
ewotICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKLSAgcGFkZGluZzogMWVtOwotfQotCi1zZWN0
aW9uI3N1bW1hcnkgewotICAgIG1hcmdpbi1ib3R0b206MWVtOwotfQotCi10YWJsZSNyZXN1bHRz
IHsKLSAgICBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ci0gICAgdGFibGUtbGF5b3V0OmZpeGVk
OwotICAgIHdpZHRoOjEwMCU7Ci19Ci0KLXRhYmxlI3Jlc3VsdHMgdGg6Zmlyc3QtY2hpbGQsCi10
YWJsZSNyZXN1bHRzIHRkOmZpcnN0LWNoaWxkIHsKLSAgICB3aWR0aDo0ZW07Ci19Ci0KLXRhYmxl
I3Jlc3VsdHMgdGg6bGFzdC1jaGlsZCwKLXRhYmxlI3Jlc3VsdHMgdGQ6bGFzdC1jaGlsZCB7Ci0g
ICAgd2lkdGg6NTAlOwotfQotCi10YWJsZSNyZXN1bHRzLmFzc2VydGlvbnMgdGg6bGFzdC1jaGls
ZCwKLXRhYmxlI3Jlc3VsdHMuYXNzZXJ0aW9ucyB0ZDpsYXN0LWNoaWxkIHsKLSAgICB3aWR0aDoz
NSU7Ci19Ci0KLXRhYmxlI3Jlc3VsdHMgdGggewotICAgIHBhZGRpbmc6MDsKLSAgICBwYWRkaW5n
LWJvdHRvbTowLjVlbTsKLSAgICBib3JkZXItYm90dG9tOm1lZGl1bSBzb2xpZCBibGFjazsKLX0K
LQotdGFibGUjcmVzdWx0cyB0ZCB7Ci0gICAgcGFkZGluZzoxZW07Ci0gICAgcGFkZGluZy1ib3R0
b206MC41ZW07Ci0gICAgYm9yZGVyLWJvdHRvbTp0aGluIHNvbGlkIGJsYWNrOwotfQotCi10ci5w
YXNzID4gdGQ6Zmlyc3QtY2hpbGQgewotICAgIGNvbG9yOmdyZWVuOwotfQotCi10ci5mYWlsID4g
dGQ6Zmlyc3QtY2hpbGQgewotICAgIGNvbG9yOnJlZDsKLX0KLQotdHIudGltZW91dCA+IHRkOmZp
cnN0LWNoaWxkIHsKLSAgICBjb2xvcjpyZWQ7Ci19Ci0KLXRyLm5vdHJ1biA+IHRkOmZpcnN0LWNo
aWxkIHsKLSAgICBjb2xvcjpibHVlOwotfQotCi0ucGFzcyA+IHRkOmZpcnN0LWNoaWxkLCAuZmFp
bCA+IHRkOmZpcnN0LWNoaWxkLCAudGltZW91dCA+IHRkOmZpcnN0LWNoaWxkLCAubm90cnVuID4g
dGQ6Zmlyc3QtY2hpbGQgewotICAgIGZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOwotfQotCi10YWJs
ZSNyZXN1bHRzIHNwYW4gewotICAgIGRpc3BsYXk6YmxvY2s7Ci19Ci0KLXRhYmxlI3Jlc3VsdHMg
c3Bhbi5leHBlY3RlZCB7Ci0gICAgZm9udC1mYW1pbHk6RGVqYVZ1IFNhbnMgTW9ubywgQml0c3Ry
ZWFtIFZlcmEgU2FucyBNb25vLCBNb25vc3BhY2U7Ci0gICAgd2hpdGUtc3BhY2U6cHJlOwotfQot
Ci10YWJsZSNyZXN1bHRzIHNwYW4uYWN0dWFsIHsKLSAgICBmb250LWZhbWlseTpEZWphVnUgU2Fu
cyBNb25vLCBCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8sIE1vbm9zcGFjZTsKLSAgICB3aGl0ZS1z
cGFjZTpwcmU7Ci19Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1kZWJ1
Z2dpbmcuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktZGVidWdnaW5nLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDM1YzcxNmE3ZjA0OTgzOTY3MWQ1MjkzODFjMjcyMTE4
N2RmOWI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3Jlc291cmNlcy91aS1kZWJ1Z2dpbmcuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1
OCArMCwwIEBACi0vLyBUbyBkb3VibGUgY2hlY2sgbG9jYXRpb24gb2YgdG91Y2hlcyBvciBvdGhl
ciB4LHkgY29vcmRpbmF0ZXMKLWZ1bmN0aW9uIGRlYnVnRG90KHgsIHksIGVsZW1lbnQgPSBkb2N1
bWVudC5ib2R5KQotewotICAgIHZhciBkb3RTaXplID0gMTA7Ci0gICAgdmFyIGRvdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkZWJ1Z0RvdCIpOwotICAgIGlmICghZG90KSB7Ci0gICAgICAg
IGRvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBkb3QuaWQgPSAi
ZGVidWdEb3QiOwotICAgIH0KLSAgICAKLSAgICBkb3Quc3R5bGUucG9pbnRlckV2ZW50cyA9ICJu
b25lIjsKLSAgICAKLSAgICBkb3Quc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwotICAgIGRv
dC5zdHlsZS5oZWlnaHQgPSBkb3RTaXplICsgInB4IjsKLSAgICBkb3Quc3R5bGUud2lkdGggPSBk
b3RTaXplICsgInB4IjsKLSAgICBkb3Quc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIkRlZXBQaW5r
IjsKLSAgICBkb3Quc3R5bGUuYm9yZGVyUmFkaXVzID0gIjEwMCUiOwotICAgIGRvdC5zdHlsZS5s
ZWZ0ID0gKHggLSBkb3RTaXplLzIpKyJweCI7Ci0gICAgZG90LnN0eWxlLnRvcCA9ICh5IC0gZG90
U2l6ZS8yKSsicHgiOwotICAgIAotICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoZG90KTsKLX0KLQot
ZnVuY3Rpb24gcmVtb3ZlRGVidWdEb3QoKQotewotICAgIHZhciBkb3QgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGVidWdEb3QiKTsKLSAgICBpZiAoZG90LnBhcmVudE5vZGUpCi0gICAgICAg
IGRvdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRvdCk7Ci19Ci0KLS8vIFRvIGRvdWJsZSBjaGVj
ayBsb2NhdGlvbiBvZiB3b3JkIGJveGVzIG9yIG90aGVyIHgseSBjb29yZGluYXRlcwotZnVuY3Rp
b24gZGVidWdSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIGVsZW1lbnQgPSBkb2N1bWVudC5ib2R5
KQotewotICAgIHZhciByZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlYnVnUmVjdCIp
OwotICAgIGlmICghcmVjdCkgewotICAgICAgICByZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgICAgIHJlY3QuaWQgPSAiZGVidWdSZWN0IjsKLSAgICB9Ci0gICAgCi0g
ICAgcmVjdC5zdHlsZS5wb2ludGVyRXZlbnRzID0gIm5vbmUiOwotICAgIAotICAgIHJlY3Quc3R5
bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwotICAgIHJlY3Quc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0
ICsgInB4IjsKLSAgICByZWN0LnN0eWxlLndpZHRoID0gd2lkdGggKyAicHgiOwotICAgIHJlY3Qu
c3R5bGUuYmFja2dyb3VuZENvbG9yID0gInJnYmEoMjU1LDAsMjU1LDAuNSkiOwotICAgIHJlY3Qu
c3R5bGUudG9wID0geSArICJweCI7Ci0gICAgcmVjdC5zdHlsZS5sZWZ0ID0geCArICJweCI7Ci0g
ICAgCi0gICAgZWxlbWVudC5hcHBlbmRDaGlsZChyZWN0KTsKLX0KLQotZnVuY3Rpb24gcmVtb3Zl
RGVidWdSZWN0KCkKLXsKLSAgICB2YXIgcmVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
ZWJ1Z1JlY3QiKTsKLSAgICBpZiAocmVjdC5wYXJlbnROb2RlKQotICAgICAgICByZWN0LnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQocmVjdCk7Ci19Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jl
c291cmNlcy91aS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjMyNzRkMzQzOTY5ZmM2Njg2MjFjYzY0
NWYzYWJkYTVlOTFkZWUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKKysrIC9kZXYvbnVsbApA
QCAtMSwxNjg2ICswLDAgQEAKLQotd2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewot
ICAgIHN0YXRpYyBpc0lPU0ZhbWlseSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGVzdFJ1bm5l
ci5pc0lPU0ZhbWlseTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgaXNXZWJLaXQyKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0ZXN0UnVubmVyLmlzV2ViS2l0MjsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
ZG91YmxlQ2xpY2tBdCh4LCB5KQotICAgIHsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oeCwgeSk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwotICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwotICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGRvdWJsZUNs
aWNrQXRNb3VzZURvd24oeDEsIHkxKQotICAgIHsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oeDEsIHkxKTsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Ci0gICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
Ci0gICAgfQotCi0gICAgc3RhdGljIG1vdXNlVXAoKQotICAgIHsKLSAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VVcCgpOwotICAgIH0KLQotICAgIHN0YXRpYyBkb3VibGVDbGlja0F0VGhlbkRyYWdU
byh4MSwgeTEsIHgyLCB5MikKLSAgICB7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgxLCB5MSk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwotICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwotICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4MiwgeTIpOwotICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVVwKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGRyYWdNb3VzZUFjcm9zc0VsZW1lbnQo
ZWxlbWVudCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHgxID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsg
ZWxlbWVudC5vZmZzZXRXaWR0aDsKLSAgICAgICAgY29uc3QgeDIgPSBlbGVtZW50Lm9mZnNldExl
ZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoICogLjc1OwotICAgICAgICBjb25zdCB4MyA9IGVsZW1l
bnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwotICAgICAgICBjb25zdCB4
NCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyA0OwotICAgICAg
ICBjb25zdCB4NSA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKLSAgICAgICAgY29uc3QgeSA9IGVsZW1l
bnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwotICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyh4MSwgeSk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgyLCB5KTsKLSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeDMsIHkpOwotICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4NCwgeSk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHg1LCB5KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgZG91YmxlQ2xpY2tFbGVtZW50
TW91c2VEb3duKGVsZW1lbnQxKQotICAgIHsKLSAgICAgICAgY29uc3QgeDEgPSBlbGVtZW50MS5v
ZmZzZXRMZWZ0ICsgZWxlbWVudDEub2Zmc2V0V2lkdGggLyAyOwotICAgICAgICBjb25zdCB5MSA9
IGVsZW1lbnQxLm9mZnNldFRvcCArIGVsZW1lbnQxLm9mZnNldEhlaWdodCAvIDI7Ci0gICAgICAg
IHJldHVybiBVSUhlbHBlci5kb3VibGVDbGlja0F0TW91c2VEb3duKHgxLCB5MSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIGFzeW5jIG1vdmVNb3VzZUFuZFdhaXRGb3JGcmFtZSh4LCB5KQotICAgIHsK
LSAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7Ci0gICAgICAgIGF3YWl0IFVJ
SGVscGVyLmFuaW1hdGlvbkZyYW1lKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGFzeW5jIG1vdXNl
V2hlZWxTY3JvbGxBdCh4LCB5LCBiZWdpblgsIGJlZ2luWSwgZGVsdGFYLCBkZWx0YVkpCi0gICAg
ewotICAgICAgICBpZiAoYmVnaW5YID09PSB1bmRlZmluZWQpCi0gICAgICAgICAgICBiZWdpblgg
PSAwOwotICAgICAgICBpZiAoYmVnaW5ZID09PSB1bmRlZmluZWQpCi0gICAgICAgICAgICBiZWdp
blkgPSAtMTsKLQotICAgICAgICBpZiAoZGVsdGFYID09PSB1bmRlZmluZWQpCi0gICAgICAgICAg
ICBkZWx0YVggPSAwOwotICAgICAgICBpZiAoZGVsdGFZID09PSB1bmRlZmluZWQpCi0gICAgICAg
ICAgICBkZWx0YVkgPSAtMTA7Ci0KLSAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwotICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoYmVnaW5Y
LCBiZWdpblksICJiZWdhbiIsICJub25lIik7Ci0gICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkZWx0YVgsIGRlbHRhWSwgImNoYW5nZWQi
LCAibm9uZSIpOwotICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgImVuZGVkIiwgIm5vbmUiKTsKLSAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUocmVzb2x2ZSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIGFzeW5jIG1vdXNlV2hlZWxNYXlCZWdpbkF0KHgsIHkpCi0gICAgewotICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKLSAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKHgsIHksICJtYXliZWdpbiIs
ICJub25lIik7Ci0gICAgICAgIGF3YWl0IFVJSGVscGVyLmFuaW1hdGlvbkZyYW1lKCk7Ci0gICAg
fQotCi0gICAgc3RhdGljIGFzeW5jIG1vdXNlV2hlZWxDYW5jZWxBdCh4LCB5KQotICAgIHsKLSAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7Ci0gICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyh4LCB5LCAiY2FuY2VsbGVk
IiwgIm5vbmUiKTsKLSAgICAgICAgYXdhaXQgVUlIZWxwZXIuYW5pbWF0aW9uRnJhbWUoKTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgYXN5bmMgd2FpdEZvclNjcm9sbENvbXBsZXRpb24oKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKCgpID0+IHsKLSAgICAgICAgICAg
ICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVzb2x2ZSk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGFzeW5jIGFuaW1hdGlvbkZyYW1lKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOwot
ICAgIH0KLQotICAgIHN0YXRpYyBhc3luYyByZW5kZXJpbmdVcGRhdGUoKQotICAgIHsKLSAgICAg
ICAgYXdhaXQgVUlIZWxwZXIuYW5pbWF0aW9uRnJhbWUoKTsKLSAgICAgICAgYXdhaXQgVUlIZWxw
ZXIuZGVsYXlGb3IoMCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGFzeW5jIHdhaXRGb3JDb25kaXRp
b24oY29uZGl0aW9uRnVuYykKLSAgICB7Ci0gICAgICAgIHdoaWxlICghY29uZGl0aW9uRnVuYygp
KSB7Ci0gICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5hbmltYXRpb25GcmFtZSgpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgc3RhdGljIHNlbmRFdmVudFN0cmVhbShldmVudFN0cmVhbSkKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IGV2ZW50U3RyZWFtQXNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShl
dmVudFN0cmVhbSk7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAgICAgICAgICAgIChmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnNlbmRFdmVudFN0cmVh
bShcYCR7ZXZlbnRTdHJlYW1Bc1N0cmluZ31cYCwgKCkgPT4gewotICAgICAgICAgICAgICAgICAg
ICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICAgICAgfSkoKTsKLSAgICAgICAgICAgIGAsIHJlc29sdmUpOwot
ICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdGFwQXQoeCwgeSwgbW9kaWZpZXJzPVtd
KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5pc0lPU0ZhbWlseSgpKTsKLQot
ICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFtb2RpZmllcnMgfHwgIW1vZGlmaWVycy5sZW5ndGgpOwotICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuYWRkVG91Y2hQb2ludCh4LCB5KTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLnRvdWNo
U3RhcnQoKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLnJlbGVhc2VUb3VjaFBvaW50KDApOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKLSAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZSgocmVzb2x2ZSkgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgCi0g
ICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnNpbmdsZVRhcEF0UG9pbnRXaXRoTW9kaWZpZXJz
KCR7eH0sICR7eX0sICR7SlNPTi5zdHJpbmdpZnkobW9kaWZpZXJzKX0sIGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOwotICAg
ICAgICAgICAgICAgIH0pO2AsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgdGFwRWxlbWVudChlbGVtZW50LCBkZWxheSA9IDApCi0gICAgewotICAgICAgICBjb25z
dCB4ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgKGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyKTsKLSAg
ICAgICAgY29uc3QgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgKGVsZW1lbnQub2Zmc2V0SGVpZ2h0
IC8gMik7Ci0gICAgICAgIHRoaXMudGFwQXQoeCwgeSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGRv
dWJsZVRhcEVsZW1lbnQoZWxlbWVudCwgZGVsYXkgPSAwKQotICAgIHsKLSAgICAgICAgY29uc3Qg
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIChlbGVtZW50Lm9mZnNldFdpZHRoIC8gMik7Ci0gICAg
ICAgIGNvbnN0IHkgPSBlbGVtZW50Lm9mZnNldFRvcCArIChlbGVtZW50Lm9mZnNldEhlaWdodCAv
IDIpOwotICAgICAgICB0aGlzLmRvdWJsZVRhcEF0KHgsIHksIGRlbGF5KTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgZG91YmxlVGFwQXQoeCwgeSwgZGVsYXkgPSAwKQotICAgIHsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5pc0lPU0ZhbWlseSgpKTsKLQotICAgICAgICBpZiAoIXRoaXMuaXNX
ZWJLaXQyKCkpIHsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoeCwgeSk7
Ci0gICAgICAgICAgICBldmVudFNlbmRlci50b3VjaFN0YXJ0KCk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLnRv
dWNoRW5kKCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KHgsIHkpOwot
ICAgICAgICAgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOwotICAgICAgICAgICAgZXZlbnRT
ZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci50b3Vj
aEVuZCgpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7Ci0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIu
ZG91YmxlVGFwQXRQb2ludCgke3h9LCAke3l9LCAke2RlbGF5fSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0gICAgICAg
ICAgICAgICAgfSk7YCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRp
YyBodW1hblNwZWVkRG91YmxlVGFwQXQoeCwgeSkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuaXNJT1NGYW1pbHkoKSk7Ci0KLSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0Migp
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgc2xlZXAgaW4gaGVyZS4KLSAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoeCwgeSk7Ci0gICAgICAgICAgICBldmVudFNl
bmRlci50b3VjaFN0YXJ0KCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQ
b2ludCgwKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLnRvdWNoRW5kKCk7Ci0gICAgICAgICAg
ICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KHgsIHkpOwotICAgICAgICAgICAgZXZlbnRTZW5k
ZXIudG91Y2hTdGFydCgpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9p
bnQoMCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci50b3VjaEVuZCgpOwotICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIFVJ
SGVscGVyLmRvdWJsZVRhcEF0KHgsIHksIDAuMTIpOwotICAgIH0KLQotICAgIHN0YXRpYyBodW1h
blNwZWVkWm9vbUJ5RG91YmxlVGFwcGluZ0F0KHgsIHkpCi0gICAgewotICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLmlzSU9TRmFtaWx5KCkpOwotCi0gICAgICAgIGlmICghdGhpcy5pc1dlYktp
dDIoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIHNsZWVwIGluIGhlcmUuCi0gICAg
ICAgICAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KHgsIHkpOwotICAgICAgICAgICAgZXZl
bnRTZW5kZXIudG91Y2hTdGFydCgpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRv
dWNoUG9pbnQoMCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci50b3VjaEVuZCgpOwotICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2ludCh4LCB5KTsKLSAgICAgICAgICAgIGV2ZW50
U2VuZGVyLnRvdWNoU3RhcnQoKTsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLnJlbGVhc2VUb3Vj
aFBvaW50KDApOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKLSAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdChgCi0gICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZEVuZFpvb21p
bmdDYWxsYmFjayA9ICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRp
ZEVuZFpvb21pbmdDYWxsYmFjayA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29udHJv
bGxlci51aVNjcmlwdENvbXBsZXRlKHVpQ29udHJvbGxlci56b29tU2NhbGUpOwotICAgICAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRvdWJsZVRhcEF0UG9pbnQo
JHt4fSwgJHt5fSwgMC4xMiwgKCkgPT4geyB9KTtgLCByZXNvbHZlKTsKLSAgICAgICAgfSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIHpvb21CeURvdWJsZVRhcHBpbmdBdCh4LCB5KQotICAgIHsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5pc0lPU0ZhbWlseSgpKTsKLQotICAgICAgICBpZiAo
IXRoaXMuaXNXZWJLaXQyKCkpIHsKLSAgICAgICAgICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9p
bnQoeCwgeSk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci50b3VjaFN0YXJ0KCk7Ci0gICAgICAg
ICAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsKLSAgICAgICAgICAgIGV2ZW50
U2VuZGVyLnRvdWNoRW5kKCk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50
KHgsIHkpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOwotICAgICAgICAg
ICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7Ci0gICAgICAgICAgICBldmVudFNl
bmRlci50b3VjaEVuZCgpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7Ci0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAgICAgICAgICB1aUNv
bnRyb2xsZXIuZGlkRW5kWm9vbWluZ0NhbGxiYWNrID0gKCkgPT4gewotICAgICAgICAgICAgICAg
ICAgICB1aUNvbnRyb2xsZXIuZGlkRW5kWm9vbWluZ0NhbGxiYWNrID0gbnVsbDsKLSAgICAgICAg
ICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUodWlDb250cm9sbGVyLnpv
b21TY2FsZSk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICB1aUNvbnRyb2xs
ZXIuZG91YmxlVGFwQXRQb2ludCgke3h9LCAke3l9LCAwLCAoKSA9PiB7IH0pO2AsIHJlc29sdmUp
OwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYWN0aXZhdGVBdCh4LCB5LCBtb2Rp
ZmllcnM9W10pCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMu
aXNJT1NGYW1pbHkoKSkgewotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oMCwgbW9kaWZpZXJzKTsKLSAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoMCwgbW9kaWZpZXJzKTsKLSAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNj
cmlwdChgCi0gICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnNpbmdsZVRhcEF0UG9pbnRXaXRo
TW9kaWZpZXJzKCR7eH0sICR7eX0sICR7SlNPTi5zdHJpbmdpZnkobW9kaWZpZXJzKX0sIGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0
ZSgpOwotICAgICAgICAgICAgICAgIH0pO2AsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgYWN0aXZhdGVFbGVtZW50KGVsZW1lbnQsIG1vZGlmaWVycz1bXSkKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IHggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNl
dFdpZHRoIC8gMjsKLSAgICAgICAgY29uc3QgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVu
dC5vZmZzZXRIZWlnaHQgLyAyOwotICAgICAgICByZXR1cm4gVUlIZWxwZXIuYWN0aXZhdGVBdCh4
LCB5LCBtb2RpZmllcnMpOwotICAgIH0KLQotICAgIHN0YXRpYyBhc3luYyBkb3VibGVBY3RpdmF0
ZUF0KHgsIHkpCi0gICAgewotICAgICAgICBpZiAodGhpcy5pc0lPU0ZhbWlseSgpKQotICAgICAg
ICAgICAgYXdhaXQgVUlIZWxwZXIuZG91YmxlVGFwQXQoeCwgeSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRvdWJsZUNsaWNrQXQoeCwgeSk7Ci0gICAgfQotCi0g
ICAgc3RhdGljIGFzeW5jIGRvdWJsZUFjdGl2YXRlQXRTZWxlY3Rpb25TdGFydCgpCi0gICAgewot
ICAgICAgICBjb25zdCByZWN0cyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDAp
LmdldENsaWVudFJlY3RzKCk7Ci0gICAgICAgIGNvbnN0IHggPSByZWN0c1swXS5sZWZ0OwotICAg
ICAgICBjb25zdCB5ID0gcmVjdHNbMF0udG9wOwotICAgICAgICBpZiAodGhpcy5pc0lPU0ZhbWls
eSgpKSB7Ci0gICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUFuZFdhaXRGb3JJbnB1
dFNlc3Npb25BdCh4LCB5KTsKLSAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRvdWJsZVRhcEF0
KHgsIHkpOwotICAgICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGhlcmUgdG8gZGVhbCB3aXRoIGFz
eW5jL3N5bmMgY29weS9wYXN0ZSBjYWxscywgc28KLSAgICAgICAgICAgIC8vIG9uY2UgPHJkYXI6
Ly9wcm9ibGVtLzE2MjA3MDAyPiBpcyByZXNvbHZlZCwgc2hvdWxkIGJlIGFibGUgdG8gcmVtb3Zl
IGZvciBmYXN0ZXIgdGVzdHMuCi0gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoInVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRl
KCkiLCByZXNvbHZlKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYXdhaXQgVUlIZWxw
ZXIuZG91YmxlQ2xpY2tBdCh4LCB5KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYXN5bmMgc2VsZWN0
V29yZEJ5RG91YmxlVGFwT3JDbGljayhlbGVtZW50LCByZWxhdGl2ZVggPSA1LCByZWxhdGl2ZVkg
PSA1KQotICAgIHsKLSAgICAgICAgY29uc3QgYm91bmRpbmdSZWN0ID0gZWxlbWVudC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgY29uc3QgeCA9IGJvdW5kaW5nUmVjdC54ICsgcmVs
YXRpdmVYOwotICAgICAgICBjb25zdCB5ID0gYm91bmRpbmdSZWN0LnkgKyByZWxhdGl2ZVk7Ci0g
ICAgICAgIGlmICh0aGlzLmlzSU9TRmFtaWx5KCkpIHsKLSAgICAgICAgICAgIGF3YWl0IFVJSGVs
cGVyLmFjdGl2YXRlQW5kV2FpdEZvcklucHV0U2Vzc2lvbkF0KHgsIHkpOwotICAgICAgICAgICAg
YXdhaXQgVUlIZWxwZXIuZG91YmxlVGFwQXQoeCwgeSk7Ci0gICAgICAgICAgICAvLyBUaGlzIGlz
IG9ubHkgaGVyZSB0byBkZWFsIHdpdGggYXN5bmMvc3luYyBjb3B5L3Bhc3RlIGNhbGxzLCBzbwot
ICAgICAgICAgICAgLy8gb25jZSA8cmRhcjovL3Byb2JsZW0vMTYyMDcwMDI+IGlzIHJlc29sdmVk
LCBzaG91bGQgYmUgYWJsZSB0byByZW1vdmUgZm9yIGZhc3RlciB0ZXN0cy4KLSAgICAgICAgICAg
IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCgidWlD
b250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoKSIsIHJlc29sdmUpKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmRvdWJsZUNsaWNrQXQoeCwgeSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMga2V5RG93bihrZXksIG1vZGlmaWVycz1bXSkKLSAg
ICB7Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgp
KSB7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKGtleSwgbW9kaWZpZXJzKTsKLSAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVyLmtleURvd24oIiR7a2V5fSIsICR7SlNPTi5zdHJp
bmdpZnkobW9kaWZpZXJzKX0pO2AsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdG9nZ2xlQ2Fwc0xvY2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKChyZXNvbHZlKSA9PiB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1
aUNvbnRyb2xsZXIudG9nZ2xlQ2Fwc0xvY2soKCkgPT4gdWlDb250cm9sbGVyLnVpU2NyaXB0Q29t
cGxldGUoKSk7YCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBr
ZXlib2FyZElzQXV0b21hdGljYWxseVNoaWZ0ZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlw
dChgdWlDb250cm9sbGVyLmtleWJvYXJkSXNBdXRvbWF0aWNhbGx5U2hpZnRlZGAsIHJlc3VsdCA9
PiByZXNvbHZlKHJlc3VsdCA9PT0gInRydWUiKSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAg
IHN0YXRpYyBpc0FuaW1hdGluZ0RyYWdDYW5jZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlw
dChgdWlDb250cm9sbGVyLmlzQW5pbWF0aW5nRHJhZ0NhbmNlbGAsIHJlc3VsdCA9PiByZXNvbHZl
KHJlc3VsdCA9PT0gInRydWUiKSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBl
bnN1cmVQcmVzZW50YXRpb25VcGRhdGUoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzV2Vi
S2l0MigpKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKLSAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3Jp
cHQoYAotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5kb0FmdGVyUHJlc2VudGF0aW9uVXBk
YXRlKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3Jp
cHRDb21wbGV0ZSgpOwotICAgICAgICAgICAgICAgIH0pO2AsIHJlc29sdmUpOwotICAgICAgICB9
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgZW5zdXJlU3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlKCkK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSkgewotICAgICAgICAgICAgdGVz
dFJ1bm5lci5kaXNwbGF5KCk7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAgICAgICAgICB1aUNv
bnRyb2xsZXIuZG9BZnRlck5leHRTdGFibGVQcmVzZW50YXRpb25VcGRhdGUoZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0g
ICAgICAgICAgICAgICAgfSk7YCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAg
IHN0YXRpYyBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlRm9yRWxlbWVudChlbGVtZW50
KQotICAgIHsKLSAgICAgICAgY29uc3QgYm91bmRpbmdSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKTsKLSAgICAgICAgY29uc3QgeCA9IGJvdW5kaW5nUmVjdC54ICsgNTsKLSAg
ICAgICAgY29uc3QgeSA9IGJvdW5kaW5nUmVjdC55ICsgNTsKLQotICAgICAgICBpZiAoIXRoaXMu
aXNXZWJLaXQyKCkpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwotICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5V
SVNjcmlwdChgCi0gICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmVuc3VyZVBvc2l0aW9uSW5m
b3JtYXRpb25Jc1VwVG9EYXRlQXQoJHt4fSwgJHt5fSwgZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOwotICAgICAgICAgICAg
ICAgIH0pO2AsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgZGVs
YXlGb3IobXMpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBz
ZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNjcm9sbFRvKHgs
IHksIHVuY29uc3RyYWluZWQpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkp
IHsKLSAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh4LCB5KTsKLSAgICAgICAgICAgIHJldHVy
biBQcm9taXNlLnJlc29sdmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAot
ICAgICAgICAgICAgICAgIChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgdWlDb250
cm9sbGVyLmRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5zY3JvbGxUb09m
ZnNldCgke3h9LCAke3l9LCB7IHVuY29uc3RyYWluZWQ6ICR7dW5jb25zdHJhaW5lZH0gfSk7Ci0g
ICAgICAgICAgICAgICAgfSkoKWAsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0gICAg
Ci0gICAgc3RhdGljIGltbWVkaWF0ZVNjcm9sbFRvKHgsIHksIHVuY29uc3RyYWluZWQpCi0gICAg
ewotICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpIHsKLSAgICAgICAgICAgIHdpbmRvdy5z
Y3JvbGxUbyh4LCB5KTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAgICAgICAgICAgIHVpQ29udHJv
bGxlci5pbW1lZGlhdGVTY3JvbGxUb09mZnNldCgke3h9LCAke3l9LCB7IHVuY29uc3RyYWluZWQ6
ICR7dW5jb25zdHJhaW5lZH0gfSk7YCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQot
ICAgIHN0YXRpYyBpbW1lZGlhdGVVbnN0YWJsZVNjcm9sbFRvKHgsIHksIHVuY29uc3RyYWluZWQp
Ci0gICAgewotICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpIHsKLSAgICAgICAgICAgIHdp
bmRvdy5zY3JvbGxUbyh4LCB5KTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAgICAgICAgICAgIHVp
Q29udHJvbGxlci5zdGFibGVTdGF0ZU92ZXJyaWRlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
dWlDb250cm9sbGVyLmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KCR7eH0sICR7eX0sIHsgdW5jb25z
dHJhaW5lZDogJHt1bmNvbnN0cmFpbmVkfSB9KTtgLCByZXNvbHZlKTsKLSAgICAgICAgfSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIGltbWVkaWF0ZVNjcm9sbEVsZW1lbnRBdENvbnRlbnRQb2ludFRv
T2Zmc2V0KHgsIHksIHNjcm9sbFgsIHNjcm9sbFksIHNjcm9sbFVwZGF0ZXNEaXNhYmxlZCA9IGZh
bHNlKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpKQotICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAg
ICAgICAgICAgIHVpQ29udHJvbGxlci5zY3JvbGxVcGRhdGVzRGlzYWJsZWQgPSAke3Njcm9sbFVw
ZGF0ZXNEaXNhYmxlZH07Ci0gICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmltbWVkaWF0ZVNj
cm9sbEVsZW1lbnRBdENvbnRlbnRQb2ludFRvT2Zmc2V0KCR7eH0sICR7eX0sICR7c2Nyb2xsWH0s
ICR7c2Nyb2xsWX0pO2AsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgZW5zdXJlVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKCkKLSAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy5pc1dlYktpdDIoKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsK
LQotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICBj
b25zdCB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVTY3JpcHQgPSAidWlDb250cm9sbGVyLmRvQWZ0
ZXJWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUoKCkgPT4gdWlDb250cm9sbGVyLnVpU2NyaXB0Q29t
cGxldGUoKSkiOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCh2aXNpYmxlQ29u
dGVudFJlY3RVcGRhdGVTY3JpcHQsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgbG9uZ1ByZXNzQW5kR2V0Q29udGV4dE1lbnVDb250ZW50QXQoeCwgeSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgIHVpQ29udHJvbGxlci5kaWRTaG93Q29udGV4dE1lbnVDYWxsYmFjayA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0
ZShKU09OLnN0cmluZ2lmeSh1aUNvbnRyb2xsZXIuY29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVt
KCdjb250ZXh0TWVudScpKSk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICB1
aUNvbnRyb2xsZXIubG9uZ1ByZXNzQXRQb2ludCgke3h9LCAke3l9LCBmdW5jdGlvbigpIHsgfSk7
Ci0gICAgICAgICAgICB9KSgpO2AsIHJlc3VsdCA9PiByZXNvbHZlKEpTT04ucGFyc2UocmVzdWx0
KSkpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYWN0aXZhdGVBbmRXYWl0Rm9y
SW5wdXRTZXNzaW9uQXQoeCwgeSkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIo
KSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZh
dGVBdCh4LCB5KTsKLQotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAgICAgICAgICAoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNsZWFyQ2FsbGJhY2tzQW5k
U2NyaXB0Q29tcGxldGUoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIu
ZGlkU2hvd0NvbnRleHRNZW51Q2FsbGJhY2sgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICAg
ICAgdWlDb250cm9sbGVyLmRpZFNob3dLZXlib2FyZENhbGxiYWNrID0gbnVsbDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci53aWxsUHJlc2VudFBvcG92ZXJDYWxsYmFjayA9
IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21w
bGV0ZSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29u
dHJvbGxlci5kaWRTaG93Q29udGV4dE1lbnVDYWxsYmFjayA9IGNsZWFyQ2FsbGJhY2tzQW5kU2Ny
aXB0Q29tcGxldGU7Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5kaWRTaG93S2V5
Ym9hcmRDYWxsYmFjayA9IGNsZWFyQ2FsbGJhY2tzQW5kU2NyaXB0Q29tcGxldGU7Ci0gICAgICAg
ICAgICAgICAgICAgIHVpQ29udHJvbGxlci53aWxsUHJlc2VudFBvcG92ZXJDYWxsYmFjayA9IGNs
ZWFyQ2FsbGJhY2tzQW5kU2NyaXB0Q29tcGxldGU7Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29u
dHJvbGxlci5zaW5nbGVUYXBBdFBvaW50KCR7eH0sICR7eX0sIGZ1bmN0aW9uKCkgeyB9KTsKLSAg
ICAgICAgICAgICAgICB9KSgpYCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAg
IHN0YXRpYyB3YWl0Rm9ySW5wdXRTZXNzaW9uVG9EaXNtaXNzKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVu
VUlTY3JpcHQoYAotICAgICAgICAgICAgICAgIChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCF1aUNvbnRyb2xsZXIuaXNTaG93aW5nS2V5Ym9hcmQgJiYgIXVpQ29udHJvbGxl
ci5pc1Nob3dpbmdDb250ZXh0TWVudSAmJiAhdWlDb250cm9sbGVyLmlzU2hvd2luZ1BvcG92ZXIp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRl
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjbGVhckNhbGxiYWNrc0FuZFNjcmlw
dENvbXBsZXRlKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZEhp
ZGVLZXlib2FyZENhbGxiYWNrID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29u
dHJvbGxlci5kaWREaXNtaXNzUG9wb3ZlckNhbGxiYWNrID0gbnVsbDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHVpQ29udHJvbGxlci5kaWREaXNtaXNzQ29udGV4dE1lbnVDYWxsYmFjayA9IG51
bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0
ZSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgdWlDb250
cm9sbGVyLmRpZEhpZGVLZXlib2FyZENhbGxiYWNrID0gY2xlYXJDYWxsYmFja3NBbmRTY3JpcHRD
b21wbGV0ZTsKLSAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZERpc21pc3NQb3Bv
dmVyQ2FsbGJhY2sgPSBjbGVhckNhbGxiYWNrc0FuZFNjcmlwdENvbXBsZXRlOwotICAgICAgICAg
ICAgICAgICAgICB1aUNvbnRyb2xsZXIuZGlkRGlzbWlzc0NvbnRleHRNZW51Q2FsbGJhY2sgPSBj
bGVhckNhbGxiYWNrc0FuZFNjcmlwdENvbXBsZXRlOwotICAgICAgICAgICAgICAgIH0pKClgLCBy
ZXNvbHZlKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGFjdGl2YXRlRWxlbWVu
dEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oZWxlbWVudCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHgg
PSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKLSAgICAgICAg
Y29uc3QgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwot
ICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZUFuZFdhaXRGb3JJbnB1dFNlc3Npb25BdCh4LCB5
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYWN0aXZhdGVGb3JtQ29udHJvbChlbGVtZW50KQotICAg
IHsKLSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZUVsZW1lbnQoZWxlbWVudCk7Ci0KLSAg
ICAgICAgY29uc3QgeCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGgg
LyAyOwotICAgICAgICBjb25zdCB5ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNl
dEhlaWdodCAvIDI7Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgCi0gICAgICAgICAgICAgICAgKGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZGlkU3RhcnRGb3Jt
Q29udHJvbEludGVyYWN0aW9uQ2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5zaW5nbGVUYXBBdFBv
aW50KCR7eH0sICR7eX0sIGZ1bmN0aW9uKCkgeyB9KTsKLSAgICAgICAgICAgICAgICB9KSgpYCwg
cmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBkaXNtaXNzRm9ybUFj
Y2Vzc29yeVZpZXcoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0
aGlzLmlzSU9TRmFtaWx5KCkpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7
Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAg
dGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgCi0gICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZGlzbWlzc0Zvcm1BY2Nlc3NvcnlWaWV3
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7
Ci0gICAgICAgICAgICAgICAgfSkoKWAsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgaXNTaG93aW5nS2V5Ym9hcmQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlw
dCgidWlDb250cm9sbGVyLmlzU2hvd2luZ0tleWJvYXJkIiwgcmVzdWx0ID0+IHJlc29sdmUocmVz
dWx0ID09PSAidHJ1ZSIpKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGlzU2hv
d2luZ1BvcG92ZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCgidWlDb250cm9sbGVyLmlz
U2hvd2luZ1BvcG92ZXIiLCByZXN1bHQgPT4gcmVzb2x2ZShyZXN1bHQgPT09ICJ0cnVlIikpOwot
ICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgaGFzSW5wdXRTZXNzaW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIucnVuVUlTY3JpcHQoInVpQ29udHJvbGxlci5oYXNJbnB1dFNlc3Npb24iLCByZXN1
bHQgPT4gcmVzb2x2ZShyZXN1bHQgPT09ICJ0cnVlIikpOwotICAgICAgICB9KTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgaXNQcmVzZW50aW5nTW9kYWxseSgpCi0gICAgewotICAgICAgICByZXR1cm4g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2Ny
aXB0KCJ1aUNvbnRyb2xsZXIuaXNQcmVzZW50aW5nTW9kYWxseSIsIHJlc3VsdCA9PiByZXNvbHZl
KHJlc3VsdCA9PT0gInRydWUiKSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBk
ZWFjdGl2YXRlRm9ybUNvbnRyb2woZWxlbWVudCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5p
c1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7Ci0gICAgICAgICAgICBlbGVtZW50
LmJsdXIoKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyByZXNvbHZlID0+IHsKLSAgICAg
ICAgICAgIGVsZW1lbnQuYmx1cigpOwotICAgICAgICAgICAgd2hpbGUgKGF3YWl0IHRoaXMuaXNQ
cmVzZW50aW5nTW9kYWxseSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgd2hpbGUgKGF3YWl0IHRoaXMuaXNTaG93aW5nS2V5Ym9hcmQoKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHdhaXRGb3JQb3BvdmVyVG9QcmVzZW50KCkKLSAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKQotICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAg
ICAgICAgICAgIChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHVpQ29udHJv
bGxlci5pc1Nob3dpbmdQb3BvdmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgdWlDb250cm9s
bGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLndpbGxQcmVzZW50UG9wb3ZlckNhbGxiYWNr
ID0gKCkgPT4gdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKLSAgICAgICAgICAgICAg
ICB9KSgpYCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyB3YWl0
Rm9yUG9wb3ZlclRvRGlzbWlzcygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQy
KCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJl
c29sdmUoKTsKLQotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAg
ICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAgICAgICAgICAoZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh1aUNvbnRyb2xsZXIuaXNTaG93aW5nUG9w
b3ZlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5kaWREaXNtaXNzUG9w
b3ZlckNhbGxiYWNrID0gKCkgPT4gdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgdWlDb250cm9s
bGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKLSAgICAgICAgICAgICAgICB9KSgpYCwgcmVzb2x2ZSk7
Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyB3YWl0Rm9yQ29udGV4dE1lbnVUb1No
b3coKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9T
RmFtaWx5KCkpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdChgCi0gICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoIXVpQ29udHJvbGxlci5pc1Nob3dpbmdDb250ZXh0TWVudSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5kaWRTaG93Q29udGV4dE1lbnVDYWxsYmFj
ayA9ICgpID0+IHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlw
dENvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgfSkoKWAsIHJlc29sdmUpOwotICAgICAgICB9
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgd2FpdEZvckNvbnRleHRNZW51VG9IaWRlKCkKLSAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKQot
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3Jp
cHQoYAotICAgICAgICAgICAgICAgIChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHVpQ29udHJvbGxlci5pc1Nob3dpbmdDb250ZXh0TWVudSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHVpQ29udHJvbGxlci5kaWREaXNtaXNzQ29udGV4dE1lbnVDYWxsYmFjayA9ICgpID0+
IHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRl
KCk7Ci0gICAgICAgICAgICAgICAgfSkoKWAsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgd2FpdEZvcktleWJvYXJkVG9IaWRlKCkKLSAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKQotICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAg
ICAgICAgICAgIChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHVpQ29udHJv
bGxlci5pc1Nob3dpbmdLZXlib2FyZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29udHJv
bGxlci5kaWRIaWRlS2V5Ym9hcmRDYWxsYmFjayA9ICgpID0+IHVpQ29udHJvbGxlci51aVNjcmlw
dENvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAg
fSkoKWAsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgZ2V0VUlD
YXJldFJlY3QoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0aGlz
LmlzSU9TRmFtaWx5KCkpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0K
LSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgdGVz
dFJ1bm5lci5ydW5VSVNjcmlwdChgKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHVpQ29u
dHJvbGxlci5kb0FmdGVyTmV4dFN0YWJsZVByZXNlbnRhdGlvblVwZGF0ZShmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoSlNPTi5z
dHJpbmdpZnkodWlDb250cm9sbGVyLnRleHRTZWxlY3Rpb25DYXJldFJlY3QpKTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pKClgLCBqc29uU3RyaW5nID0+IHsKLSAgICAgICAg
ICAgICAgICByZXNvbHZlKEpTT04ucGFyc2UoanNvblN0cmluZykpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBnZXRVSVNlbGVjdGlvblJlY3RzKCkK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWls
eSgpKQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVu
VUlTY3JpcHQoYChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZG9B
ZnRlck5leHRTdGFibGVQcmVzZW50YXRpb25VcGRhdGUoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKEpTT04uc3RyaW5naWZ5KHVp
Q29udHJvbGxlci50ZXh0U2VsZWN0aW9uUmFuZ2VSZWN0cykpOwotICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgfSkoKWAsIGpzb25TdHJpbmcgPT4gewotICAgICAgICAgICAgICAgIHJl
c29sdmUoSlNPTi5wYXJzZShqc29uU3RyaW5nKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
fSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGdldFVJQ2FyZXRWaWV3UmVjdCgpCi0gICAgewotICAg
ICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkKLSAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLQotICAgICAgICByZXR1cm4gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRvQWZ0ZXJOZXh0U3Rh
YmxlUHJlc2VudGF0aW9uVXBkYXRlKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB1
aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZShKU09OLnN0cmluZ2lmeSh1aUNvbnRyb2xsZXIu
c2VsZWN0aW9uQ2FyZXRWaWV3UmVjdCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgfSkoKWAsIGpzb25TdHJpbmcgPT4gewotICAgICAgICAgICAgICAgIHJlc29sdmUoSlNPTi5w
YXJzZShqc29uU3RyaW5nKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIGdldFVJU2VsZWN0aW9uVmlld1JlY3RzKCkKLSAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKQotICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYChmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZG9BZnRlck5leHRTdGFibGVQcmVz
ZW50YXRpb25VcGRhdGUoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29udHJv
bGxlci51aVNjcmlwdENvbXBsZXRlKEpTT04uc3RyaW5naWZ5KHVpQ29udHJvbGxlci5zZWxlY3Rp
b25SYW5nZVZpZXdSZWN0cykpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSko
KWAsIGpzb25TdHJpbmcgPT4gewotICAgICAgICAgICAgICAgIHJlc29sdmUoSlNPTi5wYXJzZShq
c29uU3RyaW5nKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAg
c3RhdGljIGdldFNlbGVjdGlvblN0YXJ0R3JhYmJlclZpZXdSZWN0KCkKLSAgICB7Ci0gICAgICAg
IGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKQotICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYChmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZG9BZnRlck5leHRTdGFibGVQ
cmVzZW50YXRpb25VcGRhdGUoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29u
dHJvbGxlci51aVNjcmlwdENvbXBsZXRlKEpTT04uc3RyaW5naWZ5KHVpQ29udHJvbGxlci5zZWxl
Y3Rpb25TdGFydEdyYWJiZXJWaWV3UmVjdCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgfSkoKWAsIGpzb25TdHJpbmcgPT4gewotICAgICAgICAgICAgICAgIHJlc29sdmUoSlNP
Ti5wYXJzZShqc29uU3RyaW5nKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAg
fQotCi0gICAgc3RhdGljIGdldFNlbGVjdGlvbkVuZEdyYWJiZXJWaWV3UmVjdCgpCi0gICAgewot
ICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkKLSAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLQotICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0
KGAoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRvQWZ0ZXJOZXh0
U3RhYmxlUHJlc2VudGF0aW9uVXBkYXRlKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAg
ICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZShKU09OLnN0cmluZ2lmeSh1aUNvbnRyb2xs
ZXIuc2VsZWN0aW9uRW5kR3JhYmJlclZpZXdSZWN0KSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICB9KSgpYCwganNvblN0cmluZyA9PiB7Ci0gICAgICAgICAgICAgICAgcmVzb2x2
ZShKU09OLnBhcnNlKGpzb25TdHJpbmcpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdGFwSGlnaGxpZ2h0Vmlld1JlY3QoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdCgiSlNPTi5zdHJpbmdpZnkodWlDb250cm9sbGVyLnRhcEhpZ2hsaWdodFZp
ZXdSZWN0KSIsIGpzb25TdHJpbmcgPT4gewotICAgICAgICAgICAgICAgIHJlc29sdmUoSlNPTi5w
YXJzZShqc29uU3RyaW5nKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHJlcGxhY2VUZXh0QXRSYW5nZSh0ZXh0LCBsb2NhdGlvbiwgbGVuZ3RoKSB7
Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRl
c3RSdW5uZXIucnVuVUlTY3JpcHQoYCgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgdWlDb250cm9s
bGVyLnJlcGxhY2VUZXh0QXRSYW5nZSgiJHt0ZXh0fSIsICR7bG9jYXRpb259LCAke2xlbmd0aH0p
OwotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0gICAg
ICAgICAgICB9KSgpYCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRp
YyB3YWl0KHByb21pc2UpCi0gICAgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKLSAgICAgICAgaWYgKHdpbmRvdy5maW5pc2hKU1Rlc3QpCi0gICAgICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLSAgICAgICAgbGV0IGZpbmlzaCA9ICgpID0+IHsKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cuZmluaXNoSlNUZXN0KQotICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHByb21pc2UudGhlbihm
aW5pc2gsIGZpbmlzaCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHdpdGhVc2VyR2VzdHVyZShjYWxs
YmFjaykKLSAgICB7Ci0gICAgICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoY2FsbGJhY2sp
OwotICAgIH0KLQotICAgIHN0YXRpYyBzZWxlY3RGb3JtQWNjZXNzb3J5UGlja2VyUm93KHJvd0lu
ZGV4KQotICAgIHsKLSAgICAgICAgY29uc3Qgc2VsZWN0Um93U2NyaXB0ID0gYHVpQ29udHJvbGxl
ci5zZWxlY3RGb3JtQWNjZXNzb3J5UGlja2VyUm93KCR7cm93SW5kZXh9KWA7Ci0gICAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoc2VsZWN0
Um93U2NyaXB0LCByZXNvbHZlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNlbGVjdEZvcm1BY2Nl
c3NvcnlIYXNDaGVja2VkSXRlbUF0Um93KHJvd0luZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlDb250cm9s
bGVyLnNlbGVjdEZvcm1BY2Nlc3NvcnlIYXNDaGVja2VkSXRlbUF0Um93KCR7cm93SW5kZXh9KWAs
IHJlc3VsdCA9PiB7Ci0gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCA9PT0gInRydWUiKTsKLSAg
ICAgICAgfSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBzZWxlY3RGb3JtUG9wb3ZlclRpdGxlKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYCgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgdWlD
b250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUodWlDb250cm9sbGVyLnNlbGVjdEZvcm1Qb3BvdmVy
VGl0bGUpOwotICAgICAgICAgICAgfSkoKWAsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgc2V0U2VsZWN0ZWRDb2xvckZvckNvbG9yUGlja2VyKHJlZCwgZ3JlZW4s
IGJsdWUpCi0gICAgewotICAgICAgICBjb25zdCBzZWxlY3RDb2xvclNjcmlwdCA9IGB1aUNvbnRy
b2xsZXIuc2V0U2VsZWN0ZWRDb2xvckZvckNvbG9yUGlja2VyKCR7cmVkfSwgJHtncmVlbn0sICR7
Ymx1ZX0pYDsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdChzZWxlY3RDb2xvclNjcmlwdCwgcmVzb2x2ZSkpOwotICAgIH0KLQotICAg
IHN0YXRpYyBlbnRlclRleHQodGV4dCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGVzY2FwZWRUZXh0
ID0gdGV4dC5yZXBsYWNlKC9gL2csICJcXGAiKTsKLSAgICAgICAgY29uc3QgZW50ZXJUZXh0U2Ny
aXB0ID0gYCgoKSA9PiB1aUNvbnRyb2xsZXIuZW50ZXJUZXh0KFxgJHtlc2NhcGVkVGV4dH1cYCkp
KClgOwotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1
blVJU2NyaXB0KGVudGVyVGV4dFNjcmlwdCwgcmVzb2x2ZSkpOwotICAgIH0KLQotICAgIHN0YXRp
YyBzZXRUaW1lUGlja2VyVmFsdWUoaG91cnMsIG1pbnV0ZXMpCi0gICAgewotICAgICAgICBjb25z
dCBzZXRWYWx1ZVNjcmlwdCA9IGAoKCkgPT4gdWlDb250cm9sbGVyLnNldFRpbWVQaWNrZXJWYWx1
ZSgke2hvdXJzfSwgJHttaW51dGVzfSkpKClgOwotICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KHNldFZhbHVlU2NyaXB0LCByZXNvbHZl
KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHRpbWVyUGlja2VyVmFsdWVzKCkKLSAgICB7Ci0gICAg
ICAgIGlmICghdGhpcy5pc0lPU0ZhbWlseSgpKQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVzb2x2ZSgpOwotCi0gICAgICAgIGNvbnN0IHVpU2NyaXB0ID0gIkpTT04uc3RyaW5naWZ5KFt1
aUNvbnRyb2xsZXIudGltZVBpY2tlclZhbHVlSG91ciwgdWlDb250cm9sbGVyLnRpbWVQaWNrZXJW
YWx1ZU1pbnV0ZV0pIjsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGVz
dFJ1bm5lci5ydW5VSVNjcmlwdCh1aVNjcmlwdCwgcmVzdWx0ID0+IHsKLSAgICAgICAgICAgIGNv
bnN0IFtob3VyLCBtaW51dGVdID0gSlNPTi5wYXJzZShyZXN1bHQpCi0gICAgICAgICAgICByZXNv
bHZlKHsgaG91cjogaG91ciwgbWludXRlOiBtaW51dGUgfSk7Ci0gICAgICAgIH0pKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgdGV4dENvbnRlbnRUeXBlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3Jp
cHQoYCgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxl
dGUodWlDb250cm9sbGVyLnRleHRDb250ZW50VHlwZSk7Ci0gICAgICAgICAgICB9KSgpYCwgcmVz
b2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBmb3JtSW5wdXRMYWJlbCgp
Ci0gICAgewotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAg
ICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAoKCkgPT4gewotICAgICAgICAgICAgICAgIHVp
Q29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKHVpQ29udHJvbGxlci5mb3JtSW5wdXRMYWJlbCk7
Ci0gICAgICAgICAgICB9KSgpYCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAg
IHN0YXRpYyBkaXNtaXNzRmlsZVBpY2tlcigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuaXNX
ZWJLaXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlc29sdmUoKTsKLQotICAgICAgICBjb25zdCBzY3JpcHQgPSBgdWlDb250cm9sbGVyLmRp
c21pc3NGaWxlUGlja2VyKCgpID0+IHsKLSAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlw
dENvbXBsZXRlKCk7Ci0gICAgICAgIH0pYDsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChzY3JpcHQsIHJlc29sdmUpKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgZmlsZVBpY2tlckFjY2VwdGVkVHlwZUlkZW50aWZpZXJzKCkKLSAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKQot
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3Jp
cHQoYCgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxl
dGUoSlNPTi5zdHJpbmdpZnkodWlDb250cm9sbGVyLmZpbGVQaWNrZXJBY2NlcHRlZFR5cGVJZGVu
dGlmaWVycykpOwotICAgICAgICAgICAgfSkoKWAsIGpzb25TdHJpbmcgPT4gewotICAgICAgICAg
ICAgICAgIHJlc29sdmUoSlNPTi5wYXJzZShqc29uU3RyaW5nKSk7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGFjdGl2YXRlRGF0YUxpc3RTdWdnZXN0
aW9uKGluZGV4KSB7Ci0gICAgICAgIGNvbnN0IHNjcmlwdCA9IGB1aUNvbnRyb2xsZXIuYWN0aXZh
dGVEYXRhTGlzdFN1Z2dlc3Rpb24oJHtpbmRleH0sICgpID0+IHsKLSAgICAgICAgICAgIHVpQ29u
dHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCIiKTsKLSAgICAgICAgfSk7YDsKLSAgICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChzY3JpcHQs
IHJlc29sdmUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgaXNTaG93aW5nRGF0YUxpc3RTdWdnZXN0
aW9ucygpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAoKCkgPT4gewotICAgICAgICAgICAg
ICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKHVpQ29udHJvbGxlci5pc1Nob3dpbmdE
YXRhTGlzdFN1Z2dlc3Rpb25zKTsKLSAgICAgICAgICAgIH0pKClgLCByZXN1bHQgPT4gcmVzb2x2
ZShyZXN1bHQgPT09ICJ0cnVlIikpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
aXNTaG93aW5nRGF0ZVRpbWVQaWNrZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgKCgp
ID0+IHsKLSAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSh1aUNv
bnRyb2xsZXIuaXNTaG93aW5nRGF0ZVRpbWVQaWNrZXIpOwotICAgICAgICAgICAgfSkoKWAsIHJl
c3VsdCA9PiByZXNvbHZlKHJlc3VsdCA9PT0gInRydWUiKSk7Ci0gICAgICAgIH0pOwotICAgIH0K
LQotICAgIHN0YXRpYyBkYXRlVGltZVBpY2tlclZhbHVlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlT
Y3JpcHQoYCgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29t
cGxldGUodWlDb250cm9sbGVyLmRhdGVUaW1lUGlja2VyVmFsdWUpOwotICAgICAgICAgICAgfSko
KWAsIHZhbHVlQXNTdHJpbmcgPT4gcmVzb2x2ZShwYXJzZUZsb2F0KHZhbHVlQXNTdHJpbmcpKSk7
Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBjaG9vc2VEYXRlVGltZVBpY2tlclZh
bHVlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgCi0gICAgICAgICAgICAgICAgdWlD
b250cm9sbGVyLmNob29zZURhdGVUaW1lUGlja2VyVmFsdWUoKTsKLSAgICAgICAgICAgICAgICB1
aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOwotICAgICAgICAgICAgYCwgcmVzb2x2ZSk7
Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyB6b29tU2NhbGUoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1
bm5lci5ydW5VSVNjcmlwdChgKCgpID0+IHsKLSAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIu
dWlTY3JpcHRDb21wbGV0ZSh1aUNvbnRyb2xsZXIuem9vbVNjYWxlKTsKLSAgICAgICAgICAgIH0p
KClgLCBzY2FsZUFzU3RyaW5nID0+IHJlc29sdmUocGFyc2VGbG9hdChzY2FsZUFzU3RyaW5nKSkp
OwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgem9vbVRvU2NhbGUoc2NhbGUpCi0g
ICAgewotICAgICAgICBjb25zdCB1aVNjcmlwdCA9IGB1aUNvbnRyb2xsZXIuem9vbVRvU2NhbGUo
JHtzY2FsZX0sICgpID0+IHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKHVpQ29udHJvbGxl
ci56b29tU2NhbGUpKWA7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRl
c3RSdW5uZXIucnVuVUlTY3JpcHQodWlTY3JpcHQsIHJlc29sdmUpKTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgaW1tZWRpYXRlWm9vbVRvU2NhbGUoc2NhbGUpCi0gICAgewotICAgICAgICBjb25zdCB1
aVNjcmlwdCA9IGB1aUNvbnRyb2xsZXIuaW1tZWRpYXRlWm9vbVRvU2NhbGUoJHtzY2FsZX0pYDsK
LSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGVzdFJ1bm5lci5ydW5VSVNj
cmlwdCh1aVNjcmlwdCwgcmVzb2x2ZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyB0eXBlQ2hhcmFj
dGVyKGNoYXJhY3RlclN0cmluZykKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIo
KSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKSB7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKGNoYXJhY3RlclN0cmluZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBjb25zdCBlc2NhcGVkU3RyaW5nID0gY2hhcmFjdGVyU3RyaW5nLnJlcGxhY2UoL1xc
L2csICJcXFxcIikucmVwbGFjZSgvYC9nLCAiXFxgIik7Ci0gICAgICAgIGNvbnN0IHVpU2NyaXB0
ID0gYHVpQ29udHJvbGxlci50eXBlQ2hhcmFjdGVyVXNpbmdIYXJkd2FyZUtleWJvYXJkKFxgJHtl
c2NhcGVkU3RyaW5nfVxgLCAoKSA9PiB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpKWA7
Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlT
Y3JpcHQodWlTY3JpcHQsIHJlc29sdmUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYXBwbHlBdXRv
Y29ycmVjdGlvbihuZXdUZXh0LCBvbGRUZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlz
V2ViS2l0MigpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNvbnN0IFtlc2NhcGVk
TmV3VGV4dCwgZXNjYXBlZE9sZFRleHRdID0gW25ld1RleHQucmVwbGFjZSgvYC9nLCAiXFxgIiks
IG9sZFRleHQucmVwbGFjZSgvYC9nLCAiXFxgIildOwotICAgICAgICBjb25zdCB1aVNjcmlwdCA9
IGB1aUNvbnRyb2xsZXIuYXBwbHlBdXRvY29ycmVjdGlvbihcYCR7ZXNjYXBlZE5ld1RleHR9XGAs
IFxgJHtlc2NhcGVkT2xkVGV4dH1cYCwgKCkgPT4gdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxl
dGUoKSlgOwotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVy
LnJ1blVJU2NyaXB0KHVpU2NyaXB0LCByZXNvbHZlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGlu
cHV0Vmlld0JvdW5kcygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwg
IXRoaXMuaXNJT1NGYW1pbHkoKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTsKLQotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAoKCkgPT4gewotICAgICAgICAgICAgICAgIHVpQ29u
dHJvbGxlci51aVNjcmlwdENvbXBsZXRlKEpTT04uc3RyaW5naWZ5KHVpQ29udHJvbGxlci5pbnB1
dFZpZXdCb3VuZHMpKTsKLSAgICAgICAgICAgIH0pKClgLCBqc29uU3RyaW5nID0+IHsKLSAgICAg
ICAgICAgICAgICByZXNvbHZlKEpTT04ucGFyc2UoanNvblN0cmluZykpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBjYWxlbmRhclR5cGUoKQotICAg
IHsKLSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpKQotICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYCgoKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgdWlDb250cm9sbGVyLmRvQWZ0ZXJOZXh0U3RhYmxlUHJlc2VudGF0aW9uVXBkYXRl
KCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxl
dGUoSlNPTi5zdHJpbmdpZnkodWlDb250cm9sbGVyLmNhbGVuZGFyVHlwZSkpOwotICAgICAgICAg
ICAgICAgIH0pCi0gICAgICAgICAgICB9KSgpYCwganNvblN0cmluZyA9PiB7Ci0gICAgICAgICAg
ICAgICAgcmVzb2x2ZShKU09OLnBhcnNlKGpzb25TdHJpbmcpKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2V0RGVmYXVsdENhbGVuZGFyVHlwZShj
YWxlbmRhcklkZW50aWZpZXIsIGxvY2FsZUlkZW50aWZpZXIpCi0gICAgewotICAgICAgICBpZiAo
IXRoaXMuaXNXZWJLaXQyKCkpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7
Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGVzdFJ1bm5lci5ydW5V
SVNjcmlwdChgdWlDb250cm9sbGVyLnNldERlZmF1bHRDYWxlbmRhclR5cGUoJyR7Y2FsZW5kYXJJ
ZGVudGlmaWVyfScsICcke2xvY2FsZUlkZW50aWZpZXJ9JylgLCByZXNvbHZlKSk7Ci0KLSAgICB9
Ci0KLSAgICBzdGF0aWMgc2V0Vmlld1NjYWxlKHNjYWxlKQotICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLmlzV2ViS2l0MigpKQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwot
Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlT
Y3JpcHQoYHVpQ29udHJvbGxlci5zZXRWaWV3U2NhbGUoJHtzY2FsZX0pYCwgcmVzb2x2ZSkpOwot
ICAgIH0KLQotICAgIHN0YXRpYyByZXNpZ25GaXJzdFJlc3BvbmRlcigpCi0gICAgewotICAgICAg
ICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNv
bHZlKCk7Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVyLnJlc2lnbkZpcnN0UmVzcG9uZGVyKClgLCByZXNv
bHZlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJlY29tZUZpcnN0UmVzcG9uZGVyKCkKLSAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlc29sdmUoKTsKLQotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0
ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIuYmVjb21lRmlyc3RSZXNwb25kZXIo
KWAsIHJlc29sdmUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgcmVtb3ZlVmlld0Zyb21XaW5kb3co
KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpKQotICAgICAgICAgICAgcmV0
dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxlci5yZW1vdmVWaWV3RnJv
bVdpbmRvdygpYCwgcmVzb2x2ZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBhZGRWaWV3VG9XaW5k
b3coKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpKQotICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxlci5hZGRWaWV3VG9X
aW5kb3coKWAsIHJlc29sdmUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbWluaW11bVpvb21TY2Fs
ZSgpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgKCgpID0+IHsK
LSAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSh1aUNvbnRyb2xs
ZXIubWluaW11bVpvb21TY2FsZSk7Ci0gICAgICAgICAgICB9KSgpYCwgc2NhbGVBc1N0cmluZyA9
PiByZXNvbHZlKHBhcnNlRmxvYXQoc2NhbGVBc1N0cmluZykpKQotICAgICAgICB9KTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgc3R5bHVzVGFwQXQoeCwgeSwgbW9kaWZpZXJzPVtdKQotICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpKQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewot
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgCi0gICAgICAgICAgICAgICAgdWlD
b250cm9sbGVyLnN0eWx1c1RhcEF0UG9pbnRXaXRoTW9kaWZpZXJzKCR7eH0sICR7eX0sIDIsIDEs
IDAuNSwgJHtKU09OLnN0cmluZ2lmeShtb2RpZmllcnMpfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0gICAgICAgICAg
ICAgICAgfSk7YCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBh
dHRhY2htZW50SW5mbyhhdHRhY2htZW50SWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy5pc1dlYktpdDIoKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsK
LQotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICB0
ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAoKCkgPT4gewotICAgICAgICAgICAgICAgIHVpQ29udHJv
bGxlci51aVNjcmlwdENvbXBsZXRlKEpTT04uc3RyaW5naWZ5KHVpQ29udHJvbGxlci5hdHRhY2ht
ZW50SW5mbygnJHthdHRhY2htZW50SWRlbnRpZmllcn0nKSkpOwotICAgICAgICAgICAgfSkoKWAs
IGpzb25TdHJpbmcgPT4gewotICAgICAgICAgICAgICAgIHJlc29sdmUoSlNPTi5wYXJzZShqc29u
U3RyaW5nKSk7Ci0gICAgICAgICAgICB9KQotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgaW5zZXJ0QXR0YWNobWVudEZvckZpbGVQYXRoKHBhdGgsIGNvbnRlbnRUeXBlKQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpKQotICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAgICAgICAgICAgIHVp
Q29udHJvbGxlci5pbnNlcnRBdHRhY2htZW50Rm9yRmlsZVBhdGgoJyR7cGF0aH0nLCAnJHtjb250
ZW50VHlwZX0nLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVy
LnVpU2NyaXB0Q29tcGxldGUoKTsKLSAgICAgICAgICAgICAgICB9KTtgLCByZXNvbHZlKTsKLSAg
ICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNldE1pbmltdW1FZmZlY3RpdmVXaWR0aChl
ZmZlY3RpdmVXaWR0aCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSkKLSAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLQotICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIu
c2V0TWluaW11bUVmZmVjdGl2ZVdpZHRoKCR7ZWZmZWN0aXZlV2lkdGh9KWAsIHJlc29sdmUpKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgc2V0QWxsb3dzVmlld3BvcnRTaHJpbmtUb0ZpdChhbGxvd3Mp
Ci0gICAgewotICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpCi0gICAgICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVyLnNldEFsbG93c1ZpZXdw
b3J0U2hyaW5rVG9GaXQoJHthbGxvd3N9KWAsIHJlc29sdmUpKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgc2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgewotICAg
ICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKCk7Ci0KLSAgICAgICAgY29uc3QgZXNjYXBlZElkZW50aWZpZXIgPSBpZGVudGlmaWVy
LnJlcGxhY2UoL2AvZywgIlxcYCIpOwotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIuc2V0S2V5Ym9hcmRJbnB1
dE1vZGVJZGVudGlmaWVyKFxgJHtlc2NhcGVkSWRlbnRpZmllcn1cYClgLCByZXNvbHZlKSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIGNvbnRlbnRPZmZzZXQoKQotICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLmlzSU9TRmFtaWx5KCkpCi0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7
Ci0KLSAgICAgICAgY29uc3QgdWlTY3JpcHQgPSAiSlNPTi5zdHJpbmdpZnkoW3VpQ29udHJvbGxl
ci5jb250ZW50T2Zmc2V0WCwgdWlDb250cm9sbGVyLmNvbnRlbnRPZmZzZXRZXSkiOwotICAgICAg
ICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KHVp
U2NyaXB0LCByZXN1bHQgPT4gewotICAgICAgICAgICAgY29uc3QgW29mZnNldFgsIG9mZnNldFld
ID0gSlNPTi5wYXJzZShyZXN1bHQpCi0gICAgICAgICAgICByZXNvbHZlKHsgeDogb2Zmc2V0WCwg
eTogb2Zmc2V0WSB9KTsKLSAgICAgICAgfSkpOwotICAgIH0KLQotICAgIHN0YXRpYyB1bmRvQW5k
UmVkb0xhYmVscygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpCi0gICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgICAgICAgY29uc3Qgc2NyaXB0
ID0gIkpTT04uc3RyaW5naWZ5KFt1aUNvbnRyb2xsZXIubGFzdFVuZG9MYWJlbCwgdWlDb250cm9s
bGVyLmZpcnN0UmVkb0xhYmVsXSkiOwotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KHNjcmlwdCwgcmVzdWx0ID0+IHJlc29sdmUoSlNP
Ti5wYXJzZShyZXN1bHQpKSkpOwotICAgIH0KLQotICAgIHN0YXRpYyB3YWl0Rm9yTWVudVRvU2hv
dygpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAg
ICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAgICAgICAgICAoZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghdWlDb250cm9sbGVyLmlzU2hvd2luZ01l
bnUpCi0gICAgICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZGlkU2hvd01lbnVDYWxs
YmFjayA9ICgpID0+IHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNj
cmlwdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgfSkoKWAsIHJlc29sdmUpOwotICAgICAg
ICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgd2FpdEZvck1lbnVUb0hpZGUoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1
bm5lci5ydW5VSVNjcmlwdChgCi0gICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAodWlDb250cm9sbGVyLmlzU2hvd2luZ01lbnUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZGlkSGlkZU1lbnVDYWxsYmFjayA9ICgpID0+IHVp
Q29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7
Ci0gICAgICAgICAgICAgICAgfSkoKWAsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgaXNTaG93aW5nTWVudSgpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1
aUNvbnRyb2xsZXIuaXNTaG93aW5nTWVudWAsIHJlc3VsdCA9PiByZXNvbHZlKHJlc3VsdCA9PT0g
InRydWUiKSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBpc0Rpc21pc3NpbmdN
ZW51KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxlci5pc0Rpc21pc3Np
bmdNZW51YCwgcmVzdWx0ID0+IHJlc29sdmUocmVzdWx0ID09PSAidHJ1ZSIpKTsKLSAgICAgICAg
fSk7Ci0gICAgfQotCi0gICAgc3RhdGljIG1lbnVSZWN0KCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlT
Y3JpcHQoIkpTT04uc3RyaW5naWZ5KHVpQ29udHJvbGxlci5tZW51UmVjdCkiLCByZXN1bHQgPT4g
cmVzb2x2ZShKU09OLnBhcnNlKHJlc3VsdCkpKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAg
c3RhdGljIHNldEhhcmR3YXJlS2V5Ym9hcmRBdHRhY2hlZChhdHRhY2hlZCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQo
YHVpQ29udHJvbGxlci5zZXRIYXJkd2FyZUtleWJvYXJkQXR0YWNoZWQoJHthdHRhY2hlZCA/ICJ0
cnVlIiA6ICJmYWxzZSJ9KWAsIHJlc29sdmUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgcmVjdEZv
ck1lbnVBY3Rpb24oYWN0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgCi0gICAgICAg
ICAgICAgICAgKCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IHVpQ29u
dHJvbGxlci5yZWN0Rm9yTWVudUFjdGlvbigiJHthY3Rpb259Iik7Ci0gICAgICAgICAgICAgICAg
ICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKHJlY3QgPyBKU09OLnN0cmluZ2lmeShy
ZWN0KSA6ICIiKTsKLSAgICAgICAgICAgICAgICB9KSgpOwotICAgICAgICAgICAgYCwgc3RyaW5n
UmVzdWx0ID0+IHsKLSAgICAgICAgICAgICAgICByZXNvbHZlKHN0cmluZ1Jlc3VsdC5sZW5ndGgg
PyBKU09OLnBhcnNlKHN0cmluZ1Jlc3VsdCkgOiBudWxsKTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY2hvb3NlTWVudUFjdGlvbihhY3Rpb24pCi0g
ICAgewotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAgICAgICAgICAoKCkgPT4gewotICAg
ICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuY2hvb3NlTWVudUFjdGlvbigiJHthY3Rpb259
IiwgKCkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0
Q29tcGxldGUoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSko
KTsKLSAgICAgICAgICAgIGAsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgd2FpdEZvckV2ZW50KHRhcmdldCwgZXZlbnROYW1lKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lLCByZXNvbHZlLCB7IG9uY2U6IHRydWUgfSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBjYWxs
RnVuY3Rpb25BbmRXYWl0Rm9yRXZlbnQoZnVuY3Rpb25Ub0NhbGwsIHRhcmdldCwgZXZlbnROYW1l
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIHJlc29sdmUgPT4gewot
ICAgICAgICAgICAgbGV0IGV2ZW50OwotICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWwot
ICAgICAgICAgICAgICAgIG5ldyBQcm9taXNlKChldmVudExpc3RlbmVyUmVzb2x2ZSkgPT4gewot
ICAgICAgICAgICAgICAgICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIChl
KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBldmVudCA9IGU7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBldmVudExpc3RlbmVyUmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgICAgICB9
LCB7b25jZTogdHJ1ZX0pOwotICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAgIG5l
dyBQcm9taXNlKGFzeW5jIGZ1bmN0aW9uUmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICAgICAgICAg
IGF3YWl0IGZ1bmN0aW9uVG9DYWxsKCk7Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uUmVz
b2x2ZSgpOwotICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICBdKTsKLSAgICAgICAgICAg
IHJlc29sdmUoZXZlbnQpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY2FsbEZ1
bmN0aW9uQW5kV2FpdEZvclNjcm9sbFRvRmluaXNoKGZ1bmN0aW9uVG9DYWxsLCAuLi50aGVBcmd1
bWVudHMpCi0gICAgewotICAgICAgICByZXR1cm4gVUlIZWxwZXIuY2FsbEZ1bmN0aW9uQW5kV2Fp
dEZvclRhcmdldFNjcm9sbFRvRmluaXNoKHdpbmRvdywgZnVuY3Rpb25Ub0NhbGwsIHRoZUFyZ3Vt
ZW50cykKLSAgICB9Ci0KLSAgICBzdGF0aWMgY2FsbEZ1bmN0aW9uQW5kV2FpdEZvclRhcmdldFNj
cm9sbFRvRmluaXNoKHNjcm9sbFRhcmdldCwgZnVuY3Rpb25Ub0NhbGwsIC4uLnRoZUFyZ3VtZW50
cykKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZWQpID0+IHsKLSAg
ICAgICAgICAgIGZ1bmN0aW9uIHNjcm9sbERpZEZpbmlzaCgpIHsKLSAgICAgICAgICAgICAgICBz
Y3JvbGxUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgaGFuZGxlU2Nyb2xsLCB0
cnVlKTsKLSAgICAgICAgICAgICAgICByZXNvbHZlZCgpOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBsZXQgbGFzdFNjcm9sbFRpbWVySWQgPSAwOyAvLyBXaGVuIHRoZSB0aW1lciB3aXRo
IHRoaXMgaWQgZmlyZXMgdGhlbiB0aGUgcGFnZSBoYXMgZmluaXNoZWQgc2Nyb2xsaW5nLgotICAg
ICAgICAgICAgZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKCkgewotICAgICAgICAgICAgICAgIGlmIChs
YXN0U2Nyb2xsVGltZXJJZCkgewotICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1l
b3V0KGxhc3RTY3JvbGxUaW1lcklkKTsKLSAgICAgICAgICAgICAgICAgICAgbGFzdFNjcm9sbFRp
bWVySWQgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsYXN0U2Nyb2xs
VGltZXJJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KHNjcm9sbERpZEZpbmlzaCwgMzAwKTsgLy8gT3Zl
ciAyNTBtcyB0byBnaXZlIHNvbWUgcm9vbSBmb3IgZXJyb3IuCi0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBzY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgaGFuZGxlU2Ny
b2xsLCB0cnVlKTsKLQotICAgICAgICAgICAgZnVuY3Rpb25Ub0NhbGwuYXBwbHkodGhpcywgdGhl
QXJndW1lbnRzKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHdhaXRGb3JUYXJn
ZXRTY3JvbGxBbmltYXRpb25Ub1NldHRsZShzY3JvbGxUYXJnZXQpCi0gICAgewotICAgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmVkKSA9PiB7Ci0gICAgICAgICAgICBsZXQgbGFzdE9i
c2VydmVkU2Nyb2xsUG9zaXRpb24gPSBbc2Nyb2xsVGFyZ2V0LnNjcm9sbExlZnQsIHNjcm9sbFRh
cmdldC5zY3JvbGxUb3BdOwotICAgICAgICAgICAgbGV0IGZyYW1lT2ZMYXN0Q2hhbmdlID0gMDsK
LSAgICAgICAgICAgIGxldCB0b3RhbEZyYW1lcyA9IDA7Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9u
IGFuaW1hdGlvbkZyYW1lKCkgewotICAgICAgICAgICAgICAgIGlmIChsYXN0T2JzZXJ2ZWRTY3Jv
bGxQb3NpdGlvblswXSAhPSBzY3JvbGxUYXJnZXQuc2Nyb2xsTGVmdCB8fAotICAgICAgICAgICAg
ICAgICAgICBsYXN0T2JzZXJ2ZWRTY3JvbGxQb3NpdGlvblsxXSAhPSBzY3JvbGxUYXJnZXQuc2Ny
b2xsVG9wKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxhc3RPYnNlcnZlZFNjcm9sbFBvc2l0aW9u
ID0gW3Njcm9sbFRhcmdldC5zY3JvbGxMZWZ0LCBzY3JvbGxUYXJnZXQuc2Nyb2xsVG9wXTsKLSAg
ICAgICAgICAgICAgICAgICAgZnJhbWVPZkxhc3RDaGFuZ2UgPSB0b3RhbEZyYW1lczsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGdvbmUgMjAgZnJh
bWVzIHdpdGhvdXQgY2hhbmdpbmcsIHJlc29sdmUuIElmIHdlIGhhdmUgZ29uZSA1MDAsIHRoZW4g
dGltZSBvdXQuCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBhbW91bnQgb2Yg
ZnJhbWVzIHVzZWQgaW4gdGhlIFdQVCBzY3JvbGwgYW5pbWF0aW9uIGhlbHBlci4KLSAgICAgICAg
ICAgICAgICBpZiAodG90YWxGcmFtZXMgLSBmcmFtZU9mTGFzdENoYW5nZSA+PSAyMCB8fCB0b3Rh
bEZyYW1lcyA+IDUwMCkKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQoKTsKLQotICAgICAg
ICAgICAgICAgIHRvdGFsRnJhbWVzKys7Ci0gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lKGFuaW1hdGlvbkZyYW1lKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVx
dWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvbkZyYW1lKTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHJvdGF0ZURldmljZShvcmllbnRhdGlvbk5hbWUsIGFuaW1hdGVkUmVzaXpl
ID0gZmFsc2UpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkgfHwgIXRoaXMu
aXNJT1NGYW1pbHkoKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLQot
ICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICB0ZXN0
UnVubmVyLnJ1blVJU2NyaXB0KGAoKCkgPT4gewotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxl
ci4ke2FuaW1hdGVkUmVzaXplID8gInNpbXVsYXRlUm90YXRpb25MaWtlU2FmYXJpIiA6ICJzaW11
bGF0ZVJvdGF0aW9uIn0oIiR7b3JpZW50YXRpb25OYW1lfSIsIGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZG9BZnRlclZpc2libGVDb250ZW50UmVjdFVwZGF0
ZSgoKSA9PiB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpKTsKLSAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIH0pKClgLCByZXNvbHZlKTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIGdldFNjcm9sbGluZ1RyZWUoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlz
LmlzV2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpCi0gICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgKCgpID0+IHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdWlDb250cm9sbGVyLnNjcm9sbGluZ1RyZWVBc1RleHQ7Ci0gICAg
ICAgICAgICB9KSgpYCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRp
YyBkcmFnRnJvbVBvaW50VG9Qb2ludChmcm9tWCwgZnJvbVksIHRvWCwgdG9ZLCBkdXJhdGlvbikK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWls
eSgpKSB7Ci0gICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhmcm9tWCwgZnJvbVkp
OwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Ci0gICAgICAgICAgICBldmVu
dFNlbmRlci5sZWFwRm9yd2FyZChkdXJhdGlvbiAqIDEwMDApOwotICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8odG9YLCB0b1kpOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAg
dGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgKCgpID0+IHsKLSAgICAgICAgICAgICAgICB1aUNvbnRy
b2xsZXIuZHJhZ0Zyb21Qb2ludFRvUG9pbnQoJHtmcm9tWH0sICR7ZnJvbVl9LCAke3RvWH0sICR7
dG9ZfSwgJHtkdXJhdGlvbn0sICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgdWlDb250cm9s
bGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IH0pKCk7YCwgcmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBzZXRX
aW5kb3dJc0tleShpc0tleSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHNjcmlwdCA9IGB1aUNvbnRy
b2xsZXIud2luZG93SXNLZXkgPSAke2lzS2V5fWA7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoc2NyaXB0LCByZXNvbHZlKSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIHdpbmRvd0lzS2V5KCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHNj
cmlwdCA9ICJ1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSh1aUNvbnRyb2xsZXIud2luZG93
SXNLZXkpIjsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdChzY3JpcHQsIChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgIHJlc29sdmUo
cmVzdWx0ID09PSAidHJ1ZSIpOwotICAgICAgICB9KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHdh
aXRGb3JEb3VibGVUYXBEZWxheSgpCi0gICAgewotICAgICAgICBjb25zdCB1aVNjcmlwdCA9IGB1
aUNvbnRyb2xsZXIuZG9BZnRlckRvdWJsZVRhcERlbGF5KCgpID0+IHVpQ29udHJvbGxlci51aVNj
cmlwdENvbXBsZXRlKCIiKSlgOwotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9
PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KHVpU2NyaXB0LCByZXNvbHZlKSk7Ci0gICAgfQotCi0g
ICAgc3RhdGljIGFzeW5jIHdhaXRGb3JTZWxlY3Rpb25Ub0FwcGVhcigpIHsKLSAgICAgICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgICAgIGxldCBzZWxlY3Rpb25SZWN0cyA9IGF3YWl0IHRoaXMu
Z2V0VUlTZWxlY3Rpb25WaWV3UmVjdHMoKTsKLSAgICAgICAgICAgIGlmIChzZWxlY3Rpb25SZWN0
cy5sZW5ndGggPiAwKQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb25SZWN0czsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBhc3luYyB3YWl0Rm9yU2VsZWN0aW9uVG9EaXNh
cHBlYXIoKSB7Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoIShhd2Fp
dCB0aGlzLmdldFVJU2VsZWN0aW9uVmlld1JlY3RzKCkpLmxlbmd0aCkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBhc3luYyBjb3B5VGV4dCh0
ZXh0KSB7Ci0gICAgICAgIGNvbnN0IGNvcHlUZXh0U2NyaXB0ID0gYHVpQ29udHJvbGxlci5jb3B5
VGV4dChcYCR7dGV4dC5yZXBsYWNlKC9gL2csICJcXGAiKX1cYClgOwotICAgICAgICByZXR1cm4g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGNvcHlUZXh0U2Ny
aXB0LCByZXNvbHZlKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGFzeW5jIHBhc3RlKCkgewotICAg
ICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0
KGB1aUNvbnRyb2xsZXIucGFzdGUoKWAsIHJlc29sdmUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
YXN5bmMgc2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGVuYWJsZWQpIHsKLSAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVyLnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZCgke2VuYWJsZWR9KWAsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgYXN5bmMgbG9uZ1ByZXNzRWxlbWVudChlbGVtZW50KQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMubG9uZ1ByZXNzQXRQb2ludChlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9m
ZnNldFdpZHRoIC8gMiwgZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAv
IDIpOwotICAgIH0KLQotICAgIHN0YXRpYyBhc3luYyBsb25nUHJlc3NBdFBvaW50KHgsIHkpCi0g
ICAgewotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAgICAgICAgICAoZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5sb25nUHJlc3NBdFBvaW50KCR7eH0s
ICR7eX0sIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVy
LnVpU2NyaXB0Q29tcGxldGUoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICAgfSkoKTtgLCByZXNvbHZlKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IGFzeW5jIHNldFNwZWxsQ2hlY2tlclJlc3VsdHMocmVzdWx0cykKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVu
VUlTY3JpcHQoYCgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnNldFNwZWxs
Q2hlY2tlclJlc3VsdHMoJHtKU09OLnN0cmluZ2lmeShyZXN1bHRzKX0pOwotICAgICAgICAgICAg
ICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICB9KSgpYCwg
cmVzb2x2ZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHN0YXRpYyBhc3luYyBhY3RpdmF0
ZUVsZW1lbnRBZnRlckluc3RhbGxpbmdUYXBHZXN0dXJlT25XaW5kb3coZWxlbWVudCkKLSAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgpKQot
ICAgICAgICAgICAgcmV0dXJuIGFjdGl2YXRlRWxlbWVudChlbGVtZW50KTsKLQotICAgICAgICBj
b25zdCB4ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Ci0g
ICAgICAgIGNvbnN0IHkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0
IC8gMjsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgCi0gICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgICAgICBsZXQgcHJvZ3Jlc3MgPSAwOwotICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbiBpbmNyZW1lbnRQcm9ncmVzcygpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgrK3Byb2dyZXNzID09IDIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlD
b250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuaW5zdGFsbFRhcEdlc3R1cmVPbldpbmRvdyhp
bmNyZW1lbnRQcm9ncmVzcyk7Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5zaW5n
bGVUYXBBdFBvaW50KCR7eH0sICR7eX0sIGluY3JlbWVudFByb2dyZXNzKTsKLSAgICAgICAgICAg
ICAgICB9KSgpO2AsIHJlc29sdmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
bWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkKLSAg
ICB7Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPU0ZhbWlseSgp
KQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7Ci0KLSAgICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5y
dW5VSVNjcmlwdChgCi0gICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgICAgICB1aUNvbnRyb2xsZXIuZG9BZnRlclByZXNlbnRhdGlvblVwZGF0ZShmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRl
KHVpQ29udHJvbGxlci5tYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdCgke3h9LCAke3l9
LCAke3dpZHRofSwgJHtoZWlnaHR9KSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAg
ICAgICAgICAgfSkoKTtgLCByZXN1bHQgPT4gcmVzb2x2ZShyZXN1bHQgPT09ICJ0cnVlIikpOwot
ICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbW92ZVRvTmV4dEJ5S2V5Ym9hcmRBY2Nl
c3NvcnlCYXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9
PiB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAgICAgICAg
ICB1aUNvbnRyb2xsZXIua2V5Ym9hcmRBY2Nlc3NvcnlCYXJOZXh0KCk7Ci0gICAgICAgICAgICAg
ICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKLSAgICAgICAgICAgIGAsIHJlc29s
dmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbW92ZVRvUHJldkJ5S2V5Ym9h
cmRBY2Nlc3NvcnlCYXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNv
bHZlKSA9PiB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAg
ICAgICAgICB1aUNvbnRyb2xsZXIua2V5Ym9hcmRBY2Nlc3NvcnlCYXJQcmV2aW91cygpOwotICAg
ICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0gICAgICAgICAg
ICBgLCByZXNvbHZlKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHdhaXRGb3JD
b250YWN0UGlja2VyVG9TaG93KCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIo
KSkKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKLQotICAgICAgICByZXR1
cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJ
U2NyaXB0KGAKLSAgICAgICAgICAgICAgICAoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICghdWlDb250cm9sbGVyLmlzU2hvd2luZ0NvbnRhY3RQaWNrZXIpCi0gICAgICAgICAg
ICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZGlkU2hvd0NvbnRhY3RQaWNrZXJDYWxsYmFjayA9
ICgpID0+IHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENv
bXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgfSkoKWAsIHJlc29sdmUpOwotICAgICAgICB9KTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgd2FpdEZvckNvbnRhY3RQaWNrZXJUb0hpZGUoKQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpKQotICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpOwotCi0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAotICAgICAgICAgICAgICAgIChm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHVpQ29udHJvbGxlci5pc1Nob3dp
bmdDb250YWN0UGlja2VyKQotICAgICAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRp
ZEhpZGVDb250YWN0UGlja2VyQ2FsbGJhY2sgPSAoKSA9PiB1aUNvbnRyb2xsZXIudWlTY3JpcHRD
b21wbGV0ZSgpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOwotICAgICAgICAgICAgICAgIH0p
KClgLCByZXNvbHZlKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGRpc21pc3ND
b250YWN0UGlja2VyV2l0aENvbnRhY3RzKGNvbnRhY3RzKQotICAgIHsKLSAgICAgICBjb25zdCBz
Y3JpcHQgPSBgKCgpID0+IHVpQ29udHJvbGxlci5kaXNtaXNzQ29udGFjdFBpY2tlcldpdGhDb250
YWN0cygke0pTT04uc3RyaW5naWZ5KGNvbnRhY3RzKX0pKSgpYDsKLSAgICAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KHNjcmlwdCwgcmVzb2x2
ZSkpOwotICAgIH0KLX0KLQotVUlIZWxwZXIuRXZlbnRTdHJlYW1CdWlsZGVyID0gY2xhc3Mgewot
ICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIHN1
cHBvcnQgYWRkaXRpb25hbCBjdXN0b21pemF0aW9uIG9wdGlvbnMsIHN1Y2ggYXMgaW50ZXJwb2xh
dGlvbiwgdGltZXN0ZXAsIGFuZCBkaWZmZXJlbnQKLSAgICAgICAgLy8gZGlnaXRpemVyIGluZGlj
ZXMgaW4gdGhlIGZ1dHVyZS4gRm9yIG5vdywganVzdCBtYWtlIGl0IHNpbXBsZXIgdG8gc3RyaW5n
IHRvZ2V0aGVyIHNlcXVlbmNlcyBvZiBwYW4gZ2VzdHVyZXMuCi0gICAgICAgIHRoaXMuX3Jlc2V0
KCk7Ci0gICAgfQotCi0gICAgX3Jlc2V0KCkgewotICAgICAgICB0aGlzLmV2ZW50cyA9IFtdOwot
ICAgICAgICB0aGlzLmN1cnJlbnRUaW1lT2Zmc2V0ID0gMDsKLSAgICAgICAgdGhpcy5jdXJyZW50
WCA9IDA7Ci0gICAgICAgIHRoaXMuY3VycmVudFkgPSAwOwotICAgIH0KLQotICAgIGJlZ2luKHgs
IHkpIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5jdXJyZW50VGltZU9mZnNldCA9PT0g
MCk7Ci0gICAgICAgIHRoaXMuZXZlbnRzLnB1c2goewotICAgICAgICAgICAgaW50ZXJwb2xhdGUg
OiAibGluZWFyIiwKLSAgICAgICAgICAgIHRpbWVzdGVwIDogMC4wMTYsCi0gICAgICAgICAgICBj
b29yZGluYXRlU3BhY2UgOiAiY29udGVudCIsCi0gICAgICAgICAgICBzdGFydEV2ZW50IDogewot
ICAgICAgICAgICAgICAgIGlucHV0VHlwZSA6ICJoYW5kIiwKLSAgICAgICAgICAgICAgICB0aW1l
T2Zmc2V0IDogdGhpcy5jdXJyZW50VGltZU9mZnNldCwKLSAgICAgICAgICAgICAgICB0b3VjaGVz
IDogW3sgaW5wdXRUeXBlIDogImZpbmdlciIsIHBoYXNlIDogImJlZ2FuIiwgaWQgOiAxLCB4IDog
eCwgeSA6IHksIHByZXNzdXJlIDogMCB9XQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGVu
ZEV2ZW50IDogewotICAgICAgICAgICAgICAgIGlucHV0VHlwZSA6ICJoYW5kIiwKLSAgICAgICAg
ICAgICAgICB0aW1lT2Zmc2V0IDogdGhpcy5jdXJyZW50VGltZU9mZnNldCwKLSAgICAgICAgICAg
ICAgICB0b3VjaGVzIDogW3sgaW5wdXRUeXBlIDogImZpbmdlciIsIHBoYXNlIDogImJlZ2FuIiwg
aWQgOiAxLCB4IDogeCwgeSA6IHksIHByZXNzdXJlIDogMCB9XQotICAgICAgICAgICAgfQotICAg
ICAgICB9KTsKLSAgICAgICAgdGhpcy5jdXJyZW50WCA9IHg7Ci0gICAgICAgIHRoaXMuY3VycmVu
dFkgPSB5OwotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0KLSAgICB3YWl0KGR1cmF0aW9u
KSB7Ci0gICAgICAgIHRoaXMuY3VycmVudFRpbWVPZmZzZXQgKz0gZHVyYXRpb247Ci0gICAgICAg
IHJldHVybiB0aGlzOwotICAgIH0KLQotICAgIG1vdmUoeCwgeSwgZHVyYXRpb24gPSAwKSB7Ci0g
ICAgICAgIGNvbnN0IHByZXZpb3VzVGltZU9mZnNldCA9IHRoaXMuY3VycmVudFRpbWVPZmZzZXQ7
Ci0gICAgICAgIHRoaXMuY3VycmVudFRpbWVPZmZzZXQgKz0gZHVyYXRpb247Ci0gICAgICAgIHRo
aXMuZXZlbnRzLnB1c2goewotICAgICAgICAgICAgaW50ZXJwb2xhdGUgOiAibGluZWFyIiwKLSAg
ICAgICAgICAgIHRpbWVzdGVwIDogMC4wMTYsCi0gICAgICAgICAgICBjb29yZGluYXRlU3BhY2Ug
OiAiY29udGVudCIsCi0gICAgICAgICAgICBzdGFydEV2ZW50IDogewotICAgICAgICAgICAgICAg
IGlucHV0VHlwZSA6ICJoYW5kIiwKLSAgICAgICAgICAgICAgICB0aW1lT2Zmc2V0IDogcHJldmlv
dXNUaW1lT2Zmc2V0LAotICAgICAgICAgICAgICAgIHRvdWNoZXMgOiBbeyBpbnB1dFR5cGUgOiAi
ZmluZ2VyIiwgcGhhc2UgOiAibW92ZWQiLCBpZCA6IDEsIHggOiB0aGlzLmN1cnJlbnRYLCB5IDog
dGhpcy5jdXJyZW50WSwgcHJlc3N1cmUgOiAwIH1dCi0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgZW5kRXZlbnQgOiB7Ci0gICAgICAgICAgICAgICAgaW5wdXRUeXBlIDogImhhbmQiLAotICAg
ICAgICAgICAgICAgIHRpbWVPZmZzZXQgOiB0aGlzLmN1cnJlbnRUaW1lT2Zmc2V0LAotICAgICAg
ICAgICAgICAgIHRvdWNoZXMgOiBbeyBpbnB1dFR5cGUgOiAiZmluZ2VyIiwgcGhhc2UgOiAibW92
ZWQiLCBpZCA6IDEsIHggOiB4LCB5IDogeSwgcHJlc3N1cmUgOiAwIH1dCi0gICAgICAgICAgICB9
Ci0gICAgICAgIH0pOwotICAgICAgICB0aGlzLmN1cnJlbnRYID0geDsKLSAgICAgICAgdGhpcy5j
dXJyZW50WSA9IHk7Ci0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0KLQotICAgIGVuZCgpIHsK
LSAgICAgICAgdGhpcy5ldmVudHMucHVzaCh7Ci0gICAgICAgICAgICBpbnRlcnBvbGF0ZSA6ICJs
aW5lYXIiLAotICAgICAgICAgICAgdGltZXN0ZXAgOiAwLjAxNiwKLSAgICAgICAgICAgIGNvb3Jk
aW5hdGVTcGFjZSA6ICJjb250ZW50IiwKLSAgICAgICAgICAgIHN0YXJ0RXZlbnQgOiB7Ci0gICAg
ICAgICAgICAgICAgaW5wdXRUeXBlIDogImhhbmQiLAotICAgICAgICAgICAgICAgIHRpbWVPZmZz
ZXQgOiB0aGlzLmN1cnJlbnRUaW1lT2Zmc2V0LAotICAgICAgICAgICAgICAgIHRvdWNoZXMgOiBb
eyBpbnB1dFR5cGUgOiAiZmluZ2VyIiwgcGhhc2UgOiAiZW5kZWQiLCBpZCA6IDEsIHggOiB0aGlz
LmN1cnJlbnRYLCB5IDogdGhpcy5jdXJyZW50WSwgcHJlc3N1cmUgOiAwIH1dCi0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgZW5kRXZlbnQgOiB7Ci0gICAgICAgICAgICAgICAgaW5wdXRUeXBl
IDogImhhbmQiLAotICAgICAgICAgICAgICAgIHRpbWVPZmZzZXQgOiB0aGlzLmN1cnJlbnRUaW1l
T2Zmc2V0LAotICAgICAgICAgICAgICAgIHRvdWNoZXMgOiBbeyBpbnB1dFR5cGUgOiAiZmluZ2Vy
IiwgcGhhc2UgOiAiZW5kZWQiLCBpZCA6IDEsIHggOiB0aGlzLmN1cnJlbnRYLCB5IDogdGhpcy5j
dXJyZW50WSwgcHJlc3N1cmUgOiAwIH1dCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAg
ICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0KLSAgICB0YWtlUmVzdWx0KCkgewotICAgICAgICBj
b25zdCBldmVudHMgPSB0aGlzLmV2ZW50czsKLSAgICAgICAgdGhpcy5fcmVzZXQoKTsKLSAgICAg
ICAgcmV0dXJuIHsgImV2ZW50cyI6IGV2ZW50cyB9OwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3Jlc291cmNlcy93YXNtLWJ1aWxkZXIuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJj
ZXMvd2FzbS1idWlsZGVyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDllYTg4
Njg3ODljNzE4NmQ1NThmMGEyZGI0Y2MwODU5ZTVkZDFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy93YXNtLWJ1aWxk
ZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxODA2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1jb25zdCBfZmFpbCA9IChtc2csIGV4dHJhKSA9
PiB7Ci0gICAgdGhyb3cgbmV3IEVycm9yKG1zZyArIChleHRyYSA/ICI6ICIgKyBleHRyYSA6ICIi
KSk7Ci19OwotCi1jb25zdCBhc3NlcnQgPSB7fTsKLQotY29uc3QgaXNOb3RBID0gYXNzZXJ0Lmlz
Tm90QSA9ICh2LCB0LCBtc2cpID0+IHsKLSAgICBpZiAodHlwZW9mIHYgPT09IHQpCi0gICAgICAg
IF9mYWlsKGBTaG91bGRuJ3QgYmUgJHt0fWAsIG1zZyk7Ci19OwotCi1jb25zdCBpc0EgPSBhc3Nl
cnQuaXNBID0gKHYsIHQsIG1zZykgPT4gewotICAgIGlmICh0eXBlb2YgdiAhPT0gdCkKLSAgICAg
ICAgX2ZhaWwoYFNob3VsZCBiZSAke3R9LCBnb3QgJHt0eXBlb2Yodil9YCwgbXNnKTsKLX07Ci0K
LWNvbnN0IGlzTm90VW5kZWYgPSBhc3NlcnQuaXNOb3RVbmRlZiA9ICh2LCBtc2cpID0+IGlzTm90
QSh2LCAidW5kZWZpbmVkIiwgbXNnKTsKLWFzc2VydC5pc1VuZGVmID0gKHYsIG1zZykgPT4gaXNB
KHYsICJ1bmRlZmluZWQiLCBtc2cpOwotYXNzZXJ0Lm5vdE9iamVjdCA9ICh2LCBtc2cpID0+IGlz
Tm90QSh2LCAib2JqZWN0IiwgbXNnKTsKLWNvbnN0IGlzT2JqZWN0ID0gYXNzZXJ0LmlzT2JqZWN0
ID0gKHYsIG1zZykgPT4gaXNBKHYsICJvYmplY3QiLCBtc2cpOwotYXNzZXJ0Lm5vdFN0cmluZyA9
ICh2LCBtc2cpID0+IGlzTm90QSh2LCAic3RyaW5nIiwgbXNnKTsKLWFzc2VydC5pc1N0cmluZyA9
ICh2LCBtc2cpID0+IGlzQSh2LCAic3RyaW5nIiwgbXNnKTsKLWFzc2VydC5ub3ROdW1iZXIgPSAo
diwgbXNnKSA9PiBpc05vdEEodiwgIm51bWJlciIsIG1zZyk7Ci1hc3NlcnQuaXNOdW1iZXIgPSAo
diwgbXNnKSA9PiBpc0EodiwgIm51bWJlciIsIG1zZyk7Ci1hc3NlcnQubm90RnVuY3Rpb24gPSAo
diwgbXNnKSA9PiBpc05vdEEodiwgImZ1bmN0aW9uIiwgbXNnKTsKLWFzc2VydC5pc0Z1bmN0aW9u
ID0gKHYsIG1zZykgPT4gaXNBKHYsICJmdW5jdGlvbiIsIG1zZyk7Ci0KLWFzc2VydC5oYXNPYmpl
Y3RQcm9wZXJ0eSA9IChvLCBwLCBtc2cpID0+IHsKLSAgICBpc09iamVjdChvLCBtc2cpOwotICAg
IGlzTm90VW5kZWYob1twXSwgbXNnLCBgZXhwZWN0ZWQgb2JqZWN0IHRvIGhhdmUgcHJvcGVydHkg
JHtwfWApOwotfTsKLQotYXNzZXJ0LmlzQXJyYXkgPSAodiwgbXNnKSA9PiB7Ci0gICAgaWYgKCFB
cnJheS5pc0FycmF5KHYpKQotICAgICAgICBfZmFpbChgRXhwZWN0ZWQgYW4gYXJyYXksIGdvdCAk
e3R5cGVvZih2KX1gLCBtc2cpOwotfTsKLQotYXNzZXJ0LmlzTm90QXJyYXkgPSAodiwgbXNnKSA9
PiB7Ci0gICAgaWYgKEFycmF5LmlzQXJyYXkodikpCi0gICAgICAgIF9mYWlsKGBFeHBlY3RlZCB0
byBub3QgYmUgYW4gYXJyYXlgLCBtc2cpOwotfTsKLQotYXNzZXJ0LnRydXRoeSA9ICh2LCBtc2cp
ID0+IHsKLSAgICBpZiAoIXYpCi0gICAgICAgIF9mYWlsKGBFeHBlY3RlZCB0cnV0aHlgLCBtc2cp
OwotfTsKLQotYXNzZXJ0LmZhbHN5ID0gKHYsIG1zZykgPT4gewotICAgIGlmICh2KQotICAgICAg
ICBfZmFpbChgRXhwZWN0ZWQgZmFsc3lgLCBtc2cpOwotfTsKLQotYXNzZXJ0LmVxID0gKGxocywg
cmhzLCBtc2cpID0+IHsKLSAgICBpZiAodHlwZW9mIGxocyAhPT0gdHlwZW9mIHJocykKLSAgICAg
ICAgX2ZhaWwoYE5vdCB0aGUgc2FtZTogIiR7bGhzfSIgYW5kICIke3Joc30iYCwgbXNnKTsKLSAg
ICBpZiAoQXJyYXkuaXNBcnJheShsaHMpICYmIEFycmF5LmlzQXJyYXkocmhzKSAmJiAobGhzLmxl
bmd0aCA9PT0gcmhzLmxlbmd0aCkpIHsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT09IGxo
cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGVxKGxoc1tpXSwgcmhzW2ldLCBtc2cpOwotICAg
IH0gZWxzZSBpZiAobGhzICE9PSByaHMpIHsKLSAgICAgICAgaWYgKHR5cGVvZiBsaHMgPT09ICJu
dW1iZXIiICYmIGlzTmFOKGxocykgJiYgaXNOYU4ocmhzKSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgX2ZhaWwoYE5vdCB0aGUgc2FtZTogIiR7bGhzfSIgYW5kICIke3Joc30iYCwgbXNn
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodHlwZW9mIGxocyA9PT0gIm51bWJlciIgJiYg
KDEuMCAvIGxocyAhPT0gMS4wIC8gcmhzKSkgLy8gRGlzdGluZ3Vpc2ggLTAuMCBmcm9tIDAuMC4K
LSAgICAgICAgICAgIF9mYWlsKGBOb3QgdGhlIHNhbWU6ICIke2xoc30iIGFuZCAiJHtyaHN9ImAs
IG1zZyk7Ci0gICAgfQotfTsKLQotY29uc3QgY2Fub25pY2FsaXplSTMyID0gKG51bWJlcikgPT4g
ewotICAgIGlmIChNYXRoLnJvdW5kKG51bWJlcikgPT09IG51bWJlciAmJiBudW1iZXIgPj0gMiAq
KiAzMSkKLSAgICAgICAgbnVtYmVyID0gbnVtYmVyIC0gMiAqKiAzMjsKLSAgICByZXR1cm4gbnVt
YmVyOwotfQotCi1hc3NlcnQuZXFJMzIgPSAobGhzLCByaHMsIG1zZykgPT4gewotICAgIHJldHVy
biBlcShjYW5vbmljYWxpemVJMzIobGhzKSwgY2Fub25pY2FsaXplSTMyKHJocyksIG1zZyk7Ci19
OwotCi1hc3NlcnQuZ2UgPSAobGhzLCByaHMsIG1zZykgPT4gewotICAgIGlzTm90VW5kZWYobGhz
KTsKLSAgICBpc05vdFVuZGVmKHJocyk7Ci0gICAgaWYgKCEobGhzID49IHJocykpCi0gICAgICAg
IF9mYWlsKGBFeHBlY3RlZDogIiR7bGhzfSIgPCAiJHtyaHN9ImAsIG1zZyk7Ci19OwotCi1hc3Nl
cnQubGUgPSAobGhzLCByaHMsIG1zZykgPT4gewotICAgIGlzTm90VW5kZWYobGhzKTsKLSAgICBp
c05vdFVuZGVmKHJocyk7Ci0gICAgaWYgKCEobGhzIDw9IHJocykpCi0gICAgICAgIF9mYWlsKGBF
eHBlY3RlZDogIiR7bGhzfSIgPiAiJHtyaHN9ImAsIG1zZyk7Ci19OwotCi1jb25zdCBfdGhyb3dz
ID0gKGZ1bmMsIHR5cGUsIG1lc3NhZ2UsIC4uLmFyZ3MpID0+IHsKLSAgICB0cnkgewotICAgICAg
ICBmdW5jKC4uLmFyZ3MpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgaWYgKGUgaW5zdGFu
Y2VvZiB0eXBlKSB7Ci0gICAgICAgICAgICBpZiAoZS5tZXNzYWdlID09PSBtZXNzYWdlKQotICAg
ICAgICAgICAgICAgIHJldHVybiBlOwotICAgICAgICAgICAgLy8gSWdub3JlIHNvdXJjZSBpbmZv
cm1hdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSBlcnJvciBtZXNzYWdlIGlmIHRoZQotICAgICAgICAg
ICAgLy8gZXhwZWN0ZWQgbWVzc2FnZSBkaWRuJ3Qgc3BlY2lmeSB0aGF0IGluZm9ybWF0aW9uLiBT
b21ldGltZXMgaXQKLSAgICAgICAgICAgIC8vIGNoYW5nZXMsIG9yIGl0J3MgdHJpY2t5IHRvIGdl
dCBqdXN0IHJpZ2h0LgotICAgICAgICAgICAgY29uc3QgZXZhbHVhdGluZ0luZGV4ID0gZS5tZXNz
YWdlLmluZGV4T2YoIiAoZXZhbHVhdGluZyAnIik7Ci0gICAgICAgICAgICBpZiAoZXZhbHVhdGlu
Z0luZGV4ICE9PSAtMSkgewotICAgICAgICAgICAgICAgIGNvbnN0IGNsZWFuTWVzc2FnZSA9IGUu
bWVzc2FnZS5zdWJzdHJpbmcoMCwgZXZhbHVhdGluZ0luZGV4KTsKLSAgICAgICAgICAgICAgICBp
ZiAoY2xlYW5NZXNzYWdlID09PSBtZXNzYWdlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBfZmFpbChgRXhwZWN0ZWQgdG8g
dGhyb3cgYSAke3R5cGUubmFtZX0gd2l0aCBtZXNzYWdlICIke21lc3NhZ2V9IiwgZ290ICR7ZS5u
YW1lfSB3aXRoIG1lc3NhZ2UgIiR7ZS5tZXNzYWdlfSJgKTsKLSAgICB9Ci0gICAgX2ZhaWwoYEV4
cGVjdGVkIHRvIHRocm93IGEgJHt0eXBlLm5hbWV9IHdpdGggbWVzc2FnZSAiJHttZXNzYWdlfSJg
KTsKLX07Ci0KLWNvbnN0IF9pbnN0YW5jZW9mID0gKG9iaiwgdHlwZSwgbXNnKSA9PiB7Ci0gICAg
aWYgKCEob2JqIGluc3RhbmNlb2YgdHlwZSkpCi0gICAgICAgIF9mYWlsKGBFeHBlY3RlZCBhICR7
dHlwZW9mKHR5cGUpfSwgZ290ICR7dHlwZW9mIG9ian1gKTsKLX07Ci0KLS8vIFVzZSB1bmRlcnNj
b3JlIG5hbWVzIHRvIGF2b2lkIGNsYXNoaW5nIHdpdGggYnVpbHRpbiBuYW1lcy4KLWFzc2VydC50
aHJvd3MgPSBfdGhyb3dzOwotYXNzZXJ0Lmluc3RhbmNlb2YgPSBfaW5zdGFuY2VvZjsKLQotY29u
c3QgYXN5bmNUZXN0SW1wbCA9IChwcm9taXNlLCB0aGVuRnVuYywgY2F0Y2hGdW5jKSA9PiB7Ci0g
ICAgYXN5bmNUZXN0U3RhcnQoMSk7Ci0gICAgcHJvbWlzZS50aGVuKHRoZW5GdW5jKS5jYXRjaChj
YXRjaEZ1bmMpOwotfTsKLQotY29uc3QgcHJpbnRFeG4gPSAoZSkgPT4gewotICAgIHByaW50KCJG
YWlsZWQ6ICIsIGUpOwotICAgIHByaW50KGUuc3RhY2spOwotfTsKLQotYXNzZXJ0LmFzeW5jVGVz
dCA9IChwcm9taXNlKSA9PiBhc3luY1Rlc3RJbXBsKHByb21pc2UsIGFzeW5jVGVzdFBhc3NlZCwg
cHJpbnRFeG4pOwotYXNzZXJ0LmFzeW5jVGVzdEVxID0gKHByb21pc2UsIGV4cGVjdGVkKSA9PiB7
Ci0gICAgY29uc3QgdGhlbkNoZWNrID0gKHZhbHVlKSA9PiB7Ci0gICAgICAgIGlmICh2YWx1ZSA9
PT0gZXhwZWN0ZWQpCi0gICAgICAgICAgICByZXR1cm4gYXN5bmNUZXN0UGFzc2VkKCk7Ci0gICAg
ICAgIHByaW50KCJGYWlsZWQ6IGdvdCAiLCB2YWx1ZSwgIiBidXQgZXhwZWN0ZWQgIiwgZXhwZWN0
ZWQpOwotCi0gICAgfQotICAgIGFzeW5jVGVzdEltcGwocHJvbWlzZSwgdGhlbkNoZWNrLCBwcmlu
dEV4bik7Ci19OwotCi1jb25zdCBXQVNNX0pTT04gPSBgCi17Ci0gICAgImNvbW1lbnRzIjogWyJU
aGlzIGZpbGUgZGVzY3JpYmVzIHRoZSBXZWJBc3NlbWJseSBJU0EuIiwKLSAgICAgICAgICAgICAg
ICAgIlNjcmlwdHMgaW4gdGhpcyBmb2xkZXIgYXV0by1nZW5lcmF0ZSBDKysgY29kZSBmb3IgSmF2
YVNjcmlwdENvcmUgYXMgd2VsbCBhcyB0aGUgdGVzdGluZyBEU0wgd2hpY2ggV2ViS2l0J3MgV2Vi
QXNzZW1ibHkgdGVzdHMgdXNlLiIKLSAgICAgICAgICAgICAgICBdLAotICAgICJwcmVhbWJsZSI6
IFsKLSAgICAgICAgeyAibmFtZSI6ICJtYWdpYyBudW1iZXIiLCAidHlwZSI6ICJ1aW50MzIiLCAi
dmFsdWUiOiAxODM2Mjc4MDE2LCAiZGVzY3JpcHRpb24iOiAiTlVMTCBjaGFyYWN0ZXIgZm9sbG93
ZWQgYnkgJ2FzbSciIH0sCi0gICAgICAgIHsgIm5hbWUiOiAidmVyc2lvbiIsICAgICAgInR5cGUi
OiAidWludDMyIiwgInZhbHVlIjogICAgICAgICAgMSwgImRlc2NyaXB0aW9uIjogIlZlcnNpb24g
bnVtYmVyIiB9Ci0gICAgXSwKLSAgICAidHlwZSIgOiB7Ci0gICAgICAgICJpMzIiOiAgICAgeyAi
dHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0xLCAiYjN0eXBlIjogIkIzOjpJbnQzMiIgfSwK
LSAgICAgICAgImk2NCI6ICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIsICJi
M3R5cGUiOiAiQjM6OkludDY0IiB9LAotICAgICAgICAiZjMyIjogICAgIHsgInR5cGUiOiAidmFy
aW50NyIsICJ2YWx1ZSI6ICAtMywgImIzdHlwZSI6ICJCMzo6RmxvYXQiIH0sCi0gICAgICAgICJm
NjQiOiAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC00LCAiYjN0eXBlIjogIkIz
OjpEb3VibGUiIH0sCi0gICAgICAgICJhbnlmdW5jIjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZh
bHVlIjogLTE2LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAotICAgICAgICAiZnVuYyI6ICAgIHsg
InR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6IC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwK
LSAgICAgICAgInZvaWQiOiAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAtNjQsICJi
M3R5cGUiOiAiQjM6OlZvaWQiIH0KLSAgICB9LAotICAgICJ2YWx1ZV90eXBlIjogWyJpMzIiLCAi
aTY0IiwgImYzMiIsICJmNjQiXSwKLSAgICAiYmxvY2tfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJm
MzIiLCAiZjY0IiwgInZvaWQiXSwKLSAgICAiZWxlbV90eXBlIjogWyJhbnlmdW5jIl0sCi0gICAg
ImV4dGVybmFsX2tpbmQiOiB7Ci0gICAgICAgICJGdW5jdGlvbiI6IHsgInR5cGUiOiAidWludDgi
LCAidmFsdWUiOiAwIH0sCi0gICAgICAgICJUYWJsZSI6ICAgIHsgInR5cGUiOiAidWludDgiLCAi
dmFsdWUiOiAxIH0sCi0gICAgICAgICJNZW1vcnkiOiAgIHsgInR5cGUiOiAidWludDgiLCAidmFs
dWUiOiAyIH0sCi0gICAgICAgICJHbG9iYWwiOiAgIHsgInR5cGUiOiAidWludDgiLCAidmFsdWUi
OiAzIH0KLSAgICB9LAotICAgICJzZWN0aW9uIiA6IHsKLSAgICAgICAgIlR5cGUiOiAgICAgeyAi
dHlwZSI6ICJ2YXJ1aW50NyIsICJ2YWx1ZSI6ICAxLCAiZGVzY3JpcHRpb24iOiAiRnVuY3Rpb24g
c2lnbmF0dXJlIGRlY2xhcmF0aW9ucyIgfSwKLSAgICAgICAgIkltcG9ydCI6ICAgeyAidHlwZSI6
ICJ2YXJ1aW50NyIsICJ2YWx1ZSI6ICAyLCAiZGVzY3JpcHRpb24iOiAiSW1wb3J0IGRlY2xhcmF0
aW9ucyIgfSwKLSAgICAgICAgIkZ1bmN0aW9uIjogeyAidHlwZSI6ICJ2YXJ1aW50NyIsICJ2YWx1
ZSI6ICAzLCAiZGVzY3JpcHRpb24iOiAiRnVuY3Rpb24gZGVjbGFyYXRpb25zIiB9LAotICAgICAg
ICAiVGFibGUiOiAgICB7ICJ0eXBlIjogInZhcnVpbnQ3IiwgInZhbHVlIjogIDQsICJkZXNjcmlw
dGlvbiI6ICJJbmRpcmVjdCBmdW5jdGlvbiB0YWJsZSBhbmQgb3RoZXIgdGFibGVzIiB9LAotICAg
ICAgICAiTWVtb3J5IjogICB7ICJ0eXBlIjogInZhcnVpbnQ3IiwgInZhbHVlIjogIDUsICJkZXNj
cmlwdGlvbiI6ICJNZW1vcnkgYXR0cmlidXRlcyIgfSwKLSAgICAgICAgIkdsb2JhbCI6ICAgeyAi
dHlwZSI6ICJ2YXJ1aW50NyIsICJ2YWx1ZSI6ICA2LCAiZGVzY3JpcHRpb24iOiAiR2xvYmFsIGRl
Y2xhcmF0aW9ucyIgfSwKLSAgICAgICAgIkV4cG9ydCI6ICAgeyAidHlwZSI6ICJ2YXJ1aW50NyIs
ICJ2YWx1ZSI6ICA3LCAiZGVzY3JpcHRpb24iOiAiRXhwb3J0cyIgfSwKLSAgICAgICAgIlN0YXJ0
IjogICAgeyAidHlwZSI6ICJ2YXJ1aW50NyIsICJ2YWx1ZSI6ICA4LCAiZGVzY3JpcHRpb24iOiAi
U3RhcnQgZnVuY3Rpb24gZGVjbGFyYXRpb24iIH0sCi0gICAgICAgICJFbGVtZW50IjogIHsgInR5
cGUiOiAidmFydWludDciLCAidmFsdWUiOiAgOSwgImRlc2NyaXB0aW9uIjogIkVsZW1lbnRzIHNl
Y3Rpb24iIH0sCi0gICAgICAgICJDb2RlIjogICAgIHsgInR5cGUiOiAidmFydWludDciLCAidmFs
dWUiOiAxMCwgImRlc2NyaXB0aW9uIjogIkZ1bmN0aW9uIGJvZGllcyAoY29kZSkiIH0sCi0gICAg
ICAgICJEYXRhIjogICAgIHsgInR5cGUiOiAidmFydWludDciLCAidmFsdWUiOiAxMSwgImRlc2Ny
aXB0aW9uIjogIkRhdGEgc2VnbWVudHMiIH0KLSAgICB9LAotICAgICJvcGNvZGUiOiB7Ci0gICAg
ICAgICJ1bnJlYWNoYWJsZSI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY29udHJvbCIsICAgICJ2
YWx1ZSI6ICAgMCwgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAg
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAidHJhcCBpbW1lZGlhdGVseSIgfSwKLSAgICAgICAgImJs
b2NrIjogICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb250cm9sIiwgICAgInZhbHVlIjog
ICAyLCAicmV0dXJuIjogWyJjb250cm9sIl0sICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInNpZyIsICJ0eXBlIjogImJsb2NrX3R5
cGUifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJiZWdpbiBhIHNlcXVlbmNlIG9mIGV4cHJlc3Npb25zLCB5aWVsZGlu
ZyAwIG9yIDEgdmFsdWVzIiB9LAotICAgICAgICAibG9vcCI6ICAgICAgICAgICAgICAgIHsgImNh
dGVnb3J5IjogImNvbnRyb2wiLCAgICAidmFsdWUiOiAgIDMsICJyZXR1cm4iOiBbImNvbnRyb2wi
XSwgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAic2lnIiwgInR5cGUiOiAiYmxvY2tfdHlwZSJ9XSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImJlZ2luIGEg
YmxvY2sgd2hpY2ggY2FuIGFsc28gZm9ybSBjb250cm9sIGZsb3cgbG9vcHMiIH0sCi0gICAgICAg
ICJpZiI6ICAgICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY29udHJvbCIsICAgICJ2YWx1
ZSI6ICAgNCwgInJldHVybiI6IFsiY29udHJvbCJdLCAgInBhcmFtZXRlciI6IFsiYm9vbCJdLCAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJzaWciLCAidHlwZSI6ICJibG9j
a190eXBlIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiYmVnaW4gaWYgZXhwcmVzc2lvbiIgfSwKLSAgICAgICAgImVs
c2UiOiAgICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb250cm9sIiwgICAgInZhbHVlIjog
ICA1LCAicmV0dXJuIjogWyJjb250cm9sIl0sICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJiZWdpbiBlbHNlIGV4cHJlc3Npb24gb2YgaWYiIH0sCi0gICAgICAg
ICJzZWxlY3QiOiAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY29udHJvbCIsICAgICJ2YWx1
ZSI6ICAyNywgInJldHVybiI6IFsicHJldiJdLCAgICAgInBhcmFtZXRlciI6IFsiYW55IiwgInBy
ZXYiLCAiYm9vbCJdLCAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAic2VsZWN0IG9uZSBvZiB0d28gdmFsdWVzIGJhc2VkIG9uIGNv
bmRpdGlvbiIgfSwKLSAgICAgICAgImJyIjogICAgICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6
ICJjb250cm9sIiwgICAgInZhbHVlIjogIDEyLCAicmV0dXJuIjogW10sICAgICAgICAgICAicGFy
YW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjog
InJlbGF0aXZlX2RlcHRoIiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJicmVhayB0aGF0IHRhcmdl
dHMgYW4gb3V0ZXIgbmVzdGVkIGJsb2NrIiB9LAotICAgICAgICAiYnJfaWYiOiAgICAgICAgICAg
ICAgIHsgImNhdGVnb3J5IjogImNvbnRyb2wiLCAgICAidmFsdWUiOiAgMTMsICJyZXR1cm4iOiBb
XSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAicmVsYXRpdmVfZGVwdGgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
ImNvbmRpdGlvbmFsIGJyZWFrIHRoYXQgdGFyZ2V0cyBhbiBvdXRlciBuZXN0ZWQgYmxvY2siIH0s
Ci0gICAgICAgICJicl90YWJsZSI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY29udHJvbCIs
ICAgICJ2YWx1ZSI6ICAxNCwgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFtd
LCAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0YXJnZXRfY291
bnQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAibnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIHRh
cmdldF90YWJsZSJ9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Im5hbWUi
OiAidGFyZ2V0X3RhYmxlIiwgICAidHlwZSI6ICJ2YXJ1aW50MzIqIiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRhcmdldCBlbnRyaWVz
IHRoYXQgaW5kaWNhdGUgYW4gb3V0ZXIgYmxvY2sgb3IgbG9vcCB0byB3aGljaCB0byBicmVhayJ9
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Im5hbWUiOiAiZGVmYXVsdF90
YXJnZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImFuIG91dGVyIGJsb2NrIG9yIGxvb3AgdG8g
d2hpY2ggdG8gYnJlYWsgaW4gdGhlIGRlZmF1bHQgY2FzZSJ9XSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJicmFuY2ggdGFibGUgY29udHJvbCBmbG93IGNvbnN0cnVjdCIgfSwKLSAgICAg
ICAgInJldHVybiI6ICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb250cm9sIiwgICAgInZh
bHVlIjogIDE1LCAicmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogW10sICAgICAg
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAicmV0dXJuIHplcm8gb3Igb25lIHZhbHVlIGZyb20gdGhp
cyBmdW5jdGlvbiIgfSwKLSAgICAgICAgImRyb3AiOiAgICAgICAgICAgICAgICB7ICJjYXRlZ29y
eSI6ICJjb250cm9sIiwgICAgInZhbHVlIjogIDI2LCAicmV0dXJuIjogW10sICAgICAgICAgICAi
cGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiaWdub3JlIHZhbHVl
IiB9LAotICAgICAgICAibm9wIjogICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNvbnRy
b2wiLCAgICAidmFsdWUiOiAgIDEsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIi
OiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJubyBvcGVyYXRpb24iIH0sCi0gICAg
ICAgICJlbmQiOiAgICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY29udHJvbCIsICAgICJ2
YWx1ZSI6ICAxMSwgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAg
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogImVuZCBhIGJsb2NrLCBsb29wLCBvciBpZiIgfSwKLSAg
ICAgICAgImkzMi5jb25zdCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAg
InZhbHVlIjogIDY1LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ2YWx1ZSIsICAgICAg
ICAgICJ0eXBlIjogInZhcmludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiYSBjb25zdGFudCB2YWx1ZSBpbnRlcnByZXRlZCBh
cyBpMzIiIH0sCi0gICAgICAgICJpNjQuY29uc3QiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAi
c3BlY2lhbCIsICAgICJ2YWx1ZSI6ICA2NiwgInJldHVybiI6IFsiaTY0Il0sICAgICAgInBhcmFt
ZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAi
dmFsdWUiLCAgICAgICAgICAidHlwZSI6ICJ2YXJpbnQ2NCJ9XSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImEgY29uc3RhbnQgdmFsdWUg
aW50ZXJwcmV0ZWQgYXMgaTY0IiB9LAotICAgICAgICAiZjY0LmNvbnN0IjogICAgICAgICAgIHsg
ImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgNjgsICJyZXR1cm4iOiBbImY2NCJd
LCAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbeyJuYW1lIjogInZhbHVlIiwgICAgICAgICAgInR5cGUiOiAiZG91YmxlIn1dLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJhIGNv
bnN0YW50IHZhbHVlIGludGVycHJldGVkIGFzIGY2NCIgfSwKLSAgICAgICAgImYzMi5jb25zdCI6
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDY3LCAicmV0
dXJuIjogWyJmMzIiXSwgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ2YWx1ZSIsICAgICAgICAgICJ0eXBlIjogImZsb2F0
In1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJhIGNvbnN0YW50IHZhbHVlIGludGVycHJldGVkIGFzIGYzMiIgfSwKLSAgICAgICAg
ImdldF9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVl
IjogIDMyLCAicmV0dXJuIjogWyJhbnkiXSwgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAg
ICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAibG9jYWxfaW5kZXgiLCAgICAidHlw
ZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogInJlYWQgYSBsb2NhbCB2YXJpYWJsZSBvciBwYXJhbWV0ZXIiIH0s
Ci0gICAgICAgICJzZXRfbG9jYWwiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIs
ICAgICJ2YWx1ZSI6ICAzMywgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFsi
YW55Il0sICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImxvY2FsX2luZGV4
IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZhcmlhYmxlIG9yIHBh
cmFtZXRlciIgfSwKLSAgICAgICAgInRlZV9sb2NhbCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6
ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM0LCAicmV0dXJuIjogWyJhbnkiXSwgICAgICJwYXJh
bWV0ZXIiOiBbImFueSJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjog
ImxvY2FsX2luZGV4IiwgICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBhIGxvY2FsIHZh
cmlhYmxlIG9yIHBhcmFtZXRlciBhbmQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIiB9LAotICAgICAg
ICAiZ2V0X2dsb2JhbCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFs
dWUiOiAgMzUsICJyZXR1cm4iOiBbImFueSJdLCAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAg
ICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImdsb2JhbF9pbmRleCIsICAgInR5
cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJyZWFkIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAotICAgICAgICAi
c2V0X2dsb2JhbCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUi
OiAgMzYsICJyZXR1cm4iOiBbXSwgICAgICAgICAicGFyYW1ldGVyIjogWyJhbnkiXSwgICAgICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAgICJ0eXBlIjog
InZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAid3JpdGUgYSBnbG9iYWwgdmFyaWFibGUiIH0sCi0gICAgICAgICJjYWxs
IjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAx
NiwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6
ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCi0gICAgICAg
ICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1
ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAg
ICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAi
dHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInJlc2VydmVkIiwgICAgICJ0eXBlIjogInZh
cnVpbnQxIn1dLCAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGgg
YW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAotICAgICAgICAiaTMyLmxvYWQ4X3MiOiAgICAgICAg
IHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDQsICJyZXR1cm4iOiBbImkz
MiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsi
bmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJs
b2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTMyLmxvYWQ4X3UiOiAgICAgICAgIHsgImNh
dGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDUsICJyZXR1cm4iOiBbImkzMiJdLCAg
ICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6
ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZy
b20gbWVtb3J5IiB9LAotICAgICAgICAiaTMyLmxvYWQxNl9zIjogICAgICAgIHsgImNhdGVnb3J5
IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDYsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJw
YXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1l
IjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZz
ZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVt
b3J5IiB9LAotICAgICAgICAiaTMyLmxvYWQxNl91IjogICAgICAgIHsgImNhdGVnb3J5IjogIm1l
bW9yeSIsICAgICAidmFsdWUiOiAgNDcsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0
ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZs
YWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAi
dHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9
LAotICAgICAgICAiaTY0LmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIs
ICAgICAidmFsdWUiOiAgNDgsICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBb
ImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwg
ICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6
ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAg
ICAgICAiaTY0LmxvYWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAi
dmFsdWUiOiAgNDksICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIi
XSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAg
ICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAi
aTY0LmxvYWQxNl9zIjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUi
OiAgNTAsICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAg
ICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5
cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIi
fV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTY0Lmxv
YWQxNl91IjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNTEs
ICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAi
dmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJk
ZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTY0LmxvYWQzMl9z
IjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNTIsICJyZXR1
cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWlu
dDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlw
dGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTY0LmxvYWQzMl91IjogICAg
ICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNTMsICJyZXR1cm4iOiBb
Imk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6
ICJsb2FkIGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTMyLmxvYWQiOiAgICAgICAgICAgIHsg
ImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDAsICJyZXR1cm4iOiBbImkzMiJd
LCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFt
ZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2Fk
IGZyb20gbWVtb3J5IiB9LAotICAgICAgICAiaTY0LmxvYWQiOiAgICAgICAgICAgIHsgImNhdGVn
b3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDEsICJyZXR1cm4iOiBbImk2NCJdLCAgICAg
ICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJv
ZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20g
bWVtb3J5IiB9LAotICAgICAgICAiZjMyLmxvYWQiOiAgICAgICAgICAgIHsgImNhdGVnb3J5Ijog
Im1lbW9yeSIsICAgICAidmFsdWUiOiAgNDIsICJyZXR1cm4iOiBbImYzMiJdLCAgICAgICJwYXJh
bWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjog
ImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQi
LCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5
IiB9LAotICAgICAgICAiZjY0LmxvYWQiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9y
eSIsICAgICAidmFsdWUiOiAgNDMsICJyZXR1cm4iOiBbImY2NCJdLCAgICAgICJwYXJhbWV0ZXIi
OiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdz
IiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlw
ZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAot
ICAgICAgICAiaTMyLnN0b3JlOCI6ICAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAg
ICAidmFsdWUiOiAgNTgsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFk
ZHIiLCAiaTMyIl0sICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAg
ICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2
YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBtZW1vcnkiIH0sCi0gICAgICAg
ICJpMzIuc3RvcmUxNiI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1
ZSI6ICA1OSwgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJp
MzIiXSwgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAi
dHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQz
MiJ9XSwgImRlc2NyaXB0aW9uIjogInN0b3JlIHRvIG1lbW9yeSIgfSwKLSAgICAgICAgImk2NC5z
dG9yZTgiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDYw
LCAicmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIiwgImk2NCJdLCAg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjog
InZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAi
ZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAotICAgICAgICAiaTY0LnN0b3JlMTYi
OiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNjEsICJyZXR1
cm4iOiBbXSwgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiLCAiaTY0Il0sICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWlu
dDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlw
dGlvbiI6ICJzdG9yZSB0byBtZW1vcnkiIH0sCi0gICAgICAgICJpNjQuc3RvcmUzMiI6ICAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA2MiwgInJldHVybiI6IFtd
LCAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciIsICJpNjQiXSwgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwg
eyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjog
InN0b3JlIHRvIG1lbW9yeSIgfSwKLSAgICAgICAgImkzMi5zdG9yZSI6ICAgICAgICAgICB7ICJj
YXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDU0LCAicmV0dXJuIjogW10sICAgICAg
ICAgICAicGFyYW1ldGVyIjogWyJhZGRyIiwgImkzMiJdLCAgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUi
OiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUg
dG8gbWVtb3J5IiB9LAotICAgICAgICAiaTY0LnN0b3JlIjogICAgICAgICAgIHsgImNhdGVnb3J5
IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNTUsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICJw
YXJhbWV0ZXIiOiBbImFkZHIiLCAiaTY0Il0sICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1l
IjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZz
ZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJzdG9yZSB0byBtZW1v
cnkiIH0sCi0gICAgICAgICJmMzIuc3RvcmUiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVt
b3J5IiwgICAgICJ2YWx1ZSI6ICA1NiwgInJldHVybiI6IFtdLCAgICAgICAgICAgInBhcmFtZXRl
ciI6IFsiYWRkciIsICJmMzIiXSwgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxh
Z3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0
eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogInN0b3JlIHRvIG1lbW9yeSIgfSwK
LSAgICAgICAgImY2NC5zdG9yZSI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAg
ICAgInZhbHVlIjogIDU3LCAicmV0dXJuIjogW10sICAgICAgICAgICAicGFyYW1ldGVyIjogWyJh
ZGRyIiwgImY2NCJdLCAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAg
ICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAi
dmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAic3RvcmUgdG8gbWVtb3J5IiB9LAotICAgICAg
ICAiY3VycmVudF9tZW1vcnkiOiAgICAgIHsgImNhdGVnb3J5IjogIm9wZXJhdGlvbiIsICAidmFs
dWUiOiAgNjMsICJyZXR1cm4iOiBbInNpemUiXSwgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgInR5cGUiOiAi
dmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogInF1ZXJ5IHRoZSBzaXplIG9mIG1lbW9yeSIgfSwKLSAgICAgICAgImdyb3dfbWVtb3J5Ijog
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJvcGVyYXRpb24iLCAgInZhbHVlIjogIDY0LCAicmV0dXJu
IjogWyJzaXplIl0sICAgICAicGFyYW1ldGVyIjogWyJzaXplIl0sICAgICAgICAgICAgICAgICAi
aW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJncm93IHRoZSBzaXpl
IG9mIG1lbW9yeSIgfSwKLSAgICAgICAgImkzMi5hZGQiOiAgICAgICAgICAgICB7ICJjYXRlZ29y
eSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTA2LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAi
cGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJi
M29wIjogIkFkZCIgICAgICAgICAgfSwKLSAgICAgICAgImkzMi5zdWIiOiAgICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTA3LCAicmV0dXJuIjogWyJpMzIi
XSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRl
IjogW10sICJiM29wIjogIlN1YiIgICAgICAgICAgfSwKLSAgICAgICAgImkzMi5tdWwiOiAgICAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTA4LCAicmV0dXJu
IjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAi
aW1tZWRpYXRlIjogW10sICJiM29wIjogIk11bCIgICAgICAgICAgfSwKLSAgICAgICAgImkzMi5k
aXZfcyI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTA5
LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW10gICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgImkzMi5kaXZfdSI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZh
bHVlIjogMTEwLCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAi
aTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10gICAgICAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgImkzMi5yZW1fcyI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1l
dGljIiwgInZhbHVlIjogMTExLCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjog
WyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10gICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgImkzMi5yZW1fdSI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6
ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTEyLCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFy
YW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10gICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgImkzMi5hbmQiOiAgICAgICAgICAgICB7ICJj
YXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTEzLCAicmV0dXJuIjogWyJpMzIiXSwg
ICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjog
W10sICJiM29wIjogIkJpdEFuZCIgICAgICAgfSwKLSAgICAgICAgImkzMi5vciI6ICAgICAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTE0LCAicmV0dXJuIjog
WyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW10sICJiM29wIjogIkJpdE9yIiAgICAgICAgfSwKLSAgICAgICAgImkzMi54b3Ii
OiAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTE1LCAi
cmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkJpdFhvciIgICAgICAgfSwKLSAgICAgICAg
ImkzMi5zaGwiOiAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVl
IjogMTE2LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMy
Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIlNobCIgICAgICAgICAgfSwK
LSAgICAgICAgImkzMi5zaHJfdSI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGlj
IiwgInZhbHVlIjogMTE4LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJp
MzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIlpTaHIiICAg
ICAgICAgfSwKLSAgICAgICAgImkzMi5zaHJfcyI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJh
cml0aG1ldGljIiwgInZhbHVlIjogMTE3LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1l
dGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjog
IlNTaHIiICAgICAgICAgfSwKLSAgICAgICAgImkzMi5yb3RyIjogICAgICAgICAgICB7ICJjYXRl
Z29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTIwLCAicmV0dXJuIjogWyJpMzIiXSwgICAg
ICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10s
ICJiM29wIjogIlJvdFIiICAgICAgICAgfSwKLSAgICAgICAgImkzMi5yb3RsIjogICAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTE5LCAicmV0dXJuIjogWyJp
MzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRp
YXRlIjogW10sICJiM29wIjogIlJvdEwiICAgICAgICAgfSwKLSAgICAgICAgImkzMi5lcSI6ICAg
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDcwLCAicmV0
dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkVxdWFsIiAgICAgICAgfSwKLSAgICAgICAgImkz
Mi5uZSI6ICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjog
IDcxLCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0s
ICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIk5vdEVxdWFsIiAgICAgfSwKLSAg
ICAgICAgImkzMi5sdF9zIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwg
InZhbHVlIjogIDcyLCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJpMzIi
LCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkxlc3NUaGFuIiAg
ICAgfSwKLSAgICAgICAgImkzMi5sZV9zIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21w
YXJpc29uIiwgInZhbHVlIjogIDc2LCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVy
IjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkxl
c3NFcXVhbCIgICAgfSwKLSAgICAgICAgImkzMi5sdF91IjogICAgICAgICAgICB7ICJjYXRlZ29y
eSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDczLCAicmV0dXJuIjogWyJib29sIl0sICAgICAi
cGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJi
M29wIjogIkJlbG93IiAgICAgICAgfSwKLSAgICAgICAgImkzMi5sZV91IjogICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDc3LCAicmV0dXJuIjogWyJib29s
Il0sICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRl
IjogW10sICJiM29wIjogIkJlbG93RXF1YWwiICAgfSwKLSAgICAgICAgImkzMi5ndF9zIjogICAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDc0LCAicmV0dXJu
IjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAi
aW1tZWRpYXRlIjogW10sICJiM29wIjogIkdyZWF0ZXJUaGFuIiAgfSwKLSAgICAgICAgImkzMi5n
ZV9zIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDc4
LCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAiaTMyIl0sICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkdyZWF0ZXJFcXVhbCIgfSwKLSAgICAg
ICAgImkzMi5ndF91IjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZh
bHVlIjogIDc1LCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJpMzIiLCAi
aTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkFib3ZlIiAgICAgICAg
fSwKLSAgICAgICAgImkzMi5nZV91IjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJp
c29uIiwgInZhbHVlIjogIDc5LCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjog
WyJpMzIiLCAiaTMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkFib3Zl
RXF1YWwiICAgfSwKLSAgICAgICAgImkzMi5jbHoiOiAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6
ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTAzLCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFy
YW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29w
IjogIkNseiIgICAgICAgICAgfSwKLSAgICAgICAgImkzMi5jdHoiOiAgICAgICAgICAgICB7ICJj
YXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTA0LCAicmV0dXJuIjogWyJpMzIiXSwg
ICAgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W10gICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgImkzMi5wb3BjbnQiOiAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTA1LCAicmV0dXJuIjog
WyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW10gICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgImkzMi5lcXoi
OiAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDY5LCAi
cmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkVxdWFsKGkzMigwKSwgQDApIiB9LAotICAg
ICAgICAiaTY0LmFkZCI6ICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAi
dmFsdWUiOiAxMjQsICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImk2NCIs
ICJpNjQiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiQWRkIiAgICAgICAg
ICB9LAotICAgICAgICAiaTY0LnN1YiI6ICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRo
bWV0aWMiLCAidmFsdWUiOiAxMjUsICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIi
OiBbImk2NCIsICJpNjQiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiU3Vi
IiAgICAgICAgICB9LAotICAgICAgICAiaTY0Lm11bCI6ICAgICAgICAgICAgIHsgImNhdGVnb3J5
IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxMjYsICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJw
YXJhbWV0ZXIiOiBbImk2NCIsICJpNjQiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIz
b3AiOiAiTXVsIiAgICAgICAgICB9LAotICAgICAgICAiaTY0LmRpdl9zIjogICAgICAgICAgIHsg
ImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxMjcsICJyZXR1cm4iOiBbImk2NCJd
LCAgICAgICJwYXJhbWV0ZXIiOiBbImk2NCIsICJpNjQiXSwgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbXSAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAiaTY0LmRpdl91IjogICAg
ICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxMjgsICJyZXR1cm4i
OiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImk2NCIsICJpNjQiXSwgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbXSAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAiaTY0LnJl
bV9zIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxMjks
ICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImk2NCIsICJpNjQiXSwgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbXSAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAiaTY0LnJlbV91IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFs
dWUiOiAxMzAsICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImk2NCIsICJp
NjQiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSAgICAgICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAiaTY0LmFuZCI6ICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0
aWMiLCAidmFsdWUiOiAxMzEsICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBb
Imk2NCIsICJpNjQiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiQml0QW5k
IiAgICAgICB9LAotICAgICAgICAiaTY0Lm9yIjogICAgICAgICAgICAgIHsgImNhdGVnb3J5Ijog
ImFyaXRobWV0aWMiLCAidmFsdWUiOiAxMzIsICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJh
bWV0ZXIiOiBbImk2NCIsICJpNjQiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3Ai
OiAiQml0T3IiICAgICAgICB9LAotICAgICAgICAiaTY0LnhvciI6ICAgICAgICAgICAgIHsgImNh
dGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxMzMsICJyZXR1cm4iOiBbImk2NCJdLCAg
ICAgICJwYXJhbWV0ZXIiOiBbImk2NCIsICJpNjQiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
XSwgImIzb3AiOiAiQml0WG9yIiAgICAgICB9LAotICAgICAgICAiaTY0LnNobCI6ICAgICAgICAg
ICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxMzQsICJyZXR1cm4iOiBb
Imk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImk2NCIsICJpNjQiXSwgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbXSwgImIzb3AiOiAiU2hsKEAwLCBUcnVuYyhAMSkpIiB9LAotICAgICAgICAiaTY0
LnNocl91IjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAx
MzYsICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImk2NCIsICJpNjQiXSwg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiWlNocihAMCwgVHJ1bmMoQDEpKSIg
fSwKLSAgICAgICAgImk2NC5zaHJfcyI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1l
dGljIiwgInZhbHVlIjogMTM1LCAicmV0dXJuIjogWyJpNjQiXSwgICAgICAicGFyYW1ldGVyIjog
WyJpNjQiLCAiaTY0Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIlNTaHIo
QDAsIFRydW5jKEAxKSkiIH0sCi0gICAgICAgICJpNjQucm90ciI6ICAgICAgICAgICAgeyAiY2F0
ZWdvcnkiOiAiYXJpdGhtZXRpYyIsICJ2YWx1ZSI6IDEzOCwgInJldHVybiI6IFsiaTY0Il0sICAg
ICAgInBhcmFtZXRlciI6IFsiaTY0IiwgImk2NCJdLCAgICAgICAgICAgImltbWVkaWF0ZSI6IFtd
LCAiYjNvcCI6ICJSb3RSKEAwLCBUcnVuYyhAMSkpIiB9LAotICAgICAgICAiaTY0LnJvdGwiOiAg
ICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxMzcsICJyZXR1
cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImk2NCIsICJpNjQiXSwgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiUm90TChAMCwgVHJ1bmMoQDEpKSIgfSwKLSAgICAg
ICAgImk2NC5lcSI6ICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZh
bHVlIjogIDgxLCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJpNjQiLCAi
aTY0Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkVxdWFsIiAgICAgICAg
fSwKLSAgICAgICAgImk2NC5uZSI6ICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJp
c29uIiwgInZhbHVlIjogIDgyLCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjog
WyJpNjQiLCAiaTY0Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIk5vdEVx
dWFsIiAgICAgfSwKLSAgICAgICAgImk2NC5sdF9zIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6
ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDgzLCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFy
YW1ldGVyIjogWyJpNjQiLCAiaTY0Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29w
IjogIkxlc3NUaGFuIiAgICAgfSwKLSAgICAgICAgImk2NC5sZV9zIjogICAgICAgICAgICB7ICJj
YXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDg3LCAicmV0dXJuIjogWyJib29sIl0s
ICAgICAicGFyYW1ldGVyIjogWyJpNjQiLCAiaTY0Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjog
W10sICJiM29wIjogIkxlc3NFcXVhbCIgICAgfSwKLSAgICAgICAgImk2NC5sdF91IjogICAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDg0LCAicmV0dXJuIjog
WyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJpNjQiLCAiaTY0Il0sICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW10sICJiM29wIjogIkJlbG93IiAgICAgICAgfSwKLSAgICAgICAgImk2NC5sZV91
IjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDg4LCAi
cmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJpNjQiLCAiaTY0Il0sICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkJlbG93RXF1YWwiICAgfSwKLSAgICAgICAg
Imk2NC5ndF9zIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVl
IjogIDg1LCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJpNjQiLCAiaTY0
Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkdyZWF0ZXJUaGFuIiAgfSwK
LSAgICAgICAgImk2NC5nZV9zIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29u
IiwgInZhbHVlIjogIDg5LCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJp
NjQiLCAiaTY0Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkdyZWF0ZXJF
cXVhbCIgfSwKLSAgICAgICAgImk2NC5ndF91IjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJj
b21wYXJpc29uIiwgInZhbHVlIjogIDg2LCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1l
dGVyIjogWyJpNjQiLCAiaTY0Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjog
IkFib3ZlIiAgICAgICAgfSwKLSAgICAgICAgImk2NC5nZV91IjogICAgICAgICAgICB7ICJjYXRl
Z29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDkwLCAicmV0dXJuIjogWyJib29sIl0sICAg
ICAicGFyYW1ldGVyIjogWyJpNjQiLCAiaTY0Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10s
ICJiM29wIjogIkFib3ZlRXF1YWwiICAgfSwKLSAgICAgICAgImk2NC5jbHoiOiAgICAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTIxLCAicmV0dXJuIjogWyJp
NjQiXSwgICAgICAicGFyYW1ldGVyIjogWyJpNjQiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW10sICJiM29wIjogIkNseiIgICAgICAgICAgfSwKLSAgICAgICAgImk2NC5jdHoiOiAg
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTIyLCAicmV0
dXJuIjogWyJpNjQiXSwgICAgICAicGFyYW1ldGVyIjogWyJpNjQiXSwgICAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW10gICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgImk2
NC5wb3BjbnQiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjog
MTIzLCAicmV0dXJuIjogWyJpNjQiXSwgICAgICAicGFyYW1ldGVyIjogWyJpNjQiXSwgICAgICAg
ICAgICAgICAgICAiaW1tZWRpYXRlIjogW10gICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgImk2NC5lcXoiOiAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwg
InZhbHVlIjogIDgwLCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJpNjQi
XSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkVxdWFsKGk2NCgw
KSwgQDApIiB9LAotICAgICAgICAiZjMyLmFkZCI6ICAgICAgICAgICAgIHsgImNhdGVnb3J5Ijog
ImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNDYsICJyZXR1cm4iOiBbImYzMiJdLCAgICAgICJwYXJh
bWV0ZXIiOiBbImYzMiIsICJmMzIiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3Ai
OiAiQWRkIiAgICAgICAgICB9LAotICAgICAgICAiZjMyLnN1YiI6ICAgICAgICAgICAgIHsgImNh
dGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNDcsICJyZXR1cm4iOiBbImYzMiJdLCAg
ICAgICJwYXJhbWV0ZXIiOiBbImYzMiIsICJmMzIiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
XSwgImIzb3AiOiAiU3ViIiAgICAgICAgICB9LAotICAgICAgICAiZjMyLm11bCI6ICAgICAgICAg
ICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNDgsICJyZXR1cm4iOiBb
ImYzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImYzMiIsICJmMzIiXSwgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbXSwgImIzb3AiOiAiTXVsIiAgICAgICAgICB9LAotICAgICAgICAiZjMyLmRpdiI6
ICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNDksICJy
ZXR1cm4iOiBbImYzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImYzMiIsICJmMzIiXSwgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiRGl2IiAgICAgICAgICB9LAotICAgICAgICAi
ZjMyLm1pbiI6ICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUi
OiAxNTAsICJyZXR1cm4iOiBbImYzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImYzMiIsICJmMzIi
XSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiU2VsZWN0KEVxdWFsKEAwLCBA
MSksIEJpdE9yKEAwLCBAMSksIFNlbGVjdChMZXNzVGhhbihAMCwgQDEpLCBAMCwgQDEpKSIgfSwK
LSAgICAgICAgImYzMi5tYXgiOiAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGlj
IiwgInZhbHVlIjogMTUxLCAicmV0dXJuIjogWyJmMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJm
MzIiLCAiZjMyIl0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIlNlbGVjdChF
cXVhbChAMCwgQDEpLCBCaXRBbmQoQDAsIEAxKSwgU2VsZWN0KExlc3NUaGFuKEAwLCBAMSksIEAx
LCBAMCkpIiB9LAotICAgICAgICAiZjMyLmFicyI6ICAgICAgICAgICAgIHsgImNhdGVnb3J5Ijog
ImFyaXRobWV0aWMiLCAidmFsdWUiOiAxMzksICJyZXR1cm4iOiBbImYzMiJdLCAgICAgICJwYXJh
bWV0ZXIiOiBbImYzMiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3Ai
OiAiQWJzIiAgICAgICAgICB9LAotICAgICAgICAiZjMyLm5lZyI6ICAgICAgICAgICAgIHsgImNh
dGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNDAsICJyZXR1cm4iOiBbImYzMiJdLCAg
ICAgICJwYXJhbWV0ZXIiOiBbImYzMiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
XSwgImIzb3AiOiAiTmVnIiAgICAgICAgICB9LAotICAgICAgICAiZjMyLmNvcHlzaWduIjogICAg
ICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNTIsICJyZXR1cm4iOiBb
ImYzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImYzMiIsICJmMzIiXSwgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbXSwgImIzb3AiOiAiQml0d2lzZUNhc3QoQml0T3IoQml0QW5kKEJpdHdpc2VDYXN0
KEAxKSwgaTMyKDB4ODAwMDAwMDApKSwgQml0QW5kKEJpdHdpc2VDYXN0KEAwKSwgaTMyKDB4N2Zm
ZmZmZmYpKSkpIiB9LAotICAgICAgICAiZjMyLmNlaWwiOiAgICAgICAgICAgIHsgImNhdGVnb3J5
IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNDEsICJyZXR1cm4iOiBbImYzMiJdLCAgICAgICJw
YXJhbWV0ZXIiOiBbImYzMiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIz
b3AiOiAiQ2VpbCIgICAgICAgICB9LAotICAgICAgICAiZjMyLmZsb29yIjogICAgICAgICAgIHsg
ImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNDIsICJyZXR1cm4iOiBbImYzMiJd
LCAgICAgICJwYXJhbWV0ZXIiOiBbImYzMiJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUi
OiBbXSwgImIzb3AiOiAiRmxvb3IiICAgICAgICB9LAotICAgICAgICAiZjMyLnRydW5jIjogICAg
ICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNDMsICJyZXR1cm4i
OiBbImYzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImYzMiJdLCAgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbXSAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAiZjMyLm5l
YXJlc3QiOiAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNDQs
ICJyZXR1cm4iOiBbImYzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImYzMiJdLCAgICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbXSAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAiZjMyLnNxcnQiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFs
dWUiOiAxNDUsICJyZXR1cm4iOiBbImYzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImYzMiJdLCAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiU3FydCIgICAgICAgICB9
LAotICAgICAgICAiZjMyLmVxIjogICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNvbXBhcmlz
b24iLCAidmFsdWUiOiAgOTEsICJyZXR1cm4iOiBbImJvb2wiXSwgICAgICJwYXJhbWV0ZXIiOiBb
ImYzMiIsICJmMzIiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiRXF1YWwi
ICAgICAgICB9LAotICAgICAgICAiZjMyLm5lIjogICAgICAgICAgICAgIHsgImNhdGVnb3J5Ijog
ImNvbXBhcmlzb24iLCAidmFsdWUiOiAgOTIsICJyZXR1cm4iOiBbImJvb2wiXSwgICAgICJwYXJh
bWV0ZXIiOiBbImYzMiIsICJmMzIiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3Ai
OiAiTm90RXF1YWwiICAgICB9LAotICAgICAgICAiZjMyLmx0IjogICAgICAgICAgICAgIHsgImNh
dGVnb3J5IjogImNvbXBhcmlzb24iLCAidmFsdWUiOiAgOTMsICJyZXR1cm4iOiBbImJvb2wiXSwg
ICAgICJwYXJhbWV0ZXIiOiBbImYzMiIsICJmMzIiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
XSwgImIzb3AiOiAiTGVzc1RoYW4iICAgICB9LAotICAgICAgICAiZjMyLmxlIjogICAgICAgICAg
ICAgIHsgImNhdGVnb3J5IjogImNvbXBhcmlzb24iLCAidmFsdWUiOiAgOTUsICJyZXR1cm4iOiBb
ImJvb2wiXSwgICAgICJwYXJhbWV0ZXIiOiBbImYzMiIsICJmMzIiXSwgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbXSwgImIzb3AiOiAiTGVzc0VxdWFsIiAgICB9LAotICAgICAgICAiZjMyLmd0Ijog
ICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNvbXBhcmlzb24iLCAidmFsdWUiOiAgOTQsICJy
ZXR1cm4iOiBbImJvb2wiXSwgICAgICJwYXJhbWV0ZXIiOiBbImYzMiIsICJmMzIiXSwgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiR3JlYXRlclRoYW4iICB9LAotICAgICAgICAi
ZjMyLmdlIjogICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNvbXBhcmlzb24iLCAidmFsdWUi
OiAgOTYsICJyZXR1cm4iOiBbImJvb2wiXSwgICAgICJwYXJhbWV0ZXIiOiBbImYzMiIsICJmMzIi
XSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiR3JlYXRlckVxdWFsIiB9LAot
ICAgICAgICAiZjY0LmFkZCI6ICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMi
LCAidmFsdWUiOiAxNjAsICJyZXR1cm4iOiBbImY2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImY2
NCIsICJmNjQiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiQWRkIiAgICAg
ICAgICB9LAotICAgICAgICAiZjY0LnN1YiI6ICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImFy
aXRobWV0aWMiLCAidmFsdWUiOiAxNjEsICJyZXR1cm4iOiBbImY2NCJdLCAgICAgICJwYXJhbWV0
ZXIiOiBbImY2NCIsICJmNjQiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAi
U3ViIiAgICAgICAgICB9LAotICAgICAgICAiZjY0Lm11bCI6ICAgICAgICAgICAgIHsgImNhdGVn
b3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNjIsICJyZXR1cm4iOiBbImY2NCJdLCAgICAg
ICJwYXJhbWV0ZXIiOiBbImY2NCIsICJmNjQiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwg
ImIzb3AiOiAiTXVsIiAgICAgICAgICB9LAotICAgICAgICAiZjY0LmRpdiI6ICAgICAgICAgICAg
IHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNjMsICJyZXR1cm4iOiBbImY2
NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImY2NCIsICJmNjQiXSwgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbXSwgImIzb3AiOiAiRGl2IiAgICAgICAgICB9LAotICAgICAgICAiZjY0Lm1pbiI6ICAg
ICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNjQsICJyZXR1
cm4iOiBbImY2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImY2NCIsICJmNjQiXSwgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiU2VsZWN0KEVxdWFsKEAwLCBAMSksIEJpdE9yKEAw
LCBAMSksIFNlbGVjdChMZXNzVGhhbihAMCwgQDEpLCBAMCwgQDEpKSIgfSwKLSAgICAgICAgImY2
NC5tYXgiOiAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjog
MTY1LCAicmV0dXJuIjogWyJmNjQiXSwgICAgICAicGFyYW1ldGVyIjogWyJmNjQiLCAiZjY0Il0s
ICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIlNlbGVjdChFcXVhbChAMCwgQDEp
LCBCaXRBbmQoQDAsIEAxKSwgU2VsZWN0KExlc3NUaGFuKEAwLCBAMSksIEAxLCBAMCkpIiB9LAot
ICAgICAgICAiZjY0LmFicyI6ICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImFyaXRobWV0aWMi
LCAidmFsdWUiOiAxNTMsICJyZXR1cm4iOiBbImY2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImY2
NCJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiQWJzIiAgICAg
ICAgICB9LAotICAgICAgICAiZjY0Lm5lZyI6ICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImFy
aXRobWV0aWMiLCAidmFsdWUiOiAxNTQsICJyZXR1cm4iOiBbImY2NCJdLCAgICAgICJwYXJhbWV0
ZXIiOiBbImY2NCJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAi
TmVnIiAgICAgICAgICB9LAotICAgICAgICAiZjY0LmNvcHlzaWduIjogICAgICAgIHsgImNhdGVn
b3J5IjogImFyaXRobWV0aWMiLCAidmFsdWUiOiAxNjYsICJyZXR1cm4iOiBbImY2NCJdLCAgICAg
ICJwYXJhbWV0ZXIiOiBbImY2NCIsICJmNjQiXSwgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwg
ImIzb3AiOiAiQml0d2lzZUNhc3QoQml0T3IoQml0QW5kKEJpdHdpc2VDYXN0KEAxKSwgaTY0KDB4
ODAwMDAwMDAwMDAwMDAwMCkpLCBCaXRBbmQoQml0d2lzZUNhc3QoQDApLCBpNjQoMHg3ZmZmZmZm
ZmZmZmZmZmZmKSkpKSIgfSwKLSAgICAgICAgImY2NC5jZWlsIjogICAgICAgICAgICB7ICJjYXRl
Z29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTU1LCAicmV0dXJuIjogWyJmNjQiXSwgICAg
ICAicGFyYW1ldGVyIjogWyJmNjQiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10s
ICJiM29wIjogIkNlaWwiICAgICAgICAgfSwKLSAgICAgICAgImY2NC5mbG9vciI6ICAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTU2LCAicmV0dXJuIjogWyJm
NjQiXSwgICAgICAicGFyYW1ldGVyIjogWyJmNjQiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW10sICJiM29wIjogIkZsb29yIiAgICAgICAgfSwKLSAgICAgICAgImY2NC50cnVuYyI6
ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjogMTU3LCAicmV0
dXJuIjogWyJmNjQiXSwgICAgICAicGFyYW1ldGVyIjogWyJmNjQiXSwgICAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW10gICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgImY2
NC5uZWFyZXN0IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwgInZhbHVlIjog
MTU4LCAicmV0dXJuIjogWyJmNjQiXSwgICAgICAicGFyYW1ldGVyIjogWyJmNjQiXSwgICAgICAg
ICAgICAgICAgICAiaW1tZWRpYXRlIjogW10gICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgImY2NC5zcXJ0IjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJhcml0aG1ldGljIiwg
InZhbHVlIjogMTU5LCAicmV0dXJuIjogWyJmNjQiXSwgICAgICAicGFyYW1ldGVyIjogWyJmNjQi
XSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIlNxcnQiICAgICAg
ICAgfSwKLSAgICAgICAgImY2NC5lcSI6ICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21w
YXJpc29uIiwgInZhbHVlIjogIDk3LCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVy
IjogWyJmNjQiLCAiZjY0Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkVx
dWFsIiAgICAgICAgfSwKLSAgICAgICAgImY2NC5uZSI6ICAgICAgICAgICAgICB7ICJjYXRlZ29y
eSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDk4LCAicmV0dXJuIjogWyJib29sIl0sICAgICAi
cGFyYW1ldGVyIjogWyJmNjQiLCAiZjY0Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJi
M29wIjogIk5vdEVxdWFsIiAgICAgfSwKLSAgICAgICAgImY2NC5sdCI6ICAgICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogIDk5LCAicmV0dXJuIjogWyJib29s
Il0sICAgICAicGFyYW1ldGVyIjogWyJmNjQiLCAiZjY0Il0sICAgICAgICAgICAiaW1tZWRpYXRl
IjogW10sICJiM29wIjogIkxlc3NUaGFuIiAgICAgfSwKLSAgICAgICAgImY2NC5sZSI6ICAgICAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogMTAxLCAicmV0dXJu
IjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJmNjQiLCAiZjY0Il0sICAgICAgICAgICAi
aW1tZWRpYXRlIjogW10sICJiM29wIjogIkxlc3NFcXVhbCIgICAgfSwKLSAgICAgICAgImY2NC5n
dCI6ICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZhbHVlIjogMTAw
LCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJmNjQiLCAiZjY0Il0sICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkdyZWF0ZXJUaGFuIiAgfSwKLSAgICAg
ICAgImY2NC5nZSI6ICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb21wYXJpc29uIiwgInZh
bHVlIjogMTAyLCAicmV0dXJuIjogWyJib29sIl0sICAgICAicGFyYW1ldGVyIjogWyJmNjQiLCAi
ZjY0Il0sICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIkdyZWF0ZXJFcXVhbCIg
fSwKLSAgICAgICAgImkzMi50cnVuY19zL2YzMiI6ICAgICB7ICJjYXRlZ29yeSI6ICJjb252ZXJz
aW9uIiwgInZhbHVlIjogMTY4LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjog
WyJmMzIiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10gICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgImkzMi50cnVuY19zL2Y2NCI6ICAgICB7ICJjYXRlZ29yeSI6
ICJjb252ZXJzaW9uIiwgInZhbHVlIjogMTcwLCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFy
YW1ldGVyIjogWyJmNjQiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10gICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgImkzMi50cnVuY191L2YzMiI6ICAgICB7ICJj
YXRlZ29yeSI6ICJjb252ZXJzaW9uIiwgInZhbHVlIjogMTY5LCAicmV0dXJuIjogWyJpMzIiXSwg
ICAgICAicGFyYW1ldGVyIjogWyJmMzIiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W10gICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgImkzMi50cnVuY191L2Y2NCI6
ICAgICB7ICJjYXRlZ29yeSI6ICJjb252ZXJzaW9uIiwgInZhbHVlIjogMTcxLCAicmV0dXJuIjog
WyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJmNjQiXSwgICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW10gICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgImkzMi53cmFw
L2k2NCI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJjb252ZXJzaW9uIiwgInZhbHVlIjogMTY3LCAi
cmV0dXJuIjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJpNjQiXSwgICAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIlRydW5jIiAgICAgICAgfSwKLSAgICAgICAg
Imk2NC50cnVuY19zL2YzMiI6ICAgICB7ICJjYXRlZ29yeSI6ICJjb252ZXJzaW9uIiwgInZhbHVl
IjogMTc0LCAicmV0dXJuIjogWyJpNjQiXSwgICAgICAicGFyYW1ldGVyIjogWyJmMzIiXSwgICAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10gICAgICAgICAgICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgImk2NC50cnVuY19zL2Y2NCI6ICAgICB7ICJjYXRlZ29yeSI6ICJjb252ZXJzaW9u
IiwgInZhbHVlIjogMTc2LCAicmV0dXJuIjogWyJpNjQiXSwgICAgICAicGFyYW1ldGVyIjogWyJm
NjQiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10gICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgImk2NC50cnVuY191L2YzMiI6ICAgICB7ICJjYXRlZ29yeSI6ICJj
b252ZXJzaW9uIiwgInZhbHVlIjogMTc1LCAicmV0dXJuIjogWyJpNjQiXSwgICAgICAicGFyYW1l
dGVyIjogWyJmMzIiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10gICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgImk2NC50cnVuY191L2Y2NCI6ICAgICB7ICJjYXRl
Z29yeSI6ICJjb252ZXJzaW9uIiwgInZhbHVlIjogMTc3LCAicmV0dXJuIjogWyJpNjQiXSwgICAg
ICAicGFyYW1ldGVyIjogWyJmNjQiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10g
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgImk2NC5leHRlbmRfcy9pMzIiOiAg
ICB7ICJjYXRlZ29yeSI6ICJjb252ZXJzaW9uIiwgInZhbHVlIjogMTcyLCAicmV0dXJuIjogWyJp
NjQiXSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW10sICJiM29wIjogIlNFeHQzMiIgICAgICAgfSwKLSAgICAgICAgImk2NC5leHRlbmRf
dS9pMzIiOiAgICB7ICJjYXRlZ29yeSI6ICJjb252ZXJzaW9uIiwgInZhbHVlIjogMTczLCAicmV0
dXJuIjogWyJpNjQiXSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAgICAgICAgICAg
ICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIlpFeHQzMiIgICAgICAgfSwKLSAgICAgICAgImYz
Mi5jb252ZXJ0X3MvaTMyIjogICB7ICJjYXRlZ29yeSI6ICJjb252ZXJzaW9uIiwgInZhbHVlIjog
MTc4LCAicmV0dXJuIjogWyJmMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIiXSwgICAgICAg
ICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIklUb0YiICAgICAgICAgfSwKLSAg
ICAgICAgImYzMi5jb252ZXJ0X3UvaTMyIjogICB7ICJjYXRlZ29yeSI6ICJjb252ZXJzaW9uIiwg
InZhbHVlIjogMTc5LCAicmV0dXJuIjogWyJmMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJpMzIi
XSwgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICJiM29wIjogIklUb0YoWkV4dDMy
KEAwKSkiIH0sCi0gICAgICAgICJmMzIuY29udmVydF9zL2k2NCI6ICAgeyAiY2F0ZWdvcnkiOiAi
Y29udmVyc2lvbiIsICJ2YWx1ZSI6IDE4MCwgInJldHVybiI6IFsiZjMyIl0sICAgICAgInBhcmFt
ZXRlciI6IFsiaTY0Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAiYjNvcCI6
ICJJVG9GIiAgICAgICAgIH0sCi0gICAgICAgICJmMzIuY29udmVydF91L2k2NCI6ICAgeyAiY2F0
ZWdvcnkiOiAiY29udmVyc2lvbiIsICJ2YWx1ZSI6IDE4MSwgInJldHVybiI6IFsiZjMyIl0sICAg
ICAgInBhcmFtZXRlciI6IFsiaTY0Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtd
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICJmMzIuZGVtb3RlL2Y2NCI6ICAg
ICAgeyAiY2F0ZWdvcnkiOiAiY29udmVyc2lvbiIsICJ2YWx1ZSI6IDE4MiwgInJldHVybiI6IFsi
ZjMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiZjY0Il0sICAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFtdLCAiYjNvcCI6ICJEb3VibGVUb0Zsb2F0In0sCi0gICAgICAgICJmMzIucmVpbnRl
cnByZXQvaTMyIjogeyAiY2F0ZWdvcnkiOiAiY29udmVyc2lvbiIsICJ2YWx1ZSI6IDE5MCwgInJl
dHVybiI6IFsiZjMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiaTMyIl0sICAgICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFtdLCAiYjNvcCI6ICJCaXR3aXNlQ2FzdCIgIH0sCi0gICAgICAgICJm
NjQuY29udmVydF9zL2kzMiI6ICAgeyAiY2F0ZWdvcnkiOiAiY29udmVyc2lvbiIsICJ2YWx1ZSI6
IDE4MywgInJldHVybiI6IFsiZjY0Il0sICAgICAgInBhcmFtZXRlciI6IFsiaTMyIl0sICAgICAg
ICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAiYjNvcCI6ICJJVG9EIiAgICAgICAgIH0sCi0g
ICAgICAgICJmNjQuY29udmVydF91L2kzMiI6ICAgeyAiY2F0ZWdvcnkiOiAiY29udmVyc2lvbiIs
ICJ2YWx1ZSI6IDE4NCwgInJldHVybiI6IFsiZjY0Il0sICAgICAgInBhcmFtZXRlciI6IFsiaTMy
Il0sICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAiYjNvcCI6ICJJVG9EKFpFeHQz
MihAMCkpIiB9LAotICAgICAgICAiZjY0LmNvbnZlcnRfcy9pNjQiOiAgIHsgImNhdGVnb3J5Ijog
ImNvbnZlcnNpb24iLCAidmFsdWUiOiAxODUsICJyZXR1cm4iOiBbImY2NCJdLCAgICAgICJwYXJh
bWV0ZXIiOiBbImk2NCJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3Ai
OiAiSVRvRCIgICAgICAgICB9LAotICAgICAgICAiZjY0LmNvbnZlcnRfdS9pNjQiOiAgIHsgImNh
dGVnb3J5IjogImNvbnZlcnNpb24iLCAidmFsdWUiOiAxODYsICJyZXR1cm4iOiBbImY2NCJdLCAg
ICAgICJwYXJhbWV0ZXIiOiBbImk2NCJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
XSAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAiZjY0LnByb21vdGUvZjMyIjog
ICAgIHsgImNhdGVnb3J5IjogImNvbnZlcnNpb24iLCAidmFsdWUiOiAxODcsICJyZXR1cm4iOiBb
ImY2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImYzMiJdLCAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbXSwgImIzb3AiOiAiRmxvYXRUb0RvdWJsZSJ9LAotICAgICAgICAiZjY0LnJlaW50
ZXJwcmV0L2k2NCI6IHsgImNhdGVnb3J5IjogImNvbnZlcnNpb24iLCAidmFsdWUiOiAxOTEsICJy
ZXR1cm4iOiBbImY2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImk2NCJdLCAgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiQml0d2lzZUNhc3QiICB9LAotICAgICAgICAi
aTMyLnJlaW50ZXJwcmV0L2YzMiI6IHsgImNhdGVnb3J5IjogImNvbnZlcnNpb24iLCAidmFsdWUi
OiAxODgsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImYzMiJdLCAgICAg
ICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiQml0d2lzZUNhc3QiICB9LAot
ICAgICAgICAiaTY0LnJlaW50ZXJwcmV0L2Y2NCI6IHsgImNhdGVnb3J5IjogImNvbnZlcnNpb24i
LCAidmFsdWUiOiAxODksICJyZXR1cm4iOiBbImk2NCJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImY2
NCJdLCAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgImIzb3AiOiAiQml0d2lzZUNh
c3QiICB9Ci0gICAgfQotfQotYDsKLQotCi1jb25zdCBfZW52aXJvbm1lbnQgPQotICAgICgodHlw
ZW9mIHByb2Nlc3MgPT09ICJvYmplY3QiICYmIHR5cGVvZiByZXF1aXJlID09PSAiZnVuY3Rpb24i
KSA/ICJub2RlIgotICAgICA6ICh0eXBlb2Ygd2luZG93ID09PSAib2JqZWN0IiA/ICJ3ZWIiCi0g
ICAgICAgIDogKHR5cGVvZiBpbXBvcnRTY3JpcHRzID09PSAiZnVuY3Rpb24iID8gIndvcmtlciIK
LSAgICAgICAgICAgOiAic2hlbGwiKSkpOwotCi1sZXQgX2dsb2JhbCA9ICh0eXBlb2YgZ2xvYmFs
ICE9PSAnb2JqZWN0JyB8fCAhZ2xvYmFsIHx8IGdsb2JhbC5NYXRoICE9PSBNYXRoIHx8IGdsb2Jh
bC5BcnJheSAhPT0gQXJyYXkpCi0gICAgPyAoKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykg
PyBzZWxmCi0gICAgICAgOiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpID8gd2luZG93
Ci0gICAgICAgOiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpID8gZ2xvYmFsCi0gICAg
ICAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpKQotICAgIDogZ2xvYmFsOwotCi1jb25zdCBf
ZXZhbCA9IHggPT4gZXZhbC5jYWxsKG51bGwsIHgpOwotCi1jb25zdCBfcmVhZCA9IGZpbGVuYW1l
ID0+IHsKLSAgICBzd2l0Y2ggKF9lbnZpcm9ubWVudCkgewotICAgIGNhc2UgIm5vZGUiOiAgIHJl
dHVybiByZWFkKGZpbGVuYW1lKTsKLSAgICBjYXNlICJ3ZWIiOiAgICAvLyBmYWxsdGhyb3VnaAot
ICAgIGNhc2UgIndvcmtlciI6IGxldCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsgeGhyLm9w
ZW4oIkdFVCIsIGZpbGVuYW1lLCAvKmFzeW5jPSovZmFsc2UpOyByZXR1cm4geGhyLnJlc3BvbnNl
VGV4dDsKLSAgICBjYXNlICJzaGVsbCI6ICByZXR1cm4gcmVhZChmaWxlbmFtZSk7Ci0gICAgfQot
fQotCi1jb25zdCBfbG9hZCA9IGZpbGVuYW1lID0+IHsKLSAgICBzd2l0Y2ggKF9lbnZpcm9ubWVu
dCkgewotICAgIGNhc2UgIm5vZGUiOiAgIC8vIGZhbGx0aHJvdWdoCi0gICAgY2FzZSAid2ViIjog
ICAgLy8gZmFsbHRocm91Z2gKLSAgICBjYXNlICJzaGVsbCI6ICByZXR1cm4gX2V2YWwoX3JlYWQo
ZmlsZW5hbWUpKTsKLSAgICBjYXNlICJ3b3JrZXIiOiByZXR1cm4gaW1wb3J0U2NyaXB0cyhmaWxl
bmFtZSk7Ci0gICAgfQotfQotCi1jb25zdCBfanNvbiA9IGZpbGVuYW1lID0+IHsKLSAgICBhc3Nl
cnQuZXEoZmlsZW5hbWUsICJ3YXNtLmpzb24iKTsKLSAgICByZXR1cm4gSlNPTi5wYXJzZShXQVNN
X0pTT04pOwotCi0gICAgc3dpdGNoIChfZW52aXJvbm1lbnQpIHsKLSAgICBjYXNlICJub2RlIjog
ICAvLyBmYWxsdGhyb3VnaAotICAgIGNhc2UgInNoZWxsIjogIHJldHVybiBKU09OLnBhcnNlKF9y
ZWFkKGZpbGVuYW1lKSk7Ci0gICAgY2FzZSAid2ViIjogICAgLy8gZmFsbHRocm91Z2gKLSAgICBj
YXNlICJ3b3JrZXIiOiBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7IHhoci5vdmVycmlk
ZU1pbWVUeXBlKCJhcHBsaWNhdGlvbi9qc29uIik7IHhoci5vcGVuKCJHRVQiLCBmaWxlbmFtZSwg
Lyphc3luYz0qL2ZhbHNlKTsgcmV0dXJuIHhoci5yZXNwb25zZTsKLSAgICB9Ci19Ci0KLWNvbnN0
IF9kdW1wID0gKHdoYXQsIG5hbWUsIHBhZCA9ICcgICAgJykgPT4gewotICAgIGNvbnN0IHZhbHVl
ID0gdiA9PiB7Ci0gICAgICAgIHRyeSB7IHJldHVybiBgIiR7dn0iYDsgfQotICAgICAgICBjYXRj
aCAoZSkgeyByZXR1cm4gYEVycm9yOiAiJHtlLm1lc3NhZ2V9ImA7IH0KLSAgICB9OwotICAgIGxl
dCBzID0gYCR7cGFkfSR7bmFtZX0gJHt0eXBlb2Ygd2hhdH06ICR7dmFsdWUod2hhdCl9YDsKLSAg
ICBmb3IgKGxldCBwIGluIHdoYXQpIHsKLSAgICAgICAgcyArPSBgXG4ke3BhZH0ke3BhZH0ke3B9
OiAke3ZhbHVlKHdoYXRbcF0pfSAke3R5cGVvZiB2fWA7Ci0gICAgICAgIHMgKz0gJ1xuJyArIF9k
dW1wKHdoYXRbcF0sIHAsIHBhZCArIHBhZCk7Ci0gICAgfQotICAgIHJldHVybiBzOwotfTsKLQot
Ly8gVXNlIHVuZGVyc2NvcmUgbmFtZXMgdG8gYXZvaWQgY2xhc2hpbmcgd2l0aCBidWlsdGluIG5h
bWVzLgotY29uc3QgdXRpbGl0aWVzID0gewotICAgIGR1bXAgOiBfZHVtcCwKLSAgICBldmFsIDog
X2V2YWwsCi0gICAgcmVhZCA6IF9yZWFkLAotICAgIGxvYWQgOiBfbG9hZCwKLSAgICBqc29uIDog
X2pzb24sCi0gICAgZ2xvYmFsIDogX2dsb2JhbAotfTsKLQotCi1jb25zdCBfbWFwVmFsdWVzID0g
ZnJvbSA9PiB7Ci0gICAgbGV0IHZhbHVlcyA9IHt9OwotICAgIGZvciAoY29uc3Qga2V5IGluIGZy
b20pCi0gICAgICAgIHZhbHVlc1trZXldID0gZnJvbVtrZXldLnZhbHVlOwotICAgIHJldHVybiB2
YWx1ZXM7Ci19OwotCi0KLWNvbnN0IFdBU00gPSB7fTsKLXsKLSAgICBjb25zdCBkZXNjcmlwdGlv
biA9IFdBU00uZGVzY3JpcHRpb24gPSB1dGlsaXRpZXMuanNvbigid2FzbS5qc29uIik7Ci0gICAg
Y29uc3QgdHlwZSA9IFdBU00udHlwZSA9IE9iamVjdC5rZXlzKGRlc2NyaXB0aW9uLnR5cGUpOwot
ICAgIGNvbnN0IF90eXBlU2V0ID0gbmV3IFNldCh0eXBlKTsKLSAgICBXQVNNLmlzVmFsaWRUeXBl
ID0gdiA9PiBfdHlwZVNldC5oYXModik7Ci0gICAgV0FTTS50eXBlVmFsdWUgPSBfbWFwVmFsdWVz
KGRlc2NyaXB0aW9uLnR5cGUpOwotICAgIGNvbnN0IF92YWx1ZVR5cGVTZXQgPSBuZXcgU2V0KGRl
c2NyaXB0aW9uLnZhbHVlX3R5cGUpOwotICAgIFdBU00uaXNWYWxpZFZhbHVlVHlwZSA9IHYgPT4g
X3ZhbHVlVHlwZVNldC5oYXModik7Ci0gICAgY29uc3QgX2Jsb2NrVHlwZVNldCA9IG5ldyBTZXQo
ZGVzY3JpcHRpb24uYmxvY2tfdHlwZSk7Ci0gICAgV0FTTS5pc1ZhbGlkQmxvY2tUeXBlID0gdiA9
PiBfYmxvY2tUeXBlU2V0Lmhhcyh2KTsKLSAgICBXQVNNLmV4dGVybmFsS2luZFZhbHVlID0gX21h
cFZhbHVlcyhkZXNjcmlwdGlvbi5leHRlcm5hbF9raW5kKTsKLSAgICBjb25zdCBzZWN0aW9ucyA9
IFdBU00uc2VjdGlvbnMgPSBPYmplY3Qua2V5cyhkZXNjcmlwdGlvbi5zZWN0aW9uKTsKLSAgICBX
QVNNLnNlY3Rpb25FbmNvZGluZ1R5cGUgPSBkZXNjcmlwdGlvbi5zZWN0aW9uW3NlY3Rpb25zWzBd
XS50eXBlOwotfQotCi0KLS8vIExvd0xldmVsQmluYXJ5LmpzCi1jb25zdCBfaW5pdGlhbEFsbG9j
YXRpb25TaXplID0gMTAyNDsKLWNvbnN0IF9ncm93QWxsb2NhdGlvblNpemUgPSBhbGxvY2F0ZWQg
PT4gYWxsb2NhdGVkICogMjsKLQotCi1jb25zdCB2YXJ1aW50MzJNaW4gPSAwOwotY29uc3QgdmFy
aW50N01pbiA9IC0wYjEwMDAwMDA7Ci1jb25zdCB2YXJpbnQ3TWF4ID0gMGIxMTExMTE7Ci1jb25z
dCB2YXJ1aW50N01heCA9IDBiMTExMTExMTsKLWNvbnN0IHZhcnVpbnQzMk1heCA9ICgoKCgxIDw8
IDMxKSA+Pj4gMCkgLSAxKSAqIDIpICsgMTsKLWNvbnN0IHZhcmludDMyTWluID0gLSgoMSA8PCAz
MSkgPj4+IDApOwotY29uc3QgdmFyaW50MzJNYXggPSAoKDEgPDwgMzEpIC0gMSkgPj4+IDA7Ci1j
b25zdCB2YXJCaXRzTWF4ID0gNTsKLQotY29uc3QgX2dldHRlclJhbmdlQ2hlY2sgPSAobGxiLCBh
dCwgc2l6ZSkgPT4gewotICAgIGlmICgwID4gYXQgfHwgYXQgKyBzaXplID4gbGxiLl91c2VkKQot
ICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgWyR7YXR9LCAke2F0ICsgc2l6ZX0pIGlzIG91
dCBvZiBidWZmZXIgcmFuZ2UgWzAsICR7bGxiLl91c2VkfSlgKTsKLX07Ci0KLWNvbnN0IF9oZXhk
dW1wID0gKGJ1Ziwgc2l6ZSkgPT4gewotICAgIGxldCBzID0gIiI7Ci0gICAgY29uc3Qgd2lkdGgg
PSAxNjsKLSAgICBjb25zdCBiYXNlID0gMTY7Ci0gICAgZm9yIChsZXQgcm93ID0gMDsgcm93ICog
d2lkdGggPCBzaXplOyArK3JvdykgewotICAgICAgICBjb25zdCBhZGRyZXNzID0gKHJvdyAqIHdp
ZHRoKS50b1N0cmluZyhiYXNlKTsKLSAgICAgICAgcyArPSAiMCIucmVwZWF0KDggLSBhZGRyZXNz
Lmxlbmd0aCkgKyBhZGRyZXNzOwotICAgICAgICBsZXQgY2hhcnMgPSAiIjsKLSAgICAgICAgZm9y
IChsZXQgY29sID0gMDsgY29sICE9PSB3aWR0aDsgKytjb2wpIHsKLSAgICAgICAgICAgIGNvbnN0
IGlkeCA9IHJvdyAqIHdpZHRoICsgY29sOwotICAgICAgICAgICAgaWYgKGlkeCA8IHNpemUpIHsK
LSAgICAgICAgICAgICAgICBjb25zdCBieXRlID0gYnVmW2lkeF07Ci0gICAgICAgICAgICAgICAg
Y29uc3QgYnl0ZXN0ciA9IGJ5dGUudG9TdHJpbmcoYmFzZSk7Ci0gICAgICAgICAgICAgICAgcyAr
PSAiICIgKyAoYnl0ZXN0ci5sZW5ndGggPT09IDEgPyAiMCIgKyBieXRlc3RyIDogYnl0ZXN0cik7
Ci0gICAgICAgICAgICAgICAgY2hhcnMgKz0gMHgyMCA8PSBieXRlICYmIGJ5dGUgPCAweDdGID8g
U3RyaW5nLmZyb21DaGFyQ29kZShieXRlKSA6ICLCtyI7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIHMgKz0gIiAgICI7Ci0gICAgICAgICAgICAgICAgY2hhcnMgKz0gIiAi
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHMrPSAiICB8IiArIGNoYXJzICsg
InxcbiI7Ci0gICAgfQotICAgIHJldHVybiBzOwotfTsKLQotY2xhc3MgTG93TGV2ZWxCaW5hcnkg
ewotICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAgICB0aGlzLl9idWYgPSBuZXcgVWludDhBcnJh
eShfaW5pdGlhbEFsbG9jYXRpb25TaXplKTsKLSAgICAgICAgdGhpcy5fdXNlZCA9IDA7Ci0gICAg
fQotCi0gICAgbmV3UGF0Y2hhYmxlKHR5cGUpIHsgcmV0dXJuIG5ldyBQYXRjaGFibGVMb3dMZXZl
bEJpbmFyeSh0eXBlLCB0aGlzKTsgfQotCi0gICAgLy8gVXRpbGl0aWVzLgotICAgIGdldCgpIHsg
cmV0dXJuIHRoaXMuX2J1ZjsgfQotICAgIHRyaW0oKSB7IHRoaXMuX2J1ZiA9IHRoaXMuX2J1Zi5z
bGljZSgwLCB0aGlzLl91c2VkKTsgfQotCi0gICAgaGV4ZHVtcCgpIHsgcmV0dXJuIF9oZXhkdW1w
KHRoaXMuX2J1ZiwgdGhpcy5fdXNlZCk7IH0KLSAgICBfbWF5YmVHcm93KGJ5dGVzKSB7Ci0gICAg
ICAgIGNvbnN0IGFsbG9jYXRlZCA9IHRoaXMuX2J1Zi5sZW5ndGg7Ci0gICAgICAgIGlmIChhbGxv
Y2F0ZWQgLSB0aGlzLl91c2VkIDwgYnl0ZXMpIHsKLSAgICAgICAgICAgIGxldCBidWYgPSBuZXcg
VWludDhBcnJheShfZ3Jvd0FsbG9jYXRpb25TaXplKGFsbG9jYXRlZCkpOwotICAgICAgICAgICAg
YnVmLnNldCh0aGlzLl9idWYpOwotICAgICAgICAgICAgdGhpcy5fYnVmID0gYnVmOwotICAgICAg
ICB9Ci0gICAgfQotICAgIF9wdXNoOCh2KSB7IHRoaXMuX2J1Zlt0aGlzLl91c2VkXSA9IHYgJiAw
eEZGOyB0aGlzLl91c2VkICs9IDE7IH0KLQotICAgIC8vIERhdGEgdHlwZXMuCi0gICAgdWludDgo
dikgewotICAgICAgICBpZiAoKHYgJiAweEZGKSA+Pj4gMCAhPT0gdikKLSAgICAgICAgICAgIHRo
cm93IG5ldyBSYW5nZUVycm9yKGBJbnZhbGlkIHVpbnQ4ICR7dn1gKTsKLSAgICAgICAgdGhpcy5f
bWF5YmVHcm93KDEpOwotICAgICAgICB0aGlzLl9wdXNoOCh2KTsKLSAgICB9Ci0gICAgdWludDE2
KHYpIHsKLSAgICAgICAgaWYgKCh2ICYgMHhGRkZGKSA+Pj4gMCAhPT0gdikKLSAgICAgICAgICAg
IHRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhbGlkIHVpbnQxNiAke3Z9YCk7Ci0gICAgICAgIHRo
aXMuX21heWJlR3JvdygyKTsKLSAgICAgICAgdGhpcy5fcHVzaDgodik7Ci0gICAgICAgIHRoaXMu
X3B1c2g4KHYgPj4+IDgpOwotICAgIH0KLSAgICB1aW50MjQodikgewotICAgICAgICBpZiAoKHYg
JiAweEZGRkZGRikgPj4+IDAgIT09IHYpCi0gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJv
cihgSW52YWxpZCB1aW50MjQgJHt2fWApOwotICAgICAgICB0aGlzLl9tYXliZUdyb3coMyk7Ci0g
ICAgICAgIHRoaXMuX3B1c2g4KHYpOwotICAgICAgICB0aGlzLl9wdXNoOCh2ID4+PiA4KTsKLSAg
ICAgICAgdGhpcy5fcHVzaDgodiA+Pj4gMTYpOwotICAgIH0KLSAgICB1aW50MzIodikgewotICAg
ICAgICBpZiAoKHYgJiAweEZGRkZGRkZGKSA+Pj4gMCAhPT0gdikKLSAgICAgICAgICAgIHRocm93
IG5ldyBSYW5nZUVycm9yKGBJbnZhbGlkIHVpbnQzMiAke3Z9YCk7Ci0gICAgICAgIHRoaXMuX21h
eWJlR3Jvdyg0KTsKLSAgICAgICAgdGhpcy5fcHVzaDgodik7Ci0gICAgICAgIHRoaXMuX3B1c2g4
KHYgPj4+IDgpOwotICAgICAgICB0aGlzLl9wdXNoOCh2ID4+PiAxNik7Ci0gICAgICAgIHRoaXMu
X3B1c2g4KHYgPj4+IDI0KTsKLSAgICB9Ci0gICAgZmxvYXQodikgewotICAgICAgICBpZiAoaXNO
YU4odikpCi0gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigidW5pbXBsZW1lbnRlZCwg
TmFOcyIpOwotICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5ub3QganVzdCB2aWV3IHRo
ZSBhY3R1YWwgYnVmZmVyIGFzIGEgRmxvYXQzMkFycmF5IHNpbmNlIGl0IG5lZWRzIHRvIGJlIDQg
Ynl0ZSBhbGlnbmVkCi0gICAgICAgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7Ci0g
ICAgICAgIGxldCBmbG9hdFZpZXcgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlcik7Ci0gICAgICAg
IGxldCBpbnQ4VmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7Ci0gICAgICAgIGZsb2F0Vmll
d1swXSA9IHY7Ci0gICAgICAgIGZvciAobGV0IGJ5dGUgb2YgaW50OFZpZXcpCi0gICAgICAgICAg
ICB0aGlzLl9wdXNoOChieXRlKTsKLSAgICB9Ci0KLSAgICBkb3VibGUodikgewotICAgICAgICBp
ZiAoaXNOYU4odikpCi0gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigidW5pbXBsZW1l
bnRlZCwgTmFOcyIpOwotICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5ub3QganVzdCB2
aWV3IHRoZSBhY3R1YWwgYnVmZmVyIGFzIGEgRmxvYXQ2NEFycmF5IHNpbmNlIGl0IG5lZWRzIHRv
IGJlIDQgYnl0ZSBhbGlnbmVkCi0gICAgICAgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIo
OCk7Ci0gICAgICAgIGxldCBmbG9hdFZpZXcgPSBuZXcgRmxvYXQ2NEFycmF5KGJ1ZmZlcik7Ci0g
ICAgICAgIGxldCBpbnQ4VmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7Ci0gICAgICAgIGZs
b2F0Vmlld1swXSA9IHY7Ci0gICAgICAgIGZvciAobGV0IGJ5dGUgb2YgaW50OFZpZXcpCi0gICAg
ICAgICAgICB0aGlzLl9wdXNoOChieXRlKTsKLSAgICB9Ci0KLSAgICB2YXJ1aW50MzIodikgewot
ICAgICAgICBhc3NlcnQuaXNOdW1iZXIodik7Ci0gICAgICAgIGlmICh2IDwgdmFydWludDMyTWlu
IHx8IHZhcnVpbnQzMk1heCA8IHYpCi0gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihg
SW52YWxpZCB2YXJ1aW50MzIgJHt2fSByYW5nZSBpcyBbJHt2YXJ1aW50MzJNaW59LCAke3ZhcnVp
bnQzMk1heH1dYCk7Ci0gICAgICAgIHdoaWxlICh2ID49IDB4ODApIHsKLSAgICAgICAgICAgIHRo
aXMudWludDgoMHg4MCB8ICh2ICYgMHg3RikpOwotICAgICAgICAgICAgdiA+Pj49IDc7Ci0gICAg
ICAgIH0KLSAgICAgICAgdGhpcy51aW50OCh2KTsKLSAgICB9Ci0gICAgdmFyaW50MzIodikgewot
ICAgICAgICBhc3NlcnQuaXNOdW1iZXIodik7Ci0gICAgICAgIGlmICh2IDwgdmFyaW50MzJNaW4g
fHwgdmFyaW50MzJNYXggPCB2KQotICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYElu
dmFsaWQgdmFyaW50MzIgJHt2fSByYW5nZSBpcyBbJHt2YXJpbnQzMk1pbn0sICR7dmFyaW50MzJN
YXh9XWApOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBjb25zdCBiID0gdiAmIDB4N0Y7Ci0g
ICAgICAgICAgICB2ID4+PSA3OwotICAgICAgICAgICAgaWYgKCh2ID09PSAwICYmICgoYiAmIDB4
NDApID09PSAwKSkgfHwgKHYgPT09IC0xICYmICgoYiAmIDB4NDApID09PSAweDQwKSkpIHsKLSAg
ICAgICAgICAgICAgICB0aGlzLnVpbnQ4KGIgJiAweDdGKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMudWludDgoMHg4MCB8IGIpOwotICAg
ICAgICB9IHdoaWxlICh0cnVlKTsKLSAgICB9Ci0gICAgdmFydWludDY0KHYpIHsKLSAgICAgICAg
YXNzZXJ0LmlzTnVtYmVyKHYpOwotICAgICAgICBpZiAodiA8IHZhcnVpbnQzMk1pbiB8fCB2YXJ1
aW50MzJNYXggPCB2KQotICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYHVuaW1wbGVt
ZW50ZWQ6IHZhcnVpbnQ2NCBsYXJnZXIgdGhhbiAzMi1iaXRgKTsKLSAgICAgICAgdGhpcy52YXJ1
aW50MzIodik7IC8vIEZJWE1FIGltcGxlbWVudCA2NC1iaXQgdmFye3V9aW50IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjAKLSAgICB9Ci0gICAgdmFyaW50NjQo
dikgewotICAgICAgICBhc3NlcnQuaXNOdW1iZXIodik7Ci0gICAgICAgIGlmICh2IDwgdmFyaW50
MzJNaW4gfHwgdmFyaW50MzJNYXggPCB2KQotICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJy
b3IoYHVuaW1wbGVtZW50ZWQ6IHZhcmludDY0IGxhcmdlciB0aGFuIDMyLWJpdGApOwotICAgICAg
ICB0aGlzLnZhcmludDMyKHYpOyAvLyBGSVhNRSBpbXBsZW1lbnQgNjQtYml0IHZhcnt1fWludCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIwCi0gICAgfQotICAg
IHZhcnVpbnQxKHYpIHsKLSAgICAgICAgaWYgKHYgIT09IDAgJiYgdiAhPT0gMSkKLSAgICAgICAg
ICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhbGlkIHZhcnVpbnQxICR7dn0gcmFuZ2UgaXMg
WzAsIDFdYCk7Ci0gICAgICAgIHRoaXMudmFydWludDMyKHYpOwotICAgIH0KLSAgICB2YXJpbnQ3
KHYpIHsKLSAgICAgICAgaWYgKHYgPCB2YXJpbnQ3TWluIHx8IHZhcmludDdNYXggPCB2KQotICAg
ICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFsaWQgdmFyaW50NyAke3Z9IHJhbmdl
IGlzIFske3ZhcmludDdNaW59LCAke3ZhcmludDdNYXh9XWApOwotICAgICAgICB0aGlzLnZhcmlu
dDMyKHYpOwotICAgIH0KLSAgICB2YXJ1aW50Nyh2KSB7Ci0gICAgICAgIGlmICh2IDwgdmFydWlu
dDMyTWluIHx8IHZhcnVpbnQ3TWF4IDwgdikKLSAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVy
cm9yKGBJbnZhbGlkIHZhcnVpbnQ3ICR7dn0gcmFuZ2UgaXMgWyR7dmFydWludDMyTWlufSwgJHt2
YXJ1aW50N01heH1dYCk7Ci0gICAgICAgIHRoaXMudmFydWludDMyKHYpOwotICAgIH0KLSAgICBi
bG9ja190eXBlKHYpIHsKLSAgICAgICAgaWYgKCFXQVNNLmlzVmFsaWRCbG9ja1R5cGUodikpCi0g
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYmxvY2sgdHlwZSAke3Z9YCk7Ci0g
ICAgICAgIHRoaXMudmFyaW50NyhXQVNNLnR5cGVWYWx1ZVt2XSk7Ci0gICAgfQotICAgIHN0cmlu
ZyhzdHIpIHsKLSAgICAgICAgbGV0IHBhdGNoID0gdGhpcy5uZXdQYXRjaGFibGUoInZhcnVpbnQz
MiIpOwotICAgICAgICBmb3IgKGNvbnN0IGNoYXIgb2Ygc3RyKSB7Ci0gICAgICAgICAgICAvLyBF
bmNvZGUgVVRGLTggMjAwMyBjb2RlIHBvaW50cy4KLSAgICAgICAgICAgIGNvbnN0IGNvZGUgPSBj
aGFyLmNvZGVQb2ludEF0KCk7Ci0gICAgICAgICAgICBpZiAoY29kZSA8PSAweDAwN0YpIHsKLSAg
ICAgICAgICAgICAgICBjb25zdCB1dGY4ID0gY29kZTsKLSAgICAgICAgICAgICAgICBwYXRjaC51
aW50OCh1dGY4KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA8PSAweDA3RkYpIHsKLSAg
ICAgICAgICAgICAgICBjb25zdCB1dGY4ID0gMHg4MEMwIHwgKChjb2RlICYgMHg3QzApID4+IDYp
IHwgKChjb2RlICYgMHgzRikgPDwgOCk7Ci0gICAgICAgICAgICAgICAgcGF0Y2gudWludDE2KHV0
ZjgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlIDw9IDB4RkZGRikgewotICAgICAgICAg
ICAgICAgIGNvbnN0IHV0ZjggPSAweDgwODBFMCB8ICgoY29kZSAmIDB4RjAwMCkgPj4gMTIpIHwg
KChjb2RlICYgMHhGQzApIDw8IDIpIHwgKChjb2RlICYgMHgzRikgPDwgMTYpOwotICAgICAgICAg
ICAgICAgIHBhdGNoLnVpbnQyNCh1dGY4KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA8
PSAweDEwRkZGRikgewotICAgICAgICAgICAgICAgIGNvbnN0IHV0ZjggPSAoMHg4MDgwODBGMCB8
ICgoY29kZSAmIDB4MUMwMDAwKSA+PiAxOCkgfCAoKGNvZGUgJiAweDNGMDAwKSA+PiA0KSB8ICgo
Y29kZSAmIDB4RkMwKSA8PCAxMCkgfCAoKGNvZGUgJiAweDNGKSA8PCAyNCkpID4+PiAwOwotICAg
ICAgICAgICAgICAgIHBhdGNoLnVpbnQzMih1dGY4KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZGx5IGxhcmdlIFVURi04IGNo
YXJhY3RlciBjb2RlIHBvaW50ICcke2NoYXJ9JyAweCR7Y29kZS50b1N0cmluZygxNil9YCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcGF0Y2guYXBwbHkoKTsKLSAgICB9Ci0KLSAgICAvLyBHZXR0ZXJz
LgotICAgIGdldFNpemUoKSB7IHJldHVybiB0aGlzLl91c2VkOyB9Ci0gICAgZ2V0VWludDgoYXQp
IHsKLSAgICAgICAgX2dldHRlclJhbmdlQ2hlY2sodGhpcywgYXQsIDEpOwotICAgICAgICByZXR1
cm4gdGhpcy5fYnVmW2F0XTsKLSAgICB9Ci0gICAgZ2V0VWludDE2KGF0KSB7Ci0gICAgICAgIF9n
ZXR0ZXJSYW5nZUNoZWNrKHRoaXMsIGF0LCAyKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2J1Zlth
dF0gfCAodGhpcy5fYnVmW2F0ICsgMV0gPDwgOCk7Ci0gICAgfQotICAgIGdldFVpbnQyNChhdCkg
ewotICAgICAgICBfZ2V0dGVyUmFuZ2VDaGVjayh0aGlzLCBhdCwgMyk7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9idWZbYXRdIHwgKHRoaXMuX2J1ZlthdCArIDFdIDw8IDgpIHwgKHRoaXMuX2J1Zlth
dCArIDJdIDw8IDE2KTsKLSAgICB9Ci0gICAgZ2V0VWludDMyKGF0KSB7Ci0gICAgICAgIF9nZXR0
ZXJSYW5nZUNoZWNrKHRoaXMsIGF0LCA0KTsKLSAgICAgICAgcmV0dXJuICh0aGlzLl9idWZbYXRd
IHwgKHRoaXMuX2J1ZlthdCArIDFdIDw8IDgpIHwgKHRoaXMuX2J1ZlthdCArIDJdIDw8IDE2KSB8
ICh0aGlzLl9idWZbYXQgKyAzXSA8PCAyNCkpID4+PiAwOwotICAgIH0KLSAgICBnZXRWYXJ1aW50
MzIoYXQpIHsKLSAgICAgICAgbGV0IHYgPSAwOwotICAgICAgICBsZXQgc2hpZnQgPSAwOwotICAg
ICAgICBsZXQgYnl0ZSA9IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGJ5dGUgPSB0aGlz
LmdldFVpbnQ4KGF0KyspOwotICAgICAgICAgICAgKytyZWFkOwotICAgICAgICAgICAgdiA9ICh2
IHwgKChieXRlICYgMHg3RikgPDwgc2hpZnQpID4+PiAwKSA+Pj4gMDsKLSAgICAgICAgICAgIHNo
aWZ0ICs9IDc7Ci0gICAgICAgIH0gd2hpbGUgKChieXRlICYgMHg4MCkgIT09IDApOwotICAgICAg
ICBpZiAoc2hpZnQgLSA3ID4gMzIpIHRocm93IG5ldyBSYW5nZUVycm9yKGBTaGlmdGluZyB0b28g
bXVjaCBhdCAke2F0fWApOwotICAgICAgICBpZiAoKHNoaWZ0ID09IDM1KSAmJiAoKGJ5dGUgJiAw
eEYwKSAhPSAwKSkgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIG5vbi1zaWduaWZpY2FudCB2
YXJ1aW50MzIgYml0cyBpbiBsYXN0IGJ5dGUgMHgke2J5dGUudG9TdHJpbmcoMTYpfWApOwotICAg
ICAgICByZXR1cm4geyB2YWx1ZTogdiwgbmV4dDogYXQgfTsKLSAgICB9Ci0gICAgZ2V0VmFyaW50
MzIoYXQpIHsKLSAgICAgICAgbGV0IHYgPSAwOwotICAgICAgICBsZXQgc2hpZnQgPSAwOwotICAg
ICAgICBsZXQgYnl0ZSA9IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGJ5dGUgPSB0aGlz
LmdldFVpbnQ4KGF0KyspOwotICAgICAgICAgICAgdiA9ICh2IHwgKChieXRlICYgMHg3RikgPDwg
c2hpZnQpID4+PiAwKSA+Pj4gMDsKLSAgICAgICAgICAgIHNoaWZ0ICs9IDc7Ci0gICAgICAgIH0g
d2hpbGUgKChieXRlICYgMHg4MCkgIT09IDApOwotICAgICAgICBpZiAoc2hpZnQgLSA3ID4gMzIp
IHRocm93IG5ldyBSYW5nZUVycm9yKGBTaGlmdGluZyB0b28gbXVjaCBhdCAke2F0fWApOwotICAg
ICAgICBpZiAoKHNoaWZ0ID09IDM1KSAmJiAoKChieXRlIDw8IDI2KSA+PiAzMCkgIT0gKChieXRl
IDw8IDI1KSA+PiAzMSkpKSB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgbm9uLXNpZ25pZmlj
YW50IHZhcmludDMyIGJpdHMgaW4gbGFzdCBieXRlIDB4JHtieXRlLnRvU3RyaW5nKDE2KX1gKTsK
LSAgICAgICAgaWYgKChieXRlICYgMHg0MCkgPT09IDB4NDApIHsKLSAgICAgICAgICAgIGNvbnN0
IHNleHQgPSBzaGlmdCA8IDMyID8gMzIgLSBzaGlmdCA6IDA7Ci0gICAgICAgICAgICB2ID0gKHYg
PDwgc2V4dCkgPj4gc2V4dDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4geyB2YWx1ZTogdiwg
bmV4dDogYXQgfTsKLSAgICB9Ci0gICAgZ2V0VmFydWludDEoYXQpIHsKLSAgICAgICAgY29uc3Qg
cmVzID0gdGhpcy5nZXRWYXJ1aW50MzIoYXQpOwotICAgICAgICBpZiAocmVzLnZhbHVlICE9PSAw
ICYmIHJlcy52YWx1ZSAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIHZhcnVpbnQx
LCBnb3QgdmFsdWUgJHtyZXMudmFsdWV9YCk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQot
ICAgIGdldFZhcnVpbnQ3KGF0KSB7Ci0gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0VmFydWlu
dDMyKGF0KTsKLSAgICAgICAgaWYgKHJlcy52YWx1ZSA+IHZhcnVpbnQ3TWF4KSB0aHJvdyBuZXcg
RXJyb3IoYEV4cGVjdGVkIGEgdmFydWludDcsIGdvdCB2YWx1ZSAke3Jlcy52YWx1ZX1gKTsKLSAg
ICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0gICAgZ2V0U3RyaW5nKGF0KSB7Ci0gICAgICAgIGNv
bnN0IHNpemUgPSB0aGlzLmdldFZhcnVpbnQzMihhdCk7Ci0gICAgICAgIGNvbnN0IGxhc3QgPSBz
aXplLm5leHQgKyBzaXplLnZhbHVlOwotICAgICAgICBsZXQgaSA9IHNpemUubmV4dDsKLSAgICAg
ICAgbGV0IHN0ciA9ICIiOwotICAgICAgICB3aGlsZSAoaSA8IGxhc3QpIHsKLSAgICAgICAgICAg
IC8vIERlY29kZSBVVEYtOCAyMDAzIGNvZGUgcG9pbnRzLgotICAgICAgICAgICAgY29uc3QgcGVl
ayA9IHRoaXMuZ2V0VWludDgoaSk7Ci0gICAgICAgICAgICBsZXQgY29kZTsKLSAgICAgICAgICAg
IGlmICgocGVlayAmIDB4ODApID09PSAweDApIHsKLSAgICAgICAgICAgICAgICBjb25zdCB1dGY4
ID0gdGhpcy5nZXRVaW50OChpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXEodXRmOCAmIDB4
ODAsIDB4MDApOwotICAgICAgICAgICAgICAgIGkgKz0gMTsKLSAgICAgICAgICAgICAgICBjb2Rl
ID0gdXRmODsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKHBlZWsgJiAweEUwKSA9PT0gMHhDMCkg
ewotICAgICAgICAgICAgICAgIGNvbnN0IHV0ZjggPSB0aGlzLmdldFVpbnQxNihpKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZXEodXRmOCAmIDB4QzBFMCwgMHg4MEMwKTsKLSAgICAgICAgICAg
ICAgICBpICs9IDI7Ci0gICAgICAgICAgICAgICAgY29kZSA9ICgodXRmOCAmIDB4MUYpIDw8IDYp
IHwgKCh1dGY4ICYgMHgzRjAwKSA+PiA4KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKHBlZWsg
JiAweEYwKSA9PT0gMHhFMCkgewotICAgICAgICAgICAgICAgIGNvbnN0IHV0ZjggPSB0aGlzLmdl
dFVpbnQyNChpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXEodXRmOCAmIDB4QzBDMEYwLCAw
eDgwODBFMCk7Ci0gICAgICAgICAgICAgICAgaSArPSAzOwotICAgICAgICAgICAgICAgIGNvZGUg
PSAoKHV0ZjggJiAweEYpIDw8IDEyKSB8ICgodXRmOCAmIDB4M0YwMCkgPj4gMikgfCAoKHV0Zjgg
JiAweDNGMDAwMCkgPj4gMTYpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgocGVlayAmIDB4Rjgp
ID09PSAweEYwKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgdXRmOCA9IHRoaXMuZ2V0VWludDMy
KGkpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcSgodXRmOCAmIDB4QzBDMEMwRjgpIHwgMCwg
MHg4MDgwODBGMCB8IDApOwotICAgICAgICAgICAgICAgIGkgKz0gNDsKLSAgICAgICAgICAgICAg
ICBjb2RlID0gKCh1dGY4ICYgMHg3KSA8PCAxOCkgfCAoKHV0ZjggJiAweDNGMDApIDw8IDQpIHwg
KCh1dGY4ICYgMHgzRjAwMDApID4+IDEwKSB8ICgodXRmOCAmIDB4M0YwMDAwMDApID4+IDI0KTsK
LSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5l
eHBlY3RlZGx5IGxhcmdlIFVURi04IGluaXRpYWwgYnl0ZSAweCR7cGVlay50b1N0cmluZygxNil9
YCk7Ci0gICAgICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY29kZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGkgIT09IGxhc3QpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYFN0cmluZyBkZWNvZGluZyByZWFkIHVwIHRvICR7aX0sIGV4cGVjdGVkICR7bGFzdH0sIFVU
Ri04IGRlY29kaW5nIHdhcyB0b28gZ3JlZWR5YCk7Ci0gICAgICAgIHJldHVybiBzdHI7Ci0gICAg
fQotfTsKLQotY2xhc3MgUGF0Y2hhYmxlTG93TGV2ZWxCaW5hcnkgZXh0ZW5kcyBMb3dMZXZlbEJp
bmFyeSB7Ci0gICAgY29uc3RydWN0b3IodHlwZSwgbG93TGV2ZWxCaW5hcnkpIHsKLSAgICAgICAg
c3VwZXIoKTsKLSAgICAgICAgdGhpcy50eXBlID0gdHlwZTsKLSAgICAgICAgdGhpcy50YXJnZXQg
PSBsb3dMZXZlbEJpbmFyeTsKLSAgICAgICAgdGhpcy5fYnVmZmVyZWRfYnl0ZXMgPSAwOwotICAg
IH0KLSAgICBfcHVzaDgodikgeyArK3RoaXMuX2J1ZmZlcmVkX2J5dGVzOyBzdXBlci5fcHVzaDgo
dik7IH0KLSAgICBhcHBseSgpIHsKLSAgICAgICAgdGhpcy50YXJnZXRbdGhpcy50eXBlXSh0aGlz
Ll9idWZmZXJlZF9ieXRlcyk7Ci0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fYnVm
ZmVyZWRfYnl0ZXM7ICsraSkKLSAgICAgICAgICAgIHRoaXMudGFyZ2V0LnVpbnQ4KHRoaXMuX2J1
ZltpXSk7Ci0gICAgfQotfTsKLQotTG93TGV2ZWxCaW5hcnkudmFydWludDMyTWluID0gMDsKLUxv
d0xldmVsQmluYXJ5LnZhcmludDdNaW4gPSAtMGIxMDAwMDAwOwotTG93TGV2ZWxCaW5hcnkudmFy
aW50N01heCA9IDBiMTExMTExOwotTG93TGV2ZWxCaW5hcnkudmFydWludDdNYXggPSAwYjExMTEx
MTE7Ci1Mb3dMZXZlbEJpbmFyeS52YXJ1aW50MzJNYXggPSAoKCgoMSA8PCAzMSkgPj4+IDApIC0g
MSkgKiAyKSArIDE7Ci1Mb3dMZXZlbEJpbmFyeS52YXJpbnQzMk1pbiA9IC0oKDEgPDwgMzEpID4+
PiAwKTsKLUxvd0xldmVsQmluYXJ5LnZhcmludDMyTWF4ID0gKCgxIDw8IDMxKSAtIDEpID4+PiAw
OwotTG93TGV2ZWxCaW5hcnkudmFyQml0c01heCA9IDU7Ci0KLQotLy8gQnVpbGRlcl9XZWJBc3Nl
bWJseUJpbmFyeS5qcwotY29uc3QgQnVpbGRXZWJBc3NlbWJseSA9IHt9OwotewotICAgIGNvbnN0
IHB1dCA9IChiaW4sIHR5cGUsIHZhbHVlKSA9PiBiaW5bdHlwZV0odmFsdWUpOwotCi0gICAgY29u
c3QgcHV0UmVzaXphYmxlTGltaXRzID0gKGJpbiwgaW5pdGlhbCwgbWF4aW11bSkgPT4gewotICAg
ICAgICBhc3NlcnQudHJ1dGh5KHR5cGVvZiBpbml0aWFsID09PSAibnVtYmVyIiwgIldlIGV4cGVj
dCAnaW5pdGlhbCcgdG8gYmUgYW4gaW50ZWdlciIpOwotICAgICAgICBsZXQgaGFzTWF4aW11bSA9
IDA7Ci0gICAgICAgIGlmICh0eXBlb2YgbWF4aW11bSA9PT0gIm51bWJlciIpIHsKLSAgICAgICAg
ICAgIGhhc01heGltdW0gPSAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXNzZXJ0
LnRydXRoeSh0eXBlb2YgbWF4aW11bSA9PT0gInVuZGVmaW5lZCIsICJXZSBleHBlY3QgJ21heGlt
dW0nIHRvIGJlIGFuIGludGVnZXIgaWYgaXQncyBkZWZpbmVkIik7Ci0gICAgICAgIH0KLQotICAg
ICAgICBwdXQoYmluLCAidmFydWludDEiLCBoYXNNYXhpbXVtKTsKLSAgICAgICAgcHV0KGJpbiwg
InZhcnVpbnQzMiIsIGluaXRpYWwpOwotICAgICAgICBpZiAoaGFzTWF4aW11bSkKLSAgICAgICAg
ICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBtYXhpbXVtKTsKLSAgICB9OwotCi0gICAgY29uc3Qg
cHV0VGFibGUgPSAoYmluLCB7aW5pdGlhbCwgbWF4aW11bSwgZWxlbWVudH0pID0+IHsKLSAgICAg
ICAgYXNzZXJ0LnRydXRoeShXQVNNLmlzVmFsaWRUeXBlKGVsZW1lbnQpLCAiV2UgZXhwZWN0ICdl
bGVtZW50JyB0byBiZSBhIHZhbGlkIHR5cGUuIEl0IHdhczogIiArIGVsZW1lbnQpOwotICAgICAg
ICBwdXQoYmluLCAidmFyaW50NyIsIFdBU00udHlwZVZhbHVlW2VsZW1lbnRdKTsKLQotICAgICAg
ICBwdXRSZXNpemFibGVMaW1pdHMoYmluLCBpbml0aWFsLCBtYXhpbXVtKTsKLSAgICB9OwotCi0g
ICAgY29uc3QgdmFsdWVUeXBlID0gV0FTTS5kZXNjcmlwdGlvbi50eXBlLmkzMi50eXBlCi0KLSAg
ICBjb25zdCBwdXRHbG9iYWxUeXBlID0gKGJpbiwgZ2xvYmFsKSA9PiB7Ci0gICAgICAgIHB1dChi
aW4sIHZhbHVlVHlwZSwgV0FTTS50eXBlVmFsdWVbZ2xvYmFsLnR5cGVdKTsKLSAgICAgICAgcHV0
KGJpbiwgInZhcnVpbnQxIiwgZ2xvYmFsLm11dGFiaWxpdHkpOwotICAgIH07Ci0KLSAgICBjb25z
dCBwdXRPcCA9IChiaW4sIG9wKSA9PiB7Ci0gICAgICAgIHB1dChiaW4sICJ1aW50OCIsIG9wLnZh
bHVlKTsKLSAgICAgICAgaWYgKG9wLmFyZ3VtZW50cy5sZW5ndGggIT09IDApCi0gICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6IGFyZ3VtZW50c2ApOyAvLyBGSVhNRSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNzA2Ci0KLSAgICAgICAg
c3dpdGNoIChvcC5uYW1lKSB7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IG9wLmltbWVkaWF0ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICBjb25zdCB0eXBlID0gV0FTTS5kZXNjcmlwdGlvbi5vcGNvZGVbb3AubmFtZV0uaW1tZWRpYXRl
W2ldLnR5cGUKLSAgICAgICAgICAgICAgICBpZiAoIWJpblt0eXBlXSkKLSAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVW5rbm93biB0eXBlOiAke3R5cGV9IGluIG9wOiAk
e29wLm5hbWV9YCk7Ci0gICAgICAgICAgICAgICAgcHV0KGJpbiwgdHlwZSwgb3AuaW1tZWRpYXRl
c1tpXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAi
aTMyLmNvbnN0IjogewotICAgICAgICAgICAgYXNzZXJ0LmVxKG9wLmltbWVkaWF0ZXMubGVuZ3Ro
LCAxKTsKLSAgICAgICAgICAgIGxldCBpbW0gPSBvcC5pbW1lZGlhdGVzWzBdOwotICAgICAgICAg
ICAgLy8gRG8gYSBzdGF0aWMgY2FzdCB0byBtYWtlIGxhcmdlIGludDMycyBzaWduZWQuCi0gICAg
ICAgICAgICBpZiAoaW1tID49IDIgKiogMzEpCi0gICAgICAgICAgICAgICAgaW1tID0gaW1tIC0g
KDIgKiogMzIpOwotICAgICAgICAgICAgcHV0KGJpbiwgInZhcmludDMyIiwgaW1tKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgImJyX3RhYmxlIjoKLSAgICAg
ICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBvcC5pbW1lZGlhdGVzLmxlbmd0aCAtIDEpOwot
ICAgICAgICAgICAgZm9yIChsZXQgaW1tIG9mIG9wLmltbWVkaWF0ZXMpCi0gICAgICAgICAgICAg
ICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGltbSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH07Ci0KLSAgICBjb25zdCBwdXRJbml0RXhwciA9IChiaW4sIGV4cHIpID0+IHsK
LSAgICAgICAgcHV0T3AoYmluLCB7IHZhbHVlOiBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZVtleHBy
Lm9wXS52YWx1ZSwgbmFtZTogZXhwci5vcCwgaW1tZWRpYXRlczogW2V4cHIuaW5pdFZhbHVlXSwg
YXJndW1lbnRzOiBbXSB9KTsKLSAgICAgICAgcHV0T3AoYmluLCB7IHZhbHVlOiBXQVNNLmRlc2Ny
aXB0aW9uLm9wY29kZS5lbmQudmFsdWUsIG5hbWU6ICJlbmQiLCBpbW1lZGlhdGVzOiBbXSwgYXJn
dW1lbnRzOiBbXSB9KTsKLSAgICB9OwotCi0gICAgY29uc3QgZW1pdHRlcnMgPSB7Ci0gICAgICAg
IFR5cGU6IChzZWN0aW9uLCBiaW4pID0+IHsKLSAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50
MzIiLCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkg
b2Ygc2VjdGlvbi5kYXRhKSB7Ci0gICAgICAgICAgICAgICAgcHV0KGJpbiwgInZhcmludDciLCBX
QVNNLnR5cGVWYWx1ZVsiZnVuYyJdKTsKLSAgICAgICAgICAgICAgICBwdXQoYmluLCAidmFydWlu
dDMyIiwgZW50cnkucGFyYW1zLmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBw
YXJhbSBvZiBlbnRyeS5wYXJhbXMpCi0gICAgICAgICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJp
bnQ3IiwgV0FTTS50eXBlVmFsdWVbcGFyYW1dKTsKLSAgICAgICAgICAgICAgICBpZiAoZW50cnku
cmV0ID09PSAidm9pZCIpCi0gICAgICAgICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MSIs
IDApOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXQoYmlu
LCAidmFydWludDEiLCAxKTsKLSAgICAgICAgICAgICAgICAgICAgcHV0KGJpbiwgInZhcmludDci
LCBXQVNNLnR5cGVWYWx1ZVtlbnRyeS5yZXRdKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIEltcG9ydDogKHNlY3Rpb24sIGJpbikgPT4gewot
ICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIHNlY3Rpb24uZGF0YS5sZW5ndGgpOwot
ICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBzZWN0aW9uLmRhdGEpIHsKLSAgICAgICAg
ICAgICAgICBwdXQoYmluLCAic3RyaW5nIiwgZW50cnkubW9kdWxlKTsKLSAgICAgICAgICAgICAg
ICBwdXQoYmluLCAic3RyaW5nIiwgZW50cnkuZmllbGQpOwotICAgICAgICAgICAgICAgIHB1dChi
aW4sICJ1aW50OCIsIFdBU00uZXh0ZXJuYWxLaW5kVmFsdWVbZW50cnkua2luZF0pOwotICAgICAg
ICAgICAgICAgIHN3aXRjaCAoZW50cnkua2luZCkgewotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5leHBlY3RlZCBraW5k
ICR7ZW50cnkua2luZH1gKTsKLSAgICAgICAgICAgICAgICBjYXNlICJGdW5jdGlvbiI6IHsKLSAg
ICAgICAgICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGVudHJ5LnR5cGUpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgY2FzZSAiVGFibGUiOiB7Ci0gICAgICAgICAgICAgICAgICAgIHB1dFRhYmxlKGJpbiwgZW50
cnkudGFibGVEZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlICJNZW1vcnkiOiB7Ci0gICAgICAgICAg
ICAgICAgICAgIGxldCB7aW5pdGlhbCwgbWF4aW11bX0gPSBlbnRyeS5tZW1vcnlEZXNjcmlwdGlv
bjsKLSAgICAgICAgICAgICAgICAgICAgcHV0UmVzaXphYmxlTGltaXRzKGJpbiwgaW5pdGlhbCwg
bWF4aW11bSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICAgICAgY2FzZSAiR2xvYmFsIjoKLSAgICAgICAgICAgICAgICAgICAgcHV0
R2xvYmFsVHlwZShiaW4sIGVudHJ5Lmdsb2JhbERlc2NyaXB0aW9uKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
LAotCi0gICAgICAgIEZ1bmN0aW9uOiAoc2VjdGlvbiwgYmluKSA9PiB7Ci0gICAgICAgICAgICBw
dXQoYmluLCAidmFydWludDMyIiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7Ci0gICAgICAgICAgICBm
b3IgKGNvbnN0IHNpZ25hdHVyZSBvZiBzZWN0aW9uLmRhdGEpCi0gICAgICAgICAgICAgICAgcHV0
KGJpbiwgInZhcnVpbnQzMiIsIHNpZ25hdHVyZSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgVGFi
bGU6IChzZWN0aW9uLCBiaW4pID0+IHsKLSAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIi
LCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3Qge3RhYmxlRGVz
Y3JpcHRpb259IG9mIHNlY3Rpb24uZGF0YSkgewotICAgICAgICAgICAgICAgIHB1dFRhYmxlKGJp
biwgdGFibGVEZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0KLSAgICAg
ICAgTWVtb3J5OiAoc2VjdGlvbiwgYmluKSA9PiB7Ci0gICAgICAgICAgICAvLyBGbGFncywgY3Vy
cmVudGx5IGNhbiBvbmx5IGJlIFswLDFdCi0gICAgICAgICAgICBwdXQoYmluLCAidmFydWludDEi
LCBzZWN0aW9uLmRhdGEubGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgbWVtb3J5IG9m
IHNlY3Rpb24uZGF0YSkgewotICAgICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBt
ZW1vcnkubWF4ID8gMSA6IDApOwotICAgICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIi
LCBtZW1vcnkuaW5pdGlhbCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1lbW9yeS5tYXgpCi0gICAg
ICAgICAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBtZW1vcnkubWF4KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICBHbG9iYWw6IChzZWN0aW9uLCBiaW4pID0+
IHsKLSAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBzZWN0aW9uLmRhdGEubGVuZ3Ro
KTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgZ2xvYmFsIG9mIHNlY3Rpb24uZGF0YSkgewotICAg
ICAgICAgICAgICAgIHB1dEdsb2JhbFR5cGUoYmluLCBnbG9iYWwpOwotICAgICAgICAgICAgICAg
IHB1dEluaXRFeHByKGJpbiwgZ2xvYmFsKQotICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0g
ICAgICAgIEV4cG9ydDogKHNlY3Rpb24sIGJpbikgPT4gewotICAgICAgICAgICAgcHV0KGJpbiwg
InZhcnVpbnQzMiIsIHNlY3Rpb24uZGF0YS5sZW5ndGgpOwotICAgICAgICAgICAgZm9yIChjb25z
dCBlbnRyeSBvZiBzZWN0aW9uLmRhdGEpIHsKLSAgICAgICAgICAgICAgICBwdXQoYmluLCAic3Ry
aW5nIiwgZW50cnkuZmllbGQpOwotICAgICAgICAgICAgICAgIHB1dChiaW4sICJ1aW50OCIsIFdB
U00uZXh0ZXJuYWxLaW5kVmFsdWVbZW50cnkua2luZF0pOwotICAgICAgICAgICAgICAgIHN3aXRj
aCAoZW50cnkua2luZCkgewotICAgICAgICAgICAgICAgIGNhc2UgIkdsb2JhbCI6Ci0gICAgICAg
ICAgICAgICAgY2FzZSAiRnVuY3Rpb24iOgotICAgICAgICAgICAgICAgIGNhc2UgIk1lbW9yeSI6
Ci0gICAgICAgICAgICAgICAgY2FzZSAiVGFibGUiOgotICAgICAgICAgICAgICAgICAgICBwdXQo
YmluLCAidmFydWludDMyIiwgZW50cnkuaW5kZXgpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYEltcGxlbWVudGF0
aW9uIHByb2JsZW06IHVuZXhwZWN0ZWQga2luZCAke2VudHJ5LmtpbmR9YCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBTdGFydDogKHNlY3Rp
b24sIGJpbikgPT4gewotICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIHNlY3Rpb24u
ZGF0YVswXSk7Ci0gICAgICAgIH0sCi0gICAgICAgIEVsZW1lbnQ6IChzZWN0aW9uLCBiaW4pID0+
IHsKLSAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzZWN0aW9uLmRhdGE7Ci0gICAgICAgICAgICBw
dXQoYmluLCAidmFydWludDMyIiwgZGF0YS5sZW5ndGgpOwotICAgICAgICAgICAgZm9yIChjb25z
dCB7dGFibGVJbmRleCwgb2Zmc2V0LCBmdW5jdGlvbkluZGljZXN9IG9mIGRhdGEpIHsKLSAgICAg
ICAgICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgdGFibGVJbmRleCk7Ci0KLSAgICAgICAg
ICAgICAgICBsZXQgaW5pdEV4cHI7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQg
PT09ICJudW1iZXIiKQotICAgICAgICAgICAgICAgICAgICBpbml0RXhwciA9IHtvcDogImkzMi5j
b25zdCIsIGluaXRWYWx1ZTogb2Zmc2V0fTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIGluaXRFeHByID0gb2Zmc2V0OwotICAgICAgICAgICAgICAgIHB1dEluaXRF
eHByKGJpbiwgaW5pdEV4cHIpOwotCi0gICAgICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQz
MiIsIGZ1bmN0aW9uSW5kaWNlcy5sZW5ndGgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3Qg
ZnVuY3Rpb25JbmRleCBvZiBmdW5jdGlvbkluZGljZXMpCi0gICAgICAgICAgICAgICAgICAgIHB1
dChiaW4sICJ2YXJ1aW50MzIiLCBmdW5jdGlvbkluZGV4KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSwKLQotICAgICAgICBDb2RlOiAoc2VjdGlvbiwgYmluKSA9PiB7Ci0gICAgICAgICAgICBw
dXQoYmluLCAidmFydWludDMyIiwgc2VjdGlvbi5kYXRhLmxlbmd0aCk7Ci0gICAgICAgICAgICBm
b3IgKGNvbnN0IGZ1bmMgb2Ygc2VjdGlvbi5kYXRhKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGZ1
bmNCaW4gPSBiaW4ubmV3UGF0Y2hhYmxlKCJ2YXJ1aW50MzIiKTsKLSAgICAgICAgICAgICAgICBj
b25zdCBsb2NhbENvdW50ID0gZnVuYy5sb2NhbHMubGVuZ3RoIC0gZnVuYy5wYXJhbWV0ZXJDb3Vu
dDsKLSAgICAgICAgICAgICAgICBwdXQoZnVuY0JpbiwgInZhcnVpbnQzMiIsIGxvY2FsQ291bnQp
OwotICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBmdW5jLnBhcmFtZXRlckNvdW50OyBpIDwg
ZnVuYy5sb2NhbHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgcHV0KGZ1bmNC
aW4sICJ2YXJ1aW50MzIiLCAxKTsKLSAgICAgICAgICAgICAgICAgICAgcHV0KGZ1bmNCaW4sICJ2
YXJpbnQ3IiwgV0FTTS50eXBlVmFsdWVbZnVuYy5sb2NhbHNbaV1dKTsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG9wIG9mIGZ1bmMuY29kZSkKLSAgICAg
ICAgICAgICAgICAgICAgcHV0T3AoZnVuY0Jpbiwgb3ApOwotCi0gICAgICAgICAgICAgICAgZnVu
Y0Jpbi5hcHBseSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIERhdGE6
IChzZWN0aW9uLCBiaW4pID0+IHsKLSAgICAgICAgICAgIHB1dChiaW4sICJ2YXJ1aW50MzIiLCBz
ZWN0aW9uLmRhdGEubGVuZ3RoKTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgZGF0dW0gb2Ygc2Vj
dGlvbi5kYXRhKSB7Ci0gICAgICAgICAgICAgICAgcHV0KGJpbiwgInZhcnVpbnQzMiIsIGRhdHVt
LmluZGV4KTsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRSBhbGxvdyBjb21wbGV4IGluaXRfZXhw
ciBoZXJlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NzAwCi0g
ICAgICAgICAgICAgICAgLy8gRm9yIG5vdyB3ZSBvbmx5IGhhbmRsZSBpMzIuY29uc3QgYXMgb2Zm
c2V0LgotICAgICAgICAgICAgICAgIHB1dChiaW4sICJ1aW50OCIsIFdBU00uZGVzY3JpcHRpb24u
b3Bjb2RlWyJpMzIuY29uc3QiXS52YWx1ZSk7Ci0gICAgICAgICAgICAgICAgcHV0KGJpbiwgV0FT
TS5kZXNjcmlwdGlvbi5vcGNvZGVbImkzMi5jb25zdCJdLmltbWVkaWF0ZVswXS50eXBlLCBkYXR1
bS5vZmZzZXQpOwotICAgICAgICAgICAgICAgIHB1dChiaW4sICJ1aW50OCIsIFdBU00uZGVzY3Jp
cHRpb24ub3Bjb2RlWyJlbmQiXS52YWx1ZSk7Ci0gICAgICAgICAgICAgICAgcHV0KGJpbiwgInZh
cnVpbnQzMiIsIGRhdHVtLmRhdGEubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0
IGJ5dGUgb2YgZGF0dW0uZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgcHV0KGJpbiwgInVpbnQ4
IiwgYnl0ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgfTsKLQotICAgIEJ1aWxk
V2ViQXNzZW1ibHkuQmluYXJ5ID0gKHByZWFtYmxlLCBzZWN0aW9ucykgPT4gewotICAgICAgICBs
ZXQgd2FzbUJpbiA9IG5ldyBMb3dMZXZlbEJpbmFyeSgpOwotICAgICAgICBmb3IgKGNvbnN0IHAg
b2YgV0FTTS5kZXNjcmlwdGlvbi5wcmVhbWJsZSkKLSAgICAgICAgICAgIHB1dCh3YXNtQmluLCBw
LnR5cGUsIHByZWFtYmxlW3AubmFtZV0pOwotICAgICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Yg
c2VjdGlvbnMpIHsKLSAgICAgICAgICAgIHB1dCh3YXNtQmluLCBXQVNNLnNlY3Rpb25FbmNvZGlu
Z1R5cGUsIHNlY3Rpb24uaWQpOwotICAgICAgICAgICAgbGV0IHNlY3Rpb25CaW4gPSB3YXNtQmlu
Lm5ld1BhdGNoYWJsZSgidmFydWludDMyIik7Ci0gICAgICAgICAgICBjb25zdCBlbWl0dGVyID0g
ZW1pdHRlcnNbc2VjdGlvbi5uYW1lXTsKLSAgICAgICAgICAgIGlmIChlbWl0dGVyKQotICAgICAg
ICAgICAgICAgIGVtaXR0ZXIoc2VjdGlvbiwgc2VjdGlvbkJpbik7Ci0gICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICAvLyBVbmtub3duIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAg
cHV0KHNlY3Rpb25CaW4sICJzdHJpbmciLCBzZWN0aW9uLm5hbWUpOwotICAgICAgICAgICAgICAg
IGZvciAoY29uc3QgYnl0ZSBvZiBzZWN0aW9uLmRhdGEpCi0gICAgICAgICAgICAgICAgICAgIHB1
dChzZWN0aW9uQmluLCAidWludDgiLCBieXRlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHNlY3Rpb25CaW4uYXBwbHkoKTsKLSAgICAgICAgfQotICAgICAgICB3YXNtQmluLnRyaW0oKTsK
LSAgICAgICAgcmV0dXJuIHdhc21CaW47Ci0gICAgfTsKLX0KLQotCi1jb25zdCBMTEIgPSBMb3dM
ZXZlbEJpbmFyeTsKLQotY29uc3QgX3RvSmF2YVNjcmlwdE5hbWUgPSBuYW1lID0+IHsKLSAgICBj
b25zdCBjYW1lbENhc2UgPSBuYW1lLnJlcGxhY2UoLyhbXmEtejAtOV0uKS9nLCBjID0+IGNbMV0u
dG9VcHBlckNhc2UoKSk7Ci0gICAgY29uc3QgQ2FtZWxDYXNlID0gY2FtZWxDYXNlLmNoYXJBdCgw
KS50b1VwcGVyQ2FzZSgpICsgY2FtZWxDYXNlLnNsaWNlKDEpOwotICAgIHJldHVybiBDYW1lbENh
c2U7Ci19OwotCi1jb25zdCBfaXNWYWxpZFZhbHVlID0gKHZhbHVlLCB0eXBlKSA9PiB7Ci0gICAg
c3dpdGNoICh0eXBlKSB7Ci0gICAgLy8gV2UgYWxsb3cgYm90aCBzaWduZWQgYW5kIHVuc2lnbmVk
IG51bWJlcnMuCi0gICAgY2FzZSAiaTMyIjogcmV0dXJuIE1hdGgucm91bmQodmFsdWUpID09PSB2
YWx1ZSAmJiBMTEIudmFyaW50MzJNaW4gPD0gdmFsdWUgJiYgdmFsdWUgPD0gTExCLnZhcnVpbnQz
Mk1heDsKLSAgICBjYXNlICJpNjQiOiByZXR1cm4gdHJ1ZTsgLy8gRklYTUUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMCA2NC1iaXQgdmFsdWVzCi0gICAgY2Fz
ZSAiZjMyIjogcmV0dXJuIHR5cGVvZih2YWx1ZSkgPT09ICJudW1iZXIiICYmIGlzRmluaXRlKHZh
bHVlKTsKLSAgICBjYXNlICJmNjQiOiByZXR1cm4gdHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIg
JiYgaXNGaW5pdGUodmFsdWUpOwotICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVt
ZW50YXRpb24gcHJvYmxlbTogdW5rbm93biB0eXBlICR7dHlwZX1gKTsKLSAgICB9Ci19OwotY29u
c3QgX3Vua25vd25TZWN0aW9uSWQgPSAwOwotCi1jb25zdCBfbm9ybWFsaXplRnVuY3Rpb25TaWdu
YXR1cmUgPSAocGFyYW1zLCByZXQpID0+IHsKLSAgICBhc3NlcnQuaXNBcnJheShwYXJhbXMpOwot
ICAgIGZvciAoY29uc3QgcCBvZiBwYXJhbXMpCi0gICAgICAgIGFzc2VydC50cnV0aHkoV0FTTS5p
c1ZhbGlkVmFsdWVUeXBlKHApLCBgVHlwZSBwYXJhbWV0ZXIgJHtwfSBuZWVkcyBhIHZhbGlkIHZh
bHVlIHR5cGVgKTsKLSAgICBpZiAodHlwZW9mKHJldCkgPT09ICJ1bmRlZmluZWQiKQotICAgICAg
ICByZXQgPSAidm9pZCI7Ci0gICAgYXNzZXJ0LmlzTm90QXJyYXkocmV0LCBgTXVsdGlwbGUgcmV0
dXJuIHZhbHVlcyBub3Qgc3VwcG9ydGVkIGJ5IFdlYkFzc2VtYmx5IHlldGApOwotICAgIGFzc2Vy
dC50cnV0aHkoV0FTTS5pc1ZhbGlkQmxvY2tUeXBlKHJldCksIGBUeXBlIHJldHVybiAke3JldH0g
bXVzdCBiZSB2YWxpZCBibG9jayB0eXBlYCk7Ci0gICAgcmV0dXJuIFtwYXJhbXMsIHJldF07Ci19
OwotCi1jb25zdCBfZXJyb3JIYW5kbGluZ1Byb3h5Rm9yID0gYnVpbGRlciA9PiBidWlsZGVyWyJf
X2lzUHJveHkiXSA/IGJ1aWxkZXIgOiBuZXcgUHJveHkoYnVpbGRlciwgewotICAgIGdldDogKHRh
cmdldCwgcHJvcGVydHksIHJlY2VpdmVyKSA9PiB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eSA9PT0g
Il9faXNQcm94eSIpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKHRhcmdl
dFtwcm9wZXJ0eV0gPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg
V2ViQXNzZW1ibHkgYnVpbGRlciByZWNlaXZlZCB1bmtub3duIHByb3BlcnR5ICcke3Byb3BlcnR5
fSdgKTsKLSAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eV07Ci0gICAgfQotfSk7Ci0KLWNv
bnN0IF9tYXliZVJlZ2lzdGVyVHlwZSA9IChidWlsZGVyLCB0eXBlKSA9PiB7Ci0gICAgY29uc3Qg
dHlwZVNlY3Rpb24gPSBidWlsZGVyLl9nZXRTZWN0aW9uKCJUeXBlIik7Ci0gICAgaWYgKHR5cGVv
Zih0eXBlKSA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgLy8gVHlwZSBudW1iZXJzIGFscmVhZHkg
cmVmZXIgdG8gdGhlIHR5cGUgc2VjdGlvbiwgbm8gbmVlZCB0byByZWdpc3RlciB0aGVtLgotICAg
ICAgICBpZiAoYnVpbGRlci5fY2hlY2tlZCkgewotICAgICAgICAgICAgYXNzZXJ0LmlzTm90VW5k
ZWYodHlwZVNlY3Rpb24sIGBDYW4gbm90IHVzZSB0eXBlICR7dHlwZX0gaWYgYSB0eXBlIHNlY3Rp
b24gaXMgbm90IHByZXNlbnRgKTsKLSAgICAgICAgICAgIGFzc2VydC5pc05vdFVuZGVmKHR5cGVT
ZWN0aW9uLmRhdGFbdHlwZV0sIGBUeXBlICR7dHlwZX0gZG9lcyBub3QgZXhpc3QgaW4gdHlwZSBz
ZWN0aW9uYCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHR5cGU7Ci0gICAgfQotICAgIGFz
c2VydC5oYXNPYmplY3RQcm9wZXJ0eSh0eXBlLCAicGFyYW1zIiwgYEV4cGVjdGVkIHR5cGUgdG8g
YmUgYSBudW1iZXIgb3Igb2JqZWN0IHdpdGggJ3BhcmFtcycgYW5kIG9wdGlvbmFsbHkgJ3JldCcg
ZmllbGRzYCk7Ci0gICAgY29uc3QgW3BhcmFtcywgcmV0XSA9IF9ub3JtYWxpemVGdW5jdGlvblNp
Z25hdHVyZSh0eXBlLnBhcmFtcywgdHlwZS5yZXQpOwotICAgIGFzc2VydC5pc05vdFVuZGVmKHR5
cGVTZWN0aW9uLCBgQ2FuIG5vdCBhZGQgdHlwZSBpZiBhIHR5cGUgc2VjdGlvbiBpcyBub3QgcHJl
c2VudGApOwotICAgIC8vIFRyeSByZXVzaW5nIGFuIGVxdWl2YWxlbnQgdHlwZSBmcm9tIHRoZSB0
eXBlIHNlY3Rpb24uCi0gICAgdHlwZXM6Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgIT09IHR5cGVT
ZWN0aW9uLmRhdGEubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgY29uc3QgdCA9IHR5cGVTZWN0aW9u
LmRhdGFbaV07Ci0gICAgICAgIGlmICh0LnJldCA9PT0gcmV0ICYmIHBhcmFtcy5sZW5ndGggPT09
IHQucGFyYW1zLmxlbmd0aCkgewotICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogIT09IHQu
cGFyYW1zLmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmFtc1tqXSAhPT0g
dC5wYXJhbXNbal0pCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHR5cGVzOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdHlwZSA9IGk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBpZiAodHlwZW9mKHR5cGUpICE9PSAibnVtYmVyIikgewotICAgICAg
ICAvLyBDb3VsZG4ndCByZXVzZSBhIHByZS1leGlzdGluZyB0eXBlLCByZWdpc3RlciB0aGlzIHR5
cGUgaW4gdGhlIHR5cGUgc2VjdGlvbi4KLSAgICAgICAgdHlwZVNlY3Rpb24uZGF0YS5wdXNoKHsg
cGFyYW1zOiBwYXJhbXMsIHJldDogcmV0IH0pOwotICAgICAgICB0eXBlID0gdHlwZVNlY3Rpb24u
ZGF0YS5sZW5ndGggLSAxOwotICAgIH0KLSAgICByZXR1cm4gdHlwZTsKLX07Ci0KLWNvbnN0IF9p
bXBvcnRGdW5jdGlvbkNvbnRpbnVhdGlvbiA9IChidWlsZGVyLCBzZWN0aW9uLCBuZXh0QnVpbGRl
cikgPT4gewotICAgIHJldHVybiAobW9kdWxlLCBmaWVsZCwgdHlwZSkgPT4gewotICAgICAgICBh
c3NlcnQuaXNTdHJpbmcobW9kdWxlLCBgSW1wb3J0IGZ1bmN0aW9uIG1vZHVsZSBzaG91bGQgYmUg
YSBzdHJpbmcsIGdvdCAiJHttb2R1bGV9ImApOwotICAgICAgICBhc3NlcnQuaXNTdHJpbmcoZmll
bGQsIGBJbXBvcnQgZnVuY3Rpb24gZmllbGQgc2hvdWxkIGJlIGEgc3RyaW5nLCBnb3QgIiR7Zmll
bGR9ImApOwotICAgICAgICBjb25zdCB0eXBlU2VjdGlvbiA9IGJ1aWxkZXIuX2dldFNlY3Rpb24o
IlR5cGUiKTsKLSAgICAgICAgdHlwZSA9IF9tYXliZVJlZ2lzdGVyVHlwZShidWlsZGVyLCB0eXBl
KTsKLSAgICAgICAgc2VjdGlvbi5kYXRhLnB1c2goeyBmaWVsZDogZmllbGQsIHR5cGU6IHR5cGUs
IGtpbmQ6ICJGdW5jdGlvbiIsIG1vZHVsZTogbW9kdWxlIH0pOwotICAgICAgICAvLyBJbXBvcnRz
IGFsc28gY291bnQgaW4gdGhlIGZ1bmN0aW9uIGluZGV4IHNwYWNlLiBNYXAgdGhlbSBhcyBvYmpl
Y3RzIHRvIGF2b2lkIGNsYXNoaW5nIHdpdGggQ29kZSBmdW5jdGlvbnMnIG5hbWVzLgotICAgICAg
ICBidWlsZGVyLl9yZWdpc3RlckZ1bmN0aW9uVG9JbmRleFNwYWNlKHsgbW9kdWxlOiBtb2R1bGUs
IGZpZWxkOiBmaWVsZCB9KTsKLSAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3Io
bmV4dEJ1aWxkZXIpOwotICAgIH07Ci19OwotCi1jb25zdCBfaW1wb3J0TWVtb3J5Q29udGludWF0
aW9uID0gKGJ1aWxkZXIsIHNlY3Rpb24sIG5leHRCdWlsZGVyKSA9PiB7Ci0gICAgcmV0dXJuICht
b2R1bGUsIGZpZWxkLCB7aW5pdGlhbCwgbWF4aW11bX0pID0+IHsKLSAgICAgICAgYXNzZXJ0Lmlz
U3RyaW5nKG1vZHVsZSwgYEltcG9ydCBNZW1vcnkgbW9kdWxlIHNob3VsZCBiZSBhIHN0cmluZywg
Z290ICIke21vZHVsZX0iYCk7Ci0gICAgICAgIGFzc2VydC5pc1N0cmluZyhmaWVsZCwgYEltcG9y
dCBNZW1vcnkgZmllbGQgc2hvdWxkIGJlIGEgc3RyaW5nLCBnb3QgIiR7ZmllbGR9ImApOwotICAg
ICAgICBzZWN0aW9uLmRhdGEucHVzaCh7bW9kdWxlLCBmaWVsZCwga2luZDogIk1lbW9yeSIsIG1l
bW9yeURlc2NyaXB0aW9uOiB7aW5pdGlhbCwgbWF4aW11bX19KTsKLSAgICAgICAgcmV0dXJuIF9l
cnJvckhhbmRsaW5nUHJveHlGb3IobmV4dEJ1aWxkZXIpOwotICAgIH07Ci19OwotCi1jb25zdCBf
aW1wb3J0VGFibGVDb250aW51YXRpb24gPSAoYnVpbGRlciwgc2VjdGlvbiwgbmV4dEJ1aWxkZXIp
ID0+IHsKLSAgICByZXR1cm4gKG1vZHVsZSwgZmllbGQsIHtpbml0aWFsLCBtYXhpbXVtLCBlbGVt
ZW50fSkgPT4gewotICAgICAgICBhc3NlcnQuaXNTdHJpbmcobW9kdWxlLCBgSW1wb3J0IFRhYmxl
IG1vZHVsZSBzaG91bGQgYmUgYSBzdHJpbmcsIGdvdCAiJHttb2R1bGV9ImApOwotICAgICAgICBh
c3NlcnQuaXNTdHJpbmcoZmllbGQsIGBJbXBvcnQgVGFibGUgZmllbGQgc2hvdWxkIGJlIGEgc3Ry
aW5nLCBnb3QgIiR7ZmllbGR9ImApOwotICAgICAgICBzZWN0aW9uLmRhdGEucHVzaCh7bW9kdWxl
LCBmaWVsZCwga2luZDogIlRhYmxlIiwgdGFibGVEZXNjcmlwdGlvbjoge2luaXRpYWwsIG1heGlt
dW0sIGVsZW1lbnR9fSk7Ci0gICAgICAgIHJldHVybiBfZXJyb3JIYW5kbGluZ1Byb3h5Rm9yKG5l
eHRCdWlsZGVyKTsKLSAgICB9OwotfTsKLQotY29uc3QgX2V4cG9ydEZ1bmN0aW9uQ29udGludWF0
aW9uID0gKGJ1aWxkZXIsIHNlY3Rpb24sIG5leHRCdWlsZGVyKSA9PiB7Ci0gICAgcmV0dXJuIChm
aWVsZCwgaW5kZXgsIHR5cGUpID0+IHsKLSAgICAgICAgYXNzZXJ0LmlzU3RyaW5nKGZpZWxkLCBg
RXhwb3J0IGZ1bmN0aW9uIGZpZWxkIHNob3VsZCBiZSBhIHN0cmluZywgZ290ICIke2ZpZWxkfSJg
KTsKLSAgICAgICAgY29uc3QgdHlwZVNlY3Rpb24gPSBidWlsZGVyLl9nZXRTZWN0aW9uKCJUeXBl
Iik7Ci0gICAgICAgIGlmICh0eXBlb2YodHlwZSkgIT09ICJ1bmRlZmluZWQiKSB7Ci0gICAgICAg
ICAgICAvLyBFeHBvcnRzIGNhbiBsZWF2ZSB0aGUgdHlwZSB1bnNwZWNpZmllZCwgbGV0dGluZyB0
aGUgQ29kZSBidWlsZGVyIHBhdGNoIHRoZW0gdXAgbGF0ZXIuCi0gICAgICAgICAgICB0eXBlID0g
X21heWJlUmVnaXN0ZXJUeXBlKGJ1aWxkZXIsIHR5cGUpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gV2UgY2FuJ3QgY2hlY2sgbXVjaCBhYm91dCAiaW5kZXgiIGhlcmUgYmVjYXVzZSB0aGUgQ29k
ZSBzZWN0aW9uIHN1Y2NlZWRzIHRoZSBFeHBvcnQgc2VjdGlvbi4gTW9yZSB3b3JrIGlzIGRvbmUg
YXQgQ29kZSgpLkVuZCgpIHRpbWUuCi0gICAgICAgIHN3aXRjaCAodHlwZW9mKGluZGV4KSkgewot
ICAgICAgICBjYXNlICJzdHJpbmciOiBicmVhazsgLy8gQXNzdW1lIGl0J3MgYSBmdW5jdGlvbiBu
YW1lIHdoaWNoIHdpbGwgYmUgcmV2ZWFsZWQgaW4gdGhlIENvZGUgc2VjdGlvbi4KLSAgICAgICAg
Y2FzZSAibnVtYmVyIjogYnJlYWs7IC8vIEFzc3VtZSBpdCdzIGEgbnVtYmVyIGluIHRoZSAiZnVu
Y3Rpb24gaW5kZXggc3BhY2UiLgotICAgICAgICBjYXNlICJvYmplY3QiOgotICAgICAgICAgICAg
Ly8gUmUtZXhwb3J0aW5nIGFuIGltcG9ydC4KLSAgICAgICAgICAgIGFzc2VydC5oYXNPYmplY3RQ
cm9wZXJ0eShpbmRleCwgIm1vZHVsZSIsIGBSZS1leHBvcnRpbmcgIiR7ZmllbGR9IiBmcm9tIGFu
IGltcG9ydGApOwotICAgICAgICAgICAgYXNzZXJ0Lmhhc09iamVjdFByb3BlcnR5KGluZGV4LCAi
ZmllbGQiLCBgUmUtZXhwb3J0aW5nICIke2ZpZWxkfSIgZnJvbSBhbiBpbXBvcnRgKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJ1bmRlZmluZWQiOgotICAgICAgICAgICAgLy8g
QXNzdW1lIGl0J3MgdGhlIHNhbWUgYXMgdGhlIGZpZWxkIChpLmUuIGl0J3Mgbm90IGJlaW5nIHJl
bmFtZWQpLgotICAgICAgICAgICAgaW5kZXggPSBmaWVsZDsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYEV4cG9ydCBzZWN0aW9uJ3MgaW5kZXgg
bXVzdCBiZSBhIHN0cmluZyBvciBhIG51bWJlciwgZ290ICR7aW5kZXh9YCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBjb25zdCBjb3JyZXNwb25kaW5nSW1wb3J0ID0gYnVpbGRlci5fZ2V0RnVuY3Rp
b25Gcm9tSW5kZXhTcGFjZShpbmRleCk7Ci0gICAgICAgIGNvbnN0IGltcG9ydFNlY3Rpb24gPSBi
dWlsZGVyLl9nZXRTZWN0aW9uKCJJbXBvcnQiKTsKLSAgICAgICAgaWYgKHR5cGVvZihpbmRleCkg
PT09ICJvYmplY3QiKSB7Ci0gICAgICAgICAgICAvLyBSZS1leHBvcnRpbmcgYW4gaW1wb3J0IHVz
aW5nIGl0cyBtb2R1bGUrZmllbGQgbmFtZS4KLSAgICAgICAgICAgIGFzc2VydC5pc05vdFVuZGVm
KGNvcnJlc3BvbmRpbmdJbXBvcnQsIGBSZS1leHBvcnRpbmcgIiR7ZmllbGR9IiBjb3VsZG4ndCBm
aW5kIGltcG9ydCBmcm9tIG1vZHVsZSAiJHtpbmRleC5tb2R1bGV9IiBmaWVsZCAiJHtpbmRleC5m
aWVsZH0iYCk7Ci0gICAgICAgICAgICBpbmRleCA9IGNvcnJlc3BvbmRpbmdJbXBvcnQ7Ci0gICAg
ICAgICAgICBpZiAodHlwZW9mKHR5cGUpID09PSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgICAg
ICB0eXBlID0gaW1wb3J0U2VjdGlvbi5kYXRhW2luZGV4XS50eXBlOwotICAgICAgICAgICAgaWYg
KGJ1aWxkZXIuX2NoZWNrZWQpCi0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxKHR5cGUsIGltcG9y
dFNlY3Rpb24uZGF0YVtpbmRleF0udHlwZSwgYFJlLWV4cG9ydGluZyBpbXBvcnQgIiR7aW1wb3J0
U2VjdGlvbi5kYXRhW2luZGV4XS5maWVsZH0iIGFzICIke2ZpZWxkfSIgaGFzIG1pc21hdGNoaW5n
IHR5cGVgKTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YoY29ycmVzcG9uZGluZ0ltcG9ydCkg
IT09ICJ1bmRlZmluZWQiKSB7Ci0gICAgICAgICAgICAvLyBSZS1leHBvcnRpbmcgYW4gaW1wb3J0
IHVzaW5nIGl0cyBpbmRleC4KLSAgICAgICAgICAgIGxldCBleHBvcnRlZEltcG9ydDsKLSAgICAg
ICAgICAgIGZvciAoY29uc3QgaSBvZiBpbXBvcnRTZWN0aW9uLmRhdGEpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoaS5tb2R1bGUgPT09IGNvcnJlc3BvbmRpbmdJbXBvcnQubW9kdWxlICYmIGkuZmll
bGQgPT09IGNvcnJlc3BvbmRpbmdJbXBvcnQuZmllbGQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ZXhwb3J0ZWRJbXBvcnQgPSBpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodHlwZW9mKHR5cGUpID09
PSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgICAgICB0eXBlID0gZXhwb3J0ZWRJbXBvcnQudHlw
ZTsKLSAgICAgICAgICAgIGlmIChidWlsZGVyLl9jaGVja2VkKQotICAgICAgICAgICAgICAgIGFz
c2VydC5lcSh0eXBlLCBleHBvcnRlZEltcG9ydC50eXBlLCBgUmUtZXhwb3J0aW5nIGltcG9ydCAi
JHtleHBvcnRlZEltcG9ydC5maWVsZH0iIGFzICIke2ZpZWxkfSIgaGFzIG1pc21hdGNoaW5nIHR5
cGVgKTsKLSAgICAgICAgfQotICAgICAgICBzZWN0aW9uLmRhdGEucHVzaCh7IGZpZWxkOiBmaWVs
ZCwgdHlwZTogdHlwZSwga2luZDogIkZ1bmN0aW9uIiwgaW5kZXg6IGluZGV4IH0pOwotICAgICAg
ICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZvcihuZXh0QnVpbGRlcik7Ci0gICAgfTsKLX07
Ci0KLWNvbnN0IF9ub3JtYWxpemVNdXRhYmlsaXR5ID0gKG11dGFiaWxpdHkpID0+IHsKLSAgICBp
ZiAobXV0YWJpbGl0eSA9PT0gIm11dGFibGUiKQotICAgICAgICByZXR1cm4gMTsKLSAgICBlbHNl
IGlmIChtdXRhYmlsaXR5ID09PSAiaW1tdXRhYmxlIikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ZWxzZQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG11dGFiaWxpdHkgc2hvdWxkIGJlIGVpdGhl
ciAibXV0YWJsZSIgb3IgImltbXV0YWJsZSIsIGJ1dCBnb3QgJHttdXRhYmlsaXR5fWApOwotfTsK
LQotY29uc3QgX2V4cG9ydEdsb2JhbENvbnRpbnVhdGlvbiA9IChidWlsZGVyLCBzZWN0aW9uLCBu
ZXh0QnVpbGRlcikgPT4gewotICAgIHJldHVybiAoZmllbGQsIGluZGV4KSA9PiB7Ci0gICAgICAg
IGFzc2VydC5pc051bWJlcihpbmRleCwgYEdsb2JhbCBleHBvcnRzIG9ubHkgc3VwcG9ydCBudW1i
ZXIgaW5kaWNlcyByaWdodCBub3dgKTsKLSAgICAgICAgc2VjdGlvbi5kYXRhLnB1c2goeyBmaWVs
ZCwga2luZDogIkdsb2JhbCIsIGluZGV4IH0pOwotICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxp
bmdQcm94eUZvcihuZXh0QnVpbGRlcik7Ci0gICAgfQotfTsKLQotY29uc3QgX2V4cG9ydE1lbW9y
eUNvbnRpbnVhdGlvbiA9IChidWlsZGVyLCBzZWN0aW9uLCBuZXh0QnVpbGRlcikgPT4gewotICAg
IHJldHVybiAoZmllbGQsIGluZGV4KSA9PiB7Ci0gICAgICAgIGFzc2VydC5pc051bWJlcihpbmRl
eCwgYE1lbW9yeSBleHBvcnRzIG9ubHkgc3VwcG9ydCBudW1iZXIgaW5kaWNlc2ApOwotICAgICAg
ICBzZWN0aW9uLmRhdGEucHVzaCh7ZmllbGQsIGtpbmQ6ICJNZW1vcnkiLCBpbmRleH0pOwotICAg
ICAgICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZvcihuZXh0QnVpbGRlcik7Ci0gICAgfQot
fTsKLQotY29uc3QgX2V4cG9ydFRhYmxlQ29udGludWF0aW9uID0gKGJ1aWxkZXIsIHNlY3Rpb24s
IG5leHRCdWlsZGVyKSA9PiB7Ci0gICAgcmV0dXJuIChmaWVsZCwgaW5kZXgpID0+IHsKLSAgICAg
ICAgYXNzZXJ0LmlzTnVtYmVyKGluZGV4LCBgVGFibGUgZXhwb3J0cyBvbmx5IHN1cHBvcnQgbnVt
YmVyIGluZGljZXNgKTsKLSAgICAgICAgc2VjdGlvbi5kYXRhLnB1c2goe2ZpZWxkLCBraW5kOiAi
VGFibGUiLCBpbmRleH0pOwotICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZvcihu
ZXh0QnVpbGRlcik7Ci0gICAgfQotfTsKLQotY29uc3QgX2ltcG9ydEdsb2JhbENvbnRpbnVhdGlv
biA9IChidWlsZGVyLCBzZWN0aW9uLCBuZXh0QnVpbGRlcikgPT4gewotICAgIHJldHVybiAoKSA9
PiB7Ci0gICAgICAgIGNvbnN0IGdsb2JhbEJ1aWxkZXIgPSB7Ci0gICAgICAgICAgICBFbmQ6ICgp
ID0+IG5leHRCdWlsZGVyCi0gICAgICAgIH07Ci0gICAgICAgIGZvciAobGV0IG9wIG9mIFdBU00u
ZGVzY3JpcHRpb24udmFsdWVfdHlwZSkgewotICAgICAgICAgICAgZ2xvYmFsQnVpbGRlcltfdG9K
YXZhU2NyaXB0TmFtZShvcCldID0gKG1vZHVsZSwgZmllbGQsIG11dGFiaWxpdHkpID0+IHsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQuaXNTdHJpbmcobW9kdWxlLCBgSW1wb3J0IGdsb2JhbCBtb2R1
bGUgc2hvdWxkIGJlIGEgc3RyaW5nLCBnb3QgIiR7bW9kdWxlfSJgKTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnQuaXNTdHJpbmcoZmllbGQsIGBJbXBvcnQgZ2xvYmFsIGZpZWxkIHNob3VsZCBiZSBh
IHN0cmluZywgZ290ICIke2ZpZWxkfSJgKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuaXNTdHJp
bmcobXV0YWJpbGl0eSwgYEltcG9ydCBnbG9iYWwgbXV0YWJpbGl0eSBzaG91bGQgYmUgYSBzdHJp
bmcsIGdvdCAiJHttdXRhYmlsaXR5fSJgKTsKLSAgICAgICAgICAgICAgICBzZWN0aW9uLmRhdGEu
cHVzaCh7IGdsb2JhbERlc2NyaXB0aW9uOiB7IHR5cGU6IG9wLCBtdXRhYmlsaXR5OiBfbm9ybWFs
aXplTXV0YWJpbGl0eShtdXRhYmlsaXR5KSB9LCBtb2R1bGUsIGZpZWxkLCBraW5kOiAiR2xvYmFs
IiB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZvcihnbG9i
YWxCdWlsZGVyKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIF9l
cnJvckhhbmRsaW5nUHJveHlGb3IoZ2xvYmFsQnVpbGRlcik7Ci0gICAgfTsKLX07Ci0KLWNvbnN0
IF9jaGVja1N0YWNrQXJncyA9IChvcCwgcGFyYW0pID0+IHsKLSAgICBmb3IgKGxldCBleHBlY3Qg
b2YgcGFyYW0pIHsKLSAgICAgICAgaWYgKFdBU00uaXNWYWxpZFR5cGUoZXhwZWN0KSkgewotICAg
ICAgICAgICAgLy8gRklYTUUgaW1wbGVtZW50IHN0YWNrIGNoZWNrcyBmb3IgYXJndW1lbnRzLiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAvLyBIYW5kbGUgb3VyIG93biBtZXRhLXR5cGVzLgotICAgICAg
ICAgICAgc3dpdGNoIChleHBlY3QpIHsKLSAgICAgICAgICAgIGNhc2UgImFkZHIiOiBicmVhazsg
Ly8gRklYTUUgaW1wbGVtZW50IGFkZHIuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgIGNhc2UgImFueSI6IGJyZWFrOyAvLyBGSVhNRSBp
bXBsZW1lbnQgYW55LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
NDIxCi0gICAgICAgICAgICBjYXNlICJib29sIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBi
b29sLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAg
ICAgICAgICBjYXNlICJjYWxsIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBjYWxsIHN0YWNr
IGFyZ3VtZW50IGNoZWNrcyBiYXNlZCBvbiBmdW5jdGlvbiBzaWduYXR1cmUuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgIGNhc2UgImds
b2JhbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgZ2xvYmFsLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICBjYXNlICJsb2NhbCI6
IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgbG9jYWwuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgIGNhc2UgInByZXYiOiBicmVhazsg
Ly8gRklYTUUgaW1wbGVtZW50IHByZXYsIGNoZWNraW5nIGZvciB3aGV0ZXZlciB0aGUgcHJldmlv
dXMgdmFsdWUgd2FzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
NDIxCi0gICAgICAgICAgICBjYXNlICJzaXplIjogYnJlYWs7IC8vIEZJWE1FIGltcGxlbWVudCBz
aXplLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAg
ICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYEltcGxlbWVudGF0aW9uIHByb2JsZW06
IHVuaGFuZGxlZCBtZXRhLXR5cGUgIiR7ZXhwZWN0fSIgb24gIiR7b3B9ImApOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1jb25zdCBfY2hlY2tTdGFja1JldHVybiA9IChv
cCwgcmV0KSA9PiB7Ci0gICAgZm9yIChsZXQgZXhwZWN0IG9mIHJldCkgewotICAgICAgICBpZiAo
V0FTTS5pc1ZhbGlkVHlwZShleHBlY3QpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRSBpbXBsZW1l
bnQgc3RhY2sgY2hlY2tzIGZvciByZXR1cm4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEhhbmRs
ZSBvdXIgb3duIG1ldGEtdHlwZXMuCi0gICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdCkgewotICAg
ICAgICAgICAgY2FzZSAiYW55IjogYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJib29sIjogYnJl
YWs7IC8vIEZJWE1FIGltcGxlbWVudCBib29sLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICBjYXNlICJjYWxsIjogYnJlYWs7IC8vIEZJ
WE1FIGltcGxlbWVudCBjYWxsIHN0YWNrIHJldHVybiBjaGVjayBiYXNlZCBvbiBmdW5jdGlvbiBz
aWduYXR1cmUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEK
LSAgICAgICAgICAgIGNhc2UgImNvbnRyb2wiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IGNv
bnRyb2wuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAg
ICAgICAgICAgIGNhc2UgImdsb2JhbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgZ2xvYmFs
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAg
ICAgICBjYXNlICJsb2NhbCI6IGJyZWFrOyAvLyBGSVhNRSBpbXBsZW1lbnQgbG9jYWwuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgICAgIGNh
c2UgInByZXYiOiBicmVhazsgLy8gRklYTUUgaW1wbGVtZW50IHByZXYsIGNoZWNraW5nIGZvciB3
aGV0ZXZlciB0aGUgcGFyYW1ldGVyIHR5cGUgd2FzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICBjYXNlICJzaXplIjogYnJlYWs7IC8v
IEZJWE1FIGltcGxlbWVudCBzaXplLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYEltcGxl
bWVudGF0aW9uIHByb2JsZW06IHVuaGFuZGxlZCBtZXRhLXR5cGUgIiR7ZXhwZWN0fSIgb24gIiR7
b3B9ImApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfTsKLQotY29uc3QgX2No
ZWNrSW1tcyA9IChvcCwgaW1tcywgZXhwZWN0ZWRJbW1zLCByZXQpID0+IHsKLSAgICBjb25zdCBt
aW5FeHBlY3RlZEltbXMgPSBleHBlY3RlZEltbXMuZmlsdGVyKGkgPT4gaS50eXBlLnNsaWNlKC0x
KSAhPT0gJyonKS5sZW5ndGg7Ci0gICAgaWYgKG1pbkV4cGVjdGVkSW1tcyAhPT0gZXhwZWN0ZWRJ
bW1zLmxlbmd0aCkKLSAgICAgICAgYXNzZXJ0LmdlKGltbXMubGVuZ3RoLCBtaW5FeHBlY3RlZElt
bXMsIGAiJHtvcH0iIGV4cGVjdHMgYXQgbGVhc3QgJHttaW5FeHBlY3RlZEltbXN9IGltbWVkaWF0
ZSR7bWluRXhwZWN0ZWRJbW1zICE9PSAxID8gJ3MnIDogJyd9LCBnb3QgJHtpbW1zLmxlbmd0aH1g
KTsKLSAgICBlbHNlCi0gICAgICAgICBhc3NlcnQuZXEoaW1tcy5sZW5ndGgsIG1pbkV4cGVjdGVk
SW1tcywgYCIke29wfSIgZXhwZWN0cyBleGFjdGx5ICR7bWluRXhwZWN0ZWRJbW1zfSBpbW1lZGlh
dGUke21pbkV4cGVjdGVkSW1tcyAhPT0gMSA/ICdzJyA6ICcnfSwgZ290ICR7aW1tcy5sZW5ndGh9
YCk7Ci0gICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4ICE9PSBleHBlY3RlZEltbXMubGVuZ3RoOyAr
K2lkeCkgewotICAgICAgICBjb25zdCBnb3QgPSBpbW1zW2lkeF07Ci0gICAgICAgIGNvbnN0IGV4
cGVjdCA9IGV4cGVjdGVkSW1tc1tpZHhdOwotICAgICAgICBzd2l0Y2ggKGV4cGVjdC5uYW1lKSB7
Ci0gICAgICAgIGNhc2UgImZ1bmN0aW9uX2luZGV4IjoKLSAgICAgICAgICAgIGFzc2VydC50cnV0
aHkoX2lzVmFsaWRWYWx1ZShnb3QsICJpMzIiKSAmJiBnb3QgPj0gMCwgYEludmFsaWQgdmFsdWUg
b24gJHtvcH06IGdvdCAiJHtnb3R9IiwgZXhwZWN0ZWQgbm9uLW5lZ2F0aXZlIGkzMmApOwotICAg
ICAgICAgICAgLy8gRklYTUUgY2hlY2sgZnVuY3Rpb24gaW5kaWNlcy4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgImxvY2FsX2luZGV4IjogYnJlYWs7IC8vIGltcHJvdmUgY2hlY2tpbmcgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICBjYXNlICJn
bG9iYWxfaW5kZXgiOiBicmVhazsgLy8gaW1wcm92ZSBjaGVja2luZyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgIGNhc2UgInR5cGVfaW5kZXgi
OiBicmVhazsgLy8gaW1wcm92ZSBjaGVja2luZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgIGNhc2UgInZhbHVlIjoKLSAgICAgICAgICAgIGFz
c2VydC50cnV0aHkoX2lzVmFsaWRWYWx1ZShnb3QsIHJldFswXSksIGBJbnZhbGlkIHZhbHVlIG9u
ICR7b3B9OiBnb3QgIiR7Z290fSIsIGV4cGVjdGVkICR7cmV0WzBdfWApOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgImZsYWdzIjogYnJlYWs7IC8vIGltcHJvdmUgY2hlY2tpbmcg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQotICAgICAgICBj
YXNlICJvZmZzZXQiOiBicmVhazsgLy8gaW1wcm92ZSBjaGVja2luZyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgICAgICAvLyBDb250cm9sOgot
ICAgICAgICBjYXNlICJkZWZhdWx0X3RhcmdldCI6IGJyZWFrOyAvLyBpbXByb3ZlIGNoZWNraW5n
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAg
Y2FzZSAicmVsYXRpdmVfZGVwdGgiOiBicmVhazsgLy8gaW1wcm92ZSBjaGVja2luZyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCi0gICAgICAgIGNhc2UgInNp
ZyI6Ci0gICAgICAgICAgICBhc3NlcnQudHJ1dGh5KFdBU00uaXNWYWxpZEJsb2NrVHlwZShpbW1z
W2lkeF0pLCBgSW52YWxpZCBibG9jayB0eXBlIG9uICR7b3B9OiAiJHtpbW1zW2lkeF19ImApOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgInRhcmdldF9jb3VudCI6IGJyZWFrOyAv
LyBpbXByb3ZlIGNoZWNraW5nIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjM0MjEKLSAgICAgICAgY2FzZSAidGFyZ2V0X3RhYmxlIjogYnJlYWs7IC8vIGltcHJvdmUg
Y2hlY2tpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQot
ICAgICAgICBjYXNlICJyZXNlcnZlZCI6IGJyZWFrOyAvLyBpbXByb3ZlIGNoZWNraW5nIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKLSAgICAgICAgZGVmYXVs
dDogdGhyb3cgbmV3IEVycm9yKGBJbXBsZW1lbnRhdGlvbiBwcm9ibGVtOiB1bmhhbmRsZWQgaW1t
ZWRpYXRlICIke2V4cGVjdC5uYW1lfSIgb24gIiR7b3B9ImApOwotICAgICAgICB9Ci0gICAgfQot
fTsKLQotY29uc3QgX2NyZWF0ZUZ1bmN0aW9uQnVpbGRlciA9IChmdW5jLCBidWlsZGVyLCBwcmV2
aW91c0J1aWxkZXIpID0+IHsKLSAgICBsZXQgZnVuY3Rpb25CdWlsZGVyID0ge307Ci0gICAgZm9y
IChjb25zdCBvcCBpbiBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZSkgewotICAgICAgICBjb25zdCBu
YW1lID0gX3RvSmF2YVNjcmlwdE5hbWUob3ApOwotICAgICAgICBjb25zdCB2YWx1ZSA9IFdBU00u
ZGVzY3JpcHRpb24ub3Bjb2RlW29wXS52YWx1ZTsKLSAgICAgICAgY29uc3QgcmV0ID0gV0FTTS5k
ZXNjcmlwdGlvbi5vcGNvZGVbb3BdWyJyZXR1cm4iXTsKLSAgICAgICAgY29uc3QgcGFyYW0gPSBX
QVNNLmRlc2NyaXB0aW9uLm9wY29kZVtvcF0ucGFyYW1ldGVyOwotICAgICAgICBjb25zdCBpbW0g
PSBXQVNNLmRlc2NyaXB0aW9uLm9wY29kZVtvcF0uaW1tZWRpYXRlOwotCi0gICAgICAgIGNvbnN0
IGNoZWNrU3RhY2tBcmdzID0gYnVpbGRlci5fY2hlY2tlZCA/IF9jaGVja1N0YWNrQXJncyA6ICgp
ID0+IHt9OwotICAgICAgICBjb25zdCBjaGVja1N0YWNrUmV0dXJuID0gYnVpbGRlci5fY2hlY2tl
ZCA/IF9jaGVja1N0YWNrUmV0dXJuIDogKCkgPT4ge307Ci0gICAgICAgIGNvbnN0IGNoZWNrSW1t
cyA9IGJ1aWxkZXIuX2NoZWNrZWQgPyBfY2hlY2tJbW1zIDogKCkgPT4ge307Ci0KLSAgICAgICAg
ZnVuY3Rpb25CdWlsZGVyW25hbWVdID0gKC4uLmFyZ3MpID0+IHsKLSAgICAgICAgICAgIGxldCBu
ZXh0QnVpbGRlcjsKLSAgICAgICAgICAgIHN3aXRjaCAobmFtZSkgewotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICBuZXh0QnVpbGRlciA9IGZ1bmN0aW9uQnVpbGRlcjsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgIkVuZCI6Ci0gICAgICAgICAg
ICAgICAgbmV4dEJ1aWxkZXIgPSBwcmV2aW91c0J1aWxkZXI7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlICJCbG9jayI6Ci0gICAgICAgICAgICBjYXNlICJMb29wIjoK
LSAgICAgICAgICAgIGNhc2UgIklmIjoKLSAgICAgICAgICAgICAgICBuZXh0QnVpbGRlciA9IF9j
cmVhdGVGdW5jdGlvbkJ1aWxkZXIoZnVuYywgYnVpbGRlciwgZnVuY3Rpb25CdWlsZGVyKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gUGFz
c2luZyBhIGZ1bmN0aW9uIGFzIHRoZSBhcmd1bWVudCBpcyBhIHdheSB0byBuZXN0IGJsb2NrcyBs
ZXhpY2FsbHkuCi0gICAgICAgICAgICBjb25zdCBjb250aW51YXRpb24gPSBhcmdzW2FyZ3MubGVu
Z3RoIC0gMV07Ci0gICAgICAgICAgICBjb25zdCBoYXNDb250aW51YXRpb24gPSB0eXBlb2YoY29u
dGludWF0aW9uKSA9PT0gImZ1bmN0aW9uIjsKLSAgICAgICAgICAgIGNvbnN0IGltbXMgPSBoYXND
b250aW51YXRpb24gPyBhcmdzLnNsaWNlKDAsIC0xKSA6IGFyZ3M7IC8vIEZJWE1FOiBhbGxvdyBw
YXNzaW5nIGluIHN0YWNrIHZhbHVlcywgYXMtaWYgY29kZSB3ZXJlIGEgc3RhY2sgbWFjaGluZS4g
SnVzdCBjaGVjayBmb3IgYSBidWlsZGVyIHRvIHRoaXMgZnVuY3Rpb24sIGFuZCBkcm9wLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIyCi0gICAgICAgICAgICBj
aGVja0ltbXMob3AsIGltbXMsIGltbSwgcmV0KTsKLSAgICAgICAgICAgIGNoZWNrU3RhY2tBcmdz
KG9wLCBwYXJhbSk7Ci0gICAgICAgICAgICBjaGVja1N0YWNrUmV0dXJuKG9wLCByZXQpOwotICAg
ICAgICAgICAgY29uc3Qgc3RhY2tBcmdzID0gW107IC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI3MDYKLSAgICAgICAgICAgIGZ1bmMuY29kZS5wdXNo
KHsgbmFtZTogb3AsIHZhbHVlOiB2YWx1ZSwgYXJndW1lbnRzOiBzdGFja0FyZ3MsIGltbWVkaWF0
ZXM6IGltbXMgfSk7Ci0gICAgICAgICAgICBpZiAoaGFzQ29udGludWF0aW9uKQotICAgICAgICAg
ICAgICAgIHJldHVybiBfZXJyb3JIYW5kbGluZ1Byb3h5Rm9yKGNvbnRpbnVhdGlvbihuZXh0QnVp
bGRlcikuRW5kKCkpOwotICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3Io
bmV4dEJ1aWxkZXIpOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICByZXR1cm4gX2Vycm9ySGFu
ZGxpbmdQcm94eUZvcihmdW5jdGlvbkJ1aWxkZXIpOwotfQotCi1jb25zdCBfY3JlYXRlRnVuY3Rp
b24gPSAoc2VjdGlvbiwgYnVpbGRlciwgcHJldmlvdXNCdWlsZGVyKSA9PiB7Ci0gICAgcmV0dXJu
ICguLi5hcmdzKSA9PiB7Ci0gICAgICAgIGNvbnN0IG5hbWVPZmZzZXQgPSAodHlwZW9mKGFyZ3Nb
MF0pID09PSAic3RyaW5nIikgPj4+IDA7Ci0gICAgICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IG5h
bWVPZmZzZXQgPyBhcmdzWzBdIDogdW5kZWZpbmVkOwotICAgICAgICBsZXQgc2lnbmF0dXJlID0g
YXJnc1swICsgbmFtZU9mZnNldF07Ci0gICAgICAgIGNvbnN0IGxvY2FscyA9IGFyZ3NbMSArIG5h
bWVPZmZzZXRdID09PSB1bmRlZmluZWQgPyBbXSA6IGFyZ3NbMSArIG5hbWVPZmZzZXRdOwotICAg
ICAgICBmb3IgKGNvbnN0IGxvY2FsIG9mIGxvY2FscykKLSAgICAgICAgICAgIGFzc2VydC50cnV0
aHkoV0FTTS5pc1ZhbGlkVmFsdWVUeXBlKGxvY2FsKSwgYFR5cGUgb2YgbG9jYWw6ICR7bG9jYWx9
IG5lZWRzIHRvIGJlIGEgdmFsaWQgdmFsdWUgdHlwZWApOwotCi0gICAgICAgIGlmICh0eXBlb2Yo
c2lnbmF0dXJlKSA9PT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICBzaWduYXR1cmUgPSB7IHBh
cmFtczogW10gfTsKLQotICAgICAgICBsZXQgdHlwZTsKLSAgICAgICAgbGV0IHBhcmFtczsKLSAg
ICAgICAgaWYgKHR5cGVvZiBzaWduYXR1cmUgPT09ICJvYmplY3QiKSB7Ci0gICAgICAgICAgICBh
c3NlcnQuaGFzT2JqZWN0UHJvcGVydHkoc2lnbmF0dXJlLCAicGFyYW1zIiwgYEV4cGVjdCBmdW5j
dGlvbiBzaWduYXR1cmUgdG8gYmUgYW4gb2JqZWN0IHdpdGggYSAicGFyYW1zIiBmaWVsZCwgZ290
ICIke3NpZ25hdHVyZX0iYCk7Ci0gICAgICAgICAgICBsZXQgcmV0OwotICAgICAgICAgICAgKFtw
YXJhbXMsIHJldF0gPSBfbm9ybWFsaXplRnVuY3Rpb25TaWduYXR1cmUoc2lnbmF0dXJlLnBhcmFt
cywgc2lnbmF0dXJlLnJldCkpOwotICAgICAgICAgICAgc2lnbmF0dXJlID0ge3BhcmFtcywgcmV0
fTsKLSAgICAgICAgICAgIHR5cGUgPSBfbWF5YmVSZWdpc3RlclR5cGUoYnVpbGRlciwgc2lnbmF0
dXJlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFzc2VydC50cnV0aHkodHlwZW9m
IHNpZ25hdHVyZSA9PT0gIm51bWJlciIpOwotICAgICAgICAgICAgY29uc3QgdHlwZVNlY3Rpb24g
PSBidWlsZGVyLl9nZXRTZWN0aW9uKCJUeXBlIik7Ci0gICAgICAgICAgICBhc3NlcnQudHJ1dGh5
KCEhdHlwZVNlY3Rpb24pOwotICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBhbGxvdyBp
bmRpY2VzIHRoYXQgZXhjZWVkIHRoaXMgdG8gYmUgYWJsZSB0bwotICAgICAgICAgICAgLy8gdGVz
dCBKU0NzIHZhbGlkYXRvciBpcyBjb3JyZWN0LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1Nzg2Ci0gICAgICAgICAgICBhc3NlcnQudHJ1dGh5KHNpZ25hdHVyZSA8
IHR5cGVTZWN0aW9uLmRhdGEubGVuZ3RoKTsKLSAgICAgICAgICAgIHR5cGUgPSBzaWduYXR1cmU7
Ci0gICAgICAgICAgICBzaWduYXR1cmUgPSB0eXBlU2VjdGlvbi5kYXRhW3NpZ25hdHVyZV07Ci0g
ICAgICAgICAgICBhc3NlcnQuaGFzT2JqZWN0UHJvcGVydHkoc2lnbmF0dXJlLCAicGFyYW1zIiwg
YEV4cGVjdCBmdW5jdGlvbiBzaWduYXR1cmUgdG8gYmUgYW4gb2JqZWN0IHdpdGggYSAicGFyYW1z
IiBmaWVsZCwgZ290ICIke3NpZ25hdHVyZX0iYCk7Ci0gICAgICAgICAgICBwYXJhbXMgPSBzaWdu
YXR1cmUucGFyYW1zOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgZnVuYyA9IHsKLSAgICAg
ICAgICAgIG5hbWU6IGZ1bmN0aW9uTmFtZSwKLSAgICAgICAgICAgIHR5cGUsCi0gICAgICAgICAg
ICBzaWduYXR1cmU6IHNpZ25hdHVyZSwKLSAgICAgICAgICAgIGxvY2FsczogcGFyYW1zLmNvbmNh
dChsb2NhbHMpLCAvLyBQYXJhbWV0ZXJzIGFyZSB0aGUgZmlyc3QgbG9jYWxzLgotICAgICAgICAg
ICAgcGFyYW1ldGVyQ291bnQ6IHBhcmFtcy5sZW5ndGgsCi0gICAgICAgICAgICBjb2RlOiBbXQot
ICAgICAgICB9OwotCi0gICAgICAgIGNvbnN0IGZ1bmN0aW9uU2VjdGlvbiA9IGJ1aWxkZXIuX2dl
dFNlY3Rpb24oIkZ1bmN0aW9uIik7Ci0gICAgICAgIGlmIChmdW5jdGlvblNlY3Rpb24pCi0gICAg
ICAgICAgICBmdW5jdGlvblNlY3Rpb24uZGF0YS5wdXNoKGZ1bmMudHlwZSk7Ci0KLSAgICAgICAg
c2VjdGlvbi5kYXRhLnB1c2goZnVuYyk7Ci0gICAgICAgIGJ1aWxkZXIuX3JlZ2lzdGVyRnVuY3Rp
b25Ub0luZGV4U3BhY2UoZnVuY3Rpb25OYW1lKTsKLQotICAgICAgICByZXR1cm4gX2NyZWF0ZUZ1
bmN0aW9uQnVpbGRlcihmdW5jLCBidWlsZGVyLCBwcmV2aW91c0J1aWxkZXIpOwotICAgIH0KLX07
Ci0KLWNsYXNzIEJ1aWxkZXIgewotICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAgICB0aGlzLnNl
dENoZWNrZWQodHJ1ZSk7Ci0gICAgICAgIGxldCBwcmVhbWJsZSA9IHt9OwotICAgICAgICBmb3Ig
KGNvbnN0IHAgb2YgV0FTTS5kZXNjcmlwdGlvbi5wcmVhbWJsZSkKLSAgICAgICAgICAgIHByZWFt
YmxlW3AubmFtZV0gPSBwLnZhbHVlOwotICAgICAgICB0aGlzLnNldFByZWFtYmxlKHByZWFtYmxl
KTsKLSAgICAgICAgdGhpcy5fc2VjdGlvbnMgPSBbXTsKLSAgICAgICAgdGhpcy5fZnVuY3Rpb25J
bmRleFNwYWNlID0gbmV3IE1hcCgpOwotICAgICAgICB0aGlzLl9mdW5jdGlvbkluZGV4U3BhY2VD
b3VudCA9IDA7Ci0gICAgICAgIHRoaXMuX3JlZ2lzdGVyU2VjdGlvbkJ1aWxkZXJzKCk7Ci0gICAg
fQotICAgIHNldENoZWNrZWQoY2hlY2tlZCkgewotICAgICAgICB0aGlzLl9jaGVja2VkID0gY2hl
Y2tlZDsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotICAgIHNldFByZWFtYmxlKHApIHsK
LSAgICAgICAgdGhpcy5fcHJlYW1ibGUgPSBPYmplY3QuYXNzaWduKHRoaXMuX3ByZWFtYmxlIHx8
IHt9LCBwKTsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotICAgIF9mdW5jdGlvbkluZGV4
U3BhY2VLZXlIYXNoKG9iaikgewotICAgICAgICAvLyBXZSBkb24ndCBuZWVkIGEgZnVsbCBoYXNo
LCBqdXN0IHNvbWV0aGluZyB0aGF0IGhhcyBhIGRlZmluZWQgb3JkZXIgZm9yIE1hcC4gT2JqZWN0
cyB3ZSBpbnNlcnQgYXJlbid0IG5lc3RlZC4KLSAgICAgICAgaWYgKHR5cGVvZihvYmopICE9PSAn
b2JqZWN0JykKLSAgICAgICAgICAgIHJldHVybiBvYmo7Ci0gICAgICAgIGNvbnN0IGtleXMgPSBP
YmplY3Qua2V5cyhvYmopLnNvcnQoKTsKLSAgICAgICAgbGV0IGVudHJpZXMgPSBbXTsKLSAgICAg
ICAgZm9yIChsZXQgayBpbiBrZXlzKQotICAgICAgICAgICAgZW50cmllcy5wdXNoKFtrLCBvYmpb
a11dKTsKLSAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGVudHJpZXMpOwotICAgIH0KLSAg
ICBfcmVnaXN0ZXJGdW5jdGlvblRvSW5kZXhTcGFjZShuYW1lKSB7Ci0gICAgICAgIGlmICh0eXBl
b2YobmFtZSkgPT09ICJ1bmRlZmluZWQiKSB7Ci0gICAgICAgICAgICAvLyBSZWdpc3RlcmluZyBh
IG5hbWVsZXNzIGZ1bmN0aW9uIHN0aWxsIGFkZHMgaXQgdG8gdGhlIGZ1bmN0aW9uIGluZGV4IHNw
YWNlLiBSZWdpc3RlciBpdCBhcyBzb21ldGhpbmcgdGhhdCBjYW4ndCBub3JtYWxseSBiZSByZWdp
c3RlcmVkLgotICAgICAgICAgICAgbmFtZSA9IHt9OwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0
IHZhbHVlID0gdGhpcy5fZnVuY3Rpb25JbmRleFNwYWNlQ291bnQrKzsKLSAgICAgICAgLy8gQ29s
bGlzaW9ucyBhcmUgZmluZTogd2UnbGwgc2ltcGx5IGNvdW50IHRoZSBmdW5jdGlvbiBhbmQgZm9y
Z2V0IHRoZSBwcmV2aW91cyBvbmUuCi0gICAgICAgIHRoaXMuX2Z1bmN0aW9uSW5kZXhTcGFjZS5z
ZXQodGhpcy5fZnVuY3Rpb25JbmRleFNwYWNlS2V5SGFzaChuYW1lKSwgdmFsdWUpOwotICAgICAg
ICAvLyBNYXAgaXQgYm90aCB3YXlzLCB0aGUgbnVtYmVyIHNwYWNlIGlzIGRpc3RpbmN0IGZyb20g
dGhlIG5hbWUgc3BhY2UuCi0gICAgICAgIHRoaXMuX2Z1bmN0aW9uSW5kZXhTcGFjZS5zZXQodGhp
cy5fZnVuY3Rpb25JbmRleFNwYWNlS2V5SGFzaCh2YWx1ZSksIG5hbWUpOwotICAgIH0KLSAgICBf
Z2V0RnVuY3Rpb25Gcm9tSW5kZXhTcGFjZShuYW1lKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9m
dW5jdGlvbkluZGV4U3BhY2UuZ2V0KHRoaXMuX2Z1bmN0aW9uSW5kZXhTcGFjZUtleUhhc2gobmFt
ZSkpOwotICAgIH0KLSAgICBfcmVnaXN0ZXJTZWN0aW9uQnVpbGRlcnMoKSB7Ci0gICAgICAgIGZv
ciAoY29uc3Qgc2VjdGlvbiBpbiBXQVNNLmRlc2NyaXB0aW9uLnNlY3Rpb24pIHsKLSAgICAgICAg
ICAgIHN3aXRjaCAoc2VjdGlvbikgewotICAgICAgICAgICAgY2FzZSAiVHlwZSI6Ci0gICAgICAg
ICAgICAgICAgdGhpc1tzZWN0aW9uXSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzID0gdGhpcy5fYWRkU2VjdGlvbihzZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAg
ICAgY29uc3QgYnVpbGRlciA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVC
dWlsZGVyID0gewotICAgICAgICAgICAgICAgICAgICAgICAgRW5kOiAoKSA9PiBidWlsZGVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgRnVuYzogKHBhcmFtcywgcmV0KSA9PiB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW3BhcmFtcywgcmV0XSA9IF9ub3JtYWxpemVGdW5jdGlvblNp
Z25hdHVyZShwYXJhbXMsIHJldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5kYXRh
LnB1c2goeyBwYXJhbXM6IHBhcmFtcywgcmV0OiByZXQgfSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3IodHlwZUJ1aWxkZXIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3IodHlwZUJ1aWxkZXIpOwot
ICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAg
IGNhc2UgIkltcG9ydCI6Ci0gICAgICAgICAgICAgICAgdGhpc1tzZWN0aW9uXSA9IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5fYWRkU2VjdGlvbihzZWN0
aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1wb3J0QnVpbGRlciA9IHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEVuZDogKCkgPT4gdGhpcywKLSAgICAgICAgICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0QnVpbGRlci5HbG9iYWwgPSBfaW1wb3J0R2xv
YmFsQ29udGludWF0aW9uKHRoaXMsIHMsIGltcG9ydEJ1aWxkZXIpOwotICAgICAgICAgICAgICAg
ICAgICBpbXBvcnRCdWlsZGVyLkZ1bmN0aW9uID0gX2ltcG9ydEZ1bmN0aW9uQ29udGludWF0aW9u
KHRoaXMsIHMsIGltcG9ydEJ1aWxkZXIpOwotICAgICAgICAgICAgICAgICAgICBpbXBvcnRCdWls
ZGVyLk1lbW9yeSA9IF9pbXBvcnRNZW1vcnlDb250aW51YXRpb24odGhpcywgcywgaW1wb3J0QnVp
bGRlcik7Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydEJ1aWxkZXIuVGFibGUgPSBfaW1wb3J0
VGFibGVDb250aW51YXRpb24odGhpcywgcywgaW1wb3J0QnVpbGRlcik7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBfZXJyb3JIYW5kbGluZ1Byb3h5Rm9yKGltcG9ydEJ1aWxkZXIpOwotICAg
ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNh
c2UgIkZ1bmN0aW9uIjoKLSAgICAgICAgICAgICAgICB0aGlzW3NlY3Rpb25dID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLl9hZGRTZWN0aW9uKHNlY3Rp
b24pOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbkJ1aWxkZXIgPSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBFbmQ6ICgpID0+IHRoaXMKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBhZGQgYWJpbGl0eSB0byBhZGQgdGhpcyB3aXRoIHdoYXRldmVyLgotICAg
ICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFu
ZGxpbmdQcm94eUZvcihmdW5jdGlvbkJ1aWxkZXIpOwotICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgIlRhYmxlIjoKLSAgICAgICAg
ICAgICAgICB0aGlzW3NlY3Rpb25dID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IHMgPSB0aGlzLl9hZGRTZWN0aW9uKHNlY3Rpb24pOwotICAgICAgICAgICAgICAgICAg
ICBjb25zdCB0YWJsZUJ1aWxkZXIgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFbmQ6ICgp
ID0+IHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBUYWJsZTogKHtpbml0aWFsLCBtYXhp
bXVtLCBlbGVtZW50fSkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5w
dXNoKHt0YWJsZURlc2NyaXB0aW9uOiB7aW5pdGlhbCwgbWF4aW11bSwgZWxlbWVudH19KTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZvcih0
YWJsZUJ1aWxkZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICB9OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZv
cih0YWJsZUJ1aWxkZXIpOwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgICAgIGNhc2UgIk1lbW9yeSI6Ci0gICAgICAgICAgICAgICAgdGhpc1tz
ZWN0aW9uXSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhp
cy5fYWRkU2VjdGlvbihzZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVtb3J5
QnVpbGRlciA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVuZDogKCkgPT4gdGhpcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxNYXhQYWdlczogKGluaXRpYWwsIG1heCkgPT4g
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKHsgaW5pdGlhbCwgbWF4
IH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfZXJyb3JIYW5kbGluZ1By
b3h5Rm9yKG1lbW9yeUJ1aWxkZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxp
bmdQcm94eUZvcihtZW1vcnlCdWlsZGVyKTsKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlICJHbG9iYWwiOgotICAgICAgICAgICAg
ICAgIHRoaXNbc2VjdGlvbl0gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgY29u
c3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsb2JhbEJ1aWxkZXIgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFbmQ6ICgpID0+
IHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBHZXRHbG9iYWw6ICh0eXBlLCBpbml0VmFs
dWUsIG11dGFiaWxpdHkpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmRhdGEu
cHVzaCh7IHR5cGUsIG9wOiAiZ2V0X2dsb2JhbCIsIG11dGFiaWxpdHk6IF9ub3JtYWxpemVNdXRh
YmlsaXR5KG11dGFiaWxpdHkpLCBpbml0VmFsdWUgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3IoZ2xvYmFsQnVpbGRlcik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciAobGV0IG9wIG9mIFdBU00uZGVzY3JpcHRpb24udmFsdWVfdHlwZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsQnVpbGRlcltfdG9KYXZhU2NyaXB0TmFtZShv
cCldID0gKGluaXRWYWx1ZSwgbXV0YWJpbGl0eSkgPT4gewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMuZGF0YS5wdXNoKHsgdHlwZTogb3AsIG9wOiBvcCArICIuY29uc3QiLCBtdXRhYmls
aXR5OiBfbm9ybWFsaXplTXV0YWJpbGl0eShtdXRhYmlsaXR5KSwgaW5pdFZhbHVlIH0pOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfZXJyb3JIYW5kbGluZ1Byb3h5Rm9yKGds
b2JhbEJ1aWxkZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZv
cihnbG9iYWxCdWlsZGVyKTsKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgICAgICBjYXNlICJFeHBvcnQiOgotICAgICAgICAgICAgICAgIHRoaXNb
c2VjdGlvbl0gPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRo
aXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cG9y
dEJ1aWxkZXIgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFbmQ6ICgpID0+IHRoaXMsCi0g
ICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgIGV4cG9ydEJ1aWxkZXIu
R2xvYmFsID0gX2V4cG9ydEdsb2JhbENvbnRpbnVhdGlvbih0aGlzLCBzLCBleHBvcnRCdWlsZGVy
KTsKLSAgICAgICAgICAgICAgICAgICAgZXhwb3J0QnVpbGRlci5GdW5jdGlvbiA9IF9leHBvcnRG
dW5jdGlvbkNvbnRpbnVhdGlvbih0aGlzLCBzLCBleHBvcnRCdWlsZGVyKTsKLSAgICAgICAgICAg
ICAgICAgICAgZXhwb3J0QnVpbGRlci5NZW1vcnkgPSBfZXhwb3J0TWVtb3J5Q29udGludWF0aW9u
KHRoaXMsIHMsIGV4cG9ydEJ1aWxkZXIpOwotICAgICAgICAgICAgICAgICAgICBleHBvcnRCdWls
ZGVyLlRhYmxlID0gX2V4cG9ydFRhYmxlQ29udGludWF0aW9uKHRoaXMsIHMsIGV4cG9ydEJ1aWxk
ZXIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZvcihl
eHBvcnRCdWlsZGVyKTsKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgICBjYXNlICJTdGFydCI6Ci0gICAgICAgICAgICAgICAgdGhpc1tzZWN0
aW9uXSA9IGZ1bmN0aW9uKGZ1bmN0aW9uSW5kZXhPck5hbWUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0YXJ0QnVpbGRlciA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVuZDog
KCkgPT4gdGhpcywKLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHR5cGVvZihmdW5jdGlvbkluZGV4T3JOYW1lKSAhPT0gIm51bWJlciIgJiYgdHlwZW9mKGZ1
bmN0aW9uSW5kZXhPck5hbWUpICE9PSAic3RyaW5nIikKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgU3RhcnQgc2VjdGlvbidzIGZ1bmN0aW9uIGluZGV4ICBtdXN0IGVp
dGhlciBiZSBhIG51bWJlciBvciBhIHN0cmluZ2ApOwotICAgICAgICAgICAgICAgICAgICBzLmRh
dGEucHVzaChmdW5jdGlvbkluZGV4T3JOYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IF9lcnJvckhhbmRsaW5nUHJveHlGb3Ioc3RhcnRCdWlsZGVyKTsKLSAgICAgICAgICAgICAgICB9
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlICJFbGVtZW50IjoK
LSAgICAgICAgICAgICAgICB0aGlzW3NlY3Rpb25dID0gZnVuY3Rpb24oLi4uYXJncykgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggIT09IDApCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIllvdSdyZSBkb2luZyBpdCB3cm9uZy4gVGhpcyBlbGVt
ZW50IGRvZXMgbm90IHRha2UgYXJndW1lbnRzLiBZb3UgbXVzdCBjaGFpbiB0aGUgY2FsbCB3aXRo
IGFub3RoZXIgRWxlbWVudCgpIik7Ci0KLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRo
aXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1l
bnRCdWlsZGVyID0gewotICAgICAgICAgICAgICAgICAgICAgICAgRW5kOiAoKSA9PiB0aGlzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudDogKHt0YWJsZUluZGV4ID0gMCwgb2Zmc2V0
LCBmdW5jdGlvbkluZGljZXN9KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5k
YXRhLnB1c2goe3RhYmxlSW5kZXgsIG9mZnNldCwgZnVuY3Rpb25JbmRpY2VzfSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3IoZWxlbWVu
dEJ1aWxkZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9OwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfZXJyb3JIYW5kbGluZ1Byb3h5Rm9y
KGVsZW1lbnRCdWlsZGVyKTsKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgICAgICBjYXNlICJDb2RlIjoKLSAgICAgICAgICAgICAgICB0aGlzW3Nl
Y3Rpb25dID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlz
Ll9hZGRTZWN0aW9uKHNlY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZGVy
ID0gdGhpczsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY29kZUJ1aWxkZXIgPSAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgRW5kOiAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2Ugbm93IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHJlbWFwIHRoZSBleHBv
cnQgc2VjdGlvbidzICJ0eXBlIiBhbmQgImluZGV4IiBhY2NvcmRpbmcgdG8gdGhlIENvZGUgc2Vj
dGlvbiB3ZSBhcmUgY3VycmVudGx5IGVuZGluZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB0eXBlU2VjdGlvbiA9IGJ1aWxkZXIuX2dldFNlY3Rpb24oIlR5cGUiKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbXBvcnRTZWN0aW9uID0gYnVpbGRlci5fZ2V0
U2VjdGlvbigiSW1wb3J0Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhw
b3J0U2VjdGlvbiA9IGJ1aWxkZXIuX2dldFNlY3Rpb24oIkV4cG9ydCIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0U2VjdGlvbiA9IGJ1aWxkZXIuX2dldFNlY3Rpb24o
IlN0YXJ0Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29kZVNlY3Rpb24g
PSBzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBvcnRTZWN0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiBleHBvcnRTZWN0
aW9uLmRhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmtp
bmQgIT09ICJGdW5jdGlvbiIgfHwgdHlwZW9mKGUudHlwZSkgIT09ICJ1bmRlZmluZWQiKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YoZS5pbmRleCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJv
cihgVW5leHBlY3RlZCBleHBvcnQgaW5kZXggIiR7ZS5pbmRleH0iYCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBidWlsZGVyLl9nZXRGdW5jdGlv
bkZyb21JbmRleFNwYWNlKGUuaW5kZXgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFzc2VydC5pc051bWJlcihpbmRleCwgYEV4cG9ydCBzZWN0aW9uIGNvbnRhaW5z
IHVuZGVmaW5lZCBmdW5jdGlvbiAiJHtlLmluZGV4fSJgKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlLmluZGV4ID0gaW5kZXg7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IC8vIEZhbGx0aHJvdWdoLgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjogewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYnVpbGRlci5fZ2V0RnVuY3Rpb25Gcm9tSW5k
ZXhTcGFjZShlLmluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYnVpbGRlci5fY2hlY2tlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmlzTm90VW5kZWYoaW5kZXgsIGBFeHBvcnQgIiR7ZS5maWVsZH0i
IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBkZWZpbmVkIHZhbHVlIGluIHRoZSBmdW5jdGlvbiBp
bmRleCBzcGFjZWApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInVuZGVmaW5lZCI6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBVbmltcGxlbWVudGVkOiBGdW5jdGlvbigpLkVuZCgpIHdpdGggdW5kZWZpbmVkIGV4cG9ydCBp
bmRleGApOyAvLyBGSVhNRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZihlLnR5cGUpID09
PSAidW5kZWZpbmVkIikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgbXVzdCBiZSBhIGZ1bmN0aW9uIGV4cG9ydCBmcm9tIHRoZSBDb2RlIHNlY3Rpb24g
KHJlLWV4cG9ydHMgd2VyZSBoYW5kbGVkIGVhcmxpZXIpLgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxldCBmdW5jdGlvbkluZGV4U3BhY2VPZmZzZXQgPSAwOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbXBvcnRTZWN0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qg
e2tpbmR9IG9mIGltcG9ydFNlY3Rpb24uZGF0YSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtpbmQgPT09ICJGdW5jdGlvbiIpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytmdW5jdGlvbklu
ZGV4U3BhY2VPZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25JbmRleCA9IGUu
aW5kZXggLSBmdW5jdGlvbkluZGV4U3BhY2VPZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZS50eXBlID0gY29kZVNlY3Rpb24uZGF0YVtmdW5jdGlvbkluZGV4
XS50eXBlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydFNlY3Rpb24pIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBzdGFydFNlY3Rpb24uZGF0YVsw
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hcHBlZCA9IGJ1aWxkZXIu
X2dldEZ1bmN0aW9uRnJvbUluZGV4U3BhY2Uoc3RhcnQpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWJ1aWxkZXIuX2NoZWNrZWQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh0eXBlb2YobWFwcGVkKSA9PT0gInVuZGVmaW5lZCIpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGVkID0gc3RhcnQ7IC8vIElu
IHVuY2hlY2tlZCBtb2RlLCBzaW1wbHkgdXNlIHdoYXQgd2FzIHByb3ZpZGVkIGlmIGl0J3Mgbm9u
c2Vuc2ljYWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuaXNB
KHN0YXJ0LCAibnVtYmVyIik7IC8vIEl0IGNhbid0IGJlIHRvbyBub25zZW5zaWNhbCwgb3RoZXJ3
aXNlIHdlIGNhbid0IGNyZWF0ZSBhIGJpbmFyeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0U2VjdGlvbi5kYXRhWzBdID0gc3RhcnQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodHlwZW9mKG1hcHBlZCkgPT09ICJ1bmRlZmluZWQiKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU3RhcnQgc2VjdGlvbiBy
ZWZlcnMgdG8gbm9uLWV4aXN0YW50IGZ1bmN0aW9uICcke3N0YXJ0fSdgKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yoc3RhcnQpID09PSAic3RyaW5nIiB8
fCB0eXBlb2Yoc3RhcnQpID09PSAib2JqZWN0IikKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGFydFNlY3Rpb24uZGF0YVswXSA9IG1hcHBlZDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FIGluIGNoZWNrZWQgbW9kZSwgdGVzdCB0
aGF0IHRoZSB0eXBlIGlzIGFjY2VwdGFibGUgZm9yIHN0YXJ0IGZ1bmN0aW9uLiBXZSBwcm9iYWJs
eSB3YW50IF9yZWdpc3RlckZ1bmN0aW9uVG9JbmRleFNwYWNlIHRvIGFsc28gcmVnaXN0ZXIgdHlw
ZXMgcGVyIGluZGV4LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1
NjU4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhh
bmRsaW5nUHJveHlGb3IoYnVpbGRlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LAotCi0g
ICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgIGNvZGVCdWlsZGVyLkZ1
bmN0aW9uID0gX2NyZWF0ZUZ1bmN0aW9uKHMsIGJ1aWxkZXIsIGNvZGVCdWlsZGVyKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3IoY29kZUJ1aWxkZXIp
OwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
ICAgIGNhc2UgIkRhdGEiOgotICAgICAgICAgICAgICAgIHRoaXNbc2VjdGlvbl0gPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2Vj
dGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFCdWlsZGVyID0gewotICAgICAg
ICAgICAgICAgICAgICAgICAgRW5kOiAoKSA9PiB0aGlzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgU2VnbWVudDogZGF0YSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
LmlzQXJyYXkoZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBk
YXR1bSBvZiBkYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5p
c051bWJlcihkYXR1bSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5n
ZShkYXR1bSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5sZShk
YXR1bSwgMHhmZik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKHsgZGF0YTogZGF0YSwgaW5kZXg6IDAsIG9mZnNl
dDogMCB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGhpc1NlZ21lbnQgPSBz
LmRhdGFbcy5kYXRhLmxlbmd0aCAtIDFdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHNlZ21lbnRCdWlsZGVyID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
bmQ6ICgpID0+IGRhdGFCdWlsZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bmRleDogaW5kZXggPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxKGluZGV4LCAwKTsgLy8gTGluZWFyIG1lbW9yeSBpbmRleCBtdXN0IGJlIHplcm8gaW4g
TVZQLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1NlZ21lbnQuaW5k
ZXggPSBpbmRleDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBf
ZXJyb3JIYW5kbGluZ1Byb3h5Rm9yKHNlZ21lbnRCdWlsZGVyKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0
OiBvZmZzZXQgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUUgYWxsb3cgY29tcGxleCBpbml0X2V4cHIgaGVyZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NTcwMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmlzTnVtYmVyKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzU2VnbWVudC5vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZvcihzZWdtZW50QnVp
bGRlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2Vy
cm9ySGFuZGxpbmdQcm94eUZvcihzZWdtZW50QnVpbGRlcik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gX2Vycm9ySGFuZGxpbmdQcm94eUZvcihkYXRhQnVpbGRlcik7Ci0gICAgICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICB0aGlzW3NlY3Rpb25dID0gKCkgPT4geyB0aHJvdyBuZXcgRXJyb3IoYFVua25v
d24gc2VjdGlvbiB0eXBlICIke3NlY3Rpb259ImApOyB9OwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5Vbmtub3duID0gZnVu
Y3Rpb24obmFtZSkgewotICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24obmFt
ZSk7Ci0gICAgICAgICAgICBjb25zdCBidWlsZGVyID0gdGhpczsKLSAgICAgICAgICAgIGNvbnN0
IHVua25vd25CdWlsZGVyID0gIHsKLSAgICAgICAgICAgICAgICBFbmQ6ICgpID0+IGJ1aWxkZXIs
Ci0gICAgICAgICAgICAgICAgQnl0ZTogYiA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcShiICYgMHhGRiwgYiwgYFVua25vd24gc2VjdGlvbiBleHBlY3RlZCBieXRlLCBnb3Q6ICIk
e2J9ImApOwotICAgICAgICAgICAgICAgICAgICBzLmRhdGEucHVzaChiKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIF9lcnJvckhhbmRsaW5nUHJveHlGb3IodW5rbm93bkJ1aWxkZXIpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICByZXR1cm4gX2Vy
cm9ySGFuZGxpbmdQcm94eUZvcih1bmtub3duQnVpbGRlcik7Ci0gICAgICAgIH07Ci0gICAgfQot
ICAgIF9hZGRTZWN0aW9uKG5hbWVPck51bWJlciwgZXh0cmFPYmplY3QpIHsKLSAgICAgICAgY29u
c3QgbmFtZSA9IHR5cGVvZihuYW1lT3JOdW1iZXIpID09PSAic3RyaW5nIiA/IG5hbWVPck51bWJl
ciA6ICIiOwotICAgICAgICBjb25zdCBudW1iZXIgPSB0eXBlb2YobmFtZU9yTnVtYmVyKSA9PT0g
Im51bWJlciIgPyBuYW1lT3JOdW1iZXIgOiAoV0FTTS5kZXNjcmlwdGlvbi5zZWN0aW9uW25hbWVd
ID8gV0FTTS5kZXNjcmlwdGlvbi5zZWN0aW9uW25hbWVdLnZhbHVlIDogX3Vua25vd25TZWN0aW9u
SWQpOwotICAgICAgICBpZiAodGhpcy5fY2hlY2tlZCkgewotICAgICAgICAgICAgLy8gQ2hlY2sg
dW5pcXVlbmVzcy4KLSAgICAgICAgICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLl9zZWN0aW9ucykK
LSAgICAgICAgICAgICAgICBpZiAobnVtYmVyICE9PSBfdW5rbm93blNlY3Rpb25JZCkKLSAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmZhbHN5KHMubmFtZSA9PT0gbmFtZSAmJiBzLmlkID09PSBu
dW1iZXIsIGBDYW5ub3QgaGF2ZSB0d28gc2VjdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lICIke25h
bWV9IiBhbmQgSUQgJHtudW1iZXJ9YCk7Ci0gICAgICAgICAgICAvLyBDaGVjayBvcmRlcmluZy4K
LSAgICAgICAgICAgIGlmICgobnVtYmVyICE9PSBfdW5rbm93blNlY3Rpb25JZCkgJiYgKHRoaXMu
X3NlY3Rpb25zLmxlbmd0aCAhPT0gMCkpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0g
dGhpcy5fc2VjdGlvbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHRoaXMuX3NlY3Rpb25zW2ldLmlkID09PSBfdW5rbm93blNlY3Rpb25JZCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQubGUodGhpcy5fc2VjdGlvbnNbaV0uaWQsIG51bWJlciwgYEJhZCBzZWN0aW9uIG9yZGVyaW5n
OiAiJHt0aGlzLl9zZWN0aW9uc1tpXS5uYW1lfSIgY2Fubm90IHByZWNlZGUgIiR7bmFtZX0iYCk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBjb25zdCBzID0gT2JqZWN0LmFzc2lnbih7IG5hbWU6
IG5hbWUsIGlkOiBudW1iZXIsIGRhdGE6IFtdIH0sIGV4dHJhT2JqZWN0IHx8IHt9KTsKLSAgICAg
ICAgdGhpcy5fc2VjdGlvbnMucHVzaChzKTsKLSAgICAgICAgcmV0dXJuIHM7Ci0gICAgfQotICAg
IF9nZXRTZWN0aW9uKG5hbWVPck51bWJlcikgewotICAgICAgICBzd2l0Y2ggKHR5cGVvZihuYW1l
T3JOdW1iZXIpKSB7Ci0gICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW1wbGVtZW50
YXRpb24gcHJvYmxlbTogY2FuIG5vdCBnZXQgc2VjdGlvbiAiJHtuYW1lT3JOdW1iZXJ9ImApOwot
ICAgICAgICBjYXNlICJzdHJpbmciOgotICAgICAgICAgICAgZm9yIChjb25zdCBzIG9mIHRoaXMu
X3NlY3Rpb25zKQotICAgICAgICAgICAgICAgIGlmIChzLm5hbWUgPT09IG5hbWVPck51bWJlcikK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgICAgICByZXR1cm4gdW5kZWZp
bmVkOwotICAgICAgICBjYXNlICJudW1iZXIiOgotICAgICAgICAgICAgZm9yIChjb25zdCBzIG9m
IHRoaXMuX3NlY3Rpb25zKQotICAgICAgICAgICAgICAgIGlmIChzLmlkID09PSBuYW1lT3JOdW1i
ZXIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDsKLSAgICAgICAgfQotICAgIH0KLSAgICBvcHRpbWl6ZSgpIHsKLSAgICAgICAgLy8g
RklYTUUgQWRkIG1vcmUgb3B0aW1pemF0aW9ucy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzQyNAotICAgICAgICByZXR1cm4gdGhpczsKLSAgICB9Ci0gICAganNv
bigpIHsKLSAgICAgICAgY29uc3Qgb2JqID0gewotICAgICAgICAgICAgcHJlYW1ibGU6IHRoaXMu
X3ByZWFtYmxlLAotICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5fc2VjdGlvbnMKLSAgICAgICAg
fTsKLSAgICAgICAgLy8gSlNPTi5zdHJpbmdpZnkgc2VyaWFsaXplcyAtMC4wIGFzIDAuMC4KLSAg
ICAgICAgY29uc3QgcmVwbGFjZXIgPSAoa2V5LCB2YWx1ZSkgPT4gewotICAgICAgICAgICAgaWYg
KHZhbHVlID09PSAwLjAgJiYgMS4wIC8gdmFsdWUgPT09IC1JbmZpbml0eSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gIk5FR0FUSVZFX1pFUk8iOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwot
ICAgICAgICB9OwotICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCByZXBsYWNlcik7
Ci0gICAgfQotICAgIEFzbUpTKCkgewotICAgICAgICAidXNlIGFzbSI7IC8vIEZvciBzcGVlZC4K
LSAgICAgICAgLy8gRklYTUUgQ3JlYXRlIGFuIGFzbS5qcyBlcXVpdmFsZW50IHN0cmluZyB3aGlj
aCBjYW4gYmUgZXZhbCdkLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzNDI1Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNtLmpzIG5vdCBpbXBsZW1lbnRlZCB5
ZXQiKTsKLSAgICB9Ci0gICAgV2ViQXNzZW1ibHkoKSB7IHJldHVybiBCdWlsZFdlYkFzc2VtYmx5
LkJpbmFyeSh0aGlzLl9wcmVhbWJsZSwgdGhpcy5fc2VjdGlvbnMpOyB9Ci19OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3dpbmRvdy1wb3N0bWVzc2FnZS1vcGVuLWNsb3NlLmh0
bWwgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvd2luZG93LXBvc3RtZXNzYWdlLW9wZW4tY2xvc2Uu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FkYjhjZWVjZGMzNmViNjY3ZWI4
MjM4Y2EyMDUxNTcxNGM5ZTg2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvd2luZG93LXBvc3RtZXNzYWdlLW9wZW4t
Y2xvc2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08IS0tIFVzZWQgd2hlbiB0ZXN0aW5nIGFjY2VzcyBvZiBhIGNsb3NlZC9kZXRhY2hlZCB3aW5k
b3cncyBwcm9wZXJ0aWVzIC0tPgotPGh0bWw+Ci08Ym9keSBvbnVubG9hZD0ib3BlbmVyLnBvc3RN
ZXNzYWdlKCdjbG9zZWQnLCAnKicpOyI+Ci08c2NyaXB0Pgotb3BlbmVyLnBvc3RNZXNzYWdlKCJv
cGVuZWQiLCAiKiIpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="452636"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>